v1beta1.RoleBinding
diff --git a/docs/api-reference/v1/definitions.html b/docs/api-reference/v1/definitions.html
index 0c52ab9a12..b4770591dd 100755
--- a/docs/api-reference/v1/definitions.html
+++ b/docs/api-reference/v1/definitions.html
@@ -2911,8 +2911,8 @@ When an object is created, the system will populate this list with the current s
topologyKey |
-This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. For PreferredDuringScheduling pod anti-affinity, empty topologyKey is interpreted as "all topologies" ("all topologies" here means all the topologyKeys indicated by scheduler command-line argument --failure-domains); for affinity and for RequiredDuringScheduling pod anti-affinity, empty topologyKey is not allowed. |
-false |
+This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. |
+true |
string |
|
diff --git a/docs/man/man1/kubectl-create-priorityclass.1 b/docs/man/man1/kubectl-create-priorityclass.1
new file mode 100644
index 0000000000..b6fd7a0f98
--- /dev/null
+++ b/docs/man/man1/kubectl-create-priorityclass.1
@@ -0,0 +1,3 @@
+This file is autogenerated, but we've stopped checking such files into the
+repository to reduce the need for rebases. Please run hack/generate-docs.sh to
+populate this file.
diff --git a/docs/user-guide/kubectl/kubectl_create_priorityclass.md b/docs/user-guide/kubectl/kubectl_create_priorityclass.md
new file mode 100644
index 0000000000..b6fd7a0f98
--- /dev/null
+++ b/docs/user-guide/kubectl/kubectl_create_priorityclass.md
@@ -0,0 +1,3 @@
+This file is autogenerated, but we've stopped checking such files into the
+repository to reduce the need for rebases. Please run hack/generate-docs.sh to
+populate this file.
diff --git a/examples/BUILD b/examples/BUILD
index f972b14848..b2175aebcd 100644
--- a/examples/BUILD
+++ b/examples/BUILD
@@ -29,12 +29,12 @@ go_test(
importpath = "k8s.io/kubernetes/examples_test",
tags = ["manual"], # this test is broken and examples in-tree is deprecated
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/testapi:go_default_library",
- "//pkg/api/validation:go_default_library",
"//pkg/apis/apps:go_default_library",
"//pkg/apis/apps/validation:go_default_library",
"//pkg/apis/batch:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/apis/extensions/validation:go_default_library",
"//pkg/capabilities:go_default_library",
diff --git a/examples/examples_test.go b/examples/examples_test.go
index 64fdc9627c..c47be91a47 100644
--- a/examples/examples_test.go
+++ b/examples/examples_test.go
@@ -32,12 +32,12 @@ import (
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/validation/field"
"k8s.io/apimachinery/pkg/util/yaml"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testapi"
- "k8s.io/kubernetes/pkg/api/validation"
"k8s.io/kubernetes/pkg/apis/apps"
appsvalidation "k8s.io/kubernetes/pkg/apis/apps/validation"
"k8s.io/kubernetes/pkg/apis/batch"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/validation"
"k8s.io/kubernetes/pkg/apis/extensions"
expvalidation "k8s.io/kubernetes/pkg/apis/extensions/validation"
"k8s.io/kubernetes/pkg/capabilities"
diff --git a/examples/https-nginx/BUILD b/examples/https-nginx/BUILD
index 02596ad750..d3c41df7bd 100644
--- a/examples/https-nginx/BUILD
+++ b/examples/https-nginx/BUILD
@@ -17,9 +17,9 @@ go_library(
srcs = ["make_secret.go"],
importpath = "k8s.io/kubernetes/examples/https-nginx",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/install:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
],
diff --git a/examples/https-nginx/make_secret.go b/examples/https-nginx/make_secret.go
index 11631b06f3..e85838ee74 100644
--- a/examples/https-nginx/make_secret.go
+++ b/examples/https-nginx/make_secret.go
@@ -28,11 +28,11 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ api "k8s.io/kubernetes/pkg/apis/core"
// This installs the legacy v1 API
- _ "k8s.io/kubernetes/pkg/api/install"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
)
// TODO:
diff --git a/examples/sharing-clusters/BUILD b/examples/sharing-clusters/BUILD
index 86bb918c20..2217150581 100644
--- a/examples/sharing-clusters/BUILD
+++ b/examples/sharing-clusters/BUILD
@@ -17,8 +17,8 @@ go_library(
srcs = ["make_secret.go"],
importpath = "k8s.io/kubernetes/examples/sharing-clusters",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
],
diff --git a/examples/sharing-clusters/make_secret.go b/examples/sharing-clusters/make_secret.go
index 6f41c49fbb..ece55eab33 100644
--- a/examples/sharing-clusters/make_secret.go
+++ b/examples/sharing-clusters/make_secret.go
@@ -25,8 +25,8 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// TODO:
diff --git a/hack/.golint_failures b/hack/.golint_failures
index beba119c91..1d4de607f9 100644
--- a/hack/.golint_failures
+++ b/hack/.golint_failures
@@ -1,3 +1,4 @@
+
cluster/images/etcd-version-monitor
cmd/gke-certificates-controller/app
cmd/hyperkube
@@ -6,26 +7,20 @@ cmd/kube-proxy/app
cmd/kubeadm/app
cmd/kubeadm/app/apis/kubeadm
cmd/kubeadm/app/apis/kubeadm/v1alpha1
+cmd/kubeadm/app/phases/etcd/spec
cmd/kubelet/app
cmd/kubelet/app/options
cmd/kubemark
examples/guestbook-go
-pkg/api
pkg/api/endpoints
-pkg/api/helper
-pkg/api/helper/qos
pkg/api/ref
pkg/api/testapi
pkg/api/testing
pkg/api/testing/compat
pkg/api/unversioned
pkg/api/v1/endpoints
-pkg/api/v1/helper
-pkg/api/v1/helper/qos
pkg/api/v1/pod
pkg/api/v1/resource
-pkg/api/v1/validation
-pkg/api/validation
pkg/apis/abac
pkg/apis/abac/latest
pkg/apis/admission
@@ -51,6 +46,13 @@ pkg/apis/certificates/v1beta1
pkg/apis/certificates/validation
pkg/apis/componentconfig
pkg/apis/componentconfig/v1alpha1
+pkg/apis/core
+pkg/apis/core/helper
+pkg/apis/core/helper/qos
+pkg/apis/core/v1/helper
+pkg/apis/core/v1/helper/qos
+pkg/apis/core/v1/validation
+pkg/apis/core/validation
pkg/apis/extensions
pkg/apis/extensions/validation
pkg/apis/imagepolicy
@@ -94,6 +96,7 @@ pkg/controller/certificates
pkg/controller/certificates/approver
pkg/controller/certificates/signer
pkg/controller/cloud
+pkg/controller/clusterroleaggregation
pkg/controller/cronjob
pkg/controller/daemon
pkg/controller/daemon/util
@@ -236,9 +239,10 @@ pkg/proxy/util
pkg/proxy/winkernel
pkg/proxy/winuserspace
pkg/quota/evaluator/core
-pkg/registry/admissionregistration/externaladmissionhookconfiguration/storage
pkg/registry/admissionregistration/initializerconfiguration/storage
+pkg/registry/admissionregistration/mutatingwebhookconfiguration/storage
pkg/registry/admissionregistration/rest
+pkg/registry/admissionregistration/validatingwebhookconfiguration/storage
pkg/registry/apps/rest
pkg/registry/apps/statefulset
pkg/registry/apps/statefulset/storage
@@ -548,6 +552,8 @@ staging/src/k8s.io/apiserver/pkg/apis/audit/v1beta1
staging/src/k8s.io/apiserver/pkg/apis/audit/validation
staging/src/k8s.io/apiserver/pkg/apis/example
staging/src/k8s.io/apiserver/pkg/apis/example/v1
+staging/src/k8s.io/apiserver/pkg/apis/example2
+staging/src/k8s.io/apiserver/pkg/apis/example2/v1
staging/src/k8s.io/apiserver/pkg/audit
staging/src/k8s.io/apiserver/pkg/audit/policy
staging/src/k8s.io/apiserver/pkg/authentication/authenticatorfactory
@@ -760,6 +766,7 @@ test/e2e/chaosmonkey
test/e2e/common
test/e2e/framework
test/e2e/framework/metrics
+test/e2e/framework/timer
test/e2e/instrumentation
test/e2e/instrumentation/logging
test/e2e/instrumentation/monitoring
diff --git a/hack/ginkgo-e2e.sh b/hack/ginkgo-e2e.sh
index b920116ab2..dd1e0a1ab3 100755
--- a/hack/ginkgo-e2e.sh
+++ b/hack/ginkgo-e2e.sh
@@ -148,6 +148,7 @@ export PATH=$(dirname "${e2e_test}"):"${PATH}"
--network="${KUBE_GCE_NETWORK:-${KUBE_GKE_NETWORK:-e2e}}" \
--node-tag="${NODE_TAG:-}" \
--master-tag="${MASTER_TAG:-}" \
+ --cluster-monitoring-mode="${KUBE_ENABLE_CLUSTER_MONITORING:-influxdb}" \
${KUBE_CONTAINER_RUNTIME:+"--container-runtime=${KUBE_CONTAINER_RUNTIME}"} \
${MASTER_OS_DISTRIBUTION:+"--master-os-distro=${MASTER_OS_DISTRIBUTION}"} \
${NODE_OS_DISTRIBUTION:+"--node-os-distro=${NODE_OS_DISTRIBUTION}"} \
diff --git a/hack/import-restrictions.yaml b/hack/import-restrictions.yaml
index 692485df1c..1b740a293c 100644
--- a/hack/import-restrictions.yaml
+++ b/hack/import-restrictions.yaml
@@ -1,3 +1,19 @@
+- baseImportPath: "./pkg/apis/core/"
+ allowedImports:
+ - k8s.io/apimachinery
+ - k8s.io/kubernetes/pkg/apis/core
+ - k8s.io/kubernetes/pkg/util
+ - k8s.io/api/core/v1
+
+ # the following are temporary and should go away. Think twice (or more) before adding anything here.
+ # Main goal: pkg/apis should be as self-contained as possible.
+ - k8s.io/kubernetes/pkg/apis/extensions
+ - k8s.io/kubernetes/pkg/api/legacyscheme
+ - k8s.io/kubernetes/pkg/api/testapi
+ - k8s.io/api/extensions/v1beta1
+ ignoredSubTrees:
+ - "./pkg/apis/core/validation"
+
- baseImportPath: "./vendor/k8s.io/apimachinery/"
allowedImports:
- k8s.io/apimachinery
diff --git a/hack/lib/.gitattributes b/hack/lib/.gitattributes
new file mode 100644
index 0000000000..1f211b5ce6
--- /dev/null
+++ b/hack/lib/.gitattributes
@@ -0,0 +1 @@
+version.sh export-subst
diff --git a/hack/lib/util.sh b/hack/lib/util.sh
index c01ba1d547..b4e8df7527 100755
--- a/hack/lib/util.sh
+++ b/hack/lib/util.sh
@@ -268,7 +268,7 @@ kube::util::group-version-to-pkg-path() {
case "${group_version}" in
# both group and version are "", this occurs when we generate deep copies for internal objects of the legacy v1 API.
__internal)
- echo "pkg/api"
+ echo "pkg/apis/core"
;;
meta/v1)
echo "vendor/k8s.io/apimachinery/pkg/apis/meta/v1"
diff --git a/hack/lib/version.sh b/hack/lib/version.sh
index 7a1d676e5a..3dab71052a 100644
--- a/hack/lib/version.sh
+++ b/hack/lib/version.sh
@@ -36,6 +36,19 @@ kube::version::get_version_vars() {
return
fi
+ # If the kubernetes source was exported through git archive, then
+ # we likely don't have a git tree, but these magic values may be filled in.
+ if [[ '$Format:%%$' == "%" ]]; then
+ KUBE_GIT_COMMIT='$Format:%H$'
+ KUBE_GIT_TREE_STATE="git archive"
+ # When a 'git archive' is exported, the '$Format:%D$' below will look
+ # something like 'HEAD -> release-1.8, tag: v1.8.3' where then 'tag: '
+ # can be extracted from it.
+ if [[ '$Format:%D$' =~ tag:\ (v[^ ]+) ]]; then
+ KUBE_GIT_VERSION="${BASH_REMATCH[1]}"
+ fi
+ fi
+
local git=(git --work-tree "${KUBE_ROOT}")
if [[ -n ${KUBE_GIT_COMMIT-} ]] || KUBE_GIT_COMMIT=$("${git[@]}" rev-parse "HEAD^{commit}" 2>/dev/null); then
diff --git a/hack/local-up-cluster.sh b/hack/local-up-cluster.sh
index 94dd5d742a..6c602226eb 100755
--- a/hack/local-up-cluster.sh
+++ b/hack/local-up-cluster.sh
@@ -419,7 +419,7 @@ function start_apiserver {
fi
# Admission Controllers to invoke prior to persisting objects in cluster
- ADMISSION_CONTROL=Initializers,NamespaceLifecycle,LimitRanger,ServiceAccount${security_admission},DefaultStorageClass,DefaultTolerationSeconds,ResourceQuota,GenericAdmissionWebhook
+ ADMISSION_CONTROL=Initializers,NamespaceLifecycle,LimitRanger,ServiceAccount${security_admission},DefaultStorageClass,DefaultTolerationSeconds,GenericAdmissionWebhook,ResourceQuota
# This is the default dir and filename where the apiserver will generate a self-signed cert
# which should be able to be used as the CA to verify itself
diff --git a/hack/update-codegen.sh b/hack/update-codegen.sh
index 337eb1da00..eb0b4b1f51 100755
--- a/hack/update-codegen.sh
+++ b/hack/update-codegen.sh
@@ -40,6 +40,7 @@ informergen=$(kube::util::find-binary "informer-gen")
GROUP_VERSIONS=(${KUBE_AVAILABLE_GROUP_VERSIONS})
GV_DIRS=()
+INTERNAL_DIRS=()
for gv in "${GROUP_VERSIONS[@]}"; do
# add items, but strip off any leading apis/ you find to match command expectations
api_dir=$(kube::util::group-version-to-pkg-path "${gv}")
@@ -47,23 +48,33 @@ for gv in "${GROUP_VERSIONS[@]}"; do
nopkg_dir=${nopkg_dir#vendor/k8s.io/api/}
pkg_dir=${nopkg_dir#apis/}
+
# skip groups that aren't being served, clients for these don't matter
if [[ " ${KUBE_NONSERVER_GROUP_VERSIONS} " == *" ${gv} "* ]]; then
continue
fi
GV_DIRS+=("${pkg_dir}")
+
+ # collect internal groups
+ int_group="${pkg_dir%/*}/"
+ if [[ "${pkg_dir}" = core/* ]]; then
+ int_group="api/"
+ fi
+ if ! [[ " ${INTERNAL_DIRS[@]:-} " =~ " ${int_group} " ]]; then
+ INTERNAL_DIRS+=("${int_group}")
+ fi
done
# delimit by commas for the command
GV_DIRS_CSV=$(IFS=',';echo "${GV_DIRS[*]// /,}";IFS=$)
+INTERNAL_DIRS_CSV=$(IFS=',';echo "${INTERNAL_DIRS[*]// /,}";IFS=$)
# This can be called with one flag, --verify-only, so it works for both the
# update- and verify- scripts.
-${clientgen} "$@"
+${clientgen} --input-base="k8s.io/kubernetes/pkg/apis" --input="${INTERNAL_DIRS_CSV}" "$@"
${clientgen} --output-base "${KUBE_ROOT}/vendor" --clientset-path="k8s.io/client-go" --clientset-name="kubernetes" --input-base="k8s.io/kubernetes/vendor/k8s.io/api" --input="${GV_DIRS_CSV}" "$@"
listergen_internal_apis=(
-pkg/api
$(
cd ${KUBE_ROOT}
find pkg/apis -maxdepth 2 -name types.go | xargs -n1 dirname | sort
@@ -84,7 +95,6 @@ listergen_external_apis_csv=$(IFS=,; echo "${listergen_external_apis[*]}")
${listergen} --output-base "${KUBE_ROOT}/vendor" --output-package "k8s.io/client-go/listers" --input-dirs "${listergen_external_apis_csv}" "$@"
informergen_internal_apis=(
-pkg/api
$(
cd ${KUBE_ROOT}
find pkg/apis -maxdepth 2 -name types.go | xargs -n1 dirname | sort
diff --git a/hack/update-generated-protobuf-dockerized.sh b/hack/update-generated-protobuf-dockerized.sh
index 5b45586a1e..08c9e48d61 100755
--- a/hack/update-generated-protobuf-dockerized.sh
+++ b/hack/update-generated-protobuf-dockerized.sh
@@ -77,6 +77,7 @@ PACKAGES=(
k8s.io/metrics/pkg/apis/custom_metrics/v1beta1
k8s.io/apiserver/pkg/apis/audit/v1alpha1
k8s.io/apiserver/pkg/apis/audit/v1beta1
+ k8s.io/apiserver/pkg/apis/example2/v1
)
# requires the 'proto' tag to build (will remove when ready)
diff --git a/hack/verify-description.sh b/hack/verify-description.sh
index 8fca1b2fc8..95bb068003 100755
--- a/hack/verify-description.sh
+++ b/hack/verify-description.sh
@@ -43,8 +43,7 @@ find_files() {
-o -wholename '*/vendor/*' \
\) -prune \
\) \
- \( -wholename '*pkg/api/v*/types.go' \
- -o -wholename '*pkg/apis/*/v*/types.go' \
+ \( -wholename '*pkg/apis/*/v*/types.go' \
-o -wholename '*pkg/api/unversioned/types.go' \
\)
}
@@ -71,7 +70,7 @@ for file in $versioned_api_files; do
fi
done
-internal_types_files="${KUBE_ROOT}/pkg/api/types.go ${KUBE_ROOT}/pkg/apis/extensions/types.go"
+internal_types_files="${KUBE_ROOT}/pkg/apis/core/types.go ${KUBE_ROOT}/pkg/apis/extensions/types.go"
for internal_types_file in $internal_types_files; do
if [[ ! -e $internal_types_file ]]; then
echo "Internal types file ${internal_types_file} does not exist"
diff --git a/hack/verify-staging-godeps.sh b/hack/verify-staging-godeps.sh
index 7a8c5f9977..e3d463f9c4 100755
--- a/hack/verify-staging-godeps.sh
+++ b/hack/verify-staging-godeps.sh
@@ -19,4 +19,4 @@ set -o nounset
set -o pipefail
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/..
-KUBE_VERBOSE=3 KUBE_RUN_COPY_OUTPUT=N ${KUBE_ROOT}/hack/update-staging-godeps.sh -d -f "$@"
+KUBE_VERBOSE="${KUBE_VERBOSE:-3}" KUBE_RUN_COPY_OUTPUT=N ${KUBE_ROOT}/hack/update-staging-godeps.sh -d -f "$@"
diff --git a/pkg/BUILD b/pkg/BUILD
index 8e7a96704a..fc74d00647 100644
--- a/pkg/BUILD
+++ b/pkg/BUILD
@@ -11,7 +11,22 @@ filegroup(
name = "all-srcs",
srcs = [
":package-srcs",
- "//pkg/api:all-srcs",
+ "//pkg/api/endpoints:all-srcs",
+ "//pkg/api/events:all-srcs",
+ "//pkg/api/legacyscheme:all-srcs",
+ "//pkg/api/persistentvolume:all-srcs",
+ "//pkg/api/pod:all-srcs",
+ "//pkg/api/ref:all-srcs",
+ "//pkg/api/resource:all-srcs",
+ "//pkg/api/service:all-srcs",
+ "//pkg/api/testapi:all-srcs",
+ "//pkg/api/testing:all-srcs",
+ "//pkg/api/unversioned:all-srcs",
+ "//pkg/api/v1/endpoints:all-srcs",
+ "//pkg/api/v1/node:all-srcs",
+ "//pkg/api/v1/pod:all-srcs",
+ "//pkg/api/v1/resource:all-srcs",
+ "//pkg/api/v1/service:all-srcs",
"//pkg/apimachinery/tests:all-srcs",
"//pkg/apis/abac:all-srcs",
"//pkg/apis/admission:all-srcs",
@@ -23,6 +38,7 @@ filegroup(
"//pkg/apis/batch:all-srcs",
"//pkg/apis/certificates:all-srcs",
"//pkg/apis/componentconfig:all-srcs",
+ "//pkg/apis/core:all-srcs",
"//pkg/apis/extensions:all-srcs",
"//pkg/apis/imagepolicy:all-srcs",
"//pkg/apis/networking:all-srcs",
@@ -41,6 +57,7 @@ filegroup(
"//pkg/client/informers/informers_generated/internalversion:all-srcs",
"//pkg/client/leaderelectionconfig:all-srcs",
"//pkg/client/listers/admissionregistration/internalversion:all-srcs",
+ "//pkg/client/listers/apis/admissionregistration:all-srcs",
"//pkg/client/listers/apps/internalversion:all-srcs",
"//pkg/client/listers/authentication/internalversion:all-srcs",
"//pkg/client/listers/authorization/internalversion:all-srcs",
diff --git a/pkg/api/endpoints/BUILD b/pkg/api/endpoints/BUILD
index 9ece3f3caf..07e3aeef18 100644
--- a/pkg/api/endpoints/BUILD
+++ b/pkg/api/endpoints/BUILD
@@ -11,7 +11,7 @@ go_library(
srcs = ["util.go"],
importpath = "k8s.io/kubernetes/pkg/api/endpoints",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/util/hash:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
],
@@ -23,7 +23,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/api/endpoints",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/github.com/davecgh/go-spew/spew:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
],
diff --git a/pkg/api/endpoints/util.go b/pkg/api/endpoints/util.go
index 37084d6497..49bdbc47a1 100644
--- a/pkg/api/endpoints/util.go
+++ b/pkg/api/endpoints/util.go
@@ -24,7 +24,7 @@ import (
"sort"
"k8s.io/apimachinery/pkg/types"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
hashutil "k8s.io/kubernetes/pkg/util/hash"
)
diff --git a/pkg/api/endpoints/util_test.go b/pkg/api/endpoints/util_test.go
index c060e34799..f35ea9ea5f 100644
--- a/pkg/api/endpoints/util_test.go
+++ b/pkg/api/endpoints/util_test.go
@@ -22,7 +22,7 @@ import (
"github.com/davecgh/go-spew/spew"
"k8s.io/apimachinery/pkg/types"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func podRef(uid string) *api.ObjectReference {
diff --git a/pkg/api/events/BUILD b/pkg/api/events/BUILD
index dbc42583d7..96becd0b70 100644
--- a/pkg/api/events/BUILD
+++ b/pkg/api/events/BUILD
@@ -10,7 +10,7 @@ go_library(
name = "go_default_library",
srcs = ["sorted_event_list.go"],
importpath = "k8s.io/kubernetes/pkg/api/events",
- deps = ["//pkg/api:go_default_library"],
+ deps = ["//pkg/apis/core:go_default_library"],
)
go_test(
@@ -19,7 +19,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/api/events",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
],
)
diff --git a/pkg/api/events/sorted_event_list.go b/pkg/api/events/sorted_event_list.go
index b96c615deb..9976c10ce7 100644
--- a/pkg/api/events/sorted_event_list.go
+++ b/pkg/api/events/sorted_event_list.go
@@ -17,7 +17,7 @@ limitations under the License.
package events
import (
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// SortableEvents implements sort.Interface for []api.Event based on the Timestamp field
diff --git a/pkg/api/events/sorted_event_list_test.go b/pkg/api/events/sorted_event_list_test.go
index bae6f2e0dd..687f6fa19f 100644
--- a/pkg/api/events/sorted_event_list_test.go
+++ b/pkg/api/events/sorted_event_list_test.go
@@ -22,7 +22,7 @@ import (
"time"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func TestSortableEvents(t *testing.T) {
diff --git a/pkg/api/persistentvolume/BUILD b/pkg/api/persistentvolume/BUILD
index d91bb5d1be..61a8714b8f 100644
--- a/pkg/api/persistentvolume/BUILD
+++ b/pkg/api/persistentvolume/BUILD
@@ -10,7 +10,7 @@ go_library(
name = "go_default_library",
srcs = ["util.go"],
importpath = "k8s.io/kubernetes/pkg/api/persistentvolume",
- deps = ["//pkg/api:go_default_library"],
+ deps = ["//pkg/apis/core:go_default_library"],
)
filegroup(
@@ -32,7 +32,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/api/persistentvolume",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
],
diff --git a/pkg/api/persistentvolume/util.go b/pkg/api/persistentvolume/util.go
index c115615613..6f65196133 100644
--- a/pkg/api/persistentvolume/util.go
+++ b/pkg/api/persistentvolume/util.go
@@ -17,7 +17,7 @@ limitations under the License.
package persistentvolume
import (
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func getClaimRefNamespace(pv *api.PersistentVolume) string {
diff --git a/pkg/api/persistentvolume/util_test.go b/pkg/api/persistentvolume/util_test.go
index d3554a96c5..974a6dafa7 100644
--- a/pkg/api/persistentvolume/util_test.go
+++ b/pkg/api/persistentvolume/util_test.go
@@ -24,7 +24,7 @@ import (
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func TestPVSecrets(t *testing.T) {
diff --git a/pkg/api/pod/BUILD b/pkg/api/pod/BUILD
index 02631dda2d..b48e4ebb58 100644
--- a/pkg/api/pod/BUILD
+++ b/pkg/api/pod/BUILD
@@ -11,7 +11,7 @@ go_library(
srcs = ["util.go"],
importpath = "k8s.io/kubernetes/pkg/api/pod",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/features:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library",
@@ -37,7 +37,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/api/pod",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
],
diff --git a/pkg/api/pod/util.go b/pkg/api/pod/util.go
index 7c8afdf46a..3b0f61c903 100644
--- a/pkg/api/pod/util.go
+++ b/pkg/api/pod/util.go
@@ -19,7 +19,7 @@ package pod
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
utilfeature "k8s.io/apiserver/pkg/util/feature"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/features"
)
diff --git a/pkg/api/pod/util_test.go b/pkg/api/pod/util_test.go
index 169e7d116d..4e87a1189a 100644
--- a/pkg/api/pod/util_test.go
+++ b/pkg/api/pod/util_test.go
@@ -24,7 +24,7 @@ import (
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func TestPodSecrets(t *testing.T) {
@@ -125,7 +125,7 @@ func TestPodSecrets(t *testing.T) {
"Spec.Volumes[*].VolumeSource.ISCSI.SecretRef",
"Spec.Volumes[*].VolumeSource.StorageOS.SecretRef",
)
- secretPaths := collectSecretPaths(t, nil, "", reflect.TypeOf(&api.Pod{}))
+ secretPaths := collectResourcePaths(t, "secret", nil, "", reflect.TypeOf(&api.Pod{}))
secretPaths = secretPaths.Difference(excludedSecretPaths)
if missingPaths := expectedSecretPaths.Difference(secretPaths); len(missingPaths) > 0 {
t.Logf("Missing expected secret paths:\n%s", strings.Join(missingPaths.List(), "\n"))
@@ -146,36 +146,111 @@ func TestPodSecrets(t *testing.T) {
}
}
-// collectSecretPaths traverses the object, computing all the struct paths that lead to fields with "secret" in the name.
-func collectSecretPaths(t *testing.T, path *field.Path, name string, tp reflect.Type) sets.String {
- secretPaths := sets.NewString()
+// collectResourcePaths traverses the object, computing all the struct paths that lead to fields with resourcename in the name.
+func collectResourcePaths(t *testing.T, resourcename string, path *field.Path, name string, tp reflect.Type) sets.String {
+ resourcename = strings.ToLower(resourcename)
+ resourcePaths := sets.NewString()
if tp.Kind() == reflect.Ptr {
- secretPaths.Insert(collectSecretPaths(t, path, name, tp.Elem()).List()...)
- return secretPaths
+ resourcePaths.Insert(collectResourcePaths(t, resourcename, path, name, tp.Elem()).List()...)
+ return resourcePaths
}
- if strings.Contains(strings.ToLower(name), "secret") {
- secretPaths.Insert(path.String())
+ if strings.Contains(strings.ToLower(name), resourcename) {
+ resourcePaths.Insert(path.String())
}
switch tp.Kind() {
case reflect.Ptr:
- secretPaths.Insert(collectSecretPaths(t, path, name, tp.Elem()).List()...)
+ resourcePaths.Insert(collectResourcePaths(t, resourcename, path, name, tp.Elem()).List()...)
case reflect.Struct:
for i := 0; i < tp.NumField(); i++ {
field := tp.Field(i)
- secretPaths.Insert(collectSecretPaths(t, path.Child(field.Name), field.Name, field.Type).List()...)
+ resourcePaths.Insert(collectResourcePaths(t, resourcename, path.Child(field.Name), field.Name, field.Type).List()...)
}
case reflect.Interface:
- t.Errorf("cannot find secret fields in interface{} field %s", path.String())
+ t.Errorf("cannot find %s fields in interface{} field %s", resourcename, path.String())
case reflect.Map:
- secretPaths.Insert(collectSecretPaths(t, path.Key("*"), "", tp.Elem()).List()...)
+ resourcePaths.Insert(collectResourcePaths(t, resourcename, path.Key("*"), "", tp.Elem()).List()...)
case reflect.Slice:
- secretPaths.Insert(collectSecretPaths(t, path.Key("*"), "", tp.Elem()).List()...)
+ resourcePaths.Insert(collectResourcePaths(t, resourcename, path.Key("*"), "", tp.Elem()).List()...)
default:
// all primitive types
}
- return secretPaths
+ return resourcePaths
+}
+
+func TestPodConfigmaps(t *testing.T) {
+ // Stub containing all possible ConfigMap references in a pod.
+ // The names of the referenced ConfigMaps match struct paths detected by reflection.
+ pod := &api.Pod{
+ Spec: api.PodSpec{
+ Containers: []api.Container{{
+ EnvFrom: []api.EnvFromSource{{
+ ConfigMapRef: &api.ConfigMapEnvSource{
+ LocalObjectReference: api.LocalObjectReference{
+ Name: "Spec.Containers[*].EnvFrom[*].ConfigMapRef"}}}},
+ Env: []api.EnvVar{{
+ ValueFrom: &api.EnvVarSource{
+ ConfigMapKeyRef: &api.ConfigMapKeySelector{
+ LocalObjectReference: api.LocalObjectReference{
+ Name: "Spec.Containers[*].Env[*].ValueFrom.ConfigMapKeyRef"}}}}}}},
+ InitContainers: []api.Container{{
+ EnvFrom: []api.EnvFromSource{{
+ ConfigMapRef: &api.ConfigMapEnvSource{
+ LocalObjectReference: api.LocalObjectReference{
+ Name: "Spec.InitContainers[*].EnvFrom[*].ConfigMapRef"}}}},
+ Env: []api.EnvVar{{
+ ValueFrom: &api.EnvVarSource{
+ ConfigMapKeyRef: &api.ConfigMapKeySelector{
+ LocalObjectReference: api.LocalObjectReference{
+ Name: "Spec.InitContainers[*].Env[*].ValueFrom.ConfigMapKeyRef"}}}}}}},
+ Volumes: []api.Volume{{
+ VolumeSource: api.VolumeSource{
+ Projected: &api.ProjectedVolumeSource{
+ Sources: []api.VolumeProjection{{
+ ConfigMap: &api.ConfigMapProjection{
+ LocalObjectReference: api.LocalObjectReference{
+ Name: "Spec.Volumes[*].VolumeSource.Projected.Sources[*].ConfigMap"}}}}}}}, {
+ VolumeSource: api.VolumeSource{
+ ConfigMap: &api.ConfigMapVolumeSource{
+ LocalObjectReference: api.LocalObjectReference{
+ Name: "Spec.Volumes[*].VolumeSource.ConfigMap"}}}}},
+ },
+ }
+ extractedNames := sets.NewString()
+ VisitPodConfigmapNames(pod, func(name string) bool {
+ extractedNames.Insert(name)
+ return true
+ })
+
+ // expectedPaths holds struct paths to fields with "ConfigMap" in the name that are references to ConfigMap API objects.
+ // every path here should be represented as an example in the Pod stub above, with the ConfigMap name set to the path.
+ expectedPaths := sets.NewString(
+ "Spec.Containers[*].EnvFrom[*].ConfigMapRef",
+ "Spec.Containers[*].Env[*].ValueFrom.ConfigMapKeyRef",
+ "Spec.InitContainers[*].EnvFrom[*].ConfigMapRef",
+ "Spec.InitContainers[*].Env[*].ValueFrom.ConfigMapKeyRef",
+ "Spec.Volumes[*].VolumeSource.Projected.Sources[*].ConfigMap",
+ "Spec.Volumes[*].VolumeSource.ConfigMap",
+ )
+ collectPaths := collectResourcePaths(t, "ConfigMap", nil, "", reflect.TypeOf(&api.Pod{}))
+ if missingPaths := expectedPaths.Difference(collectPaths); len(missingPaths) > 0 {
+ t.Logf("Missing expected paths:\n%s", strings.Join(missingPaths.List(), "\n"))
+ t.Error("Missing expected paths. Verify VisitPodConfigmapNames() is correctly finding the missing paths, then correct expectedPaths")
+ }
+ if extraPaths := collectPaths.Difference(expectedPaths); len(extraPaths) > 0 {
+ t.Logf("Extra paths:\n%s", strings.Join(extraPaths.List(), "\n"))
+ t.Error("Extra fields with resource in the name found. Verify VisitPodConfigmapNames() is including these fields if appropriate, then correct expectedPaths")
+ }
+
+ if missingNames := expectedPaths.Difference(extractedNames); len(missingNames) > 0 {
+ t.Logf("Missing expected names:\n%s", strings.Join(missingNames.List(), "\n"))
+ t.Error("Missing expected names. Verify the pod stub above includes these references, then verify VisitPodConfigmapNames() is correctly finding the missing names")
+ }
+ if extraNames := extractedNames.Difference(expectedPaths); len(extraNames) > 0 {
+ t.Logf("Extra names:\n%s", strings.Join(extraNames.List(), "\n"))
+ t.Error("Extra names extracted. Verify VisitPodConfigmapNames() is correctly extracting resource names")
+ }
}
diff --git a/pkg/api/ref/BUILD b/pkg/api/ref/BUILD
index eb282de0dc..f4d23d86f8 100644
--- a/pkg/api/ref/BUILD
+++ b/pkg/api/ref/BUILD
@@ -12,8 +12,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/api/ref",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
@@ -25,7 +25,7 @@ go_library(
srcs = ["ref.go"],
importpath = "k8s.io/kubernetes/pkg/api/ref",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
diff --git a/pkg/api/ref/ref.go b/pkg/api/ref/ref.go
index a60013a447..d6576750ad 100644
--- a/pkg/api/ref/ref.go
+++ b/pkg/api/ref/ref.go
@@ -25,7 +25,7 @@ import (
"k8s.io/apimachinery/pkg/api/meta"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
var (
diff --git a/pkg/api/ref/ref_test.go b/pkg/api/ref/ref_test.go
index 6670828659..f6c63bb14c 100644
--- a/pkg/api/ref/ref_test.go
+++ b/pkg/api/ref/ref_test.go
@@ -23,8 +23,8 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
type FakeAPIObject struct{}
diff --git a/pkg/api/resource/BUILD b/pkg/api/resource/BUILD
index d4bb2fac07..f31dbd9db2 100644
--- a/pkg/api/resource/BUILD
+++ b/pkg/api/resource/BUILD
@@ -11,7 +11,7 @@ go_library(
srcs = ["helpers.go"],
importpath = "k8s.io/kubernetes/pkg/api/resource",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
],
)
@@ -35,7 +35,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/api/resource",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
],
diff --git a/pkg/api/resource/helpers.go b/pkg/api/resource/helpers.go
index eecc26ed22..78084393eb 100644
--- a/pkg/api/resource/helpers.go
+++ b/pkg/api/resource/helpers.go
@@ -22,7 +22,7 @@ import (
"strconv"
"k8s.io/apimachinery/pkg/api/resource"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// PodRequestsAndLimits returns a dictionary of all defined resources summed up for all
diff --git a/pkg/api/resource/helpers_test.go b/pkg/api/resource/helpers_test.go
index cab0052870..7d55c18d80 100644
--- a/pkg/api/resource/helpers_test.go
+++ b/pkg/api/resource/helpers_test.go
@@ -22,7 +22,7 @@ import (
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func TestResourceHelpers(t *testing.T) {
diff --git a/pkg/api/service/BUILD b/pkg/api/service/BUILD
index 236edbec5b..735bf8d5a4 100644
--- a/pkg/api/service/BUILD
+++ b/pkg/api/service/BUILD
@@ -11,7 +11,7 @@ go_library(
srcs = ["util.go"],
importpath = "k8s.io/kubernetes/pkg/api/service",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/util/net/sets:go_default_library",
],
)
@@ -22,7 +22,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/api/service",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/util/net/sets:go_default_library",
],
)
diff --git a/pkg/api/service/util.go b/pkg/api/service/util.go
index 242aab77f1..5de5f27657 100644
--- a/pkg/api/service/util.go
+++ b/pkg/api/service/util.go
@@ -18,10 +18,9 @@ package service
import (
"fmt"
- "strings"
-
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
netsets "k8s.io/kubernetes/pkg/util/net/sets"
+ "strings"
)
const (
diff --git a/pkg/api/service/util_test.go b/pkg/api/service/util_test.go
index c3eb0d1fb9..46790a170b 100644
--- a/pkg/api/service/util_test.go
+++ b/pkg/api/service/util_test.go
@@ -20,7 +20,7 @@ import (
"strings"
"testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
netsets "k8s.io/kubernetes/pkg/util/net/sets"
)
diff --git a/pkg/api/testapi/BUILD b/pkg/api/testapi/BUILD
index 0a386f8832..2455f3a208 100644
--- a/pkg/api/testapi/BUILD
+++ b/pkg/api/testapi/BUILD
@@ -11,8 +11,6 @@ go_library(
srcs = ["testapi.go"],
importpath = "k8s.io/kubernetes/pkg/api/testapi",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/install:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/apis/admission:go_default_library",
"//pkg/apis/admission/install:go_default_library",
@@ -30,6 +28,8 @@ go_library(
"//pkg/apis/certificates:go_default_library",
"//pkg/apis/certificates/install:go_default_library",
"//pkg/apis/componentconfig/install:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/apis/extensions/install:go_default_library",
"//pkg/apis/imagepolicy:go_default_library",
diff --git a/pkg/api/testapi/testapi.go b/pkg/api/testapi/testapi.go
index 4d2c609429..95973def6e 100644
--- a/pkg/api/testapi/testapi.go
+++ b/pkg/api/testapi/testapi.go
@@ -34,7 +34,6 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/runtime/serializer/recognizer"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/apis/admission"
"k8s.io/kubernetes/pkg/apis/admissionregistration"
@@ -43,6 +42,7 @@ import (
"k8s.io/kubernetes/pkg/apis/autoscaling"
"k8s.io/kubernetes/pkg/apis/batch"
"k8s.io/kubernetes/pkg/apis/certificates"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/apis/imagepolicy"
"k8s.io/kubernetes/pkg/apis/networking"
@@ -52,7 +52,6 @@ import (
"k8s.io/kubernetes/pkg/apis/settings"
"k8s.io/kubernetes/pkg/apis/storage"
- _ "k8s.io/kubernetes/pkg/api/install"
_ "k8s.io/kubernetes/pkg/apis/admission/install"
_ "k8s.io/kubernetes/pkg/apis/admissionregistration/install"
_ "k8s.io/kubernetes/pkg/apis/apps/install"
@@ -62,6 +61,7 @@ import (
_ "k8s.io/kubernetes/pkg/apis/batch/install"
_ "k8s.io/kubernetes/pkg/apis/certificates/install"
_ "k8s.io/kubernetes/pkg/apis/componentconfig/install"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
_ "k8s.io/kubernetes/pkg/apis/extensions/install"
_ "k8s.io/kubernetes/pkg/apis/imagepolicy/install"
_ "k8s.io/kubernetes/pkg/apis/networking/install"
diff --git a/pkg/api/testapi/testapi_test.go b/pkg/api/testapi/testapi_test.go
index b7081f2817..7de0597602 100644
--- a/pkg/api/testapi/testapi_test.go
+++ b/pkg/api/testapi/testapi_test.go
@@ -74,6 +74,36 @@ var status = &metav1.Status{
Message: "",
}
+func TestSelfLink(t *testing.T) {
+ testCases := []struct {
+ resource string
+ name string
+ expected string
+ }{
+ {"resource", "name", "/api/" + Default.GroupVersion().Version + "/resource/name"},
+ {"resource", "", "/api/" + Default.GroupVersion().Version + "/resource"},
+ }
+ for _, item := range testCases {
+ if actual := Default.SelfLink(item.resource, item.name); actual != item.expected {
+ t.Errorf("Expected: %s, got: %s for resource: %s and name: %s", item.expected, actual, item.resource, item.name)
+ }
+ }
+
+ testGroupCases := []struct {
+ resource string
+ name string
+ expected string
+ }{
+ {"resource", "name", "/apis/" + Admission.GroupVersion().Group + "/" + Admission.GroupVersion().Version + "/resource/name"},
+ {"resource", "", "/apis/" + Admission.GroupVersion().Group + "/" + Admission.GroupVersion().Version + "/resource"},
+ }
+ for _, item := range testGroupCases {
+ if actual := Admission.SelfLink(item.resource, item.name); actual != item.expected {
+ t.Errorf("Expected: %s, got: %s for resource: %s and name: %s", item.expected, actual, item.resource, item.name)
+ }
+ }
+}
+
func TestV1EncodeDecodeStatus(t *testing.T) {
v1Codec := Default.Codec()
diff --git a/pkg/api/testing/BUILD b/pkg/api/testing/BUILD
index 81585c39fe..149b71937b 100644
--- a/pkg/api/testing/BUILD
+++ b/pkg/api/testing/BUILD
@@ -17,14 +17,14 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/api/testing",
deps = [
"//cmd/kubeadm/app/apis/kubeadm/fuzzer:go_default_library",
- "//pkg/api:go_default_library",
- "//pkg/api/fuzzer:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/apis/admissionregistration/fuzzer:go_default_library",
"//pkg/apis/apps/fuzzer:go_default_library",
"//pkg/apis/autoscaling/fuzzer:go_default_library",
"//pkg/apis/batch/fuzzer:go_default_library",
"//pkg/apis/certificates/fuzzer:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/fuzzer:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/apis/extensions/fuzzer:go_default_library",
"//pkg/apis/extensions/v1beta1:go_default_library",
@@ -75,13 +75,13 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/api/testing",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/install:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/api/testing/compat:go_default_library",
- "//pkg/api/v1:go_default_library",
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
+ "//pkg/apis/core/v1:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/apis/extensions/v1beta1:go_default_library",
"//vendor/github.com/gogo/protobuf/proto:go_default_library",
diff --git a/pkg/api/testing/backward_compatibility_test.go b/pkg/api/testing/backward_compatibility_test.go
index 82ac3ca81a..ad536de5ad 100644
--- a/pkg/api/testing/backward_compatibility_test.go
+++ b/pkg/api/testing/backward_compatibility_test.go
@@ -22,11 +22,11 @@ import (
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testing/compat"
- "k8s.io/kubernetes/pkg/api/validation"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/validation"
- _ "k8s.io/kubernetes/pkg/api/install"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
)
func TestCompatibility_v1_PodSecurityContext(t *testing.T) {
diff --git a/pkg/api/testing/conversion_test.go b/pkg/api/testing/conversion_test.go
index c137100040..3cb174fcd8 100644
--- a/pkg/api/testing/conversion_test.go
+++ b/pkg/api/testing/conversion_test.go
@@ -25,9 +25,9 @@ import (
"k8s.io/apimachinery/pkg/api/testing/fuzzer"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/diff"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func BenchmarkPodConversion(b *testing.B) {
diff --git a/pkg/api/testing/copy_test.go b/pkg/api/testing/copy_test.go
index db1391d8e4..103246bb30 100644
--- a/pkg/api/testing/copy_test.go
+++ b/pkg/api/testing/copy_test.go
@@ -28,9 +28,9 @@ import (
"k8s.io/apimachinery/pkg/api/testing/roundtrip"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/util/diff"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func TestDeepCopyApiObjects(t *testing.T) {
diff --git a/pkg/api/testing/deep_copy_test.go b/pkg/api/testing/deep_copy_test.go
index a9580235e6..27c9f42f6a 100644
--- a/pkg/api/testing/deep_copy_test.go
+++ b/pkg/api/testing/deep_copy_test.go
@@ -25,8 +25,8 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testapi"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func parseTimeOrDie(ts string) metav1.Time {
diff --git a/pkg/api/testing/defaulting_test.go b/pkg/api/testing/defaulting_test.go
index 306c28d2e4..02249962b5 100644
--- a/pkg/api/testing/defaulting_test.go
+++ b/pkg/api/testing/defaulting_test.go
@@ -97,52 +97,54 @@ func TestDefaulting(t *testing.T) {
// This object contains only int fields which currently breaks the defaulting test because
// it's pretty stupid. Once we add non integer fields, we should uncomment this.
// {Group: "kubeadm.k8s.io", Version: "v1alpha1", Kind: "NodeConfiguration"}: {},
- {Group: "extensions", Version: "v1beta1", Kind: "DaemonSet"}: {},
- {Group: "extensions", Version: "v1beta1", Kind: "DaemonSetList"}: {},
- {Group: "apps", Version: "v1beta2", Kind: "DaemonSet"}: {},
- {Group: "apps", Version: "v1beta2", Kind: "DaemonSetList"}: {},
- {Group: "apps", Version: "v1", Kind: "DaemonSet"}: {},
- {Group: "apps", Version: "v1", Kind: "DaemonSetList"}: {},
- {Group: "extensions", Version: "v1beta1", Kind: "Deployment"}: {},
- {Group: "extensions", Version: "v1beta1", Kind: "DeploymentList"}: {},
- {Group: "apps", Version: "v1beta1", Kind: "Deployment"}: {},
- {Group: "apps", Version: "v1beta1", Kind: "DeploymentList"}: {},
- {Group: "apps", Version: "v1beta2", Kind: "Deployment"}: {},
- {Group: "apps", Version: "v1beta2", Kind: "DeploymentList"}: {},
- {Group: "apps", Version: "v1", Kind: "Deployment"}: {},
- {Group: "apps", Version: "v1", Kind: "DeploymentList"}: {},
- {Group: "extensions", Version: "v1beta1", Kind: "PodSecurityPolicy"}: {},
- {Group: "extensions", Version: "v1beta1", Kind: "PodSecurityPolicyList"}: {},
- {Group: "apps", Version: "v1beta2", Kind: "ReplicaSet"}: {},
- {Group: "apps", Version: "v1beta2", Kind: "ReplicaSetList"}: {},
- {Group: "apps", Version: "v1", Kind: "ReplicaSet"}: {},
- {Group: "apps", Version: "v1", Kind: "ReplicaSetList"}: {},
- {Group: "extensions", Version: "v1beta1", Kind: "ReplicaSet"}: {},
- {Group: "extensions", Version: "v1beta1", Kind: "ReplicaSetList"}: {},
- {Group: "extensions", Version: "v1beta1", Kind: "NetworkPolicy"}: {},
- {Group: "extensions", Version: "v1beta1", Kind: "NetworkPolicyList"}: {},
- {Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Kind: "ClusterRoleBinding"}: {},
- {Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Kind: "ClusterRoleBindingList"}: {},
- {Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Kind: "RoleBinding"}: {},
- {Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Kind: "RoleBindingList"}: {},
- {Group: "rbac.authorization.k8s.io", Version: "v1beta1", Kind: "ClusterRoleBinding"}: {},
- {Group: "rbac.authorization.k8s.io", Version: "v1beta1", Kind: "ClusterRoleBindingList"}: {},
- {Group: "rbac.authorization.k8s.io", Version: "v1beta1", Kind: "RoleBinding"}: {},
- {Group: "rbac.authorization.k8s.io", Version: "v1beta1", Kind: "RoleBindingList"}: {},
- {Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "ClusterRoleBinding"}: {},
- {Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "ClusterRoleBindingList"}: {},
- {Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "RoleBinding"}: {},
- {Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "RoleBindingList"}: {},
- {Group: "settings.k8s.io", Version: "v1alpha1", Kind: "PodPreset"}: {},
- {Group: "settings.k8s.io", Version: "v1alpha1", Kind: "PodPresetList"}: {},
- {Group: "admissionregistration.k8s.io", Version: "v1alpha1", Kind: "ExternalAdmissionHookConfiguration"}: {},
- {Group: "admissionregistration.k8s.io", Version: "v1alpha1", Kind: "ExternalAdmissionHookConfigurationList"}: {},
- {Group: "networking.k8s.io", Version: "v1", Kind: "NetworkPolicy"}: {},
- {Group: "networking.k8s.io", Version: "v1", Kind: "NetworkPolicyList"}: {},
- {Group: "storage.k8s.io", Version: "v1beta1", Kind: "StorageClass"}: {},
- {Group: "storage.k8s.io", Version: "v1beta1", Kind: "StorageClassList"}: {},
- {Group: "storage.k8s.io", Version: "v1", Kind: "StorageClass"}: {},
- {Group: "storage.k8s.io", Version: "v1", Kind: "StorageClassList"}: {},
+ {Group: "extensions", Version: "v1beta1", Kind: "DaemonSet"}: {},
+ {Group: "extensions", Version: "v1beta1", Kind: "DaemonSetList"}: {},
+ {Group: "apps", Version: "v1beta2", Kind: "DaemonSet"}: {},
+ {Group: "apps", Version: "v1beta2", Kind: "DaemonSetList"}: {},
+ {Group: "apps", Version: "v1", Kind: "DaemonSet"}: {},
+ {Group: "apps", Version: "v1", Kind: "DaemonSetList"}: {},
+ {Group: "extensions", Version: "v1beta1", Kind: "Deployment"}: {},
+ {Group: "extensions", Version: "v1beta1", Kind: "DeploymentList"}: {},
+ {Group: "apps", Version: "v1beta1", Kind: "Deployment"}: {},
+ {Group: "apps", Version: "v1beta1", Kind: "DeploymentList"}: {},
+ {Group: "apps", Version: "v1beta2", Kind: "Deployment"}: {},
+ {Group: "apps", Version: "v1beta2", Kind: "DeploymentList"}: {},
+ {Group: "apps", Version: "v1", Kind: "Deployment"}: {},
+ {Group: "apps", Version: "v1", Kind: "DeploymentList"}: {},
+ {Group: "extensions", Version: "v1beta1", Kind: "PodSecurityPolicy"}: {},
+ {Group: "extensions", Version: "v1beta1", Kind: "PodSecurityPolicyList"}: {},
+ {Group: "apps", Version: "v1beta2", Kind: "ReplicaSet"}: {},
+ {Group: "apps", Version: "v1beta2", Kind: "ReplicaSetList"}: {},
+ {Group: "apps", Version: "v1", Kind: "ReplicaSet"}: {},
+ {Group: "apps", Version: "v1", Kind: "ReplicaSetList"}: {},
+ {Group: "extensions", Version: "v1beta1", Kind: "ReplicaSet"}: {},
+ {Group: "extensions", Version: "v1beta1", Kind: "ReplicaSetList"}: {},
+ {Group: "extensions", Version: "v1beta1", Kind: "NetworkPolicy"}: {},
+ {Group: "extensions", Version: "v1beta1", Kind: "NetworkPolicyList"}: {},
+ {Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Kind: "ClusterRoleBinding"}: {},
+ {Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Kind: "ClusterRoleBindingList"}: {},
+ {Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Kind: "RoleBinding"}: {},
+ {Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Kind: "RoleBindingList"}: {},
+ {Group: "rbac.authorization.k8s.io", Version: "v1beta1", Kind: "ClusterRoleBinding"}: {},
+ {Group: "rbac.authorization.k8s.io", Version: "v1beta1", Kind: "ClusterRoleBindingList"}: {},
+ {Group: "rbac.authorization.k8s.io", Version: "v1beta1", Kind: "RoleBinding"}: {},
+ {Group: "rbac.authorization.k8s.io", Version: "v1beta1", Kind: "RoleBindingList"}: {},
+ {Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "ClusterRoleBinding"}: {},
+ {Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "ClusterRoleBindingList"}: {},
+ {Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "RoleBinding"}: {},
+ {Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "RoleBindingList"}: {},
+ {Group: "settings.k8s.io", Version: "v1alpha1", Kind: "PodPreset"}: {},
+ {Group: "settings.k8s.io", Version: "v1alpha1", Kind: "PodPresetList"}: {},
+ {Group: "admissionregistration.k8s.io", Version: "v1alpha1", Kind: "ValidatingWebhookConfiguration"}: {},
+ {Group: "admissionregistration.k8s.io", Version: "v1alpha1", Kind: "ValidatingWebhookConfigurationList"}: {},
+ {Group: "admissionregistration.k8s.io", Version: "v1alpha1", Kind: "MutatingWebhookConfiguration"}: {},
+ {Group: "admissionregistration.k8s.io", Version: "v1alpha1", Kind: "MutatingWebhookConfigurationList"}: {},
+ {Group: "networking.k8s.io", Version: "v1", Kind: "NetworkPolicy"}: {},
+ {Group: "networking.k8s.io", Version: "v1", Kind: "NetworkPolicyList"}: {},
+ {Group: "storage.k8s.io", Version: "v1beta1", Kind: "StorageClass"}: {},
+ {Group: "storage.k8s.io", Version: "v1beta1", Kind: "StorageClassList"}: {},
+ {Group: "storage.k8s.io", Version: "v1", Kind: "StorageClass"}: {},
+ {Group: "storage.k8s.io", Version: "v1", Kind: "StorageClassList"}: {},
}
f := fuzz.New().NilChance(.5).NumElements(1, 1).RandSource(rand.NewSource(1))
diff --git a/pkg/api/testing/fuzzer.go b/pkg/api/testing/fuzzer.go
index 8fc37898d4..868b4040bc 100644
--- a/pkg/api/testing/fuzzer.go
+++ b/pkg/api/testing/fuzzer.go
@@ -28,13 +28,13 @@ import (
"k8s.io/apimachinery/pkg/runtime"
runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer"
kubeadmfuzzer "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/fuzzer"
- "k8s.io/kubernetes/pkg/api"
- corefuzzer "k8s.io/kubernetes/pkg/api/fuzzer"
admissionregistrationfuzzer "k8s.io/kubernetes/pkg/apis/admissionregistration/fuzzer"
appsfuzzer "k8s.io/kubernetes/pkg/apis/apps/fuzzer"
autoscalingfuzzer "k8s.io/kubernetes/pkg/apis/autoscaling/fuzzer"
batchfuzzer "k8s.io/kubernetes/pkg/apis/batch/fuzzer"
certificatesfuzzer "k8s.io/kubernetes/pkg/apis/certificates/fuzzer"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ corefuzzer "k8s.io/kubernetes/pkg/apis/core/fuzzer"
"k8s.io/kubernetes/pkg/apis/extensions"
extensionsfuzzer "k8s.io/kubernetes/pkg/apis/extensions/fuzzer"
extensionsv1beta1 "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
diff --git a/pkg/api/testing/pod_specs.go b/pkg/api/testing/pod_specs.go
index 2064532dfc..688788dcef 100644
--- a/pkg/api/testing/pod_specs.go
+++ b/pkg/api/testing/pod_specs.go
@@ -18,7 +18,7 @@ package testing
import (
"k8s.io/api/core/v1"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// DeepEqualSafePodSpec returns a PodSpec which is ready to be used with apiequality.Semantic.DeepEqual
diff --git a/pkg/api/testing/serialization_proto_test.go b/pkg/api/testing/serialization_proto_test.go
index 03cefdd852..45c90e818a 100644
--- a/pkg/api/testing/serialization_proto_test.go
+++ b/pkg/api/testing/serialization_proto_test.go
@@ -33,8 +33,8 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/runtime/serializer/protobuf"
"k8s.io/apimachinery/pkg/util/diff"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ api "k8s.io/kubernetes/pkg/apis/core"
_ "k8s.io/kubernetes/pkg/apis/extensions"
_ "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
)
diff --git a/pkg/api/testing/serialization_test.go b/pkg/api/testing/serialization_test.go
index 4106f0209a..d47fad73fd 100644
--- a/pkg/api/testing/serialization_test.go
+++ b/pkg/api/testing/serialization_test.go
@@ -43,10 +43,10 @@ import (
"k8s.io/apimachinery/pkg/util/diff"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/watch"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
- k8s_api_v1 "k8s.io/kubernetes/pkg/api/v1"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ k8s_api_v1 "k8s.io/kubernetes/pkg/apis/core/v1"
"k8s.io/kubernetes/pkg/apis/extensions"
k8s_v1beta1 "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
)
@@ -88,7 +88,7 @@ func Convert_v1beta1_ReplicaSet_to_api_ReplicationController(in *v1beta1.Replica
return err
}
- return k8s_api_v1.Convert_v1_ReplicationController_To_api_ReplicationController(intermediate2, out, s)
+ return k8s_api_v1.Convert_v1_ReplicationController_To_core_ReplicationController(intermediate2, out, s)
}
func TestSetControllerConversion(t *testing.T) {
diff --git a/pkg/api/testing/unstructured_test.go b/pkg/api/testing/unstructured_test.go
index 8894bf4d38..c3cc41424a 100644
--- a/pkg/api/testing/unstructured_test.go
+++ b/pkg/api/testing/unstructured_test.go
@@ -33,9 +33,9 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/diff"
"k8s.io/apimachinery/pkg/util/json"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func doRoundTrip(t *testing.T, group testapi.TestGroup, kind string) {
diff --git a/pkg/api/v1/zz_generated.conversion.go b/pkg/api/v1/zz_generated.conversion.go
deleted file mode 100644
index e16af3ad21..0000000000
--- a/pkg/api/v1/zz_generated.conversion.go
+++ /dev/null
@@ -1,5430 +0,0 @@
-// +build !ignore_autogenerated
-
-/*
-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.
-*/
-
-// This file was autogenerated by conversion-gen. Do not edit it manually!
-
-package v1
-
-import (
- v1 "k8s.io/api/core/v1"
- resource "k8s.io/apimachinery/pkg/api/resource"
- meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
- runtime "k8s.io/apimachinery/pkg/runtime"
- types "k8s.io/apimachinery/pkg/types"
- api "k8s.io/kubernetes/pkg/api"
- unsafe "unsafe"
-)
-
-func init() {
- localSchemeBuilder.Register(RegisterConversions)
-}
-
-// RegisterConversions adds conversion functions to the given scheme.
-// Public to allow building arbitrary schemes.
-func RegisterConversions(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedConversionFuncs(
- Convert_v1_AWSElasticBlockStoreVolumeSource_To_api_AWSElasticBlockStoreVolumeSource,
- Convert_api_AWSElasticBlockStoreVolumeSource_To_v1_AWSElasticBlockStoreVolumeSource,
- Convert_v1_Affinity_To_api_Affinity,
- Convert_api_Affinity_To_v1_Affinity,
- Convert_v1_AttachedVolume_To_api_AttachedVolume,
- Convert_api_AttachedVolume_To_v1_AttachedVolume,
- Convert_v1_AvoidPods_To_api_AvoidPods,
- Convert_api_AvoidPods_To_v1_AvoidPods,
- Convert_v1_AzureDiskVolumeSource_To_api_AzureDiskVolumeSource,
- Convert_api_AzureDiskVolumeSource_To_v1_AzureDiskVolumeSource,
- Convert_v1_AzureFilePersistentVolumeSource_To_api_AzureFilePersistentVolumeSource,
- Convert_api_AzureFilePersistentVolumeSource_To_v1_AzureFilePersistentVolumeSource,
- Convert_v1_AzureFileVolumeSource_To_api_AzureFileVolumeSource,
- Convert_api_AzureFileVolumeSource_To_v1_AzureFileVolumeSource,
- Convert_v1_Binding_To_api_Binding,
- Convert_api_Binding_To_v1_Binding,
- Convert_v1_Capabilities_To_api_Capabilities,
- Convert_api_Capabilities_To_v1_Capabilities,
- Convert_v1_CephFSPersistentVolumeSource_To_api_CephFSPersistentVolumeSource,
- Convert_api_CephFSPersistentVolumeSource_To_v1_CephFSPersistentVolumeSource,
- Convert_v1_CephFSVolumeSource_To_api_CephFSVolumeSource,
- Convert_api_CephFSVolumeSource_To_v1_CephFSVolumeSource,
- Convert_v1_CinderVolumeSource_To_api_CinderVolumeSource,
- Convert_api_CinderVolumeSource_To_v1_CinderVolumeSource,
- Convert_v1_ClientIPConfig_To_api_ClientIPConfig,
- Convert_api_ClientIPConfig_To_v1_ClientIPConfig,
- Convert_v1_ComponentCondition_To_api_ComponentCondition,
- Convert_api_ComponentCondition_To_v1_ComponentCondition,
- Convert_v1_ComponentStatus_To_api_ComponentStatus,
- Convert_api_ComponentStatus_To_v1_ComponentStatus,
- Convert_v1_ComponentStatusList_To_api_ComponentStatusList,
- Convert_api_ComponentStatusList_To_v1_ComponentStatusList,
- Convert_v1_ConfigMap_To_api_ConfigMap,
- Convert_api_ConfigMap_To_v1_ConfigMap,
- Convert_v1_ConfigMapEnvSource_To_api_ConfigMapEnvSource,
- Convert_api_ConfigMapEnvSource_To_v1_ConfigMapEnvSource,
- Convert_v1_ConfigMapKeySelector_To_api_ConfigMapKeySelector,
- Convert_api_ConfigMapKeySelector_To_v1_ConfigMapKeySelector,
- Convert_v1_ConfigMapList_To_api_ConfigMapList,
- Convert_api_ConfigMapList_To_v1_ConfigMapList,
- Convert_v1_ConfigMapProjection_To_api_ConfigMapProjection,
- Convert_api_ConfigMapProjection_To_v1_ConfigMapProjection,
- Convert_v1_ConfigMapVolumeSource_To_api_ConfigMapVolumeSource,
- Convert_api_ConfigMapVolumeSource_To_v1_ConfigMapVolumeSource,
- Convert_v1_Container_To_api_Container,
- Convert_api_Container_To_v1_Container,
- Convert_v1_ContainerImage_To_api_ContainerImage,
- Convert_api_ContainerImage_To_v1_ContainerImage,
- Convert_v1_ContainerPort_To_api_ContainerPort,
- Convert_api_ContainerPort_To_v1_ContainerPort,
- Convert_v1_ContainerState_To_api_ContainerState,
- Convert_api_ContainerState_To_v1_ContainerState,
- Convert_v1_ContainerStateRunning_To_api_ContainerStateRunning,
- Convert_api_ContainerStateRunning_To_v1_ContainerStateRunning,
- Convert_v1_ContainerStateTerminated_To_api_ContainerStateTerminated,
- Convert_api_ContainerStateTerminated_To_v1_ContainerStateTerminated,
- Convert_v1_ContainerStateWaiting_To_api_ContainerStateWaiting,
- Convert_api_ContainerStateWaiting_To_v1_ContainerStateWaiting,
- Convert_v1_ContainerStatus_To_api_ContainerStatus,
- Convert_api_ContainerStatus_To_v1_ContainerStatus,
- Convert_v1_DaemonEndpoint_To_api_DaemonEndpoint,
- Convert_api_DaemonEndpoint_To_v1_DaemonEndpoint,
- Convert_v1_DeleteOptions_To_api_DeleteOptions,
- Convert_api_DeleteOptions_To_v1_DeleteOptions,
- Convert_v1_DownwardAPIProjection_To_api_DownwardAPIProjection,
- Convert_api_DownwardAPIProjection_To_v1_DownwardAPIProjection,
- Convert_v1_DownwardAPIVolumeFile_To_api_DownwardAPIVolumeFile,
- Convert_api_DownwardAPIVolumeFile_To_v1_DownwardAPIVolumeFile,
- Convert_v1_DownwardAPIVolumeSource_To_api_DownwardAPIVolumeSource,
- Convert_api_DownwardAPIVolumeSource_To_v1_DownwardAPIVolumeSource,
- Convert_v1_EmptyDirVolumeSource_To_api_EmptyDirVolumeSource,
- Convert_api_EmptyDirVolumeSource_To_v1_EmptyDirVolumeSource,
- Convert_v1_EndpointAddress_To_api_EndpointAddress,
- Convert_api_EndpointAddress_To_v1_EndpointAddress,
- Convert_v1_EndpointPort_To_api_EndpointPort,
- Convert_api_EndpointPort_To_v1_EndpointPort,
- Convert_v1_EndpointSubset_To_api_EndpointSubset,
- Convert_api_EndpointSubset_To_v1_EndpointSubset,
- Convert_v1_Endpoints_To_api_Endpoints,
- Convert_api_Endpoints_To_v1_Endpoints,
- Convert_v1_EndpointsList_To_api_EndpointsList,
- Convert_api_EndpointsList_To_v1_EndpointsList,
- Convert_v1_EnvFromSource_To_api_EnvFromSource,
- Convert_api_EnvFromSource_To_v1_EnvFromSource,
- Convert_v1_EnvVar_To_api_EnvVar,
- Convert_api_EnvVar_To_v1_EnvVar,
- Convert_v1_EnvVarSource_To_api_EnvVarSource,
- Convert_api_EnvVarSource_To_v1_EnvVarSource,
- Convert_v1_Event_To_api_Event,
- Convert_api_Event_To_v1_Event,
- Convert_v1_EventList_To_api_EventList,
- Convert_api_EventList_To_v1_EventList,
- Convert_v1_EventSource_To_api_EventSource,
- Convert_api_EventSource_To_v1_EventSource,
- Convert_v1_ExecAction_To_api_ExecAction,
- Convert_api_ExecAction_To_v1_ExecAction,
- Convert_v1_FCVolumeSource_To_api_FCVolumeSource,
- Convert_api_FCVolumeSource_To_v1_FCVolumeSource,
- Convert_v1_FlexVolumeSource_To_api_FlexVolumeSource,
- Convert_api_FlexVolumeSource_To_v1_FlexVolumeSource,
- Convert_v1_FlockerVolumeSource_To_api_FlockerVolumeSource,
- Convert_api_FlockerVolumeSource_To_v1_FlockerVolumeSource,
- Convert_v1_GCEPersistentDiskVolumeSource_To_api_GCEPersistentDiskVolumeSource,
- Convert_api_GCEPersistentDiskVolumeSource_To_v1_GCEPersistentDiskVolumeSource,
- Convert_v1_GitRepoVolumeSource_To_api_GitRepoVolumeSource,
- Convert_api_GitRepoVolumeSource_To_v1_GitRepoVolumeSource,
- Convert_v1_GlusterfsVolumeSource_To_api_GlusterfsVolumeSource,
- Convert_api_GlusterfsVolumeSource_To_v1_GlusterfsVolumeSource,
- Convert_v1_HTTPGetAction_To_api_HTTPGetAction,
- Convert_api_HTTPGetAction_To_v1_HTTPGetAction,
- Convert_v1_HTTPHeader_To_api_HTTPHeader,
- Convert_api_HTTPHeader_To_v1_HTTPHeader,
- Convert_v1_Handler_To_api_Handler,
- Convert_api_Handler_To_v1_Handler,
- Convert_v1_HostAlias_To_api_HostAlias,
- Convert_api_HostAlias_To_v1_HostAlias,
- Convert_v1_HostPathVolumeSource_To_api_HostPathVolumeSource,
- Convert_api_HostPathVolumeSource_To_v1_HostPathVolumeSource,
- Convert_v1_ISCSIVolumeSource_To_api_ISCSIVolumeSource,
- Convert_api_ISCSIVolumeSource_To_v1_ISCSIVolumeSource,
- Convert_v1_KeyToPath_To_api_KeyToPath,
- Convert_api_KeyToPath_To_v1_KeyToPath,
- Convert_v1_Lifecycle_To_api_Lifecycle,
- Convert_api_Lifecycle_To_v1_Lifecycle,
- Convert_v1_LimitRange_To_api_LimitRange,
- Convert_api_LimitRange_To_v1_LimitRange,
- Convert_v1_LimitRangeItem_To_api_LimitRangeItem,
- Convert_api_LimitRangeItem_To_v1_LimitRangeItem,
- Convert_v1_LimitRangeList_To_api_LimitRangeList,
- Convert_api_LimitRangeList_To_v1_LimitRangeList,
- Convert_v1_LimitRangeSpec_To_api_LimitRangeSpec,
- Convert_api_LimitRangeSpec_To_v1_LimitRangeSpec,
- Convert_v1_List_To_api_List,
- Convert_api_List_To_v1_List,
- Convert_v1_ListOptions_To_api_ListOptions,
- Convert_api_ListOptions_To_v1_ListOptions,
- Convert_v1_LoadBalancerIngress_To_api_LoadBalancerIngress,
- Convert_api_LoadBalancerIngress_To_v1_LoadBalancerIngress,
- Convert_v1_LoadBalancerStatus_To_api_LoadBalancerStatus,
- Convert_api_LoadBalancerStatus_To_v1_LoadBalancerStatus,
- Convert_v1_LocalObjectReference_To_api_LocalObjectReference,
- Convert_api_LocalObjectReference_To_v1_LocalObjectReference,
- Convert_v1_LocalVolumeSource_To_api_LocalVolumeSource,
- Convert_api_LocalVolumeSource_To_v1_LocalVolumeSource,
- Convert_v1_NFSVolumeSource_To_api_NFSVolumeSource,
- Convert_api_NFSVolumeSource_To_v1_NFSVolumeSource,
- Convert_v1_Namespace_To_api_Namespace,
- Convert_api_Namespace_To_v1_Namespace,
- Convert_v1_NamespaceList_To_api_NamespaceList,
- Convert_api_NamespaceList_To_v1_NamespaceList,
- Convert_v1_NamespaceSpec_To_api_NamespaceSpec,
- Convert_api_NamespaceSpec_To_v1_NamespaceSpec,
- Convert_v1_NamespaceStatus_To_api_NamespaceStatus,
- Convert_api_NamespaceStatus_To_v1_NamespaceStatus,
- Convert_v1_Node_To_api_Node,
- Convert_api_Node_To_v1_Node,
- Convert_v1_NodeAddress_To_api_NodeAddress,
- Convert_api_NodeAddress_To_v1_NodeAddress,
- Convert_v1_NodeAffinity_To_api_NodeAffinity,
- Convert_api_NodeAffinity_To_v1_NodeAffinity,
- Convert_v1_NodeCondition_To_api_NodeCondition,
- Convert_api_NodeCondition_To_v1_NodeCondition,
- Convert_v1_NodeConfigSource_To_api_NodeConfigSource,
- Convert_api_NodeConfigSource_To_v1_NodeConfigSource,
- Convert_v1_NodeDaemonEndpoints_To_api_NodeDaemonEndpoints,
- Convert_api_NodeDaemonEndpoints_To_v1_NodeDaemonEndpoints,
- Convert_v1_NodeList_To_api_NodeList,
- Convert_api_NodeList_To_v1_NodeList,
- Convert_v1_NodeProxyOptions_To_api_NodeProxyOptions,
- Convert_api_NodeProxyOptions_To_v1_NodeProxyOptions,
- Convert_v1_NodeResources_To_api_NodeResources,
- Convert_api_NodeResources_To_v1_NodeResources,
- Convert_v1_NodeSelector_To_api_NodeSelector,
- Convert_api_NodeSelector_To_v1_NodeSelector,
- Convert_v1_NodeSelectorRequirement_To_api_NodeSelectorRequirement,
- Convert_api_NodeSelectorRequirement_To_v1_NodeSelectorRequirement,
- Convert_v1_NodeSelectorTerm_To_api_NodeSelectorTerm,
- Convert_api_NodeSelectorTerm_To_v1_NodeSelectorTerm,
- Convert_v1_NodeSpec_To_api_NodeSpec,
- Convert_api_NodeSpec_To_v1_NodeSpec,
- Convert_v1_NodeStatus_To_api_NodeStatus,
- Convert_api_NodeStatus_To_v1_NodeStatus,
- Convert_v1_NodeSystemInfo_To_api_NodeSystemInfo,
- Convert_api_NodeSystemInfo_To_v1_NodeSystemInfo,
- Convert_v1_ObjectFieldSelector_To_api_ObjectFieldSelector,
- Convert_api_ObjectFieldSelector_To_v1_ObjectFieldSelector,
- Convert_v1_ObjectMeta_To_api_ObjectMeta,
- Convert_api_ObjectMeta_To_v1_ObjectMeta,
- Convert_v1_ObjectReference_To_api_ObjectReference,
- Convert_api_ObjectReference_To_v1_ObjectReference,
- Convert_v1_PersistentVolume_To_api_PersistentVolume,
- Convert_api_PersistentVolume_To_v1_PersistentVolume,
- Convert_v1_PersistentVolumeClaim_To_api_PersistentVolumeClaim,
- Convert_api_PersistentVolumeClaim_To_v1_PersistentVolumeClaim,
- Convert_v1_PersistentVolumeClaimCondition_To_api_PersistentVolumeClaimCondition,
- Convert_api_PersistentVolumeClaimCondition_To_v1_PersistentVolumeClaimCondition,
- Convert_v1_PersistentVolumeClaimList_To_api_PersistentVolumeClaimList,
- Convert_api_PersistentVolumeClaimList_To_v1_PersistentVolumeClaimList,
- Convert_v1_PersistentVolumeClaimSpec_To_api_PersistentVolumeClaimSpec,
- Convert_api_PersistentVolumeClaimSpec_To_v1_PersistentVolumeClaimSpec,
- Convert_v1_PersistentVolumeClaimStatus_To_api_PersistentVolumeClaimStatus,
- Convert_api_PersistentVolumeClaimStatus_To_v1_PersistentVolumeClaimStatus,
- Convert_v1_PersistentVolumeClaimVolumeSource_To_api_PersistentVolumeClaimVolumeSource,
- Convert_api_PersistentVolumeClaimVolumeSource_To_v1_PersistentVolumeClaimVolumeSource,
- Convert_v1_PersistentVolumeList_To_api_PersistentVolumeList,
- Convert_api_PersistentVolumeList_To_v1_PersistentVolumeList,
- Convert_v1_PersistentVolumeSource_To_api_PersistentVolumeSource,
- Convert_api_PersistentVolumeSource_To_v1_PersistentVolumeSource,
- Convert_v1_PersistentVolumeSpec_To_api_PersistentVolumeSpec,
- Convert_api_PersistentVolumeSpec_To_v1_PersistentVolumeSpec,
- Convert_v1_PersistentVolumeStatus_To_api_PersistentVolumeStatus,
- Convert_api_PersistentVolumeStatus_To_v1_PersistentVolumeStatus,
- Convert_v1_PhotonPersistentDiskVolumeSource_To_api_PhotonPersistentDiskVolumeSource,
- Convert_api_PhotonPersistentDiskVolumeSource_To_v1_PhotonPersistentDiskVolumeSource,
- Convert_v1_Pod_To_api_Pod,
- Convert_api_Pod_To_v1_Pod,
- Convert_v1_PodAffinity_To_api_PodAffinity,
- Convert_api_PodAffinity_To_v1_PodAffinity,
- Convert_v1_PodAffinityTerm_To_api_PodAffinityTerm,
- Convert_api_PodAffinityTerm_To_v1_PodAffinityTerm,
- Convert_v1_PodAntiAffinity_To_api_PodAntiAffinity,
- Convert_api_PodAntiAffinity_To_v1_PodAntiAffinity,
- Convert_v1_PodAttachOptions_To_api_PodAttachOptions,
- Convert_api_PodAttachOptions_To_v1_PodAttachOptions,
- Convert_v1_PodCondition_To_api_PodCondition,
- Convert_api_PodCondition_To_v1_PodCondition,
- Convert_v1_PodExecOptions_To_api_PodExecOptions,
- Convert_api_PodExecOptions_To_v1_PodExecOptions,
- Convert_v1_PodList_To_api_PodList,
- Convert_api_PodList_To_v1_PodList,
- Convert_v1_PodLogOptions_To_api_PodLogOptions,
- Convert_api_PodLogOptions_To_v1_PodLogOptions,
- Convert_v1_PodPortForwardOptions_To_api_PodPortForwardOptions,
- Convert_api_PodPortForwardOptions_To_v1_PodPortForwardOptions,
- Convert_v1_PodProxyOptions_To_api_PodProxyOptions,
- Convert_api_PodProxyOptions_To_v1_PodProxyOptions,
- Convert_v1_PodSecurityContext_To_api_PodSecurityContext,
- Convert_api_PodSecurityContext_To_v1_PodSecurityContext,
- Convert_v1_PodSignature_To_api_PodSignature,
- Convert_api_PodSignature_To_v1_PodSignature,
- Convert_v1_PodSpec_To_api_PodSpec,
- Convert_api_PodSpec_To_v1_PodSpec,
- Convert_v1_PodStatus_To_api_PodStatus,
- Convert_api_PodStatus_To_v1_PodStatus,
- Convert_v1_PodStatusResult_To_api_PodStatusResult,
- Convert_api_PodStatusResult_To_v1_PodStatusResult,
- Convert_v1_PodTemplate_To_api_PodTemplate,
- Convert_api_PodTemplate_To_v1_PodTemplate,
- Convert_v1_PodTemplateList_To_api_PodTemplateList,
- Convert_api_PodTemplateList_To_v1_PodTemplateList,
- Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec,
- Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec,
- Convert_v1_PortworxVolumeSource_To_api_PortworxVolumeSource,
- Convert_api_PortworxVolumeSource_To_v1_PortworxVolumeSource,
- Convert_v1_Preconditions_To_api_Preconditions,
- Convert_api_Preconditions_To_v1_Preconditions,
- Convert_v1_PreferAvoidPodsEntry_To_api_PreferAvoidPodsEntry,
- Convert_api_PreferAvoidPodsEntry_To_v1_PreferAvoidPodsEntry,
- Convert_v1_PreferredSchedulingTerm_To_api_PreferredSchedulingTerm,
- Convert_api_PreferredSchedulingTerm_To_v1_PreferredSchedulingTerm,
- Convert_v1_Probe_To_api_Probe,
- Convert_api_Probe_To_v1_Probe,
- Convert_v1_ProjectedVolumeSource_To_api_ProjectedVolumeSource,
- Convert_api_ProjectedVolumeSource_To_v1_ProjectedVolumeSource,
- Convert_v1_QuobyteVolumeSource_To_api_QuobyteVolumeSource,
- Convert_api_QuobyteVolumeSource_To_v1_QuobyteVolumeSource,
- Convert_v1_RBDPersistentVolumeSource_To_api_RBDPersistentVolumeSource,
- Convert_api_RBDPersistentVolumeSource_To_v1_RBDPersistentVolumeSource,
- Convert_v1_RBDVolumeSource_To_api_RBDVolumeSource,
- Convert_api_RBDVolumeSource_To_v1_RBDVolumeSource,
- Convert_v1_RangeAllocation_To_api_RangeAllocation,
- Convert_api_RangeAllocation_To_v1_RangeAllocation,
- Convert_v1_ReplicationController_To_api_ReplicationController,
- Convert_api_ReplicationController_To_v1_ReplicationController,
- Convert_v1_ReplicationControllerCondition_To_api_ReplicationControllerCondition,
- Convert_api_ReplicationControllerCondition_To_v1_ReplicationControllerCondition,
- Convert_v1_ReplicationControllerList_To_api_ReplicationControllerList,
- Convert_api_ReplicationControllerList_To_v1_ReplicationControllerList,
- Convert_v1_ReplicationControllerSpec_To_api_ReplicationControllerSpec,
- Convert_api_ReplicationControllerSpec_To_v1_ReplicationControllerSpec,
- Convert_v1_ReplicationControllerStatus_To_api_ReplicationControllerStatus,
- Convert_api_ReplicationControllerStatus_To_v1_ReplicationControllerStatus,
- Convert_v1_ResourceFieldSelector_To_api_ResourceFieldSelector,
- Convert_api_ResourceFieldSelector_To_v1_ResourceFieldSelector,
- Convert_v1_ResourceQuota_To_api_ResourceQuota,
- Convert_api_ResourceQuota_To_v1_ResourceQuota,
- Convert_v1_ResourceQuotaList_To_api_ResourceQuotaList,
- Convert_api_ResourceQuotaList_To_v1_ResourceQuotaList,
- Convert_v1_ResourceQuotaSpec_To_api_ResourceQuotaSpec,
- Convert_api_ResourceQuotaSpec_To_v1_ResourceQuotaSpec,
- Convert_v1_ResourceQuotaStatus_To_api_ResourceQuotaStatus,
- Convert_api_ResourceQuotaStatus_To_v1_ResourceQuotaStatus,
- Convert_v1_ResourceRequirements_To_api_ResourceRequirements,
- Convert_api_ResourceRequirements_To_v1_ResourceRequirements,
- Convert_v1_SELinuxOptions_To_api_SELinuxOptions,
- Convert_api_SELinuxOptions_To_v1_SELinuxOptions,
- Convert_v1_ScaleIOPersistentVolumeSource_To_api_ScaleIOPersistentVolumeSource,
- Convert_api_ScaleIOPersistentVolumeSource_To_v1_ScaleIOPersistentVolumeSource,
- Convert_v1_ScaleIOVolumeSource_To_api_ScaleIOVolumeSource,
- Convert_api_ScaleIOVolumeSource_To_v1_ScaleIOVolumeSource,
- Convert_v1_Secret_To_api_Secret,
- Convert_api_Secret_To_v1_Secret,
- Convert_v1_SecretEnvSource_To_api_SecretEnvSource,
- Convert_api_SecretEnvSource_To_v1_SecretEnvSource,
- Convert_v1_SecretKeySelector_To_api_SecretKeySelector,
- Convert_api_SecretKeySelector_To_v1_SecretKeySelector,
- Convert_v1_SecretList_To_api_SecretList,
- Convert_api_SecretList_To_v1_SecretList,
- Convert_v1_SecretProjection_To_api_SecretProjection,
- Convert_api_SecretProjection_To_v1_SecretProjection,
- Convert_v1_SecretReference_To_api_SecretReference,
- Convert_api_SecretReference_To_v1_SecretReference,
- Convert_v1_SecretVolumeSource_To_api_SecretVolumeSource,
- Convert_api_SecretVolumeSource_To_v1_SecretVolumeSource,
- Convert_v1_SecurityContext_To_api_SecurityContext,
- Convert_api_SecurityContext_To_v1_SecurityContext,
- Convert_v1_SerializedReference_To_api_SerializedReference,
- Convert_api_SerializedReference_To_v1_SerializedReference,
- Convert_v1_Service_To_api_Service,
- Convert_api_Service_To_v1_Service,
- Convert_v1_ServiceAccount_To_api_ServiceAccount,
- Convert_api_ServiceAccount_To_v1_ServiceAccount,
- Convert_v1_ServiceAccountList_To_api_ServiceAccountList,
- Convert_api_ServiceAccountList_To_v1_ServiceAccountList,
- Convert_v1_ServiceList_To_api_ServiceList,
- Convert_api_ServiceList_To_v1_ServiceList,
- Convert_v1_ServicePort_To_api_ServicePort,
- Convert_api_ServicePort_To_v1_ServicePort,
- Convert_v1_ServiceProxyOptions_To_api_ServiceProxyOptions,
- Convert_api_ServiceProxyOptions_To_v1_ServiceProxyOptions,
- Convert_v1_ServiceSpec_To_api_ServiceSpec,
- Convert_api_ServiceSpec_To_v1_ServiceSpec,
- Convert_v1_ServiceStatus_To_api_ServiceStatus,
- Convert_api_ServiceStatus_To_v1_ServiceStatus,
- Convert_v1_SessionAffinityConfig_To_api_SessionAffinityConfig,
- Convert_api_SessionAffinityConfig_To_v1_SessionAffinityConfig,
- Convert_v1_StorageOSPersistentVolumeSource_To_api_StorageOSPersistentVolumeSource,
- Convert_api_StorageOSPersistentVolumeSource_To_v1_StorageOSPersistentVolumeSource,
- Convert_v1_StorageOSVolumeSource_To_api_StorageOSVolumeSource,
- Convert_api_StorageOSVolumeSource_To_v1_StorageOSVolumeSource,
- Convert_v1_Sysctl_To_api_Sysctl,
- Convert_api_Sysctl_To_v1_Sysctl,
- Convert_v1_TCPSocketAction_To_api_TCPSocketAction,
- Convert_api_TCPSocketAction_To_v1_TCPSocketAction,
- Convert_v1_Taint_To_api_Taint,
- Convert_api_Taint_To_v1_Taint,
- Convert_v1_Toleration_To_api_Toleration,
- Convert_api_Toleration_To_v1_Toleration,
- Convert_v1_Volume_To_api_Volume,
- Convert_api_Volume_To_v1_Volume,
- Convert_v1_VolumeMount_To_api_VolumeMount,
- Convert_api_VolumeMount_To_v1_VolumeMount,
- Convert_v1_VolumeProjection_To_api_VolumeProjection,
- Convert_api_VolumeProjection_To_v1_VolumeProjection,
- Convert_v1_VolumeSource_To_api_VolumeSource,
- Convert_api_VolumeSource_To_v1_VolumeSource,
- Convert_v1_VsphereVirtualDiskVolumeSource_To_api_VsphereVirtualDiskVolumeSource,
- Convert_api_VsphereVirtualDiskVolumeSource_To_v1_VsphereVirtualDiskVolumeSource,
- Convert_v1_WeightedPodAffinityTerm_To_api_WeightedPodAffinityTerm,
- Convert_api_WeightedPodAffinityTerm_To_v1_WeightedPodAffinityTerm,
- )
-}
-
-func autoConvert_v1_AWSElasticBlockStoreVolumeSource_To_api_AWSElasticBlockStoreVolumeSource(in *v1.AWSElasticBlockStoreVolumeSource, out *api.AWSElasticBlockStoreVolumeSource, s conversion.Scope) error {
- out.VolumeID = in.VolumeID
- out.FSType = in.FSType
- out.Partition = in.Partition
- out.ReadOnly = in.ReadOnly
- return nil
-}
-
-// Convert_v1_AWSElasticBlockStoreVolumeSource_To_api_AWSElasticBlockStoreVolumeSource is an autogenerated conversion function.
-func Convert_v1_AWSElasticBlockStoreVolumeSource_To_api_AWSElasticBlockStoreVolumeSource(in *v1.AWSElasticBlockStoreVolumeSource, out *api.AWSElasticBlockStoreVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_AWSElasticBlockStoreVolumeSource_To_api_AWSElasticBlockStoreVolumeSource(in, out, s)
-}
-
-func autoConvert_api_AWSElasticBlockStoreVolumeSource_To_v1_AWSElasticBlockStoreVolumeSource(in *api.AWSElasticBlockStoreVolumeSource, out *v1.AWSElasticBlockStoreVolumeSource, s conversion.Scope) error {
- out.VolumeID = in.VolumeID
- out.FSType = in.FSType
- out.Partition = in.Partition
- out.ReadOnly = in.ReadOnly
- return nil
-}
-
-// Convert_api_AWSElasticBlockStoreVolumeSource_To_v1_AWSElasticBlockStoreVolumeSource is an autogenerated conversion function.
-func Convert_api_AWSElasticBlockStoreVolumeSource_To_v1_AWSElasticBlockStoreVolumeSource(in *api.AWSElasticBlockStoreVolumeSource, out *v1.AWSElasticBlockStoreVolumeSource, s conversion.Scope) error {
- return autoConvert_api_AWSElasticBlockStoreVolumeSource_To_v1_AWSElasticBlockStoreVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_Affinity_To_api_Affinity(in *v1.Affinity, out *api.Affinity, s conversion.Scope) error {
- out.NodeAffinity = (*api.NodeAffinity)(unsafe.Pointer(in.NodeAffinity))
- out.PodAffinity = (*api.PodAffinity)(unsafe.Pointer(in.PodAffinity))
- out.PodAntiAffinity = (*api.PodAntiAffinity)(unsafe.Pointer(in.PodAntiAffinity))
- return nil
-}
-
-// Convert_v1_Affinity_To_api_Affinity is an autogenerated conversion function.
-func Convert_v1_Affinity_To_api_Affinity(in *v1.Affinity, out *api.Affinity, s conversion.Scope) error {
- return autoConvert_v1_Affinity_To_api_Affinity(in, out, s)
-}
-
-func autoConvert_api_Affinity_To_v1_Affinity(in *api.Affinity, out *v1.Affinity, s conversion.Scope) error {
- out.NodeAffinity = (*v1.NodeAffinity)(unsafe.Pointer(in.NodeAffinity))
- out.PodAffinity = (*v1.PodAffinity)(unsafe.Pointer(in.PodAffinity))
- out.PodAntiAffinity = (*v1.PodAntiAffinity)(unsafe.Pointer(in.PodAntiAffinity))
- return nil
-}
-
-// Convert_api_Affinity_To_v1_Affinity is an autogenerated conversion function.
-func Convert_api_Affinity_To_v1_Affinity(in *api.Affinity, out *v1.Affinity, s conversion.Scope) error {
- return autoConvert_api_Affinity_To_v1_Affinity(in, out, s)
-}
-
-func autoConvert_v1_AttachedVolume_To_api_AttachedVolume(in *v1.AttachedVolume, out *api.AttachedVolume, s conversion.Scope) error {
- out.Name = api.UniqueVolumeName(in.Name)
- out.DevicePath = in.DevicePath
- return nil
-}
-
-// Convert_v1_AttachedVolume_To_api_AttachedVolume is an autogenerated conversion function.
-func Convert_v1_AttachedVolume_To_api_AttachedVolume(in *v1.AttachedVolume, out *api.AttachedVolume, s conversion.Scope) error {
- return autoConvert_v1_AttachedVolume_To_api_AttachedVolume(in, out, s)
-}
-
-func autoConvert_api_AttachedVolume_To_v1_AttachedVolume(in *api.AttachedVolume, out *v1.AttachedVolume, s conversion.Scope) error {
- out.Name = v1.UniqueVolumeName(in.Name)
- out.DevicePath = in.DevicePath
- return nil
-}
-
-// Convert_api_AttachedVolume_To_v1_AttachedVolume is an autogenerated conversion function.
-func Convert_api_AttachedVolume_To_v1_AttachedVolume(in *api.AttachedVolume, out *v1.AttachedVolume, s conversion.Scope) error {
- return autoConvert_api_AttachedVolume_To_v1_AttachedVolume(in, out, s)
-}
-
-func autoConvert_v1_AvoidPods_To_api_AvoidPods(in *v1.AvoidPods, out *api.AvoidPods, s conversion.Scope) error {
- out.PreferAvoidPods = *(*[]api.PreferAvoidPodsEntry)(unsafe.Pointer(&in.PreferAvoidPods))
- return nil
-}
-
-// Convert_v1_AvoidPods_To_api_AvoidPods is an autogenerated conversion function.
-func Convert_v1_AvoidPods_To_api_AvoidPods(in *v1.AvoidPods, out *api.AvoidPods, s conversion.Scope) error {
- return autoConvert_v1_AvoidPods_To_api_AvoidPods(in, out, s)
-}
-
-func autoConvert_api_AvoidPods_To_v1_AvoidPods(in *api.AvoidPods, out *v1.AvoidPods, s conversion.Scope) error {
- out.PreferAvoidPods = *(*[]v1.PreferAvoidPodsEntry)(unsafe.Pointer(&in.PreferAvoidPods))
- return nil
-}
-
-// Convert_api_AvoidPods_To_v1_AvoidPods is an autogenerated conversion function.
-func Convert_api_AvoidPods_To_v1_AvoidPods(in *api.AvoidPods, out *v1.AvoidPods, s conversion.Scope) error {
- return autoConvert_api_AvoidPods_To_v1_AvoidPods(in, out, s)
-}
-
-func autoConvert_v1_AzureDiskVolumeSource_To_api_AzureDiskVolumeSource(in *v1.AzureDiskVolumeSource, out *api.AzureDiskVolumeSource, s conversion.Scope) error {
- out.DiskName = in.DiskName
- out.DataDiskURI = in.DataDiskURI
- out.CachingMode = (*api.AzureDataDiskCachingMode)(unsafe.Pointer(in.CachingMode))
- out.FSType = (*string)(unsafe.Pointer(in.FSType))
- out.ReadOnly = (*bool)(unsafe.Pointer(in.ReadOnly))
- out.Kind = (*api.AzureDataDiskKind)(unsafe.Pointer(in.Kind))
- return nil
-}
-
-// Convert_v1_AzureDiskVolumeSource_To_api_AzureDiskVolumeSource is an autogenerated conversion function.
-func Convert_v1_AzureDiskVolumeSource_To_api_AzureDiskVolumeSource(in *v1.AzureDiskVolumeSource, out *api.AzureDiskVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_AzureDiskVolumeSource_To_api_AzureDiskVolumeSource(in, out, s)
-}
-
-func autoConvert_api_AzureDiskVolumeSource_To_v1_AzureDiskVolumeSource(in *api.AzureDiskVolumeSource, out *v1.AzureDiskVolumeSource, s conversion.Scope) error {
- out.DiskName = in.DiskName
- out.DataDiskURI = in.DataDiskURI
- out.CachingMode = (*v1.AzureDataDiskCachingMode)(unsafe.Pointer(in.CachingMode))
- out.FSType = (*string)(unsafe.Pointer(in.FSType))
- out.ReadOnly = (*bool)(unsafe.Pointer(in.ReadOnly))
- out.Kind = (*v1.AzureDataDiskKind)(unsafe.Pointer(in.Kind))
- return nil
-}
-
-// Convert_api_AzureDiskVolumeSource_To_v1_AzureDiskVolumeSource is an autogenerated conversion function.
-func Convert_api_AzureDiskVolumeSource_To_v1_AzureDiskVolumeSource(in *api.AzureDiskVolumeSource, out *v1.AzureDiskVolumeSource, s conversion.Scope) error {
- return autoConvert_api_AzureDiskVolumeSource_To_v1_AzureDiskVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_AzureFilePersistentVolumeSource_To_api_AzureFilePersistentVolumeSource(in *v1.AzureFilePersistentVolumeSource, out *api.AzureFilePersistentVolumeSource, s conversion.Scope) error {
- out.SecretName = in.SecretName
- out.ShareName = in.ShareName
- out.ReadOnly = in.ReadOnly
- out.SecretNamespace = (*string)(unsafe.Pointer(in.SecretNamespace))
- return nil
-}
-
-// Convert_v1_AzureFilePersistentVolumeSource_To_api_AzureFilePersistentVolumeSource is an autogenerated conversion function.
-func Convert_v1_AzureFilePersistentVolumeSource_To_api_AzureFilePersistentVolumeSource(in *v1.AzureFilePersistentVolumeSource, out *api.AzureFilePersistentVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_AzureFilePersistentVolumeSource_To_api_AzureFilePersistentVolumeSource(in, out, s)
-}
-
-func autoConvert_api_AzureFilePersistentVolumeSource_To_v1_AzureFilePersistentVolumeSource(in *api.AzureFilePersistentVolumeSource, out *v1.AzureFilePersistentVolumeSource, s conversion.Scope) error {
- out.SecretName = in.SecretName
- out.ShareName = in.ShareName
- out.ReadOnly = in.ReadOnly
- out.SecretNamespace = (*string)(unsafe.Pointer(in.SecretNamespace))
- return nil
-}
-
-// Convert_api_AzureFilePersistentVolumeSource_To_v1_AzureFilePersistentVolumeSource is an autogenerated conversion function.
-func Convert_api_AzureFilePersistentVolumeSource_To_v1_AzureFilePersistentVolumeSource(in *api.AzureFilePersistentVolumeSource, out *v1.AzureFilePersistentVolumeSource, s conversion.Scope) error {
- return autoConvert_api_AzureFilePersistentVolumeSource_To_v1_AzureFilePersistentVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_AzureFileVolumeSource_To_api_AzureFileVolumeSource(in *v1.AzureFileVolumeSource, out *api.AzureFileVolumeSource, s conversion.Scope) error {
- out.SecretName = in.SecretName
- out.ShareName = in.ShareName
- out.ReadOnly = in.ReadOnly
- return nil
-}
-
-// Convert_v1_AzureFileVolumeSource_To_api_AzureFileVolumeSource is an autogenerated conversion function.
-func Convert_v1_AzureFileVolumeSource_To_api_AzureFileVolumeSource(in *v1.AzureFileVolumeSource, out *api.AzureFileVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_AzureFileVolumeSource_To_api_AzureFileVolumeSource(in, out, s)
-}
-
-func autoConvert_api_AzureFileVolumeSource_To_v1_AzureFileVolumeSource(in *api.AzureFileVolumeSource, out *v1.AzureFileVolumeSource, s conversion.Scope) error {
- out.SecretName = in.SecretName
- out.ShareName = in.ShareName
- out.ReadOnly = in.ReadOnly
- return nil
-}
-
-// Convert_api_AzureFileVolumeSource_To_v1_AzureFileVolumeSource is an autogenerated conversion function.
-func Convert_api_AzureFileVolumeSource_To_v1_AzureFileVolumeSource(in *api.AzureFileVolumeSource, out *v1.AzureFileVolumeSource, s conversion.Scope) error {
- return autoConvert_api_AzureFileVolumeSource_To_v1_AzureFileVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_Binding_To_api_Binding(in *v1.Binding, out *api.Binding, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- if err := Convert_v1_ObjectReference_To_api_ObjectReference(&in.Target, &out.Target, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_v1_Binding_To_api_Binding is an autogenerated conversion function.
-func Convert_v1_Binding_To_api_Binding(in *v1.Binding, out *api.Binding, s conversion.Scope) error {
- return autoConvert_v1_Binding_To_api_Binding(in, out, s)
-}
-
-func autoConvert_api_Binding_To_v1_Binding(in *api.Binding, out *v1.Binding, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- if err := Convert_api_ObjectReference_To_v1_ObjectReference(&in.Target, &out.Target, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_api_Binding_To_v1_Binding is an autogenerated conversion function.
-func Convert_api_Binding_To_v1_Binding(in *api.Binding, out *v1.Binding, s conversion.Scope) error {
- return autoConvert_api_Binding_To_v1_Binding(in, out, s)
-}
-
-func autoConvert_v1_Capabilities_To_api_Capabilities(in *v1.Capabilities, out *api.Capabilities, s conversion.Scope) error {
- out.Add = *(*[]api.Capability)(unsafe.Pointer(&in.Add))
- out.Drop = *(*[]api.Capability)(unsafe.Pointer(&in.Drop))
- return nil
-}
-
-// Convert_v1_Capabilities_To_api_Capabilities is an autogenerated conversion function.
-func Convert_v1_Capabilities_To_api_Capabilities(in *v1.Capabilities, out *api.Capabilities, s conversion.Scope) error {
- return autoConvert_v1_Capabilities_To_api_Capabilities(in, out, s)
-}
-
-func autoConvert_api_Capabilities_To_v1_Capabilities(in *api.Capabilities, out *v1.Capabilities, s conversion.Scope) error {
- out.Add = *(*[]v1.Capability)(unsafe.Pointer(&in.Add))
- out.Drop = *(*[]v1.Capability)(unsafe.Pointer(&in.Drop))
- return nil
-}
-
-// Convert_api_Capabilities_To_v1_Capabilities is an autogenerated conversion function.
-func Convert_api_Capabilities_To_v1_Capabilities(in *api.Capabilities, out *v1.Capabilities, s conversion.Scope) error {
- return autoConvert_api_Capabilities_To_v1_Capabilities(in, out, s)
-}
-
-func autoConvert_v1_CephFSPersistentVolumeSource_To_api_CephFSPersistentVolumeSource(in *v1.CephFSPersistentVolumeSource, out *api.CephFSPersistentVolumeSource, s conversion.Scope) error {
- out.Monitors = *(*[]string)(unsafe.Pointer(&in.Monitors))
- out.Path = in.Path
- out.User = in.User
- out.SecretFile = in.SecretFile
- out.SecretRef = (*api.SecretReference)(unsafe.Pointer(in.SecretRef))
- out.ReadOnly = in.ReadOnly
- return nil
-}
-
-// Convert_v1_CephFSPersistentVolumeSource_To_api_CephFSPersistentVolumeSource is an autogenerated conversion function.
-func Convert_v1_CephFSPersistentVolumeSource_To_api_CephFSPersistentVolumeSource(in *v1.CephFSPersistentVolumeSource, out *api.CephFSPersistentVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_CephFSPersistentVolumeSource_To_api_CephFSPersistentVolumeSource(in, out, s)
-}
-
-func autoConvert_api_CephFSPersistentVolumeSource_To_v1_CephFSPersistentVolumeSource(in *api.CephFSPersistentVolumeSource, out *v1.CephFSPersistentVolumeSource, s conversion.Scope) error {
- out.Monitors = *(*[]string)(unsafe.Pointer(&in.Monitors))
- out.Path = in.Path
- out.User = in.User
- out.SecretFile = in.SecretFile
- out.SecretRef = (*v1.SecretReference)(unsafe.Pointer(in.SecretRef))
- out.ReadOnly = in.ReadOnly
- return nil
-}
-
-// Convert_api_CephFSPersistentVolumeSource_To_v1_CephFSPersistentVolumeSource is an autogenerated conversion function.
-func Convert_api_CephFSPersistentVolumeSource_To_v1_CephFSPersistentVolumeSource(in *api.CephFSPersistentVolumeSource, out *v1.CephFSPersistentVolumeSource, s conversion.Scope) error {
- return autoConvert_api_CephFSPersistentVolumeSource_To_v1_CephFSPersistentVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_CephFSVolumeSource_To_api_CephFSVolumeSource(in *v1.CephFSVolumeSource, out *api.CephFSVolumeSource, s conversion.Scope) error {
- out.Monitors = *(*[]string)(unsafe.Pointer(&in.Monitors))
- out.Path = in.Path
- out.User = in.User
- out.SecretFile = in.SecretFile
- out.SecretRef = (*api.LocalObjectReference)(unsafe.Pointer(in.SecretRef))
- out.ReadOnly = in.ReadOnly
- return nil
-}
-
-// Convert_v1_CephFSVolumeSource_To_api_CephFSVolumeSource is an autogenerated conversion function.
-func Convert_v1_CephFSVolumeSource_To_api_CephFSVolumeSource(in *v1.CephFSVolumeSource, out *api.CephFSVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_CephFSVolumeSource_To_api_CephFSVolumeSource(in, out, s)
-}
-
-func autoConvert_api_CephFSVolumeSource_To_v1_CephFSVolumeSource(in *api.CephFSVolumeSource, out *v1.CephFSVolumeSource, s conversion.Scope) error {
- out.Monitors = *(*[]string)(unsafe.Pointer(&in.Monitors))
- out.Path = in.Path
- out.User = in.User
- out.SecretFile = in.SecretFile
- out.SecretRef = (*v1.LocalObjectReference)(unsafe.Pointer(in.SecretRef))
- out.ReadOnly = in.ReadOnly
- return nil
-}
-
-// Convert_api_CephFSVolumeSource_To_v1_CephFSVolumeSource is an autogenerated conversion function.
-func Convert_api_CephFSVolumeSource_To_v1_CephFSVolumeSource(in *api.CephFSVolumeSource, out *v1.CephFSVolumeSource, s conversion.Scope) error {
- return autoConvert_api_CephFSVolumeSource_To_v1_CephFSVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_CinderVolumeSource_To_api_CinderVolumeSource(in *v1.CinderVolumeSource, out *api.CinderVolumeSource, s conversion.Scope) error {
- out.VolumeID = in.VolumeID
- out.FSType = in.FSType
- out.ReadOnly = in.ReadOnly
- return nil
-}
-
-// Convert_v1_CinderVolumeSource_To_api_CinderVolumeSource is an autogenerated conversion function.
-func Convert_v1_CinderVolumeSource_To_api_CinderVolumeSource(in *v1.CinderVolumeSource, out *api.CinderVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_CinderVolumeSource_To_api_CinderVolumeSource(in, out, s)
-}
-
-func autoConvert_api_CinderVolumeSource_To_v1_CinderVolumeSource(in *api.CinderVolumeSource, out *v1.CinderVolumeSource, s conversion.Scope) error {
- out.VolumeID = in.VolumeID
- out.FSType = in.FSType
- out.ReadOnly = in.ReadOnly
- return nil
-}
-
-// Convert_api_CinderVolumeSource_To_v1_CinderVolumeSource is an autogenerated conversion function.
-func Convert_api_CinderVolumeSource_To_v1_CinderVolumeSource(in *api.CinderVolumeSource, out *v1.CinderVolumeSource, s conversion.Scope) error {
- return autoConvert_api_CinderVolumeSource_To_v1_CinderVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_ClientIPConfig_To_api_ClientIPConfig(in *v1.ClientIPConfig, out *api.ClientIPConfig, s conversion.Scope) error {
- out.TimeoutSeconds = (*int32)(unsafe.Pointer(in.TimeoutSeconds))
- return nil
-}
-
-// Convert_v1_ClientIPConfig_To_api_ClientIPConfig is an autogenerated conversion function.
-func Convert_v1_ClientIPConfig_To_api_ClientIPConfig(in *v1.ClientIPConfig, out *api.ClientIPConfig, s conversion.Scope) error {
- return autoConvert_v1_ClientIPConfig_To_api_ClientIPConfig(in, out, s)
-}
-
-func autoConvert_api_ClientIPConfig_To_v1_ClientIPConfig(in *api.ClientIPConfig, out *v1.ClientIPConfig, s conversion.Scope) error {
- out.TimeoutSeconds = (*int32)(unsafe.Pointer(in.TimeoutSeconds))
- return nil
-}
-
-// Convert_api_ClientIPConfig_To_v1_ClientIPConfig is an autogenerated conversion function.
-func Convert_api_ClientIPConfig_To_v1_ClientIPConfig(in *api.ClientIPConfig, out *v1.ClientIPConfig, s conversion.Scope) error {
- return autoConvert_api_ClientIPConfig_To_v1_ClientIPConfig(in, out, s)
-}
-
-func autoConvert_v1_ComponentCondition_To_api_ComponentCondition(in *v1.ComponentCondition, out *api.ComponentCondition, s conversion.Scope) error {
- out.Type = api.ComponentConditionType(in.Type)
- out.Status = api.ConditionStatus(in.Status)
- out.Message = in.Message
- out.Error = in.Error
- return nil
-}
-
-// Convert_v1_ComponentCondition_To_api_ComponentCondition is an autogenerated conversion function.
-func Convert_v1_ComponentCondition_To_api_ComponentCondition(in *v1.ComponentCondition, out *api.ComponentCondition, s conversion.Scope) error {
- return autoConvert_v1_ComponentCondition_To_api_ComponentCondition(in, out, s)
-}
-
-func autoConvert_api_ComponentCondition_To_v1_ComponentCondition(in *api.ComponentCondition, out *v1.ComponentCondition, s conversion.Scope) error {
- out.Type = v1.ComponentConditionType(in.Type)
- out.Status = v1.ConditionStatus(in.Status)
- out.Message = in.Message
- out.Error = in.Error
- return nil
-}
-
-// Convert_api_ComponentCondition_To_v1_ComponentCondition is an autogenerated conversion function.
-func Convert_api_ComponentCondition_To_v1_ComponentCondition(in *api.ComponentCondition, out *v1.ComponentCondition, s conversion.Scope) error {
- return autoConvert_api_ComponentCondition_To_v1_ComponentCondition(in, out, s)
-}
-
-func autoConvert_v1_ComponentStatus_To_api_ComponentStatus(in *v1.ComponentStatus, out *api.ComponentStatus, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- out.Conditions = *(*[]api.ComponentCondition)(unsafe.Pointer(&in.Conditions))
- return nil
-}
-
-// Convert_v1_ComponentStatus_To_api_ComponentStatus is an autogenerated conversion function.
-func Convert_v1_ComponentStatus_To_api_ComponentStatus(in *v1.ComponentStatus, out *api.ComponentStatus, s conversion.Scope) error {
- return autoConvert_v1_ComponentStatus_To_api_ComponentStatus(in, out, s)
-}
-
-func autoConvert_api_ComponentStatus_To_v1_ComponentStatus(in *api.ComponentStatus, out *v1.ComponentStatus, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- out.Conditions = *(*[]v1.ComponentCondition)(unsafe.Pointer(&in.Conditions))
- return nil
-}
-
-// Convert_api_ComponentStatus_To_v1_ComponentStatus is an autogenerated conversion function.
-func Convert_api_ComponentStatus_To_v1_ComponentStatus(in *api.ComponentStatus, out *v1.ComponentStatus, s conversion.Scope) error {
- return autoConvert_api_ComponentStatus_To_v1_ComponentStatus(in, out, s)
-}
-
-func autoConvert_v1_ComponentStatusList_To_api_ComponentStatusList(in *v1.ComponentStatusList, out *api.ComponentStatusList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- out.Items = *(*[]api.ComponentStatus)(unsafe.Pointer(&in.Items))
- return nil
-}
-
-// Convert_v1_ComponentStatusList_To_api_ComponentStatusList is an autogenerated conversion function.
-func Convert_v1_ComponentStatusList_To_api_ComponentStatusList(in *v1.ComponentStatusList, out *api.ComponentStatusList, s conversion.Scope) error {
- return autoConvert_v1_ComponentStatusList_To_api_ComponentStatusList(in, out, s)
-}
-
-func autoConvert_api_ComponentStatusList_To_v1_ComponentStatusList(in *api.ComponentStatusList, out *v1.ComponentStatusList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- out.Items = *(*[]v1.ComponentStatus)(unsafe.Pointer(&in.Items))
- return nil
-}
-
-// Convert_api_ComponentStatusList_To_v1_ComponentStatusList is an autogenerated conversion function.
-func Convert_api_ComponentStatusList_To_v1_ComponentStatusList(in *api.ComponentStatusList, out *v1.ComponentStatusList, s conversion.Scope) error {
- return autoConvert_api_ComponentStatusList_To_v1_ComponentStatusList(in, out, s)
-}
-
-func autoConvert_v1_ConfigMap_To_api_ConfigMap(in *v1.ConfigMap, out *api.ConfigMap, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- out.Data = *(*map[string]string)(unsafe.Pointer(&in.Data))
- return nil
-}
-
-// Convert_v1_ConfigMap_To_api_ConfigMap is an autogenerated conversion function.
-func Convert_v1_ConfigMap_To_api_ConfigMap(in *v1.ConfigMap, out *api.ConfigMap, s conversion.Scope) error {
- return autoConvert_v1_ConfigMap_To_api_ConfigMap(in, out, s)
-}
-
-func autoConvert_api_ConfigMap_To_v1_ConfigMap(in *api.ConfigMap, out *v1.ConfigMap, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- out.Data = *(*map[string]string)(unsafe.Pointer(&in.Data))
- return nil
-}
-
-// Convert_api_ConfigMap_To_v1_ConfigMap is an autogenerated conversion function.
-func Convert_api_ConfigMap_To_v1_ConfigMap(in *api.ConfigMap, out *v1.ConfigMap, s conversion.Scope) error {
- return autoConvert_api_ConfigMap_To_v1_ConfigMap(in, out, s)
-}
-
-func autoConvert_v1_ConfigMapEnvSource_To_api_ConfigMapEnvSource(in *v1.ConfigMapEnvSource, out *api.ConfigMapEnvSource, s conversion.Scope) error {
- if err := Convert_v1_LocalObjectReference_To_api_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil {
- return err
- }
- out.Optional = (*bool)(unsafe.Pointer(in.Optional))
- return nil
-}
-
-// Convert_v1_ConfigMapEnvSource_To_api_ConfigMapEnvSource is an autogenerated conversion function.
-func Convert_v1_ConfigMapEnvSource_To_api_ConfigMapEnvSource(in *v1.ConfigMapEnvSource, out *api.ConfigMapEnvSource, s conversion.Scope) error {
- return autoConvert_v1_ConfigMapEnvSource_To_api_ConfigMapEnvSource(in, out, s)
-}
-
-func autoConvert_api_ConfigMapEnvSource_To_v1_ConfigMapEnvSource(in *api.ConfigMapEnvSource, out *v1.ConfigMapEnvSource, s conversion.Scope) error {
- if err := Convert_api_LocalObjectReference_To_v1_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil {
- return err
- }
- out.Optional = (*bool)(unsafe.Pointer(in.Optional))
- return nil
-}
-
-// Convert_api_ConfigMapEnvSource_To_v1_ConfigMapEnvSource is an autogenerated conversion function.
-func Convert_api_ConfigMapEnvSource_To_v1_ConfigMapEnvSource(in *api.ConfigMapEnvSource, out *v1.ConfigMapEnvSource, s conversion.Scope) error {
- return autoConvert_api_ConfigMapEnvSource_To_v1_ConfigMapEnvSource(in, out, s)
-}
-
-func autoConvert_v1_ConfigMapKeySelector_To_api_ConfigMapKeySelector(in *v1.ConfigMapKeySelector, out *api.ConfigMapKeySelector, s conversion.Scope) error {
- if err := Convert_v1_LocalObjectReference_To_api_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil {
- return err
- }
- out.Key = in.Key
- out.Optional = (*bool)(unsafe.Pointer(in.Optional))
- return nil
-}
-
-// Convert_v1_ConfigMapKeySelector_To_api_ConfigMapKeySelector is an autogenerated conversion function.
-func Convert_v1_ConfigMapKeySelector_To_api_ConfigMapKeySelector(in *v1.ConfigMapKeySelector, out *api.ConfigMapKeySelector, s conversion.Scope) error {
- return autoConvert_v1_ConfigMapKeySelector_To_api_ConfigMapKeySelector(in, out, s)
-}
-
-func autoConvert_api_ConfigMapKeySelector_To_v1_ConfigMapKeySelector(in *api.ConfigMapKeySelector, out *v1.ConfigMapKeySelector, s conversion.Scope) error {
- if err := Convert_api_LocalObjectReference_To_v1_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil {
- return err
- }
- out.Key = in.Key
- out.Optional = (*bool)(unsafe.Pointer(in.Optional))
- return nil
-}
-
-// Convert_api_ConfigMapKeySelector_To_v1_ConfigMapKeySelector is an autogenerated conversion function.
-func Convert_api_ConfigMapKeySelector_To_v1_ConfigMapKeySelector(in *api.ConfigMapKeySelector, out *v1.ConfigMapKeySelector, s conversion.Scope) error {
- return autoConvert_api_ConfigMapKeySelector_To_v1_ConfigMapKeySelector(in, out, s)
-}
-
-func autoConvert_v1_ConfigMapList_To_api_ConfigMapList(in *v1.ConfigMapList, out *api.ConfigMapList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- out.Items = *(*[]api.ConfigMap)(unsafe.Pointer(&in.Items))
- return nil
-}
-
-// Convert_v1_ConfigMapList_To_api_ConfigMapList is an autogenerated conversion function.
-func Convert_v1_ConfigMapList_To_api_ConfigMapList(in *v1.ConfigMapList, out *api.ConfigMapList, s conversion.Scope) error {
- return autoConvert_v1_ConfigMapList_To_api_ConfigMapList(in, out, s)
-}
-
-func autoConvert_api_ConfigMapList_To_v1_ConfigMapList(in *api.ConfigMapList, out *v1.ConfigMapList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- out.Items = *(*[]v1.ConfigMap)(unsafe.Pointer(&in.Items))
- return nil
-}
-
-// Convert_api_ConfigMapList_To_v1_ConfigMapList is an autogenerated conversion function.
-func Convert_api_ConfigMapList_To_v1_ConfigMapList(in *api.ConfigMapList, out *v1.ConfigMapList, s conversion.Scope) error {
- return autoConvert_api_ConfigMapList_To_v1_ConfigMapList(in, out, s)
-}
-
-func autoConvert_v1_ConfigMapProjection_To_api_ConfigMapProjection(in *v1.ConfigMapProjection, out *api.ConfigMapProjection, s conversion.Scope) error {
- if err := Convert_v1_LocalObjectReference_To_api_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil {
- return err
- }
- out.Items = *(*[]api.KeyToPath)(unsafe.Pointer(&in.Items))
- out.Optional = (*bool)(unsafe.Pointer(in.Optional))
- return nil
-}
-
-// Convert_v1_ConfigMapProjection_To_api_ConfigMapProjection is an autogenerated conversion function.
-func Convert_v1_ConfigMapProjection_To_api_ConfigMapProjection(in *v1.ConfigMapProjection, out *api.ConfigMapProjection, s conversion.Scope) error {
- return autoConvert_v1_ConfigMapProjection_To_api_ConfigMapProjection(in, out, s)
-}
-
-func autoConvert_api_ConfigMapProjection_To_v1_ConfigMapProjection(in *api.ConfigMapProjection, out *v1.ConfigMapProjection, s conversion.Scope) error {
- if err := Convert_api_LocalObjectReference_To_v1_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil {
- return err
- }
- out.Items = *(*[]v1.KeyToPath)(unsafe.Pointer(&in.Items))
- out.Optional = (*bool)(unsafe.Pointer(in.Optional))
- return nil
-}
-
-// Convert_api_ConfigMapProjection_To_v1_ConfigMapProjection is an autogenerated conversion function.
-func Convert_api_ConfigMapProjection_To_v1_ConfigMapProjection(in *api.ConfigMapProjection, out *v1.ConfigMapProjection, s conversion.Scope) error {
- return autoConvert_api_ConfigMapProjection_To_v1_ConfigMapProjection(in, out, s)
-}
-
-func autoConvert_v1_ConfigMapVolumeSource_To_api_ConfigMapVolumeSource(in *v1.ConfigMapVolumeSource, out *api.ConfigMapVolumeSource, s conversion.Scope) error {
- if err := Convert_v1_LocalObjectReference_To_api_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil {
- return err
- }
- out.Items = *(*[]api.KeyToPath)(unsafe.Pointer(&in.Items))
- out.DefaultMode = (*int32)(unsafe.Pointer(in.DefaultMode))
- out.Optional = (*bool)(unsafe.Pointer(in.Optional))
- return nil
-}
-
-// Convert_v1_ConfigMapVolumeSource_To_api_ConfigMapVolumeSource is an autogenerated conversion function.
-func Convert_v1_ConfigMapVolumeSource_To_api_ConfigMapVolumeSource(in *v1.ConfigMapVolumeSource, out *api.ConfigMapVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_ConfigMapVolumeSource_To_api_ConfigMapVolumeSource(in, out, s)
-}
-
-func autoConvert_api_ConfigMapVolumeSource_To_v1_ConfigMapVolumeSource(in *api.ConfigMapVolumeSource, out *v1.ConfigMapVolumeSource, s conversion.Scope) error {
- if err := Convert_api_LocalObjectReference_To_v1_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil {
- return err
- }
- out.Items = *(*[]v1.KeyToPath)(unsafe.Pointer(&in.Items))
- out.DefaultMode = (*int32)(unsafe.Pointer(in.DefaultMode))
- out.Optional = (*bool)(unsafe.Pointer(in.Optional))
- return nil
-}
-
-// Convert_api_ConfigMapVolumeSource_To_v1_ConfigMapVolumeSource is an autogenerated conversion function.
-func Convert_api_ConfigMapVolumeSource_To_v1_ConfigMapVolumeSource(in *api.ConfigMapVolumeSource, out *v1.ConfigMapVolumeSource, s conversion.Scope) error {
- return autoConvert_api_ConfigMapVolumeSource_To_v1_ConfigMapVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_Container_To_api_Container(in *v1.Container, out *api.Container, s conversion.Scope) error {
- out.Name = in.Name
- out.Image = in.Image
- out.Command = *(*[]string)(unsafe.Pointer(&in.Command))
- out.Args = *(*[]string)(unsafe.Pointer(&in.Args))
- out.WorkingDir = in.WorkingDir
- out.Ports = *(*[]api.ContainerPort)(unsafe.Pointer(&in.Ports))
- out.EnvFrom = *(*[]api.EnvFromSource)(unsafe.Pointer(&in.EnvFrom))
- out.Env = *(*[]api.EnvVar)(unsafe.Pointer(&in.Env))
- if err := Convert_v1_ResourceRequirements_To_api_ResourceRequirements(&in.Resources, &out.Resources, s); err != nil {
- return err
- }
- out.VolumeMounts = *(*[]api.VolumeMount)(unsafe.Pointer(&in.VolumeMounts))
- out.LivenessProbe = (*api.Probe)(unsafe.Pointer(in.LivenessProbe))
- out.ReadinessProbe = (*api.Probe)(unsafe.Pointer(in.ReadinessProbe))
- out.Lifecycle = (*api.Lifecycle)(unsafe.Pointer(in.Lifecycle))
- out.TerminationMessagePath = in.TerminationMessagePath
- out.TerminationMessagePolicy = api.TerminationMessagePolicy(in.TerminationMessagePolicy)
- out.ImagePullPolicy = api.PullPolicy(in.ImagePullPolicy)
- if in.SecurityContext != nil {
- in, out := &in.SecurityContext, &out.SecurityContext
- *out = new(api.SecurityContext)
- if err := Convert_v1_SecurityContext_To_api_SecurityContext(*in, *out, s); err != nil {
- return err
- }
- } else {
- out.SecurityContext = nil
- }
- out.Stdin = in.Stdin
- out.StdinOnce = in.StdinOnce
- out.TTY = in.TTY
- return nil
-}
-
-// Convert_v1_Container_To_api_Container is an autogenerated conversion function.
-func Convert_v1_Container_To_api_Container(in *v1.Container, out *api.Container, s conversion.Scope) error {
- return autoConvert_v1_Container_To_api_Container(in, out, s)
-}
-
-func autoConvert_api_Container_To_v1_Container(in *api.Container, out *v1.Container, s conversion.Scope) error {
- out.Name = in.Name
- out.Image = in.Image
- out.Command = *(*[]string)(unsafe.Pointer(&in.Command))
- out.Args = *(*[]string)(unsafe.Pointer(&in.Args))
- out.WorkingDir = in.WorkingDir
- out.Ports = *(*[]v1.ContainerPort)(unsafe.Pointer(&in.Ports))
- out.EnvFrom = *(*[]v1.EnvFromSource)(unsafe.Pointer(&in.EnvFrom))
- out.Env = *(*[]v1.EnvVar)(unsafe.Pointer(&in.Env))
- if err := Convert_api_ResourceRequirements_To_v1_ResourceRequirements(&in.Resources, &out.Resources, s); err != nil {
- return err
- }
- out.VolumeMounts = *(*[]v1.VolumeMount)(unsafe.Pointer(&in.VolumeMounts))
- out.LivenessProbe = (*v1.Probe)(unsafe.Pointer(in.LivenessProbe))
- out.ReadinessProbe = (*v1.Probe)(unsafe.Pointer(in.ReadinessProbe))
- out.Lifecycle = (*v1.Lifecycle)(unsafe.Pointer(in.Lifecycle))
- out.TerminationMessagePath = in.TerminationMessagePath
- out.TerminationMessagePolicy = v1.TerminationMessagePolicy(in.TerminationMessagePolicy)
- out.ImagePullPolicy = v1.PullPolicy(in.ImagePullPolicy)
- if in.SecurityContext != nil {
- in, out := &in.SecurityContext, &out.SecurityContext
- *out = new(v1.SecurityContext)
- if err := Convert_api_SecurityContext_To_v1_SecurityContext(*in, *out, s); err != nil {
- return err
- }
- } else {
- out.SecurityContext = nil
- }
- out.Stdin = in.Stdin
- out.StdinOnce = in.StdinOnce
- out.TTY = in.TTY
- return nil
-}
-
-// Convert_api_Container_To_v1_Container is an autogenerated conversion function.
-func Convert_api_Container_To_v1_Container(in *api.Container, out *v1.Container, s conversion.Scope) error {
- return autoConvert_api_Container_To_v1_Container(in, out, s)
-}
-
-func autoConvert_v1_ContainerImage_To_api_ContainerImage(in *v1.ContainerImage, out *api.ContainerImage, s conversion.Scope) error {
- out.Names = *(*[]string)(unsafe.Pointer(&in.Names))
- out.SizeBytes = in.SizeBytes
- return nil
-}
-
-// Convert_v1_ContainerImage_To_api_ContainerImage is an autogenerated conversion function.
-func Convert_v1_ContainerImage_To_api_ContainerImage(in *v1.ContainerImage, out *api.ContainerImage, s conversion.Scope) error {
- return autoConvert_v1_ContainerImage_To_api_ContainerImage(in, out, s)
-}
-
-func autoConvert_api_ContainerImage_To_v1_ContainerImage(in *api.ContainerImage, out *v1.ContainerImage, s conversion.Scope) error {
- out.Names = *(*[]string)(unsafe.Pointer(&in.Names))
- out.SizeBytes = in.SizeBytes
- return nil
-}
-
-// Convert_api_ContainerImage_To_v1_ContainerImage is an autogenerated conversion function.
-func Convert_api_ContainerImage_To_v1_ContainerImage(in *api.ContainerImage, out *v1.ContainerImage, s conversion.Scope) error {
- return autoConvert_api_ContainerImage_To_v1_ContainerImage(in, out, s)
-}
-
-func autoConvert_v1_ContainerPort_To_api_ContainerPort(in *v1.ContainerPort, out *api.ContainerPort, s conversion.Scope) error {
- out.Name = in.Name
- out.HostPort = in.HostPort
- out.ContainerPort = in.ContainerPort
- out.Protocol = api.Protocol(in.Protocol)
- out.HostIP = in.HostIP
- return nil
-}
-
-// Convert_v1_ContainerPort_To_api_ContainerPort is an autogenerated conversion function.
-func Convert_v1_ContainerPort_To_api_ContainerPort(in *v1.ContainerPort, out *api.ContainerPort, s conversion.Scope) error {
- return autoConvert_v1_ContainerPort_To_api_ContainerPort(in, out, s)
-}
-
-func autoConvert_api_ContainerPort_To_v1_ContainerPort(in *api.ContainerPort, out *v1.ContainerPort, s conversion.Scope) error {
- out.Name = in.Name
- out.HostPort = in.HostPort
- out.ContainerPort = in.ContainerPort
- out.Protocol = v1.Protocol(in.Protocol)
- out.HostIP = in.HostIP
- return nil
-}
-
-// Convert_api_ContainerPort_To_v1_ContainerPort is an autogenerated conversion function.
-func Convert_api_ContainerPort_To_v1_ContainerPort(in *api.ContainerPort, out *v1.ContainerPort, s conversion.Scope) error {
- return autoConvert_api_ContainerPort_To_v1_ContainerPort(in, out, s)
-}
-
-func autoConvert_v1_ContainerState_To_api_ContainerState(in *v1.ContainerState, out *api.ContainerState, s conversion.Scope) error {
- out.Waiting = (*api.ContainerStateWaiting)(unsafe.Pointer(in.Waiting))
- out.Running = (*api.ContainerStateRunning)(unsafe.Pointer(in.Running))
- out.Terminated = (*api.ContainerStateTerminated)(unsafe.Pointer(in.Terminated))
- return nil
-}
-
-// Convert_v1_ContainerState_To_api_ContainerState is an autogenerated conversion function.
-func Convert_v1_ContainerState_To_api_ContainerState(in *v1.ContainerState, out *api.ContainerState, s conversion.Scope) error {
- return autoConvert_v1_ContainerState_To_api_ContainerState(in, out, s)
-}
-
-func autoConvert_api_ContainerState_To_v1_ContainerState(in *api.ContainerState, out *v1.ContainerState, s conversion.Scope) error {
- out.Waiting = (*v1.ContainerStateWaiting)(unsafe.Pointer(in.Waiting))
- out.Running = (*v1.ContainerStateRunning)(unsafe.Pointer(in.Running))
- out.Terminated = (*v1.ContainerStateTerminated)(unsafe.Pointer(in.Terminated))
- return nil
-}
-
-// Convert_api_ContainerState_To_v1_ContainerState is an autogenerated conversion function.
-func Convert_api_ContainerState_To_v1_ContainerState(in *api.ContainerState, out *v1.ContainerState, s conversion.Scope) error {
- return autoConvert_api_ContainerState_To_v1_ContainerState(in, out, s)
-}
-
-func autoConvert_v1_ContainerStateRunning_To_api_ContainerStateRunning(in *v1.ContainerStateRunning, out *api.ContainerStateRunning, s conversion.Scope) error {
- out.StartedAt = in.StartedAt
- return nil
-}
-
-// Convert_v1_ContainerStateRunning_To_api_ContainerStateRunning is an autogenerated conversion function.
-func Convert_v1_ContainerStateRunning_To_api_ContainerStateRunning(in *v1.ContainerStateRunning, out *api.ContainerStateRunning, s conversion.Scope) error {
- return autoConvert_v1_ContainerStateRunning_To_api_ContainerStateRunning(in, out, s)
-}
-
-func autoConvert_api_ContainerStateRunning_To_v1_ContainerStateRunning(in *api.ContainerStateRunning, out *v1.ContainerStateRunning, s conversion.Scope) error {
- out.StartedAt = in.StartedAt
- return nil
-}
-
-// Convert_api_ContainerStateRunning_To_v1_ContainerStateRunning is an autogenerated conversion function.
-func Convert_api_ContainerStateRunning_To_v1_ContainerStateRunning(in *api.ContainerStateRunning, out *v1.ContainerStateRunning, s conversion.Scope) error {
- return autoConvert_api_ContainerStateRunning_To_v1_ContainerStateRunning(in, out, s)
-}
-
-func autoConvert_v1_ContainerStateTerminated_To_api_ContainerStateTerminated(in *v1.ContainerStateTerminated, out *api.ContainerStateTerminated, s conversion.Scope) error {
- out.ExitCode = in.ExitCode
- out.Signal = in.Signal
- out.Reason = in.Reason
- out.Message = in.Message
- out.StartedAt = in.StartedAt
- out.FinishedAt = in.FinishedAt
- out.ContainerID = in.ContainerID
- return nil
-}
-
-// Convert_v1_ContainerStateTerminated_To_api_ContainerStateTerminated is an autogenerated conversion function.
-func Convert_v1_ContainerStateTerminated_To_api_ContainerStateTerminated(in *v1.ContainerStateTerminated, out *api.ContainerStateTerminated, s conversion.Scope) error {
- return autoConvert_v1_ContainerStateTerminated_To_api_ContainerStateTerminated(in, out, s)
-}
-
-func autoConvert_api_ContainerStateTerminated_To_v1_ContainerStateTerminated(in *api.ContainerStateTerminated, out *v1.ContainerStateTerminated, s conversion.Scope) error {
- out.ExitCode = in.ExitCode
- out.Signal = in.Signal
- out.Reason = in.Reason
- out.Message = in.Message
- out.StartedAt = in.StartedAt
- out.FinishedAt = in.FinishedAt
- out.ContainerID = in.ContainerID
- return nil
-}
-
-// Convert_api_ContainerStateTerminated_To_v1_ContainerStateTerminated is an autogenerated conversion function.
-func Convert_api_ContainerStateTerminated_To_v1_ContainerStateTerminated(in *api.ContainerStateTerminated, out *v1.ContainerStateTerminated, s conversion.Scope) error {
- return autoConvert_api_ContainerStateTerminated_To_v1_ContainerStateTerminated(in, out, s)
-}
-
-func autoConvert_v1_ContainerStateWaiting_To_api_ContainerStateWaiting(in *v1.ContainerStateWaiting, out *api.ContainerStateWaiting, s conversion.Scope) error {
- out.Reason = in.Reason
- out.Message = in.Message
- return nil
-}
-
-// Convert_v1_ContainerStateWaiting_To_api_ContainerStateWaiting is an autogenerated conversion function.
-func Convert_v1_ContainerStateWaiting_To_api_ContainerStateWaiting(in *v1.ContainerStateWaiting, out *api.ContainerStateWaiting, s conversion.Scope) error {
- return autoConvert_v1_ContainerStateWaiting_To_api_ContainerStateWaiting(in, out, s)
-}
-
-func autoConvert_api_ContainerStateWaiting_To_v1_ContainerStateWaiting(in *api.ContainerStateWaiting, out *v1.ContainerStateWaiting, s conversion.Scope) error {
- out.Reason = in.Reason
- out.Message = in.Message
- return nil
-}
-
-// Convert_api_ContainerStateWaiting_To_v1_ContainerStateWaiting is an autogenerated conversion function.
-func Convert_api_ContainerStateWaiting_To_v1_ContainerStateWaiting(in *api.ContainerStateWaiting, out *v1.ContainerStateWaiting, s conversion.Scope) error {
- return autoConvert_api_ContainerStateWaiting_To_v1_ContainerStateWaiting(in, out, s)
-}
-
-func autoConvert_v1_ContainerStatus_To_api_ContainerStatus(in *v1.ContainerStatus, out *api.ContainerStatus, s conversion.Scope) error {
- out.Name = in.Name
- if err := Convert_v1_ContainerState_To_api_ContainerState(&in.State, &out.State, s); err != nil {
- return err
- }
- if err := Convert_v1_ContainerState_To_api_ContainerState(&in.LastTerminationState, &out.LastTerminationState, s); err != nil {
- return err
- }
- out.Ready = in.Ready
- out.RestartCount = in.RestartCount
- out.Image = in.Image
- out.ImageID = in.ImageID
- out.ContainerID = in.ContainerID
- return nil
-}
-
-// Convert_v1_ContainerStatus_To_api_ContainerStatus is an autogenerated conversion function.
-func Convert_v1_ContainerStatus_To_api_ContainerStatus(in *v1.ContainerStatus, out *api.ContainerStatus, s conversion.Scope) error {
- return autoConvert_v1_ContainerStatus_To_api_ContainerStatus(in, out, s)
-}
-
-func autoConvert_api_ContainerStatus_To_v1_ContainerStatus(in *api.ContainerStatus, out *v1.ContainerStatus, s conversion.Scope) error {
- out.Name = in.Name
- if err := Convert_api_ContainerState_To_v1_ContainerState(&in.State, &out.State, s); err != nil {
- return err
- }
- if err := Convert_api_ContainerState_To_v1_ContainerState(&in.LastTerminationState, &out.LastTerminationState, s); err != nil {
- return err
- }
- out.Ready = in.Ready
- out.RestartCount = in.RestartCount
- out.Image = in.Image
- out.ImageID = in.ImageID
- out.ContainerID = in.ContainerID
- return nil
-}
-
-// Convert_api_ContainerStatus_To_v1_ContainerStatus is an autogenerated conversion function.
-func Convert_api_ContainerStatus_To_v1_ContainerStatus(in *api.ContainerStatus, out *v1.ContainerStatus, s conversion.Scope) error {
- return autoConvert_api_ContainerStatus_To_v1_ContainerStatus(in, out, s)
-}
-
-func autoConvert_v1_DaemonEndpoint_To_api_DaemonEndpoint(in *v1.DaemonEndpoint, out *api.DaemonEndpoint, s conversion.Scope) error {
- out.Port = in.Port
- return nil
-}
-
-// Convert_v1_DaemonEndpoint_To_api_DaemonEndpoint is an autogenerated conversion function.
-func Convert_v1_DaemonEndpoint_To_api_DaemonEndpoint(in *v1.DaemonEndpoint, out *api.DaemonEndpoint, s conversion.Scope) error {
- return autoConvert_v1_DaemonEndpoint_To_api_DaemonEndpoint(in, out, s)
-}
-
-func autoConvert_api_DaemonEndpoint_To_v1_DaemonEndpoint(in *api.DaemonEndpoint, out *v1.DaemonEndpoint, s conversion.Scope) error {
- out.Port = in.Port
- return nil
-}
-
-// Convert_api_DaemonEndpoint_To_v1_DaemonEndpoint is an autogenerated conversion function.
-func Convert_api_DaemonEndpoint_To_v1_DaemonEndpoint(in *api.DaemonEndpoint, out *v1.DaemonEndpoint, s conversion.Scope) error {
- return autoConvert_api_DaemonEndpoint_To_v1_DaemonEndpoint(in, out, s)
-}
-
-func autoConvert_v1_DeleteOptions_To_api_DeleteOptions(in *v1.DeleteOptions, out *api.DeleteOptions, s conversion.Scope) error {
- out.GracePeriodSeconds = (*int64)(unsafe.Pointer(in.GracePeriodSeconds))
- out.Preconditions = (*api.Preconditions)(unsafe.Pointer(in.Preconditions))
- out.OrphanDependents = (*bool)(unsafe.Pointer(in.OrphanDependents))
- out.PropagationPolicy = (*api.DeletionPropagation)(unsafe.Pointer(in.PropagationPolicy))
- return nil
-}
-
-// Convert_v1_DeleteOptions_To_api_DeleteOptions is an autogenerated conversion function.
-func Convert_v1_DeleteOptions_To_api_DeleteOptions(in *v1.DeleteOptions, out *api.DeleteOptions, s conversion.Scope) error {
- return autoConvert_v1_DeleteOptions_To_api_DeleteOptions(in, out, s)
-}
-
-func autoConvert_api_DeleteOptions_To_v1_DeleteOptions(in *api.DeleteOptions, out *v1.DeleteOptions, s conversion.Scope) error {
- out.GracePeriodSeconds = (*int64)(unsafe.Pointer(in.GracePeriodSeconds))
- out.Preconditions = (*v1.Preconditions)(unsafe.Pointer(in.Preconditions))
- out.OrphanDependents = (*bool)(unsafe.Pointer(in.OrphanDependents))
- out.PropagationPolicy = (*v1.DeletionPropagation)(unsafe.Pointer(in.PropagationPolicy))
- return nil
-}
-
-// Convert_api_DeleteOptions_To_v1_DeleteOptions is an autogenerated conversion function.
-func Convert_api_DeleteOptions_To_v1_DeleteOptions(in *api.DeleteOptions, out *v1.DeleteOptions, s conversion.Scope) error {
- return autoConvert_api_DeleteOptions_To_v1_DeleteOptions(in, out, s)
-}
-
-func autoConvert_v1_DownwardAPIProjection_To_api_DownwardAPIProjection(in *v1.DownwardAPIProjection, out *api.DownwardAPIProjection, s conversion.Scope) error {
- out.Items = *(*[]api.DownwardAPIVolumeFile)(unsafe.Pointer(&in.Items))
- return nil
-}
-
-// Convert_v1_DownwardAPIProjection_To_api_DownwardAPIProjection is an autogenerated conversion function.
-func Convert_v1_DownwardAPIProjection_To_api_DownwardAPIProjection(in *v1.DownwardAPIProjection, out *api.DownwardAPIProjection, s conversion.Scope) error {
- return autoConvert_v1_DownwardAPIProjection_To_api_DownwardAPIProjection(in, out, s)
-}
-
-func autoConvert_api_DownwardAPIProjection_To_v1_DownwardAPIProjection(in *api.DownwardAPIProjection, out *v1.DownwardAPIProjection, s conversion.Scope) error {
- out.Items = *(*[]v1.DownwardAPIVolumeFile)(unsafe.Pointer(&in.Items))
- return nil
-}
-
-// Convert_api_DownwardAPIProjection_To_v1_DownwardAPIProjection is an autogenerated conversion function.
-func Convert_api_DownwardAPIProjection_To_v1_DownwardAPIProjection(in *api.DownwardAPIProjection, out *v1.DownwardAPIProjection, s conversion.Scope) error {
- return autoConvert_api_DownwardAPIProjection_To_v1_DownwardAPIProjection(in, out, s)
-}
-
-func autoConvert_v1_DownwardAPIVolumeFile_To_api_DownwardAPIVolumeFile(in *v1.DownwardAPIVolumeFile, out *api.DownwardAPIVolumeFile, s conversion.Scope) error {
- out.Path = in.Path
- out.FieldRef = (*api.ObjectFieldSelector)(unsafe.Pointer(in.FieldRef))
- out.ResourceFieldRef = (*api.ResourceFieldSelector)(unsafe.Pointer(in.ResourceFieldRef))
- out.Mode = (*int32)(unsafe.Pointer(in.Mode))
- return nil
-}
-
-// Convert_v1_DownwardAPIVolumeFile_To_api_DownwardAPIVolumeFile is an autogenerated conversion function.
-func Convert_v1_DownwardAPIVolumeFile_To_api_DownwardAPIVolumeFile(in *v1.DownwardAPIVolumeFile, out *api.DownwardAPIVolumeFile, s conversion.Scope) error {
- return autoConvert_v1_DownwardAPIVolumeFile_To_api_DownwardAPIVolumeFile(in, out, s)
-}
-
-func autoConvert_api_DownwardAPIVolumeFile_To_v1_DownwardAPIVolumeFile(in *api.DownwardAPIVolumeFile, out *v1.DownwardAPIVolumeFile, s conversion.Scope) error {
- out.Path = in.Path
- out.FieldRef = (*v1.ObjectFieldSelector)(unsafe.Pointer(in.FieldRef))
- out.ResourceFieldRef = (*v1.ResourceFieldSelector)(unsafe.Pointer(in.ResourceFieldRef))
- out.Mode = (*int32)(unsafe.Pointer(in.Mode))
- return nil
-}
-
-// Convert_api_DownwardAPIVolumeFile_To_v1_DownwardAPIVolumeFile is an autogenerated conversion function.
-func Convert_api_DownwardAPIVolumeFile_To_v1_DownwardAPIVolumeFile(in *api.DownwardAPIVolumeFile, out *v1.DownwardAPIVolumeFile, s conversion.Scope) error {
- return autoConvert_api_DownwardAPIVolumeFile_To_v1_DownwardAPIVolumeFile(in, out, s)
-}
-
-func autoConvert_v1_DownwardAPIVolumeSource_To_api_DownwardAPIVolumeSource(in *v1.DownwardAPIVolumeSource, out *api.DownwardAPIVolumeSource, s conversion.Scope) error {
- out.Items = *(*[]api.DownwardAPIVolumeFile)(unsafe.Pointer(&in.Items))
- out.DefaultMode = (*int32)(unsafe.Pointer(in.DefaultMode))
- return nil
-}
-
-// Convert_v1_DownwardAPIVolumeSource_To_api_DownwardAPIVolumeSource is an autogenerated conversion function.
-func Convert_v1_DownwardAPIVolumeSource_To_api_DownwardAPIVolumeSource(in *v1.DownwardAPIVolumeSource, out *api.DownwardAPIVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_DownwardAPIVolumeSource_To_api_DownwardAPIVolumeSource(in, out, s)
-}
-
-func autoConvert_api_DownwardAPIVolumeSource_To_v1_DownwardAPIVolumeSource(in *api.DownwardAPIVolumeSource, out *v1.DownwardAPIVolumeSource, s conversion.Scope) error {
- out.Items = *(*[]v1.DownwardAPIVolumeFile)(unsafe.Pointer(&in.Items))
- out.DefaultMode = (*int32)(unsafe.Pointer(in.DefaultMode))
- return nil
-}
-
-// Convert_api_DownwardAPIVolumeSource_To_v1_DownwardAPIVolumeSource is an autogenerated conversion function.
-func Convert_api_DownwardAPIVolumeSource_To_v1_DownwardAPIVolumeSource(in *api.DownwardAPIVolumeSource, out *v1.DownwardAPIVolumeSource, s conversion.Scope) error {
- return autoConvert_api_DownwardAPIVolumeSource_To_v1_DownwardAPIVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_EmptyDirVolumeSource_To_api_EmptyDirVolumeSource(in *v1.EmptyDirVolumeSource, out *api.EmptyDirVolumeSource, s conversion.Scope) error {
- out.Medium = api.StorageMedium(in.Medium)
- out.SizeLimit = (*resource.Quantity)(unsafe.Pointer(in.SizeLimit))
- return nil
-}
-
-// Convert_v1_EmptyDirVolumeSource_To_api_EmptyDirVolumeSource is an autogenerated conversion function.
-func Convert_v1_EmptyDirVolumeSource_To_api_EmptyDirVolumeSource(in *v1.EmptyDirVolumeSource, out *api.EmptyDirVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_EmptyDirVolumeSource_To_api_EmptyDirVolumeSource(in, out, s)
-}
-
-func autoConvert_api_EmptyDirVolumeSource_To_v1_EmptyDirVolumeSource(in *api.EmptyDirVolumeSource, out *v1.EmptyDirVolumeSource, s conversion.Scope) error {
- out.Medium = v1.StorageMedium(in.Medium)
- out.SizeLimit = (*resource.Quantity)(unsafe.Pointer(in.SizeLimit))
- return nil
-}
-
-// Convert_api_EmptyDirVolumeSource_To_v1_EmptyDirVolumeSource is an autogenerated conversion function.
-func Convert_api_EmptyDirVolumeSource_To_v1_EmptyDirVolumeSource(in *api.EmptyDirVolumeSource, out *v1.EmptyDirVolumeSource, s conversion.Scope) error {
- return autoConvert_api_EmptyDirVolumeSource_To_v1_EmptyDirVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_EndpointAddress_To_api_EndpointAddress(in *v1.EndpointAddress, out *api.EndpointAddress, s conversion.Scope) error {
- out.IP = in.IP
- out.Hostname = in.Hostname
- out.NodeName = (*string)(unsafe.Pointer(in.NodeName))
- out.TargetRef = (*api.ObjectReference)(unsafe.Pointer(in.TargetRef))
- return nil
-}
-
-// Convert_v1_EndpointAddress_To_api_EndpointAddress is an autogenerated conversion function.
-func Convert_v1_EndpointAddress_To_api_EndpointAddress(in *v1.EndpointAddress, out *api.EndpointAddress, s conversion.Scope) error {
- return autoConvert_v1_EndpointAddress_To_api_EndpointAddress(in, out, s)
-}
-
-func autoConvert_api_EndpointAddress_To_v1_EndpointAddress(in *api.EndpointAddress, out *v1.EndpointAddress, s conversion.Scope) error {
- out.IP = in.IP
- out.Hostname = in.Hostname
- out.NodeName = (*string)(unsafe.Pointer(in.NodeName))
- out.TargetRef = (*v1.ObjectReference)(unsafe.Pointer(in.TargetRef))
- return nil
-}
-
-// Convert_api_EndpointAddress_To_v1_EndpointAddress is an autogenerated conversion function.
-func Convert_api_EndpointAddress_To_v1_EndpointAddress(in *api.EndpointAddress, out *v1.EndpointAddress, s conversion.Scope) error {
- return autoConvert_api_EndpointAddress_To_v1_EndpointAddress(in, out, s)
-}
-
-func autoConvert_v1_EndpointPort_To_api_EndpointPort(in *v1.EndpointPort, out *api.EndpointPort, s conversion.Scope) error {
- out.Name = in.Name
- out.Port = in.Port
- out.Protocol = api.Protocol(in.Protocol)
- return nil
-}
-
-// Convert_v1_EndpointPort_To_api_EndpointPort is an autogenerated conversion function.
-func Convert_v1_EndpointPort_To_api_EndpointPort(in *v1.EndpointPort, out *api.EndpointPort, s conversion.Scope) error {
- return autoConvert_v1_EndpointPort_To_api_EndpointPort(in, out, s)
-}
-
-func autoConvert_api_EndpointPort_To_v1_EndpointPort(in *api.EndpointPort, out *v1.EndpointPort, s conversion.Scope) error {
- out.Name = in.Name
- out.Port = in.Port
- out.Protocol = v1.Protocol(in.Protocol)
- return nil
-}
-
-// Convert_api_EndpointPort_To_v1_EndpointPort is an autogenerated conversion function.
-func Convert_api_EndpointPort_To_v1_EndpointPort(in *api.EndpointPort, out *v1.EndpointPort, s conversion.Scope) error {
- return autoConvert_api_EndpointPort_To_v1_EndpointPort(in, out, s)
-}
-
-func autoConvert_v1_EndpointSubset_To_api_EndpointSubset(in *v1.EndpointSubset, out *api.EndpointSubset, s conversion.Scope) error {
- out.Addresses = *(*[]api.EndpointAddress)(unsafe.Pointer(&in.Addresses))
- out.NotReadyAddresses = *(*[]api.EndpointAddress)(unsafe.Pointer(&in.NotReadyAddresses))
- out.Ports = *(*[]api.EndpointPort)(unsafe.Pointer(&in.Ports))
- return nil
-}
-
-// Convert_v1_EndpointSubset_To_api_EndpointSubset is an autogenerated conversion function.
-func Convert_v1_EndpointSubset_To_api_EndpointSubset(in *v1.EndpointSubset, out *api.EndpointSubset, s conversion.Scope) error {
- return autoConvert_v1_EndpointSubset_To_api_EndpointSubset(in, out, s)
-}
-
-func autoConvert_api_EndpointSubset_To_v1_EndpointSubset(in *api.EndpointSubset, out *v1.EndpointSubset, s conversion.Scope) error {
- out.Addresses = *(*[]v1.EndpointAddress)(unsafe.Pointer(&in.Addresses))
- out.NotReadyAddresses = *(*[]v1.EndpointAddress)(unsafe.Pointer(&in.NotReadyAddresses))
- out.Ports = *(*[]v1.EndpointPort)(unsafe.Pointer(&in.Ports))
- return nil
-}
-
-// Convert_api_EndpointSubset_To_v1_EndpointSubset is an autogenerated conversion function.
-func Convert_api_EndpointSubset_To_v1_EndpointSubset(in *api.EndpointSubset, out *v1.EndpointSubset, s conversion.Scope) error {
- return autoConvert_api_EndpointSubset_To_v1_EndpointSubset(in, out, s)
-}
-
-func autoConvert_v1_Endpoints_To_api_Endpoints(in *v1.Endpoints, out *api.Endpoints, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- out.Subsets = *(*[]api.EndpointSubset)(unsafe.Pointer(&in.Subsets))
- return nil
-}
-
-// Convert_v1_Endpoints_To_api_Endpoints is an autogenerated conversion function.
-func Convert_v1_Endpoints_To_api_Endpoints(in *v1.Endpoints, out *api.Endpoints, s conversion.Scope) error {
- return autoConvert_v1_Endpoints_To_api_Endpoints(in, out, s)
-}
-
-func autoConvert_api_Endpoints_To_v1_Endpoints(in *api.Endpoints, out *v1.Endpoints, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- out.Subsets = *(*[]v1.EndpointSubset)(unsafe.Pointer(&in.Subsets))
- return nil
-}
-
-// Convert_api_Endpoints_To_v1_Endpoints is an autogenerated conversion function.
-func Convert_api_Endpoints_To_v1_Endpoints(in *api.Endpoints, out *v1.Endpoints, s conversion.Scope) error {
- return autoConvert_api_Endpoints_To_v1_Endpoints(in, out, s)
-}
-
-func autoConvert_v1_EndpointsList_To_api_EndpointsList(in *v1.EndpointsList, out *api.EndpointsList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- out.Items = *(*[]api.Endpoints)(unsafe.Pointer(&in.Items))
- return nil
-}
-
-// Convert_v1_EndpointsList_To_api_EndpointsList is an autogenerated conversion function.
-func Convert_v1_EndpointsList_To_api_EndpointsList(in *v1.EndpointsList, out *api.EndpointsList, s conversion.Scope) error {
- return autoConvert_v1_EndpointsList_To_api_EndpointsList(in, out, s)
-}
-
-func autoConvert_api_EndpointsList_To_v1_EndpointsList(in *api.EndpointsList, out *v1.EndpointsList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- out.Items = *(*[]v1.Endpoints)(unsafe.Pointer(&in.Items))
- return nil
-}
-
-// Convert_api_EndpointsList_To_v1_EndpointsList is an autogenerated conversion function.
-func Convert_api_EndpointsList_To_v1_EndpointsList(in *api.EndpointsList, out *v1.EndpointsList, s conversion.Scope) error {
- return autoConvert_api_EndpointsList_To_v1_EndpointsList(in, out, s)
-}
-
-func autoConvert_v1_EnvFromSource_To_api_EnvFromSource(in *v1.EnvFromSource, out *api.EnvFromSource, s conversion.Scope) error {
- out.Prefix = in.Prefix
- out.ConfigMapRef = (*api.ConfigMapEnvSource)(unsafe.Pointer(in.ConfigMapRef))
- out.SecretRef = (*api.SecretEnvSource)(unsafe.Pointer(in.SecretRef))
- return nil
-}
-
-// Convert_v1_EnvFromSource_To_api_EnvFromSource is an autogenerated conversion function.
-func Convert_v1_EnvFromSource_To_api_EnvFromSource(in *v1.EnvFromSource, out *api.EnvFromSource, s conversion.Scope) error {
- return autoConvert_v1_EnvFromSource_To_api_EnvFromSource(in, out, s)
-}
-
-func autoConvert_api_EnvFromSource_To_v1_EnvFromSource(in *api.EnvFromSource, out *v1.EnvFromSource, s conversion.Scope) error {
- out.Prefix = in.Prefix
- out.ConfigMapRef = (*v1.ConfigMapEnvSource)(unsafe.Pointer(in.ConfigMapRef))
- out.SecretRef = (*v1.SecretEnvSource)(unsafe.Pointer(in.SecretRef))
- return nil
-}
-
-// Convert_api_EnvFromSource_To_v1_EnvFromSource is an autogenerated conversion function.
-func Convert_api_EnvFromSource_To_v1_EnvFromSource(in *api.EnvFromSource, out *v1.EnvFromSource, s conversion.Scope) error {
- return autoConvert_api_EnvFromSource_To_v1_EnvFromSource(in, out, s)
-}
-
-func autoConvert_v1_EnvVar_To_api_EnvVar(in *v1.EnvVar, out *api.EnvVar, s conversion.Scope) error {
- out.Name = in.Name
- out.Value = in.Value
- out.ValueFrom = (*api.EnvVarSource)(unsafe.Pointer(in.ValueFrom))
- return nil
-}
-
-// Convert_v1_EnvVar_To_api_EnvVar is an autogenerated conversion function.
-func Convert_v1_EnvVar_To_api_EnvVar(in *v1.EnvVar, out *api.EnvVar, s conversion.Scope) error {
- return autoConvert_v1_EnvVar_To_api_EnvVar(in, out, s)
-}
-
-func autoConvert_api_EnvVar_To_v1_EnvVar(in *api.EnvVar, out *v1.EnvVar, s conversion.Scope) error {
- out.Name = in.Name
- out.Value = in.Value
- out.ValueFrom = (*v1.EnvVarSource)(unsafe.Pointer(in.ValueFrom))
- return nil
-}
-
-// Convert_api_EnvVar_To_v1_EnvVar is an autogenerated conversion function.
-func Convert_api_EnvVar_To_v1_EnvVar(in *api.EnvVar, out *v1.EnvVar, s conversion.Scope) error {
- return autoConvert_api_EnvVar_To_v1_EnvVar(in, out, s)
-}
-
-func autoConvert_v1_EnvVarSource_To_api_EnvVarSource(in *v1.EnvVarSource, out *api.EnvVarSource, s conversion.Scope) error {
- out.FieldRef = (*api.ObjectFieldSelector)(unsafe.Pointer(in.FieldRef))
- out.ResourceFieldRef = (*api.ResourceFieldSelector)(unsafe.Pointer(in.ResourceFieldRef))
- out.ConfigMapKeyRef = (*api.ConfigMapKeySelector)(unsafe.Pointer(in.ConfigMapKeyRef))
- out.SecretKeyRef = (*api.SecretKeySelector)(unsafe.Pointer(in.SecretKeyRef))
- return nil
-}
-
-// Convert_v1_EnvVarSource_To_api_EnvVarSource is an autogenerated conversion function.
-func Convert_v1_EnvVarSource_To_api_EnvVarSource(in *v1.EnvVarSource, out *api.EnvVarSource, s conversion.Scope) error {
- return autoConvert_v1_EnvVarSource_To_api_EnvVarSource(in, out, s)
-}
-
-func autoConvert_api_EnvVarSource_To_v1_EnvVarSource(in *api.EnvVarSource, out *v1.EnvVarSource, s conversion.Scope) error {
- out.FieldRef = (*v1.ObjectFieldSelector)(unsafe.Pointer(in.FieldRef))
- out.ResourceFieldRef = (*v1.ResourceFieldSelector)(unsafe.Pointer(in.ResourceFieldRef))
- out.ConfigMapKeyRef = (*v1.ConfigMapKeySelector)(unsafe.Pointer(in.ConfigMapKeyRef))
- out.SecretKeyRef = (*v1.SecretKeySelector)(unsafe.Pointer(in.SecretKeyRef))
- return nil
-}
-
-// Convert_api_EnvVarSource_To_v1_EnvVarSource is an autogenerated conversion function.
-func Convert_api_EnvVarSource_To_v1_EnvVarSource(in *api.EnvVarSource, out *v1.EnvVarSource, s conversion.Scope) error {
- return autoConvert_api_EnvVarSource_To_v1_EnvVarSource(in, out, s)
-}
-
-func autoConvert_v1_Event_To_api_Event(in *v1.Event, out *api.Event, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- if err := Convert_v1_ObjectReference_To_api_ObjectReference(&in.InvolvedObject, &out.InvolvedObject, s); err != nil {
- return err
- }
- out.Reason = in.Reason
- out.Message = in.Message
- if err := Convert_v1_EventSource_To_api_EventSource(&in.Source, &out.Source, s); err != nil {
- return err
- }
- out.FirstTimestamp = in.FirstTimestamp
- out.LastTimestamp = in.LastTimestamp
- out.Count = in.Count
- out.Type = in.Type
- return nil
-}
-
-// Convert_v1_Event_To_api_Event is an autogenerated conversion function.
-func Convert_v1_Event_To_api_Event(in *v1.Event, out *api.Event, s conversion.Scope) error {
- return autoConvert_v1_Event_To_api_Event(in, out, s)
-}
-
-func autoConvert_api_Event_To_v1_Event(in *api.Event, out *v1.Event, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- if err := Convert_api_ObjectReference_To_v1_ObjectReference(&in.InvolvedObject, &out.InvolvedObject, s); err != nil {
- return err
- }
- out.Reason = in.Reason
- out.Message = in.Message
- if err := Convert_api_EventSource_To_v1_EventSource(&in.Source, &out.Source, s); err != nil {
- return err
- }
- out.FirstTimestamp = in.FirstTimestamp
- out.LastTimestamp = in.LastTimestamp
- out.Count = in.Count
- out.Type = in.Type
- return nil
-}
-
-// Convert_api_Event_To_v1_Event is an autogenerated conversion function.
-func Convert_api_Event_To_v1_Event(in *api.Event, out *v1.Event, s conversion.Scope) error {
- return autoConvert_api_Event_To_v1_Event(in, out, s)
-}
-
-func autoConvert_v1_EventList_To_api_EventList(in *v1.EventList, out *api.EventList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- out.Items = *(*[]api.Event)(unsafe.Pointer(&in.Items))
- return nil
-}
-
-// Convert_v1_EventList_To_api_EventList is an autogenerated conversion function.
-func Convert_v1_EventList_To_api_EventList(in *v1.EventList, out *api.EventList, s conversion.Scope) error {
- return autoConvert_v1_EventList_To_api_EventList(in, out, s)
-}
-
-func autoConvert_api_EventList_To_v1_EventList(in *api.EventList, out *v1.EventList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- out.Items = *(*[]v1.Event)(unsafe.Pointer(&in.Items))
- return nil
-}
-
-// Convert_api_EventList_To_v1_EventList is an autogenerated conversion function.
-func Convert_api_EventList_To_v1_EventList(in *api.EventList, out *v1.EventList, s conversion.Scope) error {
- return autoConvert_api_EventList_To_v1_EventList(in, out, s)
-}
-
-func autoConvert_v1_EventSource_To_api_EventSource(in *v1.EventSource, out *api.EventSource, s conversion.Scope) error {
- out.Component = in.Component
- out.Host = in.Host
- return nil
-}
-
-// Convert_v1_EventSource_To_api_EventSource is an autogenerated conversion function.
-func Convert_v1_EventSource_To_api_EventSource(in *v1.EventSource, out *api.EventSource, s conversion.Scope) error {
- return autoConvert_v1_EventSource_To_api_EventSource(in, out, s)
-}
-
-func autoConvert_api_EventSource_To_v1_EventSource(in *api.EventSource, out *v1.EventSource, s conversion.Scope) error {
- out.Component = in.Component
- out.Host = in.Host
- return nil
-}
-
-// Convert_api_EventSource_To_v1_EventSource is an autogenerated conversion function.
-func Convert_api_EventSource_To_v1_EventSource(in *api.EventSource, out *v1.EventSource, s conversion.Scope) error {
- return autoConvert_api_EventSource_To_v1_EventSource(in, out, s)
-}
-
-func autoConvert_v1_ExecAction_To_api_ExecAction(in *v1.ExecAction, out *api.ExecAction, s conversion.Scope) error {
- out.Command = *(*[]string)(unsafe.Pointer(&in.Command))
- return nil
-}
-
-// Convert_v1_ExecAction_To_api_ExecAction is an autogenerated conversion function.
-func Convert_v1_ExecAction_To_api_ExecAction(in *v1.ExecAction, out *api.ExecAction, s conversion.Scope) error {
- return autoConvert_v1_ExecAction_To_api_ExecAction(in, out, s)
-}
-
-func autoConvert_api_ExecAction_To_v1_ExecAction(in *api.ExecAction, out *v1.ExecAction, s conversion.Scope) error {
- out.Command = *(*[]string)(unsafe.Pointer(&in.Command))
- return nil
-}
-
-// Convert_api_ExecAction_To_v1_ExecAction is an autogenerated conversion function.
-func Convert_api_ExecAction_To_v1_ExecAction(in *api.ExecAction, out *v1.ExecAction, s conversion.Scope) error {
- return autoConvert_api_ExecAction_To_v1_ExecAction(in, out, s)
-}
-
-func autoConvert_v1_FCVolumeSource_To_api_FCVolumeSource(in *v1.FCVolumeSource, out *api.FCVolumeSource, s conversion.Scope) error {
- out.TargetWWNs = *(*[]string)(unsafe.Pointer(&in.TargetWWNs))
- out.Lun = (*int32)(unsafe.Pointer(in.Lun))
- out.FSType = in.FSType
- out.ReadOnly = in.ReadOnly
- out.WWIDs = *(*[]string)(unsafe.Pointer(&in.WWIDs))
- return nil
-}
-
-// Convert_v1_FCVolumeSource_To_api_FCVolumeSource is an autogenerated conversion function.
-func Convert_v1_FCVolumeSource_To_api_FCVolumeSource(in *v1.FCVolumeSource, out *api.FCVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_FCVolumeSource_To_api_FCVolumeSource(in, out, s)
-}
-
-func autoConvert_api_FCVolumeSource_To_v1_FCVolumeSource(in *api.FCVolumeSource, out *v1.FCVolumeSource, s conversion.Scope) error {
- out.TargetWWNs = *(*[]string)(unsafe.Pointer(&in.TargetWWNs))
- out.Lun = (*int32)(unsafe.Pointer(in.Lun))
- out.FSType = in.FSType
- out.ReadOnly = in.ReadOnly
- out.WWIDs = *(*[]string)(unsafe.Pointer(&in.WWIDs))
- return nil
-}
-
-// Convert_api_FCVolumeSource_To_v1_FCVolumeSource is an autogenerated conversion function.
-func Convert_api_FCVolumeSource_To_v1_FCVolumeSource(in *api.FCVolumeSource, out *v1.FCVolumeSource, s conversion.Scope) error {
- return autoConvert_api_FCVolumeSource_To_v1_FCVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_FlexVolumeSource_To_api_FlexVolumeSource(in *v1.FlexVolumeSource, out *api.FlexVolumeSource, s conversion.Scope) error {
- out.Driver = in.Driver
- out.FSType = in.FSType
- out.SecretRef = (*api.LocalObjectReference)(unsafe.Pointer(in.SecretRef))
- out.ReadOnly = in.ReadOnly
- out.Options = *(*map[string]string)(unsafe.Pointer(&in.Options))
- return nil
-}
-
-// Convert_v1_FlexVolumeSource_To_api_FlexVolumeSource is an autogenerated conversion function.
-func Convert_v1_FlexVolumeSource_To_api_FlexVolumeSource(in *v1.FlexVolumeSource, out *api.FlexVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_FlexVolumeSource_To_api_FlexVolumeSource(in, out, s)
-}
-
-func autoConvert_api_FlexVolumeSource_To_v1_FlexVolumeSource(in *api.FlexVolumeSource, out *v1.FlexVolumeSource, s conversion.Scope) error {
- out.Driver = in.Driver
- out.FSType = in.FSType
- out.SecretRef = (*v1.LocalObjectReference)(unsafe.Pointer(in.SecretRef))
- out.ReadOnly = in.ReadOnly
- out.Options = *(*map[string]string)(unsafe.Pointer(&in.Options))
- return nil
-}
-
-// Convert_api_FlexVolumeSource_To_v1_FlexVolumeSource is an autogenerated conversion function.
-func Convert_api_FlexVolumeSource_To_v1_FlexVolumeSource(in *api.FlexVolumeSource, out *v1.FlexVolumeSource, s conversion.Scope) error {
- return autoConvert_api_FlexVolumeSource_To_v1_FlexVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_FlockerVolumeSource_To_api_FlockerVolumeSource(in *v1.FlockerVolumeSource, out *api.FlockerVolumeSource, s conversion.Scope) error {
- out.DatasetName = in.DatasetName
- out.DatasetUUID = in.DatasetUUID
- return nil
-}
-
-// Convert_v1_FlockerVolumeSource_To_api_FlockerVolumeSource is an autogenerated conversion function.
-func Convert_v1_FlockerVolumeSource_To_api_FlockerVolumeSource(in *v1.FlockerVolumeSource, out *api.FlockerVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_FlockerVolumeSource_To_api_FlockerVolumeSource(in, out, s)
-}
-
-func autoConvert_api_FlockerVolumeSource_To_v1_FlockerVolumeSource(in *api.FlockerVolumeSource, out *v1.FlockerVolumeSource, s conversion.Scope) error {
- out.DatasetName = in.DatasetName
- out.DatasetUUID = in.DatasetUUID
- return nil
-}
-
-// Convert_api_FlockerVolumeSource_To_v1_FlockerVolumeSource is an autogenerated conversion function.
-func Convert_api_FlockerVolumeSource_To_v1_FlockerVolumeSource(in *api.FlockerVolumeSource, out *v1.FlockerVolumeSource, s conversion.Scope) error {
- return autoConvert_api_FlockerVolumeSource_To_v1_FlockerVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_GCEPersistentDiskVolumeSource_To_api_GCEPersistentDiskVolumeSource(in *v1.GCEPersistentDiskVolumeSource, out *api.GCEPersistentDiskVolumeSource, s conversion.Scope) error {
- out.PDName = in.PDName
- out.FSType = in.FSType
- out.Partition = in.Partition
- out.ReadOnly = in.ReadOnly
- return nil
-}
-
-// Convert_v1_GCEPersistentDiskVolumeSource_To_api_GCEPersistentDiskVolumeSource is an autogenerated conversion function.
-func Convert_v1_GCEPersistentDiskVolumeSource_To_api_GCEPersistentDiskVolumeSource(in *v1.GCEPersistentDiskVolumeSource, out *api.GCEPersistentDiskVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_GCEPersistentDiskVolumeSource_To_api_GCEPersistentDiskVolumeSource(in, out, s)
-}
-
-func autoConvert_api_GCEPersistentDiskVolumeSource_To_v1_GCEPersistentDiskVolumeSource(in *api.GCEPersistentDiskVolumeSource, out *v1.GCEPersistentDiskVolumeSource, s conversion.Scope) error {
- out.PDName = in.PDName
- out.FSType = in.FSType
- out.Partition = in.Partition
- out.ReadOnly = in.ReadOnly
- return nil
-}
-
-// Convert_api_GCEPersistentDiskVolumeSource_To_v1_GCEPersistentDiskVolumeSource is an autogenerated conversion function.
-func Convert_api_GCEPersistentDiskVolumeSource_To_v1_GCEPersistentDiskVolumeSource(in *api.GCEPersistentDiskVolumeSource, out *v1.GCEPersistentDiskVolumeSource, s conversion.Scope) error {
- return autoConvert_api_GCEPersistentDiskVolumeSource_To_v1_GCEPersistentDiskVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_GitRepoVolumeSource_To_api_GitRepoVolumeSource(in *v1.GitRepoVolumeSource, out *api.GitRepoVolumeSource, s conversion.Scope) error {
- out.Repository = in.Repository
- out.Revision = in.Revision
- out.Directory = in.Directory
- return nil
-}
-
-// Convert_v1_GitRepoVolumeSource_To_api_GitRepoVolumeSource is an autogenerated conversion function.
-func Convert_v1_GitRepoVolumeSource_To_api_GitRepoVolumeSource(in *v1.GitRepoVolumeSource, out *api.GitRepoVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_GitRepoVolumeSource_To_api_GitRepoVolumeSource(in, out, s)
-}
-
-func autoConvert_api_GitRepoVolumeSource_To_v1_GitRepoVolumeSource(in *api.GitRepoVolumeSource, out *v1.GitRepoVolumeSource, s conversion.Scope) error {
- out.Repository = in.Repository
- out.Revision = in.Revision
- out.Directory = in.Directory
- return nil
-}
-
-// Convert_api_GitRepoVolumeSource_To_v1_GitRepoVolumeSource is an autogenerated conversion function.
-func Convert_api_GitRepoVolumeSource_To_v1_GitRepoVolumeSource(in *api.GitRepoVolumeSource, out *v1.GitRepoVolumeSource, s conversion.Scope) error {
- return autoConvert_api_GitRepoVolumeSource_To_v1_GitRepoVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_GlusterfsVolumeSource_To_api_GlusterfsVolumeSource(in *v1.GlusterfsVolumeSource, out *api.GlusterfsVolumeSource, s conversion.Scope) error {
- out.EndpointsName = in.EndpointsName
- out.Path = in.Path
- out.ReadOnly = in.ReadOnly
- return nil
-}
-
-// Convert_v1_GlusterfsVolumeSource_To_api_GlusterfsVolumeSource is an autogenerated conversion function.
-func Convert_v1_GlusterfsVolumeSource_To_api_GlusterfsVolumeSource(in *v1.GlusterfsVolumeSource, out *api.GlusterfsVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_GlusterfsVolumeSource_To_api_GlusterfsVolumeSource(in, out, s)
-}
-
-func autoConvert_api_GlusterfsVolumeSource_To_v1_GlusterfsVolumeSource(in *api.GlusterfsVolumeSource, out *v1.GlusterfsVolumeSource, s conversion.Scope) error {
- out.EndpointsName = in.EndpointsName
- out.Path = in.Path
- out.ReadOnly = in.ReadOnly
- return nil
-}
-
-// Convert_api_GlusterfsVolumeSource_To_v1_GlusterfsVolumeSource is an autogenerated conversion function.
-func Convert_api_GlusterfsVolumeSource_To_v1_GlusterfsVolumeSource(in *api.GlusterfsVolumeSource, out *v1.GlusterfsVolumeSource, s conversion.Scope) error {
- return autoConvert_api_GlusterfsVolumeSource_To_v1_GlusterfsVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_HTTPGetAction_To_api_HTTPGetAction(in *v1.HTTPGetAction, out *api.HTTPGetAction, s conversion.Scope) error {
- out.Path = in.Path
- out.Port = in.Port
- out.Host = in.Host
- out.Scheme = api.URIScheme(in.Scheme)
- out.HTTPHeaders = *(*[]api.HTTPHeader)(unsafe.Pointer(&in.HTTPHeaders))
- return nil
-}
-
-// Convert_v1_HTTPGetAction_To_api_HTTPGetAction is an autogenerated conversion function.
-func Convert_v1_HTTPGetAction_To_api_HTTPGetAction(in *v1.HTTPGetAction, out *api.HTTPGetAction, s conversion.Scope) error {
- return autoConvert_v1_HTTPGetAction_To_api_HTTPGetAction(in, out, s)
-}
-
-func autoConvert_api_HTTPGetAction_To_v1_HTTPGetAction(in *api.HTTPGetAction, out *v1.HTTPGetAction, s conversion.Scope) error {
- out.Path = in.Path
- out.Port = in.Port
- out.Host = in.Host
- out.Scheme = v1.URIScheme(in.Scheme)
- out.HTTPHeaders = *(*[]v1.HTTPHeader)(unsafe.Pointer(&in.HTTPHeaders))
- return nil
-}
-
-// Convert_api_HTTPGetAction_To_v1_HTTPGetAction is an autogenerated conversion function.
-func Convert_api_HTTPGetAction_To_v1_HTTPGetAction(in *api.HTTPGetAction, out *v1.HTTPGetAction, s conversion.Scope) error {
- return autoConvert_api_HTTPGetAction_To_v1_HTTPGetAction(in, out, s)
-}
-
-func autoConvert_v1_HTTPHeader_To_api_HTTPHeader(in *v1.HTTPHeader, out *api.HTTPHeader, s conversion.Scope) error {
- out.Name = in.Name
- out.Value = in.Value
- return nil
-}
-
-// Convert_v1_HTTPHeader_To_api_HTTPHeader is an autogenerated conversion function.
-func Convert_v1_HTTPHeader_To_api_HTTPHeader(in *v1.HTTPHeader, out *api.HTTPHeader, s conversion.Scope) error {
- return autoConvert_v1_HTTPHeader_To_api_HTTPHeader(in, out, s)
-}
-
-func autoConvert_api_HTTPHeader_To_v1_HTTPHeader(in *api.HTTPHeader, out *v1.HTTPHeader, s conversion.Scope) error {
- out.Name = in.Name
- out.Value = in.Value
- return nil
-}
-
-// Convert_api_HTTPHeader_To_v1_HTTPHeader is an autogenerated conversion function.
-func Convert_api_HTTPHeader_To_v1_HTTPHeader(in *api.HTTPHeader, out *v1.HTTPHeader, s conversion.Scope) error {
- return autoConvert_api_HTTPHeader_To_v1_HTTPHeader(in, out, s)
-}
-
-func autoConvert_v1_Handler_To_api_Handler(in *v1.Handler, out *api.Handler, s conversion.Scope) error {
- out.Exec = (*api.ExecAction)(unsafe.Pointer(in.Exec))
- out.HTTPGet = (*api.HTTPGetAction)(unsafe.Pointer(in.HTTPGet))
- out.TCPSocket = (*api.TCPSocketAction)(unsafe.Pointer(in.TCPSocket))
- return nil
-}
-
-// Convert_v1_Handler_To_api_Handler is an autogenerated conversion function.
-func Convert_v1_Handler_To_api_Handler(in *v1.Handler, out *api.Handler, s conversion.Scope) error {
- return autoConvert_v1_Handler_To_api_Handler(in, out, s)
-}
-
-func autoConvert_api_Handler_To_v1_Handler(in *api.Handler, out *v1.Handler, s conversion.Scope) error {
- out.Exec = (*v1.ExecAction)(unsafe.Pointer(in.Exec))
- out.HTTPGet = (*v1.HTTPGetAction)(unsafe.Pointer(in.HTTPGet))
- out.TCPSocket = (*v1.TCPSocketAction)(unsafe.Pointer(in.TCPSocket))
- return nil
-}
-
-// Convert_api_Handler_To_v1_Handler is an autogenerated conversion function.
-func Convert_api_Handler_To_v1_Handler(in *api.Handler, out *v1.Handler, s conversion.Scope) error {
- return autoConvert_api_Handler_To_v1_Handler(in, out, s)
-}
-
-func autoConvert_v1_HostAlias_To_api_HostAlias(in *v1.HostAlias, out *api.HostAlias, s conversion.Scope) error {
- out.IP = in.IP
- out.Hostnames = *(*[]string)(unsafe.Pointer(&in.Hostnames))
- return nil
-}
-
-// Convert_v1_HostAlias_To_api_HostAlias is an autogenerated conversion function.
-func Convert_v1_HostAlias_To_api_HostAlias(in *v1.HostAlias, out *api.HostAlias, s conversion.Scope) error {
- return autoConvert_v1_HostAlias_To_api_HostAlias(in, out, s)
-}
-
-func autoConvert_api_HostAlias_To_v1_HostAlias(in *api.HostAlias, out *v1.HostAlias, s conversion.Scope) error {
- out.IP = in.IP
- out.Hostnames = *(*[]string)(unsafe.Pointer(&in.Hostnames))
- return nil
-}
-
-// Convert_api_HostAlias_To_v1_HostAlias is an autogenerated conversion function.
-func Convert_api_HostAlias_To_v1_HostAlias(in *api.HostAlias, out *v1.HostAlias, s conversion.Scope) error {
- return autoConvert_api_HostAlias_To_v1_HostAlias(in, out, s)
-}
-
-func autoConvert_v1_HostPathVolumeSource_To_api_HostPathVolumeSource(in *v1.HostPathVolumeSource, out *api.HostPathVolumeSource, s conversion.Scope) error {
- out.Path = in.Path
- out.Type = (*api.HostPathType)(unsafe.Pointer(in.Type))
- return nil
-}
-
-// Convert_v1_HostPathVolumeSource_To_api_HostPathVolumeSource is an autogenerated conversion function.
-func Convert_v1_HostPathVolumeSource_To_api_HostPathVolumeSource(in *v1.HostPathVolumeSource, out *api.HostPathVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_HostPathVolumeSource_To_api_HostPathVolumeSource(in, out, s)
-}
-
-func autoConvert_api_HostPathVolumeSource_To_v1_HostPathVolumeSource(in *api.HostPathVolumeSource, out *v1.HostPathVolumeSource, s conversion.Scope) error {
- out.Path = in.Path
- out.Type = (*v1.HostPathType)(unsafe.Pointer(in.Type))
- return nil
-}
-
-// Convert_api_HostPathVolumeSource_To_v1_HostPathVolumeSource is an autogenerated conversion function.
-func Convert_api_HostPathVolumeSource_To_v1_HostPathVolumeSource(in *api.HostPathVolumeSource, out *v1.HostPathVolumeSource, s conversion.Scope) error {
- return autoConvert_api_HostPathVolumeSource_To_v1_HostPathVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_ISCSIVolumeSource_To_api_ISCSIVolumeSource(in *v1.ISCSIVolumeSource, out *api.ISCSIVolumeSource, s conversion.Scope) error {
- out.TargetPortal = in.TargetPortal
- out.IQN = in.IQN
- out.Lun = in.Lun
- out.ISCSIInterface = in.ISCSIInterface
- out.FSType = in.FSType
- out.ReadOnly = in.ReadOnly
- out.Portals = *(*[]string)(unsafe.Pointer(&in.Portals))
- out.DiscoveryCHAPAuth = in.DiscoveryCHAPAuth
- out.SessionCHAPAuth = in.SessionCHAPAuth
- out.SecretRef = (*api.LocalObjectReference)(unsafe.Pointer(in.SecretRef))
- out.InitiatorName = (*string)(unsafe.Pointer(in.InitiatorName))
- return nil
-}
-
-// Convert_v1_ISCSIVolumeSource_To_api_ISCSIVolumeSource is an autogenerated conversion function.
-func Convert_v1_ISCSIVolumeSource_To_api_ISCSIVolumeSource(in *v1.ISCSIVolumeSource, out *api.ISCSIVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_ISCSIVolumeSource_To_api_ISCSIVolumeSource(in, out, s)
-}
-
-func autoConvert_api_ISCSIVolumeSource_To_v1_ISCSIVolumeSource(in *api.ISCSIVolumeSource, out *v1.ISCSIVolumeSource, s conversion.Scope) error {
- out.TargetPortal = in.TargetPortal
- out.IQN = in.IQN
- out.Lun = in.Lun
- out.ISCSIInterface = in.ISCSIInterface
- out.FSType = in.FSType
- out.ReadOnly = in.ReadOnly
- out.Portals = *(*[]string)(unsafe.Pointer(&in.Portals))
- out.DiscoveryCHAPAuth = in.DiscoveryCHAPAuth
- out.SessionCHAPAuth = in.SessionCHAPAuth
- out.SecretRef = (*v1.LocalObjectReference)(unsafe.Pointer(in.SecretRef))
- out.InitiatorName = (*string)(unsafe.Pointer(in.InitiatorName))
- return nil
-}
-
-// Convert_api_ISCSIVolumeSource_To_v1_ISCSIVolumeSource is an autogenerated conversion function.
-func Convert_api_ISCSIVolumeSource_To_v1_ISCSIVolumeSource(in *api.ISCSIVolumeSource, out *v1.ISCSIVolumeSource, s conversion.Scope) error {
- return autoConvert_api_ISCSIVolumeSource_To_v1_ISCSIVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_KeyToPath_To_api_KeyToPath(in *v1.KeyToPath, out *api.KeyToPath, s conversion.Scope) error {
- out.Key = in.Key
- out.Path = in.Path
- out.Mode = (*int32)(unsafe.Pointer(in.Mode))
- return nil
-}
-
-// Convert_v1_KeyToPath_To_api_KeyToPath is an autogenerated conversion function.
-func Convert_v1_KeyToPath_To_api_KeyToPath(in *v1.KeyToPath, out *api.KeyToPath, s conversion.Scope) error {
- return autoConvert_v1_KeyToPath_To_api_KeyToPath(in, out, s)
-}
-
-func autoConvert_api_KeyToPath_To_v1_KeyToPath(in *api.KeyToPath, out *v1.KeyToPath, s conversion.Scope) error {
- out.Key = in.Key
- out.Path = in.Path
- out.Mode = (*int32)(unsafe.Pointer(in.Mode))
- return nil
-}
-
-// Convert_api_KeyToPath_To_v1_KeyToPath is an autogenerated conversion function.
-func Convert_api_KeyToPath_To_v1_KeyToPath(in *api.KeyToPath, out *v1.KeyToPath, s conversion.Scope) error {
- return autoConvert_api_KeyToPath_To_v1_KeyToPath(in, out, s)
-}
-
-func autoConvert_v1_Lifecycle_To_api_Lifecycle(in *v1.Lifecycle, out *api.Lifecycle, s conversion.Scope) error {
- out.PostStart = (*api.Handler)(unsafe.Pointer(in.PostStart))
- out.PreStop = (*api.Handler)(unsafe.Pointer(in.PreStop))
- return nil
-}
-
-// Convert_v1_Lifecycle_To_api_Lifecycle is an autogenerated conversion function.
-func Convert_v1_Lifecycle_To_api_Lifecycle(in *v1.Lifecycle, out *api.Lifecycle, s conversion.Scope) error {
- return autoConvert_v1_Lifecycle_To_api_Lifecycle(in, out, s)
-}
-
-func autoConvert_api_Lifecycle_To_v1_Lifecycle(in *api.Lifecycle, out *v1.Lifecycle, s conversion.Scope) error {
- out.PostStart = (*v1.Handler)(unsafe.Pointer(in.PostStart))
- out.PreStop = (*v1.Handler)(unsafe.Pointer(in.PreStop))
- return nil
-}
-
-// Convert_api_Lifecycle_To_v1_Lifecycle is an autogenerated conversion function.
-func Convert_api_Lifecycle_To_v1_Lifecycle(in *api.Lifecycle, out *v1.Lifecycle, s conversion.Scope) error {
- return autoConvert_api_Lifecycle_To_v1_Lifecycle(in, out, s)
-}
-
-func autoConvert_v1_LimitRange_To_api_LimitRange(in *v1.LimitRange, out *api.LimitRange, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- if err := Convert_v1_LimitRangeSpec_To_api_LimitRangeSpec(&in.Spec, &out.Spec, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_v1_LimitRange_To_api_LimitRange is an autogenerated conversion function.
-func Convert_v1_LimitRange_To_api_LimitRange(in *v1.LimitRange, out *api.LimitRange, s conversion.Scope) error {
- return autoConvert_v1_LimitRange_To_api_LimitRange(in, out, s)
-}
-
-func autoConvert_api_LimitRange_To_v1_LimitRange(in *api.LimitRange, out *v1.LimitRange, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- if err := Convert_api_LimitRangeSpec_To_v1_LimitRangeSpec(&in.Spec, &out.Spec, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_api_LimitRange_To_v1_LimitRange is an autogenerated conversion function.
-func Convert_api_LimitRange_To_v1_LimitRange(in *api.LimitRange, out *v1.LimitRange, s conversion.Scope) error {
- return autoConvert_api_LimitRange_To_v1_LimitRange(in, out, s)
-}
-
-func autoConvert_v1_LimitRangeItem_To_api_LimitRangeItem(in *v1.LimitRangeItem, out *api.LimitRangeItem, s conversion.Scope) error {
- out.Type = api.LimitType(in.Type)
- out.Max = *(*api.ResourceList)(unsafe.Pointer(&in.Max))
- out.Min = *(*api.ResourceList)(unsafe.Pointer(&in.Min))
- out.Default = *(*api.ResourceList)(unsafe.Pointer(&in.Default))
- out.DefaultRequest = *(*api.ResourceList)(unsafe.Pointer(&in.DefaultRequest))
- out.MaxLimitRequestRatio = *(*api.ResourceList)(unsafe.Pointer(&in.MaxLimitRequestRatio))
- return nil
-}
-
-// Convert_v1_LimitRangeItem_To_api_LimitRangeItem is an autogenerated conversion function.
-func Convert_v1_LimitRangeItem_To_api_LimitRangeItem(in *v1.LimitRangeItem, out *api.LimitRangeItem, s conversion.Scope) error {
- return autoConvert_v1_LimitRangeItem_To_api_LimitRangeItem(in, out, s)
-}
-
-func autoConvert_api_LimitRangeItem_To_v1_LimitRangeItem(in *api.LimitRangeItem, out *v1.LimitRangeItem, s conversion.Scope) error {
- out.Type = v1.LimitType(in.Type)
- out.Max = *(*v1.ResourceList)(unsafe.Pointer(&in.Max))
- out.Min = *(*v1.ResourceList)(unsafe.Pointer(&in.Min))
- out.Default = *(*v1.ResourceList)(unsafe.Pointer(&in.Default))
- out.DefaultRequest = *(*v1.ResourceList)(unsafe.Pointer(&in.DefaultRequest))
- out.MaxLimitRequestRatio = *(*v1.ResourceList)(unsafe.Pointer(&in.MaxLimitRequestRatio))
- return nil
-}
-
-// Convert_api_LimitRangeItem_To_v1_LimitRangeItem is an autogenerated conversion function.
-func Convert_api_LimitRangeItem_To_v1_LimitRangeItem(in *api.LimitRangeItem, out *v1.LimitRangeItem, s conversion.Scope) error {
- return autoConvert_api_LimitRangeItem_To_v1_LimitRangeItem(in, out, s)
-}
-
-func autoConvert_v1_LimitRangeList_To_api_LimitRangeList(in *v1.LimitRangeList, out *api.LimitRangeList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- out.Items = *(*[]api.LimitRange)(unsafe.Pointer(&in.Items))
- return nil
-}
-
-// Convert_v1_LimitRangeList_To_api_LimitRangeList is an autogenerated conversion function.
-func Convert_v1_LimitRangeList_To_api_LimitRangeList(in *v1.LimitRangeList, out *api.LimitRangeList, s conversion.Scope) error {
- return autoConvert_v1_LimitRangeList_To_api_LimitRangeList(in, out, s)
-}
-
-func autoConvert_api_LimitRangeList_To_v1_LimitRangeList(in *api.LimitRangeList, out *v1.LimitRangeList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- out.Items = *(*[]v1.LimitRange)(unsafe.Pointer(&in.Items))
- return nil
-}
-
-// Convert_api_LimitRangeList_To_v1_LimitRangeList is an autogenerated conversion function.
-func Convert_api_LimitRangeList_To_v1_LimitRangeList(in *api.LimitRangeList, out *v1.LimitRangeList, s conversion.Scope) error {
- return autoConvert_api_LimitRangeList_To_v1_LimitRangeList(in, out, s)
-}
-
-func autoConvert_v1_LimitRangeSpec_To_api_LimitRangeSpec(in *v1.LimitRangeSpec, out *api.LimitRangeSpec, s conversion.Scope) error {
- out.Limits = *(*[]api.LimitRangeItem)(unsafe.Pointer(&in.Limits))
- return nil
-}
-
-// Convert_v1_LimitRangeSpec_To_api_LimitRangeSpec is an autogenerated conversion function.
-func Convert_v1_LimitRangeSpec_To_api_LimitRangeSpec(in *v1.LimitRangeSpec, out *api.LimitRangeSpec, s conversion.Scope) error {
- return autoConvert_v1_LimitRangeSpec_To_api_LimitRangeSpec(in, out, s)
-}
-
-func autoConvert_api_LimitRangeSpec_To_v1_LimitRangeSpec(in *api.LimitRangeSpec, out *v1.LimitRangeSpec, s conversion.Scope) error {
- out.Limits = *(*[]v1.LimitRangeItem)(unsafe.Pointer(&in.Limits))
- return nil
-}
-
-// Convert_api_LimitRangeSpec_To_v1_LimitRangeSpec is an autogenerated conversion function.
-func Convert_api_LimitRangeSpec_To_v1_LimitRangeSpec(in *api.LimitRangeSpec, out *v1.LimitRangeSpec, s conversion.Scope) error {
- return autoConvert_api_LimitRangeSpec_To_v1_LimitRangeSpec(in, out, s)
-}
-
-func autoConvert_v1_List_To_api_List(in *v1.List, out *api.List, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- if in.Items != nil {
- in, out := &in.Items, &out.Items
- *out = make([]runtime.Object, len(*in))
- for i := range *in {
- if err := runtime.Convert_runtime_RawExtension_To_runtime_Object(&(*in)[i], &(*out)[i], s); err != nil {
- return err
- }
- }
- } else {
- out.Items = nil
- }
- return nil
-}
-
-// Convert_v1_List_To_api_List is an autogenerated conversion function.
-func Convert_v1_List_To_api_List(in *v1.List, out *api.List, s conversion.Scope) error {
- return autoConvert_v1_List_To_api_List(in, out, s)
-}
-
-func autoConvert_api_List_To_v1_List(in *api.List, out *v1.List, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- if in.Items != nil {
- in, out := &in.Items, &out.Items
- *out = make([]runtime.RawExtension, len(*in))
- for i := range *in {
- if err := runtime.Convert_runtime_Object_To_runtime_RawExtension(&(*in)[i], &(*out)[i], s); err != nil {
- return err
- }
- }
- } else {
- out.Items = nil
- }
- return nil
-}
-
-// Convert_api_List_To_v1_List is an autogenerated conversion function.
-func Convert_api_List_To_v1_List(in *api.List, out *v1.List, s conversion.Scope) error {
- return autoConvert_api_List_To_v1_List(in, out, s)
-}
-
-func autoConvert_v1_ListOptions_To_api_ListOptions(in *v1.ListOptions, out *api.ListOptions, s conversion.Scope) error {
- if err := meta_v1.Convert_string_To_labels_Selector(&in.LabelSelector, &out.LabelSelector, s); err != nil {
- return err
- }
- if err := meta_v1.Convert_string_To_fields_Selector(&in.FieldSelector, &out.FieldSelector, s); err != nil {
- return err
- }
- out.IncludeUninitialized = in.IncludeUninitialized
- out.Watch = in.Watch
- out.ResourceVersion = in.ResourceVersion
- out.TimeoutSeconds = (*int64)(unsafe.Pointer(in.TimeoutSeconds))
- return nil
-}
-
-// Convert_v1_ListOptions_To_api_ListOptions is an autogenerated conversion function.
-func Convert_v1_ListOptions_To_api_ListOptions(in *v1.ListOptions, out *api.ListOptions, s conversion.Scope) error {
- return autoConvert_v1_ListOptions_To_api_ListOptions(in, out, s)
-}
-
-func autoConvert_api_ListOptions_To_v1_ListOptions(in *api.ListOptions, out *v1.ListOptions, s conversion.Scope) error {
- if err := meta_v1.Convert_labels_Selector_To_string(&in.LabelSelector, &out.LabelSelector, s); err != nil {
- return err
- }
- if err := meta_v1.Convert_fields_Selector_To_string(&in.FieldSelector, &out.FieldSelector, s); err != nil {
- return err
- }
- out.IncludeUninitialized = in.IncludeUninitialized
- out.Watch = in.Watch
- out.ResourceVersion = in.ResourceVersion
- out.TimeoutSeconds = (*int64)(unsafe.Pointer(in.TimeoutSeconds))
- return nil
-}
-
-// Convert_api_ListOptions_To_v1_ListOptions is an autogenerated conversion function.
-func Convert_api_ListOptions_To_v1_ListOptions(in *api.ListOptions, out *v1.ListOptions, s conversion.Scope) error {
- return autoConvert_api_ListOptions_To_v1_ListOptions(in, out, s)
-}
-
-func autoConvert_v1_LoadBalancerIngress_To_api_LoadBalancerIngress(in *v1.LoadBalancerIngress, out *api.LoadBalancerIngress, s conversion.Scope) error {
- out.IP = in.IP
- out.Hostname = in.Hostname
- return nil
-}
-
-// Convert_v1_LoadBalancerIngress_To_api_LoadBalancerIngress is an autogenerated conversion function.
-func Convert_v1_LoadBalancerIngress_To_api_LoadBalancerIngress(in *v1.LoadBalancerIngress, out *api.LoadBalancerIngress, s conversion.Scope) error {
- return autoConvert_v1_LoadBalancerIngress_To_api_LoadBalancerIngress(in, out, s)
-}
-
-func autoConvert_api_LoadBalancerIngress_To_v1_LoadBalancerIngress(in *api.LoadBalancerIngress, out *v1.LoadBalancerIngress, s conversion.Scope) error {
- out.IP = in.IP
- out.Hostname = in.Hostname
- return nil
-}
-
-// Convert_api_LoadBalancerIngress_To_v1_LoadBalancerIngress is an autogenerated conversion function.
-func Convert_api_LoadBalancerIngress_To_v1_LoadBalancerIngress(in *api.LoadBalancerIngress, out *v1.LoadBalancerIngress, s conversion.Scope) error {
- return autoConvert_api_LoadBalancerIngress_To_v1_LoadBalancerIngress(in, out, s)
-}
-
-func autoConvert_v1_LoadBalancerStatus_To_api_LoadBalancerStatus(in *v1.LoadBalancerStatus, out *api.LoadBalancerStatus, s conversion.Scope) error {
- out.Ingress = *(*[]api.LoadBalancerIngress)(unsafe.Pointer(&in.Ingress))
- return nil
-}
-
-// Convert_v1_LoadBalancerStatus_To_api_LoadBalancerStatus is an autogenerated conversion function.
-func Convert_v1_LoadBalancerStatus_To_api_LoadBalancerStatus(in *v1.LoadBalancerStatus, out *api.LoadBalancerStatus, s conversion.Scope) error {
- return autoConvert_v1_LoadBalancerStatus_To_api_LoadBalancerStatus(in, out, s)
-}
-
-func autoConvert_api_LoadBalancerStatus_To_v1_LoadBalancerStatus(in *api.LoadBalancerStatus, out *v1.LoadBalancerStatus, s conversion.Scope) error {
- out.Ingress = *(*[]v1.LoadBalancerIngress)(unsafe.Pointer(&in.Ingress))
- return nil
-}
-
-// Convert_api_LoadBalancerStatus_To_v1_LoadBalancerStatus is an autogenerated conversion function.
-func Convert_api_LoadBalancerStatus_To_v1_LoadBalancerStatus(in *api.LoadBalancerStatus, out *v1.LoadBalancerStatus, s conversion.Scope) error {
- return autoConvert_api_LoadBalancerStatus_To_v1_LoadBalancerStatus(in, out, s)
-}
-
-func autoConvert_v1_LocalObjectReference_To_api_LocalObjectReference(in *v1.LocalObjectReference, out *api.LocalObjectReference, s conversion.Scope) error {
- out.Name = in.Name
- return nil
-}
-
-// Convert_v1_LocalObjectReference_To_api_LocalObjectReference is an autogenerated conversion function.
-func Convert_v1_LocalObjectReference_To_api_LocalObjectReference(in *v1.LocalObjectReference, out *api.LocalObjectReference, s conversion.Scope) error {
- return autoConvert_v1_LocalObjectReference_To_api_LocalObjectReference(in, out, s)
-}
-
-func autoConvert_api_LocalObjectReference_To_v1_LocalObjectReference(in *api.LocalObjectReference, out *v1.LocalObjectReference, s conversion.Scope) error {
- out.Name = in.Name
- return nil
-}
-
-// Convert_api_LocalObjectReference_To_v1_LocalObjectReference is an autogenerated conversion function.
-func Convert_api_LocalObjectReference_To_v1_LocalObjectReference(in *api.LocalObjectReference, out *v1.LocalObjectReference, s conversion.Scope) error {
- return autoConvert_api_LocalObjectReference_To_v1_LocalObjectReference(in, out, s)
-}
-
-func autoConvert_v1_LocalVolumeSource_To_api_LocalVolumeSource(in *v1.LocalVolumeSource, out *api.LocalVolumeSource, s conversion.Scope) error {
- out.Path = in.Path
- return nil
-}
-
-// Convert_v1_LocalVolumeSource_To_api_LocalVolumeSource is an autogenerated conversion function.
-func Convert_v1_LocalVolumeSource_To_api_LocalVolumeSource(in *v1.LocalVolumeSource, out *api.LocalVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_LocalVolumeSource_To_api_LocalVolumeSource(in, out, s)
-}
-
-func autoConvert_api_LocalVolumeSource_To_v1_LocalVolumeSource(in *api.LocalVolumeSource, out *v1.LocalVolumeSource, s conversion.Scope) error {
- out.Path = in.Path
- return nil
-}
-
-// Convert_api_LocalVolumeSource_To_v1_LocalVolumeSource is an autogenerated conversion function.
-func Convert_api_LocalVolumeSource_To_v1_LocalVolumeSource(in *api.LocalVolumeSource, out *v1.LocalVolumeSource, s conversion.Scope) error {
- return autoConvert_api_LocalVolumeSource_To_v1_LocalVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_NFSVolumeSource_To_api_NFSVolumeSource(in *v1.NFSVolumeSource, out *api.NFSVolumeSource, s conversion.Scope) error {
- out.Server = in.Server
- out.Path = in.Path
- out.ReadOnly = in.ReadOnly
- return nil
-}
-
-// Convert_v1_NFSVolumeSource_To_api_NFSVolumeSource is an autogenerated conversion function.
-func Convert_v1_NFSVolumeSource_To_api_NFSVolumeSource(in *v1.NFSVolumeSource, out *api.NFSVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_NFSVolumeSource_To_api_NFSVolumeSource(in, out, s)
-}
-
-func autoConvert_api_NFSVolumeSource_To_v1_NFSVolumeSource(in *api.NFSVolumeSource, out *v1.NFSVolumeSource, s conversion.Scope) error {
- out.Server = in.Server
- out.Path = in.Path
- out.ReadOnly = in.ReadOnly
- return nil
-}
-
-// Convert_api_NFSVolumeSource_To_v1_NFSVolumeSource is an autogenerated conversion function.
-func Convert_api_NFSVolumeSource_To_v1_NFSVolumeSource(in *api.NFSVolumeSource, out *v1.NFSVolumeSource, s conversion.Scope) error {
- return autoConvert_api_NFSVolumeSource_To_v1_NFSVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_Namespace_To_api_Namespace(in *v1.Namespace, out *api.Namespace, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- if err := Convert_v1_NamespaceSpec_To_api_NamespaceSpec(&in.Spec, &out.Spec, s); err != nil {
- return err
- }
- if err := Convert_v1_NamespaceStatus_To_api_NamespaceStatus(&in.Status, &out.Status, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_v1_Namespace_To_api_Namespace is an autogenerated conversion function.
-func Convert_v1_Namespace_To_api_Namespace(in *v1.Namespace, out *api.Namespace, s conversion.Scope) error {
- return autoConvert_v1_Namespace_To_api_Namespace(in, out, s)
-}
-
-func autoConvert_api_Namespace_To_v1_Namespace(in *api.Namespace, out *v1.Namespace, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- if err := Convert_api_NamespaceSpec_To_v1_NamespaceSpec(&in.Spec, &out.Spec, s); err != nil {
- return err
- }
- if err := Convert_api_NamespaceStatus_To_v1_NamespaceStatus(&in.Status, &out.Status, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_api_Namespace_To_v1_Namespace is an autogenerated conversion function.
-func Convert_api_Namespace_To_v1_Namespace(in *api.Namespace, out *v1.Namespace, s conversion.Scope) error {
- return autoConvert_api_Namespace_To_v1_Namespace(in, out, s)
-}
-
-func autoConvert_v1_NamespaceList_To_api_NamespaceList(in *v1.NamespaceList, out *api.NamespaceList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- out.Items = *(*[]api.Namespace)(unsafe.Pointer(&in.Items))
- return nil
-}
-
-// Convert_v1_NamespaceList_To_api_NamespaceList is an autogenerated conversion function.
-func Convert_v1_NamespaceList_To_api_NamespaceList(in *v1.NamespaceList, out *api.NamespaceList, s conversion.Scope) error {
- return autoConvert_v1_NamespaceList_To_api_NamespaceList(in, out, s)
-}
-
-func autoConvert_api_NamespaceList_To_v1_NamespaceList(in *api.NamespaceList, out *v1.NamespaceList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- out.Items = *(*[]v1.Namespace)(unsafe.Pointer(&in.Items))
- return nil
-}
-
-// Convert_api_NamespaceList_To_v1_NamespaceList is an autogenerated conversion function.
-func Convert_api_NamespaceList_To_v1_NamespaceList(in *api.NamespaceList, out *v1.NamespaceList, s conversion.Scope) error {
- return autoConvert_api_NamespaceList_To_v1_NamespaceList(in, out, s)
-}
-
-func autoConvert_v1_NamespaceSpec_To_api_NamespaceSpec(in *v1.NamespaceSpec, out *api.NamespaceSpec, s conversion.Scope) error {
- out.Finalizers = *(*[]api.FinalizerName)(unsafe.Pointer(&in.Finalizers))
- return nil
-}
-
-// Convert_v1_NamespaceSpec_To_api_NamespaceSpec is an autogenerated conversion function.
-func Convert_v1_NamespaceSpec_To_api_NamespaceSpec(in *v1.NamespaceSpec, out *api.NamespaceSpec, s conversion.Scope) error {
- return autoConvert_v1_NamespaceSpec_To_api_NamespaceSpec(in, out, s)
-}
-
-func autoConvert_api_NamespaceSpec_To_v1_NamespaceSpec(in *api.NamespaceSpec, out *v1.NamespaceSpec, s conversion.Scope) error {
- out.Finalizers = *(*[]v1.FinalizerName)(unsafe.Pointer(&in.Finalizers))
- return nil
-}
-
-// Convert_api_NamespaceSpec_To_v1_NamespaceSpec is an autogenerated conversion function.
-func Convert_api_NamespaceSpec_To_v1_NamespaceSpec(in *api.NamespaceSpec, out *v1.NamespaceSpec, s conversion.Scope) error {
- return autoConvert_api_NamespaceSpec_To_v1_NamespaceSpec(in, out, s)
-}
-
-func autoConvert_v1_NamespaceStatus_To_api_NamespaceStatus(in *v1.NamespaceStatus, out *api.NamespaceStatus, s conversion.Scope) error {
- out.Phase = api.NamespacePhase(in.Phase)
- return nil
-}
-
-// Convert_v1_NamespaceStatus_To_api_NamespaceStatus is an autogenerated conversion function.
-func Convert_v1_NamespaceStatus_To_api_NamespaceStatus(in *v1.NamespaceStatus, out *api.NamespaceStatus, s conversion.Scope) error {
- return autoConvert_v1_NamespaceStatus_To_api_NamespaceStatus(in, out, s)
-}
-
-func autoConvert_api_NamespaceStatus_To_v1_NamespaceStatus(in *api.NamespaceStatus, out *v1.NamespaceStatus, s conversion.Scope) error {
- out.Phase = v1.NamespacePhase(in.Phase)
- return nil
-}
-
-// Convert_api_NamespaceStatus_To_v1_NamespaceStatus is an autogenerated conversion function.
-func Convert_api_NamespaceStatus_To_v1_NamespaceStatus(in *api.NamespaceStatus, out *v1.NamespaceStatus, s conversion.Scope) error {
- return autoConvert_api_NamespaceStatus_To_v1_NamespaceStatus(in, out, s)
-}
-
-func autoConvert_v1_Node_To_api_Node(in *v1.Node, out *api.Node, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- if err := Convert_v1_NodeSpec_To_api_NodeSpec(&in.Spec, &out.Spec, s); err != nil {
- return err
- }
- if err := Convert_v1_NodeStatus_To_api_NodeStatus(&in.Status, &out.Status, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_v1_Node_To_api_Node is an autogenerated conversion function.
-func Convert_v1_Node_To_api_Node(in *v1.Node, out *api.Node, s conversion.Scope) error {
- return autoConvert_v1_Node_To_api_Node(in, out, s)
-}
-
-func autoConvert_api_Node_To_v1_Node(in *api.Node, out *v1.Node, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- if err := Convert_api_NodeSpec_To_v1_NodeSpec(&in.Spec, &out.Spec, s); err != nil {
- return err
- }
- if err := Convert_api_NodeStatus_To_v1_NodeStatus(&in.Status, &out.Status, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_api_Node_To_v1_Node is an autogenerated conversion function.
-func Convert_api_Node_To_v1_Node(in *api.Node, out *v1.Node, s conversion.Scope) error {
- return autoConvert_api_Node_To_v1_Node(in, out, s)
-}
-
-func autoConvert_v1_NodeAddress_To_api_NodeAddress(in *v1.NodeAddress, out *api.NodeAddress, s conversion.Scope) error {
- out.Type = api.NodeAddressType(in.Type)
- out.Address = in.Address
- return nil
-}
-
-// Convert_v1_NodeAddress_To_api_NodeAddress is an autogenerated conversion function.
-func Convert_v1_NodeAddress_To_api_NodeAddress(in *v1.NodeAddress, out *api.NodeAddress, s conversion.Scope) error {
- return autoConvert_v1_NodeAddress_To_api_NodeAddress(in, out, s)
-}
-
-func autoConvert_api_NodeAddress_To_v1_NodeAddress(in *api.NodeAddress, out *v1.NodeAddress, s conversion.Scope) error {
- out.Type = v1.NodeAddressType(in.Type)
- out.Address = in.Address
- return nil
-}
-
-// Convert_api_NodeAddress_To_v1_NodeAddress is an autogenerated conversion function.
-func Convert_api_NodeAddress_To_v1_NodeAddress(in *api.NodeAddress, out *v1.NodeAddress, s conversion.Scope) error {
- return autoConvert_api_NodeAddress_To_v1_NodeAddress(in, out, s)
-}
-
-func autoConvert_v1_NodeAffinity_To_api_NodeAffinity(in *v1.NodeAffinity, out *api.NodeAffinity, s conversion.Scope) error {
- out.RequiredDuringSchedulingIgnoredDuringExecution = (*api.NodeSelector)(unsafe.Pointer(in.RequiredDuringSchedulingIgnoredDuringExecution))
- out.PreferredDuringSchedulingIgnoredDuringExecution = *(*[]api.PreferredSchedulingTerm)(unsafe.Pointer(&in.PreferredDuringSchedulingIgnoredDuringExecution))
- return nil
-}
-
-// Convert_v1_NodeAffinity_To_api_NodeAffinity is an autogenerated conversion function.
-func Convert_v1_NodeAffinity_To_api_NodeAffinity(in *v1.NodeAffinity, out *api.NodeAffinity, s conversion.Scope) error {
- return autoConvert_v1_NodeAffinity_To_api_NodeAffinity(in, out, s)
-}
-
-func autoConvert_api_NodeAffinity_To_v1_NodeAffinity(in *api.NodeAffinity, out *v1.NodeAffinity, s conversion.Scope) error {
- out.RequiredDuringSchedulingIgnoredDuringExecution = (*v1.NodeSelector)(unsafe.Pointer(in.RequiredDuringSchedulingIgnoredDuringExecution))
- out.PreferredDuringSchedulingIgnoredDuringExecution = *(*[]v1.PreferredSchedulingTerm)(unsafe.Pointer(&in.PreferredDuringSchedulingIgnoredDuringExecution))
- return nil
-}
-
-// Convert_api_NodeAffinity_To_v1_NodeAffinity is an autogenerated conversion function.
-func Convert_api_NodeAffinity_To_v1_NodeAffinity(in *api.NodeAffinity, out *v1.NodeAffinity, s conversion.Scope) error {
- return autoConvert_api_NodeAffinity_To_v1_NodeAffinity(in, out, s)
-}
-
-func autoConvert_v1_NodeCondition_To_api_NodeCondition(in *v1.NodeCondition, out *api.NodeCondition, s conversion.Scope) error {
- out.Type = api.NodeConditionType(in.Type)
- out.Status = api.ConditionStatus(in.Status)
- out.LastHeartbeatTime = in.LastHeartbeatTime
- out.LastTransitionTime = in.LastTransitionTime
- out.Reason = in.Reason
- out.Message = in.Message
- return nil
-}
-
-// Convert_v1_NodeCondition_To_api_NodeCondition is an autogenerated conversion function.
-func Convert_v1_NodeCondition_To_api_NodeCondition(in *v1.NodeCondition, out *api.NodeCondition, s conversion.Scope) error {
- return autoConvert_v1_NodeCondition_To_api_NodeCondition(in, out, s)
-}
-
-func autoConvert_api_NodeCondition_To_v1_NodeCondition(in *api.NodeCondition, out *v1.NodeCondition, s conversion.Scope) error {
- out.Type = v1.NodeConditionType(in.Type)
- out.Status = v1.ConditionStatus(in.Status)
- out.LastHeartbeatTime = in.LastHeartbeatTime
- out.LastTransitionTime = in.LastTransitionTime
- out.Reason = in.Reason
- out.Message = in.Message
- return nil
-}
-
-// Convert_api_NodeCondition_To_v1_NodeCondition is an autogenerated conversion function.
-func Convert_api_NodeCondition_To_v1_NodeCondition(in *api.NodeCondition, out *v1.NodeCondition, s conversion.Scope) error {
- return autoConvert_api_NodeCondition_To_v1_NodeCondition(in, out, s)
-}
-
-func autoConvert_v1_NodeConfigSource_To_api_NodeConfigSource(in *v1.NodeConfigSource, out *api.NodeConfigSource, s conversion.Scope) error {
- out.ConfigMapRef = (*api.ObjectReference)(unsafe.Pointer(in.ConfigMapRef))
- return nil
-}
-
-// Convert_v1_NodeConfigSource_To_api_NodeConfigSource is an autogenerated conversion function.
-func Convert_v1_NodeConfigSource_To_api_NodeConfigSource(in *v1.NodeConfigSource, out *api.NodeConfigSource, s conversion.Scope) error {
- return autoConvert_v1_NodeConfigSource_To_api_NodeConfigSource(in, out, s)
-}
-
-func autoConvert_api_NodeConfigSource_To_v1_NodeConfigSource(in *api.NodeConfigSource, out *v1.NodeConfigSource, s conversion.Scope) error {
- out.ConfigMapRef = (*v1.ObjectReference)(unsafe.Pointer(in.ConfigMapRef))
- return nil
-}
-
-// Convert_api_NodeConfigSource_To_v1_NodeConfigSource is an autogenerated conversion function.
-func Convert_api_NodeConfigSource_To_v1_NodeConfigSource(in *api.NodeConfigSource, out *v1.NodeConfigSource, s conversion.Scope) error {
- return autoConvert_api_NodeConfigSource_To_v1_NodeConfigSource(in, out, s)
-}
-
-func autoConvert_v1_NodeDaemonEndpoints_To_api_NodeDaemonEndpoints(in *v1.NodeDaemonEndpoints, out *api.NodeDaemonEndpoints, s conversion.Scope) error {
- if err := Convert_v1_DaemonEndpoint_To_api_DaemonEndpoint(&in.KubeletEndpoint, &out.KubeletEndpoint, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_v1_NodeDaemonEndpoints_To_api_NodeDaemonEndpoints is an autogenerated conversion function.
-func Convert_v1_NodeDaemonEndpoints_To_api_NodeDaemonEndpoints(in *v1.NodeDaemonEndpoints, out *api.NodeDaemonEndpoints, s conversion.Scope) error {
- return autoConvert_v1_NodeDaemonEndpoints_To_api_NodeDaemonEndpoints(in, out, s)
-}
-
-func autoConvert_api_NodeDaemonEndpoints_To_v1_NodeDaemonEndpoints(in *api.NodeDaemonEndpoints, out *v1.NodeDaemonEndpoints, s conversion.Scope) error {
- if err := Convert_api_DaemonEndpoint_To_v1_DaemonEndpoint(&in.KubeletEndpoint, &out.KubeletEndpoint, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_api_NodeDaemonEndpoints_To_v1_NodeDaemonEndpoints is an autogenerated conversion function.
-func Convert_api_NodeDaemonEndpoints_To_v1_NodeDaemonEndpoints(in *api.NodeDaemonEndpoints, out *v1.NodeDaemonEndpoints, s conversion.Scope) error {
- return autoConvert_api_NodeDaemonEndpoints_To_v1_NodeDaemonEndpoints(in, out, s)
-}
-
-func autoConvert_v1_NodeList_To_api_NodeList(in *v1.NodeList, out *api.NodeList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- out.Items = *(*[]api.Node)(unsafe.Pointer(&in.Items))
- return nil
-}
-
-// Convert_v1_NodeList_To_api_NodeList is an autogenerated conversion function.
-func Convert_v1_NodeList_To_api_NodeList(in *v1.NodeList, out *api.NodeList, s conversion.Scope) error {
- return autoConvert_v1_NodeList_To_api_NodeList(in, out, s)
-}
-
-func autoConvert_api_NodeList_To_v1_NodeList(in *api.NodeList, out *v1.NodeList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- out.Items = *(*[]v1.Node)(unsafe.Pointer(&in.Items))
- return nil
-}
-
-// Convert_api_NodeList_To_v1_NodeList is an autogenerated conversion function.
-func Convert_api_NodeList_To_v1_NodeList(in *api.NodeList, out *v1.NodeList, s conversion.Scope) error {
- return autoConvert_api_NodeList_To_v1_NodeList(in, out, s)
-}
-
-func autoConvert_v1_NodeProxyOptions_To_api_NodeProxyOptions(in *v1.NodeProxyOptions, out *api.NodeProxyOptions, s conversion.Scope) error {
- out.Path = in.Path
- return nil
-}
-
-// Convert_v1_NodeProxyOptions_To_api_NodeProxyOptions is an autogenerated conversion function.
-func Convert_v1_NodeProxyOptions_To_api_NodeProxyOptions(in *v1.NodeProxyOptions, out *api.NodeProxyOptions, s conversion.Scope) error {
- return autoConvert_v1_NodeProxyOptions_To_api_NodeProxyOptions(in, out, s)
-}
-
-func autoConvert_api_NodeProxyOptions_To_v1_NodeProxyOptions(in *api.NodeProxyOptions, out *v1.NodeProxyOptions, s conversion.Scope) error {
- out.Path = in.Path
- return nil
-}
-
-// Convert_api_NodeProxyOptions_To_v1_NodeProxyOptions is an autogenerated conversion function.
-func Convert_api_NodeProxyOptions_To_v1_NodeProxyOptions(in *api.NodeProxyOptions, out *v1.NodeProxyOptions, s conversion.Scope) error {
- return autoConvert_api_NodeProxyOptions_To_v1_NodeProxyOptions(in, out, s)
-}
-
-func autoConvert_v1_NodeResources_To_api_NodeResources(in *v1.NodeResources, out *api.NodeResources, s conversion.Scope) error {
- out.Capacity = *(*api.ResourceList)(unsafe.Pointer(&in.Capacity))
- return nil
-}
-
-// Convert_v1_NodeResources_To_api_NodeResources is an autogenerated conversion function.
-func Convert_v1_NodeResources_To_api_NodeResources(in *v1.NodeResources, out *api.NodeResources, s conversion.Scope) error {
- return autoConvert_v1_NodeResources_To_api_NodeResources(in, out, s)
-}
-
-func autoConvert_api_NodeResources_To_v1_NodeResources(in *api.NodeResources, out *v1.NodeResources, s conversion.Scope) error {
- out.Capacity = *(*v1.ResourceList)(unsafe.Pointer(&in.Capacity))
- return nil
-}
-
-// Convert_api_NodeResources_To_v1_NodeResources is an autogenerated conversion function.
-func Convert_api_NodeResources_To_v1_NodeResources(in *api.NodeResources, out *v1.NodeResources, s conversion.Scope) error {
- return autoConvert_api_NodeResources_To_v1_NodeResources(in, out, s)
-}
-
-func autoConvert_v1_NodeSelector_To_api_NodeSelector(in *v1.NodeSelector, out *api.NodeSelector, s conversion.Scope) error {
- out.NodeSelectorTerms = *(*[]api.NodeSelectorTerm)(unsafe.Pointer(&in.NodeSelectorTerms))
- return nil
-}
-
-// Convert_v1_NodeSelector_To_api_NodeSelector is an autogenerated conversion function.
-func Convert_v1_NodeSelector_To_api_NodeSelector(in *v1.NodeSelector, out *api.NodeSelector, s conversion.Scope) error {
- return autoConvert_v1_NodeSelector_To_api_NodeSelector(in, out, s)
-}
-
-func autoConvert_api_NodeSelector_To_v1_NodeSelector(in *api.NodeSelector, out *v1.NodeSelector, s conversion.Scope) error {
- out.NodeSelectorTerms = *(*[]v1.NodeSelectorTerm)(unsafe.Pointer(&in.NodeSelectorTerms))
- return nil
-}
-
-// Convert_api_NodeSelector_To_v1_NodeSelector is an autogenerated conversion function.
-func Convert_api_NodeSelector_To_v1_NodeSelector(in *api.NodeSelector, out *v1.NodeSelector, s conversion.Scope) error {
- return autoConvert_api_NodeSelector_To_v1_NodeSelector(in, out, s)
-}
-
-func autoConvert_v1_NodeSelectorRequirement_To_api_NodeSelectorRequirement(in *v1.NodeSelectorRequirement, out *api.NodeSelectorRequirement, s conversion.Scope) error {
- out.Key = in.Key
- out.Operator = api.NodeSelectorOperator(in.Operator)
- out.Values = *(*[]string)(unsafe.Pointer(&in.Values))
- return nil
-}
-
-// Convert_v1_NodeSelectorRequirement_To_api_NodeSelectorRequirement is an autogenerated conversion function.
-func Convert_v1_NodeSelectorRequirement_To_api_NodeSelectorRequirement(in *v1.NodeSelectorRequirement, out *api.NodeSelectorRequirement, s conversion.Scope) error {
- return autoConvert_v1_NodeSelectorRequirement_To_api_NodeSelectorRequirement(in, out, s)
-}
-
-func autoConvert_api_NodeSelectorRequirement_To_v1_NodeSelectorRequirement(in *api.NodeSelectorRequirement, out *v1.NodeSelectorRequirement, s conversion.Scope) error {
- out.Key = in.Key
- out.Operator = v1.NodeSelectorOperator(in.Operator)
- out.Values = *(*[]string)(unsafe.Pointer(&in.Values))
- return nil
-}
-
-// Convert_api_NodeSelectorRequirement_To_v1_NodeSelectorRequirement is an autogenerated conversion function.
-func Convert_api_NodeSelectorRequirement_To_v1_NodeSelectorRequirement(in *api.NodeSelectorRequirement, out *v1.NodeSelectorRequirement, s conversion.Scope) error {
- return autoConvert_api_NodeSelectorRequirement_To_v1_NodeSelectorRequirement(in, out, s)
-}
-
-func autoConvert_v1_NodeSelectorTerm_To_api_NodeSelectorTerm(in *v1.NodeSelectorTerm, out *api.NodeSelectorTerm, s conversion.Scope) error {
- out.MatchExpressions = *(*[]api.NodeSelectorRequirement)(unsafe.Pointer(&in.MatchExpressions))
- return nil
-}
-
-// Convert_v1_NodeSelectorTerm_To_api_NodeSelectorTerm is an autogenerated conversion function.
-func Convert_v1_NodeSelectorTerm_To_api_NodeSelectorTerm(in *v1.NodeSelectorTerm, out *api.NodeSelectorTerm, s conversion.Scope) error {
- return autoConvert_v1_NodeSelectorTerm_To_api_NodeSelectorTerm(in, out, s)
-}
-
-func autoConvert_api_NodeSelectorTerm_To_v1_NodeSelectorTerm(in *api.NodeSelectorTerm, out *v1.NodeSelectorTerm, s conversion.Scope) error {
- out.MatchExpressions = *(*[]v1.NodeSelectorRequirement)(unsafe.Pointer(&in.MatchExpressions))
- return nil
-}
-
-// Convert_api_NodeSelectorTerm_To_v1_NodeSelectorTerm is an autogenerated conversion function.
-func Convert_api_NodeSelectorTerm_To_v1_NodeSelectorTerm(in *api.NodeSelectorTerm, out *v1.NodeSelectorTerm, s conversion.Scope) error {
- return autoConvert_api_NodeSelectorTerm_To_v1_NodeSelectorTerm(in, out, s)
-}
-
-func autoConvert_v1_NodeSpec_To_api_NodeSpec(in *v1.NodeSpec, out *api.NodeSpec, s conversion.Scope) error {
- out.PodCIDR = in.PodCIDR
- out.ExternalID = in.ExternalID
- out.ProviderID = in.ProviderID
- out.Unschedulable = in.Unschedulable
- out.Taints = *(*[]api.Taint)(unsafe.Pointer(&in.Taints))
- out.ConfigSource = (*api.NodeConfigSource)(unsafe.Pointer(in.ConfigSource))
- return nil
-}
-
-// Convert_v1_NodeSpec_To_api_NodeSpec is an autogenerated conversion function.
-func Convert_v1_NodeSpec_To_api_NodeSpec(in *v1.NodeSpec, out *api.NodeSpec, s conversion.Scope) error {
- return autoConvert_v1_NodeSpec_To_api_NodeSpec(in, out, s)
-}
-
-func autoConvert_api_NodeSpec_To_v1_NodeSpec(in *api.NodeSpec, out *v1.NodeSpec, s conversion.Scope) error {
- out.PodCIDR = in.PodCIDR
- out.ExternalID = in.ExternalID
- out.ProviderID = in.ProviderID
- out.Unschedulable = in.Unschedulable
- out.Taints = *(*[]v1.Taint)(unsafe.Pointer(&in.Taints))
- out.ConfigSource = (*v1.NodeConfigSource)(unsafe.Pointer(in.ConfigSource))
- return nil
-}
-
-// Convert_api_NodeSpec_To_v1_NodeSpec is an autogenerated conversion function.
-func Convert_api_NodeSpec_To_v1_NodeSpec(in *api.NodeSpec, out *v1.NodeSpec, s conversion.Scope) error {
- return autoConvert_api_NodeSpec_To_v1_NodeSpec(in, out, s)
-}
-
-func autoConvert_v1_NodeStatus_To_api_NodeStatus(in *v1.NodeStatus, out *api.NodeStatus, s conversion.Scope) error {
- out.Capacity = *(*api.ResourceList)(unsafe.Pointer(&in.Capacity))
- out.Allocatable = *(*api.ResourceList)(unsafe.Pointer(&in.Allocatable))
- out.Phase = api.NodePhase(in.Phase)
- out.Conditions = *(*[]api.NodeCondition)(unsafe.Pointer(&in.Conditions))
- out.Addresses = *(*[]api.NodeAddress)(unsafe.Pointer(&in.Addresses))
- if err := Convert_v1_NodeDaemonEndpoints_To_api_NodeDaemonEndpoints(&in.DaemonEndpoints, &out.DaemonEndpoints, s); err != nil {
- return err
- }
- if err := Convert_v1_NodeSystemInfo_To_api_NodeSystemInfo(&in.NodeInfo, &out.NodeInfo, s); err != nil {
- return err
- }
- out.Images = *(*[]api.ContainerImage)(unsafe.Pointer(&in.Images))
- out.VolumesInUse = *(*[]api.UniqueVolumeName)(unsafe.Pointer(&in.VolumesInUse))
- out.VolumesAttached = *(*[]api.AttachedVolume)(unsafe.Pointer(&in.VolumesAttached))
- return nil
-}
-
-// Convert_v1_NodeStatus_To_api_NodeStatus is an autogenerated conversion function.
-func Convert_v1_NodeStatus_To_api_NodeStatus(in *v1.NodeStatus, out *api.NodeStatus, s conversion.Scope) error {
- return autoConvert_v1_NodeStatus_To_api_NodeStatus(in, out, s)
-}
-
-func autoConvert_api_NodeStatus_To_v1_NodeStatus(in *api.NodeStatus, out *v1.NodeStatus, s conversion.Scope) error {
- out.Capacity = *(*v1.ResourceList)(unsafe.Pointer(&in.Capacity))
- out.Allocatable = *(*v1.ResourceList)(unsafe.Pointer(&in.Allocatable))
- out.Phase = v1.NodePhase(in.Phase)
- out.Conditions = *(*[]v1.NodeCondition)(unsafe.Pointer(&in.Conditions))
- out.Addresses = *(*[]v1.NodeAddress)(unsafe.Pointer(&in.Addresses))
- if err := Convert_api_NodeDaemonEndpoints_To_v1_NodeDaemonEndpoints(&in.DaemonEndpoints, &out.DaemonEndpoints, s); err != nil {
- return err
- }
- if err := Convert_api_NodeSystemInfo_To_v1_NodeSystemInfo(&in.NodeInfo, &out.NodeInfo, s); err != nil {
- return err
- }
- out.Images = *(*[]v1.ContainerImage)(unsafe.Pointer(&in.Images))
- out.VolumesInUse = *(*[]v1.UniqueVolumeName)(unsafe.Pointer(&in.VolumesInUse))
- out.VolumesAttached = *(*[]v1.AttachedVolume)(unsafe.Pointer(&in.VolumesAttached))
- return nil
-}
-
-// Convert_api_NodeStatus_To_v1_NodeStatus is an autogenerated conversion function.
-func Convert_api_NodeStatus_To_v1_NodeStatus(in *api.NodeStatus, out *v1.NodeStatus, s conversion.Scope) error {
- return autoConvert_api_NodeStatus_To_v1_NodeStatus(in, out, s)
-}
-
-func autoConvert_v1_NodeSystemInfo_To_api_NodeSystemInfo(in *v1.NodeSystemInfo, out *api.NodeSystemInfo, s conversion.Scope) error {
- out.MachineID = in.MachineID
- out.SystemUUID = in.SystemUUID
- out.BootID = in.BootID
- out.KernelVersion = in.KernelVersion
- out.OSImage = in.OSImage
- out.ContainerRuntimeVersion = in.ContainerRuntimeVersion
- out.KubeletVersion = in.KubeletVersion
- out.KubeProxyVersion = in.KubeProxyVersion
- out.OperatingSystem = in.OperatingSystem
- out.Architecture = in.Architecture
- return nil
-}
-
-// Convert_v1_NodeSystemInfo_To_api_NodeSystemInfo is an autogenerated conversion function.
-func Convert_v1_NodeSystemInfo_To_api_NodeSystemInfo(in *v1.NodeSystemInfo, out *api.NodeSystemInfo, s conversion.Scope) error {
- return autoConvert_v1_NodeSystemInfo_To_api_NodeSystemInfo(in, out, s)
-}
-
-func autoConvert_api_NodeSystemInfo_To_v1_NodeSystemInfo(in *api.NodeSystemInfo, out *v1.NodeSystemInfo, s conversion.Scope) error {
- out.MachineID = in.MachineID
- out.SystemUUID = in.SystemUUID
- out.BootID = in.BootID
- out.KernelVersion = in.KernelVersion
- out.OSImage = in.OSImage
- out.ContainerRuntimeVersion = in.ContainerRuntimeVersion
- out.KubeletVersion = in.KubeletVersion
- out.KubeProxyVersion = in.KubeProxyVersion
- out.OperatingSystem = in.OperatingSystem
- out.Architecture = in.Architecture
- return nil
-}
-
-// Convert_api_NodeSystemInfo_To_v1_NodeSystemInfo is an autogenerated conversion function.
-func Convert_api_NodeSystemInfo_To_v1_NodeSystemInfo(in *api.NodeSystemInfo, out *v1.NodeSystemInfo, s conversion.Scope) error {
- return autoConvert_api_NodeSystemInfo_To_v1_NodeSystemInfo(in, out, s)
-}
-
-func autoConvert_v1_ObjectFieldSelector_To_api_ObjectFieldSelector(in *v1.ObjectFieldSelector, out *api.ObjectFieldSelector, s conversion.Scope) error {
- out.APIVersion = in.APIVersion
- out.FieldPath = in.FieldPath
- return nil
-}
-
-// Convert_v1_ObjectFieldSelector_To_api_ObjectFieldSelector is an autogenerated conversion function.
-func Convert_v1_ObjectFieldSelector_To_api_ObjectFieldSelector(in *v1.ObjectFieldSelector, out *api.ObjectFieldSelector, s conversion.Scope) error {
- return autoConvert_v1_ObjectFieldSelector_To_api_ObjectFieldSelector(in, out, s)
-}
-
-func autoConvert_api_ObjectFieldSelector_To_v1_ObjectFieldSelector(in *api.ObjectFieldSelector, out *v1.ObjectFieldSelector, s conversion.Scope) error {
- out.APIVersion = in.APIVersion
- out.FieldPath = in.FieldPath
- return nil
-}
-
-// Convert_api_ObjectFieldSelector_To_v1_ObjectFieldSelector is an autogenerated conversion function.
-func Convert_api_ObjectFieldSelector_To_v1_ObjectFieldSelector(in *api.ObjectFieldSelector, out *v1.ObjectFieldSelector, s conversion.Scope) error {
- return autoConvert_api_ObjectFieldSelector_To_v1_ObjectFieldSelector(in, out, s)
-}
-
-func autoConvert_v1_ObjectMeta_To_api_ObjectMeta(in *v1.ObjectMeta, out *api.ObjectMeta, s conversion.Scope) error {
- out.Name = in.Name
- out.GenerateName = in.GenerateName
- out.Namespace = in.Namespace
- out.SelfLink = in.SelfLink
- out.UID = types.UID(in.UID)
- out.ResourceVersion = in.ResourceVersion
- out.Generation = in.Generation
- out.CreationTimestamp = in.CreationTimestamp
- out.DeletionTimestamp = (*meta_v1.Time)(unsafe.Pointer(in.DeletionTimestamp))
- out.DeletionGracePeriodSeconds = (*int64)(unsafe.Pointer(in.DeletionGracePeriodSeconds))
- out.Labels = *(*map[string]string)(unsafe.Pointer(&in.Labels))
- out.Annotations = *(*map[string]string)(unsafe.Pointer(&in.Annotations))
- out.OwnerReferences = *(*[]meta_v1.OwnerReference)(unsafe.Pointer(&in.OwnerReferences))
- out.Initializers = (*meta_v1.Initializers)(unsafe.Pointer(in.Initializers))
- out.Finalizers = *(*[]string)(unsafe.Pointer(&in.Finalizers))
- out.ClusterName = in.ClusterName
- return nil
-}
-
-// Convert_v1_ObjectMeta_To_api_ObjectMeta is an autogenerated conversion function.
-func Convert_v1_ObjectMeta_To_api_ObjectMeta(in *v1.ObjectMeta, out *api.ObjectMeta, s conversion.Scope) error {
- return autoConvert_v1_ObjectMeta_To_api_ObjectMeta(in, out, s)
-}
-
-func autoConvert_api_ObjectMeta_To_v1_ObjectMeta(in *api.ObjectMeta, out *v1.ObjectMeta, s conversion.Scope) error {
- out.Name = in.Name
- out.GenerateName = in.GenerateName
- out.Namespace = in.Namespace
- out.SelfLink = in.SelfLink
- out.UID = types.UID(in.UID)
- out.ResourceVersion = in.ResourceVersion
- out.Generation = in.Generation
- out.CreationTimestamp = in.CreationTimestamp
- out.DeletionTimestamp = (*meta_v1.Time)(unsafe.Pointer(in.DeletionTimestamp))
- out.DeletionGracePeriodSeconds = (*int64)(unsafe.Pointer(in.DeletionGracePeriodSeconds))
- out.Labels = *(*map[string]string)(unsafe.Pointer(&in.Labels))
- out.Annotations = *(*map[string]string)(unsafe.Pointer(&in.Annotations))
- out.OwnerReferences = *(*[]meta_v1.OwnerReference)(unsafe.Pointer(&in.OwnerReferences))
- out.Initializers = (*meta_v1.Initializers)(unsafe.Pointer(in.Initializers))
- out.Finalizers = *(*[]string)(unsafe.Pointer(&in.Finalizers))
- out.ClusterName = in.ClusterName
- return nil
-}
-
-// Convert_api_ObjectMeta_To_v1_ObjectMeta is an autogenerated conversion function.
-func Convert_api_ObjectMeta_To_v1_ObjectMeta(in *api.ObjectMeta, out *v1.ObjectMeta, s conversion.Scope) error {
- return autoConvert_api_ObjectMeta_To_v1_ObjectMeta(in, out, s)
-}
-
-func autoConvert_v1_ObjectReference_To_api_ObjectReference(in *v1.ObjectReference, out *api.ObjectReference, s conversion.Scope) error {
- out.Kind = in.Kind
- out.Namespace = in.Namespace
- out.Name = in.Name
- out.UID = types.UID(in.UID)
- out.APIVersion = in.APIVersion
- out.ResourceVersion = in.ResourceVersion
- out.FieldPath = in.FieldPath
- return nil
-}
-
-// Convert_v1_ObjectReference_To_api_ObjectReference is an autogenerated conversion function.
-func Convert_v1_ObjectReference_To_api_ObjectReference(in *v1.ObjectReference, out *api.ObjectReference, s conversion.Scope) error {
- return autoConvert_v1_ObjectReference_To_api_ObjectReference(in, out, s)
-}
-
-func autoConvert_api_ObjectReference_To_v1_ObjectReference(in *api.ObjectReference, out *v1.ObjectReference, s conversion.Scope) error {
- out.Kind = in.Kind
- out.Namespace = in.Namespace
- out.Name = in.Name
- out.UID = types.UID(in.UID)
- out.APIVersion = in.APIVersion
- out.ResourceVersion = in.ResourceVersion
- out.FieldPath = in.FieldPath
- return nil
-}
-
-// Convert_api_ObjectReference_To_v1_ObjectReference is an autogenerated conversion function.
-func Convert_api_ObjectReference_To_v1_ObjectReference(in *api.ObjectReference, out *v1.ObjectReference, s conversion.Scope) error {
- return autoConvert_api_ObjectReference_To_v1_ObjectReference(in, out, s)
-}
-
-func autoConvert_v1_PersistentVolume_To_api_PersistentVolume(in *v1.PersistentVolume, out *api.PersistentVolume, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- if err := Convert_v1_PersistentVolumeSpec_To_api_PersistentVolumeSpec(&in.Spec, &out.Spec, s); err != nil {
- return err
- }
- if err := Convert_v1_PersistentVolumeStatus_To_api_PersistentVolumeStatus(&in.Status, &out.Status, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_v1_PersistentVolume_To_api_PersistentVolume is an autogenerated conversion function.
-func Convert_v1_PersistentVolume_To_api_PersistentVolume(in *v1.PersistentVolume, out *api.PersistentVolume, s conversion.Scope) error {
- return autoConvert_v1_PersistentVolume_To_api_PersistentVolume(in, out, s)
-}
-
-func autoConvert_api_PersistentVolume_To_v1_PersistentVolume(in *api.PersistentVolume, out *v1.PersistentVolume, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- if err := Convert_api_PersistentVolumeSpec_To_v1_PersistentVolumeSpec(&in.Spec, &out.Spec, s); err != nil {
- return err
- }
- if err := Convert_api_PersistentVolumeStatus_To_v1_PersistentVolumeStatus(&in.Status, &out.Status, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_api_PersistentVolume_To_v1_PersistentVolume is an autogenerated conversion function.
-func Convert_api_PersistentVolume_To_v1_PersistentVolume(in *api.PersistentVolume, out *v1.PersistentVolume, s conversion.Scope) error {
- return autoConvert_api_PersistentVolume_To_v1_PersistentVolume(in, out, s)
-}
-
-func autoConvert_v1_PersistentVolumeClaim_To_api_PersistentVolumeClaim(in *v1.PersistentVolumeClaim, out *api.PersistentVolumeClaim, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- if err := Convert_v1_PersistentVolumeClaimSpec_To_api_PersistentVolumeClaimSpec(&in.Spec, &out.Spec, s); err != nil {
- return err
- }
- if err := Convert_v1_PersistentVolumeClaimStatus_To_api_PersistentVolumeClaimStatus(&in.Status, &out.Status, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_v1_PersistentVolumeClaim_To_api_PersistentVolumeClaim is an autogenerated conversion function.
-func Convert_v1_PersistentVolumeClaim_To_api_PersistentVolumeClaim(in *v1.PersistentVolumeClaim, out *api.PersistentVolumeClaim, s conversion.Scope) error {
- return autoConvert_v1_PersistentVolumeClaim_To_api_PersistentVolumeClaim(in, out, s)
-}
-
-func autoConvert_api_PersistentVolumeClaim_To_v1_PersistentVolumeClaim(in *api.PersistentVolumeClaim, out *v1.PersistentVolumeClaim, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- if err := Convert_api_PersistentVolumeClaimSpec_To_v1_PersistentVolumeClaimSpec(&in.Spec, &out.Spec, s); err != nil {
- return err
- }
- if err := Convert_api_PersistentVolumeClaimStatus_To_v1_PersistentVolumeClaimStatus(&in.Status, &out.Status, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_api_PersistentVolumeClaim_To_v1_PersistentVolumeClaim is an autogenerated conversion function.
-func Convert_api_PersistentVolumeClaim_To_v1_PersistentVolumeClaim(in *api.PersistentVolumeClaim, out *v1.PersistentVolumeClaim, s conversion.Scope) error {
- return autoConvert_api_PersistentVolumeClaim_To_v1_PersistentVolumeClaim(in, out, s)
-}
-
-func autoConvert_v1_PersistentVolumeClaimCondition_To_api_PersistentVolumeClaimCondition(in *v1.PersistentVolumeClaimCondition, out *api.PersistentVolumeClaimCondition, s conversion.Scope) error {
- out.Type = api.PersistentVolumeClaimConditionType(in.Type)
- out.Status = api.ConditionStatus(in.Status)
- out.LastProbeTime = in.LastProbeTime
- out.LastTransitionTime = in.LastTransitionTime
- out.Reason = in.Reason
- out.Message = in.Message
- return nil
-}
-
-// Convert_v1_PersistentVolumeClaimCondition_To_api_PersistentVolumeClaimCondition is an autogenerated conversion function.
-func Convert_v1_PersistentVolumeClaimCondition_To_api_PersistentVolumeClaimCondition(in *v1.PersistentVolumeClaimCondition, out *api.PersistentVolumeClaimCondition, s conversion.Scope) error {
- return autoConvert_v1_PersistentVolumeClaimCondition_To_api_PersistentVolumeClaimCondition(in, out, s)
-}
-
-func autoConvert_api_PersistentVolumeClaimCondition_To_v1_PersistentVolumeClaimCondition(in *api.PersistentVolumeClaimCondition, out *v1.PersistentVolumeClaimCondition, s conversion.Scope) error {
- out.Type = v1.PersistentVolumeClaimConditionType(in.Type)
- out.Status = v1.ConditionStatus(in.Status)
- out.LastProbeTime = in.LastProbeTime
- out.LastTransitionTime = in.LastTransitionTime
- out.Reason = in.Reason
- out.Message = in.Message
- return nil
-}
-
-// Convert_api_PersistentVolumeClaimCondition_To_v1_PersistentVolumeClaimCondition is an autogenerated conversion function.
-func Convert_api_PersistentVolumeClaimCondition_To_v1_PersistentVolumeClaimCondition(in *api.PersistentVolumeClaimCondition, out *v1.PersistentVolumeClaimCondition, s conversion.Scope) error {
- return autoConvert_api_PersistentVolumeClaimCondition_To_v1_PersistentVolumeClaimCondition(in, out, s)
-}
-
-func autoConvert_v1_PersistentVolumeClaimList_To_api_PersistentVolumeClaimList(in *v1.PersistentVolumeClaimList, out *api.PersistentVolumeClaimList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- out.Items = *(*[]api.PersistentVolumeClaim)(unsafe.Pointer(&in.Items))
- return nil
-}
-
-// Convert_v1_PersistentVolumeClaimList_To_api_PersistentVolumeClaimList is an autogenerated conversion function.
-func Convert_v1_PersistentVolumeClaimList_To_api_PersistentVolumeClaimList(in *v1.PersistentVolumeClaimList, out *api.PersistentVolumeClaimList, s conversion.Scope) error {
- return autoConvert_v1_PersistentVolumeClaimList_To_api_PersistentVolumeClaimList(in, out, s)
-}
-
-func autoConvert_api_PersistentVolumeClaimList_To_v1_PersistentVolumeClaimList(in *api.PersistentVolumeClaimList, out *v1.PersistentVolumeClaimList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- out.Items = *(*[]v1.PersistentVolumeClaim)(unsafe.Pointer(&in.Items))
- return nil
-}
-
-// Convert_api_PersistentVolumeClaimList_To_v1_PersistentVolumeClaimList is an autogenerated conversion function.
-func Convert_api_PersistentVolumeClaimList_To_v1_PersistentVolumeClaimList(in *api.PersistentVolumeClaimList, out *v1.PersistentVolumeClaimList, s conversion.Scope) error {
- return autoConvert_api_PersistentVolumeClaimList_To_v1_PersistentVolumeClaimList(in, out, s)
-}
-
-func autoConvert_v1_PersistentVolumeClaimSpec_To_api_PersistentVolumeClaimSpec(in *v1.PersistentVolumeClaimSpec, out *api.PersistentVolumeClaimSpec, s conversion.Scope) error {
- out.AccessModes = *(*[]api.PersistentVolumeAccessMode)(unsafe.Pointer(&in.AccessModes))
- out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
- if err := Convert_v1_ResourceRequirements_To_api_ResourceRequirements(&in.Resources, &out.Resources, s); err != nil {
- return err
- }
- out.VolumeName = in.VolumeName
- out.StorageClassName = (*string)(unsafe.Pointer(in.StorageClassName))
- return nil
-}
-
-// Convert_v1_PersistentVolumeClaimSpec_To_api_PersistentVolumeClaimSpec is an autogenerated conversion function.
-func Convert_v1_PersistentVolumeClaimSpec_To_api_PersistentVolumeClaimSpec(in *v1.PersistentVolumeClaimSpec, out *api.PersistentVolumeClaimSpec, s conversion.Scope) error {
- return autoConvert_v1_PersistentVolumeClaimSpec_To_api_PersistentVolumeClaimSpec(in, out, s)
-}
-
-func autoConvert_api_PersistentVolumeClaimSpec_To_v1_PersistentVolumeClaimSpec(in *api.PersistentVolumeClaimSpec, out *v1.PersistentVolumeClaimSpec, s conversion.Scope) error {
- out.AccessModes = *(*[]v1.PersistentVolumeAccessMode)(unsafe.Pointer(&in.AccessModes))
- out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
- if err := Convert_api_ResourceRequirements_To_v1_ResourceRequirements(&in.Resources, &out.Resources, s); err != nil {
- return err
- }
- out.VolumeName = in.VolumeName
- out.StorageClassName = (*string)(unsafe.Pointer(in.StorageClassName))
- return nil
-}
-
-// Convert_api_PersistentVolumeClaimSpec_To_v1_PersistentVolumeClaimSpec is an autogenerated conversion function.
-func Convert_api_PersistentVolumeClaimSpec_To_v1_PersistentVolumeClaimSpec(in *api.PersistentVolumeClaimSpec, out *v1.PersistentVolumeClaimSpec, s conversion.Scope) error {
- return autoConvert_api_PersistentVolumeClaimSpec_To_v1_PersistentVolumeClaimSpec(in, out, s)
-}
-
-func autoConvert_v1_PersistentVolumeClaimStatus_To_api_PersistentVolumeClaimStatus(in *v1.PersistentVolumeClaimStatus, out *api.PersistentVolumeClaimStatus, s conversion.Scope) error {
- out.Phase = api.PersistentVolumeClaimPhase(in.Phase)
- out.AccessModes = *(*[]api.PersistentVolumeAccessMode)(unsafe.Pointer(&in.AccessModes))
- out.Capacity = *(*api.ResourceList)(unsafe.Pointer(&in.Capacity))
- out.Conditions = *(*[]api.PersistentVolumeClaimCondition)(unsafe.Pointer(&in.Conditions))
- return nil
-}
-
-// Convert_v1_PersistentVolumeClaimStatus_To_api_PersistentVolumeClaimStatus is an autogenerated conversion function.
-func Convert_v1_PersistentVolumeClaimStatus_To_api_PersistentVolumeClaimStatus(in *v1.PersistentVolumeClaimStatus, out *api.PersistentVolumeClaimStatus, s conversion.Scope) error {
- return autoConvert_v1_PersistentVolumeClaimStatus_To_api_PersistentVolumeClaimStatus(in, out, s)
-}
-
-func autoConvert_api_PersistentVolumeClaimStatus_To_v1_PersistentVolumeClaimStatus(in *api.PersistentVolumeClaimStatus, out *v1.PersistentVolumeClaimStatus, s conversion.Scope) error {
- out.Phase = v1.PersistentVolumeClaimPhase(in.Phase)
- out.AccessModes = *(*[]v1.PersistentVolumeAccessMode)(unsafe.Pointer(&in.AccessModes))
- out.Capacity = *(*v1.ResourceList)(unsafe.Pointer(&in.Capacity))
- out.Conditions = *(*[]v1.PersistentVolumeClaimCondition)(unsafe.Pointer(&in.Conditions))
- return nil
-}
-
-// Convert_api_PersistentVolumeClaimStatus_To_v1_PersistentVolumeClaimStatus is an autogenerated conversion function.
-func Convert_api_PersistentVolumeClaimStatus_To_v1_PersistentVolumeClaimStatus(in *api.PersistentVolumeClaimStatus, out *v1.PersistentVolumeClaimStatus, s conversion.Scope) error {
- return autoConvert_api_PersistentVolumeClaimStatus_To_v1_PersistentVolumeClaimStatus(in, out, s)
-}
-
-func autoConvert_v1_PersistentVolumeClaimVolumeSource_To_api_PersistentVolumeClaimVolumeSource(in *v1.PersistentVolumeClaimVolumeSource, out *api.PersistentVolumeClaimVolumeSource, s conversion.Scope) error {
- out.ClaimName = in.ClaimName
- out.ReadOnly = in.ReadOnly
- return nil
-}
-
-// Convert_v1_PersistentVolumeClaimVolumeSource_To_api_PersistentVolumeClaimVolumeSource is an autogenerated conversion function.
-func Convert_v1_PersistentVolumeClaimVolumeSource_To_api_PersistentVolumeClaimVolumeSource(in *v1.PersistentVolumeClaimVolumeSource, out *api.PersistentVolumeClaimVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_PersistentVolumeClaimVolumeSource_To_api_PersistentVolumeClaimVolumeSource(in, out, s)
-}
-
-func autoConvert_api_PersistentVolumeClaimVolumeSource_To_v1_PersistentVolumeClaimVolumeSource(in *api.PersistentVolumeClaimVolumeSource, out *v1.PersistentVolumeClaimVolumeSource, s conversion.Scope) error {
- out.ClaimName = in.ClaimName
- out.ReadOnly = in.ReadOnly
- return nil
-}
-
-// Convert_api_PersistentVolumeClaimVolumeSource_To_v1_PersistentVolumeClaimVolumeSource is an autogenerated conversion function.
-func Convert_api_PersistentVolumeClaimVolumeSource_To_v1_PersistentVolumeClaimVolumeSource(in *api.PersistentVolumeClaimVolumeSource, out *v1.PersistentVolumeClaimVolumeSource, s conversion.Scope) error {
- return autoConvert_api_PersistentVolumeClaimVolumeSource_To_v1_PersistentVolumeClaimVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_PersistentVolumeList_To_api_PersistentVolumeList(in *v1.PersistentVolumeList, out *api.PersistentVolumeList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- if in.Items != nil {
- in, out := &in.Items, &out.Items
- *out = make([]api.PersistentVolume, len(*in))
- for i := range *in {
- if err := Convert_v1_PersistentVolume_To_api_PersistentVolume(&(*in)[i], &(*out)[i], s); err != nil {
- return err
- }
- }
- } else {
- out.Items = nil
- }
- return nil
-}
-
-// Convert_v1_PersistentVolumeList_To_api_PersistentVolumeList is an autogenerated conversion function.
-func Convert_v1_PersistentVolumeList_To_api_PersistentVolumeList(in *v1.PersistentVolumeList, out *api.PersistentVolumeList, s conversion.Scope) error {
- return autoConvert_v1_PersistentVolumeList_To_api_PersistentVolumeList(in, out, s)
-}
-
-func autoConvert_api_PersistentVolumeList_To_v1_PersistentVolumeList(in *api.PersistentVolumeList, out *v1.PersistentVolumeList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- if in.Items != nil {
- in, out := &in.Items, &out.Items
- *out = make([]v1.PersistentVolume, len(*in))
- for i := range *in {
- if err := Convert_api_PersistentVolume_To_v1_PersistentVolume(&(*in)[i], &(*out)[i], s); err != nil {
- return err
- }
- }
- } else {
- out.Items = nil
- }
- return nil
-}
-
-// Convert_api_PersistentVolumeList_To_v1_PersistentVolumeList is an autogenerated conversion function.
-func Convert_api_PersistentVolumeList_To_v1_PersistentVolumeList(in *api.PersistentVolumeList, out *v1.PersistentVolumeList, s conversion.Scope) error {
- return autoConvert_api_PersistentVolumeList_To_v1_PersistentVolumeList(in, out, s)
-}
-
-func autoConvert_v1_PersistentVolumeSource_To_api_PersistentVolumeSource(in *v1.PersistentVolumeSource, out *api.PersistentVolumeSource, s conversion.Scope) error {
- out.GCEPersistentDisk = (*api.GCEPersistentDiskVolumeSource)(unsafe.Pointer(in.GCEPersistentDisk))
- out.AWSElasticBlockStore = (*api.AWSElasticBlockStoreVolumeSource)(unsafe.Pointer(in.AWSElasticBlockStore))
- out.HostPath = (*api.HostPathVolumeSource)(unsafe.Pointer(in.HostPath))
- out.Glusterfs = (*api.GlusterfsVolumeSource)(unsafe.Pointer(in.Glusterfs))
- out.NFS = (*api.NFSVolumeSource)(unsafe.Pointer(in.NFS))
- out.RBD = (*api.RBDPersistentVolumeSource)(unsafe.Pointer(in.RBD))
- out.ISCSI = (*api.ISCSIVolumeSource)(unsafe.Pointer(in.ISCSI))
- out.Cinder = (*api.CinderVolumeSource)(unsafe.Pointer(in.Cinder))
- out.CephFS = (*api.CephFSPersistentVolumeSource)(unsafe.Pointer(in.CephFS))
- out.FC = (*api.FCVolumeSource)(unsafe.Pointer(in.FC))
- out.Flocker = (*api.FlockerVolumeSource)(unsafe.Pointer(in.Flocker))
- out.FlexVolume = (*api.FlexVolumeSource)(unsafe.Pointer(in.FlexVolume))
- out.AzureFile = (*api.AzureFilePersistentVolumeSource)(unsafe.Pointer(in.AzureFile))
- out.VsphereVolume = (*api.VsphereVirtualDiskVolumeSource)(unsafe.Pointer(in.VsphereVolume))
- out.Quobyte = (*api.QuobyteVolumeSource)(unsafe.Pointer(in.Quobyte))
- out.AzureDisk = (*api.AzureDiskVolumeSource)(unsafe.Pointer(in.AzureDisk))
- out.PhotonPersistentDisk = (*api.PhotonPersistentDiskVolumeSource)(unsafe.Pointer(in.PhotonPersistentDisk))
- out.PortworxVolume = (*api.PortworxVolumeSource)(unsafe.Pointer(in.PortworxVolume))
- out.ScaleIO = (*api.ScaleIOPersistentVolumeSource)(unsafe.Pointer(in.ScaleIO))
- out.Local = (*api.LocalVolumeSource)(unsafe.Pointer(in.Local))
- out.StorageOS = (*api.StorageOSPersistentVolumeSource)(unsafe.Pointer(in.StorageOS))
- return nil
-}
-
-// Convert_v1_PersistentVolumeSource_To_api_PersistentVolumeSource is an autogenerated conversion function.
-func Convert_v1_PersistentVolumeSource_To_api_PersistentVolumeSource(in *v1.PersistentVolumeSource, out *api.PersistentVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_PersistentVolumeSource_To_api_PersistentVolumeSource(in, out, s)
-}
-
-func autoConvert_api_PersistentVolumeSource_To_v1_PersistentVolumeSource(in *api.PersistentVolumeSource, out *v1.PersistentVolumeSource, s conversion.Scope) error {
- out.GCEPersistentDisk = (*v1.GCEPersistentDiskVolumeSource)(unsafe.Pointer(in.GCEPersistentDisk))
- out.AWSElasticBlockStore = (*v1.AWSElasticBlockStoreVolumeSource)(unsafe.Pointer(in.AWSElasticBlockStore))
- out.HostPath = (*v1.HostPathVolumeSource)(unsafe.Pointer(in.HostPath))
- out.Glusterfs = (*v1.GlusterfsVolumeSource)(unsafe.Pointer(in.Glusterfs))
- out.NFS = (*v1.NFSVolumeSource)(unsafe.Pointer(in.NFS))
- out.RBD = (*v1.RBDPersistentVolumeSource)(unsafe.Pointer(in.RBD))
- out.Quobyte = (*v1.QuobyteVolumeSource)(unsafe.Pointer(in.Quobyte))
- out.ISCSI = (*v1.ISCSIVolumeSource)(unsafe.Pointer(in.ISCSI))
- out.FlexVolume = (*v1.FlexVolumeSource)(unsafe.Pointer(in.FlexVolume))
- out.Cinder = (*v1.CinderVolumeSource)(unsafe.Pointer(in.Cinder))
- out.CephFS = (*v1.CephFSPersistentVolumeSource)(unsafe.Pointer(in.CephFS))
- out.FC = (*v1.FCVolumeSource)(unsafe.Pointer(in.FC))
- out.Flocker = (*v1.FlockerVolumeSource)(unsafe.Pointer(in.Flocker))
- out.AzureFile = (*v1.AzureFilePersistentVolumeSource)(unsafe.Pointer(in.AzureFile))
- out.VsphereVolume = (*v1.VsphereVirtualDiskVolumeSource)(unsafe.Pointer(in.VsphereVolume))
- out.AzureDisk = (*v1.AzureDiskVolumeSource)(unsafe.Pointer(in.AzureDisk))
- out.PhotonPersistentDisk = (*v1.PhotonPersistentDiskVolumeSource)(unsafe.Pointer(in.PhotonPersistentDisk))
- out.PortworxVolume = (*v1.PortworxVolumeSource)(unsafe.Pointer(in.PortworxVolume))
- out.ScaleIO = (*v1.ScaleIOPersistentVolumeSource)(unsafe.Pointer(in.ScaleIO))
- out.Local = (*v1.LocalVolumeSource)(unsafe.Pointer(in.Local))
- out.StorageOS = (*v1.StorageOSPersistentVolumeSource)(unsafe.Pointer(in.StorageOS))
- return nil
-}
-
-// Convert_api_PersistentVolumeSource_To_v1_PersistentVolumeSource is an autogenerated conversion function.
-func Convert_api_PersistentVolumeSource_To_v1_PersistentVolumeSource(in *api.PersistentVolumeSource, out *v1.PersistentVolumeSource, s conversion.Scope) error {
- return autoConvert_api_PersistentVolumeSource_To_v1_PersistentVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_PersistentVolumeSpec_To_api_PersistentVolumeSpec(in *v1.PersistentVolumeSpec, out *api.PersistentVolumeSpec, s conversion.Scope) error {
- out.Capacity = *(*api.ResourceList)(unsafe.Pointer(&in.Capacity))
- if err := Convert_v1_PersistentVolumeSource_To_api_PersistentVolumeSource(&in.PersistentVolumeSource, &out.PersistentVolumeSource, s); err != nil {
- return err
- }
- out.AccessModes = *(*[]api.PersistentVolumeAccessMode)(unsafe.Pointer(&in.AccessModes))
- out.ClaimRef = (*api.ObjectReference)(unsafe.Pointer(in.ClaimRef))
- out.PersistentVolumeReclaimPolicy = api.PersistentVolumeReclaimPolicy(in.PersistentVolumeReclaimPolicy)
- out.StorageClassName = in.StorageClassName
- out.MountOptions = *(*[]string)(unsafe.Pointer(&in.MountOptions))
- return nil
-}
-
-// Convert_v1_PersistentVolumeSpec_To_api_PersistentVolumeSpec is an autogenerated conversion function.
-func Convert_v1_PersistentVolumeSpec_To_api_PersistentVolumeSpec(in *v1.PersistentVolumeSpec, out *api.PersistentVolumeSpec, s conversion.Scope) error {
- return autoConvert_v1_PersistentVolumeSpec_To_api_PersistentVolumeSpec(in, out, s)
-}
-
-func autoConvert_api_PersistentVolumeSpec_To_v1_PersistentVolumeSpec(in *api.PersistentVolumeSpec, out *v1.PersistentVolumeSpec, s conversion.Scope) error {
- out.Capacity = *(*v1.ResourceList)(unsafe.Pointer(&in.Capacity))
- if err := Convert_api_PersistentVolumeSource_To_v1_PersistentVolumeSource(&in.PersistentVolumeSource, &out.PersistentVolumeSource, s); err != nil {
- return err
- }
- out.AccessModes = *(*[]v1.PersistentVolumeAccessMode)(unsafe.Pointer(&in.AccessModes))
- out.ClaimRef = (*v1.ObjectReference)(unsafe.Pointer(in.ClaimRef))
- out.PersistentVolumeReclaimPolicy = v1.PersistentVolumeReclaimPolicy(in.PersistentVolumeReclaimPolicy)
- out.StorageClassName = in.StorageClassName
- out.MountOptions = *(*[]string)(unsafe.Pointer(&in.MountOptions))
- return nil
-}
-
-// Convert_api_PersistentVolumeSpec_To_v1_PersistentVolumeSpec is an autogenerated conversion function.
-func Convert_api_PersistentVolumeSpec_To_v1_PersistentVolumeSpec(in *api.PersistentVolumeSpec, out *v1.PersistentVolumeSpec, s conversion.Scope) error {
- return autoConvert_api_PersistentVolumeSpec_To_v1_PersistentVolumeSpec(in, out, s)
-}
-
-func autoConvert_v1_PersistentVolumeStatus_To_api_PersistentVolumeStatus(in *v1.PersistentVolumeStatus, out *api.PersistentVolumeStatus, s conversion.Scope) error {
- out.Phase = api.PersistentVolumePhase(in.Phase)
- out.Message = in.Message
- out.Reason = in.Reason
- return nil
-}
-
-// Convert_v1_PersistentVolumeStatus_To_api_PersistentVolumeStatus is an autogenerated conversion function.
-func Convert_v1_PersistentVolumeStatus_To_api_PersistentVolumeStatus(in *v1.PersistentVolumeStatus, out *api.PersistentVolumeStatus, s conversion.Scope) error {
- return autoConvert_v1_PersistentVolumeStatus_To_api_PersistentVolumeStatus(in, out, s)
-}
-
-func autoConvert_api_PersistentVolumeStatus_To_v1_PersistentVolumeStatus(in *api.PersistentVolumeStatus, out *v1.PersistentVolumeStatus, s conversion.Scope) error {
- out.Phase = v1.PersistentVolumePhase(in.Phase)
- out.Message = in.Message
- out.Reason = in.Reason
- return nil
-}
-
-// Convert_api_PersistentVolumeStatus_To_v1_PersistentVolumeStatus is an autogenerated conversion function.
-func Convert_api_PersistentVolumeStatus_To_v1_PersistentVolumeStatus(in *api.PersistentVolumeStatus, out *v1.PersistentVolumeStatus, s conversion.Scope) error {
- return autoConvert_api_PersistentVolumeStatus_To_v1_PersistentVolumeStatus(in, out, s)
-}
-
-func autoConvert_v1_PhotonPersistentDiskVolumeSource_To_api_PhotonPersistentDiskVolumeSource(in *v1.PhotonPersistentDiskVolumeSource, out *api.PhotonPersistentDiskVolumeSource, s conversion.Scope) error {
- out.PdID = in.PdID
- out.FSType = in.FSType
- return nil
-}
-
-// Convert_v1_PhotonPersistentDiskVolumeSource_To_api_PhotonPersistentDiskVolumeSource is an autogenerated conversion function.
-func Convert_v1_PhotonPersistentDiskVolumeSource_To_api_PhotonPersistentDiskVolumeSource(in *v1.PhotonPersistentDiskVolumeSource, out *api.PhotonPersistentDiskVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_PhotonPersistentDiskVolumeSource_To_api_PhotonPersistentDiskVolumeSource(in, out, s)
-}
-
-func autoConvert_api_PhotonPersistentDiskVolumeSource_To_v1_PhotonPersistentDiskVolumeSource(in *api.PhotonPersistentDiskVolumeSource, out *v1.PhotonPersistentDiskVolumeSource, s conversion.Scope) error {
- out.PdID = in.PdID
- out.FSType = in.FSType
- return nil
-}
-
-// Convert_api_PhotonPersistentDiskVolumeSource_To_v1_PhotonPersistentDiskVolumeSource is an autogenerated conversion function.
-func Convert_api_PhotonPersistentDiskVolumeSource_To_v1_PhotonPersistentDiskVolumeSource(in *api.PhotonPersistentDiskVolumeSource, out *v1.PhotonPersistentDiskVolumeSource, s conversion.Scope) error {
- return autoConvert_api_PhotonPersistentDiskVolumeSource_To_v1_PhotonPersistentDiskVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_Pod_To_api_Pod(in *v1.Pod, out *api.Pod, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- if err := Convert_v1_PodSpec_To_api_PodSpec(&in.Spec, &out.Spec, s); err != nil {
- return err
- }
- if err := Convert_v1_PodStatus_To_api_PodStatus(&in.Status, &out.Status, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_v1_Pod_To_api_Pod is an autogenerated conversion function.
-func Convert_v1_Pod_To_api_Pod(in *v1.Pod, out *api.Pod, s conversion.Scope) error {
- return autoConvert_v1_Pod_To_api_Pod(in, out, s)
-}
-
-func autoConvert_api_Pod_To_v1_Pod(in *api.Pod, out *v1.Pod, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- if err := Convert_api_PodSpec_To_v1_PodSpec(&in.Spec, &out.Spec, s); err != nil {
- return err
- }
- if err := Convert_api_PodStatus_To_v1_PodStatus(&in.Status, &out.Status, s); err != nil {
- return err
- }
- return nil
-}
-
-func autoConvert_v1_PodAffinity_To_api_PodAffinity(in *v1.PodAffinity, out *api.PodAffinity, s conversion.Scope) error {
- out.RequiredDuringSchedulingIgnoredDuringExecution = *(*[]api.PodAffinityTerm)(unsafe.Pointer(&in.RequiredDuringSchedulingIgnoredDuringExecution))
- out.PreferredDuringSchedulingIgnoredDuringExecution = *(*[]api.WeightedPodAffinityTerm)(unsafe.Pointer(&in.PreferredDuringSchedulingIgnoredDuringExecution))
- return nil
-}
-
-// Convert_v1_PodAffinity_To_api_PodAffinity is an autogenerated conversion function.
-func Convert_v1_PodAffinity_To_api_PodAffinity(in *v1.PodAffinity, out *api.PodAffinity, s conversion.Scope) error {
- return autoConvert_v1_PodAffinity_To_api_PodAffinity(in, out, s)
-}
-
-func autoConvert_api_PodAffinity_To_v1_PodAffinity(in *api.PodAffinity, out *v1.PodAffinity, s conversion.Scope) error {
- out.RequiredDuringSchedulingIgnoredDuringExecution = *(*[]v1.PodAffinityTerm)(unsafe.Pointer(&in.RequiredDuringSchedulingIgnoredDuringExecution))
- out.PreferredDuringSchedulingIgnoredDuringExecution = *(*[]v1.WeightedPodAffinityTerm)(unsafe.Pointer(&in.PreferredDuringSchedulingIgnoredDuringExecution))
- return nil
-}
-
-// Convert_api_PodAffinity_To_v1_PodAffinity is an autogenerated conversion function.
-func Convert_api_PodAffinity_To_v1_PodAffinity(in *api.PodAffinity, out *v1.PodAffinity, s conversion.Scope) error {
- return autoConvert_api_PodAffinity_To_v1_PodAffinity(in, out, s)
-}
-
-func autoConvert_v1_PodAffinityTerm_To_api_PodAffinityTerm(in *v1.PodAffinityTerm, out *api.PodAffinityTerm, s conversion.Scope) error {
- out.LabelSelector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.LabelSelector))
- out.Namespaces = *(*[]string)(unsafe.Pointer(&in.Namespaces))
- out.TopologyKey = in.TopologyKey
- return nil
-}
-
-// Convert_v1_PodAffinityTerm_To_api_PodAffinityTerm is an autogenerated conversion function.
-func Convert_v1_PodAffinityTerm_To_api_PodAffinityTerm(in *v1.PodAffinityTerm, out *api.PodAffinityTerm, s conversion.Scope) error {
- return autoConvert_v1_PodAffinityTerm_To_api_PodAffinityTerm(in, out, s)
-}
-
-func autoConvert_api_PodAffinityTerm_To_v1_PodAffinityTerm(in *api.PodAffinityTerm, out *v1.PodAffinityTerm, s conversion.Scope) error {
- out.LabelSelector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.LabelSelector))
- out.Namespaces = *(*[]string)(unsafe.Pointer(&in.Namespaces))
- out.TopologyKey = in.TopologyKey
- return nil
-}
-
-// Convert_api_PodAffinityTerm_To_v1_PodAffinityTerm is an autogenerated conversion function.
-func Convert_api_PodAffinityTerm_To_v1_PodAffinityTerm(in *api.PodAffinityTerm, out *v1.PodAffinityTerm, s conversion.Scope) error {
- return autoConvert_api_PodAffinityTerm_To_v1_PodAffinityTerm(in, out, s)
-}
-
-func autoConvert_v1_PodAntiAffinity_To_api_PodAntiAffinity(in *v1.PodAntiAffinity, out *api.PodAntiAffinity, s conversion.Scope) error {
- out.RequiredDuringSchedulingIgnoredDuringExecution = *(*[]api.PodAffinityTerm)(unsafe.Pointer(&in.RequiredDuringSchedulingIgnoredDuringExecution))
- out.PreferredDuringSchedulingIgnoredDuringExecution = *(*[]api.WeightedPodAffinityTerm)(unsafe.Pointer(&in.PreferredDuringSchedulingIgnoredDuringExecution))
- return nil
-}
-
-// Convert_v1_PodAntiAffinity_To_api_PodAntiAffinity is an autogenerated conversion function.
-func Convert_v1_PodAntiAffinity_To_api_PodAntiAffinity(in *v1.PodAntiAffinity, out *api.PodAntiAffinity, s conversion.Scope) error {
- return autoConvert_v1_PodAntiAffinity_To_api_PodAntiAffinity(in, out, s)
-}
-
-func autoConvert_api_PodAntiAffinity_To_v1_PodAntiAffinity(in *api.PodAntiAffinity, out *v1.PodAntiAffinity, s conversion.Scope) error {
- out.RequiredDuringSchedulingIgnoredDuringExecution = *(*[]v1.PodAffinityTerm)(unsafe.Pointer(&in.RequiredDuringSchedulingIgnoredDuringExecution))
- out.PreferredDuringSchedulingIgnoredDuringExecution = *(*[]v1.WeightedPodAffinityTerm)(unsafe.Pointer(&in.PreferredDuringSchedulingIgnoredDuringExecution))
- return nil
-}
-
-// Convert_api_PodAntiAffinity_To_v1_PodAntiAffinity is an autogenerated conversion function.
-func Convert_api_PodAntiAffinity_To_v1_PodAntiAffinity(in *api.PodAntiAffinity, out *v1.PodAntiAffinity, s conversion.Scope) error {
- return autoConvert_api_PodAntiAffinity_To_v1_PodAntiAffinity(in, out, s)
-}
-
-func autoConvert_v1_PodAttachOptions_To_api_PodAttachOptions(in *v1.PodAttachOptions, out *api.PodAttachOptions, s conversion.Scope) error {
- out.Stdin = in.Stdin
- out.Stdout = in.Stdout
- out.Stderr = in.Stderr
- out.TTY = in.TTY
- out.Container = in.Container
- return nil
-}
-
-// Convert_v1_PodAttachOptions_To_api_PodAttachOptions is an autogenerated conversion function.
-func Convert_v1_PodAttachOptions_To_api_PodAttachOptions(in *v1.PodAttachOptions, out *api.PodAttachOptions, s conversion.Scope) error {
- return autoConvert_v1_PodAttachOptions_To_api_PodAttachOptions(in, out, s)
-}
-
-func autoConvert_api_PodAttachOptions_To_v1_PodAttachOptions(in *api.PodAttachOptions, out *v1.PodAttachOptions, s conversion.Scope) error {
- out.Stdin = in.Stdin
- out.Stdout = in.Stdout
- out.Stderr = in.Stderr
- out.TTY = in.TTY
- out.Container = in.Container
- return nil
-}
-
-// Convert_api_PodAttachOptions_To_v1_PodAttachOptions is an autogenerated conversion function.
-func Convert_api_PodAttachOptions_To_v1_PodAttachOptions(in *api.PodAttachOptions, out *v1.PodAttachOptions, s conversion.Scope) error {
- return autoConvert_api_PodAttachOptions_To_v1_PodAttachOptions(in, out, s)
-}
-
-func autoConvert_v1_PodCondition_To_api_PodCondition(in *v1.PodCondition, out *api.PodCondition, s conversion.Scope) error {
- out.Type = api.PodConditionType(in.Type)
- out.Status = api.ConditionStatus(in.Status)
- out.LastProbeTime = in.LastProbeTime
- out.LastTransitionTime = in.LastTransitionTime
- out.Reason = in.Reason
- out.Message = in.Message
- return nil
-}
-
-// Convert_v1_PodCondition_To_api_PodCondition is an autogenerated conversion function.
-func Convert_v1_PodCondition_To_api_PodCondition(in *v1.PodCondition, out *api.PodCondition, s conversion.Scope) error {
- return autoConvert_v1_PodCondition_To_api_PodCondition(in, out, s)
-}
-
-func autoConvert_api_PodCondition_To_v1_PodCondition(in *api.PodCondition, out *v1.PodCondition, s conversion.Scope) error {
- out.Type = v1.PodConditionType(in.Type)
- out.Status = v1.ConditionStatus(in.Status)
- out.LastProbeTime = in.LastProbeTime
- out.LastTransitionTime = in.LastTransitionTime
- out.Reason = in.Reason
- out.Message = in.Message
- return nil
-}
-
-// Convert_api_PodCondition_To_v1_PodCondition is an autogenerated conversion function.
-func Convert_api_PodCondition_To_v1_PodCondition(in *api.PodCondition, out *v1.PodCondition, s conversion.Scope) error {
- return autoConvert_api_PodCondition_To_v1_PodCondition(in, out, s)
-}
-
-func autoConvert_v1_PodExecOptions_To_api_PodExecOptions(in *v1.PodExecOptions, out *api.PodExecOptions, s conversion.Scope) error {
- out.Stdin = in.Stdin
- out.Stdout = in.Stdout
- out.Stderr = in.Stderr
- out.TTY = in.TTY
- out.Container = in.Container
- out.Command = *(*[]string)(unsafe.Pointer(&in.Command))
- return nil
-}
-
-// Convert_v1_PodExecOptions_To_api_PodExecOptions is an autogenerated conversion function.
-func Convert_v1_PodExecOptions_To_api_PodExecOptions(in *v1.PodExecOptions, out *api.PodExecOptions, s conversion.Scope) error {
- return autoConvert_v1_PodExecOptions_To_api_PodExecOptions(in, out, s)
-}
-
-func autoConvert_api_PodExecOptions_To_v1_PodExecOptions(in *api.PodExecOptions, out *v1.PodExecOptions, s conversion.Scope) error {
- out.Stdin = in.Stdin
- out.Stdout = in.Stdout
- out.Stderr = in.Stderr
- out.TTY = in.TTY
- out.Container = in.Container
- out.Command = *(*[]string)(unsafe.Pointer(&in.Command))
- return nil
-}
-
-// Convert_api_PodExecOptions_To_v1_PodExecOptions is an autogenerated conversion function.
-func Convert_api_PodExecOptions_To_v1_PodExecOptions(in *api.PodExecOptions, out *v1.PodExecOptions, s conversion.Scope) error {
- return autoConvert_api_PodExecOptions_To_v1_PodExecOptions(in, out, s)
-}
-
-func autoConvert_v1_PodList_To_api_PodList(in *v1.PodList, out *api.PodList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- if in.Items != nil {
- in, out := &in.Items, &out.Items
- *out = make([]api.Pod, len(*in))
- for i := range *in {
- if err := Convert_v1_Pod_To_api_Pod(&(*in)[i], &(*out)[i], s); err != nil {
- return err
- }
- }
- } else {
- out.Items = nil
- }
- return nil
-}
-
-// Convert_v1_PodList_To_api_PodList is an autogenerated conversion function.
-func Convert_v1_PodList_To_api_PodList(in *v1.PodList, out *api.PodList, s conversion.Scope) error {
- return autoConvert_v1_PodList_To_api_PodList(in, out, s)
-}
-
-func autoConvert_api_PodList_To_v1_PodList(in *api.PodList, out *v1.PodList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- if in.Items != nil {
- in, out := &in.Items, &out.Items
- *out = make([]v1.Pod, len(*in))
- for i := range *in {
- if err := Convert_api_Pod_To_v1_Pod(&(*in)[i], &(*out)[i], s); err != nil {
- return err
- }
- }
- } else {
- out.Items = nil
- }
- return nil
-}
-
-// Convert_api_PodList_To_v1_PodList is an autogenerated conversion function.
-func Convert_api_PodList_To_v1_PodList(in *api.PodList, out *v1.PodList, s conversion.Scope) error {
- return autoConvert_api_PodList_To_v1_PodList(in, out, s)
-}
-
-func autoConvert_v1_PodLogOptions_To_api_PodLogOptions(in *v1.PodLogOptions, out *api.PodLogOptions, s conversion.Scope) error {
- out.Container = in.Container
- out.Follow = in.Follow
- out.Previous = in.Previous
- out.SinceSeconds = (*int64)(unsafe.Pointer(in.SinceSeconds))
- out.SinceTime = (*meta_v1.Time)(unsafe.Pointer(in.SinceTime))
- out.Timestamps = in.Timestamps
- out.TailLines = (*int64)(unsafe.Pointer(in.TailLines))
- out.LimitBytes = (*int64)(unsafe.Pointer(in.LimitBytes))
- return nil
-}
-
-// Convert_v1_PodLogOptions_To_api_PodLogOptions is an autogenerated conversion function.
-func Convert_v1_PodLogOptions_To_api_PodLogOptions(in *v1.PodLogOptions, out *api.PodLogOptions, s conversion.Scope) error {
- return autoConvert_v1_PodLogOptions_To_api_PodLogOptions(in, out, s)
-}
-
-func autoConvert_api_PodLogOptions_To_v1_PodLogOptions(in *api.PodLogOptions, out *v1.PodLogOptions, s conversion.Scope) error {
- out.Container = in.Container
- out.Follow = in.Follow
- out.Previous = in.Previous
- out.SinceSeconds = (*int64)(unsafe.Pointer(in.SinceSeconds))
- out.SinceTime = (*meta_v1.Time)(unsafe.Pointer(in.SinceTime))
- out.Timestamps = in.Timestamps
- out.TailLines = (*int64)(unsafe.Pointer(in.TailLines))
- out.LimitBytes = (*int64)(unsafe.Pointer(in.LimitBytes))
- return nil
-}
-
-// Convert_api_PodLogOptions_To_v1_PodLogOptions is an autogenerated conversion function.
-func Convert_api_PodLogOptions_To_v1_PodLogOptions(in *api.PodLogOptions, out *v1.PodLogOptions, s conversion.Scope) error {
- return autoConvert_api_PodLogOptions_To_v1_PodLogOptions(in, out, s)
-}
-
-func autoConvert_v1_PodPortForwardOptions_To_api_PodPortForwardOptions(in *v1.PodPortForwardOptions, out *api.PodPortForwardOptions, s conversion.Scope) error {
- out.Ports = *(*[]int32)(unsafe.Pointer(&in.Ports))
- return nil
-}
-
-// Convert_v1_PodPortForwardOptions_To_api_PodPortForwardOptions is an autogenerated conversion function.
-func Convert_v1_PodPortForwardOptions_To_api_PodPortForwardOptions(in *v1.PodPortForwardOptions, out *api.PodPortForwardOptions, s conversion.Scope) error {
- return autoConvert_v1_PodPortForwardOptions_To_api_PodPortForwardOptions(in, out, s)
-}
-
-func autoConvert_api_PodPortForwardOptions_To_v1_PodPortForwardOptions(in *api.PodPortForwardOptions, out *v1.PodPortForwardOptions, s conversion.Scope) error {
- out.Ports = *(*[]int32)(unsafe.Pointer(&in.Ports))
- return nil
-}
-
-// Convert_api_PodPortForwardOptions_To_v1_PodPortForwardOptions is an autogenerated conversion function.
-func Convert_api_PodPortForwardOptions_To_v1_PodPortForwardOptions(in *api.PodPortForwardOptions, out *v1.PodPortForwardOptions, s conversion.Scope) error {
- return autoConvert_api_PodPortForwardOptions_To_v1_PodPortForwardOptions(in, out, s)
-}
-
-func autoConvert_v1_PodProxyOptions_To_api_PodProxyOptions(in *v1.PodProxyOptions, out *api.PodProxyOptions, s conversion.Scope) error {
- out.Path = in.Path
- return nil
-}
-
-// Convert_v1_PodProxyOptions_To_api_PodProxyOptions is an autogenerated conversion function.
-func Convert_v1_PodProxyOptions_To_api_PodProxyOptions(in *v1.PodProxyOptions, out *api.PodProxyOptions, s conversion.Scope) error {
- return autoConvert_v1_PodProxyOptions_To_api_PodProxyOptions(in, out, s)
-}
-
-func autoConvert_api_PodProxyOptions_To_v1_PodProxyOptions(in *api.PodProxyOptions, out *v1.PodProxyOptions, s conversion.Scope) error {
- out.Path = in.Path
- return nil
-}
-
-// Convert_api_PodProxyOptions_To_v1_PodProxyOptions is an autogenerated conversion function.
-func Convert_api_PodProxyOptions_To_v1_PodProxyOptions(in *api.PodProxyOptions, out *v1.PodProxyOptions, s conversion.Scope) error {
- return autoConvert_api_PodProxyOptions_To_v1_PodProxyOptions(in, out, s)
-}
-
-func autoConvert_v1_PodSecurityContext_To_api_PodSecurityContext(in *v1.PodSecurityContext, out *api.PodSecurityContext, s conversion.Scope) error {
- out.SELinuxOptions = (*api.SELinuxOptions)(unsafe.Pointer(in.SELinuxOptions))
- out.RunAsUser = (*int64)(unsafe.Pointer(in.RunAsUser))
- out.RunAsNonRoot = (*bool)(unsafe.Pointer(in.RunAsNonRoot))
- out.SupplementalGroups = *(*[]int64)(unsafe.Pointer(&in.SupplementalGroups))
- out.FSGroup = (*int64)(unsafe.Pointer(in.FSGroup))
- return nil
-}
-
-func autoConvert_api_PodSecurityContext_To_v1_PodSecurityContext(in *api.PodSecurityContext, out *v1.PodSecurityContext, s conversion.Scope) error {
- // INFO: in.HostNetwork opted out of conversion generation
- // INFO: in.HostPID opted out of conversion generation
- // INFO: in.HostIPC opted out of conversion generation
- out.SELinuxOptions = (*v1.SELinuxOptions)(unsafe.Pointer(in.SELinuxOptions))
- out.RunAsUser = (*int64)(unsafe.Pointer(in.RunAsUser))
- out.RunAsNonRoot = (*bool)(unsafe.Pointer(in.RunAsNonRoot))
- out.SupplementalGroups = *(*[]int64)(unsafe.Pointer(&in.SupplementalGroups))
- out.FSGroup = (*int64)(unsafe.Pointer(in.FSGroup))
- return nil
-}
-
-func autoConvert_v1_PodSignature_To_api_PodSignature(in *v1.PodSignature, out *api.PodSignature, s conversion.Scope) error {
- out.PodController = (*meta_v1.OwnerReference)(unsafe.Pointer(in.PodController))
- return nil
-}
-
-// Convert_v1_PodSignature_To_api_PodSignature is an autogenerated conversion function.
-func Convert_v1_PodSignature_To_api_PodSignature(in *v1.PodSignature, out *api.PodSignature, s conversion.Scope) error {
- return autoConvert_v1_PodSignature_To_api_PodSignature(in, out, s)
-}
-
-func autoConvert_api_PodSignature_To_v1_PodSignature(in *api.PodSignature, out *v1.PodSignature, s conversion.Scope) error {
- out.PodController = (*meta_v1.OwnerReference)(unsafe.Pointer(in.PodController))
- return nil
-}
-
-// Convert_api_PodSignature_To_v1_PodSignature is an autogenerated conversion function.
-func Convert_api_PodSignature_To_v1_PodSignature(in *api.PodSignature, out *v1.PodSignature, s conversion.Scope) error {
- return autoConvert_api_PodSignature_To_v1_PodSignature(in, out, s)
-}
-
-func autoConvert_v1_PodSpec_To_api_PodSpec(in *v1.PodSpec, out *api.PodSpec, s conversion.Scope) error {
- if in.Volumes != nil {
- in, out := &in.Volumes, &out.Volumes
- *out = make([]api.Volume, len(*in))
- for i := range *in {
- if err := Convert_v1_Volume_To_api_Volume(&(*in)[i], &(*out)[i], s); err != nil {
- return err
- }
- }
- } else {
- out.Volumes = nil
- }
- if in.InitContainers != nil {
- in, out := &in.InitContainers, &out.InitContainers
- *out = make([]api.Container, len(*in))
- for i := range *in {
- if err := Convert_v1_Container_To_api_Container(&(*in)[i], &(*out)[i], s); err != nil {
- return err
- }
- }
- } else {
- out.InitContainers = nil
- }
- if in.Containers != nil {
- in, out := &in.Containers, &out.Containers
- *out = make([]api.Container, len(*in))
- for i := range *in {
- if err := Convert_v1_Container_To_api_Container(&(*in)[i], &(*out)[i], s); err != nil {
- return err
- }
- }
- } else {
- out.Containers = nil
- }
- out.RestartPolicy = api.RestartPolicy(in.RestartPolicy)
- out.TerminationGracePeriodSeconds = (*int64)(unsafe.Pointer(in.TerminationGracePeriodSeconds))
- out.ActiveDeadlineSeconds = (*int64)(unsafe.Pointer(in.ActiveDeadlineSeconds))
- out.DNSPolicy = api.DNSPolicy(in.DNSPolicy)
- out.NodeSelector = *(*map[string]string)(unsafe.Pointer(&in.NodeSelector))
- out.ServiceAccountName = in.ServiceAccountName
- // INFO: in.DeprecatedServiceAccount opted out of conversion generation
- out.AutomountServiceAccountToken = (*bool)(unsafe.Pointer(in.AutomountServiceAccountToken))
- out.NodeName = in.NodeName
- // INFO: in.HostNetwork opted out of conversion generation
- // INFO: in.HostPID opted out of conversion generation
- // INFO: in.HostIPC opted out of conversion generation
- if in.SecurityContext != nil {
- in, out := &in.SecurityContext, &out.SecurityContext
- *out = new(api.PodSecurityContext)
- if err := Convert_v1_PodSecurityContext_To_api_PodSecurityContext(*in, *out, s); err != nil {
- return err
- }
- } else {
- out.SecurityContext = nil
- }
- out.ImagePullSecrets = *(*[]api.LocalObjectReference)(unsafe.Pointer(&in.ImagePullSecrets))
- out.Hostname = in.Hostname
- out.Subdomain = in.Subdomain
- out.Affinity = (*api.Affinity)(unsafe.Pointer(in.Affinity))
- out.SchedulerName = in.SchedulerName
- out.Tolerations = *(*[]api.Toleration)(unsafe.Pointer(&in.Tolerations))
- out.HostAliases = *(*[]api.HostAlias)(unsafe.Pointer(&in.HostAliases))
- out.PriorityClassName = in.PriorityClassName
- out.Priority = (*int32)(unsafe.Pointer(in.Priority))
- return nil
-}
-
-func autoConvert_api_PodSpec_To_v1_PodSpec(in *api.PodSpec, out *v1.PodSpec, s conversion.Scope) error {
- if in.Volumes != nil {
- in, out := &in.Volumes, &out.Volumes
- *out = make([]v1.Volume, len(*in))
- for i := range *in {
- if err := Convert_api_Volume_To_v1_Volume(&(*in)[i], &(*out)[i], s); err != nil {
- return err
- }
- }
- } else {
- out.Volumes = nil
- }
- if in.InitContainers != nil {
- in, out := &in.InitContainers, &out.InitContainers
- *out = make([]v1.Container, len(*in))
- for i := range *in {
- if err := Convert_api_Container_To_v1_Container(&(*in)[i], &(*out)[i], s); err != nil {
- return err
- }
- }
- } else {
- out.InitContainers = nil
- }
- if in.Containers != nil {
- in, out := &in.Containers, &out.Containers
- *out = make([]v1.Container, len(*in))
- for i := range *in {
- if err := Convert_api_Container_To_v1_Container(&(*in)[i], &(*out)[i], s); err != nil {
- return err
- }
- }
- } else {
- out.Containers = nil
- }
- out.RestartPolicy = v1.RestartPolicy(in.RestartPolicy)
- out.TerminationGracePeriodSeconds = (*int64)(unsafe.Pointer(in.TerminationGracePeriodSeconds))
- out.ActiveDeadlineSeconds = (*int64)(unsafe.Pointer(in.ActiveDeadlineSeconds))
- out.DNSPolicy = v1.DNSPolicy(in.DNSPolicy)
- out.NodeSelector = *(*map[string]string)(unsafe.Pointer(&in.NodeSelector))
- out.ServiceAccountName = in.ServiceAccountName
- out.AutomountServiceAccountToken = (*bool)(unsafe.Pointer(in.AutomountServiceAccountToken))
- out.NodeName = in.NodeName
- if in.SecurityContext != nil {
- in, out := &in.SecurityContext, &out.SecurityContext
- *out = new(v1.PodSecurityContext)
- if err := Convert_api_PodSecurityContext_To_v1_PodSecurityContext(*in, *out, s); err != nil {
- return err
- }
- } else {
- out.SecurityContext = nil
- }
- out.ImagePullSecrets = *(*[]v1.LocalObjectReference)(unsafe.Pointer(&in.ImagePullSecrets))
- out.Hostname = in.Hostname
- out.Subdomain = in.Subdomain
- out.Affinity = (*v1.Affinity)(unsafe.Pointer(in.Affinity))
- out.SchedulerName = in.SchedulerName
- out.Tolerations = *(*[]v1.Toleration)(unsafe.Pointer(&in.Tolerations))
- out.HostAliases = *(*[]v1.HostAlias)(unsafe.Pointer(&in.HostAliases))
- out.PriorityClassName = in.PriorityClassName
- out.Priority = (*int32)(unsafe.Pointer(in.Priority))
- return nil
-}
-
-func autoConvert_v1_PodStatus_To_api_PodStatus(in *v1.PodStatus, out *api.PodStatus, s conversion.Scope) error {
- out.Phase = api.PodPhase(in.Phase)
- out.Conditions = *(*[]api.PodCondition)(unsafe.Pointer(&in.Conditions))
- out.Message = in.Message
- out.Reason = in.Reason
- out.HostIP = in.HostIP
- out.PodIP = in.PodIP
- out.StartTime = (*meta_v1.Time)(unsafe.Pointer(in.StartTime))
- out.InitContainerStatuses = *(*[]api.ContainerStatus)(unsafe.Pointer(&in.InitContainerStatuses))
- out.ContainerStatuses = *(*[]api.ContainerStatus)(unsafe.Pointer(&in.ContainerStatuses))
- out.QOSClass = api.PodQOSClass(in.QOSClass)
- return nil
-}
-
-// Convert_v1_PodStatus_To_api_PodStatus is an autogenerated conversion function.
-func Convert_v1_PodStatus_To_api_PodStatus(in *v1.PodStatus, out *api.PodStatus, s conversion.Scope) error {
- return autoConvert_v1_PodStatus_To_api_PodStatus(in, out, s)
-}
-
-func autoConvert_api_PodStatus_To_v1_PodStatus(in *api.PodStatus, out *v1.PodStatus, s conversion.Scope) error {
- out.Phase = v1.PodPhase(in.Phase)
- out.Conditions = *(*[]v1.PodCondition)(unsafe.Pointer(&in.Conditions))
- out.Message = in.Message
- out.Reason = in.Reason
- out.HostIP = in.HostIP
- out.PodIP = in.PodIP
- out.StartTime = (*meta_v1.Time)(unsafe.Pointer(in.StartTime))
- out.QOSClass = v1.PodQOSClass(in.QOSClass)
- out.InitContainerStatuses = *(*[]v1.ContainerStatus)(unsafe.Pointer(&in.InitContainerStatuses))
- out.ContainerStatuses = *(*[]v1.ContainerStatus)(unsafe.Pointer(&in.ContainerStatuses))
- return nil
-}
-
-// Convert_api_PodStatus_To_v1_PodStatus is an autogenerated conversion function.
-func Convert_api_PodStatus_To_v1_PodStatus(in *api.PodStatus, out *v1.PodStatus, s conversion.Scope) error {
- return autoConvert_api_PodStatus_To_v1_PodStatus(in, out, s)
-}
-
-func autoConvert_v1_PodStatusResult_To_api_PodStatusResult(in *v1.PodStatusResult, out *api.PodStatusResult, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- if err := Convert_v1_PodStatus_To_api_PodStatus(&in.Status, &out.Status, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_v1_PodStatusResult_To_api_PodStatusResult is an autogenerated conversion function.
-func Convert_v1_PodStatusResult_To_api_PodStatusResult(in *v1.PodStatusResult, out *api.PodStatusResult, s conversion.Scope) error {
- return autoConvert_v1_PodStatusResult_To_api_PodStatusResult(in, out, s)
-}
-
-func autoConvert_api_PodStatusResult_To_v1_PodStatusResult(in *api.PodStatusResult, out *v1.PodStatusResult, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- if err := Convert_api_PodStatus_To_v1_PodStatus(&in.Status, &out.Status, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_api_PodStatusResult_To_v1_PodStatusResult is an autogenerated conversion function.
-func Convert_api_PodStatusResult_To_v1_PodStatusResult(in *api.PodStatusResult, out *v1.PodStatusResult, s conversion.Scope) error {
- return autoConvert_api_PodStatusResult_To_v1_PodStatusResult(in, out, s)
-}
-
-func autoConvert_v1_PodTemplate_To_api_PodTemplate(in *v1.PodTemplate, out *api.PodTemplate, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- if err := Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_v1_PodTemplate_To_api_PodTemplate is an autogenerated conversion function.
-func Convert_v1_PodTemplate_To_api_PodTemplate(in *v1.PodTemplate, out *api.PodTemplate, s conversion.Scope) error {
- return autoConvert_v1_PodTemplate_To_api_PodTemplate(in, out, s)
-}
-
-func autoConvert_api_PodTemplate_To_v1_PodTemplate(in *api.PodTemplate, out *v1.PodTemplate, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- if err := Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_api_PodTemplate_To_v1_PodTemplate is an autogenerated conversion function.
-func Convert_api_PodTemplate_To_v1_PodTemplate(in *api.PodTemplate, out *v1.PodTemplate, s conversion.Scope) error {
- return autoConvert_api_PodTemplate_To_v1_PodTemplate(in, out, s)
-}
-
-func autoConvert_v1_PodTemplateList_To_api_PodTemplateList(in *v1.PodTemplateList, out *api.PodTemplateList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- if in.Items != nil {
- in, out := &in.Items, &out.Items
- *out = make([]api.PodTemplate, len(*in))
- for i := range *in {
- if err := Convert_v1_PodTemplate_To_api_PodTemplate(&(*in)[i], &(*out)[i], s); err != nil {
- return err
- }
- }
- } else {
- out.Items = nil
- }
- return nil
-}
-
-// Convert_v1_PodTemplateList_To_api_PodTemplateList is an autogenerated conversion function.
-func Convert_v1_PodTemplateList_To_api_PodTemplateList(in *v1.PodTemplateList, out *api.PodTemplateList, s conversion.Scope) error {
- return autoConvert_v1_PodTemplateList_To_api_PodTemplateList(in, out, s)
-}
-
-func autoConvert_api_PodTemplateList_To_v1_PodTemplateList(in *api.PodTemplateList, out *v1.PodTemplateList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- if in.Items != nil {
- in, out := &in.Items, &out.Items
- *out = make([]v1.PodTemplate, len(*in))
- for i := range *in {
- if err := Convert_api_PodTemplate_To_v1_PodTemplate(&(*in)[i], &(*out)[i], s); err != nil {
- return err
- }
- }
- } else {
- out.Items = nil
- }
- return nil
-}
-
-// Convert_api_PodTemplateList_To_v1_PodTemplateList is an autogenerated conversion function.
-func Convert_api_PodTemplateList_To_v1_PodTemplateList(in *api.PodTemplateList, out *v1.PodTemplateList, s conversion.Scope) error {
- return autoConvert_api_PodTemplateList_To_v1_PodTemplateList(in, out, s)
-}
-
-func autoConvert_v1_PodTemplateSpec_To_api_PodTemplateSpec(in *v1.PodTemplateSpec, out *api.PodTemplateSpec, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- if err := Convert_v1_PodSpec_To_api_PodSpec(&in.Spec, &out.Spec, s); err != nil {
- return err
- }
- return nil
-}
-
-func autoConvert_api_PodTemplateSpec_To_v1_PodTemplateSpec(in *api.PodTemplateSpec, out *v1.PodTemplateSpec, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- if err := Convert_api_PodSpec_To_v1_PodSpec(&in.Spec, &out.Spec, s); err != nil {
- return err
- }
- return nil
-}
-
-func autoConvert_v1_PortworxVolumeSource_To_api_PortworxVolumeSource(in *v1.PortworxVolumeSource, out *api.PortworxVolumeSource, s conversion.Scope) error {
- out.VolumeID = in.VolumeID
- out.FSType = in.FSType
- out.ReadOnly = in.ReadOnly
- return nil
-}
-
-// Convert_v1_PortworxVolumeSource_To_api_PortworxVolumeSource is an autogenerated conversion function.
-func Convert_v1_PortworxVolumeSource_To_api_PortworxVolumeSource(in *v1.PortworxVolumeSource, out *api.PortworxVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_PortworxVolumeSource_To_api_PortworxVolumeSource(in, out, s)
-}
-
-func autoConvert_api_PortworxVolumeSource_To_v1_PortworxVolumeSource(in *api.PortworxVolumeSource, out *v1.PortworxVolumeSource, s conversion.Scope) error {
- out.VolumeID = in.VolumeID
- out.FSType = in.FSType
- out.ReadOnly = in.ReadOnly
- return nil
-}
-
-// Convert_api_PortworxVolumeSource_To_v1_PortworxVolumeSource is an autogenerated conversion function.
-func Convert_api_PortworxVolumeSource_To_v1_PortworxVolumeSource(in *api.PortworxVolumeSource, out *v1.PortworxVolumeSource, s conversion.Scope) error {
- return autoConvert_api_PortworxVolumeSource_To_v1_PortworxVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_Preconditions_To_api_Preconditions(in *v1.Preconditions, out *api.Preconditions, s conversion.Scope) error {
- out.UID = (*types.UID)(unsafe.Pointer(in.UID))
- return nil
-}
-
-// Convert_v1_Preconditions_To_api_Preconditions is an autogenerated conversion function.
-func Convert_v1_Preconditions_To_api_Preconditions(in *v1.Preconditions, out *api.Preconditions, s conversion.Scope) error {
- return autoConvert_v1_Preconditions_To_api_Preconditions(in, out, s)
-}
-
-func autoConvert_api_Preconditions_To_v1_Preconditions(in *api.Preconditions, out *v1.Preconditions, s conversion.Scope) error {
- out.UID = (*types.UID)(unsafe.Pointer(in.UID))
- return nil
-}
-
-// Convert_api_Preconditions_To_v1_Preconditions is an autogenerated conversion function.
-func Convert_api_Preconditions_To_v1_Preconditions(in *api.Preconditions, out *v1.Preconditions, s conversion.Scope) error {
- return autoConvert_api_Preconditions_To_v1_Preconditions(in, out, s)
-}
-
-func autoConvert_v1_PreferAvoidPodsEntry_To_api_PreferAvoidPodsEntry(in *v1.PreferAvoidPodsEntry, out *api.PreferAvoidPodsEntry, s conversion.Scope) error {
- if err := Convert_v1_PodSignature_To_api_PodSignature(&in.PodSignature, &out.PodSignature, s); err != nil {
- return err
- }
- out.EvictionTime = in.EvictionTime
- out.Reason = in.Reason
- out.Message = in.Message
- return nil
-}
-
-// Convert_v1_PreferAvoidPodsEntry_To_api_PreferAvoidPodsEntry is an autogenerated conversion function.
-func Convert_v1_PreferAvoidPodsEntry_To_api_PreferAvoidPodsEntry(in *v1.PreferAvoidPodsEntry, out *api.PreferAvoidPodsEntry, s conversion.Scope) error {
- return autoConvert_v1_PreferAvoidPodsEntry_To_api_PreferAvoidPodsEntry(in, out, s)
-}
-
-func autoConvert_api_PreferAvoidPodsEntry_To_v1_PreferAvoidPodsEntry(in *api.PreferAvoidPodsEntry, out *v1.PreferAvoidPodsEntry, s conversion.Scope) error {
- if err := Convert_api_PodSignature_To_v1_PodSignature(&in.PodSignature, &out.PodSignature, s); err != nil {
- return err
- }
- out.EvictionTime = in.EvictionTime
- out.Reason = in.Reason
- out.Message = in.Message
- return nil
-}
-
-// Convert_api_PreferAvoidPodsEntry_To_v1_PreferAvoidPodsEntry is an autogenerated conversion function.
-func Convert_api_PreferAvoidPodsEntry_To_v1_PreferAvoidPodsEntry(in *api.PreferAvoidPodsEntry, out *v1.PreferAvoidPodsEntry, s conversion.Scope) error {
- return autoConvert_api_PreferAvoidPodsEntry_To_v1_PreferAvoidPodsEntry(in, out, s)
-}
-
-func autoConvert_v1_PreferredSchedulingTerm_To_api_PreferredSchedulingTerm(in *v1.PreferredSchedulingTerm, out *api.PreferredSchedulingTerm, s conversion.Scope) error {
- out.Weight = in.Weight
- if err := Convert_v1_NodeSelectorTerm_To_api_NodeSelectorTerm(&in.Preference, &out.Preference, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_v1_PreferredSchedulingTerm_To_api_PreferredSchedulingTerm is an autogenerated conversion function.
-func Convert_v1_PreferredSchedulingTerm_To_api_PreferredSchedulingTerm(in *v1.PreferredSchedulingTerm, out *api.PreferredSchedulingTerm, s conversion.Scope) error {
- return autoConvert_v1_PreferredSchedulingTerm_To_api_PreferredSchedulingTerm(in, out, s)
-}
-
-func autoConvert_api_PreferredSchedulingTerm_To_v1_PreferredSchedulingTerm(in *api.PreferredSchedulingTerm, out *v1.PreferredSchedulingTerm, s conversion.Scope) error {
- out.Weight = in.Weight
- if err := Convert_api_NodeSelectorTerm_To_v1_NodeSelectorTerm(&in.Preference, &out.Preference, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_api_PreferredSchedulingTerm_To_v1_PreferredSchedulingTerm is an autogenerated conversion function.
-func Convert_api_PreferredSchedulingTerm_To_v1_PreferredSchedulingTerm(in *api.PreferredSchedulingTerm, out *v1.PreferredSchedulingTerm, s conversion.Scope) error {
- return autoConvert_api_PreferredSchedulingTerm_To_v1_PreferredSchedulingTerm(in, out, s)
-}
-
-func autoConvert_v1_Probe_To_api_Probe(in *v1.Probe, out *api.Probe, s conversion.Scope) error {
- if err := Convert_v1_Handler_To_api_Handler(&in.Handler, &out.Handler, s); err != nil {
- return err
- }
- out.InitialDelaySeconds = in.InitialDelaySeconds
- out.TimeoutSeconds = in.TimeoutSeconds
- out.PeriodSeconds = in.PeriodSeconds
- out.SuccessThreshold = in.SuccessThreshold
- out.FailureThreshold = in.FailureThreshold
- return nil
-}
-
-// Convert_v1_Probe_To_api_Probe is an autogenerated conversion function.
-func Convert_v1_Probe_To_api_Probe(in *v1.Probe, out *api.Probe, s conversion.Scope) error {
- return autoConvert_v1_Probe_To_api_Probe(in, out, s)
-}
-
-func autoConvert_api_Probe_To_v1_Probe(in *api.Probe, out *v1.Probe, s conversion.Scope) error {
- if err := Convert_api_Handler_To_v1_Handler(&in.Handler, &out.Handler, s); err != nil {
- return err
- }
- out.InitialDelaySeconds = in.InitialDelaySeconds
- out.TimeoutSeconds = in.TimeoutSeconds
- out.PeriodSeconds = in.PeriodSeconds
- out.SuccessThreshold = in.SuccessThreshold
- out.FailureThreshold = in.FailureThreshold
- return nil
-}
-
-// Convert_api_Probe_To_v1_Probe is an autogenerated conversion function.
-func Convert_api_Probe_To_v1_Probe(in *api.Probe, out *v1.Probe, s conversion.Scope) error {
- return autoConvert_api_Probe_To_v1_Probe(in, out, s)
-}
-
-func autoConvert_v1_ProjectedVolumeSource_To_api_ProjectedVolumeSource(in *v1.ProjectedVolumeSource, out *api.ProjectedVolumeSource, s conversion.Scope) error {
- out.Sources = *(*[]api.VolumeProjection)(unsafe.Pointer(&in.Sources))
- out.DefaultMode = (*int32)(unsafe.Pointer(in.DefaultMode))
- return nil
-}
-
-// Convert_v1_ProjectedVolumeSource_To_api_ProjectedVolumeSource is an autogenerated conversion function.
-func Convert_v1_ProjectedVolumeSource_To_api_ProjectedVolumeSource(in *v1.ProjectedVolumeSource, out *api.ProjectedVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_ProjectedVolumeSource_To_api_ProjectedVolumeSource(in, out, s)
-}
-
-func autoConvert_api_ProjectedVolumeSource_To_v1_ProjectedVolumeSource(in *api.ProjectedVolumeSource, out *v1.ProjectedVolumeSource, s conversion.Scope) error {
- out.Sources = *(*[]v1.VolumeProjection)(unsafe.Pointer(&in.Sources))
- out.DefaultMode = (*int32)(unsafe.Pointer(in.DefaultMode))
- return nil
-}
-
-// Convert_api_ProjectedVolumeSource_To_v1_ProjectedVolumeSource is an autogenerated conversion function.
-func Convert_api_ProjectedVolumeSource_To_v1_ProjectedVolumeSource(in *api.ProjectedVolumeSource, out *v1.ProjectedVolumeSource, s conversion.Scope) error {
- return autoConvert_api_ProjectedVolumeSource_To_v1_ProjectedVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_QuobyteVolumeSource_To_api_QuobyteVolumeSource(in *v1.QuobyteVolumeSource, out *api.QuobyteVolumeSource, s conversion.Scope) error {
- out.Registry = in.Registry
- out.Volume = in.Volume
- out.ReadOnly = in.ReadOnly
- out.User = in.User
- out.Group = in.Group
- return nil
-}
-
-// Convert_v1_QuobyteVolumeSource_To_api_QuobyteVolumeSource is an autogenerated conversion function.
-func Convert_v1_QuobyteVolumeSource_To_api_QuobyteVolumeSource(in *v1.QuobyteVolumeSource, out *api.QuobyteVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_QuobyteVolumeSource_To_api_QuobyteVolumeSource(in, out, s)
-}
-
-func autoConvert_api_QuobyteVolumeSource_To_v1_QuobyteVolumeSource(in *api.QuobyteVolumeSource, out *v1.QuobyteVolumeSource, s conversion.Scope) error {
- out.Registry = in.Registry
- out.Volume = in.Volume
- out.ReadOnly = in.ReadOnly
- out.User = in.User
- out.Group = in.Group
- return nil
-}
-
-// Convert_api_QuobyteVolumeSource_To_v1_QuobyteVolumeSource is an autogenerated conversion function.
-func Convert_api_QuobyteVolumeSource_To_v1_QuobyteVolumeSource(in *api.QuobyteVolumeSource, out *v1.QuobyteVolumeSource, s conversion.Scope) error {
- return autoConvert_api_QuobyteVolumeSource_To_v1_QuobyteVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_RBDPersistentVolumeSource_To_api_RBDPersistentVolumeSource(in *v1.RBDPersistentVolumeSource, out *api.RBDPersistentVolumeSource, s conversion.Scope) error {
- out.CephMonitors = *(*[]string)(unsafe.Pointer(&in.CephMonitors))
- out.RBDImage = in.RBDImage
- out.FSType = in.FSType
- out.RBDPool = in.RBDPool
- out.RadosUser = in.RadosUser
- out.Keyring = in.Keyring
- out.SecretRef = (*api.SecretReference)(unsafe.Pointer(in.SecretRef))
- out.ReadOnly = in.ReadOnly
- return nil
-}
-
-// Convert_v1_RBDPersistentVolumeSource_To_api_RBDPersistentVolumeSource is an autogenerated conversion function.
-func Convert_v1_RBDPersistentVolumeSource_To_api_RBDPersistentVolumeSource(in *v1.RBDPersistentVolumeSource, out *api.RBDPersistentVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_RBDPersistentVolumeSource_To_api_RBDPersistentVolumeSource(in, out, s)
-}
-
-func autoConvert_api_RBDPersistentVolumeSource_To_v1_RBDPersistentVolumeSource(in *api.RBDPersistentVolumeSource, out *v1.RBDPersistentVolumeSource, s conversion.Scope) error {
- out.CephMonitors = *(*[]string)(unsafe.Pointer(&in.CephMonitors))
- out.RBDImage = in.RBDImage
- out.FSType = in.FSType
- out.RBDPool = in.RBDPool
- out.RadosUser = in.RadosUser
- out.Keyring = in.Keyring
- out.SecretRef = (*v1.SecretReference)(unsafe.Pointer(in.SecretRef))
- out.ReadOnly = in.ReadOnly
- return nil
-}
-
-// Convert_api_RBDPersistentVolumeSource_To_v1_RBDPersistentVolumeSource is an autogenerated conversion function.
-func Convert_api_RBDPersistentVolumeSource_To_v1_RBDPersistentVolumeSource(in *api.RBDPersistentVolumeSource, out *v1.RBDPersistentVolumeSource, s conversion.Scope) error {
- return autoConvert_api_RBDPersistentVolumeSource_To_v1_RBDPersistentVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_RBDVolumeSource_To_api_RBDVolumeSource(in *v1.RBDVolumeSource, out *api.RBDVolumeSource, s conversion.Scope) error {
- out.CephMonitors = *(*[]string)(unsafe.Pointer(&in.CephMonitors))
- out.RBDImage = in.RBDImage
- out.FSType = in.FSType
- out.RBDPool = in.RBDPool
- out.RadosUser = in.RadosUser
- out.Keyring = in.Keyring
- out.SecretRef = (*api.LocalObjectReference)(unsafe.Pointer(in.SecretRef))
- out.ReadOnly = in.ReadOnly
- return nil
-}
-
-// Convert_v1_RBDVolumeSource_To_api_RBDVolumeSource is an autogenerated conversion function.
-func Convert_v1_RBDVolumeSource_To_api_RBDVolumeSource(in *v1.RBDVolumeSource, out *api.RBDVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_RBDVolumeSource_To_api_RBDVolumeSource(in, out, s)
-}
-
-func autoConvert_api_RBDVolumeSource_To_v1_RBDVolumeSource(in *api.RBDVolumeSource, out *v1.RBDVolumeSource, s conversion.Scope) error {
- out.CephMonitors = *(*[]string)(unsafe.Pointer(&in.CephMonitors))
- out.RBDImage = in.RBDImage
- out.FSType = in.FSType
- out.RBDPool = in.RBDPool
- out.RadosUser = in.RadosUser
- out.Keyring = in.Keyring
- out.SecretRef = (*v1.LocalObjectReference)(unsafe.Pointer(in.SecretRef))
- out.ReadOnly = in.ReadOnly
- return nil
-}
-
-// Convert_api_RBDVolumeSource_To_v1_RBDVolumeSource is an autogenerated conversion function.
-func Convert_api_RBDVolumeSource_To_v1_RBDVolumeSource(in *api.RBDVolumeSource, out *v1.RBDVolumeSource, s conversion.Scope) error {
- return autoConvert_api_RBDVolumeSource_To_v1_RBDVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_RangeAllocation_To_api_RangeAllocation(in *v1.RangeAllocation, out *api.RangeAllocation, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- out.Range = in.Range
- out.Data = *(*[]byte)(unsafe.Pointer(&in.Data))
- return nil
-}
-
-// Convert_v1_RangeAllocation_To_api_RangeAllocation is an autogenerated conversion function.
-func Convert_v1_RangeAllocation_To_api_RangeAllocation(in *v1.RangeAllocation, out *api.RangeAllocation, s conversion.Scope) error {
- return autoConvert_v1_RangeAllocation_To_api_RangeAllocation(in, out, s)
-}
-
-func autoConvert_api_RangeAllocation_To_v1_RangeAllocation(in *api.RangeAllocation, out *v1.RangeAllocation, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- out.Range = in.Range
- out.Data = *(*[]byte)(unsafe.Pointer(&in.Data))
- return nil
-}
-
-// Convert_api_RangeAllocation_To_v1_RangeAllocation is an autogenerated conversion function.
-func Convert_api_RangeAllocation_To_v1_RangeAllocation(in *api.RangeAllocation, out *v1.RangeAllocation, s conversion.Scope) error {
- return autoConvert_api_RangeAllocation_To_v1_RangeAllocation(in, out, s)
-}
-
-func autoConvert_v1_ReplicationController_To_api_ReplicationController(in *v1.ReplicationController, out *api.ReplicationController, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- if err := Convert_v1_ReplicationControllerSpec_To_api_ReplicationControllerSpec(&in.Spec, &out.Spec, s); err != nil {
- return err
- }
- if err := Convert_v1_ReplicationControllerStatus_To_api_ReplicationControllerStatus(&in.Status, &out.Status, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_v1_ReplicationController_To_api_ReplicationController is an autogenerated conversion function.
-func Convert_v1_ReplicationController_To_api_ReplicationController(in *v1.ReplicationController, out *api.ReplicationController, s conversion.Scope) error {
- return autoConvert_v1_ReplicationController_To_api_ReplicationController(in, out, s)
-}
-
-func autoConvert_api_ReplicationController_To_v1_ReplicationController(in *api.ReplicationController, out *v1.ReplicationController, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- if err := Convert_api_ReplicationControllerSpec_To_v1_ReplicationControllerSpec(&in.Spec, &out.Spec, s); err != nil {
- return err
- }
- if err := Convert_api_ReplicationControllerStatus_To_v1_ReplicationControllerStatus(&in.Status, &out.Status, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_api_ReplicationController_To_v1_ReplicationController is an autogenerated conversion function.
-func Convert_api_ReplicationController_To_v1_ReplicationController(in *api.ReplicationController, out *v1.ReplicationController, s conversion.Scope) error {
- return autoConvert_api_ReplicationController_To_v1_ReplicationController(in, out, s)
-}
-
-func autoConvert_v1_ReplicationControllerCondition_To_api_ReplicationControllerCondition(in *v1.ReplicationControllerCondition, out *api.ReplicationControllerCondition, s conversion.Scope) error {
- out.Type = api.ReplicationControllerConditionType(in.Type)
- out.Status = api.ConditionStatus(in.Status)
- out.LastTransitionTime = in.LastTransitionTime
- out.Reason = in.Reason
- out.Message = in.Message
- return nil
-}
-
-// Convert_v1_ReplicationControllerCondition_To_api_ReplicationControllerCondition is an autogenerated conversion function.
-func Convert_v1_ReplicationControllerCondition_To_api_ReplicationControllerCondition(in *v1.ReplicationControllerCondition, out *api.ReplicationControllerCondition, s conversion.Scope) error {
- return autoConvert_v1_ReplicationControllerCondition_To_api_ReplicationControllerCondition(in, out, s)
-}
-
-func autoConvert_api_ReplicationControllerCondition_To_v1_ReplicationControllerCondition(in *api.ReplicationControllerCondition, out *v1.ReplicationControllerCondition, s conversion.Scope) error {
- out.Type = v1.ReplicationControllerConditionType(in.Type)
- out.Status = v1.ConditionStatus(in.Status)
- out.LastTransitionTime = in.LastTransitionTime
- out.Reason = in.Reason
- out.Message = in.Message
- return nil
-}
-
-// Convert_api_ReplicationControllerCondition_To_v1_ReplicationControllerCondition is an autogenerated conversion function.
-func Convert_api_ReplicationControllerCondition_To_v1_ReplicationControllerCondition(in *api.ReplicationControllerCondition, out *v1.ReplicationControllerCondition, s conversion.Scope) error {
- return autoConvert_api_ReplicationControllerCondition_To_v1_ReplicationControllerCondition(in, out, s)
-}
-
-func autoConvert_v1_ReplicationControllerList_To_api_ReplicationControllerList(in *v1.ReplicationControllerList, out *api.ReplicationControllerList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- if in.Items != nil {
- in, out := &in.Items, &out.Items
- *out = make([]api.ReplicationController, len(*in))
- for i := range *in {
- if err := Convert_v1_ReplicationController_To_api_ReplicationController(&(*in)[i], &(*out)[i], s); err != nil {
- return err
- }
- }
- } else {
- out.Items = nil
- }
- return nil
-}
-
-// Convert_v1_ReplicationControllerList_To_api_ReplicationControllerList is an autogenerated conversion function.
-func Convert_v1_ReplicationControllerList_To_api_ReplicationControllerList(in *v1.ReplicationControllerList, out *api.ReplicationControllerList, s conversion.Scope) error {
- return autoConvert_v1_ReplicationControllerList_To_api_ReplicationControllerList(in, out, s)
-}
-
-func autoConvert_api_ReplicationControllerList_To_v1_ReplicationControllerList(in *api.ReplicationControllerList, out *v1.ReplicationControllerList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- if in.Items != nil {
- in, out := &in.Items, &out.Items
- *out = make([]v1.ReplicationController, len(*in))
- for i := range *in {
- if err := Convert_api_ReplicationController_To_v1_ReplicationController(&(*in)[i], &(*out)[i], s); err != nil {
- return err
- }
- }
- } else {
- out.Items = nil
- }
- return nil
-}
-
-// Convert_api_ReplicationControllerList_To_v1_ReplicationControllerList is an autogenerated conversion function.
-func Convert_api_ReplicationControllerList_To_v1_ReplicationControllerList(in *api.ReplicationControllerList, out *v1.ReplicationControllerList, s conversion.Scope) error {
- return autoConvert_api_ReplicationControllerList_To_v1_ReplicationControllerList(in, out, s)
-}
-
-func autoConvert_v1_ReplicationControllerSpec_To_api_ReplicationControllerSpec(in *v1.ReplicationControllerSpec, out *api.ReplicationControllerSpec, s conversion.Scope) error {
- if err := meta_v1.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil {
- return err
- }
- out.MinReadySeconds = in.MinReadySeconds
- out.Selector = *(*map[string]string)(unsafe.Pointer(&in.Selector))
- if in.Template != nil {
- in, out := &in.Template, &out.Template
- *out = new(api.PodTemplateSpec)
- if err := Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(*in, *out, s); err != nil {
- return err
- }
- } else {
- out.Template = nil
- }
- return nil
-}
-
-func autoConvert_api_ReplicationControllerSpec_To_v1_ReplicationControllerSpec(in *api.ReplicationControllerSpec, out *v1.ReplicationControllerSpec, s conversion.Scope) error {
- if err := meta_v1.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil {
- return err
- }
- out.MinReadySeconds = in.MinReadySeconds
- out.Selector = *(*map[string]string)(unsafe.Pointer(&in.Selector))
- if in.Template != nil {
- in, out := &in.Template, &out.Template
- *out = new(v1.PodTemplateSpec)
- if err := Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(*in, *out, s); err != nil {
- return err
- }
- } else {
- out.Template = nil
- }
- return nil
-}
-
-func autoConvert_v1_ReplicationControllerStatus_To_api_ReplicationControllerStatus(in *v1.ReplicationControllerStatus, out *api.ReplicationControllerStatus, s conversion.Scope) error {
- out.Replicas = in.Replicas
- out.FullyLabeledReplicas = in.FullyLabeledReplicas
- out.ReadyReplicas = in.ReadyReplicas
- out.AvailableReplicas = in.AvailableReplicas
- out.ObservedGeneration = in.ObservedGeneration
- out.Conditions = *(*[]api.ReplicationControllerCondition)(unsafe.Pointer(&in.Conditions))
- return nil
-}
-
-// Convert_v1_ReplicationControllerStatus_To_api_ReplicationControllerStatus is an autogenerated conversion function.
-func Convert_v1_ReplicationControllerStatus_To_api_ReplicationControllerStatus(in *v1.ReplicationControllerStatus, out *api.ReplicationControllerStatus, s conversion.Scope) error {
- return autoConvert_v1_ReplicationControllerStatus_To_api_ReplicationControllerStatus(in, out, s)
-}
-
-func autoConvert_api_ReplicationControllerStatus_To_v1_ReplicationControllerStatus(in *api.ReplicationControllerStatus, out *v1.ReplicationControllerStatus, s conversion.Scope) error {
- out.Replicas = in.Replicas
- out.FullyLabeledReplicas = in.FullyLabeledReplicas
- out.ReadyReplicas = in.ReadyReplicas
- out.AvailableReplicas = in.AvailableReplicas
- out.ObservedGeneration = in.ObservedGeneration
- out.Conditions = *(*[]v1.ReplicationControllerCondition)(unsafe.Pointer(&in.Conditions))
- return nil
-}
-
-// Convert_api_ReplicationControllerStatus_To_v1_ReplicationControllerStatus is an autogenerated conversion function.
-func Convert_api_ReplicationControllerStatus_To_v1_ReplicationControllerStatus(in *api.ReplicationControllerStatus, out *v1.ReplicationControllerStatus, s conversion.Scope) error {
- return autoConvert_api_ReplicationControllerStatus_To_v1_ReplicationControllerStatus(in, out, s)
-}
-
-func autoConvert_v1_ResourceFieldSelector_To_api_ResourceFieldSelector(in *v1.ResourceFieldSelector, out *api.ResourceFieldSelector, s conversion.Scope) error {
- out.ContainerName = in.ContainerName
- out.Resource = in.Resource
- out.Divisor = in.Divisor
- return nil
-}
-
-// Convert_v1_ResourceFieldSelector_To_api_ResourceFieldSelector is an autogenerated conversion function.
-func Convert_v1_ResourceFieldSelector_To_api_ResourceFieldSelector(in *v1.ResourceFieldSelector, out *api.ResourceFieldSelector, s conversion.Scope) error {
- return autoConvert_v1_ResourceFieldSelector_To_api_ResourceFieldSelector(in, out, s)
-}
-
-func autoConvert_api_ResourceFieldSelector_To_v1_ResourceFieldSelector(in *api.ResourceFieldSelector, out *v1.ResourceFieldSelector, s conversion.Scope) error {
- out.ContainerName = in.ContainerName
- out.Resource = in.Resource
- out.Divisor = in.Divisor
- return nil
-}
-
-// Convert_api_ResourceFieldSelector_To_v1_ResourceFieldSelector is an autogenerated conversion function.
-func Convert_api_ResourceFieldSelector_To_v1_ResourceFieldSelector(in *api.ResourceFieldSelector, out *v1.ResourceFieldSelector, s conversion.Scope) error {
- return autoConvert_api_ResourceFieldSelector_To_v1_ResourceFieldSelector(in, out, s)
-}
-
-func autoConvert_v1_ResourceQuota_To_api_ResourceQuota(in *v1.ResourceQuota, out *api.ResourceQuota, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- if err := Convert_v1_ResourceQuotaSpec_To_api_ResourceQuotaSpec(&in.Spec, &out.Spec, s); err != nil {
- return err
- }
- if err := Convert_v1_ResourceQuotaStatus_To_api_ResourceQuotaStatus(&in.Status, &out.Status, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_v1_ResourceQuota_To_api_ResourceQuota is an autogenerated conversion function.
-func Convert_v1_ResourceQuota_To_api_ResourceQuota(in *v1.ResourceQuota, out *api.ResourceQuota, s conversion.Scope) error {
- return autoConvert_v1_ResourceQuota_To_api_ResourceQuota(in, out, s)
-}
-
-func autoConvert_api_ResourceQuota_To_v1_ResourceQuota(in *api.ResourceQuota, out *v1.ResourceQuota, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- if err := Convert_api_ResourceQuotaSpec_To_v1_ResourceQuotaSpec(&in.Spec, &out.Spec, s); err != nil {
- return err
- }
- if err := Convert_api_ResourceQuotaStatus_To_v1_ResourceQuotaStatus(&in.Status, &out.Status, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_api_ResourceQuota_To_v1_ResourceQuota is an autogenerated conversion function.
-func Convert_api_ResourceQuota_To_v1_ResourceQuota(in *api.ResourceQuota, out *v1.ResourceQuota, s conversion.Scope) error {
- return autoConvert_api_ResourceQuota_To_v1_ResourceQuota(in, out, s)
-}
-
-func autoConvert_v1_ResourceQuotaList_To_api_ResourceQuotaList(in *v1.ResourceQuotaList, out *api.ResourceQuotaList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- out.Items = *(*[]api.ResourceQuota)(unsafe.Pointer(&in.Items))
- return nil
-}
-
-// Convert_v1_ResourceQuotaList_To_api_ResourceQuotaList is an autogenerated conversion function.
-func Convert_v1_ResourceQuotaList_To_api_ResourceQuotaList(in *v1.ResourceQuotaList, out *api.ResourceQuotaList, s conversion.Scope) error {
- return autoConvert_v1_ResourceQuotaList_To_api_ResourceQuotaList(in, out, s)
-}
-
-func autoConvert_api_ResourceQuotaList_To_v1_ResourceQuotaList(in *api.ResourceQuotaList, out *v1.ResourceQuotaList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- out.Items = *(*[]v1.ResourceQuota)(unsafe.Pointer(&in.Items))
- return nil
-}
-
-// Convert_api_ResourceQuotaList_To_v1_ResourceQuotaList is an autogenerated conversion function.
-func Convert_api_ResourceQuotaList_To_v1_ResourceQuotaList(in *api.ResourceQuotaList, out *v1.ResourceQuotaList, s conversion.Scope) error {
- return autoConvert_api_ResourceQuotaList_To_v1_ResourceQuotaList(in, out, s)
-}
-
-func autoConvert_v1_ResourceQuotaSpec_To_api_ResourceQuotaSpec(in *v1.ResourceQuotaSpec, out *api.ResourceQuotaSpec, s conversion.Scope) error {
- out.Hard = *(*api.ResourceList)(unsafe.Pointer(&in.Hard))
- out.Scopes = *(*[]api.ResourceQuotaScope)(unsafe.Pointer(&in.Scopes))
- return nil
-}
-
-// Convert_v1_ResourceQuotaSpec_To_api_ResourceQuotaSpec is an autogenerated conversion function.
-func Convert_v1_ResourceQuotaSpec_To_api_ResourceQuotaSpec(in *v1.ResourceQuotaSpec, out *api.ResourceQuotaSpec, s conversion.Scope) error {
- return autoConvert_v1_ResourceQuotaSpec_To_api_ResourceQuotaSpec(in, out, s)
-}
-
-func autoConvert_api_ResourceQuotaSpec_To_v1_ResourceQuotaSpec(in *api.ResourceQuotaSpec, out *v1.ResourceQuotaSpec, s conversion.Scope) error {
- out.Hard = *(*v1.ResourceList)(unsafe.Pointer(&in.Hard))
- out.Scopes = *(*[]v1.ResourceQuotaScope)(unsafe.Pointer(&in.Scopes))
- return nil
-}
-
-// Convert_api_ResourceQuotaSpec_To_v1_ResourceQuotaSpec is an autogenerated conversion function.
-func Convert_api_ResourceQuotaSpec_To_v1_ResourceQuotaSpec(in *api.ResourceQuotaSpec, out *v1.ResourceQuotaSpec, s conversion.Scope) error {
- return autoConvert_api_ResourceQuotaSpec_To_v1_ResourceQuotaSpec(in, out, s)
-}
-
-func autoConvert_v1_ResourceQuotaStatus_To_api_ResourceQuotaStatus(in *v1.ResourceQuotaStatus, out *api.ResourceQuotaStatus, s conversion.Scope) error {
- out.Hard = *(*api.ResourceList)(unsafe.Pointer(&in.Hard))
- out.Used = *(*api.ResourceList)(unsafe.Pointer(&in.Used))
- return nil
-}
-
-// Convert_v1_ResourceQuotaStatus_To_api_ResourceQuotaStatus is an autogenerated conversion function.
-func Convert_v1_ResourceQuotaStatus_To_api_ResourceQuotaStatus(in *v1.ResourceQuotaStatus, out *api.ResourceQuotaStatus, s conversion.Scope) error {
- return autoConvert_v1_ResourceQuotaStatus_To_api_ResourceQuotaStatus(in, out, s)
-}
-
-func autoConvert_api_ResourceQuotaStatus_To_v1_ResourceQuotaStatus(in *api.ResourceQuotaStatus, out *v1.ResourceQuotaStatus, s conversion.Scope) error {
- out.Hard = *(*v1.ResourceList)(unsafe.Pointer(&in.Hard))
- out.Used = *(*v1.ResourceList)(unsafe.Pointer(&in.Used))
- return nil
-}
-
-// Convert_api_ResourceQuotaStatus_To_v1_ResourceQuotaStatus is an autogenerated conversion function.
-func Convert_api_ResourceQuotaStatus_To_v1_ResourceQuotaStatus(in *api.ResourceQuotaStatus, out *v1.ResourceQuotaStatus, s conversion.Scope) error {
- return autoConvert_api_ResourceQuotaStatus_To_v1_ResourceQuotaStatus(in, out, s)
-}
-
-func autoConvert_v1_ResourceRequirements_To_api_ResourceRequirements(in *v1.ResourceRequirements, out *api.ResourceRequirements, s conversion.Scope) error {
- out.Limits = *(*api.ResourceList)(unsafe.Pointer(&in.Limits))
- out.Requests = *(*api.ResourceList)(unsafe.Pointer(&in.Requests))
- return nil
-}
-
-// Convert_v1_ResourceRequirements_To_api_ResourceRequirements is an autogenerated conversion function.
-func Convert_v1_ResourceRequirements_To_api_ResourceRequirements(in *v1.ResourceRequirements, out *api.ResourceRequirements, s conversion.Scope) error {
- return autoConvert_v1_ResourceRequirements_To_api_ResourceRequirements(in, out, s)
-}
-
-func autoConvert_api_ResourceRequirements_To_v1_ResourceRequirements(in *api.ResourceRequirements, out *v1.ResourceRequirements, s conversion.Scope) error {
- out.Limits = *(*v1.ResourceList)(unsafe.Pointer(&in.Limits))
- out.Requests = *(*v1.ResourceList)(unsafe.Pointer(&in.Requests))
- return nil
-}
-
-// Convert_api_ResourceRequirements_To_v1_ResourceRequirements is an autogenerated conversion function.
-func Convert_api_ResourceRequirements_To_v1_ResourceRequirements(in *api.ResourceRequirements, out *v1.ResourceRequirements, s conversion.Scope) error {
- return autoConvert_api_ResourceRequirements_To_v1_ResourceRequirements(in, out, s)
-}
-
-func autoConvert_v1_SELinuxOptions_To_api_SELinuxOptions(in *v1.SELinuxOptions, out *api.SELinuxOptions, s conversion.Scope) error {
- out.User = in.User
- out.Role = in.Role
- out.Type = in.Type
- out.Level = in.Level
- return nil
-}
-
-// Convert_v1_SELinuxOptions_To_api_SELinuxOptions is an autogenerated conversion function.
-func Convert_v1_SELinuxOptions_To_api_SELinuxOptions(in *v1.SELinuxOptions, out *api.SELinuxOptions, s conversion.Scope) error {
- return autoConvert_v1_SELinuxOptions_To_api_SELinuxOptions(in, out, s)
-}
-
-func autoConvert_api_SELinuxOptions_To_v1_SELinuxOptions(in *api.SELinuxOptions, out *v1.SELinuxOptions, s conversion.Scope) error {
- out.User = in.User
- out.Role = in.Role
- out.Type = in.Type
- out.Level = in.Level
- return nil
-}
-
-// Convert_api_SELinuxOptions_To_v1_SELinuxOptions is an autogenerated conversion function.
-func Convert_api_SELinuxOptions_To_v1_SELinuxOptions(in *api.SELinuxOptions, out *v1.SELinuxOptions, s conversion.Scope) error {
- return autoConvert_api_SELinuxOptions_To_v1_SELinuxOptions(in, out, s)
-}
-
-func autoConvert_v1_ScaleIOPersistentVolumeSource_To_api_ScaleIOPersistentVolumeSource(in *v1.ScaleIOPersistentVolumeSource, out *api.ScaleIOPersistentVolumeSource, s conversion.Scope) error {
- out.Gateway = in.Gateway
- out.System = in.System
- out.SecretRef = (*api.SecretReference)(unsafe.Pointer(in.SecretRef))
- out.SSLEnabled = in.SSLEnabled
- out.ProtectionDomain = in.ProtectionDomain
- out.StoragePool = in.StoragePool
- out.StorageMode = in.StorageMode
- out.VolumeName = in.VolumeName
- out.FSType = in.FSType
- out.ReadOnly = in.ReadOnly
- return nil
-}
-
-// Convert_v1_ScaleIOPersistentVolumeSource_To_api_ScaleIOPersistentVolumeSource is an autogenerated conversion function.
-func Convert_v1_ScaleIOPersistentVolumeSource_To_api_ScaleIOPersistentVolumeSource(in *v1.ScaleIOPersistentVolumeSource, out *api.ScaleIOPersistentVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_ScaleIOPersistentVolumeSource_To_api_ScaleIOPersistentVolumeSource(in, out, s)
-}
-
-func autoConvert_api_ScaleIOPersistentVolumeSource_To_v1_ScaleIOPersistentVolumeSource(in *api.ScaleIOPersistentVolumeSource, out *v1.ScaleIOPersistentVolumeSource, s conversion.Scope) error {
- out.Gateway = in.Gateway
- out.System = in.System
- out.SecretRef = (*v1.SecretReference)(unsafe.Pointer(in.SecretRef))
- out.SSLEnabled = in.SSLEnabled
- out.ProtectionDomain = in.ProtectionDomain
- out.StoragePool = in.StoragePool
- out.StorageMode = in.StorageMode
- out.VolumeName = in.VolumeName
- out.FSType = in.FSType
- out.ReadOnly = in.ReadOnly
- return nil
-}
-
-// Convert_api_ScaleIOPersistentVolumeSource_To_v1_ScaleIOPersistentVolumeSource is an autogenerated conversion function.
-func Convert_api_ScaleIOPersistentVolumeSource_To_v1_ScaleIOPersistentVolumeSource(in *api.ScaleIOPersistentVolumeSource, out *v1.ScaleIOPersistentVolumeSource, s conversion.Scope) error {
- return autoConvert_api_ScaleIOPersistentVolumeSource_To_v1_ScaleIOPersistentVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_ScaleIOVolumeSource_To_api_ScaleIOVolumeSource(in *v1.ScaleIOVolumeSource, out *api.ScaleIOVolumeSource, s conversion.Scope) error {
- out.Gateway = in.Gateway
- out.System = in.System
- out.SecretRef = (*api.LocalObjectReference)(unsafe.Pointer(in.SecretRef))
- out.SSLEnabled = in.SSLEnabled
- out.ProtectionDomain = in.ProtectionDomain
- out.StoragePool = in.StoragePool
- out.StorageMode = in.StorageMode
- out.VolumeName = in.VolumeName
- out.FSType = in.FSType
- out.ReadOnly = in.ReadOnly
- return nil
-}
-
-// Convert_v1_ScaleIOVolumeSource_To_api_ScaleIOVolumeSource is an autogenerated conversion function.
-func Convert_v1_ScaleIOVolumeSource_To_api_ScaleIOVolumeSource(in *v1.ScaleIOVolumeSource, out *api.ScaleIOVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_ScaleIOVolumeSource_To_api_ScaleIOVolumeSource(in, out, s)
-}
-
-func autoConvert_api_ScaleIOVolumeSource_To_v1_ScaleIOVolumeSource(in *api.ScaleIOVolumeSource, out *v1.ScaleIOVolumeSource, s conversion.Scope) error {
- out.Gateway = in.Gateway
- out.System = in.System
- out.SecretRef = (*v1.LocalObjectReference)(unsafe.Pointer(in.SecretRef))
- out.SSLEnabled = in.SSLEnabled
- out.ProtectionDomain = in.ProtectionDomain
- out.StoragePool = in.StoragePool
- out.StorageMode = in.StorageMode
- out.VolumeName = in.VolumeName
- out.FSType = in.FSType
- out.ReadOnly = in.ReadOnly
- return nil
-}
-
-// Convert_api_ScaleIOVolumeSource_To_v1_ScaleIOVolumeSource is an autogenerated conversion function.
-func Convert_api_ScaleIOVolumeSource_To_v1_ScaleIOVolumeSource(in *api.ScaleIOVolumeSource, out *v1.ScaleIOVolumeSource, s conversion.Scope) error {
- return autoConvert_api_ScaleIOVolumeSource_To_v1_ScaleIOVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_Secret_To_api_Secret(in *v1.Secret, out *api.Secret, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- out.Data = *(*map[string][]byte)(unsafe.Pointer(&in.Data))
- // INFO: in.StringData opted out of conversion generation
- out.Type = api.SecretType(in.Type)
- return nil
-}
-
-func autoConvert_api_Secret_To_v1_Secret(in *api.Secret, out *v1.Secret, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- out.Data = *(*map[string][]byte)(unsafe.Pointer(&in.Data))
- out.Type = v1.SecretType(in.Type)
- return nil
-}
-
-// Convert_api_Secret_To_v1_Secret is an autogenerated conversion function.
-func Convert_api_Secret_To_v1_Secret(in *api.Secret, out *v1.Secret, s conversion.Scope) error {
- return autoConvert_api_Secret_To_v1_Secret(in, out, s)
-}
-
-func autoConvert_v1_SecretEnvSource_To_api_SecretEnvSource(in *v1.SecretEnvSource, out *api.SecretEnvSource, s conversion.Scope) error {
- if err := Convert_v1_LocalObjectReference_To_api_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil {
- return err
- }
- out.Optional = (*bool)(unsafe.Pointer(in.Optional))
- return nil
-}
-
-// Convert_v1_SecretEnvSource_To_api_SecretEnvSource is an autogenerated conversion function.
-func Convert_v1_SecretEnvSource_To_api_SecretEnvSource(in *v1.SecretEnvSource, out *api.SecretEnvSource, s conversion.Scope) error {
- return autoConvert_v1_SecretEnvSource_To_api_SecretEnvSource(in, out, s)
-}
-
-func autoConvert_api_SecretEnvSource_To_v1_SecretEnvSource(in *api.SecretEnvSource, out *v1.SecretEnvSource, s conversion.Scope) error {
- if err := Convert_api_LocalObjectReference_To_v1_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil {
- return err
- }
- out.Optional = (*bool)(unsafe.Pointer(in.Optional))
- return nil
-}
-
-// Convert_api_SecretEnvSource_To_v1_SecretEnvSource is an autogenerated conversion function.
-func Convert_api_SecretEnvSource_To_v1_SecretEnvSource(in *api.SecretEnvSource, out *v1.SecretEnvSource, s conversion.Scope) error {
- return autoConvert_api_SecretEnvSource_To_v1_SecretEnvSource(in, out, s)
-}
-
-func autoConvert_v1_SecretKeySelector_To_api_SecretKeySelector(in *v1.SecretKeySelector, out *api.SecretKeySelector, s conversion.Scope) error {
- if err := Convert_v1_LocalObjectReference_To_api_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil {
- return err
- }
- out.Key = in.Key
- out.Optional = (*bool)(unsafe.Pointer(in.Optional))
- return nil
-}
-
-// Convert_v1_SecretKeySelector_To_api_SecretKeySelector is an autogenerated conversion function.
-func Convert_v1_SecretKeySelector_To_api_SecretKeySelector(in *v1.SecretKeySelector, out *api.SecretKeySelector, s conversion.Scope) error {
- return autoConvert_v1_SecretKeySelector_To_api_SecretKeySelector(in, out, s)
-}
-
-func autoConvert_api_SecretKeySelector_To_v1_SecretKeySelector(in *api.SecretKeySelector, out *v1.SecretKeySelector, s conversion.Scope) error {
- if err := Convert_api_LocalObjectReference_To_v1_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil {
- return err
- }
- out.Key = in.Key
- out.Optional = (*bool)(unsafe.Pointer(in.Optional))
- return nil
-}
-
-// Convert_api_SecretKeySelector_To_v1_SecretKeySelector is an autogenerated conversion function.
-func Convert_api_SecretKeySelector_To_v1_SecretKeySelector(in *api.SecretKeySelector, out *v1.SecretKeySelector, s conversion.Scope) error {
- return autoConvert_api_SecretKeySelector_To_v1_SecretKeySelector(in, out, s)
-}
-
-func autoConvert_v1_SecretList_To_api_SecretList(in *v1.SecretList, out *api.SecretList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- if in.Items != nil {
- in, out := &in.Items, &out.Items
- *out = make([]api.Secret, len(*in))
- for i := range *in {
- if err := Convert_v1_Secret_To_api_Secret(&(*in)[i], &(*out)[i], s); err != nil {
- return err
- }
- }
- } else {
- out.Items = nil
- }
- return nil
-}
-
-// Convert_v1_SecretList_To_api_SecretList is an autogenerated conversion function.
-func Convert_v1_SecretList_To_api_SecretList(in *v1.SecretList, out *api.SecretList, s conversion.Scope) error {
- return autoConvert_v1_SecretList_To_api_SecretList(in, out, s)
-}
-
-func autoConvert_api_SecretList_To_v1_SecretList(in *api.SecretList, out *v1.SecretList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- if in.Items != nil {
- in, out := &in.Items, &out.Items
- *out = make([]v1.Secret, len(*in))
- for i := range *in {
- if err := Convert_api_Secret_To_v1_Secret(&(*in)[i], &(*out)[i], s); err != nil {
- return err
- }
- }
- } else {
- out.Items = nil
- }
- return nil
-}
-
-// Convert_api_SecretList_To_v1_SecretList is an autogenerated conversion function.
-func Convert_api_SecretList_To_v1_SecretList(in *api.SecretList, out *v1.SecretList, s conversion.Scope) error {
- return autoConvert_api_SecretList_To_v1_SecretList(in, out, s)
-}
-
-func autoConvert_v1_SecretProjection_To_api_SecretProjection(in *v1.SecretProjection, out *api.SecretProjection, s conversion.Scope) error {
- if err := Convert_v1_LocalObjectReference_To_api_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil {
- return err
- }
- out.Items = *(*[]api.KeyToPath)(unsafe.Pointer(&in.Items))
- out.Optional = (*bool)(unsafe.Pointer(in.Optional))
- return nil
-}
-
-// Convert_v1_SecretProjection_To_api_SecretProjection is an autogenerated conversion function.
-func Convert_v1_SecretProjection_To_api_SecretProjection(in *v1.SecretProjection, out *api.SecretProjection, s conversion.Scope) error {
- return autoConvert_v1_SecretProjection_To_api_SecretProjection(in, out, s)
-}
-
-func autoConvert_api_SecretProjection_To_v1_SecretProjection(in *api.SecretProjection, out *v1.SecretProjection, s conversion.Scope) error {
- if err := Convert_api_LocalObjectReference_To_v1_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil {
- return err
- }
- out.Items = *(*[]v1.KeyToPath)(unsafe.Pointer(&in.Items))
- out.Optional = (*bool)(unsafe.Pointer(in.Optional))
- return nil
-}
-
-// Convert_api_SecretProjection_To_v1_SecretProjection is an autogenerated conversion function.
-func Convert_api_SecretProjection_To_v1_SecretProjection(in *api.SecretProjection, out *v1.SecretProjection, s conversion.Scope) error {
- return autoConvert_api_SecretProjection_To_v1_SecretProjection(in, out, s)
-}
-
-func autoConvert_v1_SecretReference_To_api_SecretReference(in *v1.SecretReference, out *api.SecretReference, s conversion.Scope) error {
- out.Name = in.Name
- out.Namespace = in.Namespace
- return nil
-}
-
-// Convert_v1_SecretReference_To_api_SecretReference is an autogenerated conversion function.
-func Convert_v1_SecretReference_To_api_SecretReference(in *v1.SecretReference, out *api.SecretReference, s conversion.Scope) error {
- return autoConvert_v1_SecretReference_To_api_SecretReference(in, out, s)
-}
-
-func autoConvert_api_SecretReference_To_v1_SecretReference(in *api.SecretReference, out *v1.SecretReference, s conversion.Scope) error {
- out.Name = in.Name
- out.Namespace = in.Namespace
- return nil
-}
-
-// Convert_api_SecretReference_To_v1_SecretReference is an autogenerated conversion function.
-func Convert_api_SecretReference_To_v1_SecretReference(in *api.SecretReference, out *v1.SecretReference, s conversion.Scope) error {
- return autoConvert_api_SecretReference_To_v1_SecretReference(in, out, s)
-}
-
-func autoConvert_v1_SecretVolumeSource_To_api_SecretVolumeSource(in *v1.SecretVolumeSource, out *api.SecretVolumeSource, s conversion.Scope) error {
- out.SecretName = in.SecretName
- out.Items = *(*[]api.KeyToPath)(unsafe.Pointer(&in.Items))
- out.DefaultMode = (*int32)(unsafe.Pointer(in.DefaultMode))
- out.Optional = (*bool)(unsafe.Pointer(in.Optional))
- return nil
-}
-
-// Convert_v1_SecretVolumeSource_To_api_SecretVolumeSource is an autogenerated conversion function.
-func Convert_v1_SecretVolumeSource_To_api_SecretVolumeSource(in *v1.SecretVolumeSource, out *api.SecretVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_SecretVolumeSource_To_api_SecretVolumeSource(in, out, s)
-}
-
-func autoConvert_api_SecretVolumeSource_To_v1_SecretVolumeSource(in *api.SecretVolumeSource, out *v1.SecretVolumeSource, s conversion.Scope) error {
- out.SecretName = in.SecretName
- out.Items = *(*[]v1.KeyToPath)(unsafe.Pointer(&in.Items))
- out.DefaultMode = (*int32)(unsafe.Pointer(in.DefaultMode))
- out.Optional = (*bool)(unsafe.Pointer(in.Optional))
- return nil
-}
-
-// Convert_api_SecretVolumeSource_To_v1_SecretVolumeSource is an autogenerated conversion function.
-func Convert_api_SecretVolumeSource_To_v1_SecretVolumeSource(in *api.SecretVolumeSource, out *v1.SecretVolumeSource, s conversion.Scope) error {
- return autoConvert_api_SecretVolumeSource_To_v1_SecretVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_SecurityContext_To_api_SecurityContext(in *v1.SecurityContext, out *api.SecurityContext, s conversion.Scope) error {
- out.Capabilities = (*api.Capabilities)(unsafe.Pointer(in.Capabilities))
- out.Privileged = (*bool)(unsafe.Pointer(in.Privileged))
- out.SELinuxOptions = (*api.SELinuxOptions)(unsafe.Pointer(in.SELinuxOptions))
- out.RunAsUser = (*int64)(unsafe.Pointer(in.RunAsUser))
- out.RunAsNonRoot = (*bool)(unsafe.Pointer(in.RunAsNonRoot))
- out.ReadOnlyRootFilesystem = (*bool)(unsafe.Pointer(in.ReadOnlyRootFilesystem))
- out.AllowPrivilegeEscalation = (*bool)(unsafe.Pointer(in.AllowPrivilegeEscalation))
- return nil
-}
-
-// Convert_v1_SecurityContext_To_api_SecurityContext is an autogenerated conversion function.
-func Convert_v1_SecurityContext_To_api_SecurityContext(in *v1.SecurityContext, out *api.SecurityContext, s conversion.Scope) error {
- return autoConvert_v1_SecurityContext_To_api_SecurityContext(in, out, s)
-}
-
-func autoConvert_api_SecurityContext_To_v1_SecurityContext(in *api.SecurityContext, out *v1.SecurityContext, s conversion.Scope) error {
- out.Capabilities = (*v1.Capabilities)(unsafe.Pointer(in.Capabilities))
- out.Privileged = (*bool)(unsafe.Pointer(in.Privileged))
- out.SELinuxOptions = (*v1.SELinuxOptions)(unsafe.Pointer(in.SELinuxOptions))
- out.RunAsUser = (*int64)(unsafe.Pointer(in.RunAsUser))
- out.RunAsNonRoot = (*bool)(unsafe.Pointer(in.RunAsNonRoot))
- out.ReadOnlyRootFilesystem = (*bool)(unsafe.Pointer(in.ReadOnlyRootFilesystem))
- out.AllowPrivilegeEscalation = (*bool)(unsafe.Pointer(in.AllowPrivilegeEscalation))
- return nil
-}
-
-func autoConvert_v1_SerializedReference_To_api_SerializedReference(in *v1.SerializedReference, out *api.SerializedReference, s conversion.Scope) error {
- if err := Convert_v1_ObjectReference_To_api_ObjectReference(&in.Reference, &out.Reference, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_v1_SerializedReference_To_api_SerializedReference is an autogenerated conversion function.
-func Convert_v1_SerializedReference_To_api_SerializedReference(in *v1.SerializedReference, out *api.SerializedReference, s conversion.Scope) error {
- return autoConvert_v1_SerializedReference_To_api_SerializedReference(in, out, s)
-}
-
-func autoConvert_api_SerializedReference_To_v1_SerializedReference(in *api.SerializedReference, out *v1.SerializedReference, s conversion.Scope) error {
- if err := Convert_api_ObjectReference_To_v1_ObjectReference(&in.Reference, &out.Reference, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_api_SerializedReference_To_v1_SerializedReference is an autogenerated conversion function.
-func Convert_api_SerializedReference_To_v1_SerializedReference(in *api.SerializedReference, out *v1.SerializedReference, s conversion.Scope) error {
- return autoConvert_api_SerializedReference_To_v1_SerializedReference(in, out, s)
-}
-
-func autoConvert_v1_Service_To_api_Service(in *v1.Service, out *api.Service, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- if err := Convert_v1_ServiceSpec_To_api_ServiceSpec(&in.Spec, &out.Spec, s); err != nil {
- return err
- }
- if err := Convert_v1_ServiceStatus_To_api_ServiceStatus(&in.Status, &out.Status, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_v1_Service_To_api_Service is an autogenerated conversion function.
-func Convert_v1_Service_To_api_Service(in *v1.Service, out *api.Service, s conversion.Scope) error {
- return autoConvert_v1_Service_To_api_Service(in, out, s)
-}
-
-func autoConvert_api_Service_To_v1_Service(in *api.Service, out *v1.Service, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- if err := Convert_api_ServiceSpec_To_v1_ServiceSpec(&in.Spec, &out.Spec, s); err != nil {
- return err
- }
- if err := Convert_api_ServiceStatus_To_v1_ServiceStatus(&in.Status, &out.Status, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_api_Service_To_v1_Service is an autogenerated conversion function.
-func Convert_api_Service_To_v1_Service(in *api.Service, out *v1.Service, s conversion.Scope) error {
- return autoConvert_api_Service_To_v1_Service(in, out, s)
-}
-
-func autoConvert_v1_ServiceAccount_To_api_ServiceAccount(in *v1.ServiceAccount, out *api.ServiceAccount, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- out.Secrets = *(*[]api.ObjectReference)(unsafe.Pointer(&in.Secrets))
- out.ImagePullSecrets = *(*[]api.LocalObjectReference)(unsafe.Pointer(&in.ImagePullSecrets))
- out.AutomountServiceAccountToken = (*bool)(unsafe.Pointer(in.AutomountServiceAccountToken))
- return nil
-}
-
-// Convert_v1_ServiceAccount_To_api_ServiceAccount is an autogenerated conversion function.
-func Convert_v1_ServiceAccount_To_api_ServiceAccount(in *v1.ServiceAccount, out *api.ServiceAccount, s conversion.Scope) error {
- return autoConvert_v1_ServiceAccount_To_api_ServiceAccount(in, out, s)
-}
-
-func autoConvert_api_ServiceAccount_To_v1_ServiceAccount(in *api.ServiceAccount, out *v1.ServiceAccount, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- out.Secrets = *(*[]v1.ObjectReference)(unsafe.Pointer(&in.Secrets))
- out.ImagePullSecrets = *(*[]v1.LocalObjectReference)(unsafe.Pointer(&in.ImagePullSecrets))
- out.AutomountServiceAccountToken = (*bool)(unsafe.Pointer(in.AutomountServiceAccountToken))
- return nil
-}
-
-// Convert_api_ServiceAccount_To_v1_ServiceAccount is an autogenerated conversion function.
-func Convert_api_ServiceAccount_To_v1_ServiceAccount(in *api.ServiceAccount, out *v1.ServiceAccount, s conversion.Scope) error {
- return autoConvert_api_ServiceAccount_To_v1_ServiceAccount(in, out, s)
-}
-
-func autoConvert_v1_ServiceAccountList_To_api_ServiceAccountList(in *v1.ServiceAccountList, out *api.ServiceAccountList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- out.Items = *(*[]api.ServiceAccount)(unsafe.Pointer(&in.Items))
- return nil
-}
-
-// Convert_v1_ServiceAccountList_To_api_ServiceAccountList is an autogenerated conversion function.
-func Convert_v1_ServiceAccountList_To_api_ServiceAccountList(in *v1.ServiceAccountList, out *api.ServiceAccountList, s conversion.Scope) error {
- return autoConvert_v1_ServiceAccountList_To_api_ServiceAccountList(in, out, s)
-}
-
-func autoConvert_api_ServiceAccountList_To_v1_ServiceAccountList(in *api.ServiceAccountList, out *v1.ServiceAccountList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- out.Items = *(*[]v1.ServiceAccount)(unsafe.Pointer(&in.Items))
- return nil
-}
-
-// Convert_api_ServiceAccountList_To_v1_ServiceAccountList is an autogenerated conversion function.
-func Convert_api_ServiceAccountList_To_v1_ServiceAccountList(in *api.ServiceAccountList, out *v1.ServiceAccountList, s conversion.Scope) error {
- return autoConvert_api_ServiceAccountList_To_v1_ServiceAccountList(in, out, s)
-}
-
-func autoConvert_v1_ServiceList_To_api_ServiceList(in *v1.ServiceList, out *api.ServiceList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- if in.Items != nil {
- in, out := &in.Items, &out.Items
- *out = make([]api.Service, len(*in))
- for i := range *in {
- if err := Convert_v1_Service_To_api_Service(&(*in)[i], &(*out)[i], s); err != nil {
- return err
- }
- }
- } else {
- out.Items = nil
- }
- return nil
-}
-
-// Convert_v1_ServiceList_To_api_ServiceList is an autogenerated conversion function.
-func Convert_v1_ServiceList_To_api_ServiceList(in *v1.ServiceList, out *api.ServiceList, s conversion.Scope) error {
- return autoConvert_v1_ServiceList_To_api_ServiceList(in, out, s)
-}
-
-func autoConvert_api_ServiceList_To_v1_ServiceList(in *api.ServiceList, out *v1.ServiceList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- if in.Items != nil {
- in, out := &in.Items, &out.Items
- *out = make([]v1.Service, len(*in))
- for i := range *in {
- if err := Convert_api_Service_To_v1_Service(&(*in)[i], &(*out)[i], s); err != nil {
- return err
- }
- }
- } else {
- out.Items = nil
- }
- return nil
-}
-
-// Convert_api_ServiceList_To_v1_ServiceList is an autogenerated conversion function.
-func Convert_api_ServiceList_To_v1_ServiceList(in *api.ServiceList, out *v1.ServiceList, s conversion.Scope) error {
- return autoConvert_api_ServiceList_To_v1_ServiceList(in, out, s)
-}
-
-func autoConvert_v1_ServicePort_To_api_ServicePort(in *v1.ServicePort, out *api.ServicePort, s conversion.Scope) error {
- out.Name = in.Name
- out.Protocol = api.Protocol(in.Protocol)
- out.Port = in.Port
- out.TargetPort = in.TargetPort
- out.NodePort = in.NodePort
- return nil
-}
-
-// Convert_v1_ServicePort_To_api_ServicePort is an autogenerated conversion function.
-func Convert_v1_ServicePort_To_api_ServicePort(in *v1.ServicePort, out *api.ServicePort, s conversion.Scope) error {
- return autoConvert_v1_ServicePort_To_api_ServicePort(in, out, s)
-}
-
-func autoConvert_api_ServicePort_To_v1_ServicePort(in *api.ServicePort, out *v1.ServicePort, s conversion.Scope) error {
- out.Name = in.Name
- out.Protocol = v1.Protocol(in.Protocol)
- out.Port = in.Port
- out.TargetPort = in.TargetPort
- out.NodePort = in.NodePort
- return nil
-}
-
-// Convert_api_ServicePort_To_v1_ServicePort is an autogenerated conversion function.
-func Convert_api_ServicePort_To_v1_ServicePort(in *api.ServicePort, out *v1.ServicePort, s conversion.Scope) error {
- return autoConvert_api_ServicePort_To_v1_ServicePort(in, out, s)
-}
-
-func autoConvert_v1_ServiceProxyOptions_To_api_ServiceProxyOptions(in *v1.ServiceProxyOptions, out *api.ServiceProxyOptions, s conversion.Scope) error {
- out.Path = in.Path
- return nil
-}
-
-// Convert_v1_ServiceProxyOptions_To_api_ServiceProxyOptions is an autogenerated conversion function.
-func Convert_v1_ServiceProxyOptions_To_api_ServiceProxyOptions(in *v1.ServiceProxyOptions, out *api.ServiceProxyOptions, s conversion.Scope) error {
- return autoConvert_v1_ServiceProxyOptions_To_api_ServiceProxyOptions(in, out, s)
-}
-
-func autoConvert_api_ServiceProxyOptions_To_v1_ServiceProxyOptions(in *api.ServiceProxyOptions, out *v1.ServiceProxyOptions, s conversion.Scope) error {
- out.Path = in.Path
- return nil
-}
-
-// Convert_api_ServiceProxyOptions_To_v1_ServiceProxyOptions is an autogenerated conversion function.
-func Convert_api_ServiceProxyOptions_To_v1_ServiceProxyOptions(in *api.ServiceProxyOptions, out *v1.ServiceProxyOptions, s conversion.Scope) error {
- return autoConvert_api_ServiceProxyOptions_To_v1_ServiceProxyOptions(in, out, s)
-}
-
-func autoConvert_v1_ServiceSpec_To_api_ServiceSpec(in *v1.ServiceSpec, out *api.ServiceSpec, s conversion.Scope) error {
- out.Ports = *(*[]api.ServicePort)(unsafe.Pointer(&in.Ports))
- out.Selector = *(*map[string]string)(unsafe.Pointer(&in.Selector))
- out.ClusterIP = in.ClusterIP
- out.Type = api.ServiceType(in.Type)
- out.ExternalIPs = *(*[]string)(unsafe.Pointer(&in.ExternalIPs))
- out.SessionAffinity = api.ServiceAffinity(in.SessionAffinity)
- out.LoadBalancerIP = in.LoadBalancerIP
- out.LoadBalancerSourceRanges = *(*[]string)(unsafe.Pointer(&in.LoadBalancerSourceRanges))
- out.ExternalName = in.ExternalName
- out.ExternalTrafficPolicy = api.ServiceExternalTrafficPolicyType(in.ExternalTrafficPolicy)
- out.HealthCheckNodePort = in.HealthCheckNodePort
- out.PublishNotReadyAddresses = in.PublishNotReadyAddresses
- out.SessionAffinityConfig = (*api.SessionAffinityConfig)(unsafe.Pointer(in.SessionAffinityConfig))
- return nil
-}
-
-// Convert_v1_ServiceSpec_To_api_ServiceSpec is an autogenerated conversion function.
-func Convert_v1_ServiceSpec_To_api_ServiceSpec(in *v1.ServiceSpec, out *api.ServiceSpec, s conversion.Scope) error {
- return autoConvert_v1_ServiceSpec_To_api_ServiceSpec(in, out, s)
-}
-
-func autoConvert_api_ServiceSpec_To_v1_ServiceSpec(in *api.ServiceSpec, out *v1.ServiceSpec, s conversion.Scope) error {
- out.Type = v1.ServiceType(in.Type)
- out.Ports = *(*[]v1.ServicePort)(unsafe.Pointer(&in.Ports))
- out.Selector = *(*map[string]string)(unsafe.Pointer(&in.Selector))
- out.ClusterIP = in.ClusterIP
- out.ExternalName = in.ExternalName
- out.ExternalIPs = *(*[]string)(unsafe.Pointer(&in.ExternalIPs))
- out.LoadBalancerIP = in.LoadBalancerIP
- out.SessionAffinity = v1.ServiceAffinity(in.SessionAffinity)
- out.SessionAffinityConfig = (*v1.SessionAffinityConfig)(unsafe.Pointer(in.SessionAffinityConfig))
- out.LoadBalancerSourceRanges = *(*[]string)(unsafe.Pointer(&in.LoadBalancerSourceRanges))
- out.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyType(in.ExternalTrafficPolicy)
- out.HealthCheckNodePort = in.HealthCheckNodePort
- out.PublishNotReadyAddresses = in.PublishNotReadyAddresses
- return nil
-}
-
-// Convert_api_ServiceSpec_To_v1_ServiceSpec is an autogenerated conversion function.
-func Convert_api_ServiceSpec_To_v1_ServiceSpec(in *api.ServiceSpec, out *v1.ServiceSpec, s conversion.Scope) error {
- return autoConvert_api_ServiceSpec_To_v1_ServiceSpec(in, out, s)
-}
-
-func autoConvert_v1_ServiceStatus_To_api_ServiceStatus(in *v1.ServiceStatus, out *api.ServiceStatus, s conversion.Scope) error {
- if err := Convert_v1_LoadBalancerStatus_To_api_LoadBalancerStatus(&in.LoadBalancer, &out.LoadBalancer, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_v1_ServiceStatus_To_api_ServiceStatus is an autogenerated conversion function.
-func Convert_v1_ServiceStatus_To_api_ServiceStatus(in *v1.ServiceStatus, out *api.ServiceStatus, s conversion.Scope) error {
- return autoConvert_v1_ServiceStatus_To_api_ServiceStatus(in, out, s)
-}
-
-func autoConvert_api_ServiceStatus_To_v1_ServiceStatus(in *api.ServiceStatus, out *v1.ServiceStatus, s conversion.Scope) error {
- if err := Convert_api_LoadBalancerStatus_To_v1_LoadBalancerStatus(&in.LoadBalancer, &out.LoadBalancer, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_api_ServiceStatus_To_v1_ServiceStatus is an autogenerated conversion function.
-func Convert_api_ServiceStatus_To_v1_ServiceStatus(in *api.ServiceStatus, out *v1.ServiceStatus, s conversion.Scope) error {
- return autoConvert_api_ServiceStatus_To_v1_ServiceStatus(in, out, s)
-}
-
-func autoConvert_v1_SessionAffinityConfig_To_api_SessionAffinityConfig(in *v1.SessionAffinityConfig, out *api.SessionAffinityConfig, s conversion.Scope) error {
- out.ClientIP = (*api.ClientIPConfig)(unsafe.Pointer(in.ClientIP))
- return nil
-}
-
-// Convert_v1_SessionAffinityConfig_To_api_SessionAffinityConfig is an autogenerated conversion function.
-func Convert_v1_SessionAffinityConfig_To_api_SessionAffinityConfig(in *v1.SessionAffinityConfig, out *api.SessionAffinityConfig, s conversion.Scope) error {
- return autoConvert_v1_SessionAffinityConfig_To_api_SessionAffinityConfig(in, out, s)
-}
-
-func autoConvert_api_SessionAffinityConfig_To_v1_SessionAffinityConfig(in *api.SessionAffinityConfig, out *v1.SessionAffinityConfig, s conversion.Scope) error {
- out.ClientIP = (*v1.ClientIPConfig)(unsafe.Pointer(in.ClientIP))
- return nil
-}
-
-// Convert_api_SessionAffinityConfig_To_v1_SessionAffinityConfig is an autogenerated conversion function.
-func Convert_api_SessionAffinityConfig_To_v1_SessionAffinityConfig(in *api.SessionAffinityConfig, out *v1.SessionAffinityConfig, s conversion.Scope) error {
- return autoConvert_api_SessionAffinityConfig_To_v1_SessionAffinityConfig(in, out, s)
-}
-
-func autoConvert_v1_StorageOSPersistentVolumeSource_To_api_StorageOSPersistentVolumeSource(in *v1.StorageOSPersistentVolumeSource, out *api.StorageOSPersistentVolumeSource, s conversion.Scope) error {
- out.VolumeName = in.VolumeName
- out.VolumeNamespace = in.VolumeNamespace
- out.FSType = in.FSType
- out.ReadOnly = in.ReadOnly
- out.SecretRef = (*api.ObjectReference)(unsafe.Pointer(in.SecretRef))
- return nil
-}
-
-// Convert_v1_StorageOSPersistentVolumeSource_To_api_StorageOSPersistentVolumeSource is an autogenerated conversion function.
-func Convert_v1_StorageOSPersistentVolumeSource_To_api_StorageOSPersistentVolumeSource(in *v1.StorageOSPersistentVolumeSource, out *api.StorageOSPersistentVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_StorageOSPersistentVolumeSource_To_api_StorageOSPersistentVolumeSource(in, out, s)
-}
-
-func autoConvert_api_StorageOSPersistentVolumeSource_To_v1_StorageOSPersistentVolumeSource(in *api.StorageOSPersistentVolumeSource, out *v1.StorageOSPersistentVolumeSource, s conversion.Scope) error {
- out.VolumeName = in.VolumeName
- out.VolumeNamespace = in.VolumeNamespace
- out.FSType = in.FSType
- out.ReadOnly = in.ReadOnly
- out.SecretRef = (*v1.ObjectReference)(unsafe.Pointer(in.SecretRef))
- return nil
-}
-
-// Convert_api_StorageOSPersistentVolumeSource_To_v1_StorageOSPersistentVolumeSource is an autogenerated conversion function.
-func Convert_api_StorageOSPersistentVolumeSource_To_v1_StorageOSPersistentVolumeSource(in *api.StorageOSPersistentVolumeSource, out *v1.StorageOSPersistentVolumeSource, s conversion.Scope) error {
- return autoConvert_api_StorageOSPersistentVolumeSource_To_v1_StorageOSPersistentVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_StorageOSVolumeSource_To_api_StorageOSVolumeSource(in *v1.StorageOSVolumeSource, out *api.StorageOSVolumeSource, s conversion.Scope) error {
- out.VolumeName = in.VolumeName
- out.VolumeNamespace = in.VolumeNamespace
- out.FSType = in.FSType
- out.ReadOnly = in.ReadOnly
- out.SecretRef = (*api.LocalObjectReference)(unsafe.Pointer(in.SecretRef))
- return nil
-}
-
-// Convert_v1_StorageOSVolumeSource_To_api_StorageOSVolumeSource is an autogenerated conversion function.
-func Convert_v1_StorageOSVolumeSource_To_api_StorageOSVolumeSource(in *v1.StorageOSVolumeSource, out *api.StorageOSVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_StorageOSVolumeSource_To_api_StorageOSVolumeSource(in, out, s)
-}
-
-func autoConvert_api_StorageOSVolumeSource_To_v1_StorageOSVolumeSource(in *api.StorageOSVolumeSource, out *v1.StorageOSVolumeSource, s conversion.Scope) error {
- out.VolumeName = in.VolumeName
- out.VolumeNamespace = in.VolumeNamespace
- out.FSType = in.FSType
- out.ReadOnly = in.ReadOnly
- out.SecretRef = (*v1.LocalObjectReference)(unsafe.Pointer(in.SecretRef))
- return nil
-}
-
-// Convert_api_StorageOSVolumeSource_To_v1_StorageOSVolumeSource is an autogenerated conversion function.
-func Convert_api_StorageOSVolumeSource_To_v1_StorageOSVolumeSource(in *api.StorageOSVolumeSource, out *v1.StorageOSVolumeSource, s conversion.Scope) error {
- return autoConvert_api_StorageOSVolumeSource_To_v1_StorageOSVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_Sysctl_To_api_Sysctl(in *v1.Sysctl, out *api.Sysctl, s conversion.Scope) error {
- out.Name = in.Name
- out.Value = in.Value
- return nil
-}
-
-// Convert_v1_Sysctl_To_api_Sysctl is an autogenerated conversion function.
-func Convert_v1_Sysctl_To_api_Sysctl(in *v1.Sysctl, out *api.Sysctl, s conversion.Scope) error {
- return autoConvert_v1_Sysctl_To_api_Sysctl(in, out, s)
-}
-
-func autoConvert_api_Sysctl_To_v1_Sysctl(in *api.Sysctl, out *v1.Sysctl, s conversion.Scope) error {
- out.Name = in.Name
- out.Value = in.Value
- return nil
-}
-
-// Convert_api_Sysctl_To_v1_Sysctl is an autogenerated conversion function.
-func Convert_api_Sysctl_To_v1_Sysctl(in *api.Sysctl, out *v1.Sysctl, s conversion.Scope) error {
- return autoConvert_api_Sysctl_To_v1_Sysctl(in, out, s)
-}
-
-func autoConvert_v1_TCPSocketAction_To_api_TCPSocketAction(in *v1.TCPSocketAction, out *api.TCPSocketAction, s conversion.Scope) error {
- out.Port = in.Port
- out.Host = in.Host
- return nil
-}
-
-// Convert_v1_TCPSocketAction_To_api_TCPSocketAction is an autogenerated conversion function.
-func Convert_v1_TCPSocketAction_To_api_TCPSocketAction(in *v1.TCPSocketAction, out *api.TCPSocketAction, s conversion.Scope) error {
- return autoConvert_v1_TCPSocketAction_To_api_TCPSocketAction(in, out, s)
-}
-
-func autoConvert_api_TCPSocketAction_To_v1_TCPSocketAction(in *api.TCPSocketAction, out *v1.TCPSocketAction, s conversion.Scope) error {
- out.Port = in.Port
- out.Host = in.Host
- return nil
-}
-
-// Convert_api_TCPSocketAction_To_v1_TCPSocketAction is an autogenerated conversion function.
-func Convert_api_TCPSocketAction_To_v1_TCPSocketAction(in *api.TCPSocketAction, out *v1.TCPSocketAction, s conversion.Scope) error {
- return autoConvert_api_TCPSocketAction_To_v1_TCPSocketAction(in, out, s)
-}
-
-func autoConvert_v1_Taint_To_api_Taint(in *v1.Taint, out *api.Taint, s conversion.Scope) error {
- out.Key = in.Key
- out.Value = in.Value
- out.Effect = api.TaintEffect(in.Effect)
- out.TimeAdded = (*meta_v1.Time)(unsafe.Pointer(in.TimeAdded))
- return nil
-}
-
-// Convert_v1_Taint_To_api_Taint is an autogenerated conversion function.
-func Convert_v1_Taint_To_api_Taint(in *v1.Taint, out *api.Taint, s conversion.Scope) error {
- return autoConvert_v1_Taint_To_api_Taint(in, out, s)
-}
-
-func autoConvert_api_Taint_To_v1_Taint(in *api.Taint, out *v1.Taint, s conversion.Scope) error {
- out.Key = in.Key
- out.Value = in.Value
- out.Effect = v1.TaintEffect(in.Effect)
- out.TimeAdded = (*meta_v1.Time)(unsafe.Pointer(in.TimeAdded))
- return nil
-}
-
-// Convert_api_Taint_To_v1_Taint is an autogenerated conversion function.
-func Convert_api_Taint_To_v1_Taint(in *api.Taint, out *v1.Taint, s conversion.Scope) error {
- return autoConvert_api_Taint_To_v1_Taint(in, out, s)
-}
-
-func autoConvert_v1_Toleration_To_api_Toleration(in *v1.Toleration, out *api.Toleration, s conversion.Scope) error {
- out.Key = in.Key
- out.Operator = api.TolerationOperator(in.Operator)
- out.Value = in.Value
- out.Effect = api.TaintEffect(in.Effect)
- out.TolerationSeconds = (*int64)(unsafe.Pointer(in.TolerationSeconds))
- return nil
-}
-
-// Convert_v1_Toleration_To_api_Toleration is an autogenerated conversion function.
-func Convert_v1_Toleration_To_api_Toleration(in *v1.Toleration, out *api.Toleration, s conversion.Scope) error {
- return autoConvert_v1_Toleration_To_api_Toleration(in, out, s)
-}
-
-func autoConvert_api_Toleration_To_v1_Toleration(in *api.Toleration, out *v1.Toleration, s conversion.Scope) error {
- out.Key = in.Key
- out.Operator = v1.TolerationOperator(in.Operator)
- out.Value = in.Value
- out.Effect = v1.TaintEffect(in.Effect)
- out.TolerationSeconds = (*int64)(unsafe.Pointer(in.TolerationSeconds))
- return nil
-}
-
-// Convert_api_Toleration_To_v1_Toleration is an autogenerated conversion function.
-func Convert_api_Toleration_To_v1_Toleration(in *api.Toleration, out *v1.Toleration, s conversion.Scope) error {
- return autoConvert_api_Toleration_To_v1_Toleration(in, out, s)
-}
-
-func autoConvert_v1_Volume_To_api_Volume(in *v1.Volume, out *api.Volume, s conversion.Scope) error {
- out.Name = in.Name
- if err := Convert_v1_VolumeSource_To_api_VolumeSource(&in.VolumeSource, &out.VolumeSource, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_v1_Volume_To_api_Volume is an autogenerated conversion function.
-func Convert_v1_Volume_To_api_Volume(in *v1.Volume, out *api.Volume, s conversion.Scope) error {
- return autoConvert_v1_Volume_To_api_Volume(in, out, s)
-}
-
-func autoConvert_api_Volume_To_v1_Volume(in *api.Volume, out *v1.Volume, s conversion.Scope) error {
- out.Name = in.Name
- if err := Convert_api_VolumeSource_To_v1_VolumeSource(&in.VolumeSource, &out.VolumeSource, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_api_Volume_To_v1_Volume is an autogenerated conversion function.
-func Convert_api_Volume_To_v1_Volume(in *api.Volume, out *v1.Volume, s conversion.Scope) error {
- return autoConvert_api_Volume_To_v1_Volume(in, out, s)
-}
-
-func autoConvert_v1_VolumeMount_To_api_VolumeMount(in *v1.VolumeMount, out *api.VolumeMount, s conversion.Scope) error {
- out.Name = in.Name
- out.ReadOnly = in.ReadOnly
- out.MountPath = in.MountPath
- out.SubPath = in.SubPath
- out.MountPropagation = (*api.MountPropagationMode)(unsafe.Pointer(in.MountPropagation))
- return nil
-}
-
-// Convert_v1_VolumeMount_To_api_VolumeMount is an autogenerated conversion function.
-func Convert_v1_VolumeMount_To_api_VolumeMount(in *v1.VolumeMount, out *api.VolumeMount, s conversion.Scope) error {
- return autoConvert_v1_VolumeMount_To_api_VolumeMount(in, out, s)
-}
-
-func autoConvert_api_VolumeMount_To_v1_VolumeMount(in *api.VolumeMount, out *v1.VolumeMount, s conversion.Scope) error {
- out.Name = in.Name
- out.ReadOnly = in.ReadOnly
- out.MountPath = in.MountPath
- out.SubPath = in.SubPath
- out.MountPropagation = (*v1.MountPropagationMode)(unsafe.Pointer(in.MountPropagation))
- return nil
-}
-
-// Convert_api_VolumeMount_To_v1_VolumeMount is an autogenerated conversion function.
-func Convert_api_VolumeMount_To_v1_VolumeMount(in *api.VolumeMount, out *v1.VolumeMount, s conversion.Scope) error {
- return autoConvert_api_VolumeMount_To_v1_VolumeMount(in, out, s)
-}
-
-func autoConvert_v1_VolumeProjection_To_api_VolumeProjection(in *v1.VolumeProjection, out *api.VolumeProjection, s conversion.Scope) error {
- out.Secret = (*api.SecretProjection)(unsafe.Pointer(in.Secret))
- out.DownwardAPI = (*api.DownwardAPIProjection)(unsafe.Pointer(in.DownwardAPI))
- out.ConfigMap = (*api.ConfigMapProjection)(unsafe.Pointer(in.ConfigMap))
- return nil
-}
-
-// Convert_v1_VolumeProjection_To_api_VolumeProjection is an autogenerated conversion function.
-func Convert_v1_VolumeProjection_To_api_VolumeProjection(in *v1.VolumeProjection, out *api.VolumeProjection, s conversion.Scope) error {
- return autoConvert_v1_VolumeProjection_To_api_VolumeProjection(in, out, s)
-}
-
-func autoConvert_api_VolumeProjection_To_v1_VolumeProjection(in *api.VolumeProjection, out *v1.VolumeProjection, s conversion.Scope) error {
- out.Secret = (*v1.SecretProjection)(unsafe.Pointer(in.Secret))
- out.DownwardAPI = (*v1.DownwardAPIProjection)(unsafe.Pointer(in.DownwardAPI))
- out.ConfigMap = (*v1.ConfigMapProjection)(unsafe.Pointer(in.ConfigMap))
- return nil
-}
-
-// Convert_api_VolumeProjection_To_v1_VolumeProjection is an autogenerated conversion function.
-func Convert_api_VolumeProjection_To_v1_VolumeProjection(in *api.VolumeProjection, out *v1.VolumeProjection, s conversion.Scope) error {
- return autoConvert_api_VolumeProjection_To_v1_VolumeProjection(in, out, s)
-}
-
-func autoConvert_v1_VolumeSource_To_api_VolumeSource(in *v1.VolumeSource, out *api.VolumeSource, s conversion.Scope) error {
- out.HostPath = (*api.HostPathVolumeSource)(unsafe.Pointer(in.HostPath))
- out.EmptyDir = (*api.EmptyDirVolumeSource)(unsafe.Pointer(in.EmptyDir))
- out.GCEPersistentDisk = (*api.GCEPersistentDiskVolumeSource)(unsafe.Pointer(in.GCEPersistentDisk))
- out.AWSElasticBlockStore = (*api.AWSElasticBlockStoreVolumeSource)(unsafe.Pointer(in.AWSElasticBlockStore))
- out.GitRepo = (*api.GitRepoVolumeSource)(unsafe.Pointer(in.GitRepo))
- out.Secret = (*api.SecretVolumeSource)(unsafe.Pointer(in.Secret))
- out.NFS = (*api.NFSVolumeSource)(unsafe.Pointer(in.NFS))
- out.ISCSI = (*api.ISCSIVolumeSource)(unsafe.Pointer(in.ISCSI))
- out.Glusterfs = (*api.GlusterfsVolumeSource)(unsafe.Pointer(in.Glusterfs))
- out.PersistentVolumeClaim = (*api.PersistentVolumeClaimVolumeSource)(unsafe.Pointer(in.PersistentVolumeClaim))
- out.RBD = (*api.RBDVolumeSource)(unsafe.Pointer(in.RBD))
- out.FlexVolume = (*api.FlexVolumeSource)(unsafe.Pointer(in.FlexVolume))
- out.Cinder = (*api.CinderVolumeSource)(unsafe.Pointer(in.Cinder))
- out.CephFS = (*api.CephFSVolumeSource)(unsafe.Pointer(in.CephFS))
- out.Flocker = (*api.FlockerVolumeSource)(unsafe.Pointer(in.Flocker))
- out.DownwardAPI = (*api.DownwardAPIVolumeSource)(unsafe.Pointer(in.DownwardAPI))
- out.FC = (*api.FCVolumeSource)(unsafe.Pointer(in.FC))
- out.AzureFile = (*api.AzureFileVolumeSource)(unsafe.Pointer(in.AzureFile))
- out.ConfigMap = (*api.ConfigMapVolumeSource)(unsafe.Pointer(in.ConfigMap))
- out.VsphereVolume = (*api.VsphereVirtualDiskVolumeSource)(unsafe.Pointer(in.VsphereVolume))
- out.Quobyte = (*api.QuobyteVolumeSource)(unsafe.Pointer(in.Quobyte))
- out.AzureDisk = (*api.AzureDiskVolumeSource)(unsafe.Pointer(in.AzureDisk))
- out.PhotonPersistentDisk = (*api.PhotonPersistentDiskVolumeSource)(unsafe.Pointer(in.PhotonPersistentDisk))
- out.Projected = (*api.ProjectedVolumeSource)(unsafe.Pointer(in.Projected))
- out.PortworxVolume = (*api.PortworxVolumeSource)(unsafe.Pointer(in.PortworxVolume))
- out.ScaleIO = (*api.ScaleIOVolumeSource)(unsafe.Pointer(in.ScaleIO))
- out.StorageOS = (*api.StorageOSVolumeSource)(unsafe.Pointer(in.StorageOS))
- return nil
-}
-
-// Convert_v1_VolumeSource_To_api_VolumeSource is an autogenerated conversion function.
-func Convert_v1_VolumeSource_To_api_VolumeSource(in *v1.VolumeSource, out *api.VolumeSource, s conversion.Scope) error {
- return autoConvert_v1_VolumeSource_To_api_VolumeSource(in, out, s)
-}
-
-func autoConvert_api_VolumeSource_To_v1_VolumeSource(in *api.VolumeSource, out *v1.VolumeSource, s conversion.Scope) error {
- out.HostPath = (*v1.HostPathVolumeSource)(unsafe.Pointer(in.HostPath))
- out.EmptyDir = (*v1.EmptyDirVolumeSource)(unsafe.Pointer(in.EmptyDir))
- out.GCEPersistentDisk = (*v1.GCEPersistentDiskVolumeSource)(unsafe.Pointer(in.GCEPersistentDisk))
- out.AWSElasticBlockStore = (*v1.AWSElasticBlockStoreVolumeSource)(unsafe.Pointer(in.AWSElasticBlockStore))
- out.GitRepo = (*v1.GitRepoVolumeSource)(unsafe.Pointer(in.GitRepo))
- out.Secret = (*v1.SecretVolumeSource)(unsafe.Pointer(in.Secret))
- out.NFS = (*v1.NFSVolumeSource)(unsafe.Pointer(in.NFS))
- out.ISCSI = (*v1.ISCSIVolumeSource)(unsafe.Pointer(in.ISCSI))
- out.Glusterfs = (*v1.GlusterfsVolumeSource)(unsafe.Pointer(in.Glusterfs))
- out.PersistentVolumeClaim = (*v1.PersistentVolumeClaimVolumeSource)(unsafe.Pointer(in.PersistentVolumeClaim))
- out.RBD = (*v1.RBDVolumeSource)(unsafe.Pointer(in.RBD))
- out.Quobyte = (*v1.QuobyteVolumeSource)(unsafe.Pointer(in.Quobyte))
- out.FlexVolume = (*v1.FlexVolumeSource)(unsafe.Pointer(in.FlexVolume))
- out.Cinder = (*v1.CinderVolumeSource)(unsafe.Pointer(in.Cinder))
- out.CephFS = (*v1.CephFSVolumeSource)(unsafe.Pointer(in.CephFS))
- out.Flocker = (*v1.FlockerVolumeSource)(unsafe.Pointer(in.Flocker))
- out.DownwardAPI = (*v1.DownwardAPIVolumeSource)(unsafe.Pointer(in.DownwardAPI))
- out.FC = (*v1.FCVolumeSource)(unsafe.Pointer(in.FC))
- out.AzureFile = (*v1.AzureFileVolumeSource)(unsafe.Pointer(in.AzureFile))
- out.ConfigMap = (*v1.ConfigMapVolumeSource)(unsafe.Pointer(in.ConfigMap))
- out.VsphereVolume = (*v1.VsphereVirtualDiskVolumeSource)(unsafe.Pointer(in.VsphereVolume))
- out.AzureDisk = (*v1.AzureDiskVolumeSource)(unsafe.Pointer(in.AzureDisk))
- out.PhotonPersistentDisk = (*v1.PhotonPersistentDiskVolumeSource)(unsafe.Pointer(in.PhotonPersistentDisk))
- out.Projected = (*v1.ProjectedVolumeSource)(unsafe.Pointer(in.Projected))
- out.PortworxVolume = (*v1.PortworxVolumeSource)(unsafe.Pointer(in.PortworxVolume))
- out.ScaleIO = (*v1.ScaleIOVolumeSource)(unsafe.Pointer(in.ScaleIO))
- out.StorageOS = (*v1.StorageOSVolumeSource)(unsafe.Pointer(in.StorageOS))
- return nil
-}
-
-// Convert_api_VolumeSource_To_v1_VolumeSource is an autogenerated conversion function.
-func Convert_api_VolumeSource_To_v1_VolumeSource(in *api.VolumeSource, out *v1.VolumeSource, s conversion.Scope) error {
- return autoConvert_api_VolumeSource_To_v1_VolumeSource(in, out, s)
-}
-
-func autoConvert_v1_VsphereVirtualDiskVolumeSource_To_api_VsphereVirtualDiskVolumeSource(in *v1.VsphereVirtualDiskVolumeSource, out *api.VsphereVirtualDiskVolumeSource, s conversion.Scope) error {
- out.VolumePath = in.VolumePath
- out.FSType = in.FSType
- out.StoragePolicyName = in.StoragePolicyName
- out.StoragePolicyID = in.StoragePolicyID
- return nil
-}
-
-// Convert_v1_VsphereVirtualDiskVolumeSource_To_api_VsphereVirtualDiskVolumeSource is an autogenerated conversion function.
-func Convert_v1_VsphereVirtualDiskVolumeSource_To_api_VsphereVirtualDiskVolumeSource(in *v1.VsphereVirtualDiskVolumeSource, out *api.VsphereVirtualDiskVolumeSource, s conversion.Scope) error {
- return autoConvert_v1_VsphereVirtualDiskVolumeSource_To_api_VsphereVirtualDiskVolumeSource(in, out, s)
-}
-
-func autoConvert_api_VsphereVirtualDiskVolumeSource_To_v1_VsphereVirtualDiskVolumeSource(in *api.VsphereVirtualDiskVolumeSource, out *v1.VsphereVirtualDiskVolumeSource, s conversion.Scope) error {
- out.VolumePath = in.VolumePath
- out.FSType = in.FSType
- out.StoragePolicyName = in.StoragePolicyName
- out.StoragePolicyID = in.StoragePolicyID
- return nil
-}
-
-// Convert_api_VsphereVirtualDiskVolumeSource_To_v1_VsphereVirtualDiskVolumeSource is an autogenerated conversion function.
-func Convert_api_VsphereVirtualDiskVolumeSource_To_v1_VsphereVirtualDiskVolumeSource(in *api.VsphereVirtualDiskVolumeSource, out *v1.VsphereVirtualDiskVolumeSource, s conversion.Scope) error {
- return autoConvert_api_VsphereVirtualDiskVolumeSource_To_v1_VsphereVirtualDiskVolumeSource(in, out, s)
-}
-
-func autoConvert_v1_WeightedPodAffinityTerm_To_api_WeightedPodAffinityTerm(in *v1.WeightedPodAffinityTerm, out *api.WeightedPodAffinityTerm, s conversion.Scope) error {
- out.Weight = in.Weight
- if err := Convert_v1_PodAffinityTerm_To_api_PodAffinityTerm(&in.PodAffinityTerm, &out.PodAffinityTerm, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_v1_WeightedPodAffinityTerm_To_api_WeightedPodAffinityTerm is an autogenerated conversion function.
-func Convert_v1_WeightedPodAffinityTerm_To_api_WeightedPodAffinityTerm(in *v1.WeightedPodAffinityTerm, out *api.WeightedPodAffinityTerm, s conversion.Scope) error {
- return autoConvert_v1_WeightedPodAffinityTerm_To_api_WeightedPodAffinityTerm(in, out, s)
-}
-
-func autoConvert_api_WeightedPodAffinityTerm_To_v1_WeightedPodAffinityTerm(in *api.WeightedPodAffinityTerm, out *v1.WeightedPodAffinityTerm, s conversion.Scope) error {
- out.Weight = in.Weight
- if err := Convert_api_PodAffinityTerm_To_v1_PodAffinityTerm(&in.PodAffinityTerm, &out.PodAffinityTerm, s); err != nil {
- return err
- }
- return nil
-}
-
-// Convert_api_WeightedPodAffinityTerm_To_v1_WeightedPodAffinityTerm is an autogenerated conversion function.
-func Convert_api_WeightedPodAffinityTerm_To_v1_WeightedPodAffinityTerm(in *api.WeightedPodAffinityTerm, out *v1.WeightedPodAffinityTerm, s conversion.Scope) error {
- return autoConvert_api_WeightedPodAffinityTerm_To_v1_WeightedPodAffinityTerm(in, out, s)
-}
diff --git a/pkg/apis/abac/BUILD b/pkg/apis/abac/BUILD
index b2e5925bf9..c2f5e81985 100644
--- a/pkg/apis/abac/BUILD
+++ b/pkg/apis/abac/BUILD
@@ -16,7 +16,6 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/apis/abac",
deps = [
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
diff --git a/pkg/apis/abac/v0/doc.go b/pkg/apis/abac/v0/doc.go
index d35c8b86ac..bd73e3f49a 100644
--- a/pkg/apis/abac/v0/doc.go
+++ b/pkg/apis/abac/v0/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +groupName=abac.authorization.kubernetes.io
package v0 // import "k8s.io/kubernetes/pkg/apis/abac/v0"
diff --git a/pkg/apis/abac/v0/zz_generated.deepcopy.go b/pkg/apis/abac/v0/zz_generated.deepcopy.go
index f2b9974b00..1c0fe0c8b8 100644
--- a/pkg/apis/abac/v0/zz_generated.deepcopy.go
+++ b/pkg/apis/abac/v0/zz_generated.deepcopy.go
@@ -21,28 +21,9 @@ limitations under the License.
package v0
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Policy).DeepCopyInto(out.(*Policy))
- return nil
- }, InType: reflect.TypeOf(&Policy{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Policy) DeepCopyInto(out *Policy) {
*out = *in
diff --git a/pkg/apis/abac/v1beta1/doc.go b/pkg/apis/abac/v1beta1/doc.go
index 5078f2f123..3fa41e6b84 100644
--- a/pkg/apis/abac/v1beta1/doc.go
+++ b/pkg/apis/abac/v1beta1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/abac
// +k8s:openapi-gen=true
// +k8s:defaulter-gen=TypeMeta
diff --git a/pkg/apis/abac/v1beta1/zz_generated.deepcopy.go b/pkg/apis/abac/v1beta1/zz_generated.deepcopy.go
index 84b36e013e..05fbab899e 100644
--- a/pkg/apis/abac/v1beta1/zz_generated.deepcopy.go
+++ b/pkg/apis/abac/v1beta1/zz_generated.deepcopy.go
@@ -21,32 +21,9 @@ limitations under the License.
package v1beta1
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Policy).DeepCopyInto(out.(*Policy))
- return nil
- }, InType: reflect.TypeOf(&Policy{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PolicySpec).DeepCopyInto(out.(*PolicySpec))
- return nil
- }, InType: reflect.TypeOf(&PolicySpec{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Policy) DeepCopyInto(out *Policy) {
*out = *in
diff --git a/pkg/apis/abac/zz_generated.deepcopy.go b/pkg/apis/abac/zz_generated.deepcopy.go
index 799c027232..dc41bc7ceb 100644
--- a/pkg/apis/abac/zz_generated.deepcopy.go
+++ b/pkg/apis/abac/zz_generated.deepcopy.go
@@ -21,27 +21,9 @@ limitations under the License.
package abac
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc {
- return []conversion.GeneratedDeepCopyFunc{
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Policy).DeepCopyInto(out.(*Policy))
- return nil
- }, InType: reflect.TypeOf(&Policy{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PolicySpec).DeepCopyInto(out.(*PolicySpec))
- return nil
- }, InType: reflect.TypeOf(&PolicySpec{})},
- }
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Policy) DeepCopyInto(out *Policy) {
*out = *in
diff --git a/pkg/apis/admission/BUILD b/pkg/apis/admission/BUILD
index 5d99f31008..f50c9fbdd7 100644
--- a/pkg/apis/admission/BUILD
+++ b/pkg/apis/admission/BUILD
@@ -17,7 +17,6 @@ go_library(
deps = [
"//pkg/apis/authentication:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/pkg/apis/admission/doc.go b/pkg/apis/admission/doc.go
index 4822666798..64273253a9 100644
--- a/pkg/apis/admission/doc.go
+++ b/pkg/apis/admission/doc.go
@@ -14,6 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +groupName=admission.k8s.io
package admission // import "k8s.io/kubernetes/pkg/apis/admission"
diff --git a/pkg/apis/admission/zz_generated.deepcopy.go b/pkg/apis/admission/zz_generated.deepcopy.go
index 22cd49d5e4..02436bf8c6 100644
--- a/pkg/apis/admission/zz_generated.deepcopy.go
+++ b/pkg/apis/admission/zz_generated.deepcopy.go
@@ -22,36 +22,9 @@ package admission
import (
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*AdmissionReview).DeepCopyInto(out.(*AdmissionReview))
- return nil
- }, InType: reflect.TypeOf(&AdmissionReview{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*AdmissionReviewSpec).DeepCopyInto(out.(*AdmissionReviewSpec))
- return nil
- }, InType: reflect.TypeOf(&AdmissionReviewSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*AdmissionReviewStatus).DeepCopyInto(out.(*AdmissionReviewStatus))
- return nil
- }, InType: reflect.TypeOf(&AdmissionReviewStatus{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *AdmissionReview) DeepCopyInto(out *AdmissionReview) {
*out = *in
diff --git a/pkg/apis/admissionregistration/BUILD b/pkg/apis/admissionregistration/BUILD
index 9412c20050..09e1a60eb7 100644
--- a/pkg/apis/admissionregistration/BUILD
+++ b/pkg/apis/admissionregistration/BUILD
@@ -16,7 +16,6 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/apis/admissionregistration",
deps = [
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/pkg/apis/admissionregistration/doc.go b/pkg/apis/admissionregistration/doc.go
index 5dfc4e74e3..7b76bb29b2 100644
--- a/pkg/apis/admissionregistration/doc.go
+++ b/pkg/apis/admissionregistration/doc.go
@@ -14,11 +14,11 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// Package admissionregistration is the internal version of the API.
// AdmissionConfiguration and AdmissionPluginConfiguration are legacy static admission plugin configuration
-// InitializerConfiguration and ExternalAdmissionHookConfiguration is for the
+// InitializerConfiguration, ValidatingWebhookConfiguration, and MutatingWebhookConfiguration are for the
// new dynamic admission controller configuration.
// +groupName=admissionregistration.k8s.io
package admissionregistration // import "k8s.io/kubernetes/pkg/apis/admissionregistration"
diff --git a/pkg/apis/admissionregistration/fuzzer/fuzzer.go b/pkg/apis/admissionregistration/fuzzer/fuzzer.go
index 7c0287f3cc..4275951b51 100644
--- a/pkg/apis/admissionregistration/fuzzer/fuzzer.go
+++ b/pkg/apis/admissionregistration/fuzzer/fuzzer.go
@@ -26,7 +26,7 @@ import (
// Funcs returns the fuzzer functions for the admissionregistration api group.
var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} {
return []interface{}{
- func(obj *admissionregistration.ExternalAdmissionHook, c fuzz.Continue) {
+ func(obj *admissionregistration.Webhook, c fuzz.Continue) {
c.FuzzNoCustom(obj) // fuzz self without calling this function again
p := admissionregistration.FailurePolicyType("Fail")
obj.FailurePolicy = &p
diff --git a/pkg/apis/admissionregistration/install/install.go b/pkg/apis/admissionregistration/install/install.go
index 046729829d..aafff40319 100644
--- a/pkg/apis/admissionregistration/install/install.go
+++ b/pkg/apis/admissionregistration/install/install.go
@@ -35,7 +35,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
if err := announced.NewGroupMetaFactory(
&announced.GroupMetaFactoryArgs{
GroupName: admissionregistration.GroupName,
- RootScopedKinds: sets.NewString("InitializerConfiguration", "ExternalAdmissionHookConfiguration"),
+ RootScopedKinds: sets.NewString("InitializerConfiguration", "ValidatingWebhookConfiguration", "MutatingWebhookConfiguration"),
VersionPreferenceOrder: []string{v1alpha1.SchemeGroupVersion.Version},
AddInternalObjectsToScheme: admissionregistration.AddToScheme,
},
diff --git a/pkg/apis/admissionregistration/register.go b/pkg/apis/admissionregistration/register.go
index 1fe291a8f2..941259ce62 100644
--- a/pkg/apis/admissionregistration/register.go
+++ b/pkg/apis/admissionregistration/register.go
@@ -46,8 +46,10 @@ func addKnownTypes(scheme *runtime.Scheme) error {
scheme.AddKnownTypes(SchemeGroupVersion,
&InitializerConfiguration{},
&InitializerConfigurationList{},
- &ExternalAdmissionHookConfiguration{},
- &ExternalAdmissionHookConfigurationList{},
+ &ValidatingWebhookConfiguration{},
+ &ValidatingWebhookConfigurationList{},
+ &MutatingWebhookConfiguration{},
+ &MutatingWebhookConfigurationList{},
)
return nil
}
diff --git a/pkg/apis/admissionregistration/types.go b/pkg/apis/admissionregistration/types.go
index c7fece5f29..091782b81a 100644
--- a/pkg/apis/admissionregistration/types.go
+++ b/pkg/apis/admissionregistration/types.go
@@ -118,35 +118,61 @@ const (
// +genclient:nonNamespaced
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-// ExternalAdmissionHookConfiguration describes the configuration of initializers.
-type ExternalAdmissionHookConfiguration struct {
+// ValidatingWebhookConfiguration describes the configuration of an admission webhook that accepts or rejects and object without changing it.
+type ValidatingWebhookConfiguration struct {
metav1.TypeMeta
// Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.
// +optional
metav1.ObjectMeta
- // ExternalAdmissionHooks is a list of external admission webhooks and the
- // affected resources and operations.
+ // Webhooks is a list of webhooks and the affected resources and operations.
// +optional
- ExternalAdmissionHooks []ExternalAdmissionHook
+ Webhooks []Webhook
}
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-// ExternalAdmissionHookConfigurationList is a list of ExternalAdmissionHookConfiguration.
-type ExternalAdmissionHookConfigurationList struct {
+// ValidatingWebhookConfigurationList is a list of ValidatingWebhookConfiguration.
+type ValidatingWebhookConfigurationList struct {
metav1.TypeMeta
// Standard list metadata.
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
// +optional
metav1.ListMeta
- // List of ExternalAdmissionHookConfiguration.
- Items []ExternalAdmissionHookConfiguration
+ // List of ValidatingWebhookConfigurations.
+ Items []ValidatingWebhookConfiguration
}
-// ExternalAdmissionHook describes an external admission webhook and the
-// resources and operations it applies to.
-type ExternalAdmissionHook struct {
- // The name of the external admission webhook.
+// +genclient
+// +genclient:nonNamespaced
+// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
+
+// MutatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and may change the object.
+type MutatingWebhookConfiguration struct {
+ metav1.TypeMeta
+ // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.
+ // +optional
+ metav1.ObjectMeta
+ // Webhooks is a list of webhooks and the affected resources and operations.
+ // +optional
+ Webhooks []Webhook
+}
+
+// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
+
+// MutatingWebhookConfigurationList is a list of MutatingWebhookConfiguration.
+type MutatingWebhookConfigurationList struct {
+ metav1.TypeMeta
+ // Standard list metadata.
+ // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
+ // +optional
+ metav1.ListMeta
+ // List of MutatingWebhookConfiguration.
+ Items []MutatingWebhookConfiguration
+}
+
+// Webhook describes an admission webhook and the resources and operations it applies to.
+type Webhook struct {
+ // The name of the admission webhook.
// Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where
// "imagepolicy" is the name of the webhook, and kubernetes.io is the name
// of the organization.
@@ -155,7 +181,7 @@ type ExternalAdmissionHook struct {
// ClientConfig defines how to communicate with the hook.
// Required
- ClientConfig AdmissionHookClientConfig
+ ClientConfig WebhookClientConfig
// Rules describes what operations on what resources/subresources the webhook cares about.
// The webhook cares about an operation if it matches _any_ Rule.
@@ -165,6 +191,52 @@ type ExternalAdmissionHook struct {
// allowed values are Ignore or Fail. Defaults to Ignore.
// +optional
FailurePolicy *FailurePolicyType
+
+ // NamespaceSelector decides whether to run the webhook on an object based
+ // on whether the namespace for that object matches the selector. If the
+ // object itself is a namespace, the matching is performed on
+ // object.metadata.labels. If the object is other cluster scoped resource,
+ // it is not subjected to the webhook.
+ //
+ // For example, to run the webhook on any objects whose namespace is not
+ // associated with "runlevel" of "0" or "1"; you will set the selector as
+ // follows:
+ // "namespaceSelector": {
+ // "matchExpressions": [
+ // {
+ // "key": "runlevel",
+ // "operator": "NotIn",
+ // "values": [
+ // "0",
+ // "1"
+ // ]
+ // }
+ // ]
+ // }
+ //
+ // If instead you want to only run the webhook on any objects whose
+ // namespace is associated with the "environment" of "prod" or "staging";
+ // you will set the selector as follows:
+ // "namespaceSelector": {
+ // "matchExpressions": [
+ // {
+ // "key": "environment",
+ // "operator": "In",
+ // "values": [
+ // "prod",
+ // "staging"
+ // ]
+ // }
+ // ]
+ // }
+ //
+ // See
+ // https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
+ // for more examples of label selectors.
+ //
+ // Default to the empty LabelSelector, which matches everything.
+ // +optional
+ NamespaceSelector *metav1.LabelSelector
}
// RuleWithOperations is a tuple of Operations and Resources. It is recommended to make
@@ -191,29 +263,67 @@ const (
Connect OperationType = "CONNECT"
)
-// AdmissionHookClientConfig contains the information to make a TLS
+// WebhookClientConfig contains the information to make a TLS
// connection with the webhook
-type AdmissionHookClientConfig struct {
- // Service is a reference to the service for this webhook. If there is only
- // one port open for the service, that port will be used. If there are multiple
- // ports open, port 443 will be used if it is open, otherwise it is an error.
- // Required
- Service ServiceReference
+type WebhookClientConfig struct {
+ // `url` gives the location of the webhook, in standard URL form
+ // (`[scheme://]host:port/path`). Exactly one of `url` or `service`
+ // must be specified.
+ //
+ // The `host` should not refer to a service running in the cluster; use
+ // the `service` field instead. The host might be resolved via external
+ // DNS in some apiservers (e.g., `kube-apiserver` cannot resolve
+ // in-cluster DNS as that would be a layering violation). `host` may
+ // also be an IP address.
+ //
+ // Please note that using `localhost` or `127.0.0.1` as a `host` is
+ // risky unless you take great care to run this webhook on all hosts
+ // which run an apiserver which might need to make calls to this
+ // webhook. Such installs are likely to be non-portable, i.e., not easy
+ // to turn up in a new cluster.
+ //
+ // The scheme must be "https"; the URL must begin with "https://".
+ //
+ // A path is optional, and if present may be any string permissible in
+ // a URL. You may use the path to pass an arbitrary string to the
+ // webhook, for example, a cluster identifier.
+ //
+ // Attempting to use a user or basic auth e.g. "user:password@" is not
+ // allowed. Fragments ("#...") and query parameters ("?...") are not
+ // allowed, either.
+ //
+ // +optional
+ URL *string
- // URLPath is an optional field that specifies the URL path to use when posting the AdmissionReview object.
- URLPath string
+ // `service` is a reference to the service for this webhook. Either
+ // `service` or `url` must be specified.
+ //
+ // If the webhook is running within the cluster, then you should use `service`.
+ //
+ // If there is only one port open for the service, that port will be
+ // used. If there are multiple ports open, port 443 will be used if it
+ // is open, otherwise it is an error.
+ //
+ // +optional
+ Service *ServiceReference
- // CABundle is a PEM encoded CA bundle which will be used to validate webhook's server certificate.
- // Required
+ // `caBundle` is a PEM encoded CA bundle which will be used to validate
+ // the webhook's server certificate.
+ // Required.
CABundle []byte
}
// ServiceReference holds a reference to Service.legacy.k8s.io
type ServiceReference struct {
- // Namespace is the namespace of the service
+ // `namespace` is the namespace of the service.
// Required
Namespace string
- // Name is the name of the service
+ // `name` is the name of the service.
// Required
Name string
+
+ // `path` is an optional URL path which will be sent in any request to
+ // this service.
+ // +optional
+ Path *string
}
diff --git a/pkg/apis/admissionregistration/v1alpha1/BUILD b/pkg/apis/admissionregistration/v1alpha1/BUILD
index 81773c8a9c..b23347bd22 100644
--- a/pkg/apis/admissionregistration/v1alpha1/BUILD
+++ b/pkg/apis/admissionregistration/v1alpha1/BUILD
@@ -18,6 +18,7 @@ go_library(
deps = [
"//pkg/apis/admissionregistration:go_default_library",
"//vendor/k8s.io/api/admissionregistration/v1alpha1:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
diff --git a/pkg/apis/admissionregistration/v1alpha1/defaults.go b/pkg/apis/admissionregistration/v1alpha1/defaults.go
index 92a37ad1cc..3170c28727 100644
--- a/pkg/apis/admissionregistration/v1alpha1/defaults.go
+++ b/pkg/apis/admissionregistration/v1alpha1/defaults.go
@@ -18,6 +18,7 @@ package v1alpha1
import (
admissionregistrationv1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
)
@@ -25,9 +26,13 @@ func addDefaultingFuncs(scheme *runtime.Scheme) error {
return RegisterDefaults(scheme)
}
-func SetDefaults_ExternalAdmissionHook(obj *admissionregistrationv1alpha1.ExternalAdmissionHook) {
+func SetDefaults_Webhook(obj *admissionregistrationv1alpha1.Webhook) {
if obj.FailurePolicy == nil {
policy := admissionregistrationv1alpha1.Ignore
obj.FailurePolicy = &policy
}
+ if obj.NamespaceSelector == nil {
+ selector := metav1.LabelSelector{}
+ obj.NamespaceSelector = &selector
+ }
}
diff --git a/pkg/apis/admissionregistration/v1alpha1/doc.go b/pkg/apis/admissionregistration/v1alpha1/doc.go
index 50945b2ee4..99bc92f308 100644
--- a/pkg/apis/admissionregistration/v1alpha1/doc.go
+++ b/pkg/apis/admissionregistration/v1alpha1/doc.go
@@ -21,7 +21,7 @@ limitations under the License.
// Package v1alpha1 is the v1alpha1 version of the API.
// AdmissionConfiguration and AdmissionPluginConfiguration are legacy static admission plugin configuration
-// admissionregistrationv1alpha1.InitializerConfiguration and admissionregistrationv1alpha1.ExternalAdmissionHookConfiguration is for the
+// InitializerConfiguration, ValidatingWebhookConfiguration, and MutatingWebhookConfiguration are for the
// new dynamic admission controller configuration.
// +groupName=admissionregistration.k8s.io
package v1alpha1 // import "k8s.io/kubernetes/pkg/apis/admissionregistration/v1alpha1"
diff --git a/pkg/apis/admissionregistration/v1alpha1/zz_generated.conversion.go b/pkg/apis/admissionregistration/v1alpha1/zz_generated.conversion.go
index 792254ba65..4e71bd69d8 100644
--- a/pkg/apis/admissionregistration/v1alpha1/zz_generated.conversion.go
+++ b/pkg/apis/admissionregistration/v1alpha1/zz_generated.conversion.go
@@ -22,6 +22,7 @@ package v1alpha1
import (
v1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
admissionregistration "k8s.io/kubernetes/pkg/apis/admissionregistration"
@@ -36,131 +37,33 @@ func init() {
// Public to allow building arbitrary schemes.
func RegisterConversions(scheme *runtime.Scheme) error {
return scheme.AddGeneratedConversionFuncs(
- Convert_v1alpha1_AdmissionHookClientConfig_To_admissionregistration_AdmissionHookClientConfig,
- Convert_admissionregistration_AdmissionHookClientConfig_To_v1alpha1_AdmissionHookClientConfig,
- Convert_v1alpha1_ExternalAdmissionHook_To_admissionregistration_ExternalAdmissionHook,
- Convert_admissionregistration_ExternalAdmissionHook_To_v1alpha1_ExternalAdmissionHook,
- Convert_v1alpha1_ExternalAdmissionHookConfiguration_To_admissionregistration_ExternalAdmissionHookConfiguration,
- Convert_admissionregistration_ExternalAdmissionHookConfiguration_To_v1alpha1_ExternalAdmissionHookConfiguration,
- Convert_v1alpha1_ExternalAdmissionHookConfigurationList_To_admissionregistration_ExternalAdmissionHookConfigurationList,
- Convert_admissionregistration_ExternalAdmissionHookConfigurationList_To_v1alpha1_ExternalAdmissionHookConfigurationList,
Convert_v1alpha1_Initializer_To_admissionregistration_Initializer,
Convert_admissionregistration_Initializer_To_v1alpha1_Initializer,
Convert_v1alpha1_InitializerConfiguration_To_admissionregistration_InitializerConfiguration,
Convert_admissionregistration_InitializerConfiguration_To_v1alpha1_InitializerConfiguration,
Convert_v1alpha1_InitializerConfigurationList_To_admissionregistration_InitializerConfigurationList,
Convert_admissionregistration_InitializerConfigurationList_To_v1alpha1_InitializerConfigurationList,
+ Convert_v1alpha1_MutatingWebhookConfiguration_To_admissionregistration_MutatingWebhookConfiguration,
+ Convert_admissionregistration_MutatingWebhookConfiguration_To_v1alpha1_MutatingWebhookConfiguration,
+ Convert_v1alpha1_MutatingWebhookConfigurationList_To_admissionregistration_MutatingWebhookConfigurationList,
+ Convert_admissionregistration_MutatingWebhookConfigurationList_To_v1alpha1_MutatingWebhookConfigurationList,
Convert_v1alpha1_Rule_To_admissionregistration_Rule,
Convert_admissionregistration_Rule_To_v1alpha1_Rule,
Convert_v1alpha1_RuleWithOperations_To_admissionregistration_RuleWithOperations,
Convert_admissionregistration_RuleWithOperations_To_v1alpha1_RuleWithOperations,
Convert_v1alpha1_ServiceReference_To_admissionregistration_ServiceReference,
Convert_admissionregistration_ServiceReference_To_v1alpha1_ServiceReference,
+ Convert_v1alpha1_ValidatingWebhookConfiguration_To_admissionregistration_ValidatingWebhookConfiguration,
+ Convert_admissionregistration_ValidatingWebhookConfiguration_To_v1alpha1_ValidatingWebhookConfiguration,
+ Convert_v1alpha1_ValidatingWebhookConfigurationList_To_admissionregistration_ValidatingWebhookConfigurationList,
+ Convert_admissionregistration_ValidatingWebhookConfigurationList_To_v1alpha1_ValidatingWebhookConfigurationList,
+ Convert_v1alpha1_Webhook_To_admissionregistration_Webhook,
+ Convert_admissionregistration_Webhook_To_v1alpha1_Webhook,
+ Convert_v1alpha1_WebhookClientConfig_To_admissionregistration_WebhookClientConfig,
+ Convert_admissionregistration_WebhookClientConfig_To_v1alpha1_WebhookClientConfig,
)
}
-func autoConvert_v1alpha1_AdmissionHookClientConfig_To_admissionregistration_AdmissionHookClientConfig(in *v1alpha1.AdmissionHookClientConfig, out *admissionregistration.AdmissionHookClientConfig, s conversion.Scope) error {
- if err := Convert_v1alpha1_ServiceReference_To_admissionregistration_ServiceReference(&in.Service, &out.Service, s); err != nil {
- return err
- }
- out.URLPath = in.URLPath
- out.CABundle = *(*[]byte)(unsafe.Pointer(&in.CABundle))
- return nil
-}
-
-// Convert_v1alpha1_AdmissionHookClientConfig_To_admissionregistration_AdmissionHookClientConfig is an autogenerated conversion function.
-func Convert_v1alpha1_AdmissionHookClientConfig_To_admissionregistration_AdmissionHookClientConfig(in *v1alpha1.AdmissionHookClientConfig, out *admissionregistration.AdmissionHookClientConfig, s conversion.Scope) error {
- return autoConvert_v1alpha1_AdmissionHookClientConfig_To_admissionregistration_AdmissionHookClientConfig(in, out, s)
-}
-
-func autoConvert_admissionregistration_AdmissionHookClientConfig_To_v1alpha1_AdmissionHookClientConfig(in *admissionregistration.AdmissionHookClientConfig, out *v1alpha1.AdmissionHookClientConfig, s conversion.Scope) error {
- if err := Convert_admissionregistration_ServiceReference_To_v1alpha1_ServiceReference(&in.Service, &out.Service, s); err != nil {
- return err
- }
- out.URLPath = in.URLPath
- out.CABundle = *(*[]byte)(unsafe.Pointer(&in.CABundle))
- return nil
-}
-
-// Convert_admissionregistration_AdmissionHookClientConfig_To_v1alpha1_AdmissionHookClientConfig is an autogenerated conversion function.
-func Convert_admissionregistration_AdmissionHookClientConfig_To_v1alpha1_AdmissionHookClientConfig(in *admissionregistration.AdmissionHookClientConfig, out *v1alpha1.AdmissionHookClientConfig, s conversion.Scope) error {
- return autoConvert_admissionregistration_AdmissionHookClientConfig_To_v1alpha1_AdmissionHookClientConfig(in, out, s)
-}
-
-func autoConvert_v1alpha1_ExternalAdmissionHook_To_admissionregistration_ExternalAdmissionHook(in *v1alpha1.ExternalAdmissionHook, out *admissionregistration.ExternalAdmissionHook, s conversion.Scope) error {
- out.Name = in.Name
- if err := Convert_v1alpha1_AdmissionHookClientConfig_To_admissionregistration_AdmissionHookClientConfig(&in.ClientConfig, &out.ClientConfig, s); err != nil {
- return err
- }
- out.Rules = *(*[]admissionregistration.RuleWithOperations)(unsafe.Pointer(&in.Rules))
- out.FailurePolicy = (*admissionregistration.FailurePolicyType)(unsafe.Pointer(in.FailurePolicy))
- return nil
-}
-
-// Convert_v1alpha1_ExternalAdmissionHook_To_admissionregistration_ExternalAdmissionHook is an autogenerated conversion function.
-func Convert_v1alpha1_ExternalAdmissionHook_To_admissionregistration_ExternalAdmissionHook(in *v1alpha1.ExternalAdmissionHook, out *admissionregistration.ExternalAdmissionHook, s conversion.Scope) error {
- return autoConvert_v1alpha1_ExternalAdmissionHook_To_admissionregistration_ExternalAdmissionHook(in, out, s)
-}
-
-func autoConvert_admissionregistration_ExternalAdmissionHook_To_v1alpha1_ExternalAdmissionHook(in *admissionregistration.ExternalAdmissionHook, out *v1alpha1.ExternalAdmissionHook, s conversion.Scope) error {
- out.Name = in.Name
- if err := Convert_admissionregistration_AdmissionHookClientConfig_To_v1alpha1_AdmissionHookClientConfig(&in.ClientConfig, &out.ClientConfig, s); err != nil {
- return err
- }
- out.Rules = *(*[]v1alpha1.RuleWithOperations)(unsafe.Pointer(&in.Rules))
- out.FailurePolicy = (*v1alpha1.FailurePolicyType)(unsafe.Pointer(in.FailurePolicy))
- return nil
-}
-
-// Convert_admissionregistration_ExternalAdmissionHook_To_v1alpha1_ExternalAdmissionHook is an autogenerated conversion function.
-func Convert_admissionregistration_ExternalAdmissionHook_To_v1alpha1_ExternalAdmissionHook(in *admissionregistration.ExternalAdmissionHook, out *v1alpha1.ExternalAdmissionHook, s conversion.Scope) error {
- return autoConvert_admissionregistration_ExternalAdmissionHook_To_v1alpha1_ExternalAdmissionHook(in, out, s)
-}
-
-func autoConvert_v1alpha1_ExternalAdmissionHookConfiguration_To_admissionregistration_ExternalAdmissionHookConfiguration(in *v1alpha1.ExternalAdmissionHookConfiguration, out *admissionregistration.ExternalAdmissionHookConfiguration, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- out.ExternalAdmissionHooks = *(*[]admissionregistration.ExternalAdmissionHook)(unsafe.Pointer(&in.ExternalAdmissionHooks))
- return nil
-}
-
-// Convert_v1alpha1_ExternalAdmissionHookConfiguration_To_admissionregistration_ExternalAdmissionHookConfiguration is an autogenerated conversion function.
-func Convert_v1alpha1_ExternalAdmissionHookConfiguration_To_admissionregistration_ExternalAdmissionHookConfiguration(in *v1alpha1.ExternalAdmissionHookConfiguration, out *admissionregistration.ExternalAdmissionHookConfiguration, s conversion.Scope) error {
- return autoConvert_v1alpha1_ExternalAdmissionHookConfiguration_To_admissionregistration_ExternalAdmissionHookConfiguration(in, out, s)
-}
-
-func autoConvert_admissionregistration_ExternalAdmissionHookConfiguration_To_v1alpha1_ExternalAdmissionHookConfiguration(in *admissionregistration.ExternalAdmissionHookConfiguration, out *v1alpha1.ExternalAdmissionHookConfiguration, s conversion.Scope) error {
- out.ObjectMeta = in.ObjectMeta
- out.ExternalAdmissionHooks = *(*[]v1alpha1.ExternalAdmissionHook)(unsafe.Pointer(&in.ExternalAdmissionHooks))
- return nil
-}
-
-// Convert_admissionregistration_ExternalAdmissionHookConfiguration_To_v1alpha1_ExternalAdmissionHookConfiguration is an autogenerated conversion function.
-func Convert_admissionregistration_ExternalAdmissionHookConfiguration_To_v1alpha1_ExternalAdmissionHookConfiguration(in *admissionregistration.ExternalAdmissionHookConfiguration, out *v1alpha1.ExternalAdmissionHookConfiguration, s conversion.Scope) error {
- return autoConvert_admissionregistration_ExternalAdmissionHookConfiguration_To_v1alpha1_ExternalAdmissionHookConfiguration(in, out, s)
-}
-
-func autoConvert_v1alpha1_ExternalAdmissionHookConfigurationList_To_admissionregistration_ExternalAdmissionHookConfigurationList(in *v1alpha1.ExternalAdmissionHookConfigurationList, out *admissionregistration.ExternalAdmissionHookConfigurationList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- out.Items = *(*[]admissionregistration.ExternalAdmissionHookConfiguration)(unsafe.Pointer(&in.Items))
- return nil
-}
-
-// Convert_v1alpha1_ExternalAdmissionHookConfigurationList_To_admissionregistration_ExternalAdmissionHookConfigurationList is an autogenerated conversion function.
-func Convert_v1alpha1_ExternalAdmissionHookConfigurationList_To_admissionregistration_ExternalAdmissionHookConfigurationList(in *v1alpha1.ExternalAdmissionHookConfigurationList, out *admissionregistration.ExternalAdmissionHookConfigurationList, s conversion.Scope) error {
- return autoConvert_v1alpha1_ExternalAdmissionHookConfigurationList_To_admissionregistration_ExternalAdmissionHookConfigurationList(in, out, s)
-}
-
-func autoConvert_admissionregistration_ExternalAdmissionHookConfigurationList_To_v1alpha1_ExternalAdmissionHookConfigurationList(in *admissionregistration.ExternalAdmissionHookConfigurationList, out *v1alpha1.ExternalAdmissionHookConfigurationList, s conversion.Scope) error {
- out.ListMeta = in.ListMeta
- out.Items = *(*[]v1alpha1.ExternalAdmissionHookConfiguration)(unsafe.Pointer(&in.Items))
- return nil
-}
-
-// Convert_admissionregistration_ExternalAdmissionHookConfigurationList_To_v1alpha1_ExternalAdmissionHookConfigurationList is an autogenerated conversion function.
-func Convert_admissionregistration_ExternalAdmissionHookConfigurationList_To_v1alpha1_ExternalAdmissionHookConfigurationList(in *admissionregistration.ExternalAdmissionHookConfigurationList, out *v1alpha1.ExternalAdmissionHookConfigurationList, s conversion.Scope) error {
- return autoConvert_admissionregistration_ExternalAdmissionHookConfigurationList_To_v1alpha1_ExternalAdmissionHookConfigurationList(in, out, s)
-}
-
func autoConvert_v1alpha1_Initializer_To_admissionregistration_Initializer(in *v1alpha1.Initializer, out *admissionregistration.Initializer, s conversion.Scope) error {
out.Name = in.Name
out.Rules = *(*[]admissionregistration.Rule)(unsafe.Pointer(&in.Rules))
@@ -227,6 +130,50 @@ func Convert_admissionregistration_InitializerConfigurationList_To_v1alpha1_Init
return autoConvert_admissionregistration_InitializerConfigurationList_To_v1alpha1_InitializerConfigurationList(in, out, s)
}
+func autoConvert_v1alpha1_MutatingWebhookConfiguration_To_admissionregistration_MutatingWebhookConfiguration(in *v1alpha1.MutatingWebhookConfiguration, out *admissionregistration.MutatingWebhookConfiguration, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ out.Webhooks = *(*[]admissionregistration.Webhook)(unsafe.Pointer(&in.Webhooks))
+ return nil
+}
+
+// Convert_v1alpha1_MutatingWebhookConfiguration_To_admissionregistration_MutatingWebhookConfiguration is an autogenerated conversion function.
+func Convert_v1alpha1_MutatingWebhookConfiguration_To_admissionregistration_MutatingWebhookConfiguration(in *v1alpha1.MutatingWebhookConfiguration, out *admissionregistration.MutatingWebhookConfiguration, s conversion.Scope) error {
+ return autoConvert_v1alpha1_MutatingWebhookConfiguration_To_admissionregistration_MutatingWebhookConfiguration(in, out, s)
+}
+
+func autoConvert_admissionregistration_MutatingWebhookConfiguration_To_v1alpha1_MutatingWebhookConfiguration(in *admissionregistration.MutatingWebhookConfiguration, out *v1alpha1.MutatingWebhookConfiguration, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ out.Webhooks = *(*[]v1alpha1.Webhook)(unsafe.Pointer(&in.Webhooks))
+ return nil
+}
+
+// Convert_admissionregistration_MutatingWebhookConfiguration_To_v1alpha1_MutatingWebhookConfiguration is an autogenerated conversion function.
+func Convert_admissionregistration_MutatingWebhookConfiguration_To_v1alpha1_MutatingWebhookConfiguration(in *admissionregistration.MutatingWebhookConfiguration, out *v1alpha1.MutatingWebhookConfiguration, s conversion.Scope) error {
+ return autoConvert_admissionregistration_MutatingWebhookConfiguration_To_v1alpha1_MutatingWebhookConfiguration(in, out, s)
+}
+
+func autoConvert_v1alpha1_MutatingWebhookConfigurationList_To_admissionregistration_MutatingWebhookConfigurationList(in *v1alpha1.MutatingWebhookConfigurationList, out *admissionregistration.MutatingWebhookConfigurationList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ out.Items = *(*[]admissionregistration.MutatingWebhookConfiguration)(unsafe.Pointer(&in.Items))
+ return nil
+}
+
+// Convert_v1alpha1_MutatingWebhookConfigurationList_To_admissionregistration_MutatingWebhookConfigurationList is an autogenerated conversion function.
+func Convert_v1alpha1_MutatingWebhookConfigurationList_To_admissionregistration_MutatingWebhookConfigurationList(in *v1alpha1.MutatingWebhookConfigurationList, out *admissionregistration.MutatingWebhookConfigurationList, s conversion.Scope) error {
+ return autoConvert_v1alpha1_MutatingWebhookConfigurationList_To_admissionregistration_MutatingWebhookConfigurationList(in, out, s)
+}
+
+func autoConvert_admissionregistration_MutatingWebhookConfigurationList_To_v1alpha1_MutatingWebhookConfigurationList(in *admissionregistration.MutatingWebhookConfigurationList, out *v1alpha1.MutatingWebhookConfigurationList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ out.Items = *(*[]v1alpha1.MutatingWebhookConfiguration)(unsafe.Pointer(&in.Items))
+ return nil
+}
+
+// Convert_admissionregistration_MutatingWebhookConfigurationList_To_v1alpha1_MutatingWebhookConfigurationList is an autogenerated conversion function.
+func Convert_admissionregistration_MutatingWebhookConfigurationList_To_v1alpha1_MutatingWebhookConfigurationList(in *admissionregistration.MutatingWebhookConfigurationList, out *v1alpha1.MutatingWebhookConfigurationList, s conversion.Scope) error {
+ return autoConvert_admissionregistration_MutatingWebhookConfigurationList_To_v1alpha1_MutatingWebhookConfigurationList(in, out, s)
+}
+
func autoConvert_v1alpha1_Rule_To_admissionregistration_Rule(in *v1alpha1.Rule, out *admissionregistration.Rule, s conversion.Scope) error {
out.APIGroups = *(*[]string)(unsafe.Pointer(&in.APIGroups))
out.APIVersions = *(*[]string)(unsafe.Pointer(&in.APIVersions))
@@ -280,6 +227,7 @@ func Convert_admissionregistration_RuleWithOperations_To_v1alpha1_RuleWithOperat
func autoConvert_v1alpha1_ServiceReference_To_admissionregistration_ServiceReference(in *v1alpha1.ServiceReference, out *admissionregistration.ServiceReference, s conversion.Scope) error {
out.Namespace = in.Namespace
out.Name = in.Name
+ out.Path = (*string)(unsafe.Pointer(in.Path))
return nil
}
@@ -291,6 +239,7 @@ func Convert_v1alpha1_ServiceReference_To_admissionregistration_ServiceReference
func autoConvert_admissionregistration_ServiceReference_To_v1alpha1_ServiceReference(in *admissionregistration.ServiceReference, out *v1alpha1.ServiceReference, s conversion.Scope) error {
out.Namespace = in.Namespace
out.Name = in.Name
+ out.Path = (*string)(unsafe.Pointer(in.Path))
return nil
}
@@ -298,3 +247,103 @@ func autoConvert_admissionregistration_ServiceReference_To_v1alpha1_ServiceRefer
func Convert_admissionregistration_ServiceReference_To_v1alpha1_ServiceReference(in *admissionregistration.ServiceReference, out *v1alpha1.ServiceReference, s conversion.Scope) error {
return autoConvert_admissionregistration_ServiceReference_To_v1alpha1_ServiceReference(in, out, s)
}
+
+func autoConvert_v1alpha1_ValidatingWebhookConfiguration_To_admissionregistration_ValidatingWebhookConfiguration(in *v1alpha1.ValidatingWebhookConfiguration, out *admissionregistration.ValidatingWebhookConfiguration, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ out.Webhooks = *(*[]admissionregistration.Webhook)(unsafe.Pointer(&in.Webhooks))
+ return nil
+}
+
+// Convert_v1alpha1_ValidatingWebhookConfiguration_To_admissionregistration_ValidatingWebhookConfiguration is an autogenerated conversion function.
+func Convert_v1alpha1_ValidatingWebhookConfiguration_To_admissionregistration_ValidatingWebhookConfiguration(in *v1alpha1.ValidatingWebhookConfiguration, out *admissionregistration.ValidatingWebhookConfiguration, s conversion.Scope) error {
+ return autoConvert_v1alpha1_ValidatingWebhookConfiguration_To_admissionregistration_ValidatingWebhookConfiguration(in, out, s)
+}
+
+func autoConvert_admissionregistration_ValidatingWebhookConfiguration_To_v1alpha1_ValidatingWebhookConfiguration(in *admissionregistration.ValidatingWebhookConfiguration, out *v1alpha1.ValidatingWebhookConfiguration, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ out.Webhooks = *(*[]v1alpha1.Webhook)(unsafe.Pointer(&in.Webhooks))
+ return nil
+}
+
+// Convert_admissionregistration_ValidatingWebhookConfiguration_To_v1alpha1_ValidatingWebhookConfiguration is an autogenerated conversion function.
+func Convert_admissionregistration_ValidatingWebhookConfiguration_To_v1alpha1_ValidatingWebhookConfiguration(in *admissionregistration.ValidatingWebhookConfiguration, out *v1alpha1.ValidatingWebhookConfiguration, s conversion.Scope) error {
+ return autoConvert_admissionregistration_ValidatingWebhookConfiguration_To_v1alpha1_ValidatingWebhookConfiguration(in, out, s)
+}
+
+func autoConvert_v1alpha1_ValidatingWebhookConfigurationList_To_admissionregistration_ValidatingWebhookConfigurationList(in *v1alpha1.ValidatingWebhookConfigurationList, out *admissionregistration.ValidatingWebhookConfigurationList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ out.Items = *(*[]admissionregistration.ValidatingWebhookConfiguration)(unsafe.Pointer(&in.Items))
+ return nil
+}
+
+// Convert_v1alpha1_ValidatingWebhookConfigurationList_To_admissionregistration_ValidatingWebhookConfigurationList is an autogenerated conversion function.
+func Convert_v1alpha1_ValidatingWebhookConfigurationList_To_admissionregistration_ValidatingWebhookConfigurationList(in *v1alpha1.ValidatingWebhookConfigurationList, out *admissionregistration.ValidatingWebhookConfigurationList, s conversion.Scope) error {
+ return autoConvert_v1alpha1_ValidatingWebhookConfigurationList_To_admissionregistration_ValidatingWebhookConfigurationList(in, out, s)
+}
+
+func autoConvert_admissionregistration_ValidatingWebhookConfigurationList_To_v1alpha1_ValidatingWebhookConfigurationList(in *admissionregistration.ValidatingWebhookConfigurationList, out *v1alpha1.ValidatingWebhookConfigurationList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ out.Items = *(*[]v1alpha1.ValidatingWebhookConfiguration)(unsafe.Pointer(&in.Items))
+ return nil
+}
+
+// Convert_admissionregistration_ValidatingWebhookConfigurationList_To_v1alpha1_ValidatingWebhookConfigurationList is an autogenerated conversion function.
+func Convert_admissionregistration_ValidatingWebhookConfigurationList_To_v1alpha1_ValidatingWebhookConfigurationList(in *admissionregistration.ValidatingWebhookConfigurationList, out *v1alpha1.ValidatingWebhookConfigurationList, s conversion.Scope) error {
+ return autoConvert_admissionregistration_ValidatingWebhookConfigurationList_To_v1alpha1_ValidatingWebhookConfigurationList(in, out, s)
+}
+
+func autoConvert_v1alpha1_Webhook_To_admissionregistration_Webhook(in *v1alpha1.Webhook, out *admissionregistration.Webhook, s conversion.Scope) error {
+ out.Name = in.Name
+ if err := Convert_v1alpha1_WebhookClientConfig_To_admissionregistration_WebhookClientConfig(&in.ClientConfig, &out.ClientConfig, s); err != nil {
+ return err
+ }
+ out.Rules = *(*[]admissionregistration.RuleWithOperations)(unsafe.Pointer(&in.Rules))
+ out.FailurePolicy = (*admissionregistration.FailurePolicyType)(unsafe.Pointer(in.FailurePolicy))
+ out.NamespaceSelector = (*v1.LabelSelector)(unsafe.Pointer(in.NamespaceSelector))
+ return nil
+}
+
+// Convert_v1alpha1_Webhook_To_admissionregistration_Webhook is an autogenerated conversion function.
+func Convert_v1alpha1_Webhook_To_admissionregistration_Webhook(in *v1alpha1.Webhook, out *admissionregistration.Webhook, s conversion.Scope) error {
+ return autoConvert_v1alpha1_Webhook_To_admissionregistration_Webhook(in, out, s)
+}
+
+func autoConvert_admissionregistration_Webhook_To_v1alpha1_Webhook(in *admissionregistration.Webhook, out *v1alpha1.Webhook, s conversion.Scope) error {
+ out.Name = in.Name
+ if err := Convert_admissionregistration_WebhookClientConfig_To_v1alpha1_WebhookClientConfig(&in.ClientConfig, &out.ClientConfig, s); err != nil {
+ return err
+ }
+ out.Rules = *(*[]v1alpha1.RuleWithOperations)(unsafe.Pointer(&in.Rules))
+ out.FailurePolicy = (*v1alpha1.FailurePolicyType)(unsafe.Pointer(in.FailurePolicy))
+ out.NamespaceSelector = (*v1.LabelSelector)(unsafe.Pointer(in.NamespaceSelector))
+ return nil
+}
+
+// Convert_admissionregistration_Webhook_To_v1alpha1_Webhook is an autogenerated conversion function.
+func Convert_admissionregistration_Webhook_To_v1alpha1_Webhook(in *admissionregistration.Webhook, out *v1alpha1.Webhook, s conversion.Scope) error {
+ return autoConvert_admissionregistration_Webhook_To_v1alpha1_Webhook(in, out, s)
+}
+
+func autoConvert_v1alpha1_WebhookClientConfig_To_admissionregistration_WebhookClientConfig(in *v1alpha1.WebhookClientConfig, out *admissionregistration.WebhookClientConfig, s conversion.Scope) error {
+ out.URL = (*string)(unsafe.Pointer(in.URL))
+ out.Service = (*admissionregistration.ServiceReference)(unsafe.Pointer(in.Service))
+ out.CABundle = *(*[]byte)(unsafe.Pointer(&in.CABundle))
+ return nil
+}
+
+// Convert_v1alpha1_WebhookClientConfig_To_admissionregistration_WebhookClientConfig is an autogenerated conversion function.
+func Convert_v1alpha1_WebhookClientConfig_To_admissionregistration_WebhookClientConfig(in *v1alpha1.WebhookClientConfig, out *admissionregistration.WebhookClientConfig, s conversion.Scope) error {
+ return autoConvert_v1alpha1_WebhookClientConfig_To_admissionregistration_WebhookClientConfig(in, out, s)
+}
+
+func autoConvert_admissionregistration_WebhookClientConfig_To_v1alpha1_WebhookClientConfig(in *admissionregistration.WebhookClientConfig, out *v1alpha1.WebhookClientConfig, s conversion.Scope) error {
+ out.URL = (*string)(unsafe.Pointer(in.URL))
+ out.Service = (*v1alpha1.ServiceReference)(unsafe.Pointer(in.Service))
+ out.CABundle = *(*[]byte)(unsafe.Pointer(&in.CABundle))
+ return nil
+}
+
+// Convert_admissionregistration_WebhookClientConfig_To_v1alpha1_WebhookClientConfig is an autogenerated conversion function.
+func Convert_admissionregistration_WebhookClientConfig_To_v1alpha1_WebhookClientConfig(in *admissionregistration.WebhookClientConfig, out *v1alpha1.WebhookClientConfig, s conversion.Scope) error {
+ return autoConvert_admissionregistration_WebhookClientConfig_To_v1alpha1_WebhookClientConfig(in, out, s)
+}
diff --git a/pkg/apis/admissionregistration/v1alpha1/zz_generated.defaults.go b/pkg/apis/admissionregistration/v1alpha1/zz_generated.defaults.go
index da214c5d95..02749f57b5 100644
--- a/pkg/apis/admissionregistration/v1alpha1/zz_generated.defaults.go
+++ b/pkg/apis/admissionregistration/v1alpha1/zz_generated.defaults.go
@@ -29,25 +29,45 @@ import (
// Public to allow building arbitrary schemes.
// All generated defaulters are covering - they call all nested defaulters.
func RegisterDefaults(scheme *runtime.Scheme) error {
- scheme.AddTypeDefaultingFunc(&v1alpha1.ExternalAdmissionHookConfiguration{}, func(obj interface{}) {
- SetObjectDefaults_ExternalAdmissionHookConfiguration(obj.(*v1alpha1.ExternalAdmissionHookConfiguration))
+ scheme.AddTypeDefaultingFunc(&v1alpha1.MutatingWebhookConfiguration{}, func(obj interface{}) {
+ SetObjectDefaults_MutatingWebhookConfiguration(obj.(*v1alpha1.MutatingWebhookConfiguration))
})
- scheme.AddTypeDefaultingFunc(&v1alpha1.ExternalAdmissionHookConfigurationList{}, func(obj interface{}) {
- SetObjectDefaults_ExternalAdmissionHookConfigurationList(obj.(*v1alpha1.ExternalAdmissionHookConfigurationList))
+ scheme.AddTypeDefaultingFunc(&v1alpha1.MutatingWebhookConfigurationList{}, func(obj interface{}) {
+ SetObjectDefaults_MutatingWebhookConfigurationList(obj.(*v1alpha1.MutatingWebhookConfigurationList))
+ })
+ scheme.AddTypeDefaultingFunc(&v1alpha1.ValidatingWebhookConfiguration{}, func(obj interface{}) {
+ SetObjectDefaults_ValidatingWebhookConfiguration(obj.(*v1alpha1.ValidatingWebhookConfiguration))
+ })
+ scheme.AddTypeDefaultingFunc(&v1alpha1.ValidatingWebhookConfigurationList{}, func(obj interface{}) {
+ SetObjectDefaults_ValidatingWebhookConfigurationList(obj.(*v1alpha1.ValidatingWebhookConfigurationList))
})
return nil
}
-func SetObjectDefaults_ExternalAdmissionHookConfiguration(in *v1alpha1.ExternalAdmissionHookConfiguration) {
- for i := range in.ExternalAdmissionHooks {
- a := &in.ExternalAdmissionHooks[i]
- SetDefaults_ExternalAdmissionHook(a)
+func SetObjectDefaults_MutatingWebhookConfiguration(in *v1alpha1.MutatingWebhookConfiguration) {
+ for i := range in.Webhooks {
+ a := &in.Webhooks[i]
+ SetDefaults_Webhook(a)
}
}
-func SetObjectDefaults_ExternalAdmissionHookConfigurationList(in *v1alpha1.ExternalAdmissionHookConfigurationList) {
+func SetObjectDefaults_MutatingWebhookConfigurationList(in *v1alpha1.MutatingWebhookConfigurationList) {
for i := range in.Items {
a := &in.Items[i]
- SetObjectDefaults_ExternalAdmissionHookConfiguration(a)
+ SetObjectDefaults_MutatingWebhookConfiguration(a)
+ }
+}
+
+func SetObjectDefaults_ValidatingWebhookConfiguration(in *v1alpha1.ValidatingWebhookConfiguration) {
+ for i := range in.Webhooks {
+ a := &in.Webhooks[i]
+ SetDefaults_Webhook(a)
+ }
+}
+
+func SetObjectDefaults_ValidatingWebhookConfigurationList(in *v1alpha1.ValidatingWebhookConfigurationList) {
+ for i := range in.Items {
+ a := &in.Items[i]
+ SetObjectDefaults_ValidatingWebhookConfiguration(a)
}
}
diff --git a/pkg/apis/admissionregistration/validation/BUILD b/pkg/apis/admissionregistration/validation/BUILD
index ea318376b1..fa9e0a0fe9 100644
--- a/pkg/apis/admissionregistration/validation/BUILD
+++ b/pkg/apis/admissionregistration/validation/BUILD
@@ -24,6 +24,7 @@ go_library(
deps = [
"//pkg/apis/admissionregistration:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/validation:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
diff --git a/pkg/apis/admissionregistration/validation/validation.go b/pkg/apis/admissionregistration/validation/validation.go
index d7e7ac0435..958ebf4402 100644
--- a/pkg/apis/admissionregistration/validation/validation.go
+++ b/pkg/apis/admissionregistration/validation/validation.go
@@ -18,9 +18,11 @@ package validation
import (
"fmt"
+ "net/url"
"strings"
genericvalidation "k8s.io/apimachinery/pkg/api/validation"
+ metav1validation "k8s.io/apimachinery/pkg/apis/meta/v1/validation"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/validation"
"k8s.io/apimachinery/pkg/util/validation/field"
@@ -163,15 +165,23 @@ func ValidateInitializerConfigurationUpdate(newIC, oldIC *admissionregistration.
return ValidateInitializerConfiguration(newIC)
}
-func ValidateExternalAdmissionHookConfiguration(e *admissionregistration.ExternalAdmissionHookConfiguration) field.ErrorList {
+func ValidateValidatingWebhookConfiguration(e *admissionregistration.ValidatingWebhookConfiguration) field.ErrorList {
allErrors := genericvalidation.ValidateObjectMeta(&e.ObjectMeta, false, genericvalidation.NameIsDNSSubdomain, field.NewPath("metadata"))
- for i, hook := range e.ExternalAdmissionHooks {
- allErrors = append(allErrors, validateExternalAdmissionHook(&hook, field.NewPath("externalAdmissionHooks").Index(i))...)
+ for i, hook := range e.Webhooks {
+ allErrors = append(allErrors, validateWebhook(&hook, field.NewPath("webhooks").Index(i))...)
}
return allErrors
}
-func validateExternalAdmissionHook(hook *admissionregistration.ExternalAdmissionHook, fldPath *field.Path) field.ErrorList {
+func ValidateMutatingWebhookConfiguration(e *admissionregistration.MutatingWebhookConfiguration) field.ErrorList {
+ allErrors := genericvalidation.ValidateObjectMeta(&e.ObjectMeta, false, genericvalidation.NameIsDNSSubdomain, field.NewPath("metadata"))
+ for i, hook := range e.Webhooks {
+ allErrors = append(allErrors, validateWebhook(&hook, field.NewPath("webhooks").Index(i))...)
+ }
+ return allErrors
+}
+
+func validateWebhook(hook *admissionregistration.Webhook, fldPath *field.Path) field.ErrorList {
var allErrors field.ErrorList
// hook.Name must be fully qualified
allErrors = append(allErrors, validation.IsFullyQualifiedName(fldPath.Child("name"), hook.Name)...)
@@ -183,25 +193,78 @@ func validateExternalAdmissionHook(hook *admissionregistration.ExternalAdmission
allErrors = append(allErrors, field.NotSupported(fldPath.Child("failurePolicy"), *hook.FailurePolicy, supportedFailurePolicies.List()))
}
- if len(hook.ClientConfig.URLPath) != 0 {
- allErrors = append(allErrors, validateURLPath(fldPath.Child("clientConfig", "urlPath"), hook.ClientConfig.URLPath)...)
+ if hook.NamespaceSelector != nil {
+ allErrors = append(allErrors, metav1validation.ValidateLabelSelector(hook.NamespaceSelector, fldPath.Child("namespaceSelector"))...)
}
+ allErrors = append(allErrors, validateWebhookClientConfig(fldPath.Child("clientConfig"), &hook.ClientConfig)...)
+
return allErrors
}
-func validateURLPath(fldPath *field.Path, urlPath string) field.ErrorList {
+func validateWebhookClientConfig(fldPath *field.Path, cc *admissionregistration.WebhookClientConfig) field.ErrorList {
var allErrors field.ErrorList
+ if (cc.URL == nil) == (cc.Service == nil) {
+ allErrors = append(allErrors, field.Required(fldPath.Child("url"), "exactly one of url or service is required"))
+ }
+
+ if cc.URL != nil {
+ const form = "; desired format: https://host[/path]"
+ if u, err := url.Parse(*cc.URL); err != nil {
+ allErrors = append(allErrors, field.Required(fldPath.Child("url"), "url must be a valid URL: "+err.Error()+form))
+ } else {
+ if u.Scheme != "https" {
+ allErrors = append(allErrors, field.Invalid(fldPath.Child("url"), u.Scheme, "'https' is the only allowed URL scheme"+form))
+ }
+ if len(u.Host) == 0 {
+ allErrors = append(allErrors, field.Invalid(fldPath.Child("url"), u.Host, "host must be provided"+form))
+ }
+ if u.User != nil {
+ allErrors = append(allErrors, field.Invalid(fldPath.Child("url"), u.User.String(), "user information is not permitted in the URL"))
+ }
+ if len(u.Fragment) != 0 {
+ allErrors = append(allErrors, field.Invalid(fldPath.Child("url"), u.Fragment, "fragments are not permitted in the URL"))
+ }
+ if len(u.RawQuery) != 0 {
+ allErrors = append(allErrors, field.Invalid(fldPath.Child("url"), u.RawQuery, "query parameters are not permitted in the URL"))
+ }
+ }
+ }
+
+ if cc.Service != nil {
+ allErrors = append(allErrors, validateWebhookService(fldPath.Child("service"), cc.Service)...)
+ }
+ return allErrors
+}
+
+func validateWebhookService(fldPath *field.Path, svc *admissionregistration.ServiceReference) field.ErrorList {
+ var allErrors field.ErrorList
+
+ if len(svc.Name) == 0 {
+ allErrors = append(allErrors, field.Required(fldPath.Child("name"), "service name is required"))
+ }
+
+ if len(svc.Namespace) == 0 {
+ allErrors = append(allErrors, field.Required(fldPath.Child("namespace"), "service namespace is required"))
+ }
+
+ if svc.Path == nil {
+ return allErrors
+ }
+
+ // TODO: replace below with url.Parse + verifying that host is empty?
+
+ urlPath := *svc.Path
if urlPath == "/" || len(urlPath) == 0 {
return allErrors
}
if urlPath == "//" {
- allErrors = append(allErrors, field.Invalid(fldPath, urlPath, "segment[0] may not be empty"))
+ allErrors = append(allErrors, field.Invalid(fldPath.Child("path"), urlPath, "segment[0] may not be empty"))
return allErrors
}
if !strings.HasPrefix(urlPath, "/") {
- allErrors = append(allErrors, field.Invalid(fldPath, urlPath, "must start with a '/'"))
+ allErrors = append(allErrors, field.Invalid(fldPath.Child("path"), urlPath, "must start with a '/'"))
}
urlPathToCheck := urlPath[1:]
@@ -211,12 +274,12 @@ func validateURLPath(fldPath *field.Path, urlPath string) field.ErrorList {
steps := strings.Split(urlPathToCheck, "/")
for i, step := range steps {
if len(step) == 0 {
- allErrors = append(allErrors, field.Invalid(fldPath, urlPath, fmt.Sprintf("segment[%d] may not be empty", i)))
+ allErrors = append(allErrors, field.Invalid(fldPath.Child("path"), urlPath, fmt.Sprintf("segment[%d] may not be empty", i)))
continue
}
failures := validation.IsDNS1123Subdomain(step)
for _, failure := range failures {
- allErrors = append(allErrors, field.Invalid(fldPath, urlPath, fmt.Sprintf("segment[%d]: %v", i, failure)))
+ allErrors = append(allErrors, field.Invalid(fldPath.Child("path"), urlPath, fmt.Sprintf("segment[%d]: %v", i, failure)))
}
}
@@ -263,6 +326,10 @@ func validateRuleWithOperations(ruleWithOperations *admissionregistration.RuleWi
return allErrors
}
-func ValidateExternalAdmissionHookConfigurationUpdate(newC, oldC *admissionregistration.ExternalAdmissionHookConfiguration) field.ErrorList {
- return ValidateExternalAdmissionHookConfiguration(newC)
+func ValidateValidatingWebhookConfigurationUpdate(newC, oldC *admissionregistration.ValidatingWebhookConfiguration) field.ErrorList {
+ return ValidateValidatingWebhookConfiguration(newC)
+}
+
+func ValidateMutatingWebhookConfigurationUpdate(newC, oldC *admissionregistration.MutatingWebhookConfiguration) field.ErrorList {
+ return ValidateMutatingWebhookConfiguration(newC)
}
diff --git a/pkg/apis/admissionregistration/validation/validation_test.go b/pkg/apis/admissionregistration/validation/validation_test.go
index cd8f85edeb..5dd3fc551b 100644
--- a/pkg/apis/admissionregistration/validation/validation_test.go
+++ b/pkg/apis/admissionregistration/validation/validation_test.go
@@ -231,41 +231,51 @@ func TestValidateInitializerConfiguration(t *testing.T) {
}
}
-func getExternalAdmissionHookConfiguration(hooks []admissionregistration.ExternalAdmissionHook) *admissionregistration.ExternalAdmissionHookConfiguration {
- return &admissionregistration.ExternalAdmissionHookConfiguration{
+func strPtr(s string) *string { return &s }
+
+func newValidatingWebhookConfiguration(hooks []admissionregistration.Webhook) *admissionregistration.ValidatingWebhookConfiguration {
+ return &admissionregistration.ValidatingWebhookConfiguration{
ObjectMeta: metav1.ObjectMeta{
Name: "config",
},
- ExternalAdmissionHooks: hooks,
+ Webhooks: hooks,
}
}
-func TestValidateExternalAdmissionHookConfiguration(t *testing.T) {
+// TODO: Add TestValidateMutatingWebhookConfiguration to test validation for mutating webhooks.
+
+func TestValidateValidatingWebhookConfiguration(t *testing.T) {
+ validClientConfig := admissionregistration.WebhookClientConfig{
+ URL: strPtr("https://example.com"),
+ }
tests := []struct {
name string
- config *admissionregistration.ExternalAdmissionHookConfiguration
+ config *admissionregistration.ValidatingWebhookConfiguration
expectedError string
}{
{
- name: "all ExternalAdmissionHook must have a fully qualified name",
- config: getExternalAdmissionHookConfiguration(
- []admissionregistration.ExternalAdmissionHook{
+ name: "all Webhooks must have a fully qualified name",
+ config: newValidatingWebhookConfiguration(
+ []admissionregistration.Webhook{
{
- Name: "webhook.k8s.io",
+ Name: "webhook.k8s.io",
+ ClientConfig: validClientConfig,
},
{
- Name: "k8s.io",
+ Name: "k8s.io",
+ ClientConfig: validClientConfig,
},
{
- Name: "",
+ Name: "",
+ ClientConfig: validClientConfig,
},
}),
- expectedError: `externalAdmissionHooks[1].name: Invalid value: "k8s.io": should be a domain with at least three segments separated by dots, externalAdmissionHooks[2].name: Required value`,
+ expectedError: `webhooks[1].name: Invalid value: "k8s.io": should be a domain with at least three segments separated by dots, webhooks[2].name: Required value`,
},
{
name: "Operations must not be empty or nil",
- config: getExternalAdmissionHookConfiguration(
- []admissionregistration.ExternalAdmissionHook{
+ config: newValidatingWebhookConfiguration(
+ []admissionregistration.Webhook{
{
Name: "webhook.k8s.io",
Rules: []admissionregistration.RuleWithOperations{
@@ -288,12 +298,12 @@ func TestValidateExternalAdmissionHookConfiguration(t *testing.T) {
},
},
}),
- expectedError: `externalAdmissionHooks[0].rules[0].operations: Required value, externalAdmissionHooks[0].rules[1].operations: Required value`,
+ expectedError: `webhooks[0].rules[0].operations: Required value, webhooks[0].rules[1].operations: Required value`,
},
{
name: "\"\" is NOT a valid operation",
- config: getExternalAdmissionHookConfiguration(
- []admissionregistration.ExternalAdmissionHook{
+ config: newValidatingWebhookConfiguration(
+ []admissionregistration.Webhook{
{
Name: "webhook.k8s.io",
Rules: []admissionregistration.RuleWithOperations{
@@ -312,8 +322,8 @@ func TestValidateExternalAdmissionHookConfiguration(t *testing.T) {
},
{
name: "operation must be either create/update/delete/connect",
- config: getExternalAdmissionHookConfiguration(
- []admissionregistration.ExternalAdmissionHook{
+ config: newValidatingWebhookConfiguration(
+ []admissionregistration.Webhook{
{
Name: "webhook.k8s.io",
Rules: []admissionregistration.RuleWithOperations{
@@ -332,8 +342,8 @@ func TestValidateExternalAdmissionHookConfiguration(t *testing.T) {
},
{
name: "wildcard operation cannot be mixed with other strings",
- config: getExternalAdmissionHookConfiguration(
- []admissionregistration.ExternalAdmissionHook{
+ config: newValidatingWebhookConfiguration(
+ []admissionregistration.Webhook{
{
Name: "webhook.k8s.io",
Rules: []admissionregistration.RuleWithOperations{
@@ -352,10 +362,11 @@ func TestValidateExternalAdmissionHookConfiguration(t *testing.T) {
},
{
name: `resource "*" can co-exist with resources that have subresources`,
- config: getExternalAdmissionHookConfiguration(
- []admissionregistration.ExternalAdmissionHook{
+ config: newValidatingWebhookConfiguration(
+ []admissionregistration.Webhook{
{
- Name: "webhook.k8s.io",
+ Name: "webhook.k8s.io",
+ ClientConfig: validClientConfig,
Rules: []admissionregistration.RuleWithOperations{
{
Operations: []admissionregistration.OperationType{"CREATE"},
@@ -371,10 +382,11 @@ func TestValidateExternalAdmissionHookConfiguration(t *testing.T) {
},
{
name: `resource "*" cannot mix with resources that don't have subresources`,
- config: getExternalAdmissionHookConfiguration(
- []admissionregistration.ExternalAdmissionHook{
+ config: newValidatingWebhookConfiguration(
+ []admissionregistration.Webhook{
{
- Name: "webhook.k8s.io",
+ Name: "webhook.k8s.io",
+ ClientConfig: validClientConfig,
Rules: []admissionregistration.RuleWithOperations{
{
Operations: []admissionregistration.OperationType{"CREATE"},
@@ -391,10 +403,11 @@ func TestValidateExternalAdmissionHookConfiguration(t *testing.T) {
},
{
name: "resource a/* cannot mix with a/x",
- config: getExternalAdmissionHookConfiguration(
- []admissionregistration.ExternalAdmissionHook{
+ config: newValidatingWebhookConfiguration(
+ []admissionregistration.Webhook{
{
- Name: "webhook.k8s.io",
+ Name: "webhook.k8s.io",
+ ClientConfig: validClientConfig,
Rules: []admissionregistration.RuleWithOperations{
{
Operations: []admissionregistration.OperationType{"CREATE"},
@@ -407,14 +420,15 @@ func TestValidateExternalAdmissionHookConfiguration(t *testing.T) {
},
},
}),
- expectedError: `externalAdmissionHooks[0].rules[0].resources[1]: Invalid value: "a/x": if 'a/*' is present, must not specify a/x`,
+ expectedError: `webhooks[0].rules[0].resources[1]: Invalid value: "a/x": if 'a/*' is present, must not specify a/x`,
},
{
name: "resource a/* can mix with a",
- config: getExternalAdmissionHookConfiguration(
- []admissionregistration.ExternalAdmissionHook{
+ config: newValidatingWebhookConfiguration(
+ []admissionregistration.Webhook{
{
- Name: "webhook.k8s.io",
+ Name: "webhook.k8s.io",
+ ClientConfig: validClientConfig,
Rules: []admissionregistration.RuleWithOperations{
{
Operations: []admissionregistration.OperationType{"CREATE"},
@@ -430,10 +444,11 @@ func TestValidateExternalAdmissionHookConfiguration(t *testing.T) {
},
{
name: "resource */a cannot mix with x/a",
- config: getExternalAdmissionHookConfiguration(
- []admissionregistration.ExternalAdmissionHook{
+ config: newValidatingWebhookConfiguration(
+ []admissionregistration.Webhook{
{
- Name: "webhook.k8s.io",
+ Name: "webhook.k8s.io",
+ ClientConfig: validClientConfig,
Rules: []admissionregistration.RuleWithOperations{
{
Operations: []admissionregistration.OperationType{"CREATE"},
@@ -446,14 +461,15 @@ func TestValidateExternalAdmissionHookConfiguration(t *testing.T) {
},
},
}),
- expectedError: `externalAdmissionHooks[0].rules[0].resources[1]: Invalid value: "x/a": if '*/a' is present, must not specify x/a`,
+ expectedError: `webhooks[0].rules[0].resources[1]: Invalid value: "x/a": if '*/a' is present, must not specify x/a`,
},
{
name: "resource */* cannot mix with other resources",
- config: getExternalAdmissionHookConfiguration(
- []admissionregistration.ExternalAdmissionHook{
+ config: newValidatingWebhookConfiguration(
+ []admissionregistration.Webhook{
{
- Name: "webhook.k8s.io",
+ Name: "webhook.k8s.io",
+ ClientConfig: validClientConfig,
Rules: []admissionregistration.RuleWithOperations{
{
Operations: []admissionregistration.OperationType{"CREATE"},
@@ -466,116 +482,264 @@ func TestValidateExternalAdmissionHookConfiguration(t *testing.T) {
},
},
}),
- expectedError: `externalAdmissionHooks[0].rules[0].resources: Invalid value: []string{"*/*", "a"}: if '*/*' is present, must not specify other resources`,
+ expectedError: `webhooks[0].rules[0].resources: Invalid value: []string{"*/*", "a"}: if '*/*' is present, must not specify other resources`,
},
{
name: "FailurePolicy can only be \"Ignore\" or \"Fail\"",
- config: getExternalAdmissionHookConfiguration(
- []admissionregistration.ExternalAdmissionHook{
+ config: newValidatingWebhookConfiguration(
+ []admissionregistration.Webhook{
{
- Name: "webhook.k8s.io",
+ Name: "webhook.k8s.io",
+ ClientConfig: validClientConfig,
FailurePolicy: func() *admissionregistration.FailurePolicyType {
r := admissionregistration.FailurePolicyType("other")
return &r
}(),
},
}),
- expectedError: `externalAdmissionHooks[0].failurePolicy: Unsupported value: "other": supported values: "Fail", "Ignore"`,
+ expectedError: `webhooks[0].failurePolicy: Unsupported value: "other": supported values: "Fail", "Ignore"`,
},
{
- name: "URLPath must start with slash",
- config: getExternalAdmissionHookConfiguration(
- []admissionregistration.ExternalAdmissionHook{
+ name: "both service and URL missing",
+ config: newValidatingWebhookConfiguration(
+ []admissionregistration.Webhook{
+ {
+ Name: "webhook.k8s.io",
+ ClientConfig: admissionregistration.WebhookClientConfig{},
+ },
+ }),
+ expectedError: `exactly one of`,
+ },
+ {
+ name: "both service and URL provided",
+ config: newValidatingWebhookConfiguration(
+ []admissionregistration.Webhook{
{
Name: "webhook.k8s.io",
- ClientConfig: admissionregistration.AdmissionHookClientConfig{
- URLPath: "foo/",
+ ClientConfig: admissionregistration.WebhookClientConfig{
+ Service: &admissionregistration.ServiceReference{
+ Namespace: "ns",
+ Name: "n",
+ },
+ URL: strPtr("example.com/k8s/webhook"),
},
},
}),
- expectedError: `clientConfig.urlPath: Invalid value: "foo/": must start with a '/'`,
+ expectedError: `[0].clientConfig.url: Required value: exactly one of url or service is required`,
},
{
- name: "URLPath accepts slash",
- config: getExternalAdmissionHookConfiguration(
- []admissionregistration.ExternalAdmissionHook{
+ name: "blank URL",
+ config: newValidatingWebhookConfiguration(
+ []admissionregistration.Webhook{
{
Name: "webhook.k8s.io",
- ClientConfig: admissionregistration.AdmissionHookClientConfig{
- URLPath: "/",
+ ClientConfig: admissionregistration.WebhookClientConfig{
+ URL: strPtr(""),
+ },
+ },
+ }),
+ expectedError: `[0].clientConfig.url: Invalid value: "": host must be provided`,
+ },
+ {
+ name: "wrong scheme",
+ config: newValidatingWebhookConfiguration(
+ []admissionregistration.Webhook{
+ {
+ Name: "webhook.k8s.io",
+ ClientConfig: admissionregistration.WebhookClientConfig{
+ URL: strPtr("http://example.com"),
+ },
+ },
+ }),
+ expectedError: `https`,
+ },
+ {
+ name: "missing host",
+ config: newValidatingWebhookConfiguration(
+ []admissionregistration.Webhook{
+ {
+ Name: "webhook.k8s.io",
+ ClientConfig: admissionregistration.WebhookClientConfig{
+ URL: strPtr("https:///fancy/webhook"),
+ },
+ },
+ }),
+ expectedError: `host must be provided`,
+ },
+ {
+ name: "fragment",
+ config: newValidatingWebhookConfiguration(
+ []admissionregistration.Webhook{
+ {
+ Name: "webhook.k8s.io",
+ ClientConfig: admissionregistration.WebhookClientConfig{
+ URL: strPtr("https://example.com/#bookmark"),
+ },
+ },
+ }),
+ expectedError: `"bookmark": fragments are not permitted`,
+ },
+ {
+ name: "query",
+ config: newValidatingWebhookConfiguration(
+ []admissionregistration.Webhook{
+ {
+ Name: "webhook.k8s.io",
+ ClientConfig: admissionregistration.WebhookClientConfig{
+ URL: strPtr("https://example.com?arg=value"),
+ },
+ },
+ }),
+ expectedError: `"arg=value": query parameters are not permitted`,
+ },
+ {
+ name: "user",
+ config: newValidatingWebhookConfiguration(
+ []admissionregistration.Webhook{
+ {
+ Name: "webhook.k8s.io",
+ ClientConfig: admissionregistration.WebhookClientConfig{
+ URL: strPtr("https://harry.potter@example.com/"),
+ },
+ },
+ }),
+ expectedError: `"harry.potter": user information is not permitted`,
+ },
+ {
+ name: "just totally wrong",
+ config: newValidatingWebhookConfiguration(
+ []admissionregistration.Webhook{
+ {
+ Name: "webhook.k8s.io",
+ ClientConfig: admissionregistration.WebhookClientConfig{
+ URL: strPtr("arg#backwards=thisis?html.index/port:host//:https"),
+ },
+ },
+ }),
+ expectedError: `host must be provided`,
+ },
+ {
+ name: "path must start with slash",
+ config: newValidatingWebhookConfiguration(
+ []admissionregistration.Webhook{
+ {
+ Name: "webhook.k8s.io",
+ ClientConfig: admissionregistration.WebhookClientConfig{
+ Service: &admissionregistration.ServiceReference{
+ Namespace: "ns",
+ Name: "n",
+ Path: strPtr("foo/"),
+ },
+ },
+ },
+ }),
+ expectedError: `clientConfig.service.path: Invalid value: "foo/": must start with a '/'`,
+ },
+ {
+ name: "path accepts slash",
+ config: newValidatingWebhookConfiguration(
+ []admissionregistration.Webhook{
+ {
+ Name: "webhook.k8s.io",
+ ClientConfig: admissionregistration.WebhookClientConfig{
+ Service: &admissionregistration.ServiceReference{
+ Namespace: "ns",
+ Name: "n",
+ Path: strPtr("/"),
+ },
},
},
}),
expectedError: ``,
},
{
- name: "URLPath accepts no trailing slash",
- config: getExternalAdmissionHookConfiguration(
- []admissionregistration.ExternalAdmissionHook{
+ name: "path accepts no trailing slash",
+ config: newValidatingWebhookConfiguration(
+ []admissionregistration.Webhook{
{
Name: "webhook.k8s.io",
- ClientConfig: admissionregistration.AdmissionHookClientConfig{
- URLPath: "/foo",
+ ClientConfig: admissionregistration.WebhookClientConfig{
+ Service: &admissionregistration.ServiceReference{
+ Namespace: "ns",
+ Name: "n",
+ Path: strPtr("/foo"),
+ },
},
},
}),
expectedError: ``,
},
{
- name: "URLPath fails //",
- config: getExternalAdmissionHookConfiguration(
- []admissionregistration.ExternalAdmissionHook{
+ name: "path fails //",
+ config: newValidatingWebhookConfiguration(
+ []admissionregistration.Webhook{
{
Name: "webhook.k8s.io",
- ClientConfig: admissionregistration.AdmissionHookClientConfig{
- URLPath: "//",
+ ClientConfig: admissionregistration.WebhookClientConfig{
+ Service: &admissionregistration.ServiceReference{
+ Namespace: "ns",
+ Name: "n",
+ Path: strPtr("//"),
+ },
},
},
}),
- expectedError: `clientConfig.urlPath: Invalid value: "//": segment[0] may not be empty`,
+ expectedError: `clientConfig.service.path: Invalid value: "//": segment[0] may not be empty`,
},
{
- name: "URLPath no empty step",
- config: getExternalAdmissionHookConfiguration(
- []admissionregistration.ExternalAdmissionHook{
+ name: "path no empty step",
+ config: newValidatingWebhookConfiguration(
+ []admissionregistration.Webhook{
{
Name: "webhook.k8s.io",
- ClientConfig: admissionregistration.AdmissionHookClientConfig{
- URLPath: "/foo//bar/",
+ ClientConfig: admissionregistration.WebhookClientConfig{
+ Service: &admissionregistration.ServiceReference{
+ Namespace: "ns",
+ Name: "n",
+ Path: strPtr("/foo//bar/"),
+ },
},
},
}),
- expectedError: `clientConfig.urlPath: Invalid value: "/foo//bar/": segment[1] may not be empty`,
+ expectedError: `clientConfig.service.path: Invalid value: "/foo//bar/": segment[1] may not be empty`,
}, {
- name: "URLPath no empty step 2",
- config: getExternalAdmissionHookConfiguration(
- []admissionregistration.ExternalAdmissionHook{
+ name: "path no empty step 2",
+ config: newValidatingWebhookConfiguration(
+ []admissionregistration.Webhook{
{
Name: "webhook.k8s.io",
- ClientConfig: admissionregistration.AdmissionHookClientConfig{
- URLPath: "/foo/bar//",
+ ClientConfig: admissionregistration.WebhookClientConfig{
+ Service: &admissionregistration.ServiceReference{
+ Namespace: "ns",
+ Name: "n",
+ Path: strPtr("/foo/bar//"),
+ },
},
},
}),
- expectedError: `clientConfig.urlPath: Invalid value: "/foo/bar//": segment[2] may not be empty`,
+ expectedError: `clientConfig.service.path: Invalid value: "/foo/bar//": segment[2] may not be empty`,
},
{
- name: "URLPath no non-subdomain",
- config: getExternalAdmissionHookConfiguration(
- []admissionregistration.ExternalAdmissionHook{
+ name: "path no non-subdomain",
+ config: newValidatingWebhookConfiguration(
+ []admissionregistration.Webhook{
{
Name: "webhook.k8s.io",
- ClientConfig: admissionregistration.AdmissionHookClientConfig{
- URLPath: "/apis/foo.bar/v1alpha1/--bad",
+ ClientConfig: admissionregistration.WebhookClientConfig{
+ Service: &admissionregistration.ServiceReference{
+ Namespace: "ns",
+ Name: "n",
+ Path: strPtr("/apis/foo.bar/v1alpha1/--bad"),
+ },
},
},
}),
- expectedError: `clientConfig.urlPath: Invalid value: "/apis/foo.bar/v1alpha1/--bad": segment[3]: a DNS-1123 subdomain`,
+ expectedError: `clientConfig.service.path: Invalid value: "/apis/foo.bar/v1alpha1/--bad": segment[3]: a DNS-1123 subdomain`,
},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
- errs := ValidateExternalAdmissionHookConfiguration(test.config)
+ errs := ValidateValidatingWebhookConfiguration(test.config)
err := errs.ToAggregate()
if err != nil {
if e, a := test.expectedError, err.Error(); !strings.Contains(a, e) || e == "" {
diff --git a/pkg/apis/admissionregistration/zz_generated.deepcopy.go b/pkg/apis/admissionregistration/zz_generated.deepcopy.go
index 4952a75f79..8bb1ab3fb6 100644
--- a/pkg/apis/admissionregistration/zz_generated.deepcopy.go
+++ b/pkg/apis/admissionregistration/zz_generated.deepcopy.go
@@ -21,187 +21,10 @@ limitations under the License.
package admissionregistration
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*AdmissionHookClientConfig).DeepCopyInto(out.(*AdmissionHookClientConfig))
- return nil
- }, InType: reflect.TypeOf(&AdmissionHookClientConfig{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExternalAdmissionHook).DeepCopyInto(out.(*ExternalAdmissionHook))
- return nil
- }, InType: reflect.TypeOf(&ExternalAdmissionHook{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExternalAdmissionHookConfiguration).DeepCopyInto(out.(*ExternalAdmissionHookConfiguration))
- return nil
- }, InType: reflect.TypeOf(&ExternalAdmissionHookConfiguration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExternalAdmissionHookConfigurationList).DeepCopyInto(out.(*ExternalAdmissionHookConfigurationList))
- return nil
- }, InType: reflect.TypeOf(&ExternalAdmissionHookConfigurationList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Initializer).DeepCopyInto(out.(*Initializer))
- return nil
- }, InType: reflect.TypeOf(&Initializer{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*InitializerConfiguration).DeepCopyInto(out.(*InitializerConfiguration))
- return nil
- }, InType: reflect.TypeOf(&InitializerConfiguration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*InitializerConfigurationList).DeepCopyInto(out.(*InitializerConfigurationList))
- return nil
- }, InType: reflect.TypeOf(&InitializerConfigurationList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Rule).DeepCopyInto(out.(*Rule))
- return nil
- }, InType: reflect.TypeOf(&Rule{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RuleWithOperations).DeepCopyInto(out.(*RuleWithOperations))
- return nil
- }, InType: reflect.TypeOf(&RuleWithOperations{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ServiceReference).DeepCopyInto(out.(*ServiceReference))
- return nil
- }, InType: reflect.TypeOf(&ServiceReference{})},
- )
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *AdmissionHookClientConfig) DeepCopyInto(out *AdmissionHookClientConfig) {
- *out = *in
- out.Service = in.Service
- if in.CABundle != nil {
- in, out := &in.CABundle, &out.CABundle
- *out = make([]byte, len(*in))
- copy(*out, *in)
- }
- return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AdmissionHookClientConfig.
-func (in *AdmissionHookClientConfig) DeepCopy() *AdmissionHookClientConfig {
- if in == nil {
- return nil
- }
- out := new(AdmissionHookClientConfig)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ExternalAdmissionHook) DeepCopyInto(out *ExternalAdmissionHook) {
- *out = *in
- in.ClientConfig.DeepCopyInto(&out.ClientConfig)
- if in.Rules != nil {
- in, out := &in.Rules, &out.Rules
- *out = make([]RuleWithOperations, len(*in))
- for i := range *in {
- (*in)[i].DeepCopyInto(&(*out)[i])
- }
- }
- if in.FailurePolicy != nil {
- in, out := &in.FailurePolicy, &out.FailurePolicy
- if *in == nil {
- *out = nil
- } else {
- *out = new(FailurePolicyType)
- **out = **in
- }
- }
- return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalAdmissionHook.
-func (in *ExternalAdmissionHook) DeepCopy() *ExternalAdmissionHook {
- if in == nil {
- return nil
- }
- out := new(ExternalAdmissionHook)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ExternalAdmissionHookConfiguration) DeepCopyInto(out *ExternalAdmissionHookConfiguration) {
- *out = *in
- out.TypeMeta = in.TypeMeta
- in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
- if in.ExternalAdmissionHooks != nil {
- in, out := &in.ExternalAdmissionHooks, &out.ExternalAdmissionHooks
- *out = make([]ExternalAdmissionHook, len(*in))
- for i := range *in {
- (*in)[i].DeepCopyInto(&(*out)[i])
- }
- }
- return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalAdmissionHookConfiguration.
-func (in *ExternalAdmissionHookConfiguration) DeepCopy() *ExternalAdmissionHookConfiguration {
- if in == nil {
- return nil
- }
- out := new(ExternalAdmissionHookConfiguration)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *ExternalAdmissionHookConfiguration) DeepCopyObject() runtime.Object {
- if c := in.DeepCopy(); c != nil {
- return c
- } else {
- return nil
- }
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ExternalAdmissionHookConfigurationList) DeepCopyInto(out *ExternalAdmissionHookConfigurationList) {
- *out = *in
- out.TypeMeta = in.TypeMeta
- out.ListMeta = in.ListMeta
- if in.Items != nil {
- in, out := &in.Items, &out.Items
- *out = make([]ExternalAdmissionHookConfiguration, len(*in))
- for i := range *in {
- (*in)[i].DeepCopyInto(&(*out)[i])
- }
- }
- return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalAdmissionHookConfigurationList.
-func (in *ExternalAdmissionHookConfigurationList) DeepCopy() *ExternalAdmissionHookConfigurationList {
- if in == nil {
- return nil
- }
- out := new(ExternalAdmissionHookConfigurationList)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *ExternalAdmissionHookConfigurationList) DeepCopyObject() runtime.Object {
- if c := in.DeepCopy(); c != nil {
- return c
- } else {
- return nil
- }
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Initializer) DeepCopyInto(out *Initializer) {
*out = *in
@@ -293,6 +116,74 @@ func (in *InitializerConfigurationList) DeepCopyObject() runtime.Object {
}
}
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *MutatingWebhookConfiguration) DeepCopyInto(out *MutatingWebhookConfiguration) {
+ *out = *in
+ out.TypeMeta = in.TypeMeta
+ in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
+ if in.Webhooks != nil {
+ in, out := &in.Webhooks, &out.Webhooks
+ *out = make([]Webhook, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MutatingWebhookConfiguration.
+func (in *MutatingWebhookConfiguration) DeepCopy() *MutatingWebhookConfiguration {
+ if in == nil {
+ return nil
+ }
+ out := new(MutatingWebhookConfiguration)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
+func (in *MutatingWebhookConfiguration) DeepCopyObject() runtime.Object {
+ if c := in.DeepCopy(); c != nil {
+ return c
+ } else {
+ return nil
+ }
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *MutatingWebhookConfigurationList) DeepCopyInto(out *MutatingWebhookConfigurationList) {
+ *out = *in
+ out.TypeMeta = in.TypeMeta
+ out.ListMeta = in.ListMeta
+ if in.Items != nil {
+ in, out := &in.Items, &out.Items
+ *out = make([]MutatingWebhookConfiguration, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MutatingWebhookConfigurationList.
+func (in *MutatingWebhookConfigurationList) DeepCopy() *MutatingWebhookConfigurationList {
+ if in == nil {
+ return nil
+ }
+ out := new(MutatingWebhookConfigurationList)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
+func (in *MutatingWebhookConfigurationList) DeepCopyObject() runtime.Object {
+ if c := in.DeepCopy(); c != nil {
+ return c
+ } else {
+ return nil
+ }
+}
+
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Rule) DeepCopyInto(out *Rule) {
*out = *in
@@ -349,6 +240,15 @@ func (in *RuleWithOperations) DeepCopy() *RuleWithOperations {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ServiceReference) DeepCopyInto(out *ServiceReference) {
*out = *in
+ if in.Path != nil {
+ in, out := &in.Path, &out.Path
+ if *in == nil {
+ *out = nil
+ } else {
+ *out = new(string)
+ **out = **in
+ }
+ }
return
}
@@ -361,3 +261,152 @@ func (in *ServiceReference) DeepCopy() *ServiceReference {
in.DeepCopyInto(out)
return out
}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ValidatingWebhookConfiguration) DeepCopyInto(out *ValidatingWebhookConfiguration) {
+ *out = *in
+ out.TypeMeta = in.TypeMeta
+ in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
+ if in.Webhooks != nil {
+ in, out := &in.Webhooks, &out.Webhooks
+ *out = make([]Webhook, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ValidatingWebhookConfiguration.
+func (in *ValidatingWebhookConfiguration) DeepCopy() *ValidatingWebhookConfiguration {
+ if in == nil {
+ return nil
+ }
+ out := new(ValidatingWebhookConfiguration)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
+func (in *ValidatingWebhookConfiguration) DeepCopyObject() runtime.Object {
+ if c := in.DeepCopy(); c != nil {
+ return c
+ } else {
+ return nil
+ }
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ValidatingWebhookConfigurationList) DeepCopyInto(out *ValidatingWebhookConfigurationList) {
+ *out = *in
+ out.TypeMeta = in.TypeMeta
+ out.ListMeta = in.ListMeta
+ if in.Items != nil {
+ in, out := &in.Items, &out.Items
+ *out = make([]ValidatingWebhookConfiguration, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ValidatingWebhookConfigurationList.
+func (in *ValidatingWebhookConfigurationList) DeepCopy() *ValidatingWebhookConfigurationList {
+ if in == nil {
+ return nil
+ }
+ out := new(ValidatingWebhookConfigurationList)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
+func (in *ValidatingWebhookConfigurationList) DeepCopyObject() runtime.Object {
+ if c := in.DeepCopy(); c != nil {
+ return c
+ } else {
+ return nil
+ }
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *Webhook) DeepCopyInto(out *Webhook) {
+ *out = *in
+ in.ClientConfig.DeepCopyInto(&out.ClientConfig)
+ if in.Rules != nil {
+ in, out := &in.Rules, &out.Rules
+ *out = make([]RuleWithOperations, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+ if in.FailurePolicy != nil {
+ in, out := &in.FailurePolicy, &out.FailurePolicy
+ if *in == nil {
+ *out = nil
+ } else {
+ *out = new(FailurePolicyType)
+ **out = **in
+ }
+ }
+ if in.NamespaceSelector != nil {
+ in, out := &in.NamespaceSelector, &out.NamespaceSelector
+ if *in == nil {
+ *out = nil
+ } else {
+ *out = new(v1.LabelSelector)
+ (*in).DeepCopyInto(*out)
+ }
+ }
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Webhook.
+func (in *Webhook) DeepCopy() *Webhook {
+ if in == nil {
+ return nil
+ }
+ out := new(Webhook)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *WebhookClientConfig) DeepCopyInto(out *WebhookClientConfig) {
+ *out = *in
+ if in.URL != nil {
+ in, out := &in.URL, &out.URL
+ if *in == nil {
+ *out = nil
+ } else {
+ *out = new(string)
+ **out = **in
+ }
+ }
+ if in.Service != nil {
+ in, out := &in.Service, &out.Service
+ if *in == nil {
+ *out = nil
+ } else {
+ *out = new(ServiceReference)
+ (*in).DeepCopyInto(*out)
+ }
+ }
+ if in.CABundle != nil {
+ in, out := &in.CABundle, &out.CABundle
+ *out = make([]byte, len(*in))
+ copy(*out, *in)
+ }
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WebhookClientConfig.
+func (in *WebhookClientConfig) DeepCopy() *WebhookClientConfig {
+ if in == nil {
+ return nil
+ }
+ out := new(WebhookClientConfig)
+ in.DeepCopyInto(out)
+ return out
+}
diff --git a/pkg/apis/apps/BUILD b/pkg/apis/apps/BUILD
index e80860f6db..8cb47574a1 100644
--- a/pkg/apis/apps/BUILD
+++ b/pkg/apis/apps/BUILD
@@ -15,10 +15,10 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/apis/apps",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/autoscaling:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/pkg/apis/apps/doc.go b/pkg/apis/apps/doc.go
index e216ed6fd8..1ff549998c 100644
--- a/pkg/apis/apps/doc.go
+++ b/pkg/apis/apps/doc.go
@@ -14,6 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
package apps // import "k8s.io/kubernetes/pkg/apis/apps"
diff --git a/pkg/apis/apps/register.go b/pkg/apis/apps/register.go
index aae53d169e..8b7591807c 100644
--- a/pkg/apis/apps/register.go
+++ b/pkg/apis/apps/register.go
@@ -19,6 +19,7 @@ package apps
import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
+ "k8s.io/kubernetes/pkg/apis/autoscaling"
"k8s.io/kubernetes/pkg/apis/extensions"
)
@@ -52,7 +53,7 @@ func addKnownTypes(scheme *runtime.Scheme) error {
&extensions.Deployment{},
&extensions.DeploymentList{},
&extensions.DeploymentRollback{},
- &extensions.Scale{},
+ &autoscaling.Scale{},
&StatefulSet{},
&StatefulSetList{},
&ControllerRevision{},
diff --git a/pkg/apis/apps/types.go b/pkg/apis/apps/types.go
index 7654b681ab..850694d7fc 100644
--- a/pkg/apis/apps/types.go
+++ b/pkg/apis/apps/types.go
@@ -19,12 +19,12 @@ package apps
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// +genclient
-// +genclient:method=GetScale,verb=get,subresource=scale,result=k8s.io/kubernetes/pkg/apis/extensions.Scale
-// +genclient:method=UpdateScale,verb=update,subresource=scale,input=k8s.io/kubernetes/pkg/apis/extensions.Scale,result=k8s.io/kubernetes/pkg/apis/extensions.Scale
+// +genclient:method=GetScale,verb=get,subresource=scale,result=k8s.io/kubernetes/pkg/apis/autoscaling.Scale
+// +genclient:method=UpdateScale,verb=update,subresource=scale,input=k8s.io/kubernetes/pkg/apis/autoscaling.Scale,result=k8s.io/kubernetes/pkg/apis/autoscaling.Scale
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// StatefulSet represents a set of pods with consistent identities.
@@ -195,6 +195,27 @@ type StatefulSetStatus struct {
// newest ControllerRevision.
// +optional
CollisionCount *int32
+
+ // Represents the latest available observations of a statefulset's current state.
+ Conditions []StatefulSetCondition
+}
+
+type StatefulSetConditionType string
+
+// TODO: Add valid condition types for Statefulsets.
+
+// StatefulSetCondition describes the state of a statefulset at a certain point.
+type StatefulSetCondition struct {
+ // Type of statefulset condition.
+ Type StatefulSetConditionType
+ // Status of the condition, one of True, False, Unknown.
+ Status api.ConditionStatus
+ // The last time this condition was updated.
+ LastTransitionTime metav1.Time
+ // The reason for the condition's last transition.
+ Reason string
+ // A human readable message indicating details about the transition.
+ Message string
}
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
diff --git a/pkg/apis/apps/v1/BUILD b/pkg/apis/apps/v1/BUILD
index 7684d2c72f..3ffdef39f6 100644
--- a/pkg/apis/apps/v1/BUILD
+++ b/pkg/apis/apps/v1/BUILD
@@ -13,9 +13,9 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/apis/apps/v1",
visibility = ["//visibility:public"],
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/v1:go_default_library",
"//pkg/apis/apps:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/v1:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//vendor/k8s.io/api/apps/v1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
@@ -36,11 +36,11 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/apis/apps/v1_test",
deps = [
":go_default_library",
- "//pkg/api:go_default_library",
- "//pkg/api/install:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/apis/apps:go_default_library",
"//pkg/apis/apps/install:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//vendor/k8s.io/api/apps/v1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
diff --git a/pkg/apis/apps/v1/conversion.go b/pkg/apis/apps/v1/conversion.go
index ff6451adaa..0908f7fc2b 100644
--- a/pkg/apis/apps/v1/conversion.go
+++ b/pkg/apis/apps/v1/conversion.go
@@ -26,9 +26,9 @@ import (
"k8s.io/apimachinery/pkg/conversion"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/intstr"
- "k8s.io/kubernetes/pkg/api"
- k8s_api_v1 "k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/apis/apps"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ k8s_api_v1 "k8s.io/kubernetes/pkg/apis/core/v1"
"k8s.io/kubernetes/pkg/apis/extensions"
)
@@ -77,7 +77,7 @@ func Convert_v1_DeploymentSpec_To_extensions_DeploymentSpec(in *appsv1.Deploymen
out.Replicas = *in.Replicas
}
out.Selector = in.Selector
- if err := k8s_api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := k8s_api_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if err := Convert_v1_DeploymentStrategy_To_extensions_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil {
@@ -96,7 +96,7 @@ func Convert_v1_DeploymentSpec_To_extensions_DeploymentSpec(in *appsv1.Deploymen
func Convert_extensions_DeploymentSpec_To_v1_DeploymentSpec(in *extensions.DeploymentSpec, out *appsv1.DeploymentSpec, s conversion.Scope) error {
out.Replicas = &in.Replicas
out.Selector = in.Selector
- if err := k8s_api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := k8s_api_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if err := Convert_extensions_DeploymentStrategy_To_v1_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil {
@@ -250,7 +250,7 @@ func Convert_extensions_DaemonSet_To_v1_DaemonSet(in *extensions.DaemonSet, out
func Convert_extensions_DaemonSetSpec_To_v1_DaemonSetSpec(in *extensions.DaemonSetSpec, out *appsv1.DaemonSetSpec, s conversion.Scope) error {
out.Selector = in.Selector
- if err := k8s_api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := k8s_api_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if err := Convert_extensions_DaemonSetUpdateStrategy_To_v1_DaemonSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, s); err != nil {
@@ -298,7 +298,7 @@ func Convert_v1_DaemonSet_To_extensions_DaemonSet(in *appsv1.DaemonSet, out *ext
func Convert_v1_DaemonSetSpec_To_extensions_DaemonSetSpec(in *appsv1.DaemonSetSpec, out *extensions.DaemonSetSpec, s conversion.Scope) error {
out.Selector = in.Selector
- if err := k8s_api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := k8s_api_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if err := Convert_v1_DaemonSetUpdateStrategy_To_extensions_DaemonSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, s); err != nil {
@@ -330,7 +330,7 @@ func Convert_extensions_ReplicaSetSpec_To_v1_ReplicaSetSpec(in *extensions.Repli
*out.Replicas = int32(in.Replicas)
out.MinReadySeconds = in.MinReadySeconds
out.Selector = in.Selector
- if err := k8s_api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := k8s_api_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
return nil
@@ -342,7 +342,7 @@ func Convert_v1_ReplicaSetSpec_To_extensions_ReplicaSetSpec(in *appsv1.ReplicaSe
}
out.MinReadySeconds = in.MinReadySeconds
out.Selector = in.Selector
- if err := k8s_api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := k8s_api_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
return nil
@@ -361,7 +361,7 @@ func Convert_v1_StatefulSetSpec_To_apps_StatefulSetSpec(in *appsv1.StatefulSetSp
} else {
out.Selector = nil
}
- if err := k8s_api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := k8s_api_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if in.VolumeClaimTemplates != nil {
@@ -401,7 +401,7 @@ func Convert_apps_StatefulSetSpec_To_v1_StatefulSetSpec(in *apps.StatefulSetSpec
} else {
out.Selector = nil
}
- if err := k8s_api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := k8s_api_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if in.VolumeClaimTemplates != nil {
@@ -465,6 +465,12 @@ func Convert_v1_StatefulSetStatus_To_apps_StatefulSetStatus(in *appsv1.StatefulS
out.CollisionCount = new(int32)
*out.CollisionCount = *in.CollisionCount
}
+ out.Conditions = make([]apps.StatefulSetCondition, len(in.Conditions))
+ for i := range in.Conditions {
+ if err := Convert_v1_StatefulSetCondition_To_apps_StatefulSetCondition(&in.Conditions[i], &out.Conditions[i], s); err != nil {
+ return err
+ }
+ }
return nil
}
@@ -482,5 +488,11 @@ func Convert_apps_StatefulSetStatus_To_v1_StatefulSetStatus(in *apps.StatefulSet
out.CollisionCount = new(int32)
*out.CollisionCount = *in.CollisionCount
}
+ out.Conditions = make([]appsv1.StatefulSetCondition, len(in.Conditions))
+ for i := range in.Conditions {
+ if err := Convert_apps_StatefulSetCondition_To_v1_StatefulSetCondition(&in.Conditions[i], &out.Conditions[i], s); err != nil {
+ return err
+ }
+ }
return nil
}
diff --git a/pkg/apis/apps/v1/conversion_test.go b/pkg/apis/apps/v1/conversion_test.go
index c3ea72ecf3..27e78360c3 100644
--- a/pkg/apis/apps/v1/conversion_test.go
+++ b/pkg/apis/apps/v1/conversion_test.go
@@ -21,14 +21,13 @@ import (
appsv1 "k8s.io/api/apps/v1"
"k8s.io/api/core/v1"
+ apiequality "k8s.io/apimachinery/pkg/api/equality"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/intstr"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/apis/apps"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
-
- apiequality "k8s.io/apimachinery/pkg/api/equality"
)
func TestV12StatefulSetSpecConversion(t *testing.T) {
diff --git a/pkg/apis/apps/v1/defaults_test.go b/pkg/apis/apps/v1/defaults_test.go
index 5dba88c703..8050ea4ed6 100644
--- a/pkg/apis/apps/v1/defaults_test.go
+++ b/pkg/apis/apps/v1/defaults_test.go
@@ -27,11 +27,11 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/intstr"
- "k8s.io/kubernetes/pkg/api"
- _ "k8s.io/kubernetes/pkg/api/install"
"k8s.io/kubernetes/pkg/api/legacyscheme"
_ "k8s.io/kubernetes/pkg/apis/apps/install"
. "k8s.io/kubernetes/pkg/apis/apps/v1"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
)
func TestSetDefaultDaemonSetSpec(t *testing.T) {
diff --git a/pkg/apis/apps/v1/zz_generated.conversion.go b/pkg/apis/apps/v1/zz_generated.conversion.go
index fb5b838709..e7503b9478 100644
--- a/pkg/apis/apps/v1/zz_generated.conversion.go
+++ b/pkg/apis/apps/v1/zz_generated.conversion.go
@@ -26,9 +26,9 @@ import (
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- api "k8s.io/kubernetes/pkg/api"
- api_v1 "k8s.io/kubernetes/pkg/api/v1"
apps "k8s.io/kubernetes/pkg/apis/apps"
+ core "k8s.io/kubernetes/pkg/apis/core"
+ apis_core_v1 "k8s.io/kubernetes/pkg/apis/core/v1"
extensions "k8s.io/kubernetes/pkg/apis/extensions"
unsafe "unsafe"
)
@@ -87,6 +87,8 @@ func RegisterConversions(scheme *runtime.Scheme) error {
Convert_apps_RollingUpdateStatefulSetStrategy_To_v1_RollingUpdateStatefulSetStrategy,
Convert_v1_StatefulSet_To_apps_StatefulSet,
Convert_apps_StatefulSet_To_v1_StatefulSet,
+ Convert_v1_StatefulSetCondition_To_apps_StatefulSetCondition,
+ Convert_apps_StatefulSetCondition_To_v1_StatefulSetCondition,
Convert_v1_StatefulSetList_To_apps_StatefulSetList,
Convert_apps_StatefulSetList_To_v1_StatefulSetList,
Convert_v1_StatefulSetSpec_To_apps_StatefulSetSpec,
@@ -192,7 +194,7 @@ func autoConvert_extensions_DaemonSet_To_v1_DaemonSet(in *extensions.DaemonSet,
func autoConvert_v1_DaemonSetCondition_To_extensions_DaemonSetCondition(in *v1.DaemonSetCondition, out *extensions.DaemonSetCondition, s conversion.Scope) error {
out.Type = extensions.DaemonSetConditionType(in.Type)
- out.Status = api.ConditionStatus(in.Status)
+ out.Status = core.ConditionStatus(in.Status)
out.LastTransitionTime = in.LastTransitionTime
out.Reason = in.Reason
out.Message = in.Message
@@ -262,7 +264,7 @@ func Convert_extensions_DaemonSetList_To_v1_DaemonSetList(in *extensions.DaemonS
func autoConvert_v1_DaemonSetSpec_To_extensions_DaemonSetSpec(in *v1.DaemonSetSpec, out *extensions.DaemonSetSpec, s conversion.Scope) error {
out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
- if err := api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := apis_core_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if err := Convert_v1_DaemonSetUpdateStrategy_To_extensions_DaemonSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, s); err != nil {
@@ -275,7 +277,7 @@ func autoConvert_v1_DaemonSetSpec_To_extensions_DaemonSetSpec(in *v1.DaemonSetSp
func autoConvert_extensions_DaemonSetSpec_To_v1_DaemonSetSpec(in *extensions.DaemonSetSpec, out *v1.DaemonSetSpec, s conversion.Scope) error {
out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
- if err := api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := apis_core_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if err := Convert_extensions_DaemonSetUpdateStrategy_To_v1_DaemonSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, s); err != nil {
@@ -377,7 +379,7 @@ func autoConvert_extensions_Deployment_To_v1_Deployment(in *extensions.Deploymen
func autoConvert_v1_DeploymentCondition_To_extensions_DeploymentCondition(in *v1.DeploymentCondition, out *extensions.DeploymentCondition, s conversion.Scope) error {
out.Type = extensions.DeploymentConditionType(in.Type)
- out.Status = api.ConditionStatus(in.Status)
+ out.Status = core.ConditionStatus(in.Status)
out.LastUpdateTime = in.LastUpdateTime
out.LastTransitionTime = in.LastTransitionTime
out.Reason = in.Reason
@@ -452,7 +454,7 @@ func autoConvert_v1_DeploymentSpec_To_extensions_DeploymentSpec(in *v1.Deploymen
return err
}
out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
- if err := api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := apis_core_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if err := Convert_v1_DeploymentStrategy_To_extensions_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil {
@@ -470,7 +472,7 @@ func autoConvert_extensions_DeploymentSpec_To_v1_DeploymentSpec(in *extensions.D
return err
}
out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
- if err := api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := apis_core_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if err := Convert_extensions_DeploymentStrategy_To_v1_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil {
@@ -580,7 +582,7 @@ func Convert_extensions_ReplicaSet_To_v1_ReplicaSet(in *extensions.ReplicaSet, o
func autoConvert_v1_ReplicaSetCondition_To_extensions_ReplicaSetCondition(in *v1.ReplicaSetCondition, out *extensions.ReplicaSetCondition, s conversion.Scope) error {
out.Type = extensions.ReplicaSetConditionType(in.Type)
- out.Status = api.ConditionStatus(in.Status)
+ out.Status = core.ConditionStatus(in.Status)
out.LastTransitionTime = in.LastTransitionTime
out.Reason = in.Reason
out.Message = in.Message
@@ -654,7 +656,7 @@ func autoConvert_v1_ReplicaSetSpec_To_extensions_ReplicaSetSpec(in *v1.ReplicaSe
}
out.MinReadySeconds = in.MinReadySeconds
out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
- if err := api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := apis_core_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
return nil
@@ -666,7 +668,7 @@ func autoConvert_extensions_ReplicaSetSpec_To_v1_ReplicaSetSpec(in *extensions.R
}
out.MinReadySeconds = in.MinReadySeconds
out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
- if err := api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := apis_core_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
return nil
@@ -780,6 +782,34 @@ func Convert_apps_StatefulSet_To_v1_StatefulSet(in *apps.StatefulSet, out *v1.St
return autoConvert_apps_StatefulSet_To_v1_StatefulSet(in, out, s)
}
+func autoConvert_v1_StatefulSetCondition_To_apps_StatefulSetCondition(in *v1.StatefulSetCondition, out *apps.StatefulSetCondition, s conversion.Scope) error {
+ out.Type = apps.StatefulSetConditionType(in.Type)
+ out.Status = core.ConditionStatus(in.Status)
+ out.LastTransitionTime = in.LastTransitionTime
+ out.Reason = in.Reason
+ out.Message = in.Message
+ return nil
+}
+
+// Convert_v1_StatefulSetCondition_To_apps_StatefulSetCondition is an autogenerated conversion function.
+func Convert_v1_StatefulSetCondition_To_apps_StatefulSetCondition(in *v1.StatefulSetCondition, out *apps.StatefulSetCondition, s conversion.Scope) error {
+ return autoConvert_v1_StatefulSetCondition_To_apps_StatefulSetCondition(in, out, s)
+}
+
+func autoConvert_apps_StatefulSetCondition_To_v1_StatefulSetCondition(in *apps.StatefulSetCondition, out *v1.StatefulSetCondition, s conversion.Scope) error {
+ out.Type = v1.StatefulSetConditionType(in.Type)
+ out.Status = core_v1.ConditionStatus(in.Status)
+ out.LastTransitionTime = in.LastTransitionTime
+ out.Reason = in.Reason
+ out.Message = in.Message
+ return nil
+}
+
+// Convert_apps_StatefulSetCondition_To_v1_StatefulSetCondition is an autogenerated conversion function.
+func Convert_apps_StatefulSetCondition_To_v1_StatefulSetCondition(in *apps.StatefulSetCondition, out *v1.StatefulSetCondition, s conversion.Scope) error {
+ return autoConvert_apps_StatefulSetCondition_To_v1_StatefulSetCondition(in, out, s)
+}
+
func autoConvert_v1_StatefulSetList_To_apps_StatefulSetList(in *v1.StatefulSetList, out *apps.StatefulSetList, s conversion.Scope) error {
out.ListMeta = in.ListMeta
if in.Items != nil {
@@ -827,10 +857,10 @@ func autoConvert_v1_StatefulSetSpec_To_apps_StatefulSetSpec(in *v1.StatefulSetSp
return err
}
out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
- if err := api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := apis_core_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
- out.VolumeClaimTemplates = *(*[]api.PersistentVolumeClaim)(unsafe.Pointer(&in.VolumeClaimTemplates))
+ out.VolumeClaimTemplates = *(*[]core.PersistentVolumeClaim)(unsafe.Pointer(&in.VolumeClaimTemplates))
out.ServiceName = in.ServiceName
out.PodManagementPolicy = apps.PodManagementPolicyType(in.PodManagementPolicy)
if err := Convert_v1_StatefulSetUpdateStrategy_To_apps_StatefulSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, s); err != nil {
@@ -845,7 +875,7 @@ func autoConvert_apps_StatefulSetSpec_To_v1_StatefulSetSpec(in *apps.StatefulSet
return err
}
out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
- if err := api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := apis_core_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
out.VolumeClaimTemplates = *(*[]core_v1.PersistentVolumeClaim)(unsafe.Pointer(&in.VolumeClaimTemplates))
@@ -867,6 +897,7 @@ func autoConvert_v1_StatefulSetStatus_To_apps_StatefulSetStatus(in *v1.StatefulS
out.CurrentRevision = in.CurrentRevision
out.UpdateRevision = in.UpdateRevision
out.CollisionCount = (*int32)(unsafe.Pointer(in.CollisionCount))
+ out.Conditions = *(*[]apps.StatefulSetCondition)(unsafe.Pointer(&in.Conditions))
return nil
}
@@ -879,6 +910,7 @@ func autoConvert_apps_StatefulSetStatus_To_v1_StatefulSetStatus(in *apps.Statefu
out.CurrentRevision = in.CurrentRevision
out.UpdateRevision = in.UpdateRevision
out.CollisionCount = (*int32)(unsafe.Pointer(in.CollisionCount))
+ out.Conditions = *(*[]v1.StatefulSetCondition)(unsafe.Pointer(&in.Conditions))
return nil
}
diff --git a/pkg/apis/apps/v1/zz_generated.defaults.go b/pkg/apis/apps/v1/zz_generated.defaults.go
index 230000fa40..d05eff3c5d 100644
--- a/pkg/apis/apps/v1/zz_generated.defaults.go
+++ b/pkg/apis/apps/v1/zz_generated.defaults.go
@@ -23,7 +23,7 @@ package v1
import (
v1 "k8s.io/api/apps/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
- api_v1 "k8s.io/kubernetes/pkg/api/v1"
+ core_v1 "k8s.io/kubernetes/pkg/apis/core/v1"
)
// RegisterDefaults adds defaulters functions to the given scheme.
@@ -43,135 +43,135 @@ func RegisterDefaults(scheme *runtime.Scheme) error {
func SetObjectDefaults_DaemonSet(in *v1.DaemonSet) {
SetDefaults_DaemonSet(in)
- api_v1.SetDefaults_PodSpec(&in.Spec.Template.Spec)
+ core_v1.SetDefaults_PodSpec(&in.Spec.Template.Spec)
for i := range in.Spec.Template.Spec.Volumes {
a := &in.Spec.Template.Spec.Volumes[i]
- api_v1.SetDefaults_Volume(a)
+ core_v1.SetDefaults_Volume(a)
if a.VolumeSource.HostPath != nil {
- api_v1.SetDefaults_HostPathVolumeSource(a.VolumeSource.HostPath)
+ core_v1.SetDefaults_HostPathVolumeSource(a.VolumeSource.HostPath)
}
if a.VolumeSource.Secret != nil {
- api_v1.SetDefaults_SecretVolumeSource(a.VolumeSource.Secret)
+ core_v1.SetDefaults_SecretVolumeSource(a.VolumeSource.Secret)
}
if a.VolumeSource.ISCSI != nil {
- api_v1.SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI)
+ core_v1.SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI)
}
if a.VolumeSource.RBD != nil {
- api_v1.SetDefaults_RBDVolumeSource(a.VolumeSource.RBD)
+ core_v1.SetDefaults_RBDVolumeSource(a.VolumeSource.RBD)
}
if a.VolumeSource.DownwardAPI != nil {
- api_v1.SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI)
+ core_v1.SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI)
for j := range a.VolumeSource.DownwardAPI.Items {
b := &a.VolumeSource.DownwardAPI.Items[j]
if b.FieldRef != nil {
- api_v1.SetDefaults_ObjectFieldSelector(b.FieldRef)
+ core_v1.SetDefaults_ObjectFieldSelector(b.FieldRef)
}
}
}
if a.VolumeSource.ConfigMap != nil {
- api_v1.SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap)
+ core_v1.SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap)
}
if a.VolumeSource.AzureDisk != nil {
- api_v1.SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk)
+ core_v1.SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk)
}
if a.VolumeSource.Projected != nil {
- api_v1.SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected)
+ core_v1.SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected)
for j := range a.VolumeSource.Projected.Sources {
b := &a.VolumeSource.Projected.Sources[j]
if b.DownwardAPI != nil {
for k := range b.DownwardAPI.Items {
c := &b.DownwardAPI.Items[k]
if c.FieldRef != nil {
- api_v1.SetDefaults_ObjectFieldSelector(c.FieldRef)
+ core_v1.SetDefaults_ObjectFieldSelector(c.FieldRef)
}
}
}
}
}
if a.VolumeSource.ScaleIO != nil {
- api_v1.SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO)
+ core_v1.SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO)
}
}
for i := range in.Spec.Template.Spec.InitContainers {
a := &in.Spec.Template.Spec.InitContainers[i]
- api_v1.SetDefaults_Container(a)
+ core_v1.SetDefaults_Container(a)
for j := range a.Ports {
b := &a.Ports[j]
- api_v1.SetDefaults_ContainerPort(b)
+ core_v1.SetDefaults_ContainerPort(b)
}
for j := range a.Env {
b := &a.Env[j]
if b.ValueFrom != nil {
if b.ValueFrom.FieldRef != nil {
- api_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef)
+ core_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef)
}
}
}
- api_v1.SetDefaults_ResourceList(&a.Resources.Limits)
- api_v1.SetDefaults_ResourceList(&a.Resources.Requests)
+ core_v1.SetDefaults_ResourceList(&a.Resources.Limits)
+ core_v1.SetDefaults_ResourceList(&a.Resources.Requests)
if a.LivenessProbe != nil {
- api_v1.SetDefaults_Probe(a.LivenessProbe)
+ core_v1.SetDefaults_Probe(a.LivenessProbe)
if a.LivenessProbe.Handler.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet)
}
}
if a.ReadinessProbe != nil {
- api_v1.SetDefaults_Probe(a.ReadinessProbe)
+ core_v1.SetDefaults_Probe(a.ReadinessProbe)
if a.ReadinessProbe.Handler.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet)
}
}
if a.Lifecycle != nil {
if a.Lifecycle.PostStart != nil {
if a.Lifecycle.PostStart.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet)
}
}
if a.Lifecycle.PreStop != nil {
if a.Lifecycle.PreStop.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet)
}
}
}
}
for i := range in.Spec.Template.Spec.Containers {
a := &in.Spec.Template.Spec.Containers[i]
- api_v1.SetDefaults_Container(a)
+ core_v1.SetDefaults_Container(a)
for j := range a.Ports {
b := &a.Ports[j]
- api_v1.SetDefaults_ContainerPort(b)
+ core_v1.SetDefaults_ContainerPort(b)
}
for j := range a.Env {
b := &a.Env[j]
if b.ValueFrom != nil {
if b.ValueFrom.FieldRef != nil {
- api_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef)
+ core_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef)
}
}
}
- api_v1.SetDefaults_ResourceList(&a.Resources.Limits)
- api_v1.SetDefaults_ResourceList(&a.Resources.Requests)
+ core_v1.SetDefaults_ResourceList(&a.Resources.Limits)
+ core_v1.SetDefaults_ResourceList(&a.Resources.Requests)
if a.LivenessProbe != nil {
- api_v1.SetDefaults_Probe(a.LivenessProbe)
+ core_v1.SetDefaults_Probe(a.LivenessProbe)
if a.LivenessProbe.Handler.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet)
}
}
if a.ReadinessProbe != nil {
- api_v1.SetDefaults_Probe(a.ReadinessProbe)
+ core_v1.SetDefaults_Probe(a.ReadinessProbe)
if a.ReadinessProbe.Handler.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet)
}
}
if a.Lifecycle != nil {
if a.Lifecycle.PostStart != nil {
if a.Lifecycle.PostStart.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet)
}
}
if a.Lifecycle.PreStop != nil {
if a.Lifecycle.PreStop.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet)
}
}
}
@@ -187,135 +187,135 @@ func SetObjectDefaults_DaemonSetList(in *v1.DaemonSetList) {
func SetObjectDefaults_Deployment(in *v1.Deployment) {
SetDefaults_Deployment(in)
- api_v1.SetDefaults_PodSpec(&in.Spec.Template.Spec)
+ core_v1.SetDefaults_PodSpec(&in.Spec.Template.Spec)
for i := range in.Spec.Template.Spec.Volumes {
a := &in.Spec.Template.Spec.Volumes[i]
- api_v1.SetDefaults_Volume(a)
+ core_v1.SetDefaults_Volume(a)
if a.VolumeSource.HostPath != nil {
- api_v1.SetDefaults_HostPathVolumeSource(a.VolumeSource.HostPath)
+ core_v1.SetDefaults_HostPathVolumeSource(a.VolumeSource.HostPath)
}
if a.VolumeSource.Secret != nil {
- api_v1.SetDefaults_SecretVolumeSource(a.VolumeSource.Secret)
+ core_v1.SetDefaults_SecretVolumeSource(a.VolumeSource.Secret)
}
if a.VolumeSource.ISCSI != nil {
- api_v1.SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI)
+ core_v1.SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI)
}
if a.VolumeSource.RBD != nil {
- api_v1.SetDefaults_RBDVolumeSource(a.VolumeSource.RBD)
+ core_v1.SetDefaults_RBDVolumeSource(a.VolumeSource.RBD)
}
if a.VolumeSource.DownwardAPI != nil {
- api_v1.SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI)
+ core_v1.SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI)
for j := range a.VolumeSource.DownwardAPI.Items {
b := &a.VolumeSource.DownwardAPI.Items[j]
if b.FieldRef != nil {
- api_v1.SetDefaults_ObjectFieldSelector(b.FieldRef)
+ core_v1.SetDefaults_ObjectFieldSelector(b.FieldRef)
}
}
}
if a.VolumeSource.ConfigMap != nil {
- api_v1.SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap)
+ core_v1.SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap)
}
if a.VolumeSource.AzureDisk != nil {
- api_v1.SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk)
+ core_v1.SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk)
}
if a.VolumeSource.Projected != nil {
- api_v1.SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected)
+ core_v1.SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected)
for j := range a.VolumeSource.Projected.Sources {
b := &a.VolumeSource.Projected.Sources[j]
if b.DownwardAPI != nil {
for k := range b.DownwardAPI.Items {
c := &b.DownwardAPI.Items[k]
if c.FieldRef != nil {
- api_v1.SetDefaults_ObjectFieldSelector(c.FieldRef)
+ core_v1.SetDefaults_ObjectFieldSelector(c.FieldRef)
}
}
}
}
}
if a.VolumeSource.ScaleIO != nil {
- api_v1.SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO)
+ core_v1.SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO)
}
}
for i := range in.Spec.Template.Spec.InitContainers {
a := &in.Spec.Template.Spec.InitContainers[i]
- api_v1.SetDefaults_Container(a)
+ core_v1.SetDefaults_Container(a)
for j := range a.Ports {
b := &a.Ports[j]
- api_v1.SetDefaults_ContainerPort(b)
+ core_v1.SetDefaults_ContainerPort(b)
}
for j := range a.Env {
b := &a.Env[j]
if b.ValueFrom != nil {
if b.ValueFrom.FieldRef != nil {
- api_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef)
+ core_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef)
}
}
}
- api_v1.SetDefaults_ResourceList(&a.Resources.Limits)
- api_v1.SetDefaults_ResourceList(&a.Resources.Requests)
+ core_v1.SetDefaults_ResourceList(&a.Resources.Limits)
+ core_v1.SetDefaults_ResourceList(&a.Resources.Requests)
if a.LivenessProbe != nil {
- api_v1.SetDefaults_Probe(a.LivenessProbe)
+ core_v1.SetDefaults_Probe(a.LivenessProbe)
if a.LivenessProbe.Handler.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet)
}
}
if a.ReadinessProbe != nil {
- api_v1.SetDefaults_Probe(a.ReadinessProbe)
+ core_v1.SetDefaults_Probe(a.ReadinessProbe)
if a.ReadinessProbe.Handler.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet)
}
}
if a.Lifecycle != nil {
if a.Lifecycle.PostStart != nil {
if a.Lifecycle.PostStart.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet)
}
}
if a.Lifecycle.PreStop != nil {
if a.Lifecycle.PreStop.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet)
}
}
}
}
for i := range in.Spec.Template.Spec.Containers {
a := &in.Spec.Template.Spec.Containers[i]
- api_v1.SetDefaults_Container(a)
+ core_v1.SetDefaults_Container(a)
for j := range a.Ports {
b := &a.Ports[j]
- api_v1.SetDefaults_ContainerPort(b)
+ core_v1.SetDefaults_ContainerPort(b)
}
for j := range a.Env {
b := &a.Env[j]
if b.ValueFrom != nil {
if b.ValueFrom.FieldRef != nil {
- api_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef)
+ core_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef)
}
}
}
- api_v1.SetDefaults_ResourceList(&a.Resources.Limits)
- api_v1.SetDefaults_ResourceList(&a.Resources.Requests)
+ core_v1.SetDefaults_ResourceList(&a.Resources.Limits)
+ core_v1.SetDefaults_ResourceList(&a.Resources.Requests)
if a.LivenessProbe != nil {
- api_v1.SetDefaults_Probe(a.LivenessProbe)
+ core_v1.SetDefaults_Probe(a.LivenessProbe)
if a.LivenessProbe.Handler.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet)
}
}
if a.ReadinessProbe != nil {
- api_v1.SetDefaults_Probe(a.ReadinessProbe)
+ core_v1.SetDefaults_Probe(a.ReadinessProbe)
if a.ReadinessProbe.Handler.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet)
}
}
if a.Lifecycle != nil {
if a.Lifecycle.PostStart != nil {
if a.Lifecycle.PostStart.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet)
}
}
if a.Lifecycle.PreStop != nil {
if a.Lifecycle.PreStop.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet)
}
}
}
@@ -331,135 +331,135 @@ func SetObjectDefaults_DeploymentList(in *v1.DeploymentList) {
func SetObjectDefaults_ReplicaSet(in *v1.ReplicaSet) {
SetDefaults_ReplicaSet(in)
- api_v1.SetDefaults_PodSpec(&in.Spec.Template.Spec)
+ core_v1.SetDefaults_PodSpec(&in.Spec.Template.Spec)
for i := range in.Spec.Template.Spec.Volumes {
a := &in.Spec.Template.Spec.Volumes[i]
- api_v1.SetDefaults_Volume(a)
+ core_v1.SetDefaults_Volume(a)
if a.VolumeSource.HostPath != nil {
- api_v1.SetDefaults_HostPathVolumeSource(a.VolumeSource.HostPath)
+ core_v1.SetDefaults_HostPathVolumeSource(a.VolumeSource.HostPath)
}
if a.VolumeSource.Secret != nil {
- api_v1.SetDefaults_SecretVolumeSource(a.VolumeSource.Secret)
+ core_v1.SetDefaults_SecretVolumeSource(a.VolumeSource.Secret)
}
if a.VolumeSource.ISCSI != nil {
- api_v1.SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI)
+ core_v1.SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI)
}
if a.VolumeSource.RBD != nil {
- api_v1.SetDefaults_RBDVolumeSource(a.VolumeSource.RBD)
+ core_v1.SetDefaults_RBDVolumeSource(a.VolumeSource.RBD)
}
if a.VolumeSource.DownwardAPI != nil {
- api_v1.SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI)
+ core_v1.SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI)
for j := range a.VolumeSource.DownwardAPI.Items {
b := &a.VolumeSource.DownwardAPI.Items[j]
if b.FieldRef != nil {
- api_v1.SetDefaults_ObjectFieldSelector(b.FieldRef)
+ core_v1.SetDefaults_ObjectFieldSelector(b.FieldRef)
}
}
}
if a.VolumeSource.ConfigMap != nil {
- api_v1.SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap)
+ core_v1.SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap)
}
if a.VolumeSource.AzureDisk != nil {
- api_v1.SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk)
+ core_v1.SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk)
}
if a.VolumeSource.Projected != nil {
- api_v1.SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected)
+ core_v1.SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected)
for j := range a.VolumeSource.Projected.Sources {
b := &a.VolumeSource.Projected.Sources[j]
if b.DownwardAPI != nil {
for k := range b.DownwardAPI.Items {
c := &b.DownwardAPI.Items[k]
if c.FieldRef != nil {
- api_v1.SetDefaults_ObjectFieldSelector(c.FieldRef)
+ core_v1.SetDefaults_ObjectFieldSelector(c.FieldRef)
}
}
}
}
}
if a.VolumeSource.ScaleIO != nil {
- api_v1.SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO)
+ core_v1.SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO)
}
}
for i := range in.Spec.Template.Spec.InitContainers {
a := &in.Spec.Template.Spec.InitContainers[i]
- api_v1.SetDefaults_Container(a)
+ core_v1.SetDefaults_Container(a)
for j := range a.Ports {
b := &a.Ports[j]
- api_v1.SetDefaults_ContainerPort(b)
+ core_v1.SetDefaults_ContainerPort(b)
}
for j := range a.Env {
b := &a.Env[j]
if b.ValueFrom != nil {
if b.ValueFrom.FieldRef != nil {
- api_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef)
+ core_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef)
}
}
}
- api_v1.SetDefaults_ResourceList(&a.Resources.Limits)
- api_v1.SetDefaults_ResourceList(&a.Resources.Requests)
+ core_v1.SetDefaults_ResourceList(&a.Resources.Limits)
+ core_v1.SetDefaults_ResourceList(&a.Resources.Requests)
if a.LivenessProbe != nil {
- api_v1.SetDefaults_Probe(a.LivenessProbe)
+ core_v1.SetDefaults_Probe(a.LivenessProbe)
if a.LivenessProbe.Handler.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet)
}
}
if a.ReadinessProbe != nil {
- api_v1.SetDefaults_Probe(a.ReadinessProbe)
+ core_v1.SetDefaults_Probe(a.ReadinessProbe)
if a.ReadinessProbe.Handler.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet)
}
}
if a.Lifecycle != nil {
if a.Lifecycle.PostStart != nil {
if a.Lifecycle.PostStart.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet)
}
}
if a.Lifecycle.PreStop != nil {
if a.Lifecycle.PreStop.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet)
}
}
}
}
for i := range in.Spec.Template.Spec.Containers {
a := &in.Spec.Template.Spec.Containers[i]
- api_v1.SetDefaults_Container(a)
+ core_v1.SetDefaults_Container(a)
for j := range a.Ports {
b := &a.Ports[j]
- api_v1.SetDefaults_ContainerPort(b)
+ core_v1.SetDefaults_ContainerPort(b)
}
for j := range a.Env {
b := &a.Env[j]
if b.ValueFrom != nil {
if b.ValueFrom.FieldRef != nil {
- api_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef)
+ core_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef)
}
}
}
- api_v1.SetDefaults_ResourceList(&a.Resources.Limits)
- api_v1.SetDefaults_ResourceList(&a.Resources.Requests)
+ core_v1.SetDefaults_ResourceList(&a.Resources.Limits)
+ core_v1.SetDefaults_ResourceList(&a.Resources.Requests)
if a.LivenessProbe != nil {
- api_v1.SetDefaults_Probe(a.LivenessProbe)
+ core_v1.SetDefaults_Probe(a.LivenessProbe)
if a.LivenessProbe.Handler.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet)
}
}
if a.ReadinessProbe != nil {
- api_v1.SetDefaults_Probe(a.ReadinessProbe)
+ core_v1.SetDefaults_Probe(a.ReadinessProbe)
if a.ReadinessProbe.Handler.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet)
}
}
if a.Lifecycle != nil {
if a.Lifecycle.PostStart != nil {
if a.Lifecycle.PostStart.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet)
}
}
if a.Lifecycle.PreStop != nil {
if a.Lifecycle.PreStop.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet)
}
}
}
@@ -475,145 +475,145 @@ func SetObjectDefaults_ReplicaSetList(in *v1.ReplicaSetList) {
func SetObjectDefaults_StatefulSet(in *v1.StatefulSet) {
SetDefaults_StatefulSet(in)
- api_v1.SetDefaults_PodSpec(&in.Spec.Template.Spec)
+ core_v1.SetDefaults_PodSpec(&in.Spec.Template.Spec)
for i := range in.Spec.Template.Spec.Volumes {
a := &in.Spec.Template.Spec.Volumes[i]
- api_v1.SetDefaults_Volume(a)
+ core_v1.SetDefaults_Volume(a)
if a.VolumeSource.HostPath != nil {
- api_v1.SetDefaults_HostPathVolumeSource(a.VolumeSource.HostPath)
+ core_v1.SetDefaults_HostPathVolumeSource(a.VolumeSource.HostPath)
}
if a.VolumeSource.Secret != nil {
- api_v1.SetDefaults_SecretVolumeSource(a.VolumeSource.Secret)
+ core_v1.SetDefaults_SecretVolumeSource(a.VolumeSource.Secret)
}
if a.VolumeSource.ISCSI != nil {
- api_v1.SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI)
+ core_v1.SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI)
}
if a.VolumeSource.RBD != nil {
- api_v1.SetDefaults_RBDVolumeSource(a.VolumeSource.RBD)
+ core_v1.SetDefaults_RBDVolumeSource(a.VolumeSource.RBD)
}
if a.VolumeSource.DownwardAPI != nil {
- api_v1.SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI)
+ core_v1.SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI)
for j := range a.VolumeSource.DownwardAPI.Items {
b := &a.VolumeSource.DownwardAPI.Items[j]
if b.FieldRef != nil {
- api_v1.SetDefaults_ObjectFieldSelector(b.FieldRef)
+ core_v1.SetDefaults_ObjectFieldSelector(b.FieldRef)
}
}
}
if a.VolumeSource.ConfigMap != nil {
- api_v1.SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap)
+ core_v1.SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap)
}
if a.VolumeSource.AzureDisk != nil {
- api_v1.SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk)
+ core_v1.SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk)
}
if a.VolumeSource.Projected != nil {
- api_v1.SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected)
+ core_v1.SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected)
for j := range a.VolumeSource.Projected.Sources {
b := &a.VolumeSource.Projected.Sources[j]
if b.DownwardAPI != nil {
for k := range b.DownwardAPI.Items {
c := &b.DownwardAPI.Items[k]
if c.FieldRef != nil {
- api_v1.SetDefaults_ObjectFieldSelector(c.FieldRef)
+ core_v1.SetDefaults_ObjectFieldSelector(c.FieldRef)
}
}
}
}
}
if a.VolumeSource.ScaleIO != nil {
- api_v1.SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO)
+ core_v1.SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO)
}
}
for i := range in.Spec.Template.Spec.InitContainers {
a := &in.Spec.Template.Spec.InitContainers[i]
- api_v1.SetDefaults_Container(a)
+ core_v1.SetDefaults_Container(a)
for j := range a.Ports {
b := &a.Ports[j]
- api_v1.SetDefaults_ContainerPort(b)
+ core_v1.SetDefaults_ContainerPort(b)
}
for j := range a.Env {
b := &a.Env[j]
if b.ValueFrom != nil {
if b.ValueFrom.FieldRef != nil {
- api_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef)
+ core_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef)
}
}
}
- api_v1.SetDefaults_ResourceList(&a.Resources.Limits)
- api_v1.SetDefaults_ResourceList(&a.Resources.Requests)
+ core_v1.SetDefaults_ResourceList(&a.Resources.Limits)
+ core_v1.SetDefaults_ResourceList(&a.Resources.Requests)
if a.LivenessProbe != nil {
- api_v1.SetDefaults_Probe(a.LivenessProbe)
+ core_v1.SetDefaults_Probe(a.LivenessProbe)
if a.LivenessProbe.Handler.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet)
}
}
if a.ReadinessProbe != nil {
- api_v1.SetDefaults_Probe(a.ReadinessProbe)
+ core_v1.SetDefaults_Probe(a.ReadinessProbe)
if a.ReadinessProbe.Handler.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet)
}
}
if a.Lifecycle != nil {
if a.Lifecycle.PostStart != nil {
if a.Lifecycle.PostStart.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet)
}
}
if a.Lifecycle.PreStop != nil {
if a.Lifecycle.PreStop.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet)
}
}
}
}
for i := range in.Spec.Template.Spec.Containers {
a := &in.Spec.Template.Spec.Containers[i]
- api_v1.SetDefaults_Container(a)
+ core_v1.SetDefaults_Container(a)
for j := range a.Ports {
b := &a.Ports[j]
- api_v1.SetDefaults_ContainerPort(b)
+ core_v1.SetDefaults_ContainerPort(b)
}
for j := range a.Env {
b := &a.Env[j]
if b.ValueFrom != nil {
if b.ValueFrom.FieldRef != nil {
- api_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef)
+ core_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef)
}
}
}
- api_v1.SetDefaults_ResourceList(&a.Resources.Limits)
- api_v1.SetDefaults_ResourceList(&a.Resources.Requests)
+ core_v1.SetDefaults_ResourceList(&a.Resources.Limits)
+ core_v1.SetDefaults_ResourceList(&a.Resources.Requests)
if a.LivenessProbe != nil {
- api_v1.SetDefaults_Probe(a.LivenessProbe)
+ core_v1.SetDefaults_Probe(a.LivenessProbe)
if a.LivenessProbe.Handler.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet)
}
}
if a.ReadinessProbe != nil {
- api_v1.SetDefaults_Probe(a.ReadinessProbe)
+ core_v1.SetDefaults_Probe(a.ReadinessProbe)
if a.ReadinessProbe.Handler.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet)
}
}
if a.Lifecycle != nil {
if a.Lifecycle.PostStart != nil {
if a.Lifecycle.PostStart.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet)
}
}
if a.Lifecycle.PreStop != nil {
if a.Lifecycle.PreStop.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet)
}
}
}
}
for i := range in.Spec.VolumeClaimTemplates {
a := &in.Spec.VolumeClaimTemplates[i]
- api_v1.SetDefaults_PersistentVolumeClaim(a)
- api_v1.SetDefaults_ResourceList(&a.Spec.Resources.Limits)
- api_v1.SetDefaults_ResourceList(&a.Spec.Resources.Requests)
- api_v1.SetDefaults_ResourceList(&a.Status.Capacity)
+ core_v1.SetDefaults_PersistentVolumeClaim(a)
+ core_v1.SetDefaults_ResourceList(&a.Spec.Resources.Limits)
+ core_v1.SetDefaults_ResourceList(&a.Spec.Resources.Requests)
+ core_v1.SetDefaults_ResourceList(&a.Status.Capacity)
}
}
diff --git a/pkg/apis/apps/v1beta1/BUILD b/pkg/apis/apps/v1beta1/BUILD
index 2077d513a7..920dcdc49a 100644
--- a/pkg/apis/apps/v1beta1/BUILD
+++ b/pkg/apis/apps/v1beta1/BUILD
@@ -18,14 +18,16 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/apis/apps/v1beta1",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/v1:go_default_library",
"//pkg/apis/apps:go_default_library",
+ "//pkg/apis/autoscaling:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/v1:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//vendor/k8s.io/api/apps/v1beta1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
@@ -51,10 +53,10 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/apis/apps/v1beta1_test",
deps = [
":go_default_library",
- "//pkg/api:go_default_library",
- "//pkg/api/install:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/apis/apps/install:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//vendor/k8s.io/api/apps/v1beta1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
diff --git a/pkg/apis/apps/v1beta1/conversion.go b/pkg/apis/apps/v1beta1/conversion.go
index 42d26b86d3..6f4d27cf90 100644
--- a/pkg/apis/apps/v1beta1/conversion.go
+++ b/pkg/apis/apps/v1beta1/conversion.go
@@ -23,11 +23,13 @@ import (
"k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/conversion"
+ "k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/intstr"
- "k8s.io/kubernetes/pkg/api"
- k8s_api_v1 "k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/apis/apps"
+ "k8s.io/kubernetes/pkg/apis/autoscaling"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ k8s_api_v1 "k8s.io/kubernetes/pkg/apis/core/v1"
"k8s.io/kubernetes/pkg/apis/extensions"
)
@@ -44,8 +46,8 @@ func addConversionFuncs(scheme *runtime.Scheme) error {
// extensions
// TODO: below conversions should be dropped in favor of auto-generated
// ones, see https://github.com/kubernetes/kubernetes/issues/39865
- Convert_v1beta1_ScaleStatus_To_extensions_ScaleStatus,
- Convert_extensions_ScaleStatus_To_v1beta1_ScaleStatus,
+ Convert_v1beta1_ScaleStatus_To_autoscaling_ScaleStatus,
+ Convert_autoscaling_ScaleStatus_To_v1beta1_ScaleStatus,
Convert_v1beta1_DeploymentSpec_To_extensions_DeploymentSpec,
Convert_extensions_DeploymentSpec_To_v1beta1_DeploymentSpec,
Convert_v1beta1_DeploymentStrategy_To_extensions_DeploymentStrategy,
@@ -87,7 +89,7 @@ func Convert_v1beta1_StatefulSetSpec_To_apps_StatefulSetSpec(in *appsv1beta1.Sta
} else {
out.Selector = nil
}
- if err := k8s_api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := k8s_api_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if in.VolumeClaimTemplates != nil {
@@ -127,7 +129,7 @@ func Convert_apps_StatefulSetSpec_To_v1beta1_StatefulSetSpec(in *apps.StatefulSe
} else {
out.Selector = nil
}
- if err := k8s_api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := k8s_api_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if in.VolumeClaimTemplates != nil {
@@ -178,48 +180,35 @@ func Convert_apps_StatefulSetUpdateStrategy_To_v1beta1_StatefulSetUpdateStrategy
return nil
}
-func Convert_extensions_ScaleStatus_To_v1beta1_ScaleStatus(in *extensions.ScaleStatus, out *appsv1beta1.ScaleStatus, s conversion.Scope) error {
+func Convert_autoscaling_ScaleStatus_To_v1beta1_ScaleStatus(in *autoscaling.ScaleStatus, out *appsv1beta1.ScaleStatus, s conversion.Scope) error {
out.Replicas = int32(in.Replicas)
+ out.TargetSelector = in.Selector
out.Selector = nil
- out.TargetSelector = ""
- if in.Selector != nil {
- if in.Selector.MatchExpressions == nil || len(in.Selector.MatchExpressions) == 0 {
- out.Selector = in.Selector.MatchLabels
- }
-
- selector, err := metav1.LabelSelectorAsSelector(in.Selector)
- if err != nil {
- return fmt.Errorf("invalid label selector: %v", err)
- }
- out.TargetSelector = selector.String()
+ selector, err := metav1.ParseToLabelSelector(in.Selector)
+ if err != nil {
+ return fmt.Errorf("failed to parse selector: %v", err)
}
+ if len(selector.MatchExpressions) == 0 {
+ out.Selector = selector.MatchLabels
+ }
+
return nil
}
-func Convert_v1beta1_ScaleStatus_To_extensions_ScaleStatus(in *appsv1beta1.ScaleStatus, out *extensions.ScaleStatus, s conversion.Scope) error {
+func Convert_v1beta1_ScaleStatus_To_autoscaling_ScaleStatus(in *appsv1beta1.ScaleStatus, out *autoscaling.ScaleStatus, s conversion.Scope) error {
out.Replicas = in.Replicas
- // Normally when 2 fields map to the same internal value we favor the old field, since
- // old clients can't be expected to know about new fields but clients that know about the
- // new field can be expected to know about the old field (though that's not quite true, due
- // to kubectl apply). However, these fields are readonly, so any non-nil value should work.
if in.TargetSelector != "" {
- labelSelector, err := metav1.ParseToLabelSelector(in.TargetSelector)
- if err != nil {
- out.Selector = nil
- return fmt.Errorf("failed to parse target selector: %v", err)
- }
- out.Selector = labelSelector
+ out.Selector = in.TargetSelector
} else if in.Selector != nil {
- out.Selector = new(metav1.LabelSelector)
- selector := make(map[string]string)
+ set := labels.Set{}
for key, val := range in.Selector {
- selector[key] = val
+ set[key] = val
}
- out.Selector.MatchLabels = selector
+ out.Selector = labels.SelectorFromSet(set).String()
} else {
- out.Selector = nil
+ out.Selector = ""
}
return nil
}
@@ -229,7 +218,7 @@ func Convert_v1beta1_DeploymentSpec_To_extensions_DeploymentSpec(in *appsv1beta1
out.Replicas = *in.Replicas
}
out.Selector = in.Selector
- if err := k8s_api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := k8s_api_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if err := Convert_v1beta1_DeploymentStrategy_To_extensions_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil {
@@ -254,7 +243,7 @@ func Convert_v1beta1_DeploymentSpec_To_extensions_DeploymentSpec(in *appsv1beta1
func Convert_extensions_DeploymentSpec_To_v1beta1_DeploymentSpec(in *extensions.DeploymentSpec, out *appsv1beta1.DeploymentSpec, s conversion.Scope) error {
out.Replicas = &in.Replicas
out.Selector = in.Selector
- if err := k8s_api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := k8s_api_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if err := Convert_extensions_DeploymentStrategy_To_v1beta1_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil {
diff --git a/pkg/apis/apps/v1beta1/defaults_test.go b/pkg/apis/apps/v1beta1/defaults_test.go
index 9c730df228..06e0d7b11a 100644
--- a/pkg/apis/apps/v1beta1/defaults_test.go
+++ b/pkg/apis/apps/v1beta1/defaults_test.go
@@ -26,11 +26,11 @@ import (
apiequality "k8s.io/apimachinery/pkg/api/equality"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/intstr"
- "k8s.io/kubernetes/pkg/api"
- _ "k8s.io/kubernetes/pkg/api/install"
"k8s.io/kubernetes/pkg/api/legacyscheme"
_ "k8s.io/kubernetes/pkg/apis/apps/install"
. "k8s.io/kubernetes/pkg/apis/apps/v1beta1"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
)
func TestSetDefaultDeployment(t *testing.T) {
diff --git a/pkg/apis/apps/v1beta1/doc.go b/pkg/apis/apps/v1beta1/doc.go
index 058dce37f1..4a11a5834d 100644
--- a/pkg/apis/apps/v1beta1/doc.go
+++ b/pkg/apis/apps/v1beta1/doc.go
@@ -15,6 +15,7 @@ limitations under the License.
*/
// +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/apps
+// +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/autoscaling
// +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/extensions
// +k8s:conversion-gen-external-types=../../../../vendor/k8s.io/api/apps/v1beta1
// +k8s:defaulter-gen=TypeMeta
diff --git a/pkg/apis/apps/v1beta1/zz_generated.conversion.go b/pkg/apis/apps/v1beta1/zz_generated.conversion.go
index d3ddaac033..0bfb1e3f20 100644
--- a/pkg/apis/apps/v1beta1/zz_generated.conversion.go
+++ b/pkg/apis/apps/v1beta1/zz_generated.conversion.go
@@ -26,9 +26,10 @@ import (
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- api "k8s.io/kubernetes/pkg/api"
- api_v1 "k8s.io/kubernetes/pkg/api/v1"
apps "k8s.io/kubernetes/pkg/apis/apps"
+ autoscaling "k8s.io/kubernetes/pkg/apis/autoscaling"
+ core "k8s.io/kubernetes/pkg/apis/core"
+ core_v1 "k8s.io/kubernetes/pkg/apis/core/v1"
extensions "k8s.io/kubernetes/pkg/apis/extensions"
unsafe "unsafe"
)
@@ -65,14 +66,16 @@ func RegisterConversions(scheme *runtime.Scheme) error {
Convert_extensions_RollingUpdateDeployment_To_v1beta1_RollingUpdateDeployment,
Convert_v1beta1_RollingUpdateStatefulSetStrategy_To_apps_RollingUpdateStatefulSetStrategy,
Convert_apps_RollingUpdateStatefulSetStrategy_To_v1beta1_RollingUpdateStatefulSetStrategy,
- Convert_v1beta1_Scale_To_extensions_Scale,
- Convert_extensions_Scale_To_v1beta1_Scale,
- Convert_v1beta1_ScaleSpec_To_extensions_ScaleSpec,
- Convert_extensions_ScaleSpec_To_v1beta1_ScaleSpec,
- Convert_v1beta1_ScaleStatus_To_extensions_ScaleStatus,
- Convert_extensions_ScaleStatus_To_v1beta1_ScaleStatus,
+ Convert_v1beta1_Scale_To_autoscaling_Scale,
+ Convert_autoscaling_Scale_To_v1beta1_Scale,
+ Convert_v1beta1_ScaleSpec_To_autoscaling_ScaleSpec,
+ Convert_autoscaling_ScaleSpec_To_v1beta1_ScaleSpec,
+ Convert_v1beta1_ScaleStatus_To_autoscaling_ScaleStatus,
+ Convert_autoscaling_ScaleStatus_To_v1beta1_ScaleStatus,
Convert_v1beta1_StatefulSet_To_apps_StatefulSet,
Convert_apps_StatefulSet_To_v1beta1_StatefulSet,
+ Convert_v1beta1_StatefulSetCondition_To_apps_StatefulSetCondition,
+ Convert_apps_StatefulSetCondition_To_v1beta1_StatefulSetCondition,
Convert_v1beta1_StatefulSetList_To_apps_StatefulSetList,
Convert_apps_StatefulSetList_To_v1beta1_StatefulSetList,
Convert_v1beta1_StatefulSetSpec_To_apps_StatefulSetSpec,
@@ -188,7 +191,7 @@ func Convert_extensions_Deployment_To_v1beta1_Deployment(in *extensions.Deployme
func autoConvert_v1beta1_DeploymentCondition_To_extensions_DeploymentCondition(in *v1beta1.DeploymentCondition, out *extensions.DeploymentCondition, s conversion.Scope) error {
out.Type = extensions.DeploymentConditionType(in.Type)
- out.Status = api.ConditionStatus(in.Status)
+ out.Status = core.ConditionStatus(in.Status)
out.LastUpdateTime = in.LastUpdateTime
out.LastTransitionTime = in.LastTransitionTime
out.Reason = in.Reason
@@ -291,7 +294,7 @@ func autoConvert_v1beta1_DeploymentSpec_To_extensions_DeploymentSpec(in *v1beta1
return err
}
out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
- if err := api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := core_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if err := Convert_v1beta1_DeploymentStrategy_To_extensions_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil {
@@ -310,7 +313,7 @@ func autoConvert_extensions_DeploymentSpec_To_v1beta1_DeploymentSpec(in *extensi
return err
}
out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
- if err := api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := core_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if err := Convert_extensions_DeploymentStrategy_To_v1beta1_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil {
@@ -442,68 +445,68 @@ func Convert_apps_RollingUpdateStatefulSetStrategy_To_v1beta1_RollingUpdateState
return autoConvert_apps_RollingUpdateStatefulSetStrategy_To_v1beta1_RollingUpdateStatefulSetStrategy(in, out, s)
}
-func autoConvert_v1beta1_Scale_To_extensions_Scale(in *v1beta1.Scale, out *extensions.Scale, s conversion.Scope) error {
+func autoConvert_v1beta1_Scale_To_autoscaling_Scale(in *v1beta1.Scale, out *autoscaling.Scale, s conversion.Scope) error {
out.ObjectMeta = in.ObjectMeta
- if err := Convert_v1beta1_ScaleSpec_To_extensions_ScaleSpec(&in.Spec, &out.Spec, s); err != nil {
+ if err := Convert_v1beta1_ScaleSpec_To_autoscaling_ScaleSpec(&in.Spec, &out.Spec, s); err != nil {
return err
}
- if err := Convert_v1beta1_ScaleStatus_To_extensions_ScaleStatus(&in.Status, &out.Status, s); err != nil {
+ if err := Convert_v1beta1_ScaleStatus_To_autoscaling_ScaleStatus(&in.Status, &out.Status, s); err != nil {
return err
}
return nil
}
-// Convert_v1beta1_Scale_To_extensions_Scale is an autogenerated conversion function.
-func Convert_v1beta1_Scale_To_extensions_Scale(in *v1beta1.Scale, out *extensions.Scale, s conversion.Scope) error {
- return autoConvert_v1beta1_Scale_To_extensions_Scale(in, out, s)
+// Convert_v1beta1_Scale_To_autoscaling_Scale is an autogenerated conversion function.
+func Convert_v1beta1_Scale_To_autoscaling_Scale(in *v1beta1.Scale, out *autoscaling.Scale, s conversion.Scope) error {
+ return autoConvert_v1beta1_Scale_To_autoscaling_Scale(in, out, s)
}
-func autoConvert_extensions_Scale_To_v1beta1_Scale(in *extensions.Scale, out *v1beta1.Scale, s conversion.Scope) error {
+func autoConvert_autoscaling_Scale_To_v1beta1_Scale(in *autoscaling.Scale, out *v1beta1.Scale, s conversion.Scope) error {
out.ObjectMeta = in.ObjectMeta
- if err := Convert_extensions_ScaleSpec_To_v1beta1_ScaleSpec(&in.Spec, &out.Spec, s); err != nil {
+ if err := Convert_autoscaling_ScaleSpec_To_v1beta1_ScaleSpec(&in.Spec, &out.Spec, s); err != nil {
return err
}
- if err := Convert_extensions_ScaleStatus_To_v1beta1_ScaleStatus(&in.Status, &out.Status, s); err != nil {
+ if err := Convert_autoscaling_ScaleStatus_To_v1beta1_ScaleStatus(&in.Status, &out.Status, s); err != nil {
return err
}
return nil
}
-// Convert_extensions_Scale_To_v1beta1_Scale is an autogenerated conversion function.
-func Convert_extensions_Scale_To_v1beta1_Scale(in *extensions.Scale, out *v1beta1.Scale, s conversion.Scope) error {
- return autoConvert_extensions_Scale_To_v1beta1_Scale(in, out, s)
+// Convert_autoscaling_Scale_To_v1beta1_Scale is an autogenerated conversion function.
+func Convert_autoscaling_Scale_To_v1beta1_Scale(in *autoscaling.Scale, out *v1beta1.Scale, s conversion.Scope) error {
+ return autoConvert_autoscaling_Scale_To_v1beta1_Scale(in, out, s)
}
-func autoConvert_v1beta1_ScaleSpec_To_extensions_ScaleSpec(in *v1beta1.ScaleSpec, out *extensions.ScaleSpec, s conversion.Scope) error {
+func autoConvert_v1beta1_ScaleSpec_To_autoscaling_ScaleSpec(in *v1beta1.ScaleSpec, out *autoscaling.ScaleSpec, s conversion.Scope) error {
out.Replicas = in.Replicas
return nil
}
-// Convert_v1beta1_ScaleSpec_To_extensions_ScaleSpec is an autogenerated conversion function.
-func Convert_v1beta1_ScaleSpec_To_extensions_ScaleSpec(in *v1beta1.ScaleSpec, out *extensions.ScaleSpec, s conversion.Scope) error {
- return autoConvert_v1beta1_ScaleSpec_To_extensions_ScaleSpec(in, out, s)
+// Convert_v1beta1_ScaleSpec_To_autoscaling_ScaleSpec is an autogenerated conversion function.
+func Convert_v1beta1_ScaleSpec_To_autoscaling_ScaleSpec(in *v1beta1.ScaleSpec, out *autoscaling.ScaleSpec, s conversion.Scope) error {
+ return autoConvert_v1beta1_ScaleSpec_To_autoscaling_ScaleSpec(in, out, s)
}
-func autoConvert_extensions_ScaleSpec_To_v1beta1_ScaleSpec(in *extensions.ScaleSpec, out *v1beta1.ScaleSpec, s conversion.Scope) error {
+func autoConvert_autoscaling_ScaleSpec_To_v1beta1_ScaleSpec(in *autoscaling.ScaleSpec, out *v1beta1.ScaleSpec, s conversion.Scope) error {
out.Replicas = in.Replicas
return nil
}
-// Convert_extensions_ScaleSpec_To_v1beta1_ScaleSpec is an autogenerated conversion function.
-func Convert_extensions_ScaleSpec_To_v1beta1_ScaleSpec(in *extensions.ScaleSpec, out *v1beta1.ScaleSpec, s conversion.Scope) error {
- return autoConvert_extensions_ScaleSpec_To_v1beta1_ScaleSpec(in, out, s)
+// Convert_autoscaling_ScaleSpec_To_v1beta1_ScaleSpec is an autogenerated conversion function.
+func Convert_autoscaling_ScaleSpec_To_v1beta1_ScaleSpec(in *autoscaling.ScaleSpec, out *v1beta1.ScaleSpec, s conversion.Scope) error {
+ return autoConvert_autoscaling_ScaleSpec_To_v1beta1_ScaleSpec(in, out, s)
}
-func autoConvert_v1beta1_ScaleStatus_To_extensions_ScaleStatus(in *v1beta1.ScaleStatus, out *extensions.ScaleStatus, s conversion.Scope) error {
+func autoConvert_v1beta1_ScaleStatus_To_autoscaling_ScaleStatus(in *v1beta1.ScaleStatus, out *autoscaling.ScaleStatus, s conversion.Scope) error {
out.Replicas = in.Replicas
- // WARNING: in.Selector requires manual conversion: inconvertible types (map[string]string vs *k8s.io/apimachinery/pkg/apis/meta/v1.LabelSelector)
+ // WARNING: in.Selector requires manual conversion: inconvertible types (map[string]string vs string)
// WARNING: in.TargetSelector requires manual conversion: does not exist in peer-type
return nil
}
-func autoConvert_extensions_ScaleStatus_To_v1beta1_ScaleStatus(in *extensions.ScaleStatus, out *v1beta1.ScaleStatus, s conversion.Scope) error {
+func autoConvert_autoscaling_ScaleStatus_To_v1beta1_ScaleStatus(in *autoscaling.ScaleStatus, out *v1beta1.ScaleStatus, s conversion.Scope) error {
out.Replicas = in.Replicas
- // WARNING: in.Selector requires manual conversion: inconvertible types (*k8s.io/apimachinery/pkg/apis/meta/v1.LabelSelector vs map[string]string)
+ // WARNING: in.Selector requires manual conversion: inconvertible types (string vs map[string]string)
return nil
}
@@ -539,6 +542,34 @@ func Convert_apps_StatefulSet_To_v1beta1_StatefulSet(in *apps.StatefulSet, out *
return autoConvert_apps_StatefulSet_To_v1beta1_StatefulSet(in, out, s)
}
+func autoConvert_v1beta1_StatefulSetCondition_To_apps_StatefulSetCondition(in *v1beta1.StatefulSetCondition, out *apps.StatefulSetCondition, s conversion.Scope) error {
+ out.Type = apps.StatefulSetConditionType(in.Type)
+ out.Status = core.ConditionStatus(in.Status)
+ out.LastTransitionTime = in.LastTransitionTime
+ out.Reason = in.Reason
+ out.Message = in.Message
+ return nil
+}
+
+// Convert_v1beta1_StatefulSetCondition_To_apps_StatefulSetCondition is an autogenerated conversion function.
+func Convert_v1beta1_StatefulSetCondition_To_apps_StatefulSetCondition(in *v1beta1.StatefulSetCondition, out *apps.StatefulSetCondition, s conversion.Scope) error {
+ return autoConvert_v1beta1_StatefulSetCondition_To_apps_StatefulSetCondition(in, out, s)
+}
+
+func autoConvert_apps_StatefulSetCondition_To_v1beta1_StatefulSetCondition(in *apps.StatefulSetCondition, out *v1beta1.StatefulSetCondition, s conversion.Scope) error {
+ out.Type = v1beta1.StatefulSetConditionType(in.Type)
+ out.Status = v1.ConditionStatus(in.Status)
+ out.LastTransitionTime = in.LastTransitionTime
+ out.Reason = in.Reason
+ out.Message = in.Message
+ return nil
+}
+
+// Convert_apps_StatefulSetCondition_To_v1beta1_StatefulSetCondition is an autogenerated conversion function.
+func Convert_apps_StatefulSetCondition_To_v1beta1_StatefulSetCondition(in *apps.StatefulSetCondition, out *v1beta1.StatefulSetCondition, s conversion.Scope) error {
+ return autoConvert_apps_StatefulSetCondition_To_v1beta1_StatefulSetCondition(in, out, s)
+}
+
func autoConvert_v1beta1_StatefulSetList_To_apps_StatefulSetList(in *v1beta1.StatefulSetList, out *apps.StatefulSetList, s conversion.Scope) error {
out.ListMeta = in.ListMeta
if in.Items != nil {
@@ -586,10 +617,10 @@ func autoConvert_v1beta1_StatefulSetSpec_To_apps_StatefulSetSpec(in *v1beta1.Sta
return err
}
out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
- if err := api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := core_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
- out.VolumeClaimTemplates = *(*[]api.PersistentVolumeClaim)(unsafe.Pointer(&in.VolumeClaimTemplates))
+ out.VolumeClaimTemplates = *(*[]core.PersistentVolumeClaim)(unsafe.Pointer(&in.VolumeClaimTemplates))
out.ServiceName = in.ServiceName
out.PodManagementPolicy = apps.PodManagementPolicyType(in.PodManagementPolicy)
if err := Convert_v1beta1_StatefulSetUpdateStrategy_To_apps_StatefulSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, s); err != nil {
@@ -604,7 +635,7 @@ func autoConvert_apps_StatefulSetSpec_To_v1beta1_StatefulSetSpec(in *apps.Statef
return err
}
out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
- if err := api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := core_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
out.VolumeClaimTemplates = *(*[]v1.PersistentVolumeClaim)(unsafe.Pointer(&in.VolumeClaimTemplates))
@@ -626,6 +657,7 @@ func autoConvert_v1beta1_StatefulSetStatus_To_apps_StatefulSetStatus(in *v1beta1
out.CurrentRevision = in.CurrentRevision
out.UpdateRevision = in.UpdateRevision
out.CollisionCount = (*int32)(unsafe.Pointer(in.CollisionCount))
+ out.Conditions = *(*[]apps.StatefulSetCondition)(unsafe.Pointer(&in.Conditions))
return nil
}
@@ -643,6 +675,7 @@ func autoConvert_apps_StatefulSetStatus_To_v1beta1_StatefulSetStatus(in *apps.St
out.CurrentRevision = in.CurrentRevision
out.UpdateRevision = in.UpdateRevision
out.CollisionCount = (*int32)(unsafe.Pointer(in.CollisionCount))
+ out.Conditions = *(*[]v1beta1.StatefulSetCondition)(unsafe.Pointer(&in.Conditions))
return nil
}
diff --git a/pkg/apis/apps/v1beta1/zz_generated.defaults.go b/pkg/apis/apps/v1beta1/zz_generated.defaults.go
index 26fde73fe2..47c74ab2c4 100644
--- a/pkg/apis/apps/v1beta1/zz_generated.defaults.go
+++ b/pkg/apis/apps/v1beta1/zz_generated.defaults.go
@@ -23,7 +23,7 @@ package v1beta1
import (
v1beta1 "k8s.io/api/apps/v1beta1"
runtime "k8s.io/apimachinery/pkg/runtime"
- v1 "k8s.io/kubernetes/pkg/api/v1"
+ v1 "k8s.io/kubernetes/pkg/apis/core/v1"
)
// RegisterDefaults adds defaulters functions to the given scheme.
diff --git a/pkg/apis/apps/v1beta2/BUILD b/pkg/apis/apps/v1beta2/BUILD
index 18637b877f..b27e6f362c 100644
--- a/pkg/apis/apps/v1beta2/BUILD
+++ b/pkg/apis/apps/v1beta2/BUILD
@@ -18,14 +18,16 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/apis/apps/v1beta2",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/v1:go_default_library",
"//pkg/apis/apps:go_default_library",
+ "//pkg/apis/autoscaling:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/v1:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//vendor/k8s.io/api/apps/v1beta2:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
@@ -54,11 +56,12 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/apis/apps/v1beta2_test",
deps = [
":go_default_library",
- "//pkg/api:go_default_library",
- "//pkg/api/install:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/apis/apps:go_default_library",
"//pkg/apis/apps/install:go_default_library",
+ "//pkg/apis/autoscaling:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//vendor/k8s.io/api/apps/v1beta2:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
diff --git a/pkg/apis/apps/v1beta2/conversion.go b/pkg/apis/apps/v1beta2/conversion.go
index 191c2eb56b..f71de4f28e 100644
--- a/pkg/apis/apps/v1beta2/conversion.go
+++ b/pkg/apis/apps/v1beta2/conversion.go
@@ -24,11 +24,13 @@ import (
"k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/conversion"
+ "k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/intstr"
- "k8s.io/kubernetes/pkg/api"
- k8s_api_v1 "k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/apis/apps"
+ autoscaling "k8s.io/kubernetes/pkg/apis/autoscaling"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ k8s_api_v1 "k8s.io/kubernetes/pkg/apis/core/v1"
"k8s.io/kubernetes/pkg/apis/extensions"
)
@@ -57,8 +59,8 @@ func addConversionFuncs(scheme *runtime.Scheme) error {
// extensions
// TODO: below conversions should be dropped in favor of auto-generated
// ones, see https://github.com/kubernetes/kubernetes/issues/39865
- Convert_v1beta2_ScaleStatus_To_extensions_ScaleStatus,
- Convert_extensions_ScaleStatus_To_v1beta2_ScaleStatus,
+ Convert_v1beta2_ScaleStatus_To_autoscaling_ScaleStatus,
+ Convert_autoscaling_ScaleStatus_To_v1beta2_ScaleStatus,
Convert_v1beta2_DeploymentSpec_To_extensions_DeploymentSpec,
Convert_extensions_DeploymentSpec_To_v1beta2_DeploymentSpec,
Convert_v1beta2_DeploymentStrategy_To_extensions_DeploymentStrategy,
@@ -119,7 +121,7 @@ func Convert_v1beta2_StatefulSetSpec_To_apps_StatefulSetSpec(in *appsv1beta2.Sta
} else {
out.Selector = nil
}
- if err := k8s_api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := k8s_api_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if in.VolumeClaimTemplates != nil {
@@ -159,7 +161,7 @@ func Convert_apps_StatefulSetSpec_To_v1beta2_StatefulSetSpec(in *apps.StatefulSe
} else {
out.Selector = nil
}
- if err := k8s_api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := k8s_api_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if in.VolumeClaimTemplates != nil {
@@ -223,6 +225,12 @@ func Convert_v1beta2_StatefulSetStatus_To_apps_StatefulSetStatus(in *appsv1beta2
out.CollisionCount = new(int32)
*out.CollisionCount = *in.CollisionCount
}
+ out.Conditions = make([]apps.StatefulSetCondition, len(in.Conditions))
+ for i := range in.Conditions {
+ if err := Convert_v1beta2_StatefulSetCondition_To_apps_StatefulSetCondition(&in.Conditions[i], &out.Conditions[i], s); err != nil {
+ return err
+ }
+ }
return nil
}
@@ -240,29 +248,32 @@ func Convert_apps_StatefulSetStatus_To_v1beta2_StatefulSetStatus(in *apps.Statef
out.CollisionCount = new(int32)
*out.CollisionCount = *in.CollisionCount
}
- return nil
-}
-
-func Convert_extensions_ScaleStatus_To_v1beta2_ScaleStatus(in *extensions.ScaleStatus, out *appsv1beta2.ScaleStatus, s conversion.Scope) error {
- out.Replicas = int32(in.Replicas)
-
- out.Selector = nil
- out.TargetSelector = ""
- if in.Selector != nil {
- if in.Selector.MatchExpressions == nil || len(in.Selector.MatchExpressions) == 0 {
- out.Selector = in.Selector.MatchLabels
+ out.Conditions = make([]appsv1beta2.StatefulSetCondition, len(in.Conditions))
+ for i := range in.Conditions {
+ if err := Convert_apps_StatefulSetCondition_To_v1beta2_StatefulSetCondition(&in.Conditions[i], &out.Conditions[i], s); err != nil {
+ return err
}
-
- selector, err := metav1.LabelSelectorAsSelector(in.Selector)
- if err != nil {
- return fmt.Errorf("invalid label selector: %v", err)
- }
- out.TargetSelector = selector.String()
}
return nil
}
-func Convert_v1beta2_ScaleStatus_To_extensions_ScaleStatus(in *appsv1beta2.ScaleStatus, out *extensions.ScaleStatus, s conversion.Scope) error {
+func Convert_autoscaling_ScaleStatus_To_v1beta2_ScaleStatus(in *autoscaling.ScaleStatus, out *appsv1beta2.ScaleStatus, s conversion.Scope) error {
+ out.Replicas = int32(in.Replicas)
+ out.TargetSelector = in.Selector
+
+ out.Selector = nil
+ selector, err := metav1.ParseToLabelSelector(in.Selector)
+ if err != nil {
+ return fmt.Errorf("failed to parse selector: %v", err)
+ }
+ if len(selector.MatchExpressions) == 0 {
+ out.Selector = selector.MatchLabels
+ }
+
+ return nil
+}
+
+func Convert_v1beta2_ScaleStatus_To_autoscaling_ScaleStatus(in *appsv1beta2.ScaleStatus, out *autoscaling.ScaleStatus, s conversion.Scope) error {
out.Replicas = in.Replicas
// Normally when 2 fields map to the same internal value we favor the old field, since
@@ -270,21 +281,15 @@ func Convert_v1beta2_ScaleStatus_To_extensions_ScaleStatus(in *appsv1beta2.Scale
// new field can be expected to know about the old field (though that's not quite true, due
// to kubectl apply). However, these fields are readonly, so any non-nil value should work.
if in.TargetSelector != "" {
- labelSelector, err := metav1.ParseToLabelSelector(in.TargetSelector)
- if err != nil {
- out.Selector = nil
- return fmt.Errorf("failed to parse target selector: %v", err)
- }
- out.Selector = labelSelector
+ out.Selector = in.TargetSelector
} else if in.Selector != nil {
- out.Selector = new(metav1.LabelSelector)
- selector := make(map[string]string)
+ set := labels.Set{}
for key, val := range in.Selector {
- selector[key] = val
+ set[key] = val
}
- out.Selector.MatchLabels = selector
+ out.Selector = labels.SelectorFromSet(set).String()
} else {
- out.Selector = nil
+ out.Selector = ""
}
return nil
}
@@ -294,7 +299,7 @@ func Convert_v1beta2_DeploymentSpec_To_extensions_DeploymentSpec(in *appsv1beta2
out.Replicas = *in.Replicas
}
out.Selector = in.Selector
- if err := k8s_api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := k8s_api_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if err := Convert_v1beta2_DeploymentStrategy_To_extensions_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil {
@@ -313,7 +318,7 @@ func Convert_v1beta2_DeploymentSpec_To_extensions_DeploymentSpec(in *appsv1beta2
func Convert_extensions_DeploymentSpec_To_v1beta2_DeploymentSpec(in *extensions.DeploymentSpec, out *appsv1beta2.DeploymentSpec, s conversion.Scope) error {
out.Replicas = &in.Replicas
out.Selector = in.Selector
- if err := k8s_api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := k8s_api_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if err := Convert_extensions_DeploymentStrategy_To_v1beta2_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil {
@@ -389,7 +394,7 @@ func Convert_extensions_ReplicaSetSpec_To_v1beta2_ReplicaSetSpec(in *extensions.
*out.Replicas = int32(in.Replicas)
out.MinReadySeconds = in.MinReadySeconds
out.Selector = in.Selector
- if err := k8s_api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := k8s_api_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
return nil
@@ -427,7 +432,7 @@ func Convert_v1beta2_ReplicaSetSpec_To_extensions_ReplicaSetSpec(in *appsv1beta2
}
out.MinReadySeconds = in.MinReadySeconds
out.Selector = in.Selector
- if err := k8s_api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := k8s_api_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
return nil
@@ -473,7 +478,7 @@ func Convert_extensions_DaemonSet_To_v1beta2_DaemonSet(in *extensions.DaemonSet,
func Convert_extensions_DaemonSetSpec_To_v1beta2_DaemonSetSpec(in *extensions.DaemonSetSpec, out *appsv1beta2.DaemonSetSpec, s conversion.Scope) error {
out.Selector = in.Selector
- if err := k8s_api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := k8s_api_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if err := Convert_extensions_DaemonSetUpdateStrategy_To_v1beta2_DaemonSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, s); err != nil {
@@ -521,7 +526,7 @@ func Convert_v1beta2_DaemonSet_To_extensions_DaemonSet(in *appsv1beta2.DaemonSet
func Convert_v1beta2_DaemonSetSpec_To_extensions_DaemonSetSpec(in *appsv1beta2.DaemonSetSpec, out *extensions.DaemonSetSpec, s conversion.Scope) error {
out.Selector = in.Selector
- if err := k8s_api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := k8s_api_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if err := Convert_v1beta2_DaemonSetUpdateStrategy_To_extensions_DaemonSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, s); err != nil {
diff --git a/pkg/apis/apps/v1beta2/conversion_test.go b/pkg/apis/apps/v1beta2/conversion_test.go
index 2287b2f24c..7cf4d11a2f 100644
--- a/pkg/apis/apps/v1beta2/conversion_test.go
+++ b/pkg/apis/apps/v1beta2/conversion_test.go
@@ -22,9 +22,10 @@ import (
"k8s.io/api/apps/v1beta2"
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/util/intstr"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/apis/apps"
+ "k8s.io/kubernetes/pkg/apis/autoscaling"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
apiequality "k8s.io/apimachinery/pkg/api/equality"
@@ -349,41 +350,41 @@ func TestV1beta2ScaleStatusConversion(t *testing.T) {
labelsSelector2, _ := metav1.LabelSelectorAsSelector(selector2)
testcases := map[string]struct {
- scaleStatus1 *extensions.ScaleStatus
+ scaleStatus1 *autoscaling.ScaleStatus
scaleStatus2 *v1beta2.ScaleStatus
}{
"ScaleStatus Conversion 1": {
- scaleStatus1: &extensions.ScaleStatus{Replicas: 2},
+ scaleStatus1: &autoscaling.ScaleStatus{Replicas: 2},
scaleStatus2: &v1beta2.ScaleStatus{Replicas: 2},
},
"ScaleStatus Conversion 2": {
- scaleStatus1: &extensions.ScaleStatus{Replicas: 2, Selector: selector1},
+ scaleStatus1: &autoscaling.ScaleStatus{Replicas: 2, Selector: labelsSelector1.String()},
scaleStatus2: &v1beta2.ScaleStatus{Replicas: 2, Selector: matchLabels, TargetSelector: labelsSelector1.String()},
},
"ScaleStatus Conversion 3": {
- scaleStatus1: &extensions.ScaleStatus{Replicas: 2, Selector: selector2},
+ scaleStatus1: &autoscaling.ScaleStatus{Replicas: 2, Selector: labelsSelector2.String()},
scaleStatus2: &v1beta2.ScaleStatus{Replicas: 2, Selector: map[string]string{}, TargetSelector: labelsSelector2.String()},
},
}
for k, tc := range testcases {
- // extensions -> v1beta2
+ // autoscaling -> v1beta2
internal1 := &v1beta2.ScaleStatus{}
if err := legacyscheme.Scheme.Convert(tc.scaleStatus1, internal1, nil); err != nil {
- t.Errorf("%q - %q: unexpected error: %v", k, "extensions -> v1beta2", err)
+ t.Errorf("%q - %q: unexpected error: %v", k, "autoscaling -> v1beta2", err)
}
if !apiequality.Semantic.DeepEqual(internal1, tc.scaleStatus2) {
- t.Errorf("%q - %q: expected\n\t%#v, got \n\t%#v", k, "extensions -> v1beta2", tc.scaleStatus2, internal1)
+ t.Errorf("%q - %q: expected\n\t%#v, got \n\t%#v", k, "autoscaling -> v1beta2", tc.scaleStatus2, internal1)
}
- // v1beta2 -> extensions
- internal2 := &extensions.ScaleStatus{}
+ // v1beta2 -> autoscaling
+ internal2 := &autoscaling.ScaleStatus{}
if err := legacyscheme.Scheme.Convert(tc.scaleStatus2, internal2, nil); err != nil {
- t.Errorf("%q - %q: unexpected error: %v", k, "v1beta2 -> extensions", err)
+ t.Errorf("%q - %q: unexpected error: %v", k, "v1beta2 -> autoscaling", err)
}
if !apiequality.Semantic.DeepEqual(internal2, tc.scaleStatus1) {
- t.Errorf("%q - %q: expected\n\t%+v, got \n\t%+v", k, "v1beta2 -> extensions", tc.scaleStatus1, internal2)
+ t.Errorf("%q - %q: expected\n\t%+v, got \n\t%+v", k, "v1beta2 -> autoscaling", tc.scaleStatus1, internal2)
}
}
}
diff --git a/pkg/apis/apps/v1beta2/defaults_test.go b/pkg/apis/apps/v1beta2/defaults_test.go
index 6d10ff00cc..86cec68806 100644
--- a/pkg/apis/apps/v1beta2/defaults_test.go
+++ b/pkg/apis/apps/v1beta2/defaults_test.go
@@ -27,11 +27,11 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/intstr"
- "k8s.io/kubernetes/pkg/api"
- _ "k8s.io/kubernetes/pkg/api/install"
"k8s.io/kubernetes/pkg/api/legacyscheme"
_ "k8s.io/kubernetes/pkg/apis/apps/install"
. "k8s.io/kubernetes/pkg/apis/apps/v1beta2"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
)
func TestSetDefaultDaemonSetSpec(t *testing.T) {
diff --git a/pkg/apis/apps/v1beta2/doc.go b/pkg/apis/apps/v1beta2/doc.go
index 9a0bb58199..6c8f7c3bc0 100644
--- a/pkg/apis/apps/v1beta2/doc.go
+++ b/pkg/apis/apps/v1beta2/doc.go
@@ -15,6 +15,7 @@ limitations under the License.
*/
// +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/apps
+// +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/autoscaling
// +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/extensions
// +k8s:conversion-gen-external-types=../../../../vendor/k8s.io/api/apps/v1beta2
// +k8s:defaulter-gen=TypeMeta
diff --git a/pkg/apis/apps/v1beta2/zz_generated.conversion.go b/pkg/apis/apps/v1beta2/zz_generated.conversion.go
index 282cb85e54..cbe3ccaa91 100644
--- a/pkg/apis/apps/v1beta2/zz_generated.conversion.go
+++ b/pkg/apis/apps/v1beta2/zz_generated.conversion.go
@@ -26,9 +26,10 @@ import (
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- api "k8s.io/kubernetes/pkg/api"
- api_v1 "k8s.io/kubernetes/pkg/api/v1"
apps "k8s.io/kubernetes/pkg/apis/apps"
+ autoscaling "k8s.io/kubernetes/pkg/apis/autoscaling"
+ core "k8s.io/kubernetes/pkg/apis/core"
+ core_v1 "k8s.io/kubernetes/pkg/apis/core/v1"
extensions "k8s.io/kubernetes/pkg/apis/extensions"
unsafe "unsafe"
)
@@ -85,14 +86,16 @@ func RegisterConversions(scheme *runtime.Scheme) error {
Convert_extensions_RollingUpdateDeployment_To_v1beta2_RollingUpdateDeployment,
Convert_v1beta2_RollingUpdateStatefulSetStrategy_To_apps_RollingUpdateStatefulSetStrategy,
Convert_apps_RollingUpdateStatefulSetStrategy_To_v1beta2_RollingUpdateStatefulSetStrategy,
- Convert_v1beta2_Scale_To_extensions_Scale,
- Convert_extensions_Scale_To_v1beta2_Scale,
- Convert_v1beta2_ScaleSpec_To_extensions_ScaleSpec,
- Convert_extensions_ScaleSpec_To_v1beta2_ScaleSpec,
- Convert_v1beta2_ScaleStatus_To_extensions_ScaleStatus,
- Convert_extensions_ScaleStatus_To_v1beta2_ScaleStatus,
+ Convert_v1beta2_Scale_To_autoscaling_Scale,
+ Convert_autoscaling_Scale_To_v1beta2_Scale,
+ Convert_v1beta2_ScaleSpec_To_autoscaling_ScaleSpec,
+ Convert_autoscaling_ScaleSpec_To_v1beta2_ScaleSpec,
+ Convert_v1beta2_ScaleStatus_To_autoscaling_ScaleStatus,
+ Convert_autoscaling_ScaleStatus_To_v1beta2_ScaleStatus,
Convert_v1beta2_StatefulSet_To_apps_StatefulSet,
Convert_apps_StatefulSet_To_v1beta2_StatefulSet,
+ Convert_v1beta2_StatefulSetCondition_To_apps_StatefulSetCondition,
+ Convert_apps_StatefulSetCondition_To_v1beta2_StatefulSetCondition,
Convert_v1beta2_StatefulSetList_To_apps_StatefulSetList,
Convert_apps_StatefulSetList_To_v1beta2_StatefulSetList,
Convert_v1beta2_StatefulSetSpec_To_apps_StatefulSetSpec,
@@ -198,7 +201,7 @@ func autoConvert_extensions_DaemonSet_To_v1beta2_DaemonSet(in *extensions.Daemon
func autoConvert_v1beta2_DaemonSetCondition_To_extensions_DaemonSetCondition(in *v1beta2.DaemonSetCondition, out *extensions.DaemonSetCondition, s conversion.Scope) error {
out.Type = extensions.DaemonSetConditionType(in.Type)
- out.Status = api.ConditionStatus(in.Status)
+ out.Status = core.ConditionStatus(in.Status)
out.LastTransitionTime = in.LastTransitionTime
out.Reason = in.Reason
out.Message = in.Message
@@ -268,7 +271,7 @@ func Convert_extensions_DaemonSetList_To_v1beta2_DaemonSetList(in *extensions.Da
func autoConvert_v1beta2_DaemonSetSpec_To_extensions_DaemonSetSpec(in *v1beta2.DaemonSetSpec, out *extensions.DaemonSetSpec, s conversion.Scope) error {
out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
- if err := api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := core_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if err := Convert_v1beta2_DaemonSetUpdateStrategy_To_extensions_DaemonSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, s); err != nil {
@@ -281,7 +284,7 @@ func autoConvert_v1beta2_DaemonSetSpec_To_extensions_DaemonSetSpec(in *v1beta2.D
func autoConvert_extensions_DaemonSetSpec_To_v1beta2_DaemonSetSpec(in *extensions.DaemonSetSpec, out *v1beta2.DaemonSetSpec, s conversion.Scope) error {
out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
- if err := api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := core_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if err := Convert_extensions_DaemonSetUpdateStrategy_To_v1beta2_DaemonSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, s); err != nil {
@@ -383,7 +386,7 @@ func autoConvert_extensions_Deployment_To_v1beta2_Deployment(in *extensions.Depl
func autoConvert_v1beta2_DeploymentCondition_To_extensions_DeploymentCondition(in *v1beta2.DeploymentCondition, out *extensions.DeploymentCondition, s conversion.Scope) error {
out.Type = extensions.DeploymentConditionType(in.Type)
- out.Status = api.ConditionStatus(in.Status)
+ out.Status = core.ConditionStatus(in.Status)
out.LastUpdateTime = in.LastUpdateTime
out.LastTransitionTime = in.LastTransitionTime
out.Reason = in.Reason
@@ -458,7 +461,7 @@ func autoConvert_v1beta2_DeploymentSpec_To_extensions_DeploymentSpec(in *v1beta2
return err
}
out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
- if err := api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := core_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if err := Convert_v1beta2_DeploymentStrategy_To_extensions_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil {
@@ -476,7 +479,7 @@ func autoConvert_extensions_DeploymentSpec_To_v1beta2_DeploymentSpec(in *extensi
return err
}
out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
- if err := api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := core_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if err := Convert_extensions_DeploymentStrategy_To_v1beta2_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil {
@@ -586,7 +589,7 @@ func Convert_extensions_ReplicaSet_To_v1beta2_ReplicaSet(in *extensions.ReplicaS
func autoConvert_v1beta2_ReplicaSetCondition_To_extensions_ReplicaSetCondition(in *v1beta2.ReplicaSetCondition, out *extensions.ReplicaSetCondition, s conversion.Scope) error {
out.Type = extensions.ReplicaSetConditionType(in.Type)
- out.Status = api.ConditionStatus(in.Status)
+ out.Status = core.ConditionStatus(in.Status)
out.LastTransitionTime = in.LastTransitionTime
out.Reason = in.Reason
out.Message = in.Message
@@ -660,7 +663,7 @@ func autoConvert_v1beta2_ReplicaSetSpec_To_extensions_ReplicaSetSpec(in *v1beta2
}
out.MinReadySeconds = in.MinReadySeconds
out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
- if err := api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := core_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
return nil
@@ -672,7 +675,7 @@ func autoConvert_extensions_ReplicaSetSpec_To_v1beta2_ReplicaSetSpec(in *extensi
}
out.MinReadySeconds = in.MinReadySeconds
out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
- if err := api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := core_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
return nil
@@ -754,68 +757,68 @@ func Convert_apps_RollingUpdateStatefulSetStrategy_To_v1beta2_RollingUpdateState
return autoConvert_apps_RollingUpdateStatefulSetStrategy_To_v1beta2_RollingUpdateStatefulSetStrategy(in, out, s)
}
-func autoConvert_v1beta2_Scale_To_extensions_Scale(in *v1beta2.Scale, out *extensions.Scale, s conversion.Scope) error {
+func autoConvert_v1beta2_Scale_To_autoscaling_Scale(in *v1beta2.Scale, out *autoscaling.Scale, s conversion.Scope) error {
out.ObjectMeta = in.ObjectMeta
- if err := Convert_v1beta2_ScaleSpec_To_extensions_ScaleSpec(&in.Spec, &out.Spec, s); err != nil {
+ if err := Convert_v1beta2_ScaleSpec_To_autoscaling_ScaleSpec(&in.Spec, &out.Spec, s); err != nil {
return err
}
- if err := Convert_v1beta2_ScaleStatus_To_extensions_ScaleStatus(&in.Status, &out.Status, s); err != nil {
+ if err := Convert_v1beta2_ScaleStatus_To_autoscaling_ScaleStatus(&in.Status, &out.Status, s); err != nil {
return err
}
return nil
}
-// Convert_v1beta2_Scale_To_extensions_Scale is an autogenerated conversion function.
-func Convert_v1beta2_Scale_To_extensions_Scale(in *v1beta2.Scale, out *extensions.Scale, s conversion.Scope) error {
- return autoConvert_v1beta2_Scale_To_extensions_Scale(in, out, s)
+// Convert_v1beta2_Scale_To_autoscaling_Scale is an autogenerated conversion function.
+func Convert_v1beta2_Scale_To_autoscaling_Scale(in *v1beta2.Scale, out *autoscaling.Scale, s conversion.Scope) error {
+ return autoConvert_v1beta2_Scale_To_autoscaling_Scale(in, out, s)
}
-func autoConvert_extensions_Scale_To_v1beta2_Scale(in *extensions.Scale, out *v1beta2.Scale, s conversion.Scope) error {
+func autoConvert_autoscaling_Scale_To_v1beta2_Scale(in *autoscaling.Scale, out *v1beta2.Scale, s conversion.Scope) error {
out.ObjectMeta = in.ObjectMeta
- if err := Convert_extensions_ScaleSpec_To_v1beta2_ScaleSpec(&in.Spec, &out.Spec, s); err != nil {
+ if err := Convert_autoscaling_ScaleSpec_To_v1beta2_ScaleSpec(&in.Spec, &out.Spec, s); err != nil {
return err
}
- if err := Convert_extensions_ScaleStatus_To_v1beta2_ScaleStatus(&in.Status, &out.Status, s); err != nil {
+ if err := Convert_autoscaling_ScaleStatus_To_v1beta2_ScaleStatus(&in.Status, &out.Status, s); err != nil {
return err
}
return nil
}
-// Convert_extensions_Scale_To_v1beta2_Scale is an autogenerated conversion function.
-func Convert_extensions_Scale_To_v1beta2_Scale(in *extensions.Scale, out *v1beta2.Scale, s conversion.Scope) error {
- return autoConvert_extensions_Scale_To_v1beta2_Scale(in, out, s)
+// Convert_autoscaling_Scale_To_v1beta2_Scale is an autogenerated conversion function.
+func Convert_autoscaling_Scale_To_v1beta2_Scale(in *autoscaling.Scale, out *v1beta2.Scale, s conversion.Scope) error {
+ return autoConvert_autoscaling_Scale_To_v1beta2_Scale(in, out, s)
}
-func autoConvert_v1beta2_ScaleSpec_To_extensions_ScaleSpec(in *v1beta2.ScaleSpec, out *extensions.ScaleSpec, s conversion.Scope) error {
+func autoConvert_v1beta2_ScaleSpec_To_autoscaling_ScaleSpec(in *v1beta2.ScaleSpec, out *autoscaling.ScaleSpec, s conversion.Scope) error {
out.Replicas = in.Replicas
return nil
}
-// Convert_v1beta2_ScaleSpec_To_extensions_ScaleSpec is an autogenerated conversion function.
-func Convert_v1beta2_ScaleSpec_To_extensions_ScaleSpec(in *v1beta2.ScaleSpec, out *extensions.ScaleSpec, s conversion.Scope) error {
- return autoConvert_v1beta2_ScaleSpec_To_extensions_ScaleSpec(in, out, s)
+// Convert_v1beta2_ScaleSpec_To_autoscaling_ScaleSpec is an autogenerated conversion function.
+func Convert_v1beta2_ScaleSpec_To_autoscaling_ScaleSpec(in *v1beta2.ScaleSpec, out *autoscaling.ScaleSpec, s conversion.Scope) error {
+ return autoConvert_v1beta2_ScaleSpec_To_autoscaling_ScaleSpec(in, out, s)
}
-func autoConvert_extensions_ScaleSpec_To_v1beta2_ScaleSpec(in *extensions.ScaleSpec, out *v1beta2.ScaleSpec, s conversion.Scope) error {
+func autoConvert_autoscaling_ScaleSpec_To_v1beta2_ScaleSpec(in *autoscaling.ScaleSpec, out *v1beta2.ScaleSpec, s conversion.Scope) error {
out.Replicas = in.Replicas
return nil
}
-// Convert_extensions_ScaleSpec_To_v1beta2_ScaleSpec is an autogenerated conversion function.
-func Convert_extensions_ScaleSpec_To_v1beta2_ScaleSpec(in *extensions.ScaleSpec, out *v1beta2.ScaleSpec, s conversion.Scope) error {
- return autoConvert_extensions_ScaleSpec_To_v1beta2_ScaleSpec(in, out, s)
+// Convert_autoscaling_ScaleSpec_To_v1beta2_ScaleSpec is an autogenerated conversion function.
+func Convert_autoscaling_ScaleSpec_To_v1beta2_ScaleSpec(in *autoscaling.ScaleSpec, out *v1beta2.ScaleSpec, s conversion.Scope) error {
+ return autoConvert_autoscaling_ScaleSpec_To_v1beta2_ScaleSpec(in, out, s)
}
-func autoConvert_v1beta2_ScaleStatus_To_extensions_ScaleStatus(in *v1beta2.ScaleStatus, out *extensions.ScaleStatus, s conversion.Scope) error {
+func autoConvert_v1beta2_ScaleStatus_To_autoscaling_ScaleStatus(in *v1beta2.ScaleStatus, out *autoscaling.ScaleStatus, s conversion.Scope) error {
out.Replicas = in.Replicas
- // WARNING: in.Selector requires manual conversion: inconvertible types (map[string]string vs *k8s.io/apimachinery/pkg/apis/meta/v1.LabelSelector)
+ // WARNING: in.Selector requires manual conversion: inconvertible types (map[string]string vs string)
// WARNING: in.TargetSelector requires manual conversion: does not exist in peer-type
return nil
}
-func autoConvert_extensions_ScaleStatus_To_v1beta2_ScaleStatus(in *extensions.ScaleStatus, out *v1beta2.ScaleStatus, s conversion.Scope) error {
+func autoConvert_autoscaling_ScaleStatus_To_v1beta2_ScaleStatus(in *autoscaling.ScaleStatus, out *v1beta2.ScaleStatus, s conversion.Scope) error {
out.Replicas = in.Replicas
- // WARNING: in.Selector requires manual conversion: inconvertible types (*k8s.io/apimachinery/pkg/apis/meta/v1.LabelSelector vs map[string]string)
+ // WARNING: in.Selector requires manual conversion: inconvertible types (string vs map[string]string)
return nil
}
@@ -851,6 +854,34 @@ func Convert_apps_StatefulSet_To_v1beta2_StatefulSet(in *apps.StatefulSet, out *
return autoConvert_apps_StatefulSet_To_v1beta2_StatefulSet(in, out, s)
}
+func autoConvert_v1beta2_StatefulSetCondition_To_apps_StatefulSetCondition(in *v1beta2.StatefulSetCondition, out *apps.StatefulSetCondition, s conversion.Scope) error {
+ out.Type = apps.StatefulSetConditionType(in.Type)
+ out.Status = core.ConditionStatus(in.Status)
+ out.LastTransitionTime = in.LastTransitionTime
+ out.Reason = in.Reason
+ out.Message = in.Message
+ return nil
+}
+
+// Convert_v1beta2_StatefulSetCondition_To_apps_StatefulSetCondition is an autogenerated conversion function.
+func Convert_v1beta2_StatefulSetCondition_To_apps_StatefulSetCondition(in *v1beta2.StatefulSetCondition, out *apps.StatefulSetCondition, s conversion.Scope) error {
+ return autoConvert_v1beta2_StatefulSetCondition_To_apps_StatefulSetCondition(in, out, s)
+}
+
+func autoConvert_apps_StatefulSetCondition_To_v1beta2_StatefulSetCondition(in *apps.StatefulSetCondition, out *v1beta2.StatefulSetCondition, s conversion.Scope) error {
+ out.Type = v1beta2.StatefulSetConditionType(in.Type)
+ out.Status = v1.ConditionStatus(in.Status)
+ out.LastTransitionTime = in.LastTransitionTime
+ out.Reason = in.Reason
+ out.Message = in.Message
+ return nil
+}
+
+// Convert_apps_StatefulSetCondition_To_v1beta2_StatefulSetCondition is an autogenerated conversion function.
+func Convert_apps_StatefulSetCondition_To_v1beta2_StatefulSetCondition(in *apps.StatefulSetCondition, out *v1beta2.StatefulSetCondition, s conversion.Scope) error {
+ return autoConvert_apps_StatefulSetCondition_To_v1beta2_StatefulSetCondition(in, out, s)
+}
+
func autoConvert_v1beta2_StatefulSetList_To_apps_StatefulSetList(in *v1beta2.StatefulSetList, out *apps.StatefulSetList, s conversion.Scope) error {
out.ListMeta = in.ListMeta
if in.Items != nil {
@@ -898,10 +929,10 @@ func autoConvert_v1beta2_StatefulSetSpec_To_apps_StatefulSetSpec(in *v1beta2.Sta
return err
}
out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
- if err := api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := core_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
- out.VolumeClaimTemplates = *(*[]api.PersistentVolumeClaim)(unsafe.Pointer(&in.VolumeClaimTemplates))
+ out.VolumeClaimTemplates = *(*[]core.PersistentVolumeClaim)(unsafe.Pointer(&in.VolumeClaimTemplates))
out.ServiceName = in.ServiceName
out.PodManagementPolicy = apps.PodManagementPolicyType(in.PodManagementPolicy)
if err := Convert_v1beta2_StatefulSetUpdateStrategy_To_apps_StatefulSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, s); err != nil {
@@ -916,7 +947,7 @@ func autoConvert_apps_StatefulSetSpec_To_v1beta2_StatefulSetSpec(in *apps.Statef
return err
}
out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
- if err := api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := core_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
out.VolumeClaimTemplates = *(*[]v1.PersistentVolumeClaim)(unsafe.Pointer(&in.VolumeClaimTemplates))
@@ -938,6 +969,7 @@ func autoConvert_v1beta2_StatefulSetStatus_To_apps_StatefulSetStatus(in *v1beta2
out.CurrentRevision = in.CurrentRevision
out.UpdateRevision = in.UpdateRevision
out.CollisionCount = (*int32)(unsafe.Pointer(in.CollisionCount))
+ out.Conditions = *(*[]apps.StatefulSetCondition)(unsafe.Pointer(&in.Conditions))
return nil
}
@@ -950,6 +982,7 @@ func autoConvert_apps_StatefulSetStatus_To_v1beta2_StatefulSetStatus(in *apps.St
out.CurrentRevision = in.CurrentRevision
out.UpdateRevision = in.UpdateRevision
out.CollisionCount = (*int32)(unsafe.Pointer(in.CollisionCount))
+ out.Conditions = *(*[]v1beta2.StatefulSetCondition)(unsafe.Pointer(&in.Conditions))
return nil
}
diff --git a/pkg/apis/apps/v1beta2/zz_generated.defaults.go b/pkg/apis/apps/v1beta2/zz_generated.defaults.go
index 29eabcaf89..ddf7f6a169 100644
--- a/pkg/apis/apps/v1beta2/zz_generated.defaults.go
+++ b/pkg/apis/apps/v1beta2/zz_generated.defaults.go
@@ -23,7 +23,7 @@ package v1beta2
import (
v1beta2 "k8s.io/api/apps/v1beta2"
runtime "k8s.io/apimachinery/pkg/runtime"
- v1 "k8s.io/kubernetes/pkg/api/v1"
+ v1 "k8s.io/kubernetes/pkg/apis/core/v1"
)
// RegisterDefaults adds defaulters functions to the given scheme.
diff --git a/pkg/apis/apps/validation/BUILD b/pkg/apis/apps/validation/BUILD
index d02837508c..3d80e8e2bb 100644
--- a/pkg/apis/apps/validation/BUILD
+++ b/pkg/apis/apps/validation/BUILD
@@ -11,9 +11,9 @@ go_library(
srcs = ["validation.go"],
importpath = "k8s.io/kubernetes/pkg/apis/apps/validation",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/validation:go_default_library",
"//pkg/apis/apps:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
@@ -27,8 +27,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/apis/apps/validation",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/apis/apps:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
diff --git a/pkg/apis/apps/validation/validation.go b/pkg/apis/apps/validation/validation.go
index 85bc564ff4..fc7c029ca7 100644
--- a/pkg/apis/apps/validation/validation.go
+++ b/pkg/apis/apps/validation/validation.go
@@ -24,9 +24,9 @@ import (
unversionedvalidation "k8s.io/apimachinery/pkg/apis/meta/v1/validation"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
- apivalidation "k8s.io/kubernetes/pkg/api/validation"
"k8s.io/kubernetes/pkg/apis/apps"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ apivalidation "k8s.io/kubernetes/pkg/apis/core/validation"
)
// ValidateStatefulSetName can be used to check whether the given StatefulSet name is valid.
diff --git a/pkg/apis/apps/validation/validation_test.go b/pkg/apis/apps/validation/validation_test.go
index 306fddc7c4..cf5ed252c8 100644
--- a/pkg/apis/apps/validation/validation_test.go
+++ b/pkg/apis/apps/validation/validation_test.go
@@ -23,8 +23,8 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/apps"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func TestValidateStatefulSet(t *testing.T) {
diff --git a/pkg/apis/apps/zz_generated.deepcopy.go b/pkg/apis/apps/zz_generated.deepcopy.go
index 983dabf46a..5e8a747468 100644
--- a/pkg/apis/apps/zz_generated.deepcopy.go
+++ b/pkg/apis/apps/zz_generated.deepcopy.go
@@ -22,57 +22,10 @@ package apps
import (
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- api "k8s.io/kubernetes/pkg/api"
- reflect "reflect"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ControllerRevision).DeepCopyInto(out.(*ControllerRevision))
- return nil
- }, InType: reflect.TypeOf(&ControllerRevision{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ControllerRevisionList).DeepCopyInto(out.(*ControllerRevisionList))
- return nil
- }, InType: reflect.TypeOf(&ControllerRevisionList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RollingUpdateStatefulSetStrategy).DeepCopyInto(out.(*RollingUpdateStatefulSetStrategy))
- return nil
- }, InType: reflect.TypeOf(&RollingUpdateStatefulSetStrategy{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StatefulSet).DeepCopyInto(out.(*StatefulSet))
- return nil
- }, InType: reflect.TypeOf(&StatefulSet{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StatefulSetList).DeepCopyInto(out.(*StatefulSetList))
- return nil
- }, InType: reflect.TypeOf(&StatefulSetList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StatefulSetSpec).DeepCopyInto(out.(*StatefulSetSpec))
- return nil
- }, InType: reflect.TypeOf(&StatefulSetSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StatefulSetStatus).DeepCopyInto(out.(*StatefulSetStatus))
- return nil
- }, InType: reflect.TypeOf(&StatefulSetStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StatefulSetUpdateStrategy).DeepCopyInto(out.(*StatefulSetUpdateStrategy))
- return nil
- }, InType: reflect.TypeOf(&StatefulSetUpdateStrategy{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ControllerRevision) DeepCopyInto(out *ControllerRevision) {
*out = *in
@@ -184,6 +137,23 @@ func (in *StatefulSet) DeepCopyObject() runtime.Object {
}
}
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *StatefulSetCondition) DeepCopyInto(out *StatefulSetCondition) {
+ *out = *in
+ in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime)
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StatefulSetCondition.
+func (in *StatefulSetCondition) DeepCopy() *StatefulSetCondition {
+ if in == nil {
+ return nil
+ }
+ out := new(StatefulSetCondition)
+ in.DeepCopyInto(out)
+ return out
+}
+
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *StatefulSetList) DeepCopyInto(out *StatefulSetList) {
*out = *in
@@ -233,7 +203,7 @@ func (in *StatefulSetSpec) DeepCopyInto(out *StatefulSetSpec) {
in.Template.DeepCopyInto(&out.Template)
if in.VolumeClaimTemplates != nil {
in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates
- *out = make([]api.PersistentVolumeClaim, len(*in))
+ *out = make([]core.PersistentVolumeClaim, len(*in))
for i := range *in {
(*in)[i].DeepCopyInto(&(*out)[i])
}
@@ -282,6 +252,13 @@ func (in *StatefulSetStatus) DeepCopyInto(out *StatefulSetStatus) {
**out = **in
}
}
+ if in.Conditions != nil {
+ in, out := &in.Conditions, &out.Conditions
+ *out = make([]StatefulSetCondition, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
return
}
diff --git a/pkg/apis/authentication/BUILD b/pkg/apis/authentication/BUILD
index b838290ca5..839995873a 100644
--- a/pkg/apis/authentication/BUILD
+++ b/pkg/apis/authentication/BUILD
@@ -16,7 +16,6 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/apis/authentication",
deps = [
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/pkg/apis/authentication/doc.go b/pkg/apis/authentication/doc.go
index 88bdf625b7..0afbdd3a3a 100644
--- a/pkg/apis/authentication/doc.go
+++ b/pkg/apis/authentication/doc.go
@@ -14,6 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +groupName=authentication.k8s.io
package authentication // import "k8s.io/kubernetes/pkg/apis/authentication"
diff --git a/pkg/apis/authentication/zz_generated.deepcopy.go b/pkg/apis/authentication/zz_generated.deepcopy.go
index 0efa1497af..8f3ca0afe7 100644
--- a/pkg/apis/authentication/zz_generated.deepcopy.go
+++ b/pkg/apis/authentication/zz_generated.deepcopy.go
@@ -21,40 +21,9 @@ limitations under the License.
package authentication
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TokenReview).DeepCopyInto(out.(*TokenReview))
- return nil
- }, InType: reflect.TypeOf(&TokenReview{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TokenReviewSpec).DeepCopyInto(out.(*TokenReviewSpec))
- return nil
- }, InType: reflect.TypeOf(&TokenReviewSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TokenReviewStatus).DeepCopyInto(out.(*TokenReviewStatus))
- return nil
- }, InType: reflect.TypeOf(&TokenReviewStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*UserInfo).DeepCopyInto(out.(*UserInfo))
- return nil
- }, InType: reflect.TypeOf(&UserInfo{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TokenReview) DeepCopyInto(out *TokenReview) {
*out = *in
diff --git a/pkg/apis/authorization/BUILD b/pkg/apis/authorization/BUILD
index 59a9535768..30e71c4966 100644
--- a/pkg/apis/authorization/BUILD
+++ b/pkg/apis/authorization/BUILD
@@ -16,7 +16,6 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/apis/authorization",
deps = [
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/pkg/apis/authorization/doc.go b/pkg/apis/authorization/doc.go
index 29f9b62420..5cb3094aba 100644
--- a/pkg/apis/authorization/doc.go
+++ b/pkg/apis/authorization/doc.go
@@ -14,6 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +groupName=authorization.k8s.io
package authorization // import "k8s.io/kubernetes/pkg/apis/authorization"
diff --git a/pkg/apis/authorization/zz_generated.deepcopy.go b/pkg/apis/authorization/zz_generated.deepcopy.go
index eb121f3088..cdc23a2097 100644
--- a/pkg/apis/authorization/zz_generated.deepcopy.go
+++ b/pkg/apis/authorization/zz_generated.deepcopy.go
@@ -21,76 +21,9 @@ limitations under the License.
package authorization
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*LocalSubjectAccessReview).DeepCopyInto(out.(*LocalSubjectAccessReview))
- return nil
- }, InType: reflect.TypeOf(&LocalSubjectAccessReview{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NonResourceAttributes).DeepCopyInto(out.(*NonResourceAttributes))
- return nil
- }, InType: reflect.TypeOf(&NonResourceAttributes{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NonResourceRule).DeepCopyInto(out.(*NonResourceRule))
- return nil
- }, InType: reflect.TypeOf(&NonResourceRule{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ResourceAttributes).DeepCopyInto(out.(*ResourceAttributes))
- return nil
- }, InType: reflect.TypeOf(&ResourceAttributes{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ResourceRule).DeepCopyInto(out.(*ResourceRule))
- return nil
- }, InType: reflect.TypeOf(&ResourceRule{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SelfSubjectAccessReview).DeepCopyInto(out.(*SelfSubjectAccessReview))
- return nil
- }, InType: reflect.TypeOf(&SelfSubjectAccessReview{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SelfSubjectAccessReviewSpec).DeepCopyInto(out.(*SelfSubjectAccessReviewSpec))
- return nil
- }, InType: reflect.TypeOf(&SelfSubjectAccessReviewSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SelfSubjectRulesReview).DeepCopyInto(out.(*SelfSubjectRulesReview))
- return nil
- }, InType: reflect.TypeOf(&SelfSubjectRulesReview{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SelfSubjectRulesReviewSpec).DeepCopyInto(out.(*SelfSubjectRulesReviewSpec))
- return nil
- }, InType: reflect.TypeOf(&SelfSubjectRulesReviewSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SubjectAccessReview).DeepCopyInto(out.(*SubjectAccessReview))
- return nil
- }, InType: reflect.TypeOf(&SubjectAccessReview{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SubjectAccessReviewSpec).DeepCopyInto(out.(*SubjectAccessReviewSpec))
- return nil
- }, InType: reflect.TypeOf(&SubjectAccessReviewSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SubjectAccessReviewStatus).DeepCopyInto(out.(*SubjectAccessReviewStatus))
- return nil
- }, InType: reflect.TypeOf(&SubjectAccessReviewStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SubjectRulesReviewStatus).DeepCopyInto(out.(*SubjectRulesReviewStatus))
- return nil
- }, InType: reflect.TypeOf(&SubjectRulesReviewStatus{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *LocalSubjectAccessReview) DeepCopyInto(out *LocalSubjectAccessReview) {
*out = *in
diff --git a/pkg/apis/autoscaling/BUILD b/pkg/apis/autoscaling/BUILD
index edb280ba05..dcca30c00d 100644
--- a/pkg/apis/autoscaling/BUILD
+++ b/pkg/apis/autoscaling/BUILD
@@ -16,10 +16,9 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/apis/autoscaling",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/pkg/apis/autoscaling/doc.go b/pkg/apis/autoscaling/doc.go
index d9e11576f9..7c91aac8bb 100644
--- a/pkg/apis/autoscaling/doc.go
+++ b/pkg/apis/autoscaling/doc.go
@@ -14,6 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
package autoscaling // import "k8s.io/kubernetes/pkg/apis/autoscaling"
diff --git a/pkg/apis/autoscaling/fuzzer/BUILD b/pkg/apis/autoscaling/fuzzer/BUILD
index 5d1dbca637..ae20853a34 100644
--- a/pkg/apis/autoscaling/fuzzer/BUILD
+++ b/pkg/apis/autoscaling/fuzzer/BUILD
@@ -10,10 +10,11 @@ go_library(
srcs = ["fuzzer.go"],
importpath = "k8s.io/kubernetes/pkg/apis/autoscaling/fuzzer",
deps = [
- "//pkg/api:go_default_library",
"//pkg/apis/autoscaling:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/github.com/google/gofuzz:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
],
)
diff --git a/pkg/apis/autoscaling/fuzzer/fuzzer.go b/pkg/apis/autoscaling/fuzzer/fuzzer.go
index 7133c16273..2c1ea0608c 100644
--- a/pkg/apis/autoscaling/fuzzer/fuzzer.go
+++ b/pkg/apis/autoscaling/fuzzer/fuzzer.go
@@ -18,15 +18,26 @@ package fuzzer
import (
fuzz "github.com/google/gofuzz"
+
"k8s.io/apimachinery/pkg/api/resource"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/autoscaling"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// Funcs returns the fuzzer functions for the autoscaling api group.
var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} {
return []interface{}{
+ func(s *autoscaling.ScaleStatus, c fuzz.Continue) {
+ c.FuzzNoCustom(s) // fuzz self without calling this function again
+
+ // ensure we have a valid selector
+ metaSelector := &metav1.LabelSelector{}
+ c.Fuzz(metaSelector)
+ labelSelector, _ := metav1.LabelSelectorAsSelector(metaSelector)
+ s.Selector = labelSelector.String()
+ },
func(s *autoscaling.HorizontalPodAutoscalerSpec, c fuzz.Continue) {
c.FuzzNoCustom(s) // fuzz self without calling this function again
minReplicas := int32(c.Rand.Int31())
diff --git a/pkg/apis/autoscaling/types.go b/pkg/apis/autoscaling/types.go
index 7c830d9467..0e9d669ad7 100644
--- a/pkg/apis/autoscaling/types.go
+++ b/pkg/apis/autoscaling/types.go
@@ -19,7 +19,7 @@ package autoscaling
import (
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
diff --git a/pkg/apis/autoscaling/v1/BUILD b/pkg/apis/autoscaling/v1/BUILD
index f66b822ab0..4f2490f7dd 100644
--- a/pkg/apis/autoscaling/v1/BUILD
+++ b/pkg/apis/autoscaling/v1/BUILD
@@ -18,8 +18,8 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/apis/autoscaling/v1",
deps = [
- "//pkg/api:go_default_library",
"//pkg/apis/autoscaling:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/api/autoscaling/v1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
@@ -36,9 +36,9 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/apis/autoscaling/v1_test",
deps = [
":go_default_library",
- "//pkg/api/install:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/apis/autoscaling/install:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//vendor/k8s.io/api/autoscaling/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
],
diff --git a/pkg/apis/autoscaling/v1/conversion.go b/pkg/apis/autoscaling/v1/conversion.go
index 04dc4a2804..599fa7622d 100644
--- a/pkg/apis/autoscaling/v1/conversion.go
+++ b/pkg/apis/autoscaling/v1/conversion.go
@@ -23,8 +23,8 @@ import (
"k8s.io/apimachinery/pkg/conversion"
"k8s.io/apimachinery/pkg/runtime"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/autoscaling"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func addConversionFuncs(scheme *runtime.Scheme) error {
diff --git a/pkg/apis/autoscaling/v1/defaults_test.go b/pkg/apis/autoscaling/v1/defaults_test.go
index 2d3b5b5028..30c4706f2d 100644
--- a/pkg/apis/autoscaling/v1/defaults_test.go
+++ b/pkg/apis/autoscaling/v1/defaults_test.go
@@ -23,10 +23,10 @@ import (
autoscalingv1 "k8s.io/api/autoscaling/v1"
"k8s.io/apimachinery/pkg/runtime"
- _ "k8s.io/kubernetes/pkg/api/install"
"k8s.io/kubernetes/pkg/api/legacyscheme"
_ "k8s.io/kubernetes/pkg/apis/autoscaling/install"
. "k8s.io/kubernetes/pkg/apis/autoscaling/v1"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
)
func TestSetDefaultHPA(t *testing.T) {
diff --git a/pkg/apis/autoscaling/v1/zz_generated.conversion.go b/pkg/apis/autoscaling/v1/zz_generated.conversion.go
index e1f48bdce5..bb1bedd520 100644
--- a/pkg/apis/autoscaling/v1/zz_generated.conversion.go
+++ b/pkg/apis/autoscaling/v1/zz_generated.conversion.go
@@ -27,8 +27,8 @@ import (
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- api "k8s.io/kubernetes/pkg/api"
autoscaling "k8s.io/kubernetes/pkg/apis/autoscaling"
+ core "k8s.io/kubernetes/pkg/apis/core"
unsafe "unsafe"
)
@@ -385,7 +385,7 @@ func Convert_autoscaling_PodsMetricStatus_To_v1_PodsMetricStatus(in *autoscaling
}
func autoConvert_v1_ResourceMetricSource_To_autoscaling_ResourceMetricSource(in *v1.ResourceMetricSource, out *autoscaling.ResourceMetricSource, s conversion.Scope) error {
- out.Name = api.ResourceName(in.Name)
+ out.Name = core.ResourceName(in.Name)
out.TargetAverageUtilization = (*int32)(unsafe.Pointer(in.TargetAverageUtilization))
out.TargetAverageValue = (*resource.Quantity)(unsafe.Pointer(in.TargetAverageValue))
return nil
@@ -409,7 +409,7 @@ func Convert_autoscaling_ResourceMetricSource_To_v1_ResourceMetricSource(in *aut
}
func autoConvert_v1_ResourceMetricStatus_To_autoscaling_ResourceMetricStatus(in *v1.ResourceMetricStatus, out *autoscaling.ResourceMetricStatus, s conversion.Scope) error {
- out.Name = api.ResourceName(in.Name)
+ out.Name = core.ResourceName(in.Name)
out.CurrentAverageUtilization = (*int32)(unsafe.Pointer(in.CurrentAverageUtilization))
out.CurrentAverageValue = in.CurrentAverageValue
return nil
diff --git a/pkg/apis/autoscaling/v2beta1/BUILD b/pkg/apis/autoscaling/v2beta1/BUILD
index 636e912ef8..720df24df8 100644
--- a/pkg/apis/autoscaling/v2beta1/BUILD
+++ b/pkg/apis/autoscaling/v2beta1/BUILD
@@ -17,8 +17,8 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/apis/autoscaling/v2beta1",
deps = [
- "//pkg/api:go_default_library",
"//pkg/apis/autoscaling:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/api/autoscaling/v2beta1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
@@ -48,10 +48,10 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/apis/autoscaling/v2beta1_test",
deps = [
":go_default_library",
- "//pkg/api/install:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/apis/autoscaling:go_default_library",
"//pkg/apis/autoscaling/install:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//vendor/k8s.io/api/autoscaling/v2beta1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
diff --git a/pkg/apis/autoscaling/v2beta1/defaults_test.go b/pkg/apis/autoscaling/v2beta1/defaults_test.go
index 86efea20c9..ec138b4dd1 100644
--- a/pkg/apis/autoscaling/v2beta1/defaults_test.go
+++ b/pkg/apis/autoscaling/v2beta1/defaults_test.go
@@ -24,11 +24,11 @@ import (
"k8s.io/api/core/v1"
apiequality "k8s.io/apimachinery/pkg/api/equality"
"k8s.io/apimachinery/pkg/runtime"
- _ "k8s.io/kubernetes/pkg/api/install"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/apis/autoscaling"
_ "k8s.io/kubernetes/pkg/apis/autoscaling/install"
. "k8s.io/kubernetes/pkg/apis/autoscaling/v2beta1"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
)
func TestSetDefaultHPA(t *testing.T) {
diff --git a/pkg/apis/autoscaling/v2beta1/zz_generated.conversion.go b/pkg/apis/autoscaling/v2beta1/zz_generated.conversion.go
index af3bb3d815..7b1f977df9 100644
--- a/pkg/apis/autoscaling/v2beta1/zz_generated.conversion.go
+++ b/pkg/apis/autoscaling/v2beta1/zz_generated.conversion.go
@@ -27,8 +27,8 @@ import (
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- api "k8s.io/kubernetes/pkg/api"
autoscaling "k8s.io/kubernetes/pkg/apis/autoscaling"
+ core "k8s.io/kubernetes/pkg/apis/core"
unsafe "unsafe"
)
@@ -390,7 +390,7 @@ func Convert_autoscaling_PodsMetricStatus_To_v2beta1_PodsMetricStatus(in *autosc
}
func autoConvert_v2beta1_ResourceMetricSource_To_autoscaling_ResourceMetricSource(in *v2beta1.ResourceMetricSource, out *autoscaling.ResourceMetricSource, s conversion.Scope) error {
- out.Name = api.ResourceName(in.Name)
+ out.Name = core.ResourceName(in.Name)
out.TargetAverageUtilization = (*int32)(unsafe.Pointer(in.TargetAverageUtilization))
out.TargetAverageValue = (*resource.Quantity)(unsafe.Pointer(in.TargetAverageValue))
return nil
@@ -414,7 +414,7 @@ func Convert_autoscaling_ResourceMetricSource_To_v2beta1_ResourceMetricSource(in
}
func autoConvert_v2beta1_ResourceMetricStatus_To_autoscaling_ResourceMetricStatus(in *v2beta1.ResourceMetricStatus, out *autoscaling.ResourceMetricStatus, s conversion.Scope) error {
- out.Name = api.ResourceName(in.Name)
+ out.Name = core.ResourceName(in.Name)
out.CurrentAverageUtilization = (*int32)(unsafe.Pointer(in.CurrentAverageUtilization))
out.CurrentAverageValue = in.CurrentAverageValue
return nil
diff --git a/pkg/apis/autoscaling/validation/BUILD b/pkg/apis/autoscaling/validation/BUILD
index f47483fc21..c6be1eff02 100644
--- a/pkg/apis/autoscaling/validation/BUILD
+++ b/pkg/apis/autoscaling/validation/BUILD
@@ -11,8 +11,8 @@ go_library(
srcs = ["validation.go"],
importpath = "k8s.io/kubernetes/pkg/apis/autoscaling/validation",
deps = [
- "//pkg/api/validation:go_default_library",
"//pkg/apis/autoscaling:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/validation/path:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
@@ -25,8 +25,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/apis/autoscaling/validation",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/apis/autoscaling:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
],
diff --git a/pkg/apis/autoscaling/validation/validation.go b/pkg/apis/autoscaling/validation/validation.go
index e317fed2a5..6338b2a744 100644
--- a/pkg/apis/autoscaling/validation/validation.go
+++ b/pkg/apis/autoscaling/validation/validation.go
@@ -22,8 +22,8 @@ import (
pathvalidation "k8s.io/apimachinery/pkg/api/validation/path"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/validation/field"
- apivalidation "k8s.io/kubernetes/pkg/api/validation"
"k8s.io/kubernetes/pkg/apis/autoscaling"
+ apivalidation "k8s.io/kubernetes/pkg/apis/core/validation"
)
func ValidateScale(scale *autoscaling.Scale) field.ErrorList {
diff --git a/pkg/apis/autoscaling/validation/validation_test.go b/pkg/apis/autoscaling/validation/validation_test.go
index e07442c9e3..d334a77b3c 100644
--- a/pkg/apis/autoscaling/validation/validation_test.go
+++ b/pkg/apis/autoscaling/validation/validation_test.go
@@ -22,8 +22,8 @@ import (
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/autoscaling"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func TestValidateScale(t *testing.T) {
diff --git a/pkg/apis/autoscaling/zz_generated.deepcopy.go b/pkg/apis/autoscaling/zz_generated.deepcopy.go
index ec833882e6..c0bccf3b90 100644
--- a/pkg/apis/autoscaling/zz_generated.deepcopy.go
+++ b/pkg/apis/autoscaling/zz_generated.deepcopy.go
@@ -23,92 +23,9 @@ package autoscaling
import (
resource "k8s.io/apimachinery/pkg/api/resource"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CrossVersionObjectReference).DeepCopyInto(out.(*CrossVersionObjectReference))
- return nil
- }, InType: reflect.TypeOf(&CrossVersionObjectReference{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*HorizontalPodAutoscaler).DeepCopyInto(out.(*HorizontalPodAutoscaler))
- return nil
- }, InType: reflect.TypeOf(&HorizontalPodAutoscaler{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*HorizontalPodAutoscalerCondition).DeepCopyInto(out.(*HorizontalPodAutoscalerCondition))
- return nil
- }, InType: reflect.TypeOf(&HorizontalPodAutoscalerCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*HorizontalPodAutoscalerList).DeepCopyInto(out.(*HorizontalPodAutoscalerList))
- return nil
- }, InType: reflect.TypeOf(&HorizontalPodAutoscalerList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*HorizontalPodAutoscalerSpec).DeepCopyInto(out.(*HorizontalPodAutoscalerSpec))
- return nil
- }, InType: reflect.TypeOf(&HorizontalPodAutoscalerSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*HorizontalPodAutoscalerStatus).DeepCopyInto(out.(*HorizontalPodAutoscalerStatus))
- return nil
- }, InType: reflect.TypeOf(&HorizontalPodAutoscalerStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*MetricSpec).DeepCopyInto(out.(*MetricSpec))
- return nil
- }, InType: reflect.TypeOf(&MetricSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*MetricStatus).DeepCopyInto(out.(*MetricStatus))
- return nil
- }, InType: reflect.TypeOf(&MetricStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ObjectMetricSource).DeepCopyInto(out.(*ObjectMetricSource))
- return nil
- }, InType: reflect.TypeOf(&ObjectMetricSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ObjectMetricStatus).DeepCopyInto(out.(*ObjectMetricStatus))
- return nil
- }, InType: reflect.TypeOf(&ObjectMetricStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodsMetricSource).DeepCopyInto(out.(*PodsMetricSource))
- return nil
- }, InType: reflect.TypeOf(&PodsMetricSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodsMetricStatus).DeepCopyInto(out.(*PodsMetricStatus))
- return nil
- }, InType: reflect.TypeOf(&PodsMetricStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ResourceMetricSource).DeepCopyInto(out.(*ResourceMetricSource))
- return nil
- }, InType: reflect.TypeOf(&ResourceMetricSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ResourceMetricStatus).DeepCopyInto(out.(*ResourceMetricStatus))
- return nil
- }, InType: reflect.TypeOf(&ResourceMetricStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Scale).DeepCopyInto(out.(*Scale))
- return nil
- }, InType: reflect.TypeOf(&Scale{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ScaleSpec).DeepCopyInto(out.(*ScaleSpec))
- return nil
- }, InType: reflect.TypeOf(&ScaleSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ScaleStatus).DeepCopyInto(out.(*ScaleStatus))
- return nil
- }, InType: reflect.TypeOf(&ScaleStatus{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *CrossVersionObjectReference) DeepCopyInto(out *CrossVersionObjectReference) {
*out = *in
diff --git a/pkg/apis/batch/BUILD b/pkg/apis/batch/BUILD
index 9c4eaadb05..d8c7452d19 100644
--- a/pkg/apis/batch/BUILD
+++ b/pkg/apis/batch/BUILD
@@ -15,9 +15,8 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/apis/batch",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/pkg/apis/batch/doc.go b/pkg/apis/batch/doc.go
index 9b2b792bd5..a80b3597f2 100644
--- a/pkg/apis/batch/doc.go
+++ b/pkg/apis/batch/doc.go
@@ -14,6 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
package batch // import "k8s.io/kubernetes/pkg/apis/batch"
diff --git a/pkg/apis/batch/types.go b/pkg/apis/batch/types.go
index 2cbf93d5d5..32d921fb6a 100644
--- a/pkg/apis/batch/types.go
+++ b/pkg/apis/batch/types.go
@@ -18,7 +18,7 @@ package batch
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// +genclient
diff --git a/pkg/apis/batch/v1/BUILD b/pkg/apis/batch/v1/BUILD
index f8a3585155..2413a15ab2 100644
--- a/pkg/apis/batch/v1/BUILD
+++ b/pkg/apis/batch/v1/BUILD
@@ -18,9 +18,9 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/apis/batch/v1",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/v1:go_default_library",
"//pkg/apis/batch:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/v1:go_default_library",
"//vendor/k8s.io/api/batch/v1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
@@ -36,9 +36,9 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/apis/batch/v1_test",
deps = [
":go_default_library",
- "//pkg/api/install:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/apis/batch/install:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//vendor/k8s.io/api/batch/v1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
diff --git a/pkg/apis/batch/v1/conversion.go b/pkg/apis/batch/v1/conversion.go
index 941b61d4a7..98aae5c276 100644
--- a/pkg/apis/batch/v1/conversion.go
+++ b/pkg/apis/batch/v1/conversion.go
@@ -23,8 +23,8 @@ import (
"k8s.io/apimachinery/pkg/conversion"
"k8s.io/apimachinery/pkg/runtime"
- k8s_api_v1 "k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/apis/batch"
+ k8s_api_v1 "k8s.io/kubernetes/pkg/apis/core/v1"
)
func addConversionFuncs(scheme *runtime.Scheme) error {
@@ -62,7 +62,7 @@ func Convert_batch_JobSpec_To_v1_JobSpec(in *batch.JobSpec, out *batchv1.JobSpec
out.ManualSelector = nil
}
- if err := k8s_api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := k8s_api_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
return nil
@@ -81,7 +81,7 @@ func Convert_v1_JobSpec_To_batch_JobSpec(in *batchv1.JobSpec, out *batch.JobSpec
out.ManualSelector = nil
}
- if err := k8s_api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := k8s_api_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
return nil
diff --git a/pkg/apis/batch/v1/defaults_test.go b/pkg/apis/batch/v1/defaults_test.go
index 009e111f67..03cfcf4f2f 100644
--- a/pkg/apis/batch/v1/defaults_test.go
+++ b/pkg/apis/batch/v1/defaults_test.go
@@ -25,10 +25,10 @@ import (
"k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
- _ "k8s.io/kubernetes/pkg/api/install"
"k8s.io/kubernetes/pkg/api/legacyscheme"
_ "k8s.io/kubernetes/pkg/apis/batch/install"
. "k8s.io/kubernetes/pkg/apis/batch/v1"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
)
func TestSetDefaultJob(t *testing.T) {
diff --git a/pkg/apis/batch/v1/zz_generated.conversion.go b/pkg/apis/batch/v1/zz_generated.conversion.go
index 487b9c63ab..dc346c5274 100644
--- a/pkg/apis/batch/v1/zz_generated.conversion.go
+++ b/pkg/apis/batch/v1/zz_generated.conversion.go
@@ -26,9 +26,9 @@ import (
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- api "k8s.io/kubernetes/pkg/api"
- api_v1 "k8s.io/kubernetes/pkg/api/v1"
batch "k8s.io/kubernetes/pkg/apis/batch"
+ core "k8s.io/kubernetes/pkg/apis/core"
+ apis_core_v1 "k8s.io/kubernetes/pkg/apis/core/v1"
unsafe "unsafe"
)
@@ -87,7 +87,7 @@ func Convert_batch_Job_To_v1_Job(in *batch.Job, out *v1.Job, s conversion.Scope)
func autoConvert_v1_JobCondition_To_batch_JobCondition(in *v1.JobCondition, out *batch.JobCondition, s conversion.Scope) error {
out.Type = batch.JobConditionType(in.Type)
- out.Status = api.ConditionStatus(in.Status)
+ out.Status = core.ConditionStatus(in.Status)
out.LastProbeTime = in.LastProbeTime
out.LastTransitionTime = in.LastTransitionTime
out.Reason = in.Reason
@@ -164,7 +164,7 @@ func autoConvert_v1_JobSpec_To_batch_JobSpec(in *v1.JobSpec, out *batch.JobSpec,
out.BackoffLimit = (*int32)(unsafe.Pointer(in.BackoffLimit))
out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
out.ManualSelector = (*bool)(unsafe.Pointer(in.ManualSelector))
- if err := api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := apis_core_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
return nil
@@ -177,7 +177,7 @@ func autoConvert_batch_JobSpec_To_v1_JobSpec(in *batch.JobSpec, out *v1.JobSpec,
out.BackoffLimit = (*int32)(unsafe.Pointer(in.BackoffLimit))
out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
out.ManualSelector = (*bool)(unsafe.Pointer(in.ManualSelector))
- if err := api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := apis_core_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
return nil
diff --git a/pkg/apis/batch/v1/zz_generated.defaults.go b/pkg/apis/batch/v1/zz_generated.defaults.go
index 18c0cc6d82..976735a1a4 100644
--- a/pkg/apis/batch/v1/zz_generated.defaults.go
+++ b/pkg/apis/batch/v1/zz_generated.defaults.go
@@ -23,7 +23,7 @@ package v1
import (
v1 "k8s.io/api/batch/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
- api_v1 "k8s.io/kubernetes/pkg/api/v1"
+ core_v1 "k8s.io/kubernetes/pkg/apis/core/v1"
)
// RegisterDefaults adds defaulters functions to the given scheme.
@@ -37,135 +37,135 @@ func RegisterDefaults(scheme *runtime.Scheme) error {
func SetObjectDefaults_Job(in *v1.Job) {
SetDefaults_Job(in)
- api_v1.SetDefaults_PodSpec(&in.Spec.Template.Spec)
+ core_v1.SetDefaults_PodSpec(&in.Spec.Template.Spec)
for i := range in.Spec.Template.Spec.Volumes {
a := &in.Spec.Template.Spec.Volumes[i]
- api_v1.SetDefaults_Volume(a)
+ core_v1.SetDefaults_Volume(a)
if a.VolumeSource.HostPath != nil {
- api_v1.SetDefaults_HostPathVolumeSource(a.VolumeSource.HostPath)
+ core_v1.SetDefaults_HostPathVolumeSource(a.VolumeSource.HostPath)
}
if a.VolumeSource.Secret != nil {
- api_v1.SetDefaults_SecretVolumeSource(a.VolumeSource.Secret)
+ core_v1.SetDefaults_SecretVolumeSource(a.VolumeSource.Secret)
}
if a.VolumeSource.ISCSI != nil {
- api_v1.SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI)
+ core_v1.SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI)
}
if a.VolumeSource.RBD != nil {
- api_v1.SetDefaults_RBDVolumeSource(a.VolumeSource.RBD)
+ core_v1.SetDefaults_RBDVolumeSource(a.VolumeSource.RBD)
}
if a.VolumeSource.DownwardAPI != nil {
- api_v1.SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI)
+ core_v1.SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI)
for j := range a.VolumeSource.DownwardAPI.Items {
b := &a.VolumeSource.DownwardAPI.Items[j]
if b.FieldRef != nil {
- api_v1.SetDefaults_ObjectFieldSelector(b.FieldRef)
+ core_v1.SetDefaults_ObjectFieldSelector(b.FieldRef)
}
}
}
if a.VolumeSource.ConfigMap != nil {
- api_v1.SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap)
+ core_v1.SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap)
}
if a.VolumeSource.AzureDisk != nil {
- api_v1.SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk)
+ core_v1.SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk)
}
if a.VolumeSource.Projected != nil {
- api_v1.SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected)
+ core_v1.SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected)
for j := range a.VolumeSource.Projected.Sources {
b := &a.VolumeSource.Projected.Sources[j]
if b.DownwardAPI != nil {
for k := range b.DownwardAPI.Items {
c := &b.DownwardAPI.Items[k]
if c.FieldRef != nil {
- api_v1.SetDefaults_ObjectFieldSelector(c.FieldRef)
+ core_v1.SetDefaults_ObjectFieldSelector(c.FieldRef)
}
}
}
}
}
if a.VolumeSource.ScaleIO != nil {
- api_v1.SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO)
+ core_v1.SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO)
}
}
for i := range in.Spec.Template.Spec.InitContainers {
a := &in.Spec.Template.Spec.InitContainers[i]
- api_v1.SetDefaults_Container(a)
+ core_v1.SetDefaults_Container(a)
for j := range a.Ports {
b := &a.Ports[j]
- api_v1.SetDefaults_ContainerPort(b)
+ core_v1.SetDefaults_ContainerPort(b)
}
for j := range a.Env {
b := &a.Env[j]
if b.ValueFrom != nil {
if b.ValueFrom.FieldRef != nil {
- api_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef)
+ core_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef)
}
}
}
- api_v1.SetDefaults_ResourceList(&a.Resources.Limits)
- api_v1.SetDefaults_ResourceList(&a.Resources.Requests)
+ core_v1.SetDefaults_ResourceList(&a.Resources.Limits)
+ core_v1.SetDefaults_ResourceList(&a.Resources.Requests)
if a.LivenessProbe != nil {
- api_v1.SetDefaults_Probe(a.LivenessProbe)
+ core_v1.SetDefaults_Probe(a.LivenessProbe)
if a.LivenessProbe.Handler.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet)
}
}
if a.ReadinessProbe != nil {
- api_v1.SetDefaults_Probe(a.ReadinessProbe)
+ core_v1.SetDefaults_Probe(a.ReadinessProbe)
if a.ReadinessProbe.Handler.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet)
}
}
if a.Lifecycle != nil {
if a.Lifecycle.PostStart != nil {
if a.Lifecycle.PostStart.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet)
}
}
if a.Lifecycle.PreStop != nil {
if a.Lifecycle.PreStop.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet)
}
}
}
}
for i := range in.Spec.Template.Spec.Containers {
a := &in.Spec.Template.Spec.Containers[i]
- api_v1.SetDefaults_Container(a)
+ core_v1.SetDefaults_Container(a)
for j := range a.Ports {
b := &a.Ports[j]
- api_v1.SetDefaults_ContainerPort(b)
+ core_v1.SetDefaults_ContainerPort(b)
}
for j := range a.Env {
b := &a.Env[j]
if b.ValueFrom != nil {
if b.ValueFrom.FieldRef != nil {
- api_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef)
+ core_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef)
}
}
}
- api_v1.SetDefaults_ResourceList(&a.Resources.Limits)
- api_v1.SetDefaults_ResourceList(&a.Resources.Requests)
+ core_v1.SetDefaults_ResourceList(&a.Resources.Limits)
+ core_v1.SetDefaults_ResourceList(&a.Resources.Requests)
if a.LivenessProbe != nil {
- api_v1.SetDefaults_Probe(a.LivenessProbe)
+ core_v1.SetDefaults_Probe(a.LivenessProbe)
if a.LivenessProbe.Handler.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet)
}
}
if a.ReadinessProbe != nil {
- api_v1.SetDefaults_Probe(a.ReadinessProbe)
+ core_v1.SetDefaults_Probe(a.ReadinessProbe)
if a.ReadinessProbe.Handler.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet)
}
}
if a.Lifecycle != nil {
if a.Lifecycle.PostStart != nil {
if a.Lifecycle.PostStart.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet)
}
}
if a.Lifecycle.PreStop != nil {
if a.Lifecycle.PreStop.HTTPGet != nil {
- api_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet)
+ core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet)
}
}
}
diff --git a/pkg/apis/batch/v1beta1/BUILD b/pkg/apis/batch/v1beta1/BUILD
index 51323ebc78..2985d4e9d0 100644
--- a/pkg/apis/batch/v1beta1/BUILD
+++ b/pkg/apis/batch/v1beta1/BUILD
@@ -18,10 +18,10 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/apis/batch/v1beta1",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/v1:go_default_library",
"//pkg/apis/batch:go_default_library",
"//pkg/apis/batch/v1:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/v1:go_default_library",
"//vendor/k8s.io/api/batch/v1beta1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
@@ -37,9 +37,9 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/apis/batch/v1beta1_test",
deps = [
":go_default_library",
- "//pkg/api/install:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/apis/batch/install:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//vendor/k8s.io/api/batch/v1beta1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
],
diff --git a/pkg/apis/batch/v1beta1/defaults_test.go b/pkg/apis/batch/v1beta1/defaults_test.go
index cc4a7595e5..578ea9859e 100644
--- a/pkg/apis/batch/v1beta1/defaults_test.go
+++ b/pkg/apis/batch/v1beta1/defaults_test.go
@@ -23,10 +23,10 @@ import (
batchv1beta1 "k8s.io/api/batch/v1beta1"
"k8s.io/apimachinery/pkg/runtime"
- _ "k8s.io/kubernetes/pkg/api/install"
"k8s.io/kubernetes/pkg/api/legacyscheme"
_ "k8s.io/kubernetes/pkg/apis/batch/install"
. "k8s.io/kubernetes/pkg/apis/batch/v1beta1"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
)
func TestSetDefaultCronJob(t *testing.T) {
diff --git a/pkg/apis/batch/v1beta1/zz_generated.conversion.go b/pkg/apis/batch/v1beta1/zz_generated.conversion.go
index f6ae62bd03..b977a5e741 100644
--- a/pkg/apis/batch/v1beta1/zz_generated.conversion.go
+++ b/pkg/apis/batch/v1beta1/zz_generated.conversion.go
@@ -26,9 +26,9 @@ import (
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- api "k8s.io/kubernetes/pkg/api"
batch "k8s.io/kubernetes/pkg/apis/batch"
batch_v1 "k8s.io/kubernetes/pkg/apis/batch/v1"
+ core "k8s.io/kubernetes/pkg/apis/core"
unsafe "unsafe"
)
@@ -166,7 +166,7 @@ func Convert_batch_CronJobSpec_To_v1beta1_CronJobSpec(in *batch.CronJobSpec, out
}
func autoConvert_v1beta1_CronJobStatus_To_batch_CronJobStatus(in *v1beta1.CronJobStatus, out *batch.CronJobStatus, s conversion.Scope) error {
- out.Active = *(*[]api.ObjectReference)(unsafe.Pointer(&in.Active))
+ out.Active = *(*[]core.ObjectReference)(unsafe.Pointer(&in.Active))
out.LastScheduleTime = (*v1.Time)(unsafe.Pointer(in.LastScheduleTime))
return nil
}
diff --git a/pkg/apis/batch/v1beta1/zz_generated.defaults.go b/pkg/apis/batch/v1beta1/zz_generated.defaults.go
index e9256b91d0..e809e80967 100644
--- a/pkg/apis/batch/v1beta1/zz_generated.defaults.go
+++ b/pkg/apis/batch/v1beta1/zz_generated.defaults.go
@@ -23,7 +23,7 @@ package v1beta1
import (
v1beta1 "k8s.io/api/batch/v1beta1"
runtime "k8s.io/apimachinery/pkg/runtime"
- v1 "k8s.io/kubernetes/pkg/api/v1"
+ v1 "k8s.io/kubernetes/pkg/apis/core/v1"
)
// RegisterDefaults adds defaulters functions to the given scheme.
diff --git a/pkg/apis/batch/v2alpha1/BUILD b/pkg/apis/batch/v2alpha1/BUILD
index 87b3405d03..79103911e0 100644
--- a/pkg/apis/batch/v2alpha1/BUILD
+++ b/pkg/apis/batch/v2alpha1/BUILD
@@ -18,10 +18,10 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/apis/batch/v2alpha1",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/v1:go_default_library",
"//pkg/apis/batch:go_default_library",
"//pkg/apis/batch/v1:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/v1:go_default_library",
"//vendor/k8s.io/api/batch/v2alpha1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
@@ -37,9 +37,9 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/apis/batch/v2alpha1_test",
deps = [
":go_default_library",
- "//pkg/api/install:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/apis/batch/install:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//vendor/k8s.io/api/batch/v2alpha1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
],
diff --git a/pkg/apis/batch/v2alpha1/defaults_test.go b/pkg/apis/batch/v2alpha1/defaults_test.go
index 86b2b928dc..1864d8c500 100644
--- a/pkg/apis/batch/v2alpha1/defaults_test.go
+++ b/pkg/apis/batch/v2alpha1/defaults_test.go
@@ -23,10 +23,10 @@ import (
batchv2alpha1 "k8s.io/api/batch/v2alpha1"
"k8s.io/apimachinery/pkg/runtime"
- _ "k8s.io/kubernetes/pkg/api/install"
"k8s.io/kubernetes/pkg/api/legacyscheme"
_ "k8s.io/kubernetes/pkg/apis/batch/install"
. "k8s.io/kubernetes/pkg/apis/batch/v2alpha1"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
)
func TestSetDefaultCronJob(t *testing.T) {
diff --git a/pkg/apis/batch/v2alpha1/zz_generated.conversion.go b/pkg/apis/batch/v2alpha1/zz_generated.conversion.go
index 92c8c8ceb6..5f6896debc 100644
--- a/pkg/apis/batch/v2alpha1/zz_generated.conversion.go
+++ b/pkg/apis/batch/v2alpha1/zz_generated.conversion.go
@@ -26,9 +26,9 @@ import (
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- api "k8s.io/kubernetes/pkg/api"
batch "k8s.io/kubernetes/pkg/apis/batch"
batch_v1 "k8s.io/kubernetes/pkg/apis/batch/v1"
+ core "k8s.io/kubernetes/pkg/apis/core"
unsafe "unsafe"
)
@@ -166,7 +166,7 @@ func Convert_batch_CronJobSpec_To_v2alpha1_CronJobSpec(in *batch.CronJobSpec, ou
}
func autoConvert_v2alpha1_CronJobStatus_To_batch_CronJobStatus(in *v2alpha1.CronJobStatus, out *batch.CronJobStatus, s conversion.Scope) error {
- out.Active = *(*[]api.ObjectReference)(unsafe.Pointer(&in.Active))
+ out.Active = *(*[]core.ObjectReference)(unsafe.Pointer(&in.Active))
out.LastScheduleTime = (*v1.Time)(unsafe.Pointer(in.LastScheduleTime))
return nil
}
diff --git a/pkg/apis/batch/v2alpha1/zz_generated.defaults.go b/pkg/apis/batch/v2alpha1/zz_generated.defaults.go
index 46e8ca6121..8983fcddad 100644
--- a/pkg/apis/batch/v2alpha1/zz_generated.defaults.go
+++ b/pkg/apis/batch/v2alpha1/zz_generated.defaults.go
@@ -23,7 +23,7 @@ package v2alpha1
import (
v2alpha1 "k8s.io/api/batch/v2alpha1"
runtime "k8s.io/apimachinery/pkg/runtime"
- v1 "k8s.io/kubernetes/pkg/api/v1"
+ v1 "k8s.io/kubernetes/pkg/apis/core/v1"
)
// RegisterDefaults adds defaulters functions to the given scheme.
diff --git a/pkg/apis/batch/validation/BUILD b/pkg/apis/batch/validation/BUILD
index ad686162a7..318426b359 100644
--- a/pkg/apis/batch/validation/BUILD
+++ b/pkg/apis/batch/validation/BUILD
@@ -11,9 +11,9 @@ go_library(
srcs = ["validation.go"],
importpath = "k8s.io/kubernetes/pkg/apis/batch/validation",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/validation:go_default_library",
"//pkg/apis/batch:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//vendor/github.com/robfig/cron:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation:go_default_library",
@@ -29,8 +29,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/apis/batch/validation",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/apis/batch:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
],
diff --git a/pkg/apis/batch/validation/validation.go b/pkg/apis/batch/validation/validation.go
index 7f9215d700..a31bf6416e 100644
--- a/pkg/apis/batch/validation/validation.go
+++ b/pkg/apis/batch/validation/validation.go
@@ -24,9 +24,9 @@ import (
"k8s.io/apimachinery/pkg/labels"
apimachineryvalidation "k8s.io/apimachinery/pkg/util/validation"
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
- apivalidation "k8s.io/kubernetes/pkg/api/validation"
"k8s.io/kubernetes/pkg/apis/batch"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ apivalidation "k8s.io/kubernetes/pkg/apis/core/validation"
)
// TODO: generalize for other controller objects that will follow the same pattern, such as ReplicaSet and DaemonSet, and
diff --git a/pkg/apis/batch/validation/validation_test.go b/pkg/apis/batch/validation/validation_test.go
index f40921e42f..13135e2ea5 100644
--- a/pkg/apis/batch/validation/validation_test.go
+++ b/pkg/apis/batch/validation/validation_test.go
@@ -22,8 +22,8 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/batch"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func getValidManualSelector() *metav1.LabelSelector {
diff --git a/pkg/apis/batch/zz_generated.deepcopy.go b/pkg/apis/batch/zz_generated.deepcopy.go
index 483452c09e..4e68dbd6d6 100644
--- a/pkg/apis/batch/zz_generated.deepcopy.go
+++ b/pkg/apis/batch/zz_generated.deepcopy.go
@@ -22,69 +22,10 @@ package batch
import (
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- api "k8s.io/kubernetes/pkg/api"
- reflect "reflect"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CronJob).DeepCopyInto(out.(*CronJob))
- return nil
- }, InType: reflect.TypeOf(&CronJob{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CronJobList).DeepCopyInto(out.(*CronJobList))
- return nil
- }, InType: reflect.TypeOf(&CronJobList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CronJobSpec).DeepCopyInto(out.(*CronJobSpec))
- return nil
- }, InType: reflect.TypeOf(&CronJobSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CronJobStatus).DeepCopyInto(out.(*CronJobStatus))
- return nil
- }, InType: reflect.TypeOf(&CronJobStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Job).DeepCopyInto(out.(*Job))
- return nil
- }, InType: reflect.TypeOf(&Job{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*JobCondition).DeepCopyInto(out.(*JobCondition))
- return nil
- }, InType: reflect.TypeOf(&JobCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*JobList).DeepCopyInto(out.(*JobList))
- return nil
- }, InType: reflect.TypeOf(&JobList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*JobSpec).DeepCopyInto(out.(*JobSpec))
- return nil
- }, InType: reflect.TypeOf(&JobSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*JobStatus).DeepCopyInto(out.(*JobStatus))
- return nil
- }, InType: reflect.TypeOf(&JobStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*JobTemplate).DeepCopyInto(out.(*JobTemplate))
- return nil
- }, InType: reflect.TypeOf(&JobTemplate{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*JobTemplateSpec).DeepCopyInto(out.(*JobTemplateSpec))
- return nil
- }, InType: reflect.TypeOf(&JobTemplateSpec{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *CronJob) DeepCopyInto(out *CronJob) {
*out = *in
@@ -206,7 +147,7 @@ func (in *CronJobStatus) DeepCopyInto(out *CronJobStatus) {
*out = *in
if in.Active != nil {
in, out := &in.Active, &out.Active
- *out = make([]api.ObjectReference, len(*in))
+ *out = make([]core.ObjectReference, len(*in))
copy(*out, *in)
}
if in.LastScheduleTime != nil {
diff --git a/pkg/apis/certificates/BUILD b/pkg/apis/certificates/BUILD
index f6fc307391..cebbfcdea6 100644
--- a/pkg/apis/certificates/BUILD
+++ b/pkg/apis/certificates/BUILD
@@ -17,7 +17,6 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/apis/certificates",
deps = [
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/pkg/apis/certificates/doc.go b/pkg/apis/certificates/doc.go
index cdc89bdcc5..65aad6491e 100644
--- a/pkg/apis/certificates/doc.go
+++ b/pkg/apis/certificates/doc.go
@@ -14,6 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +groupName=certificates.k8s.io
package certificates // import "k8s.io/kubernetes/pkg/apis/certificates"
diff --git a/pkg/apis/certificates/validation/BUILD b/pkg/apis/certificates/validation/BUILD
index e8f66ab2df..788809206c 100644
--- a/pkg/apis/certificates/validation/BUILD
+++ b/pkg/apis/certificates/validation/BUILD
@@ -10,8 +10,8 @@ go_library(
srcs = ["validation.go"],
importpath = "k8s.io/kubernetes/pkg/apis/certificates/validation",
deps = [
- "//pkg/api/validation:go_default_library",
"//pkg/apis/certificates:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
],
)
diff --git a/pkg/apis/certificates/validation/validation.go b/pkg/apis/certificates/validation/validation.go
index 4077e6b0cc..3b61074bc6 100644
--- a/pkg/apis/certificates/validation/validation.go
+++ b/pkg/apis/certificates/validation/validation.go
@@ -20,8 +20,8 @@ import (
"fmt"
"k8s.io/apimachinery/pkg/util/validation/field"
- apivalidation "k8s.io/kubernetes/pkg/api/validation"
"k8s.io/kubernetes/pkg/apis/certificates"
+ apivalidation "k8s.io/kubernetes/pkg/apis/core/validation"
)
// validateCSR validates the signature and formatting of a base64-wrapped,
diff --git a/pkg/apis/certificates/zz_generated.deepcopy.go b/pkg/apis/certificates/zz_generated.deepcopy.go
index c1f76f53fa..5704a4e6c6 100644
--- a/pkg/apis/certificates/zz_generated.deepcopy.go
+++ b/pkg/apis/certificates/zz_generated.deepcopy.go
@@ -21,44 +21,9 @@ limitations under the License.
package certificates
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CertificateSigningRequest).DeepCopyInto(out.(*CertificateSigningRequest))
- return nil
- }, InType: reflect.TypeOf(&CertificateSigningRequest{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CertificateSigningRequestCondition).DeepCopyInto(out.(*CertificateSigningRequestCondition))
- return nil
- }, InType: reflect.TypeOf(&CertificateSigningRequestCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CertificateSigningRequestList).DeepCopyInto(out.(*CertificateSigningRequestList))
- return nil
- }, InType: reflect.TypeOf(&CertificateSigningRequestList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CertificateSigningRequestSpec).DeepCopyInto(out.(*CertificateSigningRequestSpec))
- return nil
- }, InType: reflect.TypeOf(&CertificateSigningRequestSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CertificateSigningRequestStatus).DeepCopyInto(out.(*CertificateSigningRequestStatus))
- return nil
- }, InType: reflect.TypeOf(&CertificateSigningRequestStatus{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *CertificateSigningRequest) DeepCopyInto(out *CertificateSigningRequest) {
*out = *in
diff --git a/pkg/apis/componentconfig/BUILD b/pkg/apis/componentconfig/BUILD
index c1608bc244..19d17029cb 100644
--- a/pkg/apis/componentconfig/BUILD
+++ b/pkg/apis/componentconfig/BUILD
@@ -19,7 +19,6 @@ go_library(
deps = [
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library",
diff --git a/pkg/apis/componentconfig/doc.go b/pkg/apis/componentconfig/doc.go
index 8fe8d52edc..159d61928b 100644
--- a/pkg/apis/componentconfig/doc.go
+++ b/pkg/apis/componentconfig/doc.go
@@ -14,6 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
package componentconfig // import "k8s.io/kubernetes/pkg/apis/componentconfig"
diff --git a/pkg/apis/componentconfig/types.go b/pkg/apis/componentconfig/types.go
index f4c218185b..4a57eec48c 100644
--- a/pkg/apis/componentconfig/types.go
+++ b/pkg/apis/componentconfig/types.go
@@ -33,7 +33,7 @@ type ClientConnectionConfiguration struct {
// cps controls the number of queries per second allowed for this connection.
QPS float32
// burst allows extra queries to accumulate when a client is exceeding its rate.
- Burst int
+ Burst int32
}
// SchedulerPolicyConfigMapKey defines the key of the element in the
@@ -87,7 +87,7 @@ type KubeSchedulerConfiguration struct {
// RequiredDuringScheduling affinity is not symmetric, but there is an implicit PreferredDuringScheduling affinity rule
// corresponding to every RequiredDuringScheduling affinity rule.
// HardPodAffinitySymmetricWeight represents the weight of implicit PreferredDuringScheduling affinity rule, in the range 0-100.
- HardPodAffinitySymmetricWeight int
+ HardPodAffinitySymmetricWeight int32
// LeaderElection defines the configuration of leader election client.
LeaderElection KubeSchedulerLeaderElectionConfiguration
diff --git a/pkg/apis/componentconfig/v1alpha1/BUILD b/pkg/apis/componentconfig/v1alpha1/BUILD
index 5d0841c17c..9726d08a84 100644
--- a/pkg/apis/componentconfig/v1alpha1/BUILD
+++ b/pkg/apis/componentconfig/v1alpha1/BUILD
@@ -19,8 +19,8 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1",
deps = [
- "//pkg/api:go_default_library",
"//pkg/apis/componentconfig:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/kubelet/apis:go_default_library",
"//pkg/master/ports:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
diff --git a/pkg/apis/componentconfig/v1alpha1/defaults.go b/pkg/apis/componentconfig/v1alpha1/defaults.go
index 86d61c39e5..0528b6cb6d 100644
--- a/pkg/apis/componentconfig/v1alpha1/defaults.go
+++ b/pkg/apis/componentconfig/v1alpha1/defaults.go
@@ -23,7 +23,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
kruntime "k8s.io/apimachinery/pkg/runtime"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
kubeletapis "k8s.io/kubernetes/pkg/kubelet/apis"
"k8s.io/kubernetes/pkg/master/ports"
)
diff --git a/pkg/apis/componentconfig/v1alpha1/doc.go b/pkg/apis/componentconfig/v1alpha1/doc.go
index f8d91738be..e3d63571e5 100644
--- a/pkg/apis/componentconfig/v1alpha1/doc.go
+++ b/pkg/apis/componentconfig/v1alpha1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/componentconfig
// +k8s:openapi-gen=true
// +k8s:defaulter-gen=TypeMeta
diff --git a/pkg/apis/componentconfig/v1alpha1/types.go b/pkg/apis/componentconfig/v1alpha1/types.go
index 4414d5b193..55e99fb429 100644
--- a/pkg/apis/componentconfig/v1alpha1/types.go
+++ b/pkg/apis/componentconfig/v1alpha1/types.go
@@ -33,7 +33,7 @@ type ClientConnectionConfiguration struct {
// cps controls the number of queries per second allowed for this connection.
QPS float32 `json:"qps"`
// burst allows extra queries to accumulate when a client is exceeding its rate.
- Burst int `json:"burst"`
+ Burst int32 `json:"burst"`
}
// SchedulerPolicySource configures a means to obtain a scheduler Policy. One
@@ -83,7 +83,7 @@ type KubeSchedulerConfiguration struct {
// RequiredDuringScheduling affinity is not symmetric, but there is an implicit PreferredDuringScheduling affinity rule
// corresponding to every RequiredDuringScheduling affinity rule.
// HardPodAffinitySymmetricWeight represents the weight of implicit PreferredDuringScheduling affinity rule, in the range 0-100.
- HardPodAffinitySymmetricWeight int `json:"hardPodAffinitySymmetricWeight"`
+ HardPodAffinitySymmetricWeight int32 `json:"hardPodAffinitySymmetricWeight"`
// LeaderElection defines the configuration of leader election client.
LeaderElection KubeSchedulerLeaderElectionConfiguration `json:"leaderElection"`
diff --git a/pkg/apis/componentconfig/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/componentconfig/v1alpha1/zz_generated.deepcopy.go
index 2931700162..9e6a3b36d1 100644
--- a/pkg/apis/componentconfig/v1alpha1/zz_generated.deepcopy.go
+++ b/pkg/apis/componentconfig/v1alpha1/zz_generated.deepcopy.go
@@ -21,56 +21,9 @@ limitations under the License.
package v1alpha1
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ClientConnectionConfiguration).DeepCopyInto(out.(*ClientConnectionConfiguration))
- return nil
- }, InType: reflect.TypeOf(&ClientConnectionConfiguration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*KubeSchedulerConfiguration).DeepCopyInto(out.(*KubeSchedulerConfiguration))
- return nil
- }, InType: reflect.TypeOf(&KubeSchedulerConfiguration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*KubeSchedulerLeaderElectionConfiguration).DeepCopyInto(out.(*KubeSchedulerLeaderElectionConfiguration))
- return nil
- }, InType: reflect.TypeOf(&KubeSchedulerLeaderElectionConfiguration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*LeaderElectionConfiguration).DeepCopyInto(out.(*LeaderElectionConfiguration))
- return nil
- }, InType: reflect.TypeOf(&LeaderElectionConfiguration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SchedulerAlgorithmSource).DeepCopyInto(out.(*SchedulerAlgorithmSource))
- return nil
- }, InType: reflect.TypeOf(&SchedulerAlgorithmSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SchedulerPolicyConfigMapSource).DeepCopyInto(out.(*SchedulerPolicyConfigMapSource))
- return nil
- }, InType: reflect.TypeOf(&SchedulerPolicyConfigMapSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SchedulerPolicyFileSource).DeepCopyInto(out.(*SchedulerPolicyFileSource))
- return nil
- }, InType: reflect.TypeOf(&SchedulerPolicyFileSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SchedulerPolicySource).DeepCopyInto(out.(*SchedulerPolicySource))
- return nil
- }, InType: reflect.TypeOf(&SchedulerPolicySource{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ClientConnectionConfiguration) DeepCopyInto(out *ClientConnectionConfiguration) {
*out = *in
diff --git a/pkg/apis/componentconfig/zz_generated.deepcopy.go b/pkg/apis/componentconfig/zz_generated.deepcopy.go
index 51b29e460d..3722020a32 100644
--- a/pkg/apis/componentconfig/zz_generated.deepcopy.go
+++ b/pkg/apis/componentconfig/zz_generated.deepcopy.go
@@ -21,80 +21,9 @@ limitations under the License.
package componentconfig
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ClientConnectionConfiguration).DeepCopyInto(out.(*ClientConnectionConfiguration))
- return nil
- }, InType: reflect.TypeOf(&ClientConnectionConfiguration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*GroupResource).DeepCopyInto(out.(*GroupResource))
- return nil
- }, InType: reflect.TypeOf(&GroupResource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*IPVar).DeepCopyInto(out.(*IPVar))
- return nil
- }, InType: reflect.TypeOf(&IPVar{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*KubeControllerManagerConfiguration).DeepCopyInto(out.(*KubeControllerManagerConfiguration))
- return nil
- }, InType: reflect.TypeOf(&KubeControllerManagerConfiguration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*KubeSchedulerConfiguration).DeepCopyInto(out.(*KubeSchedulerConfiguration))
- return nil
- }, InType: reflect.TypeOf(&KubeSchedulerConfiguration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*KubeSchedulerLeaderElectionConfiguration).DeepCopyInto(out.(*KubeSchedulerLeaderElectionConfiguration))
- return nil
- }, InType: reflect.TypeOf(&KubeSchedulerLeaderElectionConfiguration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*LeaderElectionConfiguration).DeepCopyInto(out.(*LeaderElectionConfiguration))
- return nil
- }, InType: reflect.TypeOf(&LeaderElectionConfiguration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PersistentVolumeRecyclerConfiguration).DeepCopyInto(out.(*PersistentVolumeRecyclerConfiguration))
- return nil
- }, InType: reflect.TypeOf(&PersistentVolumeRecyclerConfiguration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PortRangeVar).DeepCopyInto(out.(*PortRangeVar))
- return nil
- }, InType: reflect.TypeOf(&PortRangeVar{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SchedulerAlgorithmSource).DeepCopyInto(out.(*SchedulerAlgorithmSource))
- return nil
- }, InType: reflect.TypeOf(&SchedulerAlgorithmSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SchedulerPolicyConfigMapSource).DeepCopyInto(out.(*SchedulerPolicyConfigMapSource))
- return nil
- }, InType: reflect.TypeOf(&SchedulerPolicyConfigMapSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SchedulerPolicyFileSource).DeepCopyInto(out.(*SchedulerPolicyFileSource))
- return nil
- }, InType: reflect.TypeOf(&SchedulerPolicyFileSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SchedulerPolicySource).DeepCopyInto(out.(*SchedulerPolicySource))
- return nil
- }, InType: reflect.TypeOf(&SchedulerPolicySource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*VolumeConfiguration).DeepCopyInto(out.(*VolumeConfiguration))
- return nil
- }, InType: reflect.TypeOf(&VolumeConfiguration{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ClientConnectionConfiguration) DeepCopyInto(out *ClientConnectionConfiguration) {
*out = *in
diff --git a/pkg/api/BUILD b/pkg/apis/core/BUILD
similarity index 66%
rename from pkg/api/BUILD
rename to pkg/apis/core/BUILD
index 8970baeff7..ddd461bd52 100644
--- a/pkg/api/BUILD
+++ b/pkg/apis/core/BUILD
@@ -15,13 +15,12 @@ go_library(
"types.go",
"zz_generated.deepcopy.go",
],
- importpath = "k8s.io/kubernetes/pkg/api",
+ importpath = "k8s.io/kubernetes/pkg/apis/core",
visibility = ["//visibility:public"],
deps = [
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/fields:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
@@ -34,7 +33,7 @@ go_library(
go_test(
name = "go_default_test",
srcs = ["taint_test.go"],
- importpath = "k8s.io/kubernetes/pkg/api",
+ importpath = "k8s.io/kubernetes/pkg/apis/core",
library = ":go_default_library",
)
@@ -49,22 +48,11 @@ filegroup(
name = "all-srcs",
srcs = [
":package-srcs",
- "//pkg/api/endpoints:all-srcs",
- "//pkg/api/events:all-srcs",
- "//pkg/api/fuzzer:all-srcs",
- "//pkg/api/helper:all-srcs",
- "//pkg/api/install:all-srcs",
- "//pkg/api/legacyscheme:all-srcs",
- "//pkg/api/persistentvolume:all-srcs",
- "//pkg/api/pod:all-srcs",
- "//pkg/api/ref:all-srcs",
- "//pkg/api/resource:all-srcs",
- "//pkg/api/service:all-srcs",
- "//pkg/api/testapi:all-srcs",
- "//pkg/api/testing:all-srcs",
- "//pkg/api/unversioned:all-srcs",
- "//pkg/api/v1:all-srcs",
- "//pkg/api/validation:all-srcs",
+ "//pkg/apis/core/fuzzer:all-srcs",
+ "//pkg/apis/core/helper:all-srcs",
+ "//pkg/apis/core/install:all-srcs",
+ "//pkg/apis/core/v1:all-srcs",
+ "//pkg/apis/core/validation:all-srcs",
],
tags = ["automanaged"],
visibility = ["//visibility:public"],
diff --git a/pkg/apis/core/OWNERS b/pkg/apis/core/OWNERS
new file mode 100644
index 0000000000..0605b27b2a
--- /dev/null
+++ b/pkg/apis/core/OWNERS
@@ -0,0 +1,44 @@
+approvers:
+- erictune
+- lavalamp
+- smarterclayton
+- thockin
+- liggitt
+# - bgrant0607 # manual escalations only
+reviewers:
+- thockin
+- lavalamp
+- smarterclayton
+- wojtek-t
+- deads2k
+- yujuhong
+- brendandburns
+- derekwaynecarr
+- caesarxuchao
+- vishh
+- mikedanese
+- liggitt
+- nikhiljindal
+- gmarek
+- erictune
+- davidopp
+- pmorie
+- sttts
+- dchen1107
+- saad-ali
+- zmerlynn
+- luxas
+- janetkuo
+- justinsb
+- pwittrock
+- roberthbailey
+- ncdc
+- tallclair
+- yifan-gu
+- eparis
+- mwielgus
+- timothysc
+- soltysh
+- piosz
+- jsafrane
+- jbeda
diff --git a/pkg/api/annotation_key_constants.go b/pkg/apis/core/annotation_key_constants.go
similarity index 99%
rename from pkg/api/annotation_key_constants.go
rename to pkg/apis/core/annotation_key_constants.go
index 6a6827bb57..c441a601b1 100644
--- a/pkg/api/annotation_key_constants.go
+++ b/pkg/apis/core/annotation_key_constants.go
@@ -16,7 +16,7 @@ limitations under the License.
// This file should be consistent with pkg/api/v1/annotation_key_constants.go.
-package api
+package core
const (
// ImagePolicyFailedOpenKey is added to pods created by failing open when the image policy
diff --git a/pkg/api/doc.go b/pkg/apis/core/doc.go
similarity index 91%
rename from pkg/api/doc.go
rename to pkg/apis/core/doc.go
index 283a83e402..6017bfdab1 100644
--- a/pkg/api/doc.go
+++ b/pkg/apis/core/doc.go
@@ -14,11 +14,11 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// Package api contains the latest (or "internal") version of the
// Kubernetes API objects. This is the API objects as represented in memory.
// The contract presented to clients is located in the versioned packages,
// which are sub-directories. The first one is "v1". Those packages
// describe how a particular version is serialized to storage/network.
-package api // import "k8s.io/kubernetes/pkg/api"
+package core // import "k8s.io/kubernetes/pkg/apis/core"
diff --git a/pkg/api/field_constants.go b/pkg/apis/core/field_constants.go
similarity index 99%
rename from pkg/api/field_constants.go
rename to pkg/apis/core/field_constants.go
index 5ead0f13fe..13149a52d5 100644
--- a/pkg/api/field_constants.go
+++ b/pkg/apis/core/field_constants.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-package api
+package core
// Field path constants that are specific to the internal API
// representation.
diff --git a/pkg/api/fuzzer/BUILD b/pkg/apis/core/fuzzer/BUILD
similarity index 90%
rename from pkg/api/fuzzer/BUILD
rename to pkg/apis/core/fuzzer/BUILD
index 959d1f338b..87db372fc0 100644
--- a/pkg/api/fuzzer/BUILD
+++ b/pkg/apis/core/fuzzer/BUILD
@@ -8,9 +8,9 @@ load(
go_library(
name = "go_default_library",
srcs = ["fuzzer.go"],
- importpath = "k8s.io/kubernetes/pkg/api/fuzzer",
+ importpath = "k8s.io/kubernetes/pkg/apis/core/fuzzer",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/github.com/google/gofuzz:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/fields:go_default_library",
diff --git a/pkg/api/fuzzer/fuzzer.go b/pkg/apis/core/fuzzer/fuzzer.go
similarity index 61%
rename from pkg/api/fuzzer/fuzzer.go
rename to pkg/apis/core/fuzzer/fuzzer.go
index 9163cee41e..4fd1e4c1b1 100644
--- a/pkg/api/fuzzer/fuzzer.go
+++ b/pkg/apis/core/fuzzer/fuzzer.go
@@ -29,16 +29,16 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema"
runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer"
"k8s.io/apimachinery/pkg/util/intstr"
- "k8s.io/kubernetes/pkg/api"
+ "k8s.io/kubernetes/pkg/apis/core"
)
-// Funcs returns the fuzzer functions for the core api group.
+// Funcs returns the fuzzer functions for the core core group.
var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} {
return []interface{}{
func(q *resource.Quantity, c fuzz.Continue) {
*q = *resource.NewQuantity(c.Int63n(1000), resource.DecimalExponent)
},
- func(j *api.ObjectReference, c fuzz.Continue) {
+ func(j *core.ObjectReference, c fuzz.Continue) {
// We have to customize the randomization of TypeMetas because their
// APIVersion and Kind must remain blank in memory.
j.APIVersion = c.RandString()
@@ -48,21 +48,21 @@ var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} {
j.ResourceVersion = strconv.FormatUint(c.RandUint64(), 10)
j.FieldPath = c.RandString()
},
- func(j *api.ListOptions, c fuzz.Continue) {
+ func(j *core.ListOptions, c fuzz.Continue) {
label, _ := labels.Parse("a=b")
j.LabelSelector = label
field, _ := fields.ParseSelector("a=b")
j.FieldSelector = field
},
- func(j *api.PodExecOptions, c fuzz.Continue) {
+ func(j *core.PodExecOptions, c fuzz.Continue) {
j.Stdout = true
j.Stderr = true
},
- func(j *api.PodAttachOptions, c fuzz.Continue) {
+ func(j *core.PodAttachOptions, c fuzz.Continue) {
j.Stdout = true
j.Stderr = true
},
- func(j *api.PodPortForwardOptions, c fuzz.Continue) {
+ func(j *core.PodPortForwardOptions, c fuzz.Continue) {
if c.RandBool() {
j.Ports = make([]int32, c.Intn(10))
for i := range j.Ports {
@@ -70,7 +70,7 @@ var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} {
}
}
},
- func(s *api.PodSpec, c fuzz.Continue) {
+ func(s *core.PodSpec, c fuzz.Continue) {
c.FuzzNoCustom(s)
// has a default value
ttl := int64(30)
@@ -82,35 +82,35 @@ var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} {
c.Fuzz(s.SecurityContext)
if s.SecurityContext == nil {
- s.SecurityContext = new(api.PodSecurityContext)
+ s.SecurityContext = new(core.PodSecurityContext)
}
if s.Affinity == nil {
- s.Affinity = new(api.Affinity)
+ s.Affinity = new(core.Affinity)
}
if s.SchedulerName == "" {
- s.SchedulerName = api.DefaultSchedulerName
+ s.SchedulerName = core.DefaultSchedulerName
}
},
- func(j *api.PodPhase, c fuzz.Continue) {
- statuses := []api.PodPhase{api.PodPending, api.PodRunning, api.PodFailed, api.PodUnknown}
+ func(j *core.PodPhase, c fuzz.Continue) {
+ statuses := []core.PodPhase{core.PodPending, core.PodRunning, core.PodFailed, core.PodUnknown}
*j = statuses[c.Rand.Intn(len(statuses))]
},
- func(j *api.Binding, c fuzz.Continue) {
+ func(j *core.Binding, c fuzz.Continue) {
c.Fuzz(&j.ObjectMeta)
j.Target.Name = c.RandString()
},
- func(j *api.ReplicationControllerSpec, c fuzz.Continue) {
+ func(j *core.ReplicationControllerSpec, c fuzz.Continue) {
c.FuzzNoCustom(j) // fuzz self without calling this function again
//j.TemplateRef = nil // this is required for round trip
},
- func(j *api.List, c fuzz.Continue) {
+ func(j *core.List, c fuzz.Continue) {
c.FuzzNoCustom(j) // fuzz self without calling this function again
// TODO: uncomment when round trip starts from a versioned object
if false { //j.Items == nil {
j.Items = []runtime.Object{}
}
},
- func(q *api.ResourceRequirements, c fuzz.Continue) {
+ func(q *core.ResourceRequirements, c fuzz.Continue) {
randomQuantity := func() resource.Quantity {
var q resource.Quantity
c.Fuzz(&q)
@@ -118,52 +118,52 @@ var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} {
_ = q.String()
return q
}
- q.Limits = make(api.ResourceList)
- q.Requests = make(api.ResourceList)
+ q.Limits = make(core.ResourceList)
+ q.Requests = make(core.ResourceList)
cpuLimit := randomQuantity()
- q.Limits[api.ResourceCPU] = *cpuLimit.Copy()
- q.Requests[api.ResourceCPU] = *cpuLimit.Copy()
+ q.Limits[core.ResourceCPU] = *cpuLimit.Copy()
+ q.Requests[core.ResourceCPU] = *cpuLimit.Copy()
memoryLimit := randomQuantity()
- q.Limits[api.ResourceMemory] = *memoryLimit.Copy()
- q.Requests[api.ResourceMemory] = *memoryLimit.Copy()
+ q.Limits[core.ResourceMemory] = *memoryLimit.Copy()
+ q.Requests[core.ResourceMemory] = *memoryLimit.Copy()
storageLimit := randomQuantity()
- q.Limits[api.ResourceStorage] = *storageLimit.Copy()
- q.Requests[api.ResourceStorage] = *storageLimit.Copy()
+ q.Limits[core.ResourceStorage] = *storageLimit.Copy()
+ q.Requests[core.ResourceStorage] = *storageLimit.Copy()
},
- func(q *api.LimitRangeItem, c fuzz.Continue) {
+ func(q *core.LimitRangeItem, c fuzz.Continue) {
var cpuLimit resource.Quantity
c.Fuzz(&cpuLimit)
- q.Type = api.LimitTypeContainer
- q.Default = make(api.ResourceList)
- q.Default[api.ResourceCPU] = *(cpuLimit.Copy())
+ q.Type = core.LimitTypeContainer
+ q.Default = make(core.ResourceList)
+ q.Default[core.ResourceCPU] = *(cpuLimit.Copy())
- q.DefaultRequest = make(api.ResourceList)
- q.DefaultRequest[api.ResourceCPU] = *(cpuLimit.Copy())
+ q.DefaultRequest = make(core.ResourceList)
+ q.DefaultRequest[core.ResourceCPU] = *(cpuLimit.Copy())
- q.Max = make(api.ResourceList)
- q.Max[api.ResourceCPU] = *(cpuLimit.Copy())
+ q.Max = make(core.ResourceList)
+ q.Max[core.ResourceCPU] = *(cpuLimit.Copy())
- q.Min = make(api.ResourceList)
- q.Min[api.ResourceCPU] = *(cpuLimit.Copy())
+ q.Min = make(core.ResourceList)
+ q.Min[core.ResourceCPU] = *(cpuLimit.Copy())
- q.MaxLimitRequestRatio = make(api.ResourceList)
- q.MaxLimitRequestRatio[api.ResourceCPU] = resource.MustParse("10")
+ q.MaxLimitRequestRatio = make(core.ResourceList)
+ q.MaxLimitRequestRatio[core.ResourceCPU] = resource.MustParse("10")
},
- func(p *api.PullPolicy, c fuzz.Continue) {
- policies := []api.PullPolicy{api.PullAlways, api.PullNever, api.PullIfNotPresent}
+ func(p *core.PullPolicy, c fuzz.Continue) {
+ policies := []core.PullPolicy{core.PullAlways, core.PullNever, core.PullIfNotPresent}
*p = policies[c.Rand.Intn(len(policies))]
},
- func(rp *api.RestartPolicy, c fuzz.Continue) {
- policies := []api.RestartPolicy{api.RestartPolicyAlways, api.RestartPolicyNever, api.RestartPolicyOnFailure}
+ func(rp *core.RestartPolicy, c fuzz.Continue) {
+ policies := []core.RestartPolicy{core.RestartPolicyAlways, core.RestartPolicyNever, core.RestartPolicyOnFailure}
*rp = policies[c.Rand.Intn(len(policies))]
},
- // api.DownwardAPIVolumeFile needs to have a specific func since FieldRef has to be
+ // core.DownwardAPIVolumeFile needs to have a specific func since FieldRef has to be
// defaulted to a version otherwise roundtrip will fail
- func(m *api.DownwardAPIVolumeFile, c fuzz.Continue) {
+ func(m *core.DownwardAPIVolumeFile, c fuzz.Continue) {
m.Path = c.RandString()
versions := []string{"v1"}
- m.FieldRef = &api.ObjectFieldSelector{}
+ m.FieldRef = &core.ObjectFieldSelector{}
m.FieldRef.APIVersion = versions[c.Rand.Intn(len(versions))]
m.FieldRef.FieldPath = c.RandString()
c.Fuzz(m.Mode)
@@ -171,7 +171,7 @@ var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} {
*m.Mode &= 0777
}
},
- func(s *api.SecretVolumeSource, c fuzz.Continue) {
+ func(s *core.SecretVolumeSource, c fuzz.Continue) {
c.FuzzNoCustom(s) // fuzz self without calling this function again
if c.RandBool() {
@@ -185,7 +185,7 @@ var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} {
mode &= 0777
s.DefaultMode = &mode
},
- func(cm *api.ConfigMapVolumeSource, c fuzz.Continue) {
+ func(cm *core.ConfigMapVolumeSource, c fuzz.Continue) {
c.FuzzNoCustom(cm) // fuzz self without calling this function again
if c.RandBool() {
@@ -199,7 +199,7 @@ var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} {
mode &= 0777
cm.DefaultMode = &mode
},
- func(d *api.DownwardAPIVolumeSource, c fuzz.Continue) {
+ func(d *core.DownwardAPIVolumeSource, c fuzz.Continue) {
c.FuzzNoCustom(d) // fuzz self without calling this function again
// DefaultMode should always be set, it has a default
@@ -209,7 +209,7 @@ var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} {
mode &= 0777
d.DefaultMode = &mode
},
- func(s *api.ProjectedVolumeSource, c fuzz.Continue) {
+ func(s *core.ProjectedVolumeSource, c fuzz.Continue) {
c.FuzzNoCustom(s) // fuzz self without calling this function again
// DefaultMode should always be set, it has a default
@@ -219,7 +219,7 @@ var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} {
mode &= 0777
s.DefaultMode = &mode
},
- func(k *api.KeyToPath, c fuzz.Continue) {
+ func(k *core.KeyToPath, c fuzz.Continue) {
c.FuzzNoCustom(k) // fuzz self without calling this function again
k.Key = c.RandString()
k.Path = c.RandString()
@@ -230,7 +230,7 @@ var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} {
*k.Mode &= 0777
}
},
- func(vs *api.VolumeSource, c fuzz.Continue) {
+ func(vs *core.VolumeSource, c fuzz.Continue) {
// Exactly one of the fields must be set.
v := reflect.ValueOf(vs).Elem()
i := int(c.RandUint64() % uint64(v.NumField()))
@@ -239,38 +239,38 @@ var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} {
c.Fuzz(t.Interface())
}
},
- func(i *api.ISCSIVolumeSource, c fuzz.Continue) {
+ func(i *core.ISCSIVolumeSource, c fuzz.Continue) {
i.ISCSIInterface = c.RandString()
if i.ISCSIInterface == "" {
i.ISCSIInterface = "default"
}
},
- func(d *api.DNSPolicy, c fuzz.Continue) {
- policies := []api.DNSPolicy{api.DNSClusterFirst, api.DNSDefault}
+ func(d *core.DNSPolicy, c fuzz.Continue) {
+ policies := []core.DNSPolicy{core.DNSClusterFirst, core.DNSDefault}
*d = policies[c.Rand.Intn(len(policies))]
},
- func(p *api.Protocol, c fuzz.Continue) {
- protocols := []api.Protocol{api.ProtocolTCP, api.ProtocolUDP}
+ func(p *core.Protocol, c fuzz.Continue) {
+ protocols := []core.Protocol{core.ProtocolTCP, core.ProtocolUDP}
*p = protocols[c.Rand.Intn(len(protocols))]
},
- func(p *api.ServiceAffinity, c fuzz.Continue) {
- types := []api.ServiceAffinity{api.ServiceAffinityClientIP, api.ServiceAffinityNone}
+ func(p *core.ServiceAffinity, c fuzz.Continue) {
+ types := []core.ServiceAffinity{core.ServiceAffinityClientIP, core.ServiceAffinityNone}
*p = types[c.Rand.Intn(len(types))]
},
- func(p *api.ServiceType, c fuzz.Continue) {
- types := []api.ServiceType{api.ServiceTypeClusterIP, api.ServiceTypeNodePort, api.ServiceTypeLoadBalancer}
+ func(p *core.ServiceType, c fuzz.Continue) {
+ types := []core.ServiceType{core.ServiceTypeClusterIP, core.ServiceTypeNodePort, core.ServiceTypeLoadBalancer}
*p = types[c.Rand.Intn(len(types))]
},
- func(p *api.ServiceExternalTrafficPolicyType, c fuzz.Continue) {
- types := []api.ServiceExternalTrafficPolicyType{api.ServiceExternalTrafficPolicyTypeCluster, api.ServiceExternalTrafficPolicyTypeLocal}
+ func(p *core.ServiceExternalTrafficPolicyType, c fuzz.Continue) {
+ types := []core.ServiceExternalTrafficPolicyType{core.ServiceExternalTrafficPolicyTypeCluster, core.ServiceExternalTrafficPolicyTypeLocal}
*p = types[c.Rand.Intn(len(types))]
},
- func(ct *api.Container, c fuzz.Continue) {
+ func(ct *core.Container, c fuzz.Continue) {
c.FuzzNoCustom(ct) // fuzz self without calling this function again
ct.TerminationMessagePath = "/" + ct.TerminationMessagePath // Must be non-empty
ct.TerminationMessagePolicy = "File"
},
- func(p *api.Probe, c fuzz.Continue) {
+ func(p *core.Probe, c fuzz.Continue) {
c.FuzzNoCustom(p)
// These fields have default values.
intFieldsWithDefaults := [...]string{"TimeoutSeconds", "PeriodSeconds", "SuccessThreshold", "FailureThreshold"}
@@ -282,13 +282,13 @@ var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} {
}
}
},
- func(ev *api.EnvVar, c fuzz.Continue) {
+ func(ev *core.EnvVar, c fuzz.Continue) {
ev.Name = c.RandString()
if c.RandBool() {
ev.Value = c.RandString()
} else {
- ev.ValueFrom = &api.EnvVarSource{}
- ev.ValueFrom.FieldRef = &api.ObjectFieldSelector{}
+ ev.ValueFrom = &core.EnvVarSource{}
+ ev.ValueFrom.FieldRef = &core.ObjectFieldSelector{}
versions := []schema.GroupVersion{
{Group: "admission.k8s.io", Version: "v1alpha1"},
@@ -301,7 +301,7 @@ var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} {
ev.ValueFrom.FieldRef.FieldPath = c.RandString()
}
},
- func(ev *api.EnvFromSource, c fuzz.Continue) {
+ func(ev *core.EnvFromSource, c fuzz.Continue) {
if c.RandBool() {
ev.Prefix = "p_"
}
@@ -311,17 +311,17 @@ var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} {
c.Fuzz(&ev.SecretRef)
}
},
- func(cm *api.ConfigMapEnvSource, c fuzz.Continue) {
+ func(cm *core.ConfigMapEnvSource, c fuzz.Continue) {
c.FuzzNoCustom(cm) // fuzz self without calling this function again
if c.RandBool() {
opt := c.RandBool()
cm.Optional = &opt
}
},
- func(s *api.SecretEnvSource, c fuzz.Continue) {
+ func(s *core.SecretEnvSource, c fuzz.Continue) {
c.FuzzNoCustom(s) // fuzz self without calling this function again
},
- func(sc *api.SecurityContext, c fuzz.Continue) {
+ func(sc *core.SecurityContext, c fuzz.Continue) {
c.FuzzNoCustom(sc) // fuzz self without calling this function again
if c.RandBool() {
priv := c.RandBool()
@@ -329,19 +329,19 @@ var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} {
}
if c.RandBool() {
- sc.Capabilities = &api.Capabilities{
- Add: make([]api.Capability, 0),
- Drop: make([]api.Capability, 0),
+ sc.Capabilities = &core.Capabilities{
+ Add: make([]core.Capability, 0),
+ Drop: make([]core.Capability, 0),
}
c.Fuzz(&sc.Capabilities.Add)
c.Fuzz(&sc.Capabilities.Drop)
}
},
- func(s *api.Secret, c fuzz.Continue) {
+ func(s *core.Secret, c fuzz.Continue) {
c.FuzzNoCustom(s) // fuzz self without calling this function again
- s.Type = api.SecretTypeOpaque
+ s.Type = core.SecretTypeOpaque
},
- func(r *api.RBDVolumeSource, c fuzz.Continue) {
+ func(r *core.RBDVolumeSource, c fuzz.Continue) {
r.RBDPool = c.RandString()
if r.RBDPool == "" {
r.RBDPool = "rbd"
@@ -355,7 +355,7 @@ var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} {
r.Keyring = "/etc/ceph/keyring"
}
},
- func(r *api.RBDPersistentVolumeSource, c fuzz.Continue) {
+ func(r *core.RBDPersistentVolumeSource, c fuzz.Continue) {
r.RBDPool = c.RandString()
if r.RBDPool == "" {
r.RBDPool = "rbd"
@@ -369,36 +369,36 @@ var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} {
r.Keyring = "/etc/ceph/keyring"
}
},
- func(obj *api.HostPathVolumeSource, c fuzz.Continue) {
+ func(obj *core.HostPathVolumeSource, c fuzz.Continue) {
c.FuzzNoCustom(obj)
- types := []api.HostPathType{api.HostPathUnset, api.HostPathDirectoryOrCreate, api.HostPathDirectory,
- api.HostPathFileOrCreate, api.HostPathFile, api.HostPathSocket, api.HostPathCharDev, api.HostPathBlockDev}
+ types := []core.HostPathType{core.HostPathUnset, core.HostPathDirectoryOrCreate, core.HostPathDirectory,
+ core.HostPathFileOrCreate, core.HostPathFile, core.HostPathSocket, core.HostPathCharDev, core.HostPathBlockDev}
typeVol := types[c.Rand.Intn(len(types))]
if obj.Type == nil {
obj.Type = &typeVol
}
},
- func(pv *api.PersistentVolume, c fuzz.Continue) {
+ func(pv *core.PersistentVolume, c fuzz.Continue) {
c.FuzzNoCustom(pv) // fuzz self without calling this function again
- types := []api.PersistentVolumePhase{api.VolumeAvailable, api.VolumePending, api.VolumeBound, api.VolumeReleased, api.VolumeFailed}
+ types := []core.PersistentVolumePhase{core.VolumeAvailable, core.VolumePending, core.VolumeBound, core.VolumeReleased, core.VolumeFailed}
pv.Status.Phase = types[c.Rand.Intn(len(types))]
pv.Status.Message = c.RandString()
- reclamationPolicies := []api.PersistentVolumeReclaimPolicy{api.PersistentVolumeReclaimRecycle, api.PersistentVolumeReclaimRetain}
+ reclamationPolicies := []core.PersistentVolumeReclaimPolicy{core.PersistentVolumeReclaimRecycle, core.PersistentVolumeReclaimRetain}
pv.Spec.PersistentVolumeReclaimPolicy = reclamationPolicies[c.Rand.Intn(len(reclamationPolicies))]
},
- func(pvc *api.PersistentVolumeClaim, c fuzz.Continue) {
+ func(pvc *core.PersistentVolumeClaim, c fuzz.Continue) {
c.FuzzNoCustom(pvc) // fuzz self without calling this function again
- types := []api.PersistentVolumeClaimPhase{api.ClaimBound, api.ClaimPending, api.ClaimLost}
+ types := []core.PersistentVolumeClaimPhase{core.ClaimBound, core.ClaimPending, core.ClaimLost}
pvc.Status.Phase = types[c.Rand.Intn(len(types))]
},
- func(obj *api.AzureDiskVolumeSource, c fuzz.Continue) {
+ func(obj *core.AzureDiskVolumeSource, c fuzz.Continue) {
if obj.CachingMode == nil {
- obj.CachingMode = new(api.AzureDataDiskCachingMode)
- *obj.CachingMode = api.AzureDataDiskCachingReadWrite
+ obj.CachingMode = new(core.AzureDataDiskCachingMode)
+ *obj.CachingMode = core.AzureDataDiskCachingReadWrite
}
if obj.Kind == nil {
- obj.Kind = new(api.AzureDataDiskKind)
- *obj.Kind = api.AzureSharedBlobDisk
+ obj.Kind = new(core.AzureDataDiskKind)
+ *obj.Kind = core.AzureSharedBlobDisk
}
if obj.FSType == nil {
obj.FSType = new(string)
@@ -409,7 +409,7 @@ var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} {
*obj.ReadOnly = false
}
},
- func(sio *api.ScaleIOVolumeSource, c fuzz.Continue) {
+ func(sio *core.ScaleIOVolumeSource, c fuzz.Continue) {
sio.StorageMode = c.RandString()
if sio.StorageMode == "" {
sio.StorageMode = "ThinProvisioned"
@@ -419,7 +419,7 @@ var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} {
sio.FSType = "xfs"
}
},
- func(sio *api.ScaleIOPersistentVolumeSource, c fuzz.Continue) {
+ func(sio *core.ScaleIOPersistentVolumeSource, c fuzz.Continue) {
sio.StorageMode = c.RandString()
if sio.StorageMode == "" {
sio.StorageMode = "ThinProvisioned"
@@ -429,22 +429,22 @@ var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} {
sio.FSType = "xfs"
}
},
- func(s *api.NamespaceSpec, c fuzz.Continue) {
- s.Finalizers = []api.FinalizerName{api.FinalizerKubernetes}
+ func(s *core.NamespaceSpec, c fuzz.Continue) {
+ s.Finalizers = []core.FinalizerName{core.FinalizerKubernetes}
},
- func(s *api.NamespaceStatus, c fuzz.Continue) {
- s.Phase = api.NamespaceActive
+ func(s *core.NamespaceStatus, c fuzz.Continue) {
+ s.Phase = core.NamespaceActive
},
- func(http *api.HTTPGetAction, c fuzz.Continue) {
+ func(http *core.HTTPGetAction, c fuzz.Continue) {
c.FuzzNoCustom(http) // fuzz self without calling this function again
http.Path = "/" + http.Path // can't be blank
http.Scheme = "x" + http.Scheme // can't be blank
},
- func(ss *api.ServiceSpec, c fuzz.Continue) {
+ func(ss *core.ServiceSpec, c fuzz.Continue) {
c.FuzzNoCustom(ss) // fuzz self without calling this function again
if len(ss.Ports) == 0 {
// There must be at least 1 port.
- ss.Ports = append(ss.Ports, api.ServicePort{})
+ ss.Ports = append(ss.Ports, core.ServicePort{})
c.Fuzz(&ss.Ports[0])
}
for i := range ss.Ports {
@@ -455,25 +455,25 @@ var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} {
ss.Ports[i].TargetPort.StrVal = "x" + ss.Ports[i].TargetPort.StrVal // non-empty
}
}
- types := []api.ServiceAffinity{api.ServiceAffinityNone, api.ServiceAffinityClientIP}
+ types := []core.ServiceAffinity{core.ServiceAffinityNone, core.ServiceAffinityClientIP}
ss.SessionAffinity = types[c.Rand.Intn(len(types))]
switch ss.SessionAffinity {
- case api.ServiceAffinityClientIP:
- timeoutSeconds := int32(c.Rand.Intn(int(api.MaxClientIPServiceAffinitySeconds)))
- ss.SessionAffinityConfig = &api.SessionAffinityConfig{
- ClientIP: &api.ClientIPConfig{
+ case core.ServiceAffinityClientIP:
+ timeoutSeconds := int32(c.Rand.Intn(int(core.MaxClientIPServiceAffinitySeconds)))
+ ss.SessionAffinityConfig = &core.SessionAffinityConfig{
+ ClientIP: &core.ClientIPConfig{
TimeoutSeconds: &timeoutSeconds,
},
}
- case api.ServiceAffinityNone:
+ case core.ServiceAffinityNone:
ss.SessionAffinityConfig = nil
}
},
- func(n *api.Node, c fuzz.Continue) {
+ func(n *core.Node, c fuzz.Continue) {
c.FuzzNoCustom(n)
n.Spec.ExternalID = "external"
},
- func(s *api.NodeStatus, c fuzz.Continue) {
+ func(s *core.NodeStatus, c fuzz.Continue) {
c.FuzzNoCustom(s)
s.Allocatable = s.Capacity
},
diff --git a/pkg/api/helper/BUILD b/pkg/apis/core/helper/BUILD
similarity index 83%
rename from pkg/api/helper/BUILD
rename to pkg/apis/core/helper/BUILD
index f8bd4dbb82..81b0a2fbff 100644
--- a/pkg/api/helper/BUILD
+++ b/pkg/apis/core/helper/BUILD
@@ -9,10 +9,10 @@ load(
go_test(
name = "go_default_test",
srcs = ["helpers_test.go"],
- importpath = "k8s.io/kubernetes/pkg/api/helper",
+ importpath = "k8s.io/kubernetes/pkg/apis/core/helper",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
],
@@ -21,9 +21,9 @@ go_test(
go_library(
name = "go_default_library",
srcs = ["helpers.go"],
- importpath = "k8s.io/kubernetes/pkg/api/helper",
+ importpath = "k8s.io/kubernetes/pkg/apis/core/helper",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
@@ -45,7 +45,7 @@ filegroup(
name = "all-srcs",
srcs = [
":package-srcs",
- "//pkg/api/helper/qos:all-srcs",
+ "//pkg/apis/core/helper/qos:all-srcs",
],
tags = ["automanaged"],
)
diff --git a/pkg/api/helper/helpers.go b/pkg/apis/core/helper/helpers.go
similarity index 59%
rename from pkg/api/helper/helpers.go
rename to pkg/apis/core/helper/helpers.go
index f352f580fe..86800d0387 100644
--- a/pkg/api/helper/helpers.go
+++ b/pkg/apis/core/helper/helpers.go
@@ -28,30 +28,30 @@ import (
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/selection"
"k8s.io/apimachinery/pkg/util/sets"
- "k8s.io/kubernetes/pkg/api"
+ "k8s.io/kubernetes/pkg/apis/core"
)
// IsHugePageResourceName returns true if the resource name has the huge page
// resource prefix.
-func IsHugePageResourceName(name api.ResourceName) bool {
- return strings.HasPrefix(string(name), api.ResourceHugePagesPrefix)
+func IsHugePageResourceName(name core.ResourceName) bool {
+ return strings.HasPrefix(string(name), core.ResourceHugePagesPrefix)
}
// HugePageResourceName returns a ResourceName with the canonical hugepage
// prefix prepended for the specified page size. The page size is converted
// to its canonical representation.
-func HugePageResourceName(pageSize resource.Quantity) api.ResourceName {
- return api.ResourceName(fmt.Sprintf("%s%s", api.ResourceHugePagesPrefix, pageSize.String()))
+func HugePageResourceName(pageSize resource.Quantity) core.ResourceName {
+ return core.ResourceName(fmt.Sprintf("%s%s", core.ResourceHugePagesPrefix, pageSize.String()))
}
// HugePageSizeFromResourceName returns the page size for the specified huge page
// resource name. If the specified input is not a valid huge page resource name
// an error is returned.
-func HugePageSizeFromResourceName(name api.ResourceName) (resource.Quantity, error) {
+func HugePageSizeFromResourceName(name core.ResourceName) (resource.Quantity, error) {
if !IsHugePageResourceName(name) {
return resource.Quantity{}, fmt.Errorf("resource name: %s is not valid hugepage name", name)
}
- pageSize := strings.TrimPrefix(string(name), api.ResourceHugePagesPrefix)
+ pageSize := strings.TrimPrefix(string(name), core.ResourceHugePagesPrefix)
return resource.ParseQuantity(pageSize)
}
@@ -60,14 +60,14 @@ func HugePageSizeFromResourceName(name api.ResourceName) (resource.Quantity, err
func NonConvertibleFields(annotations map[string]string) map[string]string {
nonConvertibleKeys := map[string]string{}
for key, value := range annotations {
- if strings.HasPrefix(key, api.NonConvertibleAnnotationPrefix) {
+ if strings.HasPrefix(key, core.NonConvertibleAnnotationPrefix) {
nonConvertibleKeys[key] = value
}
}
return nonConvertibleKeys
}
-// Semantic can do semantic deep equality checks for api objects.
+// Semantic can do semantic deep equality checks for core objects.
// Example: apiequality.Semantic.DeepEqual(aPod, aPodWithNonNilButEmptyMaps) == true
var Semantic = conversion.EqualitiesOrDie(
func(a, b resource.Quantity) bool {
@@ -92,10 +92,10 @@ var Semantic = conversion.EqualitiesOrDie(
)
var standardResourceQuotaScopes = sets.NewString(
- string(api.ResourceQuotaScopeTerminating),
- string(api.ResourceQuotaScopeNotTerminating),
- string(api.ResourceQuotaScopeBestEffort),
- string(api.ResourceQuotaScopeNotBestEffort),
+ string(core.ResourceQuotaScopeTerminating),
+ string(core.ResourceQuotaScopeNotTerminating),
+ string(core.ResourceQuotaScopeBestEffort),
+ string(core.ResourceQuotaScopeNotBestEffort),
)
// IsStandardResourceQuotaScope returns true if the scope is a standard value
@@ -104,24 +104,24 @@ func IsStandardResourceQuotaScope(str string) bool {
}
var podObjectCountQuotaResources = sets.NewString(
- string(api.ResourcePods),
+ string(core.ResourcePods),
)
var podComputeQuotaResources = sets.NewString(
- string(api.ResourceCPU),
- string(api.ResourceMemory),
- string(api.ResourceLimitsCPU),
- string(api.ResourceLimitsMemory),
- string(api.ResourceRequestsCPU),
- string(api.ResourceRequestsMemory),
+ string(core.ResourceCPU),
+ string(core.ResourceMemory),
+ string(core.ResourceLimitsCPU),
+ string(core.ResourceLimitsMemory),
+ string(core.ResourceRequestsCPU),
+ string(core.ResourceRequestsMemory),
)
// IsResourceQuotaScopeValidForResource returns true if the resource applies to the specified scope
-func IsResourceQuotaScopeValidForResource(scope api.ResourceQuotaScope, resource string) bool {
+func IsResourceQuotaScopeValidForResource(scope core.ResourceQuotaScope, resource string) bool {
switch scope {
- case api.ResourceQuotaScopeTerminating, api.ResourceQuotaScopeNotTerminating, api.ResourceQuotaScopeNotBestEffort:
+ case core.ResourceQuotaScopeTerminating, core.ResourceQuotaScopeNotTerminating, core.ResourceQuotaScopeNotBestEffort:
return podObjectCountQuotaResources.Has(resource) || podComputeQuotaResources.Has(resource)
- case api.ResourceQuotaScopeBestEffort:
+ case core.ResourceQuotaScopeBestEffort:
return podObjectCountQuotaResources.Has(resource)
default:
return true
@@ -129,20 +129,20 @@ func IsResourceQuotaScopeValidForResource(scope api.ResourceQuotaScope, resource
}
var standardContainerResources = sets.NewString(
- string(api.ResourceCPU),
- string(api.ResourceMemory),
- string(api.ResourceEphemeralStorage),
+ string(core.ResourceCPU),
+ string(core.ResourceMemory),
+ string(core.ResourceEphemeralStorage),
)
// IsStandardContainerResourceName returns true if the container can make a resource request
// for the specified resource
func IsStandardContainerResourceName(str string) bool {
- return standardContainerResources.Has(str) || IsHugePageResourceName(api.ResourceName(str))
+ return standardContainerResources.Has(str) || IsHugePageResourceName(core.ResourceName(str))
}
// IsExtendedResourceName returns true if the resource name is not in the
// default namespace, or it has the opaque integer resource prefix.
-func IsExtendedResourceName(name api.ResourceName) bool {
+func IsExtendedResourceName(name core.ResourceName) bool {
// TODO: Remove OIR part following deprecation.
return !IsDefaultNamespaceResource(name) || IsOpaqueIntResourceName(name)
}
@@ -150,41 +150,41 @@ func IsExtendedResourceName(name api.ResourceName) bool {
// IsDefaultNamespaceResource returns true if the resource name is in the
// *kubernetes.io/ namespace. Partially-qualified (unprefixed) names are
// implicitly in the kubernetes.io/ namespace.
-func IsDefaultNamespaceResource(name api.ResourceName) bool {
+func IsDefaultNamespaceResource(name core.ResourceName) bool {
return !strings.Contains(string(name), "/") ||
- strings.Contains(string(name), api.ResourceDefaultNamespacePrefix)
+ strings.Contains(string(name), core.ResourceDefaultNamespacePrefix)
}
// IsOpaqueIntResourceName returns true if the resource name has the opaque
// integer resource prefix.
-func IsOpaqueIntResourceName(name api.ResourceName) bool {
- return strings.HasPrefix(string(name), api.ResourceOpaqueIntPrefix)
+func IsOpaqueIntResourceName(name core.ResourceName) bool {
+ return strings.HasPrefix(string(name), core.ResourceOpaqueIntPrefix)
}
// OpaqueIntResourceName returns a ResourceName with the canonical opaque
// integer prefix prepended. If the argument already has the prefix, it is
// returned unmodified.
-func OpaqueIntResourceName(name string) api.ResourceName {
- if IsOpaqueIntResourceName(api.ResourceName(name)) {
- return api.ResourceName(name)
+func OpaqueIntResourceName(name string) core.ResourceName {
+ if IsOpaqueIntResourceName(core.ResourceName(name)) {
+ return core.ResourceName(name)
}
- return api.ResourceName(fmt.Sprintf("%s%s", api.ResourceOpaqueIntPrefix, name))
+ return core.ResourceName(fmt.Sprintf("%s%s", core.ResourceOpaqueIntPrefix, name))
}
-var overcommitBlacklist = sets.NewString(string(api.ResourceNvidiaGPU))
+var overcommitBlacklist = sets.NewString(string(core.ResourceNvidiaGPU))
// IsOvercommitAllowed returns true if the resource is in the default
// namespace and not blacklisted.
-func IsOvercommitAllowed(name api.ResourceName) bool {
+func IsOvercommitAllowed(name core.ResourceName) bool {
return IsDefaultNamespaceResource(name) &&
!IsHugePageResourceName(name) &&
!overcommitBlacklist.Has(string(name))
}
var standardLimitRangeTypes = sets.NewString(
- string(api.LimitTypePod),
- string(api.LimitTypeContainer),
- string(api.LimitTypePersistentVolumeClaim),
+ string(core.LimitTypePod),
+ string(core.LimitTypeContainer),
+ string(core.LimitTypePersistentVolumeClaim),
)
// IsStandardLimitRangeType returns true if the type is Pod or Container
@@ -193,25 +193,25 @@ func IsStandardLimitRangeType(str string) bool {
}
var standardQuotaResources = sets.NewString(
- string(api.ResourceCPU),
- string(api.ResourceMemory),
- string(api.ResourceEphemeralStorage),
- string(api.ResourceRequestsCPU),
- string(api.ResourceRequestsMemory),
- string(api.ResourceRequestsStorage),
- string(api.ResourceRequestsEphemeralStorage),
- string(api.ResourceLimitsCPU),
- string(api.ResourceLimitsMemory),
- string(api.ResourceLimitsEphemeralStorage),
- string(api.ResourcePods),
- string(api.ResourceQuotas),
- string(api.ResourceServices),
- string(api.ResourceReplicationControllers),
- string(api.ResourceSecrets),
- string(api.ResourcePersistentVolumeClaims),
- string(api.ResourceConfigMaps),
- string(api.ResourceServicesNodePorts),
- string(api.ResourceServicesLoadBalancers),
+ string(core.ResourceCPU),
+ string(core.ResourceMemory),
+ string(core.ResourceEphemeralStorage),
+ string(core.ResourceRequestsCPU),
+ string(core.ResourceRequestsMemory),
+ string(core.ResourceRequestsStorage),
+ string(core.ResourceRequestsEphemeralStorage),
+ string(core.ResourceLimitsCPU),
+ string(core.ResourceLimitsMemory),
+ string(core.ResourceLimitsEphemeralStorage),
+ string(core.ResourcePods),
+ string(core.ResourceQuotas),
+ string(core.ResourceServices),
+ string(core.ResourceReplicationControllers),
+ string(core.ResourceSecrets),
+ string(core.ResourcePersistentVolumeClaims),
+ string(core.ResourceConfigMaps),
+ string(core.ResourceServicesNodePorts),
+ string(core.ResourceServicesLoadBalancers),
)
// IsStandardQuotaResourceName returns true if the resource is known to
@@ -221,84 +221,84 @@ func IsStandardQuotaResourceName(str string) bool {
}
var standardResources = sets.NewString(
- string(api.ResourceCPU),
- string(api.ResourceMemory),
- string(api.ResourceEphemeralStorage),
- string(api.ResourceRequestsCPU),
- string(api.ResourceRequestsMemory),
- string(api.ResourceRequestsEphemeralStorage),
- string(api.ResourceLimitsCPU),
- string(api.ResourceLimitsMemory),
- string(api.ResourceLimitsEphemeralStorage),
- string(api.ResourcePods),
- string(api.ResourceQuotas),
- string(api.ResourceServices),
- string(api.ResourceReplicationControllers),
- string(api.ResourceSecrets),
- string(api.ResourceConfigMaps),
- string(api.ResourcePersistentVolumeClaims),
- string(api.ResourceStorage),
- string(api.ResourceRequestsStorage),
- string(api.ResourceServicesNodePorts),
- string(api.ResourceServicesLoadBalancers),
+ string(core.ResourceCPU),
+ string(core.ResourceMemory),
+ string(core.ResourceEphemeralStorage),
+ string(core.ResourceRequestsCPU),
+ string(core.ResourceRequestsMemory),
+ string(core.ResourceRequestsEphemeralStorage),
+ string(core.ResourceLimitsCPU),
+ string(core.ResourceLimitsMemory),
+ string(core.ResourceLimitsEphemeralStorage),
+ string(core.ResourcePods),
+ string(core.ResourceQuotas),
+ string(core.ResourceServices),
+ string(core.ResourceReplicationControllers),
+ string(core.ResourceSecrets),
+ string(core.ResourceConfigMaps),
+ string(core.ResourcePersistentVolumeClaims),
+ string(core.ResourceStorage),
+ string(core.ResourceRequestsStorage),
+ string(core.ResourceServicesNodePorts),
+ string(core.ResourceServicesLoadBalancers),
)
// IsStandardResourceName returns true if the resource is known to the system
func IsStandardResourceName(str string) bool {
- return standardResources.Has(str) || IsHugePageResourceName(api.ResourceName(str))
+ return standardResources.Has(str) || IsHugePageResourceName(core.ResourceName(str))
}
var integerResources = sets.NewString(
- string(api.ResourcePods),
- string(api.ResourceQuotas),
- string(api.ResourceServices),
- string(api.ResourceReplicationControllers),
- string(api.ResourceSecrets),
- string(api.ResourceConfigMaps),
- string(api.ResourcePersistentVolumeClaims),
- string(api.ResourceServicesNodePorts),
- string(api.ResourceServicesLoadBalancers),
+ string(core.ResourcePods),
+ string(core.ResourceQuotas),
+ string(core.ResourceServices),
+ string(core.ResourceReplicationControllers),
+ string(core.ResourceSecrets),
+ string(core.ResourceConfigMaps),
+ string(core.ResourcePersistentVolumeClaims),
+ string(core.ResourceServicesNodePorts),
+ string(core.ResourceServicesLoadBalancers),
)
// IsIntegerResourceName returns true if the resource is measured in integer values
func IsIntegerResourceName(str string) bool {
- return integerResources.Has(str) || IsExtendedResourceName(api.ResourceName(str))
+ return integerResources.Has(str) || IsExtendedResourceName(core.ResourceName(str))
}
// Extended and HugePages resources
-func IsScalarResourceName(name api.ResourceName) bool {
+func IsScalarResourceName(name core.ResourceName) bool {
return IsExtendedResourceName(name) || IsHugePageResourceName(name)
}
// this function aims to check if the service's ClusterIP is set or not
// the objective is not to perform validation here
-func IsServiceIPSet(service *api.Service) bool {
- return service.Spec.ClusterIP != api.ClusterIPNone && service.Spec.ClusterIP != ""
+func IsServiceIPSet(service *core.Service) bool {
+ return service.Spec.ClusterIP != core.ClusterIPNone && service.Spec.ClusterIP != ""
}
// this function aims to check if the service's cluster IP is requested or not
-func IsServiceIPRequested(service *api.Service) bool {
+func IsServiceIPRequested(service *core.Service) bool {
// ExternalName services are CNAME aliases to external ones. Ignore the IP.
- if service.Spec.Type == api.ServiceTypeExternalName {
+ if service.Spec.Type == core.ServiceTypeExternalName {
return false
}
return service.Spec.ClusterIP == ""
}
var standardFinalizers = sets.NewString(
- string(api.FinalizerKubernetes),
+ string(core.FinalizerKubernetes),
metav1.FinalizerOrphanDependents,
metav1.FinalizerDeleteDependents,
)
// HasAnnotation returns a bool if passed in annotation exists
-func HasAnnotation(obj api.ObjectMeta, ann string) bool {
+func HasAnnotation(obj core.ObjectMeta, ann string) bool {
_, found := obj.Annotations[ann]
return found
}
// SetMetaDataAnnotation sets the annotation and value
-func SetMetaDataAnnotation(obj *api.ObjectMeta, ann string, value string) {
+func SetMetaDataAnnotation(obj *core.ObjectMeta, ann string, value string) {
if obj.Annotations == nil {
obj.Annotations = make(map[string]string)
}
@@ -311,7 +311,7 @@ func IsStandardFinalizerName(str string) bool {
// AddToNodeAddresses appends the NodeAddresses to the passed-by-pointer slice,
// only if they do not already exist
-func AddToNodeAddresses(addresses *[]api.NodeAddress, addAddresses ...api.NodeAddress) {
+func AddToNodeAddresses(addresses *[]core.NodeAddress, addAddresses ...core.NodeAddress) {
for _, add := range addAddresses {
exists := false
for _, existing := range *addresses {
@@ -327,11 +327,11 @@ func AddToNodeAddresses(addresses *[]api.NodeAddress, addAddresses ...api.NodeAd
}
// TODO: make method on LoadBalancerStatus?
-func LoadBalancerStatusEqual(l, r *api.LoadBalancerStatus) bool {
+func LoadBalancerStatusEqual(l, r *core.LoadBalancerStatus) bool {
return ingressSliceEqual(l.Ingress, r.Ingress)
}
-func ingressSliceEqual(lhs, rhs []api.LoadBalancerIngress) bool {
+func ingressSliceEqual(lhs, rhs []core.LoadBalancerIngress) bool {
if len(lhs) != len(rhs) {
return false
}
@@ -343,7 +343,7 @@ func ingressSliceEqual(lhs, rhs []api.LoadBalancerIngress) bool {
return true
}
-func ingressEqual(lhs, rhs *api.LoadBalancerIngress) bool {
+func ingressEqual(lhs, rhs *core.LoadBalancerIngress) bool {
if lhs.IP != rhs.IP {
return false
}
@@ -354,9 +354,9 @@ func ingressEqual(lhs, rhs *api.LoadBalancerIngress) bool {
}
// TODO: make method on LoadBalancerStatus?
-func LoadBalancerStatusDeepCopy(lb *api.LoadBalancerStatus) *api.LoadBalancerStatus {
- c := &api.LoadBalancerStatus{}
- c.Ingress = make([]api.LoadBalancerIngress, len(lb.Ingress))
+func LoadBalancerStatusDeepCopy(lb *core.LoadBalancerStatus) *core.LoadBalancerStatus {
+ c := &core.LoadBalancerStatus{}
+ c.Ingress = make([]core.LoadBalancerIngress, len(lb.Ingress))
for i := range lb.Ingress {
c.Ingress[i] = lb.Ingress[i]
}
@@ -365,42 +365,42 @@ func LoadBalancerStatusDeepCopy(lb *api.LoadBalancerStatus) *api.LoadBalancerSta
// GetAccessModesAsString returns a string representation of an array of access modes.
// modes, when present, are always in the same order: RWO,ROX,RWX.
-func GetAccessModesAsString(modes []api.PersistentVolumeAccessMode) string {
+func GetAccessModesAsString(modes []core.PersistentVolumeAccessMode) string {
modes = removeDuplicateAccessModes(modes)
modesStr := []string{}
- if containsAccessMode(modes, api.ReadWriteOnce) {
+ if containsAccessMode(modes, core.ReadWriteOnce) {
modesStr = append(modesStr, "RWO")
}
- if containsAccessMode(modes, api.ReadOnlyMany) {
+ if containsAccessMode(modes, core.ReadOnlyMany) {
modesStr = append(modesStr, "ROX")
}
- if containsAccessMode(modes, api.ReadWriteMany) {
+ if containsAccessMode(modes, core.ReadWriteMany) {
modesStr = append(modesStr, "RWX")
}
return strings.Join(modesStr, ",")
}
// GetAccessModesAsString returns an array of AccessModes from a string created by GetAccessModesAsString
-func GetAccessModesFromString(modes string) []api.PersistentVolumeAccessMode {
+func GetAccessModesFromString(modes string) []core.PersistentVolumeAccessMode {
strmodes := strings.Split(modes, ",")
- accessModes := []api.PersistentVolumeAccessMode{}
+ accessModes := []core.PersistentVolumeAccessMode{}
for _, s := range strmodes {
s = strings.Trim(s, " ")
switch {
case s == "RWO":
- accessModes = append(accessModes, api.ReadWriteOnce)
+ accessModes = append(accessModes, core.ReadWriteOnce)
case s == "ROX":
- accessModes = append(accessModes, api.ReadOnlyMany)
+ accessModes = append(accessModes, core.ReadOnlyMany)
case s == "RWX":
- accessModes = append(accessModes, api.ReadWriteMany)
+ accessModes = append(accessModes, core.ReadWriteMany)
}
}
return accessModes
}
// removeDuplicateAccessModes returns an array of access modes without any duplicates
-func removeDuplicateAccessModes(modes []api.PersistentVolumeAccessMode) []api.PersistentVolumeAccessMode {
- accessModes := []api.PersistentVolumeAccessMode{}
+func removeDuplicateAccessModes(modes []core.PersistentVolumeAccessMode) []core.PersistentVolumeAccessMode {
+ accessModes := []core.PersistentVolumeAccessMode{}
for _, m := range modes {
if !containsAccessMode(accessModes, m) {
accessModes = append(accessModes, m)
@@ -409,7 +409,7 @@ func removeDuplicateAccessModes(modes []api.PersistentVolumeAccessMode) []api.Pe
return accessModes
}
-func containsAccessMode(modes []api.PersistentVolumeAccessMode, mode api.PersistentVolumeAccessMode) bool {
+func containsAccessMode(modes []core.PersistentVolumeAccessMode, mode core.PersistentVolumeAccessMode) bool {
for _, m := range modes {
if m == mode {
return true
@@ -418,9 +418,9 @@ func containsAccessMode(modes []api.PersistentVolumeAccessMode, mode api.Persist
return false
}
-// NodeSelectorRequirementsAsSelector converts the []NodeSelectorRequirement api type into a struct that implements
+// NodeSelectorRequirementsAsSelector converts the []NodeSelectorRequirement core type into a struct that implements
// labels.Selector.
-func NodeSelectorRequirementsAsSelector(nsm []api.NodeSelectorRequirement) (labels.Selector, error) {
+func NodeSelectorRequirementsAsSelector(nsm []core.NodeSelectorRequirement) (labels.Selector, error) {
if len(nsm) == 0 {
return labels.Nothing(), nil
}
@@ -428,17 +428,17 @@ func NodeSelectorRequirementsAsSelector(nsm []api.NodeSelectorRequirement) (labe
for _, expr := range nsm {
var op selection.Operator
switch expr.Operator {
- case api.NodeSelectorOpIn:
+ case core.NodeSelectorOpIn:
op = selection.In
- case api.NodeSelectorOpNotIn:
+ case core.NodeSelectorOpNotIn:
op = selection.NotIn
- case api.NodeSelectorOpExists:
+ case core.NodeSelectorOpExists:
op = selection.Exists
- case api.NodeSelectorOpDoesNotExist:
+ case core.NodeSelectorOpDoesNotExist:
op = selection.DoesNotExist
- case api.NodeSelectorOpGt:
+ case core.NodeSelectorOpGt:
op = selection.GreaterThan
- case api.NodeSelectorOpLt:
+ case core.NodeSelectorOpLt:
op = selection.LessThan
default:
return nil, fmt.Errorf("%q is not a valid node selector operator", expr.Operator)
@@ -453,11 +453,11 @@ func NodeSelectorRequirementsAsSelector(nsm []api.NodeSelectorRequirement) (labe
}
// GetTolerationsFromPodAnnotations gets the json serialized tolerations data from Pod.Annotations
-// and converts it to the []Toleration type in api.
-func GetTolerationsFromPodAnnotations(annotations map[string]string) ([]api.Toleration, error) {
- var tolerations []api.Toleration
- if len(annotations) > 0 && annotations[api.TolerationsAnnotationKey] != "" {
- err := json.Unmarshal([]byte(annotations[api.TolerationsAnnotationKey]), &tolerations)
+// and converts it to the []Toleration type in core.
+func GetTolerationsFromPodAnnotations(annotations map[string]string) ([]core.Toleration, error) {
+ var tolerations []core.Toleration
+ if len(annotations) > 0 && annotations[core.TolerationsAnnotationKey] != "" {
+ err := json.Unmarshal([]byte(annotations[core.TolerationsAnnotationKey]), &tolerations)
if err != nil {
return tolerations, err
}
@@ -467,10 +467,10 @@ func GetTolerationsFromPodAnnotations(annotations map[string]string) ([]api.Tole
// AddOrUpdateTolerationInPod tries to add a toleration to the pod's toleration list.
// Returns true if something was updated, false otherwise.
-func AddOrUpdateTolerationInPod(pod *api.Pod, toleration *api.Toleration) bool {
+func AddOrUpdateTolerationInPod(pod *core.Pod, toleration *core.Toleration) bool {
podTolerations := pod.Spec.Tolerations
- var newTolerations []api.Toleration
+ var newTolerations []core.Toleration
updated := false
for i := range podTolerations {
if toleration.MatchToleration(&podTolerations[i]) {
@@ -494,7 +494,7 @@ func AddOrUpdateTolerationInPod(pod *api.Pod, toleration *api.Toleration) bool {
}
// TolerationToleratesTaint checks if the toleration tolerates the taint.
-func TolerationToleratesTaint(toleration *api.Toleration, taint *api.Taint) bool {
+func TolerationToleratesTaint(toleration *core.Toleration, taint *core.Taint) bool {
if len(toleration.Effect) != 0 && toleration.Effect != taint.Effect {
return false
}
@@ -503,17 +503,17 @@ func TolerationToleratesTaint(toleration *api.Toleration, taint *api.Taint) bool
return false
}
// TODO: Use proper defaulting when Toleration becomes a field of PodSpec
- if (len(toleration.Operator) == 0 || toleration.Operator == api.TolerationOpEqual) && toleration.Value == taint.Value {
+ if (len(toleration.Operator) == 0 || toleration.Operator == core.TolerationOpEqual) && toleration.Value == taint.Value {
return true
}
- if toleration.Operator == api.TolerationOpExists {
+ if toleration.Operator == core.TolerationOpExists {
return true
}
return false
}
// TaintToleratedByTolerations checks if taint is tolerated by any of the tolerations.
-func TaintToleratedByTolerations(taint *api.Taint, tolerations []api.Toleration) bool {
+func TaintToleratedByTolerations(taint *core.Taint, tolerations []core.Toleration) bool {
tolerated := false
for i := range tolerations {
if TolerationToleratesTaint(&tolerations[i], taint) {
@@ -525,13 +525,13 @@ func TaintToleratedByTolerations(taint *api.Taint, tolerations []api.Toleration)
}
// GetTaintsFromNodeAnnotations gets the json serialized taints data from Pod.Annotations
-// and converts it to the []Taint type in api.
-func GetTaintsFromNodeAnnotations(annotations map[string]string) ([]api.Taint, error) {
- var taints []api.Taint
- if len(annotations) > 0 && annotations[api.TaintsAnnotationKey] != "" {
- err := json.Unmarshal([]byte(annotations[api.TaintsAnnotationKey]), &taints)
+// and converts it to the []Taint type in core.
+func GetTaintsFromNodeAnnotations(annotations map[string]string) ([]core.Taint, error) {
+ var taints []core.Taint
+ if len(annotations) > 0 && annotations[core.TaintsAnnotationKey] != "" {
+ err := json.Unmarshal([]byte(annotations[core.TaintsAnnotationKey]), &taints)
if err != nil {
- return []api.Taint{}, err
+ return []core.Taint{}, err
}
}
return taints, nil
@@ -540,12 +540,12 @@ func GetTaintsFromNodeAnnotations(annotations map[string]string) ([]api.Taint, e
// SysctlsFromPodAnnotations parses the sysctl annotations into a slice of safe Sysctls
// and a slice of unsafe Sysctls. This is only a convenience wrapper around
// SysctlsFromPodAnnotation.
-func SysctlsFromPodAnnotations(a map[string]string) ([]api.Sysctl, []api.Sysctl, error) {
- safe, err := SysctlsFromPodAnnotation(a[api.SysctlsPodAnnotationKey])
+func SysctlsFromPodAnnotations(a map[string]string) ([]core.Sysctl, []core.Sysctl, error) {
+ safe, err := SysctlsFromPodAnnotation(a[core.SysctlsPodAnnotationKey])
if err != nil {
return nil, nil, err
}
- unsafe, err := SysctlsFromPodAnnotation(a[api.UnsafeSysctlsPodAnnotationKey])
+ unsafe, err := SysctlsFromPodAnnotation(a[core.UnsafeSysctlsPodAnnotationKey])
if err != nil {
return nil, nil, err
}
@@ -554,13 +554,13 @@ func SysctlsFromPodAnnotations(a map[string]string) ([]api.Sysctl, []api.Sysctl,
}
// SysctlsFromPodAnnotation parses an annotation value into a slice of Sysctls.
-func SysctlsFromPodAnnotation(annotation string) ([]api.Sysctl, error) {
+func SysctlsFromPodAnnotation(annotation string) ([]core.Sysctl, error) {
if len(annotation) == 0 {
return nil, nil
}
kvs := strings.Split(annotation, ",")
- sysctls := make([]api.Sysctl, len(kvs))
+ sysctls := make([]core.Sysctl, len(kvs))
for i, kv := range kvs {
cs := strings.Split(kv, "=")
if len(cs) != 2 || len(cs[0]) == 0 {
@@ -573,7 +573,7 @@ func SysctlsFromPodAnnotation(annotation string) ([]api.Sysctl, error) {
}
// PodAnnotationsFromSysctls creates an annotation value for a slice of Sysctls.
-func PodAnnotationsFromSysctls(sysctls []api.Sysctl) string {
+func PodAnnotationsFromSysctls(sysctls []core.Sysctl) string {
if len(sysctls) == 0 {
return ""
}
@@ -586,9 +586,9 @@ func PodAnnotationsFromSysctls(sysctls []api.Sysctl) string {
}
// GetPersistentVolumeClass returns StorageClassName.
-func GetPersistentVolumeClass(volume *api.PersistentVolume) string {
+func GetPersistentVolumeClass(volume *core.PersistentVolume) string {
// Use beta annotation first
- if class, found := volume.Annotations[api.BetaStorageClassAnnotation]; found {
+ if class, found := volume.Annotations[core.BetaStorageClassAnnotation]; found {
return class
}
@@ -597,9 +597,9 @@ func GetPersistentVolumeClass(volume *api.PersistentVolume) string {
// GetPersistentVolumeClaimClass returns StorageClassName. If no storage class was
// requested, it returns "".
-func GetPersistentVolumeClaimClass(claim *api.PersistentVolumeClaim) string {
+func GetPersistentVolumeClaimClass(claim *core.PersistentVolumeClaim) string {
// Use beta annotation first
- if class, found := claim.Annotations[api.BetaStorageClassAnnotation]; found {
+ if class, found := claim.Annotations[core.BetaStorageClassAnnotation]; found {
return class
}
@@ -611,9 +611,9 @@ func GetPersistentVolumeClaimClass(claim *api.PersistentVolumeClaim) string {
}
// PersistentVolumeClaimHasClass returns true if given claim has set StorageClassName field.
-func PersistentVolumeClaimHasClass(claim *api.PersistentVolumeClaim) bool {
+func PersistentVolumeClaimHasClass(claim *core.PersistentVolumeClaim) bool {
// Use beta annotation first
- if _, found := claim.Annotations[api.BetaStorageClassAnnotation]; found {
+ if _, found := claim.Annotations[core.BetaStorageClassAnnotation]; found {
return true
}
@@ -625,12 +625,12 @@ func PersistentVolumeClaimHasClass(claim *api.PersistentVolumeClaim) bool {
}
// GetStorageNodeAffinityFromAnnotation gets the json serialized data from PersistentVolume.Annotations
-// and converts it to the NodeAffinity type in api.
+// and converts it to the NodeAffinity type in core.
// TODO: update when storage node affinity graduates to beta
-func GetStorageNodeAffinityFromAnnotation(annotations map[string]string) (*api.NodeAffinity, error) {
- if len(annotations) > 0 && annotations[api.AlphaStorageNodeAffinityAnnotation] != "" {
- var affinity api.NodeAffinity
- err := json.Unmarshal([]byte(annotations[api.AlphaStorageNodeAffinityAnnotation]), &affinity)
+func GetStorageNodeAffinityFromAnnotation(annotations map[string]string) (*core.NodeAffinity, error) {
+ if len(annotations) > 0 && annotations[core.AlphaStorageNodeAffinityAnnotation] != "" {
+ var affinity core.NodeAffinity
+ err := json.Unmarshal([]byte(annotations[core.AlphaStorageNodeAffinityAnnotation]), &affinity)
if err != nil {
return nil, err
}
@@ -641,7 +641,7 @@ func GetStorageNodeAffinityFromAnnotation(annotations map[string]string) (*api.N
// Converts NodeAffinity type to Alpha annotation for use in PersistentVolumes
// TODO: update when storage node affinity graduates to beta
-func StorageNodeAffinityToAlphaAnnotation(annotations map[string]string, affinity *api.NodeAffinity) error {
+func StorageNodeAffinityToAlphaAnnotation(annotations map[string]string, affinity *core.NodeAffinity) error {
if affinity == nil {
return nil
}
@@ -650,6 +650,6 @@ func StorageNodeAffinityToAlphaAnnotation(annotations map[string]string, affinit
if err != nil {
return err
}
- annotations[api.AlphaStorageNodeAffinityAnnotation] = string(json)
+ annotations[core.AlphaStorageNodeAffinityAnnotation] = string(json)
return nil
}
diff --git a/pkg/api/helper/helpers_test.go b/pkg/apis/core/helper/helpers_test.go
similarity index 72%
rename from pkg/api/helper/helpers_test.go
rename to pkg/apis/core/helper/helpers_test.go
index 7631b8bba0..dad7f2d4a6 100644
--- a/pkg/api/helper/helpers_test.go
+++ b/pkg/apis/core/helper/helpers_test.go
@@ -22,7 +22,7 @@ import (
"k8s.io/apimachinery/pkg/api/resource"
"k8s.io/apimachinery/pkg/labels"
- "k8s.io/kubernetes/pkg/api"
+ "k8s.io/kubernetes/pkg/apis/core"
)
func TestSemantic(t *testing.T) {
@@ -86,49 +86,49 @@ func TestIsStandardContainerResource(t *testing.T) {
func TestAddToNodeAddresses(t *testing.T) {
testCases := []struct {
- existing []api.NodeAddress
- toAdd []api.NodeAddress
- expected []api.NodeAddress
+ existing []core.NodeAddress
+ toAdd []core.NodeAddress
+ expected []core.NodeAddress
}{
{
- existing: []api.NodeAddress{},
- toAdd: []api.NodeAddress{},
- expected: []api.NodeAddress{},
+ existing: []core.NodeAddress{},
+ toAdd: []core.NodeAddress{},
+ expected: []core.NodeAddress{},
},
{
- existing: []api.NodeAddress{},
- toAdd: []api.NodeAddress{
- {Type: api.NodeExternalIP, Address: "1.1.1.1"},
- {Type: api.NodeHostName, Address: "localhost"},
+ existing: []core.NodeAddress{},
+ toAdd: []core.NodeAddress{
+ {Type: core.NodeExternalIP, Address: "1.1.1.1"},
+ {Type: core.NodeHostName, Address: "localhost"},
},
- expected: []api.NodeAddress{
- {Type: api.NodeExternalIP, Address: "1.1.1.1"},
- {Type: api.NodeHostName, Address: "localhost"},
+ expected: []core.NodeAddress{
+ {Type: core.NodeExternalIP, Address: "1.1.1.1"},
+ {Type: core.NodeHostName, Address: "localhost"},
},
},
{
- existing: []api.NodeAddress{},
- toAdd: []api.NodeAddress{
- {Type: api.NodeExternalIP, Address: "1.1.1.1"},
- {Type: api.NodeExternalIP, Address: "1.1.1.1"},
+ existing: []core.NodeAddress{},
+ toAdd: []core.NodeAddress{
+ {Type: core.NodeExternalIP, Address: "1.1.1.1"},
+ {Type: core.NodeExternalIP, Address: "1.1.1.1"},
},
- expected: []api.NodeAddress{
- {Type: api.NodeExternalIP, Address: "1.1.1.1"},
+ expected: []core.NodeAddress{
+ {Type: core.NodeExternalIP, Address: "1.1.1.1"},
},
},
{
- existing: []api.NodeAddress{
- {Type: api.NodeExternalIP, Address: "1.1.1.1"},
- {Type: api.NodeInternalIP, Address: "10.1.1.1"},
+ existing: []core.NodeAddress{
+ {Type: core.NodeExternalIP, Address: "1.1.1.1"},
+ {Type: core.NodeInternalIP, Address: "10.1.1.1"},
},
- toAdd: []api.NodeAddress{
- {Type: api.NodeExternalIP, Address: "1.1.1.1"},
- {Type: api.NodeHostName, Address: "localhost"},
+ toAdd: []core.NodeAddress{
+ {Type: core.NodeExternalIP, Address: "1.1.1.1"},
+ {Type: core.NodeHostName, Address: "localhost"},
},
- expected: []api.NodeAddress{
- {Type: api.NodeExternalIP, Address: "1.1.1.1"},
- {Type: api.NodeInternalIP, Address: "10.1.1.1"},
- {Type: api.NodeHostName, Address: "localhost"},
+ expected: []core.NodeAddress{
+ {Type: core.NodeExternalIP, Address: "1.1.1.1"},
+ {Type: core.NodeInternalIP, Address: "10.1.1.1"},
+ {Type: core.NodeHostName, Address: "localhost"},
},
},
}
@@ -143,30 +143,30 @@ func TestAddToNodeAddresses(t *testing.T) {
func TestGetAccessModesFromString(t *testing.T) {
modes := GetAccessModesFromString("ROX")
- if !containsAccessMode(modes, api.ReadOnlyMany) {
- t.Errorf("Expected mode %s, but got %+v", api.ReadOnlyMany, modes)
+ if !containsAccessMode(modes, core.ReadOnlyMany) {
+ t.Errorf("Expected mode %s, but got %+v", core.ReadOnlyMany, modes)
}
modes = GetAccessModesFromString("ROX,RWX")
- if !containsAccessMode(modes, api.ReadOnlyMany) {
- t.Errorf("Expected mode %s, but got %+v", api.ReadOnlyMany, modes)
+ if !containsAccessMode(modes, core.ReadOnlyMany) {
+ t.Errorf("Expected mode %s, but got %+v", core.ReadOnlyMany, modes)
}
- if !containsAccessMode(modes, api.ReadWriteMany) {
- t.Errorf("Expected mode %s, but got %+v", api.ReadWriteMany, modes)
+ if !containsAccessMode(modes, core.ReadWriteMany) {
+ t.Errorf("Expected mode %s, but got %+v", core.ReadWriteMany, modes)
}
modes = GetAccessModesFromString("RWO,ROX,RWX")
- if !containsAccessMode(modes, api.ReadOnlyMany) {
- t.Errorf("Expected mode %s, but got %+v", api.ReadOnlyMany, modes)
+ if !containsAccessMode(modes, core.ReadOnlyMany) {
+ t.Errorf("Expected mode %s, but got %+v", core.ReadOnlyMany, modes)
}
- if !containsAccessMode(modes, api.ReadWriteMany) {
- t.Errorf("Expected mode %s, but got %+v", api.ReadWriteMany, modes)
+ if !containsAccessMode(modes, core.ReadWriteMany) {
+ t.Errorf("Expected mode %s, but got %+v", core.ReadWriteMany, modes)
}
}
func TestRemoveDuplicateAccessModes(t *testing.T) {
- modes := []api.PersistentVolumeAccessMode{
- api.ReadWriteOnce, api.ReadOnlyMany, api.ReadOnlyMany, api.ReadOnlyMany,
+ modes := []core.PersistentVolumeAccessMode{
+ core.ReadWriteOnce, core.ReadOnlyMany, core.ReadOnlyMany, core.ReadOnlyMany,
}
modes = removeDuplicateAccessModes(modes)
if len(modes) != 2 {
@@ -175,9 +175,9 @@ func TestRemoveDuplicateAccessModes(t *testing.T) {
}
func TestNodeSelectorRequirementsAsSelector(t *testing.T) {
- matchExpressions := []api.NodeSelectorRequirement{{
+ matchExpressions := []core.NodeSelectorRequirement{{
Key: "foo",
- Operator: api.NodeSelectorOpIn,
+ Operator: core.NodeSelectorOpIn,
Values: []string{"bar", "baz"},
}}
mustParse := func(s string) labels.Selector {
@@ -188,36 +188,36 @@ func TestNodeSelectorRequirementsAsSelector(t *testing.T) {
return out
}
tc := []struct {
- in []api.NodeSelectorRequirement
+ in []core.NodeSelectorRequirement
out labels.Selector
expectErr bool
}{
{in: nil, out: labels.Nothing()},
- {in: []api.NodeSelectorRequirement{}, out: labels.Nothing()},
+ {in: []core.NodeSelectorRequirement{}, out: labels.Nothing()},
{
in: matchExpressions,
out: mustParse("foo in (baz,bar)"),
},
{
- in: []api.NodeSelectorRequirement{{
+ in: []core.NodeSelectorRequirement{{
Key: "foo",
- Operator: api.NodeSelectorOpExists,
+ Operator: core.NodeSelectorOpExists,
Values: []string{"bar", "baz"},
}},
expectErr: true,
},
{
- in: []api.NodeSelectorRequirement{{
+ in: []core.NodeSelectorRequirement{{
Key: "foo",
- Operator: api.NodeSelectorOpGt,
+ Operator: core.NodeSelectorOpGt,
Values: []string{"1"},
}},
out: mustParse("foo>1"),
},
{
- in: []api.NodeSelectorRequirement{{
+ in: []core.NodeSelectorRequirement{{
Key: "bar",
- Operator: api.NodeSelectorOpLt,
+ Operator: core.NodeSelectorOpLt,
Values: []string{"7"},
}},
out: mustParse("bar<7"),
@@ -241,7 +241,7 @@ func TestNodeSelectorRequirementsAsSelector(t *testing.T) {
func TestSysctlsFromPodAnnotation(t *testing.T) {
type Test struct {
annotation string
- expectValue []api.Sysctl
+ expectValue []core.Sysctl
expectErr bool
}
for i, test := range []Test{
@@ -259,11 +259,11 @@ func TestSysctlsFromPodAnnotation(t *testing.T) {
},
{
annotation: "foo.bar=",
- expectValue: []api.Sysctl{{Name: "foo.bar", Value: ""}},
+ expectValue: []core.Sysctl{{Name: "foo.bar", Value: ""}},
},
{
annotation: "foo.bar=42",
- expectValue: []api.Sysctl{{Name: "foo.bar", Value: "42"}},
+ expectValue: []core.Sysctl{{Name: "foo.bar", Value: "42"}},
},
{
annotation: "foo.bar=42,",
@@ -271,7 +271,7 @@ func TestSysctlsFromPodAnnotation(t *testing.T) {
},
{
annotation: "foo.bar=42,abc.def=1",
- expectValue: []api.Sysctl{{Name: "foo.bar", Value: "42"}, {Name: "abc.def", Value: "1"}},
+ expectValue: []core.Sysctl{{Name: "foo.bar", Value: "42"}, {Name: "abc.def", Value: "1"}},
},
} {
sysctls, err := SysctlsFromPodAnnotation(test.annotation)
@@ -301,7 +301,7 @@ func TestGetNodeAffinityFromAnnotations(t *testing.T) {
},
{
annotations: map[string]string{
- api.AlphaStorageNodeAffinityAnnotation: `{
+ core.AlphaStorageNodeAffinityAnnotation: `{
"requiredDuringSchedulingIgnoredDuringExecution": {
"nodeSelectorTerms": [
{ "matchExpressions": [
@@ -321,7 +321,7 @@ func TestGetNodeAffinityFromAnnotations(t *testing.T) {
},
{
annotations: map[string]string{
- api.AlphaStorageNodeAffinityAnnotation: `[{
+ core.AlphaStorageNodeAffinityAnnotation: `[{
"requiredDuringSchedulingIgnoredDuringExecution": {
"nodeSelectorTerms": [
{ "matchExpressions": [
@@ -341,7 +341,7 @@ func TestGetNodeAffinityFromAnnotations(t *testing.T) {
},
{
annotations: map[string]string{
- api.AlphaStorageNodeAffinityAnnotation: `{
+ core.AlphaStorageNodeAffinityAnnotation: `{
"requiredDuringSchedulingIgnoredDuringExecution": {
"nodeSelectorTerms":
"matchExpressions": [
@@ -374,23 +374,23 @@ func TestGetNodeAffinityFromAnnotations(t *testing.T) {
func TestIsHugePageResourceName(t *testing.T) {
testCases := []struct {
- name api.ResourceName
+ name core.ResourceName
result bool
}{
{
- name: api.ResourceName("hugepages-2Mi"),
+ name: core.ResourceName("hugepages-2Mi"),
result: true,
},
{
- name: api.ResourceName("hugepages-1Gi"),
+ name: core.ResourceName("hugepages-1Gi"),
result: true,
},
{
- name: api.ResourceName("cpu"),
+ name: core.ResourceName("cpu"),
result: false,
},
{
- name: api.ResourceName("memory"),
+ name: core.ResourceName("memory"),
result: false,
},
}
@@ -404,20 +404,20 @@ func TestIsHugePageResourceName(t *testing.T) {
func TestHugePageResourceName(t *testing.T) {
testCases := []struct {
pageSize resource.Quantity
- name api.ResourceName
+ name core.ResourceName
}{
{
pageSize: resource.MustParse("2Mi"),
- name: api.ResourceName("hugepages-2Mi"),
+ name: core.ResourceName("hugepages-2Mi"),
},
{
pageSize: resource.MustParse("1Gi"),
- name: api.ResourceName("hugepages-1Gi"),
+ name: core.ResourceName("hugepages-1Gi"),
},
{
// verify we do not regress our canonical representation
pageSize: *resource.NewQuantity(int64(2097152), resource.BinarySI),
- name: api.ResourceName("hugepages-2Mi"),
+ name: core.ResourceName("hugepages-2Mi"),
},
}
for _, testCase := range testCases {
@@ -429,22 +429,22 @@ func TestHugePageResourceName(t *testing.T) {
func TestHugePageSizeFromResourceName(t *testing.T) {
testCases := []struct {
- name api.ResourceName
+ name core.ResourceName
expectErr bool
pageSize resource.Quantity
}{
{
- name: api.ResourceName("hugepages-2Mi"),
+ name: core.ResourceName("hugepages-2Mi"),
pageSize: resource.MustParse("2Mi"),
expectErr: false,
},
{
- name: api.ResourceName("hugepages-1Gi"),
+ name: core.ResourceName("hugepages-1Gi"),
pageSize: resource.MustParse("1Gi"),
expectErr: false,
},
{
- name: api.ResourceName("hugepages-bad"),
+ name: core.ResourceName("hugepages-bad"),
expectErr: true,
},
}
@@ -462,19 +462,19 @@ func TestHugePageSizeFromResourceName(t *testing.T) {
func TestIsOvercommitAllowed(t *testing.T) {
testCases := []struct {
- name api.ResourceName
+ name core.ResourceName
allowed bool
}{
{
- name: api.ResourceCPU,
+ name: core.ResourceCPU,
allowed: true,
},
{
- name: api.ResourceMemory,
+ name: core.ResourceMemory,
allowed: true,
},
{
- name: api.ResourceNvidiaGPU,
+ name: core.ResourceNvidiaGPU,
allowed: false,
},
{
diff --git a/pkg/api/helper/qos/BUILD b/pkg/apis/core/helper/qos/BUILD
similarity index 78%
rename from pkg/api/helper/qos/BUILD
rename to pkg/apis/core/helper/qos/BUILD
index b56b19db17..a029fdb5b8 100644
--- a/pkg/api/helper/qos/BUILD
+++ b/pkg/apis/core/helper/qos/BUILD
@@ -8,10 +8,10 @@ load(
go_library(
name = "go_default_library",
srcs = ["qos.go"],
- importpath = "k8s.io/kubernetes/pkg/api/helper/qos",
+ importpath = "k8s.io/kubernetes/pkg/apis/core/helper/qos",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/helper:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
],
diff --git a/pkg/api/helper/qos/qos.go b/pkg/apis/core/helper/qos/qos.go
similarity index 82%
rename from pkg/api/helper/qos/qos.go
rename to pkg/apis/core/helper/qos/qos.go
index cc58bde0c3..18414322c8 100644
--- a/pkg/api/helper/qos/qos.go
+++ b/pkg/apis/core/helper/qos/qos.go
@@ -21,12 +21,12 @@ package qos
import (
"k8s.io/apimachinery/pkg/api/resource"
"k8s.io/apimachinery/pkg/util/sets"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/helper"
+ "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
)
-func isSupportedQoSComputeResource(name api.ResourceName) bool {
- supportedQoSComputeResources := sets.NewString(string(api.ResourceCPU), string(api.ResourceMemory))
+func isSupportedQoSComputeResource(name core.ResourceName) bool {
+ supportedQoSComputeResources := sets.NewString(string(core.ResourceCPU), string(core.ResourceMemory))
return supportedQoSComputeResources.Has(string(name)) || helper.IsHugePageResourceName(name)
}
@@ -34,9 +34,9 @@ func isSupportedQoSComputeResource(name api.ResourceName) bool {
// A pod is besteffort if none of its containers have specified any requests or limits.
// A pod is guaranteed only when requests and limits are specified for all the containers and they are equal.
// A pod is burstable if limits and requests do not match across all containers.
-func GetPodQOS(pod *api.Pod) api.PodQOSClass {
- requests := api.ResourceList{}
- limits := api.ResourceList{}
+func GetPodQOS(pod *core.Pod) core.PodQOSClass {
+ requests := core.ResourceList{}
+ limits := core.ResourceList{}
zeroQuantity := resource.MustParse("0")
isGuaranteed := true
for _, container := range pod.Spec.Containers {
@@ -73,12 +73,12 @@ func GetPodQOS(pod *api.Pod) api.PodQOSClass {
}
}
- if !qosLimitsFound.HasAll(string(api.ResourceMemory), string(api.ResourceCPU)) {
+ if !qosLimitsFound.HasAll(string(core.ResourceMemory), string(core.ResourceCPU)) {
isGuaranteed = false
}
}
if len(requests) == 0 && len(limits) == 0 {
- return api.PodQOSBestEffort
+ return core.PodQOSBestEffort
}
// Check is requests match limits for all resources.
if isGuaranteed {
@@ -91,7 +91,7 @@ func GetPodQOS(pod *api.Pod) api.PodQOSClass {
}
if isGuaranteed &&
len(requests) == len(limits) {
- return api.PodQOSGuaranteed
+ return core.PodQOSGuaranteed
}
- return api.PodQOSBurstable
+ return core.PodQOSBurstable
}
diff --git a/pkg/api/install/BUILD b/pkg/apis/core/install/BUILD
similarity index 83%
rename from pkg/api/install/BUILD
rename to pkg/apis/core/install/BUILD
index 0288e291db..9ed882df99 100644
--- a/pkg/api/install/BUILD
+++ b/pkg/apis/core/install/BUILD
@@ -9,11 +9,11 @@ load(
go_library(
name = "go_default_library",
srcs = ["install.go"],
- importpath = "k8s.io/kubernetes/pkg/api/install",
+ importpath = "k8s.io/kubernetes/pkg/apis/core/install",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
- "//pkg/api/v1:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apimachinery/announced:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apimachinery/registered:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
@@ -24,11 +24,11 @@ go_library(
go_test(
name = "go_default_test",
srcs = ["install_test.go"],
- importpath = "k8s.io/kubernetes/pkg/api/install",
+ importpath = "k8s.io/kubernetes/pkg/apis/core/install",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
diff --git a/pkg/api/install/OWNERS b/pkg/apis/core/install/OWNERS
similarity index 100%
rename from pkg/api/install/OWNERS
rename to pkg/apis/core/install/OWNERS
diff --git a/pkg/api/install/install.go b/pkg/apis/core/install/install.go
similarity index 92%
rename from pkg/api/install/install.go
rename to pkg/apis/core/install/install.go
index 5822eb8200..cae514ec7b 100644
--- a/pkg/api/install/install.go
+++ b/pkg/apis/core/install/install.go
@@ -23,9 +23,9 @@ import (
"k8s.io/apimachinery/pkg/apimachinery/registered"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/sets"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
- "k8s.io/kubernetes/pkg/api/v1"
+ "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/v1"
)
func init() {
@@ -36,9 +36,9 @@ func init() {
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
if err := announced.NewGroupMetaFactory(
&announced.GroupMetaFactoryArgs{
- GroupName: api.GroupName,
+ GroupName: core.GroupName,
VersionPreferenceOrder: []string{v1.SchemeGroupVersion.Version},
- AddInternalObjectsToScheme: api.AddToScheme,
+ AddInternalObjectsToScheme: core.AddToScheme,
RootScopedKinds: sets.NewString(
"Node",
"Namespace",
diff --git a/pkg/api/install/install_test.go b/pkg/apis/core/install/install_test.go
similarity index 99%
rename from pkg/api/install/install_test.go
rename to pkg/apis/core/install/install_test.go
index 51ec935c4b..b580c56c4f 100644
--- a/pkg/api/install/install_test.go
+++ b/pkg/apis/core/install/install_test.go
@@ -25,8 +25,8 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
- internal "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ internal "k8s.io/kubernetes/pkg/apis/core"
)
func TestResourceVersioner(t *testing.T) {
diff --git a/pkg/api/json.go b/pkg/apis/core/json.go
similarity index 98%
rename from pkg/api/json.go
rename to pkg/apis/core/json.go
index 3a6e04c182..937cd056c0 100644
--- a/pkg/api/json.go
+++ b/pkg/apis/core/json.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-package api
+package core
import "encoding/json"
diff --git a/pkg/api/objectreference.go b/pkg/apis/core/objectreference.go
similarity index 98%
rename from pkg/api/objectreference.go
rename to pkg/apis/core/objectreference.go
index b36ecab27f..55b27f30b6 100644
--- a/pkg/api/objectreference.go
+++ b/pkg/apis/core/objectreference.go
@@ -17,7 +17,7 @@ limitations under the License.
//TODO: consider making these methods functions, because we don't want helper
//functions in the k8s.io/api repo.
-package api
+package core
import (
"k8s.io/apimachinery/pkg/runtime/schema"
diff --git a/pkg/api/register.go b/pkg/apis/core/register.go
similarity index 99%
rename from pkg/api/register.go
rename to pkg/apis/core/register.go
index 8029a9571a..2784cbe157 100644
--- a/pkg/api/register.go
+++ b/pkg/apis/core/register.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-package api
+package core
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
diff --git a/pkg/api/resource.go b/pkg/apis/core/resource.go
similarity index 99%
rename from pkg/api/resource.go
rename to pkg/apis/core/resource.go
index ce1747d8e6..1910cd921d 100644
--- a/pkg/api/resource.go
+++ b/pkg/apis/core/resource.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-package api
+package core
import (
"k8s.io/apimachinery/pkg/api/resource"
diff --git a/pkg/api/taint.go b/pkg/apis/core/taint.go
similarity index 98%
rename from pkg/api/taint.go
rename to pkg/apis/core/taint.go
index 173e4e6016..ae1feb74d7 100644
--- a/pkg/api/taint.go
+++ b/pkg/apis/core/taint.go
@@ -17,7 +17,7 @@ limitations under the License.
//TODO: consider making these methods functions, because we don't want helper
//functions in the k8s.io/api repo.
-package api
+package core
import "fmt"
diff --git a/pkg/api/taint_test.go b/pkg/apis/core/taint_test.go
similarity index 99%
rename from pkg/api/taint_test.go
rename to pkg/apis/core/taint_test.go
index a52582b354..baa9404e08 100644
--- a/pkg/api/taint_test.go
+++ b/pkg/apis/core/taint_test.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-package api
+package core
import "testing"
diff --git a/pkg/api/toleration.go b/pkg/apis/core/toleration.go
similarity index 98%
rename from pkg/api/toleration.go
rename to pkg/apis/core/toleration.go
index edb73b74e1..1dfbc9f1bb 100644
--- a/pkg/api/toleration.go
+++ b/pkg/apis/core/toleration.go
@@ -17,7 +17,7 @@ limitations under the License.
//TODO: consider making these methods functions, because we don't want helper
//functions in the k8s.io/api repo.
-package api
+package core
// MatchToleration checks if the toleration matches tolerationToMatch. Tolerations are unique by
,
// if the two tolerations have same combination, regard as they match.
diff --git a/pkg/api/types.go b/pkg/apis/core/types.go
similarity index 99%
rename from pkg/api/types.go
rename to pkg/apis/core/types.go
index d940802785..f861925cc7 100644
--- a/pkg/api/types.go
+++ b/pkg/apis/core/types.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-package api
+package core
import (
"k8s.io/apimachinery/pkg/api/resource"
@@ -404,7 +404,7 @@ type PersistentVolumeClaimVolumeSource struct {
const (
// BetaStorageClassAnnotation represents the beta/previous StorageClass annotation.
- // It's currently still used and will be held for backwards compatibility
+ // It's deprecated and will be removed in a future release. (#51440)
BetaStorageClassAnnotation = "volume.beta.kubernetes.io/storage-class"
// MountOptionAnnotation defines mount option annotation used in PVs
@@ -2725,8 +2725,8 @@ type ReplicationControllerCondition struct {
}
// +genclient
-// +genclient:method=GetScale,verb=get,subresource=scale,result=k8s.io/kubernetes/pkg/apis/extensions.Scale
-// +genclient:method=UpdateScale,verb=update,subresource=scale,input=k8s.io/kubernetes/pkg/apis/extensions.Scale,result=k8s.io/kubernetes/pkg/apis/extensions.Scale
+// +genclient:method=GetScale,verb=get,subresource=scale,result=k8s.io/kubernetes/pkg/apis/autoscaling.Scale
+// +genclient:method=UpdateScale,verb=update,subresource=scale,input=k8s.io/kubernetes/pkg/apis/autoscaling.Scale,result=k8s.io/kubernetes/pkg/apis/autoscaling.Scale
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ReplicationController represents the configuration of a replication controller.
@@ -4354,5 +4354,5 @@ const (
// corresponding to every RequiredDuringScheduling affinity rule.
// When the --hard-pod-affinity-weight scheduler flag is not specified,
// DefaultHardPodAffinityWeight defines the weight of the implicit PreferredDuringScheduling affinity rule.
- DefaultHardPodAffinitySymmetricWeight int = 1
+ DefaultHardPodAffinitySymmetricWeight int32 = 1
)
diff --git a/pkg/api/v1/BUILD b/pkg/apis/core/v1/BUILD
similarity index 78%
rename from pkg/api/v1/BUILD
rename to pkg/apis/core/v1/BUILD
index 8b3b00eb99..9c49ad4c0e 100644
--- a/pkg/api/v1/BUILD
+++ b/pkg/apis/core/v1/BUILD
@@ -1,10 +1,4 @@
-package(default_visibility = ["//visibility:public"])
-
-load(
- "@io_bazel_rules_go//go:def.bzl",
- "go_library",
- "go_test",
-)
+load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
go_library(
name = "go_default_library",
@@ -16,9 +10,10 @@ go_library(
"zz_generated.conversion.go",
"zz_generated.defaults.go",
],
- importpath = "k8s.io/kubernetes/pkg/api/v1",
+ importpath = "k8s.io/kubernetes/pkg/apis/core/v1",
+ visibility = ["//visibility:public"],
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/util/parsers:go_default_library",
"//pkg/util/pointer:go_default_library",
@@ -40,13 +35,13 @@ go_test(
"conversion_test.go",
"defaults_test.go",
],
- importpath = "k8s.io/kubernetes/pkg/api/v1_test",
+ importpath = "k8s.io/kubernetes/pkg/apis/core/v1_test",
deps = [
":go_default_library",
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
- "//pkg/api/testing:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/fuzzer:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/util/pointer:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
@@ -54,6 +49,7 @@ go_test(
"//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/testing/fuzzer:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/fuzzer:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library",
@@ -72,13 +68,9 @@ filegroup(
name = "all-srcs",
srcs = [
":package-srcs",
- "//pkg/api/v1/endpoints:all-srcs",
- "//pkg/api/v1/helper:all-srcs",
- "//pkg/api/v1/node:all-srcs",
- "//pkg/api/v1/pod:all-srcs",
- "//pkg/api/v1/resource:all-srcs",
- "//pkg/api/v1/service:all-srcs",
- "//pkg/api/v1/validation:all-srcs",
+ "//pkg/apis/core/v1/helper:all-srcs",
+ "//pkg/apis/core/v1/validation:all-srcs",
],
tags = ["automanaged"],
+ visibility = ["//visibility:public"],
)
diff --git a/pkg/apis/core/v1/OWNERS b/pkg/apis/core/v1/OWNERS
new file mode 100755
index 0000000000..c627c33f87
--- /dev/null
+++ b/pkg/apis/core/v1/OWNERS
@@ -0,0 +1,39 @@
+reviewers:
+- thockin
+- lavalamp
+- smarterclayton
+- wojtek-t
+- deads2k
+- yujuhong
+- brendandburns
+- derekwaynecarr
+- caesarxuchao
+- vishh
+- mikedanese
+- liggitt
+- nikhiljindal
+- gmarek
+- erictune
+- davidopp
+- pmorie
+- sttts
+- dchen1107
+- saad-ali
+- zmerlynn
+- luxas
+- janetkuo
+- justinsb
+- roberthbailey
+- ncdc
+- tallclair
+- eparis
+- timothysc
+- piosz
+- jsafrane
+- dims
+- errordeveloper
+- madhusudancs
+- krousey
+- jayunit100
+- rootfs
+- markturansky
diff --git a/pkg/api/v1/conversion.go b/pkg/apis/core/v1/conversion.go
similarity index 73%
rename from pkg/api/v1/conversion.go
rename to pkg/apis/core/v1/conversion.go
index c5b962a70c..2e650739db 100644
--- a/pkg/api/v1/conversion.go
+++ b/pkg/apis/core/v1/conversion.go
@@ -26,7 +26,7 @@ import (
"k8s.io/apimachinery/pkg/conversion"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
+ "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
)
@@ -38,79 +38,79 @@ func addFastPathConversionFuncs(scheme *runtime.Scheme) error {
switch a := objA.(type) {
case *v1.Pod:
switch b := objB.(type) {
- case *api.Pod:
- return true, Convert_v1_Pod_To_api_Pod(a, b, s)
+ case *core.Pod:
+ return true, Convert_v1_Pod_To_core_Pod(a, b, s)
}
- case *api.Pod:
+ case *core.Pod:
switch b := objB.(type) {
case *v1.Pod:
- return true, Convert_api_Pod_To_v1_Pod(a, b, s)
+ return true, Convert_core_Pod_To_v1_Pod(a, b, s)
}
case *v1.Event:
switch b := objB.(type) {
- case *api.Event:
- return true, Convert_v1_Event_To_api_Event(a, b, s)
+ case *core.Event:
+ return true, Convert_v1_Event_To_core_Event(a, b, s)
}
- case *api.Event:
+ case *core.Event:
switch b := objB.(type) {
case *v1.Event:
- return true, Convert_api_Event_To_v1_Event(a, b, s)
+ return true, Convert_core_Event_To_v1_Event(a, b, s)
}
case *v1.ReplicationController:
switch b := objB.(type) {
- case *api.ReplicationController:
- return true, Convert_v1_ReplicationController_To_api_ReplicationController(a, b, s)
+ case *core.ReplicationController:
+ return true, Convert_v1_ReplicationController_To_core_ReplicationController(a, b, s)
}
- case *api.ReplicationController:
+ case *core.ReplicationController:
switch b := objB.(type) {
case *v1.ReplicationController:
- return true, Convert_api_ReplicationController_To_v1_ReplicationController(a, b, s)
+ return true, Convert_core_ReplicationController_To_v1_ReplicationController(a, b, s)
}
case *v1.Node:
switch b := objB.(type) {
- case *api.Node:
- return true, Convert_v1_Node_To_api_Node(a, b, s)
+ case *core.Node:
+ return true, Convert_v1_Node_To_core_Node(a, b, s)
}
- case *api.Node:
+ case *core.Node:
switch b := objB.(type) {
case *v1.Node:
- return true, Convert_api_Node_To_v1_Node(a, b, s)
+ return true, Convert_core_Node_To_v1_Node(a, b, s)
}
case *v1.Namespace:
switch b := objB.(type) {
- case *api.Namespace:
- return true, Convert_v1_Namespace_To_api_Namespace(a, b, s)
+ case *core.Namespace:
+ return true, Convert_v1_Namespace_To_core_Namespace(a, b, s)
}
- case *api.Namespace:
+ case *core.Namespace:
switch b := objB.(type) {
case *v1.Namespace:
- return true, Convert_api_Namespace_To_v1_Namespace(a, b, s)
+ return true, Convert_core_Namespace_To_v1_Namespace(a, b, s)
}
case *v1.Service:
switch b := objB.(type) {
- case *api.Service:
- return true, Convert_v1_Service_To_api_Service(a, b, s)
+ case *core.Service:
+ return true, Convert_v1_Service_To_core_Service(a, b, s)
}
- case *api.Service:
+ case *core.Service:
switch b := objB.(type) {
case *v1.Service:
- return true, Convert_api_Service_To_v1_Service(a, b, s)
+ return true, Convert_core_Service_To_v1_Service(a, b, s)
}
case *v1.Endpoints:
switch b := objB.(type) {
- case *api.Endpoints:
- return true, Convert_v1_Endpoints_To_api_Endpoints(a, b, s)
+ case *core.Endpoints:
+ return true, Convert_v1_Endpoints_To_core_Endpoints(a, b, s)
}
- case *api.Endpoints:
+ case *core.Endpoints:
switch b := objB.(type) {
case *v1.Endpoints:
- return true, Convert_api_Endpoints_To_v1_Endpoints(a, b, s)
+ return true, Convert_core_Endpoints_To_v1_Endpoints(a, b, s)
}
case *metav1.WatchEvent:
@@ -132,16 +132,16 @@ func addFastPathConversionFuncs(scheme *runtime.Scheme) error {
func addConversionFuncs(scheme *runtime.Scheme) error {
// Add non-generated conversion functions
err := scheme.AddConversionFuncs(
- Convert_api_Pod_To_v1_Pod,
- Convert_api_PodSpec_To_v1_PodSpec,
- Convert_api_ReplicationControllerSpec_To_v1_ReplicationControllerSpec,
- Convert_api_ServiceSpec_To_v1_ServiceSpec,
- Convert_v1_Pod_To_api_Pod,
- Convert_v1_PodSpec_To_api_PodSpec,
- Convert_v1_ReplicationControllerSpec_To_api_ReplicationControllerSpec,
- Convert_v1_Secret_To_api_Secret,
- Convert_v1_ServiceSpec_To_api_ServiceSpec,
- Convert_v1_ResourceList_To_api_ResourceList,
+ Convert_core_Pod_To_v1_Pod,
+ Convert_core_PodSpec_To_v1_PodSpec,
+ Convert_core_ReplicationControllerSpec_To_v1_ReplicationControllerSpec,
+ Convert_core_ServiceSpec_To_v1_ServiceSpec,
+ Convert_v1_Pod_To_core_Pod,
+ Convert_v1_PodSpec_To_core_PodSpec,
+ Convert_v1_ReplicationControllerSpec_To_core_ReplicationControllerSpec,
+ Convert_v1_Secret_To_core_Secret,
+ Convert_v1_ServiceSpec_To_core_ServiceSpec,
+ Convert_v1_ResourceList_To_core_ResourceList,
Convert_v1_ReplicationController_to_extensions_ReplicaSet,
Convert_v1_ReplicationControllerSpec_to_extensions_ReplicaSetSpec,
Convert_v1_ReplicationControllerStatus_to_extensions_ReplicaSetStatus,
@@ -241,7 +241,7 @@ func Convert_v1_ReplicationControllerSpec_to_extensions_ReplicaSetSpec(in *v1.Re
metav1.Convert_map_to_unversioned_LabelSelector(&in.Selector, out.Selector, s)
}
if in.Template != nil {
- if err := Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(in.Template, &out.Template, s); err != nil {
+ if err := Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(in.Template, &out.Template, s); err != nil {
return err
}
}
@@ -257,7 +257,7 @@ func Convert_v1_ReplicationControllerStatus_to_extensions_ReplicaSetStatus(in *v
for _, cond := range in.Conditions {
out.Conditions = append(out.Conditions, extensions.ReplicaSetCondition{
Type: extensions.ReplicaSetConditionType(cond.Type),
- Status: api.ConditionStatus(cond.Status),
+ Status: core.ConditionStatus(cond.Status),
LastTransitionTime: cond.LastTransitionTime,
Reason: cond.Reason,
Message: cond.Message,
@@ -293,7 +293,7 @@ func Convert_extensions_ReplicaSetSpec_to_v1_ReplicationControllerSpec(in *exten
invalidErr = metav1.Convert_unversioned_LabelSelector_to_map(in.Selector, &out.Selector, s)
}
out.Template = new(v1.PodTemplateSpec)
- if err := Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, out.Template, s); err != nil {
+ if err := Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, out.Template, s); err != nil {
return err
}
return invalidErr
@@ -317,13 +317,13 @@ func Convert_extensions_ReplicaSetStatus_to_v1_ReplicationControllerStatus(in *e
return nil
}
-func Convert_api_ReplicationControllerSpec_To_v1_ReplicationControllerSpec(in *api.ReplicationControllerSpec, out *v1.ReplicationControllerSpec, s conversion.Scope) error {
+func Convert_core_ReplicationControllerSpec_To_v1_ReplicationControllerSpec(in *core.ReplicationControllerSpec, out *v1.ReplicationControllerSpec, s conversion.Scope) error {
out.Replicas = &in.Replicas
out.MinReadySeconds = in.MinReadySeconds
out.Selector = in.Selector
if in.Template != nil {
out.Template = new(v1.PodTemplateSpec)
- if err := Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(in.Template, out.Template, s); err != nil {
+ if err := Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(in.Template, out.Template, s); err != nil {
return err
}
} else {
@@ -332,15 +332,15 @@ func Convert_api_ReplicationControllerSpec_To_v1_ReplicationControllerSpec(in *a
return nil
}
-func Convert_v1_ReplicationControllerSpec_To_api_ReplicationControllerSpec(in *v1.ReplicationControllerSpec, out *api.ReplicationControllerSpec, s conversion.Scope) error {
+func Convert_v1_ReplicationControllerSpec_To_core_ReplicationControllerSpec(in *v1.ReplicationControllerSpec, out *core.ReplicationControllerSpec, s conversion.Scope) error {
if in.Replicas != nil {
out.Replicas = *in.Replicas
}
out.MinReadySeconds = in.MinReadySeconds
out.Selector = in.Selector
if in.Template != nil {
- out.Template = new(api.PodTemplateSpec)
- if err := Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(in.Template, out.Template, s); err != nil {
+ out.Template = new(core.PodTemplateSpec)
+ if err := Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(in.Template, out.Template, s); err != nil {
return err
}
} else {
@@ -349,16 +349,16 @@ func Convert_v1_ReplicationControllerSpec_To_api_ReplicationControllerSpec(in *v
return nil
}
-func Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(in *api.PodTemplateSpec, out *v1.PodTemplateSpec, s conversion.Scope) error {
- if err := autoConvert_api_PodTemplateSpec_To_v1_PodTemplateSpec(in, out, s); err != nil {
+func Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(in *core.PodTemplateSpec, out *v1.PodTemplateSpec, s conversion.Scope) error {
+ if err := autoConvert_core_PodTemplateSpec_To_v1_PodTemplateSpec(in, out, s); err != nil {
return err
}
return nil
}
-func Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(in *v1.PodTemplateSpec, out *api.PodTemplateSpec, s conversion.Scope) error {
- if err := autoConvert_v1_PodTemplateSpec_To_api_PodTemplateSpec(in, out, s); err != nil {
+func Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(in *v1.PodTemplateSpec, out *core.PodTemplateSpec, s conversion.Scope) error {
+ if err := autoConvert_v1_PodTemplateSpec_To_core_PodTemplateSpec(in, out, s); err != nil {
return err
}
@@ -367,8 +367,8 @@ func Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(in *v1.PodTemplateSpec, o
// The following two v1.PodSpec conversions are done here to support v1.ServiceAccount
// as an alias for ServiceAccountName.
-func Convert_api_PodSpec_To_v1_PodSpec(in *api.PodSpec, out *v1.PodSpec, s conversion.Scope) error {
- if err := autoConvert_api_PodSpec_To_v1_PodSpec(in, out, s); err != nil {
+func Convert_core_PodSpec_To_v1_PodSpec(in *core.PodSpec, out *v1.PodSpec, s conversion.Scope) error {
+ if err := autoConvert_core_PodSpec_To_v1_PodSpec(in, out, s); err != nil {
return err
}
@@ -386,8 +386,8 @@ func Convert_api_PodSpec_To_v1_PodSpec(in *api.PodSpec, out *v1.PodSpec, s conve
return nil
}
-func Convert_v1_PodSpec_To_api_PodSpec(in *v1.PodSpec, out *api.PodSpec, s conversion.Scope) error {
- if err := autoConvert_v1_PodSpec_To_api_PodSpec(in, out, s); err != nil {
+func Convert_v1_PodSpec_To_core_PodSpec(in *v1.PodSpec, out *core.PodSpec, s conversion.Scope) error {
+ if err := autoConvert_v1_PodSpec_To_core_PodSpec(in, out, s); err != nil {
return err
}
@@ -400,7 +400,7 @@ func Convert_v1_PodSpec_To_api_PodSpec(in *v1.PodSpec, out *api.PodSpec, s conve
// the host namespace fields have to be handled specially for backward compatibility
// with v1.0.0
if out.SecurityContext == nil {
- out.SecurityContext = new(api.PodSecurityContext)
+ out.SecurityContext = new(core.PodSecurityContext)
}
out.SecurityContext.HostNetwork = in.HostNetwork
out.SecurityContext.HostPID = in.HostPID
@@ -409,8 +409,8 @@ func Convert_v1_PodSpec_To_api_PodSpec(in *v1.PodSpec, out *api.PodSpec, s conve
return nil
}
-func Convert_api_Pod_To_v1_Pod(in *api.Pod, out *v1.Pod, s conversion.Scope) error {
- if err := autoConvert_api_Pod_To_v1_Pod(in, out, s); err != nil {
+func Convert_core_Pod_To_v1_Pod(in *core.Pod, out *v1.Pod, s conversion.Scope) error {
+ if err := autoConvert_core_Pod_To_v1_Pod(in, out, s); err != nil {
return err
}
@@ -431,8 +431,8 @@ func Convert_api_Pod_To_v1_Pod(in *api.Pod, out *v1.Pod, s conversion.Scope) err
return nil
}
-func Convert_v1_Secret_To_api_Secret(in *v1.Secret, out *api.Secret, s conversion.Scope) error {
- if err := autoConvert_v1_Secret_To_api_Secret(in, out, s); err != nil {
+func Convert_v1_Secret_To_core_Secret(in *v1.Secret, out *core.Secret, s conversion.Scope) error {
+ if err := autoConvert_v1_Secret_To_core_Secret(in, out, s); err != nil {
return err
}
@@ -448,10 +448,10 @@ func Convert_v1_Secret_To_api_Secret(in *v1.Secret, out *api.Secret, s conversio
return nil
}
-func Convert_api_SecurityContext_To_v1_SecurityContext(in *api.SecurityContext, out *v1.SecurityContext, s conversion.Scope) error {
+func Convert_core_SecurityContext_To_v1_SecurityContext(in *core.SecurityContext, out *v1.SecurityContext, s conversion.Scope) error {
if in.Capabilities != nil {
out.Capabilities = new(v1.Capabilities)
- if err := Convert_api_Capabilities_To_v1_Capabilities(in.Capabilities, out.Capabilities, s); err != nil {
+ if err := Convert_core_Capabilities_To_v1_Capabilities(in.Capabilities, out.Capabilities, s); err != nil {
return err
}
} else {
@@ -460,7 +460,7 @@ func Convert_api_SecurityContext_To_v1_SecurityContext(in *api.SecurityContext,
out.Privileged = in.Privileged
if in.SELinuxOptions != nil {
out.SELinuxOptions = new(v1.SELinuxOptions)
- if err := Convert_api_SELinuxOptions_To_v1_SELinuxOptions(in.SELinuxOptions, out.SELinuxOptions, s); err != nil {
+ if err := Convert_core_SELinuxOptions_To_v1_SELinuxOptions(in.SELinuxOptions, out.SELinuxOptions, s); err != nil {
return err
}
} else {
@@ -473,11 +473,11 @@ func Convert_api_SecurityContext_To_v1_SecurityContext(in *api.SecurityContext,
return nil
}
-func Convert_api_PodSecurityContext_To_v1_PodSecurityContext(in *api.PodSecurityContext, out *v1.PodSecurityContext, s conversion.Scope) error {
+func Convert_core_PodSecurityContext_To_v1_PodSecurityContext(in *core.PodSecurityContext, out *v1.PodSecurityContext, s conversion.Scope) error {
out.SupplementalGroups = in.SupplementalGroups
if in.SELinuxOptions != nil {
out.SELinuxOptions = new(v1.SELinuxOptions)
- if err := Convert_api_SELinuxOptions_To_v1_SELinuxOptions(in.SELinuxOptions, out.SELinuxOptions, s); err != nil {
+ if err := Convert_core_SELinuxOptions_To_v1_SELinuxOptions(in.SELinuxOptions, out.SELinuxOptions, s); err != nil {
return err
}
} else {
@@ -489,11 +489,11 @@ func Convert_api_PodSecurityContext_To_v1_PodSecurityContext(in *api.PodSecurity
return nil
}
-func Convert_v1_PodSecurityContext_To_api_PodSecurityContext(in *v1.PodSecurityContext, out *api.PodSecurityContext, s conversion.Scope) error {
+func Convert_v1_PodSecurityContext_To_core_PodSecurityContext(in *v1.PodSecurityContext, out *core.PodSecurityContext, s conversion.Scope) error {
out.SupplementalGroups = in.SupplementalGroups
if in.SELinuxOptions != nil {
- out.SELinuxOptions = new(api.SELinuxOptions)
- if err := Convert_v1_SELinuxOptions_To_api_SELinuxOptions(in.SELinuxOptions, out.SELinuxOptions, s); err != nil {
+ out.SELinuxOptions = new(core.SELinuxOptions)
+ if err := Convert_v1_SELinuxOptions_To_core_SELinuxOptions(in.SELinuxOptions, out.SELinuxOptions, s); err != nil {
return err
}
} else {
@@ -506,12 +506,12 @@ func Convert_v1_PodSecurityContext_To_api_PodSecurityContext(in *v1.PodSecurityC
}
// +k8s:conversion-fn=copy-only
-func Convert_v1_ResourceList_To_api_ResourceList(in *v1.ResourceList, out *api.ResourceList, s conversion.Scope) error {
+func Convert_v1_ResourceList_To_core_ResourceList(in *v1.ResourceList, out *core.ResourceList, s conversion.Scope) error {
if *in == nil {
return nil
}
if *out == nil {
- *out = make(api.ResourceList, len(*in))
+ *out = make(core.ResourceList, len(*in))
}
for key, val := range *in {
// Moved to defaults
@@ -520,7 +520,7 @@ func Convert_v1_ResourceList_To_api_ResourceList(in *v1.ResourceList, out *api.R
// const milliScale = -3
// val.RoundUp(milliScale)
- (*out)[api.ResourceName(key)] = val
+ (*out)[core.ResourceName(key)] = val
}
return nil
}
diff --git a/pkg/api/v1/conversion_test.go b/pkg/apis/core/v1/conversion_test.go
similarity index 87%
rename from pkg/api/v1/conversion_test.go
rename to pkg/apis/core/v1/conversion_test.go
index a8022c280f..e6d2bbdc56 100644
--- a/pkg/api/v1/conversion_test.go
+++ b/pkg/apis/core/v1/conversion_test.go
@@ -29,13 +29,14 @@ import (
apiequality "k8s.io/apimachinery/pkg/api/equality"
"k8s.io/apimachinery/pkg/api/resource"
"k8s.io/apimachinery/pkg/api/testing/fuzzer"
+ metafuzzer "k8s.io/apimachinery/pkg/apis/meta/fuzzer"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/diff"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
- kapitesting "k8s.io/kubernetes/pkg/api/testing"
- k8s_api_v1 "k8s.io/kubernetes/pkg/api/v1"
+ "k8s.io/kubernetes/pkg/apis/core"
+ corefuzzer "k8s.io/kubernetes/pkg/apis/core/fuzzer"
+ corev1 "k8s.io/kubernetes/pkg/apis/core/v1"
"k8s.io/kubernetes/pkg/apis/extensions"
utilpointer "k8s.io/kubernetes/pkg/util/pointer"
@@ -59,7 +60,7 @@ func TestPodLogOptions(t *testing.T) {
TailLines: &tailLines,
LimitBytes: &limitBytes,
}
- unversionedLogOptions := &api.PodLogOptions{
+ unversionedLogOptions := &core.PodLogOptions{
Container: "mycontainer",
Follow: true,
Previous: true,
@@ -118,7 +119,7 @@ func TestPodLogOptions(t *testing.T) {
// query params -> unversioned
{
- convertedLogOptions := &api.PodLogOptions{}
+ convertedLogOptions := &core.PodLogOptions{}
err := codec.DecodeParameters(expectedParameters, v1.SchemeGroupVersion, convertedLogOptions)
if err != nil {
t.Fatal(err)
@@ -136,7 +137,7 @@ func TestPodSpecConversion(t *testing.T) {
// Test internal -> v1. Should have both alias (DeprecatedServiceAccount)
// and new field (ServiceAccountName).
- i := &api.PodSpec{
+ i := &core.PodSpec{
ServiceAccountName: name,
}
v := v1.PodSpec{}
@@ -164,13 +165,13 @@ func TestPodSpecConversion(t *testing.T) {
{ServiceAccountName: name, DeprecatedServiceAccount: other},
}
for k, v := range testCases {
- got := api.PodSpec{}
+ got := core.PodSpec{}
err := legacyscheme.Scheme.Convert(v, &got, nil)
if err != nil {
t.Fatalf("unexpected error for case %d: %v", k, err)
}
if got.ServiceAccountName != name {
- t.Fatalf("want api.ServiceAccountName %q, got %q", name, got.ServiceAccountName)
+ t.Fatalf("want core.ServiceAccountName %q, got %q", name, got.ServiceAccountName)
}
}
}
@@ -181,7 +182,7 @@ func TestResourceListConversion(t *testing.T) {
tests := []struct {
input v1.ResourceList
- expected api.ResourceList
+ expected core.ResourceList
}{
{ // No changes necessary.
input: v1.ResourceList{
@@ -189,10 +190,10 @@ func TestResourceListConversion(t *testing.T) {
v1.ResourceCPU: resource.MustParse("100m"),
v1.ResourceStorage: resource.MustParse("1G"),
},
- expected: api.ResourceList{
- api.ResourceMemory: resource.MustParse("30M"),
- api.ResourceCPU: resource.MustParse("100m"),
- api.ResourceStorage: resource.MustParse("1G"),
+ expected: core.ResourceList{
+ core.ResourceMemory: resource.MustParse("30M"),
+ core.ResourceCPU: resource.MustParse("100m"),
+ core.ResourceStorage: resource.MustParse("1G"),
},
},
{ // Nano-scale values should be rounded up to milli-scale.
@@ -200,9 +201,9 @@ func TestResourceListConversion(t *testing.T) {
v1.ResourceCPU: resource.MustParse("3.000023m"),
v1.ResourceMemory: resource.MustParse("500.000050m"),
},
- expected: api.ResourceList{
- api.ResourceCPU: resource.MustParse("4m"),
- api.ResourceMemory: resource.MustParse("501m"),
+ expected: core.ResourceList{
+ core.ResourceCPU: resource.MustParse("4m"),
+ core.ResourceMemory: resource.MustParse("501m"),
},
},
{ // Large values should still be accurate.
@@ -210,19 +211,19 @@ func TestResourceListConversion(t *testing.T) {
v1.ResourceCPU: *bigMilliQuantity.Copy(),
v1.ResourceStorage: *bigMilliQuantity.Copy(),
},
- expected: api.ResourceList{
- api.ResourceCPU: *bigMilliQuantity.Copy(),
- api.ResourceStorage: *bigMilliQuantity.Copy(),
+ expected: core.ResourceList{
+ core.ResourceCPU: *bigMilliQuantity.Copy(),
+ core.ResourceStorage: *bigMilliQuantity.Copy(),
},
},
}
for i, test := range tests {
- output := api.ResourceList{}
+ output := core.ResourceList{}
// defaulting is a separate step from conversion that is applied when reading from the API or from etcd.
// perform that step explicitly.
- k8s_api_v1.SetDefaults_ResourceList(&test.input)
+ corev1.SetDefaults_ResourceList(&test.input)
err := legacyscheme.Scheme.Convert(&test.input, &output, nil)
if err != nil {
@@ -280,7 +281,7 @@ func TestReplicationControllerConversion(t *testing.T) {
}
// Add some fuzzed RCs.
- apiObjectFuzzer := fuzzer.FuzzerFor(kapitesting.FuzzerFuncs, rand.NewSource(152), legacyscheme.Codecs)
+ apiObjectFuzzer := fuzzer.FuzzerFor(fuzzer.MergeFuzzerFuncs(metafuzzer.Funcs, corefuzzer.Funcs), rand.NewSource(152), legacyscheme.Codecs)
for i := 0; i < 100; i++ {
rc := &v1.ReplicationController{}
apiObjectFuzzer.Fuzz(rc)
@@ -306,14 +307,14 @@ func TestReplicationControllerConversion(t *testing.T) {
for _, in := range inputs {
rs := &extensions.ReplicaSet{}
// Use in.DeepCopy() to avoid sharing pointers with `in`.
- if err := k8s_api_v1.Convert_v1_ReplicationController_to_extensions_ReplicaSet(in.DeepCopy(), rs, nil); err != nil {
+ if err := corev1.Convert_v1_ReplicationController_to_extensions_ReplicaSet(in.DeepCopy(), rs, nil); err != nil {
t.Errorf("can't convert RC to RS: %v", err)
continue
}
// Round-trip RS before converting back to RC.
rs = roundTripRS(t, rs)
out := &v1.ReplicationController{}
- if err := k8s_api_v1.Convert_extensions_ReplicaSet_to_v1_ReplicationController(rs, out, nil); err != nil {
+ if err := corev1.Convert_extensions_ReplicaSet_to_v1_ReplicationController(rs, out, nil); err != nil {
t.Errorf("can't convert RS to RC: %v", err)
continue
}
diff --git a/pkg/api/v1/defaults.go b/pkg/apis/core/v1/defaults.go
similarity index 100%
rename from pkg/api/v1/defaults.go
rename to pkg/apis/core/v1/defaults.go
diff --git a/pkg/api/v1/defaults_test.go b/pkg/apis/core/v1/defaults_test.go
similarity index 99%
rename from pkg/api/v1/defaults_test.go
rename to pkg/apis/core/v1/defaults_test.go
index d8979eb97b..89984dc114 100644
--- a/pkg/api/v1/defaults_test.go
+++ b/pkg/apis/core/v1/defaults_test.go
@@ -27,14 +27,14 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/kubernetes/pkg/api/legacyscheme"
- k8s_api_v1 "k8s.io/kubernetes/pkg/api/v1"
+ corev1 "k8s.io/kubernetes/pkg/apis/core/v1"
// enforce that all types are installed
_ "k8s.io/kubernetes/pkg/api/testapi"
)
func roundTrip(t *testing.T, obj runtime.Object) runtime.Object {
- codec := legacyscheme.Codecs.LegacyCodec(v1.SchemeGroupVersion)
+ codec := legacyscheme.Codecs.LegacyCodec(corev1.SchemeGroupVersion)
data, err := runtime.Encode(codec, obj)
if err != nil {
t.Errorf("%v\n %#v", err, obj)
@@ -1129,7 +1129,7 @@ func TestSetMinimumScalePod(t *testing.T) {
pod := &v1.Pod{
Spec: s,
}
- k8s_api_v1.SetObjectDefaults_Pod(pod)
+ corev1.SetObjectDefaults_Pod(pod)
if expect := resource.MustParse("1m"); expect.Cmp(pod.Spec.Containers[0].Resources.Requests[v1.ResourceMemory]) != 0 {
t.Errorf("did not round resources: %#v", pod.Spec.Containers[0].Resources)
diff --git a/pkg/api/v1/doc.go b/pkg/apis/core/v1/doc.go
similarity index 71%
rename from pkg/api/v1/doc.go
rename to pkg/apis/core/v1/doc.go
index 0f1e0d495e..23f0e8ef76 100644
--- a/pkg/api/v1/doc.go
+++ b/pkg/apis/core/v1/doc.go
@@ -14,10 +14,10 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:conversion-gen=k8s.io/kubernetes/pkg/api
-// +k8s:conversion-gen-external-types=../../../vendor/k8s.io/api/core/v1
+// +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/core
+// +k8s:conversion-gen-external-types=../../../../vendor/k8s.io/api/core/v1
// +k8s:defaulter-gen=TypeMeta
-// +k8s:defaulter-gen-input=../../../vendor/k8s.io/api/core/v1
+// +k8s:defaulter-gen-input=../../../../vendor/k8s.io/api/core/v1
// Package v1 is the v1 version of the API.
-package v1 // import "k8s.io/kubernetes/pkg/api/v1"
+package v1 // import "k8s.io/kubernetes/pkg/apis/core/v1"
diff --git a/pkg/api/v1/helper/BUILD b/pkg/apis/core/v1/helper/BUILD
similarity index 85%
rename from pkg/api/v1/helper/BUILD
rename to pkg/apis/core/v1/helper/BUILD
index 297caed8d5..ea7e2ae974 100644
--- a/pkg/api/v1/helper/BUILD
+++ b/pkg/apis/core/v1/helper/BUILD
@@ -9,7 +9,7 @@ load(
go_test(
name = "go_default_test",
srcs = ["helpers_test.go"],
- importpath = "k8s.io/kubernetes/pkg/api/v1/helper",
+ importpath = "k8s.io/kubernetes/pkg/apis/core/v1/helper",
library = ":go_default_library",
deps = [
"//vendor/k8s.io/api/core/v1:go_default_library",
@@ -23,9 +23,9 @@ go_test(
go_library(
name = "go_default_library",
srcs = ["helpers.go"],
- importpath = "k8s.io/kubernetes/pkg/api/v1/helper",
+ importpath = "k8s.io/kubernetes/pkg/apis/core/v1/helper",
deps = [
- "//pkg/api/helper:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
@@ -45,7 +45,7 @@ filegroup(
name = "all-srcs",
srcs = [
":package-srcs",
- "//pkg/api/v1/helper/qos:all-srcs",
+ "//pkg/apis/core/v1/helper/qos:all-srcs",
],
tags = ["automanaged"],
)
diff --git a/pkg/api/v1/helper/helpers.go b/pkg/apis/core/v1/helper/helpers.go
similarity index 99%
rename from pkg/api/v1/helper/helpers.go
rename to pkg/apis/core/v1/helper/helpers.go
index 92cacf8d28..8563704c73 100644
--- a/pkg/api/v1/helper/helpers.go
+++ b/pkg/apis/core/v1/helper/helpers.go
@@ -26,7 +26,7 @@ import (
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/selection"
"k8s.io/apimachinery/pkg/util/sets"
- "k8s.io/kubernetes/pkg/api/helper"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
)
// IsExtendedResourceName returns true if the resource name is not in the
diff --git a/pkg/api/v1/helper/helpers_test.go b/pkg/apis/core/v1/helper/helpers_test.go
similarity index 100%
rename from pkg/api/v1/helper/helpers_test.go
rename to pkg/apis/core/v1/helper/helpers_test.go
diff --git a/pkg/api/v1/helper/qos/BUILD b/pkg/apis/core/v1/helper/qos/BUILD
similarity index 74%
rename from pkg/api/v1/helper/qos/BUILD
rename to pkg/apis/core/v1/helper/qos/BUILD
index b2bd4319d0..d29fcf09e9 100644
--- a/pkg/api/v1/helper/qos/BUILD
+++ b/pkg/apis/core/v1/helper/qos/BUILD
@@ -9,12 +9,12 @@ load(
go_test(
name = "go_default_test",
srcs = ["qos_test.go"],
- importpath = "k8s.io/kubernetes/pkg/api/v1/helper/qos",
+ importpath = "k8s.io/kubernetes/pkg/apis/core/v1/helper/qos",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/helper/qos:go_default_library",
- "//pkg/api/v1:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/helper/qos:go_default_library",
+ "//pkg/apis/core/v1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
@@ -24,9 +24,9 @@ go_test(
go_library(
name = "go_default_library",
srcs = ["qos.go"],
- importpath = "k8s.io/kubernetes/pkg/api/v1/helper/qos",
+ importpath = "k8s.io/kubernetes/pkg/apis/core/v1/helper/qos",
deps = [
- "//pkg/api/v1/helper:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
diff --git a/pkg/api/v1/helper/qos/qos.go b/pkg/apis/core/v1/helper/qos/qos.go
similarity index 98%
rename from pkg/api/v1/helper/qos/qos.go
rename to pkg/apis/core/v1/helper/qos/qos.go
index 2fc7f22856..5e9dbdd746 100644
--- a/pkg/api/v1/helper/qos/qos.go
+++ b/pkg/apis/core/v1/helper/qos/qos.go
@@ -20,7 +20,7 @@ import (
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
"k8s.io/apimachinery/pkg/util/sets"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
)
// QOSList is a set of (resource name, QoS class) pairs.
diff --git a/pkg/api/v1/helper/qos/qos_test.go b/pkg/apis/core/v1/helper/qos/qos_test.go
similarity index 94%
rename from pkg/api/v1/helper/qos/qos_test.go
rename to pkg/apis/core/v1/helper/qos/qos_test.go
index a48387c3de..7d14b519e7 100644
--- a/pkg/api/v1/helper/qos/qos_test.go
+++ b/pkg/apis/core/v1/helper/qos/qos_test.go
@@ -22,9 +22,9 @@ import (
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/helper/qos"
- k8sv1 "k8s.io/kubernetes/pkg/api/v1"
+ "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/helper/qos"
+ corev1 "k8s.io/kubernetes/pkg/apis/core/v1"
)
func TestGetPodQOS(t *testing.T) {
@@ -142,11 +142,11 @@ func TestGetPodQOS(t *testing.T) {
t.Errorf("[%d]: invalid qos pod %s, expected: %s, actual: %s", id, testCase.pod.Name, testCase.expected, actual)
}
- // Convert v1.Pod to api.Pod, and then check against `api.helper.GetPodQOS`.
- pod := api.Pod{}
- k8sv1.Convert_v1_Pod_To_api_Pod(testCase.pod, &pod, nil)
+ // Convert v1.Pod to core.Pod, and then check against `core.helper.GetPodQOS`.
+ pod := core.Pod{}
+ corev1.Convert_v1_Pod_To_core_Pod(testCase.pod, &pod, nil)
- if actual := qos.GetPodQOS(&pod); api.PodQOSClass(testCase.expected) != actual {
+ if actual := qos.GetPodQOS(&pod); core.PodQOSClass(testCase.expected) != actual {
t.Errorf("[%d]: conversion invalid qos pod %s, expected: %s, actual: %s", id, testCase.pod.Name, testCase.expected, actual)
}
}
diff --git a/pkg/api/v1/register.go b/pkg/apis/core/v1/register.go
similarity index 100%
rename from pkg/api/v1/register.go
rename to pkg/apis/core/v1/register.go
diff --git a/pkg/api/v1/validation/BUILD b/pkg/apis/core/v1/validation/BUILD
similarity index 83%
rename from pkg/api/v1/validation/BUILD
rename to pkg/apis/core/v1/validation/BUILD
index 00ef46513f..2a205f9809 100644
--- a/pkg/api/v1/validation/BUILD
+++ b/pkg/apis/core/v1/validation/BUILD
@@ -9,10 +9,10 @@ load(
go_library(
name = "go_default_library",
srcs = ["validation.go"],
- importpath = "k8s.io/kubernetes/pkg/api/v1/validation",
+ importpath = "k8s.io/kubernetes/pkg/apis/core/v1/validation",
deps = [
- "//pkg/api/helper:go_default_library",
- "//pkg/api/v1/helper:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
@@ -38,7 +38,7 @@ filegroup(
go_test(
name = "go_default_test",
srcs = ["validation_test.go"],
- importpath = "k8s.io/kubernetes/pkg/api/v1/validation",
+ importpath = "k8s.io/kubernetes/pkg/apis/core/v1/validation",
library = ":go_default_library",
deps = [
"//vendor/k8s.io/api/core/v1:go_default_library",
diff --git a/pkg/api/v1/validation/validation.go b/pkg/apis/core/v1/validation/validation.go
similarity index 98%
rename from pkg/api/v1/validation/validation.go
rename to pkg/apis/core/v1/validation/validation.go
index 109054f804..3f80c6090e 100644
--- a/pkg/api/v1/validation/validation.go
+++ b/pkg/apis/core/v1/validation/validation.go
@@ -27,8 +27,8 @@ import (
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/validation"
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api/helper"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
)
const isNegativeErrorMsg string = `must be greater than or equal to 0`
diff --git a/pkg/api/v1/validation/validation_test.go b/pkg/apis/core/v1/validation/validation_test.go
similarity index 100%
rename from pkg/api/v1/validation/validation_test.go
rename to pkg/apis/core/v1/validation/validation_test.go
diff --git a/pkg/apis/core/v1/zz_generated.conversion.go b/pkg/apis/core/v1/zz_generated.conversion.go
new file mode 100644
index 0000000000..22f7487db4
--- /dev/null
+++ b/pkg/apis/core/v1/zz_generated.conversion.go
@@ -0,0 +1,5430 @@
+// +build !ignore_autogenerated
+
+/*
+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.
+*/
+
+// This file was autogenerated by conversion-gen. Do not edit it manually!
+
+package v1
+
+import (
+ v1 "k8s.io/api/core/v1"
+ resource "k8s.io/apimachinery/pkg/api/resource"
+ meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ conversion "k8s.io/apimachinery/pkg/conversion"
+ runtime "k8s.io/apimachinery/pkg/runtime"
+ types "k8s.io/apimachinery/pkg/types"
+ core "k8s.io/kubernetes/pkg/apis/core"
+ unsafe "unsafe"
+)
+
+func init() {
+ localSchemeBuilder.Register(RegisterConversions)
+}
+
+// RegisterConversions adds conversion functions to the given scheme.
+// Public to allow building arbitrary schemes.
+func RegisterConversions(scheme *runtime.Scheme) error {
+ return scheme.AddGeneratedConversionFuncs(
+ Convert_v1_AWSElasticBlockStoreVolumeSource_To_core_AWSElasticBlockStoreVolumeSource,
+ Convert_core_AWSElasticBlockStoreVolumeSource_To_v1_AWSElasticBlockStoreVolumeSource,
+ Convert_v1_Affinity_To_core_Affinity,
+ Convert_core_Affinity_To_v1_Affinity,
+ Convert_v1_AttachedVolume_To_core_AttachedVolume,
+ Convert_core_AttachedVolume_To_v1_AttachedVolume,
+ Convert_v1_AvoidPods_To_core_AvoidPods,
+ Convert_core_AvoidPods_To_v1_AvoidPods,
+ Convert_v1_AzureDiskVolumeSource_To_core_AzureDiskVolumeSource,
+ Convert_core_AzureDiskVolumeSource_To_v1_AzureDiskVolumeSource,
+ Convert_v1_AzureFilePersistentVolumeSource_To_core_AzureFilePersistentVolumeSource,
+ Convert_core_AzureFilePersistentVolumeSource_To_v1_AzureFilePersistentVolumeSource,
+ Convert_v1_AzureFileVolumeSource_To_core_AzureFileVolumeSource,
+ Convert_core_AzureFileVolumeSource_To_v1_AzureFileVolumeSource,
+ Convert_v1_Binding_To_core_Binding,
+ Convert_core_Binding_To_v1_Binding,
+ Convert_v1_Capabilities_To_core_Capabilities,
+ Convert_core_Capabilities_To_v1_Capabilities,
+ Convert_v1_CephFSPersistentVolumeSource_To_core_CephFSPersistentVolumeSource,
+ Convert_core_CephFSPersistentVolumeSource_To_v1_CephFSPersistentVolumeSource,
+ Convert_v1_CephFSVolumeSource_To_core_CephFSVolumeSource,
+ Convert_core_CephFSVolumeSource_To_v1_CephFSVolumeSource,
+ Convert_v1_CinderVolumeSource_To_core_CinderVolumeSource,
+ Convert_core_CinderVolumeSource_To_v1_CinderVolumeSource,
+ Convert_v1_ClientIPConfig_To_core_ClientIPConfig,
+ Convert_core_ClientIPConfig_To_v1_ClientIPConfig,
+ Convert_v1_ComponentCondition_To_core_ComponentCondition,
+ Convert_core_ComponentCondition_To_v1_ComponentCondition,
+ Convert_v1_ComponentStatus_To_core_ComponentStatus,
+ Convert_core_ComponentStatus_To_v1_ComponentStatus,
+ Convert_v1_ComponentStatusList_To_core_ComponentStatusList,
+ Convert_core_ComponentStatusList_To_v1_ComponentStatusList,
+ Convert_v1_ConfigMap_To_core_ConfigMap,
+ Convert_core_ConfigMap_To_v1_ConfigMap,
+ Convert_v1_ConfigMapEnvSource_To_core_ConfigMapEnvSource,
+ Convert_core_ConfigMapEnvSource_To_v1_ConfigMapEnvSource,
+ Convert_v1_ConfigMapKeySelector_To_core_ConfigMapKeySelector,
+ Convert_core_ConfigMapKeySelector_To_v1_ConfigMapKeySelector,
+ Convert_v1_ConfigMapList_To_core_ConfigMapList,
+ Convert_core_ConfigMapList_To_v1_ConfigMapList,
+ Convert_v1_ConfigMapProjection_To_core_ConfigMapProjection,
+ Convert_core_ConfigMapProjection_To_v1_ConfigMapProjection,
+ Convert_v1_ConfigMapVolumeSource_To_core_ConfigMapVolumeSource,
+ Convert_core_ConfigMapVolumeSource_To_v1_ConfigMapVolumeSource,
+ Convert_v1_Container_To_core_Container,
+ Convert_core_Container_To_v1_Container,
+ Convert_v1_ContainerImage_To_core_ContainerImage,
+ Convert_core_ContainerImage_To_v1_ContainerImage,
+ Convert_v1_ContainerPort_To_core_ContainerPort,
+ Convert_core_ContainerPort_To_v1_ContainerPort,
+ Convert_v1_ContainerState_To_core_ContainerState,
+ Convert_core_ContainerState_To_v1_ContainerState,
+ Convert_v1_ContainerStateRunning_To_core_ContainerStateRunning,
+ Convert_core_ContainerStateRunning_To_v1_ContainerStateRunning,
+ Convert_v1_ContainerStateTerminated_To_core_ContainerStateTerminated,
+ Convert_core_ContainerStateTerminated_To_v1_ContainerStateTerminated,
+ Convert_v1_ContainerStateWaiting_To_core_ContainerStateWaiting,
+ Convert_core_ContainerStateWaiting_To_v1_ContainerStateWaiting,
+ Convert_v1_ContainerStatus_To_core_ContainerStatus,
+ Convert_core_ContainerStatus_To_v1_ContainerStatus,
+ Convert_v1_DaemonEndpoint_To_core_DaemonEndpoint,
+ Convert_core_DaemonEndpoint_To_v1_DaemonEndpoint,
+ Convert_v1_DeleteOptions_To_core_DeleteOptions,
+ Convert_core_DeleteOptions_To_v1_DeleteOptions,
+ Convert_v1_DownwardAPIProjection_To_core_DownwardAPIProjection,
+ Convert_core_DownwardAPIProjection_To_v1_DownwardAPIProjection,
+ Convert_v1_DownwardAPIVolumeFile_To_core_DownwardAPIVolumeFile,
+ Convert_core_DownwardAPIVolumeFile_To_v1_DownwardAPIVolumeFile,
+ Convert_v1_DownwardAPIVolumeSource_To_core_DownwardAPIVolumeSource,
+ Convert_core_DownwardAPIVolumeSource_To_v1_DownwardAPIVolumeSource,
+ Convert_v1_EmptyDirVolumeSource_To_core_EmptyDirVolumeSource,
+ Convert_core_EmptyDirVolumeSource_To_v1_EmptyDirVolumeSource,
+ Convert_v1_EndpointAddress_To_core_EndpointAddress,
+ Convert_core_EndpointAddress_To_v1_EndpointAddress,
+ Convert_v1_EndpointPort_To_core_EndpointPort,
+ Convert_core_EndpointPort_To_v1_EndpointPort,
+ Convert_v1_EndpointSubset_To_core_EndpointSubset,
+ Convert_core_EndpointSubset_To_v1_EndpointSubset,
+ Convert_v1_Endpoints_To_core_Endpoints,
+ Convert_core_Endpoints_To_v1_Endpoints,
+ Convert_v1_EndpointsList_To_core_EndpointsList,
+ Convert_core_EndpointsList_To_v1_EndpointsList,
+ Convert_v1_EnvFromSource_To_core_EnvFromSource,
+ Convert_core_EnvFromSource_To_v1_EnvFromSource,
+ Convert_v1_EnvVar_To_core_EnvVar,
+ Convert_core_EnvVar_To_v1_EnvVar,
+ Convert_v1_EnvVarSource_To_core_EnvVarSource,
+ Convert_core_EnvVarSource_To_v1_EnvVarSource,
+ Convert_v1_Event_To_core_Event,
+ Convert_core_Event_To_v1_Event,
+ Convert_v1_EventList_To_core_EventList,
+ Convert_core_EventList_To_v1_EventList,
+ Convert_v1_EventSource_To_core_EventSource,
+ Convert_core_EventSource_To_v1_EventSource,
+ Convert_v1_ExecAction_To_core_ExecAction,
+ Convert_core_ExecAction_To_v1_ExecAction,
+ Convert_v1_FCVolumeSource_To_core_FCVolumeSource,
+ Convert_core_FCVolumeSource_To_v1_FCVolumeSource,
+ Convert_v1_FlexVolumeSource_To_core_FlexVolumeSource,
+ Convert_core_FlexVolumeSource_To_v1_FlexVolumeSource,
+ Convert_v1_FlockerVolumeSource_To_core_FlockerVolumeSource,
+ Convert_core_FlockerVolumeSource_To_v1_FlockerVolumeSource,
+ Convert_v1_GCEPersistentDiskVolumeSource_To_core_GCEPersistentDiskVolumeSource,
+ Convert_core_GCEPersistentDiskVolumeSource_To_v1_GCEPersistentDiskVolumeSource,
+ Convert_v1_GitRepoVolumeSource_To_core_GitRepoVolumeSource,
+ Convert_core_GitRepoVolumeSource_To_v1_GitRepoVolumeSource,
+ Convert_v1_GlusterfsVolumeSource_To_core_GlusterfsVolumeSource,
+ Convert_core_GlusterfsVolumeSource_To_v1_GlusterfsVolumeSource,
+ Convert_v1_HTTPGetAction_To_core_HTTPGetAction,
+ Convert_core_HTTPGetAction_To_v1_HTTPGetAction,
+ Convert_v1_HTTPHeader_To_core_HTTPHeader,
+ Convert_core_HTTPHeader_To_v1_HTTPHeader,
+ Convert_v1_Handler_To_core_Handler,
+ Convert_core_Handler_To_v1_Handler,
+ Convert_v1_HostAlias_To_core_HostAlias,
+ Convert_core_HostAlias_To_v1_HostAlias,
+ Convert_v1_HostPathVolumeSource_To_core_HostPathVolumeSource,
+ Convert_core_HostPathVolumeSource_To_v1_HostPathVolumeSource,
+ Convert_v1_ISCSIVolumeSource_To_core_ISCSIVolumeSource,
+ Convert_core_ISCSIVolumeSource_To_v1_ISCSIVolumeSource,
+ Convert_v1_KeyToPath_To_core_KeyToPath,
+ Convert_core_KeyToPath_To_v1_KeyToPath,
+ Convert_v1_Lifecycle_To_core_Lifecycle,
+ Convert_core_Lifecycle_To_v1_Lifecycle,
+ Convert_v1_LimitRange_To_core_LimitRange,
+ Convert_core_LimitRange_To_v1_LimitRange,
+ Convert_v1_LimitRangeItem_To_core_LimitRangeItem,
+ Convert_core_LimitRangeItem_To_v1_LimitRangeItem,
+ Convert_v1_LimitRangeList_To_core_LimitRangeList,
+ Convert_core_LimitRangeList_To_v1_LimitRangeList,
+ Convert_v1_LimitRangeSpec_To_core_LimitRangeSpec,
+ Convert_core_LimitRangeSpec_To_v1_LimitRangeSpec,
+ Convert_v1_List_To_core_List,
+ Convert_core_List_To_v1_List,
+ Convert_v1_ListOptions_To_core_ListOptions,
+ Convert_core_ListOptions_To_v1_ListOptions,
+ Convert_v1_LoadBalancerIngress_To_core_LoadBalancerIngress,
+ Convert_core_LoadBalancerIngress_To_v1_LoadBalancerIngress,
+ Convert_v1_LoadBalancerStatus_To_core_LoadBalancerStatus,
+ Convert_core_LoadBalancerStatus_To_v1_LoadBalancerStatus,
+ Convert_v1_LocalObjectReference_To_core_LocalObjectReference,
+ Convert_core_LocalObjectReference_To_v1_LocalObjectReference,
+ Convert_v1_LocalVolumeSource_To_core_LocalVolumeSource,
+ Convert_core_LocalVolumeSource_To_v1_LocalVolumeSource,
+ Convert_v1_NFSVolumeSource_To_core_NFSVolumeSource,
+ Convert_core_NFSVolumeSource_To_v1_NFSVolumeSource,
+ Convert_v1_Namespace_To_core_Namespace,
+ Convert_core_Namespace_To_v1_Namespace,
+ Convert_v1_NamespaceList_To_core_NamespaceList,
+ Convert_core_NamespaceList_To_v1_NamespaceList,
+ Convert_v1_NamespaceSpec_To_core_NamespaceSpec,
+ Convert_core_NamespaceSpec_To_v1_NamespaceSpec,
+ Convert_v1_NamespaceStatus_To_core_NamespaceStatus,
+ Convert_core_NamespaceStatus_To_v1_NamespaceStatus,
+ Convert_v1_Node_To_core_Node,
+ Convert_core_Node_To_v1_Node,
+ Convert_v1_NodeAddress_To_core_NodeAddress,
+ Convert_core_NodeAddress_To_v1_NodeAddress,
+ Convert_v1_NodeAffinity_To_core_NodeAffinity,
+ Convert_core_NodeAffinity_To_v1_NodeAffinity,
+ Convert_v1_NodeCondition_To_core_NodeCondition,
+ Convert_core_NodeCondition_To_v1_NodeCondition,
+ Convert_v1_NodeConfigSource_To_core_NodeConfigSource,
+ Convert_core_NodeConfigSource_To_v1_NodeConfigSource,
+ Convert_v1_NodeDaemonEndpoints_To_core_NodeDaemonEndpoints,
+ Convert_core_NodeDaemonEndpoints_To_v1_NodeDaemonEndpoints,
+ Convert_v1_NodeList_To_core_NodeList,
+ Convert_core_NodeList_To_v1_NodeList,
+ Convert_v1_NodeProxyOptions_To_core_NodeProxyOptions,
+ Convert_core_NodeProxyOptions_To_v1_NodeProxyOptions,
+ Convert_v1_NodeResources_To_core_NodeResources,
+ Convert_core_NodeResources_To_v1_NodeResources,
+ Convert_v1_NodeSelector_To_core_NodeSelector,
+ Convert_core_NodeSelector_To_v1_NodeSelector,
+ Convert_v1_NodeSelectorRequirement_To_core_NodeSelectorRequirement,
+ Convert_core_NodeSelectorRequirement_To_v1_NodeSelectorRequirement,
+ Convert_v1_NodeSelectorTerm_To_core_NodeSelectorTerm,
+ Convert_core_NodeSelectorTerm_To_v1_NodeSelectorTerm,
+ Convert_v1_NodeSpec_To_core_NodeSpec,
+ Convert_core_NodeSpec_To_v1_NodeSpec,
+ Convert_v1_NodeStatus_To_core_NodeStatus,
+ Convert_core_NodeStatus_To_v1_NodeStatus,
+ Convert_v1_NodeSystemInfo_To_core_NodeSystemInfo,
+ Convert_core_NodeSystemInfo_To_v1_NodeSystemInfo,
+ Convert_v1_ObjectFieldSelector_To_core_ObjectFieldSelector,
+ Convert_core_ObjectFieldSelector_To_v1_ObjectFieldSelector,
+ Convert_v1_ObjectMeta_To_core_ObjectMeta,
+ Convert_core_ObjectMeta_To_v1_ObjectMeta,
+ Convert_v1_ObjectReference_To_core_ObjectReference,
+ Convert_core_ObjectReference_To_v1_ObjectReference,
+ Convert_v1_PersistentVolume_To_core_PersistentVolume,
+ Convert_core_PersistentVolume_To_v1_PersistentVolume,
+ Convert_v1_PersistentVolumeClaim_To_core_PersistentVolumeClaim,
+ Convert_core_PersistentVolumeClaim_To_v1_PersistentVolumeClaim,
+ Convert_v1_PersistentVolumeClaimCondition_To_core_PersistentVolumeClaimCondition,
+ Convert_core_PersistentVolumeClaimCondition_To_v1_PersistentVolumeClaimCondition,
+ Convert_v1_PersistentVolumeClaimList_To_core_PersistentVolumeClaimList,
+ Convert_core_PersistentVolumeClaimList_To_v1_PersistentVolumeClaimList,
+ Convert_v1_PersistentVolumeClaimSpec_To_core_PersistentVolumeClaimSpec,
+ Convert_core_PersistentVolumeClaimSpec_To_v1_PersistentVolumeClaimSpec,
+ Convert_v1_PersistentVolumeClaimStatus_To_core_PersistentVolumeClaimStatus,
+ Convert_core_PersistentVolumeClaimStatus_To_v1_PersistentVolumeClaimStatus,
+ Convert_v1_PersistentVolumeClaimVolumeSource_To_core_PersistentVolumeClaimVolumeSource,
+ Convert_core_PersistentVolumeClaimVolumeSource_To_v1_PersistentVolumeClaimVolumeSource,
+ Convert_v1_PersistentVolumeList_To_core_PersistentVolumeList,
+ Convert_core_PersistentVolumeList_To_v1_PersistentVolumeList,
+ Convert_v1_PersistentVolumeSource_To_core_PersistentVolumeSource,
+ Convert_core_PersistentVolumeSource_To_v1_PersistentVolumeSource,
+ Convert_v1_PersistentVolumeSpec_To_core_PersistentVolumeSpec,
+ Convert_core_PersistentVolumeSpec_To_v1_PersistentVolumeSpec,
+ Convert_v1_PersistentVolumeStatus_To_core_PersistentVolumeStatus,
+ Convert_core_PersistentVolumeStatus_To_v1_PersistentVolumeStatus,
+ Convert_v1_PhotonPersistentDiskVolumeSource_To_core_PhotonPersistentDiskVolumeSource,
+ Convert_core_PhotonPersistentDiskVolumeSource_To_v1_PhotonPersistentDiskVolumeSource,
+ Convert_v1_Pod_To_core_Pod,
+ Convert_core_Pod_To_v1_Pod,
+ Convert_v1_PodAffinity_To_core_PodAffinity,
+ Convert_core_PodAffinity_To_v1_PodAffinity,
+ Convert_v1_PodAffinityTerm_To_core_PodAffinityTerm,
+ Convert_core_PodAffinityTerm_To_v1_PodAffinityTerm,
+ Convert_v1_PodAntiAffinity_To_core_PodAntiAffinity,
+ Convert_core_PodAntiAffinity_To_v1_PodAntiAffinity,
+ Convert_v1_PodAttachOptions_To_core_PodAttachOptions,
+ Convert_core_PodAttachOptions_To_v1_PodAttachOptions,
+ Convert_v1_PodCondition_To_core_PodCondition,
+ Convert_core_PodCondition_To_v1_PodCondition,
+ Convert_v1_PodExecOptions_To_core_PodExecOptions,
+ Convert_core_PodExecOptions_To_v1_PodExecOptions,
+ Convert_v1_PodList_To_core_PodList,
+ Convert_core_PodList_To_v1_PodList,
+ Convert_v1_PodLogOptions_To_core_PodLogOptions,
+ Convert_core_PodLogOptions_To_v1_PodLogOptions,
+ Convert_v1_PodPortForwardOptions_To_core_PodPortForwardOptions,
+ Convert_core_PodPortForwardOptions_To_v1_PodPortForwardOptions,
+ Convert_v1_PodProxyOptions_To_core_PodProxyOptions,
+ Convert_core_PodProxyOptions_To_v1_PodProxyOptions,
+ Convert_v1_PodSecurityContext_To_core_PodSecurityContext,
+ Convert_core_PodSecurityContext_To_v1_PodSecurityContext,
+ Convert_v1_PodSignature_To_core_PodSignature,
+ Convert_core_PodSignature_To_v1_PodSignature,
+ Convert_v1_PodSpec_To_core_PodSpec,
+ Convert_core_PodSpec_To_v1_PodSpec,
+ Convert_v1_PodStatus_To_core_PodStatus,
+ Convert_core_PodStatus_To_v1_PodStatus,
+ Convert_v1_PodStatusResult_To_core_PodStatusResult,
+ Convert_core_PodStatusResult_To_v1_PodStatusResult,
+ Convert_v1_PodTemplate_To_core_PodTemplate,
+ Convert_core_PodTemplate_To_v1_PodTemplate,
+ Convert_v1_PodTemplateList_To_core_PodTemplateList,
+ Convert_core_PodTemplateList_To_v1_PodTemplateList,
+ Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec,
+ Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec,
+ Convert_v1_PortworxVolumeSource_To_core_PortworxVolumeSource,
+ Convert_core_PortworxVolumeSource_To_v1_PortworxVolumeSource,
+ Convert_v1_Preconditions_To_core_Preconditions,
+ Convert_core_Preconditions_To_v1_Preconditions,
+ Convert_v1_PreferAvoidPodsEntry_To_core_PreferAvoidPodsEntry,
+ Convert_core_PreferAvoidPodsEntry_To_v1_PreferAvoidPodsEntry,
+ Convert_v1_PreferredSchedulingTerm_To_core_PreferredSchedulingTerm,
+ Convert_core_PreferredSchedulingTerm_To_v1_PreferredSchedulingTerm,
+ Convert_v1_Probe_To_core_Probe,
+ Convert_core_Probe_To_v1_Probe,
+ Convert_v1_ProjectedVolumeSource_To_core_ProjectedVolumeSource,
+ Convert_core_ProjectedVolumeSource_To_v1_ProjectedVolumeSource,
+ Convert_v1_QuobyteVolumeSource_To_core_QuobyteVolumeSource,
+ Convert_core_QuobyteVolumeSource_To_v1_QuobyteVolumeSource,
+ Convert_v1_RBDPersistentVolumeSource_To_core_RBDPersistentVolumeSource,
+ Convert_core_RBDPersistentVolumeSource_To_v1_RBDPersistentVolumeSource,
+ Convert_v1_RBDVolumeSource_To_core_RBDVolumeSource,
+ Convert_core_RBDVolumeSource_To_v1_RBDVolumeSource,
+ Convert_v1_RangeAllocation_To_core_RangeAllocation,
+ Convert_core_RangeAllocation_To_v1_RangeAllocation,
+ Convert_v1_ReplicationController_To_core_ReplicationController,
+ Convert_core_ReplicationController_To_v1_ReplicationController,
+ Convert_v1_ReplicationControllerCondition_To_core_ReplicationControllerCondition,
+ Convert_core_ReplicationControllerCondition_To_v1_ReplicationControllerCondition,
+ Convert_v1_ReplicationControllerList_To_core_ReplicationControllerList,
+ Convert_core_ReplicationControllerList_To_v1_ReplicationControllerList,
+ Convert_v1_ReplicationControllerSpec_To_core_ReplicationControllerSpec,
+ Convert_core_ReplicationControllerSpec_To_v1_ReplicationControllerSpec,
+ Convert_v1_ReplicationControllerStatus_To_core_ReplicationControllerStatus,
+ Convert_core_ReplicationControllerStatus_To_v1_ReplicationControllerStatus,
+ Convert_v1_ResourceFieldSelector_To_core_ResourceFieldSelector,
+ Convert_core_ResourceFieldSelector_To_v1_ResourceFieldSelector,
+ Convert_v1_ResourceQuota_To_core_ResourceQuota,
+ Convert_core_ResourceQuota_To_v1_ResourceQuota,
+ Convert_v1_ResourceQuotaList_To_core_ResourceQuotaList,
+ Convert_core_ResourceQuotaList_To_v1_ResourceQuotaList,
+ Convert_v1_ResourceQuotaSpec_To_core_ResourceQuotaSpec,
+ Convert_core_ResourceQuotaSpec_To_v1_ResourceQuotaSpec,
+ Convert_v1_ResourceQuotaStatus_To_core_ResourceQuotaStatus,
+ Convert_core_ResourceQuotaStatus_To_v1_ResourceQuotaStatus,
+ Convert_v1_ResourceRequirements_To_core_ResourceRequirements,
+ Convert_core_ResourceRequirements_To_v1_ResourceRequirements,
+ Convert_v1_SELinuxOptions_To_core_SELinuxOptions,
+ Convert_core_SELinuxOptions_To_v1_SELinuxOptions,
+ Convert_v1_ScaleIOPersistentVolumeSource_To_core_ScaleIOPersistentVolumeSource,
+ Convert_core_ScaleIOPersistentVolumeSource_To_v1_ScaleIOPersistentVolumeSource,
+ Convert_v1_ScaleIOVolumeSource_To_core_ScaleIOVolumeSource,
+ Convert_core_ScaleIOVolumeSource_To_v1_ScaleIOVolumeSource,
+ Convert_v1_Secret_To_core_Secret,
+ Convert_core_Secret_To_v1_Secret,
+ Convert_v1_SecretEnvSource_To_core_SecretEnvSource,
+ Convert_core_SecretEnvSource_To_v1_SecretEnvSource,
+ Convert_v1_SecretKeySelector_To_core_SecretKeySelector,
+ Convert_core_SecretKeySelector_To_v1_SecretKeySelector,
+ Convert_v1_SecretList_To_core_SecretList,
+ Convert_core_SecretList_To_v1_SecretList,
+ Convert_v1_SecretProjection_To_core_SecretProjection,
+ Convert_core_SecretProjection_To_v1_SecretProjection,
+ Convert_v1_SecretReference_To_core_SecretReference,
+ Convert_core_SecretReference_To_v1_SecretReference,
+ Convert_v1_SecretVolumeSource_To_core_SecretVolumeSource,
+ Convert_core_SecretVolumeSource_To_v1_SecretVolumeSource,
+ Convert_v1_SecurityContext_To_core_SecurityContext,
+ Convert_core_SecurityContext_To_v1_SecurityContext,
+ Convert_v1_SerializedReference_To_core_SerializedReference,
+ Convert_core_SerializedReference_To_v1_SerializedReference,
+ Convert_v1_Service_To_core_Service,
+ Convert_core_Service_To_v1_Service,
+ Convert_v1_ServiceAccount_To_core_ServiceAccount,
+ Convert_core_ServiceAccount_To_v1_ServiceAccount,
+ Convert_v1_ServiceAccountList_To_core_ServiceAccountList,
+ Convert_core_ServiceAccountList_To_v1_ServiceAccountList,
+ Convert_v1_ServiceList_To_core_ServiceList,
+ Convert_core_ServiceList_To_v1_ServiceList,
+ Convert_v1_ServicePort_To_core_ServicePort,
+ Convert_core_ServicePort_To_v1_ServicePort,
+ Convert_v1_ServiceProxyOptions_To_core_ServiceProxyOptions,
+ Convert_core_ServiceProxyOptions_To_v1_ServiceProxyOptions,
+ Convert_v1_ServiceSpec_To_core_ServiceSpec,
+ Convert_core_ServiceSpec_To_v1_ServiceSpec,
+ Convert_v1_ServiceStatus_To_core_ServiceStatus,
+ Convert_core_ServiceStatus_To_v1_ServiceStatus,
+ Convert_v1_SessionAffinityConfig_To_core_SessionAffinityConfig,
+ Convert_core_SessionAffinityConfig_To_v1_SessionAffinityConfig,
+ Convert_v1_StorageOSPersistentVolumeSource_To_core_StorageOSPersistentVolumeSource,
+ Convert_core_StorageOSPersistentVolumeSource_To_v1_StorageOSPersistentVolumeSource,
+ Convert_v1_StorageOSVolumeSource_To_core_StorageOSVolumeSource,
+ Convert_core_StorageOSVolumeSource_To_v1_StorageOSVolumeSource,
+ Convert_v1_Sysctl_To_core_Sysctl,
+ Convert_core_Sysctl_To_v1_Sysctl,
+ Convert_v1_TCPSocketAction_To_core_TCPSocketAction,
+ Convert_core_TCPSocketAction_To_v1_TCPSocketAction,
+ Convert_v1_Taint_To_core_Taint,
+ Convert_core_Taint_To_v1_Taint,
+ Convert_v1_Toleration_To_core_Toleration,
+ Convert_core_Toleration_To_v1_Toleration,
+ Convert_v1_Volume_To_core_Volume,
+ Convert_core_Volume_To_v1_Volume,
+ Convert_v1_VolumeMount_To_core_VolumeMount,
+ Convert_core_VolumeMount_To_v1_VolumeMount,
+ Convert_v1_VolumeProjection_To_core_VolumeProjection,
+ Convert_core_VolumeProjection_To_v1_VolumeProjection,
+ Convert_v1_VolumeSource_To_core_VolumeSource,
+ Convert_core_VolumeSource_To_v1_VolumeSource,
+ Convert_v1_VsphereVirtualDiskVolumeSource_To_core_VsphereVirtualDiskVolumeSource,
+ Convert_core_VsphereVirtualDiskVolumeSource_To_v1_VsphereVirtualDiskVolumeSource,
+ Convert_v1_WeightedPodAffinityTerm_To_core_WeightedPodAffinityTerm,
+ Convert_core_WeightedPodAffinityTerm_To_v1_WeightedPodAffinityTerm,
+ )
+}
+
+func autoConvert_v1_AWSElasticBlockStoreVolumeSource_To_core_AWSElasticBlockStoreVolumeSource(in *v1.AWSElasticBlockStoreVolumeSource, out *core.AWSElasticBlockStoreVolumeSource, s conversion.Scope) error {
+ out.VolumeID = in.VolumeID
+ out.FSType = in.FSType
+ out.Partition = in.Partition
+ out.ReadOnly = in.ReadOnly
+ return nil
+}
+
+// Convert_v1_AWSElasticBlockStoreVolumeSource_To_core_AWSElasticBlockStoreVolumeSource is an autogenerated conversion function.
+func Convert_v1_AWSElasticBlockStoreVolumeSource_To_core_AWSElasticBlockStoreVolumeSource(in *v1.AWSElasticBlockStoreVolumeSource, out *core.AWSElasticBlockStoreVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_AWSElasticBlockStoreVolumeSource_To_core_AWSElasticBlockStoreVolumeSource(in, out, s)
+}
+
+func autoConvert_core_AWSElasticBlockStoreVolumeSource_To_v1_AWSElasticBlockStoreVolumeSource(in *core.AWSElasticBlockStoreVolumeSource, out *v1.AWSElasticBlockStoreVolumeSource, s conversion.Scope) error {
+ out.VolumeID = in.VolumeID
+ out.FSType = in.FSType
+ out.Partition = in.Partition
+ out.ReadOnly = in.ReadOnly
+ return nil
+}
+
+// Convert_core_AWSElasticBlockStoreVolumeSource_To_v1_AWSElasticBlockStoreVolumeSource is an autogenerated conversion function.
+func Convert_core_AWSElasticBlockStoreVolumeSource_To_v1_AWSElasticBlockStoreVolumeSource(in *core.AWSElasticBlockStoreVolumeSource, out *v1.AWSElasticBlockStoreVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_AWSElasticBlockStoreVolumeSource_To_v1_AWSElasticBlockStoreVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_Affinity_To_core_Affinity(in *v1.Affinity, out *core.Affinity, s conversion.Scope) error {
+ out.NodeAffinity = (*core.NodeAffinity)(unsafe.Pointer(in.NodeAffinity))
+ out.PodAffinity = (*core.PodAffinity)(unsafe.Pointer(in.PodAffinity))
+ out.PodAntiAffinity = (*core.PodAntiAffinity)(unsafe.Pointer(in.PodAntiAffinity))
+ return nil
+}
+
+// Convert_v1_Affinity_To_core_Affinity is an autogenerated conversion function.
+func Convert_v1_Affinity_To_core_Affinity(in *v1.Affinity, out *core.Affinity, s conversion.Scope) error {
+ return autoConvert_v1_Affinity_To_core_Affinity(in, out, s)
+}
+
+func autoConvert_core_Affinity_To_v1_Affinity(in *core.Affinity, out *v1.Affinity, s conversion.Scope) error {
+ out.NodeAffinity = (*v1.NodeAffinity)(unsafe.Pointer(in.NodeAffinity))
+ out.PodAffinity = (*v1.PodAffinity)(unsafe.Pointer(in.PodAffinity))
+ out.PodAntiAffinity = (*v1.PodAntiAffinity)(unsafe.Pointer(in.PodAntiAffinity))
+ return nil
+}
+
+// Convert_core_Affinity_To_v1_Affinity is an autogenerated conversion function.
+func Convert_core_Affinity_To_v1_Affinity(in *core.Affinity, out *v1.Affinity, s conversion.Scope) error {
+ return autoConvert_core_Affinity_To_v1_Affinity(in, out, s)
+}
+
+func autoConvert_v1_AttachedVolume_To_core_AttachedVolume(in *v1.AttachedVolume, out *core.AttachedVolume, s conversion.Scope) error {
+ out.Name = core.UniqueVolumeName(in.Name)
+ out.DevicePath = in.DevicePath
+ return nil
+}
+
+// Convert_v1_AttachedVolume_To_core_AttachedVolume is an autogenerated conversion function.
+func Convert_v1_AttachedVolume_To_core_AttachedVolume(in *v1.AttachedVolume, out *core.AttachedVolume, s conversion.Scope) error {
+ return autoConvert_v1_AttachedVolume_To_core_AttachedVolume(in, out, s)
+}
+
+func autoConvert_core_AttachedVolume_To_v1_AttachedVolume(in *core.AttachedVolume, out *v1.AttachedVolume, s conversion.Scope) error {
+ out.Name = v1.UniqueVolumeName(in.Name)
+ out.DevicePath = in.DevicePath
+ return nil
+}
+
+// Convert_core_AttachedVolume_To_v1_AttachedVolume is an autogenerated conversion function.
+func Convert_core_AttachedVolume_To_v1_AttachedVolume(in *core.AttachedVolume, out *v1.AttachedVolume, s conversion.Scope) error {
+ return autoConvert_core_AttachedVolume_To_v1_AttachedVolume(in, out, s)
+}
+
+func autoConvert_v1_AvoidPods_To_core_AvoidPods(in *v1.AvoidPods, out *core.AvoidPods, s conversion.Scope) error {
+ out.PreferAvoidPods = *(*[]core.PreferAvoidPodsEntry)(unsafe.Pointer(&in.PreferAvoidPods))
+ return nil
+}
+
+// Convert_v1_AvoidPods_To_core_AvoidPods is an autogenerated conversion function.
+func Convert_v1_AvoidPods_To_core_AvoidPods(in *v1.AvoidPods, out *core.AvoidPods, s conversion.Scope) error {
+ return autoConvert_v1_AvoidPods_To_core_AvoidPods(in, out, s)
+}
+
+func autoConvert_core_AvoidPods_To_v1_AvoidPods(in *core.AvoidPods, out *v1.AvoidPods, s conversion.Scope) error {
+ out.PreferAvoidPods = *(*[]v1.PreferAvoidPodsEntry)(unsafe.Pointer(&in.PreferAvoidPods))
+ return nil
+}
+
+// Convert_core_AvoidPods_To_v1_AvoidPods is an autogenerated conversion function.
+func Convert_core_AvoidPods_To_v1_AvoidPods(in *core.AvoidPods, out *v1.AvoidPods, s conversion.Scope) error {
+ return autoConvert_core_AvoidPods_To_v1_AvoidPods(in, out, s)
+}
+
+func autoConvert_v1_AzureDiskVolumeSource_To_core_AzureDiskVolumeSource(in *v1.AzureDiskVolumeSource, out *core.AzureDiskVolumeSource, s conversion.Scope) error {
+ out.DiskName = in.DiskName
+ out.DataDiskURI = in.DataDiskURI
+ out.CachingMode = (*core.AzureDataDiskCachingMode)(unsafe.Pointer(in.CachingMode))
+ out.FSType = (*string)(unsafe.Pointer(in.FSType))
+ out.ReadOnly = (*bool)(unsafe.Pointer(in.ReadOnly))
+ out.Kind = (*core.AzureDataDiskKind)(unsafe.Pointer(in.Kind))
+ return nil
+}
+
+// Convert_v1_AzureDiskVolumeSource_To_core_AzureDiskVolumeSource is an autogenerated conversion function.
+func Convert_v1_AzureDiskVolumeSource_To_core_AzureDiskVolumeSource(in *v1.AzureDiskVolumeSource, out *core.AzureDiskVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_AzureDiskVolumeSource_To_core_AzureDiskVolumeSource(in, out, s)
+}
+
+func autoConvert_core_AzureDiskVolumeSource_To_v1_AzureDiskVolumeSource(in *core.AzureDiskVolumeSource, out *v1.AzureDiskVolumeSource, s conversion.Scope) error {
+ out.DiskName = in.DiskName
+ out.DataDiskURI = in.DataDiskURI
+ out.CachingMode = (*v1.AzureDataDiskCachingMode)(unsafe.Pointer(in.CachingMode))
+ out.FSType = (*string)(unsafe.Pointer(in.FSType))
+ out.ReadOnly = (*bool)(unsafe.Pointer(in.ReadOnly))
+ out.Kind = (*v1.AzureDataDiskKind)(unsafe.Pointer(in.Kind))
+ return nil
+}
+
+// Convert_core_AzureDiskVolumeSource_To_v1_AzureDiskVolumeSource is an autogenerated conversion function.
+func Convert_core_AzureDiskVolumeSource_To_v1_AzureDiskVolumeSource(in *core.AzureDiskVolumeSource, out *v1.AzureDiskVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_AzureDiskVolumeSource_To_v1_AzureDiskVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_AzureFilePersistentVolumeSource_To_core_AzureFilePersistentVolumeSource(in *v1.AzureFilePersistentVolumeSource, out *core.AzureFilePersistentVolumeSource, s conversion.Scope) error {
+ out.SecretName = in.SecretName
+ out.ShareName = in.ShareName
+ out.ReadOnly = in.ReadOnly
+ out.SecretNamespace = (*string)(unsafe.Pointer(in.SecretNamespace))
+ return nil
+}
+
+// Convert_v1_AzureFilePersistentVolumeSource_To_core_AzureFilePersistentVolumeSource is an autogenerated conversion function.
+func Convert_v1_AzureFilePersistentVolumeSource_To_core_AzureFilePersistentVolumeSource(in *v1.AzureFilePersistentVolumeSource, out *core.AzureFilePersistentVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_AzureFilePersistentVolumeSource_To_core_AzureFilePersistentVolumeSource(in, out, s)
+}
+
+func autoConvert_core_AzureFilePersistentVolumeSource_To_v1_AzureFilePersistentVolumeSource(in *core.AzureFilePersistentVolumeSource, out *v1.AzureFilePersistentVolumeSource, s conversion.Scope) error {
+ out.SecretName = in.SecretName
+ out.ShareName = in.ShareName
+ out.ReadOnly = in.ReadOnly
+ out.SecretNamespace = (*string)(unsafe.Pointer(in.SecretNamespace))
+ return nil
+}
+
+// Convert_core_AzureFilePersistentVolumeSource_To_v1_AzureFilePersistentVolumeSource is an autogenerated conversion function.
+func Convert_core_AzureFilePersistentVolumeSource_To_v1_AzureFilePersistentVolumeSource(in *core.AzureFilePersistentVolumeSource, out *v1.AzureFilePersistentVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_AzureFilePersistentVolumeSource_To_v1_AzureFilePersistentVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_AzureFileVolumeSource_To_core_AzureFileVolumeSource(in *v1.AzureFileVolumeSource, out *core.AzureFileVolumeSource, s conversion.Scope) error {
+ out.SecretName = in.SecretName
+ out.ShareName = in.ShareName
+ out.ReadOnly = in.ReadOnly
+ return nil
+}
+
+// Convert_v1_AzureFileVolumeSource_To_core_AzureFileVolumeSource is an autogenerated conversion function.
+func Convert_v1_AzureFileVolumeSource_To_core_AzureFileVolumeSource(in *v1.AzureFileVolumeSource, out *core.AzureFileVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_AzureFileVolumeSource_To_core_AzureFileVolumeSource(in, out, s)
+}
+
+func autoConvert_core_AzureFileVolumeSource_To_v1_AzureFileVolumeSource(in *core.AzureFileVolumeSource, out *v1.AzureFileVolumeSource, s conversion.Scope) error {
+ out.SecretName = in.SecretName
+ out.ShareName = in.ShareName
+ out.ReadOnly = in.ReadOnly
+ return nil
+}
+
+// Convert_core_AzureFileVolumeSource_To_v1_AzureFileVolumeSource is an autogenerated conversion function.
+func Convert_core_AzureFileVolumeSource_To_v1_AzureFileVolumeSource(in *core.AzureFileVolumeSource, out *v1.AzureFileVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_AzureFileVolumeSource_To_v1_AzureFileVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_Binding_To_core_Binding(in *v1.Binding, out *core.Binding, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ if err := Convert_v1_ObjectReference_To_core_ObjectReference(&in.Target, &out.Target, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_v1_Binding_To_core_Binding is an autogenerated conversion function.
+func Convert_v1_Binding_To_core_Binding(in *v1.Binding, out *core.Binding, s conversion.Scope) error {
+ return autoConvert_v1_Binding_To_core_Binding(in, out, s)
+}
+
+func autoConvert_core_Binding_To_v1_Binding(in *core.Binding, out *v1.Binding, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ if err := Convert_core_ObjectReference_To_v1_ObjectReference(&in.Target, &out.Target, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_core_Binding_To_v1_Binding is an autogenerated conversion function.
+func Convert_core_Binding_To_v1_Binding(in *core.Binding, out *v1.Binding, s conversion.Scope) error {
+ return autoConvert_core_Binding_To_v1_Binding(in, out, s)
+}
+
+func autoConvert_v1_Capabilities_To_core_Capabilities(in *v1.Capabilities, out *core.Capabilities, s conversion.Scope) error {
+ out.Add = *(*[]core.Capability)(unsafe.Pointer(&in.Add))
+ out.Drop = *(*[]core.Capability)(unsafe.Pointer(&in.Drop))
+ return nil
+}
+
+// Convert_v1_Capabilities_To_core_Capabilities is an autogenerated conversion function.
+func Convert_v1_Capabilities_To_core_Capabilities(in *v1.Capabilities, out *core.Capabilities, s conversion.Scope) error {
+ return autoConvert_v1_Capabilities_To_core_Capabilities(in, out, s)
+}
+
+func autoConvert_core_Capabilities_To_v1_Capabilities(in *core.Capabilities, out *v1.Capabilities, s conversion.Scope) error {
+ out.Add = *(*[]v1.Capability)(unsafe.Pointer(&in.Add))
+ out.Drop = *(*[]v1.Capability)(unsafe.Pointer(&in.Drop))
+ return nil
+}
+
+// Convert_core_Capabilities_To_v1_Capabilities is an autogenerated conversion function.
+func Convert_core_Capabilities_To_v1_Capabilities(in *core.Capabilities, out *v1.Capabilities, s conversion.Scope) error {
+ return autoConvert_core_Capabilities_To_v1_Capabilities(in, out, s)
+}
+
+func autoConvert_v1_CephFSPersistentVolumeSource_To_core_CephFSPersistentVolumeSource(in *v1.CephFSPersistentVolumeSource, out *core.CephFSPersistentVolumeSource, s conversion.Scope) error {
+ out.Monitors = *(*[]string)(unsafe.Pointer(&in.Monitors))
+ out.Path = in.Path
+ out.User = in.User
+ out.SecretFile = in.SecretFile
+ out.SecretRef = (*core.SecretReference)(unsafe.Pointer(in.SecretRef))
+ out.ReadOnly = in.ReadOnly
+ return nil
+}
+
+// Convert_v1_CephFSPersistentVolumeSource_To_core_CephFSPersistentVolumeSource is an autogenerated conversion function.
+func Convert_v1_CephFSPersistentVolumeSource_To_core_CephFSPersistentVolumeSource(in *v1.CephFSPersistentVolumeSource, out *core.CephFSPersistentVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_CephFSPersistentVolumeSource_To_core_CephFSPersistentVolumeSource(in, out, s)
+}
+
+func autoConvert_core_CephFSPersistentVolumeSource_To_v1_CephFSPersistentVolumeSource(in *core.CephFSPersistentVolumeSource, out *v1.CephFSPersistentVolumeSource, s conversion.Scope) error {
+ out.Monitors = *(*[]string)(unsafe.Pointer(&in.Monitors))
+ out.Path = in.Path
+ out.User = in.User
+ out.SecretFile = in.SecretFile
+ out.SecretRef = (*v1.SecretReference)(unsafe.Pointer(in.SecretRef))
+ out.ReadOnly = in.ReadOnly
+ return nil
+}
+
+// Convert_core_CephFSPersistentVolumeSource_To_v1_CephFSPersistentVolumeSource is an autogenerated conversion function.
+func Convert_core_CephFSPersistentVolumeSource_To_v1_CephFSPersistentVolumeSource(in *core.CephFSPersistentVolumeSource, out *v1.CephFSPersistentVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_CephFSPersistentVolumeSource_To_v1_CephFSPersistentVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_CephFSVolumeSource_To_core_CephFSVolumeSource(in *v1.CephFSVolumeSource, out *core.CephFSVolumeSource, s conversion.Scope) error {
+ out.Monitors = *(*[]string)(unsafe.Pointer(&in.Monitors))
+ out.Path = in.Path
+ out.User = in.User
+ out.SecretFile = in.SecretFile
+ out.SecretRef = (*core.LocalObjectReference)(unsafe.Pointer(in.SecretRef))
+ out.ReadOnly = in.ReadOnly
+ return nil
+}
+
+// Convert_v1_CephFSVolumeSource_To_core_CephFSVolumeSource is an autogenerated conversion function.
+func Convert_v1_CephFSVolumeSource_To_core_CephFSVolumeSource(in *v1.CephFSVolumeSource, out *core.CephFSVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_CephFSVolumeSource_To_core_CephFSVolumeSource(in, out, s)
+}
+
+func autoConvert_core_CephFSVolumeSource_To_v1_CephFSVolumeSource(in *core.CephFSVolumeSource, out *v1.CephFSVolumeSource, s conversion.Scope) error {
+ out.Monitors = *(*[]string)(unsafe.Pointer(&in.Monitors))
+ out.Path = in.Path
+ out.User = in.User
+ out.SecretFile = in.SecretFile
+ out.SecretRef = (*v1.LocalObjectReference)(unsafe.Pointer(in.SecretRef))
+ out.ReadOnly = in.ReadOnly
+ return nil
+}
+
+// Convert_core_CephFSVolumeSource_To_v1_CephFSVolumeSource is an autogenerated conversion function.
+func Convert_core_CephFSVolumeSource_To_v1_CephFSVolumeSource(in *core.CephFSVolumeSource, out *v1.CephFSVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_CephFSVolumeSource_To_v1_CephFSVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_CinderVolumeSource_To_core_CinderVolumeSource(in *v1.CinderVolumeSource, out *core.CinderVolumeSource, s conversion.Scope) error {
+ out.VolumeID = in.VolumeID
+ out.FSType = in.FSType
+ out.ReadOnly = in.ReadOnly
+ return nil
+}
+
+// Convert_v1_CinderVolumeSource_To_core_CinderVolumeSource is an autogenerated conversion function.
+func Convert_v1_CinderVolumeSource_To_core_CinderVolumeSource(in *v1.CinderVolumeSource, out *core.CinderVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_CinderVolumeSource_To_core_CinderVolumeSource(in, out, s)
+}
+
+func autoConvert_core_CinderVolumeSource_To_v1_CinderVolumeSource(in *core.CinderVolumeSource, out *v1.CinderVolumeSource, s conversion.Scope) error {
+ out.VolumeID = in.VolumeID
+ out.FSType = in.FSType
+ out.ReadOnly = in.ReadOnly
+ return nil
+}
+
+// Convert_core_CinderVolumeSource_To_v1_CinderVolumeSource is an autogenerated conversion function.
+func Convert_core_CinderVolumeSource_To_v1_CinderVolumeSource(in *core.CinderVolumeSource, out *v1.CinderVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_CinderVolumeSource_To_v1_CinderVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_ClientIPConfig_To_core_ClientIPConfig(in *v1.ClientIPConfig, out *core.ClientIPConfig, s conversion.Scope) error {
+ out.TimeoutSeconds = (*int32)(unsafe.Pointer(in.TimeoutSeconds))
+ return nil
+}
+
+// Convert_v1_ClientIPConfig_To_core_ClientIPConfig is an autogenerated conversion function.
+func Convert_v1_ClientIPConfig_To_core_ClientIPConfig(in *v1.ClientIPConfig, out *core.ClientIPConfig, s conversion.Scope) error {
+ return autoConvert_v1_ClientIPConfig_To_core_ClientIPConfig(in, out, s)
+}
+
+func autoConvert_core_ClientIPConfig_To_v1_ClientIPConfig(in *core.ClientIPConfig, out *v1.ClientIPConfig, s conversion.Scope) error {
+ out.TimeoutSeconds = (*int32)(unsafe.Pointer(in.TimeoutSeconds))
+ return nil
+}
+
+// Convert_core_ClientIPConfig_To_v1_ClientIPConfig is an autogenerated conversion function.
+func Convert_core_ClientIPConfig_To_v1_ClientIPConfig(in *core.ClientIPConfig, out *v1.ClientIPConfig, s conversion.Scope) error {
+ return autoConvert_core_ClientIPConfig_To_v1_ClientIPConfig(in, out, s)
+}
+
+func autoConvert_v1_ComponentCondition_To_core_ComponentCondition(in *v1.ComponentCondition, out *core.ComponentCondition, s conversion.Scope) error {
+ out.Type = core.ComponentConditionType(in.Type)
+ out.Status = core.ConditionStatus(in.Status)
+ out.Message = in.Message
+ out.Error = in.Error
+ return nil
+}
+
+// Convert_v1_ComponentCondition_To_core_ComponentCondition is an autogenerated conversion function.
+func Convert_v1_ComponentCondition_To_core_ComponentCondition(in *v1.ComponentCondition, out *core.ComponentCondition, s conversion.Scope) error {
+ return autoConvert_v1_ComponentCondition_To_core_ComponentCondition(in, out, s)
+}
+
+func autoConvert_core_ComponentCondition_To_v1_ComponentCondition(in *core.ComponentCondition, out *v1.ComponentCondition, s conversion.Scope) error {
+ out.Type = v1.ComponentConditionType(in.Type)
+ out.Status = v1.ConditionStatus(in.Status)
+ out.Message = in.Message
+ out.Error = in.Error
+ return nil
+}
+
+// Convert_core_ComponentCondition_To_v1_ComponentCondition is an autogenerated conversion function.
+func Convert_core_ComponentCondition_To_v1_ComponentCondition(in *core.ComponentCondition, out *v1.ComponentCondition, s conversion.Scope) error {
+ return autoConvert_core_ComponentCondition_To_v1_ComponentCondition(in, out, s)
+}
+
+func autoConvert_v1_ComponentStatus_To_core_ComponentStatus(in *v1.ComponentStatus, out *core.ComponentStatus, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ out.Conditions = *(*[]core.ComponentCondition)(unsafe.Pointer(&in.Conditions))
+ return nil
+}
+
+// Convert_v1_ComponentStatus_To_core_ComponentStatus is an autogenerated conversion function.
+func Convert_v1_ComponentStatus_To_core_ComponentStatus(in *v1.ComponentStatus, out *core.ComponentStatus, s conversion.Scope) error {
+ return autoConvert_v1_ComponentStatus_To_core_ComponentStatus(in, out, s)
+}
+
+func autoConvert_core_ComponentStatus_To_v1_ComponentStatus(in *core.ComponentStatus, out *v1.ComponentStatus, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ out.Conditions = *(*[]v1.ComponentCondition)(unsafe.Pointer(&in.Conditions))
+ return nil
+}
+
+// Convert_core_ComponentStatus_To_v1_ComponentStatus is an autogenerated conversion function.
+func Convert_core_ComponentStatus_To_v1_ComponentStatus(in *core.ComponentStatus, out *v1.ComponentStatus, s conversion.Scope) error {
+ return autoConvert_core_ComponentStatus_To_v1_ComponentStatus(in, out, s)
+}
+
+func autoConvert_v1_ComponentStatusList_To_core_ComponentStatusList(in *v1.ComponentStatusList, out *core.ComponentStatusList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ out.Items = *(*[]core.ComponentStatus)(unsafe.Pointer(&in.Items))
+ return nil
+}
+
+// Convert_v1_ComponentStatusList_To_core_ComponentStatusList is an autogenerated conversion function.
+func Convert_v1_ComponentStatusList_To_core_ComponentStatusList(in *v1.ComponentStatusList, out *core.ComponentStatusList, s conversion.Scope) error {
+ return autoConvert_v1_ComponentStatusList_To_core_ComponentStatusList(in, out, s)
+}
+
+func autoConvert_core_ComponentStatusList_To_v1_ComponentStatusList(in *core.ComponentStatusList, out *v1.ComponentStatusList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ out.Items = *(*[]v1.ComponentStatus)(unsafe.Pointer(&in.Items))
+ return nil
+}
+
+// Convert_core_ComponentStatusList_To_v1_ComponentStatusList is an autogenerated conversion function.
+func Convert_core_ComponentStatusList_To_v1_ComponentStatusList(in *core.ComponentStatusList, out *v1.ComponentStatusList, s conversion.Scope) error {
+ return autoConvert_core_ComponentStatusList_To_v1_ComponentStatusList(in, out, s)
+}
+
+func autoConvert_v1_ConfigMap_To_core_ConfigMap(in *v1.ConfigMap, out *core.ConfigMap, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ out.Data = *(*map[string]string)(unsafe.Pointer(&in.Data))
+ return nil
+}
+
+// Convert_v1_ConfigMap_To_core_ConfigMap is an autogenerated conversion function.
+func Convert_v1_ConfigMap_To_core_ConfigMap(in *v1.ConfigMap, out *core.ConfigMap, s conversion.Scope) error {
+ return autoConvert_v1_ConfigMap_To_core_ConfigMap(in, out, s)
+}
+
+func autoConvert_core_ConfigMap_To_v1_ConfigMap(in *core.ConfigMap, out *v1.ConfigMap, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ out.Data = *(*map[string]string)(unsafe.Pointer(&in.Data))
+ return nil
+}
+
+// Convert_core_ConfigMap_To_v1_ConfigMap is an autogenerated conversion function.
+func Convert_core_ConfigMap_To_v1_ConfigMap(in *core.ConfigMap, out *v1.ConfigMap, s conversion.Scope) error {
+ return autoConvert_core_ConfigMap_To_v1_ConfigMap(in, out, s)
+}
+
+func autoConvert_v1_ConfigMapEnvSource_To_core_ConfigMapEnvSource(in *v1.ConfigMapEnvSource, out *core.ConfigMapEnvSource, s conversion.Scope) error {
+ if err := Convert_v1_LocalObjectReference_To_core_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil {
+ return err
+ }
+ out.Optional = (*bool)(unsafe.Pointer(in.Optional))
+ return nil
+}
+
+// Convert_v1_ConfigMapEnvSource_To_core_ConfigMapEnvSource is an autogenerated conversion function.
+func Convert_v1_ConfigMapEnvSource_To_core_ConfigMapEnvSource(in *v1.ConfigMapEnvSource, out *core.ConfigMapEnvSource, s conversion.Scope) error {
+ return autoConvert_v1_ConfigMapEnvSource_To_core_ConfigMapEnvSource(in, out, s)
+}
+
+func autoConvert_core_ConfigMapEnvSource_To_v1_ConfigMapEnvSource(in *core.ConfigMapEnvSource, out *v1.ConfigMapEnvSource, s conversion.Scope) error {
+ if err := Convert_core_LocalObjectReference_To_v1_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil {
+ return err
+ }
+ out.Optional = (*bool)(unsafe.Pointer(in.Optional))
+ return nil
+}
+
+// Convert_core_ConfigMapEnvSource_To_v1_ConfigMapEnvSource is an autogenerated conversion function.
+func Convert_core_ConfigMapEnvSource_To_v1_ConfigMapEnvSource(in *core.ConfigMapEnvSource, out *v1.ConfigMapEnvSource, s conversion.Scope) error {
+ return autoConvert_core_ConfigMapEnvSource_To_v1_ConfigMapEnvSource(in, out, s)
+}
+
+func autoConvert_v1_ConfigMapKeySelector_To_core_ConfigMapKeySelector(in *v1.ConfigMapKeySelector, out *core.ConfigMapKeySelector, s conversion.Scope) error {
+ if err := Convert_v1_LocalObjectReference_To_core_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil {
+ return err
+ }
+ out.Key = in.Key
+ out.Optional = (*bool)(unsafe.Pointer(in.Optional))
+ return nil
+}
+
+// Convert_v1_ConfigMapKeySelector_To_core_ConfigMapKeySelector is an autogenerated conversion function.
+func Convert_v1_ConfigMapKeySelector_To_core_ConfigMapKeySelector(in *v1.ConfigMapKeySelector, out *core.ConfigMapKeySelector, s conversion.Scope) error {
+ return autoConvert_v1_ConfigMapKeySelector_To_core_ConfigMapKeySelector(in, out, s)
+}
+
+func autoConvert_core_ConfigMapKeySelector_To_v1_ConfigMapKeySelector(in *core.ConfigMapKeySelector, out *v1.ConfigMapKeySelector, s conversion.Scope) error {
+ if err := Convert_core_LocalObjectReference_To_v1_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil {
+ return err
+ }
+ out.Key = in.Key
+ out.Optional = (*bool)(unsafe.Pointer(in.Optional))
+ return nil
+}
+
+// Convert_core_ConfigMapKeySelector_To_v1_ConfigMapKeySelector is an autogenerated conversion function.
+func Convert_core_ConfigMapKeySelector_To_v1_ConfigMapKeySelector(in *core.ConfigMapKeySelector, out *v1.ConfigMapKeySelector, s conversion.Scope) error {
+ return autoConvert_core_ConfigMapKeySelector_To_v1_ConfigMapKeySelector(in, out, s)
+}
+
+func autoConvert_v1_ConfigMapList_To_core_ConfigMapList(in *v1.ConfigMapList, out *core.ConfigMapList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ out.Items = *(*[]core.ConfigMap)(unsafe.Pointer(&in.Items))
+ return nil
+}
+
+// Convert_v1_ConfigMapList_To_core_ConfigMapList is an autogenerated conversion function.
+func Convert_v1_ConfigMapList_To_core_ConfigMapList(in *v1.ConfigMapList, out *core.ConfigMapList, s conversion.Scope) error {
+ return autoConvert_v1_ConfigMapList_To_core_ConfigMapList(in, out, s)
+}
+
+func autoConvert_core_ConfigMapList_To_v1_ConfigMapList(in *core.ConfigMapList, out *v1.ConfigMapList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ out.Items = *(*[]v1.ConfigMap)(unsafe.Pointer(&in.Items))
+ return nil
+}
+
+// Convert_core_ConfigMapList_To_v1_ConfigMapList is an autogenerated conversion function.
+func Convert_core_ConfigMapList_To_v1_ConfigMapList(in *core.ConfigMapList, out *v1.ConfigMapList, s conversion.Scope) error {
+ return autoConvert_core_ConfigMapList_To_v1_ConfigMapList(in, out, s)
+}
+
+func autoConvert_v1_ConfigMapProjection_To_core_ConfigMapProjection(in *v1.ConfigMapProjection, out *core.ConfigMapProjection, s conversion.Scope) error {
+ if err := Convert_v1_LocalObjectReference_To_core_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil {
+ return err
+ }
+ out.Items = *(*[]core.KeyToPath)(unsafe.Pointer(&in.Items))
+ out.Optional = (*bool)(unsafe.Pointer(in.Optional))
+ return nil
+}
+
+// Convert_v1_ConfigMapProjection_To_core_ConfigMapProjection is an autogenerated conversion function.
+func Convert_v1_ConfigMapProjection_To_core_ConfigMapProjection(in *v1.ConfigMapProjection, out *core.ConfigMapProjection, s conversion.Scope) error {
+ return autoConvert_v1_ConfigMapProjection_To_core_ConfigMapProjection(in, out, s)
+}
+
+func autoConvert_core_ConfigMapProjection_To_v1_ConfigMapProjection(in *core.ConfigMapProjection, out *v1.ConfigMapProjection, s conversion.Scope) error {
+ if err := Convert_core_LocalObjectReference_To_v1_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil {
+ return err
+ }
+ out.Items = *(*[]v1.KeyToPath)(unsafe.Pointer(&in.Items))
+ out.Optional = (*bool)(unsafe.Pointer(in.Optional))
+ return nil
+}
+
+// Convert_core_ConfigMapProjection_To_v1_ConfigMapProjection is an autogenerated conversion function.
+func Convert_core_ConfigMapProjection_To_v1_ConfigMapProjection(in *core.ConfigMapProjection, out *v1.ConfigMapProjection, s conversion.Scope) error {
+ return autoConvert_core_ConfigMapProjection_To_v1_ConfigMapProjection(in, out, s)
+}
+
+func autoConvert_v1_ConfigMapVolumeSource_To_core_ConfigMapVolumeSource(in *v1.ConfigMapVolumeSource, out *core.ConfigMapVolumeSource, s conversion.Scope) error {
+ if err := Convert_v1_LocalObjectReference_To_core_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil {
+ return err
+ }
+ out.Items = *(*[]core.KeyToPath)(unsafe.Pointer(&in.Items))
+ out.DefaultMode = (*int32)(unsafe.Pointer(in.DefaultMode))
+ out.Optional = (*bool)(unsafe.Pointer(in.Optional))
+ return nil
+}
+
+// Convert_v1_ConfigMapVolumeSource_To_core_ConfigMapVolumeSource is an autogenerated conversion function.
+func Convert_v1_ConfigMapVolumeSource_To_core_ConfigMapVolumeSource(in *v1.ConfigMapVolumeSource, out *core.ConfigMapVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_ConfigMapVolumeSource_To_core_ConfigMapVolumeSource(in, out, s)
+}
+
+func autoConvert_core_ConfigMapVolumeSource_To_v1_ConfigMapVolumeSource(in *core.ConfigMapVolumeSource, out *v1.ConfigMapVolumeSource, s conversion.Scope) error {
+ if err := Convert_core_LocalObjectReference_To_v1_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil {
+ return err
+ }
+ out.Items = *(*[]v1.KeyToPath)(unsafe.Pointer(&in.Items))
+ out.DefaultMode = (*int32)(unsafe.Pointer(in.DefaultMode))
+ out.Optional = (*bool)(unsafe.Pointer(in.Optional))
+ return nil
+}
+
+// Convert_core_ConfigMapVolumeSource_To_v1_ConfigMapVolumeSource is an autogenerated conversion function.
+func Convert_core_ConfigMapVolumeSource_To_v1_ConfigMapVolumeSource(in *core.ConfigMapVolumeSource, out *v1.ConfigMapVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_ConfigMapVolumeSource_To_v1_ConfigMapVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_Container_To_core_Container(in *v1.Container, out *core.Container, s conversion.Scope) error {
+ out.Name = in.Name
+ out.Image = in.Image
+ out.Command = *(*[]string)(unsafe.Pointer(&in.Command))
+ out.Args = *(*[]string)(unsafe.Pointer(&in.Args))
+ out.WorkingDir = in.WorkingDir
+ out.Ports = *(*[]core.ContainerPort)(unsafe.Pointer(&in.Ports))
+ out.EnvFrom = *(*[]core.EnvFromSource)(unsafe.Pointer(&in.EnvFrom))
+ out.Env = *(*[]core.EnvVar)(unsafe.Pointer(&in.Env))
+ if err := Convert_v1_ResourceRequirements_To_core_ResourceRequirements(&in.Resources, &out.Resources, s); err != nil {
+ return err
+ }
+ out.VolumeMounts = *(*[]core.VolumeMount)(unsafe.Pointer(&in.VolumeMounts))
+ out.LivenessProbe = (*core.Probe)(unsafe.Pointer(in.LivenessProbe))
+ out.ReadinessProbe = (*core.Probe)(unsafe.Pointer(in.ReadinessProbe))
+ out.Lifecycle = (*core.Lifecycle)(unsafe.Pointer(in.Lifecycle))
+ out.TerminationMessagePath = in.TerminationMessagePath
+ out.TerminationMessagePolicy = core.TerminationMessagePolicy(in.TerminationMessagePolicy)
+ out.ImagePullPolicy = core.PullPolicy(in.ImagePullPolicy)
+ if in.SecurityContext != nil {
+ in, out := &in.SecurityContext, &out.SecurityContext
+ *out = new(core.SecurityContext)
+ if err := Convert_v1_SecurityContext_To_core_SecurityContext(*in, *out, s); err != nil {
+ return err
+ }
+ } else {
+ out.SecurityContext = nil
+ }
+ out.Stdin = in.Stdin
+ out.StdinOnce = in.StdinOnce
+ out.TTY = in.TTY
+ return nil
+}
+
+// Convert_v1_Container_To_core_Container is an autogenerated conversion function.
+func Convert_v1_Container_To_core_Container(in *v1.Container, out *core.Container, s conversion.Scope) error {
+ return autoConvert_v1_Container_To_core_Container(in, out, s)
+}
+
+func autoConvert_core_Container_To_v1_Container(in *core.Container, out *v1.Container, s conversion.Scope) error {
+ out.Name = in.Name
+ out.Image = in.Image
+ out.Command = *(*[]string)(unsafe.Pointer(&in.Command))
+ out.Args = *(*[]string)(unsafe.Pointer(&in.Args))
+ out.WorkingDir = in.WorkingDir
+ out.Ports = *(*[]v1.ContainerPort)(unsafe.Pointer(&in.Ports))
+ out.EnvFrom = *(*[]v1.EnvFromSource)(unsafe.Pointer(&in.EnvFrom))
+ out.Env = *(*[]v1.EnvVar)(unsafe.Pointer(&in.Env))
+ if err := Convert_core_ResourceRequirements_To_v1_ResourceRequirements(&in.Resources, &out.Resources, s); err != nil {
+ return err
+ }
+ out.VolumeMounts = *(*[]v1.VolumeMount)(unsafe.Pointer(&in.VolumeMounts))
+ out.LivenessProbe = (*v1.Probe)(unsafe.Pointer(in.LivenessProbe))
+ out.ReadinessProbe = (*v1.Probe)(unsafe.Pointer(in.ReadinessProbe))
+ out.Lifecycle = (*v1.Lifecycle)(unsafe.Pointer(in.Lifecycle))
+ out.TerminationMessagePath = in.TerminationMessagePath
+ out.TerminationMessagePolicy = v1.TerminationMessagePolicy(in.TerminationMessagePolicy)
+ out.ImagePullPolicy = v1.PullPolicy(in.ImagePullPolicy)
+ if in.SecurityContext != nil {
+ in, out := &in.SecurityContext, &out.SecurityContext
+ *out = new(v1.SecurityContext)
+ if err := Convert_core_SecurityContext_To_v1_SecurityContext(*in, *out, s); err != nil {
+ return err
+ }
+ } else {
+ out.SecurityContext = nil
+ }
+ out.Stdin = in.Stdin
+ out.StdinOnce = in.StdinOnce
+ out.TTY = in.TTY
+ return nil
+}
+
+// Convert_core_Container_To_v1_Container is an autogenerated conversion function.
+func Convert_core_Container_To_v1_Container(in *core.Container, out *v1.Container, s conversion.Scope) error {
+ return autoConvert_core_Container_To_v1_Container(in, out, s)
+}
+
+func autoConvert_v1_ContainerImage_To_core_ContainerImage(in *v1.ContainerImage, out *core.ContainerImage, s conversion.Scope) error {
+ out.Names = *(*[]string)(unsafe.Pointer(&in.Names))
+ out.SizeBytes = in.SizeBytes
+ return nil
+}
+
+// Convert_v1_ContainerImage_To_core_ContainerImage is an autogenerated conversion function.
+func Convert_v1_ContainerImage_To_core_ContainerImage(in *v1.ContainerImage, out *core.ContainerImage, s conversion.Scope) error {
+ return autoConvert_v1_ContainerImage_To_core_ContainerImage(in, out, s)
+}
+
+func autoConvert_core_ContainerImage_To_v1_ContainerImage(in *core.ContainerImage, out *v1.ContainerImage, s conversion.Scope) error {
+ out.Names = *(*[]string)(unsafe.Pointer(&in.Names))
+ out.SizeBytes = in.SizeBytes
+ return nil
+}
+
+// Convert_core_ContainerImage_To_v1_ContainerImage is an autogenerated conversion function.
+func Convert_core_ContainerImage_To_v1_ContainerImage(in *core.ContainerImage, out *v1.ContainerImage, s conversion.Scope) error {
+ return autoConvert_core_ContainerImage_To_v1_ContainerImage(in, out, s)
+}
+
+func autoConvert_v1_ContainerPort_To_core_ContainerPort(in *v1.ContainerPort, out *core.ContainerPort, s conversion.Scope) error {
+ out.Name = in.Name
+ out.HostPort = in.HostPort
+ out.ContainerPort = in.ContainerPort
+ out.Protocol = core.Protocol(in.Protocol)
+ out.HostIP = in.HostIP
+ return nil
+}
+
+// Convert_v1_ContainerPort_To_core_ContainerPort is an autogenerated conversion function.
+func Convert_v1_ContainerPort_To_core_ContainerPort(in *v1.ContainerPort, out *core.ContainerPort, s conversion.Scope) error {
+ return autoConvert_v1_ContainerPort_To_core_ContainerPort(in, out, s)
+}
+
+func autoConvert_core_ContainerPort_To_v1_ContainerPort(in *core.ContainerPort, out *v1.ContainerPort, s conversion.Scope) error {
+ out.Name = in.Name
+ out.HostPort = in.HostPort
+ out.ContainerPort = in.ContainerPort
+ out.Protocol = v1.Protocol(in.Protocol)
+ out.HostIP = in.HostIP
+ return nil
+}
+
+// Convert_core_ContainerPort_To_v1_ContainerPort is an autogenerated conversion function.
+func Convert_core_ContainerPort_To_v1_ContainerPort(in *core.ContainerPort, out *v1.ContainerPort, s conversion.Scope) error {
+ return autoConvert_core_ContainerPort_To_v1_ContainerPort(in, out, s)
+}
+
+func autoConvert_v1_ContainerState_To_core_ContainerState(in *v1.ContainerState, out *core.ContainerState, s conversion.Scope) error {
+ out.Waiting = (*core.ContainerStateWaiting)(unsafe.Pointer(in.Waiting))
+ out.Running = (*core.ContainerStateRunning)(unsafe.Pointer(in.Running))
+ out.Terminated = (*core.ContainerStateTerminated)(unsafe.Pointer(in.Terminated))
+ return nil
+}
+
+// Convert_v1_ContainerState_To_core_ContainerState is an autogenerated conversion function.
+func Convert_v1_ContainerState_To_core_ContainerState(in *v1.ContainerState, out *core.ContainerState, s conversion.Scope) error {
+ return autoConvert_v1_ContainerState_To_core_ContainerState(in, out, s)
+}
+
+func autoConvert_core_ContainerState_To_v1_ContainerState(in *core.ContainerState, out *v1.ContainerState, s conversion.Scope) error {
+ out.Waiting = (*v1.ContainerStateWaiting)(unsafe.Pointer(in.Waiting))
+ out.Running = (*v1.ContainerStateRunning)(unsafe.Pointer(in.Running))
+ out.Terminated = (*v1.ContainerStateTerminated)(unsafe.Pointer(in.Terminated))
+ return nil
+}
+
+// Convert_core_ContainerState_To_v1_ContainerState is an autogenerated conversion function.
+func Convert_core_ContainerState_To_v1_ContainerState(in *core.ContainerState, out *v1.ContainerState, s conversion.Scope) error {
+ return autoConvert_core_ContainerState_To_v1_ContainerState(in, out, s)
+}
+
+func autoConvert_v1_ContainerStateRunning_To_core_ContainerStateRunning(in *v1.ContainerStateRunning, out *core.ContainerStateRunning, s conversion.Scope) error {
+ out.StartedAt = in.StartedAt
+ return nil
+}
+
+// Convert_v1_ContainerStateRunning_To_core_ContainerStateRunning is an autogenerated conversion function.
+func Convert_v1_ContainerStateRunning_To_core_ContainerStateRunning(in *v1.ContainerStateRunning, out *core.ContainerStateRunning, s conversion.Scope) error {
+ return autoConvert_v1_ContainerStateRunning_To_core_ContainerStateRunning(in, out, s)
+}
+
+func autoConvert_core_ContainerStateRunning_To_v1_ContainerStateRunning(in *core.ContainerStateRunning, out *v1.ContainerStateRunning, s conversion.Scope) error {
+ out.StartedAt = in.StartedAt
+ return nil
+}
+
+// Convert_core_ContainerStateRunning_To_v1_ContainerStateRunning is an autogenerated conversion function.
+func Convert_core_ContainerStateRunning_To_v1_ContainerStateRunning(in *core.ContainerStateRunning, out *v1.ContainerStateRunning, s conversion.Scope) error {
+ return autoConvert_core_ContainerStateRunning_To_v1_ContainerStateRunning(in, out, s)
+}
+
+func autoConvert_v1_ContainerStateTerminated_To_core_ContainerStateTerminated(in *v1.ContainerStateTerminated, out *core.ContainerStateTerminated, s conversion.Scope) error {
+ out.ExitCode = in.ExitCode
+ out.Signal = in.Signal
+ out.Reason = in.Reason
+ out.Message = in.Message
+ out.StartedAt = in.StartedAt
+ out.FinishedAt = in.FinishedAt
+ out.ContainerID = in.ContainerID
+ return nil
+}
+
+// Convert_v1_ContainerStateTerminated_To_core_ContainerStateTerminated is an autogenerated conversion function.
+func Convert_v1_ContainerStateTerminated_To_core_ContainerStateTerminated(in *v1.ContainerStateTerminated, out *core.ContainerStateTerminated, s conversion.Scope) error {
+ return autoConvert_v1_ContainerStateTerminated_To_core_ContainerStateTerminated(in, out, s)
+}
+
+func autoConvert_core_ContainerStateTerminated_To_v1_ContainerStateTerminated(in *core.ContainerStateTerminated, out *v1.ContainerStateTerminated, s conversion.Scope) error {
+ out.ExitCode = in.ExitCode
+ out.Signal = in.Signal
+ out.Reason = in.Reason
+ out.Message = in.Message
+ out.StartedAt = in.StartedAt
+ out.FinishedAt = in.FinishedAt
+ out.ContainerID = in.ContainerID
+ return nil
+}
+
+// Convert_core_ContainerStateTerminated_To_v1_ContainerStateTerminated is an autogenerated conversion function.
+func Convert_core_ContainerStateTerminated_To_v1_ContainerStateTerminated(in *core.ContainerStateTerminated, out *v1.ContainerStateTerminated, s conversion.Scope) error {
+ return autoConvert_core_ContainerStateTerminated_To_v1_ContainerStateTerminated(in, out, s)
+}
+
+func autoConvert_v1_ContainerStateWaiting_To_core_ContainerStateWaiting(in *v1.ContainerStateWaiting, out *core.ContainerStateWaiting, s conversion.Scope) error {
+ out.Reason = in.Reason
+ out.Message = in.Message
+ return nil
+}
+
+// Convert_v1_ContainerStateWaiting_To_core_ContainerStateWaiting is an autogenerated conversion function.
+func Convert_v1_ContainerStateWaiting_To_core_ContainerStateWaiting(in *v1.ContainerStateWaiting, out *core.ContainerStateWaiting, s conversion.Scope) error {
+ return autoConvert_v1_ContainerStateWaiting_To_core_ContainerStateWaiting(in, out, s)
+}
+
+func autoConvert_core_ContainerStateWaiting_To_v1_ContainerStateWaiting(in *core.ContainerStateWaiting, out *v1.ContainerStateWaiting, s conversion.Scope) error {
+ out.Reason = in.Reason
+ out.Message = in.Message
+ return nil
+}
+
+// Convert_core_ContainerStateWaiting_To_v1_ContainerStateWaiting is an autogenerated conversion function.
+func Convert_core_ContainerStateWaiting_To_v1_ContainerStateWaiting(in *core.ContainerStateWaiting, out *v1.ContainerStateWaiting, s conversion.Scope) error {
+ return autoConvert_core_ContainerStateWaiting_To_v1_ContainerStateWaiting(in, out, s)
+}
+
+func autoConvert_v1_ContainerStatus_To_core_ContainerStatus(in *v1.ContainerStatus, out *core.ContainerStatus, s conversion.Scope) error {
+ out.Name = in.Name
+ if err := Convert_v1_ContainerState_To_core_ContainerState(&in.State, &out.State, s); err != nil {
+ return err
+ }
+ if err := Convert_v1_ContainerState_To_core_ContainerState(&in.LastTerminationState, &out.LastTerminationState, s); err != nil {
+ return err
+ }
+ out.Ready = in.Ready
+ out.RestartCount = in.RestartCount
+ out.Image = in.Image
+ out.ImageID = in.ImageID
+ out.ContainerID = in.ContainerID
+ return nil
+}
+
+// Convert_v1_ContainerStatus_To_core_ContainerStatus is an autogenerated conversion function.
+func Convert_v1_ContainerStatus_To_core_ContainerStatus(in *v1.ContainerStatus, out *core.ContainerStatus, s conversion.Scope) error {
+ return autoConvert_v1_ContainerStatus_To_core_ContainerStatus(in, out, s)
+}
+
+func autoConvert_core_ContainerStatus_To_v1_ContainerStatus(in *core.ContainerStatus, out *v1.ContainerStatus, s conversion.Scope) error {
+ out.Name = in.Name
+ if err := Convert_core_ContainerState_To_v1_ContainerState(&in.State, &out.State, s); err != nil {
+ return err
+ }
+ if err := Convert_core_ContainerState_To_v1_ContainerState(&in.LastTerminationState, &out.LastTerminationState, s); err != nil {
+ return err
+ }
+ out.Ready = in.Ready
+ out.RestartCount = in.RestartCount
+ out.Image = in.Image
+ out.ImageID = in.ImageID
+ out.ContainerID = in.ContainerID
+ return nil
+}
+
+// Convert_core_ContainerStatus_To_v1_ContainerStatus is an autogenerated conversion function.
+func Convert_core_ContainerStatus_To_v1_ContainerStatus(in *core.ContainerStatus, out *v1.ContainerStatus, s conversion.Scope) error {
+ return autoConvert_core_ContainerStatus_To_v1_ContainerStatus(in, out, s)
+}
+
+func autoConvert_v1_DaemonEndpoint_To_core_DaemonEndpoint(in *v1.DaemonEndpoint, out *core.DaemonEndpoint, s conversion.Scope) error {
+ out.Port = in.Port
+ return nil
+}
+
+// Convert_v1_DaemonEndpoint_To_core_DaemonEndpoint is an autogenerated conversion function.
+func Convert_v1_DaemonEndpoint_To_core_DaemonEndpoint(in *v1.DaemonEndpoint, out *core.DaemonEndpoint, s conversion.Scope) error {
+ return autoConvert_v1_DaemonEndpoint_To_core_DaemonEndpoint(in, out, s)
+}
+
+func autoConvert_core_DaemonEndpoint_To_v1_DaemonEndpoint(in *core.DaemonEndpoint, out *v1.DaemonEndpoint, s conversion.Scope) error {
+ out.Port = in.Port
+ return nil
+}
+
+// Convert_core_DaemonEndpoint_To_v1_DaemonEndpoint is an autogenerated conversion function.
+func Convert_core_DaemonEndpoint_To_v1_DaemonEndpoint(in *core.DaemonEndpoint, out *v1.DaemonEndpoint, s conversion.Scope) error {
+ return autoConvert_core_DaemonEndpoint_To_v1_DaemonEndpoint(in, out, s)
+}
+
+func autoConvert_v1_DeleteOptions_To_core_DeleteOptions(in *v1.DeleteOptions, out *core.DeleteOptions, s conversion.Scope) error {
+ out.GracePeriodSeconds = (*int64)(unsafe.Pointer(in.GracePeriodSeconds))
+ out.Preconditions = (*core.Preconditions)(unsafe.Pointer(in.Preconditions))
+ out.OrphanDependents = (*bool)(unsafe.Pointer(in.OrphanDependents))
+ out.PropagationPolicy = (*core.DeletionPropagation)(unsafe.Pointer(in.PropagationPolicy))
+ return nil
+}
+
+// Convert_v1_DeleteOptions_To_core_DeleteOptions is an autogenerated conversion function.
+func Convert_v1_DeleteOptions_To_core_DeleteOptions(in *v1.DeleteOptions, out *core.DeleteOptions, s conversion.Scope) error {
+ return autoConvert_v1_DeleteOptions_To_core_DeleteOptions(in, out, s)
+}
+
+func autoConvert_core_DeleteOptions_To_v1_DeleteOptions(in *core.DeleteOptions, out *v1.DeleteOptions, s conversion.Scope) error {
+ out.GracePeriodSeconds = (*int64)(unsafe.Pointer(in.GracePeriodSeconds))
+ out.Preconditions = (*v1.Preconditions)(unsafe.Pointer(in.Preconditions))
+ out.OrphanDependents = (*bool)(unsafe.Pointer(in.OrphanDependents))
+ out.PropagationPolicy = (*v1.DeletionPropagation)(unsafe.Pointer(in.PropagationPolicy))
+ return nil
+}
+
+// Convert_core_DeleteOptions_To_v1_DeleteOptions is an autogenerated conversion function.
+func Convert_core_DeleteOptions_To_v1_DeleteOptions(in *core.DeleteOptions, out *v1.DeleteOptions, s conversion.Scope) error {
+ return autoConvert_core_DeleteOptions_To_v1_DeleteOptions(in, out, s)
+}
+
+func autoConvert_v1_DownwardAPIProjection_To_core_DownwardAPIProjection(in *v1.DownwardAPIProjection, out *core.DownwardAPIProjection, s conversion.Scope) error {
+ out.Items = *(*[]core.DownwardAPIVolumeFile)(unsafe.Pointer(&in.Items))
+ return nil
+}
+
+// Convert_v1_DownwardAPIProjection_To_core_DownwardAPIProjection is an autogenerated conversion function.
+func Convert_v1_DownwardAPIProjection_To_core_DownwardAPIProjection(in *v1.DownwardAPIProjection, out *core.DownwardAPIProjection, s conversion.Scope) error {
+ return autoConvert_v1_DownwardAPIProjection_To_core_DownwardAPIProjection(in, out, s)
+}
+
+func autoConvert_core_DownwardAPIProjection_To_v1_DownwardAPIProjection(in *core.DownwardAPIProjection, out *v1.DownwardAPIProjection, s conversion.Scope) error {
+ out.Items = *(*[]v1.DownwardAPIVolumeFile)(unsafe.Pointer(&in.Items))
+ return nil
+}
+
+// Convert_core_DownwardAPIProjection_To_v1_DownwardAPIProjection is an autogenerated conversion function.
+func Convert_core_DownwardAPIProjection_To_v1_DownwardAPIProjection(in *core.DownwardAPIProjection, out *v1.DownwardAPIProjection, s conversion.Scope) error {
+ return autoConvert_core_DownwardAPIProjection_To_v1_DownwardAPIProjection(in, out, s)
+}
+
+func autoConvert_v1_DownwardAPIVolumeFile_To_core_DownwardAPIVolumeFile(in *v1.DownwardAPIVolumeFile, out *core.DownwardAPIVolumeFile, s conversion.Scope) error {
+ out.Path = in.Path
+ out.FieldRef = (*core.ObjectFieldSelector)(unsafe.Pointer(in.FieldRef))
+ out.ResourceFieldRef = (*core.ResourceFieldSelector)(unsafe.Pointer(in.ResourceFieldRef))
+ out.Mode = (*int32)(unsafe.Pointer(in.Mode))
+ return nil
+}
+
+// Convert_v1_DownwardAPIVolumeFile_To_core_DownwardAPIVolumeFile is an autogenerated conversion function.
+func Convert_v1_DownwardAPIVolumeFile_To_core_DownwardAPIVolumeFile(in *v1.DownwardAPIVolumeFile, out *core.DownwardAPIVolumeFile, s conversion.Scope) error {
+ return autoConvert_v1_DownwardAPIVolumeFile_To_core_DownwardAPIVolumeFile(in, out, s)
+}
+
+func autoConvert_core_DownwardAPIVolumeFile_To_v1_DownwardAPIVolumeFile(in *core.DownwardAPIVolumeFile, out *v1.DownwardAPIVolumeFile, s conversion.Scope) error {
+ out.Path = in.Path
+ out.FieldRef = (*v1.ObjectFieldSelector)(unsafe.Pointer(in.FieldRef))
+ out.ResourceFieldRef = (*v1.ResourceFieldSelector)(unsafe.Pointer(in.ResourceFieldRef))
+ out.Mode = (*int32)(unsafe.Pointer(in.Mode))
+ return nil
+}
+
+// Convert_core_DownwardAPIVolumeFile_To_v1_DownwardAPIVolumeFile is an autogenerated conversion function.
+func Convert_core_DownwardAPIVolumeFile_To_v1_DownwardAPIVolumeFile(in *core.DownwardAPIVolumeFile, out *v1.DownwardAPIVolumeFile, s conversion.Scope) error {
+ return autoConvert_core_DownwardAPIVolumeFile_To_v1_DownwardAPIVolumeFile(in, out, s)
+}
+
+func autoConvert_v1_DownwardAPIVolumeSource_To_core_DownwardAPIVolumeSource(in *v1.DownwardAPIVolumeSource, out *core.DownwardAPIVolumeSource, s conversion.Scope) error {
+ out.Items = *(*[]core.DownwardAPIVolumeFile)(unsafe.Pointer(&in.Items))
+ out.DefaultMode = (*int32)(unsafe.Pointer(in.DefaultMode))
+ return nil
+}
+
+// Convert_v1_DownwardAPIVolumeSource_To_core_DownwardAPIVolumeSource is an autogenerated conversion function.
+func Convert_v1_DownwardAPIVolumeSource_To_core_DownwardAPIVolumeSource(in *v1.DownwardAPIVolumeSource, out *core.DownwardAPIVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_DownwardAPIVolumeSource_To_core_DownwardAPIVolumeSource(in, out, s)
+}
+
+func autoConvert_core_DownwardAPIVolumeSource_To_v1_DownwardAPIVolumeSource(in *core.DownwardAPIVolumeSource, out *v1.DownwardAPIVolumeSource, s conversion.Scope) error {
+ out.Items = *(*[]v1.DownwardAPIVolumeFile)(unsafe.Pointer(&in.Items))
+ out.DefaultMode = (*int32)(unsafe.Pointer(in.DefaultMode))
+ return nil
+}
+
+// Convert_core_DownwardAPIVolumeSource_To_v1_DownwardAPIVolumeSource is an autogenerated conversion function.
+func Convert_core_DownwardAPIVolumeSource_To_v1_DownwardAPIVolumeSource(in *core.DownwardAPIVolumeSource, out *v1.DownwardAPIVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_DownwardAPIVolumeSource_To_v1_DownwardAPIVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_EmptyDirVolumeSource_To_core_EmptyDirVolumeSource(in *v1.EmptyDirVolumeSource, out *core.EmptyDirVolumeSource, s conversion.Scope) error {
+ out.Medium = core.StorageMedium(in.Medium)
+ out.SizeLimit = (*resource.Quantity)(unsafe.Pointer(in.SizeLimit))
+ return nil
+}
+
+// Convert_v1_EmptyDirVolumeSource_To_core_EmptyDirVolumeSource is an autogenerated conversion function.
+func Convert_v1_EmptyDirVolumeSource_To_core_EmptyDirVolumeSource(in *v1.EmptyDirVolumeSource, out *core.EmptyDirVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_EmptyDirVolumeSource_To_core_EmptyDirVolumeSource(in, out, s)
+}
+
+func autoConvert_core_EmptyDirVolumeSource_To_v1_EmptyDirVolumeSource(in *core.EmptyDirVolumeSource, out *v1.EmptyDirVolumeSource, s conversion.Scope) error {
+ out.Medium = v1.StorageMedium(in.Medium)
+ out.SizeLimit = (*resource.Quantity)(unsafe.Pointer(in.SizeLimit))
+ return nil
+}
+
+// Convert_core_EmptyDirVolumeSource_To_v1_EmptyDirVolumeSource is an autogenerated conversion function.
+func Convert_core_EmptyDirVolumeSource_To_v1_EmptyDirVolumeSource(in *core.EmptyDirVolumeSource, out *v1.EmptyDirVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_EmptyDirVolumeSource_To_v1_EmptyDirVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_EndpointAddress_To_core_EndpointAddress(in *v1.EndpointAddress, out *core.EndpointAddress, s conversion.Scope) error {
+ out.IP = in.IP
+ out.Hostname = in.Hostname
+ out.NodeName = (*string)(unsafe.Pointer(in.NodeName))
+ out.TargetRef = (*core.ObjectReference)(unsafe.Pointer(in.TargetRef))
+ return nil
+}
+
+// Convert_v1_EndpointAddress_To_core_EndpointAddress is an autogenerated conversion function.
+func Convert_v1_EndpointAddress_To_core_EndpointAddress(in *v1.EndpointAddress, out *core.EndpointAddress, s conversion.Scope) error {
+ return autoConvert_v1_EndpointAddress_To_core_EndpointAddress(in, out, s)
+}
+
+func autoConvert_core_EndpointAddress_To_v1_EndpointAddress(in *core.EndpointAddress, out *v1.EndpointAddress, s conversion.Scope) error {
+ out.IP = in.IP
+ out.Hostname = in.Hostname
+ out.NodeName = (*string)(unsafe.Pointer(in.NodeName))
+ out.TargetRef = (*v1.ObjectReference)(unsafe.Pointer(in.TargetRef))
+ return nil
+}
+
+// Convert_core_EndpointAddress_To_v1_EndpointAddress is an autogenerated conversion function.
+func Convert_core_EndpointAddress_To_v1_EndpointAddress(in *core.EndpointAddress, out *v1.EndpointAddress, s conversion.Scope) error {
+ return autoConvert_core_EndpointAddress_To_v1_EndpointAddress(in, out, s)
+}
+
+func autoConvert_v1_EndpointPort_To_core_EndpointPort(in *v1.EndpointPort, out *core.EndpointPort, s conversion.Scope) error {
+ out.Name = in.Name
+ out.Port = in.Port
+ out.Protocol = core.Protocol(in.Protocol)
+ return nil
+}
+
+// Convert_v1_EndpointPort_To_core_EndpointPort is an autogenerated conversion function.
+func Convert_v1_EndpointPort_To_core_EndpointPort(in *v1.EndpointPort, out *core.EndpointPort, s conversion.Scope) error {
+ return autoConvert_v1_EndpointPort_To_core_EndpointPort(in, out, s)
+}
+
+func autoConvert_core_EndpointPort_To_v1_EndpointPort(in *core.EndpointPort, out *v1.EndpointPort, s conversion.Scope) error {
+ out.Name = in.Name
+ out.Port = in.Port
+ out.Protocol = v1.Protocol(in.Protocol)
+ return nil
+}
+
+// Convert_core_EndpointPort_To_v1_EndpointPort is an autogenerated conversion function.
+func Convert_core_EndpointPort_To_v1_EndpointPort(in *core.EndpointPort, out *v1.EndpointPort, s conversion.Scope) error {
+ return autoConvert_core_EndpointPort_To_v1_EndpointPort(in, out, s)
+}
+
+func autoConvert_v1_EndpointSubset_To_core_EndpointSubset(in *v1.EndpointSubset, out *core.EndpointSubset, s conversion.Scope) error {
+ out.Addresses = *(*[]core.EndpointAddress)(unsafe.Pointer(&in.Addresses))
+ out.NotReadyAddresses = *(*[]core.EndpointAddress)(unsafe.Pointer(&in.NotReadyAddresses))
+ out.Ports = *(*[]core.EndpointPort)(unsafe.Pointer(&in.Ports))
+ return nil
+}
+
+// Convert_v1_EndpointSubset_To_core_EndpointSubset is an autogenerated conversion function.
+func Convert_v1_EndpointSubset_To_core_EndpointSubset(in *v1.EndpointSubset, out *core.EndpointSubset, s conversion.Scope) error {
+ return autoConvert_v1_EndpointSubset_To_core_EndpointSubset(in, out, s)
+}
+
+func autoConvert_core_EndpointSubset_To_v1_EndpointSubset(in *core.EndpointSubset, out *v1.EndpointSubset, s conversion.Scope) error {
+ out.Addresses = *(*[]v1.EndpointAddress)(unsafe.Pointer(&in.Addresses))
+ out.NotReadyAddresses = *(*[]v1.EndpointAddress)(unsafe.Pointer(&in.NotReadyAddresses))
+ out.Ports = *(*[]v1.EndpointPort)(unsafe.Pointer(&in.Ports))
+ return nil
+}
+
+// Convert_core_EndpointSubset_To_v1_EndpointSubset is an autogenerated conversion function.
+func Convert_core_EndpointSubset_To_v1_EndpointSubset(in *core.EndpointSubset, out *v1.EndpointSubset, s conversion.Scope) error {
+ return autoConvert_core_EndpointSubset_To_v1_EndpointSubset(in, out, s)
+}
+
+func autoConvert_v1_Endpoints_To_core_Endpoints(in *v1.Endpoints, out *core.Endpoints, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ out.Subsets = *(*[]core.EndpointSubset)(unsafe.Pointer(&in.Subsets))
+ return nil
+}
+
+// Convert_v1_Endpoints_To_core_Endpoints is an autogenerated conversion function.
+func Convert_v1_Endpoints_To_core_Endpoints(in *v1.Endpoints, out *core.Endpoints, s conversion.Scope) error {
+ return autoConvert_v1_Endpoints_To_core_Endpoints(in, out, s)
+}
+
+func autoConvert_core_Endpoints_To_v1_Endpoints(in *core.Endpoints, out *v1.Endpoints, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ out.Subsets = *(*[]v1.EndpointSubset)(unsafe.Pointer(&in.Subsets))
+ return nil
+}
+
+// Convert_core_Endpoints_To_v1_Endpoints is an autogenerated conversion function.
+func Convert_core_Endpoints_To_v1_Endpoints(in *core.Endpoints, out *v1.Endpoints, s conversion.Scope) error {
+ return autoConvert_core_Endpoints_To_v1_Endpoints(in, out, s)
+}
+
+func autoConvert_v1_EndpointsList_To_core_EndpointsList(in *v1.EndpointsList, out *core.EndpointsList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ out.Items = *(*[]core.Endpoints)(unsafe.Pointer(&in.Items))
+ return nil
+}
+
+// Convert_v1_EndpointsList_To_core_EndpointsList is an autogenerated conversion function.
+func Convert_v1_EndpointsList_To_core_EndpointsList(in *v1.EndpointsList, out *core.EndpointsList, s conversion.Scope) error {
+ return autoConvert_v1_EndpointsList_To_core_EndpointsList(in, out, s)
+}
+
+func autoConvert_core_EndpointsList_To_v1_EndpointsList(in *core.EndpointsList, out *v1.EndpointsList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ out.Items = *(*[]v1.Endpoints)(unsafe.Pointer(&in.Items))
+ return nil
+}
+
+// Convert_core_EndpointsList_To_v1_EndpointsList is an autogenerated conversion function.
+func Convert_core_EndpointsList_To_v1_EndpointsList(in *core.EndpointsList, out *v1.EndpointsList, s conversion.Scope) error {
+ return autoConvert_core_EndpointsList_To_v1_EndpointsList(in, out, s)
+}
+
+func autoConvert_v1_EnvFromSource_To_core_EnvFromSource(in *v1.EnvFromSource, out *core.EnvFromSource, s conversion.Scope) error {
+ out.Prefix = in.Prefix
+ out.ConfigMapRef = (*core.ConfigMapEnvSource)(unsafe.Pointer(in.ConfigMapRef))
+ out.SecretRef = (*core.SecretEnvSource)(unsafe.Pointer(in.SecretRef))
+ return nil
+}
+
+// Convert_v1_EnvFromSource_To_core_EnvFromSource is an autogenerated conversion function.
+func Convert_v1_EnvFromSource_To_core_EnvFromSource(in *v1.EnvFromSource, out *core.EnvFromSource, s conversion.Scope) error {
+ return autoConvert_v1_EnvFromSource_To_core_EnvFromSource(in, out, s)
+}
+
+func autoConvert_core_EnvFromSource_To_v1_EnvFromSource(in *core.EnvFromSource, out *v1.EnvFromSource, s conversion.Scope) error {
+ out.Prefix = in.Prefix
+ out.ConfigMapRef = (*v1.ConfigMapEnvSource)(unsafe.Pointer(in.ConfigMapRef))
+ out.SecretRef = (*v1.SecretEnvSource)(unsafe.Pointer(in.SecretRef))
+ return nil
+}
+
+// Convert_core_EnvFromSource_To_v1_EnvFromSource is an autogenerated conversion function.
+func Convert_core_EnvFromSource_To_v1_EnvFromSource(in *core.EnvFromSource, out *v1.EnvFromSource, s conversion.Scope) error {
+ return autoConvert_core_EnvFromSource_To_v1_EnvFromSource(in, out, s)
+}
+
+func autoConvert_v1_EnvVar_To_core_EnvVar(in *v1.EnvVar, out *core.EnvVar, s conversion.Scope) error {
+ out.Name = in.Name
+ out.Value = in.Value
+ out.ValueFrom = (*core.EnvVarSource)(unsafe.Pointer(in.ValueFrom))
+ return nil
+}
+
+// Convert_v1_EnvVar_To_core_EnvVar is an autogenerated conversion function.
+func Convert_v1_EnvVar_To_core_EnvVar(in *v1.EnvVar, out *core.EnvVar, s conversion.Scope) error {
+ return autoConvert_v1_EnvVar_To_core_EnvVar(in, out, s)
+}
+
+func autoConvert_core_EnvVar_To_v1_EnvVar(in *core.EnvVar, out *v1.EnvVar, s conversion.Scope) error {
+ out.Name = in.Name
+ out.Value = in.Value
+ out.ValueFrom = (*v1.EnvVarSource)(unsafe.Pointer(in.ValueFrom))
+ return nil
+}
+
+// Convert_core_EnvVar_To_v1_EnvVar is an autogenerated conversion function.
+func Convert_core_EnvVar_To_v1_EnvVar(in *core.EnvVar, out *v1.EnvVar, s conversion.Scope) error {
+ return autoConvert_core_EnvVar_To_v1_EnvVar(in, out, s)
+}
+
+func autoConvert_v1_EnvVarSource_To_core_EnvVarSource(in *v1.EnvVarSource, out *core.EnvVarSource, s conversion.Scope) error {
+ out.FieldRef = (*core.ObjectFieldSelector)(unsafe.Pointer(in.FieldRef))
+ out.ResourceFieldRef = (*core.ResourceFieldSelector)(unsafe.Pointer(in.ResourceFieldRef))
+ out.ConfigMapKeyRef = (*core.ConfigMapKeySelector)(unsafe.Pointer(in.ConfigMapKeyRef))
+ out.SecretKeyRef = (*core.SecretKeySelector)(unsafe.Pointer(in.SecretKeyRef))
+ return nil
+}
+
+// Convert_v1_EnvVarSource_To_core_EnvVarSource is an autogenerated conversion function.
+func Convert_v1_EnvVarSource_To_core_EnvVarSource(in *v1.EnvVarSource, out *core.EnvVarSource, s conversion.Scope) error {
+ return autoConvert_v1_EnvVarSource_To_core_EnvVarSource(in, out, s)
+}
+
+func autoConvert_core_EnvVarSource_To_v1_EnvVarSource(in *core.EnvVarSource, out *v1.EnvVarSource, s conversion.Scope) error {
+ out.FieldRef = (*v1.ObjectFieldSelector)(unsafe.Pointer(in.FieldRef))
+ out.ResourceFieldRef = (*v1.ResourceFieldSelector)(unsafe.Pointer(in.ResourceFieldRef))
+ out.ConfigMapKeyRef = (*v1.ConfigMapKeySelector)(unsafe.Pointer(in.ConfigMapKeyRef))
+ out.SecretKeyRef = (*v1.SecretKeySelector)(unsafe.Pointer(in.SecretKeyRef))
+ return nil
+}
+
+// Convert_core_EnvVarSource_To_v1_EnvVarSource is an autogenerated conversion function.
+func Convert_core_EnvVarSource_To_v1_EnvVarSource(in *core.EnvVarSource, out *v1.EnvVarSource, s conversion.Scope) error {
+ return autoConvert_core_EnvVarSource_To_v1_EnvVarSource(in, out, s)
+}
+
+func autoConvert_v1_Event_To_core_Event(in *v1.Event, out *core.Event, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ if err := Convert_v1_ObjectReference_To_core_ObjectReference(&in.InvolvedObject, &out.InvolvedObject, s); err != nil {
+ return err
+ }
+ out.Reason = in.Reason
+ out.Message = in.Message
+ if err := Convert_v1_EventSource_To_core_EventSource(&in.Source, &out.Source, s); err != nil {
+ return err
+ }
+ out.FirstTimestamp = in.FirstTimestamp
+ out.LastTimestamp = in.LastTimestamp
+ out.Count = in.Count
+ out.Type = in.Type
+ return nil
+}
+
+// Convert_v1_Event_To_core_Event is an autogenerated conversion function.
+func Convert_v1_Event_To_core_Event(in *v1.Event, out *core.Event, s conversion.Scope) error {
+ return autoConvert_v1_Event_To_core_Event(in, out, s)
+}
+
+func autoConvert_core_Event_To_v1_Event(in *core.Event, out *v1.Event, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ if err := Convert_core_ObjectReference_To_v1_ObjectReference(&in.InvolvedObject, &out.InvolvedObject, s); err != nil {
+ return err
+ }
+ out.Reason = in.Reason
+ out.Message = in.Message
+ if err := Convert_core_EventSource_To_v1_EventSource(&in.Source, &out.Source, s); err != nil {
+ return err
+ }
+ out.FirstTimestamp = in.FirstTimestamp
+ out.LastTimestamp = in.LastTimestamp
+ out.Count = in.Count
+ out.Type = in.Type
+ return nil
+}
+
+// Convert_core_Event_To_v1_Event is an autogenerated conversion function.
+func Convert_core_Event_To_v1_Event(in *core.Event, out *v1.Event, s conversion.Scope) error {
+ return autoConvert_core_Event_To_v1_Event(in, out, s)
+}
+
+func autoConvert_v1_EventList_To_core_EventList(in *v1.EventList, out *core.EventList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ out.Items = *(*[]core.Event)(unsafe.Pointer(&in.Items))
+ return nil
+}
+
+// Convert_v1_EventList_To_core_EventList is an autogenerated conversion function.
+func Convert_v1_EventList_To_core_EventList(in *v1.EventList, out *core.EventList, s conversion.Scope) error {
+ return autoConvert_v1_EventList_To_core_EventList(in, out, s)
+}
+
+func autoConvert_core_EventList_To_v1_EventList(in *core.EventList, out *v1.EventList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ out.Items = *(*[]v1.Event)(unsafe.Pointer(&in.Items))
+ return nil
+}
+
+// Convert_core_EventList_To_v1_EventList is an autogenerated conversion function.
+func Convert_core_EventList_To_v1_EventList(in *core.EventList, out *v1.EventList, s conversion.Scope) error {
+ return autoConvert_core_EventList_To_v1_EventList(in, out, s)
+}
+
+func autoConvert_v1_EventSource_To_core_EventSource(in *v1.EventSource, out *core.EventSource, s conversion.Scope) error {
+ out.Component = in.Component
+ out.Host = in.Host
+ return nil
+}
+
+// Convert_v1_EventSource_To_core_EventSource is an autogenerated conversion function.
+func Convert_v1_EventSource_To_core_EventSource(in *v1.EventSource, out *core.EventSource, s conversion.Scope) error {
+ return autoConvert_v1_EventSource_To_core_EventSource(in, out, s)
+}
+
+func autoConvert_core_EventSource_To_v1_EventSource(in *core.EventSource, out *v1.EventSource, s conversion.Scope) error {
+ out.Component = in.Component
+ out.Host = in.Host
+ return nil
+}
+
+// Convert_core_EventSource_To_v1_EventSource is an autogenerated conversion function.
+func Convert_core_EventSource_To_v1_EventSource(in *core.EventSource, out *v1.EventSource, s conversion.Scope) error {
+ return autoConvert_core_EventSource_To_v1_EventSource(in, out, s)
+}
+
+func autoConvert_v1_ExecAction_To_core_ExecAction(in *v1.ExecAction, out *core.ExecAction, s conversion.Scope) error {
+ out.Command = *(*[]string)(unsafe.Pointer(&in.Command))
+ return nil
+}
+
+// Convert_v1_ExecAction_To_core_ExecAction is an autogenerated conversion function.
+func Convert_v1_ExecAction_To_core_ExecAction(in *v1.ExecAction, out *core.ExecAction, s conversion.Scope) error {
+ return autoConvert_v1_ExecAction_To_core_ExecAction(in, out, s)
+}
+
+func autoConvert_core_ExecAction_To_v1_ExecAction(in *core.ExecAction, out *v1.ExecAction, s conversion.Scope) error {
+ out.Command = *(*[]string)(unsafe.Pointer(&in.Command))
+ return nil
+}
+
+// Convert_core_ExecAction_To_v1_ExecAction is an autogenerated conversion function.
+func Convert_core_ExecAction_To_v1_ExecAction(in *core.ExecAction, out *v1.ExecAction, s conversion.Scope) error {
+ return autoConvert_core_ExecAction_To_v1_ExecAction(in, out, s)
+}
+
+func autoConvert_v1_FCVolumeSource_To_core_FCVolumeSource(in *v1.FCVolumeSource, out *core.FCVolumeSource, s conversion.Scope) error {
+ out.TargetWWNs = *(*[]string)(unsafe.Pointer(&in.TargetWWNs))
+ out.Lun = (*int32)(unsafe.Pointer(in.Lun))
+ out.FSType = in.FSType
+ out.ReadOnly = in.ReadOnly
+ out.WWIDs = *(*[]string)(unsafe.Pointer(&in.WWIDs))
+ return nil
+}
+
+// Convert_v1_FCVolumeSource_To_core_FCVolumeSource is an autogenerated conversion function.
+func Convert_v1_FCVolumeSource_To_core_FCVolumeSource(in *v1.FCVolumeSource, out *core.FCVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_FCVolumeSource_To_core_FCVolumeSource(in, out, s)
+}
+
+func autoConvert_core_FCVolumeSource_To_v1_FCVolumeSource(in *core.FCVolumeSource, out *v1.FCVolumeSource, s conversion.Scope) error {
+ out.TargetWWNs = *(*[]string)(unsafe.Pointer(&in.TargetWWNs))
+ out.Lun = (*int32)(unsafe.Pointer(in.Lun))
+ out.FSType = in.FSType
+ out.ReadOnly = in.ReadOnly
+ out.WWIDs = *(*[]string)(unsafe.Pointer(&in.WWIDs))
+ return nil
+}
+
+// Convert_core_FCVolumeSource_To_v1_FCVolumeSource is an autogenerated conversion function.
+func Convert_core_FCVolumeSource_To_v1_FCVolumeSource(in *core.FCVolumeSource, out *v1.FCVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_FCVolumeSource_To_v1_FCVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_FlexVolumeSource_To_core_FlexVolumeSource(in *v1.FlexVolumeSource, out *core.FlexVolumeSource, s conversion.Scope) error {
+ out.Driver = in.Driver
+ out.FSType = in.FSType
+ out.SecretRef = (*core.LocalObjectReference)(unsafe.Pointer(in.SecretRef))
+ out.ReadOnly = in.ReadOnly
+ out.Options = *(*map[string]string)(unsafe.Pointer(&in.Options))
+ return nil
+}
+
+// Convert_v1_FlexVolumeSource_To_core_FlexVolumeSource is an autogenerated conversion function.
+func Convert_v1_FlexVolumeSource_To_core_FlexVolumeSource(in *v1.FlexVolumeSource, out *core.FlexVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_FlexVolumeSource_To_core_FlexVolumeSource(in, out, s)
+}
+
+func autoConvert_core_FlexVolumeSource_To_v1_FlexVolumeSource(in *core.FlexVolumeSource, out *v1.FlexVolumeSource, s conversion.Scope) error {
+ out.Driver = in.Driver
+ out.FSType = in.FSType
+ out.SecretRef = (*v1.LocalObjectReference)(unsafe.Pointer(in.SecretRef))
+ out.ReadOnly = in.ReadOnly
+ out.Options = *(*map[string]string)(unsafe.Pointer(&in.Options))
+ return nil
+}
+
+// Convert_core_FlexVolumeSource_To_v1_FlexVolumeSource is an autogenerated conversion function.
+func Convert_core_FlexVolumeSource_To_v1_FlexVolumeSource(in *core.FlexVolumeSource, out *v1.FlexVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_FlexVolumeSource_To_v1_FlexVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_FlockerVolumeSource_To_core_FlockerVolumeSource(in *v1.FlockerVolumeSource, out *core.FlockerVolumeSource, s conversion.Scope) error {
+ out.DatasetName = in.DatasetName
+ out.DatasetUUID = in.DatasetUUID
+ return nil
+}
+
+// Convert_v1_FlockerVolumeSource_To_core_FlockerVolumeSource is an autogenerated conversion function.
+func Convert_v1_FlockerVolumeSource_To_core_FlockerVolumeSource(in *v1.FlockerVolumeSource, out *core.FlockerVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_FlockerVolumeSource_To_core_FlockerVolumeSource(in, out, s)
+}
+
+func autoConvert_core_FlockerVolumeSource_To_v1_FlockerVolumeSource(in *core.FlockerVolumeSource, out *v1.FlockerVolumeSource, s conversion.Scope) error {
+ out.DatasetName = in.DatasetName
+ out.DatasetUUID = in.DatasetUUID
+ return nil
+}
+
+// Convert_core_FlockerVolumeSource_To_v1_FlockerVolumeSource is an autogenerated conversion function.
+func Convert_core_FlockerVolumeSource_To_v1_FlockerVolumeSource(in *core.FlockerVolumeSource, out *v1.FlockerVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_FlockerVolumeSource_To_v1_FlockerVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_GCEPersistentDiskVolumeSource_To_core_GCEPersistentDiskVolumeSource(in *v1.GCEPersistentDiskVolumeSource, out *core.GCEPersistentDiskVolumeSource, s conversion.Scope) error {
+ out.PDName = in.PDName
+ out.FSType = in.FSType
+ out.Partition = in.Partition
+ out.ReadOnly = in.ReadOnly
+ return nil
+}
+
+// Convert_v1_GCEPersistentDiskVolumeSource_To_core_GCEPersistentDiskVolumeSource is an autogenerated conversion function.
+func Convert_v1_GCEPersistentDiskVolumeSource_To_core_GCEPersistentDiskVolumeSource(in *v1.GCEPersistentDiskVolumeSource, out *core.GCEPersistentDiskVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_GCEPersistentDiskVolumeSource_To_core_GCEPersistentDiskVolumeSource(in, out, s)
+}
+
+func autoConvert_core_GCEPersistentDiskVolumeSource_To_v1_GCEPersistentDiskVolumeSource(in *core.GCEPersistentDiskVolumeSource, out *v1.GCEPersistentDiskVolumeSource, s conversion.Scope) error {
+ out.PDName = in.PDName
+ out.FSType = in.FSType
+ out.Partition = in.Partition
+ out.ReadOnly = in.ReadOnly
+ return nil
+}
+
+// Convert_core_GCEPersistentDiskVolumeSource_To_v1_GCEPersistentDiskVolumeSource is an autogenerated conversion function.
+func Convert_core_GCEPersistentDiskVolumeSource_To_v1_GCEPersistentDiskVolumeSource(in *core.GCEPersistentDiskVolumeSource, out *v1.GCEPersistentDiskVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_GCEPersistentDiskVolumeSource_To_v1_GCEPersistentDiskVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_GitRepoVolumeSource_To_core_GitRepoVolumeSource(in *v1.GitRepoVolumeSource, out *core.GitRepoVolumeSource, s conversion.Scope) error {
+ out.Repository = in.Repository
+ out.Revision = in.Revision
+ out.Directory = in.Directory
+ return nil
+}
+
+// Convert_v1_GitRepoVolumeSource_To_core_GitRepoVolumeSource is an autogenerated conversion function.
+func Convert_v1_GitRepoVolumeSource_To_core_GitRepoVolumeSource(in *v1.GitRepoVolumeSource, out *core.GitRepoVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_GitRepoVolumeSource_To_core_GitRepoVolumeSource(in, out, s)
+}
+
+func autoConvert_core_GitRepoVolumeSource_To_v1_GitRepoVolumeSource(in *core.GitRepoVolumeSource, out *v1.GitRepoVolumeSource, s conversion.Scope) error {
+ out.Repository = in.Repository
+ out.Revision = in.Revision
+ out.Directory = in.Directory
+ return nil
+}
+
+// Convert_core_GitRepoVolumeSource_To_v1_GitRepoVolumeSource is an autogenerated conversion function.
+func Convert_core_GitRepoVolumeSource_To_v1_GitRepoVolumeSource(in *core.GitRepoVolumeSource, out *v1.GitRepoVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_GitRepoVolumeSource_To_v1_GitRepoVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_GlusterfsVolumeSource_To_core_GlusterfsVolumeSource(in *v1.GlusterfsVolumeSource, out *core.GlusterfsVolumeSource, s conversion.Scope) error {
+ out.EndpointsName = in.EndpointsName
+ out.Path = in.Path
+ out.ReadOnly = in.ReadOnly
+ return nil
+}
+
+// Convert_v1_GlusterfsVolumeSource_To_core_GlusterfsVolumeSource is an autogenerated conversion function.
+func Convert_v1_GlusterfsVolumeSource_To_core_GlusterfsVolumeSource(in *v1.GlusterfsVolumeSource, out *core.GlusterfsVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_GlusterfsVolumeSource_To_core_GlusterfsVolumeSource(in, out, s)
+}
+
+func autoConvert_core_GlusterfsVolumeSource_To_v1_GlusterfsVolumeSource(in *core.GlusterfsVolumeSource, out *v1.GlusterfsVolumeSource, s conversion.Scope) error {
+ out.EndpointsName = in.EndpointsName
+ out.Path = in.Path
+ out.ReadOnly = in.ReadOnly
+ return nil
+}
+
+// Convert_core_GlusterfsVolumeSource_To_v1_GlusterfsVolumeSource is an autogenerated conversion function.
+func Convert_core_GlusterfsVolumeSource_To_v1_GlusterfsVolumeSource(in *core.GlusterfsVolumeSource, out *v1.GlusterfsVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_GlusterfsVolumeSource_To_v1_GlusterfsVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_HTTPGetAction_To_core_HTTPGetAction(in *v1.HTTPGetAction, out *core.HTTPGetAction, s conversion.Scope) error {
+ out.Path = in.Path
+ out.Port = in.Port
+ out.Host = in.Host
+ out.Scheme = core.URIScheme(in.Scheme)
+ out.HTTPHeaders = *(*[]core.HTTPHeader)(unsafe.Pointer(&in.HTTPHeaders))
+ return nil
+}
+
+// Convert_v1_HTTPGetAction_To_core_HTTPGetAction is an autogenerated conversion function.
+func Convert_v1_HTTPGetAction_To_core_HTTPGetAction(in *v1.HTTPGetAction, out *core.HTTPGetAction, s conversion.Scope) error {
+ return autoConvert_v1_HTTPGetAction_To_core_HTTPGetAction(in, out, s)
+}
+
+func autoConvert_core_HTTPGetAction_To_v1_HTTPGetAction(in *core.HTTPGetAction, out *v1.HTTPGetAction, s conversion.Scope) error {
+ out.Path = in.Path
+ out.Port = in.Port
+ out.Host = in.Host
+ out.Scheme = v1.URIScheme(in.Scheme)
+ out.HTTPHeaders = *(*[]v1.HTTPHeader)(unsafe.Pointer(&in.HTTPHeaders))
+ return nil
+}
+
+// Convert_core_HTTPGetAction_To_v1_HTTPGetAction is an autogenerated conversion function.
+func Convert_core_HTTPGetAction_To_v1_HTTPGetAction(in *core.HTTPGetAction, out *v1.HTTPGetAction, s conversion.Scope) error {
+ return autoConvert_core_HTTPGetAction_To_v1_HTTPGetAction(in, out, s)
+}
+
+func autoConvert_v1_HTTPHeader_To_core_HTTPHeader(in *v1.HTTPHeader, out *core.HTTPHeader, s conversion.Scope) error {
+ out.Name = in.Name
+ out.Value = in.Value
+ return nil
+}
+
+// Convert_v1_HTTPHeader_To_core_HTTPHeader is an autogenerated conversion function.
+func Convert_v1_HTTPHeader_To_core_HTTPHeader(in *v1.HTTPHeader, out *core.HTTPHeader, s conversion.Scope) error {
+ return autoConvert_v1_HTTPHeader_To_core_HTTPHeader(in, out, s)
+}
+
+func autoConvert_core_HTTPHeader_To_v1_HTTPHeader(in *core.HTTPHeader, out *v1.HTTPHeader, s conversion.Scope) error {
+ out.Name = in.Name
+ out.Value = in.Value
+ return nil
+}
+
+// Convert_core_HTTPHeader_To_v1_HTTPHeader is an autogenerated conversion function.
+func Convert_core_HTTPHeader_To_v1_HTTPHeader(in *core.HTTPHeader, out *v1.HTTPHeader, s conversion.Scope) error {
+ return autoConvert_core_HTTPHeader_To_v1_HTTPHeader(in, out, s)
+}
+
+func autoConvert_v1_Handler_To_core_Handler(in *v1.Handler, out *core.Handler, s conversion.Scope) error {
+ out.Exec = (*core.ExecAction)(unsafe.Pointer(in.Exec))
+ out.HTTPGet = (*core.HTTPGetAction)(unsafe.Pointer(in.HTTPGet))
+ out.TCPSocket = (*core.TCPSocketAction)(unsafe.Pointer(in.TCPSocket))
+ return nil
+}
+
+// Convert_v1_Handler_To_core_Handler is an autogenerated conversion function.
+func Convert_v1_Handler_To_core_Handler(in *v1.Handler, out *core.Handler, s conversion.Scope) error {
+ return autoConvert_v1_Handler_To_core_Handler(in, out, s)
+}
+
+func autoConvert_core_Handler_To_v1_Handler(in *core.Handler, out *v1.Handler, s conversion.Scope) error {
+ out.Exec = (*v1.ExecAction)(unsafe.Pointer(in.Exec))
+ out.HTTPGet = (*v1.HTTPGetAction)(unsafe.Pointer(in.HTTPGet))
+ out.TCPSocket = (*v1.TCPSocketAction)(unsafe.Pointer(in.TCPSocket))
+ return nil
+}
+
+// Convert_core_Handler_To_v1_Handler is an autogenerated conversion function.
+func Convert_core_Handler_To_v1_Handler(in *core.Handler, out *v1.Handler, s conversion.Scope) error {
+ return autoConvert_core_Handler_To_v1_Handler(in, out, s)
+}
+
+func autoConvert_v1_HostAlias_To_core_HostAlias(in *v1.HostAlias, out *core.HostAlias, s conversion.Scope) error {
+ out.IP = in.IP
+ out.Hostnames = *(*[]string)(unsafe.Pointer(&in.Hostnames))
+ return nil
+}
+
+// Convert_v1_HostAlias_To_core_HostAlias is an autogenerated conversion function.
+func Convert_v1_HostAlias_To_core_HostAlias(in *v1.HostAlias, out *core.HostAlias, s conversion.Scope) error {
+ return autoConvert_v1_HostAlias_To_core_HostAlias(in, out, s)
+}
+
+func autoConvert_core_HostAlias_To_v1_HostAlias(in *core.HostAlias, out *v1.HostAlias, s conversion.Scope) error {
+ out.IP = in.IP
+ out.Hostnames = *(*[]string)(unsafe.Pointer(&in.Hostnames))
+ return nil
+}
+
+// Convert_core_HostAlias_To_v1_HostAlias is an autogenerated conversion function.
+func Convert_core_HostAlias_To_v1_HostAlias(in *core.HostAlias, out *v1.HostAlias, s conversion.Scope) error {
+ return autoConvert_core_HostAlias_To_v1_HostAlias(in, out, s)
+}
+
+func autoConvert_v1_HostPathVolumeSource_To_core_HostPathVolumeSource(in *v1.HostPathVolumeSource, out *core.HostPathVolumeSource, s conversion.Scope) error {
+ out.Path = in.Path
+ out.Type = (*core.HostPathType)(unsafe.Pointer(in.Type))
+ return nil
+}
+
+// Convert_v1_HostPathVolumeSource_To_core_HostPathVolumeSource is an autogenerated conversion function.
+func Convert_v1_HostPathVolumeSource_To_core_HostPathVolumeSource(in *v1.HostPathVolumeSource, out *core.HostPathVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_HostPathVolumeSource_To_core_HostPathVolumeSource(in, out, s)
+}
+
+func autoConvert_core_HostPathVolumeSource_To_v1_HostPathVolumeSource(in *core.HostPathVolumeSource, out *v1.HostPathVolumeSource, s conversion.Scope) error {
+ out.Path = in.Path
+ out.Type = (*v1.HostPathType)(unsafe.Pointer(in.Type))
+ return nil
+}
+
+// Convert_core_HostPathVolumeSource_To_v1_HostPathVolumeSource is an autogenerated conversion function.
+func Convert_core_HostPathVolumeSource_To_v1_HostPathVolumeSource(in *core.HostPathVolumeSource, out *v1.HostPathVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_HostPathVolumeSource_To_v1_HostPathVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_ISCSIVolumeSource_To_core_ISCSIVolumeSource(in *v1.ISCSIVolumeSource, out *core.ISCSIVolumeSource, s conversion.Scope) error {
+ out.TargetPortal = in.TargetPortal
+ out.IQN = in.IQN
+ out.Lun = in.Lun
+ out.ISCSIInterface = in.ISCSIInterface
+ out.FSType = in.FSType
+ out.ReadOnly = in.ReadOnly
+ out.Portals = *(*[]string)(unsafe.Pointer(&in.Portals))
+ out.DiscoveryCHAPAuth = in.DiscoveryCHAPAuth
+ out.SessionCHAPAuth = in.SessionCHAPAuth
+ out.SecretRef = (*core.LocalObjectReference)(unsafe.Pointer(in.SecretRef))
+ out.InitiatorName = (*string)(unsafe.Pointer(in.InitiatorName))
+ return nil
+}
+
+// Convert_v1_ISCSIVolumeSource_To_core_ISCSIVolumeSource is an autogenerated conversion function.
+func Convert_v1_ISCSIVolumeSource_To_core_ISCSIVolumeSource(in *v1.ISCSIVolumeSource, out *core.ISCSIVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_ISCSIVolumeSource_To_core_ISCSIVolumeSource(in, out, s)
+}
+
+func autoConvert_core_ISCSIVolumeSource_To_v1_ISCSIVolumeSource(in *core.ISCSIVolumeSource, out *v1.ISCSIVolumeSource, s conversion.Scope) error {
+ out.TargetPortal = in.TargetPortal
+ out.IQN = in.IQN
+ out.Lun = in.Lun
+ out.ISCSIInterface = in.ISCSIInterface
+ out.FSType = in.FSType
+ out.ReadOnly = in.ReadOnly
+ out.Portals = *(*[]string)(unsafe.Pointer(&in.Portals))
+ out.DiscoveryCHAPAuth = in.DiscoveryCHAPAuth
+ out.SessionCHAPAuth = in.SessionCHAPAuth
+ out.SecretRef = (*v1.LocalObjectReference)(unsafe.Pointer(in.SecretRef))
+ out.InitiatorName = (*string)(unsafe.Pointer(in.InitiatorName))
+ return nil
+}
+
+// Convert_core_ISCSIVolumeSource_To_v1_ISCSIVolumeSource is an autogenerated conversion function.
+func Convert_core_ISCSIVolumeSource_To_v1_ISCSIVolumeSource(in *core.ISCSIVolumeSource, out *v1.ISCSIVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_ISCSIVolumeSource_To_v1_ISCSIVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_KeyToPath_To_core_KeyToPath(in *v1.KeyToPath, out *core.KeyToPath, s conversion.Scope) error {
+ out.Key = in.Key
+ out.Path = in.Path
+ out.Mode = (*int32)(unsafe.Pointer(in.Mode))
+ return nil
+}
+
+// Convert_v1_KeyToPath_To_core_KeyToPath is an autogenerated conversion function.
+func Convert_v1_KeyToPath_To_core_KeyToPath(in *v1.KeyToPath, out *core.KeyToPath, s conversion.Scope) error {
+ return autoConvert_v1_KeyToPath_To_core_KeyToPath(in, out, s)
+}
+
+func autoConvert_core_KeyToPath_To_v1_KeyToPath(in *core.KeyToPath, out *v1.KeyToPath, s conversion.Scope) error {
+ out.Key = in.Key
+ out.Path = in.Path
+ out.Mode = (*int32)(unsafe.Pointer(in.Mode))
+ return nil
+}
+
+// Convert_core_KeyToPath_To_v1_KeyToPath is an autogenerated conversion function.
+func Convert_core_KeyToPath_To_v1_KeyToPath(in *core.KeyToPath, out *v1.KeyToPath, s conversion.Scope) error {
+ return autoConvert_core_KeyToPath_To_v1_KeyToPath(in, out, s)
+}
+
+func autoConvert_v1_Lifecycle_To_core_Lifecycle(in *v1.Lifecycle, out *core.Lifecycle, s conversion.Scope) error {
+ out.PostStart = (*core.Handler)(unsafe.Pointer(in.PostStart))
+ out.PreStop = (*core.Handler)(unsafe.Pointer(in.PreStop))
+ return nil
+}
+
+// Convert_v1_Lifecycle_To_core_Lifecycle is an autogenerated conversion function.
+func Convert_v1_Lifecycle_To_core_Lifecycle(in *v1.Lifecycle, out *core.Lifecycle, s conversion.Scope) error {
+ return autoConvert_v1_Lifecycle_To_core_Lifecycle(in, out, s)
+}
+
+func autoConvert_core_Lifecycle_To_v1_Lifecycle(in *core.Lifecycle, out *v1.Lifecycle, s conversion.Scope) error {
+ out.PostStart = (*v1.Handler)(unsafe.Pointer(in.PostStart))
+ out.PreStop = (*v1.Handler)(unsafe.Pointer(in.PreStop))
+ return nil
+}
+
+// Convert_core_Lifecycle_To_v1_Lifecycle is an autogenerated conversion function.
+func Convert_core_Lifecycle_To_v1_Lifecycle(in *core.Lifecycle, out *v1.Lifecycle, s conversion.Scope) error {
+ return autoConvert_core_Lifecycle_To_v1_Lifecycle(in, out, s)
+}
+
+func autoConvert_v1_LimitRange_To_core_LimitRange(in *v1.LimitRange, out *core.LimitRange, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ if err := Convert_v1_LimitRangeSpec_To_core_LimitRangeSpec(&in.Spec, &out.Spec, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_v1_LimitRange_To_core_LimitRange is an autogenerated conversion function.
+func Convert_v1_LimitRange_To_core_LimitRange(in *v1.LimitRange, out *core.LimitRange, s conversion.Scope) error {
+ return autoConvert_v1_LimitRange_To_core_LimitRange(in, out, s)
+}
+
+func autoConvert_core_LimitRange_To_v1_LimitRange(in *core.LimitRange, out *v1.LimitRange, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ if err := Convert_core_LimitRangeSpec_To_v1_LimitRangeSpec(&in.Spec, &out.Spec, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_core_LimitRange_To_v1_LimitRange is an autogenerated conversion function.
+func Convert_core_LimitRange_To_v1_LimitRange(in *core.LimitRange, out *v1.LimitRange, s conversion.Scope) error {
+ return autoConvert_core_LimitRange_To_v1_LimitRange(in, out, s)
+}
+
+func autoConvert_v1_LimitRangeItem_To_core_LimitRangeItem(in *v1.LimitRangeItem, out *core.LimitRangeItem, s conversion.Scope) error {
+ out.Type = core.LimitType(in.Type)
+ out.Max = *(*core.ResourceList)(unsafe.Pointer(&in.Max))
+ out.Min = *(*core.ResourceList)(unsafe.Pointer(&in.Min))
+ out.Default = *(*core.ResourceList)(unsafe.Pointer(&in.Default))
+ out.DefaultRequest = *(*core.ResourceList)(unsafe.Pointer(&in.DefaultRequest))
+ out.MaxLimitRequestRatio = *(*core.ResourceList)(unsafe.Pointer(&in.MaxLimitRequestRatio))
+ return nil
+}
+
+// Convert_v1_LimitRangeItem_To_core_LimitRangeItem is an autogenerated conversion function.
+func Convert_v1_LimitRangeItem_To_core_LimitRangeItem(in *v1.LimitRangeItem, out *core.LimitRangeItem, s conversion.Scope) error {
+ return autoConvert_v1_LimitRangeItem_To_core_LimitRangeItem(in, out, s)
+}
+
+func autoConvert_core_LimitRangeItem_To_v1_LimitRangeItem(in *core.LimitRangeItem, out *v1.LimitRangeItem, s conversion.Scope) error {
+ out.Type = v1.LimitType(in.Type)
+ out.Max = *(*v1.ResourceList)(unsafe.Pointer(&in.Max))
+ out.Min = *(*v1.ResourceList)(unsafe.Pointer(&in.Min))
+ out.Default = *(*v1.ResourceList)(unsafe.Pointer(&in.Default))
+ out.DefaultRequest = *(*v1.ResourceList)(unsafe.Pointer(&in.DefaultRequest))
+ out.MaxLimitRequestRatio = *(*v1.ResourceList)(unsafe.Pointer(&in.MaxLimitRequestRatio))
+ return nil
+}
+
+// Convert_core_LimitRangeItem_To_v1_LimitRangeItem is an autogenerated conversion function.
+func Convert_core_LimitRangeItem_To_v1_LimitRangeItem(in *core.LimitRangeItem, out *v1.LimitRangeItem, s conversion.Scope) error {
+ return autoConvert_core_LimitRangeItem_To_v1_LimitRangeItem(in, out, s)
+}
+
+func autoConvert_v1_LimitRangeList_To_core_LimitRangeList(in *v1.LimitRangeList, out *core.LimitRangeList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ out.Items = *(*[]core.LimitRange)(unsafe.Pointer(&in.Items))
+ return nil
+}
+
+// Convert_v1_LimitRangeList_To_core_LimitRangeList is an autogenerated conversion function.
+func Convert_v1_LimitRangeList_To_core_LimitRangeList(in *v1.LimitRangeList, out *core.LimitRangeList, s conversion.Scope) error {
+ return autoConvert_v1_LimitRangeList_To_core_LimitRangeList(in, out, s)
+}
+
+func autoConvert_core_LimitRangeList_To_v1_LimitRangeList(in *core.LimitRangeList, out *v1.LimitRangeList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ out.Items = *(*[]v1.LimitRange)(unsafe.Pointer(&in.Items))
+ return nil
+}
+
+// Convert_core_LimitRangeList_To_v1_LimitRangeList is an autogenerated conversion function.
+func Convert_core_LimitRangeList_To_v1_LimitRangeList(in *core.LimitRangeList, out *v1.LimitRangeList, s conversion.Scope) error {
+ return autoConvert_core_LimitRangeList_To_v1_LimitRangeList(in, out, s)
+}
+
+func autoConvert_v1_LimitRangeSpec_To_core_LimitRangeSpec(in *v1.LimitRangeSpec, out *core.LimitRangeSpec, s conversion.Scope) error {
+ out.Limits = *(*[]core.LimitRangeItem)(unsafe.Pointer(&in.Limits))
+ return nil
+}
+
+// Convert_v1_LimitRangeSpec_To_core_LimitRangeSpec is an autogenerated conversion function.
+func Convert_v1_LimitRangeSpec_To_core_LimitRangeSpec(in *v1.LimitRangeSpec, out *core.LimitRangeSpec, s conversion.Scope) error {
+ return autoConvert_v1_LimitRangeSpec_To_core_LimitRangeSpec(in, out, s)
+}
+
+func autoConvert_core_LimitRangeSpec_To_v1_LimitRangeSpec(in *core.LimitRangeSpec, out *v1.LimitRangeSpec, s conversion.Scope) error {
+ out.Limits = *(*[]v1.LimitRangeItem)(unsafe.Pointer(&in.Limits))
+ return nil
+}
+
+// Convert_core_LimitRangeSpec_To_v1_LimitRangeSpec is an autogenerated conversion function.
+func Convert_core_LimitRangeSpec_To_v1_LimitRangeSpec(in *core.LimitRangeSpec, out *v1.LimitRangeSpec, s conversion.Scope) error {
+ return autoConvert_core_LimitRangeSpec_To_v1_LimitRangeSpec(in, out, s)
+}
+
+func autoConvert_v1_List_To_core_List(in *v1.List, out *core.List, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ if in.Items != nil {
+ in, out := &in.Items, &out.Items
+ *out = make([]runtime.Object, len(*in))
+ for i := range *in {
+ if err := runtime.Convert_runtime_RawExtension_To_runtime_Object(&(*in)[i], &(*out)[i], s); err != nil {
+ return err
+ }
+ }
+ } else {
+ out.Items = nil
+ }
+ return nil
+}
+
+// Convert_v1_List_To_core_List is an autogenerated conversion function.
+func Convert_v1_List_To_core_List(in *v1.List, out *core.List, s conversion.Scope) error {
+ return autoConvert_v1_List_To_core_List(in, out, s)
+}
+
+func autoConvert_core_List_To_v1_List(in *core.List, out *v1.List, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ if in.Items != nil {
+ in, out := &in.Items, &out.Items
+ *out = make([]runtime.RawExtension, len(*in))
+ for i := range *in {
+ if err := runtime.Convert_runtime_Object_To_runtime_RawExtension(&(*in)[i], &(*out)[i], s); err != nil {
+ return err
+ }
+ }
+ } else {
+ out.Items = nil
+ }
+ return nil
+}
+
+// Convert_core_List_To_v1_List is an autogenerated conversion function.
+func Convert_core_List_To_v1_List(in *core.List, out *v1.List, s conversion.Scope) error {
+ return autoConvert_core_List_To_v1_List(in, out, s)
+}
+
+func autoConvert_v1_ListOptions_To_core_ListOptions(in *v1.ListOptions, out *core.ListOptions, s conversion.Scope) error {
+ if err := meta_v1.Convert_string_To_labels_Selector(&in.LabelSelector, &out.LabelSelector, s); err != nil {
+ return err
+ }
+ if err := meta_v1.Convert_string_To_fields_Selector(&in.FieldSelector, &out.FieldSelector, s); err != nil {
+ return err
+ }
+ out.IncludeUninitialized = in.IncludeUninitialized
+ out.Watch = in.Watch
+ out.ResourceVersion = in.ResourceVersion
+ out.TimeoutSeconds = (*int64)(unsafe.Pointer(in.TimeoutSeconds))
+ return nil
+}
+
+// Convert_v1_ListOptions_To_core_ListOptions is an autogenerated conversion function.
+func Convert_v1_ListOptions_To_core_ListOptions(in *v1.ListOptions, out *core.ListOptions, s conversion.Scope) error {
+ return autoConvert_v1_ListOptions_To_core_ListOptions(in, out, s)
+}
+
+func autoConvert_core_ListOptions_To_v1_ListOptions(in *core.ListOptions, out *v1.ListOptions, s conversion.Scope) error {
+ if err := meta_v1.Convert_labels_Selector_To_string(&in.LabelSelector, &out.LabelSelector, s); err != nil {
+ return err
+ }
+ if err := meta_v1.Convert_fields_Selector_To_string(&in.FieldSelector, &out.FieldSelector, s); err != nil {
+ return err
+ }
+ out.IncludeUninitialized = in.IncludeUninitialized
+ out.Watch = in.Watch
+ out.ResourceVersion = in.ResourceVersion
+ out.TimeoutSeconds = (*int64)(unsafe.Pointer(in.TimeoutSeconds))
+ return nil
+}
+
+// Convert_core_ListOptions_To_v1_ListOptions is an autogenerated conversion function.
+func Convert_core_ListOptions_To_v1_ListOptions(in *core.ListOptions, out *v1.ListOptions, s conversion.Scope) error {
+ return autoConvert_core_ListOptions_To_v1_ListOptions(in, out, s)
+}
+
+func autoConvert_v1_LoadBalancerIngress_To_core_LoadBalancerIngress(in *v1.LoadBalancerIngress, out *core.LoadBalancerIngress, s conversion.Scope) error {
+ out.IP = in.IP
+ out.Hostname = in.Hostname
+ return nil
+}
+
+// Convert_v1_LoadBalancerIngress_To_core_LoadBalancerIngress is an autogenerated conversion function.
+func Convert_v1_LoadBalancerIngress_To_core_LoadBalancerIngress(in *v1.LoadBalancerIngress, out *core.LoadBalancerIngress, s conversion.Scope) error {
+ return autoConvert_v1_LoadBalancerIngress_To_core_LoadBalancerIngress(in, out, s)
+}
+
+func autoConvert_core_LoadBalancerIngress_To_v1_LoadBalancerIngress(in *core.LoadBalancerIngress, out *v1.LoadBalancerIngress, s conversion.Scope) error {
+ out.IP = in.IP
+ out.Hostname = in.Hostname
+ return nil
+}
+
+// Convert_core_LoadBalancerIngress_To_v1_LoadBalancerIngress is an autogenerated conversion function.
+func Convert_core_LoadBalancerIngress_To_v1_LoadBalancerIngress(in *core.LoadBalancerIngress, out *v1.LoadBalancerIngress, s conversion.Scope) error {
+ return autoConvert_core_LoadBalancerIngress_To_v1_LoadBalancerIngress(in, out, s)
+}
+
+func autoConvert_v1_LoadBalancerStatus_To_core_LoadBalancerStatus(in *v1.LoadBalancerStatus, out *core.LoadBalancerStatus, s conversion.Scope) error {
+ out.Ingress = *(*[]core.LoadBalancerIngress)(unsafe.Pointer(&in.Ingress))
+ return nil
+}
+
+// Convert_v1_LoadBalancerStatus_To_core_LoadBalancerStatus is an autogenerated conversion function.
+func Convert_v1_LoadBalancerStatus_To_core_LoadBalancerStatus(in *v1.LoadBalancerStatus, out *core.LoadBalancerStatus, s conversion.Scope) error {
+ return autoConvert_v1_LoadBalancerStatus_To_core_LoadBalancerStatus(in, out, s)
+}
+
+func autoConvert_core_LoadBalancerStatus_To_v1_LoadBalancerStatus(in *core.LoadBalancerStatus, out *v1.LoadBalancerStatus, s conversion.Scope) error {
+ out.Ingress = *(*[]v1.LoadBalancerIngress)(unsafe.Pointer(&in.Ingress))
+ return nil
+}
+
+// Convert_core_LoadBalancerStatus_To_v1_LoadBalancerStatus is an autogenerated conversion function.
+func Convert_core_LoadBalancerStatus_To_v1_LoadBalancerStatus(in *core.LoadBalancerStatus, out *v1.LoadBalancerStatus, s conversion.Scope) error {
+ return autoConvert_core_LoadBalancerStatus_To_v1_LoadBalancerStatus(in, out, s)
+}
+
+func autoConvert_v1_LocalObjectReference_To_core_LocalObjectReference(in *v1.LocalObjectReference, out *core.LocalObjectReference, s conversion.Scope) error {
+ out.Name = in.Name
+ return nil
+}
+
+// Convert_v1_LocalObjectReference_To_core_LocalObjectReference is an autogenerated conversion function.
+func Convert_v1_LocalObjectReference_To_core_LocalObjectReference(in *v1.LocalObjectReference, out *core.LocalObjectReference, s conversion.Scope) error {
+ return autoConvert_v1_LocalObjectReference_To_core_LocalObjectReference(in, out, s)
+}
+
+func autoConvert_core_LocalObjectReference_To_v1_LocalObjectReference(in *core.LocalObjectReference, out *v1.LocalObjectReference, s conversion.Scope) error {
+ out.Name = in.Name
+ return nil
+}
+
+// Convert_core_LocalObjectReference_To_v1_LocalObjectReference is an autogenerated conversion function.
+func Convert_core_LocalObjectReference_To_v1_LocalObjectReference(in *core.LocalObjectReference, out *v1.LocalObjectReference, s conversion.Scope) error {
+ return autoConvert_core_LocalObjectReference_To_v1_LocalObjectReference(in, out, s)
+}
+
+func autoConvert_v1_LocalVolumeSource_To_core_LocalVolumeSource(in *v1.LocalVolumeSource, out *core.LocalVolumeSource, s conversion.Scope) error {
+ out.Path = in.Path
+ return nil
+}
+
+// Convert_v1_LocalVolumeSource_To_core_LocalVolumeSource is an autogenerated conversion function.
+func Convert_v1_LocalVolumeSource_To_core_LocalVolumeSource(in *v1.LocalVolumeSource, out *core.LocalVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_LocalVolumeSource_To_core_LocalVolumeSource(in, out, s)
+}
+
+func autoConvert_core_LocalVolumeSource_To_v1_LocalVolumeSource(in *core.LocalVolumeSource, out *v1.LocalVolumeSource, s conversion.Scope) error {
+ out.Path = in.Path
+ return nil
+}
+
+// Convert_core_LocalVolumeSource_To_v1_LocalVolumeSource is an autogenerated conversion function.
+func Convert_core_LocalVolumeSource_To_v1_LocalVolumeSource(in *core.LocalVolumeSource, out *v1.LocalVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_LocalVolumeSource_To_v1_LocalVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_NFSVolumeSource_To_core_NFSVolumeSource(in *v1.NFSVolumeSource, out *core.NFSVolumeSource, s conversion.Scope) error {
+ out.Server = in.Server
+ out.Path = in.Path
+ out.ReadOnly = in.ReadOnly
+ return nil
+}
+
+// Convert_v1_NFSVolumeSource_To_core_NFSVolumeSource is an autogenerated conversion function.
+func Convert_v1_NFSVolumeSource_To_core_NFSVolumeSource(in *v1.NFSVolumeSource, out *core.NFSVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_NFSVolumeSource_To_core_NFSVolumeSource(in, out, s)
+}
+
+func autoConvert_core_NFSVolumeSource_To_v1_NFSVolumeSource(in *core.NFSVolumeSource, out *v1.NFSVolumeSource, s conversion.Scope) error {
+ out.Server = in.Server
+ out.Path = in.Path
+ out.ReadOnly = in.ReadOnly
+ return nil
+}
+
+// Convert_core_NFSVolumeSource_To_v1_NFSVolumeSource is an autogenerated conversion function.
+func Convert_core_NFSVolumeSource_To_v1_NFSVolumeSource(in *core.NFSVolumeSource, out *v1.NFSVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_NFSVolumeSource_To_v1_NFSVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_Namespace_To_core_Namespace(in *v1.Namespace, out *core.Namespace, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ if err := Convert_v1_NamespaceSpec_To_core_NamespaceSpec(&in.Spec, &out.Spec, s); err != nil {
+ return err
+ }
+ if err := Convert_v1_NamespaceStatus_To_core_NamespaceStatus(&in.Status, &out.Status, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_v1_Namespace_To_core_Namespace is an autogenerated conversion function.
+func Convert_v1_Namespace_To_core_Namespace(in *v1.Namespace, out *core.Namespace, s conversion.Scope) error {
+ return autoConvert_v1_Namespace_To_core_Namespace(in, out, s)
+}
+
+func autoConvert_core_Namespace_To_v1_Namespace(in *core.Namespace, out *v1.Namespace, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ if err := Convert_core_NamespaceSpec_To_v1_NamespaceSpec(&in.Spec, &out.Spec, s); err != nil {
+ return err
+ }
+ if err := Convert_core_NamespaceStatus_To_v1_NamespaceStatus(&in.Status, &out.Status, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_core_Namespace_To_v1_Namespace is an autogenerated conversion function.
+func Convert_core_Namespace_To_v1_Namespace(in *core.Namespace, out *v1.Namespace, s conversion.Scope) error {
+ return autoConvert_core_Namespace_To_v1_Namespace(in, out, s)
+}
+
+func autoConvert_v1_NamespaceList_To_core_NamespaceList(in *v1.NamespaceList, out *core.NamespaceList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ out.Items = *(*[]core.Namespace)(unsafe.Pointer(&in.Items))
+ return nil
+}
+
+// Convert_v1_NamespaceList_To_core_NamespaceList is an autogenerated conversion function.
+func Convert_v1_NamespaceList_To_core_NamespaceList(in *v1.NamespaceList, out *core.NamespaceList, s conversion.Scope) error {
+ return autoConvert_v1_NamespaceList_To_core_NamespaceList(in, out, s)
+}
+
+func autoConvert_core_NamespaceList_To_v1_NamespaceList(in *core.NamespaceList, out *v1.NamespaceList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ out.Items = *(*[]v1.Namespace)(unsafe.Pointer(&in.Items))
+ return nil
+}
+
+// Convert_core_NamespaceList_To_v1_NamespaceList is an autogenerated conversion function.
+func Convert_core_NamespaceList_To_v1_NamespaceList(in *core.NamespaceList, out *v1.NamespaceList, s conversion.Scope) error {
+ return autoConvert_core_NamespaceList_To_v1_NamespaceList(in, out, s)
+}
+
+func autoConvert_v1_NamespaceSpec_To_core_NamespaceSpec(in *v1.NamespaceSpec, out *core.NamespaceSpec, s conversion.Scope) error {
+ out.Finalizers = *(*[]core.FinalizerName)(unsafe.Pointer(&in.Finalizers))
+ return nil
+}
+
+// Convert_v1_NamespaceSpec_To_core_NamespaceSpec is an autogenerated conversion function.
+func Convert_v1_NamespaceSpec_To_core_NamespaceSpec(in *v1.NamespaceSpec, out *core.NamespaceSpec, s conversion.Scope) error {
+ return autoConvert_v1_NamespaceSpec_To_core_NamespaceSpec(in, out, s)
+}
+
+func autoConvert_core_NamespaceSpec_To_v1_NamespaceSpec(in *core.NamespaceSpec, out *v1.NamespaceSpec, s conversion.Scope) error {
+ out.Finalizers = *(*[]v1.FinalizerName)(unsafe.Pointer(&in.Finalizers))
+ return nil
+}
+
+// Convert_core_NamespaceSpec_To_v1_NamespaceSpec is an autogenerated conversion function.
+func Convert_core_NamespaceSpec_To_v1_NamespaceSpec(in *core.NamespaceSpec, out *v1.NamespaceSpec, s conversion.Scope) error {
+ return autoConvert_core_NamespaceSpec_To_v1_NamespaceSpec(in, out, s)
+}
+
+func autoConvert_v1_NamespaceStatus_To_core_NamespaceStatus(in *v1.NamespaceStatus, out *core.NamespaceStatus, s conversion.Scope) error {
+ out.Phase = core.NamespacePhase(in.Phase)
+ return nil
+}
+
+// Convert_v1_NamespaceStatus_To_core_NamespaceStatus is an autogenerated conversion function.
+func Convert_v1_NamespaceStatus_To_core_NamespaceStatus(in *v1.NamespaceStatus, out *core.NamespaceStatus, s conversion.Scope) error {
+ return autoConvert_v1_NamespaceStatus_To_core_NamespaceStatus(in, out, s)
+}
+
+func autoConvert_core_NamespaceStatus_To_v1_NamespaceStatus(in *core.NamespaceStatus, out *v1.NamespaceStatus, s conversion.Scope) error {
+ out.Phase = v1.NamespacePhase(in.Phase)
+ return nil
+}
+
+// Convert_core_NamespaceStatus_To_v1_NamespaceStatus is an autogenerated conversion function.
+func Convert_core_NamespaceStatus_To_v1_NamespaceStatus(in *core.NamespaceStatus, out *v1.NamespaceStatus, s conversion.Scope) error {
+ return autoConvert_core_NamespaceStatus_To_v1_NamespaceStatus(in, out, s)
+}
+
+func autoConvert_v1_Node_To_core_Node(in *v1.Node, out *core.Node, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ if err := Convert_v1_NodeSpec_To_core_NodeSpec(&in.Spec, &out.Spec, s); err != nil {
+ return err
+ }
+ if err := Convert_v1_NodeStatus_To_core_NodeStatus(&in.Status, &out.Status, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_v1_Node_To_core_Node is an autogenerated conversion function.
+func Convert_v1_Node_To_core_Node(in *v1.Node, out *core.Node, s conversion.Scope) error {
+ return autoConvert_v1_Node_To_core_Node(in, out, s)
+}
+
+func autoConvert_core_Node_To_v1_Node(in *core.Node, out *v1.Node, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ if err := Convert_core_NodeSpec_To_v1_NodeSpec(&in.Spec, &out.Spec, s); err != nil {
+ return err
+ }
+ if err := Convert_core_NodeStatus_To_v1_NodeStatus(&in.Status, &out.Status, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_core_Node_To_v1_Node is an autogenerated conversion function.
+func Convert_core_Node_To_v1_Node(in *core.Node, out *v1.Node, s conversion.Scope) error {
+ return autoConvert_core_Node_To_v1_Node(in, out, s)
+}
+
+func autoConvert_v1_NodeAddress_To_core_NodeAddress(in *v1.NodeAddress, out *core.NodeAddress, s conversion.Scope) error {
+ out.Type = core.NodeAddressType(in.Type)
+ out.Address = in.Address
+ return nil
+}
+
+// Convert_v1_NodeAddress_To_core_NodeAddress is an autogenerated conversion function.
+func Convert_v1_NodeAddress_To_core_NodeAddress(in *v1.NodeAddress, out *core.NodeAddress, s conversion.Scope) error {
+ return autoConvert_v1_NodeAddress_To_core_NodeAddress(in, out, s)
+}
+
+func autoConvert_core_NodeAddress_To_v1_NodeAddress(in *core.NodeAddress, out *v1.NodeAddress, s conversion.Scope) error {
+ out.Type = v1.NodeAddressType(in.Type)
+ out.Address = in.Address
+ return nil
+}
+
+// Convert_core_NodeAddress_To_v1_NodeAddress is an autogenerated conversion function.
+func Convert_core_NodeAddress_To_v1_NodeAddress(in *core.NodeAddress, out *v1.NodeAddress, s conversion.Scope) error {
+ return autoConvert_core_NodeAddress_To_v1_NodeAddress(in, out, s)
+}
+
+func autoConvert_v1_NodeAffinity_To_core_NodeAffinity(in *v1.NodeAffinity, out *core.NodeAffinity, s conversion.Scope) error {
+ out.RequiredDuringSchedulingIgnoredDuringExecution = (*core.NodeSelector)(unsafe.Pointer(in.RequiredDuringSchedulingIgnoredDuringExecution))
+ out.PreferredDuringSchedulingIgnoredDuringExecution = *(*[]core.PreferredSchedulingTerm)(unsafe.Pointer(&in.PreferredDuringSchedulingIgnoredDuringExecution))
+ return nil
+}
+
+// Convert_v1_NodeAffinity_To_core_NodeAffinity is an autogenerated conversion function.
+func Convert_v1_NodeAffinity_To_core_NodeAffinity(in *v1.NodeAffinity, out *core.NodeAffinity, s conversion.Scope) error {
+ return autoConvert_v1_NodeAffinity_To_core_NodeAffinity(in, out, s)
+}
+
+func autoConvert_core_NodeAffinity_To_v1_NodeAffinity(in *core.NodeAffinity, out *v1.NodeAffinity, s conversion.Scope) error {
+ out.RequiredDuringSchedulingIgnoredDuringExecution = (*v1.NodeSelector)(unsafe.Pointer(in.RequiredDuringSchedulingIgnoredDuringExecution))
+ out.PreferredDuringSchedulingIgnoredDuringExecution = *(*[]v1.PreferredSchedulingTerm)(unsafe.Pointer(&in.PreferredDuringSchedulingIgnoredDuringExecution))
+ return nil
+}
+
+// Convert_core_NodeAffinity_To_v1_NodeAffinity is an autogenerated conversion function.
+func Convert_core_NodeAffinity_To_v1_NodeAffinity(in *core.NodeAffinity, out *v1.NodeAffinity, s conversion.Scope) error {
+ return autoConvert_core_NodeAffinity_To_v1_NodeAffinity(in, out, s)
+}
+
+func autoConvert_v1_NodeCondition_To_core_NodeCondition(in *v1.NodeCondition, out *core.NodeCondition, s conversion.Scope) error {
+ out.Type = core.NodeConditionType(in.Type)
+ out.Status = core.ConditionStatus(in.Status)
+ out.LastHeartbeatTime = in.LastHeartbeatTime
+ out.LastTransitionTime = in.LastTransitionTime
+ out.Reason = in.Reason
+ out.Message = in.Message
+ return nil
+}
+
+// Convert_v1_NodeCondition_To_core_NodeCondition is an autogenerated conversion function.
+func Convert_v1_NodeCondition_To_core_NodeCondition(in *v1.NodeCondition, out *core.NodeCondition, s conversion.Scope) error {
+ return autoConvert_v1_NodeCondition_To_core_NodeCondition(in, out, s)
+}
+
+func autoConvert_core_NodeCondition_To_v1_NodeCondition(in *core.NodeCondition, out *v1.NodeCondition, s conversion.Scope) error {
+ out.Type = v1.NodeConditionType(in.Type)
+ out.Status = v1.ConditionStatus(in.Status)
+ out.LastHeartbeatTime = in.LastHeartbeatTime
+ out.LastTransitionTime = in.LastTransitionTime
+ out.Reason = in.Reason
+ out.Message = in.Message
+ return nil
+}
+
+// Convert_core_NodeCondition_To_v1_NodeCondition is an autogenerated conversion function.
+func Convert_core_NodeCondition_To_v1_NodeCondition(in *core.NodeCondition, out *v1.NodeCondition, s conversion.Scope) error {
+ return autoConvert_core_NodeCondition_To_v1_NodeCondition(in, out, s)
+}
+
+func autoConvert_v1_NodeConfigSource_To_core_NodeConfigSource(in *v1.NodeConfigSource, out *core.NodeConfigSource, s conversion.Scope) error {
+ out.ConfigMapRef = (*core.ObjectReference)(unsafe.Pointer(in.ConfigMapRef))
+ return nil
+}
+
+// Convert_v1_NodeConfigSource_To_core_NodeConfigSource is an autogenerated conversion function.
+func Convert_v1_NodeConfigSource_To_core_NodeConfigSource(in *v1.NodeConfigSource, out *core.NodeConfigSource, s conversion.Scope) error {
+ return autoConvert_v1_NodeConfigSource_To_core_NodeConfigSource(in, out, s)
+}
+
+func autoConvert_core_NodeConfigSource_To_v1_NodeConfigSource(in *core.NodeConfigSource, out *v1.NodeConfigSource, s conversion.Scope) error {
+ out.ConfigMapRef = (*v1.ObjectReference)(unsafe.Pointer(in.ConfigMapRef))
+ return nil
+}
+
+// Convert_core_NodeConfigSource_To_v1_NodeConfigSource is an autogenerated conversion function.
+func Convert_core_NodeConfigSource_To_v1_NodeConfigSource(in *core.NodeConfigSource, out *v1.NodeConfigSource, s conversion.Scope) error {
+ return autoConvert_core_NodeConfigSource_To_v1_NodeConfigSource(in, out, s)
+}
+
+func autoConvert_v1_NodeDaemonEndpoints_To_core_NodeDaemonEndpoints(in *v1.NodeDaemonEndpoints, out *core.NodeDaemonEndpoints, s conversion.Scope) error {
+ if err := Convert_v1_DaemonEndpoint_To_core_DaemonEndpoint(&in.KubeletEndpoint, &out.KubeletEndpoint, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_v1_NodeDaemonEndpoints_To_core_NodeDaemonEndpoints is an autogenerated conversion function.
+func Convert_v1_NodeDaemonEndpoints_To_core_NodeDaemonEndpoints(in *v1.NodeDaemonEndpoints, out *core.NodeDaemonEndpoints, s conversion.Scope) error {
+ return autoConvert_v1_NodeDaemonEndpoints_To_core_NodeDaemonEndpoints(in, out, s)
+}
+
+func autoConvert_core_NodeDaemonEndpoints_To_v1_NodeDaemonEndpoints(in *core.NodeDaemonEndpoints, out *v1.NodeDaemonEndpoints, s conversion.Scope) error {
+ if err := Convert_core_DaemonEndpoint_To_v1_DaemonEndpoint(&in.KubeletEndpoint, &out.KubeletEndpoint, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_core_NodeDaemonEndpoints_To_v1_NodeDaemonEndpoints is an autogenerated conversion function.
+func Convert_core_NodeDaemonEndpoints_To_v1_NodeDaemonEndpoints(in *core.NodeDaemonEndpoints, out *v1.NodeDaemonEndpoints, s conversion.Scope) error {
+ return autoConvert_core_NodeDaemonEndpoints_To_v1_NodeDaemonEndpoints(in, out, s)
+}
+
+func autoConvert_v1_NodeList_To_core_NodeList(in *v1.NodeList, out *core.NodeList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ out.Items = *(*[]core.Node)(unsafe.Pointer(&in.Items))
+ return nil
+}
+
+// Convert_v1_NodeList_To_core_NodeList is an autogenerated conversion function.
+func Convert_v1_NodeList_To_core_NodeList(in *v1.NodeList, out *core.NodeList, s conversion.Scope) error {
+ return autoConvert_v1_NodeList_To_core_NodeList(in, out, s)
+}
+
+func autoConvert_core_NodeList_To_v1_NodeList(in *core.NodeList, out *v1.NodeList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ out.Items = *(*[]v1.Node)(unsafe.Pointer(&in.Items))
+ return nil
+}
+
+// Convert_core_NodeList_To_v1_NodeList is an autogenerated conversion function.
+func Convert_core_NodeList_To_v1_NodeList(in *core.NodeList, out *v1.NodeList, s conversion.Scope) error {
+ return autoConvert_core_NodeList_To_v1_NodeList(in, out, s)
+}
+
+func autoConvert_v1_NodeProxyOptions_To_core_NodeProxyOptions(in *v1.NodeProxyOptions, out *core.NodeProxyOptions, s conversion.Scope) error {
+ out.Path = in.Path
+ return nil
+}
+
+// Convert_v1_NodeProxyOptions_To_core_NodeProxyOptions is an autogenerated conversion function.
+func Convert_v1_NodeProxyOptions_To_core_NodeProxyOptions(in *v1.NodeProxyOptions, out *core.NodeProxyOptions, s conversion.Scope) error {
+ return autoConvert_v1_NodeProxyOptions_To_core_NodeProxyOptions(in, out, s)
+}
+
+func autoConvert_core_NodeProxyOptions_To_v1_NodeProxyOptions(in *core.NodeProxyOptions, out *v1.NodeProxyOptions, s conversion.Scope) error {
+ out.Path = in.Path
+ return nil
+}
+
+// Convert_core_NodeProxyOptions_To_v1_NodeProxyOptions is an autogenerated conversion function.
+func Convert_core_NodeProxyOptions_To_v1_NodeProxyOptions(in *core.NodeProxyOptions, out *v1.NodeProxyOptions, s conversion.Scope) error {
+ return autoConvert_core_NodeProxyOptions_To_v1_NodeProxyOptions(in, out, s)
+}
+
+func autoConvert_v1_NodeResources_To_core_NodeResources(in *v1.NodeResources, out *core.NodeResources, s conversion.Scope) error {
+ out.Capacity = *(*core.ResourceList)(unsafe.Pointer(&in.Capacity))
+ return nil
+}
+
+// Convert_v1_NodeResources_To_core_NodeResources is an autogenerated conversion function.
+func Convert_v1_NodeResources_To_core_NodeResources(in *v1.NodeResources, out *core.NodeResources, s conversion.Scope) error {
+ return autoConvert_v1_NodeResources_To_core_NodeResources(in, out, s)
+}
+
+func autoConvert_core_NodeResources_To_v1_NodeResources(in *core.NodeResources, out *v1.NodeResources, s conversion.Scope) error {
+ out.Capacity = *(*v1.ResourceList)(unsafe.Pointer(&in.Capacity))
+ return nil
+}
+
+// Convert_core_NodeResources_To_v1_NodeResources is an autogenerated conversion function.
+func Convert_core_NodeResources_To_v1_NodeResources(in *core.NodeResources, out *v1.NodeResources, s conversion.Scope) error {
+ return autoConvert_core_NodeResources_To_v1_NodeResources(in, out, s)
+}
+
+func autoConvert_v1_NodeSelector_To_core_NodeSelector(in *v1.NodeSelector, out *core.NodeSelector, s conversion.Scope) error {
+ out.NodeSelectorTerms = *(*[]core.NodeSelectorTerm)(unsafe.Pointer(&in.NodeSelectorTerms))
+ return nil
+}
+
+// Convert_v1_NodeSelector_To_core_NodeSelector is an autogenerated conversion function.
+func Convert_v1_NodeSelector_To_core_NodeSelector(in *v1.NodeSelector, out *core.NodeSelector, s conversion.Scope) error {
+ return autoConvert_v1_NodeSelector_To_core_NodeSelector(in, out, s)
+}
+
+func autoConvert_core_NodeSelector_To_v1_NodeSelector(in *core.NodeSelector, out *v1.NodeSelector, s conversion.Scope) error {
+ out.NodeSelectorTerms = *(*[]v1.NodeSelectorTerm)(unsafe.Pointer(&in.NodeSelectorTerms))
+ return nil
+}
+
+// Convert_core_NodeSelector_To_v1_NodeSelector is an autogenerated conversion function.
+func Convert_core_NodeSelector_To_v1_NodeSelector(in *core.NodeSelector, out *v1.NodeSelector, s conversion.Scope) error {
+ return autoConvert_core_NodeSelector_To_v1_NodeSelector(in, out, s)
+}
+
+func autoConvert_v1_NodeSelectorRequirement_To_core_NodeSelectorRequirement(in *v1.NodeSelectorRequirement, out *core.NodeSelectorRequirement, s conversion.Scope) error {
+ out.Key = in.Key
+ out.Operator = core.NodeSelectorOperator(in.Operator)
+ out.Values = *(*[]string)(unsafe.Pointer(&in.Values))
+ return nil
+}
+
+// Convert_v1_NodeSelectorRequirement_To_core_NodeSelectorRequirement is an autogenerated conversion function.
+func Convert_v1_NodeSelectorRequirement_To_core_NodeSelectorRequirement(in *v1.NodeSelectorRequirement, out *core.NodeSelectorRequirement, s conversion.Scope) error {
+ return autoConvert_v1_NodeSelectorRequirement_To_core_NodeSelectorRequirement(in, out, s)
+}
+
+func autoConvert_core_NodeSelectorRequirement_To_v1_NodeSelectorRequirement(in *core.NodeSelectorRequirement, out *v1.NodeSelectorRequirement, s conversion.Scope) error {
+ out.Key = in.Key
+ out.Operator = v1.NodeSelectorOperator(in.Operator)
+ out.Values = *(*[]string)(unsafe.Pointer(&in.Values))
+ return nil
+}
+
+// Convert_core_NodeSelectorRequirement_To_v1_NodeSelectorRequirement is an autogenerated conversion function.
+func Convert_core_NodeSelectorRequirement_To_v1_NodeSelectorRequirement(in *core.NodeSelectorRequirement, out *v1.NodeSelectorRequirement, s conversion.Scope) error {
+ return autoConvert_core_NodeSelectorRequirement_To_v1_NodeSelectorRequirement(in, out, s)
+}
+
+func autoConvert_v1_NodeSelectorTerm_To_core_NodeSelectorTerm(in *v1.NodeSelectorTerm, out *core.NodeSelectorTerm, s conversion.Scope) error {
+ out.MatchExpressions = *(*[]core.NodeSelectorRequirement)(unsafe.Pointer(&in.MatchExpressions))
+ return nil
+}
+
+// Convert_v1_NodeSelectorTerm_To_core_NodeSelectorTerm is an autogenerated conversion function.
+func Convert_v1_NodeSelectorTerm_To_core_NodeSelectorTerm(in *v1.NodeSelectorTerm, out *core.NodeSelectorTerm, s conversion.Scope) error {
+ return autoConvert_v1_NodeSelectorTerm_To_core_NodeSelectorTerm(in, out, s)
+}
+
+func autoConvert_core_NodeSelectorTerm_To_v1_NodeSelectorTerm(in *core.NodeSelectorTerm, out *v1.NodeSelectorTerm, s conversion.Scope) error {
+ out.MatchExpressions = *(*[]v1.NodeSelectorRequirement)(unsafe.Pointer(&in.MatchExpressions))
+ return nil
+}
+
+// Convert_core_NodeSelectorTerm_To_v1_NodeSelectorTerm is an autogenerated conversion function.
+func Convert_core_NodeSelectorTerm_To_v1_NodeSelectorTerm(in *core.NodeSelectorTerm, out *v1.NodeSelectorTerm, s conversion.Scope) error {
+ return autoConvert_core_NodeSelectorTerm_To_v1_NodeSelectorTerm(in, out, s)
+}
+
+func autoConvert_v1_NodeSpec_To_core_NodeSpec(in *v1.NodeSpec, out *core.NodeSpec, s conversion.Scope) error {
+ out.PodCIDR = in.PodCIDR
+ out.ExternalID = in.ExternalID
+ out.ProviderID = in.ProviderID
+ out.Unschedulable = in.Unschedulable
+ out.Taints = *(*[]core.Taint)(unsafe.Pointer(&in.Taints))
+ out.ConfigSource = (*core.NodeConfigSource)(unsafe.Pointer(in.ConfigSource))
+ return nil
+}
+
+// Convert_v1_NodeSpec_To_core_NodeSpec is an autogenerated conversion function.
+func Convert_v1_NodeSpec_To_core_NodeSpec(in *v1.NodeSpec, out *core.NodeSpec, s conversion.Scope) error {
+ return autoConvert_v1_NodeSpec_To_core_NodeSpec(in, out, s)
+}
+
+func autoConvert_core_NodeSpec_To_v1_NodeSpec(in *core.NodeSpec, out *v1.NodeSpec, s conversion.Scope) error {
+ out.PodCIDR = in.PodCIDR
+ out.ExternalID = in.ExternalID
+ out.ProviderID = in.ProviderID
+ out.Unschedulable = in.Unschedulable
+ out.Taints = *(*[]v1.Taint)(unsafe.Pointer(&in.Taints))
+ out.ConfigSource = (*v1.NodeConfigSource)(unsafe.Pointer(in.ConfigSource))
+ return nil
+}
+
+// Convert_core_NodeSpec_To_v1_NodeSpec is an autogenerated conversion function.
+func Convert_core_NodeSpec_To_v1_NodeSpec(in *core.NodeSpec, out *v1.NodeSpec, s conversion.Scope) error {
+ return autoConvert_core_NodeSpec_To_v1_NodeSpec(in, out, s)
+}
+
+func autoConvert_v1_NodeStatus_To_core_NodeStatus(in *v1.NodeStatus, out *core.NodeStatus, s conversion.Scope) error {
+ out.Capacity = *(*core.ResourceList)(unsafe.Pointer(&in.Capacity))
+ out.Allocatable = *(*core.ResourceList)(unsafe.Pointer(&in.Allocatable))
+ out.Phase = core.NodePhase(in.Phase)
+ out.Conditions = *(*[]core.NodeCondition)(unsafe.Pointer(&in.Conditions))
+ out.Addresses = *(*[]core.NodeAddress)(unsafe.Pointer(&in.Addresses))
+ if err := Convert_v1_NodeDaemonEndpoints_To_core_NodeDaemonEndpoints(&in.DaemonEndpoints, &out.DaemonEndpoints, s); err != nil {
+ return err
+ }
+ if err := Convert_v1_NodeSystemInfo_To_core_NodeSystemInfo(&in.NodeInfo, &out.NodeInfo, s); err != nil {
+ return err
+ }
+ out.Images = *(*[]core.ContainerImage)(unsafe.Pointer(&in.Images))
+ out.VolumesInUse = *(*[]core.UniqueVolumeName)(unsafe.Pointer(&in.VolumesInUse))
+ out.VolumesAttached = *(*[]core.AttachedVolume)(unsafe.Pointer(&in.VolumesAttached))
+ return nil
+}
+
+// Convert_v1_NodeStatus_To_core_NodeStatus is an autogenerated conversion function.
+func Convert_v1_NodeStatus_To_core_NodeStatus(in *v1.NodeStatus, out *core.NodeStatus, s conversion.Scope) error {
+ return autoConvert_v1_NodeStatus_To_core_NodeStatus(in, out, s)
+}
+
+func autoConvert_core_NodeStatus_To_v1_NodeStatus(in *core.NodeStatus, out *v1.NodeStatus, s conversion.Scope) error {
+ out.Capacity = *(*v1.ResourceList)(unsafe.Pointer(&in.Capacity))
+ out.Allocatable = *(*v1.ResourceList)(unsafe.Pointer(&in.Allocatable))
+ out.Phase = v1.NodePhase(in.Phase)
+ out.Conditions = *(*[]v1.NodeCondition)(unsafe.Pointer(&in.Conditions))
+ out.Addresses = *(*[]v1.NodeAddress)(unsafe.Pointer(&in.Addresses))
+ if err := Convert_core_NodeDaemonEndpoints_To_v1_NodeDaemonEndpoints(&in.DaemonEndpoints, &out.DaemonEndpoints, s); err != nil {
+ return err
+ }
+ if err := Convert_core_NodeSystemInfo_To_v1_NodeSystemInfo(&in.NodeInfo, &out.NodeInfo, s); err != nil {
+ return err
+ }
+ out.Images = *(*[]v1.ContainerImage)(unsafe.Pointer(&in.Images))
+ out.VolumesInUse = *(*[]v1.UniqueVolumeName)(unsafe.Pointer(&in.VolumesInUse))
+ out.VolumesAttached = *(*[]v1.AttachedVolume)(unsafe.Pointer(&in.VolumesAttached))
+ return nil
+}
+
+// Convert_core_NodeStatus_To_v1_NodeStatus is an autogenerated conversion function.
+func Convert_core_NodeStatus_To_v1_NodeStatus(in *core.NodeStatus, out *v1.NodeStatus, s conversion.Scope) error {
+ return autoConvert_core_NodeStatus_To_v1_NodeStatus(in, out, s)
+}
+
+func autoConvert_v1_NodeSystemInfo_To_core_NodeSystemInfo(in *v1.NodeSystemInfo, out *core.NodeSystemInfo, s conversion.Scope) error {
+ out.MachineID = in.MachineID
+ out.SystemUUID = in.SystemUUID
+ out.BootID = in.BootID
+ out.KernelVersion = in.KernelVersion
+ out.OSImage = in.OSImage
+ out.ContainerRuntimeVersion = in.ContainerRuntimeVersion
+ out.KubeletVersion = in.KubeletVersion
+ out.KubeProxyVersion = in.KubeProxyVersion
+ out.OperatingSystem = in.OperatingSystem
+ out.Architecture = in.Architecture
+ return nil
+}
+
+// Convert_v1_NodeSystemInfo_To_core_NodeSystemInfo is an autogenerated conversion function.
+func Convert_v1_NodeSystemInfo_To_core_NodeSystemInfo(in *v1.NodeSystemInfo, out *core.NodeSystemInfo, s conversion.Scope) error {
+ return autoConvert_v1_NodeSystemInfo_To_core_NodeSystemInfo(in, out, s)
+}
+
+func autoConvert_core_NodeSystemInfo_To_v1_NodeSystemInfo(in *core.NodeSystemInfo, out *v1.NodeSystemInfo, s conversion.Scope) error {
+ out.MachineID = in.MachineID
+ out.SystemUUID = in.SystemUUID
+ out.BootID = in.BootID
+ out.KernelVersion = in.KernelVersion
+ out.OSImage = in.OSImage
+ out.ContainerRuntimeVersion = in.ContainerRuntimeVersion
+ out.KubeletVersion = in.KubeletVersion
+ out.KubeProxyVersion = in.KubeProxyVersion
+ out.OperatingSystem = in.OperatingSystem
+ out.Architecture = in.Architecture
+ return nil
+}
+
+// Convert_core_NodeSystemInfo_To_v1_NodeSystemInfo is an autogenerated conversion function.
+func Convert_core_NodeSystemInfo_To_v1_NodeSystemInfo(in *core.NodeSystemInfo, out *v1.NodeSystemInfo, s conversion.Scope) error {
+ return autoConvert_core_NodeSystemInfo_To_v1_NodeSystemInfo(in, out, s)
+}
+
+func autoConvert_v1_ObjectFieldSelector_To_core_ObjectFieldSelector(in *v1.ObjectFieldSelector, out *core.ObjectFieldSelector, s conversion.Scope) error {
+ out.APIVersion = in.APIVersion
+ out.FieldPath = in.FieldPath
+ return nil
+}
+
+// Convert_v1_ObjectFieldSelector_To_core_ObjectFieldSelector is an autogenerated conversion function.
+func Convert_v1_ObjectFieldSelector_To_core_ObjectFieldSelector(in *v1.ObjectFieldSelector, out *core.ObjectFieldSelector, s conversion.Scope) error {
+ return autoConvert_v1_ObjectFieldSelector_To_core_ObjectFieldSelector(in, out, s)
+}
+
+func autoConvert_core_ObjectFieldSelector_To_v1_ObjectFieldSelector(in *core.ObjectFieldSelector, out *v1.ObjectFieldSelector, s conversion.Scope) error {
+ out.APIVersion = in.APIVersion
+ out.FieldPath = in.FieldPath
+ return nil
+}
+
+// Convert_core_ObjectFieldSelector_To_v1_ObjectFieldSelector is an autogenerated conversion function.
+func Convert_core_ObjectFieldSelector_To_v1_ObjectFieldSelector(in *core.ObjectFieldSelector, out *v1.ObjectFieldSelector, s conversion.Scope) error {
+ return autoConvert_core_ObjectFieldSelector_To_v1_ObjectFieldSelector(in, out, s)
+}
+
+func autoConvert_v1_ObjectMeta_To_core_ObjectMeta(in *v1.ObjectMeta, out *core.ObjectMeta, s conversion.Scope) error {
+ out.Name = in.Name
+ out.GenerateName = in.GenerateName
+ out.Namespace = in.Namespace
+ out.SelfLink = in.SelfLink
+ out.UID = types.UID(in.UID)
+ out.ResourceVersion = in.ResourceVersion
+ out.Generation = in.Generation
+ out.CreationTimestamp = in.CreationTimestamp
+ out.DeletionTimestamp = (*meta_v1.Time)(unsafe.Pointer(in.DeletionTimestamp))
+ out.DeletionGracePeriodSeconds = (*int64)(unsafe.Pointer(in.DeletionGracePeriodSeconds))
+ out.Labels = *(*map[string]string)(unsafe.Pointer(&in.Labels))
+ out.Annotations = *(*map[string]string)(unsafe.Pointer(&in.Annotations))
+ out.OwnerReferences = *(*[]meta_v1.OwnerReference)(unsafe.Pointer(&in.OwnerReferences))
+ out.Initializers = (*meta_v1.Initializers)(unsafe.Pointer(in.Initializers))
+ out.Finalizers = *(*[]string)(unsafe.Pointer(&in.Finalizers))
+ out.ClusterName = in.ClusterName
+ return nil
+}
+
+// Convert_v1_ObjectMeta_To_core_ObjectMeta is an autogenerated conversion function.
+func Convert_v1_ObjectMeta_To_core_ObjectMeta(in *v1.ObjectMeta, out *core.ObjectMeta, s conversion.Scope) error {
+ return autoConvert_v1_ObjectMeta_To_core_ObjectMeta(in, out, s)
+}
+
+func autoConvert_core_ObjectMeta_To_v1_ObjectMeta(in *core.ObjectMeta, out *v1.ObjectMeta, s conversion.Scope) error {
+ out.Name = in.Name
+ out.GenerateName = in.GenerateName
+ out.Namespace = in.Namespace
+ out.SelfLink = in.SelfLink
+ out.UID = types.UID(in.UID)
+ out.ResourceVersion = in.ResourceVersion
+ out.Generation = in.Generation
+ out.CreationTimestamp = in.CreationTimestamp
+ out.DeletionTimestamp = (*meta_v1.Time)(unsafe.Pointer(in.DeletionTimestamp))
+ out.DeletionGracePeriodSeconds = (*int64)(unsafe.Pointer(in.DeletionGracePeriodSeconds))
+ out.Labels = *(*map[string]string)(unsafe.Pointer(&in.Labels))
+ out.Annotations = *(*map[string]string)(unsafe.Pointer(&in.Annotations))
+ out.OwnerReferences = *(*[]meta_v1.OwnerReference)(unsafe.Pointer(&in.OwnerReferences))
+ out.Initializers = (*meta_v1.Initializers)(unsafe.Pointer(in.Initializers))
+ out.Finalizers = *(*[]string)(unsafe.Pointer(&in.Finalizers))
+ out.ClusterName = in.ClusterName
+ return nil
+}
+
+// Convert_core_ObjectMeta_To_v1_ObjectMeta is an autogenerated conversion function.
+func Convert_core_ObjectMeta_To_v1_ObjectMeta(in *core.ObjectMeta, out *v1.ObjectMeta, s conversion.Scope) error {
+ return autoConvert_core_ObjectMeta_To_v1_ObjectMeta(in, out, s)
+}
+
+func autoConvert_v1_ObjectReference_To_core_ObjectReference(in *v1.ObjectReference, out *core.ObjectReference, s conversion.Scope) error {
+ out.Kind = in.Kind
+ out.Namespace = in.Namespace
+ out.Name = in.Name
+ out.UID = types.UID(in.UID)
+ out.APIVersion = in.APIVersion
+ out.ResourceVersion = in.ResourceVersion
+ out.FieldPath = in.FieldPath
+ return nil
+}
+
+// Convert_v1_ObjectReference_To_core_ObjectReference is an autogenerated conversion function.
+func Convert_v1_ObjectReference_To_core_ObjectReference(in *v1.ObjectReference, out *core.ObjectReference, s conversion.Scope) error {
+ return autoConvert_v1_ObjectReference_To_core_ObjectReference(in, out, s)
+}
+
+func autoConvert_core_ObjectReference_To_v1_ObjectReference(in *core.ObjectReference, out *v1.ObjectReference, s conversion.Scope) error {
+ out.Kind = in.Kind
+ out.Namespace = in.Namespace
+ out.Name = in.Name
+ out.UID = types.UID(in.UID)
+ out.APIVersion = in.APIVersion
+ out.ResourceVersion = in.ResourceVersion
+ out.FieldPath = in.FieldPath
+ return nil
+}
+
+// Convert_core_ObjectReference_To_v1_ObjectReference is an autogenerated conversion function.
+func Convert_core_ObjectReference_To_v1_ObjectReference(in *core.ObjectReference, out *v1.ObjectReference, s conversion.Scope) error {
+ return autoConvert_core_ObjectReference_To_v1_ObjectReference(in, out, s)
+}
+
+func autoConvert_v1_PersistentVolume_To_core_PersistentVolume(in *v1.PersistentVolume, out *core.PersistentVolume, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ if err := Convert_v1_PersistentVolumeSpec_To_core_PersistentVolumeSpec(&in.Spec, &out.Spec, s); err != nil {
+ return err
+ }
+ if err := Convert_v1_PersistentVolumeStatus_To_core_PersistentVolumeStatus(&in.Status, &out.Status, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_v1_PersistentVolume_To_core_PersistentVolume is an autogenerated conversion function.
+func Convert_v1_PersistentVolume_To_core_PersistentVolume(in *v1.PersistentVolume, out *core.PersistentVolume, s conversion.Scope) error {
+ return autoConvert_v1_PersistentVolume_To_core_PersistentVolume(in, out, s)
+}
+
+func autoConvert_core_PersistentVolume_To_v1_PersistentVolume(in *core.PersistentVolume, out *v1.PersistentVolume, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ if err := Convert_core_PersistentVolumeSpec_To_v1_PersistentVolumeSpec(&in.Spec, &out.Spec, s); err != nil {
+ return err
+ }
+ if err := Convert_core_PersistentVolumeStatus_To_v1_PersistentVolumeStatus(&in.Status, &out.Status, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_core_PersistentVolume_To_v1_PersistentVolume is an autogenerated conversion function.
+func Convert_core_PersistentVolume_To_v1_PersistentVolume(in *core.PersistentVolume, out *v1.PersistentVolume, s conversion.Scope) error {
+ return autoConvert_core_PersistentVolume_To_v1_PersistentVolume(in, out, s)
+}
+
+func autoConvert_v1_PersistentVolumeClaim_To_core_PersistentVolumeClaim(in *v1.PersistentVolumeClaim, out *core.PersistentVolumeClaim, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ if err := Convert_v1_PersistentVolumeClaimSpec_To_core_PersistentVolumeClaimSpec(&in.Spec, &out.Spec, s); err != nil {
+ return err
+ }
+ if err := Convert_v1_PersistentVolumeClaimStatus_To_core_PersistentVolumeClaimStatus(&in.Status, &out.Status, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_v1_PersistentVolumeClaim_To_core_PersistentVolumeClaim is an autogenerated conversion function.
+func Convert_v1_PersistentVolumeClaim_To_core_PersistentVolumeClaim(in *v1.PersistentVolumeClaim, out *core.PersistentVolumeClaim, s conversion.Scope) error {
+ return autoConvert_v1_PersistentVolumeClaim_To_core_PersistentVolumeClaim(in, out, s)
+}
+
+func autoConvert_core_PersistentVolumeClaim_To_v1_PersistentVolumeClaim(in *core.PersistentVolumeClaim, out *v1.PersistentVolumeClaim, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ if err := Convert_core_PersistentVolumeClaimSpec_To_v1_PersistentVolumeClaimSpec(&in.Spec, &out.Spec, s); err != nil {
+ return err
+ }
+ if err := Convert_core_PersistentVolumeClaimStatus_To_v1_PersistentVolumeClaimStatus(&in.Status, &out.Status, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_core_PersistentVolumeClaim_To_v1_PersistentVolumeClaim is an autogenerated conversion function.
+func Convert_core_PersistentVolumeClaim_To_v1_PersistentVolumeClaim(in *core.PersistentVolumeClaim, out *v1.PersistentVolumeClaim, s conversion.Scope) error {
+ return autoConvert_core_PersistentVolumeClaim_To_v1_PersistentVolumeClaim(in, out, s)
+}
+
+func autoConvert_v1_PersistentVolumeClaimCondition_To_core_PersistentVolumeClaimCondition(in *v1.PersistentVolumeClaimCondition, out *core.PersistentVolumeClaimCondition, s conversion.Scope) error {
+ out.Type = core.PersistentVolumeClaimConditionType(in.Type)
+ out.Status = core.ConditionStatus(in.Status)
+ out.LastProbeTime = in.LastProbeTime
+ out.LastTransitionTime = in.LastTransitionTime
+ out.Reason = in.Reason
+ out.Message = in.Message
+ return nil
+}
+
+// Convert_v1_PersistentVolumeClaimCondition_To_core_PersistentVolumeClaimCondition is an autogenerated conversion function.
+func Convert_v1_PersistentVolumeClaimCondition_To_core_PersistentVolumeClaimCondition(in *v1.PersistentVolumeClaimCondition, out *core.PersistentVolumeClaimCondition, s conversion.Scope) error {
+ return autoConvert_v1_PersistentVolumeClaimCondition_To_core_PersistentVolumeClaimCondition(in, out, s)
+}
+
+func autoConvert_core_PersistentVolumeClaimCondition_To_v1_PersistentVolumeClaimCondition(in *core.PersistentVolumeClaimCondition, out *v1.PersistentVolumeClaimCondition, s conversion.Scope) error {
+ out.Type = v1.PersistentVolumeClaimConditionType(in.Type)
+ out.Status = v1.ConditionStatus(in.Status)
+ out.LastProbeTime = in.LastProbeTime
+ out.LastTransitionTime = in.LastTransitionTime
+ out.Reason = in.Reason
+ out.Message = in.Message
+ return nil
+}
+
+// Convert_core_PersistentVolumeClaimCondition_To_v1_PersistentVolumeClaimCondition is an autogenerated conversion function.
+func Convert_core_PersistentVolumeClaimCondition_To_v1_PersistentVolumeClaimCondition(in *core.PersistentVolumeClaimCondition, out *v1.PersistentVolumeClaimCondition, s conversion.Scope) error {
+ return autoConvert_core_PersistentVolumeClaimCondition_To_v1_PersistentVolumeClaimCondition(in, out, s)
+}
+
+func autoConvert_v1_PersistentVolumeClaimList_To_core_PersistentVolumeClaimList(in *v1.PersistentVolumeClaimList, out *core.PersistentVolumeClaimList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ out.Items = *(*[]core.PersistentVolumeClaim)(unsafe.Pointer(&in.Items))
+ return nil
+}
+
+// Convert_v1_PersistentVolumeClaimList_To_core_PersistentVolumeClaimList is an autogenerated conversion function.
+func Convert_v1_PersistentVolumeClaimList_To_core_PersistentVolumeClaimList(in *v1.PersistentVolumeClaimList, out *core.PersistentVolumeClaimList, s conversion.Scope) error {
+ return autoConvert_v1_PersistentVolumeClaimList_To_core_PersistentVolumeClaimList(in, out, s)
+}
+
+func autoConvert_core_PersistentVolumeClaimList_To_v1_PersistentVolumeClaimList(in *core.PersistentVolumeClaimList, out *v1.PersistentVolumeClaimList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ out.Items = *(*[]v1.PersistentVolumeClaim)(unsafe.Pointer(&in.Items))
+ return nil
+}
+
+// Convert_core_PersistentVolumeClaimList_To_v1_PersistentVolumeClaimList is an autogenerated conversion function.
+func Convert_core_PersistentVolumeClaimList_To_v1_PersistentVolumeClaimList(in *core.PersistentVolumeClaimList, out *v1.PersistentVolumeClaimList, s conversion.Scope) error {
+ return autoConvert_core_PersistentVolumeClaimList_To_v1_PersistentVolumeClaimList(in, out, s)
+}
+
+func autoConvert_v1_PersistentVolumeClaimSpec_To_core_PersistentVolumeClaimSpec(in *v1.PersistentVolumeClaimSpec, out *core.PersistentVolumeClaimSpec, s conversion.Scope) error {
+ out.AccessModes = *(*[]core.PersistentVolumeAccessMode)(unsafe.Pointer(&in.AccessModes))
+ out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
+ if err := Convert_v1_ResourceRequirements_To_core_ResourceRequirements(&in.Resources, &out.Resources, s); err != nil {
+ return err
+ }
+ out.VolumeName = in.VolumeName
+ out.StorageClassName = (*string)(unsafe.Pointer(in.StorageClassName))
+ return nil
+}
+
+// Convert_v1_PersistentVolumeClaimSpec_To_core_PersistentVolumeClaimSpec is an autogenerated conversion function.
+func Convert_v1_PersistentVolumeClaimSpec_To_core_PersistentVolumeClaimSpec(in *v1.PersistentVolumeClaimSpec, out *core.PersistentVolumeClaimSpec, s conversion.Scope) error {
+ return autoConvert_v1_PersistentVolumeClaimSpec_To_core_PersistentVolumeClaimSpec(in, out, s)
+}
+
+func autoConvert_core_PersistentVolumeClaimSpec_To_v1_PersistentVolumeClaimSpec(in *core.PersistentVolumeClaimSpec, out *v1.PersistentVolumeClaimSpec, s conversion.Scope) error {
+ out.AccessModes = *(*[]v1.PersistentVolumeAccessMode)(unsafe.Pointer(&in.AccessModes))
+ out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
+ if err := Convert_core_ResourceRequirements_To_v1_ResourceRequirements(&in.Resources, &out.Resources, s); err != nil {
+ return err
+ }
+ out.VolumeName = in.VolumeName
+ out.StorageClassName = (*string)(unsafe.Pointer(in.StorageClassName))
+ return nil
+}
+
+// Convert_core_PersistentVolumeClaimSpec_To_v1_PersistentVolumeClaimSpec is an autogenerated conversion function.
+func Convert_core_PersistentVolumeClaimSpec_To_v1_PersistentVolumeClaimSpec(in *core.PersistentVolumeClaimSpec, out *v1.PersistentVolumeClaimSpec, s conversion.Scope) error {
+ return autoConvert_core_PersistentVolumeClaimSpec_To_v1_PersistentVolumeClaimSpec(in, out, s)
+}
+
+func autoConvert_v1_PersistentVolumeClaimStatus_To_core_PersistentVolumeClaimStatus(in *v1.PersistentVolumeClaimStatus, out *core.PersistentVolumeClaimStatus, s conversion.Scope) error {
+ out.Phase = core.PersistentVolumeClaimPhase(in.Phase)
+ out.AccessModes = *(*[]core.PersistentVolumeAccessMode)(unsafe.Pointer(&in.AccessModes))
+ out.Capacity = *(*core.ResourceList)(unsafe.Pointer(&in.Capacity))
+ out.Conditions = *(*[]core.PersistentVolumeClaimCondition)(unsafe.Pointer(&in.Conditions))
+ return nil
+}
+
+// Convert_v1_PersistentVolumeClaimStatus_To_core_PersistentVolumeClaimStatus is an autogenerated conversion function.
+func Convert_v1_PersistentVolumeClaimStatus_To_core_PersistentVolumeClaimStatus(in *v1.PersistentVolumeClaimStatus, out *core.PersistentVolumeClaimStatus, s conversion.Scope) error {
+ return autoConvert_v1_PersistentVolumeClaimStatus_To_core_PersistentVolumeClaimStatus(in, out, s)
+}
+
+func autoConvert_core_PersistentVolumeClaimStatus_To_v1_PersistentVolumeClaimStatus(in *core.PersistentVolumeClaimStatus, out *v1.PersistentVolumeClaimStatus, s conversion.Scope) error {
+ out.Phase = v1.PersistentVolumeClaimPhase(in.Phase)
+ out.AccessModes = *(*[]v1.PersistentVolumeAccessMode)(unsafe.Pointer(&in.AccessModes))
+ out.Capacity = *(*v1.ResourceList)(unsafe.Pointer(&in.Capacity))
+ out.Conditions = *(*[]v1.PersistentVolumeClaimCondition)(unsafe.Pointer(&in.Conditions))
+ return nil
+}
+
+// Convert_core_PersistentVolumeClaimStatus_To_v1_PersistentVolumeClaimStatus is an autogenerated conversion function.
+func Convert_core_PersistentVolumeClaimStatus_To_v1_PersistentVolumeClaimStatus(in *core.PersistentVolumeClaimStatus, out *v1.PersistentVolumeClaimStatus, s conversion.Scope) error {
+ return autoConvert_core_PersistentVolumeClaimStatus_To_v1_PersistentVolumeClaimStatus(in, out, s)
+}
+
+func autoConvert_v1_PersistentVolumeClaimVolumeSource_To_core_PersistentVolumeClaimVolumeSource(in *v1.PersistentVolumeClaimVolumeSource, out *core.PersistentVolumeClaimVolumeSource, s conversion.Scope) error {
+ out.ClaimName = in.ClaimName
+ out.ReadOnly = in.ReadOnly
+ return nil
+}
+
+// Convert_v1_PersistentVolumeClaimVolumeSource_To_core_PersistentVolumeClaimVolumeSource is an autogenerated conversion function.
+func Convert_v1_PersistentVolumeClaimVolumeSource_To_core_PersistentVolumeClaimVolumeSource(in *v1.PersistentVolumeClaimVolumeSource, out *core.PersistentVolumeClaimVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_PersistentVolumeClaimVolumeSource_To_core_PersistentVolumeClaimVolumeSource(in, out, s)
+}
+
+func autoConvert_core_PersistentVolumeClaimVolumeSource_To_v1_PersistentVolumeClaimVolumeSource(in *core.PersistentVolumeClaimVolumeSource, out *v1.PersistentVolumeClaimVolumeSource, s conversion.Scope) error {
+ out.ClaimName = in.ClaimName
+ out.ReadOnly = in.ReadOnly
+ return nil
+}
+
+// Convert_core_PersistentVolumeClaimVolumeSource_To_v1_PersistentVolumeClaimVolumeSource is an autogenerated conversion function.
+func Convert_core_PersistentVolumeClaimVolumeSource_To_v1_PersistentVolumeClaimVolumeSource(in *core.PersistentVolumeClaimVolumeSource, out *v1.PersistentVolumeClaimVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_PersistentVolumeClaimVolumeSource_To_v1_PersistentVolumeClaimVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_PersistentVolumeList_To_core_PersistentVolumeList(in *v1.PersistentVolumeList, out *core.PersistentVolumeList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ if in.Items != nil {
+ in, out := &in.Items, &out.Items
+ *out = make([]core.PersistentVolume, len(*in))
+ for i := range *in {
+ if err := Convert_v1_PersistentVolume_To_core_PersistentVolume(&(*in)[i], &(*out)[i], s); err != nil {
+ return err
+ }
+ }
+ } else {
+ out.Items = nil
+ }
+ return nil
+}
+
+// Convert_v1_PersistentVolumeList_To_core_PersistentVolumeList is an autogenerated conversion function.
+func Convert_v1_PersistentVolumeList_To_core_PersistentVolumeList(in *v1.PersistentVolumeList, out *core.PersistentVolumeList, s conversion.Scope) error {
+ return autoConvert_v1_PersistentVolumeList_To_core_PersistentVolumeList(in, out, s)
+}
+
+func autoConvert_core_PersistentVolumeList_To_v1_PersistentVolumeList(in *core.PersistentVolumeList, out *v1.PersistentVolumeList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ if in.Items != nil {
+ in, out := &in.Items, &out.Items
+ *out = make([]v1.PersistentVolume, len(*in))
+ for i := range *in {
+ if err := Convert_core_PersistentVolume_To_v1_PersistentVolume(&(*in)[i], &(*out)[i], s); err != nil {
+ return err
+ }
+ }
+ } else {
+ out.Items = nil
+ }
+ return nil
+}
+
+// Convert_core_PersistentVolumeList_To_v1_PersistentVolumeList is an autogenerated conversion function.
+func Convert_core_PersistentVolumeList_To_v1_PersistentVolumeList(in *core.PersistentVolumeList, out *v1.PersistentVolumeList, s conversion.Scope) error {
+ return autoConvert_core_PersistentVolumeList_To_v1_PersistentVolumeList(in, out, s)
+}
+
+func autoConvert_v1_PersistentVolumeSource_To_core_PersistentVolumeSource(in *v1.PersistentVolumeSource, out *core.PersistentVolumeSource, s conversion.Scope) error {
+ out.GCEPersistentDisk = (*core.GCEPersistentDiskVolumeSource)(unsafe.Pointer(in.GCEPersistentDisk))
+ out.AWSElasticBlockStore = (*core.AWSElasticBlockStoreVolumeSource)(unsafe.Pointer(in.AWSElasticBlockStore))
+ out.HostPath = (*core.HostPathVolumeSource)(unsafe.Pointer(in.HostPath))
+ out.Glusterfs = (*core.GlusterfsVolumeSource)(unsafe.Pointer(in.Glusterfs))
+ out.NFS = (*core.NFSVolumeSource)(unsafe.Pointer(in.NFS))
+ out.RBD = (*core.RBDPersistentVolumeSource)(unsafe.Pointer(in.RBD))
+ out.ISCSI = (*core.ISCSIVolumeSource)(unsafe.Pointer(in.ISCSI))
+ out.Cinder = (*core.CinderVolumeSource)(unsafe.Pointer(in.Cinder))
+ out.CephFS = (*core.CephFSPersistentVolumeSource)(unsafe.Pointer(in.CephFS))
+ out.FC = (*core.FCVolumeSource)(unsafe.Pointer(in.FC))
+ out.Flocker = (*core.FlockerVolumeSource)(unsafe.Pointer(in.Flocker))
+ out.FlexVolume = (*core.FlexVolumeSource)(unsafe.Pointer(in.FlexVolume))
+ out.AzureFile = (*core.AzureFilePersistentVolumeSource)(unsafe.Pointer(in.AzureFile))
+ out.VsphereVolume = (*core.VsphereVirtualDiskVolumeSource)(unsafe.Pointer(in.VsphereVolume))
+ out.Quobyte = (*core.QuobyteVolumeSource)(unsafe.Pointer(in.Quobyte))
+ out.AzureDisk = (*core.AzureDiskVolumeSource)(unsafe.Pointer(in.AzureDisk))
+ out.PhotonPersistentDisk = (*core.PhotonPersistentDiskVolumeSource)(unsafe.Pointer(in.PhotonPersistentDisk))
+ out.PortworxVolume = (*core.PortworxVolumeSource)(unsafe.Pointer(in.PortworxVolume))
+ out.ScaleIO = (*core.ScaleIOPersistentVolumeSource)(unsafe.Pointer(in.ScaleIO))
+ out.Local = (*core.LocalVolumeSource)(unsafe.Pointer(in.Local))
+ out.StorageOS = (*core.StorageOSPersistentVolumeSource)(unsafe.Pointer(in.StorageOS))
+ return nil
+}
+
+// Convert_v1_PersistentVolumeSource_To_core_PersistentVolumeSource is an autogenerated conversion function.
+func Convert_v1_PersistentVolumeSource_To_core_PersistentVolumeSource(in *v1.PersistentVolumeSource, out *core.PersistentVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_PersistentVolumeSource_To_core_PersistentVolumeSource(in, out, s)
+}
+
+func autoConvert_core_PersistentVolumeSource_To_v1_PersistentVolumeSource(in *core.PersistentVolumeSource, out *v1.PersistentVolumeSource, s conversion.Scope) error {
+ out.GCEPersistentDisk = (*v1.GCEPersistentDiskVolumeSource)(unsafe.Pointer(in.GCEPersistentDisk))
+ out.AWSElasticBlockStore = (*v1.AWSElasticBlockStoreVolumeSource)(unsafe.Pointer(in.AWSElasticBlockStore))
+ out.HostPath = (*v1.HostPathVolumeSource)(unsafe.Pointer(in.HostPath))
+ out.Glusterfs = (*v1.GlusterfsVolumeSource)(unsafe.Pointer(in.Glusterfs))
+ out.NFS = (*v1.NFSVolumeSource)(unsafe.Pointer(in.NFS))
+ out.RBD = (*v1.RBDPersistentVolumeSource)(unsafe.Pointer(in.RBD))
+ out.Quobyte = (*v1.QuobyteVolumeSource)(unsafe.Pointer(in.Quobyte))
+ out.ISCSI = (*v1.ISCSIVolumeSource)(unsafe.Pointer(in.ISCSI))
+ out.FlexVolume = (*v1.FlexVolumeSource)(unsafe.Pointer(in.FlexVolume))
+ out.Cinder = (*v1.CinderVolumeSource)(unsafe.Pointer(in.Cinder))
+ out.CephFS = (*v1.CephFSPersistentVolumeSource)(unsafe.Pointer(in.CephFS))
+ out.FC = (*v1.FCVolumeSource)(unsafe.Pointer(in.FC))
+ out.Flocker = (*v1.FlockerVolumeSource)(unsafe.Pointer(in.Flocker))
+ out.AzureFile = (*v1.AzureFilePersistentVolumeSource)(unsafe.Pointer(in.AzureFile))
+ out.VsphereVolume = (*v1.VsphereVirtualDiskVolumeSource)(unsafe.Pointer(in.VsphereVolume))
+ out.AzureDisk = (*v1.AzureDiskVolumeSource)(unsafe.Pointer(in.AzureDisk))
+ out.PhotonPersistentDisk = (*v1.PhotonPersistentDiskVolumeSource)(unsafe.Pointer(in.PhotonPersistentDisk))
+ out.PortworxVolume = (*v1.PortworxVolumeSource)(unsafe.Pointer(in.PortworxVolume))
+ out.ScaleIO = (*v1.ScaleIOPersistentVolumeSource)(unsafe.Pointer(in.ScaleIO))
+ out.Local = (*v1.LocalVolumeSource)(unsafe.Pointer(in.Local))
+ out.StorageOS = (*v1.StorageOSPersistentVolumeSource)(unsafe.Pointer(in.StorageOS))
+ return nil
+}
+
+// Convert_core_PersistentVolumeSource_To_v1_PersistentVolumeSource is an autogenerated conversion function.
+func Convert_core_PersistentVolumeSource_To_v1_PersistentVolumeSource(in *core.PersistentVolumeSource, out *v1.PersistentVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_PersistentVolumeSource_To_v1_PersistentVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_PersistentVolumeSpec_To_core_PersistentVolumeSpec(in *v1.PersistentVolumeSpec, out *core.PersistentVolumeSpec, s conversion.Scope) error {
+ out.Capacity = *(*core.ResourceList)(unsafe.Pointer(&in.Capacity))
+ if err := Convert_v1_PersistentVolumeSource_To_core_PersistentVolumeSource(&in.PersistentVolumeSource, &out.PersistentVolumeSource, s); err != nil {
+ return err
+ }
+ out.AccessModes = *(*[]core.PersistentVolumeAccessMode)(unsafe.Pointer(&in.AccessModes))
+ out.ClaimRef = (*core.ObjectReference)(unsafe.Pointer(in.ClaimRef))
+ out.PersistentVolumeReclaimPolicy = core.PersistentVolumeReclaimPolicy(in.PersistentVolumeReclaimPolicy)
+ out.StorageClassName = in.StorageClassName
+ out.MountOptions = *(*[]string)(unsafe.Pointer(&in.MountOptions))
+ return nil
+}
+
+// Convert_v1_PersistentVolumeSpec_To_core_PersistentVolumeSpec is an autogenerated conversion function.
+func Convert_v1_PersistentVolumeSpec_To_core_PersistentVolumeSpec(in *v1.PersistentVolumeSpec, out *core.PersistentVolumeSpec, s conversion.Scope) error {
+ return autoConvert_v1_PersistentVolumeSpec_To_core_PersistentVolumeSpec(in, out, s)
+}
+
+func autoConvert_core_PersistentVolumeSpec_To_v1_PersistentVolumeSpec(in *core.PersistentVolumeSpec, out *v1.PersistentVolumeSpec, s conversion.Scope) error {
+ out.Capacity = *(*v1.ResourceList)(unsafe.Pointer(&in.Capacity))
+ if err := Convert_core_PersistentVolumeSource_To_v1_PersistentVolumeSource(&in.PersistentVolumeSource, &out.PersistentVolumeSource, s); err != nil {
+ return err
+ }
+ out.AccessModes = *(*[]v1.PersistentVolumeAccessMode)(unsafe.Pointer(&in.AccessModes))
+ out.ClaimRef = (*v1.ObjectReference)(unsafe.Pointer(in.ClaimRef))
+ out.PersistentVolumeReclaimPolicy = v1.PersistentVolumeReclaimPolicy(in.PersistentVolumeReclaimPolicy)
+ out.StorageClassName = in.StorageClassName
+ out.MountOptions = *(*[]string)(unsafe.Pointer(&in.MountOptions))
+ return nil
+}
+
+// Convert_core_PersistentVolumeSpec_To_v1_PersistentVolumeSpec is an autogenerated conversion function.
+func Convert_core_PersistentVolumeSpec_To_v1_PersistentVolumeSpec(in *core.PersistentVolumeSpec, out *v1.PersistentVolumeSpec, s conversion.Scope) error {
+ return autoConvert_core_PersistentVolumeSpec_To_v1_PersistentVolumeSpec(in, out, s)
+}
+
+func autoConvert_v1_PersistentVolumeStatus_To_core_PersistentVolumeStatus(in *v1.PersistentVolumeStatus, out *core.PersistentVolumeStatus, s conversion.Scope) error {
+ out.Phase = core.PersistentVolumePhase(in.Phase)
+ out.Message = in.Message
+ out.Reason = in.Reason
+ return nil
+}
+
+// Convert_v1_PersistentVolumeStatus_To_core_PersistentVolumeStatus is an autogenerated conversion function.
+func Convert_v1_PersistentVolumeStatus_To_core_PersistentVolumeStatus(in *v1.PersistentVolumeStatus, out *core.PersistentVolumeStatus, s conversion.Scope) error {
+ return autoConvert_v1_PersistentVolumeStatus_To_core_PersistentVolumeStatus(in, out, s)
+}
+
+func autoConvert_core_PersistentVolumeStatus_To_v1_PersistentVolumeStatus(in *core.PersistentVolumeStatus, out *v1.PersistentVolumeStatus, s conversion.Scope) error {
+ out.Phase = v1.PersistentVolumePhase(in.Phase)
+ out.Message = in.Message
+ out.Reason = in.Reason
+ return nil
+}
+
+// Convert_core_PersistentVolumeStatus_To_v1_PersistentVolumeStatus is an autogenerated conversion function.
+func Convert_core_PersistentVolumeStatus_To_v1_PersistentVolumeStatus(in *core.PersistentVolumeStatus, out *v1.PersistentVolumeStatus, s conversion.Scope) error {
+ return autoConvert_core_PersistentVolumeStatus_To_v1_PersistentVolumeStatus(in, out, s)
+}
+
+func autoConvert_v1_PhotonPersistentDiskVolumeSource_To_core_PhotonPersistentDiskVolumeSource(in *v1.PhotonPersistentDiskVolumeSource, out *core.PhotonPersistentDiskVolumeSource, s conversion.Scope) error {
+ out.PdID = in.PdID
+ out.FSType = in.FSType
+ return nil
+}
+
+// Convert_v1_PhotonPersistentDiskVolumeSource_To_core_PhotonPersistentDiskVolumeSource is an autogenerated conversion function.
+func Convert_v1_PhotonPersistentDiskVolumeSource_To_core_PhotonPersistentDiskVolumeSource(in *v1.PhotonPersistentDiskVolumeSource, out *core.PhotonPersistentDiskVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_PhotonPersistentDiskVolumeSource_To_core_PhotonPersistentDiskVolumeSource(in, out, s)
+}
+
+func autoConvert_core_PhotonPersistentDiskVolumeSource_To_v1_PhotonPersistentDiskVolumeSource(in *core.PhotonPersistentDiskVolumeSource, out *v1.PhotonPersistentDiskVolumeSource, s conversion.Scope) error {
+ out.PdID = in.PdID
+ out.FSType = in.FSType
+ return nil
+}
+
+// Convert_core_PhotonPersistentDiskVolumeSource_To_v1_PhotonPersistentDiskVolumeSource is an autogenerated conversion function.
+func Convert_core_PhotonPersistentDiskVolumeSource_To_v1_PhotonPersistentDiskVolumeSource(in *core.PhotonPersistentDiskVolumeSource, out *v1.PhotonPersistentDiskVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_PhotonPersistentDiskVolumeSource_To_v1_PhotonPersistentDiskVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_Pod_To_core_Pod(in *v1.Pod, out *core.Pod, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ if err := Convert_v1_PodSpec_To_core_PodSpec(&in.Spec, &out.Spec, s); err != nil {
+ return err
+ }
+ if err := Convert_v1_PodStatus_To_core_PodStatus(&in.Status, &out.Status, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_v1_Pod_To_core_Pod is an autogenerated conversion function.
+func Convert_v1_Pod_To_core_Pod(in *v1.Pod, out *core.Pod, s conversion.Scope) error {
+ return autoConvert_v1_Pod_To_core_Pod(in, out, s)
+}
+
+func autoConvert_core_Pod_To_v1_Pod(in *core.Pod, out *v1.Pod, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ if err := Convert_core_PodSpec_To_v1_PodSpec(&in.Spec, &out.Spec, s); err != nil {
+ return err
+ }
+ if err := Convert_core_PodStatus_To_v1_PodStatus(&in.Status, &out.Status, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+func autoConvert_v1_PodAffinity_To_core_PodAffinity(in *v1.PodAffinity, out *core.PodAffinity, s conversion.Scope) error {
+ out.RequiredDuringSchedulingIgnoredDuringExecution = *(*[]core.PodAffinityTerm)(unsafe.Pointer(&in.RequiredDuringSchedulingIgnoredDuringExecution))
+ out.PreferredDuringSchedulingIgnoredDuringExecution = *(*[]core.WeightedPodAffinityTerm)(unsafe.Pointer(&in.PreferredDuringSchedulingIgnoredDuringExecution))
+ return nil
+}
+
+// Convert_v1_PodAffinity_To_core_PodAffinity is an autogenerated conversion function.
+func Convert_v1_PodAffinity_To_core_PodAffinity(in *v1.PodAffinity, out *core.PodAffinity, s conversion.Scope) error {
+ return autoConvert_v1_PodAffinity_To_core_PodAffinity(in, out, s)
+}
+
+func autoConvert_core_PodAffinity_To_v1_PodAffinity(in *core.PodAffinity, out *v1.PodAffinity, s conversion.Scope) error {
+ out.RequiredDuringSchedulingIgnoredDuringExecution = *(*[]v1.PodAffinityTerm)(unsafe.Pointer(&in.RequiredDuringSchedulingIgnoredDuringExecution))
+ out.PreferredDuringSchedulingIgnoredDuringExecution = *(*[]v1.WeightedPodAffinityTerm)(unsafe.Pointer(&in.PreferredDuringSchedulingIgnoredDuringExecution))
+ return nil
+}
+
+// Convert_core_PodAffinity_To_v1_PodAffinity is an autogenerated conversion function.
+func Convert_core_PodAffinity_To_v1_PodAffinity(in *core.PodAffinity, out *v1.PodAffinity, s conversion.Scope) error {
+ return autoConvert_core_PodAffinity_To_v1_PodAffinity(in, out, s)
+}
+
+func autoConvert_v1_PodAffinityTerm_To_core_PodAffinityTerm(in *v1.PodAffinityTerm, out *core.PodAffinityTerm, s conversion.Scope) error {
+ out.LabelSelector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.LabelSelector))
+ out.Namespaces = *(*[]string)(unsafe.Pointer(&in.Namespaces))
+ out.TopologyKey = in.TopologyKey
+ return nil
+}
+
+// Convert_v1_PodAffinityTerm_To_core_PodAffinityTerm is an autogenerated conversion function.
+func Convert_v1_PodAffinityTerm_To_core_PodAffinityTerm(in *v1.PodAffinityTerm, out *core.PodAffinityTerm, s conversion.Scope) error {
+ return autoConvert_v1_PodAffinityTerm_To_core_PodAffinityTerm(in, out, s)
+}
+
+func autoConvert_core_PodAffinityTerm_To_v1_PodAffinityTerm(in *core.PodAffinityTerm, out *v1.PodAffinityTerm, s conversion.Scope) error {
+ out.LabelSelector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.LabelSelector))
+ out.Namespaces = *(*[]string)(unsafe.Pointer(&in.Namespaces))
+ out.TopologyKey = in.TopologyKey
+ return nil
+}
+
+// Convert_core_PodAffinityTerm_To_v1_PodAffinityTerm is an autogenerated conversion function.
+func Convert_core_PodAffinityTerm_To_v1_PodAffinityTerm(in *core.PodAffinityTerm, out *v1.PodAffinityTerm, s conversion.Scope) error {
+ return autoConvert_core_PodAffinityTerm_To_v1_PodAffinityTerm(in, out, s)
+}
+
+func autoConvert_v1_PodAntiAffinity_To_core_PodAntiAffinity(in *v1.PodAntiAffinity, out *core.PodAntiAffinity, s conversion.Scope) error {
+ out.RequiredDuringSchedulingIgnoredDuringExecution = *(*[]core.PodAffinityTerm)(unsafe.Pointer(&in.RequiredDuringSchedulingIgnoredDuringExecution))
+ out.PreferredDuringSchedulingIgnoredDuringExecution = *(*[]core.WeightedPodAffinityTerm)(unsafe.Pointer(&in.PreferredDuringSchedulingIgnoredDuringExecution))
+ return nil
+}
+
+// Convert_v1_PodAntiAffinity_To_core_PodAntiAffinity is an autogenerated conversion function.
+func Convert_v1_PodAntiAffinity_To_core_PodAntiAffinity(in *v1.PodAntiAffinity, out *core.PodAntiAffinity, s conversion.Scope) error {
+ return autoConvert_v1_PodAntiAffinity_To_core_PodAntiAffinity(in, out, s)
+}
+
+func autoConvert_core_PodAntiAffinity_To_v1_PodAntiAffinity(in *core.PodAntiAffinity, out *v1.PodAntiAffinity, s conversion.Scope) error {
+ out.RequiredDuringSchedulingIgnoredDuringExecution = *(*[]v1.PodAffinityTerm)(unsafe.Pointer(&in.RequiredDuringSchedulingIgnoredDuringExecution))
+ out.PreferredDuringSchedulingIgnoredDuringExecution = *(*[]v1.WeightedPodAffinityTerm)(unsafe.Pointer(&in.PreferredDuringSchedulingIgnoredDuringExecution))
+ return nil
+}
+
+// Convert_core_PodAntiAffinity_To_v1_PodAntiAffinity is an autogenerated conversion function.
+func Convert_core_PodAntiAffinity_To_v1_PodAntiAffinity(in *core.PodAntiAffinity, out *v1.PodAntiAffinity, s conversion.Scope) error {
+ return autoConvert_core_PodAntiAffinity_To_v1_PodAntiAffinity(in, out, s)
+}
+
+func autoConvert_v1_PodAttachOptions_To_core_PodAttachOptions(in *v1.PodAttachOptions, out *core.PodAttachOptions, s conversion.Scope) error {
+ out.Stdin = in.Stdin
+ out.Stdout = in.Stdout
+ out.Stderr = in.Stderr
+ out.TTY = in.TTY
+ out.Container = in.Container
+ return nil
+}
+
+// Convert_v1_PodAttachOptions_To_core_PodAttachOptions is an autogenerated conversion function.
+func Convert_v1_PodAttachOptions_To_core_PodAttachOptions(in *v1.PodAttachOptions, out *core.PodAttachOptions, s conversion.Scope) error {
+ return autoConvert_v1_PodAttachOptions_To_core_PodAttachOptions(in, out, s)
+}
+
+func autoConvert_core_PodAttachOptions_To_v1_PodAttachOptions(in *core.PodAttachOptions, out *v1.PodAttachOptions, s conversion.Scope) error {
+ out.Stdin = in.Stdin
+ out.Stdout = in.Stdout
+ out.Stderr = in.Stderr
+ out.TTY = in.TTY
+ out.Container = in.Container
+ return nil
+}
+
+// Convert_core_PodAttachOptions_To_v1_PodAttachOptions is an autogenerated conversion function.
+func Convert_core_PodAttachOptions_To_v1_PodAttachOptions(in *core.PodAttachOptions, out *v1.PodAttachOptions, s conversion.Scope) error {
+ return autoConvert_core_PodAttachOptions_To_v1_PodAttachOptions(in, out, s)
+}
+
+func autoConvert_v1_PodCondition_To_core_PodCondition(in *v1.PodCondition, out *core.PodCondition, s conversion.Scope) error {
+ out.Type = core.PodConditionType(in.Type)
+ out.Status = core.ConditionStatus(in.Status)
+ out.LastProbeTime = in.LastProbeTime
+ out.LastTransitionTime = in.LastTransitionTime
+ out.Reason = in.Reason
+ out.Message = in.Message
+ return nil
+}
+
+// Convert_v1_PodCondition_To_core_PodCondition is an autogenerated conversion function.
+func Convert_v1_PodCondition_To_core_PodCondition(in *v1.PodCondition, out *core.PodCondition, s conversion.Scope) error {
+ return autoConvert_v1_PodCondition_To_core_PodCondition(in, out, s)
+}
+
+func autoConvert_core_PodCondition_To_v1_PodCondition(in *core.PodCondition, out *v1.PodCondition, s conversion.Scope) error {
+ out.Type = v1.PodConditionType(in.Type)
+ out.Status = v1.ConditionStatus(in.Status)
+ out.LastProbeTime = in.LastProbeTime
+ out.LastTransitionTime = in.LastTransitionTime
+ out.Reason = in.Reason
+ out.Message = in.Message
+ return nil
+}
+
+// Convert_core_PodCondition_To_v1_PodCondition is an autogenerated conversion function.
+func Convert_core_PodCondition_To_v1_PodCondition(in *core.PodCondition, out *v1.PodCondition, s conversion.Scope) error {
+ return autoConvert_core_PodCondition_To_v1_PodCondition(in, out, s)
+}
+
+func autoConvert_v1_PodExecOptions_To_core_PodExecOptions(in *v1.PodExecOptions, out *core.PodExecOptions, s conversion.Scope) error {
+ out.Stdin = in.Stdin
+ out.Stdout = in.Stdout
+ out.Stderr = in.Stderr
+ out.TTY = in.TTY
+ out.Container = in.Container
+ out.Command = *(*[]string)(unsafe.Pointer(&in.Command))
+ return nil
+}
+
+// Convert_v1_PodExecOptions_To_core_PodExecOptions is an autogenerated conversion function.
+func Convert_v1_PodExecOptions_To_core_PodExecOptions(in *v1.PodExecOptions, out *core.PodExecOptions, s conversion.Scope) error {
+ return autoConvert_v1_PodExecOptions_To_core_PodExecOptions(in, out, s)
+}
+
+func autoConvert_core_PodExecOptions_To_v1_PodExecOptions(in *core.PodExecOptions, out *v1.PodExecOptions, s conversion.Scope) error {
+ out.Stdin = in.Stdin
+ out.Stdout = in.Stdout
+ out.Stderr = in.Stderr
+ out.TTY = in.TTY
+ out.Container = in.Container
+ out.Command = *(*[]string)(unsafe.Pointer(&in.Command))
+ return nil
+}
+
+// Convert_core_PodExecOptions_To_v1_PodExecOptions is an autogenerated conversion function.
+func Convert_core_PodExecOptions_To_v1_PodExecOptions(in *core.PodExecOptions, out *v1.PodExecOptions, s conversion.Scope) error {
+ return autoConvert_core_PodExecOptions_To_v1_PodExecOptions(in, out, s)
+}
+
+func autoConvert_v1_PodList_To_core_PodList(in *v1.PodList, out *core.PodList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ if in.Items != nil {
+ in, out := &in.Items, &out.Items
+ *out = make([]core.Pod, len(*in))
+ for i := range *in {
+ if err := Convert_v1_Pod_To_core_Pod(&(*in)[i], &(*out)[i], s); err != nil {
+ return err
+ }
+ }
+ } else {
+ out.Items = nil
+ }
+ return nil
+}
+
+// Convert_v1_PodList_To_core_PodList is an autogenerated conversion function.
+func Convert_v1_PodList_To_core_PodList(in *v1.PodList, out *core.PodList, s conversion.Scope) error {
+ return autoConvert_v1_PodList_To_core_PodList(in, out, s)
+}
+
+func autoConvert_core_PodList_To_v1_PodList(in *core.PodList, out *v1.PodList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ if in.Items != nil {
+ in, out := &in.Items, &out.Items
+ *out = make([]v1.Pod, len(*in))
+ for i := range *in {
+ if err := Convert_core_Pod_To_v1_Pod(&(*in)[i], &(*out)[i], s); err != nil {
+ return err
+ }
+ }
+ } else {
+ out.Items = nil
+ }
+ return nil
+}
+
+// Convert_core_PodList_To_v1_PodList is an autogenerated conversion function.
+func Convert_core_PodList_To_v1_PodList(in *core.PodList, out *v1.PodList, s conversion.Scope) error {
+ return autoConvert_core_PodList_To_v1_PodList(in, out, s)
+}
+
+func autoConvert_v1_PodLogOptions_To_core_PodLogOptions(in *v1.PodLogOptions, out *core.PodLogOptions, s conversion.Scope) error {
+ out.Container = in.Container
+ out.Follow = in.Follow
+ out.Previous = in.Previous
+ out.SinceSeconds = (*int64)(unsafe.Pointer(in.SinceSeconds))
+ out.SinceTime = (*meta_v1.Time)(unsafe.Pointer(in.SinceTime))
+ out.Timestamps = in.Timestamps
+ out.TailLines = (*int64)(unsafe.Pointer(in.TailLines))
+ out.LimitBytes = (*int64)(unsafe.Pointer(in.LimitBytes))
+ return nil
+}
+
+// Convert_v1_PodLogOptions_To_core_PodLogOptions is an autogenerated conversion function.
+func Convert_v1_PodLogOptions_To_core_PodLogOptions(in *v1.PodLogOptions, out *core.PodLogOptions, s conversion.Scope) error {
+ return autoConvert_v1_PodLogOptions_To_core_PodLogOptions(in, out, s)
+}
+
+func autoConvert_core_PodLogOptions_To_v1_PodLogOptions(in *core.PodLogOptions, out *v1.PodLogOptions, s conversion.Scope) error {
+ out.Container = in.Container
+ out.Follow = in.Follow
+ out.Previous = in.Previous
+ out.SinceSeconds = (*int64)(unsafe.Pointer(in.SinceSeconds))
+ out.SinceTime = (*meta_v1.Time)(unsafe.Pointer(in.SinceTime))
+ out.Timestamps = in.Timestamps
+ out.TailLines = (*int64)(unsafe.Pointer(in.TailLines))
+ out.LimitBytes = (*int64)(unsafe.Pointer(in.LimitBytes))
+ return nil
+}
+
+// Convert_core_PodLogOptions_To_v1_PodLogOptions is an autogenerated conversion function.
+func Convert_core_PodLogOptions_To_v1_PodLogOptions(in *core.PodLogOptions, out *v1.PodLogOptions, s conversion.Scope) error {
+ return autoConvert_core_PodLogOptions_To_v1_PodLogOptions(in, out, s)
+}
+
+func autoConvert_v1_PodPortForwardOptions_To_core_PodPortForwardOptions(in *v1.PodPortForwardOptions, out *core.PodPortForwardOptions, s conversion.Scope) error {
+ out.Ports = *(*[]int32)(unsafe.Pointer(&in.Ports))
+ return nil
+}
+
+// Convert_v1_PodPortForwardOptions_To_core_PodPortForwardOptions is an autogenerated conversion function.
+func Convert_v1_PodPortForwardOptions_To_core_PodPortForwardOptions(in *v1.PodPortForwardOptions, out *core.PodPortForwardOptions, s conversion.Scope) error {
+ return autoConvert_v1_PodPortForwardOptions_To_core_PodPortForwardOptions(in, out, s)
+}
+
+func autoConvert_core_PodPortForwardOptions_To_v1_PodPortForwardOptions(in *core.PodPortForwardOptions, out *v1.PodPortForwardOptions, s conversion.Scope) error {
+ out.Ports = *(*[]int32)(unsafe.Pointer(&in.Ports))
+ return nil
+}
+
+// Convert_core_PodPortForwardOptions_To_v1_PodPortForwardOptions is an autogenerated conversion function.
+func Convert_core_PodPortForwardOptions_To_v1_PodPortForwardOptions(in *core.PodPortForwardOptions, out *v1.PodPortForwardOptions, s conversion.Scope) error {
+ return autoConvert_core_PodPortForwardOptions_To_v1_PodPortForwardOptions(in, out, s)
+}
+
+func autoConvert_v1_PodProxyOptions_To_core_PodProxyOptions(in *v1.PodProxyOptions, out *core.PodProxyOptions, s conversion.Scope) error {
+ out.Path = in.Path
+ return nil
+}
+
+// Convert_v1_PodProxyOptions_To_core_PodProxyOptions is an autogenerated conversion function.
+func Convert_v1_PodProxyOptions_To_core_PodProxyOptions(in *v1.PodProxyOptions, out *core.PodProxyOptions, s conversion.Scope) error {
+ return autoConvert_v1_PodProxyOptions_To_core_PodProxyOptions(in, out, s)
+}
+
+func autoConvert_core_PodProxyOptions_To_v1_PodProxyOptions(in *core.PodProxyOptions, out *v1.PodProxyOptions, s conversion.Scope) error {
+ out.Path = in.Path
+ return nil
+}
+
+// Convert_core_PodProxyOptions_To_v1_PodProxyOptions is an autogenerated conversion function.
+func Convert_core_PodProxyOptions_To_v1_PodProxyOptions(in *core.PodProxyOptions, out *v1.PodProxyOptions, s conversion.Scope) error {
+ return autoConvert_core_PodProxyOptions_To_v1_PodProxyOptions(in, out, s)
+}
+
+func autoConvert_v1_PodSecurityContext_To_core_PodSecurityContext(in *v1.PodSecurityContext, out *core.PodSecurityContext, s conversion.Scope) error {
+ out.SELinuxOptions = (*core.SELinuxOptions)(unsafe.Pointer(in.SELinuxOptions))
+ out.RunAsUser = (*int64)(unsafe.Pointer(in.RunAsUser))
+ out.RunAsNonRoot = (*bool)(unsafe.Pointer(in.RunAsNonRoot))
+ out.SupplementalGroups = *(*[]int64)(unsafe.Pointer(&in.SupplementalGroups))
+ out.FSGroup = (*int64)(unsafe.Pointer(in.FSGroup))
+ return nil
+}
+
+func autoConvert_core_PodSecurityContext_To_v1_PodSecurityContext(in *core.PodSecurityContext, out *v1.PodSecurityContext, s conversion.Scope) error {
+ // INFO: in.HostNetwork opted out of conversion generation
+ // INFO: in.HostPID opted out of conversion generation
+ // INFO: in.HostIPC opted out of conversion generation
+ out.SELinuxOptions = (*v1.SELinuxOptions)(unsafe.Pointer(in.SELinuxOptions))
+ out.RunAsUser = (*int64)(unsafe.Pointer(in.RunAsUser))
+ out.RunAsNonRoot = (*bool)(unsafe.Pointer(in.RunAsNonRoot))
+ out.SupplementalGroups = *(*[]int64)(unsafe.Pointer(&in.SupplementalGroups))
+ out.FSGroup = (*int64)(unsafe.Pointer(in.FSGroup))
+ return nil
+}
+
+func autoConvert_v1_PodSignature_To_core_PodSignature(in *v1.PodSignature, out *core.PodSignature, s conversion.Scope) error {
+ out.PodController = (*meta_v1.OwnerReference)(unsafe.Pointer(in.PodController))
+ return nil
+}
+
+// Convert_v1_PodSignature_To_core_PodSignature is an autogenerated conversion function.
+func Convert_v1_PodSignature_To_core_PodSignature(in *v1.PodSignature, out *core.PodSignature, s conversion.Scope) error {
+ return autoConvert_v1_PodSignature_To_core_PodSignature(in, out, s)
+}
+
+func autoConvert_core_PodSignature_To_v1_PodSignature(in *core.PodSignature, out *v1.PodSignature, s conversion.Scope) error {
+ out.PodController = (*meta_v1.OwnerReference)(unsafe.Pointer(in.PodController))
+ return nil
+}
+
+// Convert_core_PodSignature_To_v1_PodSignature is an autogenerated conversion function.
+func Convert_core_PodSignature_To_v1_PodSignature(in *core.PodSignature, out *v1.PodSignature, s conversion.Scope) error {
+ return autoConvert_core_PodSignature_To_v1_PodSignature(in, out, s)
+}
+
+func autoConvert_v1_PodSpec_To_core_PodSpec(in *v1.PodSpec, out *core.PodSpec, s conversion.Scope) error {
+ if in.Volumes != nil {
+ in, out := &in.Volumes, &out.Volumes
+ *out = make([]core.Volume, len(*in))
+ for i := range *in {
+ if err := Convert_v1_Volume_To_core_Volume(&(*in)[i], &(*out)[i], s); err != nil {
+ return err
+ }
+ }
+ } else {
+ out.Volumes = nil
+ }
+ if in.InitContainers != nil {
+ in, out := &in.InitContainers, &out.InitContainers
+ *out = make([]core.Container, len(*in))
+ for i := range *in {
+ if err := Convert_v1_Container_To_core_Container(&(*in)[i], &(*out)[i], s); err != nil {
+ return err
+ }
+ }
+ } else {
+ out.InitContainers = nil
+ }
+ if in.Containers != nil {
+ in, out := &in.Containers, &out.Containers
+ *out = make([]core.Container, len(*in))
+ for i := range *in {
+ if err := Convert_v1_Container_To_core_Container(&(*in)[i], &(*out)[i], s); err != nil {
+ return err
+ }
+ }
+ } else {
+ out.Containers = nil
+ }
+ out.RestartPolicy = core.RestartPolicy(in.RestartPolicy)
+ out.TerminationGracePeriodSeconds = (*int64)(unsafe.Pointer(in.TerminationGracePeriodSeconds))
+ out.ActiveDeadlineSeconds = (*int64)(unsafe.Pointer(in.ActiveDeadlineSeconds))
+ out.DNSPolicy = core.DNSPolicy(in.DNSPolicy)
+ out.NodeSelector = *(*map[string]string)(unsafe.Pointer(&in.NodeSelector))
+ out.ServiceAccountName = in.ServiceAccountName
+ // INFO: in.DeprecatedServiceAccount opted out of conversion generation
+ out.AutomountServiceAccountToken = (*bool)(unsafe.Pointer(in.AutomountServiceAccountToken))
+ out.NodeName = in.NodeName
+ // INFO: in.HostNetwork opted out of conversion generation
+ // INFO: in.HostPID opted out of conversion generation
+ // INFO: in.HostIPC opted out of conversion generation
+ if in.SecurityContext != nil {
+ in, out := &in.SecurityContext, &out.SecurityContext
+ *out = new(core.PodSecurityContext)
+ if err := Convert_v1_PodSecurityContext_To_core_PodSecurityContext(*in, *out, s); err != nil {
+ return err
+ }
+ } else {
+ out.SecurityContext = nil
+ }
+ out.ImagePullSecrets = *(*[]core.LocalObjectReference)(unsafe.Pointer(&in.ImagePullSecrets))
+ out.Hostname = in.Hostname
+ out.Subdomain = in.Subdomain
+ out.Affinity = (*core.Affinity)(unsafe.Pointer(in.Affinity))
+ out.SchedulerName = in.SchedulerName
+ out.Tolerations = *(*[]core.Toleration)(unsafe.Pointer(&in.Tolerations))
+ out.HostAliases = *(*[]core.HostAlias)(unsafe.Pointer(&in.HostAliases))
+ out.PriorityClassName = in.PriorityClassName
+ out.Priority = (*int32)(unsafe.Pointer(in.Priority))
+ return nil
+}
+
+func autoConvert_core_PodSpec_To_v1_PodSpec(in *core.PodSpec, out *v1.PodSpec, s conversion.Scope) error {
+ if in.Volumes != nil {
+ in, out := &in.Volumes, &out.Volumes
+ *out = make([]v1.Volume, len(*in))
+ for i := range *in {
+ if err := Convert_core_Volume_To_v1_Volume(&(*in)[i], &(*out)[i], s); err != nil {
+ return err
+ }
+ }
+ } else {
+ out.Volumes = nil
+ }
+ if in.InitContainers != nil {
+ in, out := &in.InitContainers, &out.InitContainers
+ *out = make([]v1.Container, len(*in))
+ for i := range *in {
+ if err := Convert_core_Container_To_v1_Container(&(*in)[i], &(*out)[i], s); err != nil {
+ return err
+ }
+ }
+ } else {
+ out.InitContainers = nil
+ }
+ if in.Containers != nil {
+ in, out := &in.Containers, &out.Containers
+ *out = make([]v1.Container, len(*in))
+ for i := range *in {
+ if err := Convert_core_Container_To_v1_Container(&(*in)[i], &(*out)[i], s); err != nil {
+ return err
+ }
+ }
+ } else {
+ out.Containers = nil
+ }
+ out.RestartPolicy = v1.RestartPolicy(in.RestartPolicy)
+ out.TerminationGracePeriodSeconds = (*int64)(unsafe.Pointer(in.TerminationGracePeriodSeconds))
+ out.ActiveDeadlineSeconds = (*int64)(unsafe.Pointer(in.ActiveDeadlineSeconds))
+ out.DNSPolicy = v1.DNSPolicy(in.DNSPolicy)
+ out.NodeSelector = *(*map[string]string)(unsafe.Pointer(&in.NodeSelector))
+ out.ServiceAccountName = in.ServiceAccountName
+ out.AutomountServiceAccountToken = (*bool)(unsafe.Pointer(in.AutomountServiceAccountToken))
+ out.NodeName = in.NodeName
+ if in.SecurityContext != nil {
+ in, out := &in.SecurityContext, &out.SecurityContext
+ *out = new(v1.PodSecurityContext)
+ if err := Convert_core_PodSecurityContext_To_v1_PodSecurityContext(*in, *out, s); err != nil {
+ return err
+ }
+ } else {
+ out.SecurityContext = nil
+ }
+ out.ImagePullSecrets = *(*[]v1.LocalObjectReference)(unsafe.Pointer(&in.ImagePullSecrets))
+ out.Hostname = in.Hostname
+ out.Subdomain = in.Subdomain
+ out.Affinity = (*v1.Affinity)(unsafe.Pointer(in.Affinity))
+ out.SchedulerName = in.SchedulerName
+ out.Tolerations = *(*[]v1.Toleration)(unsafe.Pointer(&in.Tolerations))
+ out.HostAliases = *(*[]v1.HostAlias)(unsafe.Pointer(&in.HostAliases))
+ out.PriorityClassName = in.PriorityClassName
+ out.Priority = (*int32)(unsafe.Pointer(in.Priority))
+ return nil
+}
+
+func autoConvert_v1_PodStatus_To_core_PodStatus(in *v1.PodStatus, out *core.PodStatus, s conversion.Scope) error {
+ out.Phase = core.PodPhase(in.Phase)
+ out.Conditions = *(*[]core.PodCondition)(unsafe.Pointer(&in.Conditions))
+ out.Message = in.Message
+ out.Reason = in.Reason
+ out.HostIP = in.HostIP
+ out.PodIP = in.PodIP
+ out.StartTime = (*meta_v1.Time)(unsafe.Pointer(in.StartTime))
+ out.InitContainerStatuses = *(*[]core.ContainerStatus)(unsafe.Pointer(&in.InitContainerStatuses))
+ out.ContainerStatuses = *(*[]core.ContainerStatus)(unsafe.Pointer(&in.ContainerStatuses))
+ out.QOSClass = core.PodQOSClass(in.QOSClass)
+ return nil
+}
+
+// Convert_v1_PodStatus_To_core_PodStatus is an autogenerated conversion function.
+func Convert_v1_PodStatus_To_core_PodStatus(in *v1.PodStatus, out *core.PodStatus, s conversion.Scope) error {
+ return autoConvert_v1_PodStatus_To_core_PodStatus(in, out, s)
+}
+
+func autoConvert_core_PodStatus_To_v1_PodStatus(in *core.PodStatus, out *v1.PodStatus, s conversion.Scope) error {
+ out.Phase = v1.PodPhase(in.Phase)
+ out.Conditions = *(*[]v1.PodCondition)(unsafe.Pointer(&in.Conditions))
+ out.Message = in.Message
+ out.Reason = in.Reason
+ out.HostIP = in.HostIP
+ out.PodIP = in.PodIP
+ out.StartTime = (*meta_v1.Time)(unsafe.Pointer(in.StartTime))
+ out.QOSClass = v1.PodQOSClass(in.QOSClass)
+ out.InitContainerStatuses = *(*[]v1.ContainerStatus)(unsafe.Pointer(&in.InitContainerStatuses))
+ out.ContainerStatuses = *(*[]v1.ContainerStatus)(unsafe.Pointer(&in.ContainerStatuses))
+ return nil
+}
+
+// Convert_core_PodStatus_To_v1_PodStatus is an autogenerated conversion function.
+func Convert_core_PodStatus_To_v1_PodStatus(in *core.PodStatus, out *v1.PodStatus, s conversion.Scope) error {
+ return autoConvert_core_PodStatus_To_v1_PodStatus(in, out, s)
+}
+
+func autoConvert_v1_PodStatusResult_To_core_PodStatusResult(in *v1.PodStatusResult, out *core.PodStatusResult, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ if err := Convert_v1_PodStatus_To_core_PodStatus(&in.Status, &out.Status, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_v1_PodStatusResult_To_core_PodStatusResult is an autogenerated conversion function.
+func Convert_v1_PodStatusResult_To_core_PodStatusResult(in *v1.PodStatusResult, out *core.PodStatusResult, s conversion.Scope) error {
+ return autoConvert_v1_PodStatusResult_To_core_PodStatusResult(in, out, s)
+}
+
+func autoConvert_core_PodStatusResult_To_v1_PodStatusResult(in *core.PodStatusResult, out *v1.PodStatusResult, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ if err := Convert_core_PodStatus_To_v1_PodStatus(&in.Status, &out.Status, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_core_PodStatusResult_To_v1_PodStatusResult is an autogenerated conversion function.
+func Convert_core_PodStatusResult_To_v1_PodStatusResult(in *core.PodStatusResult, out *v1.PodStatusResult, s conversion.Scope) error {
+ return autoConvert_core_PodStatusResult_To_v1_PodStatusResult(in, out, s)
+}
+
+func autoConvert_v1_PodTemplate_To_core_PodTemplate(in *v1.PodTemplate, out *core.PodTemplate, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ if err := Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_v1_PodTemplate_To_core_PodTemplate is an autogenerated conversion function.
+func Convert_v1_PodTemplate_To_core_PodTemplate(in *v1.PodTemplate, out *core.PodTemplate, s conversion.Scope) error {
+ return autoConvert_v1_PodTemplate_To_core_PodTemplate(in, out, s)
+}
+
+func autoConvert_core_PodTemplate_To_v1_PodTemplate(in *core.PodTemplate, out *v1.PodTemplate, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ if err := Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_core_PodTemplate_To_v1_PodTemplate is an autogenerated conversion function.
+func Convert_core_PodTemplate_To_v1_PodTemplate(in *core.PodTemplate, out *v1.PodTemplate, s conversion.Scope) error {
+ return autoConvert_core_PodTemplate_To_v1_PodTemplate(in, out, s)
+}
+
+func autoConvert_v1_PodTemplateList_To_core_PodTemplateList(in *v1.PodTemplateList, out *core.PodTemplateList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ if in.Items != nil {
+ in, out := &in.Items, &out.Items
+ *out = make([]core.PodTemplate, len(*in))
+ for i := range *in {
+ if err := Convert_v1_PodTemplate_To_core_PodTemplate(&(*in)[i], &(*out)[i], s); err != nil {
+ return err
+ }
+ }
+ } else {
+ out.Items = nil
+ }
+ return nil
+}
+
+// Convert_v1_PodTemplateList_To_core_PodTemplateList is an autogenerated conversion function.
+func Convert_v1_PodTemplateList_To_core_PodTemplateList(in *v1.PodTemplateList, out *core.PodTemplateList, s conversion.Scope) error {
+ return autoConvert_v1_PodTemplateList_To_core_PodTemplateList(in, out, s)
+}
+
+func autoConvert_core_PodTemplateList_To_v1_PodTemplateList(in *core.PodTemplateList, out *v1.PodTemplateList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ if in.Items != nil {
+ in, out := &in.Items, &out.Items
+ *out = make([]v1.PodTemplate, len(*in))
+ for i := range *in {
+ if err := Convert_core_PodTemplate_To_v1_PodTemplate(&(*in)[i], &(*out)[i], s); err != nil {
+ return err
+ }
+ }
+ } else {
+ out.Items = nil
+ }
+ return nil
+}
+
+// Convert_core_PodTemplateList_To_v1_PodTemplateList is an autogenerated conversion function.
+func Convert_core_PodTemplateList_To_v1_PodTemplateList(in *core.PodTemplateList, out *v1.PodTemplateList, s conversion.Scope) error {
+ return autoConvert_core_PodTemplateList_To_v1_PodTemplateList(in, out, s)
+}
+
+func autoConvert_v1_PodTemplateSpec_To_core_PodTemplateSpec(in *v1.PodTemplateSpec, out *core.PodTemplateSpec, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ if err := Convert_v1_PodSpec_To_core_PodSpec(&in.Spec, &out.Spec, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+func autoConvert_core_PodTemplateSpec_To_v1_PodTemplateSpec(in *core.PodTemplateSpec, out *v1.PodTemplateSpec, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ if err := Convert_core_PodSpec_To_v1_PodSpec(&in.Spec, &out.Spec, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+func autoConvert_v1_PortworxVolumeSource_To_core_PortworxVolumeSource(in *v1.PortworxVolumeSource, out *core.PortworxVolumeSource, s conversion.Scope) error {
+ out.VolumeID = in.VolumeID
+ out.FSType = in.FSType
+ out.ReadOnly = in.ReadOnly
+ return nil
+}
+
+// Convert_v1_PortworxVolumeSource_To_core_PortworxVolumeSource is an autogenerated conversion function.
+func Convert_v1_PortworxVolumeSource_To_core_PortworxVolumeSource(in *v1.PortworxVolumeSource, out *core.PortworxVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_PortworxVolumeSource_To_core_PortworxVolumeSource(in, out, s)
+}
+
+func autoConvert_core_PortworxVolumeSource_To_v1_PortworxVolumeSource(in *core.PortworxVolumeSource, out *v1.PortworxVolumeSource, s conversion.Scope) error {
+ out.VolumeID = in.VolumeID
+ out.FSType = in.FSType
+ out.ReadOnly = in.ReadOnly
+ return nil
+}
+
+// Convert_core_PortworxVolumeSource_To_v1_PortworxVolumeSource is an autogenerated conversion function.
+func Convert_core_PortworxVolumeSource_To_v1_PortworxVolumeSource(in *core.PortworxVolumeSource, out *v1.PortworxVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_PortworxVolumeSource_To_v1_PortworxVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_Preconditions_To_core_Preconditions(in *v1.Preconditions, out *core.Preconditions, s conversion.Scope) error {
+ out.UID = (*types.UID)(unsafe.Pointer(in.UID))
+ return nil
+}
+
+// Convert_v1_Preconditions_To_core_Preconditions is an autogenerated conversion function.
+func Convert_v1_Preconditions_To_core_Preconditions(in *v1.Preconditions, out *core.Preconditions, s conversion.Scope) error {
+ return autoConvert_v1_Preconditions_To_core_Preconditions(in, out, s)
+}
+
+func autoConvert_core_Preconditions_To_v1_Preconditions(in *core.Preconditions, out *v1.Preconditions, s conversion.Scope) error {
+ out.UID = (*types.UID)(unsafe.Pointer(in.UID))
+ return nil
+}
+
+// Convert_core_Preconditions_To_v1_Preconditions is an autogenerated conversion function.
+func Convert_core_Preconditions_To_v1_Preconditions(in *core.Preconditions, out *v1.Preconditions, s conversion.Scope) error {
+ return autoConvert_core_Preconditions_To_v1_Preconditions(in, out, s)
+}
+
+func autoConvert_v1_PreferAvoidPodsEntry_To_core_PreferAvoidPodsEntry(in *v1.PreferAvoidPodsEntry, out *core.PreferAvoidPodsEntry, s conversion.Scope) error {
+ if err := Convert_v1_PodSignature_To_core_PodSignature(&in.PodSignature, &out.PodSignature, s); err != nil {
+ return err
+ }
+ out.EvictionTime = in.EvictionTime
+ out.Reason = in.Reason
+ out.Message = in.Message
+ return nil
+}
+
+// Convert_v1_PreferAvoidPodsEntry_To_core_PreferAvoidPodsEntry is an autogenerated conversion function.
+func Convert_v1_PreferAvoidPodsEntry_To_core_PreferAvoidPodsEntry(in *v1.PreferAvoidPodsEntry, out *core.PreferAvoidPodsEntry, s conversion.Scope) error {
+ return autoConvert_v1_PreferAvoidPodsEntry_To_core_PreferAvoidPodsEntry(in, out, s)
+}
+
+func autoConvert_core_PreferAvoidPodsEntry_To_v1_PreferAvoidPodsEntry(in *core.PreferAvoidPodsEntry, out *v1.PreferAvoidPodsEntry, s conversion.Scope) error {
+ if err := Convert_core_PodSignature_To_v1_PodSignature(&in.PodSignature, &out.PodSignature, s); err != nil {
+ return err
+ }
+ out.EvictionTime = in.EvictionTime
+ out.Reason = in.Reason
+ out.Message = in.Message
+ return nil
+}
+
+// Convert_core_PreferAvoidPodsEntry_To_v1_PreferAvoidPodsEntry is an autogenerated conversion function.
+func Convert_core_PreferAvoidPodsEntry_To_v1_PreferAvoidPodsEntry(in *core.PreferAvoidPodsEntry, out *v1.PreferAvoidPodsEntry, s conversion.Scope) error {
+ return autoConvert_core_PreferAvoidPodsEntry_To_v1_PreferAvoidPodsEntry(in, out, s)
+}
+
+func autoConvert_v1_PreferredSchedulingTerm_To_core_PreferredSchedulingTerm(in *v1.PreferredSchedulingTerm, out *core.PreferredSchedulingTerm, s conversion.Scope) error {
+ out.Weight = in.Weight
+ if err := Convert_v1_NodeSelectorTerm_To_core_NodeSelectorTerm(&in.Preference, &out.Preference, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_v1_PreferredSchedulingTerm_To_core_PreferredSchedulingTerm is an autogenerated conversion function.
+func Convert_v1_PreferredSchedulingTerm_To_core_PreferredSchedulingTerm(in *v1.PreferredSchedulingTerm, out *core.PreferredSchedulingTerm, s conversion.Scope) error {
+ return autoConvert_v1_PreferredSchedulingTerm_To_core_PreferredSchedulingTerm(in, out, s)
+}
+
+func autoConvert_core_PreferredSchedulingTerm_To_v1_PreferredSchedulingTerm(in *core.PreferredSchedulingTerm, out *v1.PreferredSchedulingTerm, s conversion.Scope) error {
+ out.Weight = in.Weight
+ if err := Convert_core_NodeSelectorTerm_To_v1_NodeSelectorTerm(&in.Preference, &out.Preference, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_core_PreferredSchedulingTerm_To_v1_PreferredSchedulingTerm is an autogenerated conversion function.
+func Convert_core_PreferredSchedulingTerm_To_v1_PreferredSchedulingTerm(in *core.PreferredSchedulingTerm, out *v1.PreferredSchedulingTerm, s conversion.Scope) error {
+ return autoConvert_core_PreferredSchedulingTerm_To_v1_PreferredSchedulingTerm(in, out, s)
+}
+
+func autoConvert_v1_Probe_To_core_Probe(in *v1.Probe, out *core.Probe, s conversion.Scope) error {
+ if err := Convert_v1_Handler_To_core_Handler(&in.Handler, &out.Handler, s); err != nil {
+ return err
+ }
+ out.InitialDelaySeconds = in.InitialDelaySeconds
+ out.TimeoutSeconds = in.TimeoutSeconds
+ out.PeriodSeconds = in.PeriodSeconds
+ out.SuccessThreshold = in.SuccessThreshold
+ out.FailureThreshold = in.FailureThreshold
+ return nil
+}
+
+// Convert_v1_Probe_To_core_Probe is an autogenerated conversion function.
+func Convert_v1_Probe_To_core_Probe(in *v1.Probe, out *core.Probe, s conversion.Scope) error {
+ return autoConvert_v1_Probe_To_core_Probe(in, out, s)
+}
+
+func autoConvert_core_Probe_To_v1_Probe(in *core.Probe, out *v1.Probe, s conversion.Scope) error {
+ if err := Convert_core_Handler_To_v1_Handler(&in.Handler, &out.Handler, s); err != nil {
+ return err
+ }
+ out.InitialDelaySeconds = in.InitialDelaySeconds
+ out.TimeoutSeconds = in.TimeoutSeconds
+ out.PeriodSeconds = in.PeriodSeconds
+ out.SuccessThreshold = in.SuccessThreshold
+ out.FailureThreshold = in.FailureThreshold
+ return nil
+}
+
+// Convert_core_Probe_To_v1_Probe is an autogenerated conversion function.
+func Convert_core_Probe_To_v1_Probe(in *core.Probe, out *v1.Probe, s conversion.Scope) error {
+ return autoConvert_core_Probe_To_v1_Probe(in, out, s)
+}
+
+func autoConvert_v1_ProjectedVolumeSource_To_core_ProjectedVolumeSource(in *v1.ProjectedVolumeSource, out *core.ProjectedVolumeSource, s conversion.Scope) error {
+ out.Sources = *(*[]core.VolumeProjection)(unsafe.Pointer(&in.Sources))
+ out.DefaultMode = (*int32)(unsafe.Pointer(in.DefaultMode))
+ return nil
+}
+
+// Convert_v1_ProjectedVolumeSource_To_core_ProjectedVolumeSource is an autogenerated conversion function.
+func Convert_v1_ProjectedVolumeSource_To_core_ProjectedVolumeSource(in *v1.ProjectedVolumeSource, out *core.ProjectedVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_ProjectedVolumeSource_To_core_ProjectedVolumeSource(in, out, s)
+}
+
+func autoConvert_core_ProjectedVolumeSource_To_v1_ProjectedVolumeSource(in *core.ProjectedVolumeSource, out *v1.ProjectedVolumeSource, s conversion.Scope) error {
+ out.Sources = *(*[]v1.VolumeProjection)(unsafe.Pointer(&in.Sources))
+ out.DefaultMode = (*int32)(unsafe.Pointer(in.DefaultMode))
+ return nil
+}
+
+// Convert_core_ProjectedVolumeSource_To_v1_ProjectedVolumeSource is an autogenerated conversion function.
+func Convert_core_ProjectedVolumeSource_To_v1_ProjectedVolumeSource(in *core.ProjectedVolumeSource, out *v1.ProjectedVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_ProjectedVolumeSource_To_v1_ProjectedVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_QuobyteVolumeSource_To_core_QuobyteVolumeSource(in *v1.QuobyteVolumeSource, out *core.QuobyteVolumeSource, s conversion.Scope) error {
+ out.Registry = in.Registry
+ out.Volume = in.Volume
+ out.ReadOnly = in.ReadOnly
+ out.User = in.User
+ out.Group = in.Group
+ return nil
+}
+
+// Convert_v1_QuobyteVolumeSource_To_core_QuobyteVolumeSource is an autogenerated conversion function.
+func Convert_v1_QuobyteVolumeSource_To_core_QuobyteVolumeSource(in *v1.QuobyteVolumeSource, out *core.QuobyteVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_QuobyteVolumeSource_To_core_QuobyteVolumeSource(in, out, s)
+}
+
+func autoConvert_core_QuobyteVolumeSource_To_v1_QuobyteVolumeSource(in *core.QuobyteVolumeSource, out *v1.QuobyteVolumeSource, s conversion.Scope) error {
+ out.Registry = in.Registry
+ out.Volume = in.Volume
+ out.ReadOnly = in.ReadOnly
+ out.User = in.User
+ out.Group = in.Group
+ return nil
+}
+
+// Convert_core_QuobyteVolumeSource_To_v1_QuobyteVolumeSource is an autogenerated conversion function.
+func Convert_core_QuobyteVolumeSource_To_v1_QuobyteVolumeSource(in *core.QuobyteVolumeSource, out *v1.QuobyteVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_QuobyteVolumeSource_To_v1_QuobyteVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_RBDPersistentVolumeSource_To_core_RBDPersistentVolumeSource(in *v1.RBDPersistentVolumeSource, out *core.RBDPersistentVolumeSource, s conversion.Scope) error {
+ out.CephMonitors = *(*[]string)(unsafe.Pointer(&in.CephMonitors))
+ out.RBDImage = in.RBDImage
+ out.FSType = in.FSType
+ out.RBDPool = in.RBDPool
+ out.RadosUser = in.RadosUser
+ out.Keyring = in.Keyring
+ out.SecretRef = (*core.SecretReference)(unsafe.Pointer(in.SecretRef))
+ out.ReadOnly = in.ReadOnly
+ return nil
+}
+
+// Convert_v1_RBDPersistentVolumeSource_To_core_RBDPersistentVolumeSource is an autogenerated conversion function.
+func Convert_v1_RBDPersistentVolumeSource_To_core_RBDPersistentVolumeSource(in *v1.RBDPersistentVolumeSource, out *core.RBDPersistentVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_RBDPersistentVolumeSource_To_core_RBDPersistentVolumeSource(in, out, s)
+}
+
+func autoConvert_core_RBDPersistentVolumeSource_To_v1_RBDPersistentVolumeSource(in *core.RBDPersistentVolumeSource, out *v1.RBDPersistentVolumeSource, s conversion.Scope) error {
+ out.CephMonitors = *(*[]string)(unsafe.Pointer(&in.CephMonitors))
+ out.RBDImage = in.RBDImage
+ out.FSType = in.FSType
+ out.RBDPool = in.RBDPool
+ out.RadosUser = in.RadosUser
+ out.Keyring = in.Keyring
+ out.SecretRef = (*v1.SecretReference)(unsafe.Pointer(in.SecretRef))
+ out.ReadOnly = in.ReadOnly
+ return nil
+}
+
+// Convert_core_RBDPersistentVolumeSource_To_v1_RBDPersistentVolumeSource is an autogenerated conversion function.
+func Convert_core_RBDPersistentVolumeSource_To_v1_RBDPersistentVolumeSource(in *core.RBDPersistentVolumeSource, out *v1.RBDPersistentVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_RBDPersistentVolumeSource_To_v1_RBDPersistentVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_RBDVolumeSource_To_core_RBDVolumeSource(in *v1.RBDVolumeSource, out *core.RBDVolumeSource, s conversion.Scope) error {
+ out.CephMonitors = *(*[]string)(unsafe.Pointer(&in.CephMonitors))
+ out.RBDImage = in.RBDImage
+ out.FSType = in.FSType
+ out.RBDPool = in.RBDPool
+ out.RadosUser = in.RadosUser
+ out.Keyring = in.Keyring
+ out.SecretRef = (*core.LocalObjectReference)(unsafe.Pointer(in.SecretRef))
+ out.ReadOnly = in.ReadOnly
+ return nil
+}
+
+// Convert_v1_RBDVolumeSource_To_core_RBDVolumeSource is an autogenerated conversion function.
+func Convert_v1_RBDVolumeSource_To_core_RBDVolumeSource(in *v1.RBDVolumeSource, out *core.RBDVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_RBDVolumeSource_To_core_RBDVolumeSource(in, out, s)
+}
+
+func autoConvert_core_RBDVolumeSource_To_v1_RBDVolumeSource(in *core.RBDVolumeSource, out *v1.RBDVolumeSource, s conversion.Scope) error {
+ out.CephMonitors = *(*[]string)(unsafe.Pointer(&in.CephMonitors))
+ out.RBDImage = in.RBDImage
+ out.FSType = in.FSType
+ out.RBDPool = in.RBDPool
+ out.RadosUser = in.RadosUser
+ out.Keyring = in.Keyring
+ out.SecretRef = (*v1.LocalObjectReference)(unsafe.Pointer(in.SecretRef))
+ out.ReadOnly = in.ReadOnly
+ return nil
+}
+
+// Convert_core_RBDVolumeSource_To_v1_RBDVolumeSource is an autogenerated conversion function.
+func Convert_core_RBDVolumeSource_To_v1_RBDVolumeSource(in *core.RBDVolumeSource, out *v1.RBDVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_RBDVolumeSource_To_v1_RBDVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_RangeAllocation_To_core_RangeAllocation(in *v1.RangeAllocation, out *core.RangeAllocation, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ out.Range = in.Range
+ out.Data = *(*[]byte)(unsafe.Pointer(&in.Data))
+ return nil
+}
+
+// Convert_v1_RangeAllocation_To_core_RangeAllocation is an autogenerated conversion function.
+func Convert_v1_RangeAllocation_To_core_RangeAllocation(in *v1.RangeAllocation, out *core.RangeAllocation, s conversion.Scope) error {
+ return autoConvert_v1_RangeAllocation_To_core_RangeAllocation(in, out, s)
+}
+
+func autoConvert_core_RangeAllocation_To_v1_RangeAllocation(in *core.RangeAllocation, out *v1.RangeAllocation, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ out.Range = in.Range
+ out.Data = *(*[]byte)(unsafe.Pointer(&in.Data))
+ return nil
+}
+
+// Convert_core_RangeAllocation_To_v1_RangeAllocation is an autogenerated conversion function.
+func Convert_core_RangeAllocation_To_v1_RangeAllocation(in *core.RangeAllocation, out *v1.RangeAllocation, s conversion.Scope) error {
+ return autoConvert_core_RangeAllocation_To_v1_RangeAllocation(in, out, s)
+}
+
+func autoConvert_v1_ReplicationController_To_core_ReplicationController(in *v1.ReplicationController, out *core.ReplicationController, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ if err := Convert_v1_ReplicationControllerSpec_To_core_ReplicationControllerSpec(&in.Spec, &out.Spec, s); err != nil {
+ return err
+ }
+ if err := Convert_v1_ReplicationControllerStatus_To_core_ReplicationControllerStatus(&in.Status, &out.Status, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_v1_ReplicationController_To_core_ReplicationController is an autogenerated conversion function.
+func Convert_v1_ReplicationController_To_core_ReplicationController(in *v1.ReplicationController, out *core.ReplicationController, s conversion.Scope) error {
+ return autoConvert_v1_ReplicationController_To_core_ReplicationController(in, out, s)
+}
+
+func autoConvert_core_ReplicationController_To_v1_ReplicationController(in *core.ReplicationController, out *v1.ReplicationController, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ if err := Convert_core_ReplicationControllerSpec_To_v1_ReplicationControllerSpec(&in.Spec, &out.Spec, s); err != nil {
+ return err
+ }
+ if err := Convert_core_ReplicationControllerStatus_To_v1_ReplicationControllerStatus(&in.Status, &out.Status, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_core_ReplicationController_To_v1_ReplicationController is an autogenerated conversion function.
+func Convert_core_ReplicationController_To_v1_ReplicationController(in *core.ReplicationController, out *v1.ReplicationController, s conversion.Scope) error {
+ return autoConvert_core_ReplicationController_To_v1_ReplicationController(in, out, s)
+}
+
+func autoConvert_v1_ReplicationControllerCondition_To_core_ReplicationControllerCondition(in *v1.ReplicationControllerCondition, out *core.ReplicationControllerCondition, s conversion.Scope) error {
+ out.Type = core.ReplicationControllerConditionType(in.Type)
+ out.Status = core.ConditionStatus(in.Status)
+ out.LastTransitionTime = in.LastTransitionTime
+ out.Reason = in.Reason
+ out.Message = in.Message
+ return nil
+}
+
+// Convert_v1_ReplicationControllerCondition_To_core_ReplicationControllerCondition is an autogenerated conversion function.
+func Convert_v1_ReplicationControllerCondition_To_core_ReplicationControllerCondition(in *v1.ReplicationControllerCondition, out *core.ReplicationControllerCondition, s conversion.Scope) error {
+ return autoConvert_v1_ReplicationControllerCondition_To_core_ReplicationControllerCondition(in, out, s)
+}
+
+func autoConvert_core_ReplicationControllerCondition_To_v1_ReplicationControllerCondition(in *core.ReplicationControllerCondition, out *v1.ReplicationControllerCondition, s conversion.Scope) error {
+ out.Type = v1.ReplicationControllerConditionType(in.Type)
+ out.Status = v1.ConditionStatus(in.Status)
+ out.LastTransitionTime = in.LastTransitionTime
+ out.Reason = in.Reason
+ out.Message = in.Message
+ return nil
+}
+
+// Convert_core_ReplicationControllerCondition_To_v1_ReplicationControllerCondition is an autogenerated conversion function.
+func Convert_core_ReplicationControllerCondition_To_v1_ReplicationControllerCondition(in *core.ReplicationControllerCondition, out *v1.ReplicationControllerCondition, s conversion.Scope) error {
+ return autoConvert_core_ReplicationControllerCondition_To_v1_ReplicationControllerCondition(in, out, s)
+}
+
+func autoConvert_v1_ReplicationControllerList_To_core_ReplicationControllerList(in *v1.ReplicationControllerList, out *core.ReplicationControllerList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ if in.Items != nil {
+ in, out := &in.Items, &out.Items
+ *out = make([]core.ReplicationController, len(*in))
+ for i := range *in {
+ if err := Convert_v1_ReplicationController_To_core_ReplicationController(&(*in)[i], &(*out)[i], s); err != nil {
+ return err
+ }
+ }
+ } else {
+ out.Items = nil
+ }
+ return nil
+}
+
+// Convert_v1_ReplicationControllerList_To_core_ReplicationControllerList is an autogenerated conversion function.
+func Convert_v1_ReplicationControllerList_To_core_ReplicationControllerList(in *v1.ReplicationControllerList, out *core.ReplicationControllerList, s conversion.Scope) error {
+ return autoConvert_v1_ReplicationControllerList_To_core_ReplicationControllerList(in, out, s)
+}
+
+func autoConvert_core_ReplicationControllerList_To_v1_ReplicationControllerList(in *core.ReplicationControllerList, out *v1.ReplicationControllerList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ if in.Items != nil {
+ in, out := &in.Items, &out.Items
+ *out = make([]v1.ReplicationController, len(*in))
+ for i := range *in {
+ if err := Convert_core_ReplicationController_To_v1_ReplicationController(&(*in)[i], &(*out)[i], s); err != nil {
+ return err
+ }
+ }
+ } else {
+ out.Items = nil
+ }
+ return nil
+}
+
+// Convert_core_ReplicationControllerList_To_v1_ReplicationControllerList is an autogenerated conversion function.
+func Convert_core_ReplicationControllerList_To_v1_ReplicationControllerList(in *core.ReplicationControllerList, out *v1.ReplicationControllerList, s conversion.Scope) error {
+ return autoConvert_core_ReplicationControllerList_To_v1_ReplicationControllerList(in, out, s)
+}
+
+func autoConvert_v1_ReplicationControllerSpec_To_core_ReplicationControllerSpec(in *v1.ReplicationControllerSpec, out *core.ReplicationControllerSpec, s conversion.Scope) error {
+ if err := meta_v1.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil {
+ return err
+ }
+ out.MinReadySeconds = in.MinReadySeconds
+ out.Selector = *(*map[string]string)(unsafe.Pointer(&in.Selector))
+ if in.Template != nil {
+ in, out := &in.Template, &out.Template
+ *out = new(core.PodTemplateSpec)
+ if err := Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(*in, *out, s); err != nil {
+ return err
+ }
+ } else {
+ out.Template = nil
+ }
+ return nil
+}
+
+func autoConvert_core_ReplicationControllerSpec_To_v1_ReplicationControllerSpec(in *core.ReplicationControllerSpec, out *v1.ReplicationControllerSpec, s conversion.Scope) error {
+ if err := meta_v1.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil {
+ return err
+ }
+ out.MinReadySeconds = in.MinReadySeconds
+ out.Selector = *(*map[string]string)(unsafe.Pointer(&in.Selector))
+ if in.Template != nil {
+ in, out := &in.Template, &out.Template
+ *out = new(v1.PodTemplateSpec)
+ if err := Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(*in, *out, s); err != nil {
+ return err
+ }
+ } else {
+ out.Template = nil
+ }
+ return nil
+}
+
+func autoConvert_v1_ReplicationControllerStatus_To_core_ReplicationControllerStatus(in *v1.ReplicationControllerStatus, out *core.ReplicationControllerStatus, s conversion.Scope) error {
+ out.Replicas = in.Replicas
+ out.FullyLabeledReplicas = in.FullyLabeledReplicas
+ out.ReadyReplicas = in.ReadyReplicas
+ out.AvailableReplicas = in.AvailableReplicas
+ out.ObservedGeneration = in.ObservedGeneration
+ out.Conditions = *(*[]core.ReplicationControllerCondition)(unsafe.Pointer(&in.Conditions))
+ return nil
+}
+
+// Convert_v1_ReplicationControllerStatus_To_core_ReplicationControllerStatus is an autogenerated conversion function.
+func Convert_v1_ReplicationControllerStatus_To_core_ReplicationControllerStatus(in *v1.ReplicationControllerStatus, out *core.ReplicationControllerStatus, s conversion.Scope) error {
+ return autoConvert_v1_ReplicationControllerStatus_To_core_ReplicationControllerStatus(in, out, s)
+}
+
+func autoConvert_core_ReplicationControllerStatus_To_v1_ReplicationControllerStatus(in *core.ReplicationControllerStatus, out *v1.ReplicationControllerStatus, s conversion.Scope) error {
+ out.Replicas = in.Replicas
+ out.FullyLabeledReplicas = in.FullyLabeledReplicas
+ out.ReadyReplicas = in.ReadyReplicas
+ out.AvailableReplicas = in.AvailableReplicas
+ out.ObservedGeneration = in.ObservedGeneration
+ out.Conditions = *(*[]v1.ReplicationControllerCondition)(unsafe.Pointer(&in.Conditions))
+ return nil
+}
+
+// Convert_core_ReplicationControllerStatus_To_v1_ReplicationControllerStatus is an autogenerated conversion function.
+func Convert_core_ReplicationControllerStatus_To_v1_ReplicationControllerStatus(in *core.ReplicationControllerStatus, out *v1.ReplicationControllerStatus, s conversion.Scope) error {
+ return autoConvert_core_ReplicationControllerStatus_To_v1_ReplicationControllerStatus(in, out, s)
+}
+
+func autoConvert_v1_ResourceFieldSelector_To_core_ResourceFieldSelector(in *v1.ResourceFieldSelector, out *core.ResourceFieldSelector, s conversion.Scope) error {
+ out.ContainerName = in.ContainerName
+ out.Resource = in.Resource
+ out.Divisor = in.Divisor
+ return nil
+}
+
+// Convert_v1_ResourceFieldSelector_To_core_ResourceFieldSelector is an autogenerated conversion function.
+func Convert_v1_ResourceFieldSelector_To_core_ResourceFieldSelector(in *v1.ResourceFieldSelector, out *core.ResourceFieldSelector, s conversion.Scope) error {
+ return autoConvert_v1_ResourceFieldSelector_To_core_ResourceFieldSelector(in, out, s)
+}
+
+func autoConvert_core_ResourceFieldSelector_To_v1_ResourceFieldSelector(in *core.ResourceFieldSelector, out *v1.ResourceFieldSelector, s conversion.Scope) error {
+ out.ContainerName = in.ContainerName
+ out.Resource = in.Resource
+ out.Divisor = in.Divisor
+ return nil
+}
+
+// Convert_core_ResourceFieldSelector_To_v1_ResourceFieldSelector is an autogenerated conversion function.
+func Convert_core_ResourceFieldSelector_To_v1_ResourceFieldSelector(in *core.ResourceFieldSelector, out *v1.ResourceFieldSelector, s conversion.Scope) error {
+ return autoConvert_core_ResourceFieldSelector_To_v1_ResourceFieldSelector(in, out, s)
+}
+
+func autoConvert_v1_ResourceQuota_To_core_ResourceQuota(in *v1.ResourceQuota, out *core.ResourceQuota, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ if err := Convert_v1_ResourceQuotaSpec_To_core_ResourceQuotaSpec(&in.Spec, &out.Spec, s); err != nil {
+ return err
+ }
+ if err := Convert_v1_ResourceQuotaStatus_To_core_ResourceQuotaStatus(&in.Status, &out.Status, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_v1_ResourceQuota_To_core_ResourceQuota is an autogenerated conversion function.
+func Convert_v1_ResourceQuota_To_core_ResourceQuota(in *v1.ResourceQuota, out *core.ResourceQuota, s conversion.Scope) error {
+ return autoConvert_v1_ResourceQuota_To_core_ResourceQuota(in, out, s)
+}
+
+func autoConvert_core_ResourceQuota_To_v1_ResourceQuota(in *core.ResourceQuota, out *v1.ResourceQuota, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ if err := Convert_core_ResourceQuotaSpec_To_v1_ResourceQuotaSpec(&in.Spec, &out.Spec, s); err != nil {
+ return err
+ }
+ if err := Convert_core_ResourceQuotaStatus_To_v1_ResourceQuotaStatus(&in.Status, &out.Status, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_core_ResourceQuota_To_v1_ResourceQuota is an autogenerated conversion function.
+func Convert_core_ResourceQuota_To_v1_ResourceQuota(in *core.ResourceQuota, out *v1.ResourceQuota, s conversion.Scope) error {
+ return autoConvert_core_ResourceQuota_To_v1_ResourceQuota(in, out, s)
+}
+
+func autoConvert_v1_ResourceQuotaList_To_core_ResourceQuotaList(in *v1.ResourceQuotaList, out *core.ResourceQuotaList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ out.Items = *(*[]core.ResourceQuota)(unsafe.Pointer(&in.Items))
+ return nil
+}
+
+// Convert_v1_ResourceQuotaList_To_core_ResourceQuotaList is an autogenerated conversion function.
+func Convert_v1_ResourceQuotaList_To_core_ResourceQuotaList(in *v1.ResourceQuotaList, out *core.ResourceQuotaList, s conversion.Scope) error {
+ return autoConvert_v1_ResourceQuotaList_To_core_ResourceQuotaList(in, out, s)
+}
+
+func autoConvert_core_ResourceQuotaList_To_v1_ResourceQuotaList(in *core.ResourceQuotaList, out *v1.ResourceQuotaList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ out.Items = *(*[]v1.ResourceQuota)(unsafe.Pointer(&in.Items))
+ return nil
+}
+
+// Convert_core_ResourceQuotaList_To_v1_ResourceQuotaList is an autogenerated conversion function.
+func Convert_core_ResourceQuotaList_To_v1_ResourceQuotaList(in *core.ResourceQuotaList, out *v1.ResourceQuotaList, s conversion.Scope) error {
+ return autoConvert_core_ResourceQuotaList_To_v1_ResourceQuotaList(in, out, s)
+}
+
+func autoConvert_v1_ResourceQuotaSpec_To_core_ResourceQuotaSpec(in *v1.ResourceQuotaSpec, out *core.ResourceQuotaSpec, s conversion.Scope) error {
+ out.Hard = *(*core.ResourceList)(unsafe.Pointer(&in.Hard))
+ out.Scopes = *(*[]core.ResourceQuotaScope)(unsafe.Pointer(&in.Scopes))
+ return nil
+}
+
+// Convert_v1_ResourceQuotaSpec_To_core_ResourceQuotaSpec is an autogenerated conversion function.
+func Convert_v1_ResourceQuotaSpec_To_core_ResourceQuotaSpec(in *v1.ResourceQuotaSpec, out *core.ResourceQuotaSpec, s conversion.Scope) error {
+ return autoConvert_v1_ResourceQuotaSpec_To_core_ResourceQuotaSpec(in, out, s)
+}
+
+func autoConvert_core_ResourceQuotaSpec_To_v1_ResourceQuotaSpec(in *core.ResourceQuotaSpec, out *v1.ResourceQuotaSpec, s conversion.Scope) error {
+ out.Hard = *(*v1.ResourceList)(unsafe.Pointer(&in.Hard))
+ out.Scopes = *(*[]v1.ResourceQuotaScope)(unsafe.Pointer(&in.Scopes))
+ return nil
+}
+
+// Convert_core_ResourceQuotaSpec_To_v1_ResourceQuotaSpec is an autogenerated conversion function.
+func Convert_core_ResourceQuotaSpec_To_v1_ResourceQuotaSpec(in *core.ResourceQuotaSpec, out *v1.ResourceQuotaSpec, s conversion.Scope) error {
+ return autoConvert_core_ResourceQuotaSpec_To_v1_ResourceQuotaSpec(in, out, s)
+}
+
+func autoConvert_v1_ResourceQuotaStatus_To_core_ResourceQuotaStatus(in *v1.ResourceQuotaStatus, out *core.ResourceQuotaStatus, s conversion.Scope) error {
+ out.Hard = *(*core.ResourceList)(unsafe.Pointer(&in.Hard))
+ out.Used = *(*core.ResourceList)(unsafe.Pointer(&in.Used))
+ return nil
+}
+
+// Convert_v1_ResourceQuotaStatus_To_core_ResourceQuotaStatus is an autogenerated conversion function.
+func Convert_v1_ResourceQuotaStatus_To_core_ResourceQuotaStatus(in *v1.ResourceQuotaStatus, out *core.ResourceQuotaStatus, s conversion.Scope) error {
+ return autoConvert_v1_ResourceQuotaStatus_To_core_ResourceQuotaStatus(in, out, s)
+}
+
+func autoConvert_core_ResourceQuotaStatus_To_v1_ResourceQuotaStatus(in *core.ResourceQuotaStatus, out *v1.ResourceQuotaStatus, s conversion.Scope) error {
+ out.Hard = *(*v1.ResourceList)(unsafe.Pointer(&in.Hard))
+ out.Used = *(*v1.ResourceList)(unsafe.Pointer(&in.Used))
+ return nil
+}
+
+// Convert_core_ResourceQuotaStatus_To_v1_ResourceQuotaStatus is an autogenerated conversion function.
+func Convert_core_ResourceQuotaStatus_To_v1_ResourceQuotaStatus(in *core.ResourceQuotaStatus, out *v1.ResourceQuotaStatus, s conversion.Scope) error {
+ return autoConvert_core_ResourceQuotaStatus_To_v1_ResourceQuotaStatus(in, out, s)
+}
+
+func autoConvert_v1_ResourceRequirements_To_core_ResourceRequirements(in *v1.ResourceRequirements, out *core.ResourceRequirements, s conversion.Scope) error {
+ out.Limits = *(*core.ResourceList)(unsafe.Pointer(&in.Limits))
+ out.Requests = *(*core.ResourceList)(unsafe.Pointer(&in.Requests))
+ return nil
+}
+
+// Convert_v1_ResourceRequirements_To_core_ResourceRequirements is an autogenerated conversion function.
+func Convert_v1_ResourceRequirements_To_core_ResourceRequirements(in *v1.ResourceRequirements, out *core.ResourceRequirements, s conversion.Scope) error {
+ return autoConvert_v1_ResourceRequirements_To_core_ResourceRequirements(in, out, s)
+}
+
+func autoConvert_core_ResourceRequirements_To_v1_ResourceRequirements(in *core.ResourceRequirements, out *v1.ResourceRequirements, s conversion.Scope) error {
+ out.Limits = *(*v1.ResourceList)(unsafe.Pointer(&in.Limits))
+ out.Requests = *(*v1.ResourceList)(unsafe.Pointer(&in.Requests))
+ return nil
+}
+
+// Convert_core_ResourceRequirements_To_v1_ResourceRequirements is an autogenerated conversion function.
+func Convert_core_ResourceRequirements_To_v1_ResourceRequirements(in *core.ResourceRequirements, out *v1.ResourceRequirements, s conversion.Scope) error {
+ return autoConvert_core_ResourceRequirements_To_v1_ResourceRequirements(in, out, s)
+}
+
+func autoConvert_v1_SELinuxOptions_To_core_SELinuxOptions(in *v1.SELinuxOptions, out *core.SELinuxOptions, s conversion.Scope) error {
+ out.User = in.User
+ out.Role = in.Role
+ out.Type = in.Type
+ out.Level = in.Level
+ return nil
+}
+
+// Convert_v1_SELinuxOptions_To_core_SELinuxOptions is an autogenerated conversion function.
+func Convert_v1_SELinuxOptions_To_core_SELinuxOptions(in *v1.SELinuxOptions, out *core.SELinuxOptions, s conversion.Scope) error {
+ return autoConvert_v1_SELinuxOptions_To_core_SELinuxOptions(in, out, s)
+}
+
+func autoConvert_core_SELinuxOptions_To_v1_SELinuxOptions(in *core.SELinuxOptions, out *v1.SELinuxOptions, s conversion.Scope) error {
+ out.User = in.User
+ out.Role = in.Role
+ out.Type = in.Type
+ out.Level = in.Level
+ return nil
+}
+
+// Convert_core_SELinuxOptions_To_v1_SELinuxOptions is an autogenerated conversion function.
+func Convert_core_SELinuxOptions_To_v1_SELinuxOptions(in *core.SELinuxOptions, out *v1.SELinuxOptions, s conversion.Scope) error {
+ return autoConvert_core_SELinuxOptions_To_v1_SELinuxOptions(in, out, s)
+}
+
+func autoConvert_v1_ScaleIOPersistentVolumeSource_To_core_ScaleIOPersistentVolumeSource(in *v1.ScaleIOPersistentVolumeSource, out *core.ScaleIOPersistentVolumeSource, s conversion.Scope) error {
+ out.Gateway = in.Gateway
+ out.System = in.System
+ out.SecretRef = (*core.SecretReference)(unsafe.Pointer(in.SecretRef))
+ out.SSLEnabled = in.SSLEnabled
+ out.ProtectionDomain = in.ProtectionDomain
+ out.StoragePool = in.StoragePool
+ out.StorageMode = in.StorageMode
+ out.VolumeName = in.VolumeName
+ out.FSType = in.FSType
+ out.ReadOnly = in.ReadOnly
+ return nil
+}
+
+// Convert_v1_ScaleIOPersistentVolumeSource_To_core_ScaleIOPersistentVolumeSource is an autogenerated conversion function.
+func Convert_v1_ScaleIOPersistentVolumeSource_To_core_ScaleIOPersistentVolumeSource(in *v1.ScaleIOPersistentVolumeSource, out *core.ScaleIOPersistentVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_ScaleIOPersistentVolumeSource_To_core_ScaleIOPersistentVolumeSource(in, out, s)
+}
+
+func autoConvert_core_ScaleIOPersistentVolumeSource_To_v1_ScaleIOPersistentVolumeSource(in *core.ScaleIOPersistentVolumeSource, out *v1.ScaleIOPersistentVolumeSource, s conversion.Scope) error {
+ out.Gateway = in.Gateway
+ out.System = in.System
+ out.SecretRef = (*v1.SecretReference)(unsafe.Pointer(in.SecretRef))
+ out.SSLEnabled = in.SSLEnabled
+ out.ProtectionDomain = in.ProtectionDomain
+ out.StoragePool = in.StoragePool
+ out.StorageMode = in.StorageMode
+ out.VolumeName = in.VolumeName
+ out.FSType = in.FSType
+ out.ReadOnly = in.ReadOnly
+ return nil
+}
+
+// Convert_core_ScaleIOPersistentVolumeSource_To_v1_ScaleIOPersistentVolumeSource is an autogenerated conversion function.
+func Convert_core_ScaleIOPersistentVolumeSource_To_v1_ScaleIOPersistentVolumeSource(in *core.ScaleIOPersistentVolumeSource, out *v1.ScaleIOPersistentVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_ScaleIOPersistentVolumeSource_To_v1_ScaleIOPersistentVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_ScaleIOVolumeSource_To_core_ScaleIOVolumeSource(in *v1.ScaleIOVolumeSource, out *core.ScaleIOVolumeSource, s conversion.Scope) error {
+ out.Gateway = in.Gateway
+ out.System = in.System
+ out.SecretRef = (*core.LocalObjectReference)(unsafe.Pointer(in.SecretRef))
+ out.SSLEnabled = in.SSLEnabled
+ out.ProtectionDomain = in.ProtectionDomain
+ out.StoragePool = in.StoragePool
+ out.StorageMode = in.StorageMode
+ out.VolumeName = in.VolumeName
+ out.FSType = in.FSType
+ out.ReadOnly = in.ReadOnly
+ return nil
+}
+
+// Convert_v1_ScaleIOVolumeSource_To_core_ScaleIOVolumeSource is an autogenerated conversion function.
+func Convert_v1_ScaleIOVolumeSource_To_core_ScaleIOVolumeSource(in *v1.ScaleIOVolumeSource, out *core.ScaleIOVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_ScaleIOVolumeSource_To_core_ScaleIOVolumeSource(in, out, s)
+}
+
+func autoConvert_core_ScaleIOVolumeSource_To_v1_ScaleIOVolumeSource(in *core.ScaleIOVolumeSource, out *v1.ScaleIOVolumeSource, s conversion.Scope) error {
+ out.Gateway = in.Gateway
+ out.System = in.System
+ out.SecretRef = (*v1.LocalObjectReference)(unsafe.Pointer(in.SecretRef))
+ out.SSLEnabled = in.SSLEnabled
+ out.ProtectionDomain = in.ProtectionDomain
+ out.StoragePool = in.StoragePool
+ out.StorageMode = in.StorageMode
+ out.VolumeName = in.VolumeName
+ out.FSType = in.FSType
+ out.ReadOnly = in.ReadOnly
+ return nil
+}
+
+// Convert_core_ScaleIOVolumeSource_To_v1_ScaleIOVolumeSource is an autogenerated conversion function.
+func Convert_core_ScaleIOVolumeSource_To_v1_ScaleIOVolumeSource(in *core.ScaleIOVolumeSource, out *v1.ScaleIOVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_ScaleIOVolumeSource_To_v1_ScaleIOVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_Secret_To_core_Secret(in *v1.Secret, out *core.Secret, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ out.Data = *(*map[string][]byte)(unsafe.Pointer(&in.Data))
+ // INFO: in.StringData opted out of conversion generation
+ out.Type = core.SecretType(in.Type)
+ return nil
+}
+
+func autoConvert_core_Secret_To_v1_Secret(in *core.Secret, out *v1.Secret, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ out.Data = *(*map[string][]byte)(unsafe.Pointer(&in.Data))
+ out.Type = v1.SecretType(in.Type)
+ return nil
+}
+
+// Convert_core_Secret_To_v1_Secret is an autogenerated conversion function.
+func Convert_core_Secret_To_v1_Secret(in *core.Secret, out *v1.Secret, s conversion.Scope) error {
+ return autoConvert_core_Secret_To_v1_Secret(in, out, s)
+}
+
+func autoConvert_v1_SecretEnvSource_To_core_SecretEnvSource(in *v1.SecretEnvSource, out *core.SecretEnvSource, s conversion.Scope) error {
+ if err := Convert_v1_LocalObjectReference_To_core_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil {
+ return err
+ }
+ out.Optional = (*bool)(unsafe.Pointer(in.Optional))
+ return nil
+}
+
+// Convert_v1_SecretEnvSource_To_core_SecretEnvSource is an autogenerated conversion function.
+func Convert_v1_SecretEnvSource_To_core_SecretEnvSource(in *v1.SecretEnvSource, out *core.SecretEnvSource, s conversion.Scope) error {
+ return autoConvert_v1_SecretEnvSource_To_core_SecretEnvSource(in, out, s)
+}
+
+func autoConvert_core_SecretEnvSource_To_v1_SecretEnvSource(in *core.SecretEnvSource, out *v1.SecretEnvSource, s conversion.Scope) error {
+ if err := Convert_core_LocalObjectReference_To_v1_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil {
+ return err
+ }
+ out.Optional = (*bool)(unsafe.Pointer(in.Optional))
+ return nil
+}
+
+// Convert_core_SecretEnvSource_To_v1_SecretEnvSource is an autogenerated conversion function.
+func Convert_core_SecretEnvSource_To_v1_SecretEnvSource(in *core.SecretEnvSource, out *v1.SecretEnvSource, s conversion.Scope) error {
+ return autoConvert_core_SecretEnvSource_To_v1_SecretEnvSource(in, out, s)
+}
+
+func autoConvert_v1_SecretKeySelector_To_core_SecretKeySelector(in *v1.SecretKeySelector, out *core.SecretKeySelector, s conversion.Scope) error {
+ if err := Convert_v1_LocalObjectReference_To_core_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil {
+ return err
+ }
+ out.Key = in.Key
+ out.Optional = (*bool)(unsafe.Pointer(in.Optional))
+ return nil
+}
+
+// Convert_v1_SecretKeySelector_To_core_SecretKeySelector is an autogenerated conversion function.
+func Convert_v1_SecretKeySelector_To_core_SecretKeySelector(in *v1.SecretKeySelector, out *core.SecretKeySelector, s conversion.Scope) error {
+ return autoConvert_v1_SecretKeySelector_To_core_SecretKeySelector(in, out, s)
+}
+
+func autoConvert_core_SecretKeySelector_To_v1_SecretKeySelector(in *core.SecretKeySelector, out *v1.SecretKeySelector, s conversion.Scope) error {
+ if err := Convert_core_LocalObjectReference_To_v1_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil {
+ return err
+ }
+ out.Key = in.Key
+ out.Optional = (*bool)(unsafe.Pointer(in.Optional))
+ return nil
+}
+
+// Convert_core_SecretKeySelector_To_v1_SecretKeySelector is an autogenerated conversion function.
+func Convert_core_SecretKeySelector_To_v1_SecretKeySelector(in *core.SecretKeySelector, out *v1.SecretKeySelector, s conversion.Scope) error {
+ return autoConvert_core_SecretKeySelector_To_v1_SecretKeySelector(in, out, s)
+}
+
+func autoConvert_v1_SecretList_To_core_SecretList(in *v1.SecretList, out *core.SecretList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ if in.Items != nil {
+ in, out := &in.Items, &out.Items
+ *out = make([]core.Secret, len(*in))
+ for i := range *in {
+ if err := Convert_v1_Secret_To_core_Secret(&(*in)[i], &(*out)[i], s); err != nil {
+ return err
+ }
+ }
+ } else {
+ out.Items = nil
+ }
+ return nil
+}
+
+// Convert_v1_SecretList_To_core_SecretList is an autogenerated conversion function.
+func Convert_v1_SecretList_To_core_SecretList(in *v1.SecretList, out *core.SecretList, s conversion.Scope) error {
+ return autoConvert_v1_SecretList_To_core_SecretList(in, out, s)
+}
+
+func autoConvert_core_SecretList_To_v1_SecretList(in *core.SecretList, out *v1.SecretList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ if in.Items != nil {
+ in, out := &in.Items, &out.Items
+ *out = make([]v1.Secret, len(*in))
+ for i := range *in {
+ if err := Convert_core_Secret_To_v1_Secret(&(*in)[i], &(*out)[i], s); err != nil {
+ return err
+ }
+ }
+ } else {
+ out.Items = nil
+ }
+ return nil
+}
+
+// Convert_core_SecretList_To_v1_SecretList is an autogenerated conversion function.
+func Convert_core_SecretList_To_v1_SecretList(in *core.SecretList, out *v1.SecretList, s conversion.Scope) error {
+ return autoConvert_core_SecretList_To_v1_SecretList(in, out, s)
+}
+
+func autoConvert_v1_SecretProjection_To_core_SecretProjection(in *v1.SecretProjection, out *core.SecretProjection, s conversion.Scope) error {
+ if err := Convert_v1_LocalObjectReference_To_core_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil {
+ return err
+ }
+ out.Items = *(*[]core.KeyToPath)(unsafe.Pointer(&in.Items))
+ out.Optional = (*bool)(unsafe.Pointer(in.Optional))
+ return nil
+}
+
+// Convert_v1_SecretProjection_To_core_SecretProjection is an autogenerated conversion function.
+func Convert_v1_SecretProjection_To_core_SecretProjection(in *v1.SecretProjection, out *core.SecretProjection, s conversion.Scope) error {
+ return autoConvert_v1_SecretProjection_To_core_SecretProjection(in, out, s)
+}
+
+func autoConvert_core_SecretProjection_To_v1_SecretProjection(in *core.SecretProjection, out *v1.SecretProjection, s conversion.Scope) error {
+ if err := Convert_core_LocalObjectReference_To_v1_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil {
+ return err
+ }
+ out.Items = *(*[]v1.KeyToPath)(unsafe.Pointer(&in.Items))
+ out.Optional = (*bool)(unsafe.Pointer(in.Optional))
+ return nil
+}
+
+// Convert_core_SecretProjection_To_v1_SecretProjection is an autogenerated conversion function.
+func Convert_core_SecretProjection_To_v1_SecretProjection(in *core.SecretProjection, out *v1.SecretProjection, s conversion.Scope) error {
+ return autoConvert_core_SecretProjection_To_v1_SecretProjection(in, out, s)
+}
+
+func autoConvert_v1_SecretReference_To_core_SecretReference(in *v1.SecretReference, out *core.SecretReference, s conversion.Scope) error {
+ out.Name = in.Name
+ out.Namespace = in.Namespace
+ return nil
+}
+
+// Convert_v1_SecretReference_To_core_SecretReference is an autogenerated conversion function.
+func Convert_v1_SecretReference_To_core_SecretReference(in *v1.SecretReference, out *core.SecretReference, s conversion.Scope) error {
+ return autoConvert_v1_SecretReference_To_core_SecretReference(in, out, s)
+}
+
+func autoConvert_core_SecretReference_To_v1_SecretReference(in *core.SecretReference, out *v1.SecretReference, s conversion.Scope) error {
+ out.Name = in.Name
+ out.Namespace = in.Namespace
+ return nil
+}
+
+// Convert_core_SecretReference_To_v1_SecretReference is an autogenerated conversion function.
+func Convert_core_SecretReference_To_v1_SecretReference(in *core.SecretReference, out *v1.SecretReference, s conversion.Scope) error {
+ return autoConvert_core_SecretReference_To_v1_SecretReference(in, out, s)
+}
+
+func autoConvert_v1_SecretVolumeSource_To_core_SecretVolumeSource(in *v1.SecretVolumeSource, out *core.SecretVolumeSource, s conversion.Scope) error {
+ out.SecretName = in.SecretName
+ out.Items = *(*[]core.KeyToPath)(unsafe.Pointer(&in.Items))
+ out.DefaultMode = (*int32)(unsafe.Pointer(in.DefaultMode))
+ out.Optional = (*bool)(unsafe.Pointer(in.Optional))
+ return nil
+}
+
+// Convert_v1_SecretVolumeSource_To_core_SecretVolumeSource is an autogenerated conversion function.
+func Convert_v1_SecretVolumeSource_To_core_SecretVolumeSource(in *v1.SecretVolumeSource, out *core.SecretVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_SecretVolumeSource_To_core_SecretVolumeSource(in, out, s)
+}
+
+func autoConvert_core_SecretVolumeSource_To_v1_SecretVolumeSource(in *core.SecretVolumeSource, out *v1.SecretVolumeSource, s conversion.Scope) error {
+ out.SecretName = in.SecretName
+ out.Items = *(*[]v1.KeyToPath)(unsafe.Pointer(&in.Items))
+ out.DefaultMode = (*int32)(unsafe.Pointer(in.DefaultMode))
+ out.Optional = (*bool)(unsafe.Pointer(in.Optional))
+ return nil
+}
+
+// Convert_core_SecretVolumeSource_To_v1_SecretVolumeSource is an autogenerated conversion function.
+func Convert_core_SecretVolumeSource_To_v1_SecretVolumeSource(in *core.SecretVolumeSource, out *v1.SecretVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_SecretVolumeSource_To_v1_SecretVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_SecurityContext_To_core_SecurityContext(in *v1.SecurityContext, out *core.SecurityContext, s conversion.Scope) error {
+ out.Capabilities = (*core.Capabilities)(unsafe.Pointer(in.Capabilities))
+ out.Privileged = (*bool)(unsafe.Pointer(in.Privileged))
+ out.SELinuxOptions = (*core.SELinuxOptions)(unsafe.Pointer(in.SELinuxOptions))
+ out.RunAsUser = (*int64)(unsafe.Pointer(in.RunAsUser))
+ out.RunAsNonRoot = (*bool)(unsafe.Pointer(in.RunAsNonRoot))
+ out.ReadOnlyRootFilesystem = (*bool)(unsafe.Pointer(in.ReadOnlyRootFilesystem))
+ out.AllowPrivilegeEscalation = (*bool)(unsafe.Pointer(in.AllowPrivilegeEscalation))
+ return nil
+}
+
+// Convert_v1_SecurityContext_To_core_SecurityContext is an autogenerated conversion function.
+func Convert_v1_SecurityContext_To_core_SecurityContext(in *v1.SecurityContext, out *core.SecurityContext, s conversion.Scope) error {
+ return autoConvert_v1_SecurityContext_To_core_SecurityContext(in, out, s)
+}
+
+func autoConvert_core_SecurityContext_To_v1_SecurityContext(in *core.SecurityContext, out *v1.SecurityContext, s conversion.Scope) error {
+ out.Capabilities = (*v1.Capabilities)(unsafe.Pointer(in.Capabilities))
+ out.Privileged = (*bool)(unsafe.Pointer(in.Privileged))
+ out.SELinuxOptions = (*v1.SELinuxOptions)(unsafe.Pointer(in.SELinuxOptions))
+ out.RunAsUser = (*int64)(unsafe.Pointer(in.RunAsUser))
+ out.RunAsNonRoot = (*bool)(unsafe.Pointer(in.RunAsNonRoot))
+ out.ReadOnlyRootFilesystem = (*bool)(unsafe.Pointer(in.ReadOnlyRootFilesystem))
+ out.AllowPrivilegeEscalation = (*bool)(unsafe.Pointer(in.AllowPrivilegeEscalation))
+ return nil
+}
+
+func autoConvert_v1_SerializedReference_To_core_SerializedReference(in *v1.SerializedReference, out *core.SerializedReference, s conversion.Scope) error {
+ if err := Convert_v1_ObjectReference_To_core_ObjectReference(&in.Reference, &out.Reference, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_v1_SerializedReference_To_core_SerializedReference is an autogenerated conversion function.
+func Convert_v1_SerializedReference_To_core_SerializedReference(in *v1.SerializedReference, out *core.SerializedReference, s conversion.Scope) error {
+ return autoConvert_v1_SerializedReference_To_core_SerializedReference(in, out, s)
+}
+
+func autoConvert_core_SerializedReference_To_v1_SerializedReference(in *core.SerializedReference, out *v1.SerializedReference, s conversion.Scope) error {
+ if err := Convert_core_ObjectReference_To_v1_ObjectReference(&in.Reference, &out.Reference, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_core_SerializedReference_To_v1_SerializedReference is an autogenerated conversion function.
+func Convert_core_SerializedReference_To_v1_SerializedReference(in *core.SerializedReference, out *v1.SerializedReference, s conversion.Scope) error {
+ return autoConvert_core_SerializedReference_To_v1_SerializedReference(in, out, s)
+}
+
+func autoConvert_v1_Service_To_core_Service(in *v1.Service, out *core.Service, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ if err := Convert_v1_ServiceSpec_To_core_ServiceSpec(&in.Spec, &out.Spec, s); err != nil {
+ return err
+ }
+ if err := Convert_v1_ServiceStatus_To_core_ServiceStatus(&in.Status, &out.Status, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_v1_Service_To_core_Service is an autogenerated conversion function.
+func Convert_v1_Service_To_core_Service(in *v1.Service, out *core.Service, s conversion.Scope) error {
+ return autoConvert_v1_Service_To_core_Service(in, out, s)
+}
+
+func autoConvert_core_Service_To_v1_Service(in *core.Service, out *v1.Service, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ if err := Convert_core_ServiceSpec_To_v1_ServiceSpec(&in.Spec, &out.Spec, s); err != nil {
+ return err
+ }
+ if err := Convert_core_ServiceStatus_To_v1_ServiceStatus(&in.Status, &out.Status, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_core_Service_To_v1_Service is an autogenerated conversion function.
+func Convert_core_Service_To_v1_Service(in *core.Service, out *v1.Service, s conversion.Scope) error {
+ return autoConvert_core_Service_To_v1_Service(in, out, s)
+}
+
+func autoConvert_v1_ServiceAccount_To_core_ServiceAccount(in *v1.ServiceAccount, out *core.ServiceAccount, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ out.Secrets = *(*[]core.ObjectReference)(unsafe.Pointer(&in.Secrets))
+ out.ImagePullSecrets = *(*[]core.LocalObjectReference)(unsafe.Pointer(&in.ImagePullSecrets))
+ out.AutomountServiceAccountToken = (*bool)(unsafe.Pointer(in.AutomountServiceAccountToken))
+ return nil
+}
+
+// Convert_v1_ServiceAccount_To_core_ServiceAccount is an autogenerated conversion function.
+func Convert_v1_ServiceAccount_To_core_ServiceAccount(in *v1.ServiceAccount, out *core.ServiceAccount, s conversion.Scope) error {
+ return autoConvert_v1_ServiceAccount_To_core_ServiceAccount(in, out, s)
+}
+
+func autoConvert_core_ServiceAccount_To_v1_ServiceAccount(in *core.ServiceAccount, out *v1.ServiceAccount, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ out.Secrets = *(*[]v1.ObjectReference)(unsafe.Pointer(&in.Secrets))
+ out.ImagePullSecrets = *(*[]v1.LocalObjectReference)(unsafe.Pointer(&in.ImagePullSecrets))
+ out.AutomountServiceAccountToken = (*bool)(unsafe.Pointer(in.AutomountServiceAccountToken))
+ return nil
+}
+
+// Convert_core_ServiceAccount_To_v1_ServiceAccount is an autogenerated conversion function.
+func Convert_core_ServiceAccount_To_v1_ServiceAccount(in *core.ServiceAccount, out *v1.ServiceAccount, s conversion.Scope) error {
+ return autoConvert_core_ServiceAccount_To_v1_ServiceAccount(in, out, s)
+}
+
+func autoConvert_v1_ServiceAccountList_To_core_ServiceAccountList(in *v1.ServiceAccountList, out *core.ServiceAccountList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ out.Items = *(*[]core.ServiceAccount)(unsafe.Pointer(&in.Items))
+ return nil
+}
+
+// Convert_v1_ServiceAccountList_To_core_ServiceAccountList is an autogenerated conversion function.
+func Convert_v1_ServiceAccountList_To_core_ServiceAccountList(in *v1.ServiceAccountList, out *core.ServiceAccountList, s conversion.Scope) error {
+ return autoConvert_v1_ServiceAccountList_To_core_ServiceAccountList(in, out, s)
+}
+
+func autoConvert_core_ServiceAccountList_To_v1_ServiceAccountList(in *core.ServiceAccountList, out *v1.ServiceAccountList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ out.Items = *(*[]v1.ServiceAccount)(unsafe.Pointer(&in.Items))
+ return nil
+}
+
+// Convert_core_ServiceAccountList_To_v1_ServiceAccountList is an autogenerated conversion function.
+func Convert_core_ServiceAccountList_To_v1_ServiceAccountList(in *core.ServiceAccountList, out *v1.ServiceAccountList, s conversion.Scope) error {
+ return autoConvert_core_ServiceAccountList_To_v1_ServiceAccountList(in, out, s)
+}
+
+func autoConvert_v1_ServiceList_To_core_ServiceList(in *v1.ServiceList, out *core.ServiceList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ if in.Items != nil {
+ in, out := &in.Items, &out.Items
+ *out = make([]core.Service, len(*in))
+ for i := range *in {
+ if err := Convert_v1_Service_To_core_Service(&(*in)[i], &(*out)[i], s); err != nil {
+ return err
+ }
+ }
+ } else {
+ out.Items = nil
+ }
+ return nil
+}
+
+// Convert_v1_ServiceList_To_core_ServiceList is an autogenerated conversion function.
+func Convert_v1_ServiceList_To_core_ServiceList(in *v1.ServiceList, out *core.ServiceList, s conversion.Scope) error {
+ return autoConvert_v1_ServiceList_To_core_ServiceList(in, out, s)
+}
+
+func autoConvert_core_ServiceList_To_v1_ServiceList(in *core.ServiceList, out *v1.ServiceList, s conversion.Scope) error {
+ out.ListMeta = in.ListMeta
+ if in.Items != nil {
+ in, out := &in.Items, &out.Items
+ *out = make([]v1.Service, len(*in))
+ for i := range *in {
+ if err := Convert_core_Service_To_v1_Service(&(*in)[i], &(*out)[i], s); err != nil {
+ return err
+ }
+ }
+ } else {
+ out.Items = nil
+ }
+ return nil
+}
+
+// Convert_core_ServiceList_To_v1_ServiceList is an autogenerated conversion function.
+func Convert_core_ServiceList_To_v1_ServiceList(in *core.ServiceList, out *v1.ServiceList, s conversion.Scope) error {
+ return autoConvert_core_ServiceList_To_v1_ServiceList(in, out, s)
+}
+
+func autoConvert_v1_ServicePort_To_core_ServicePort(in *v1.ServicePort, out *core.ServicePort, s conversion.Scope) error {
+ out.Name = in.Name
+ out.Protocol = core.Protocol(in.Protocol)
+ out.Port = in.Port
+ out.TargetPort = in.TargetPort
+ out.NodePort = in.NodePort
+ return nil
+}
+
+// Convert_v1_ServicePort_To_core_ServicePort is an autogenerated conversion function.
+func Convert_v1_ServicePort_To_core_ServicePort(in *v1.ServicePort, out *core.ServicePort, s conversion.Scope) error {
+ return autoConvert_v1_ServicePort_To_core_ServicePort(in, out, s)
+}
+
+func autoConvert_core_ServicePort_To_v1_ServicePort(in *core.ServicePort, out *v1.ServicePort, s conversion.Scope) error {
+ out.Name = in.Name
+ out.Protocol = v1.Protocol(in.Protocol)
+ out.Port = in.Port
+ out.TargetPort = in.TargetPort
+ out.NodePort = in.NodePort
+ return nil
+}
+
+// Convert_core_ServicePort_To_v1_ServicePort is an autogenerated conversion function.
+func Convert_core_ServicePort_To_v1_ServicePort(in *core.ServicePort, out *v1.ServicePort, s conversion.Scope) error {
+ return autoConvert_core_ServicePort_To_v1_ServicePort(in, out, s)
+}
+
+func autoConvert_v1_ServiceProxyOptions_To_core_ServiceProxyOptions(in *v1.ServiceProxyOptions, out *core.ServiceProxyOptions, s conversion.Scope) error {
+ out.Path = in.Path
+ return nil
+}
+
+// Convert_v1_ServiceProxyOptions_To_core_ServiceProxyOptions is an autogenerated conversion function.
+func Convert_v1_ServiceProxyOptions_To_core_ServiceProxyOptions(in *v1.ServiceProxyOptions, out *core.ServiceProxyOptions, s conversion.Scope) error {
+ return autoConvert_v1_ServiceProxyOptions_To_core_ServiceProxyOptions(in, out, s)
+}
+
+func autoConvert_core_ServiceProxyOptions_To_v1_ServiceProxyOptions(in *core.ServiceProxyOptions, out *v1.ServiceProxyOptions, s conversion.Scope) error {
+ out.Path = in.Path
+ return nil
+}
+
+// Convert_core_ServiceProxyOptions_To_v1_ServiceProxyOptions is an autogenerated conversion function.
+func Convert_core_ServiceProxyOptions_To_v1_ServiceProxyOptions(in *core.ServiceProxyOptions, out *v1.ServiceProxyOptions, s conversion.Scope) error {
+ return autoConvert_core_ServiceProxyOptions_To_v1_ServiceProxyOptions(in, out, s)
+}
+
+func autoConvert_v1_ServiceSpec_To_core_ServiceSpec(in *v1.ServiceSpec, out *core.ServiceSpec, s conversion.Scope) error {
+ out.Ports = *(*[]core.ServicePort)(unsafe.Pointer(&in.Ports))
+ out.Selector = *(*map[string]string)(unsafe.Pointer(&in.Selector))
+ out.ClusterIP = in.ClusterIP
+ out.Type = core.ServiceType(in.Type)
+ out.ExternalIPs = *(*[]string)(unsafe.Pointer(&in.ExternalIPs))
+ out.SessionAffinity = core.ServiceAffinity(in.SessionAffinity)
+ out.LoadBalancerIP = in.LoadBalancerIP
+ out.LoadBalancerSourceRanges = *(*[]string)(unsafe.Pointer(&in.LoadBalancerSourceRanges))
+ out.ExternalName = in.ExternalName
+ out.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyType(in.ExternalTrafficPolicy)
+ out.HealthCheckNodePort = in.HealthCheckNodePort
+ out.PublishNotReadyAddresses = in.PublishNotReadyAddresses
+ out.SessionAffinityConfig = (*core.SessionAffinityConfig)(unsafe.Pointer(in.SessionAffinityConfig))
+ return nil
+}
+
+// Convert_v1_ServiceSpec_To_core_ServiceSpec is an autogenerated conversion function.
+func Convert_v1_ServiceSpec_To_core_ServiceSpec(in *v1.ServiceSpec, out *core.ServiceSpec, s conversion.Scope) error {
+ return autoConvert_v1_ServiceSpec_To_core_ServiceSpec(in, out, s)
+}
+
+func autoConvert_core_ServiceSpec_To_v1_ServiceSpec(in *core.ServiceSpec, out *v1.ServiceSpec, s conversion.Scope) error {
+ out.Type = v1.ServiceType(in.Type)
+ out.Ports = *(*[]v1.ServicePort)(unsafe.Pointer(&in.Ports))
+ out.Selector = *(*map[string]string)(unsafe.Pointer(&in.Selector))
+ out.ClusterIP = in.ClusterIP
+ out.ExternalName = in.ExternalName
+ out.ExternalIPs = *(*[]string)(unsafe.Pointer(&in.ExternalIPs))
+ out.LoadBalancerIP = in.LoadBalancerIP
+ out.SessionAffinity = v1.ServiceAffinity(in.SessionAffinity)
+ out.SessionAffinityConfig = (*v1.SessionAffinityConfig)(unsafe.Pointer(in.SessionAffinityConfig))
+ out.LoadBalancerSourceRanges = *(*[]string)(unsafe.Pointer(&in.LoadBalancerSourceRanges))
+ out.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyType(in.ExternalTrafficPolicy)
+ out.HealthCheckNodePort = in.HealthCheckNodePort
+ out.PublishNotReadyAddresses = in.PublishNotReadyAddresses
+ return nil
+}
+
+// Convert_core_ServiceSpec_To_v1_ServiceSpec is an autogenerated conversion function.
+func Convert_core_ServiceSpec_To_v1_ServiceSpec(in *core.ServiceSpec, out *v1.ServiceSpec, s conversion.Scope) error {
+ return autoConvert_core_ServiceSpec_To_v1_ServiceSpec(in, out, s)
+}
+
+func autoConvert_v1_ServiceStatus_To_core_ServiceStatus(in *v1.ServiceStatus, out *core.ServiceStatus, s conversion.Scope) error {
+ if err := Convert_v1_LoadBalancerStatus_To_core_LoadBalancerStatus(&in.LoadBalancer, &out.LoadBalancer, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_v1_ServiceStatus_To_core_ServiceStatus is an autogenerated conversion function.
+func Convert_v1_ServiceStatus_To_core_ServiceStatus(in *v1.ServiceStatus, out *core.ServiceStatus, s conversion.Scope) error {
+ return autoConvert_v1_ServiceStatus_To_core_ServiceStatus(in, out, s)
+}
+
+func autoConvert_core_ServiceStatus_To_v1_ServiceStatus(in *core.ServiceStatus, out *v1.ServiceStatus, s conversion.Scope) error {
+ if err := Convert_core_LoadBalancerStatus_To_v1_LoadBalancerStatus(&in.LoadBalancer, &out.LoadBalancer, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_core_ServiceStatus_To_v1_ServiceStatus is an autogenerated conversion function.
+func Convert_core_ServiceStatus_To_v1_ServiceStatus(in *core.ServiceStatus, out *v1.ServiceStatus, s conversion.Scope) error {
+ return autoConvert_core_ServiceStatus_To_v1_ServiceStatus(in, out, s)
+}
+
+func autoConvert_v1_SessionAffinityConfig_To_core_SessionAffinityConfig(in *v1.SessionAffinityConfig, out *core.SessionAffinityConfig, s conversion.Scope) error {
+ out.ClientIP = (*core.ClientIPConfig)(unsafe.Pointer(in.ClientIP))
+ return nil
+}
+
+// Convert_v1_SessionAffinityConfig_To_core_SessionAffinityConfig is an autogenerated conversion function.
+func Convert_v1_SessionAffinityConfig_To_core_SessionAffinityConfig(in *v1.SessionAffinityConfig, out *core.SessionAffinityConfig, s conversion.Scope) error {
+ return autoConvert_v1_SessionAffinityConfig_To_core_SessionAffinityConfig(in, out, s)
+}
+
+func autoConvert_core_SessionAffinityConfig_To_v1_SessionAffinityConfig(in *core.SessionAffinityConfig, out *v1.SessionAffinityConfig, s conversion.Scope) error {
+ out.ClientIP = (*v1.ClientIPConfig)(unsafe.Pointer(in.ClientIP))
+ return nil
+}
+
+// Convert_core_SessionAffinityConfig_To_v1_SessionAffinityConfig is an autogenerated conversion function.
+func Convert_core_SessionAffinityConfig_To_v1_SessionAffinityConfig(in *core.SessionAffinityConfig, out *v1.SessionAffinityConfig, s conversion.Scope) error {
+ return autoConvert_core_SessionAffinityConfig_To_v1_SessionAffinityConfig(in, out, s)
+}
+
+func autoConvert_v1_StorageOSPersistentVolumeSource_To_core_StorageOSPersistentVolumeSource(in *v1.StorageOSPersistentVolumeSource, out *core.StorageOSPersistentVolumeSource, s conversion.Scope) error {
+ out.VolumeName = in.VolumeName
+ out.VolumeNamespace = in.VolumeNamespace
+ out.FSType = in.FSType
+ out.ReadOnly = in.ReadOnly
+ out.SecretRef = (*core.ObjectReference)(unsafe.Pointer(in.SecretRef))
+ return nil
+}
+
+// Convert_v1_StorageOSPersistentVolumeSource_To_core_StorageOSPersistentVolumeSource is an autogenerated conversion function.
+func Convert_v1_StorageOSPersistentVolumeSource_To_core_StorageOSPersistentVolumeSource(in *v1.StorageOSPersistentVolumeSource, out *core.StorageOSPersistentVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_StorageOSPersistentVolumeSource_To_core_StorageOSPersistentVolumeSource(in, out, s)
+}
+
+func autoConvert_core_StorageOSPersistentVolumeSource_To_v1_StorageOSPersistentVolumeSource(in *core.StorageOSPersistentVolumeSource, out *v1.StorageOSPersistentVolumeSource, s conversion.Scope) error {
+ out.VolumeName = in.VolumeName
+ out.VolumeNamespace = in.VolumeNamespace
+ out.FSType = in.FSType
+ out.ReadOnly = in.ReadOnly
+ out.SecretRef = (*v1.ObjectReference)(unsafe.Pointer(in.SecretRef))
+ return nil
+}
+
+// Convert_core_StorageOSPersistentVolumeSource_To_v1_StorageOSPersistentVolumeSource is an autogenerated conversion function.
+func Convert_core_StorageOSPersistentVolumeSource_To_v1_StorageOSPersistentVolumeSource(in *core.StorageOSPersistentVolumeSource, out *v1.StorageOSPersistentVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_StorageOSPersistentVolumeSource_To_v1_StorageOSPersistentVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_StorageOSVolumeSource_To_core_StorageOSVolumeSource(in *v1.StorageOSVolumeSource, out *core.StorageOSVolumeSource, s conversion.Scope) error {
+ out.VolumeName = in.VolumeName
+ out.VolumeNamespace = in.VolumeNamespace
+ out.FSType = in.FSType
+ out.ReadOnly = in.ReadOnly
+ out.SecretRef = (*core.LocalObjectReference)(unsafe.Pointer(in.SecretRef))
+ return nil
+}
+
+// Convert_v1_StorageOSVolumeSource_To_core_StorageOSVolumeSource is an autogenerated conversion function.
+func Convert_v1_StorageOSVolumeSource_To_core_StorageOSVolumeSource(in *v1.StorageOSVolumeSource, out *core.StorageOSVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_StorageOSVolumeSource_To_core_StorageOSVolumeSource(in, out, s)
+}
+
+func autoConvert_core_StorageOSVolumeSource_To_v1_StorageOSVolumeSource(in *core.StorageOSVolumeSource, out *v1.StorageOSVolumeSource, s conversion.Scope) error {
+ out.VolumeName = in.VolumeName
+ out.VolumeNamespace = in.VolumeNamespace
+ out.FSType = in.FSType
+ out.ReadOnly = in.ReadOnly
+ out.SecretRef = (*v1.LocalObjectReference)(unsafe.Pointer(in.SecretRef))
+ return nil
+}
+
+// Convert_core_StorageOSVolumeSource_To_v1_StorageOSVolumeSource is an autogenerated conversion function.
+func Convert_core_StorageOSVolumeSource_To_v1_StorageOSVolumeSource(in *core.StorageOSVolumeSource, out *v1.StorageOSVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_StorageOSVolumeSource_To_v1_StorageOSVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_Sysctl_To_core_Sysctl(in *v1.Sysctl, out *core.Sysctl, s conversion.Scope) error {
+ out.Name = in.Name
+ out.Value = in.Value
+ return nil
+}
+
+// Convert_v1_Sysctl_To_core_Sysctl is an autogenerated conversion function.
+func Convert_v1_Sysctl_To_core_Sysctl(in *v1.Sysctl, out *core.Sysctl, s conversion.Scope) error {
+ return autoConvert_v1_Sysctl_To_core_Sysctl(in, out, s)
+}
+
+func autoConvert_core_Sysctl_To_v1_Sysctl(in *core.Sysctl, out *v1.Sysctl, s conversion.Scope) error {
+ out.Name = in.Name
+ out.Value = in.Value
+ return nil
+}
+
+// Convert_core_Sysctl_To_v1_Sysctl is an autogenerated conversion function.
+func Convert_core_Sysctl_To_v1_Sysctl(in *core.Sysctl, out *v1.Sysctl, s conversion.Scope) error {
+ return autoConvert_core_Sysctl_To_v1_Sysctl(in, out, s)
+}
+
+func autoConvert_v1_TCPSocketAction_To_core_TCPSocketAction(in *v1.TCPSocketAction, out *core.TCPSocketAction, s conversion.Scope) error {
+ out.Port = in.Port
+ out.Host = in.Host
+ return nil
+}
+
+// Convert_v1_TCPSocketAction_To_core_TCPSocketAction is an autogenerated conversion function.
+func Convert_v1_TCPSocketAction_To_core_TCPSocketAction(in *v1.TCPSocketAction, out *core.TCPSocketAction, s conversion.Scope) error {
+ return autoConvert_v1_TCPSocketAction_To_core_TCPSocketAction(in, out, s)
+}
+
+func autoConvert_core_TCPSocketAction_To_v1_TCPSocketAction(in *core.TCPSocketAction, out *v1.TCPSocketAction, s conversion.Scope) error {
+ out.Port = in.Port
+ out.Host = in.Host
+ return nil
+}
+
+// Convert_core_TCPSocketAction_To_v1_TCPSocketAction is an autogenerated conversion function.
+func Convert_core_TCPSocketAction_To_v1_TCPSocketAction(in *core.TCPSocketAction, out *v1.TCPSocketAction, s conversion.Scope) error {
+ return autoConvert_core_TCPSocketAction_To_v1_TCPSocketAction(in, out, s)
+}
+
+func autoConvert_v1_Taint_To_core_Taint(in *v1.Taint, out *core.Taint, s conversion.Scope) error {
+ out.Key = in.Key
+ out.Value = in.Value
+ out.Effect = core.TaintEffect(in.Effect)
+ out.TimeAdded = (*meta_v1.Time)(unsafe.Pointer(in.TimeAdded))
+ return nil
+}
+
+// Convert_v1_Taint_To_core_Taint is an autogenerated conversion function.
+func Convert_v1_Taint_To_core_Taint(in *v1.Taint, out *core.Taint, s conversion.Scope) error {
+ return autoConvert_v1_Taint_To_core_Taint(in, out, s)
+}
+
+func autoConvert_core_Taint_To_v1_Taint(in *core.Taint, out *v1.Taint, s conversion.Scope) error {
+ out.Key = in.Key
+ out.Value = in.Value
+ out.Effect = v1.TaintEffect(in.Effect)
+ out.TimeAdded = (*meta_v1.Time)(unsafe.Pointer(in.TimeAdded))
+ return nil
+}
+
+// Convert_core_Taint_To_v1_Taint is an autogenerated conversion function.
+func Convert_core_Taint_To_v1_Taint(in *core.Taint, out *v1.Taint, s conversion.Scope) error {
+ return autoConvert_core_Taint_To_v1_Taint(in, out, s)
+}
+
+func autoConvert_v1_Toleration_To_core_Toleration(in *v1.Toleration, out *core.Toleration, s conversion.Scope) error {
+ out.Key = in.Key
+ out.Operator = core.TolerationOperator(in.Operator)
+ out.Value = in.Value
+ out.Effect = core.TaintEffect(in.Effect)
+ out.TolerationSeconds = (*int64)(unsafe.Pointer(in.TolerationSeconds))
+ return nil
+}
+
+// Convert_v1_Toleration_To_core_Toleration is an autogenerated conversion function.
+func Convert_v1_Toleration_To_core_Toleration(in *v1.Toleration, out *core.Toleration, s conversion.Scope) error {
+ return autoConvert_v1_Toleration_To_core_Toleration(in, out, s)
+}
+
+func autoConvert_core_Toleration_To_v1_Toleration(in *core.Toleration, out *v1.Toleration, s conversion.Scope) error {
+ out.Key = in.Key
+ out.Operator = v1.TolerationOperator(in.Operator)
+ out.Value = in.Value
+ out.Effect = v1.TaintEffect(in.Effect)
+ out.TolerationSeconds = (*int64)(unsafe.Pointer(in.TolerationSeconds))
+ return nil
+}
+
+// Convert_core_Toleration_To_v1_Toleration is an autogenerated conversion function.
+func Convert_core_Toleration_To_v1_Toleration(in *core.Toleration, out *v1.Toleration, s conversion.Scope) error {
+ return autoConvert_core_Toleration_To_v1_Toleration(in, out, s)
+}
+
+func autoConvert_v1_Volume_To_core_Volume(in *v1.Volume, out *core.Volume, s conversion.Scope) error {
+ out.Name = in.Name
+ if err := Convert_v1_VolumeSource_To_core_VolumeSource(&in.VolumeSource, &out.VolumeSource, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_v1_Volume_To_core_Volume is an autogenerated conversion function.
+func Convert_v1_Volume_To_core_Volume(in *v1.Volume, out *core.Volume, s conversion.Scope) error {
+ return autoConvert_v1_Volume_To_core_Volume(in, out, s)
+}
+
+func autoConvert_core_Volume_To_v1_Volume(in *core.Volume, out *v1.Volume, s conversion.Scope) error {
+ out.Name = in.Name
+ if err := Convert_core_VolumeSource_To_v1_VolumeSource(&in.VolumeSource, &out.VolumeSource, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_core_Volume_To_v1_Volume is an autogenerated conversion function.
+func Convert_core_Volume_To_v1_Volume(in *core.Volume, out *v1.Volume, s conversion.Scope) error {
+ return autoConvert_core_Volume_To_v1_Volume(in, out, s)
+}
+
+func autoConvert_v1_VolumeMount_To_core_VolumeMount(in *v1.VolumeMount, out *core.VolumeMount, s conversion.Scope) error {
+ out.Name = in.Name
+ out.ReadOnly = in.ReadOnly
+ out.MountPath = in.MountPath
+ out.SubPath = in.SubPath
+ out.MountPropagation = (*core.MountPropagationMode)(unsafe.Pointer(in.MountPropagation))
+ return nil
+}
+
+// Convert_v1_VolumeMount_To_core_VolumeMount is an autogenerated conversion function.
+func Convert_v1_VolumeMount_To_core_VolumeMount(in *v1.VolumeMount, out *core.VolumeMount, s conversion.Scope) error {
+ return autoConvert_v1_VolumeMount_To_core_VolumeMount(in, out, s)
+}
+
+func autoConvert_core_VolumeMount_To_v1_VolumeMount(in *core.VolumeMount, out *v1.VolumeMount, s conversion.Scope) error {
+ out.Name = in.Name
+ out.ReadOnly = in.ReadOnly
+ out.MountPath = in.MountPath
+ out.SubPath = in.SubPath
+ out.MountPropagation = (*v1.MountPropagationMode)(unsafe.Pointer(in.MountPropagation))
+ return nil
+}
+
+// Convert_core_VolumeMount_To_v1_VolumeMount is an autogenerated conversion function.
+func Convert_core_VolumeMount_To_v1_VolumeMount(in *core.VolumeMount, out *v1.VolumeMount, s conversion.Scope) error {
+ return autoConvert_core_VolumeMount_To_v1_VolumeMount(in, out, s)
+}
+
+func autoConvert_v1_VolumeProjection_To_core_VolumeProjection(in *v1.VolumeProjection, out *core.VolumeProjection, s conversion.Scope) error {
+ out.Secret = (*core.SecretProjection)(unsafe.Pointer(in.Secret))
+ out.DownwardAPI = (*core.DownwardAPIProjection)(unsafe.Pointer(in.DownwardAPI))
+ out.ConfigMap = (*core.ConfigMapProjection)(unsafe.Pointer(in.ConfigMap))
+ return nil
+}
+
+// Convert_v1_VolumeProjection_To_core_VolumeProjection is an autogenerated conversion function.
+func Convert_v1_VolumeProjection_To_core_VolumeProjection(in *v1.VolumeProjection, out *core.VolumeProjection, s conversion.Scope) error {
+ return autoConvert_v1_VolumeProjection_To_core_VolumeProjection(in, out, s)
+}
+
+func autoConvert_core_VolumeProjection_To_v1_VolumeProjection(in *core.VolumeProjection, out *v1.VolumeProjection, s conversion.Scope) error {
+ out.Secret = (*v1.SecretProjection)(unsafe.Pointer(in.Secret))
+ out.DownwardAPI = (*v1.DownwardAPIProjection)(unsafe.Pointer(in.DownwardAPI))
+ out.ConfigMap = (*v1.ConfigMapProjection)(unsafe.Pointer(in.ConfigMap))
+ return nil
+}
+
+// Convert_core_VolumeProjection_To_v1_VolumeProjection is an autogenerated conversion function.
+func Convert_core_VolumeProjection_To_v1_VolumeProjection(in *core.VolumeProjection, out *v1.VolumeProjection, s conversion.Scope) error {
+ return autoConvert_core_VolumeProjection_To_v1_VolumeProjection(in, out, s)
+}
+
+func autoConvert_v1_VolumeSource_To_core_VolumeSource(in *v1.VolumeSource, out *core.VolumeSource, s conversion.Scope) error {
+ out.HostPath = (*core.HostPathVolumeSource)(unsafe.Pointer(in.HostPath))
+ out.EmptyDir = (*core.EmptyDirVolumeSource)(unsafe.Pointer(in.EmptyDir))
+ out.GCEPersistentDisk = (*core.GCEPersistentDiskVolumeSource)(unsafe.Pointer(in.GCEPersistentDisk))
+ out.AWSElasticBlockStore = (*core.AWSElasticBlockStoreVolumeSource)(unsafe.Pointer(in.AWSElasticBlockStore))
+ out.GitRepo = (*core.GitRepoVolumeSource)(unsafe.Pointer(in.GitRepo))
+ out.Secret = (*core.SecretVolumeSource)(unsafe.Pointer(in.Secret))
+ out.NFS = (*core.NFSVolumeSource)(unsafe.Pointer(in.NFS))
+ out.ISCSI = (*core.ISCSIVolumeSource)(unsafe.Pointer(in.ISCSI))
+ out.Glusterfs = (*core.GlusterfsVolumeSource)(unsafe.Pointer(in.Glusterfs))
+ out.PersistentVolumeClaim = (*core.PersistentVolumeClaimVolumeSource)(unsafe.Pointer(in.PersistentVolumeClaim))
+ out.RBD = (*core.RBDVolumeSource)(unsafe.Pointer(in.RBD))
+ out.FlexVolume = (*core.FlexVolumeSource)(unsafe.Pointer(in.FlexVolume))
+ out.Cinder = (*core.CinderVolumeSource)(unsafe.Pointer(in.Cinder))
+ out.CephFS = (*core.CephFSVolumeSource)(unsafe.Pointer(in.CephFS))
+ out.Flocker = (*core.FlockerVolumeSource)(unsafe.Pointer(in.Flocker))
+ out.DownwardAPI = (*core.DownwardAPIVolumeSource)(unsafe.Pointer(in.DownwardAPI))
+ out.FC = (*core.FCVolumeSource)(unsafe.Pointer(in.FC))
+ out.AzureFile = (*core.AzureFileVolumeSource)(unsafe.Pointer(in.AzureFile))
+ out.ConfigMap = (*core.ConfigMapVolumeSource)(unsafe.Pointer(in.ConfigMap))
+ out.VsphereVolume = (*core.VsphereVirtualDiskVolumeSource)(unsafe.Pointer(in.VsphereVolume))
+ out.Quobyte = (*core.QuobyteVolumeSource)(unsafe.Pointer(in.Quobyte))
+ out.AzureDisk = (*core.AzureDiskVolumeSource)(unsafe.Pointer(in.AzureDisk))
+ out.PhotonPersistentDisk = (*core.PhotonPersistentDiskVolumeSource)(unsafe.Pointer(in.PhotonPersistentDisk))
+ out.Projected = (*core.ProjectedVolumeSource)(unsafe.Pointer(in.Projected))
+ out.PortworxVolume = (*core.PortworxVolumeSource)(unsafe.Pointer(in.PortworxVolume))
+ out.ScaleIO = (*core.ScaleIOVolumeSource)(unsafe.Pointer(in.ScaleIO))
+ out.StorageOS = (*core.StorageOSVolumeSource)(unsafe.Pointer(in.StorageOS))
+ return nil
+}
+
+// Convert_v1_VolumeSource_To_core_VolumeSource is an autogenerated conversion function.
+func Convert_v1_VolumeSource_To_core_VolumeSource(in *v1.VolumeSource, out *core.VolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_VolumeSource_To_core_VolumeSource(in, out, s)
+}
+
+func autoConvert_core_VolumeSource_To_v1_VolumeSource(in *core.VolumeSource, out *v1.VolumeSource, s conversion.Scope) error {
+ out.HostPath = (*v1.HostPathVolumeSource)(unsafe.Pointer(in.HostPath))
+ out.EmptyDir = (*v1.EmptyDirVolumeSource)(unsafe.Pointer(in.EmptyDir))
+ out.GCEPersistentDisk = (*v1.GCEPersistentDiskVolumeSource)(unsafe.Pointer(in.GCEPersistentDisk))
+ out.AWSElasticBlockStore = (*v1.AWSElasticBlockStoreVolumeSource)(unsafe.Pointer(in.AWSElasticBlockStore))
+ out.GitRepo = (*v1.GitRepoVolumeSource)(unsafe.Pointer(in.GitRepo))
+ out.Secret = (*v1.SecretVolumeSource)(unsafe.Pointer(in.Secret))
+ out.NFS = (*v1.NFSVolumeSource)(unsafe.Pointer(in.NFS))
+ out.ISCSI = (*v1.ISCSIVolumeSource)(unsafe.Pointer(in.ISCSI))
+ out.Glusterfs = (*v1.GlusterfsVolumeSource)(unsafe.Pointer(in.Glusterfs))
+ out.PersistentVolumeClaim = (*v1.PersistentVolumeClaimVolumeSource)(unsafe.Pointer(in.PersistentVolumeClaim))
+ out.RBD = (*v1.RBDVolumeSource)(unsafe.Pointer(in.RBD))
+ out.Quobyte = (*v1.QuobyteVolumeSource)(unsafe.Pointer(in.Quobyte))
+ out.FlexVolume = (*v1.FlexVolumeSource)(unsafe.Pointer(in.FlexVolume))
+ out.Cinder = (*v1.CinderVolumeSource)(unsafe.Pointer(in.Cinder))
+ out.CephFS = (*v1.CephFSVolumeSource)(unsafe.Pointer(in.CephFS))
+ out.Flocker = (*v1.FlockerVolumeSource)(unsafe.Pointer(in.Flocker))
+ out.DownwardAPI = (*v1.DownwardAPIVolumeSource)(unsafe.Pointer(in.DownwardAPI))
+ out.FC = (*v1.FCVolumeSource)(unsafe.Pointer(in.FC))
+ out.AzureFile = (*v1.AzureFileVolumeSource)(unsafe.Pointer(in.AzureFile))
+ out.ConfigMap = (*v1.ConfigMapVolumeSource)(unsafe.Pointer(in.ConfigMap))
+ out.VsphereVolume = (*v1.VsphereVirtualDiskVolumeSource)(unsafe.Pointer(in.VsphereVolume))
+ out.AzureDisk = (*v1.AzureDiskVolumeSource)(unsafe.Pointer(in.AzureDisk))
+ out.PhotonPersistentDisk = (*v1.PhotonPersistentDiskVolumeSource)(unsafe.Pointer(in.PhotonPersistentDisk))
+ out.Projected = (*v1.ProjectedVolumeSource)(unsafe.Pointer(in.Projected))
+ out.PortworxVolume = (*v1.PortworxVolumeSource)(unsafe.Pointer(in.PortworxVolume))
+ out.ScaleIO = (*v1.ScaleIOVolumeSource)(unsafe.Pointer(in.ScaleIO))
+ out.StorageOS = (*v1.StorageOSVolumeSource)(unsafe.Pointer(in.StorageOS))
+ return nil
+}
+
+// Convert_core_VolumeSource_To_v1_VolumeSource is an autogenerated conversion function.
+func Convert_core_VolumeSource_To_v1_VolumeSource(in *core.VolumeSource, out *v1.VolumeSource, s conversion.Scope) error {
+ return autoConvert_core_VolumeSource_To_v1_VolumeSource(in, out, s)
+}
+
+func autoConvert_v1_VsphereVirtualDiskVolumeSource_To_core_VsphereVirtualDiskVolumeSource(in *v1.VsphereVirtualDiskVolumeSource, out *core.VsphereVirtualDiskVolumeSource, s conversion.Scope) error {
+ out.VolumePath = in.VolumePath
+ out.FSType = in.FSType
+ out.StoragePolicyName = in.StoragePolicyName
+ out.StoragePolicyID = in.StoragePolicyID
+ return nil
+}
+
+// Convert_v1_VsphereVirtualDiskVolumeSource_To_core_VsphereVirtualDiskVolumeSource is an autogenerated conversion function.
+func Convert_v1_VsphereVirtualDiskVolumeSource_To_core_VsphereVirtualDiskVolumeSource(in *v1.VsphereVirtualDiskVolumeSource, out *core.VsphereVirtualDiskVolumeSource, s conversion.Scope) error {
+ return autoConvert_v1_VsphereVirtualDiskVolumeSource_To_core_VsphereVirtualDiskVolumeSource(in, out, s)
+}
+
+func autoConvert_core_VsphereVirtualDiskVolumeSource_To_v1_VsphereVirtualDiskVolumeSource(in *core.VsphereVirtualDiskVolumeSource, out *v1.VsphereVirtualDiskVolumeSource, s conversion.Scope) error {
+ out.VolumePath = in.VolumePath
+ out.FSType = in.FSType
+ out.StoragePolicyName = in.StoragePolicyName
+ out.StoragePolicyID = in.StoragePolicyID
+ return nil
+}
+
+// Convert_core_VsphereVirtualDiskVolumeSource_To_v1_VsphereVirtualDiskVolumeSource is an autogenerated conversion function.
+func Convert_core_VsphereVirtualDiskVolumeSource_To_v1_VsphereVirtualDiskVolumeSource(in *core.VsphereVirtualDiskVolumeSource, out *v1.VsphereVirtualDiskVolumeSource, s conversion.Scope) error {
+ return autoConvert_core_VsphereVirtualDiskVolumeSource_To_v1_VsphereVirtualDiskVolumeSource(in, out, s)
+}
+
+func autoConvert_v1_WeightedPodAffinityTerm_To_core_WeightedPodAffinityTerm(in *v1.WeightedPodAffinityTerm, out *core.WeightedPodAffinityTerm, s conversion.Scope) error {
+ out.Weight = in.Weight
+ if err := Convert_v1_PodAffinityTerm_To_core_PodAffinityTerm(&in.PodAffinityTerm, &out.PodAffinityTerm, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_v1_WeightedPodAffinityTerm_To_core_WeightedPodAffinityTerm is an autogenerated conversion function.
+func Convert_v1_WeightedPodAffinityTerm_To_core_WeightedPodAffinityTerm(in *v1.WeightedPodAffinityTerm, out *core.WeightedPodAffinityTerm, s conversion.Scope) error {
+ return autoConvert_v1_WeightedPodAffinityTerm_To_core_WeightedPodAffinityTerm(in, out, s)
+}
+
+func autoConvert_core_WeightedPodAffinityTerm_To_v1_WeightedPodAffinityTerm(in *core.WeightedPodAffinityTerm, out *v1.WeightedPodAffinityTerm, s conversion.Scope) error {
+ out.Weight = in.Weight
+ if err := Convert_core_PodAffinityTerm_To_v1_PodAffinityTerm(&in.PodAffinityTerm, &out.PodAffinityTerm, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_core_WeightedPodAffinityTerm_To_v1_WeightedPodAffinityTerm is an autogenerated conversion function.
+func Convert_core_WeightedPodAffinityTerm_To_v1_WeightedPodAffinityTerm(in *core.WeightedPodAffinityTerm, out *v1.WeightedPodAffinityTerm, s conversion.Scope) error {
+ return autoConvert_core_WeightedPodAffinityTerm_To_v1_WeightedPodAffinityTerm(in, out, s)
+}
diff --git a/pkg/api/v1/zz_generated.defaults.go b/pkg/apis/core/v1/zz_generated.defaults.go
similarity index 100%
rename from pkg/api/v1/zz_generated.defaults.go
rename to pkg/apis/core/v1/zz_generated.defaults.go
diff --git a/pkg/api/validation/BUILD b/pkg/apis/core/validation/BUILD
similarity index 87%
rename from pkg/api/validation/BUILD
rename to pkg/apis/core/validation/BUILD
index 5c5f17361e..ef2778079d 100644
--- a/pkg/api/validation/BUILD
+++ b/pkg/apis/core/validation/BUILD
@@ -11,15 +11,15 @@ go_library(
"events.go",
"validation.go",
],
- importpath = "k8s.io/kubernetes/pkg/api/validation",
+ importpath = "k8s.io/kubernetes/pkg/apis/core/validation",
visibility = ["//visibility:public"],
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/helper:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/service:go_default_library",
- "//pkg/api/v1:go_default_library",
- "//pkg/api/v1/helper:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
+ "//pkg/apis/core/v1:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
"//pkg/capabilities:go_default_library",
"//pkg/features:go_default_library",
"//pkg/security/apparmor:go_default_library",
@@ -48,13 +48,13 @@ go_test(
"events_test.go",
"validation_test.go",
],
- importpath = "k8s.io/kubernetes/pkg/api/validation",
+ importpath = "k8s.io/kubernetes/pkg/apis/core/validation",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/helper:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
"//pkg/capabilities:go_default_library",
"//pkg/security/apparmor:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
diff --git a/pkg/api/validation/OWNERS b/pkg/apis/core/validation/OWNERS
similarity index 100%
rename from pkg/api/validation/OWNERS
rename to pkg/apis/core/validation/OWNERS
diff --git a/pkg/api/validation/doc.go b/pkg/apis/core/validation/doc.go
similarity index 90%
rename from pkg/api/validation/doc.go
rename to pkg/apis/core/validation/doc.go
index 30f541de32..0c1cfaab5a 100644
--- a/pkg/api/validation/doc.go
+++ b/pkg/apis/core/validation/doc.go
@@ -16,4 +16,4 @@ limitations under the License.
// Package validation has functions for validating the correctness of api
// objects and explaining what is wrong with them when they aren't valid.
-package validation // import "k8s.io/kubernetes/pkg/api/validation"
+package validation // import "k8s.io/kubernetes/pkg/apis/core/validation"
diff --git a/pkg/api/validation/events.go b/pkg/apis/core/validation/events.go
similarity index 97%
rename from pkg/api/validation/events.go
rename to pkg/apis/core/validation/events.go
index 4aec88d5c5..dc0f5a9379 100644
--- a/pkg/api/validation/events.go
+++ b/pkg/apis/core/validation/events.go
@@ -24,12 +24,12 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/util/validation"
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ "k8s.io/kubernetes/pkg/apis/core"
)
// ValidateEvent makes sure that the event makes sense.
-func ValidateEvent(event *api.Event) field.ErrorList {
+func ValidateEvent(event *core.Event) field.ErrorList {
allErrs := field.ErrorList{}
// Make sure event.Namespace and the involvedObject.Namespace agree
diff --git a/pkg/api/validation/events_test.go b/pkg/apis/core/validation/events_test.go
similarity index 81%
rename from pkg/api/validation/events_test.go
rename to pkg/apis/core/validation/events_test.go
index 0df784f6df..c96ed24095 100644
--- a/pkg/api/validation/events_test.go
+++ b/pkg/apis/core/validation/events_test.go
@@ -20,69 +20,69 @@ import (
"testing"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/kubernetes/pkg/api"
+ "k8s.io/kubernetes/pkg/apis/core"
)
func TestValidateEvent(t *testing.T) {
table := []struct {
- *api.Event
+ *core.Event
valid bool
}{
{
- &api.Event{
+ &core.Event{
ObjectMeta: metav1.ObjectMeta{
Name: "test1",
Namespace: "foo",
},
- InvolvedObject: api.ObjectReference{
+ InvolvedObject: core.ObjectReference{
Namespace: "bar",
Kind: "Pod",
},
},
false,
}, {
- &api.Event{
+ &core.Event{
ObjectMeta: metav1.ObjectMeta{
Name: "test2",
Namespace: "aoeu-_-aoeu",
},
- InvolvedObject: api.ObjectReference{
+ InvolvedObject: core.ObjectReference{
Namespace: "aoeu-_-aoeu",
Kind: "Pod",
},
},
false,
}, {
- &api.Event{
+ &core.Event{
ObjectMeta: metav1.ObjectMeta{
Name: "test3",
Namespace: metav1.NamespaceDefault,
},
- InvolvedObject: api.ObjectReference{
+ InvolvedObject: core.ObjectReference{
APIVersion: "v1",
Kind: "Node",
},
},
true,
}, {
- &api.Event{
+ &core.Event{
ObjectMeta: metav1.ObjectMeta{
Name: "test4",
Namespace: metav1.NamespaceDefault,
},
- InvolvedObject: api.ObjectReference{
+ InvolvedObject: core.ObjectReference{
APIVersion: "v1",
Kind: "Namespace",
},
},
true,
}, {
- &api.Event{
+ &core.Event{
ObjectMeta: metav1.ObjectMeta{
Name: "test5",
Namespace: metav1.NamespaceDefault,
},
- InvolvedObject: api.ObjectReference{
+ InvolvedObject: core.ObjectReference{
APIVersion: "extensions/v1beta1",
Kind: "NoKind",
Namespace: metav1.NamespaceDefault,
@@ -90,12 +90,12 @@ func TestValidateEvent(t *testing.T) {
},
true,
}, {
- &api.Event{
+ &core.Event{
ObjectMeta: metav1.ObjectMeta{
Name: "test6",
Namespace: metav1.NamespaceDefault,
},
- InvolvedObject: api.ObjectReference{
+ InvolvedObject: core.ObjectReference{
APIVersion: "extensions/v1beta1",
Kind: "Job",
Namespace: "foo",
@@ -103,12 +103,12 @@ func TestValidateEvent(t *testing.T) {
},
false,
}, {
- &api.Event{
+ &core.Event{
ObjectMeta: metav1.ObjectMeta{
Name: "test7",
Namespace: metav1.NamespaceDefault,
},
- InvolvedObject: api.ObjectReference{
+ InvolvedObject: core.ObjectReference{
APIVersion: "extensions/v1beta1",
Kind: "Job",
Namespace: metav1.NamespaceDefault,
@@ -116,12 +116,12 @@ func TestValidateEvent(t *testing.T) {
},
true,
}, {
- &api.Event{
+ &core.Event{
ObjectMeta: metav1.ObjectMeta{
Name: "test8",
Namespace: metav1.NamespaceDefault,
},
- InvolvedObject: api.ObjectReference{
+ InvolvedObject: core.ObjectReference{
APIVersion: "other/v1beta1",
Kind: "Job",
Namespace: "foo",
@@ -129,12 +129,12 @@ func TestValidateEvent(t *testing.T) {
},
false,
}, {
- &api.Event{
+ &core.Event{
ObjectMeta: metav1.ObjectMeta{
Name: "test9",
Namespace: "foo",
},
- InvolvedObject: api.ObjectReference{
+ InvolvedObject: core.ObjectReference{
APIVersion: "other/v1beta1",
Kind: "Job",
Namespace: "foo",
@@ -142,12 +142,12 @@ func TestValidateEvent(t *testing.T) {
},
true,
}, {
- &api.Event{
+ &core.Event{
ObjectMeta: metav1.ObjectMeta{
Name: "test10",
Namespace: metav1.NamespaceDefault,
},
- InvolvedObject: api.ObjectReference{
+ InvolvedObject: core.ObjectReference{
APIVersion: "extensions",
Kind: "Job",
Namespace: "foo",
@@ -155,12 +155,12 @@ func TestValidateEvent(t *testing.T) {
},
false,
}, {
- &api.Event{
+ &core.Event{
ObjectMeta: metav1.ObjectMeta{
Name: "test11",
Namespace: "foo",
},
- InvolvedObject: api.ObjectReference{
+ InvolvedObject: core.ObjectReference{
// must register in v1beta1 to be true
APIVersion: "extensions/v1beta1",
Kind: "Job",
@@ -170,12 +170,12 @@ func TestValidateEvent(t *testing.T) {
true,
},
{
- &api.Event{
+ &core.Event{
ObjectMeta: metav1.ObjectMeta{
Name: "test12",
Namespace: "foo",
},
- InvolvedObject: api.ObjectReference{
+ InvolvedObject: core.ObjectReference{
APIVersion: "other/v1beta1",
Kind: "FooBar",
Namespace: "bar",
@@ -184,12 +184,12 @@ func TestValidateEvent(t *testing.T) {
false,
},
{
- &api.Event{
+ &core.Event{
ObjectMeta: metav1.ObjectMeta{
Name: "test13",
Namespace: "",
},
- InvolvedObject: api.ObjectReference{
+ InvolvedObject: core.ObjectReference{
APIVersion: "other/v1beta1",
Kind: "FooBar",
Namespace: "bar",
@@ -198,12 +198,12 @@ func TestValidateEvent(t *testing.T) {
false,
},
{
- &api.Event{
+ &core.Event{
ObjectMeta: metav1.ObjectMeta{
Name: "test14",
Namespace: "foo",
},
- InvolvedObject: api.ObjectReference{
+ InvolvedObject: core.ObjectReference{
APIVersion: "other/v1beta1",
Kind: "FooBar",
Namespace: "",
diff --git a/pkg/api/validation/validation.go b/pkg/apis/core/validation/validation.go
similarity index 86%
rename from pkg/api/validation/validation.go
rename to pkg/apis/core/validation/validation.go
index 558ed33649..3ea4ca7cf7 100644
--- a/pkg/api/validation/validation.go
+++ b/pkg/apis/core/validation/validation.go
@@ -43,12 +43,12 @@ import (
"k8s.io/apimachinery/pkg/util/validation"
"k8s.io/apimachinery/pkg/util/validation/field"
utilfeature "k8s.io/apiserver/pkg/util/feature"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/helper"
"k8s.io/kubernetes/pkg/api/legacyscheme"
apiservice "k8s.io/kubernetes/pkg/api/service"
- k8s_api_v1 "k8s.io/kubernetes/pkg/api/v1"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
+ "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
+ corev1 "k8s.io/kubernetes/pkg/apis/core/v1"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
"k8s.io/kubernetes/pkg/capabilities"
"k8s.io/kubernetes/pkg/features"
"k8s.io/kubernetes/pkg/security/apparmor"
@@ -62,6 +62,7 @@ const isNegativeErrorMsg string = apimachineryvalidation.IsNegativeErrorMsg
const isInvalidQuotaResource string = `must be a standard resource for quota`
const fieldImmutableErrorMsg string = genericvalidation.FieldImmutableErrorMsg
const isNotIntegerErrorMsg string = `must be an integer`
+const isNotPositiveErrorMsg string = `must be greater than zero`
var pdPartitionErrorMsg string = validation.InclusiveRangeError(1, 255)
var volumeModeErrorMsg string = "must be a number between 0 and 0777 (octal), both inclusive"
@@ -111,37 +112,37 @@ func ValidateDNS1123Subdomain(value string, fldPath *field.Path) field.ErrorList
return allErrs
}
-func ValidatePodSpecificAnnotations(annotations map[string]string, spec *api.PodSpec, fldPath *field.Path) field.ErrorList {
+func ValidatePodSpecificAnnotations(annotations map[string]string, spec *core.PodSpec, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
- if value, isMirror := annotations[api.MirrorPodAnnotationKey]; isMirror {
+ if value, isMirror := annotations[core.MirrorPodAnnotationKey]; isMirror {
if len(spec.NodeName) == 0 {
- allErrs = append(allErrs, field.Invalid(fldPath.Key(api.MirrorPodAnnotationKey), value, "must set spec.nodeName if mirror pod annotation is set"))
+ allErrs = append(allErrs, field.Invalid(fldPath.Key(core.MirrorPodAnnotationKey), value, "must set spec.nodeName if mirror pod annotation is set"))
}
}
- if annotations[api.TolerationsAnnotationKey] != "" {
+ if annotations[core.TolerationsAnnotationKey] != "" {
allErrs = append(allErrs, ValidateTolerationsInPodAnnotations(annotations, fldPath)...)
}
allErrs = append(allErrs, ValidateSeccompPodAnnotations(annotations, fldPath)...)
allErrs = append(allErrs, ValidateAppArmorPodAnnotations(annotations, spec, fldPath)...)
- sysctls, err := helper.SysctlsFromPodAnnotation(annotations[api.SysctlsPodAnnotationKey])
+ sysctls, err := helper.SysctlsFromPodAnnotation(annotations[core.SysctlsPodAnnotationKey])
if err != nil {
- allErrs = append(allErrs, field.Invalid(fldPath.Key(api.SysctlsPodAnnotationKey), annotations[api.SysctlsPodAnnotationKey], err.Error()))
+ allErrs = append(allErrs, field.Invalid(fldPath.Key(core.SysctlsPodAnnotationKey), annotations[core.SysctlsPodAnnotationKey], err.Error()))
} else {
- allErrs = append(allErrs, validateSysctls(sysctls, fldPath.Key(api.SysctlsPodAnnotationKey))...)
+ allErrs = append(allErrs, validateSysctls(sysctls, fldPath.Key(core.SysctlsPodAnnotationKey))...)
}
- unsafeSysctls, err := helper.SysctlsFromPodAnnotation(annotations[api.UnsafeSysctlsPodAnnotationKey])
+ unsafeSysctls, err := helper.SysctlsFromPodAnnotation(annotations[core.UnsafeSysctlsPodAnnotationKey])
if err != nil {
- allErrs = append(allErrs, field.Invalid(fldPath.Key(api.UnsafeSysctlsPodAnnotationKey), annotations[api.UnsafeSysctlsPodAnnotationKey], err.Error()))
+ allErrs = append(allErrs, field.Invalid(fldPath.Key(core.UnsafeSysctlsPodAnnotationKey), annotations[core.UnsafeSysctlsPodAnnotationKey], err.Error()))
} else {
- allErrs = append(allErrs, validateSysctls(unsafeSysctls, fldPath.Key(api.UnsafeSysctlsPodAnnotationKey))...)
+ allErrs = append(allErrs, validateSysctls(unsafeSysctls, fldPath.Key(core.UnsafeSysctlsPodAnnotationKey))...)
}
inBoth := sysctlIntersection(sysctls, unsafeSysctls)
if len(inBoth) > 0 {
- allErrs = append(allErrs, field.Invalid(fldPath.Key(api.UnsafeSysctlsPodAnnotationKey), strings.Join(inBoth, ", "), "can not be safe and unsafe"))
+ allErrs = append(allErrs, field.Invalid(fldPath.Key(core.UnsafeSysctlsPodAnnotationKey), strings.Join(inBoth, ", "), "can not be safe and unsafe"))
}
return allErrs
@@ -153,18 +154,18 @@ func ValidateTolerationsInPodAnnotations(annotations map[string]string, fldPath
tolerations, err := helper.GetTolerationsFromPodAnnotations(annotations)
if err != nil {
- allErrs = append(allErrs, field.Invalid(fldPath, api.TolerationsAnnotationKey, err.Error()))
+ allErrs = append(allErrs, field.Invalid(fldPath, core.TolerationsAnnotationKey, err.Error()))
return allErrs
}
if len(tolerations) > 0 {
- allErrs = append(allErrs, ValidateTolerations(tolerations, fldPath.Child(api.TolerationsAnnotationKey))...)
+ allErrs = append(allErrs, ValidateTolerations(tolerations, fldPath.Child(core.TolerationsAnnotationKey))...)
}
return allErrs
}
-func ValidatePodSpecificAnnotationUpdates(newPod, oldPod *api.Pod, fldPath *field.Path) field.ErrorList {
+func ValidatePodSpecificAnnotationUpdates(newPod, oldPod *core.Pod, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
newAnnotations := newPod.Annotations
oldAnnotations := oldPod.Annotations
@@ -175,7 +176,7 @@ func ValidatePodSpecificAnnotationUpdates(newPod, oldPod *api.Pod, fldPath *fiel
if strings.HasPrefix(k, apparmor.ContainerAnnotationKeyPrefix) {
allErrs = append(allErrs, field.Forbidden(fldPath.Key(k), "may not remove or update AppArmor annotations"))
}
- if k == api.MirrorPodAnnotationKey {
+ if k == core.MirrorPodAnnotationKey {
allErrs = append(allErrs, field.Forbidden(fldPath.Key(k), "may not remove or update mirror pod annotation"))
}
}
@@ -187,7 +188,7 @@ func ValidatePodSpecificAnnotationUpdates(newPod, oldPod *api.Pod, fldPath *fiel
if strings.HasPrefix(k, apparmor.ContainerAnnotationKeyPrefix) {
allErrs = append(allErrs, field.Forbidden(fldPath.Key(k), "may not add AppArmor annotations"))
}
- if k == api.MirrorPodAnnotationKey {
+ if k == core.MirrorPodAnnotationKey {
allErrs = append(allErrs, field.Forbidden(fldPath.Key(k), "may not add mirror pod annotation"))
}
}
@@ -314,6 +315,15 @@ func ValidateNonnegativeQuantity(value resource.Quantity, fldPath *field.Path) f
return allErrs
}
+// Validates that a Quantity is positive
+func ValidatePositiveQuantityValue(value resource.Quantity, fldPath *field.Path) field.ErrorList {
+ allErrs := field.ErrorList{}
+ if value.Cmp(resource.Quantity{}) <= 0 {
+ allErrs = append(allErrs, field.Invalid(fldPath, value.String(), isNotPositiveErrorMsg))
+ }
+ return allErrs
+}
+
func ValidateImmutableField(newVal, oldVal interface{}, fldPath *field.Path) field.ErrorList {
return genericvalidation.ValidateImmutableField(newVal, oldVal, fldPath)
}
@@ -355,7 +365,7 @@ func ValidateNoNewFinalizers(newFinalizers []string, oldFinalizers []string, fld
return genericvalidation.ValidateNoNewFinalizers(newFinalizers, oldFinalizers, fldPath)
}
-func ValidateVolumes(volumes []api.Volume, fldPath *field.Path) (sets.String, field.ErrorList) {
+func ValidateVolumes(volumes []core.Volume, fldPath *field.Path) (sets.String, field.ErrorList) {
allErrs := field.ErrorList{}
allNames := sets.String{}
@@ -381,7 +391,7 @@ func ValidateVolumes(volumes []api.Volume, fldPath *field.Path) (sets.String, fi
return allNames, allErrs
}
-func validateVolumeSource(source *api.VolumeSource, fldPath *field.Path, volName string) field.ErrorList {
+func validateVolumeSource(source *core.VolumeSource, fldPath *field.Path, volName string) field.ErrorList {
numVolumes := 0
allErrs := field.ErrorList{}
if source.EmptyDir != nil {
@@ -395,7 +405,7 @@ func validateVolumeSource(source *api.VolumeSource, fldPath *field.Path, volName
allErrs = append(allErrs, field.Forbidden(fldPath.Child("emptyDir").Child("sizeLimit"), "SizeLimit field must be a valid resource quantity"))
}
}
- if !utilfeature.DefaultFeatureGate.Enabled(features.HugePages) && source.EmptyDir.Medium == api.StorageMediumHugePages {
+ if !utilfeature.DefaultFeatureGate.Enabled(features.HugePages) && source.EmptyDir.Medium == core.StorageMediumHugePages {
allErrs = append(allErrs, field.Forbidden(fldPath.Child("emptyDir").Child("medium"), "HugePages medium is disabled by feature-gate for EmptyDir volumes"))
}
}
@@ -621,7 +631,7 @@ func validateVolumeSource(source *api.VolumeSource, fldPath *field.Path, volName
return allErrs
}
-func validateHostPathVolumeSource(hostPath *api.HostPathVolumeSource, fldPath *field.Path) field.ErrorList {
+func validateHostPathVolumeSource(hostPath *core.HostPathVolumeSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(hostPath.Path) == 0 {
allErrs = append(allErrs, field.Required(fldPath.Child("path"), ""))
@@ -633,7 +643,7 @@ func validateHostPathVolumeSource(hostPath *api.HostPathVolumeSource, fldPath *f
return allErrs
}
-func validateGitRepoVolumeSource(gitRepo *api.GitRepoVolumeSource, fldPath *field.Path) field.ErrorList {
+func validateGitRepoVolumeSource(gitRepo *core.GitRepoVolumeSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(gitRepo.Repository) == 0 {
allErrs = append(allErrs, field.Required(fldPath.Child("repository"), ""))
@@ -644,7 +654,7 @@ func validateGitRepoVolumeSource(gitRepo *api.GitRepoVolumeSource, fldPath *fiel
return allErrs
}
-func validateISCSIVolumeSource(iscsi *api.ISCSIVolumeSource, fldPath *field.Path) field.ErrorList {
+func validateISCSIVolumeSource(iscsi *core.ISCSIVolumeSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(iscsi.TargetPortal) == 0 {
allErrs = append(allErrs, field.Required(fldPath.Child("targetPortal"), ""))
@@ -684,7 +694,7 @@ func validateISCSIVolumeSource(iscsi *api.ISCSIVolumeSource, fldPath *field.Path
return allErrs
}
-func validateFCVolumeSource(fc *api.FCVolumeSource, fldPath *field.Path) field.ErrorList {
+func validateFCVolumeSource(fc *core.FCVolumeSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(fc.TargetWWNs) < 1 && len(fc.WWIDs) < 1 {
allErrs = append(allErrs, field.Required(fldPath.Child("targetWWNs"), "must specify either targetWWNs or wwids, but not both"))
@@ -706,7 +716,7 @@ func validateFCVolumeSource(fc *api.FCVolumeSource, fldPath *field.Path) field.E
return allErrs
}
-func validateGCEPersistentDiskVolumeSource(pd *api.GCEPersistentDiskVolumeSource, fldPath *field.Path) field.ErrorList {
+func validateGCEPersistentDiskVolumeSource(pd *core.GCEPersistentDiskVolumeSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(pd.PDName) == 0 {
allErrs = append(allErrs, field.Required(fldPath.Child("pdName"), ""))
@@ -717,7 +727,7 @@ func validateGCEPersistentDiskVolumeSource(pd *api.GCEPersistentDiskVolumeSource
return allErrs
}
-func validateAWSElasticBlockStoreVolumeSource(PD *api.AWSElasticBlockStoreVolumeSource, fldPath *field.Path) field.ErrorList {
+func validateAWSElasticBlockStoreVolumeSource(PD *core.AWSElasticBlockStoreVolumeSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(PD.VolumeID) == 0 {
allErrs = append(allErrs, field.Required(fldPath.Child("volumeID"), ""))
@@ -728,7 +738,7 @@ func validateAWSElasticBlockStoreVolumeSource(PD *api.AWSElasticBlockStoreVolume
return allErrs
}
-func validateSecretVolumeSource(secretSource *api.SecretVolumeSource, fldPath *field.Path) field.ErrorList {
+func validateSecretVolumeSource(secretSource *core.SecretVolumeSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(secretSource.SecretName) == 0 {
allErrs = append(allErrs, field.Required(fldPath.Child("secretName"), ""))
@@ -747,7 +757,7 @@ func validateSecretVolumeSource(secretSource *api.SecretVolumeSource, fldPath *f
return allErrs
}
-func validateConfigMapVolumeSource(configMapSource *api.ConfigMapVolumeSource, fldPath *field.Path) field.ErrorList {
+func validateConfigMapVolumeSource(configMapSource *core.ConfigMapVolumeSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(configMapSource.Name) == 0 {
allErrs = append(allErrs, field.Required(fldPath.Child("name"), ""))
@@ -766,7 +776,7 @@ func validateConfigMapVolumeSource(configMapSource *api.ConfigMapVolumeSource, f
return allErrs
}
-func validateKeyToPath(kp *api.KeyToPath, fldPath *field.Path) field.ErrorList {
+func validateKeyToPath(kp *core.KeyToPath, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(kp.Key) == 0 {
allErrs = append(allErrs, field.Required(fldPath.Child("key"), ""))
@@ -782,7 +792,7 @@ func validateKeyToPath(kp *api.KeyToPath, fldPath *field.Path) field.ErrorList {
return allErrs
}
-func validatePersistentClaimVolumeSource(claim *api.PersistentVolumeClaimVolumeSource, fldPath *field.Path) field.ErrorList {
+func validatePersistentClaimVolumeSource(claim *core.PersistentVolumeClaimVolumeSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(claim.ClaimName) == 0 {
allErrs = append(allErrs, field.Required(fldPath.Child("claimName"), ""))
@@ -790,7 +800,7 @@ func validatePersistentClaimVolumeSource(claim *api.PersistentVolumeClaimVolumeS
return allErrs
}
-func validateNFSVolumeSource(nfs *api.NFSVolumeSource, fldPath *field.Path) field.ErrorList {
+func validateNFSVolumeSource(nfs *core.NFSVolumeSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(nfs.Server) == 0 {
allErrs = append(allErrs, field.Required(fldPath.Child("server"), ""))
@@ -804,7 +814,7 @@ func validateNFSVolumeSource(nfs *api.NFSVolumeSource, fldPath *field.Path) fiel
return allErrs
}
-func validateQuobyteVolumeSource(quobyte *api.QuobyteVolumeSource, fldPath *field.Path) field.ErrorList {
+func validateQuobyteVolumeSource(quobyte *core.QuobyteVolumeSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(quobyte.Registry) == 0 {
allErrs = append(allErrs, field.Required(fldPath.Child("registry"), "must be a host:port pair or multiple pairs separated by commas"))
@@ -822,7 +832,7 @@ func validateQuobyteVolumeSource(quobyte *api.QuobyteVolumeSource, fldPath *fiel
return allErrs
}
-func validateGlusterfsVolumeSource(glusterfs *api.GlusterfsVolumeSource, fldPath *field.Path) field.ErrorList {
+func validateGlusterfsVolumeSource(glusterfs *core.GlusterfsVolumeSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(glusterfs.EndpointsName) == 0 {
allErrs = append(allErrs, field.Required(fldPath.Child("endpoints"), ""))
@@ -833,7 +843,7 @@ func validateGlusterfsVolumeSource(glusterfs *api.GlusterfsVolumeSource, fldPath
return allErrs
}
-func validateFlockerVolumeSource(flocker *api.FlockerVolumeSource, fldPath *field.Path) field.ErrorList {
+func validateFlockerVolumeSource(flocker *core.FlockerVolumeSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(flocker.DatasetName) == 0 && len(flocker.DatasetUUID) == 0 {
//TODO: consider adding a RequiredOneOf() error for this and similar cases
@@ -855,7 +865,7 @@ var validDownwardAPIFieldPathExpressions = sets.NewString(
"metadata.annotations",
"metadata.uid")
-func validateDownwardAPIVolumeFile(file *api.DownwardAPIVolumeFile, fldPath *field.Path) field.ErrorList {
+func validateDownwardAPIVolumeFile(file *core.DownwardAPIVolumeFile, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(file.Path) == 0 {
@@ -879,7 +889,7 @@ func validateDownwardAPIVolumeFile(file *api.DownwardAPIVolumeFile, fldPath *fie
return allErrs
}
-func validateDownwardAPIVolumeSource(downwardAPIVolume *api.DownwardAPIVolumeSource, fldPath *field.Path) field.ErrorList {
+func validateDownwardAPIVolumeSource(downwardAPIVolume *core.DownwardAPIVolumeSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
downwardAPIMode := downwardAPIVolume.DefaultMode
@@ -893,7 +903,7 @@ func validateDownwardAPIVolumeSource(downwardAPIVolume *api.DownwardAPIVolumeSou
return allErrs
}
-func validateProjectionSources(projection *api.ProjectedVolumeSource, projectionMode *int32, fldPath *field.Path) field.ErrorList {
+func validateProjectionSources(projection *core.ProjectedVolumeSource, projectionMode *int32, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
allPaths := sets.String{}
@@ -969,7 +979,7 @@ func validateProjectionSources(projection *api.ProjectedVolumeSource, projection
return allErrs
}
-func validateProjectedVolumeSource(projection *api.ProjectedVolumeSource, fldPath *field.Path) field.ErrorList {
+func validateProjectedVolumeSource(projection *core.ProjectedVolumeSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
projectionMode := projection.DefaultMode
@@ -982,16 +992,16 @@ func validateProjectedVolumeSource(projection *api.ProjectedVolumeSource, fldPat
}
var supportedHostPathTypes = sets.NewString(
- string(api.HostPathUnset),
- string(api.HostPathDirectoryOrCreate),
- string(api.HostPathDirectory),
- string(api.HostPathFileOrCreate),
- string(api.HostPathFile),
- string(api.HostPathSocket),
- string(api.HostPathCharDev),
- string(api.HostPathBlockDev))
+ string(core.HostPathUnset),
+ string(core.HostPathDirectoryOrCreate),
+ string(core.HostPathDirectory),
+ string(core.HostPathFileOrCreate),
+ string(core.HostPathFile),
+ string(core.HostPathSocket),
+ string(core.HostPathCharDev),
+ string(core.HostPathBlockDev))
-func validateHostPathType(hostPathType *api.HostPathType, fldPath *field.Path) field.ErrorList {
+func validateHostPathType(hostPathType *core.HostPathType, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if hostPathType != nil && !supportedHostPathTypes.Has(string(*hostPathType)) {
@@ -1033,7 +1043,7 @@ func validatePathNoBacksteps(targetPath string, fldPath *field.Path) field.Error
// validateMountPropagation verifies that MountPropagation field is valid and
// allowed for given container.
-func validateMountPropagation(mountPropagation *api.MountPropagationMode, container *api.Container, fldPath *field.Path) field.ErrorList {
+func validateMountPropagation(mountPropagation *core.MountPropagationMode, container *core.Container, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if mountPropagation == nil {
@@ -1044,7 +1054,7 @@ func validateMountPropagation(mountPropagation *api.MountPropagationMode, contai
return allErrs
}
- supportedMountPropagations := sets.NewString(string(api.MountPropagationBidirectional), string(api.MountPropagationHostToContainer))
+ supportedMountPropagations := sets.NewString(string(core.MountPropagationBidirectional), string(core.MountPropagationHostToContainer))
if !supportedMountPropagations.Has(string(*mountPropagation)) {
allErrs = append(allErrs, field.NotSupported(fldPath, *mountPropagation, supportedMountPropagations.List()))
}
@@ -1057,7 +1067,7 @@ func validateMountPropagation(mountPropagation *api.MountPropagationMode, contai
}
privileged := container.SecurityContext != nil && container.SecurityContext.Privileged != nil && *container.SecurityContext.Privileged
- if *mountPropagation == api.MountPropagationBidirectional && !privileged {
+ if *mountPropagation == core.MountPropagationBidirectional && !privileged {
allErrs = append(allErrs, field.Forbidden(fldPath, "Bidirectional mount propagation is available only to privileged containers"))
}
return allErrs
@@ -1077,7 +1087,7 @@ func validateLocalNonReservedPath(targetPath string, fldPath *field.Path) field.
return allErrs
}
-func validateRBDVolumeSource(rbd *api.RBDVolumeSource, fldPath *field.Path) field.ErrorList {
+func validateRBDVolumeSource(rbd *core.RBDVolumeSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(rbd.CephMonitors) == 0 {
allErrs = append(allErrs, field.Required(fldPath.Child("monitors"), ""))
@@ -1088,7 +1098,7 @@ func validateRBDVolumeSource(rbd *api.RBDVolumeSource, fldPath *field.Path) fiel
return allErrs
}
-func validateRBDPersistentVolumeSource(rbd *api.RBDPersistentVolumeSource, fldPath *field.Path) field.ErrorList {
+func validateRBDPersistentVolumeSource(rbd *core.RBDPersistentVolumeSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(rbd.CephMonitors) == 0 {
allErrs = append(allErrs, field.Required(fldPath.Child("monitors"), ""))
@@ -1099,7 +1109,7 @@ func validateRBDPersistentVolumeSource(rbd *api.RBDPersistentVolumeSource, fldPa
return allErrs
}
-func validateCinderVolumeSource(cd *api.CinderVolumeSource, fldPath *field.Path) field.ErrorList {
+func validateCinderVolumeSource(cd *core.CinderVolumeSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(cd.VolumeID) == 0 {
allErrs = append(allErrs, field.Required(fldPath.Child("volumeID"), ""))
@@ -1107,7 +1117,7 @@ func validateCinderVolumeSource(cd *api.CinderVolumeSource, fldPath *field.Path)
return allErrs
}
-func validateCephFSVolumeSource(cephfs *api.CephFSVolumeSource, fldPath *field.Path) field.ErrorList {
+func validateCephFSVolumeSource(cephfs *core.CephFSVolumeSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(cephfs.Monitors) == 0 {
allErrs = append(allErrs, field.Required(fldPath.Child("monitors"), ""))
@@ -1115,7 +1125,7 @@ func validateCephFSVolumeSource(cephfs *api.CephFSVolumeSource, fldPath *field.P
return allErrs
}
-func validateCephFSPersistentVolumeSource(cephfs *api.CephFSPersistentVolumeSource, fldPath *field.Path) field.ErrorList {
+func validateCephFSPersistentVolumeSource(cephfs *core.CephFSPersistentVolumeSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(cephfs.Monitors) == 0 {
allErrs = append(allErrs, field.Required(fldPath.Child("monitors"), ""))
@@ -1123,7 +1133,7 @@ func validateCephFSPersistentVolumeSource(cephfs *api.CephFSPersistentVolumeSour
return allErrs
}
-func validateFlexVolumeSource(fv *api.FlexVolumeSource, fldPath *field.Path) field.ErrorList {
+func validateFlexVolumeSource(fv *core.FlexVolumeSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(fv.Driver) == 0 {
allErrs = append(allErrs, field.Required(fldPath.Child("driver"), ""))
@@ -1144,7 +1154,7 @@ func validateFlexVolumeSource(fv *api.FlexVolumeSource, fldPath *field.Path) fie
return allErrs
}
-func validateAzureFile(azure *api.AzureFileVolumeSource, fldPath *field.Path) field.ErrorList {
+func validateAzureFile(azure *core.AzureFileVolumeSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if azure.SecretName == "" {
allErrs = append(allErrs, field.Required(fldPath.Child("secretName"), ""))
@@ -1155,7 +1165,7 @@ func validateAzureFile(azure *api.AzureFileVolumeSource, fldPath *field.Path) fi
return allErrs
}
-func validateAzureFilePV(azure *api.AzureFilePersistentVolumeSource, fldPath *field.Path) field.ErrorList {
+func validateAzureFilePV(azure *core.AzureFilePersistentVolumeSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if azure.SecretName == "" {
allErrs = append(allErrs, field.Required(fldPath.Child("secretName"), ""))
@@ -1171,9 +1181,9 @@ func validateAzureFilePV(azure *api.AzureFilePersistentVolumeSource, fldPath *fi
return allErrs
}
-func validateAzureDisk(azure *api.AzureDiskVolumeSource, fldPath *field.Path) field.ErrorList {
- var supportedCachingModes = sets.NewString(string(api.AzureDataDiskCachingNone), string(api.AzureDataDiskCachingReadOnly), string(api.AzureDataDiskCachingReadWrite))
- var supportedDiskKinds = sets.NewString(string(api.AzureSharedBlobDisk), string(api.AzureDedicatedBlobDisk), string(api.AzureManagedDisk))
+func validateAzureDisk(azure *core.AzureDiskVolumeSource, fldPath *field.Path) field.ErrorList {
+ var supportedCachingModes = sets.NewString(string(core.AzureDataDiskCachingNone), string(core.AzureDataDiskCachingReadOnly), string(core.AzureDataDiskCachingReadWrite))
+ var supportedDiskKinds = sets.NewString(string(core.AzureSharedBlobDisk), string(core.AzureDedicatedBlobDisk), string(core.AzureManagedDisk))
diskUriSupportedManaged := []string{"/subscriptions/{sub-id}/resourcegroups/{group-name}/providers/microsoft.compute/disks/{disk-id}"}
diskUriSupportedblob := []string{"https://{account-name}.blob.core.windows.net/{container-name}/{disk-name}.vhd"}
@@ -1196,18 +1206,18 @@ func validateAzureDisk(azure *api.AzureDiskVolumeSource, fldPath *field.Path) fi
}
// validate that DiskUri is the correct format
- if azure.Kind != nil && *azure.Kind == api.AzureManagedDisk && strings.Index(azure.DataDiskURI, "/subscriptions/") != 0 {
+ if azure.Kind != nil && *azure.Kind == core.AzureManagedDisk && strings.Index(azure.DataDiskURI, "/subscriptions/") != 0 {
allErrs = append(allErrs, field.NotSupported(fldPath.Child("diskURI"), azure.DataDiskURI, diskUriSupportedManaged))
}
- if azure.Kind != nil && *azure.Kind != api.AzureManagedDisk && strings.Index(azure.DataDiskURI, "https://") != 0 {
+ if azure.Kind != nil && *azure.Kind != core.AzureManagedDisk && strings.Index(azure.DataDiskURI, "https://") != 0 {
allErrs = append(allErrs, field.NotSupported(fldPath.Child("diskURI"), azure.DataDiskURI, diskUriSupportedblob))
}
return allErrs
}
-func validateVsphereVolumeSource(cd *api.VsphereVirtualDiskVolumeSource, fldPath *field.Path) field.ErrorList {
+func validateVsphereVolumeSource(cd *core.VsphereVirtualDiskVolumeSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(cd.VolumePath) == 0 {
allErrs = append(allErrs, field.Required(fldPath.Child("volumePath"), ""))
@@ -1215,7 +1225,7 @@ func validateVsphereVolumeSource(cd *api.VsphereVirtualDiskVolumeSource, fldPath
return allErrs
}
-func validatePhotonPersistentDiskVolumeSource(cd *api.PhotonPersistentDiskVolumeSource, fldPath *field.Path) field.ErrorList {
+func validatePhotonPersistentDiskVolumeSource(cd *core.PhotonPersistentDiskVolumeSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(cd.PdID) == 0 {
allErrs = append(allErrs, field.Required(fldPath.Child("pdID"), ""))
@@ -1223,7 +1233,7 @@ func validatePhotonPersistentDiskVolumeSource(cd *api.PhotonPersistentDiskVolume
return allErrs
}
-func validatePortworxVolumeSource(pwx *api.PortworxVolumeSource, fldPath *field.Path) field.ErrorList {
+func validatePortworxVolumeSource(pwx *core.PortworxVolumeSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(pwx.VolumeID) == 0 {
allErrs = append(allErrs, field.Required(fldPath.Child("volumeID"), ""))
@@ -1231,7 +1241,7 @@ func validatePortworxVolumeSource(pwx *api.PortworxVolumeSource, fldPath *field.
return allErrs
}
-func validateScaleIOVolumeSource(sio *api.ScaleIOVolumeSource, fldPath *field.Path) field.ErrorList {
+func validateScaleIOVolumeSource(sio *core.ScaleIOVolumeSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if sio.Gateway == "" {
allErrs = append(allErrs, field.Required(fldPath.Child("gateway"), ""))
@@ -1245,7 +1255,7 @@ func validateScaleIOVolumeSource(sio *api.ScaleIOVolumeSource, fldPath *field.Pa
return allErrs
}
-func validateScaleIOPersistentVolumeSource(sio *api.ScaleIOPersistentVolumeSource, fldPath *field.Path) field.ErrorList {
+func validateScaleIOPersistentVolumeSource(sio *core.ScaleIOPersistentVolumeSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if sio.Gateway == "" {
allErrs = append(allErrs, field.Required(fldPath.Child("gateway"), ""))
@@ -1259,7 +1269,7 @@ func validateScaleIOPersistentVolumeSource(sio *api.ScaleIOPersistentVolumeSourc
return allErrs
}
-func validateLocalVolumeSource(ls *api.LocalVolumeSource, fldPath *field.Path) field.ErrorList {
+func validateLocalVolumeSource(ls *core.LocalVolumeSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if ls.Path == "" {
allErrs = append(allErrs, field.Required(fldPath.Child("path"), ""))
@@ -1270,7 +1280,7 @@ func validateLocalVolumeSource(ls *api.LocalVolumeSource, fldPath *field.Path) f
return allErrs
}
-func validateStorageOSVolumeSource(storageos *api.StorageOSVolumeSource, fldPath *field.Path) field.ErrorList {
+func validateStorageOSVolumeSource(storageos *core.StorageOSVolumeSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(storageos.VolumeName) == 0 {
allErrs = append(allErrs, field.Required(fldPath.Child("volumeName"), ""))
@@ -1288,7 +1298,7 @@ func validateStorageOSVolumeSource(storageos *api.StorageOSVolumeSource, fldPath
return allErrs
}
-func validateStorageOSPersistentVolumeSource(storageos *api.StorageOSPersistentVolumeSource, fldPath *field.Path) field.ErrorList {
+func validateStorageOSPersistentVolumeSource(storageos *core.StorageOSPersistentVolumeSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(storageos.VolumeName) == 0 {
allErrs = append(allErrs, field.Required(fldPath.Child("volumeName"), ""))
@@ -1313,11 +1323,11 @@ func validateStorageOSPersistentVolumeSource(storageos *api.StorageOSPersistentV
// PersistentVolumeName object.
var ValidatePersistentVolumeName = NameIsDNSSubdomain
-var supportedAccessModes = sets.NewString(string(api.ReadWriteOnce), string(api.ReadOnlyMany), string(api.ReadWriteMany))
+var supportedAccessModes = sets.NewString(string(core.ReadWriteOnce), string(core.ReadOnlyMany), string(core.ReadWriteMany))
-var supportedReclaimPolicy = sets.NewString(string(api.PersistentVolumeReclaimDelete), string(api.PersistentVolumeReclaimRecycle), string(api.PersistentVolumeReclaimRetain))
+var supportedReclaimPolicy = sets.NewString(string(core.PersistentVolumeReclaimDelete), string(core.PersistentVolumeReclaimRecycle), string(core.PersistentVolumeReclaimRetain))
-func ValidatePersistentVolume(pv *api.PersistentVolume) field.ErrorList {
+func ValidatePersistentVolume(pv *core.PersistentVolume) field.ErrorList {
metaPath := field.NewPath("metadata")
allErrs := ValidateObjectMeta(&pv.ObjectMeta, false, ValidatePersistentVolumeName, metaPath)
@@ -1335,12 +1345,13 @@ func ValidatePersistentVolume(pv *api.PersistentVolume) field.ErrorList {
allErrs = append(allErrs, field.Required(specPath.Child("capacity"), ""))
}
- if _, ok := pv.Spec.Capacity[api.ResourceStorage]; !ok || len(pv.Spec.Capacity) > 1 {
- allErrs = append(allErrs, field.NotSupported(specPath.Child("capacity"), pv.Spec.Capacity, []string{string(api.ResourceStorage)}))
+ if _, ok := pv.Spec.Capacity[core.ResourceStorage]; !ok || len(pv.Spec.Capacity) > 1 {
+ allErrs = append(allErrs, field.NotSupported(specPath.Child("capacity"), pv.Spec.Capacity, []string{string(core.ResourceStorage)}))
}
capPath := specPath.Child("capacity")
for r, qty := range pv.Spec.Capacity {
allErrs = append(allErrs, validateBasicResource(qty, capPath.Key(string(r)))...)
+ allErrs = append(allErrs, ValidatePositiveQuantityValue(qty, capPath.Key(string(r)))...)
}
if len(string(pv.Spec.PersistentVolumeReclaimPolicy)) > 0 {
if !supportedReclaimPolicy.Has(string(pv.Spec.PersistentVolumeReclaimPolicy)) {
@@ -1536,7 +1547,7 @@ func ValidatePersistentVolume(pv *api.PersistentVolume) field.ErrorList {
}
// do not allow hostPath mounts of '/' to have a 'recycle' reclaim policy
- if pv.Spec.HostPath != nil && path.Clean(pv.Spec.HostPath.Path) == "/" && pv.Spec.PersistentVolumeReclaimPolicy == api.PersistentVolumeReclaimRecycle {
+ if pv.Spec.HostPath != nil && path.Clean(pv.Spec.HostPath.Path) == "/" && pv.Spec.PersistentVolumeReclaimPolicy == core.PersistentVolumeReclaimRecycle {
allErrs = append(allErrs, field.Forbidden(specPath.Child("persistentVolumeReclaimPolicy"), "may not be 'recycle' for a hostPath mount of '/'"))
}
@@ -1551,7 +1562,7 @@ func ValidatePersistentVolume(pv *api.PersistentVolume) field.ErrorList {
// ValidatePersistentVolumeUpdate tests to see if the update is legal for an end user to make.
// newPv is updated with fields that cannot be changed.
-func ValidatePersistentVolumeUpdate(newPv, oldPv *api.PersistentVolume) field.ErrorList {
+func ValidatePersistentVolumeUpdate(newPv, oldPv *core.PersistentVolume) field.ErrorList {
allErrs := field.ErrorList{}
allErrs = ValidatePersistentVolume(newPv)
@@ -1566,7 +1577,7 @@ func ValidatePersistentVolumeUpdate(newPv, oldPv *api.PersistentVolume) field.Er
// ValidatePersistentVolumeStatusUpdate tests to see if the status update is legal for an end user to make.
// newPv is updated with fields that cannot be changed.
-func ValidatePersistentVolumeStatusUpdate(newPv, oldPv *api.PersistentVolume) field.ErrorList {
+func ValidatePersistentVolumeStatusUpdate(newPv, oldPv *core.PersistentVolume) field.ErrorList {
allErrs := ValidateObjectMetaUpdate(&newPv.ObjectMeta, &oldPv.ObjectMeta, field.NewPath("metadata"))
if len(newPv.ResourceVersion) == 0 {
allErrs = append(allErrs, field.Required(field.NewPath("resourceVersion"), ""))
@@ -1576,14 +1587,14 @@ func ValidatePersistentVolumeStatusUpdate(newPv, oldPv *api.PersistentVolume) fi
}
// ValidatePersistentVolumeClaim validates a PersistentVolumeClaim
-func ValidatePersistentVolumeClaim(pvc *api.PersistentVolumeClaim) field.ErrorList {
+func ValidatePersistentVolumeClaim(pvc *core.PersistentVolumeClaim) field.ErrorList {
allErrs := ValidateObjectMeta(&pvc.ObjectMeta, true, ValidatePersistentVolumeName, field.NewPath("metadata"))
allErrs = append(allErrs, ValidatePersistentVolumeClaimSpec(&pvc.Spec, field.NewPath("spec"))...)
return allErrs
}
// ValidatePersistentVolumeClaimSpec validates a PersistentVolumeClaimSpec
-func ValidatePersistentVolumeClaimSpec(spec *api.PersistentVolumeClaimSpec, fldPath *field.Path) field.ErrorList {
+func ValidatePersistentVolumeClaimSpec(spec *core.PersistentVolumeClaimSpec, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(spec.AccessModes) == 0 {
allErrs = append(allErrs, field.Required(fldPath.Child("accessModes"), "at least 1 access mode is required"))
@@ -1592,15 +1603,16 @@ func ValidatePersistentVolumeClaimSpec(spec *api.PersistentVolumeClaimSpec, fldP
allErrs = append(allErrs, unversionedvalidation.ValidateLabelSelector(spec.Selector, fldPath.Child("selector"))...)
}
for _, mode := range spec.AccessModes {
- if mode != api.ReadWriteOnce && mode != api.ReadOnlyMany && mode != api.ReadWriteMany {
+ if mode != core.ReadWriteOnce && mode != core.ReadOnlyMany && mode != core.ReadWriteMany {
allErrs = append(allErrs, field.NotSupported(fldPath.Child("accessModes"), mode, supportedAccessModes.List()))
}
}
- storageValue, ok := spec.Resources.Requests[api.ResourceStorage]
+ storageValue, ok := spec.Resources.Requests[core.ResourceStorage]
if !ok {
- allErrs = append(allErrs, field.Required(fldPath.Child("resources").Key(string(api.ResourceStorage)), ""))
+ allErrs = append(allErrs, field.Required(fldPath.Child("resources").Key(string(core.ResourceStorage)), ""))
} else {
- allErrs = append(allErrs, ValidateResourceQuantityValue(string(api.ResourceStorage), storageValue, fldPath.Child("resources").Key(string(api.ResourceStorage)))...)
+ allErrs = append(allErrs, ValidateResourceQuantityValue(string(core.ResourceStorage), storageValue, fldPath.Child("resources").Key(string(core.ResourceStorage)))...)
+ allErrs = append(allErrs, ValidatePositiveQuantityValue(storageValue, fldPath.Child("resources").Key(string(core.ResourceStorage)))...)
}
if spec.StorageClassName != nil && len(*spec.StorageClassName) > 0 {
@@ -1612,7 +1624,7 @@ func ValidatePersistentVolumeClaimSpec(spec *api.PersistentVolumeClaimSpec, fldP
}
// ValidatePersistentVolumeClaimUpdate validates an update to a PersistentVolumeClaim
-func ValidatePersistentVolumeClaimUpdate(newPvc, oldPvc *api.PersistentVolumeClaim) field.ErrorList {
+func ValidatePersistentVolumeClaimUpdate(newPvc, oldPvc *core.PersistentVolumeClaim) field.ErrorList {
allErrs := ValidateObjectMetaUpdate(&newPvc.ObjectMeta, &oldPvc.ObjectMeta, field.NewPath("metadata"))
allErrs = append(allErrs, ValidatePersistentVolumeClaim(newPvc)...)
// PVController needs to update PVC.Spec w/ VolumeName.
@@ -1628,7 +1640,7 @@ func ValidatePersistentVolumeClaimUpdate(newPvc, oldPvc *api.PersistentVolumeCla
newPVCSpecCopy := newPvc.Spec.DeepCopy()
// lets make sure storage values are same.
- if newPvc.Status.Phase == api.ClaimBound && newPVCSpecCopy.Resources.Requests != nil {
+ if newPvc.Status.Phase == core.ClaimBound && newPVCSpecCopy.Resources.Requests != nil {
newPVCSpecCopy.Resources.Requests["storage"] = oldPvc.Spec.Resources.Requests["storage"]
}
@@ -1659,7 +1671,7 @@ func ValidatePersistentVolumeClaimUpdate(newPvc, oldPvc *api.PersistentVolumeCla
}
// ValidatePersistentVolumeClaimStatusUpdate validates an update to status of a PersistentVolumeClaim
-func ValidatePersistentVolumeClaimStatusUpdate(newPvc, oldPvc *api.PersistentVolumeClaim) field.ErrorList {
+func ValidatePersistentVolumeClaimStatusUpdate(newPvc, oldPvc *core.PersistentVolumeClaim) field.ErrorList {
allErrs := ValidateObjectMetaUpdate(&newPvc.ObjectMeta, &oldPvc.ObjectMeta, field.NewPath("metadata"))
if len(newPvc.ResourceVersion) == 0 {
allErrs = append(allErrs, field.Required(field.NewPath("resourceVersion"), ""))
@@ -1679,9 +1691,9 @@ func ValidatePersistentVolumeClaimStatusUpdate(newPvc, oldPvc *api.PersistentVol
return allErrs
}
-var supportedPortProtocols = sets.NewString(string(api.ProtocolTCP), string(api.ProtocolUDP))
+var supportedPortProtocols = sets.NewString(string(core.ProtocolTCP), string(core.ProtocolUDP))
-func validateContainerPorts(ports []api.ContainerPort, fldPath *field.Path) field.ErrorList {
+func validateContainerPorts(ports []core.ContainerPort, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
allNames := sets.String{}
@@ -1720,7 +1732,7 @@ func validateContainerPorts(ports []api.ContainerPort, fldPath *field.Path) fiel
}
// ValidateEnv validates env vars
-func ValidateEnv(vars []api.EnvVar, fldPath *field.Path) field.ErrorList {
+func ValidateEnv(vars []core.EnvVar, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
for i, ev := range vars {
@@ -1740,7 +1752,7 @@ func ValidateEnv(vars []api.EnvVar, fldPath *field.Path) field.ErrorList {
var validFieldPathExpressionsEnv = sets.NewString("metadata.name", "metadata.namespace", "metadata.uid", "spec.nodeName", "spec.serviceAccountName", "status.hostIP", "status.podIP")
var validContainerResourceFieldPathExpressions = sets.NewString("limits.cpu", "limits.memory", "limits.ephemeral-storage", "requests.cpu", "requests.memory", "requests.ephemeral-storage")
-func validateEnvVarValueFrom(ev api.EnvVar, fldPath *field.Path) field.ErrorList {
+func validateEnvVarValueFrom(ev core.EnvVar, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if ev.ValueFrom == nil {
@@ -1779,7 +1791,7 @@ func validateEnvVarValueFrom(ev api.EnvVar, fldPath *field.Path) field.ErrorList
return allErrs
}
-func validateObjectFieldSelector(fs *api.ObjectFieldSelector, expressions *sets.String, fldPath *field.Path) field.ErrorList {
+func validateObjectFieldSelector(fs *core.ObjectFieldSelector, expressions *sets.String, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(fs.APIVersion) == 0 {
@@ -1805,7 +1817,7 @@ func fsResourceIsEphemeralStorage(resource string) bool {
return false
}
-func validateContainerResourceFieldSelector(fs *api.ResourceFieldSelector, expressions *sets.String, fldPath *field.Path, volume bool) field.ErrorList {
+func validateContainerResourceFieldSelector(fs *core.ResourceFieldSelector, expressions *sets.String, fldPath *field.Path, volume bool) field.ErrorList {
allErrs := field.ErrorList{}
if volume && len(fs.ContainerName) == 0 {
@@ -1821,7 +1833,7 @@ func validateContainerResourceFieldSelector(fs *api.ResourceFieldSelector, expre
return allErrs
}
-func ValidateEnvFrom(vars []api.EnvFromSource, fldPath *field.Path) field.ErrorList {
+func ValidateEnvFrom(vars []core.EnvFromSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
for i, ev := range vars {
idxPath := fldPath.Index(i)
@@ -1850,7 +1862,7 @@ func ValidateEnvFrom(vars []api.EnvFromSource, fldPath *field.Path) field.ErrorL
return allErrs
}
-func validateConfigMapEnvSource(configMapSource *api.ConfigMapEnvSource, fldPath *field.Path) field.ErrorList {
+func validateConfigMapEnvSource(configMapSource *core.ConfigMapEnvSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(configMapSource.Name) == 0 {
allErrs = append(allErrs, field.Required(fldPath.Child("name"), ""))
@@ -1862,7 +1874,7 @@ func validateConfigMapEnvSource(configMapSource *api.ConfigMapEnvSource, fldPath
return allErrs
}
-func validateSecretEnvSource(secretSource *api.SecretEnvSource, fldPath *field.Path) field.ErrorList {
+func validateSecretEnvSource(secretSource *core.SecretEnvSource, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(secretSource.Name) == 0 {
allErrs = append(allErrs, field.Required(fldPath.Child("name"), ""))
@@ -1901,7 +1913,7 @@ func validateContainerResourceDivisor(rName string, divisor resource.Quantity, f
return allErrs
}
-func validateConfigMapKeySelector(s *api.ConfigMapKeySelector, fldPath *field.Path) field.ErrorList {
+func validateConfigMapKeySelector(s *core.ConfigMapKeySelector, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
nameFn := ValidateNameFunc(ValidateSecretName)
@@ -1919,7 +1931,7 @@ func validateConfigMapKeySelector(s *api.ConfigMapKeySelector, fldPath *field.Pa
return allErrs
}
-func validateSecretKeySelector(s *api.SecretKeySelector, fldPath *field.Path) field.ErrorList {
+func validateSecretKeySelector(s *core.SecretKeySelector, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
nameFn := ValidateNameFunc(ValidateSecretName)
@@ -1937,7 +1949,7 @@ func validateSecretKeySelector(s *api.SecretKeySelector, fldPath *field.Path) fi
return allErrs
}
-func ValidateVolumeMounts(mounts []api.VolumeMount, volumes sets.String, container *api.Container, fldPath *field.Path) field.ErrorList {
+func ValidateVolumeMounts(mounts []core.VolumeMount, volumes sets.String, container *core.Container, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
mountpoints := sets.NewString()
@@ -1973,7 +1985,7 @@ func ValidateVolumeMounts(mounts []api.VolumeMount, volumes sets.String, contain
return allErrs
}
-func validateProbe(probe *api.Probe, fldPath *field.Path) field.ErrorList {
+func validateProbe(probe *core.Probe, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if probe == nil {
@@ -1989,18 +2001,18 @@ func validateProbe(probe *api.Probe, fldPath *field.Path) field.ErrorList {
return allErrs
}
-func validateClientIPAffinityConfig(config *api.SessionAffinityConfig, fldPath *field.Path) field.ErrorList {
+func validateClientIPAffinityConfig(config *core.SessionAffinityConfig, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if config == nil {
- allErrs = append(allErrs, field.Required(fldPath, fmt.Sprintf("when session affinity type is %s", api.ServiceAffinityClientIP)))
+ allErrs = append(allErrs, field.Required(fldPath, fmt.Sprintf("when session affinity type is %s", core.ServiceAffinityClientIP)))
return allErrs
}
if config.ClientIP == nil {
- allErrs = append(allErrs, field.Required(fldPath.Child("clientIP"), fmt.Sprintf("when session affinity type is %s", api.ServiceAffinityClientIP)))
+ allErrs = append(allErrs, field.Required(fldPath.Child("clientIP"), fmt.Sprintf("when session affinity type is %s", core.ServiceAffinityClientIP)))
return allErrs
}
if config.ClientIP.TimeoutSeconds == nil {
- allErrs = append(allErrs, field.Required(fldPath.Child("clientIP").Child("timeoutSeconds"), fmt.Sprintf("when session affinity type is %s", api.ServiceAffinityClientIP)))
+ allErrs = append(allErrs, field.Required(fldPath.Child("clientIP").Child("timeoutSeconds"), fmt.Sprintf("when session affinity type is %s", core.ServiceAffinityClientIP)))
return allErrs
}
allErrs = append(allErrs, validateAffinityTimeout(config.ClientIP.TimeoutSeconds, fldPath.Child("clientIP").Child("timeoutSeconds"))...)
@@ -2010,15 +2022,15 @@ func validateClientIPAffinityConfig(config *api.SessionAffinityConfig, fldPath *
func validateAffinityTimeout(timeout *int32, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
- if *timeout <= 0 || *timeout > api.MaxClientIPServiceAffinitySeconds {
- allErrs = append(allErrs, field.Invalid(fldPath, timeout, fmt.Sprintf("must be greater than 0 and less than %d", api.MaxClientIPServiceAffinitySeconds)))
+ if *timeout <= 0 || *timeout > core.MaxClientIPServiceAffinitySeconds {
+ allErrs = append(allErrs, field.Invalid(fldPath, timeout, fmt.Sprintf("must be greater than 0 and less than %d", core.MaxClientIPServiceAffinitySeconds)))
}
return allErrs
}
// AccumulateUniqueHostPorts extracts each HostPort of each Container,
// accumulating the results and returning an error if any ports conflict.
-func AccumulateUniqueHostPorts(containers []api.Container, accumulator *sets.String, fldPath *field.Path) field.ErrorList {
+func AccumulateUniqueHostPorts(containers []core.Container, accumulator *sets.String, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
for ci, ctr := range containers {
@@ -2043,12 +2055,12 @@ func AccumulateUniqueHostPorts(containers []api.Container, accumulator *sets.Str
// checkHostPortConflicts checks for colliding Port.HostPort values across
// a slice of containers.
-func checkHostPortConflicts(containers []api.Container, fldPath *field.Path) field.ErrorList {
+func checkHostPortConflicts(containers []core.Container, fldPath *field.Path) field.ErrorList {
allPorts := sets.String{}
return AccumulateUniqueHostPorts(containers, &allPorts, fldPath)
}
-func validateExecAction(exec *api.ExecAction, fldPath *field.Path) field.ErrorList {
+func validateExecAction(exec *core.ExecAction, fldPath *field.Path) field.ErrorList {
allErrors := field.ErrorList{}
if len(exec.Command) == 0 {
allErrors = append(allErrors, field.Required(fldPath.Child("command"), ""))
@@ -2056,9 +2068,9 @@ func validateExecAction(exec *api.ExecAction, fldPath *field.Path) field.ErrorLi
return allErrors
}
-var supportedHTTPSchemes = sets.NewString(string(api.URISchemeHTTP), string(api.URISchemeHTTPS))
+var supportedHTTPSchemes = sets.NewString(string(core.URISchemeHTTP), string(core.URISchemeHTTPS))
-func validateHTTPGetAction(http *api.HTTPGetAction, fldPath *field.Path) field.ErrorList {
+func validateHTTPGetAction(http *core.HTTPGetAction, fldPath *field.Path) field.ErrorList {
allErrors := field.ErrorList{}
if len(http.Path) == 0 {
allErrors = append(allErrors, field.Required(fldPath.Child("path"), ""))
@@ -2091,11 +2103,11 @@ func ValidatePortNumOrName(port intstr.IntOrString, fldPath *field.Path) field.E
return allErrs
}
-func validateTCPSocketAction(tcp *api.TCPSocketAction, fldPath *field.Path) field.ErrorList {
+func validateTCPSocketAction(tcp *core.TCPSocketAction, fldPath *field.Path) field.ErrorList {
return ValidatePortNumOrName(tcp.Port, fldPath.Child("port"))
}
-func validateHandler(handler *api.Handler, fldPath *field.Path) field.ErrorList {
+func validateHandler(handler *core.Handler, fldPath *field.Path) field.ErrorList {
numHandlers := 0
allErrors := field.ErrorList{}
if handler.Exec != nil {
@@ -2128,7 +2140,7 @@ func validateHandler(handler *api.Handler, fldPath *field.Path) field.ErrorList
return allErrors
}
-func validateLifecycle(lifecycle *api.Lifecycle, fldPath *field.Path) field.ErrorList {
+func validateLifecycle(lifecycle *core.Lifecycle, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if lifecycle.PostStart != nil {
allErrs = append(allErrs, validateHandler(lifecycle.PostStart, fldPath.Child("postStart"))...)
@@ -2139,13 +2151,13 @@ func validateLifecycle(lifecycle *api.Lifecycle, fldPath *field.Path) field.Erro
return allErrs
}
-var supportedPullPolicies = sets.NewString(string(api.PullAlways), string(api.PullIfNotPresent), string(api.PullNever))
+var supportedPullPolicies = sets.NewString(string(core.PullAlways), string(core.PullIfNotPresent), string(core.PullNever))
-func validatePullPolicy(policy api.PullPolicy, fldPath *field.Path) field.ErrorList {
+func validatePullPolicy(policy core.PullPolicy, fldPath *field.Path) field.ErrorList {
allErrors := field.ErrorList{}
switch policy {
- case api.PullAlways, api.PullIfNotPresent, api.PullNever:
+ case core.PullAlways, core.PullIfNotPresent, core.PullNever:
break
case "":
allErrors = append(allErrors, field.Required(fldPath, ""))
@@ -2156,7 +2168,7 @@ func validatePullPolicy(policy api.PullPolicy, fldPath *field.Path) field.ErrorL
return allErrors
}
-func validateInitContainers(containers, otherContainers []api.Container, volumes sets.String, fldPath *field.Path) field.ErrorList {
+func validateInitContainers(containers, otherContainers []core.Container, volumes sets.String, fldPath *field.Path) field.ErrorList {
var allErrs field.ErrorList
if len(containers) > 0 {
allErrs = append(allErrs, validateContainers(containers, volumes, fldPath)...)
@@ -2187,7 +2199,7 @@ func validateInitContainers(containers, otherContainers []api.Container, volumes
return allErrs
}
-func validateContainers(containers []api.Container, volumes sets.String, fldPath *field.Path) field.ErrorList {
+func validateContainers(containers []core.Container, volumes sets.String, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(containers) == 0 {
@@ -2224,7 +2236,7 @@ func validateContainers(containers []api.Container, volumes sets.String, fldPath
}
switch ctr.TerminationMessagePolicy {
- case api.TerminationMessageReadFile, api.TerminationMessageFallbackToLogsOnError:
+ case core.TerminationMessageReadFile, core.TerminationMessageFallbackToLogsOnError:
case "":
allErrs = append(allErrs, field.Required(idxPath.Child("terminationMessagePolicy"), "must be 'File' or 'FallbackToLogsOnError'"))
default:
@@ -2246,36 +2258,36 @@ func validateContainers(containers []api.Container, volumes sets.String, fldPath
return allErrs
}
-func validateRestartPolicy(restartPolicy *api.RestartPolicy, fldPath *field.Path) field.ErrorList {
+func validateRestartPolicy(restartPolicy *core.RestartPolicy, fldPath *field.Path) field.ErrorList {
allErrors := field.ErrorList{}
switch *restartPolicy {
- case api.RestartPolicyAlways, api.RestartPolicyOnFailure, api.RestartPolicyNever:
+ case core.RestartPolicyAlways, core.RestartPolicyOnFailure, core.RestartPolicyNever:
break
case "":
allErrors = append(allErrors, field.Required(fldPath, ""))
default:
- validValues := []string{string(api.RestartPolicyAlways), string(api.RestartPolicyOnFailure), string(api.RestartPolicyNever)}
+ validValues := []string{string(core.RestartPolicyAlways), string(core.RestartPolicyOnFailure), string(core.RestartPolicyNever)}
allErrors = append(allErrors, field.NotSupported(fldPath, *restartPolicy, validValues))
}
return allErrors
}
-func validateDNSPolicy(dnsPolicy *api.DNSPolicy, fldPath *field.Path) field.ErrorList {
+func validateDNSPolicy(dnsPolicy *core.DNSPolicy, fldPath *field.Path) field.ErrorList {
allErrors := field.ErrorList{}
switch *dnsPolicy {
- case api.DNSClusterFirstWithHostNet, api.DNSClusterFirst, api.DNSDefault:
+ case core.DNSClusterFirstWithHostNet, core.DNSClusterFirst, core.DNSDefault:
break
case "":
allErrors = append(allErrors, field.Required(fldPath, ""))
default:
- validValues := []string{string(api.DNSClusterFirstWithHostNet), string(api.DNSClusterFirst), string(api.DNSDefault)}
+ validValues := []string{string(core.DNSClusterFirstWithHostNet), string(core.DNSClusterFirst), string(core.DNSDefault)}
allErrors = append(allErrors, field.NotSupported(fldPath, dnsPolicy, validValues))
}
return allErrors
}
-func validateHostNetwork(hostNetwork bool, containers []api.Container, fldPath *field.Path) field.ErrorList {
+func validateHostNetwork(hostNetwork bool, containers []core.Container, fldPath *field.Path) field.ErrorList {
allErrors := field.ErrorList{}
if hostNetwork {
for i, container := range containers {
@@ -2295,11 +2307,11 @@ func validateHostNetwork(hostNetwork bool, containers []api.Container, fldPath *
// formed. Right now, we only expect name to be set (it's the only field). If
// this ever changes and someone decides to set those fields, we'd like to
// know.
-func validateImagePullSecrets(imagePullSecrets []api.LocalObjectReference, fldPath *field.Path) field.ErrorList {
+func validateImagePullSecrets(imagePullSecrets []core.LocalObjectReference, fldPath *field.Path) field.ErrorList {
allErrors := field.ErrorList{}
for i, currPullSecret := range imagePullSecrets {
idxPath := fldPath.Index(i)
- strippedRef := api.LocalObjectReference{Name: currPullSecret.Name}
+ strippedRef := core.LocalObjectReference{Name: currPullSecret.Name}
if !reflect.DeepEqual(strippedRef, currPullSecret) {
allErrors = append(allErrors, field.Invalid(idxPath, currPullSecret, "only name may be set"))
}
@@ -2308,7 +2320,7 @@ func validateImagePullSecrets(imagePullSecrets []api.LocalObjectReference, fldPa
}
// validateAffinity checks if given affinities are valid
-func validateAffinity(affinity *api.Affinity, fldPath *field.Path) field.ErrorList {
+func validateAffinity(affinity *core.Affinity, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if affinity != nil {
@@ -2337,7 +2349,7 @@ func validateAffinity(affinity *api.Affinity, fldPath *field.Path) field.ErrorLi
return allErrs
}
-func validateTaintEffect(effect *api.TaintEffect, allowEmpty bool, fldPath *field.Path) field.ErrorList {
+func validateTaintEffect(effect *core.TaintEffect, allowEmpty bool, fldPath *field.Path) field.ErrorList {
if !allowEmpty && len(*effect) == 0 {
return field.ErrorList{field.Required(fldPath, "")}
}
@@ -2345,15 +2357,15 @@ func validateTaintEffect(effect *api.TaintEffect, allowEmpty bool, fldPath *fiel
allErrors := field.ErrorList{}
switch *effect {
// TODO: Replace next line with subsequent commented-out line when implement TaintEffectNoScheduleNoAdmit.
- case api.TaintEffectNoSchedule, api.TaintEffectPreferNoSchedule, api.TaintEffectNoExecute:
- // case api.TaintEffectNoSchedule, api.TaintEffectPreferNoSchedule, api.TaintEffectNoScheduleNoAdmit, api.TaintEffectNoExecute:
+ case core.TaintEffectNoSchedule, core.TaintEffectPreferNoSchedule, core.TaintEffectNoExecute:
+ // case core.TaintEffectNoSchedule, core.TaintEffectPreferNoSchedule, core.TaintEffectNoScheduleNoAdmit, core.TaintEffectNoExecute:
default:
validValues := []string{
- string(api.TaintEffectNoSchedule),
- string(api.TaintEffectPreferNoSchedule),
- string(api.TaintEffectNoExecute),
+ string(core.TaintEffectNoSchedule),
+ string(core.TaintEffectPreferNoSchedule),
+ string(core.TaintEffectNoExecute),
// TODO: Uncomment this block when implement TaintEffectNoScheduleNoAdmit.
- // string(api.TaintEffectNoScheduleNoAdmit),
+ // string(core.TaintEffectNoScheduleNoAdmit),
}
allErrors = append(allErrors, field.NotSupported(fldPath, effect, validValues))
}
@@ -2361,7 +2373,7 @@ func validateTaintEffect(effect *api.TaintEffect, allowEmpty bool, fldPath *fiel
}
// validateOnlyAddedTolerations validates updated pod tolerations.
-func validateOnlyAddedTolerations(newTolerations []api.Toleration, oldTolerations []api.Toleration, fldPath *field.Path) field.ErrorList {
+func validateOnlyAddedTolerations(newTolerations []core.Toleration, oldTolerations []core.Toleration, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
for _, old := range oldTolerations {
found := false
@@ -2383,7 +2395,7 @@ func validateOnlyAddedTolerations(newTolerations []api.Toleration, oldToleration
return allErrs
}
-func ValidateHostAliases(hostAliases []api.HostAlias, fldPath *field.Path) field.ErrorList {
+func ValidateHostAliases(hostAliases []core.HostAlias, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
for _, hostAlias := range hostAliases {
if ip := net.ParseIP(hostAlias.IP); ip == nil {
@@ -2397,7 +2409,7 @@ func ValidateHostAliases(hostAliases []api.HostAlias, fldPath *field.Path) field
}
// ValidateTolerations tests if given tolerations have valid data.
-func ValidateTolerations(tolerations []api.Toleration, fldPath *field.Path) field.ErrorList {
+func ValidateTolerations(tolerations []core.Toleration, fldPath *field.Path) field.ErrorList {
allErrors := field.ErrorList{}
for i, toleration := range tolerations {
idxPath := fldPath.Index(i)
@@ -2407,12 +2419,12 @@ func ValidateTolerations(tolerations []api.Toleration, fldPath *field.Path) fiel
}
// empty toleration key with Exists operator and empty value means match all taints
- if len(toleration.Key) == 0 && toleration.Operator != api.TolerationOpExists {
+ if len(toleration.Key) == 0 && toleration.Operator != core.TolerationOpExists {
allErrors = append(allErrors, field.Invalid(idxPath.Child("operator"), toleration.Operator,
"operator must be Exists when `key` is empty, which means \"match all values and all keys\""))
}
- if toleration.TolerationSeconds != nil && toleration.Effect != api.TaintEffectNoExecute {
+ if toleration.TolerationSeconds != nil && toleration.Effect != core.TaintEffectNoExecute {
allErrors = append(allErrors, field.Invalid(idxPath.Child("effect"), toleration.Effect,
"effect must be 'NoExecute' when `tolerationSeconds` is set"))
}
@@ -2420,16 +2432,16 @@ func ValidateTolerations(tolerations []api.Toleration, fldPath *field.Path) fiel
// validate toleration operator and value
switch toleration.Operator {
// empty operator means Equal
- case api.TolerationOpEqual, "":
+ case core.TolerationOpEqual, "":
if errs := validation.IsValidLabelValue(toleration.Value); len(errs) != 0 {
allErrors = append(allErrors, field.Invalid(idxPath.Child("operator"), toleration.Value, strings.Join(errs, ";")))
}
- case api.TolerationOpExists:
+ case core.TolerationOpExists:
if len(toleration.Value) > 0 {
allErrors = append(allErrors, field.Invalid(idxPath.Child("operator"), toleration, "value must be empty when `operator` is 'Exists'"))
}
default:
- validValues := []string{string(api.TolerationOpEqual), string(api.TolerationOpExists)}
+ validValues := []string{string(core.TolerationOpEqual), string(core.TolerationOpExists)}
allErrors = append(allErrors, field.NotSupported(idxPath.Child("operator"), toleration.Operator, validValues))
}
@@ -2441,15 +2453,15 @@ func ValidateTolerations(tolerations []api.Toleration, fldPath *field.Path) fiel
return allErrors
}
-func toResourceNames(resources api.ResourceList) []api.ResourceName {
- result := []api.ResourceName{}
+func toResourceNames(resources core.ResourceList) []core.ResourceName {
+ result := []core.ResourceName{}
for resourceName := range resources {
result = append(result, resourceName)
}
return result
}
-func toSet(resourceNames []api.ResourceName) sets.String {
+func toSet(resourceNames []core.ResourceName) sets.String {
result := sets.NewString()
for _, resourceName := range resourceNames {
result.Insert(string(resourceName))
@@ -2457,7 +2469,7 @@ func toSet(resourceNames []api.ResourceName) sets.String {
return result
}
-func toContainerResourcesSet(ctr *api.Container) sets.String {
+func toContainerResourcesSet(ctr *core.Container) sets.String {
resourceNames := toResourceNames(ctr.Resources.Requests)
resourceNames = append(resourceNames, toResourceNames(ctr.Resources.Limits)...)
return toSet(resourceNames)
@@ -2465,7 +2477,7 @@ func toContainerResourcesSet(ctr *api.Container) sets.String {
// validateContainersOnlyForPod does additional validation for containers on a pod versus a pod template
// it only does additive validation of fields not covered in validateContainers
-func validateContainersOnlyForPod(containers []api.Container, fldPath *field.Path) field.ErrorList {
+func validateContainersOnlyForPod(containers []core.Container, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
for i, ctr := range containers {
idxPath := fldPath.Index(i)
@@ -2477,7 +2489,7 @@ func validateContainersOnlyForPod(containers []api.Container, fldPath *field.Pat
}
// ValidatePod tests if required fields in the pod are set.
-func ValidatePod(pod *api.Pod) field.ErrorList {
+func ValidatePod(pod *core.Pod) field.ErrorList {
fldPath := field.NewPath("metadata")
allErrs := ValidateObjectMeta(&pod.ObjectMeta, true, ValidatePodName, fldPath)
allErrs = append(allErrs, ValidatePodSpecificAnnotations(pod.ObjectMeta.Annotations, &pod.Spec, fldPath.Child("annotations"))...)
@@ -2512,7 +2524,7 @@ func ValidatePod(pod *api.Pod) field.ErrorList {
// This includes checking formatting and uniqueness. It also canonicalizes the
// structure by setting default values and implementing any backwards-compatibility
// tricks.
-func ValidatePodSpec(spec *api.PodSpec, fldPath *field.Path) field.ErrorList {
+func ValidatePodSpec(spec *core.PodSpec, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
allVolumes, vErrs := ValidateVolumes(spec.Volumes, fldPath.Child("volumes"))
@@ -2578,19 +2590,19 @@ func ValidatePodSpec(spec *api.PodSpec, fldPath *field.Path) field.ErrorList {
}
// ValidateNodeSelectorRequirement tests that the specified NodeSelectorRequirement fields has valid data
-func ValidateNodeSelectorRequirement(rq api.NodeSelectorRequirement, fldPath *field.Path) field.ErrorList {
+func ValidateNodeSelectorRequirement(rq core.NodeSelectorRequirement, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
switch rq.Operator {
- case api.NodeSelectorOpIn, api.NodeSelectorOpNotIn:
+ case core.NodeSelectorOpIn, core.NodeSelectorOpNotIn:
if len(rq.Values) == 0 {
allErrs = append(allErrs, field.Required(fldPath.Child("values"), "must be specified when `operator` is 'In' or 'NotIn'"))
}
- case api.NodeSelectorOpExists, api.NodeSelectorOpDoesNotExist:
+ case core.NodeSelectorOpExists, core.NodeSelectorOpDoesNotExist:
if len(rq.Values) > 0 {
allErrs = append(allErrs, field.Forbidden(fldPath.Child("values"), "may not be specified when `operator` is 'Exists' or 'DoesNotExist'"))
}
- case api.NodeSelectorOpGt, api.NodeSelectorOpLt:
+ case core.NodeSelectorOpGt, core.NodeSelectorOpLt:
if len(rq.Values) != 1 {
allErrs = append(allErrs, field.Required(fldPath.Child("values"), "must be specified single value when `operator` is 'Lt' or 'Gt'"))
}
@@ -2602,7 +2614,7 @@ func ValidateNodeSelectorRequirement(rq api.NodeSelectorRequirement, fldPath *fi
}
// ValidateNodeSelectorTerm tests that the specified node selector term has valid data
-func ValidateNodeSelectorTerm(term api.NodeSelectorTerm, fldPath *field.Path) field.ErrorList {
+func ValidateNodeSelectorTerm(term core.NodeSelectorTerm, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(term.MatchExpressions) == 0 {
@@ -2615,7 +2627,7 @@ func ValidateNodeSelectorTerm(term api.NodeSelectorTerm, fldPath *field.Path) fi
}
// ValidateNodeSelector tests that the specified nodeSelector fields has valid data
-func ValidateNodeSelector(nodeSelector *api.NodeSelector, fldPath *field.Path) field.ErrorList {
+func ValidateNodeSelector(nodeSelector *core.NodeSelector, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
termFldPath := fldPath.Child("nodeSelectorTerms")
@@ -2636,18 +2648,18 @@ func ValidateAvoidPodsInNodeAnnotations(annotations map[string]string, fldPath *
v1Avoids, err := v1helper.GetAvoidPodsFromNodeAnnotations(annotations)
if err != nil {
- allErrs = append(allErrs, field.Invalid(fldPath.Child("AvoidPods"), api.PreferAvoidPodsAnnotationKey, err.Error()))
+ allErrs = append(allErrs, field.Invalid(fldPath.Child("AvoidPods"), core.PreferAvoidPodsAnnotationKey, err.Error()))
return allErrs
}
- var avoids api.AvoidPods
- if err := k8s_api_v1.Convert_v1_AvoidPods_To_api_AvoidPods(&v1Avoids, &avoids, nil); err != nil {
- allErrs = append(allErrs, field.Invalid(fldPath.Child("AvoidPods"), api.PreferAvoidPodsAnnotationKey, err.Error()))
+ var avoids core.AvoidPods
+ if err := corev1.Convert_v1_AvoidPods_To_core_AvoidPods(&v1Avoids, &avoids, nil); err != nil {
+ allErrs = append(allErrs, field.Invalid(fldPath.Child("AvoidPods"), core.PreferAvoidPodsAnnotationKey, err.Error()))
return allErrs
}
if len(avoids.PreferAvoidPods) != 0 {
for i, pa := range avoids.PreferAvoidPods {
- idxPath := fldPath.Child(api.PreferAvoidPodsAnnotationKey).Index(i)
+ idxPath := fldPath.Child(core.PreferAvoidPodsAnnotationKey).Index(i)
allErrs = append(allErrs, validatePreferAvoidPodsEntry(pa, idxPath)...)
}
}
@@ -2656,7 +2668,7 @@ func ValidateAvoidPodsInNodeAnnotations(annotations map[string]string, fldPath *
}
// validatePreferAvoidPodsEntry tests if given PreferAvoidPodsEntry has valid data.
-func validatePreferAvoidPodsEntry(avoidPodEntry api.PreferAvoidPodsEntry, fldPath *field.Path) field.ErrorList {
+func validatePreferAvoidPodsEntry(avoidPodEntry core.PreferAvoidPodsEntry, fldPath *field.Path) field.ErrorList {
allErrors := field.ErrorList{}
if avoidPodEntry.PodSignature.PodController == nil {
allErrors = append(allErrors, field.Required(fldPath.Child("PodSignature"), ""))
@@ -2671,7 +2683,7 @@ func validatePreferAvoidPodsEntry(avoidPodEntry api.PreferAvoidPodsEntry, fldPat
}
// ValidatePreferredSchedulingTerms tests that the specified SoftNodeAffinity fields has valid data
-func ValidatePreferredSchedulingTerms(terms []api.PreferredSchedulingTerm, fldPath *field.Path) field.ErrorList {
+func ValidatePreferredSchedulingTerms(terms []core.PreferredSchedulingTerm, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
for i, term := range terms {
@@ -2685,7 +2697,7 @@ func ValidatePreferredSchedulingTerms(terms []api.PreferredSchedulingTerm, fldPa
}
// validatePodAffinityTerm tests that the specified podAffinityTerm fields have valid data
-func validatePodAffinityTerm(podAffinityTerm api.PodAffinityTerm, fldPath *field.Path) field.ErrorList {
+func validatePodAffinityTerm(podAffinityTerm core.PodAffinityTerm, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
allErrs = append(allErrs, unversionedvalidation.ValidateLabelSelector(podAffinityTerm.LabelSelector, fldPath.Child("matchExpressions"))...)
@@ -2701,7 +2713,7 @@ func validatePodAffinityTerm(podAffinityTerm api.PodAffinityTerm, fldPath *field
}
// validatePodAffinityTerms tests that the specified podAffinityTerms fields have valid data
-func validatePodAffinityTerms(podAffinityTerms []api.PodAffinityTerm, fldPath *field.Path) field.ErrorList {
+func validatePodAffinityTerms(podAffinityTerms []core.PodAffinityTerm, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
for i, podAffinityTerm := range podAffinityTerms {
allErrs = append(allErrs, validatePodAffinityTerm(podAffinityTerm, fldPath.Index(i))...)
@@ -2710,7 +2722,7 @@ func validatePodAffinityTerms(podAffinityTerms []api.PodAffinityTerm, fldPath *f
}
// validateWeightedPodAffinityTerms tests that the specified weightedPodAffinityTerms fields have valid data
-func validateWeightedPodAffinityTerms(weightedPodAffinityTerms []api.WeightedPodAffinityTerm, fldPath *field.Path) field.ErrorList {
+func validateWeightedPodAffinityTerms(weightedPodAffinityTerms []core.WeightedPodAffinityTerm, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
for j, weightedTerm := range weightedPodAffinityTerms {
if weightedTerm.Weight <= 0 || weightedTerm.Weight > 100 {
@@ -2722,7 +2734,7 @@ func validateWeightedPodAffinityTerms(weightedPodAffinityTerms []api.WeightedPod
}
// validatePodAntiAffinity tests that the specified podAntiAffinity fields have valid data
-func validatePodAntiAffinity(podAntiAffinity *api.PodAntiAffinity, fldPath *field.Path) field.ErrorList {
+func validatePodAntiAffinity(podAntiAffinity *core.PodAntiAffinity, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
// TODO:Uncomment below code once RequiredDuringSchedulingRequiredDuringExecution is implemented.
// if podAntiAffinity.RequiredDuringSchedulingRequiredDuringExecution != nil {
@@ -2741,7 +2753,7 @@ func validatePodAntiAffinity(podAntiAffinity *api.PodAntiAffinity, fldPath *fiel
}
// validatePodAffinity tests that the specified podAffinity fields have valid data
-func validatePodAffinity(podAffinity *api.PodAffinity, fldPath *field.Path) field.ErrorList {
+func validatePodAffinity(podAffinity *core.PodAffinity, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
// TODO:Uncomment below code once RequiredDuringSchedulingRequiredDuringExecution is implemented.
// if podAffinity.RequiredDuringSchedulingRequiredDuringExecution != nil {
@@ -2774,11 +2786,11 @@ func ValidateSeccompProfile(p string, fldPath *field.Path) field.ErrorList {
func ValidateSeccompPodAnnotations(annotations map[string]string, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
- if p, exists := annotations[api.SeccompPodAnnotationKey]; exists {
- allErrs = append(allErrs, ValidateSeccompProfile(p, fldPath.Child(api.SeccompPodAnnotationKey))...)
+ if p, exists := annotations[core.SeccompPodAnnotationKey]; exists {
+ allErrs = append(allErrs, ValidateSeccompProfile(p, fldPath.Child(core.SeccompPodAnnotationKey))...)
}
for k, p := range annotations {
- if strings.HasPrefix(k, api.SeccompContainerAnnotationKeyPrefix) {
+ if strings.HasPrefix(k, core.SeccompContainerAnnotationKeyPrefix) {
allErrs = append(allErrs, ValidateSeccompProfile(p, fldPath.Child(k))...)
}
}
@@ -2786,7 +2798,7 @@ func ValidateSeccompPodAnnotations(annotations map[string]string, fldPath *field
return allErrs
}
-func ValidateAppArmorPodAnnotations(annotations map[string]string, spec *api.PodSpec, fldPath *field.Path) field.ErrorList {
+func ValidateAppArmorPodAnnotations(annotations map[string]string, spec *core.PodSpec, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
for k, p := range annotations {
if !strings.HasPrefix(k, apparmor.ContainerAnnotationKeyPrefix) {
@@ -2810,7 +2822,7 @@ func ValidateAppArmorPodAnnotations(annotations map[string]string, spec *api.Pod
return allErrs
}
-func podSpecHasContainer(spec *api.PodSpec, containerName string) bool {
+func podSpecHasContainer(spec *core.PodSpec, containerName string) bool {
for _, c := range spec.InitContainers {
if c.Name == containerName {
return true
@@ -2846,7 +2858,7 @@ func IsValidSysctlName(name string) bool {
return sysctlRegexp.MatchString(name)
}
-func validateSysctls(sysctls []api.Sysctl, fldPath *field.Path) field.ErrorList {
+func validateSysctls(sysctls []core.Sysctl, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
for i, s := range sysctls {
if len(s.Name) == 0 {
@@ -2859,7 +2871,7 @@ func validateSysctls(sysctls []api.Sysctl, fldPath *field.Path) field.ErrorList
}
// ValidatePodSecurityContext test that the specified PodSecurityContext has valid data.
-func ValidatePodSecurityContext(securityContext *api.PodSecurityContext, spec *api.PodSpec, specPath, fldPath *field.Path) field.ErrorList {
+func ValidatePodSecurityContext(securityContext *core.PodSecurityContext, spec *core.PodSpec, specPath, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if securityContext != nil {
@@ -2884,7 +2896,7 @@ func ValidatePodSecurityContext(securityContext *api.PodSecurityContext, spec *a
return allErrs
}
-func ValidateContainerUpdates(newContainers, oldContainers []api.Container, fldPath *field.Path) (allErrs field.ErrorList, stop bool) {
+func ValidateContainerUpdates(newContainers, oldContainers []core.Container, fldPath *field.Path) (allErrs field.ErrorList, stop bool) {
allErrs = field.ErrorList{}
if len(newContainers) != len(oldContainers) {
//TODO: Pinpoint the specific container that causes the invalid error after we have strategic merge diff
@@ -2907,7 +2919,7 @@ func ValidateContainerUpdates(newContainers, oldContainers []api.Container, fldP
// ValidatePodUpdate tests to see if the update is legal for an end user to make. newPod is updated with fields
// that cannot be changed.
-func ValidatePodUpdate(newPod, oldPod *api.Pod) field.ErrorList {
+func ValidatePodUpdate(newPod, oldPod *core.Pod) field.ErrorList {
fldPath := field.NewPath("metadata")
allErrs := ValidateObjectMetaUpdate(&newPod.ObjectMeta, &oldPod.ObjectMeta, fldPath)
allErrs = append(allErrs, ValidatePodSpecificAnnotationUpdates(newPod, oldPod, fldPath.Child("annotations"))...)
@@ -2952,14 +2964,14 @@ func ValidatePodUpdate(newPod, oldPod *api.Pod) field.ErrorList {
// handle updateable fields by munging those fields prior to deep equal comparison.
mungedPod := *newPod
// munge spec.containers[*].image
- var newContainers []api.Container
+ var newContainers []core.Container
for ix, container := range mungedPod.Spec.Containers {
container.Image = oldPod.Spec.Containers[ix].Image
newContainers = append(newContainers, container)
}
mungedPod.Spec.Containers = newContainers
// munge spec.initContainers[*].image
- var newInitContainers []api.Container
+ var newInitContainers []core.Container
for ix, container := range mungedPod.Spec.InitContainers {
container.Image = oldPod.Spec.InitContainers[ix].Image
newInitContainers = append(newInitContainers, container)
@@ -2988,7 +3000,7 @@ func ValidatePodUpdate(newPod, oldPod *api.Pod) field.ErrorList {
// ValidatePodStatusUpdate tests to see if the update is legal for an end user to make. newPod is updated with fields
// that cannot be changed.
-func ValidatePodStatusUpdate(newPod, oldPod *api.Pod) field.ErrorList {
+func ValidatePodStatusUpdate(newPod, oldPod *core.Pod) field.ErrorList {
fldPath := field.NewPath("metadata")
allErrs := ValidateObjectMetaUpdate(&newPod.ObjectMeta, &oldPod.ObjectMeta, fldPath)
allErrs = append(allErrs, ValidatePodSpecificAnnotationUpdates(newPod, oldPod, fldPath.Child("annotations"))...)
@@ -3004,7 +3016,7 @@ func ValidatePodStatusUpdate(newPod, oldPod *api.Pod) field.ErrorList {
}
// ValidatePodBinding tests if required fields in the pod binding are legal.
-func ValidatePodBinding(binding *api.Binding) field.ErrorList {
+func ValidatePodBinding(binding *core.Binding) field.ErrorList {
allErrs := field.ErrorList{}
if len(binding.Target.Kind) != 0 && binding.Target.Kind != "Node" {
@@ -3020,7 +3032,7 @@ func ValidatePodBinding(binding *api.Binding) field.ErrorList {
}
// ValidatePodTemplate tests if required fields in the pod template are set.
-func ValidatePodTemplate(pod *api.PodTemplate) field.ErrorList {
+func ValidatePodTemplate(pod *core.PodTemplate) field.ErrorList {
allErrs := ValidateObjectMeta(&pod.ObjectMeta, true, ValidatePodName, field.NewPath("metadata"))
allErrs = append(allErrs, ValidatePodTemplateSpec(&pod.Template, field.NewPath("template"))...)
return allErrs
@@ -3028,27 +3040,27 @@ func ValidatePodTemplate(pod *api.PodTemplate) field.ErrorList {
// ValidatePodTemplateUpdate tests to see if the update is legal for an end user to make. newPod is updated with fields
// that cannot be changed.
-func ValidatePodTemplateUpdate(newPod, oldPod *api.PodTemplate) field.ErrorList {
+func ValidatePodTemplateUpdate(newPod, oldPod *core.PodTemplate) field.ErrorList {
allErrs := ValidateObjectMetaUpdate(&oldPod.ObjectMeta, &newPod.ObjectMeta, field.NewPath("metadata"))
allErrs = append(allErrs, ValidatePodTemplateSpec(&newPod.Template, field.NewPath("template"))...)
return allErrs
}
-var supportedSessionAffinityType = sets.NewString(string(api.ServiceAffinityClientIP), string(api.ServiceAffinityNone))
-var supportedServiceType = sets.NewString(string(api.ServiceTypeClusterIP), string(api.ServiceTypeNodePort),
- string(api.ServiceTypeLoadBalancer), string(api.ServiceTypeExternalName))
+var supportedSessionAffinityType = sets.NewString(string(core.ServiceAffinityClientIP), string(core.ServiceAffinityNone))
+var supportedServiceType = sets.NewString(string(core.ServiceTypeClusterIP), string(core.ServiceTypeNodePort),
+ string(core.ServiceTypeLoadBalancer), string(core.ServiceTypeExternalName))
// ValidateService tests if required fields/annotations of a Service are valid.
-func ValidateService(service *api.Service) field.ErrorList {
+func ValidateService(service *core.Service) field.ErrorList {
allErrs := ValidateObjectMeta(&service.ObjectMeta, true, ValidateServiceName, field.NewPath("metadata"))
specPath := field.NewPath("spec")
- isHeadlessService := service.Spec.ClusterIP == api.ClusterIPNone
- if len(service.Spec.Ports) == 0 && !isHeadlessService && service.Spec.Type != api.ServiceTypeExternalName {
+ isHeadlessService := service.Spec.ClusterIP == core.ClusterIPNone
+ if len(service.Spec.Ports) == 0 && !isHeadlessService && service.Spec.Type != core.ServiceTypeExternalName {
allErrs = append(allErrs, field.Required(specPath.Child("ports"), ""))
}
switch service.Spec.Type {
- case api.ServiceTypeLoadBalancer:
+ case core.ServiceTypeLoadBalancer:
for ix := range service.Spec.Ports {
port := &service.Spec.Ports[ix]
// This is a workaround for broken cloud environments that
@@ -3062,11 +3074,11 @@ func ValidateService(service *api.Service) field.ErrorList {
if service.Spec.ClusterIP == "None" {
allErrs = append(allErrs, field.Invalid(specPath.Child("clusterIP"), service.Spec.ClusterIP, "may not be set to 'None' for LoadBalancer services"))
}
- case api.ServiceTypeNodePort:
+ case core.ServiceTypeNodePort:
if service.Spec.ClusterIP == "None" {
allErrs = append(allErrs, field.Invalid(specPath.Child("clusterIP"), service.Spec.ClusterIP, "may not be set to 'None' for NodePort services"))
}
- case api.ServiceTypeExternalName:
+ case core.ServiceTypeExternalName:
if service.Spec.ClusterIP != "" {
allErrs = append(allErrs, field.Invalid(specPath.Child("clusterIP"), service.Spec.ClusterIP, "must be empty for ExternalName services"))
}
@@ -3094,11 +3106,11 @@ func ValidateService(service *api.Service) field.ErrorList {
allErrs = append(allErrs, field.NotSupported(specPath.Child("sessionAffinity"), service.Spec.SessionAffinity, supportedSessionAffinityType.List()))
}
- if service.Spec.SessionAffinity == api.ServiceAffinityClientIP {
+ if service.Spec.SessionAffinity == core.ServiceAffinityClientIP {
allErrs = append(allErrs, validateClientIPAffinityConfig(service.Spec.SessionAffinityConfig, specPath.Child("sessionAffinityConfig"))...)
- } else if service.Spec.SessionAffinity == api.ServiceAffinityNone {
+ } else if service.Spec.SessionAffinity == core.ServiceAffinityNone {
if service.Spec.SessionAffinityConfig != nil {
- allErrs = append(allErrs, field.Forbidden(specPath.Child("sessionAffinityConfig"), fmt.Sprintf("must not be set when session affinity is %s", string(api.ServiceAffinityNone))))
+ allErrs = append(allErrs, field.Forbidden(specPath.Child("sessionAffinityConfig"), fmt.Sprintf("must not be set when session affinity is %s", string(core.ServiceAffinityNone))))
}
}
@@ -3126,7 +3138,7 @@ func ValidateService(service *api.Service) field.ErrorList {
allErrs = append(allErrs, field.NotSupported(specPath.Child("type"), service.Spec.Type, supportedServiceType.List()))
}
- if service.Spec.Type == api.ServiceTypeLoadBalancer {
+ if service.Spec.Type == core.ServiceTypeLoadBalancer {
portsPath := specPath.Child("ports")
includeProtocols := sets.NewString()
for i := range service.Spec.Ports {
@@ -3142,7 +3154,7 @@ func ValidateService(service *api.Service) field.ErrorList {
}
}
- if service.Spec.Type == api.ServiceTypeClusterIP {
+ if service.Spec.Type == core.ServiceTypeClusterIP {
portsPath := specPath.Child("ports")
for i := range service.Spec.Ports {
portPath := portsPath.Index(i)
@@ -3154,14 +3166,14 @@ func ValidateService(service *api.Service) field.ErrorList {
// Check for duplicate NodePorts, considering (protocol,port) pairs
portsPath = specPath.Child("ports")
- nodePorts := make(map[api.ServicePort]bool)
+ nodePorts := make(map[core.ServicePort]bool)
for i := range service.Spec.Ports {
port := &service.Spec.Ports[i]
if port.NodePort == 0 {
continue
}
portPath := portsPath.Index(i)
- var key api.ServicePort
+ var key core.ServicePort
key.Protocol = port.Protocol
key.NodePort = port.NodePort
_, found := nodePorts[key]
@@ -3173,10 +3185,10 @@ func ValidateService(service *api.Service) field.ErrorList {
// Check for duplicate Ports, considering (protocol,port) pairs
portsPath = specPath.Child("ports")
- ports := make(map[api.ServicePort]bool)
+ ports := make(map[core.ServicePort]bool)
for i, port := range service.Spec.Ports {
portPath := portsPath.Index(i)
- key := api.ServicePort{Protocol: port.Protocol, Port: port.Port}
+ key := core.ServicePort{Protocol: port.Protocol, Port: port.Port}
_, found := ports[key]
if found {
allErrs = append(allErrs, field.Duplicate(portPath, key))
@@ -3184,24 +3196,8 @@ func ValidateService(service *api.Service) field.ErrorList {
ports[key] = true
}
- // Check for duplicate TargetPort
- portsPath = specPath.Child("ports")
- targetPorts := make(map[api.ServicePort]bool)
- for i, port := range service.Spec.Ports {
- if (port.TargetPort.Type == intstr.Int && port.TargetPort.IntVal == 0) || (port.TargetPort.Type == intstr.String && port.TargetPort.StrVal == "") {
- continue
- }
- portPath := portsPath.Index(i)
- key := api.ServicePort{Protocol: port.Protocol, TargetPort: port.TargetPort}
- _, found := targetPorts[key]
- if found {
- allErrs = append(allErrs, field.Duplicate(portPath.Child("targetPort"), port.TargetPort))
- }
- targetPorts[key] = true
- }
-
// Validate SourceRange field and annotation
- _, ok := service.Annotations[api.AnnotationLoadBalancerSourceRangesKey]
+ _, ok := service.Annotations[core.AnnotationLoadBalancerSourceRangesKey]
if len(service.Spec.LoadBalancerSourceRanges) > 0 || ok {
var fieldPath *field.Path
var val string
@@ -3209,10 +3205,10 @@ func ValidateService(service *api.Service) field.ErrorList {
fieldPath = specPath.Child("LoadBalancerSourceRanges")
val = fmt.Sprintf("%v", service.Spec.LoadBalancerSourceRanges)
} else {
- fieldPath = field.NewPath("metadata", "annotations").Key(api.AnnotationLoadBalancerSourceRangesKey)
- val = service.Annotations[api.AnnotationLoadBalancerSourceRangesKey]
+ fieldPath = field.NewPath("metadata", "annotations").Key(core.AnnotationLoadBalancerSourceRangesKey)
+ val = service.Annotations[core.AnnotationLoadBalancerSourceRangesKey]
}
- if service.Spec.Type != api.ServiceTypeLoadBalancer {
+ if service.Spec.Type != core.ServiceTypeLoadBalancer {
allErrs = append(allErrs, field.Invalid(fieldPath, "", "may only be used when `type` is 'LoadBalancer'"))
}
_, err := apiservice.GetLoadBalancerSourceRanges(service)
@@ -3226,7 +3222,7 @@ func ValidateService(service *api.Service) field.ErrorList {
return allErrs
}
-func validateServicePort(sp *api.ServicePort, requireName, isHeadlessService bool, allNames *sets.String, fldPath *field.Path) field.ErrorList {
+func validateServicePort(sp *core.ServicePort, requireName, isHeadlessService bool, allNames *sets.String, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if requireName && len(sp.Name) == 0 {
@@ -3266,15 +3262,15 @@ func validateServicePort(sp *api.ServicePort, requireName, isHeadlessService boo
// validateServiceExternalTrafficFieldsValue validates ExternalTraffic related annotations
// have legal value.
-func validateServiceExternalTrafficFieldsValue(service *api.Service) field.ErrorList {
+func validateServiceExternalTrafficFieldsValue(service *core.Service) field.ErrorList {
allErrs := field.ErrorList{}
// Check first class fields.
if service.Spec.ExternalTrafficPolicy != "" &&
- service.Spec.ExternalTrafficPolicy != api.ServiceExternalTrafficPolicyTypeCluster &&
- service.Spec.ExternalTrafficPolicy != api.ServiceExternalTrafficPolicyTypeLocal {
+ service.Spec.ExternalTrafficPolicy != core.ServiceExternalTrafficPolicyTypeCluster &&
+ service.Spec.ExternalTrafficPolicy != core.ServiceExternalTrafficPolicyTypeLocal {
allErrs = append(allErrs, field.Invalid(field.NewPath("spec").Child("externalTrafficPolicy"), service.Spec.ExternalTrafficPolicy,
- fmt.Sprintf("ExternalTrafficPolicy must be empty, %v or %v", api.ServiceExternalTrafficPolicyTypeCluster, api.ServiceExternalTrafficPolicyTypeLocal)))
+ fmt.Sprintf("ExternalTrafficPolicy must be empty, %v or %v", core.ServiceExternalTrafficPolicyTypeCluster, core.ServiceExternalTrafficPolicyTypeLocal)))
}
if service.Spec.HealthCheckNodePort < 0 {
allErrs = append(allErrs, field.Invalid(field.NewPath("spec").Child("healthCheckNodePort"), service.Spec.HealthCheckNodePort,
@@ -3288,11 +3284,11 @@ func validateServiceExternalTrafficFieldsValue(service *api.Service) field.Error
// HealthCheckNodePort and Type combination are legal. For update, it should be called
// after clearing externalTraffic related fields for the ease of transitioning between
// different service types.
-func ValidateServiceExternalTrafficFieldsCombination(service *api.Service) field.ErrorList {
+func ValidateServiceExternalTrafficFieldsCombination(service *core.Service) field.ErrorList {
allErrs := field.ErrorList{}
- if service.Spec.Type != api.ServiceTypeLoadBalancer &&
- service.Spec.Type != api.ServiceTypeNodePort &&
+ if service.Spec.Type != core.ServiceTypeLoadBalancer &&
+ service.Spec.Type != core.ServiceTypeNodePort &&
service.Spec.ExternalTrafficPolicy != "" {
allErrs = append(allErrs, field.Invalid(field.NewPath("spec", "externalTrafficPolicy"), service.Spec.ExternalTrafficPolicy,
"ExternalTrafficPolicy can only be set on NodePort and LoadBalancer service"))
@@ -3308,13 +3304,13 @@ func ValidateServiceExternalTrafficFieldsCombination(service *api.Service) field
}
// ValidateServiceUpdate tests if required fields in the service are set during an update
-func ValidateServiceUpdate(service, oldService *api.Service) field.ErrorList {
+func ValidateServiceUpdate(service, oldService *core.Service) field.ErrorList {
allErrs := ValidateObjectMetaUpdate(&service.ObjectMeta, &oldService.ObjectMeta, field.NewPath("metadata"))
// ClusterIP should be immutable for services using it (every type other than ExternalName)
// which do not have ClusterIP assigned yet (empty string value)
- if service.Spec.Type != api.ServiceTypeExternalName {
- if oldService.Spec.Type != api.ServiceTypeExternalName && oldService.Spec.ClusterIP != "" {
+ if service.Spec.Type != core.ServiceTypeExternalName {
+ if oldService.Spec.Type != core.ServiceTypeExternalName && oldService.Spec.ClusterIP != "" {
allErrs = append(allErrs, ValidateImmutableField(service.Spec.ClusterIP, oldService.Spec.ClusterIP, field.NewPath("spec", "clusterIP"))...)
}
}
@@ -3324,34 +3320,34 @@ func ValidateServiceUpdate(service, oldService *api.Service) field.ErrorList {
}
// ValidateServiceStatusUpdate tests if required fields in the Service are set when updating status.
-func ValidateServiceStatusUpdate(service, oldService *api.Service) field.ErrorList {
+func ValidateServiceStatusUpdate(service, oldService *core.Service) field.ErrorList {
allErrs := ValidateObjectMetaUpdate(&service.ObjectMeta, &oldService.ObjectMeta, field.NewPath("metadata"))
allErrs = append(allErrs, ValidateLoadBalancerStatus(&service.Status.LoadBalancer, field.NewPath("status", "loadBalancer"))...)
return allErrs
}
// ValidateReplicationController tests if required fields in the replication controller are set.
-func ValidateReplicationController(controller *api.ReplicationController) field.ErrorList {
+func ValidateReplicationController(controller *core.ReplicationController) field.ErrorList {
allErrs := ValidateObjectMeta(&controller.ObjectMeta, true, ValidateReplicationControllerName, field.NewPath("metadata"))
allErrs = append(allErrs, ValidateReplicationControllerSpec(&controller.Spec, field.NewPath("spec"))...)
return allErrs
}
// ValidateReplicationControllerUpdate tests if required fields in the replication controller are set.
-func ValidateReplicationControllerUpdate(controller, oldController *api.ReplicationController) field.ErrorList {
+func ValidateReplicationControllerUpdate(controller, oldController *core.ReplicationController) field.ErrorList {
allErrs := ValidateObjectMetaUpdate(&controller.ObjectMeta, &oldController.ObjectMeta, field.NewPath("metadata"))
allErrs = append(allErrs, ValidateReplicationControllerSpec(&controller.Spec, field.NewPath("spec"))...)
return allErrs
}
// ValidateReplicationControllerStatusUpdate tests if required fields in the replication controller are set.
-func ValidateReplicationControllerStatusUpdate(controller, oldController *api.ReplicationController) field.ErrorList {
+func ValidateReplicationControllerStatusUpdate(controller, oldController *core.ReplicationController) field.ErrorList {
allErrs := ValidateObjectMetaUpdate(&controller.ObjectMeta, &oldController.ObjectMeta, field.NewPath("metadata"))
allErrs = append(allErrs, ValidateReplicationControllerStatus(controller.Status, field.NewPath("status"))...)
return allErrs
}
-func ValidateReplicationControllerStatus(status api.ReplicationControllerStatus, statusPath *field.Path) field.ErrorList {
+func ValidateReplicationControllerStatus(status core.ReplicationControllerStatus, statusPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
allErrs = append(allErrs, ValidateNonnegativeField(int64(status.Replicas), statusPath.Child("replicas"))...)
allErrs = append(allErrs, ValidateNonnegativeField(int64(status.FullyLabeledReplicas), statusPath.Child("fullyLabeledReplicas"))...)
@@ -3385,7 +3381,7 @@ func ValidateNonEmptySelector(selectorMap map[string]string, fldPath *field.Path
}
// Validates the given template and ensures that it is in accordance with the desired selector and replicas.
-func ValidatePodTemplateSpecForRC(template *api.PodTemplateSpec, selectorMap map[string]string, replicas int32, fldPath *field.Path) field.ErrorList {
+func ValidatePodTemplateSpecForRC(template *core.PodTemplateSpec, selectorMap map[string]string, replicas int32, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if template == nil {
allErrs = append(allErrs, field.Required(fldPath, ""))
@@ -3403,8 +3399,8 @@ func ValidatePodTemplateSpecForRC(template *api.PodTemplateSpec, selectorMap map
allErrs = append(allErrs, ValidateReadOnlyPersistentDisks(template.Spec.Volumes, fldPath.Child("spec", "volumes"))...)
}
// RestartPolicy has already been first-order validated as per ValidatePodTemplateSpec().
- if template.Spec.RestartPolicy != api.RestartPolicyAlways {
- allErrs = append(allErrs, field.NotSupported(fldPath.Child("spec", "restartPolicy"), template.Spec.RestartPolicy, []string{string(api.RestartPolicyAlways)}))
+ if template.Spec.RestartPolicy != core.RestartPolicyAlways {
+ allErrs = append(allErrs, field.NotSupported(fldPath.Child("spec", "restartPolicy"), template.Spec.RestartPolicy, []string{string(core.RestartPolicyAlways)}))
}
if template.Spec.ActiveDeadlineSeconds != nil {
allErrs = append(allErrs, field.Invalid(fldPath.Child("spec", "activeDeadlineSeconds"), template.Spec.ActiveDeadlineSeconds, "must not be specified"))
@@ -3414,7 +3410,7 @@ func ValidatePodTemplateSpecForRC(template *api.PodTemplateSpec, selectorMap map
}
// ValidateReplicationControllerSpec tests if required fields in the replication controller spec are set.
-func ValidateReplicationControllerSpec(spec *api.ReplicationControllerSpec, fldPath *field.Path) field.ErrorList {
+func ValidateReplicationControllerSpec(spec *core.ReplicationControllerSpec, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
allErrs = append(allErrs, ValidateNonnegativeField(int64(spec.MinReadySeconds), fldPath.Child("minReadySeconds"))...)
allErrs = append(allErrs, ValidateNonEmptySelector(spec.Selector, fldPath.Child("selector"))...)
@@ -3424,7 +3420,7 @@ func ValidateReplicationControllerSpec(spec *api.ReplicationControllerSpec, fldP
}
// ValidatePodTemplateSpec validates the spec of a pod template
-func ValidatePodTemplateSpec(spec *api.PodTemplateSpec, fldPath *field.Path) field.ErrorList {
+func ValidatePodTemplateSpec(spec *core.PodTemplateSpec, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
allErrs = append(allErrs, unversionedvalidation.ValidateLabels(spec.Labels, fldPath.Child("labels"))...)
allErrs = append(allErrs, ValidateAnnotations(spec.Annotations, fldPath.Child("annotations"))...)
@@ -3433,7 +3429,7 @@ func ValidatePodTemplateSpec(spec *api.PodTemplateSpec, fldPath *field.Path) fie
return allErrs
}
-func ValidateReadOnlyPersistentDisks(volumes []api.Volume, fldPath *field.Path) field.ErrorList {
+func ValidateReadOnlyPersistentDisks(volumes []core.Volume, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
for i := range volumes {
vol := &volumes[i]
@@ -3454,22 +3450,22 @@ func ValidateTaintsInNodeAnnotations(annotations map[string]string, fldPath *fie
taints, err := helper.GetTaintsFromNodeAnnotations(annotations)
if err != nil {
- allErrs = append(allErrs, field.Invalid(fldPath, api.TaintsAnnotationKey, err.Error()))
+ allErrs = append(allErrs, field.Invalid(fldPath, core.TaintsAnnotationKey, err.Error()))
return allErrs
}
if len(taints) > 0 {
- allErrs = append(allErrs, validateNodeTaints(taints, fldPath.Child(api.TaintsAnnotationKey))...)
+ allErrs = append(allErrs, validateNodeTaints(taints, fldPath.Child(core.TaintsAnnotationKey))...)
}
return allErrs
}
// validateNodeTaints tests if given taints have valid data.
-func validateNodeTaints(taints []api.Taint, fldPath *field.Path) field.ErrorList {
+func validateNodeTaints(taints []core.Taint, fldPath *field.Path) field.ErrorList {
allErrors := field.ErrorList{}
- uniqueTaints := map[api.TaintEffect]sets.String{}
+ uniqueTaints := map[core.TaintEffect]sets.String{}
for i, currTaint := range taints {
idxPath := fldPath.Index(i)
@@ -3502,18 +3498,18 @@ func validateNodeTaints(taints []api.Taint, fldPath *field.Path) field.ErrorList
func ValidateNodeSpecificAnnotations(annotations map[string]string, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
- if annotations[api.TaintsAnnotationKey] != "" {
+ if annotations[core.TaintsAnnotationKey] != "" {
allErrs = append(allErrs, ValidateTaintsInNodeAnnotations(annotations, fldPath)...)
}
- if annotations[api.PreferAvoidPodsAnnotationKey] != "" {
+ if annotations[core.PreferAvoidPodsAnnotationKey] != "" {
allErrs = append(allErrs, ValidateAvoidPodsInNodeAnnotations(annotations, fldPath)...)
}
return allErrs
}
// ValidateNode tests if required fields in the node are set.
-func ValidateNode(node *api.Node) field.ErrorList {
+func ValidateNode(node *core.Node) field.ErrorList {
fldPath := field.NewPath("metadata")
allErrs := ValidateObjectMeta(&node.ObjectMeta, false, ValidateNodeName, fldPath)
allErrs = append(allErrs, ValidateNodeSpecificAnnotations(node.ObjectMeta.Annotations, fldPath.Child("annotations"))...)
@@ -3541,7 +3537,7 @@ func ValidateNode(node *api.Node) field.ErrorList {
}
// ValidateNodeResources is used to make sure a node has valid capacity and allocatable values.
-func ValidateNodeResources(node *api.Node) field.ErrorList {
+func ValidateNodeResources(node *core.Node) field.ErrorList {
allErrs := field.ErrorList{}
// Validate resource quantities in capacity.
hugePageSizes := sets.NewString()
@@ -3573,21 +3569,21 @@ func ValidateNodeResources(node *api.Node) field.ErrorList {
}
// ValidateNodeUpdate tests to make sure a node update can be applied. Modifies oldNode.
-func ValidateNodeUpdate(node, oldNode *api.Node) field.ErrorList {
+func ValidateNodeUpdate(node, oldNode *core.Node) field.ErrorList {
fldPath := field.NewPath("metadata")
allErrs := ValidateObjectMetaUpdate(&node.ObjectMeta, &oldNode.ObjectMeta, fldPath)
allErrs = append(allErrs, ValidateNodeSpecificAnnotations(node.ObjectMeta.Annotations, fldPath.Child("annotations"))...)
- // TODO: Enable the code once we have better api object.status update model. Currently,
+ // TODO: Enable the code once we have better core object.status update model. Currently,
// anyone can update node status.
- // if !apiequality.Semantic.DeepEqual(node.Status, api.NodeStatus{}) {
+ // if !apiequality.Semantic.DeepEqual(node.Status, core.NodeStatus{}) {
// allErrs = append(allErrs, field.Invalid("status", node.Status, "must be empty"))
// }
allErrs = append(allErrs, ValidateNodeResources(node)...)
// Validate no duplicate addresses in node status.
- addresses := make(map[api.NodeAddress]bool)
+ addresses := make(map[core.NodeAddress]bool)
for i, address := range node.Status.Addresses {
if _, ok := addresses[address]; ok {
allErrs = append(allErrs, field.Duplicate(field.NewPath("status", "addresses").Index(i), address))
@@ -3649,7 +3645,7 @@ func ValidateNodeUpdate(node, oldNode *api.Node) field.ErrorList {
func validateResourceName(value string, fldPath *field.Path) field.ErrorList {
// Opaque integer resources (OIR) deprecation began in v1.8
// TODO: Remove warning after OIR deprecation cycle.
- if helper.IsOpaqueIntResourceName(api.ResourceName(value)) {
+ if helper.IsOpaqueIntResourceName(core.ResourceName(value)) {
glog.Errorf("DEPRECATION WARNING! Opaque integer resources are deprecated starting with v1.8: %s", value)
}
@@ -3685,8 +3681,8 @@ func validateContainerResourceName(value string, fldPath *field.Path) field.Erro
// isLocalStorageResource checks whether the resource is local ephemeral storage
func isLocalStorageResource(name string) bool {
- if name == string(api.ResourceEphemeralStorage) || name == string(api.ResourceRequestsEphemeralStorage) ||
- name == string(api.ResourceLimitsEphemeralStorage) {
+ if name == string(core.ResourceEphemeralStorage) || name == string(core.ResourceRequestsEphemeralStorage) ||
+ name == string(core.ResourceLimitsEphemeralStorage) {
return true
} else {
return false
@@ -3729,13 +3725,13 @@ func validateLimitRangeTypeName(value string, fldPath *field.Path) field.ErrorLi
// Validate limit range resource name
// limit types (other than Pod/Container) could contain storage not just cpu or memory
-func validateLimitRangeResourceName(limitType api.LimitType, value string, fldPath *field.Path) field.ErrorList {
+func validateLimitRangeResourceName(limitType core.LimitType, value string, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
- if value == string(api.ResourceEphemeralStorage) && !utilfeature.DefaultFeatureGate.Enabled(features.LocalStorageCapacityIsolation) {
+ if value == string(core.ResourceEphemeralStorage) && !utilfeature.DefaultFeatureGate.Enabled(features.LocalStorageCapacityIsolation) {
return append(allErrs, field.Forbidden(fldPath, "ResourceEphemeralStorage field disabled by feature-gate for Resource LimitRange"))
}
switch limitType {
- case api.LimitTypePod, api.LimitTypeContainer:
+ case core.LimitTypePod, core.LimitTypeContainer:
return validateContainerResourceName(value, fldPath)
default:
return validateResourceName(value, fldPath)
@@ -3743,11 +3739,11 @@ func validateLimitRangeResourceName(limitType api.LimitType, value string, fldPa
}
// ValidateLimitRange tests if required fields in the LimitRange are set.
-func ValidateLimitRange(limitRange *api.LimitRange) field.ErrorList {
+func ValidateLimitRange(limitRange *core.LimitRange) field.ErrorList {
allErrs := ValidateObjectMeta(&limitRange.ObjectMeta, true, ValidateLimitRangeName, field.NewPath("metadata"))
// ensure resource names are properly qualified per docs/design/resources.md
- limitTypeSet := map[api.LimitType]bool{}
+ limitTypeSet := map[core.LimitType]bool{}
fldPath := field.NewPath("spec", "limits")
for i := range limitRange.Spec.Limits {
idxPath := fldPath.Index(i)
@@ -3778,7 +3774,7 @@ func ValidateLimitRange(limitRange *api.LimitRange) field.ErrorList {
min[string(k)] = q
}
- if limit.Type == api.LimitTypePod {
+ if limit.Type == core.LimitTypePod {
if len(limit.Default) > 0 {
allErrs = append(allErrs, field.Forbidden(idxPath.Child("default"), "may not be specified when `type` is 'Pod'"))
}
@@ -3798,9 +3794,9 @@ func ValidateLimitRange(limitRange *api.LimitRange) field.ErrorList {
}
}
- if limit.Type == api.LimitTypePersistentVolumeClaim {
- _, minQuantityFound := limit.Min[api.ResourceStorage]
- _, maxQuantityFound := limit.Max[api.ResourceStorage]
+ if limit.Type == core.LimitTypePersistentVolumeClaim {
+ _, minQuantityFound := limit.Min[core.ResourceStorage]
+ _, maxQuantityFound := limit.Max[core.ResourceStorage]
if !minQuantityFound && !maxQuantityFound {
allErrs = append(allErrs, field.Required(idxPath.Child("limits"), "either minimum or maximum storage value is required, but neither was provided"))
}
@@ -3859,6 +3855,11 @@ func ValidateLimitRange(limitRange *api.LimitRange) field.ErrorList {
allErrs = append(allErrs, field.Invalid(idxPath.Child("maxLimitRequestRatio").Key(string(k)), maxRatio, fmt.Sprintf("ratio %s is greater than max/min = %f", maxRatio.String(), maxRatioLimit)))
}
}
+
+ // for GPU and hugepages, the default value and defaultRequest value must match if both are specified
+ if !helper.IsOvercommitAllowed(core.ResourceName(k)) && defaultQuantityFound && defaultRequestQuantityFound && defaultQuantity.Cmp(defaultRequestQuantity) != 0 {
+ allErrs = append(allErrs, field.Invalid(idxPath.Child("defaultRequest").Key(string(k)), defaultRequestQuantity, fmt.Sprintf("default value %s must equal to defaultRequest value %s in %s", defaultQuantity.String(), defaultRequestQuantity.String(), k)))
+ }
}
}
@@ -3866,20 +3867,20 @@ func ValidateLimitRange(limitRange *api.LimitRange) field.ErrorList {
}
// ValidateServiceAccount tests if required fields in the ServiceAccount are set.
-func ValidateServiceAccount(serviceAccount *api.ServiceAccount) field.ErrorList {
+func ValidateServiceAccount(serviceAccount *core.ServiceAccount) field.ErrorList {
allErrs := ValidateObjectMeta(&serviceAccount.ObjectMeta, true, ValidateServiceAccountName, field.NewPath("metadata"))
return allErrs
}
// ValidateServiceAccountUpdate tests if required fields in the ServiceAccount are set.
-func ValidateServiceAccountUpdate(newServiceAccount, oldServiceAccount *api.ServiceAccount) field.ErrorList {
+func ValidateServiceAccountUpdate(newServiceAccount, oldServiceAccount *core.ServiceAccount) field.ErrorList {
allErrs := ValidateObjectMetaUpdate(&newServiceAccount.ObjectMeta, &oldServiceAccount.ObjectMeta, field.NewPath("metadata"))
allErrs = append(allErrs, ValidateServiceAccount(newServiceAccount)...)
return allErrs
}
// ValidateSecret tests if required fields in the Secret are set.
-func ValidateSecret(secret *api.Secret) field.ErrorList {
+func ValidateSecret(secret *core.Secret) field.ErrorList {
allErrs := ValidateObjectMeta(&secret.ObjectMeta, true, ValidateSecretName, field.NewPath("metadata"))
dataPath := field.NewPath("data")
@@ -3890,63 +3891,63 @@ func ValidateSecret(secret *api.Secret) field.ErrorList {
}
totalSize += len(value)
}
- if totalSize > api.MaxSecretSize {
- allErrs = append(allErrs, field.TooLong(dataPath, "", api.MaxSecretSize))
+ if totalSize > core.MaxSecretSize {
+ allErrs = append(allErrs, field.TooLong(dataPath, "", core.MaxSecretSize))
}
switch secret.Type {
- case api.SecretTypeServiceAccountToken:
+ case core.SecretTypeServiceAccountToken:
// Only require Annotations[kubernetes.io/service-account.name]
// Additional fields (like Annotations[kubernetes.io/service-account.uid] and Data[token]) might be contributed later by a controller loop
- if value := secret.Annotations[api.ServiceAccountNameKey]; len(value) == 0 {
- allErrs = append(allErrs, field.Required(field.NewPath("metadata", "annotations").Key(api.ServiceAccountNameKey), ""))
+ if value := secret.Annotations[core.ServiceAccountNameKey]; len(value) == 0 {
+ allErrs = append(allErrs, field.Required(field.NewPath("metadata", "annotations").Key(core.ServiceAccountNameKey), ""))
}
- case api.SecretTypeOpaque, "":
+ case core.SecretTypeOpaque, "":
// no-op
- case api.SecretTypeDockercfg:
- dockercfgBytes, exists := secret.Data[api.DockerConfigKey]
+ case core.SecretTypeDockercfg:
+ dockercfgBytes, exists := secret.Data[core.DockerConfigKey]
if !exists {
- allErrs = append(allErrs, field.Required(dataPath.Key(api.DockerConfigKey), ""))
+ allErrs = append(allErrs, field.Required(dataPath.Key(core.DockerConfigKey), ""))
break
}
// make sure that the content is well-formed json.
if err := json.Unmarshal(dockercfgBytes, &map[string]interface{}{}); err != nil {
- allErrs = append(allErrs, field.Invalid(dataPath.Key(api.DockerConfigKey), "", err.Error()))
+ allErrs = append(allErrs, field.Invalid(dataPath.Key(core.DockerConfigKey), "", err.Error()))
}
- case api.SecretTypeDockerConfigJson:
- dockerConfigJsonBytes, exists := secret.Data[api.DockerConfigJsonKey]
+ case core.SecretTypeDockerConfigJson:
+ dockerConfigJsonBytes, exists := secret.Data[core.DockerConfigJsonKey]
if !exists {
- allErrs = append(allErrs, field.Required(dataPath.Key(api.DockerConfigJsonKey), ""))
+ allErrs = append(allErrs, field.Required(dataPath.Key(core.DockerConfigJsonKey), ""))
break
}
// make sure that the content is well-formed json.
if err := json.Unmarshal(dockerConfigJsonBytes, &map[string]interface{}{}); err != nil {
- allErrs = append(allErrs, field.Invalid(dataPath.Key(api.DockerConfigJsonKey), "", err.Error()))
+ allErrs = append(allErrs, field.Invalid(dataPath.Key(core.DockerConfigJsonKey), "", err.Error()))
}
- case api.SecretTypeBasicAuth:
- _, usernameFieldExists := secret.Data[api.BasicAuthUsernameKey]
- _, passwordFieldExists := secret.Data[api.BasicAuthPasswordKey]
+ case core.SecretTypeBasicAuth:
+ _, usernameFieldExists := secret.Data[core.BasicAuthUsernameKey]
+ _, passwordFieldExists := secret.Data[core.BasicAuthPasswordKey]
// username or password might be empty, but the field must be present
if !usernameFieldExists && !passwordFieldExists {
- allErrs = append(allErrs, field.Required(field.NewPath("data[%s]").Key(api.BasicAuthUsernameKey), ""))
- allErrs = append(allErrs, field.Required(field.NewPath("data[%s]").Key(api.BasicAuthPasswordKey), ""))
+ allErrs = append(allErrs, field.Required(field.NewPath("data[%s]").Key(core.BasicAuthUsernameKey), ""))
+ allErrs = append(allErrs, field.Required(field.NewPath("data[%s]").Key(core.BasicAuthPasswordKey), ""))
break
}
- case api.SecretTypeSSHAuth:
- if len(secret.Data[api.SSHAuthPrivateKey]) == 0 {
- allErrs = append(allErrs, field.Required(field.NewPath("data[%s]").Key(api.SSHAuthPrivateKey), ""))
+ case core.SecretTypeSSHAuth:
+ if len(secret.Data[core.SSHAuthPrivateKey]) == 0 {
+ allErrs = append(allErrs, field.Required(field.NewPath("data[%s]").Key(core.SSHAuthPrivateKey), ""))
break
}
- case api.SecretTypeTLS:
- if _, exists := secret.Data[api.TLSCertKey]; !exists {
- allErrs = append(allErrs, field.Required(dataPath.Key(api.TLSCertKey), ""))
+ case core.SecretTypeTLS:
+ if _, exists := secret.Data[core.TLSCertKey]; !exists {
+ allErrs = append(allErrs, field.Required(dataPath.Key(core.TLSCertKey), ""))
}
- if _, exists := secret.Data[api.TLSPrivateKeyKey]; !exists {
- allErrs = append(allErrs, field.Required(dataPath.Key(api.TLSPrivateKeyKey), ""))
+ if _, exists := secret.Data[core.TLSPrivateKeyKey]; !exists {
+ allErrs = append(allErrs, field.Required(dataPath.Key(core.TLSPrivateKeyKey), ""))
}
// TODO: Verify that the key matches the cert.
default:
@@ -3957,7 +3958,7 @@ func ValidateSecret(secret *api.Secret) field.ErrorList {
}
// ValidateSecretUpdate tests if required fields in the Secret are set.
-func ValidateSecretUpdate(newSecret, oldSecret *api.Secret) field.ErrorList {
+func ValidateSecretUpdate(newSecret, oldSecret *core.Secret) field.ErrorList {
allErrs := ValidateObjectMetaUpdate(&newSecret.ObjectMeta, &oldSecret.ObjectMeta, field.NewPath("metadata"))
if len(newSecret.Type) == 0 {
@@ -3976,7 +3977,7 @@ func ValidateSecretUpdate(newSecret, oldSecret *api.Secret) field.ErrorList {
var ValidateConfigMapName = NameIsDNSSubdomain
// ValidateConfigMap tests whether required fields in the ConfigMap are set.
-func ValidateConfigMap(cfg *api.ConfigMap) field.ErrorList {
+func ValidateConfigMap(cfg *core.ConfigMap) field.ErrorList {
allErrs := field.ErrorList{}
allErrs = append(allErrs, ValidateObjectMeta(&cfg.ObjectMeta, true, ValidateConfigMapName, field.NewPath("metadata"))...)
@@ -3988,15 +3989,15 @@ func ValidateConfigMap(cfg *api.ConfigMap) field.ErrorList {
}
totalSize += len(value)
}
- if totalSize > api.MaxSecretSize {
- allErrs = append(allErrs, field.TooLong(field.NewPath("data"), "", api.MaxSecretSize))
+ if totalSize > core.MaxSecretSize {
+ allErrs = append(allErrs, field.TooLong(field.NewPath("data"), "", core.MaxSecretSize))
}
return allErrs
}
// ValidateConfigMapUpdate tests if required fields in the ConfigMap are set.
-func ValidateConfigMapUpdate(newCfg, oldCfg *api.ConfigMap) field.ErrorList {
+func ValidateConfigMapUpdate(newCfg, oldCfg *core.ConfigMap) field.ErrorList {
allErrs := field.ErrorList{}
allErrs = append(allErrs, ValidateObjectMetaUpdate(&newCfg.ObjectMeta, &oldCfg.ObjectMeta, field.NewPath("metadata"))...)
allErrs = append(allErrs, ValidateConfigMap(newCfg)...)
@@ -4012,7 +4013,7 @@ func validateBasicResource(quantity resource.Quantity, fldPath *field.Path) fiel
}
// Validates resource requirement spec.
-func ValidateResourceRequirements(requirements *api.ResourceRequirements, fldPath *field.Path) field.ErrorList {
+func ValidateResourceRequirements(requirements *core.ResourceRequirements, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
limPath := fldPath.Child("limits")
reqPath := fldPath.Child("requests")
@@ -4024,7 +4025,7 @@ func ValidateResourceRequirements(requirements *api.ResourceRequirements, fldPat
// Validate resource quantity.
allErrs = append(allErrs, ValidateResourceQuantityValue(string(resourceName), quantity, fldPath)...)
- if resourceName == api.ResourceEphemeralStorage && !utilfeature.DefaultFeatureGate.Enabled(features.LocalStorageCapacityIsolation) {
+ if resourceName == core.ResourceEphemeralStorage && !utilfeature.DefaultFeatureGate.Enabled(features.LocalStorageCapacityIsolation) {
allErrs = append(allErrs, field.Forbidden(limPath, "ResourceEphemeralStorage field disabled by feature-gate for ResourceRequirements"))
}
if helper.IsHugePageResourceName(resourceName) && !utilfeature.DefaultFeatureGate.Enabled(features.HugePages) {
@@ -4048,8 +4049,8 @@ func ValidateResourceRequirements(requirements *api.ResourceRequirements, fldPat
} else if quantity.Cmp(limitQuantity) > 0 {
allErrs = append(allErrs, field.Invalid(reqPath, quantity.String(), fmt.Sprintf("must be less than or equal to %s limit", resourceName)))
}
- } else if resourceName == api.ResourceNvidiaGPU {
- allErrs = append(allErrs, field.Invalid(reqPath, quantity.String(), fmt.Sprintf("must be equal to %s request", api.ResourceNvidiaGPU)))
+ } else if resourceName == core.ResourceNvidiaGPU {
+ allErrs = append(allErrs, field.Invalid(reqPath, quantity.String(), fmt.Sprintf("must be equal to %s request", core.ResourceNvidiaGPU)))
}
}
@@ -4057,7 +4058,7 @@ func ValidateResourceRequirements(requirements *api.ResourceRequirements, fldPat
}
// validateResourceQuotaScopes ensures that each enumerated hard resource constraint is valid for set of scopes
-func validateResourceQuotaScopes(resourceQuotaSpec *api.ResourceQuotaSpec, fld *field.Path) field.ErrorList {
+func validateResourceQuotaScopes(resourceQuotaSpec *core.ResourceQuotaSpec, fld *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if len(resourceQuotaSpec.Scopes) == 0 {
return allErrs
@@ -4080,8 +4081,8 @@ func validateResourceQuotaScopes(resourceQuotaSpec *api.ResourceQuotaSpec, fld *
scopeSet.Insert(string(scope))
}
invalidScopePairs := []sets.String{
- sets.NewString(string(api.ResourceQuotaScopeBestEffort), string(api.ResourceQuotaScopeNotBestEffort)),
- sets.NewString(string(api.ResourceQuotaScopeTerminating), string(api.ResourceQuotaScopeNotTerminating)),
+ sets.NewString(string(core.ResourceQuotaScopeBestEffort), string(core.ResourceQuotaScopeNotBestEffort)),
+ sets.NewString(string(core.ResourceQuotaScopeTerminating), string(core.ResourceQuotaScopeNotTerminating)),
}
for _, invalidScopePair := range invalidScopePairs {
if scopeSet.HasAll(invalidScopePair.List()...) {
@@ -4092,7 +4093,7 @@ func validateResourceQuotaScopes(resourceQuotaSpec *api.ResourceQuotaSpec, fld *
}
// ValidateResourceQuota tests if required fields in the ResourceQuota are set.
-func ValidateResourceQuota(resourceQuota *api.ResourceQuota) field.ErrorList {
+func ValidateResourceQuota(resourceQuota *core.ResourceQuota) field.ErrorList {
allErrs := ValidateObjectMeta(&resourceQuota.ObjectMeta, true, ValidateResourceQuotaName, field.NewPath("metadata"))
allErrs = append(allErrs, ValidateResourceQuotaSpec(&resourceQuota.Spec, field.NewPath("spec"))...)
@@ -4101,7 +4102,7 @@ func ValidateResourceQuota(resourceQuota *api.ResourceQuota) field.ErrorList {
return allErrs
}
-func ValidateResourceQuotaStatus(status *api.ResourceQuotaStatus, fld *field.Path) field.ErrorList {
+func ValidateResourceQuotaStatus(status *core.ResourceQuotaStatus, fld *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
fldPath := fld.Child("hard")
@@ -4120,7 +4121,7 @@ func ValidateResourceQuotaStatus(status *api.ResourceQuotaStatus, fld *field.Pat
return allErrs
}
-func ValidateResourceQuotaSpec(resourceQuotaSpec *api.ResourceQuotaSpec, fld *field.Path) field.ErrorList {
+func ValidateResourceQuotaSpec(resourceQuotaSpec *core.ResourceQuotaSpec, fld *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
fldPath := fld.Child("hard")
@@ -4148,7 +4149,7 @@ func ValidateResourceQuantityValue(resource string, value resource.Quantity, fld
// ValidateResourceQuotaUpdate tests to see if the update is legal for an end user to make.
// newResourceQuota is updated with fields that cannot be changed.
-func ValidateResourceQuotaUpdate(newResourceQuota, oldResourceQuota *api.ResourceQuota) field.ErrorList {
+func ValidateResourceQuotaUpdate(newResourceQuota, oldResourceQuota *core.ResourceQuota) field.ErrorList {
allErrs := ValidateObjectMetaUpdate(&newResourceQuota.ObjectMeta, &oldResourceQuota.ObjectMeta, field.NewPath("metadata"))
allErrs = append(allErrs, ValidateResourceQuotaSpec(&newResourceQuota.Spec, field.NewPath("spec"))...)
@@ -4172,7 +4173,7 @@ func ValidateResourceQuotaUpdate(newResourceQuota, oldResourceQuota *api.Resourc
// ValidateResourceQuotaStatusUpdate tests to see if the status update is legal for an end user to make.
// newResourceQuota is updated with fields that cannot be changed.
-func ValidateResourceQuotaStatusUpdate(newResourceQuota, oldResourceQuota *api.ResourceQuota) field.ErrorList {
+func ValidateResourceQuotaStatusUpdate(newResourceQuota, oldResourceQuota *core.ResourceQuota) field.ErrorList {
allErrs := ValidateObjectMetaUpdate(&newResourceQuota.ObjectMeta, &oldResourceQuota.ObjectMeta, field.NewPath("metadata"))
if len(newResourceQuota.ResourceVersion) == 0 {
allErrs = append(allErrs, field.Required(field.NewPath("resourceVersion"), ""))
@@ -4194,7 +4195,7 @@ func ValidateResourceQuotaStatusUpdate(newResourceQuota, oldResourceQuota *api.R
}
// ValidateNamespace tests if required fields are set.
-func ValidateNamespace(namespace *api.Namespace) field.ErrorList {
+func ValidateNamespace(namespace *core.Namespace) field.ErrorList {
allErrs := ValidateObjectMeta(&namespace.ObjectMeta, false, ValidateNamespaceName, field.NewPath("metadata"))
for i := range namespace.Spec.Finalizers {
allErrs = append(allErrs, validateFinalizerName(string(namespace.Spec.Finalizers[i]), field.NewPath("spec", "finalizers"))...)
@@ -4226,7 +4227,7 @@ func validateKubeFinalizerName(stringValue string, fldPath *field.Path) field.Er
// ValidateNamespaceUpdate tests to make sure a namespace update can be applied.
// newNamespace is updated with fields that cannot be changed
-func ValidateNamespaceUpdate(newNamespace *api.Namespace, oldNamespace *api.Namespace) field.ErrorList {
+func ValidateNamespaceUpdate(newNamespace *core.Namespace, oldNamespace *core.Namespace) field.ErrorList {
allErrs := ValidateObjectMetaUpdate(&newNamespace.ObjectMeta, &oldNamespace.ObjectMeta, field.NewPath("metadata"))
newNamespace.Spec.Finalizers = oldNamespace.Spec.Finalizers
newNamespace.Status = oldNamespace.Status
@@ -4235,15 +4236,15 @@ func ValidateNamespaceUpdate(newNamespace *api.Namespace, oldNamespace *api.Name
// ValidateNamespaceStatusUpdate tests to see if the update is legal for an end user to make. newNamespace is updated with fields
// that cannot be changed.
-func ValidateNamespaceStatusUpdate(newNamespace, oldNamespace *api.Namespace) field.ErrorList {
+func ValidateNamespaceStatusUpdate(newNamespace, oldNamespace *core.Namespace) field.ErrorList {
allErrs := ValidateObjectMetaUpdate(&newNamespace.ObjectMeta, &oldNamespace.ObjectMeta, field.NewPath("metadata"))
newNamespace.Spec = oldNamespace.Spec
if newNamespace.DeletionTimestamp.IsZero() {
- if newNamespace.Status.Phase != api.NamespaceActive {
+ if newNamespace.Status.Phase != core.NamespaceActive {
allErrs = append(allErrs, field.Invalid(field.NewPath("status", "Phase"), newNamespace.Status.Phase, "may only be 'Active' if `deletionTimestamp` is empty"))
}
} else {
- if newNamespace.Status.Phase != api.NamespaceTerminating {
+ if newNamespace.Status.Phase != core.NamespaceTerminating {
allErrs = append(allErrs, field.Invalid(field.NewPath("status", "Phase"), newNamespace.Status.Phase, "may only be 'Terminating' if `deletionTimestamp` is not empty"))
}
}
@@ -4252,7 +4253,7 @@ func ValidateNamespaceStatusUpdate(newNamespace, oldNamespace *api.Namespace) fi
// ValidateNamespaceFinalizeUpdate tests to see if the update is legal for an end user to make.
// newNamespace is updated with fields that cannot be changed.
-func ValidateNamespaceFinalizeUpdate(newNamespace, oldNamespace *api.Namespace) field.ErrorList {
+func ValidateNamespaceFinalizeUpdate(newNamespace, oldNamespace *core.Namespace) field.ErrorList {
allErrs := ValidateObjectMetaUpdate(&newNamespace.ObjectMeta, &oldNamespace.ObjectMeta, field.NewPath("metadata"))
fldPath := field.NewPath("spec", "finalizers")
@@ -4265,7 +4266,7 @@ func ValidateNamespaceFinalizeUpdate(newNamespace, oldNamespace *api.Namespace)
}
// Construct lookup map of old subset IPs to NodeNames.
-func updateEpAddrToNodeNameMap(ipToNodeName map[string]string, addresses []api.EndpointAddress) {
+func updateEpAddrToNodeNameMap(ipToNodeName map[string]string, addresses []core.EndpointAddress) {
for n := range addresses {
if addresses[n].NodeName == nil {
continue
@@ -4275,7 +4276,7 @@ func updateEpAddrToNodeNameMap(ipToNodeName map[string]string, addresses []api.E
}
// Build a map across all subsets of IP -> NodeName
-func buildEndpointAddressNodeNameMap(subsets []api.EndpointSubset) map[string]string {
+func buildEndpointAddressNodeNameMap(subsets []core.EndpointSubset) map[string]string {
ipToNodeName := make(map[string]string)
for i := range subsets {
updateEpAddrToNodeNameMap(ipToNodeName, subsets[i].Addresses)
@@ -4284,7 +4285,7 @@ func buildEndpointAddressNodeNameMap(subsets []api.EndpointSubset) map[string]st
return ipToNodeName
}
-func validateEpAddrNodeNameTransition(addr *api.EndpointAddress, ipToNodeName map[string]string, fldPath *field.Path) field.ErrorList {
+func validateEpAddrNodeNameTransition(addr *core.EndpointAddress, ipToNodeName map[string]string, fldPath *field.Path) field.ErrorList {
errList := field.ErrorList{}
existingNodeName, found := ipToNodeName[addr.IP]
if !found {
@@ -4298,14 +4299,14 @@ func validateEpAddrNodeNameTransition(addr *api.EndpointAddress, ipToNodeName ma
}
// ValidateEndpoints tests if required fields are set.
-func ValidateEndpoints(endpoints *api.Endpoints) field.ErrorList {
+func ValidateEndpoints(endpoints *core.Endpoints) field.ErrorList {
allErrs := ValidateObjectMeta(&endpoints.ObjectMeta, true, ValidateEndpointsName, field.NewPath("metadata"))
allErrs = append(allErrs, ValidateEndpointsSpecificAnnotations(endpoints.Annotations, field.NewPath("annotations"))...)
- allErrs = append(allErrs, validateEndpointSubsets(endpoints.Subsets, []api.EndpointSubset{}, field.NewPath("subsets"))...)
+ allErrs = append(allErrs, validateEndpointSubsets(endpoints.Subsets, []core.EndpointSubset{}, field.NewPath("subsets"))...)
return allErrs
}
-func validateEndpointSubsets(subsets []api.EndpointSubset, oldSubsets []api.EndpointSubset, fldPath *field.Path) field.ErrorList {
+func validateEndpointSubsets(subsets []core.EndpointSubset, oldSubsets []core.EndpointSubset, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
ipToNodeName := buildEndpointAddressNodeNameMap(oldSubsets)
for i := range subsets {
@@ -4331,7 +4332,7 @@ func validateEndpointSubsets(subsets []api.EndpointSubset, oldSubsets []api.Endp
return allErrs
}
-func validateEndpointAddress(address *api.EndpointAddress, fldPath *field.Path, ipToNodeName map[string]string) field.ErrorList {
+func validateEndpointAddress(address *core.EndpointAddress, fldPath *field.Path, ipToNodeName map[string]string) field.ErrorList {
allErrs := field.ErrorList{}
for _, msg := range validation.IsValidIP(address.IP) {
allErrs = append(allErrs, field.Invalid(fldPath.Child("ip"), address.IP, msg))
@@ -4379,7 +4380,7 @@ func validateNonSpecialIP(ipAddress string, fldPath *field.Path) field.ErrorList
return allErrs
}
-func validateEndpointPort(port *api.EndpointPort, requireName bool, fldPath *field.Path) field.ErrorList {
+func validateEndpointPort(port *core.EndpointPort, requireName bool, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
if requireName && len(port.Name) == 0 {
allErrs = append(allErrs, field.Required(fldPath.Child("name"), ""))
@@ -4398,7 +4399,7 @@ func validateEndpointPort(port *api.EndpointPort, requireName bool, fldPath *fie
}
// ValidateEndpointsUpdate tests to make sure an endpoints update can be applied.
-func ValidateEndpointsUpdate(newEndpoints, oldEndpoints *api.Endpoints) field.ErrorList {
+func ValidateEndpointsUpdate(newEndpoints, oldEndpoints *core.Endpoints) field.ErrorList {
allErrs := ValidateObjectMetaUpdate(&newEndpoints.ObjectMeta, &oldEndpoints.ObjectMeta, field.NewPath("metadata"))
allErrs = append(allErrs, validateEndpointSubsets(newEndpoints.Subsets, oldEndpoints.Subsets, field.NewPath("subsets"))...)
allErrs = append(allErrs, ValidateEndpointsSpecificAnnotations(newEndpoints.Annotations, field.NewPath("annotations"))...)
@@ -4406,9 +4407,9 @@ func ValidateEndpointsUpdate(newEndpoints, oldEndpoints *api.Endpoints) field.Er
}
// ValidateSecurityContext ensure the security context contains valid settings
-func ValidateSecurityContext(sc *api.SecurityContext, fldPath *field.Path) field.ErrorList {
+func ValidateSecurityContext(sc *core.SecurityContext, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
- //this should only be true for testing since SecurityContext is defaulted by the api
+ //this should only be true for testing since SecurityContext is defaulted by the core
if sc == nil {
return allErrs
}
@@ -4442,7 +4443,7 @@ func ValidateSecurityContext(sc *api.SecurityContext, fldPath *field.Path) field
return allErrs
}
-func ValidatePodLogOptions(opts *api.PodLogOptions) field.ErrorList {
+func ValidatePodLogOptions(opts *core.PodLogOptions) field.ErrorList {
allErrs := field.ErrorList{}
if opts.TailLines != nil && *opts.TailLines < 0 {
allErrs = append(allErrs, field.Invalid(field.NewPath("tailLines"), *opts.TailLines, isNegativeErrorMsg))
@@ -4462,7 +4463,7 @@ func ValidatePodLogOptions(opts *api.PodLogOptions) field.ErrorList {
}
// ValidateLoadBalancerStatus validates required fields on a LoadBalancerStatus
-func ValidateLoadBalancerStatus(status *api.LoadBalancerStatus, fldPath *field.Path) field.ErrorList {
+func ValidateLoadBalancerStatus(status *core.LoadBalancerStatus, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
for i, ingress := range status.Ingress {
idxPath := fldPath.Child("ingress").Index(i)
@@ -4483,7 +4484,7 @@ func ValidateLoadBalancerStatus(status *api.LoadBalancerStatus, fldPath *field.P
return allErrs
}
-func sysctlIntersection(a []api.Sysctl, b []api.Sysctl) []string {
+func sysctlIntersection(a []core.Sysctl, b []core.Sysctl) []string {
lookup := make(map[string]struct{}, len(a))
result := []string{}
for i := range a {
@@ -4503,7 +4504,7 @@ func validateStorageNodeAffinityAnnotation(annotations map[string]string, fldPat
na, err := helper.GetStorageNodeAffinityFromAnnotation(annotations)
if err != nil {
- allErrs = append(allErrs, field.Invalid(fldPath, api.AlphaStorageNodeAffinityAnnotation, err.Error()))
+ allErrs = append(allErrs, field.Invalid(fldPath, core.AlphaStorageNodeAffinityAnnotation, err.Error()))
return false, allErrs
}
if na == nil {
diff --git a/pkg/api/validation/validation_test.go b/pkg/apis/core/validation/validation_test.go
similarity index 60%
rename from pkg/api/validation/validation_test.go
rename to pkg/apis/core/validation/validation_test.go
index 224651cdc9..c0aed791b6 100644
--- a/pkg/api/validation/validation_test.go
+++ b/pkg/apis/core/validation/validation_test.go
@@ -30,10 +30,11 @@ import (
"k8s.io/apimachinery/pkg/util/validation"
"k8s.io/apimachinery/pkg/util/validation/field"
utilfeature "k8s.io/apiserver/pkg/util/feature"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/helper"
"k8s.io/kubernetes/pkg/api/legacyscheme"
_ "k8s.io/kubernetes/pkg/api/testapi"
+ "k8s.io/kubernetes/pkg/apis/core"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
"k8s.io/kubernetes/pkg/capabilities"
"k8s.io/kubernetes/pkg/security/apparmor"
)
@@ -44,25 +45,25 @@ const (
envVarNameErrMsg = "a valid environment variable name must consist of"
)
-func newHostPathType(pathType string) *api.HostPathType {
- hostPathType := new(api.HostPathType)
- *hostPathType = api.HostPathType(pathType)
+func newHostPathType(pathType string) *core.HostPathType {
+ hostPathType := new(core.HostPathType)
+ *hostPathType = core.HostPathType(pathType)
return hostPathType
}
-func testVolume(name string, namespace string, spec api.PersistentVolumeSpec) *api.PersistentVolume {
+func testVolume(name string, namespace string, spec core.PersistentVolumeSpec) *core.PersistentVolume {
objMeta := metav1.ObjectMeta{Name: name}
if namespace != "" {
objMeta.Namespace = namespace
}
- return &api.PersistentVolume{
+ return &core.PersistentVolume{
ObjectMeta: objMeta,
Spec: spec,
}
}
-func testVolumeWithNodeAffinity(t *testing.T, name string, namespace string, affinity *api.NodeAffinity, spec api.PersistentVolumeSpec) *api.PersistentVolume {
+func testVolumeWithNodeAffinity(t *testing.T, name string, namespace string, affinity *core.NodeAffinity, spec core.PersistentVolumeSpec) *core.PersistentVolume {
objMeta := metav1.ObjectMeta{Name: name}
if namespace != "" {
objMeta.Namespace = namespace
@@ -74,7 +75,7 @@ func testVolumeWithNodeAffinity(t *testing.T, name string, namespace string, aff
t.Fatalf("Failed to get node affinity annotation: %v", err)
}
- return &api.PersistentVolume{
+ return &core.PersistentVolume{
ObjectMeta: objMeta,
Spec: spec,
}
@@ -83,19 +84,64 @@ func testVolumeWithNodeAffinity(t *testing.T, name string, namespace string, aff
func TestValidatePersistentVolumes(t *testing.T) {
scenarios := map[string]struct {
isExpectedFailure bool
- volume *api.PersistentVolume
+ volume *core.PersistentVolume
}{
"good-volume": {
isExpectedFailure: false,
- volume: testVolume("foo", "", api.PersistentVolumeSpec{
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ volume: testVolume("foo", "", core.PersistentVolumeSpec{
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
- AccessModes: []api.PersistentVolumeAccessMode{api.ReadWriteOnce},
- PersistentVolumeSource: api.PersistentVolumeSource{
- HostPath: &api.HostPathVolumeSource{
+ AccessModes: []core.PersistentVolumeAccessMode{core.ReadWriteOnce},
+ PersistentVolumeSource: core.PersistentVolumeSource{
+ HostPath: &core.HostPathVolumeSource{
Path: "/foo",
- Type: newHostPathType(string(api.HostPathDirectory)),
+ Type: newHostPathType(string(core.HostPathDirectory)),
+ },
+ },
+ }),
+ },
+ "good-volume-with-capacity-unit": {
+ isExpectedFailure: false,
+ volume: testVolume("foo", "", core.PersistentVolumeSpec{
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10Gi"),
+ },
+ AccessModes: []core.PersistentVolumeAccessMode{core.ReadWriteOnce},
+ PersistentVolumeSource: core.PersistentVolumeSource{
+ HostPath: &core.HostPathVolumeSource{
+ Path: "/foo",
+ Type: newHostPathType(string(core.HostPathDirectory)),
+ },
+ },
+ }),
+ },
+ "good-volume-without-capacity-unit": {
+ isExpectedFailure: false,
+ volume: testVolume("foo", "", core.PersistentVolumeSpec{
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10"),
+ },
+ AccessModes: []core.PersistentVolumeAccessMode{core.ReadWriteOnce},
+ PersistentVolumeSource: core.PersistentVolumeSource{
+ HostPath: &core.HostPathVolumeSource{
+ Path: "/foo",
+ Type: newHostPathType(string(core.HostPathDirectory)),
+ },
+ },
+ }),
+ },
+ "good-volume-with-storage-class": {
+ isExpectedFailure: false,
+ volume: testVolume("foo", "", core.PersistentVolumeSpec{
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
+ },
+ AccessModes: []core.PersistentVolumeAccessMode{core.ReadWriteOnce},
+ PersistentVolumeSource: core.PersistentVolumeSource{
+ HostPath: &core.HostPathVolumeSource{
+ Path: "/foo",
+ Type: newHostPathType(string(core.HostPathDirectory)),
},
},
StorageClassName: "valid",
@@ -103,46 +149,46 @@ func TestValidatePersistentVolumes(t *testing.T) {
},
"good-volume-with-retain-policy": {
isExpectedFailure: false,
- volume: testVolume("foo", "", api.PersistentVolumeSpec{
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ volume: testVolume("foo", "", core.PersistentVolumeSpec{
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
- AccessModes: []api.PersistentVolumeAccessMode{api.ReadWriteOnce},
- PersistentVolumeSource: api.PersistentVolumeSource{
- HostPath: &api.HostPathVolumeSource{
+ AccessModes: []core.PersistentVolumeAccessMode{core.ReadWriteOnce},
+ PersistentVolumeSource: core.PersistentVolumeSource{
+ HostPath: &core.HostPathVolumeSource{
Path: "/foo",
- Type: newHostPathType(string(api.HostPathDirectory)),
+ Type: newHostPathType(string(core.HostPathDirectory)),
},
},
- PersistentVolumeReclaimPolicy: api.PersistentVolumeReclaimRetain,
+ PersistentVolumeReclaimPolicy: core.PersistentVolumeReclaimRetain,
}),
},
"invalid-accessmode": {
isExpectedFailure: true,
- volume: testVolume("foo", "", api.PersistentVolumeSpec{
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ volume: testVolume("foo", "", core.PersistentVolumeSpec{
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
- AccessModes: []api.PersistentVolumeAccessMode{"fakemode"},
- PersistentVolumeSource: api.PersistentVolumeSource{
- HostPath: &api.HostPathVolumeSource{
+ AccessModes: []core.PersistentVolumeAccessMode{"fakemode"},
+ PersistentVolumeSource: core.PersistentVolumeSource{
+ HostPath: &core.HostPathVolumeSource{
Path: "/foo",
- Type: newHostPathType(string(api.HostPathDirectory)),
+ Type: newHostPathType(string(core.HostPathDirectory)),
},
},
}),
},
"invalid-reclaimpolicy": {
isExpectedFailure: true,
- volume: testVolume("foo", "", api.PersistentVolumeSpec{
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ volume: testVolume("foo", "", core.PersistentVolumeSpec{
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
- AccessModes: []api.PersistentVolumeAccessMode{api.ReadWriteOnce},
- PersistentVolumeSource: api.PersistentVolumeSource{
- HostPath: &api.HostPathVolumeSource{
+ AccessModes: []core.PersistentVolumeAccessMode{core.ReadWriteOnce},
+ PersistentVolumeSource: core.PersistentVolumeSource{
+ HostPath: &core.HostPathVolumeSource{
Path: "/foo",
- Type: newHostPathType(string(api.HostPathDirectory)),
+ Type: newHostPathType(string(core.HostPathDirectory)),
},
},
PersistentVolumeReclaimPolicy: "fakeReclaimPolicy",
@@ -150,119 +196,157 @@ func TestValidatePersistentVolumes(t *testing.T) {
},
"unexpected-namespace": {
isExpectedFailure: true,
- volume: testVolume("foo", "unexpected-namespace", api.PersistentVolumeSpec{
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ volume: testVolume("foo", "unexpected-namespace", core.PersistentVolumeSpec{
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
- AccessModes: []api.PersistentVolumeAccessMode{api.ReadWriteOnce},
- PersistentVolumeSource: api.PersistentVolumeSource{
- HostPath: &api.HostPathVolumeSource{
+ AccessModes: []core.PersistentVolumeAccessMode{core.ReadWriteOnce},
+ PersistentVolumeSource: core.PersistentVolumeSource{
+ HostPath: &core.HostPathVolumeSource{
Path: "/foo",
- Type: newHostPathType(string(api.HostPathDirectory)),
+ Type: newHostPathType(string(core.HostPathDirectory)),
},
},
}),
},
+ "missing-volume-source": {
+ isExpectedFailure: true,
+ volume: testVolume("foo", "", core.PersistentVolumeSpec{
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
+ },
+ AccessModes: []core.PersistentVolumeAccessMode{core.ReadWriteOnce},
+ }),
+ },
"bad-name": {
isExpectedFailure: true,
- volume: testVolume("123*Bad(Name", "unexpected-namespace", api.PersistentVolumeSpec{
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ volume: testVolume("123*Bad(Name", "unexpected-namespace", core.PersistentVolumeSpec{
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
- AccessModes: []api.PersistentVolumeAccessMode{api.ReadWriteOnce},
- PersistentVolumeSource: api.PersistentVolumeSource{
- HostPath: &api.HostPathVolumeSource{
+ AccessModes: []core.PersistentVolumeAccessMode{core.ReadWriteOnce},
+ PersistentVolumeSource: core.PersistentVolumeSource{
+ HostPath: &core.HostPathVolumeSource{
Path: "/foo",
- Type: newHostPathType(string(api.HostPathDirectory)),
+ Type: newHostPathType(string(core.HostPathDirectory)),
},
},
}),
},
"missing-name": {
isExpectedFailure: true,
- volume: testVolume("", "", api.PersistentVolumeSpec{
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ volume: testVolume("", "", core.PersistentVolumeSpec{
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
+ },
+ AccessModes: []core.PersistentVolumeAccessMode{core.ReadWriteOnce},
+ PersistentVolumeSource: core.PersistentVolumeSource{
+ HostPath: &core.HostPathVolumeSource{
+ Path: "/foo",
+ Type: newHostPathType(string(core.HostPathDirectory)),
+ },
},
- AccessModes: []api.PersistentVolumeAccessMode{api.ReadWriteOnce},
}),
},
"missing-capacity": {
isExpectedFailure: true,
- volume: testVolume("foo", "", api.PersistentVolumeSpec{}),
+ volume: testVolume("foo", "", core.PersistentVolumeSpec{
+ AccessModes: []core.PersistentVolumeAccessMode{core.ReadWriteOnce},
+ PersistentVolumeSource: core.PersistentVolumeSource{
+ HostPath: &core.HostPathVolumeSource{
+ Path: "/foo",
+ Type: newHostPathType(string(core.HostPathDirectory)),
+ },
+ },
+ }),
+ },
+ "bad-volume-zero-capacity": {
+ isExpectedFailure: true,
+ volume: testVolume("foo", "", core.PersistentVolumeSpec{
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("0"),
+ },
+ AccessModes: []core.PersistentVolumeAccessMode{core.ReadWriteOnce},
+ PersistentVolumeSource: core.PersistentVolumeSource{
+ HostPath: &core.HostPathVolumeSource{
+ Path: "/foo",
+ Type: newHostPathType(string(core.HostPathDirectory)),
+ },
+ },
+ }),
},
"missing-accessmodes": {
isExpectedFailure: true,
- volume: testVolume("goodname", "missing-accessmodes", api.PersistentVolumeSpec{
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ volume: testVolume("goodname", "missing-accessmodes", core.PersistentVolumeSpec{
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
- PersistentVolumeSource: api.PersistentVolumeSource{
- HostPath: &api.HostPathVolumeSource{
+ PersistentVolumeSource: core.PersistentVolumeSource{
+ HostPath: &core.HostPathVolumeSource{
Path: "/foo",
- Type: newHostPathType(string(api.HostPathDirectory)),
+ Type: newHostPathType(string(core.HostPathDirectory)),
},
},
}),
},
"too-many-sources": {
isExpectedFailure: true,
- volume: testVolume("", "", api.PersistentVolumeSpec{
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("5G"),
+ volume: testVolume("foo", "", core.PersistentVolumeSpec{
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("5G"),
},
- PersistentVolumeSource: api.PersistentVolumeSource{
- HostPath: &api.HostPathVolumeSource{
+ PersistentVolumeSource: core.PersistentVolumeSource{
+ HostPath: &core.HostPathVolumeSource{
Path: "/foo",
- Type: newHostPathType(string(api.HostPathDirectory)),
+ Type: newHostPathType(string(core.HostPathDirectory)),
},
- GCEPersistentDisk: &api.GCEPersistentDiskVolumeSource{PDName: "foo", FSType: "ext4"},
+ GCEPersistentDisk: &core.GCEPersistentDiskVolumeSource{PDName: "foo", FSType: "ext4"},
},
}),
},
"host mount of / with recycle reclaim policy": {
isExpectedFailure: true,
- volume: testVolume("bad-recycle-do-not-want", "", api.PersistentVolumeSpec{
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ volume: testVolume("bad-recycle-do-not-want", "", core.PersistentVolumeSpec{
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
- AccessModes: []api.PersistentVolumeAccessMode{api.ReadWriteOnce},
- PersistentVolumeSource: api.PersistentVolumeSource{
- HostPath: &api.HostPathVolumeSource{
+ AccessModes: []core.PersistentVolumeAccessMode{core.ReadWriteOnce},
+ PersistentVolumeSource: core.PersistentVolumeSource{
+ HostPath: &core.HostPathVolumeSource{
Path: "/",
- Type: newHostPathType(string(api.HostPathDirectory)),
+ Type: newHostPathType(string(core.HostPathDirectory)),
},
},
- PersistentVolumeReclaimPolicy: api.PersistentVolumeReclaimRecycle,
+ PersistentVolumeReclaimPolicy: core.PersistentVolumeReclaimRecycle,
}),
},
"host mount of / with recycle reclaim policy 2": {
isExpectedFailure: true,
- volume: testVolume("bad-recycle-do-not-want", "", api.PersistentVolumeSpec{
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ volume: testVolume("bad-recycle-do-not-want", "", core.PersistentVolumeSpec{
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
- AccessModes: []api.PersistentVolumeAccessMode{api.ReadWriteOnce},
- PersistentVolumeSource: api.PersistentVolumeSource{
- HostPath: &api.HostPathVolumeSource{
+ AccessModes: []core.PersistentVolumeAccessMode{core.ReadWriteOnce},
+ PersistentVolumeSource: core.PersistentVolumeSource{
+ HostPath: &core.HostPathVolumeSource{
Path: "/a/..",
- Type: newHostPathType(string(api.HostPathDirectory)),
+ Type: newHostPathType(string(core.HostPathDirectory)),
},
},
- PersistentVolumeReclaimPolicy: api.PersistentVolumeReclaimRecycle,
+ PersistentVolumeReclaimPolicy: core.PersistentVolumeReclaimRecycle,
}),
},
"invalid-storage-class-name": {
isExpectedFailure: true,
- volume: testVolume("invalid-storage-class-name", "", api.PersistentVolumeSpec{
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ volume: testVolume("invalid-storage-class-name", "", core.PersistentVolumeSpec{
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
- AccessModes: []api.PersistentVolumeAccessMode{api.ReadWriteOnce},
- PersistentVolumeSource: api.PersistentVolumeSource{
- HostPath: &api.HostPathVolumeSource{
+ AccessModes: []core.PersistentVolumeAccessMode{core.ReadWriteOnce},
+ PersistentVolumeSource: core.PersistentVolumeSource{
+ HostPath: &core.HostPathVolumeSource{
Path: "/foo",
- Type: newHostPathType(string(api.HostPathDirectory)),
+ Type: newHostPathType(string(core.HostPathDirectory)),
},
},
StorageClassName: "-invalid-",
@@ -276,14 +360,14 @@ func TestValidatePersistentVolumes(t *testing.T) {
t,
"valid-local-volume",
"",
- &api.NodeAffinity{
- RequiredDuringSchedulingIgnoredDuringExecution: &api.NodeSelector{
- NodeSelectorTerms: []api.NodeSelectorTerm{
+ &core.NodeAffinity{
+ RequiredDuringSchedulingIgnoredDuringExecution: &core.NodeSelector{
+ NodeSelectorTerms: []core.NodeSelectorTerm{
{
- MatchExpressions: []api.NodeSelectorRequirement{
+ MatchExpressions: []core.NodeSelectorRequirement{
{
Key: "test-label-key",
- Operator: api.NodeSelectorOpIn,
+ Operator: core.NodeSelectorOpIn,
Values: []string{"test-label-value"},
},
},
@@ -291,13 +375,13 @@ func TestValidatePersistentVolumes(t *testing.T) {
},
},
},
- api.PersistentVolumeSpec{
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ core.PersistentVolumeSpec{
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
- AccessModes: []api.PersistentVolumeAccessMode{api.ReadWriteOnce},
- PersistentVolumeSource: api.PersistentVolumeSource{
- Local: &api.LocalVolumeSource{
+ AccessModes: []core.PersistentVolumeAccessMode{core.ReadWriteOnce},
+ PersistentVolumeSource: core.PersistentVolumeSource{
+ Local: &core.LocalVolumeSource{
Path: "/foo",
},
},
@@ -306,15 +390,15 @@ func TestValidatePersistentVolumes(t *testing.T) {
},
"bad-hostpath-volume-backsteps": {
isExpectedFailure: true,
- volume: testVolume("foo", "", api.PersistentVolumeSpec{
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ volume: testVolume("foo", "", core.PersistentVolumeSpec{
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
- AccessModes: []api.PersistentVolumeAccessMode{api.ReadWriteOnce},
- PersistentVolumeSource: api.PersistentVolumeSource{
- HostPath: &api.HostPathVolumeSource{
+ AccessModes: []core.PersistentVolumeAccessMode{core.ReadWriteOnce},
+ PersistentVolumeSource: core.PersistentVolumeSource{
+ HostPath: &core.HostPathVolumeSource{
Path: "/foo/..",
- Type: newHostPathType(string(api.HostPathDirectory)),
+ Type: newHostPathType(string(core.HostPathDirectory)),
},
},
StorageClassName: "backstep-hostpath",
@@ -322,13 +406,13 @@ func TestValidatePersistentVolumes(t *testing.T) {
},
"bad-local-volume-backsteps": {
isExpectedFailure: true,
- volume: testVolume("foo", "", api.PersistentVolumeSpec{
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ volume: testVolume("foo", "", core.PersistentVolumeSpec{
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
- AccessModes: []api.PersistentVolumeAccessMode{api.ReadWriteOnce},
- PersistentVolumeSource: api.PersistentVolumeSource{
- Local: &api.LocalVolumeSource{
+ AccessModes: []core.PersistentVolumeAccessMode{core.ReadWriteOnce},
+ PersistentVolumeSource: core.PersistentVolumeSource{
+ Local: &core.LocalVolumeSource{
Path: "/foo/..",
},
},
@@ -413,7 +497,7 @@ func TestValidatePersistentVolumeSourceUpdate(t *testing.T) {
func TestValidateLocalVolumes(t *testing.T) {
scenarios := map[string]struct {
isExpectedFailure bool
- volume *api.PersistentVolume
+ volume *core.PersistentVolume
}{
"valid local volume": {
isExpectedFailure: false,
@@ -421,14 +505,14 @@ func TestValidateLocalVolumes(t *testing.T) {
t,
"valid-local-volume",
"",
- &api.NodeAffinity{
- RequiredDuringSchedulingIgnoredDuringExecution: &api.NodeSelector{
- NodeSelectorTerms: []api.NodeSelectorTerm{
+ &core.NodeAffinity{
+ RequiredDuringSchedulingIgnoredDuringExecution: &core.NodeSelector{
+ NodeSelectorTerms: []core.NodeSelectorTerm{
{
- MatchExpressions: []api.NodeSelectorRequirement{
+ MatchExpressions: []core.NodeSelectorRequirement{
{
Key: "test-label-key",
- Operator: api.NodeSelectorOpIn,
+ Operator: core.NodeSelectorOpIn,
Values: []string{"test-label-value"},
},
},
@@ -436,13 +520,13 @@ func TestValidateLocalVolumes(t *testing.T) {
},
},
},
- api.PersistentVolumeSpec{
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ core.PersistentVolumeSpec{
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
- AccessModes: []api.PersistentVolumeAccessMode{api.ReadWriteOnce},
- PersistentVolumeSource: api.PersistentVolumeSource{
- Local: &api.LocalVolumeSource{
+ AccessModes: []core.PersistentVolumeAccessMode{core.ReadWriteOnce},
+ PersistentVolumeSource: core.PersistentVolumeSource{
+ Local: &core.LocalVolumeSource{
Path: "/foo",
},
},
@@ -454,13 +538,13 @@ func TestValidateLocalVolumes(t *testing.T) {
volume: testVolume(
"invalid-local-volume-nil-annotations",
"",
- api.PersistentVolumeSpec{
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ core.PersistentVolumeSpec{
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
- AccessModes: []api.PersistentVolumeAccessMode{api.ReadWriteOnce},
- PersistentVolumeSource: api.PersistentVolumeSource{
- Local: &api.LocalVolumeSource{
+ AccessModes: []core.PersistentVolumeAccessMode{core.ReadWriteOnce},
+ PersistentVolumeSource: core.PersistentVolumeSource{
+ Local: &core.LocalVolumeSource{
Path: "/foo",
},
},
@@ -473,14 +557,14 @@ func TestValidateLocalVolumes(t *testing.T) {
t,
"invalid-local-volume-empty-affinity",
"",
- &api.NodeAffinity{},
- api.PersistentVolumeSpec{
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ &core.NodeAffinity{},
+ core.PersistentVolumeSpec{
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
- AccessModes: []api.PersistentVolumeAccessMode{api.ReadWriteOnce},
- PersistentVolumeSource: api.PersistentVolumeSource{
- Local: &api.LocalVolumeSource{
+ AccessModes: []core.PersistentVolumeAccessMode{core.ReadWriteOnce},
+ PersistentVolumeSource: core.PersistentVolumeSource{
+ Local: &core.LocalVolumeSource{
Path: "/foo",
},
},
@@ -493,28 +577,28 @@ func TestValidateLocalVolumes(t *testing.T) {
t,
"invalid-local-volume-preferred-affinity",
"",
- &api.NodeAffinity{
- RequiredDuringSchedulingIgnoredDuringExecution: &api.NodeSelector{
- NodeSelectorTerms: []api.NodeSelectorTerm{
+ &core.NodeAffinity{
+ RequiredDuringSchedulingIgnoredDuringExecution: &core.NodeSelector{
+ NodeSelectorTerms: []core.NodeSelectorTerm{
{
- MatchExpressions: []api.NodeSelectorRequirement{
+ MatchExpressions: []core.NodeSelectorRequirement{
{
Key: "test-label-key",
- Operator: api.NodeSelectorOpIn,
+ Operator: core.NodeSelectorOpIn,
Values: []string{"test-label-value"},
},
},
},
},
},
- PreferredDuringSchedulingIgnoredDuringExecution: []api.PreferredSchedulingTerm{
+ PreferredDuringSchedulingIgnoredDuringExecution: []core.PreferredSchedulingTerm{
{
Weight: 10,
- Preference: api.NodeSelectorTerm{
- MatchExpressions: []api.NodeSelectorRequirement{
+ Preference: core.NodeSelectorTerm{
+ MatchExpressions: []core.NodeSelectorRequirement{
{
Key: "test-label-key",
- Operator: api.NodeSelectorOpIn,
+ Operator: core.NodeSelectorOpIn,
Values: []string{"test-label-value"},
},
},
@@ -522,13 +606,13 @@ func TestValidateLocalVolumes(t *testing.T) {
},
},
},
- api.PersistentVolumeSpec{
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ core.PersistentVolumeSpec{
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
- AccessModes: []api.PersistentVolumeAccessMode{api.ReadWriteOnce},
- PersistentVolumeSource: api.PersistentVolumeSource{
- Local: &api.LocalVolumeSource{
+ AccessModes: []core.PersistentVolumeAccessMode{core.ReadWriteOnce},
+ PersistentVolumeSource: core.PersistentVolumeSource{
+ Local: &core.LocalVolumeSource{
Path: "/foo",
},
},
@@ -541,14 +625,14 @@ func TestValidateLocalVolumes(t *testing.T) {
t,
"invalid-local-volume-empty-path",
"",
- &api.NodeAffinity{
- RequiredDuringSchedulingIgnoredDuringExecution: &api.NodeSelector{
- NodeSelectorTerms: []api.NodeSelectorTerm{
+ &core.NodeAffinity{
+ RequiredDuringSchedulingIgnoredDuringExecution: &core.NodeSelector{
+ NodeSelectorTerms: []core.NodeSelectorTerm{
{
- MatchExpressions: []api.NodeSelectorRequirement{
+ MatchExpressions: []core.NodeSelectorRequirement{
{
Key: "test-label-key",
- Operator: api.NodeSelectorOpIn,
+ Operator: core.NodeSelectorOpIn,
Values: []string{"test-label-value"},
},
},
@@ -556,13 +640,13 @@ func TestValidateLocalVolumes(t *testing.T) {
},
},
},
- api.PersistentVolumeSpec{
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ core.PersistentVolumeSpec{
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
- AccessModes: []api.PersistentVolumeAccessMode{api.ReadWriteOnce},
- PersistentVolumeSource: api.PersistentVolumeSource{
- Local: &api.LocalVolumeSource{},
+ AccessModes: []core.PersistentVolumeAccessMode{core.ReadWriteOnce},
+ PersistentVolumeSource: core.PersistentVolumeSource{
+ Local: &core.LocalVolumeSource{},
},
StorageClassName: "test-storage-class",
}),
@@ -585,8 +669,8 @@ func TestValidateLocalVolumes(t *testing.T) {
}
}
-func testVolumeClaim(name string, namespace string, spec api.PersistentVolumeClaimSpec) *api.PersistentVolumeClaim {
- return &api.PersistentVolumeClaim{
+func testVolumeClaim(name string, namespace string, spec core.PersistentVolumeClaimSpec) *core.PersistentVolumeClaim {
+ return &core.PersistentVolumeClaim{
ObjectMeta: metav1.ObjectMeta{Name: name, Namespace: namespace},
Spec: spec,
}
@@ -594,21 +678,21 @@ func testVolumeClaim(name string, namespace string, spec api.PersistentVolumeCla
func testVolumeClaimWithStatus(
name, namespace string,
- spec api.PersistentVolumeClaimSpec,
- status api.PersistentVolumeClaimStatus) *api.PersistentVolumeClaim {
- return &api.PersistentVolumeClaim{
+ spec core.PersistentVolumeClaimSpec,
+ status core.PersistentVolumeClaimStatus) *core.PersistentVolumeClaim {
+ return &core.PersistentVolumeClaim{
ObjectMeta: metav1.ObjectMeta{Name: name, Namespace: namespace},
Spec: spec,
Status: status,
}
}
-func testVolumeClaimStorageClass(name string, namespace string, annval string, spec api.PersistentVolumeClaimSpec) *api.PersistentVolumeClaim {
+func testVolumeClaimStorageClass(name string, namespace string, annval string, spec core.PersistentVolumeClaimSpec) *core.PersistentVolumeClaim {
annotations := map[string]string{
v1.BetaStorageClassAnnotation: annval,
}
- return &api.PersistentVolumeClaim{
+ return &core.PersistentVolumeClaim{
ObjectMeta: metav1.ObjectMeta{
Name: name,
Namespace: namespace,
@@ -618,12 +702,12 @@ func testVolumeClaimStorageClass(name string, namespace string, annval string, s
}
}
-func testVolumeClaimAnnotation(name string, namespace string, ann string, annval string, spec api.PersistentVolumeClaimSpec) *api.PersistentVolumeClaim {
+func testVolumeClaimAnnotation(name string, namespace string, ann string, annval string, spec core.PersistentVolumeClaimSpec) *core.PersistentVolumeClaim {
annotations := map[string]string{
ann: annval,
}
- return &api.PersistentVolumeClaim{
+ return &core.PersistentVolumeClaim{
ObjectMeta: metav1.ObjectMeta{
Name: name,
Namespace: namespace,
@@ -638,11 +722,11 @@ func TestValidatePersistentVolumeClaim(t *testing.T) {
validClassName := "valid"
scenarios := map[string]struct {
isExpectedFailure bool
- claim *api.PersistentVolumeClaim
+ claim *core.PersistentVolumeClaim
}{
"good-claim": {
isExpectedFailure: false,
- claim: testVolumeClaim("foo", "ns", api.PersistentVolumeClaimSpec{
+ claim: testVolumeClaim("foo", "ns", core.PersistentVolumeClaimSpec{
Selector: &metav1.LabelSelector{
MatchExpressions: []metav1.LabelSelectorRequirement{
{
@@ -651,13 +735,36 @@ func TestValidatePersistentVolumeClaim(t *testing.T) {
},
},
},
- AccessModes: []api.PersistentVolumeAccessMode{
- api.ReadWriteOnce,
- api.ReadOnlyMany,
+ AccessModes: []core.PersistentVolumeAccessMode{
+ core.ReadWriteOnce,
+ core.ReadOnlyMany,
},
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
+ },
+ },
+ StorageClassName: &validClassName,
+ }),
+ },
+ "invalid-claim-zero-capacity": {
+ isExpectedFailure: true,
+ claim: testVolumeClaim("foo", "ns", core.PersistentVolumeClaimSpec{
+ Selector: &metav1.LabelSelector{
+ MatchExpressions: []metav1.LabelSelectorRequirement{
+ {
+ Key: "key2",
+ Operator: "Exists",
+ },
+ },
+ },
+ AccessModes: []core.PersistentVolumeAccessMode{
+ core.ReadWriteOnce,
+ core.ReadOnlyMany,
+ },
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("0G"),
},
},
StorageClassName: &validClassName,
@@ -665,7 +772,7 @@ func TestValidatePersistentVolumeClaim(t *testing.T) {
},
"invalid-label-selector": {
isExpectedFailure: true,
- claim: testVolumeClaim("foo", "ns", api.PersistentVolumeClaimSpec{
+ claim: testVolumeClaim("foo", "ns", core.PersistentVolumeClaimSpec{
Selector: &metav1.LabelSelector{
MatchExpressions: []metav1.LabelSelectorRequirement{
{
@@ -675,76 +782,76 @@ func TestValidatePersistentVolumeClaim(t *testing.T) {
},
},
},
- AccessModes: []api.PersistentVolumeAccessMode{
- api.ReadWriteOnce,
- api.ReadOnlyMany,
+ AccessModes: []core.PersistentVolumeAccessMode{
+ core.ReadWriteOnce,
+ core.ReadOnlyMany,
},
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
},
}),
},
"invalid-accessmode": {
isExpectedFailure: true,
- claim: testVolumeClaim("foo", "ns", api.PersistentVolumeClaimSpec{
- AccessModes: []api.PersistentVolumeAccessMode{"fakemode"},
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ claim: testVolumeClaim("foo", "ns", core.PersistentVolumeClaimSpec{
+ AccessModes: []core.PersistentVolumeAccessMode{"fakemode"},
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
},
}),
},
"missing-namespace": {
isExpectedFailure: true,
- claim: testVolumeClaim("foo", "", api.PersistentVolumeClaimSpec{
- AccessModes: []api.PersistentVolumeAccessMode{
- api.ReadWriteOnce,
- api.ReadOnlyMany,
+ claim: testVolumeClaim("foo", "", core.PersistentVolumeClaimSpec{
+ AccessModes: []core.PersistentVolumeAccessMode{
+ core.ReadWriteOnce,
+ core.ReadOnlyMany,
},
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
},
}),
},
"no-access-modes": {
isExpectedFailure: true,
- claim: testVolumeClaim("foo", "ns", api.PersistentVolumeClaimSpec{
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ claim: testVolumeClaim("foo", "ns", core.PersistentVolumeClaimSpec{
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
},
}),
},
"no-resource-requests": {
isExpectedFailure: true,
- claim: testVolumeClaim("foo", "ns", api.PersistentVolumeClaimSpec{
- AccessModes: []api.PersistentVolumeAccessMode{
- api.ReadWriteOnce,
+ claim: testVolumeClaim("foo", "ns", core.PersistentVolumeClaimSpec{
+ AccessModes: []core.PersistentVolumeAccessMode{
+ core.ReadWriteOnce,
},
}),
},
"invalid-resource-requests": {
isExpectedFailure: true,
- claim: testVolumeClaim("foo", "ns", api.PersistentVolumeClaimSpec{
- AccessModes: []api.PersistentVolumeAccessMode{
- api.ReadWriteOnce,
+ claim: testVolumeClaim("foo", "ns", core.PersistentVolumeClaimSpec{
+ AccessModes: []core.PersistentVolumeAccessMode{
+ core.ReadWriteOnce,
},
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName(api.ResourceMemory): resource.MustParse("10G"),
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(core.ResourceMemory): resource.MustParse("10G"),
},
},
}),
},
"negative-storage-request": {
isExpectedFailure: true,
- claim: testVolumeClaim("foo", "ns", api.PersistentVolumeClaimSpec{
+ claim: testVolumeClaim("foo", "ns", core.PersistentVolumeClaimSpec{
Selector: &metav1.LabelSelector{
MatchExpressions: []metav1.LabelSelectorRequirement{
{
@@ -753,20 +860,42 @@ func TestValidatePersistentVolumeClaim(t *testing.T) {
},
},
},
- AccessModes: []api.PersistentVolumeAccessMode{
- api.ReadWriteOnce,
- api.ReadOnlyMany,
+ AccessModes: []core.PersistentVolumeAccessMode{
+ core.ReadWriteOnce,
+ core.ReadOnlyMany,
},
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("-10G"),
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("-10G"),
+ },
+ },
+ }),
+ },
+ "zero-storage-request": {
+ isExpectedFailure: true,
+ claim: testVolumeClaim("foo", "ns", core.PersistentVolumeClaimSpec{
+ Selector: &metav1.LabelSelector{
+ MatchExpressions: []metav1.LabelSelectorRequirement{
+ {
+ Key: "key2",
+ Operator: "Exists",
+ },
+ },
+ },
+ AccessModes: []core.PersistentVolumeAccessMode{
+ core.ReadWriteOnce,
+ core.ReadOnlyMany,
+ },
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(api.ResourceStorage): resource.MustParse("0G"),
},
},
}),
},
"invalid-storage-class-name": {
isExpectedFailure: true,
- claim: testVolumeClaim("foo", "ns", api.PersistentVolumeClaimSpec{
+ claim: testVolumeClaim("foo", "ns", core.PersistentVolumeClaimSpec{
Selector: &metav1.LabelSelector{
MatchExpressions: []metav1.LabelSelectorRequirement{
{
@@ -775,13 +904,13 @@ func TestValidatePersistentVolumeClaim(t *testing.T) {
},
},
},
- AccessModes: []api.PersistentVolumeAccessMode{
- api.ReadWriteOnce,
- api.ReadOnlyMany,
+ AccessModes: []core.PersistentVolumeAccessMode{
+ core.ReadWriteOnce,
+ core.ReadOnlyMany,
},
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
},
StorageClassName: &invalidClassName,
@@ -801,155 +930,155 @@ func TestValidatePersistentVolumeClaim(t *testing.T) {
}
func TestValidatePersistentVolumeClaimUpdate(t *testing.T) {
- validClaim := testVolumeClaimWithStatus("foo", "ns", api.PersistentVolumeClaimSpec{
- AccessModes: []api.PersistentVolumeAccessMode{
- api.ReadWriteOnce,
- api.ReadOnlyMany,
+ validClaim := testVolumeClaimWithStatus("foo", "ns", core.PersistentVolumeClaimSpec{
+ AccessModes: []core.PersistentVolumeAccessMode{
+ core.ReadWriteOnce,
+ core.ReadOnlyMany,
},
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
},
- }, api.PersistentVolumeClaimStatus{
- Phase: api.ClaimBound,
+ }, core.PersistentVolumeClaimStatus{
+ Phase: core.ClaimBound,
})
- validClaimStorageClass := testVolumeClaimStorageClass("foo", "ns", "fast", api.PersistentVolumeClaimSpec{
- AccessModes: []api.PersistentVolumeAccessMode{
- api.ReadOnlyMany,
+ validClaimStorageClass := testVolumeClaimStorageClass("foo", "ns", "fast", core.PersistentVolumeClaimSpec{
+ AccessModes: []core.PersistentVolumeAccessMode{
+ core.ReadOnlyMany,
},
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
},
})
- validClaimAnnotation := testVolumeClaimAnnotation("foo", "ns", "description", "foo-description", api.PersistentVolumeClaimSpec{
- AccessModes: []api.PersistentVolumeAccessMode{
- api.ReadOnlyMany,
+ validClaimAnnotation := testVolumeClaimAnnotation("foo", "ns", "description", "foo-description", core.PersistentVolumeClaimSpec{
+ AccessModes: []core.PersistentVolumeAccessMode{
+ core.ReadOnlyMany,
},
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
},
})
- validUpdateClaim := testVolumeClaim("foo", "ns", api.PersistentVolumeClaimSpec{
- AccessModes: []api.PersistentVolumeAccessMode{
- api.ReadWriteOnce,
- api.ReadOnlyMany,
+ validUpdateClaim := testVolumeClaim("foo", "ns", core.PersistentVolumeClaimSpec{
+ AccessModes: []core.PersistentVolumeAccessMode{
+ core.ReadWriteOnce,
+ core.ReadOnlyMany,
},
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
},
VolumeName: "volume",
})
- invalidUpdateClaimResources := testVolumeClaim("foo", "ns", api.PersistentVolumeClaimSpec{
- AccessModes: []api.PersistentVolumeAccessMode{
- api.ReadWriteOnce,
- api.ReadOnlyMany,
+ invalidUpdateClaimResources := testVolumeClaim("foo", "ns", core.PersistentVolumeClaimSpec{
+ AccessModes: []core.PersistentVolumeAccessMode{
+ core.ReadWriteOnce,
+ core.ReadOnlyMany,
},
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("20G"),
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("20G"),
},
},
VolumeName: "volume",
})
- invalidUpdateClaimAccessModes := testVolumeClaim("foo", "ns", api.PersistentVolumeClaimSpec{
- AccessModes: []api.PersistentVolumeAccessMode{
- api.ReadWriteOnce,
+ invalidUpdateClaimAccessModes := testVolumeClaim("foo", "ns", core.PersistentVolumeClaimSpec{
+ AccessModes: []core.PersistentVolumeAccessMode{
+ core.ReadWriteOnce,
},
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
},
VolumeName: "volume",
})
- invalidUpdateClaimStorageClass := testVolumeClaimStorageClass("foo", "ns", "fast2", api.PersistentVolumeClaimSpec{
- AccessModes: []api.PersistentVolumeAccessMode{
- api.ReadOnlyMany,
+ invalidUpdateClaimStorageClass := testVolumeClaimStorageClass("foo", "ns", "fast2", core.PersistentVolumeClaimSpec{
+ AccessModes: []core.PersistentVolumeAccessMode{
+ core.ReadOnlyMany,
},
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
},
VolumeName: "volume",
})
- validUpdateClaimMutableAnnotation := testVolumeClaimAnnotation("foo", "ns", "description", "updated-or-added-foo-description", api.PersistentVolumeClaimSpec{
- AccessModes: []api.PersistentVolumeAccessMode{
- api.ReadOnlyMany,
+ validUpdateClaimMutableAnnotation := testVolumeClaimAnnotation("foo", "ns", "description", "updated-or-added-foo-description", core.PersistentVolumeClaimSpec{
+ AccessModes: []core.PersistentVolumeAccessMode{
+ core.ReadOnlyMany,
},
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
},
VolumeName: "volume",
})
- validAddClaimAnnotation := testVolumeClaimAnnotation("foo", "ns", "description", "updated-or-added-foo-description", api.PersistentVolumeClaimSpec{
- AccessModes: []api.PersistentVolumeAccessMode{
- api.ReadWriteOnce,
- api.ReadOnlyMany,
+ validAddClaimAnnotation := testVolumeClaimAnnotation("foo", "ns", "description", "updated-or-added-foo-description", core.PersistentVolumeClaimSpec{
+ AccessModes: []core.PersistentVolumeAccessMode{
+ core.ReadWriteOnce,
+ core.ReadOnlyMany,
},
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
},
VolumeName: "volume",
})
- validSizeUpdate := testVolumeClaimWithStatus("foo", "ns", api.PersistentVolumeClaimSpec{
- AccessModes: []api.PersistentVolumeAccessMode{
- api.ReadWriteOnce,
- api.ReadOnlyMany,
+ validSizeUpdate := testVolumeClaimWithStatus("foo", "ns", core.PersistentVolumeClaimSpec{
+ AccessModes: []core.PersistentVolumeAccessMode{
+ core.ReadWriteOnce,
+ core.ReadOnlyMany,
},
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("15G"),
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("15G"),
},
},
- }, api.PersistentVolumeClaimStatus{
- Phase: api.ClaimBound,
+ }, core.PersistentVolumeClaimStatus{
+ Phase: core.ClaimBound,
})
- invalidSizeUpdate := testVolumeClaimWithStatus("foo", "ns", api.PersistentVolumeClaimSpec{
- AccessModes: []api.PersistentVolumeAccessMode{
- api.ReadWriteOnce,
- api.ReadOnlyMany,
+ invalidSizeUpdate := testVolumeClaimWithStatus("foo", "ns", core.PersistentVolumeClaimSpec{
+ AccessModes: []core.PersistentVolumeAccessMode{
+ core.ReadWriteOnce,
+ core.ReadOnlyMany,
},
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("5G"),
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("5G"),
},
},
- }, api.PersistentVolumeClaimStatus{
- Phase: api.ClaimBound,
+ }, core.PersistentVolumeClaimStatus{
+ Phase: core.ClaimBound,
})
- unboundSizeUpdate := testVolumeClaimWithStatus("foo", "ns", api.PersistentVolumeClaimSpec{
- AccessModes: []api.PersistentVolumeAccessMode{
- api.ReadWriteOnce,
- api.ReadOnlyMany,
+ unboundSizeUpdate := testVolumeClaimWithStatus("foo", "ns", core.PersistentVolumeClaimSpec{
+ AccessModes: []core.PersistentVolumeAccessMode{
+ core.ReadWriteOnce,
+ core.ReadOnlyMany,
},
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("12G"),
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("12G"),
},
},
- }, api.PersistentVolumeClaimStatus{
- Phase: api.ClaimPending,
+ }, core.PersistentVolumeClaimStatus{
+ Phase: core.ClaimPending,
})
scenarios := map[string]struct {
isExpectedFailure bool
- oldClaim *api.PersistentVolumeClaim
- newClaim *api.PersistentVolumeClaim
+ oldClaim *core.PersistentVolumeClaim
+ newClaim *core.PersistentVolumeClaim
enableResize bool
}{
"valid-update-volumeName-only": {
@@ -1054,63 +1183,63 @@ func togglePVExpandFeature(toggleFlag bool, t *testing.T) {
func TestValidateKeyToPath(t *testing.T) {
testCases := []struct {
- kp api.KeyToPath
+ kp core.KeyToPath
ok bool
errtype field.ErrorType
}{
{
- kp: api.KeyToPath{Key: "k", Path: "p"},
+ kp: core.KeyToPath{Key: "k", Path: "p"},
ok: true,
},
{
- kp: api.KeyToPath{Key: "k", Path: "p/p/p/p"},
+ kp: core.KeyToPath{Key: "k", Path: "p/p/p/p"},
ok: true,
},
{
- kp: api.KeyToPath{Key: "k", Path: "p/..p/p../p..p"},
+ kp: core.KeyToPath{Key: "k", Path: "p/..p/p../p..p"},
ok: true,
},
{
- kp: api.KeyToPath{Key: "k", Path: "p", Mode: newInt32(0644)},
+ kp: core.KeyToPath{Key: "k", Path: "p", Mode: newInt32(0644)},
ok: true,
},
{
- kp: api.KeyToPath{Key: "", Path: "p"},
+ kp: core.KeyToPath{Key: "", Path: "p"},
ok: false,
errtype: field.ErrorTypeRequired,
},
{
- kp: api.KeyToPath{Key: "k", Path: ""},
+ kp: core.KeyToPath{Key: "k", Path: ""},
ok: false,
errtype: field.ErrorTypeRequired,
},
{
- kp: api.KeyToPath{Key: "k", Path: "..p"},
+ kp: core.KeyToPath{Key: "k", Path: "..p"},
ok: false,
errtype: field.ErrorTypeInvalid,
},
{
- kp: api.KeyToPath{Key: "k", Path: "../p"},
+ kp: core.KeyToPath{Key: "k", Path: "../p"},
ok: false,
errtype: field.ErrorTypeInvalid,
},
{
- kp: api.KeyToPath{Key: "k", Path: "p/../p"},
+ kp: core.KeyToPath{Key: "k", Path: "p/../p"},
ok: false,
errtype: field.ErrorTypeInvalid,
},
{
- kp: api.KeyToPath{Key: "k", Path: "p/.."},
+ kp: core.KeyToPath{Key: "k", Path: "p/.."},
ok: false,
errtype: field.ErrorTypeInvalid,
},
{
- kp: api.KeyToPath{Key: "k", Path: "p", Mode: newInt32(01000)},
+ kp: core.KeyToPath{Key: "k", Path: "p", Mode: newInt32(01000)},
ok: false,
errtype: field.ErrorTypeInvalid,
},
{
- kp: api.KeyToPath{Key: "k", Path: "p", Mode: newInt32(-1)},
+ kp: core.KeyToPath{Key: "k", Path: "p", Mode: newInt32(-1)},
ok: false,
errtype: field.ErrorTypeInvalid,
},
@@ -1135,26 +1264,26 @@ func TestValidateKeyToPath(t *testing.T) {
func TestValidateNFSVolumeSource(t *testing.T) {
testCases := []struct {
name string
- nfs *api.NFSVolumeSource
+ nfs *core.NFSVolumeSource
errtype field.ErrorType
errfield string
errdetail string
}{
{
name: "missing server",
- nfs: &api.NFSVolumeSource{Server: "", Path: "/tmp"},
+ nfs: &core.NFSVolumeSource{Server: "", Path: "/tmp"},
errtype: field.ErrorTypeRequired,
errfield: "server",
},
{
name: "missing path",
- nfs: &api.NFSVolumeSource{Server: "my-server", Path: ""},
+ nfs: &core.NFSVolumeSource{Server: "my-server", Path: ""},
errtype: field.ErrorTypeRequired,
errfield: "path",
},
{
name: "abs path",
- nfs: &api.NFSVolumeSource{Server: "my-server", Path: "tmp"},
+ nfs: &core.NFSVolumeSource{Server: "my-server", Path: "tmp"},
errtype: field.ErrorTypeInvalid,
errfield: "path",
errdetail: "must be an absolute path",
@@ -1183,25 +1312,25 @@ func TestValidateNFSVolumeSource(t *testing.T) {
func TestValidateGlusterfs(t *testing.T) {
testCases := []struct {
name string
- gfs *api.GlusterfsVolumeSource
+ gfs *core.GlusterfsVolumeSource
errtype field.ErrorType
errfield string
}{
{
name: "missing endpointname",
- gfs: &api.GlusterfsVolumeSource{EndpointsName: "", Path: "/tmp"},
+ gfs: &core.GlusterfsVolumeSource{EndpointsName: "", Path: "/tmp"},
errtype: field.ErrorTypeRequired,
errfield: "endpoints",
},
{
name: "missing path",
- gfs: &api.GlusterfsVolumeSource{EndpointsName: "my-endpoint", Path: ""},
+ gfs: &core.GlusterfsVolumeSource{EndpointsName: "my-endpoint", Path: ""},
errtype: field.ErrorTypeRequired,
errfield: "path",
},
{
name: "missing endpintname and path",
- gfs: &api.GlusterfsVolumeSource{EndpointsName: "", Path: ""},
+ gfs: &core.GlusterfsVolumeSource{EndpointsName: "", Path: ""},
errtype: field.ErrorTypeRequired,
errfield: "endpoints",
},
@@ -1239,7 +1368,7 @@ func TestValidateVolumes(t *testing.T) {
invalidInitiatorName := "2015-02.example.com:init"
testCases := []struct {
name string
- vol api.Volume
+ vol core.Volume
errtype field.ErrorType
errfield string
errdetail string
@@ -1247,54 +1376,54 @@ func TestValidateVolumes(t *testing.T) {
// EmptyDir and basic volume names
{
name: "valid alpha name",
- vol: api.Volume{
+ vol: core.Volume{
Name: "empty",
- VolumeSource: api.VolumeSource{
- EmptyDir: &api.EmptyDirVolumeSource{},
+ VolumeSource: core.VolumeSource{
+ EmptyDir: &core.EmptyDirVolumeSource{},
},
},
},
{
name: "valid num name",
- vol: api.Volume{
+ vol: core.Volume{
Name: "123",
- VolumeSource: api.VolumeSource{
- EmptyDir: &api.EmptyDirVolumeSource{},
+ VolumeSource: core.VolumeSource{
+ EmptyDir: &core.EmptyDirVolumeSource{},
},
},
},
{
name: "valid alphanum name",
- vol: api.Volume{
+ vol: core.Volume{
Name: "empty-123",
- VolumeSource: api.VolumeSource{
- EmptyDir: &api.EmptyDirVolumeSource{},
+ VolumeSource: core.VolumeSource{
+ EmptyDir: &core.EmptyDirVolumeSource{},
},
},
},
{
name: "valid numalpha name",
- vol: api.Volume{
+ vol: core.Volume{
Name: "123-empty",
- VolumeSource: api.VolumeSource{
- EmptyDir: &api.EmptyDirVolumeSource{},
+ VolumeSource: core.VolumeSource{
+ EmptyDir: &core.EmptyDirVolumeSource{},
},
},
},
{
name: "zero-length name",
- vol: api.Volume{
+ vol: core.Volume{
Name: "",
- VolumeSource: api.VolumeSource{EmptyDir: &api.EmptyDirVolumeSource{}},
+ VolumeSource: core.VolumeSource{EmptyDir: &core.EmptyDirVolumeSource{}},
},
errtype: field.ErrorTypeRequired,
errfield: "name",
},
{
name: "name > 63 characters",
- vol: api.Volume{
+ vol: core.Volume{
Name: strings.Repeat("a", 64),
- VolumeSource: api.VolumeSource{EmptyDir: &api.EmptyDirVolumeSource{}},
+ VolumeSource: core.VolumeSource{EmptyDir: &core.EmptyDirVolumeSource{}},
},
errtype: field.ErrorTypeInvalid,
errfield: "name",
@@ -1302,9 +1431,9 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "name not a DNS label",
- vol: api.Volume{
+ vol: core.Volume{
Name: "a.b.c",
- VolumeSource: api.VolumeSource{EmptyDir: &api.EmptyDirVolumeSource{}},
+ VolumeSource: core.VolumeSource{EmptyDir: &core.EmptyDirVolumeSource{}},
},
errtype: field.ErrorTypeInvalid,
errfield: "name",
@@ -1313,13 +1442,13 @@ func TestValidateVolumes(t *testing.T) {
// More than one source field specified.
{
name: "more than one source",
- vol: api.Volume{
+ vol: core.Volume{
Name: "dups",
- VolumeSource: api.VolumeSource{
- EmptyDir: &api.EmptyDirVolumeSource{},
- HostPath: &api.HostPathVolumeSource{
+ VolumeSource: core.VolumeSource{
+ EmptyDir: &core.EmptyDirVolumeSource{},
+ HostPath: &core.HostPathVolumeSource{
Path: "/mnt/path",
- Type: newHostPathType(string(api.HostPathDirectory)),
+ Type: newHostPathType(string(core.HostPathDirectory)),
},
},
},
@@ -1330,12 +1459,12 @@ func TestValidateVolumes(t *testing.T) {
// HostPath Default
{
name: "default HostPath",
- vol: api.Volume{
+ vol: core.Volume{
Name: "hostpath",
- VolumeSource: api.VolumeSource{
- HostPath: &api.HostPathVolumeSource{
+ VolumeSource: core.VolumeSource{
+ HostPath: &core.HostPathVolumeSource{
Path: "/mnt/path",
- Type: newHostPathType(string(api.HostPathDirectory)),
+ Type: newHostPathType(string(core.HostPathDirectory)),
},
},
},
@@ -1343,12 +1472,12 @@ func TestValidateVolumes(t *testing.T) {
// HostPath Supported
{
name: "valid HostPath",
- vol: api.Volume{
+ vol: core.Volume{
Name: "hostpath",
- VolumeSource: api.VolumeSource{
- HostPath: &api.HostPathVolumeSource{
+ VolumeSource: core.VolumeSource{
+ HostPath: &core.HostPathVolumeSource{
Path: "/mnt/path",
- Type: newHostPathType(string(api.HostPathSocket)),
+ Type: newHostPathType(string(core.HostPathSocket)),
},
},
},
@@ -1356,10 +1485,10 @@ func TestValidateVolumes(t *testing.T) {
// HostPath Invalid
{
name: "invalid HostPath",
- vol: api.Volume{
+ vol: core.Volume{
Name: "hostpath",
- VolumeSource: api.VolumeSource{
- HostPath: &api.HostPathVolumeSource{
+ VolumeSource: core.VolumeSource{
+ HostPath: &core.HostPathVolumeSource{
Path: "/mnt/path",
Type: newHostPathType("invalid"),
},
@@ -1370,12 +1499,12 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "invalid HostPath backsteps",
- vol: api.Volume{
+ vol: core.Volume{
Name: "hostpath",
- VolumeSource: api.VolumeSource{
- HostPath: &api.HostPathVolumeSource{
+ VolumeSource: core.VolumeSource{
+ HostPath: &core.HostPathVolumeSource{
Path: "/mnt/path/..",
- Type: newHostPathType(string(api.HostPathDirectory)),
+ Type: newHostPathType(string(core.HostPathDirectory)),
},
},
},
@@ -1386,10 +1515,10 @@ func TestValidateVolumes(t *testing.T) {
// GcePersistentDisk
{
name: "valid GcePersistentDisk",
- vol: api.Volume{
+ vol: core.Volume{
Name: "gce-pd",
- VolumeSource: api.VolumeSource{
- GCEPersistentDisk: &api.GCEPersistentDiskVolumeSource{
+ VolumeSource: core.VolumeSource{
+ GCEPersistentDisk: &core.GCEPersistentDiskVolumeSource{
PDName: "my-PD",
FSType: "ext4",
Partition: 1,
@@ -1401,10 +1530,10 @@ func TestValidateVolumes(t *testing.T) {
// AWSElasticBlockStore
{
name: "valid AWSElasticBlockStore",
- vol: api.Volume{
+ vol: core.Volume{
Name: "aws-ebs",
- VolumeSource: api.VolumeSource{
- AWSElasticBlockStore: &api.AWSElasticBlockStoreVolumeSource{
+ VolumeSource: core.VolumeSource{
+ AWSElasticBlockStore: &core.AWSElasticBlockStoreVolumeSource{
VolumeID: "my-PD",
FSType: "ext4",
Partition: 1,
@@ -1416,10 +1545,10 @@ func TestValidateVolumes(t *testing.T) {
// GitRepo
{
name: "valid GitRepo",
- vol: api.Volume{
+ vol: core.Volume{
Name: "git-repo",
- VolumeSource: api.VolumeSource{
- GitRepo: &api.GitRepoVolumeSource{
+ VolumeSource: core.VolumeSource{
+ GitRepo: &core.GitRepoVolumeSource{
Repository: "my-repo",
Revision: "hashstring",
Directory: "target",
@@ -1429,10 +1558,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "valid GitRepo in .",
- vol: api.Volume{
+ vol: core.Volume{
Name: "git-repo-dot",
- VolumeSource: api.VolumeSource{
- GitRepo: &api.GitRepoVolumeSource{
+ VolumeSource: core.VolumeSource{
+ GitRepo: &core.GitRepoVolumeSource{
Repository: "my-repo",
Directory: ".",
},
@@ -1441,10 +1570,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "valid GitRepo with .. in name",
- vol: api.Volume{
+ vol: core.Volume{
Name: "git-repo-dot-dot-foo",
- VolumeSource: api.VolumeSource{
- GitRepo: &api.GitRepoVolumeSource{
+ VolumeSource: core.VolumeSource{
+ GitRepo: &core.GitRepoVolumeSource{
Repository: "my-repo",
Directory: "..foo",
},
@@ -1453,10 +1582,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "GitRepo starts with ../",
- vol: api.Volume{
+ vol: core.Volume{
Name: "gitrepo",
- VolumeSource: api.VolumeSource{
- GitRepo: &api.GitRepoVolumeSource{
+ VolumeSource: core.VolumeSource{
+ GitRepo: &core.GitRepoVolumeSource{
Repository: "foo",
Directory: "../dots/bar",
},
@@ -1468,10 +1597,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "GitRepo contains ..",
- vol: api.Volume{
+ vol: core.Volume{
Name: "gitrepo",
- VolumeSource: api.VolumeSource{
- GitRepo: &api.GitRepoVolumeSource{
+ VolumeSource: core.VolumeSource{
+ GitRepo: &core.GitRepoVolumeSource{
Repository: "foo",
Directory: "dots/../bar",
},
@@ -1483,10 +1612,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "GitRepo absolute target",
- vol: api.Volume{
+ vol: core.Volume{
Name: "gitrepo",
- VolumeSource: api.VolumeSource{
- GitRepo: &api.GitRepoVolumeSource{
+ VolumeSource: core.VolumeSource{
+ GitRepo: &core.GitRepoVolumeSource{
Repository: "foo",
Directory: "/abstarget",
},
@@ -1498,10 +1627,10 @@ func TestValidateVolumes(t *testing.T) {
// ISCSI
{
name: "valid ISCSI",
- vol: api.Volume{
+ vol: core.Volume{
Name: "iscsi",
- VolumeSource: api.VolumeSource{
- ISCSI: &api.ISCSIVolumeSource{
+ VolumeSource: core.VolumeSource{
+ ISCSI: &core.ISCSIVolumeSource{
TargetPortal: "127.0.0.1",
IQN: "iqn.2015-02.example.com:test",
Lun: 1,
@@ -1513,10 +1642,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "valid IQN: eui format",
- vol: api.Volume{
+ vol: core.Volume{
Name: "iscsi",
- VolumeSource: api.VolumeSource{
- ISCSI: &api.ISCSIVolumeSource{
+ VolumeSource: core.VolumeSource{
+ ISCSI: &core.ISCSIVolumeSource{
TargetPortal: "127.0.0.1",
IQN: "eui.0123456789ABCDEF",
Lun: 1,
@@ -1528,10 +1657,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "valid IQN: naa format",
- vol: api.Volume{
+ vol: core.Volume{
Name: "iscsi",
- VolumeSource: api.VolumeSource{
- ISCSI: &api.ISCSIVolumeSource{
+ VolumeSource: core.VolumeSource{
+ ISCSI: &core.ISCSIVolumeSource{
TargetPortal: "127.0.0.1",
IQN: "naa.62004567BA64678D0123456789ABCDEF",
Lun: 1,
@@ -1543,10 +1672,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "empty portal",
- vol: api.Volume{
+ vol: core.Volume{
Name: "iscsi",
- VolumeSource: api.VolumeSource{
- ISCSI: &api.ISCSIVolumeSource{
+ VolumeSource: core.VolumeSource{
+ ISCSI: &core.ISCSIVolumeSource{
TargetPortal: "",
IQN: "iqn.2015-02.example.com:test",
Lun: 1,
@@ -1560,10 +1689,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "empty iqn",
- vol: api.Volume{
+ vol: core.Volume{
Name: "iscsi",
- VolumeSource: api.VolumeSource{
- ISCSI: &api.ISCSIVolumeSource{
+ VolumeSource: core.VolumeSource{
+ ISCSI: &core.ISCSIVolumeSource{
TargetPortal: "127.0.0.1",
IQN: "",
Lun: 1,
@@ -1577,10 +1706,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "invalid IQN: iqn format",
- vol: api.Volume{
+ vol: core.Volume{
Name: "iscsi",
- VolumeSource: api.VolumeSource{
- ISCSI: &api.ISCSIVolumeSource{
+ VolumeSource: core.VolumeSource{
+ ISCSI: &core.ISCSIVolumeSource{
TargetPortal: "127.0.0.1",
IQN: "iqn.2015-02.example.com:test;ls;",
Lun: 1,
@@ -1594,10 +1723,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "invalid IQN: eui format",
- vol: api.Volume{
+ vol: core.Volume{
Name: "iscsi",
- VolumeSource: api.VolumeSource{
- ISCSI: &api.ISCSIVolumeSource{
+ VolumeSource: core.VolumeSource{
+ ISCSI: &core.ISCSIVolumeSource{
TargetPortal: "127.0.0.1",
IQN: "eui.0123456789ABCDEFGHIJ",
Lun: 1,
@@ -1611,10 +1740,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "invalid IQN: naa format",
- vol: api.Volume{
+ vol: core.Volume{
Name: "iscsi",
- VolumeSource: api.VolumeSource{
- ISCSI: &api.ISCSIVolumeSource{
+ VolumeSource: core.VolumeSource{
+ ISCSI: &core.ISCSIVolumeSource{
TargetPortal: "127.0.0.1",
IQN: "naa.62004567BA_4-78D.123456789ABCDEF",
Lun: 1,
@@ -1628,10 +1757,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "valid initiatorName",
- vol: api.Volume{
+ vol: core.Volume{
Name: "iscsi",
- VolumeSource: api.VolumeSource{
- ISCSI: &api.ISCSIVolumeSource{
+ VolumeSource: core.VolumeSource{
+ ISCSI: &core.ISCSIVolumeSource{
TargetPortal: "127.0.0.1",
IQN: "iqn.2015-02.example.com:test",
Lun: 1,
@@ -1644,10 +1773,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "invalid initiatorName",
- vol: api.Volume{
+ vol: core.Volume{
Name: "iscsi",
- VolumeSource: api.VolumeSource{
- ISCSI: &api.ISCSIVolumeSource{
+ VolumeSource: core.VolumeSource{
+ ISCSI: &core.ISCSIVolumeSource{
TargetPortal: "127.0.0.1",
IQN: "iqn.2015-02.example.com:test",
Lun: 1,
@@ -1662,10 +1791,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "empty secret",
- vol: api.Volume{
+ vol: core.Volume{
Name: "iscsi",
- VolumeSource: api.VolumeSource{
- ISCSI: &api.ISCSIVolumeSource{
+ VolumeSource: core.VolumeSource{
+ ISCSI: &core.ISCSIVolumeSource{
TargetPortal: "127.0.0.1",
IQN: "iqn.2015-02.example.com:test",
Lun: 1,
@@ -1680,10 +1809,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "empty secret",
- vol: api.Volume{
+ vol: core.Volume{
Name: "iscsi",
- VolumeSource: api.VolumeSource{
- ISCSI: &api.ISCSIVolumeSource{
+ VolumeSource: core.VolumeSource{
+ ISCSI: &core.ISCSIVolumeSource{
TargetPortal: "127.0.0.1",
IQN: "iqn.2015-02.example.com:test",
Lun: 1,
@@ -1699,10 +1828,10 @@ func TestValidateVolumes(t *testing.T) {
// Secret
{
name: "valid Secret",
- vol: api.Volume{
+ vol: core.Volume{
Name: "secret",
- VolumeSource: api.VolumeSource{
- Secret: &api.SecretVolumeSource{
+ VolumeSource: core.VolumeSource{
+ Secret: &core.SecretVolumeSource{
SecretName: "my-secret",
},
},
@@ -1710,10 +1839,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "valid Secret with defaultMode",
- vol: api.Volume{
+ vol: core.Volume{
Name: "secret",
- VolumeSource: api.VolumeSource{
- Secret: &api.SecretVolumeSource{
+ VolumeSource: core.VolumeSource{
+ Secret: &core.SecretVolumeSource{
SecretName: "my-secret",
DefaultMode: newInt32(0644),
},
@@ -1722,12 +1851,12 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "valid Secret with projection and mode",
- vol: api.Volume{
+ vol: core.Volume{
Name: "secret",
- VolumeSource: api.VolumeSource{
- Secret: &api.SecretVolumeSource{
+ VolumeSource: core.VolumeSource{
+ Secret: &core.SecretVolumeSource{
SecretName: "my-secret",
- Items: []api.KeyToPath{{
+ Items: []core.KeyToPath{{
Key: "key",
Path: "filename",
Mode: newInt32(0644),
@@ -1738,12 +1867,12 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "valid Secret with subdir projection",
- vol: api.Volume{
+ vol: core.Volume{
Name: "secret",
- VolumeSource: api.VolumeSource{
- Secret: &api.SecretVolumeSource{
+ VolumeSource: core.VolumeSource{
+ Secret: &core.SecretVolumeSource{
SecretName: "my-secret",
- Items: []api.KeyToPath{{
+ Items: []core.KeyToPath{{
Key: "key",
Path: "dir/filename",
}},
@@ -1753,12 +1882,12 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "secret with missing path",
- vol: api.Volume{
+ vol: core.Volume{
Name: "secret",
- VolumeSource: api.VolumeSource{
- Secret: &api.SecretVolumeSource{
+ VolumeSource: core.VolumeSource{
+ Secret: &core.SecretVolumeSource{
SecretName: "s",
- Items: []api.KeyToPath{{Key: "key", Path: ""}},
+ Items: []core.KeyToPath{{Key: "key", Path: ""}},
},
},
},
@@ -1767,12 +1896,12 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "secret with leading ..",
- vol: api.Volume{
+ vol: core.Volume{
Name: "secret",
- VolumeSource: api.VolumeSource{
- Secret: &api.SecretVolumeSource{
+ VolumeSource: core.VolumeSource{
+ Secret: &core.SecretVolumeSource{
SecretName: "s",
- Items: []api.KeyToPath{{Key: "key", Path: "../foo"}},
+ Items: []core.KeyToPath{{Key: "key", Path: "../foo"}},
},
},
},
@@ -1781,12 +1910,12 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "secret with .. inside",
- vol: api.Volume{
+ vol: core.Volume{
Name: "secret",
- VolumeSource: api.VolumeSource{
- Secret: &api.SecretVolumeSource{
+ VolumeSource: core.VolumeSource{
+ Secret: &core.SecretVolumeSource{
SecretName: "s",
- Items: []api.KeyToPath{{Key: "key", Path: "foo/../bar"}},
+ Items: []core.KeyToPath{{Key: "key", Path: "foo/../bar"}},
},
},
},
@@ -1795,10 +1924,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "secret with invalid positive defaultMode",
- vol: api.Volume{
+ vol: core.Volume{
Name: "secret",
- VolumeSource: api.VolumeSource{
- Secret: &api.SecretVolumeSource{
+ VolumeSource: core.VolumeSource{
+ Secret: &core.SecretVolumeSource{
SecretName: "s",
DefaultMode: newInt32(01000),
},
@@ -1809,10 +1938,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "secret with invalid negative defaultMode",
- vol: api.Volume{
+ vol: core.Volume{
Name: "secret",
- VolumeSource: api.VolumeSource{
- Secret: &api.SecretVolumeSource{
+ VolumeSource: core.VolumeSource{
+ Secret: &core.SecretVolumeSource{
SecretName: "s",
DefaultMode: newInt32(-1),
},
@@ -1824,11 +1953,11 @@ func TestValidateVolumes(t *testing.T) {
// ConfigMap
{
name: "valid ConfigMap",
- vol: api.Volume{
+ vol: core.Volume{
Name: "cfgmap",
- VolumeSource: api.VolumeSource{
- ConfigMap: &api.ConfigMapVolumeSource{
- LocalObjectReference: api.LocalObjectReference{
+ VolumeSource: core.VolumeSource{
+ ConfigMap: &core.ConfigMapVolumeSource{
+ LocalObjectReference: core.LocalObjectReference{
Name: "my-cfgmap",
},
},
@@ -1837,11 +1966,11 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "valid ConfigMap with defaultMode",
- vol: api.Volume{
+ vol: core.Volume{
Name: "cfgmap",
- VolumeSource: api.VolumeSource{
- ConfigMap: &api.ConfigMapVolumeSource{
- LocalObjectReference: api.LocalObjectReference{
+ VolumeSource: core.VolumeSource{
+ ConfigMap: &core.ConfigMapVolumeSource{
+ LocalObjectReference: core.LocalObjectReference{
Name: "my-cfgmap",
},
DefaultMode: newInt32(0644),
@@ -1851,13 +1980,13 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "valid ConfigMap with projection and mode",
- vol: api.Volume{
+ vol: core.Volume{
Name: "cfgmap",
- VolumeSource: api.VolumeSource{
- ConfigMap: &api.ConfigMapVolumeSource{
- LocalObjectReference: api.LocalObjectReference{
+ VolumeSource: core.VolumeSource{
+ ConfigMap: &core.ConfigMapVolumeSource{
+ LocalObjectReference: core.LocalObjectReference{
Name: "my-cfgmap"},
- Items: []api.KeyToPath{{
+ Items: []core.KeyToPath{{
Key: "key",
Path: "filename",
Mode: newInt32(0644),
@@ -1868,13 +1997,13 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "valid ConfigMap with subdir projection",
- vol: api.Volume{
+ vol: core.Volume{
Name: "cfgmap",
- VolumeSource: api.VolumeSource{
- ConfigMap: &api.ConfigMapVolumeSource{
- LocalObjectReference: api.LocalObjectReference{
+ VolumeSource: core.VolumeSource{
+ ConfigMap: &core.ConfigMapVolumeSource{
+ LocalObjectReference: core.LocalObjectReference{
Name: "my-cfgmap"},
- Items: []api.KeyToPath{{
+ Items: []core.KeyToPath{{
Key: "key",
Path: "dir/filename",
}},
@@ -1884,12 +2013,12 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "configmap with missing path",
- vol: api.Volume{
+ vol: core.Volume{
Name: "cfgmap",
- VolumeSource: api.VolumeSource{
- ConfigMap: &api.ConfigMapVolumeSource{
- LocalObjectReference: api.LocalObjectReference{Name: "c"},
- Items: []api.KeyToPath{{Key: "key", Path: ""}},
+ VolumeSource: core.VolumeSource{
+ ConfigMap: &core.ConfigMapVolumeSource{
+ LocalObjectReference: core.LocalObjectReference{Name: "c"},
+ Items: []core.KeyToPath{{Key: "key", Path: ""}},
},
},
},
@@ -1898,12 +2027,12 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "configmap with leading ..",
- vol: api.Volume{
+ vol: core.Volume{
Name: "cfgmap",
- VolumeSource: api.VolumeSource{
- ConfigMap: &api.ConfigMapVolumeSource{
- LocalObjectReference: api.LocalObjectReference{Name: "c"},
- Items: []api.KeyToPath{{Key: "key", Path: "../foo"}},
+ VolumeSource: core.VolumeSource{
+ ConfigMap: &core.ConfigMapVolumeSource{
+ LocalObjectReference: core.LocalObjectReference{Name: "c"},
+ Items: []core.KeyToPath{{Key: "key", Path: "../foo"}},
},
},
},
@@ -1912,12 +2041,12 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "configmap with .. inside",
- vol: api.Volume{
+ vol: core.Volume{
Name: "cfgmap",
- VolumeSource: api.VolumeSource{
- ConfigMap: &api.ConfigMapVolumeSource{
- LocalObjectReference: api.LocalObjectReference{Name: "c"},
- Items: []api.KeyToPath{{Key: "key", Path: "foo/../bar"}},
+ VolumeSource: core.VolumeSource{
+ ConfigMap: &core.ConfigMapVolumeSource{
+ LocalObjectReference: core.LocalObjectReference{Name: "c"},
+ Items: []core.KeyToPath{{Key: "key", Path: "foo/../bar"}},
},
},
},
@@ -1926,11 +2055,11 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "configmap with invalid positive defaultMode",
- vol: api.Volume{
+ vol: core.Volume{
Name: "cfgmap",
- VolumeSource: api.VolumeSource{
- ConfigMap: &api.ConfigMapVolumeSource{
- LocalObjectReference: api.LocalObjectReference{Name: "c"},
+ VolumeSource: core.VolumeSource{
+ ConfigMap: &core.ConfigMapVolumeSource{
+ LocalObjectReference: core.LocalObjectReference{Name: "c"},
DefaultMode: newInt32(01000),
},
},
@@ -1940,11 +2069,11 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "configmap with invalid negative defaultMode",
- vol: api.Volume{
+ vol: core.Volume{
Name: "cfgmap",
- VolumeSource: api.VolumeSource{
- ConfigMap: &api.ConfigMapVolumeSource{
- LocalObjectReference: api.LocalObjectReference{Name: "c"},
+ VolumeSource: core.VolumeSource{
+ ConfigMap: &core.ConfigMapVolumeSource{
+ LocalObjectReference: core.LocalObjectReference{Name: "c"},
DefaultMode: newInt32(-1),
},
},
@@ -1955,10 +2084,10 @@ func TestValidateVolumes(t *testing.T) {
// Glusterfs
{
name: "valid Glusterfs",
- vol: api.Volume{
+ vol: core.Volume{
Name: "glusterfs",
- VolumeSource: api.VolumeSource{
- Glusterfs: &api.GlusterfsVolumeSource{
+ VolumeSource: core.VolumeSource{
+ Glusterfs: &core.GlusterfsVolumeSource{
EndpointsName: "host1",
Path: "path",
ReadOnly: false,
@@ -1968,10 +2097,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "empty hosts",
- vol: api.Volume{
+ vol: core.Volume{
Name: "glusterfs",
- VolumeSource: api.VolumeSource{
- Glusterfs: &api.GlusterfsVolumeSource{
+ VolumeSource: core.VolumeSource{
+ Glusterfs: &core.GlusterfsVolumeSource{
EndpointsName: "",
Path: "path",
ReadOnly: false,
@@ -1983,10 +2112,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "empty path",
- vol: api.Volume{
+ vol: core.Volume{
Name: "glusterfs",
- VolumeSource: api.VolumeSource{
- Glusterfs: &api.GlusterfsVolumeSource{
+ VolumeSource: core.VolumeSource{
+ Glusterfs: &core.GlusterfsVolumeSource{
EndpointsName: "host",
Path: "",
ReadOnly: false,
@@ -1999,10 +2128,10 @@ func TestValidateVolumes(t *testing.T) {
// Flocker
{
name: "valid Flocker -- datasetUUID",
- vol: api.Volume{
+ vol: core.Volume{
Name: "flocker",
- VolumeSource: api.VolumeSource{
- Flocker: &api.FlockerVolumeSource{
+ VolumeSource: core.VolumeSource{
+ Flocker: &core.FlockerVolumeSource{
DatasetUUID: "d846b09d-223d-43df-ab5b-d6db2206a0e4",
},
},
@@ -2010,10 +2139,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "valid Flocker -- datasetName",
- vol: api.Volume{
+ vol: core.Volume{
Name: "flocker",
- VolumeSource: api.VolumeSource{
- Flocker: &api.FlockerVolumeSource{
+ VolumeSource: core.VolumeSource{
+ Flocker: &core.FlockerVolumeSource{
DatasetName: "datasetName",
},
},
@@ -2021,10 +2150,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "both empty",
- vol: api.Volume{
+ vol: core.Volume{
Name: "flocker",
- VolumeSource: api.VolumeSource{
- Flocker: &api.FlockerVolumeSource{
+ VolumeSource: core.VolumeSource{
+ Flocker: &core.FlockerVolumeSource{
DatasetName: "",
},
},
@@ -2034,10 +2163,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "both specified",
- vol: api.Volume{
+ vol: core.Volume{
Name: "flocker",
- VolumeSource: api.VolumeSource{
- Flocker: &api.FlockerVolumeSource{
+ VolumeSource: core.VolumeSource{
+ Flocker: &core.FlockerVolumeSource{
DatasetName: "datasetName",
DatasetUUID: "d846b09d-223d-43df-ab5b-d6db2206a0e4",
},
@@ -2048,10 +2177,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "slash in flocker datasetName",
- vol: api.Volume{
+ vol: core.Volume{
Name: "flocker",
- VolumeSource: api.VolumeSource{
- Flocker: &api.FlockerVolumeSource{
+ VolumeSource: core.VolumeSource{
+ Flocker: &core.FlockerVolumeSource{
DatasetName: "foo/bar",
},
},
@@ -2063,10 +2192,10 @@ func TestValidateVolumes(t *testing.T) {
// RBD
{
name: "valid RBD",
- vol: api.Volume{
+ vol: core.Volume{
Name: "rbd",
- VolumeSource: api.VolumeSource{
- RBD: &api.RBDVolumeSource{
+ VolumeSource: core.VolumeSource{
+ RBD: &core.RBDVolumeSource{
CephMonitors: []string{"foo"},
RBDImage: "bar",
FSType: "ext4",
@@ -2076,10 +2205,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "empty rbd monitors",
- vol: api.Volume{
+ vol: core.Volume{
Name: "rbd",
- VolumeSource: api.VolumeSource{
- RBD: &api.RBDVolumeSource{
+ VolumeSource: core.VolumeSource{
+ RBD: &core.RBDVolumeSource{
CephMonitors: []string{},
RBDImage: "bar",
FSType: "ext4",
@@ -2091,10 +2220,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "empty image",
- vol: api.Volume{
+ vol: core.Volume{
Name: "rbd",
- VolumeSource: api.VolumeSource{
- RBD: &api.RBDVolumeSource{
+ VolumeSource: core.VolumeSource{
+ RBD: &core.RBDVolumeSource{
CephMonitors: []string{"foo"},
RBDImage: "",
FSType: "ext4",
@@ -2107,10 +2236,10 @@ func TestValidateVolumes(t *testing.T) {
// Cinder
{
name: "valid Cinder",
- vol: api.Volume{
+ vol: core.Volume{
Name: "cinder",
- VolumeSource: api.VolumeSource{
- Cinder: &api.CinderVolumeSource{
+ VolumeSource: core.VolumeSource{
+ Cinder: &core.CinderVolumeSource{
VolumeID: "29ea5088-4f60-4757-962e-dba678767887",
FSType: "ext4",
ReadOnly: false,
@@ -2121,10 +2250,10 @@ func TestValidateVolumes(t *testing.T) {
// CephFS
{
name: "valid CephFS",
- vol: api.Volume{
+ vol: core.Volume{
Name: "cephfs",
- VolumeSource: api.VolumeSource{
- CephFS: &api.CephFSVolumeSource{
+ VolumeSource: core.VolumeSource{
+ CephFS: &core.CephFSVolumeSource{
Monitors: []string{"foo"},
},
},
@@ -2132,10 +2261,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "empty cephfs monitors",
- vol: api.Volume{
+ vol: core.Volume{
Name: "cephfs",
- VolumeSource: api.VolumeSource{
- CephFS: &api.CephFSVolumeSource{
+ VolumeSource: core.VolumeSource{
+ CephFS: &core.CephFSVolumeSource{
Monitors: []string{},
},
},
@@ -2146,91 +2275,91 @@ func TestValidateVolumes(t *testing.T) {
// DownwardAPI
{
name: "valid DownwardAPI",
- vol: api.Volume{
+ vol: core.Volume{
Name: "downwardapi",
- VolumeSource: api.VolumeSource{
- DownwardAPI: &api.DownwardAPIVolumeSource{
- Items: []api.DownwardAPIVolumeFile{
+ VolumeSource: core.VolumeSource{
+ DownwardAPI: &core.DownwardAPIVolumeSource{
+ Items: []core.DownwardAPIVolumeFile{
{
Path: "labels",
- FieldRef: &api.ObjectFieldSelector{
+ FieldRef: &core.ObjectFieldSelector{
APIVersion: "v1",
FieldPath: "metadata.labels",
},
},
{
Path: "annotations",
- FieldRef: &api.ObjectFieldSelector{
+ FieldRef: &core.ObjectFieldSelector{
APIVersion: "v1",
FieldPath: "metadata.annotations",
},
},
{
Path: "namespace",
- FieldRef: &api.ObjectFieldSelector{
+ FieldRef: &core.ObjectFieldSelector{
APIVersion: "v1",
FieldPath: "metadata.namespace",
},
},
{
Path: "name",
- FieldRef: &api.ObjectFieldSelector{
+ FieldRef: &core.ObjectFieldSelector{
APIVersion: "v1",
FieldPath: "metadata.name",
},
},
{
Path: "path/with/subdirs",
- FieldRef: &api.ObjectFieldSelector{
+ FieldRef: &core.ObjectFieldSelector{
APIVersion: "v1",
FieldPath: "metadata.labels",
},
},
{
Path: "path/./withdot",
- FieldRef: &api.ObjectFieldSelector{
+ FieldRef: &core.ObjectFieldSelector{
APIVersion: "v1",
FieldPath: "metadata.labels",
},
},
{
Path: "path/with/embedded..dotdot",
- FieldRef: &api.ObjectFieldSelector{
+ FieldRef: &core.ObjectFieldSelector{
APIVersion: "v1",
FieldPath: "metadata.labels",
},
},
{
Path: "path/with/leading/..dotdot",
- FieldRef: &api.ObjectFieldSelector{
+ FieldRef: &core.ObjectFieldSelector{
APIVersion: "v1",
FieldPath: "metadata.labels",
},
},
{
Path: "cpu_limit",
- ResourceFieldRef: &api.ResourceFieldSelector{
+ ResourceFieldRef: &core.ResourceFieldSelector{
ContainerName: "test-container",
Resource: "limits.cpu",
},
},
{
Path: "cpu_request",
- ResourceFieldRef: &api.ResourceFieldSelector{
+ ResourceFieldRef: &core.ResourceFieldSelector{
ContainerName: "test-container",
Resource: "requests.cpu",
},
},
{
Path: "memory_limit",
- ResourceFieldRef: &api.ResourceFieldSelector{
+ ResourceFieldRef: &core.ResourceFieldSelector{
ContainerName: "test-container",
Resource: "limits.memory",
},
},
{
Path: "memory_request",
- ResourceFieldRef: &api.ResourceFieldSelector{
+ ResourceFieldRef: &core.ResourceFieldSelector{
ContainerName: "test-container",
Resource: "requests.memory",
},
@@ -2242,10 +2371,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "downapi valid defaultMode",
- vol: api.Volume{
+ vol: core.Volume{
Name: "downapi",
- VolumeSource: api.VolumeSource{
- DownwardAPI: &api.DownwardAPIVolumeSource{
+ VolumeSource: core.VolumeSource{
+ DownwardAPI: &core.DownwardAPIVolumeSource{
DefaultMode: newInt32(0644),
},
},
@@ -2253,14 +2382,14 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "downapi valid item mode",
- vol: api.Volume{
+ vol: core.Volume{
Name: "downapi",
- VolumeSource: api.VolumeSource{
- DownwardAPI: &api.DownwardAPIVolumeSource{
- Items: []api.DownwardAPIVolumeFile{{
+ VolumeSource: core.VolumeSource{
+ DownwardAPI: &core.DownwardAPIVolumeSource{
+ Items: []core.DownwardAPIVolumeFile{{
Mode: newInt32(0644),
Path: "path",
- FieldRef: &api.ObjectFieldSelector{
+ FieldRef: &core.ObjectFieldSelector{
APIVersion: "v1",
FieldPath: "metadata.labels",
},
@@ -2271,14 +2400,14 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "downapi invalid positive item mode",
- vol: api.Volume{
+ vol: core.Volume{
Name: "downapi",
- VolumeSource: api.VolumeSource{
- DownwardAPI: &api.DownwardAPIVolumeSource{
- Items: []api.DownwardAPIVolumeFile{{
+ VolumeSource: core.VolumeSource{
+ DownwardAPI: &core.DownwardAPIVolumeSource{
+ Items: []core.DownwardAPIVolumeFile{{
Mode: newInt32(01000),
Path: "path",
- FieldRef: &api.ObjectFieldSelector{
+ FieldRef: &core.ObjectFieldSelector{
APIVersion: "v1",
FieldPath: "metadata.labels",
},
@@ -2291,14 +2420,14 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "downapi invalid negative item mode",
- vol: api.Volume{
+ vol: core.Volume{
Name: "downapi",
- VolumeSource: api.VolumeSource{
- DownwardAPI: &api.DownwardAPIVolumeSource{
- Items: []api.DownwardAPIVolumeFile{{
+ VolumeSource: core.VolumeSource{
+ DownwardAPI: &core.DownwardAPIVolumeSource{
+ Items: []core.DownwardAPIVolumeFile{{
Mode: newInt32(-1),
Path: "path",
- FieldRef: &api.ObjectFieldSelector{
+ FieldRef: &core.ObjectFieldSelector{
APIVersion: "v1",
FieldPath: "metadata.labels",
},
@@ -2311,13 +2440,13 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "downapi empty metatada path",
- vol: api.Volume{
+ vol: core.Volume{
Name: "downapi",
- VolumeSource: api.VolumeSource{
- DownwardAPI: &api.DownwardAPIVolumeSource{
- Items: []api.DownwardAPIVolumeFile{{
+ VolumeSource: core.VolumeSource{
+ DownwardAPI: &core.DownwardAPIVolumeSource{
+ Items: []core.DownwardAPIVolumeFile{{
Path: "",
- FieldRef: &api.ObjectFieldSelector{
+ FieldRef: &core.ObjectFieldSelector{
APIVersion: "v1",
FieldPath: "metadata.labels",
},
@@ -2330,13 +2459,13 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "downapi absolute path",
- vol: api.Volume{
+ vol: core.Volume{
Name: "downapi",
- VolumeSource: api.VolumeSource{
- DownwardAPI: &api.DownwardAPIVolumeSource{
- Items: []api.DownwardAPIVolumeFile{{
+ VolumeSource: core.VolumeSource{
+ DownwardAPI: &core.DownwardAPIVolumeSource{
+ Items: []core.DownwardAPIVolumeFile{{
Path: "/absolutepath",
- FieldRef: &api.ObjectFieldSelector{
+ FieldRef: &core.ObjectFieldSelector{
APIVersion: "v1",
FieldPath: "metadata.labels",
},
@@ -2349,13 +2478,13 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "downapi dot dot path",
- vol: api.Volume{
+ vol: core.Volume{
Name: "downapi",
- VolumeSource: api.VolumeSource{
- DownwardAPI: &api.DownwardAPIVolumeSource{
- Items: []api.DownwardAPIVolumeFile{{
+ VolumeSource: core.VolumeSource{
+ DownwardAPI: &core.DownwardAPIVolumeSource{
+ Items: []core.DownwardAPIVolumeFile{{
Path: "../../passwd",
- FieldRef: &api.ObjectFieldSelector{
+ FieldRef: &core.ObjectFieldSelector{
APIVersion: "v1",
FieldPath: "metadata.labels",
},
@@ -2369,13 +2498,13 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "downapi dot dot file name",
- vol: api.Volume{
+ vol: core.Volume{
Name: "downapi",
- VolumeSource: api.VolumeSource{
- DownwardAPI: &api.DownwardAPIVolumeSource{
- Items: []api.DownwardAPIVolumeFile{{
+ VolumeSource: core.VolumeSource{
+ DownwardAPI: &core.DownwardAPIVolumeSource{
+ Items: []core.DownwardAPIVolumeFile{{
Path: "..badFileName",
- FieldRef: &api.ObjectFieldSelector{
+ FieldRef: &core.ObjectFieldSelector{
APIVersion: "v1",
FieldPath: "metadata.labels",
},
@@ -2389,13 +2518,13 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "downapi dot dot first level dirent",
- vol: api.Volume{
+ vol: core.Volume{
Name: "downapi",
- VolumeSource: api.VolumeSource{
- DownwardAPI: &api.DownwardAPIVolumeSource{
- Items: []api.DownwardAPIVolumeFile{{
+ VolumeSource: core.VolumeSource{
+ DownwardAPI: &core.DownwardAPIVolumeSource{
+ Items: []core.DownwardAPIVolumeFile{{
Path: "..badDirName/goodFileName",
- FieldRef: &api.ObjectFieldSelector{
+ FieldRef: &core.ObjectFieldSelector{
APIVersion: "v1",
FieldPath: "metadata.labels",
},
@@ -2409,17 +2538,17 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "downapi fieldRef and ResourceFieldRef together",
- vol: api.Volume{
+ vol: core.Volume{
Name: "downapi",
- VolumeSource: api.VolumeSource{
- DownwardAPI: &api.DownwardAPIVolumeSource{
- Items: []api.DownwardAPIVolumeFile{{
+ VolumeSource: core.VolumeSource{
+ DownwardAPI: &core.DownwardAPIVolumeSource{
+ Items: []core.DownwardAPIVolumeFile{{
Path: "test",
- FieldRef: &api.ObjectFieldSelector{
+ FieldRef: &core.ObjectFieldSelector{
APIVersion: "v1",
FieldPath: "metadata.labels",
},
- ResourceFieldRef: &api.ResourceFieldSelector{
+ ResourceFieldRef: &core.ResourceFieldSelector{
ContainerName: "test-container",
Resource: "requests.memory",
},
@@ -2433,10 +2562,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "downapi invalid positive defaultMode",
- vol: api.Volume{
+ vol: core.Volume{
Name: "downapi",
- VolumeSource: api.VolumeSource{
- DownwardAPI: &api.DownwardAPIVolumeSource{
+ VolumeSource: core.VolumeSource{
+ DownwardAPI: &core.DownwardAPIVolumeSource{
DefaultMode: newInt32(01000),
},
},
@@ -2446,10 +2575,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "downapi invalid negative defaultMode",
- vol: api.Volume{
+ vol: core.Volume{
Name: "downapi",
- VolumeSource: api.VolumeSource{
- DownwardAPI: &api.DownwardAPIVolumeSource{
+ VolumeSource: core.VolumeSource{
+ DownwardAPI: &core.DownwardAPIVolumeSource{
DefaultMode: newInt32(-1),
},
},
@@ -2460,10 +2589,10 @@ func TestValidateVolumes(t *testing.T) {
// FC
{
name: "FC valid targetWWNs and lun",
- vol: api.Volume{
+ vol: core.Volume{
Name: "fc",
- VolumeSource: api.VolumeSource{
- FC: &api.FCVolumeSource{
+ VolumeSource: core.VolumeSource{
+ FC: &core.FCVolumeSource{
TargetWWNs: []string{"some_wwn"},
Lun: newInt32(1),
FSType: "ext4",
@@ -2474,10 +2603,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "FC valid wwids",
- vol: api.Volume{
+ vol: core.Volume{
Name: "fc",
- VolumeSource: api.VolumeSource{
- FC: &api.FCVolumeSource{
+ VolumeSource: core.VolumeSource{
+ FC: &core.FCVolumeSource{
WWIDs: []string{"some_wwid"},
FSType: "ext4",
ReadOnly: false,
@@ -2487,10 +2616,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "FC empty targetWWNs and wwids",
- vol: api.Volume{
+ vol: core.Volume{
Name: "fc",
- VolumeSource: api.VolumeSource{
- FC: &api.FCVolumeSource{
+ VolumeSource: core.VolumeSource{
+ FC: &core.FCVolumeSource{
TargetWWNs: []string{},
Lun: newInt32(1),
WWIDs: []string{},
@@ -2505,10 +2634,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "FC invalid: both targetWWNs and wwids simultaneously",
- vol: api.Volume{
+ vol: core.Volume{
Name: "fc",
- VolumeSource: api.VolumeSource{
- FC: &api.FCVolumeSource{
+ VolumeSource: core.VolumeSource{
+ FC: &core.FCVolumeSource{
TargetWWNs: []string{"some_wwn"},
Lun: newInt32(1),
WWIDs: []string{"some_wwid"},
@@ -2523,10 +2652,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "FC valid targetWWNs and empty lun",
- vol: api.Volume{
+ vol: core.Volume{
Name: "fc",
- VolumeSource: api.VolumeSource{
- FC: &api.FCVolumeSource{
+ VolumeSource: core.VolumeSource{
+ FC: &core.FCVolumeSource{
TargetWWNs: []string{"wwn"},
Lun: nil,
FSType: "ext4",
@@ -2540,10 +2669,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "FC valid targetWWNs and invalid lun",
- vol: api.Volume{
+ vol: core.Volume{
Name: "fc",
- VolumeSource: api.VolumeSource{
- FC: &api.FCVolumeSource{
+ VolumeSource: core.VolumeSource{
+ FC: &core.FCVolumeSource{
TargetWWNs: []string{"wwn"},
Lun: newInt32(256),
FSType: "ext4",
@@ -2558,10 +2687,10 @@ func TestValidateVolumes(t *testing.T) {
// FlexVolume
{
name: "valid FlexVolume",
- vol: api.Volume{
+ vol: core.Volume{
Name: "flex-volume",
- VolumeSource: api.VolumeSource{
- FlexVolume: &api.FlexVolumeSource{
+ VolumeSource: core.VolumeSource{
+ FlexVolume: &core.FlexVolumeSource{
Driver: "kubernetes.io/blue",
FSType: "ext4",
},
@@ -2571,10 +2700,10 @@ func TestValidateVolumes(t *testing.T) {
// AzureFile
{
name: "valid AzureFile",
- vol: api.Volume{
+ vol: core.Volume{
Name: "azure-file",
- VolumeSource: api.VolumeSource{
- AzureFile: &api.AzureFileVolumeSource{
+ VolumeSource: core.VolumeSource{
+ AzureFile: &core.AzureFileVolumeSource{
SecretName: "key",
ShareName: "share",
ReadOnly: false,
@@ -2584,10 +2713,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "AzureFile empty secret",
- vol: api.Volume{
+ vol: core.Volume{
Name: "azure-file",
- VolumeSource: api.VolumeSource{
- AzureFile: &api.AzureFileVolumeSource{
+ VolumeSource: core.VolumeSource{
+ AzureFile: &core.AzureFileVolumeSource{
SecretName: "",
ShareName: "share",
ReadOnly: false,
@@ -2599,10 +2728,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "AzureFile empty share",
- vol: api.Volume{
+ vol: core.Volume{
Name: "azure-file",
- VolumeSource: api.VolumeSource{
- AzureFile: &api.AzureFileVolumeSource{
+ VolumeSource: core.VolumeSource{
+ AzureFile: &core.AzureFileVolumeSource{
SecretName: "name",
ShareName: "",
ReadOnly: false,
@@ -2615,10 +2744,10 @@ func TestValidateVolumes(t *testing.T) {
// Quobyte
{
name: "valid Quobyte",
- vol: api.Volume{
+ vol: core.Volume{
Name: "quobyte",
- VolumeSource: api.VolumeSource{
- Quobyte: &api.QuobyteVolumeSource{
+ VolumeSource: core.VolumeSource{
+ Quobyte: &core.QuobyteVolumeSource{
Registry: "registry:7861",
Volume: "volume",
ReadOnly: false,
@@ -2630,10 +2759,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "empty registry quobyte",
- vol: api.Volume{
+ vol: core.Volume{
Name: "quobyte",
- VolumeSource: api.VolumeSource{
- Quobyte: &api.QuobyteVolumeSource{
+ VolumeSource: core.VolumeSource{
+ Quobyte: &core.QuobyteVolumeSource{
Volume: "/test",
},
},
@@ -2643,10 +2772,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "wrong format registry quobyte",
- vol: api.Volume{
+ vol: core.Volume{
Name: "quobyte",
- VolumeSource: api.VolumeSource{
- Quobyte: &api.QuobyteVolumeSource{
+ VolumeSource: core.VolumeSource{
+ Quobyte: &core.QuobyteVolumeSource{
Registry: "registry7861",
Volume: "/test",
},
@@ -2657,10 +2786,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "wrong format multiple registries quobyte",
- vol: api.Volume{
+ vol: core.Volume{
Name: "quobyte",
- VolumeSource: api.VolumeSource{
- Quobyte: &api.QuobyteVolumeSource{
+ VolumeSource: core.VolumeSource{
+ Quobyte: &core.QuobyteVolumeSource{
Registry: "registry:7861,reg2",
Volume: "/test",
},
@@ -2671,10 +2800,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "empty volume quobyte",
- vol: api.Volume{
+ vol: core.Volume{
Name: "quobyte",
- VolumeSource: api.VolumeSource{
- Quobyte: &api.QuobyteVolumeSource{
+ VolumeSource: core.VolumeSource{
+ Quobyte: &core.QuobyteVolumeSource{
Registry: "registry:7861",
},
},
@@ -2685,10 +2814,10 @@ func TestValidateVolumes(t *testing.T) {
// AzureDisk
{
name: "valid AzureDisk",
- vol: api.Volume{
+ vol: core.Volume{
Name: "azure-disk",
- VolumeSource: api.VolumeSource{
- AzureDisk: &api.AzureDiskVolumeSource{
+ VolumeSource: core.VolumeSource{
+ AzureDisk: &core.AzureDiskVolumeSource{
DiskName: "foo",
DataDiskURI: "https://blob/vhds/bar.vhd",
},
@@ -2697,10 +2826,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "AzureDisk empty disk name",
- vol: api.Volume{
+ vol: core.Volume{
Name: "azure-disk",
- VolumeSource: api.VolumeSource{
- AzureDisk: &api.AzureDiskVolumeSource{
+ VolumeSource: core.VolumeSource{
+ AzureDisk: &core.AzureDiskVolumeSource{
DiskName: "",
DataDiskURI: "https://blob/vhds/bar.vhd",
},
@@ -2711,10 +2840,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "AzureDisk empty disk uri",
- vol: api.Volume{
+ vol: core.Volume{
Name: "azure-disk",
- VolumeSource: api.VolumeSource{
- AzureDisk: &api.AzureDiskVolumeSource{
+ VolumeSource: core.VolumeSource{
+ AzureDisk: &core.AzureDiskVolumeSource{
DiskName: "foo",
DataDiskURI: "",
},
@@ -2726,10 +2855,10 @@ func TestValidateVolumes(t *testing.T) {
// ScaleIO
{
name: "valid scaleio volume",
- vol: api.Volume{
+ vol: core.Volume{
Name: "scaleio-volume",
- VolumeSource: api.VolumeSource{
- ScaleIO: &api.ScaleIOVolumeSource{
+ VolumeSource: core.VolumeSource{
+ ScaleIO: &core.ScaleIOVolumeSource{
Gateway: "http://abcd/efg",
System: "test-system",
VolumeName: "test-vol-1",
@@ -2739,10 +2868,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "ScaleIO with empty name",
- vol: api.Volume{
+ vol: core.Volume{
Name: "scaleio-volume",
- VolumeSource: api.VolumeSource{
- ScaleIO: &api.ScaleIOVolumeSource{
+ VolumeSource: core.VolumeSource{
+ ScaleIO: &core.ScaleIOVolumeSource{
Gateway: "http://abcd/efg",
System: "test-system",
VolumeName: "",
@@ -2754,10 +2883,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "ScaleIO with empty gateway",
- vol: api.Volume{
+ vol: core.Volume{
Name: "scaleio-volume",
- VolumeSource: api.VolumeSource{
- ScaleIO: &api.ScaleIOVolumeSource{
+ VolumeSource: core.VolumeSource{
+ ScaleIO: &core.ScaleIOVolumeSource{
Gateway: "",
System: "test-system",
VolumeName: "test-vol-1",
@@ -2769,10 +2898,10 @@ func TestValidateVolumes(t *testing.T) {
},
{
name: "ScaleIO with empty system",
- vol: api.Volume{
+ vol: core.Volume{
Name: "scaleio-volume",
- VolumeSource: api.VolumeSource{
- ScaleIO: &api.ScaleIOVolumeSource{
+ VolumeSource: core.VolumeSource{
+ ScaleIO: &core.ScaleIOVolumeSource{
Gateway: "http://agc/efg/gateway",
System: "",
VolumeName: "test-vol-1",
@@ -2785,7 +2914,7 @@ func TestValidateVolumes(t *testing.T) {
}
for i, tc := range testCases {
- names, errs := ValidateVolumes([]api.Volume{tc.vol}, field.NewPath("field"))
+ names, errs := ValidateVolumes([]core.Volume{tc.vol}, field.NewPath("field"))
if len(errs) > 0 && tc.errtype == "" {
t.Errorf("[%d: %q] unexpected error(s): %v", i, tc.name, errs)
} else if len(errs) > 1 {
@@ -2807,9 +2936,9 @@ func TestValidateVolumes(t *testing.T) {
}
}
- dupsCase := []api.Volume{
- {Name: "abc", VolumeSource: api.VolumeSource{EmptyDir: &api.EmptyDirVolumeSource{}}},
- {Name: "abc", VolumeSource: api.VolumeSource{EmptyDir: &api.EmptyDirVolumeSource{}}},
+ dupsCase := []core.Volume{
+ {Name: "abc", VolumeSource: core.VolumeSource{EmptyDir: &core.EmptyDirVolumeSource{}}},
+ {Name: "abc", VolumeSource: core.VolumeSource{EmptyDir: &core.EmptyDirVolumeSource{}}},
}
_, errs := ValidateVolumes(dupsCase, field.NewPath("field"))
if len(errs) == 0 {
@@ -2821,7 +2950,7 @@ func TestValidateVolumes(t *testing.T) {
}
// Validate HugePages medium type for EmptyDir when HugePages feature is enabled/disabled
- hugePagesCase := api.VolumeSource{EmptyDir: &api.EmptyDirVolumeSource{Medium: api.StorageMediumHugePages}}
+ hugePagesCase := core.VolumeSource{EmptyDir: &core.EmptyDirVolumeSource{Medium: core.StorageMediumHugePages}}
// Enable alpha feature HugePages
err := utilfeature.DefaultFeatureGate.Set("HugePages=true")
@@ -2844,69 +2973,69 @@ func TestValidateVolumes(t *testing.T) {
}
func TestAlphaHugePagesIsolation(t *testing.T) {
- successCases := []api.Pod{
+ successCases := []core.Pod{
{ // Basic fields.
ObjectMeta: metav1.ObjectMeta{Name: "123", Namespace: "ns"},
- Spec: api.PodSpec{
- Containers: []api.Container{
+ Spec: core.PodSpec{
+ Containers: []core.Container{
{
Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File",
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName("hugepages-2Mi"): resource.MustParse("1Gi"),
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName("hugepages-2Mi"): resource.MustParse("1Gi"),
},
- Limits: api.ResourceList{
- api.ResourceName("hugepages-2Mi"): resource.MustParse("1Gi"),
+ Limits: core.ResourceList{
+ core.ResourceName("hugepages-2Mi"): resource.MustParse("1Gi"),
},
},
},
},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
},
}
- failureCases := []api.Pod{
+ failureCases := []core.Pod{
{ // Basic fields.
ObjectMeta: metav1.ObjectMeta{Name: "hugepages-shared", Namespace: "ns"},
- Spec: api.PodSpec{
- Containers: []api.Container{
+ Spec: core.PodSpec{
+ Containers: []core.Container{
{
Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File",
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName("hugepages-2Mi"): resource.MustParse("1Gi"),
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName("hugepages-2Mi"): resource.MustParse("1Gi"),
},
- Limits: api.ResourceList{
- api.ResourceName("hugepages-2Mi"): resource.MustParse("2Gi"),
+ Limits: core.ResourceList{
+ core.ResourceName("hugepages-2Mi"): resource.MustParse("2Gi"),
},
},
},
},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
},
{ // Basic fields.
ObjectMeta: metav1.ObjectMeta{Name: "hugepages-multiple", Namespace: "ns"},
- Spec: api.PodSpec{
- Containers: []api.Container{
+ Spec: core.PodSpec{
+ Containers: []core.Container{
{
Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File",
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName("hugepages-2Mi"): resource.MustParse("1Gi"),
- api.ResourceName("hugepages-1Gi"): resource.MustParse("2Gi"),
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName("hugepages-2Mi"): resource.MustParse("1Gi"),
+ core.ResourceName("hugepages-1Gi"): resource.MustParse("2Gi"),
},
- Limits: api.ResourceList{
- api.ResourceName("hugepages-2Mi"): resource.MustParse("1Gi"),
- api.ResourceName("hugepages-1Gi"): resource.MustParse("2Gi"),
+ Limits: core.ResourceList{
+ core.ResourceName("hugepages-2Mi"): resource.MustParse("1Gi"),
+ core.ResourceName("hugepages-1Gi"): resource.MustParse("2Gi"),
},
},
},
},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
},
}
@@ -2945,8 +3074,8 @@ func TestAlphaHugePagesIsolation(t *testing.T) {
func TestAlphaLocalStorageCapacityIsolation(t *testing.T) {
- testCases := []api.VolumeSource{
- {EmptyDir: &api.EmptyDirVolumeSource{SizeLimit: resource.NewQuantity(int64(5), resource.BinarySI)}},
+ testCases := []core.VolumeSource{
+ {EmptyDir: &core.EmptyDirVolumeSource{SizeLimit: resource.NewQuantity(int64(5), resource.BinarySI)}},
}
// Enable alpha feature LocalStorageCapacityIsolation
err := utilfeature.DefaultFeatureGate.Set("LocalStorageCapacityIsolation=true")
@@ -2971,9 +3100,9 @@ func TestAlphaLocalStorageCapacityIsolation(t *testing.T) {
}
}
- containerLimitCase := api.ResourceRequirements{
- Limits: api.ResourceList{
- api.ResourceEphemeralStorage: *resource.NewMilliQuantity(
+ containerLimitCase := core.ResourceRequirements{
+ Limits: core.ResourceList{
+ core.ResourceEphemeralStorage: *resource.NewMilliQuantity(
int64(40000),
resource.BinarySI),
},
@@ -3000,26 +3129,26 @@ func TestAlphaLocalStorageCapacityIsolation(t *testing.T) {
}
func TestValidateResourceQuotaWithAlphaLocalStorageCapacityIsolation(t *testing.T) {
- spec := api.ResourceQuotaSpec{
- Hard: api.ResourceList{
- api.ResourceCPU: resource.MustParse("100"),
- api.ResourceMemory: resource.MustParse("10000"),
- api.ResourceRequestsCPU: resource.MustParse("100"),
- api.ResourceRequestsMemory: resource.MustParse("10000"),
- api.ResourceLimitsCPU: resource.MustParse("100"),
- api.ResourceLimitsMemory: resource.MustParse("10000"),
- api.ResourcePods: resource.MustParse("10"),
- api.ResourceServices: resource.MustParse("0"),
- api.ResourceReplicationControllers: resource.MustParse("10"),
- api.ResourceQuotas: resource.MustParse("10"),
- api.ResourceConfigMaps: resource.MustParse("10"),
- api.ResourceSecrets: resource.MustParse("10"),
- api.ResourceEphemeralStorage: resource.MustParse("10000"),
- api.ResourceRequestsEphemeralStorage: resource.MustParse("10000"),
- api.ResourceLimitsEphemeralStorage: resource.MustParse("10000"),
+ spec := core.ResourceQuotaSpec{
+ Hard: core.ResourceList{
+ core.ResourceCPU: resource.MustParse("100"),
+ core.ResourceMemory: resource.MustParse("10000"),
+ core.ResourceRequestsCPU: resource.MustParse("100"),
+ core.ResourceRequestsMemory: resource.MustParse("10000"),
+ core.ResourceLimitsCPU: resource.MustParse("100"),
+ core.ResourceLimitsMemory: resource.MustParse("10000"),
+ core.ResourcePods: resource.MustParse("10"),
+ core.ResourceServices: resource.MustParse("0"),
+ core.ResourceReplicationControllers: resource.MustParse("10"),
+ core.ResourceQuotas: resource.MustParse("10"),
+ core.ResourceConfigMaps: resource.MustParse("10"),
+ core.ResourceSecrets: resource.MustParse("10"),
+ core.ResourceEphemeralStorage: resource.MustParse("10000"),
+ core.ResourceRequestsEphemeralStorage: resource.MustParse("10000"),
+ core.ResourceLimitsEphemeralStorage: resource.MustParse("10000"),
},
}
- resourceQuota := &api.ResourceQuota{
+ resourceQuota := &core.ResourceQuota{
ObjectMeta: metav1.ObjectMeta{
Name: "abc",
Namespace: "foo",
@@ -3056,7 +3185,7 @@ func TestValidateResourceQuotaWithAlphaLocalStorageCapacityIsolation(t *testing.
}
func TestValidatePorts(t *testing.T) {
- successCase := []api.ContainerPort{
+ successCase := []core.ContainerPort{
{Name: "abc", ContainerPort: 80, HostPort: 80, Protocol: "TCP"},
{Name: "easy", ContainerPort: 82, Protocol: "TCP"},
{Name: "as", ContainerPort: 83, Protocol: "UDP"},
@@ -3067,7 +3196,7 @@ func TestValidatePorts(t *testing.T) {
t.Errorf("expected success: %v", errs)
}
- nonCanonicalCase := []api.ContainerPort{
+ nonCanonicalCase := []core.ContainerPort{
{ContainerPort: 80, Protocol: "TCP"},
}
if errs := validateContainerPorts(nonCanonicalCase, field.NewPath("field")); len(errs) != 0 {
@@ -3075,28 +3204,28 @@ func TestValidatePorts(t *testing.T) {
}
errorCases := map[string]struct {
- P []api.ContainerPort
+ P []core.ContainerPort
T field.ErrorType
F string
D string
}{
"name > 15 characters": {
- []api.ContainerPort{{Name: strings.Repeat("a", 16), ContainerPort: 80, Protocol: "TCP"}},
+ []core.ContainerPort{{Name: strings.Repeat("a", 16), ContainerPort: 80, Protocol: "TCP"}},
field.ErrorTypeInvalid,
"name", "15",
},
"name contains invalid characters": {
- []api.ContainerPort{{Name: "a.b.c", ContainerPort: 80, Protocol: "TCP"}},
+ []core.ContainerPort{{Name: "a.b.c", ContainerPort: 80, Protocol: "TCP"}},
field.ErrorTypeInvalid,
"name", "alpha-numeric",
},
"name is a number": {
- []api.ContainerPort{{Name: "80", ContainerPort: 80, Protocol: "TCP"}},
+ []core.ContainerPort{{Name: "80", ContainerPort: 80, Protocol: "TCP"}},
field.ErrorTypeInvalid,
"name", "at least one letter",
},
"name not unique": {
- []api.ContainerPort{
+ []core.ContainerPort{
{Name: "abc", ContainerPort: 80, Protocol: "TCP"},
{Name: "abc", ContainerPort: 81, Protocol: "TCP"},
},
@@ -3104,32 +3233,32 @@ func TestValidatePorts(t *testing.T) {
"[1].name", "",
},
"zero container port": {
- []api.ContainerPort{{ContainerPort: 0, Protocol: "TCP"}},
+ []core.ContainerPort{{ContainerPort: 0, Protocol: "TCP"}},
field.ErrorTypeRequired,
"containerPort", "",
},
"invalid container port": {
- []api.ContainerPort{{ContainerPort: 65536, Protocol: "TCP"}},
+ []core.ContainerPort{{ContainerPort: 65536, Protocol: "TCP"}},
field.ErrorTypeInvalid,
"containerPort", "between",
},
"invalid host port": {
- []api.ContainerPort{{ContainerPort: 80, HostPort: 65536, Protocol: "TCP"}},
+ []core.ContainerPort{{ContainerPort: 80, HostPort: 65536, Protocol: "TCP"}},
field.ErrorTypeInvalid,
"hostPort", "between",
},
"invalid protocol case": {
- []api.ContainerPort{{ContainerPort: 80, Protocol: "tcp"}},
+ []core.ContainerPort{{ContainerPort: 80, Protocol: "tcp"}},
field.ErrorTypeNotSupported,
"protocol", `supported values: "TCP", "UDP"`,
},
"invalid protocol": {
- []api.ContainerPort{{ContainerPort: 80, Protocol: "ICMP"}},
+ []core.ContainerPort{{ContainerPort: 80, Protocol: "ICMP"}},
field.ErrorTypeNotSupported,
"protocol", `supported values: "TCP", "UDP"`,
},
"protocol required": {
- []api.ContainerPort{{Name: "abc", ContainerPort: 80}},
+ []core.ContainerPort{{Name: "abc", ContainerPort: 80}},
field.ErrorTypeRequired,
"protocol", "",
},
@@ -3154,11 +3283,11 @@ func TestValidatePorts(t *testing.T) {
}
func TestLocalStorageEnvWithFeatureGate(t *testing.T) {
- testCases := []api.EnvVar{
+ testCases := []core.EnvVar{
{
Name: "ephemeral-storage-limits",
- ValueFrom: &api.EnvVarSource{
- ResourceFieldRef: &api.ResourceFieldSelector{
+ ValueFrom: &core.EnvVarSource{
+ ResourceFieldRef: &core.ResourceFieldSelector{
ContainerName: "test-container",
Resource: "limits.ephemeral-storage",
},
@@ -3166,8 +3295,8 @@ func TestLocalStorageEnvWithFeatureGate(t *testing.T) {
},
{
Name: "ephemeral-storage-requests",
- ValueFrom: &api.EnvVarSource{
- ResourceFieldRef: &api.ResourceFieldSelector{
+ ValueFrom: &core.EnvVarSource{
+ ResourceFieldRef: &core.ResourceFieldSelector{
ContainerName: "test-container",
Resource: "requests.ephemeral-storage",
},
@@ -3200,7 +3329,7 @@ func TestLocalStorageEnvWithFeatureGate(t *testing.T) {
}
func TestValidateEnv(t *testing.T) {
- successCase := []api.EnvVar{
+ successCase := []core.EnvVar{
{Name: "abc", Value: "value"},
{Name: "ABC", Value: "value"},
{Name: "AbC_123", Value: "value"},
@@ -3209,72 +3338,72 @@ func TestValidateEnv(t *testing.T) {
{Name: "a-b-c", Value: "value"},
{
Name: "abc",
- ValueFrom: &api.EnvVarSource{
- FieldRef: &api.ObjectFieldSelector{
- APIVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion.String(),
+ ValueFrom: &core.EnvVarSource{
+ FieldRef: &core.ObjectFieldSelector{
+ APIVersion: legacyscheme.Registry.GroupOrDie(core.GroupName).GroupVersion.String(),
FieldPath: "metadata.name",
},
},
},
{
Name: "abc",
- ValueFrom: &api.EnvVarSource{
- FieldRef: &api.ObjectFieldSelector{
- APIVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion.String(),
+ ValueFrom: &core.EnvVarSource{
+ FieldRef: &core.ObjectFieldSelector{
+ APIVersion: legacyscheme.Registry.GroupOrDie(core.GroupName).GroupVersion.String(),
FieldPath: "metadata.namespace",
},
},
},
{
Name: "abc",
- ValueFrom: &api.EnvVarSource{
- FieldRef: &api.ObjectFieldSelector{
- APIVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion.String(),
+ ValueFrom: &core.EnvVarSource{
+ FieldRef: &core.ObjectFieldSelector{
+ APIVersion: legacyscheme.Registry.GroupOrDie(core.GroupName).GroupVersion.String(),
FieldPath: "metadata.uid",
},
},
},
{
Name: "abc",
- ValueFrom: &api.EnvVarSource{
- FieldRef: &api.ObjectFieldSelector{
- APIVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion.String(),
+ ValueFrom: &core.EnvVarSource{
+ FieldRef: &core.ObjectFieldSelector{
+ APIVersion: legacyscheme.Registry.GroupOrDie(core.GroupName).GroupVersion.String(),
FieldPath: "spec.nodeName",
},
},
},
{
Name: "abc",
- ValueFrom: &api.EnvVarSource{
- FieldRef: &api.ObjectFieldSelector{
- APIVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion.String(),
+ ValueFrom: &core.EnvVarSource{
+ FieldRef: &core.ObjectFieldSelector{
+ APIVersion: legacyscheme.Registry.GroupOrDie(core.GroupName).GroupVersion.String(),
FieldPath: "spec.serviceAccountName",
},
},
},
{
Name: "abc",
- ValueFrom: &api.EnvVarSource{
- FieldRef: &api.ObjectFieldSelector{
- APIVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion.String(),
+ ValueFrom: &core.EnvVarSource{
+ FieldRef: &core.ObjectFieldSelector{
+ APIVersion: legacyscheme.Registry.GroupOrDie(core.GroupName).GroupVersion.String(),
FieldPath: "status.hostIP",
},
},
},
{
Name: "abc",
- ValueFrom: &api.EnvVarSource{
- FieldRef: &api.ObjectFieldSelector{
- APIVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion.String(),
+ ValueFrom: &core.EnvVarSource{
+ FieldRef: &core.ObjectFieldSelector{
+ APIVersion: legacyscheme.Registry.GroupOrDie(core.GroupName).GroupVersion.String(),
FieldPath: "status.podIP",
},
},
},
{
Name: "secret_value",
- ValueFrom: &api.EnvVarSource{
- SecretKeyRef: &api.SecretKeySelector{
- LocalObjectReference: api.LocalObjectReference{
+ ValueFrom: &core.EnvVarSource{
+ SecretKeyRef: &core.SecretKeySelector{
+ LocalObjectReference: core.LocalObjectReference{
Name: "some-secret",
},
Key: "secret-key",
@@ -3283,9 +3412,9 @@ func TestValidateEnv(t *testing.T) {
},
{
Name: "ENV_VAR_1",
- ValueFrom: &api.EnvVarSource{
- ConfigMapKeyRef: &api.ConfigMapKeySelector{
- LocalObjectReference: api.LocalObjectReference{
+ ValueFrom: &core.EnvVarSource{
+ ConfigMapKeyRef: &core.ConfigMapKeySelector{
+ LocalObjectReference: core.LocalObjectReference{
Name: "some-config-map",
},
Key: "some-key",
@@ -3299,42 +3428,42 @@ func TestValidateEnv(t *testing.T) {
errorCases := []struct {
name string
- envs []api.EnvVar
+ envs []core.EnvVar
expectedError string
}{
{
name: "zero-length name",
- envs: []api.EnvVar{{Name: ""}},
+ envs: []core.EnvVar{{Name: ""}},
expectedError: "[0].name: Required value",
},
{
name: "illegal character",
- envs: []api.EnvVar{{Name: "a!b"}},
+ envs: []core.EnvVar{{Name: "a!b"}},
expectedError: `[0].name: Invalid value: "a!b": ` + envVarNameErrMsg,
},
{
name: "dot only",
- envs: []api.EnvVar{{Name: "."}},
+ envs: []core.EnvVar{{Name: "."}},
expectedError: `[0].name: Invalid value: ".": must not be`,
},
{
name: "double dots only",
- envs: []api.EnvVar{{Name: ".."}},
+ envs: []core.EnvVar{{Name: ".."}},
expectedError: `[0].name: Invalid value: "..": must not be`,
},
{
name: "leading double dots",
- envs: []api.EnvVar{{Name: "..abc"}},
+ envs: []core.EnvVar{{Name: "..abc"}},
expectedError: `[0].name: Invalid value: "..abc": must not start with`,
},
{
name: "value and valueFrom specified",
- envs: []api.EnvVar{{
+ envs: []core.EnvVar{{
Name: "abc",
Value: "foo",
- ValueFrom: &api.EnvVarSource{
- FieldRef: &api.ObjectFieldSelector{
- APIVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion.String(),
+ ValueFrom: &core.EnvVarSource{
+ FieldRef: &core.ObjectFieldSelector{
+ APIVersion: legacyscheme.Registry.GroupOrDie(core.GroupName).GroupVersion.String(),
FieldPath: "metadata.name",
},
},
@@ -3343,23 +3472,23 @@ func TestValidateEnv(t *testing.T) {
},
{
name: "valueFrom without a source",
- envs: []api.EnvVar{{
+ envs: []core.EnvVar{{
Name: "abc",
- ValueFrom: &api.EnvVarSource{},
+ ValueFrom: &core.EnvVarSource{},
}},
expectedError: "[0].valueFrom: Invalid value: \"\": must specify one of: `fieldRef`, `resourceFieldRef`, `configMapKeyRef` or `secretKeyRef`",
},
{
name: "valueFrom.fieldRef and valueFrom.secretKeyRef specified",
- envs: []api.EnvVar{{
+ envs: []core.EnvVar{{
Name: "abc",
- ValueFrom: &api.EnvVarSource{
- FieldRef: &api.ObjectFieldSelector{
- APIVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion.String(),
+ ValueFrom: &core.EnvVarSource{
+ FieldRef: &core.ObjectFieldSelector{
+ APIVersion: legacyscheme.Registry.GroupOrDie(core.GroupName).GroupVersion.String(),
FieldPath: "metadata.name",
},
- SecretKeyRef: &api.SecretKeySelector{
- LocalObjectReference: api.LocalObjectReference{
+ SecretKeyRef: &core.SecretKeySelector{
+ LocalObjectReference: core.LocalObjectReference{
Name: "a-secret",
},
Key: "a-key",
@@ -3370,15 +3499,15 @@ func TestValidateEnv(t *testing.T) {
},
{
name: "valueFrom.fieldRef and valueFrom.configMapKeyRef set",
- envs: []api.EnvVar{{
+ envs: []core.EnvVar{{
Name: "some_var_name",
- ValueFrom: &api.EnvVarSource{
- FieldRef: &api.ObjectFieldSelector{
- APIVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion.String(),
+ ValueFrom: &core.EnvVarSource{
+ FieldRef: &core.ObjectFieldSelector{
+ APIVersion: legacyscheme.Registry.GroupOrDie(core.GroupName).GroupVersion.String(),
FieldPath: "metadata.name",
},
- ConfigMapKeyRef: &api.ConfigMapKeySelector{
- LocalObjectReference: api.LocalObjectReference{
+ ConfigMapKeyRef: &core.ConfigMapKeySelector{
+ LocalObjectReference: core.LocalObjectReference{
Name: "some-config-map",
},
Key: "some-key",
@@ -3389,21 +3518,21 @@ func TestValidateEnv(t *testing.T) {
},
{
name: "valueFrom.fieldRef and valueFrom.secretKeyRef specified",
- envs: []api.EnvVar{{
+ envs: []core.EnvVar{{
Name: "abc",
- ValueFrom: &api.EnvVarSource{
- FieldRef: &api.ObjectFieldSelector{
- APIVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion.String(),
+ ValueFrom: &core.EnvVarSource{
+ FieldRef: &core.ObjectFieldSelector{
+ APIVersion: legacyscheme.Registry.GroupOrDie(core.GroupName).GroupVersion.String(),
FieldPath: "metadata.name",
},
- SecretKeyRef: &api.SecretKeySelector{
- LocalObjectReference: api.LocalObjectReference{
+ SecretKeyRef: &core.SecretKeySelector{
+ LocalObjectReference: core.LocalObjectReference{
Name: "a-secret",
},
Key: "a-key",
},
- ConfigMapKeyRef: &api.ConfigMapKeySelector{
- LocalObjectReference: api.LocalObjectReference{
+ ConfigMapKeyRef: &core.ConfigMapKeySelector{
+ LocalObjectReference: core.LocalObjectReference{
Name: "some-config-map",
},
Key: "some-key",
@@ -3414,11 +3543,11 @@ func TestValidateEnv(t *testing.T) {
},
{
name: "valueFrom.secretKeyRef.name invalid",
- envs: []api.EnvVar{{
+ envs: []core.EnvVar{{
Name: "abc",
- ValueFrom: &api.EnvVarSource{
- SecretKeyRef: &api.SecretKeySelector{
- LocalObjectReference: api.LocalObjectReference{
+ ValueFrom: &core.EnvVarSource{
+ SecretKeyRef: &core.SecretKeySelector{
+ LocalObjectReference: core.LocalObjectReference{
Name: "$%^&*#",
},
Key: "a-key",
@@ -3428,11 +3557,11 @@ func TestValidateEnv(t *testing.T) {
},
{
name: "valueFrom.configMapKeyRef.name invalid",
- envs: []api.EnvVar{{
+ envs: []core.EnvVar{{
Name: "abc",
- ValueFrom: &api.EnvVarSource{
- ConfigMapKeyRef: &api.ConfigMapKeySelector{
- LocalObjectReference: api.LocalObjectReference{
+ ValueFrom: &core.EnvVarSource{
+ ConfigMapKeyRef: &core.ConfigMapKeySelector{
+ LocalObjectReference: core.LocalObjectReference{
Name: "$%^&*#",
},
Key: "some-key",
@@ -3442,11 +3571,11 @@ func TestValidateEnv(t *testing.T) {
},
{
name: "missing FieldPath on ObjectFieldSelector",
- envs: []api.EnvVar{{
+ envs: []core.EnvVar{{
Name: "abc",
- ValueFrom: &api.EnvVarSource{
- FieldRef: &api.ObjectFieldSelector{
- APIVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion.String(),
+ ValueFrom: &core.EnvVarSource{
+ FieldRef: &core.ObjectFieldSelector{
+ APIVersion: legacyscheme.Registry.GroupOrDie(core.GroupName).GroupVersion.String(),
},
},
}},
@@ -3454,10 +3583,10 @@ func TestValidateEnv(t *testing.T) {
},
{
name: "missing APIVersion on ObjectFieldSelector",
- envs: []api.EnvVar{{
+ envs: []core.EnvVar{{
Name: "abc",
- ValueFrom: &api.EnvVarSource{
- FieldRef: &api.ObjectFieldSelector{
+ ValueFrom: &core.EnvVarSource{
+ FieldRef: &core.ObjectFieldSelector{
FieldPath: "metadata.name",
},
},
@@ -3466,12 +3595,12 @@ func TestValidateEnv(t *testing.T) {
},
{
name: "invalid fieldPath",
- envs: []api.EnvVar{{
+ envs: []core.EnvVar{{
Name: "abc",
- ValueFrom: &api.EnvVarSource{
- FieldRef: &api.ObjectFieldSelector{
+ ValueFrom: &core.EnvVarSource{
+ FieldRef: &core.ObjectFieldSelector{
FieldPath: "metadata.whoops",
- APIVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion.String(),
+ APIVersion: legacyscheme.Registry.GroupOrDie(core.GroupName).GroupVersion.String(),
},
},
}},
@@ -3479,10 +3608,10 @@ func TestValidateEnv(t *testing.T) {
},
{
name: "invalid fieldPath labels",
- envs: []api.EnvVar{{
+ envs: []core.EnvVar{{
Name: "labels",
- ValueFrom: &api.EnvVarSource{
- FieldRef: &api.ObjectFieldSelector{
+ ValueFrom: &core.EnvVarSource{
+ FieldRef: &core.ObjectFieldSelector{
FieldPath: "metadata.labels",
APIVersion: "v1",
},
@@ -3492,10 +3621,10 @@ func TestValidateEnv(t *testing.T) {
},
{
name: "invalid fieldPath annotations",
- envs: []api.EnvVar{{
+ envs: []core.EnvVar{{
Name: "abc",
- ValueFrom: &api.EnvVarSource{
- FieldRef: &api.ObjectFieldSelector{
+ ValueFrom: &core.EnvVarSource{
+ FieldRef: &core.ObjectFieldSelector{
FieldPath: "metadata.annotations",
APIVersion: "v1",
},
@@ -3505,12 +3634,12 @@ func TestValidateEnv(t *testing.T) {
},
{
name: "unsupported fieldPath",
- envs: []api.EnvVar{{
+ envs: []core.EnvVar{{
Name: "abc",
- ValueFrom: &api.EnvVarSource{
- FieldRef: &api.ObjectFieldSelector{
+ ValueFrom: &core.EnvVarSource{
+ FieldRef: &core.ObjectFieldSelector{
FieldPath: "status.phase",
- APIVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion.String(),
+ APIVersion: legacyscheme.Registry.GroupOrDie(core.GroupName).GroupVersion.String(),
},
},
}},
@@ -3532,39 +3661,39 @@ func TestValidateEnv(t *testing.T) {
}
func TestValidateEnvFrom(t *testing.T) {
- successCase := []api.EnvFromSource{
+ successCase := []core.EnvFromSource{
{
- ConfigMapRef: &api.ConfigMapEnvSource{
- LocalObjectReference: api.LocalObjectReference{Name: "abc"},
+ ConfigMapRef: &core.ConfigMapEnvSource{
+ LocalObjectReference: core.LocalObjectReference{Name: "abc"},
},
},
{
Prefix: "pre_",
- ConfigMapRef: &api.ConfigMapEnvSource{
- LocalObjectReference: api.LocalObjectReference{Name: "abc"},
+ ConfigMapRef: &core.ConfigMapEnvSource{
+ LocalObjectReference: core.LocalObjectReference{Name: "abc"},
},
},
{
Prefix: "a.b",
- ConfigMapRef: &api.ConfigMapEnvSource{
- LocalObjectReference: api.LocalObjectReference{Name: "abc"},
+ ConfigMapRef: &core.ConfigMapEnvSource{
+ LocalObjectReference: core.LocalObjectReference{Name: "abc"},
},
},
{
- SecretRef: &api.SecretEnvSource{
- LocalObjectReference: api.LocalObjectReference{Name: "abc"},
+ SecretRef: &core.SecretEnvSource{
+ LocalObjectReference: core.LocalObjectReference{Name: "abc"},
},
},
{
Prefix: "pre_",
- SecretRef: &api.SecretEnvSource{
- LocalObjectReference: api.LocalObjectReference{Name: "abc"},
+ SecretRef: &core.SecretEnvSource{
+ LocalObjectReference: core.LocalObjectReference{Name: "abc"},
},
},
{
Prefix: "a.b",
- SecretRef: &api.SecretEnvSource{
- LocalObjectReference: api.LocalObjectReference{Name: "abc"},
+ SecretRef: &core.SecretEnvSource{
+ LocalObjectReference: core.LocalObjectReference{Name: "abc"},
},
},
}
@@ -3574,106 +3703,106 @@ func TestValidateEnvFrom(t *testing.T) {
errorCases := []struct {
name string
- envs []api.EnvFromSource
+ envs []core.EnvFromSource
expectedError string
}{
{
name: "zero-length name",
- envs: []api.EnvFromSource{
+ envs: []core.EnvFromSource{
{
- ConfigMapRef: &api.ConfigMapEnvSource{
- LocalObjectReference: api.LocalObjectReference{Name: ""}},
+ ConfigMapRef: &core.ConfigMapEnvSource{
+ LocalObjectReference: core.LocalObjectReference{Name: ""}},
},
},
expectedError: "field[0].configMapRef.name: Required value",
},
{
name: "invalid name",
- envs: []api.EnvFromSource{
+ envs: []core.EnvFromSource{
{
- ConfigMapRef: &api.ConfigMapEnvSource{
- LocalObjectReference: api.LocalObjectReference{Name: "$"}},
+ ConfigMapRef: &core.ConfigMapEnvSource{
+ LocalObjectReference: core.LocalObjectReference{Name: "$"}},
},
},
expectedError: "field[0].configMapRef.name: Invalid value",
},
{
name: "invalid prefix",
- envs: []api.EnvFromSource{
+ envs: []core.EnvFromSource{
{
Prefix: "a!b",
- ConfigMapRef: &api.ConfigMapEnvSource{
- LocalObjectReference: api.LocalObjectReference{Name: "abc"}},
+ ConfigMapRef: &core.ConfigMapEnvSource{
+ LocalObjectReference: core.LocalObjectReference{Name: "abc"}},
},
},
expectedError: `field[0].prefix: Invalid value: "a!b": ` + envVarNameErrMsg,
},
{
name: "zero-length name",
- envs: []api.EnvFromSource{
+ envs: []core.EnvFromSource{
{
- SecretRef: &api.SecretEnvSource{
- LocalObjectReference: api.LocalObjectReference{Name: ""}},
+ SecretRef: &core.SecretEnvSource{
+ LocalObjectReference: core.LocalObjectReference{Name: ""}},
},
},
expectedError: "field[0].secretRef.name: Required value",
},
{
name: "invalid name",
- envs: []api.EnvFromSource{
+ envs: []core.EnvFromSource{
{
- SecretRef: &api.SecretEnvSource{
- LocalObjectReference: api.LocalObjectReference{Name: "&"}},
+ SecretRef: &core.SecretEnvSource{
+ LocalObjectReference: core.LocalObjectReference{Name: "&"}},
},
},
expectedError: "field[0].secretRef.name: Invalid value",
},
{
name: "invalid prefix",
- envs: []api.EnvFromSource{
+ envs: []core.EnvFromSource{
{
Prefix: "a!b",
- SecretRef: &api.SecretEnvSource{
- LocalObjectReference: api.LocalObjectReference{Name: "abc"}},
+ SecretRef: &core.SecretEnvSource{
+ LocalObjectReference: core.LocalObjectReference{Name: "abc"}},
},
},
expectedError: `field[0].prefix: Invalid value: "a!b": ` + envVarNameErrMsg,
},
{
name: "no refs",
- envs: []api.EnvFromSource{
+ envs: []core.EnvFromSource{
{},
},
expectedError: "field: Invalid value: \"\": must specify one of: `configMapRef` or `secretRef`",
},
{
name: "multiple refs",
- envs: []api.EnvFromSource{
+ envs: []core.EnvFromSource{
{
- SecretRef: &api.SecretEnvSource{
- LocalObjectReference: api.LocalObjectReference{Name: "abc"}},
- ConfigMapRef: &api.ConfigMapEnvSource{
- LocalObjectReference: api.LocalObjectReference{Name: "abc"}},
+ SecretRef: &core.SecretEnvSource{
+ LocalObjectReference: core.LocalObjectReference{Name: "abc"}},
+ ConfigMapRef: &core.ConfigMapEnvSource{
+ LocalObjectReference: core.LocalObjectReference{Name: "abc"}},
},
},
expectedError: "field: Invalid value: \"\": may not have more than one field specified at a time",
},
{
name: "invalid secret ref name",
- envs: []api.EnvFromSource{
+ envs: []core.EnvFromSource{
{
- SecretRef: &api.SecretEnvSource{
- LocalObjectReference: api.LocalObjectReference{Name: "$%^&*#"}},
+ SecretRef: &core.SecretEnvSource{
+ LocalObjectReference: core.LocalObjectReference{Name: "$%^&*#"}},
},
},
expectedError: "field[0].secretRef.name: Invalid value: \"$%^&*#\": " + dnsSubdomainLabelErrMsg,
},
{
name: "invalid config ref name",
- envs: []api.EnvFromSource{
+ envs: []core.EnvFromSource{
{
- ConfigMapRef: &api.ConfigMapEnvSource{
- LocalObjectReference: api.LocalObjectReference{Name: "$%^&*#"}},
+ ConfigMapRef: &core.ConfigMapEnvSource{
+ LocalObjectReference: core.LocalObjectReference{Name: "$%^&*#"}},
},
},
expectedError: "field[0].configMapRef.name: Invalid value: \"$%^&*#\": " + dnsSubdomainLabelErrMsg,
@@ -3695,17 +3824,20 @@ func TestValidateEnvFrom(t *testing.T) {
func TestValidateVolumeMounts(t *testing.T) {
volumes := sets.NewString("abc", "123", "abc-123")
- container := api.Container{
+ container := core.Container{
SecurityContext: nil,
}
- propagation := api.MountPropagationBidirectional
+ propagation := core.MountPropagationBidirectional
- successCase := []api.VolumeMount{
+ successCase := []core.VolumeMount{
{Name: "abc", MountPath: "/foo"},
{Name: "123", MountPath: "/bar"},
{Name: "abc-123", MountPath: "/baz"},
{Name: "abc-123", MountPath: "/baa", SubPath: ""},
{Name: "abc-123", MountPath: "/bab", SubPath: "baz"},
+ {Name: "abc-123", MountPath: "d:", SubPath: ""},
+ {Name: "abc-123", MountPath: "F:", SubPath: ""},
+ {Name: "abc-123", MountPath: "G:\\mount", SubPath: ""},
{Name: "abc-123", MountPath: "/bac", SubPath: ".baz"},
{Name: "abc-123", MountPath: "/bad", SubPath: "..baz"},
}
@@ -3713,13 +3845,14 @@ func TestValidateVolumeMounts(t *testing.T) {
t.Errorf("expected success: %v", errs)
}
- errorCases := map[string][]api.VolumeMount{
+ errorCases := map[string][]core.VolumeMount{
"empty name": {{Name: "", MountPath: "/foo"}},
"name not found": {{Name: "", MountPath: "/foo"}},
"empty mountpath": {{Name: "abc", MountPath: ""}},
"relative mountpath": {{Name: "abc", MountPath: "bar"}},
"mountpath collision": {{Name: "foo", MountPath: "/path/a"}, {Name: "bar", MountPath: "/path/a"}},
"absolute subpath": {{Name: "abc", MountPath: "/bar", SubPath: "/baz"}},
+ "windows absolute subpath": {{Name: "abc", MountPath: "D", SubPath: ""}},
"subpath in ..": {{Name: "abc", MountPath: "/bar", SubPath: "../baz"}},
"subpath contains ..": {{Name: "abc", MountPath: "/bar", SubPath: "baz/../bat"}},
"subpath ends in ..": {{Name: "abc", MountPath: "/bar", SubPath: "./.."}},
@@ -3735,90 +3868,90 @@ func TestValidateVolumeMounts(t *testing.T) {
func TestValidateMountPropagation(t *testing.T) {
bTrue := true
bFalse := false
- privilegedContainer := &api.Container{
- SecurityContext: &api.SecurityContext{
+ privilegedContainer := &core.Container{
+ SecurityContext: &core.SecurityContext{
Privileged: &bTrue,
},
}
- nonPrivilegedContainer := &api.Container{
- SecurityContext: &api.SecurityContext{
+ nonPrivilegedContainer := &core.Container{
+ SecurityContext: &core.SecurityContext{
Privileged: &bFalse,
},
}
- defaultContainer := &api.Container{}
+ defaultContainer := &core.Container{}
- propagationBidirectional := api.MountPropagationBidirectional
- propagationHostToContainer := api.MountPropagationHostToContainer
- propagationInvalid := api.MountPropagationMode("invalid")
+ propagationBidirectional := core.MountPropagationBidirectional
+ propagationHostToContainer := core.MountPropagationHostToContainer
+ propagationInvalid := core.MountPropagationMode("invalid")
tests := []struct {
- mount api.VolumeMount
- container *api.Container
+ mount core.VolumeMount
+ container *core.Container
expectError bool
}{
{
// implicitly non-privileged container + no propagation
- api.VolumeMount{Name: "foo", MountPath: "/foo"},
+ core.VolumeMount{Name: "foo", MountPath: "/foo"},
defaultContainer,
false,
},
{
// implicitly non-privileged container + HostToContainer
- api.VolumeMount{Name: "foo", MountPath: "/foo", MountPropagation: &propagationHostToContainer},
+ core.VolumeMount{Name: "foo", MountPath: "/foo", MountPropagation: &propagationHostToContainer},
defaultContainer,
false,
},
{
// error: implicitly non-privileged container + Bidirectional
- api.VolumeMount{Name: "foo", MountPath: "/foo", MountPropagation: &propagationBidirectional},
+ core.VolumeMount{Name: "foo", MountPath: "/foo", MountPropagation: &propagationBidirectional},
defaultContainer,
true,
},
{
// explicitly non-privileged container + no propagation
- api.VolumeMount{Name: "foo", MountPath: "/foo"},
+ core.VolumeMount{Name: "foo", MountPath: "/foo"},
nonPrivilegedContainer,
false,
},
{
// explicitly non-privileged container + HostToContainer
- api.VolumeMount{Name: "foo", MountPath: "/foo", MountPropagation: &propagationHostToContainer},
+ core.VolumeMount{Name: "foo", MountPath: "/foo", MountPropagation: &propagationHostToContainer},
nonPrivilegedContainer,
false,
},
{
// explicitly non-privileged container + HostToContainer
- api.VolumeMount{Name: "foo", MountPath: "/foo", MountPropagation: &propagationBidirectional},
+ core.VolumeMount{Name: "foo", MountPath: "/foo", MountPropagation: &propagationBidirectional},
nonPrivilegedContainer,
true,
},
{
// privileged container + no propagation
- api.VolumeMount{Name: "foo", MountPath: "/foo"},
+ core.VolumeMount{Name: "foo", MountPath: "/foo"},
privilegedContainer,
false,
},
{
// privileged container + HostToContainer
- api.VolumeMount{Name: "foo", MountPath: "/foo", MountPropagation: &propagationHostToContainer},
+ core.VolumeMount{Name: "foo", MountPath: "/foo", MountPropagation: &propagationHostToContainer},
privilegedContainer,
false,
},
{
// privileged container + Bidirectional
- api.VolumeMount{Name: "foo", MountPath: "/foo", MountPropagation: &propagationBidirectional},
+ core.VolumeMount{Name: "foo", MountPath: "/foo", MountPropagation: &propagationBidirectional},
privilegedContainer,
false,
},
{
// error: privileged container + invalid mount propagation
- api.VolumeMount{Name: "foo", MountPath: "/foo", MountPropagation: &propagationInvalid},
+ core.VolumeMount{Name: "foo", MountPath: "/foo", MountPropagation: &propagationInvalid},
privilegedContainer,
true,
},
{
// no container + Bidirectional
- api.VolumeMount{Name: "foo", MountPath: "/foo", MountPropagation: &propagationBidirectional},
+ core.VolumeMount{Name: "foo", MountPath: "/foo", MountPropagation: &propagationBidirectional},
nil,
false,
},
@@ -3846,7 +3979,7 @@ func TestValidateMountPropagation(t *testing.T) {
for i, test := range tests {
volumes := sets.NewString("foo")
- errs := ValidateVolumeMounts([]api.VolumeMount{test.mount}, volumes, test.container, field.NewPath("field"))
+ errs := ValidateVolumeMounts([]core.VolumeMount{test.mount}, volumes, test.container, field.NewPath("field"))
if test.expectError && len(errs) == 0 {
t.Errorf("test %d expected error, got none", i)
}
@@ -3858,12 +3991,12 @@ func TestValidateMountPropagation(t *testing.T) {
}
func TestValidateProbe(t *testing.T) {
- handler := api.Handler{Exec: &api.ExecAction{Command: []string{"echo"}}}
+ handler := core.Handler{Exec: &core.ExecAction{Command: []string{"echo"}}}
// These fields must be positive.
positiveFields := [...]string{"InitialDelaySeconds", "TimeoutSeconds", "PeriodSeconds", "SuccessThreshold", "FailureThreshold"}
- successCases := []*api.Probe{nil}
+ successCases := []*core.Probe{nil}
for _, field := range positiveFields {
- probe := &api.Probe{Handler: handler}
+ probe := &core.Probe{Handler: handler}
reflect.ValueOf(probe).Elem().FieldByName(field).SetInt(10)
successCases = append(successCases, probe)
}
@@ -3874,9 +4007,9 @@ func TestValidateProbe(t *testing.T) {
}
}
- errorCases := []*api.Probe{{TimeoutSeconds: 10, InitialDelaySeconds: 10}}
+ errorCases := []*core.Probe{{TimeoutSeconds: 10, InitialDelaySeconds: 10}}
for _, field := range positiveFields {
- probe := &api.Probe{Handler: handler}
+ probe := &core.Probe{Handler: handler}
reflect.ValueOf(probe).Elem().FieldByName(field).SetInt(-10)
errorCases = append(errorCases, probe)
}
@@ -3888,13 +4021,13 @@ func TestValidateProbe(t *testing.T) {
}
func TestValidateHandler(t *testing.T) {
- successCases := []api.Handler{
- {Exec: &api.ExecAction{Command: []string{"echo"}}},
- {HTTPGet: &api.HTTPGetAction{Path: "/", Port: intstr.FromInt(1), Host: "", Scheme: "HTTP"}},
- {HTTPGet: &api.HTTPGetAction{Path: "/foo", Port: intstr.FromInt(65535), Host: "host", Scheme: "HTTP"}},
- {HTTPGet: &api.HTTPGetAction{Path: "/", Port: intstr.FromString("port"), Host: "", Scheme: "HTTP"}},
- {HTTPGet: &api.HTTPGetAction{Path: "/", Port: intstr.FromString("port"), Host: "", Scheme: "HTTP", HTTPHeaders: []api.HTTPHeader{{Name: "Host", Value: "foo.example.com"}}}},
- {HTTPGet: &api.HTTPGetAction{Path: "/", Port: intstr.FromString("port"), Host: "", Scheme: "HTTP", HTTPHeaders: []api.HTTPHeader{{Name: "X-Forwarded-For", Value: "1.2.3.4"}, {Name: "X-Forwarded-For", Value: "5.6.7.8"}}}},
+ successCases := []core.Handler{
+ {Exec: &core.ExecAction{Command: []string{"echo"}}},
+ {HTTPGet: &core.HTTPGetAction{Path: "/", Port: intstr.FromInt(1), Host: "", Scheme: "HTTP"}},
+ {HTTPGet: &core.HTTPGetAction{Path: "/foo", Port: intstr.FromInt(65535), Host: "host", Scheme: "HTTP"}},
+ {HTTPGet: &core.HTTPGetAction{Path: "/", Port: intstr.FromString("port"), Host: "", Scheme: "HTTP"}},
+ {HTTPGet: &core.HTTPGetAction{Path: "/", Port: intstr.FromString("port"), Host: "", Scheme: "HTTP", HTTPHeaders: []core.HTTPHeader{{Name: "Host", Value: "foo.example.com"}}}},
+ {HTTPGet: &core.HTTPGetAction{Path: "/", Port: intstr.FromString("port"), Host: "", Scheme: "HTTP", HTTPHeaders: []core.HTTPHeader{{Name: "X-Forwarded-For", Value: "1.2.3.4"}, {Name: "X-Forwarded-For", Value: "5.6.7.8"}}}},
}
for _, h := range successCases {
if errs := validateHandler(&h, field.NewPath("field")); len(errs) != 0 {
@@ -3902,14 +4035,14 @@ func TestValidateHandler(t *testing.T) {
}
}
- errorCases := []api.Handler{
+ errorCases := []core.Handler{
{},
- {Exec: &api.ExecAction{Command: []string{}}},
- {HTTPGet: &api.HTTPGetAction{Path: "", Port: intstr.FromInt(0), Host: ""}},
- {HTTPGet: &api.HTTPGetAction{Path: "/foo", Port: intstr.FromInt(65536), Host: "host"}},
- {HTTPGet: &api.HTTPGetAction{Path: "", Port: intstr.FromString(""), Host: ""}},
- {HTTPGet: &api.HTTPGetAction{Path: "/", Port: intstr.FromString("port"), Host: "", Scheme: "HTTP", HTTPHeaders: []api.HTTPHeader{{Name: "Host:", Value: "foo.example.com"}}}},
- {HTTPGet: &api.HTTPGetAction{Path: "/", Port: intstr.FromString("port"), Host: "", Scheme: "HTTP", HTTPHeaders: []api.HTTPHeader{{Name: "X_Forwarded_For", Value: "foo.example.com"}}}},
+ {Exec: &core.ExecAction{Command: []string{}}},
+ {HTTPGet: &core.HTTPGetAction{Path: "", Port: intstr.FromInt(0), Host: ""}},
+ {HTTPGet: &core.HTTPGetAction{Path: "/foo", Port: intstr.FromInt(65536), Host: "host"}},
+ {HTTPGet: &core.HTTPGetAction{Path: "", Port: intstr.FromString(""), Host: ""}},
+ {HTTPGet: &core.HTTPGetAction{Path: "/", Port: intstr.FromString("port"), Host: "", Scheme: "HTTP", HTTPHeaders: []core.HTTPHeader{{Name: "Host:", Value: "foo.example.com"}}}},
+ {HTTPGet: &core.HTTPGetAction{Path: "/", Port: intstr.FromString("port"), Host: "", Scheme: "HTTP", HTTPHeaders: []core.HTTPHeader{{Name: "X_Forwarded_For", Value: "foo.example.com"}}}},
}
for _, h := range errorCases {
if errs := validateHandler(&h, field.NewPath("field")); len(errs) == 0 {
@@ -3920,33 +4053,33 @@ func TestValidateHandler(t *testing.T) {
func TestValidatePullPolicy(t *testing.T) {
type T struct {
- Container api.Container
- ExpectedPolicy api.PullPolicy
+ Container core.Container
+ ExpectedPolicy core.PullPolicy
}
testCases := map[string]T{
"NotPresent1": {
- api.Container{Name: "abc", Image: "image:latest", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"},
- api.PullIfNotPresent,
+ core.Container{Name: "abc", Image: "image:latest", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"},
+ core.PullIfNotPresent,
},
"NotPresent2": {
- api.Container{Name: "abc1", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"},
- api.PullIfNotPresent,
+ core.Container{Name: "abc1", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"},
+ core.PullIfNotPresent,
},
"Always1": {
- api.Container{Name: "123", Image: "image:latest", ImagePullPolicy: "Always"},
- api.PullAlways,
+ core.Container{Name: "123", Image: "image:latest", ImagePullPolicy: "Always"},
+ core.PullAlways,
},
"Always2": {
- api.Container{Name: "1234", Image: "image", ImagePullPolicy: "Always"},
- api.PullAlways,
+ core.Container{Name: "1234", Image: "image", ImagePullPolicy: "Always"},
+ core.PullAlways,
},
"Never1": {
- api.Container{Name: "abc-123", Image: "image:latest", ImagePullPolicy: "Never"},
- api.PullNever,
+ core.Container{Name: "abc-123", Image: "image:latest", ImagePullPolicy: "Never"},
+ core.PullNever,
},
"Never2": {
- api.Container{Name: "abc-1234", Image: "image", ImagePullPolicy: "Never"},
- api.PullNever,
+ core.Container{Name: "abc-1234", Image: "image", ImagePullPolicy: "Never"},
+ core.PullNever,
},
}
for k, v := range testCases {
@@ -3961,10 +4094,10 @@ func TestValidatePullPolicy(t *testing.T) {
}
}
-func getResourceLimits(cpu, memory string) api.ResourceList {
- res := api.ResourceList{}
- res[api.ResourceCPU] = resource.MustParse(cpu)
- res[api.ResourceMemory] = resource.MustParse(memory)
+func getResourceLimits(cpu, memory string) core.ResourceList {
+ res := core.ResourceList{}
+ res[core.ResourceCPU] = resource.MustParse(cpu)
+ res[core.ResourceMemory] = resource.MustParse(memory)
return res
}
@@ -3974,7 +4107,7 @@ func TestValidateContainers(t *testing.T) {
AllowPrivileged: true,
})
- successCase := []api.Container{
+ successCase := []core.Container{
{Name: "abc", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"},
// backwards compatibility to ensure containers in pod template spec do not check for this
{Name: "def", Image: " ", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"},
@@ -3984,9 +4117,9 @@ func TestValidateContainers(t *testing.T) {
{
Name: "life-123",
Image: "image",
- Lifecycle: &api.Lifecycle{
- PreStop: &api.Handler{
- Exec: &api.ExecAction{Command: []string{"ls", "-l"}},
+ Lifecycle: &core.Lifecycle{
+ PreStop: &core.Handler{
+ Exec: &core.ExecAction{Command: []string{"ls", "-l"}},
},
},
ImagePullPolicy: "IfNotPresent",
@@ -3995,11 +4128,11 @@ func TestValidateContainers(t *testing.T) {
{
Name: "resources-test",
Image: "image",
- Resources: api.ResourceRequirements{
- Limits: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
- api.ResourceName(api.ResourceMemory): resource.MustParse("10G"),
- api.ResourceName("my.org/resource"): resource.MustParse("10"),
+ Resources: core.ResourceRequirements{
+ Limits: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("10"),
+ core.ResourceName(core.ResourceMemory): resource.MustParse("10G"),
+ core.ResourceName("my.org/resource"): resource.MustParse("10"),
},
},
ImagePullPolicy: "IfNotPresent",
@@ -4008,16 +4141,16 @@ func TestValidateContainers(t *testing.T) {
{
Name: "resources-test-with-gpu-with-request",
Image: "image",
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
- api.ResourceName(api.ResourceMemory): resource.MustParse("10G"),
- api.ResourceName(api.ResourceNvidiaGPU): resource.MustParse("1"),
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("10"),
+ core.ResourceName(core.ResourceMemory): resource.MustParse("10G"),
+ core.ResourceName(core.ResourceNvidiaGPU): resource.MustParse("1"),
},
- Limits: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
- api.ResourceName(api.ResourceMemory): resource.MustParse("10G"),
- api.ResourceName(api.ResourceNvidiaGPU): resource.MustParse("1"),
+ Limits: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("10"),
+ core.ResourceName(core.ResourceMemory): resource.MustParse("10G"),
+ core.ResourceName(core.ResourceNvidiaGPU): resource.MustParse("1"),
},
},
ImagePullPolicy: "IfNotPresent",
@@ -4026,15 +4159,15 @@ func TestValidateContainers(t *testing.T) {
{
Name: "resources-test-with-gpu-without-request",
Image: "image",
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
- api.ResourceName(api.ResourceMemory): resource.MustParse("10G"),
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("10"),
+ core.ResourceName(core.ResourceMemory): resource.MustParse("10G"),
},
- Limits: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
- api.ResourceName(api.ResourceMemory): resource.MustParse("10G"),
- api.ResourceName(api.ResourceNvidiaGPU): resource.MustParse("1"),
+ Limits: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("10"),
+ core.ResourceName(core.ResourceMemory): resource.MustParse("10G"),
+ core.ResourceName(core.ResourceNvidiaGPU): resource.MustParse("1"),
},
},
ImagePullPolicy: "IfNotPresent",
@@ -4043,12 +4176,12 @@ func TestValidateContainers(t *testing.T) {
{
Name: "resources-request-limit-simple",
Image: "image",
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("8"),
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("8"),
},
- Limits: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
+ Limits: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("10"),
},
},
ImagePullPolicy: "IfNotPresent",
@@ -4057,16 +4190,16 @@ func TestValidateContainers(t *testing.T) {
{
Name: "resources-request-limit-edge",
Image: "image",
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
- api.ResourceName(api.ResourceMemory): resource.MustParse("10G"),
- api.ResourceName("my.org/resource"): resource.MustParse("10"),
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("10"),
+ core.ResourceName(core.ResourceMemory): resource.MustParse("10G"),
+ core.ResourceName("my.org/resource"): resource.MustParse("10"),
},
- Limits: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
- api.ResourceName(api.ResourceMemory): resource.MustParse("10G"),
- api.ResourceName("my.org/resource"): resource.MustParse("10"),
+ Limits: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("10"),
+ core.ResourceName(core.ResourceMemory): resource.MustParse("10G"),
+ core.ResourceName("my.org/resource"): resource.MustParse("10"),
},
},
ImagePullPolicy: "IfNotPresent",
@@ -4075,14 +4208,14 @@ func TestValidateContainers(t *testing.T) {
{
Name: "resources-request-limit-partials",
Image: "image",
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("9.5"),
- api.ResourceName(api.ResourceMemory): resource.MustParse("10G"),
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("9.5"),
+ core.ResourceName(core.ResourceMemory): resource.MustParse("10G"),
},
- Limits: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
- api.ResourceName("my.org/resource"): resource.MustParse("10"),
+ Limits: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("10"),
+ core.ResourceName("my.org/resource"): resource.MustParse("10"),
},
},
ImagePullPolicy: "IfNotPresent",
@@ -4091,10 +4224,10 @@ func TestValidateContainers(t *testing.T) {
{
Name: "resources-request",
Image: "image",
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("9.5"),
- api.ResourceName(api.ResourceMemory): resource.MustParse("10G"),
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("9.5"),
+ core.ResourceName(core.ResourceMemory): resource.MustParse("10G"),
},
},
ImagePullPolicy: "IfNotPresent",
@@ -4103,7 +4236,7 @@ func TestValidateContainers(t *testing.T) {
{
Name: "same-host-port-different-protocol",
Image: "image",
- Ports: []api.ContainerPort{
+ Ports: []core.ContainerPort{
{ContainerPort: 80, HostPort: 80, Protocol: "TCP"},
{ContainerPort: 80, HostPort: 80, Protocol: "UDP"},
},
@@ -4127,10 +4260,10 @@ func TestValidateContainers(t *testing.T) {
Image: "image",
ImagePullPolicy: "IfNotPresent",
TerminationMessagePolicy: "File",
- EnvFrom: []api.EnvFromSource{
+ EnvFrom: []core.EnvFromSource{
{
- ConfigMapRef: &api.ConfigMapEnvSource{
- LocalObjectReference: api.LocalObjectReference{
+ ConfigMapRef: &core.ConfigMapEnvSource{
+ LocalObjectReference: core.LocalObjectReference{
Name: "test",
},
},
@@ -4146,7 +4279,7 @@ func TestValidateContainers(t *testing.T) {
capabilities.SetForTests(capabilities.Capabilities{
AllowPrivileged: false,
})
- errorCases := map[string][]api.Container{
+ errorCases := map[string][]core.Container{
"zero-length name": {{Name: "", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
"zero-length-image": {{Name: "abc", Image: "", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
"name > 63 characters": {{Name: strings.Repeat("a", 64), Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
@@ -4157,25 +4290,25 @@ func TestValidateContainers(t *testing.T) {
},
"zero-length image": {{Name: "abc", Image: "", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
"host port not unique": {
- {Name: "abc", Image: "image", Ports: []api.ContainerPort{{ContainerPort: 80, HostPort: 80, Protocol: "TCP"}},
+ {Name: "abc", Image: "image", Ports: []core.ContainerPort{{ContainerPort: 80, HostPort: 80, Protocol: "TCP"}},
ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"},
- {Name: "def", Image: "image", Ports: []api.ContainerPort{{ContainerPort: 81, HostPort: 80, Protocol: "TCP"}},
+ {Name: "def", Image: "image", Ports: []core.ContainerPort{{ContainerPort: 81, HostPort: 80, Protocol: "TCP"}},
ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"},
},
"invalid env var name": {
- {Name: "abc", Image: "image", Env: []api.EnvVar{{Name: "ev!1"}}, ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"},
+ {Name: "abc", Image: "image", Env: []core.EnvVar{{Name: "ev!1"}}, ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"},
},
"unknown volume name": {
- {Name: "abc", Image: "image", VolumeMounts: []api.VolumeMount{{Name: "anything", MountPath: "/foo"}},
+ {Name: "abc", Image: "image", VolumeMounts: []core.VolumeMount{{Name: "anything", MountPath: "/foo"}},
ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"},
},
"invalid lifecycle, no exec command.": {
{
Name: "life-123",
Image: "image",
- Lifecycle: &api.Lifecycle{
- PreStop: &api.Handler{
- Exec: &api.ExecAction{},
+ Lifecycle: &core.Lifecycle{
+ PreStop: &core.Handler{
+ Exec: &core.ExecAction{},
},
},
ImagePullPolicy: "IfNotPresent",
@@ -4186,9 +4319,9 @@ func TestValidateContainers(t *testing.T) {
{
Name: "life-123",
Image: "image",
- Lifecycle: &api.Lifecycle{
- PreStop: &api.Handler{
- HTTPGet: &api.HTTPGetAction{},
+ Lifecycle: &core.Lifecycle{
+ PreStop: &core.Handler{
+ HTTPGet: &core.HTTPGetAction{},
},
},
ImagePullPolicy: "IfNotPresent",
@@ -4199,9 +4332,9 @@ func TestValidateContainers(t *testing.T) {
{
Name: "life-123",
Image: "image",
- Lifecycle: &api.Lifecycle{
- PreStop: &api.Handler{
- TCPSocket: &api.TCPSocketAction{},
+ Lifecycle: &core.Lifecycle{
+ PreStop: &core.Handler{
+ TCPSocket: &core.TCPSocketAction{},
},
},
ImagePullPolicy: "IfNotPresent",
@@ -4212,9 +4345,9 @@ func TestValidateContainers(t *testing.T) {
{
Name: "life-123",
Image: "image",
- Lifecycle: &api.Lifecycle{
- PreStop: &api.Handler{
- TCPSocket: &api.TCPSocketAction{
+ Lifecycle: &core.Lifecycle{
+ PreStop: &core.Handler{
+ TCPSocket: &core.TCPSocketAction{
Port: intstr.FromInt(0),
},
},
@@ -4227,8 +4360,8 @@ func TestValidateContainers(t *testing.T) {
{
Name: "life-123",
Image: "image",
- Lifecycle: &api.Lifecycle{
- PreStop: &api.Handler{},
+ Lifecycle: &core.Lifecycle{
+ PreStop: &core.Handler{},
},
ImagePullPolicy: "IfNotPresent",
TerminationMessagePolicy: "File",
@@ -4238,9 +4371,9 @@ func TestValidateContainers(t *testing.T) {
{
Name: "life-123",
Image: "image",
- LivenessProbe: &api.Probe{
- Handler: api.Handler{
- TCPSocket: &api.TCPSocketAction{},
+ LivenessProbe: &core.Probe{
+ Handler: core.Handler{
+ TCPSocket: &core.TCPSocketAction{},
},
},
ImagePullPolicy: "IfNotPresent",
@@ -4251,8 +4384,8 @@ func TestValidateContainers(t *testing.T) {
{
Name: "life-123",
Image: "image",
- LivenessProbe: &api.Probe{
- Handler: api.Handler{},
+ LivenessProbe: &core.Probe{
+ Handler: core.Handler{},
},
ImagePullPolicy: "IfNotPresent",
TerminationMessagePolicy: "File",
@@ -4281,8 +4414,8 @@ func TestValidateContainers(t *testing.T) {
{
Name: "abc-123",
Image: "image",
- Resources: api.ResourceRequirements{
- Limits: api.ResourceList{
+ Resources: core.ResourceRequirements{
+ Limits: core.ResourceList{
"disk": resource.MustParse("10G"),
},
},
@@ -4294,7 +4427,7 @@ func TestValidateContainers(t *testing.T) {
{
Name: "abc-123",
Image: "image",
- Resources: api.ResourceRequirements{
+ Resources: core.ResourceRequirements{
Limits: getResourceLimits("-10", "0"),
},
ImagePullPolicy: "IfNotPresent",
@@ -4305,7 +4438,7 @@ func TestValidateContainers(t *testing.T) {
{
Name: "abc-123",
Image: "image",
- Resources: api.ResourceRequirements{
+ Resources: core.ResourceRequirements{
Requests: getResourceLimits("-10", "0"),
},
ImagePullPolicy: "IfNotPresent",
@@ -4316,7 +4449,7 @@ func TestValidateContainers(t *testing.T) {
{
Name: "abc-123",
Image: "image",
- Resources: api.ResourceRequirements{
+ Resources: core.ResourceRequirements{
Limits: getResourceLimits("0", "-10"),
},
ImagePullPolicy: "IfNotPresent",
@@ -4327,16 +4460,16 @@ func TestValidateContainers(t *testing.T) {
{
Name: "gpu-resource-request-limit",
Image: "image",
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
- api.ResourceName(api.ResourceMemory): resource.MustParse("10G"),
- api.ResourceName(api.ResourceNvidiaGPU): resource.MustParse("0"),
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("10"),
+ core.ResourceName(core.ResourceMemory): resource.MustParse("10G"),
+ core.ResourceName(core.ResourceNvidiaGPU): resource.MustParse("0"),
},
- Limits: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
- api.ResourceName(api.ResourceMemory): resource.MustParse("10G"),
- api.ResourceName(api.ResourceNvidiaGPU): resource.MustParse("1"),
+ Limits: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("10"),
+ core.ResourceName(core.ResourceMemory): resource.MustParse("10G"),
+ core.ResourceName(core.ResourceNvidiaGPU): resource.MustParse("1"),
},
},
TerminationMessagePolicy: "File",
@@ -4347,11 +4480,11 @@ func TestValidateContainers(t *testing.T) {
{
Name: "gpu-resource-request-limit",
Image: "image",
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
- api.ResourceName(api.ResourceMemory): resource.MustParse("10G"),
- api.ResourceName(api.ResourceNvidiaGPU): resource.MustParse("1"),
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("10"),
+ core.ResourceName(core.ResourceMemory): resource.MustParse("10G"),
+ core.ResourceName(core.ResourceNvidiaGPU): resource.MustParse("1"),
},
},
TerminationMessagePolicy: "File",
@@ -4362,7 +4495,7 @@ func TestValidateContainers(t *testing.T) {
{
Name: "abc-123",
Image: "image",
- Resources: api.ResourceRequirements{
+ Resources: core.ResourceRequirements{
Limits: getResourceLimits("5", "3"),
Requests: getResourceLimits("6", "3"),
},
@@ -4374,7 +4507,7 @@ func TestValidateContainers(t *testing.T) {
{
Name: "abc-123",
Image: "image",
- Resources: api.ResourceRequirements{
+ Resources: core.ResourceRequirements{
Limits: getResourceLimits("5", "3"),
Requests: getResourceLimits("6", "4"),
},
@@ -4388,10 +4521,10 @@ func TestValidateContainers(t *testing.T) {
Image: "image",
ImagePullPolicy: "IfNotPresent",
TerminationMessagePolicy: "File",
- EnvFrom: []api.EnvFromSource{
+ EnvFrom: []core.EnvFromSource{
{
- ConfigMapRef: &api.ConfigMapEnvSource{
- LocalObjectReference: api.LocalObjectReference{
+ ConfigMapRef: &core.ConfigMapEnvSource{
+ LocalObjectReference: core.LocalObjectReference{
Name: "$%^&*#",
},
},
@@ -4408,10 +4541,10 @@ func TestValidateContainers(t *testing.T) {
}
func TestValidateRestartPolicy(t *testing.T) {
- successCases := []api.RestartPolicy{
- api.RestartPolicyAlways,
- api.RestartPolicyOnFailure,
- api.RestartPolicyNever,
+ successCases := []core.RestartPolicy{
+ core.RestartPolicyAlways,
+ core.RestartPolicyOnFailure,
+ core.RestartPolicyNever,
}
for _, policy := range successCases {
if errs := validateRestartPolicy(&policy, field.NewPath("field")); len(errs) != 0 {
@@ -4419,7 +4552,7 @@ func TestValidateRestartPolicy(t *testing.T) {
}
}
- errorCases := []api.RestartPolicy{"", "newpolicy"}
+ errorCases := []core.RestartPolicy{"", "newpolicy"}
for k, policy := range errorCases {
if errs := validateRestartPolicy(&policy, field.NewPath("field")); len(errs) == 0 {
@@ -4429,14 +4562,14 @@ func TestValidateRestartPolicy(t *testing.T) {
}
func TestValidateDNSPolicy(t *testing.T) {
- successCases := []api.DNSPolicy{api.DNSClusterFirst, api.DNSDefault, api.DNSPolicy(api.DNSClusterFirst)}
+ successCases := []core.DNSPolicy{core.DNSClusterFirst, core.DNSDefault, core.DNSPolicy(core.DNSClusterFirst)}
for _, policy := range successCases {
if errs := validateDNSPolicy(&policy, field.NewPath("field")); len(errs) != 0 {
t.Errorf("expected success: %v", errs)
}
}
- errorCases := []api.DNSPolicy{api.DNSPolicy("invalid")}
+ errorCases := []core.DNSPolicy{core.DNSPolicy("invalid")}
for _, policy := range errorCases {
if errs := validateDNSPolicy(&policy, field.NewPath("field")); len(errs) == 0 {
t.Errorf("expected failure for %v", policy)
@@ -4471,128 +4604,128 @@ func TestValidatePodSpec(t *testing.T) {
t.Errorf("Failed to enable feature gate for PodPriority: %v", err)
return
}
- successCases := []api.PodSpec{
+ successCases := []core.PodSpec{
{ // Populate basic fields, leave defaults for most.
- Volumes: []api.Volume{{Name: "vol", VolumeSource: api.VolumeSource{EmptyDir: &api.EmptyDirVolumeSource{}}}},
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ Volumes: []core.Volume{{Name: "vol", VolumeSource: core.VolumeSource{EmptyDir: &core.EmptyDirVolumeSource{}}}},
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
{ // Populate all fields.
- Volumes: []api.Volume{
- {Name: "vol", VolumeSource: api.VolumeSource{EmptyDir: &api.EmptyDirVolumeSource{}}},
+ Volumes: []core.Volume{
+ {Name: "vol", VolumeSource: core.VolumeSource{EmptyDir: &core.EmptyDirVolumeSource{}}},
},
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- InitContainers: []api.Container{{Name: "ictr", Image: "iimage", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- RestartPolicy: api.RestartPolicyAlways,
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ InitContainers: []core.Container{{Name: "ictr", Image: "iimage", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ RestartPolicy: core.RestartPolicyAlways,
NodeSelector: map[string]string{
"key": "value",
},
NodeName: "foobar",
- DNSPolicy: api.DNSClusterFirst,
+ DNSPolicy: core.DNSClusterFirst,
ActiveDeadlineSeconds: &activeDeadlineSeconds,
ServiceAccountName: "acct",
},
{ // Populate all fields with larger active deadline.
- Volumes: []api.Volume{
- {Name: "vol", VolumeSource: api.VolumeSource{EmptyDir: &api.EmptyDirVolumeSource{}}},
+ Volumes: []core.Volume{
+ {Name: "vol", VolumeSource: core.VolumeSource{EmptyDir: &core.EmptyDirVolumeSource{}}},
},
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- InitContainers: []api.Container{{Name: "ictr", Image: "iimage", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- RestartPolicy: api.RestartPolicyAlways,
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ InitContainers: []core.Container{{Name: "ictr", Image: "iimage", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ RestartPolicy: core.RestartPolicyAlways,
NodeSelector: map[string]string{
"key": "value",
},
NodeName: "foobar",
- DNSPolicy: api.DNSClusterFirst,
+ DNSPolicy: core.DNSClusterFirst,
ActiveDeadlineSeconds: &activeDeadlineSecondsMax,
ServiceAccountName: "acct",
},
{ // Populate HostNetwork.
- Containers: []api.Container{
+ Containers: []core.Container{
{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File",
- Ports: []api.ContainerPort{
+ Ports: []core.ContainerPort{
{HostPort: 8080, ContainerPort: 8080, Protocol: "TCP"}},
},
},
- SecurityContext: &api.PodSecurityContext{
+ SecurityContext: &core.PodSecurityContext{
HostNetwork: true,
},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
{ // Populate RunAsUser SupplementalGroups FSGroup with minID 0
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- SecurityContext: &api.PodSecurityContext{
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ SecurityContext: &core.PodSecurityContext{
SupplementalGroups: []int64{minGroupID},
RunAsUser: &minUserID,
FSGroup: &minGroupID,
},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
{ // Populate RunAsUser SupplementalGroups FSGroup with maxID 2147483647
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- SecurityContext: &api.PodSecurityContext{
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ SecurityContext: &core.PodSecurityContext{
SupplementalGroups: []int64{maxGroupID},
RunAsUser: &maxUserID,
FSGroup: &maxGroupID,
},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
{ // Populate HostIPC.
- SecurityContext: &api.PodSecurityContext{
+ SecurityContext: &core.PodSecurityContext{
HostIPC: true,
},
- Volumes: []api.Volume{{Name: "vol", VolumeSource: api.VolumeSource{EmptyDir: &api.EmptyDirVolumeSource{}}}},
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ Volumes: []core.Volume{{Name: "vol", VolumeSource: core.VolumeSource{EmptyDir: &core.EmptyDirVolumeSource{}}}},
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
{ // Populate HostPID.
- SecurityContext: &api.PodSecurityContext{
+ SecurityContext: &core.PodSecurityContext{
HostPID: true,
},
- Volumes: []api.Volume{{Name: "vol", VolumeSource: api.VolumeSource{EmptyDir: &api.EmptyDirVolumeSource{}}}},
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ Volumes: []core.Volume{{Name: "vol", VolumeSource: core.VolumeSource{EmptyDir: &core.EmptyDirVolumeSource{}}}},
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
{ // Populate Affinity.
- Volumes: []api.Volume{{Name: "vol", VolumeSource: api.VolumeSource{EmptyDir: &api.EmptyDirVolumeSource{}}}},
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ Volumes: []core.Volume{{Name: "vol", VolumeSource: core.VolumeSource{EmptyDir: &core.EmptyDirVolumeSource{}}}},
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
{ // Populate HostAliases.
- HostAliases: []api.HostAlias{{IP: "12.34.56.78", Hostnames: []string{"host1", "host2"}}},
- Volumes: []api.Volume{{Name: "vol", VolumeSource: api.VolumeSource{EmptyDir: &api.EmptyDirVolumeSource{}}}},
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ HostAliases: []core.HostAlias{{IP: "12.34.56.78", Hostnames: []string{"host1", "host2"}}},
+ Volumes: []core.Volume{{Name: "vol", VolumeSource: core.VolumeSource{EmptyDir: &core.EmptyDirVolumeSource{}}}},
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
{ // Populate HostAliases with `foo.bar` hostnames.
- HostAliases: []api.HostAlias{{IP: "12.34.56.78", Hostnames: []string{"host1.foo", "host2.bar"}}},
- Volumes: []api.Volume{{Name: "vol", VolumeSource: api.VolumeSource{EmptyDir: &api.EmptyDirVolumeSource{}}}},
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ HostAliases: []core.HostAlias{{IP: "12.34.56.78", Hostnames: []string{"host1.foo", "host2.bar"}}},
+ Volumes: []core.Volume{{Name: "vol", VolumeSource: core.VolumeSource{EmptyDir: &core.EmptyDirVolumeSource{}}}},
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
{ // Populate HostAliases with HostNetwork.
- HostAliases: []api.HostAlias{{IP: "12.34.56.78", Hostnames: []string{"host1.foo", "host2.bar"}}},
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- SecurityContext: &api.PodSecurityContext{
+ HostAliases: []core.HostAlias{{IP: "12.34.56.78", Hostnames: []string{"host1.foo", "host2.bar"}}},
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ SecurityContext: &core.PodSecurityContext{
HostNetwork: true,
},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
{ // Populate PriorityClassName.
- Volumes: []api.Volume{{Name: "vol", VolumeSource: api.VolumeSource{EmptyDir: &api.EmptyDirVolumeSource{}}}},
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ Volumes: []core.Volume{{Name: "vol", VolumeSource: core.VolumeSource{EmptyDir: &core.EmptyDirVolumeSource{}}}},
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
PriorityClassName: "valid-name",
},
}
@@ -4610,171 +4743,171 @@ func TestValidatePodSpec(t *testing.T) {
minGroupID = int64(-1)
maxGroupID = int64(2147483648)
- failureCases := map[string]api.PodSpec{
+ failureCases := map[string]core.PodSpec{
"bad volume": {
- Volumes: []api.Volume{{}},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ Volumes: []core.Volume{{}},
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
},
"no containers": {
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
"bad container": {
- Containers: []api.Container{{}},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ Containers: []core.Container{{}},
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
"bad init container": {
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- InitContainers: []api.Container{{}},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ InitContainers: []core.Container{{}},
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
"bad DNS policy": {
- DNSPolicy: api.DNSPolicy("invalid"),
- RestartPolicy: api.RestartPolicyAlways,
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ DNSPolicy: core.DNSPolicy("invalid"),
+ RestartPolicy: core.RestartPolicyAlways,
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
},
"bad service account name": {
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
ServiceAccountName: "invalidName",
},
"bad restart policy": {
RestartPolicy: "UnknowPolicy",
- DNSPolicy: api.DNSClusterFirst,
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ DNSPolicy: core.DNSClusterFirst,
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
},
"with hostNetwork hostPort not equal to containerPort": {
- Containers: []api.Container{
- {Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", Ports: []api.ContainerPort{
+ Containers: []core.Container{
+ {Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", Ports: []core.ContainerPort{
{HostPort: 8080, ContainerPort: 2600, Protocol: "TCP"}},
},
},
- SecurityContext: &api.PodSecurityContext{
+ SecurityContext: &core.PodSecurityContext{
HostNetwork: true,
},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
"with hostAliases with invalid IP": {
- SecurityContext: &api.PodSecurityContext{
+ SecurityContext: &core.PodSecurityContext{
HostNetwork: false,
},
- HostAliases: []api.HostAlias{{IP: "999.999.999.999", Hostnames: []string{"host1", "host2"}}},
+ HostAliases: []core.HostAlias{{IP: "999.999.999.999", Hostnames: []string{"host1", "host2"}}},
},
"with hostAliases with invalid hostname": {
- SecurityContext: &api.PodSecurityContext{
+ SecurityContext: &core.PodSecurityContext{
HostNetwork: false,
},
- HostAliases: []api.HostAlias{{IP: "12.34.56.78", Hostnames: []string{"@#$^#@#$"}}},
+ HostAliases: []core.HostAlias{{IP: "12.34.56.78", Hostnames: []string{"@#$^#@#$"}}},
},
"bad supplementalGroups large than math.MaxInt32": {
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- SecurityContext: &api.PodSecurityContext{
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ SecurityContext: &core.PodSecurityContext{
HostNetwork: false,
SupplementalGroups: []int64{maxGroupID, 1234},
},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
"bad supplementalGroups less than 0": {
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- SecurityContext: &api.PodSecurityContext{
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ SecurityContext: &core.PodSecurityContext{
HostNetwork: false,
SupplementalGroups: []int64{minGroupID, 1234},
},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
"bad runAsUser large than math.MaxInt32": {
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- SecurityContext: &api.PodSecurityContext{
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ SecurityContext: &core.PodSecurityContext{
HostNetwork: false,
RunAsUser: &maxUserID,
},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
"bad runAsUser less than 0": {
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- SecurityContext: &api.PodSecurityContext{
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ SecurityContext: &core.PodSecurityContext{
HostNetwork: false,
RunAsUser: &minUserID,
},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
"bad fsGroup large than math.MaxInt32": {
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- SecurityContext: &api.PodSecurityContext{
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ SecurityContext: &core.PodSecurityContext{
HostNetwork: false,
FSGroup: &maxGroupID,
},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
"bad fsGroup less than 0": {
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- SecurityContext: &api.PodSecurityContext{
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ SecurityContext: &core.PodSecurityContext{
HostNetwork: false,
FSGroup: &minGroupID,
},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
"bad-active-deadline-seconds": {
- Volumes: []api.Volume{
- {Name: "vol", VolumeSource: api.VolumeSource{EmptyDir: &api.EmptyDirVolumeSource{}}},
+ Volumes: []core.Volume{
+ {Name: "vol", VolumeSource: core.VolumeSource{EmptyDir: &core.EmptyDirVolumeSource{}}},
},
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- RestartPolicy: api.RestartPolicyAlways,
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ RestartPolicy: core.RestartPolicyAlways,
NodeSelector: map[string]string{
"key": "value",
},
NodeName: "foobar",
- DNSPolicy: api.DNSClusterFirst,
+ DNSPolicy: core.DNSClusterFirst,
ActiveDeadlineSeconds: &activeDeadlineSeconds,
},
"active-deadline-seconds-too-large": {
- Volumes: []api.Volume{
- {Name: "vol", VolumeSource: api.VolumeSource{EmptyDir: &api.EmptyDirVolumeSource{}}},
+ Volumes: []core.Volume{
+ {Name: "vol", VolumeSource: core.VolumeSource{EmptyDir: &core.EmptyDirVolumeSource{}}},
},
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- RestartPolicy: api.RestartPolicyAlways,
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ RestartPolicy: core.RestartPolicyAlways,
NodeSelector: map[string]string{
"key": "value",
},
NodeName: "foobar",
- DNSPolicy: api.DNSClusterFirst,
+ DNSPolicy: core.DNSClusterFirst,
ActiveDeadlineSeconds: &activeDeadlineSecondsTooLarge,
},
"bad nodeName": {
NodeName: "node name",
- Volumes: []api.Volume{{Name: "vol", VolumeSource: api.VolumeSource{EmptyDir: &api.EmptyDirVolumeSource{}}}},
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ Volumes: []core.Volume{{Name: "vol", VolumeSource: core.VolumeSource{EmptyDir: &core.EmptyDirVolumeSource{}}}},
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
"bad PriorityClassName": {
- Volumes: []api.Volume{{Name: "vol", VolumeSource: api.VolumeSource{EmptyDir: &api.EmptyDirVolumeSource{}}}},
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ Volumes: []core.Volume{{Name: "vol", VolumeSource: core.VolumeSource{EmptyDir: &core.EmptyDirVolumeSource{}}}},
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
PriorityClassName: "InvalidName",
},
"with privileged and allowPrivilegeEscalation false": {
- Containers: []api.Container{
+ Containers: []core.Container{
{
Name: "ctr",
Image: "image",
ImagePullPolicy: "IfNotPresent",
- Ports: []api.ContainerPort{
+ Ports: []core.ContainerPort{
{HostPort: 8080, ContainerPort: 2600, Protocol: "TCP"}},
- SecurityContext: &api.SecurityContext{
+ SecurityContext: &core.SecurityContext{
Privileged: boolPtr(true),
AllowPrivilegeEscalation: boolPtr(false),
},
@@ -4782,16 +4915,16 @@ func TestValidatePodSpec(t *testing.T) {
},
},
"with CAP_SYS_ADMIN and allowPrivilegeEscalation false": {
- Containers: []api.Container{
+ Containers: []core.Container{
{
Name: "ctr",
Image: "image",
ImagePullPolicy: "IfNotPresent",
- Ports: []api.ContainerPort{
+ Ports: []core.ContainerPort{
{HostPort: 8080, ContainerPort: 2600, Protocol: "TCP"}},
- SecurityContext: &api.SecurityContext{
- Capabilities: &api.Capabilities{
- Add: []api.Capability{"CAP_SYS_ADMIN"},
+ SecurityContext: &core.SecurityContext{
+ Capabilities: &core.Capabilities{
+ Add: []core.Capability{"CAP_SYS_ADMIN"},
},
AllowPrivilegeEscalation: boolPtr(false),
},
@@ -4811,19 +4944,19 @@ func TestValidatePodSpec(t *testing.T) {
return
}
priority := int32(100)
- featuregatedCases := map[string]api.PodSpec{
+ featuregatedCases := map[string]core.PodSpec{
"set PriorityClassName": {
- Volumes: []api.Volume{{Name: "vol", VolumeSource: api.VolumeSource{EmptyDir: &api.EmptyDirVolumeSource{}}}},
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ Volumes: []core.Volume{{Name: "vol", VolumeSource: core.VolumeSource{EmptyDir: &core.EmptyDirVolumeSource{}}}},
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
PriorityClassName: "valid-name",
},
"set Priority": {
- Volumes: []api.Volume{{Name: "vol", VolumeSource: api.VolumeSource{EmptyDir: &api.EmptyDirVolumeSource{}}}},
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ Volumes: []core.Volume{{Name: "vol", VolumeSource: core.VolumeSource{EmptyDir: &core.EmptyDirVolumeSource{}}}},
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
Priority: &priority,
},
}
@@ -4834,8 +4967,8 @@ func TestValidatePodSpec(t *testing.T) {
}
}
-func extendPodSpecwithTolerations(in api.PodSpec, tolerations []api.Toleration) api.PodSpec {
- var out api.PodSpec
+func extendPodSpecwithTolerations(in core.PodSpec, tolerations []core.Toleration) core.PodSpec {
+ var out core.PodSpec
out.Containers = in.Containers
out.RestartPolicy = in.RestartPolicy
out.DNSPolicy = in.DNSPolicy
@@ -4844,11 +4977,11 @@ func extendPodSpecwithTolerations(in api.PodSpec, tolerations []api.Toleration)
}
func TestValidatePod(t *testing.T) {
- validPodSpec := func(affinity *api.Affinity) api.PodSpec {
- spec := api.PodSpec{
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ validPodSpec := func(affinity *core.Affinity) core.PodSpec {
+ spec := core.PodSpec{
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
}
if affinity != nil {
spec.Affinity = affinity
@@ -4856,25 +4989,25 @@ func TestValidatePod(t *testing.T) {
return spec
}
- successCases := []api.Pod{
+ successCases := []core.Pod{
{ // Basic fields.
ObjectMeta: metav1.ObjectMeta{Name: "123", Namespace: "ns"},
- Spec: api.PodSpec{
- Volumes: []api.Volume{{Name: "vol", VolumeSource: api.VolumeSource{EmptyDir: &api.EmptyDirVolumeSource{}}}},
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ Spec: core.PodSpec{
+ Volumes: []core.Volume{{Name: "vol", VolumeSource: core.VolumeSource{EmptyDir: &core.EmptyDirVolumeSource{}}}},
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
},
{ // Just about everything.
ObjectMeta: metav1.ObjectMeta{Name: "abc.123.do-re-mi", Namespace: "ns"},
- Spec: api.PodSpec{
- Volumes: []api.Volume{
- {Name: "vol", VolumeSource: api.VolumeSource{EmptyDir: &api.EmptyDirVolumeSource{}}},
+ Spec: core.PodSpec{
+ Volumes: []core.Volume{
+ {Name: "vol", VolumeSource: core.VolumeSource{EmptyDir: &core.EmptyDirVolumeSource{}}},
},
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
NodeSelector: map[string]string{
"key": "value",
},
@@ -4889,41 +5022,41 @@ func TestValidatePod(t *testing.T) {
Spec: validPodSpec(
// TODO: Uncomment and move this block and move inside NodeAffinity once
// RequiredDuringSchedulingRequiredDuringExecution is implemented
- // RequiredDuringSchedulingRequiredDuringExecution: &api.NodeSelector{
- // NodeSelectorTerms: []api.NodeSelectorTerm{
+ // RequiredDuringSchedulingRequiredDuringExecution: &core.NodeSelector{
+ // NodeSelectorTerms: []core.NodeSelectorTerm{
// {
- // MatchExpressions: []api.NodeSelectorRequirement{
+ // MatchExpressions: []core.NodeSelectorRequirement{
// {
// Key: "key1",
- // Operator: api.NodeSelectorOpExists
+ // Operator: core.NodeSelectorOpExists
// },
// },
// },
// },
// },
- &api.Affinity{
- NodeAffinity: &api.NodeAffinity{
- RequiredDuringSchedulingIgnoredDuringExecution: &api.NodeSelector{
- NodeSelectorTerms: []api.NodeSelectorTerm{
+ &core.Affinity{
+ NodeAffinity: &core.NodeAffinity{
+ RequiredDuringSchedulingIgnoredDuringExecution: &core.NodeSelector{
+ NodeSelectorTerms: []core.NodeSelectorTerm{
{
- MatchExpressions: []api.NodeSelectorRequirement{
+ MatchExpressions: []core.NodeSelectorRequirement{
{
Key: "key2",
- Operator: api.NodeSelectorOpIn,
+ Operator: core.NodeSelectorOpIn,
Values: []string{"value1", "value2"},
},
},
},
},
},
- PreferredDuringSchedulingIgnoredDuringExecution: []api.PreferredSchedulingTerm{
+ PreferredDuringSchedulingIgnoredDuringExecution: []core.PreferredSchedulingTerm{
{
Weight: 10,
- Preference: api.NodeSelectorTerm{
- MatchExpressions: []api.NodeSelectorRequirement{
+ Preference: core.NodeSelectorTerm{
+ MatchExpressions: []core.NodeSelectorRequirement{
{
Key: "foo",
- Operator: api.NodeSelectorOpIn,
+ Operator: core.NodeSelectorOpIn,
Values: []string{"bar"},
},
},
@@ -4952,9 +5085,9 @@ func TestValidatePod(t *testing.T) {
// "topologyKey": "zone"
// }]
},
- Spec: validPodSpec(&api.Affinity{
- PodAffinity: &api.PodAffinity{
- RequiredDuringSchedulingIgnoredDuringExecution: []api.PodAffinityTerm{
+ Spec: validPodSpec(&core.Affinity{
+ PodAffinity: &core.PodAffinity{
+ RequiredDuringSchedulingIgnoredDuringExecution: []core.PodAffinityTerm{
{
LabelSelector: &metav1.LabelSelector{
MatchExpressions: []metav1.LabelSelectorRequirement{
@@ -4969,10 +5102,10 @@ func TestValidatePod(t *testing.T) {
Namespaces: []string{"ns"},
},
},
- PreferredDuringSchedulingIgnoredDuringExecution: []api.WeightedPodAffinityTerm{
+ PreferredDuringSchedulingIgnoredDuringExecution: []core.WeightedPodAffinityTerm{
{
Weight: 10,
- PodAffinityTerm: api.PodAffinityTerm{
+ PodAffinityTerm: core.PodAffinityTerm{
LabelSelector: &metav1.LabelSelector{
MatchExpressions: []metav1.LabelSelectorRequirement{
{
@@ -5008,9 +5141,9 @@ func TestValidatePod(t *testing.T) {
// "topologyKey": "zone"
// }]
},
- Spec: validPodSpec(&api.Affinity{
- PodAntiAffinity: &api.PodAntiAffinity{
- RequiredDuringSchedulingIgnoredDuringExecution: []api.PodAffinityTerm{
+ Spec: validPodSpec(&core.Affinity{
+ PodAntiAffinity: &core.PodAntiAffinity{
+ RequiredDuringSchedulingIgnoredDuringExecution: []core.PodAffinityTerm{
{
LabelSelector: &metav1.LabelSelector{
MatchExpressions: []metav1.LabelSelectorRequirement{
@@ -5024,10 +5157,10 @@ func TestValidatePod(t *testing.T) {
Namespaces: []string{"ns"},
},
},
- PreferredDuringSchedulingIgnoredDuringExecution: []api.WeightedPodAffinityTerm{
+ PreferredDuringSchedulingIgnoredDuringExecution: []core.WeightedPodAffinityTerm{
{
Weight: 10,
- PodAffinityTerm: api.PodAffinityTerm{
+ PodAffinityTerm: core.PodAffinityTerm{
LabelSelector: &metav1.LabelSelector{
MatchExpressions: []metav1.LabelSelectorRequirement{
{
@@ -5049,21 +5182,21 @@ func TestValidatePod(t *testing.T) {
Name: "123",
Namespace: "ns",
},
- Spec: extendPodSpecwithTolerations(validPodSpec(nil), []api.Toleration{{Key: "foo", Operator: "Exists", Value: "", Effect: "NoExecute", TolerationSeconds: &[]int64{60}[0]}}),
+ Spec: extendPodSpecwithTolerations(validPodSpec(nil), []core.Toleration{{Key: "foo", Operator: "Exists", Value: "", Effect: "NoExecute", TolerationSeconds: &[]int64{60}[0]}}),
},
{ // populate forgiveness tolerations with equal operator in annotations.
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
},
- Spec: extendPodSpecwithTolerations(validPodSpec(nil), []api.Toleration{{Key: "foo", Operator: "Equal", Value: "bar", Effect: "NoExecute", TolerationSeconds: &[]int64{60}[0]}}),
+ Spec: extendPodSpecwithTolerations(validPodSpec(nil), []core.Toleration{{Key: "foo", Operator: "Equal", Value: "bar", Effect: "NoExecute", TolerationSeconds: &[]int64{60}[0]}}),
},
{ // populate tolerations equal operator in annotations.
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
},
- Spec: extendPodSpecwithTolerations(validPodSpec(nil), []api.Toleration{{Key: "foo", Operator: "Equal", Value: "bar", Effect: "NoSchedule"}}),
+ Spec: extendPodSpecwithTolerations(validPodSpec(nil), []core.Toleration{{Key: "foo", Operator: "Equal", Value: "bar", Effect: "NoSchedule"}}),
},
{ // populate tolerations exists operator in annotations.
ObjectMeta: metav1.ObjectMeta{
@@ -5077,35 +5210,35 @@ func TestValidatePod(t *testing.T) {
Name: "123",
Namespace: "ns",
},
- Spec: extendPodSpecwithTolerations(validPodSpec(nil), []api.Toleration{{Operator: "Exists", Effect: "NoSchedule"}}),
+ Spec: extendPodSpecwithTolerations(validPodSpec(nil), []core.Toleration{{Operator: "Exists", Effect: "NoSchedule"}}),
},
{ // empty operator is OK for toleration, defaults to Equal.
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
},
- Spec: extendPodSpecwithTolerations(validPodSpec(nil), []api.Toleration{{Key: "foo", Value: "bar", Effect: "NoSchedule"}}),
+ Spec: extendPodSpecwithTolerations(validPodSpec(nil), []core.Toleration{{Key: "foo", Value: "bar", Effect: "NoSchedule"}}),
},
{ // empty effect is OK for toleration, empty toleration effect means match all taint effects.
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
},
- Spec: extendPodSpecwithTolerations(validPodSpec(nil), []api.Toleration{{Key: "foo", Operator: "Equal", Value: "bar"}}),
+ Spec: extendPodSpecwithTolerations(validPodSpec(nil), []core.Toleration{{Key: "foo", Operator: "Equal", Value: "bar"}}),
},
{ // negative tolerationSeconds is OK for toleration.
ObjectMeta: metav1.ObjectMeta{
Name: "pod-forgiveness-invalid",
Namespace: "ns",
},
- Spec: extendPodSpecwithTolerations(validPodSpec(nil), []api.Toleration{{Key: "node.kubernetes.io/not-ready", Operator: "Exists", Effect: "NoExecute", TolerationSeconds: &[]int64{-2}[0]}}),
+ Spec: extendPodSpecwithTolerations(validPodSpec(nil), []core.Toleration{{Key: "node.kubernetes.io/not-ready", Operator: "Exists", Effect: "NoExecute", TolerationSeconds: &[]int64{-2}[0]}}),
},
{ // docker default seccomp profile
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
Annotations: map[string]string{
- api.SeccompPodAnnotationKey: "docker/default",
+ core.SeccompPodAnnotationKey: "docker/default",
},
},
Spec: validPodSpec(nil),
@@ -5115,7 +5248,7 @@ func TestValidatePod(t *testing.T) {
Name: "123",
Namespace: "ns",
Annotations: map[string]string{
- api.SeccompPodAnnotationKey: "unconfined",
+ core.SeccompPodAnnotationKey: "unconfined",
},
},
Spec: validPodSpec(nil),
@@ -5125,7 +5258,7 @@ func TestValidatePod(t *testing.T) {
Name: "123",
Namespace: "ns",
Annotations: map[string]string{
- api.SeccompPodAnnotationKey: "localhost/foo",
+ core.SeccompPodAnnotationKey: "localhost/foo",
},
},
Spec: validPodSpec(nil),
@@ -5135,7 +5268,7 @@ func TestValidatePod(t *testing.T) {
Name: "123",
Namespace: "ns",
Annotations: map[string]string{
- api.SeccompContainerAnnotationKeyPrefix + "foo": "localhost/foo",
+ core.SeccompContainerAnnotationKeyPrefix + "foo": "localhost/foo",
},
},
Spec: validPodSpec(nil),
@@ -5158,11 +5291,11 @@ func TestValidatePod(t *testing.T) {
apparmor.ContainerAnnotationKeyPrefix + "init-ctr": apparmor.ProfileRuntimeDefault,
},
},
- Spec: api.PodSpec{
- InitContainers: []api.Container{{Name: "init-ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ Spec: core.PodSpec{
+ InitContainers: []core.Container{{Name: "init-ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
},
{ // localhost AppArmor profile for a container
@@ -5180,58 +5313,58 @@ func TestValidatePod(t *testing.T) {
Name: "123",
Namespace: "ns",
Annotations: map[string]string{
- api.SysctlsPodAnnotationKey: "kernel.shmmni=32768,kernel.shmmax=1000000000",
- api.UnsafeSysctlsPodAnnotationKey: "knet.ipv4.route.min_pmtu=1000",
+ core.SysctlsPodAnnotationKey: "kernel.shmmni=32768,kernel.shmmax=1000000000",
+ core.UnsafeSysctlsPodAnnotationKey: "knet.ipv4.route.min_pmtu=1000",
},
},
Spec: validPodSpec(nil),
},
{ // valid opaque integer resources for init container
ObjectMeta: metav1.ObjectMeta{Name: "valid-opaque-int", Namespace: "ns"},
- Spec: api.PodSpec{
- InitContainers: []api.Container{
+ Spec: core.PodSpec{
+ InitContainers: []core.Container{
{
Name: "valid-opaque-int",
Image: "image",
ImagePullPolicy: "IfNotPresent",
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
helper.OpaqueIntResourceName("A"): resource.MustParse("10"),
},
- Limits: api.ResourceList{
+ Limits: core.ResourceList{
helper.OpaqueIntResourceName("A"): resource.MustParse("20"),
},
},
TerminationMessagePolicy: "File",
},
},
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
},
{ // valid opaque integer resources for regular container
ObjectMeta: metav1.ObjectMeta{Name: "valid-opaque-int", Namespace: "ns"},
- Spec: api.PodSpec{
- InitContainers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- Containers: []api.Container{
+ Spec: core.PodSpec{
+ InitContainers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ Containers: []core.Container{
{
Name: "valid-opaque-int",
Image: "image",
ImagePullPolicy: "IfNotPresent",
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
helper.OpaqueIntResourceName("A"): resource.MustParse("10"),
},
- Limits: api.ResourceList{
+ Limits: core.ResourceList{
helper.OpaqueIntResourceName("A"): resource.MustParse("20"),
},
},
TerminationMessagePolicy: "File",
},
},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
},
}
@@ -5242,65 +5375,65 @@ func TestValidatePod(t *testing.T) {
}
errorCases := map[string]struct {
- spec api.Pod
+ spec core.Pod
expectedError string
}{
"bad name": {
expectedError: "metadata.name",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "", Namespace: "ns"},
- Spec: api.PodSpec{
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ Spec: core.PodSpec{
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
},
},
},
"image whitespace": {
expectedError: "spec.containers[0].image",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "ns"},
- Spec: api.PodSpec{
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
- Containers: []api.Container{{Name: "ctr", Image: " ", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ Spec: core.PodSpec{
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
+ Containers: []core.Container{{Name: "ctr", Image: " ", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
},
},
},
"image leading and trailing whitespace": {
expectedError: "spec.containers[0].image",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "ns"},
- Spec: api.PodSpec{
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
- Containers: []api.Container{{Name: "ctr", Image: " something ", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ Spec: core.PodSpec{
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
+ Containers: []core.Container{{Name: "ctr", Image: " something ", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
},
},
},
"bad namespace": {
expectedError: "metadata.namespace",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: ""},
- Spec: api.PodSpec{
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ Spec: core.PodSpec{
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
},
},
},
"bad spec": {
expectedError: "spec.containers[0].name",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "ns"},
- Spec: api.PodSpec{
- Containers: []api.Container{{}},
+ Spec: core.PodSpec{
+ Containers: []core.Container{{}},
},
},
},
"bad label": {
expectedError: "NoUppercaseOrSpecialCharsLike=Equals",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "abc",
Namespace: "ns",
@@ -5308,26 +5441,26 @@ func TestValidatePod(t *testing.T) {
"NoUppercaseOrSpecialCharsLike=Equals": "bar",
},
},
- Spec: api.PodSpec{
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ Spec: core.PodSpec{
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
},
},
},
"invalid node selector requirement in node affinity, operator can't be null": {
expectedError: "spec.affinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[0].matchExpressions[0].operator",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
},
- Spec: validPodSpec(&api.Affinity{
- NodeAffinity: &api.NodeAffinity{
- RequiredDuringSchedulingIgnoredDuringExecution: &api.NodeSelector{
- NodeSelectorTerms: []api.NodeSelectorTerm{
+ Spec: validPodSpec(&core.Affinity{
+ NodeAffinity: &core.NodeAffinity{
+ RequiredDuringSchedulingIgnoredDuringExecution: &core.NodeSelector{
+ NodeSelectorTerms: []core.NodeSelectorTerm{
{
- MatchExpressions: []api.NodeSelectorRequirement{
+ MatchExpressions: []core.NodeSelectorRequirement{
{
Key: "key1",
},
@@ -5341,21 +5474,21 @@ func TestValidatePod(t *testing.T) {
},
"invalid preferredSchedulingTerm in node affinity, weight should be in range 1-100": {
expectedError: "must be in the range 1-100",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
},
- Spec: validPodSpec(&api.Affinity{
- NodeAffinity: &api.NodeAffinity{
- PreferredDuringSchedulingIgnoredDuringExecution: []api.PreferredSchedulingTerm{
+ Spec: validPodSpec(&core.Affinity{
+ NodeAffinity: &core.NodeAffinity{
+ PreferredDuringSchedulingIgnoredDuringExecution: []core.PreferredSchedulingTerm{
{
Weight: 199,
- Preference: api.NodeSelectorTerm{
- MatchExpressions: []api.NodeSelectorRequirement{
+ Preference: core.NodeSelectorTerm{
+ MatchExpressions: []core.NodeSelectorRequirement{
{
Key: "foo",
- Operator: api.NodeSelectorOpIn,
+ Operator: core.NodeSelectorOpIn,
Values: []string{"bar"},
},
},
@@ -5368,15 +5501,15 @@ func TestValidatePod(t *testing.T) {
},
"invalid requiredDuringSchedulingIgnoredDuringExecution node selector, nodeSelectorTerms must have at least one term": {
expectedError: "spec.affinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
},
- Spec: validPodSpec(&api.Affinity{
- NodeAffinity: &api.NodeAffinity{
- RequiredDuringSchedulingIgnoredDuringExecution: &api.NodeSelector{
- NodeSelectorTerms: []api.NodeSelectorTerm{},
+ Spec: validPodSpec(&core.Affinity{
+ NodeAffinity: &core.NodeAffinity{
+ RequiredDuringSchedulingIgnoredDuringExecution: &core.NodeSelector{
+ NodeSelectorTerms: []core.NodeSelectorTerm{},
},
},
}),
@@ -5384,17 +5517,17 @@ func TestValidatePod(t *testing.T) {
},
"invalid requiredDuringSchedulingIgnoredDuringExecution node selector term, matchExpressions must have at least one node selector requirement": {
expectedError: "spec.affinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[0].matchExpressions",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
},
- Spec: validPodSpec(&api.Affinity{
- NodeAffinity: &api.NodeAffinity{
- RequiredDuringSchedulingIgnoredDuringExecution: &api.NodeSelector{
- NodeSelectorTerms: []api.NodeSelectorTerm{
+ Spec: validPodSpec(&core.Affinity{
+ NodeAffinity: &core.NodeAffinity{
+ RequiredDuringSchedulingIgnoredDuringExecution: &core.NodeSelector{
+ NodeSelectorTerms: []core.NodeSelectorTerm{
{
- MatchExpressions: []api.NodeSelectorRequirement{},
+ MatchExpressions: []core.NodeSelectorRequirement{},
},
},
},
@@ -5404,17 +5537,17 @@ func TestValidatePod(t *testing.T) {
},
"invalid weight in preferredDuringSchedulingIgnoredDuringExecution in pod affinity annotations, weight should be in range 1-100": {
expectedError: "must be in the range 1-100",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
},
- Spec: validPodSpec(&api.Affinity{
- PodAffinity: &api.PodAffinity{
- PreferredDuringSchedulingIgnoredDuringExecution: []api.WeightedPodAffinityTerm{
+ Spec: validPodSpec(&core.Affinity{
+ PodAffinity: &core.PodAffinity{
+ PreferredDuringSchedulingIgnoredDuringExecution: []core.WeightedPodAffinityTerm{
{
Weight: 109,
- PodAffinityTerm: api.PodAffinityTerm{
+ PodAffinityTerm: core.PodAffinityTerm{
LabelSelector: &metav1.LabelSelector{
MatchExpressions: []metav1.LabelSelectorRequirement{
{
@@ -5435,17 +5568,17 @@ func TestValidatePod(t *testing.T) {
},
"invalid labelSelector in preferredDuringSchedulingIgnoredDuringExecution in podaffinity annotations, values should be empty if the operator is Exists": {
expectedError: "spec.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[0].podAffinityTerm.matchExpressions.matchExpressions[0].values",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
},
- Spec: validPodSpec(&api.Affinity{
- PodAntiAffinity: &api.PodAntiAffinity{
- PreferredDuringSchedulingIgnoredDuringExecution: []api.WeightedPodAffinityTerm{
+ Spec: validPodSpec(&core.Affinity{
+ PodAntiAffinity: &core.PodAntiAffinity{
+ PreferredDuringSchedulingIgnoredDuringExecution: []core.WeightedPodAffinityTerm{
{
Weight: 10,
- PodAffinityTerm: api.PodAffinityTerm{
+ PodAffinityTerm: core.PodAffinityTerm{
LabelSelector: &metav1.LabelSelector{
MatchExpressions: []metav1.LabelSelectorRequirement{
{
@@ -5466,17 +5599,17 @@ func TestValidatePod(t *testing.T) {
},
"invalid name space in preferredDuringSchedulingIgnoredDuringExecution in podaffinity annotations, name space shouldbe valid": {
expectedError: "spec.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[0].podAffinityTerm.namespace",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
},
- Spec: validPodSpec(&api.Affinity{
- PodAffinity: &api.PodAffinity{
- PreferredDuringSchedulingIgnoredDuringExecution: []api.WeightedPodAffinityTerm{
+ Spec: validPodSpec(&core.Affinity{
+ PodAffinity: &core.PodAffinity{
+ PreferredDuringSchedulingIgnoredDuringExecution: []core.WeightedPodAffinityTerm{
{
Weight: 10,
- PodAffinityTerm: api.PodAffinityTerm{
+ PodAffinityTerm: core.PodAffinityTerm{
LabelSelector: &metav1.LabelSelector{
MatchExpressions: []metav1.LabelSelectorRequirement{
{
@@ -5496,14 +5629,14 @@ func TestValidatePod(t *testing.T) {
},
"invalid hard pod affinity, empty topologyKey is not allowed for hard pod affinity": {
expectedError: "can not be empty",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
},
- Spec: validPodSpec(&api.Affinity{
- PodAffinity: &api.PodAffinity{
- RequiredDuringSchedulingIgnoredDuringExecution: []api.PodAffinityTerm{
+ Spec: validPodSpec(&core.Affinity{
+ PodAffinity: &core.PodAffinity{
+ RequiredDuringSchedulingIgnoredDuringExecution: []core.PodAffinityTerm{
{
LabelSelector: &metav1.LabelSelector{
MatchExpressions: []metav1.LabelSelectorRequirement{
@@ -5523,14 +5656,14 @@ func TestValidatePod(t *testing.T) {
},
"invalid hard pod anti-affinity, empty topologyKey is not allowed for hard pod anti-affinity": {
expectedError: "can not be empty",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
},
- Spec: validPodSpec(&api.Affinity{
- PodAntiAffinity: &api.PodAntiAffinity{
- RequiredDuringSchedulingIgnoredDuringExecution: []api.PodAffinityTerm{
+ Spec: validPodSpec(&core.Affinity{
+ PodAntiAffinity: &core.PodAntiAffinity{
+ RequiredDuringSchedulingIgnoredDuringExecution: []core.PodAffinityTerm{
{
LabelSelector: &metav1.LabelSelector{
MatchExpressions: []metav1.LabelSelectorRequirement{
@@ -5550,17 +5683,17 @@ func TestValidatePod(t *testing.T) {
},
"invalid soft pod affinity, empty topologyKey is not allowed for soft pod affinity": {
expectedError: "can not be empty",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
},
- Spec: validPodSpec(&api.Affinity{
- PodAffinity: &api.PodAffinity{
- PreferredDuringSchedulingIgnoredDuringExecution: []api.WeightedPodAffinityTerm{
+ Spec: validPodSpec(&core.Affinity{
+ PodAffinity: &core.PodAffinity{
+ PreferredDuringSchedulingIgnoredDuringExecution: []core.WeightedPodAffinityTerm{
{
Weight: 10,
- PodAffinityTerm: api.PodAffinityTerm{
+ PodAffinityTerm: core.PodAffinityTerm{
LabelSelector: &metav1.LabelSelector{
MatchExpressions: []metav1.LabelSelectorRequirement{
{
@@ -5580,17 +5713,17 @@ func TestValidatePod(t *testing.T) {
},
"invalid soft pod anti-affinity, empty topologyKey is not allowed for soft pod anti-affinity": {
expectedError: "can not be empty",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
},
- Spec: validPodSpec(&api.Affinity{
- PodAntiAffinity: &api.PodAntiAffinity{
- PreferredDuringSchedulingIgnoredDuringExecution: []api.WeightedPodAffinityTerm{
+ Spec: validPodSpec(&core.Affinity{
+ PodAntiAffinity: &core.PodAntiAffinity{
+ PreferredDuringSchedulingIgnoredDuringExecution: []core.WeightedPodAffinityTerm{
{
Weight: 10,
- PodAffinityTerm: api.PodAffinityTerm{
+ PodAffinityTerm: core.PodAffinityTerm{
LabelSelector: &metav1.LabelSelector{
MatchExpressions: []metav1.LabelSelectorRequirement{
{
@@ -5610,63 +5743,63 @@ func TestValidatePod(t *testing.T) {
},
"invalid toleration key": {
expectedError: "spec.tolerations[0].key",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
},
- Spec: extendPodSpecwithTolerations(validPodSpec(nil), []api.Toleration{{Key: "nospecialchars^=@", Operator: "Equal", Value: "bar", Effect: "NoSchedule"}}),
+ Spec: extendPodSpecwithTolerations(validPodSpec(nil), []core.Toleration{{Key: "nospecialchars^=@", Operator: "Equal", Value: "bar", Effect: "NoSchedule"}}),
},
},
"invalid toleration operator": {
expectedError: "spec.tolerations[0].operator",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
},
- Spec: extendPodSpecwithTolerations(validPodSpec(nil), []api.Toleration{{Key: "foo", Operator: "In", Value: "bar", Effect: "NoSchedule"}}),
+ Spec: extendPodSpecwithTolerations(validPodSpec(nil), []core.Toleration{{Key: "foo", Operator: "In", Value: "bar", Effect: "NoSchedule"}}),
},
},
"value must be empty when `operator` is 'Exists'": {
expectedError: "spec.tolerations[0].operator",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
},
- Spec: extendPodSpecwithTolerations(validPodSpec(nil), []api.Toleration{{Key: "foo", Operator: "Exists", Value: "bar", Effect: "NoSchedule"}}),
+ Spec: extendPodSpecwithTolerations(validPodSpec(nil), []core.Toleration{{Key: "foo", Operator: "Exists", Value: "bar", Effect: "NoSchedule"}}),
},
},
"operator must be 'Exists' when `key` is empty": {
expectedError: "spec.tolerations[0].operator",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
},
- Spec: extendPodSpecwithTolerations(validPodSpec(nil), []api.Toleration{{Operator: "Equal", Value: "bar", Effect: "NoSchedule"}}),
+ Spec: extendPodSpecwithTolerations(validPodSpec(nil), []core.Toleration{{Operator: "Equal", Value: "bar", Effect: "NoSchedule"}}),
},
},
"effect must be 'NoExecute' when `TolerationSeconds` is set": {
expectedError: "spec.tolerations[0].effect",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "pod-forgiveness-invalid",
Namespace: "ns",
},
- Spec: extendPodSpecwithTolerations(validPodSpec(nil), []api.Toleration{{Key: "node.kubernetes.io/not-ready", Operator: "Exists", Effect: "NoSchedule", TolerationSeconds: &[]int64{20}[0]}}),
+ Spec: extendPodSpecwithTolerations(validPodSpec(nil), []core.Toleration{{Key: "node.kubernetes.io/not-ready", Operator: "Exists", Effect: "NoSchedule", TolerationSeconds: &[]int64{20}[0]}}),
},
},
"must be a valid pod seccomp profile": {
expectedError: "must be a valid seccomp profile",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
Annotations: map[string]string{
- api.SeccompPodAnnotationKey: "foo",
+ core.SeccompPodAnnotationKey: "foo",
},
},
Spec: validPodSpec(nil),
@@ -5674,12 +5807,12 @@ func TestValidatePod(t *testing.T) {
},
"must be a valid container seccomp profile": {
expectedError: "must be a valid seccomp profile",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
Annotations: map[string]string{
- api.SeccompContainerAnnotationKeyPrefix + "foo": "foo",
+ core.SeccompContainerAnnotationKeyPrefix + "foo": "foo",
},
},
Spec: validPodSpec(nil),
@@ -5687,12 +5820,12 @@ func TestValidatePod(t *testing.T) {
},
"must be a non-empty container name in seccomp annotation": {
expectedError: "name part must be non-empty",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
Annotations: map[string]string{
- api.SeccompContainerAnnotationKeyPrefix: "foo",
+ core.SeccompContainerAnnotationKeyPrefix: "foo",
},
},
Spec: validPodSpec(nil),
@@ -5700,12 +5833,12 @@ func TestValidatePod(t *testing.T) {
},
"must be a non-empty container profile in seccomp annotation": {
expectedError: "must be a valid seccomp profile",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
Annotations: map[string]string{
- api.SeccompContainerAnnotationKeyPrefix + "foo": "",
+ core.SeccompContainerAnnotationKeyPrefix + "foo": "",
},
},
Spec: validPodSpec(nil),
@@ -5713,12 +5846,12 @@ func TestValidatePod(t *testing.T) {
},
"must be a relative path in a node-local seccomp profile annotation": {
expectedError: "must be a relative path",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
Annotations: map[string]string{
- api.SeccompPodAnnotationKey: "localhost//foo",
+ core.SeccompPodAnnotationKey: "localhost//foo",
},
},
Spec: validPodSpec(nil),
@@ -5726,12 +5859,12 @@ func TestValidatePod(t *testing.T) {
},
"must not start with '../'": {
expectedError: "must not contain '..'",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
Annotations: map[string]string{
- api.SeccompPodAnnotationKey: "localhost/../foo",
+ core.SeccompPodAnnotationKey: "localhost/../foo",
},
},
Spec: validPodSpec(nil),
@@ -5739,7 +5872,7 @@ func TestValidatePod(t *testing.T) {
},
"AppArmor profile must apply to a container": {
expectedError: "metadata.annotations[container.apparmor.security.beta.kubernetes.io/fake-ctr]",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
@@ -5749,17 +5882,17 @@ func TestValidatePod(t *testing.T) {
apparmor.ContainerAnnotationKeyPrefix + "fake-ctr": apparmor.ProfileRuntimeDefault,
},
},
- Spec: api.PodSpec{
- InitContainers: []api.Container{{Name: "init-ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ Spec: core.PodSpec{
+ InitContainers: []core.Container{{Name: "init-ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
},
},
"AppArmor profile format must be valid": {
expectedError: "invalid AppArmor profile name",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
@@ -5772,7 +5905,7 @@ func TestValidatePod(t *testing.T) {
},
"only default AppArmor profile may start with runtime/": {
expectedError: "invalid AppArmor profile name",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
@@ -5785,12 +5918,12 @@ func TestValidatePod(t *testing.T) {
},
"invalid sysctl annotation": {
expectedError: "metadata.annotations[security.alpha.kubernetes.io/sysctls]",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
Annotations: map[string]string{
- api.SysctlsPodAnnotationKey: "foo:",
+ core.SysctlsPodAnnotationKey: "foo:",
},
},
Spec: validPodSpec(nil),
@@ -5798,12 +5931,12 @@ func TestValidatePod(t *testing.T) {
},
"invalid comma-separated sysctl annotation": {
expectedError: "not of the format sysctl_name=value",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
Annotations: map[string]string{
- api.SysctlsPodAnnotationKey: "kernel.msgmax,",
+ core.SysctlsPodAnnotationKey: "kernel.msgmax,",
},
},
Spec: validPodSpec(nil),
@@ -5811,12 +5944,12 @@ func TestValidatePod(t *testing.T) {
},
"invalid unsafe sysctl annotation": {
expectedError: "metadata.annotations[security.alpha.kubernetes.io/sysctls]",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
Annotations: map[string]string{
- api.SysctlsPodAnnotationKey: "foo:",
+ core.SysctlsPodAnnotationKey: "foo:",
},
},
Spec: validPodSpec(nil),
@@ -5824,13 +5957,13 @@ func TestValidatePod(t *testing.T) {
},
"intersecting safe sysctls and unsafe sysctls annotations": {
expectedError: "can not be safe and unsafe",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "123",
Namespace: "ns",
Annotations: map[string]string{
- api.SysctlsPodAnnotationKey: "kernel.shmmax=10000000",
- api.UnsafeSysctlsPodAnnotationKey: "kernel.shmmax=10000000",
+ core.SysctlsPodAnnotationKey: "kernel.shmmax=10000000",
+ core.UnsafeSysctlsPodAnnotationKey: "kernel.shmmax=10000000",
},
},
Spec: validPodSpec(nil),
@@ -5838,144 +5971,144 @@ func TestValidatePod(t *testing.T) {
},
"invalid opaque integer resource requirement: request must be <= limit": {
expectedError: "must be less than or equal to pod.alpha.kubernetes.io/opaque-int-resource-A",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "123", Namespace: "ns"},
- Spec: api.PodSpec{
- Containers: []api.Container{
+ Spec: core.PodSpec{
+ Containers: []core.Container{
{
Name: "invalid",
Image: "image",
ImagePullPolicy: "IfNotPresent",
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
helper.OpaqueIntResourceName("A"): resource.MustParse("2"),
},
- Limits: api.ResourceList{
+ Limits: core.ResourceList{
helper.OpaqueIntResourceName("A"): resource.MustParse("1"),
},
},
},
},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
},
},
"invalid fractional opaque integer resource in container request": {
expectedError: "must be an integer",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "123", Namespace: "ns"},
- Spec: api.PodSpec{
- Containers: []api.Container{
+ Spec: core.PodSpec{
+ Containers: []core.Container{
{
Name: "invalid",
Image: "image",
ImagePullPolicy: "IfNotPresent",
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
helper.OpaqueIntResourceName("A"): resource.MustParse("500m"),
},
},
},
},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
},
},
"invalid fractional opaque integer resource in init container request": {
expectedError: "must be an integer",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "123", Namespace: "ns"},
- Spec: api.PodSpec{
- InitContainers: []api.Container{
+ Spec: core.PodSpec{
+ InitContainers: []core.Container{
{
Name: "invalid",
Image: "image",
ImagePullPolicy: "IfNotPresent",
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
helper.OpaqueIntResourceName("A"): resource.MustParse("500m"),
},
},
},
},
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
},
},
"invalid fractional opaque integer resource in container limit": {
expectedError: "must be an integer",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "123", Namespace: "ns"},
- Spec: api.PodSpec{
- Containers: []api.Container{
+ Spec: core.PodSpec{
+ Containers: []core.Container{
{
Name: "invalid",
Image: "image",
ImagePullPolicy: "IfNotPresent",
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
helper.OpaqueIntResourceName("A"): resource.MustParse("5"),
},
- Limits: api.ResourceList{
+ Limits: core.ResourceList{
helper.OpaqueIntResourceName("A"): resource.MustParse("2.5"),
},
},
},
},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
},
},
"invalid fractional opaque integer resource in init container limit": {
expectedError: "must be an integer",
- spec: api.Pod{
+ spec: core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "123", Namespace: "ns"},
- Spec: api.PodSpec{
- InitContainers: []api.Container{
+ Spec: core.PodSpec{
+ InitContainers: []core.Container{
{
Name: "invalid",
Image: "image",
ImagePullPolicy: "IfNotPresent",
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
helper.OpaqueIntResourceName("A"): resource.MustParse("5"),
},
- Limits: api.ResourceList{
+ Limits: core.ResourceList{
helper.OpaqueIntResourceName("A"): resource.MustParse("2.5"),
},
},
},
},
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
},
},
"mirror-pod present without nodeName": {
expectedError: "mirror",
- spec: api.Pod{
- ObjectMeta: metav1.ObjectMeta{Name: "123", Namespace: "ns", Annotations: map[string]string{api.MirrorPodAnnotationKey: ""}},
- Spec: api.PodSpec{
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ spec: core.Pod{
+ ObjectMeta: metav1.ObjectMeta{Name: "123", Namespace: "ns", Annotations: map[string]string{core.MirrorPodAnnotationKey: ""}},
+ Spec: core.PodSpec{
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
},
},
"mirror-pod populated without nodeName": {
expectedError: "mirror",
- spec: api.Pod{
- ObjectMeta: metav1.ObjectMeta{Name: "123", Namespace: "ns", Annotations: map[string]string{api.MirrorPodAnnotationKey: "foo"}},
- Spec: api.PodSpec{
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ spec: core.Pod{
+ ObjectMeta: metav1.ObjectMeta{Name: "123", Namespace: "ns", Annotations: map[string]string{core.MirrorPodAnnotationKey: "foo"}},
+ Spec: core.PodSpec{
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
},
},
@@ -6004,24 +6137,24 @@ func TestValidatePodUpdate(t *testing.T) {
)
tests := []struct {
- new api.Pod
- old api.Pod
+ new core.Pod
+ old core.Pod
err string
test string
}{
- {api.Pod{}, api.Pod{}, "", "nothing"},
+ {core.Pod{}, core.Pod{}, "", "nothing"},
{
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
},
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "bar"},
},
"metadata.name",
"ids",
},
{
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Labels: map[string]string{
@@ -6029,7 +6162,7 @@ func TestValidatePodUpdate(t *testing.T) {
},
},
},
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Labels: map[string]string{
@@ -6041,7 +6174,7 @@ func TestValidatePodUpdate(t *testing.T) {
"labels",
},
{
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Annotations: map[string]string{
@@ -6049,7 +6182,7 @@ func TestValidatePodUpdate(t *testing.T) {
},
},
},
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Annotations: map[string]string{
@@ -6061,22 +6194,22 @@ func TestValidatePodUpdate(t *testing.T) {
"annotations",
},
{
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Spec: api.PodSpec{
- Containers: []api.Container{
+ Spec: core.PodSpec{
+ Containers: []core.Container{
{
Image: "foo:V1",
},
},
},
},
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
- Spec: api.PodSpec{
- Containers: []api.Container{
+ Spec: core.PodSpec{
+ Containers: []core.Container{
{
Image: "foo:V2",
},
@@ -6090,12 +6223,12 @@ func TestValidatePodUpdate(t *testing.T) {
"less containers",
},
{
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Spec: api.PodSpec{
- Containers: []api.Container{
+ Spec: core.PodSpec{
+ Containers: []core.Container{
{
Image: "foo:V1",
},
@@ -6105,10 +6238,10 @@ func TestValidatePodUpdate(t *testing.T) {
},
},
},
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
- Spec: api.PodSpec{
- Containers: []api.Container{
+ Spec: core.PodSpec{
+ Containers: []core.Container{
{
Image: "foo:V2",
},
@@ -6119,22 +6252,22 @@ func TestValidatePodUpdate(t *testing.T) {
"more containers",
},
{
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Spec: api.PodSpec{
- InitContainers: []api.Container{
+ Spec: core.PodSpec{
+ InitContainers: []core.Container{
{
Image: "foo:V1",
},
},
},
},
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
- Spec: api.PodSpec{
- InitContainers: []api.Container{
+ Spec: core.PodSpec{
+ InitContainers: []core.Container{
{
Image: "foo:V2",
},
@@ -6148,56 +6281,56 @@ func TestValidatePodUpdate(t *testing.T) {
"more init containers",
},
{
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
- Spec: api.PodSpec{Containers: []api.Container{{Image: "foo:V1"}}},
+ Spec: core.PodSpec{Containers: []core.Container{{Image: "foo:V1"}}},
},
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "foo", DeletionTimestamp: &now},
- Spec: api.PodSpec{Containers: []api.Container{{Image: "foo:V1"}}},
+ Spec: core.PodSpec{Containers: []core.Container{{Image: "foo:V1"}}},
},
"",
"deletion timestamp removed",
},
{
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "foo", DeletionTimestamp: &now},
- Spec: api.PodSpec{Containers: []api.Container{{Image: "foo:V1"}}},
+ Spec: core.PodSpec{Containers: []core.Container{{Image: "foo:V1"}}},
},
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
- Spec: api.PodSpec{Containers: []api.Container{{Image: "foo:V1"}}},
+ Spec: core.PodSpec{Containers: []core.Container{{Image: "foo:V1"}}},
},
"metadata.deletionTimestamp",
"deletion timestamp added",
},
{
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "foo", DeletionTimestamp: &now, DeletionGracePeriodSeconds: &grace},
- Spec: api.PodSpec{Containers: []api.Container{{Image: "foo:V1"}}},
+ Spec: core.PodSpec{Containers: []core.Container{{Image: "foo:V1"}}},
},
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "foo", DeletionTimestamp: &now, DeletionGracePeriodSeconds: &grace2},
- Spec: api.PodSpec{Containers: []api.Container{{Image: "foo:V1"}}},
+ Spec: core.PodSpec{Containers: []core.Container{{Image: "foo:V1"}}},
},
"metadata.deletionGracePeriodSeconds",
"deletion grace period seconds changed",
},
{
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
- Spec: api.PodSpec{
- Containers: []api.Container{
+ Spec: core.PodSpec{
+ Containers: []core.Container{
{
Image: "foo:V1",
},
},
},
},
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
- Spec: api.PodSpec{
- Containers: []api.Container{
+ Spec: core.PodSpec{
+ Containers: []core.Container{
{
Image: "foo:V2",
},
@@ -6208,20 +6341,20 @@ func TestValidatePodUpdate(t *testing.T) {
"image change",
},
{
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
- Spec: api.PodSpec{
- InitContainers: []api.Container{
+ Spec: core.PodSpec{
+ InitContainers: []core.Container{
{
Image: "foo:V1",
},
},
},
},
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
- Spec: api.PodSpec{
- InitContainers: []api.Container{
+ Spec: core.PodSpec{
+ InitContainers: []core.Container{
{
Image: "foo:V2",
},
@@ -6232,18 +6365,18 @@ func TestValidatePodUpdate(t *testing.T) {
"init container image change",
},
{
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
- Spec: api.PodSpec{
- Containers: []api.Container{
+ Spec: core.PodSpec{
+ Containers: []core.Container{
{},
},
},
},
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
- Spec: api.PodSpec{
- Containers: []api.Container{
+ Spec: core.PodSpec{
+ Containers: []core.Container{
{
Image: "foo:V2",
},
@@ -6254,18 +6387,18 @@ func TestValidatePodUpdate(t *testing.T) {
"image change to empty",
},
{
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
- Spec: api.PodSpec{
- InitContainers: []api.Container{
+ Spec: core.PodSpec{
+ InitContainers: []core.Container{
{},
},
},
},
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
- Spec: api.PodSpec{
- InitContainers: []api.Container{
+ Spec: core.PodSpec{
+ InitContainers: []core.Container{
{
Image: "foo:V2",
},
@@ -6276,23 +6409,23 @@ func TestValidatePodUpdate(t *testing.T) {
"init container image change to empty",
},
{
- api.Pod{
- Spec: api.PodSpec{},
+ core.Pod{
+ Spec: core.PodSpec{},
},
- api.Pod{
- Spec: api.PodSpec{},
+ core.Pod{
+ Spec: core.PodSpec{},
},
"",
"activeDeadlineSeconds no change, nil",
},
{
- api.Pod{
- Spec: api.PodSpec{
+ core.Pod{
+ Spec: core.PodSpec{
ActiveDeadlineSeconds: &activeDeadlineSecondsPositive,
},
},
- api.Pod{
- Spec: api.PodSpec{
+ core.Pod{
+ Spec: core.PodSpec{
ActiveDeadlineSeconds: &activeDeadlineSecondsPositive,
},
},
@@ -6300,23 +6433,23 @@ func TestValidatePodUpdate(t *testing.T) {
"activeDeadlineSeconds no change, set",
},
{
- api.Pod{
- Spec: api.PodSpec{
+ core.Pod{
+ Spec: core.PodSpec{
ActiveDeadlineSeconds: &activeDeadlineSecondsPositive,
},
},
- api.Pod{},
+ core.Pod{},
"",
"activeDeadlineSeconds change to positive from nil",
},
{
- api.Pod{
- Spec: api.PodSpec{
+ core.Pod{
+ Spec: core.PodSpec{
ActiveDeadlineSeconds: &activeDeadlineSecondsPositive,
},
},
- api.Pod{
- Spec: api.PodSpec{
+ core.Pod{
+ Spec: core.PodSpec{
ActiveDeadlineSeconds: &activeDeadlineSecondsLarger,
},
},
@@ -6324,13 +6457,13 @@ func TestValidatePodUpdate(t *testing.T) {
"activeDeadlineSeconds change to smaller positive",
},
{
- api.Pod{
- Spec: api.PodSpec{
+ core.Pod{
+ Spec: core.PodSpec{
ActiveDeadlineSeconds: &activeDeadlineSecondsLarger,
},
},
- api.Pod{
- Spec: api.PodSpec{
+ core.Pod{
+ Spec: core.PodSpec{
ActiveDeadlineSeconds: &activeDeadlineSecondsPositive,
},
},
@@ -6339,23 +6472,23 @@ func TestValidatePodUpdate(t *testing.T) {
},
{
- api.Pod{
- Spec: api.PodSpec{
+ core.Pod{
+ Spec: core.PodSpec{
ActiveDeadlineSeconds: &activeDeadlineSecondsNegative,
},
},
- api.Pod{},
+ core.Pod{},
"spec.activeDeadlineSeconds",
"activeDeadlineSeconds change to negative from nil",
},
{
- api.Pod{
- Spec: api.PodSpec{
+ core.Pod{
+ Spec: core.PodSpec{
ActiveDeadlineSeconds: &activeDeadlineSecondsNegative,
},
},
- api.Pod{
- Spec: api.PodSpec{
+ core.Pod{
+ Spec: core.PodSpec{
ActiveDeadlineSeconds: &activeDeadlineSecondsPositive,
},
},
@@ -6363,13 +6496,13 @@ func TestValidatePodUpdate(t *testing.T) {
"activeDeadlineSeconds change to negative from positive",
},
{
- api.Pod{
- Spec: api.PodSpec{
+ core.Pod{
+ Spec: core.PodSpec{
ActiveDeadlineSeconds: &activeDeadlineSecondsZero,
},
},
- api.Pod{
- Spec: api.PodSpec{
+ core.Pod{
+ Spec: core.PodSpec{
ActiveDeadlineSeconds: &activeDeadlineSecondsPositive,
},
},
@@ -6377,19 +6510,19 @@ func TestValidatePodUpdate(t *testing.T) {
"activeDeadlineSeconds change to zero from positive",
},
{
- api.Pod{
- Spec: api.PodSpec{
+ core.Pod{
+ Spec: core.PodSpec{
ActiveDeadlineSeconds: &activeDeadlineSecondsZero,
},
},
- api.Pod{},
+ core.Pod{},
"",
"activeDeadlineSeconds change to zero from nil",
},
{
- api.Pod{},
- api.Pod{
- Spec: api.PodSpec{
+ core.Pod{},
+ core.Pod{
+ Spec: core.PodSpec{
ActiveDeadlineSeconds: &activeDeadlineSecondsPositive,
},
},
@@ -6397,26 +6530,26 @@ func TestValidatePodUpdate(t *testing.T) {
"activeDeadlineSeconds change to nil from positive",
},
{
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
- Spec: api.PodSpec{
- Containers: []api.Container{
+ Spec: core.PodSpec{
+ Containers: []core.Container{
{
Image: "foo:V1",
- Resources: api.ResourceRequirements{
+ Resources: core.ResourceRequirements{
Limits: getResourceLimits("100m", "0"),
},
},
},
},
},
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
- Spec: api.PodSpec{
- Containers: []api.Container{
+ Spec: core.PodSpec{
+ Containers: []core.Container{
{
Image: "foo:V2",
- Resources: api.ResourceRequirements{
+ Resources: core.ResourceRequirements{
Limits: getResourceLimits("1000m", "0"),
},
},
@@ -6427,26 +6560,26 @@ func TestValidatePodUpdate(t *testing.T) {
"cpu change",
},
{
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
- Spec: api.PodSpec{
- Containers: []api.Container{
+ Spec: core.PodSpec{
+ Containers: []core.Container{
{
Image: "foo:V1",
- Ports: []api.ContainerPort{
+ Ports: []core.ContainerPort{
{HostPort: 8080, ContainerPort: 80},
},
},
},
},
},
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
- Spec: api.PodSpec{
- Containers: []api.Container{
+ Spec: core.PodSpec{
+ Containers: []core.Container{
{
Image: "foo:V2",
- Ports: []api.ContainerPort{
+ Ports: []core.ContainerPort{
{HostPort: 8000, ContainerPort: 80},
},
},
@@ -6457,7 +6590,7 @@ func TestValidatePodUpdate(t *testing.T) {
"port change",
},
{
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Labels: map[string]string{
@@ -6465,7 +6598,7 @@ func TestValidatePodUpdate(t *testing.T) {
},
},
},
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Labels: map[string]string{
@@ -6477,195 +6610,195 @@ func TestValidatePodUpdate(t *testing.T) {
"bad label change",
},
{
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Spec: api.PodSpec{
+ Spec: core.PodSpec{
NodeName: "node1",
- Tolerations: []api.Toleration{{Key: "key1", Value: "value2"}},
+ Tolerations: []core.Toleration{{Key: "key1", Value: "value2"}},
},
},
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Spec: api.PodSpec{
+ Spec: core.PodSpec{
NodeName: "node1",
- Tolerations: []api.Toleration{{Key: "key1", Value: "value1"}},
+ Tolerations: []core.Toleration{{Key: "key1", Value: "value1"}},
},
},
"spec.tolerations: Forbidden",
"existing toleration value modified in pod spec updates",
},
{
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Spec: api.PodSpec{
+ Spec: core.PodSpec{
NodeName: "node1",
- Tolerations: []api.Toleration{{Key: "key1", Value: "value2", Operator: "Equal", Effect: "NoExecute", TolerationSeconds: nil}},
+ Tolerations: []core.Toleration{{Key: "key1", Value: "value2", Operator: "Equal", Effect: "NoExecute", TolerationSeconds: nil}},
},
},
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Spec: api.PodSpec{
+ Spec: core.PodSpec{
NodeName: "node1",
- Tolerations: []api.Toleration{{Key: "key1", Value: "value1", Operator: "Equal", Effect: "NoExecute", TolerationSeconds: &[]int64{10}[0]}},
+ Tolerations: []core.Toleration{{Key: "key1", Value: "value1", Operator: "Equal", Effect: "NoExecute", TolerationSeconds: &[]int64{10}[0]}},
},
},
"spec.tolerations: Forbidden",
"existing toleration value modified in pod spec updates with modified tolerationSeconds",
},
{
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Spec: api.PodSpec{
+ Spec: core.PodSpec{
NodeName: "node1",
- Tolerations: []api.Toleration{{Key: "key1", Value: "value1", Operator: "Equal", Effect: "NoExecute", TolerationSeconds: &[]int64{10}[0]}},
+ Tolerations: []core.Toleration{{Key: "key1", Value: "value1", Operator: "Equal", Effect: "NoExecute", TolerationSeconds: &[]int64{10}[0]}},
},
},
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Spec: api.PodSpec{
+ Spec: core.PodSpec{
NodeName: "node1",
- Tolerations: []api.Toleration{{Key: "key1", Value: "value1", Operator: "Equal", Effect: "NoExecute", TolerationSeconds: &[]int64{20}[0]}},
+ Tolerations: []core.Toleration{{Key: "key1", Value: "value1", Operator: "Equal", Effect: "NoExecute", TolerationSeconds: &[]int64{20}[0]}},
}},
"",
"modified tolerationSeconds in existing toleration value in pod spec updates",
},
{
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Spec: api.PodSpec{
- Tolerations: []api.Toleration{{Key: "key1", Value: "value2"}},
+ Spec: core.PodSpec{
+ Tolerations: []core.Toleration{{Key: "key1", Value: "value2"}},
},
},
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Spec: api.PodSpec{
+ Spec: core.PodSpec{
NodeName: "",
- Tolerations: []api.Toleration{{Key: "key1", Value: "value1"}},
+ Tolerations: []core.Toleration{{Key: "key1", Value: "value1"}},
},
},
"spec.tolerations: Forbidden",
"toleration modified in updates to an unscheduled pod",
},
{
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Spec: api.PodSpec{
+ Spec: core.PodSpec{
NodeName: "node1",
- Tolerations: []api.Toleration{{Key: "key1", Value: "value1"}},
+ Tolerations: []core.Toleration{{Key: "key1", Value: "value1"}},
},
},
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Spec: api.PodSpec{
+ Spec: core.PodSpec{
NodeName: "node1",
- Tolerations: []api.Toleration{{Key: "key1", Value: "value1"}},
+ Tolerations: []core.Toleration{{Key: "key1", Value: "value1"}},
},
},
"",
"tolerations unmodified in updates to a scheduled pod",
},
{
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Spec: api.PodSpec{
+ Spec: core.PodSpec{
NodeName: "node1",
- Tolerations: []api.Toleration{
+ Tolerations: []core.Toleration{
{Key: "key1", Value: "value1", Operator: "Equal", Effect: "NoExecute", TolerationSeconds: &[]int64{20}[0]},
{Key: "key2", Value: "value2", Operator: "Equal", Effect: "NoExecute", TolerationSeconds: &[]int64{30}[0]},
},
}},
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Spec: api.PodSpec{
+ Spec: core.PodSpec{
NodeName: "node1",
- Tolerations: []api.Toleration{{Key: "key1", Value: "value1", Operator: "Equal", Effect: "NoExecute", TolerationSeconds: &[]int64{10}[0]}},
+ Tolerations: []core.Toleration{{Key: "key1", Value: "value1", Operator: "Equal", Effect: "NoExecute", TolerationSeconds: &[]int64{10}[0]}},
},
},
"",
"added valid new toleration to existing tolerations in pod spec updates",
},
{
- api.Pod{
- ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: api.PodSpec{
+ core.Pod{
+ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{
NodeName: "node1",
- Tolerations: []api.Toleration{
+ Tolerations: []core.Toleration{
{Key: "key1", Value: "value1", Operator: "Equal", Effect: "NoExecute", TolerationSeconds: &[]int64{20}[0]},
{Key: "key2", Value: "value2", Operator: "Equal", Effect: "NoSchedule", TolerationSeconds: &[]int64{30}[0]},
},
}},
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Spec: api.PodSpec{
- NodeName: "node1", Tolerations: []api.Toleration{{Key: "key1", Value: "value1", Operator: "Equal", Effect: "NoExecute", TolerationSeconds: &[]int64{10}[0]}},
+ Spec: core.PodSpec{
+ NodeName: "node1", Tolerations: []core.Toleration{{Key: "key1", Value: "value1", Operator: "Equal", Effect: "NoExecute", TolerationSeconds: &[]int64{10}[0]}},
}},
"spec.tolerations[1].effect",
"added invalid new toleration to existing tolerations in pod spec updates",
},
{
- api.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: api.PodSpec{NodeName: "foo"}},
- api.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}},
+ core.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{NodeName: "foo"}},
+ core.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}},
"spec: Forbidden: pod updates may not change fields",
"removed nodeName from pod spec",
},
{
- api.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo", Annotations: map[string]string{api.MirrorPodAnnotationKey: ""}}, Spec: api.PodSpec{NodeName: "foo"}},
- api.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: api.PodSpec{NodeName: "foo"}},
+ core.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo", Annotations: map[string]string{core.MirrorPodAnnotationKey: ""}}, Spec: core.PodSpec{NodeName: "foo"}},
+ core.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{NodeName: "foo"}},
"metadata.annotations[kubernetes.io/config.mirror]",
"added mirror pod annotation",
},
{
- api.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: api.PodSpec{NodeName: "foo"}},
- api.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo", Annotations: map[string]string{api.MirrorPodAnnotationKey: ""}}, Spec: api.PodSpec{NodeName: "foo"}},
+ core.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{NodeName: "foo"}},
+ core.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo", Annotations: map[string]string{core.MirrorPodAnnotationKey: ""}}, Spec: core.PodSpec{NodeName: "foo"}},
"metadata.annotations[kubernetes.io/config.mirror]",
"removed mirror pod annotation",
},
{
- api.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo", Annotations: map[string]string{api.MirrorPodAnnotationKey: "foo"}}, Spec: api.PodSpec{NodeName: "foo"}},
- api.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo", Annotations: map[string]string{api.MirrorPodAnnotationKey: "bar"}}, Spec: api.PodSpec{NodeName: "foo"}},
+ core.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo", Annotations: map[string]string{core.MirrorPodAnnotationKey: "foo"}}, Spec: core.PodSpec{NodeName: "foo"}},
+ core.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo", Annotations: map[string]string{core.MirrorPodAnnotationKey: "bar"}}, Spec: core.PodSpec{NodeName: "foo"}},
"metadata.annotations[kubernetes.io/config.mirror]",
"changed mirror pod annotation",
},
{
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Spec: api.PodSpec{
+ Spec: core.PodSpec{
NodeName: "node1",
PriorityClassName: "bar-priority",
},
},
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Spec: api.PodSpec{
+ Spec: core.PodSpec{
NodeName: "node1",
PriorityClassName: "foo-priority",
},
@@ -6674,20 +6807,20 @@ func TestValidatePodUpdate(t *testing.T) {
"changed priority class name",
},
{
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Spec: api.PodSpec{
+ Spec: core.PodSpec{
NodeName: "node1",
PriorityClassName: "",
},
},
- api.Pod{
+ core.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Spec: api.PodSpec{
+ Spec: core.PodSpec{
NodeName: "node1",
PriorityClassName: "foo-priority",
},
@@ -6715,8 +6848,8 @@ func TestValidatePodUpdate(t *testing.T) {
}
}
-func makeValidService() api.Service {
- return api.Service{
+func makeValidService() core.Service {
+ return core.Service{
ObjectMeta: metav1.ObjectMeta{
Name: "valid",
Namespace: "valid",
@@ -6724,11 +6857,11 @@ func makeValidService() api.Service {
Annotations: map[string]string{},
ResourceVersion: "1",
},
- Spec: api.ServiceSpec{
+ Spec: core.ServiceSpec{
Selector: map[string]string{"key": "val"},
SessionAffinity: "None",
- Type: api.ServiceTypeClusterIP,
- Ports: []api.ServicePort{{Name: "p", Protocol: "TCP", Port: 8675, TargetPort: intstr.FromInt(8675)}},
+ Type: core.ServiceTypeClusterIP,
+ Ports: []core.ServicePort{{Name: "p", Protocol: "TCP", Port: 8675, TargetPort: intstr.FromInt(8675)}},
},
}
}
@@ -6736,201 +6869,201 @@ func makeValidService() api.Service {
func TestValidateService(t *testing.T) {
testCases := []struct {
name string
- tweakSvc func(svc *api.Service) // given a basic valid service, each test case can customize it
+ tweakSvc func(svc *core.Service) // given a basic valid service, each test case can customize it
numErrs int
}{
{
name: "missing namespace",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Namespace = ""
},
numErrs: 1,
},
{
name: "invalid namespace",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Namespace = "-123"
},
numErrs: 1,
},
{
name: "missing name",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Name = ""
},
numErrs: 1,
},
{
name: "invalid name",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Name = "-123"
},
numErrs: 1,
},
{
name: "too long name",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Name = strings.Repeat("a", 64)
},
numErrs: 1,
},
{
name: "invalid generateName",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.GenerateName = "-123"
},
numErrs: 1,
},
{
name: "too long generateName",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.GenerateName = strings.Repeat("a", 64)
},
numErrs: 1,
},
{
name: "invalid label",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Labels["NoUppercaseOrSpecialCharsLike=Equals"] = "bar"
},
numErrs: 1,
},
{
name: "invalid annotation",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Annotations["NoSpecialCharsLike=Equals"] = "bar"
},
numErrs: 1,
},
{
name: "nil selector",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Spec.Selector = nil
},
numErrs: 0,
},
{
name: "invalid selector",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Spec.Selector["NoSpecialCharsLike=Equals"] = "bar"
},
numErrs: 1,
},
{
name: "missing session affinity",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Spec.SessionAffinity = ""
},
numErrs: 1,
},
{
name: "missing type",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Spec.Type = ""
},
numErrs: 1,
},
{
name: "missing ports",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Spec.Ports = nil
},
numErrs: 1,
},
{
name: "missing ports but headless",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Spec.Ports = nil
- s.Spec.ClusterIP = api.ClusterIPNone
+ s.Spec.ClusterIP = core.ClusterIPNone
},
numErrs: 0,
},
{
name: "empty port[0] name",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Spec.Ports[0].Name = ""
},
numErrs: 0,
},
{
name: "empty port[1] name",
- tweakSvc: func(s *api.Service) {
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "", Protocol: "TCP", Port: 12345, TargetPort: intstr.FromInt(12345)})
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "", Protocol: "TCP", Port: 12345, TargetPort: intstr.FromInt(12345)})
},
numErrs: 1,
},
{
name: "empty multi-port port[0] name",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Spec.Ports[0].Name = ""
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "p", Protocol: "TCP", Port: 12345, TargetPort: intstr.FromInt(12345)})
+ s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "p", Protocol: "TCP", Port: 12345, TargetPort: intstr.FromInt(12345)})
},
numErrs: 1,
},
{
name: "invalid port name",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Spec.Ports[0].Name = "INVALID"
},
numErrs: 1,
},
{
name: "missing protocol",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Spec.Ports[0].Protocol = ""
},
numErrs: 1,
},
{
name: "invalid protocol",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Spec.Ports[0].Protocol = "INVALID"
},
numErrs: 1,
},
{
name: "invalid cluster ip",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Spec.ClusterIP = "invalid"
},
numErrs: 1,
},
{
name: "missing port",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Spec.Ports[0].Port = 0
},
numErrs: 1,
},
{
name: "invalid port",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Spec.Ports[0].Port = 65536
},
numErrs: 1,
},
{
name: "invalid TargetPort int",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Spec.Ports[0].TargetPort = intstr.FromInt(65536)
},
numErrs: 1,
},
{
name: "valid port headless",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Spec.Ports[0].Port = 11722
s.Spec.Ports[0].TargetPort = intstr.FromInt(11722)
- s.Spec.ClusterIP = api.ClusterIPNone
+ s.Spec.ClusterIP = core.ClusterIPNone
},
numErrs: 0,
},
{
name: "invalid port headless 1",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Spec.Ports[0].Port = 11722
s.Spec.Ports[0].TargetPort = intstr.FromInt(11721)
- s.Spec.ClusterIP = api.ClusterIPNone
+ s.Spec.ClusterIP = core.ClusterIPNone
},
// in the v1 API, targetPorts on headless services were tolerated.
// once we have version-specific validation, we can reject this on newer API versions, but until then, we have to tolerate it for compatibility.
@@ -6939,10 +7072,10 @@ func TestValidateService(t *testing.T) {
},
{
name: "invalid port headless 2",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Spec.Ports[0].Port = 11722
s.Spec.Ports[0].TargetPort = intstr.FromString("target")
- s.Spec.ClusterIP = api.ClusterIPNone
+ s.Spec.ClusterIP = core.ClusterIPNone
},
// in the v1 API, targetPorts on headless services were tolerated.
// once we have version-specific validation, we can reject this on newer API versions, but until then, we have to tolerate it for compatibility.
@@ -6951,74 +7084,74 @@ func TestValidateService(t *testing.T) {
},
{
name: "invalid publicIPs localhost",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Spec.ExternalIPs = []string{"127.0.0.1"}
},
numErrs: 1,
},
{
name: "invalid publicIPs unspecified",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Spec.ExternalIPs = []string{"0.0.0.0"}
},
numErrs: 1,
},
{
name: "invalid publicIPs loopback",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Spec.ExternalIPs = []string{"127.0.0.1"}
},
numErrs: 1,
},
{
name: "invalid publicIPs host",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Spec.ExternalIPs = []string{"myhost.mydomain"}
},
numErrs: 1,
},
{
name: "dup port name",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Spec.Ports[0].Name = "p"
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "p", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(12345)})
+ s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "p", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(12345)})
},
numErrs: 1,
},
{
name: "valid load balancer protocol UDP 1",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeLoadBalancer
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.Ports[0].Protocol = "UDP"
},
numErrs: 0,
},
{
name: "valid load balancer protocol UDP 2",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeLoadBalancer
- s.Spec.Ports[0] = api.ServicePort{Name: "q", Port: 12345, Protocol: "UDP", TargetPort: intstr.FromInt(12345)}
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeLoadBalancer
+ s.Spec.Ports[0] = core.ServicePort{Name: "q", Port: 12345, Protocol: "UDP", TargetPort: intstr.FromInt(12345)}
},
numErrs: 0,
},
{
name: "invalid load balancer with mix protocol",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeLoadBalancer
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "UDP", TargetPort: intstr.FromInt(12345)})
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeLoadBalancer
+ s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 12345, Protocol: "UDP", TargetPort: intstr.FromInt(12345)})
},
numErrs: 1,
},
{
name: "valid 1",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
// do nothing
},
numErrs: 0,
},
{
name: "valid 2",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Spec.Ports[0].Protocol = "UDP"
s.Spec.Ports[0].TargetPort = intstr.FromInt(12345)
},
@@ -7026,21 +7159,21 @@ func TestValidateService(t *testing.T) {
},
{
name: "valid 3",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Spec.Ports[0].TargetPort = intstr.FromString("http")
},
numErrs: 0,
},
{
name: "valid cluster ip - none ",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Spec.ClusterIP = "None"
},
numErrs: 0,
},
{
name: "valid cluster ip - empty",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Spec.ClusterIP = ""
s.Spec.Ports[0].TargetPort = intstr.FromString("http")
},
@@ -7048,189 +7181,153 @@ func TestValidateService(t *testing.T) {
},
{
name: "valid type - cluster",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeClusterIP
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeClusterIP
},
numErrs: 0,
},
{
name: "valid type - loadbalancer",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeLoadBalancer
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeLoadBalancer
},
numErrs: 0,
},
{
name: "valid type loadbalancer 2 ports",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeLoadBalancer
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(12345)})
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeLoadBalancer
+ s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(12345)})
},
numErrs: 0,
},
{
name: "valid external load balancer 2 ports",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeLoadBalancer
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(12345)})
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeLoadBalancer
+ s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(12345)})
},
numErrs: 0,
},
{
name: "duplicate nodeports",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeNodePort
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 1, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(1)})
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "r", Port: 2, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(2)})
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeNodePort
+ s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 1, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(1)})
+ s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "r", Port: 2, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(2)})
},
numErrs: 1,
},
{
name: "duplicate nodeports (different protocols)",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeNodePort
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 1, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(1)})
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "r", Port: 2, Protocol: "UDP", NodePort: 1, TargetPort: intstr.FromInt(2)})
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeNodePort
+ s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 1, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(1)})
+ s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "r", Port: 2, Protocol: "UDP", NodePort: 1, TargetPort: intstr.FromInt(2)})
},
numErrs: 0,
},
{
name: "invalid duplicate ports (with same protocol)",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeClusterIP
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(8080)})
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "r", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(80)})
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeClusterIP
+ s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(8080)})
+ s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "r", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(80)})
},
numErrs: 1,
},
{
name: "valid duplicate ports (with different protocols)",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeClusterIP
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(8080)})
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "r", Port: 12345, Protocol: "UDP", TargetPort: intstr.FromInt(80)})
- },
- numErrs: 0,
- },
- {
- name: "invalid duplicate targetports (number with same protocol)",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeClusterIP
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 1, Protocol: "TCP", TargetPort: intstr.FromInt(8080)})
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "r", Port: 2, Protocol: "TCP", TargetPort: intstr.FromInt(8080)})
- },
- numErrs: 1,
- },
- {
- name: "invalid duplicate targetports (name with same protocol)",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeClusterIP
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 1, Protocol: "TCP", TargetPort: intstr.FromString("http")})
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "r", Port: 2, Protocol: "TCP", TargetPort: intstr.FromString("http")})
- },
- numErrs: 1,
- },
- {
- name: "valid duplicate targetports (number with different protocols)",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeClusterIP
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 1, Protocol: "TCP", TargetPort: intstr.FromInt(8080)})
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "r", Port: 2, Protocol: "UDP", TargetPort: intstr.FromInt(8080)})
- },
- numErrs: 0,
- },
- {
- name: "valid duplicate targetports (name with different protocols)",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeClusterIP
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 1, Protocol: "TCP", TargetPort: intstr.FromString("http")})
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "r", Port: 2, Protocol: "UDP", TargetPort: intstr.FromString("http")})
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeClusterIP
+ s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(8080)})
+ s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "r", Port: 12345, Protocol: "UDP", TargetPort: intstr.FromInt(80)})
},
numErrs: 0,
},
{
name: "valid type - cluster",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeClusterIP
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeClusterIP
},
numErrs: 0,
},
{
name: "valid type - nodeport",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeNodePort
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeNodePort
},
numErrs: 0,
},
{
name: "valid type - loadbalancer",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeLoadBalancer
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeLoadBalancer
},
numErrs: 0,
},
{
name: "valid type loadbalancer 2 ports",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeLoadBalancer
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(12345)})
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeLoadBalancer
+ s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(12345)})
},
numErrs: 0,
},
{
name: "valid type loadbalancer with NodePort",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeLoadBalancer
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", NodePort: 12345, TargetPort: intstr.FromInt(12345)})
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeLoadBalancer
+ s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", NodePort: 12345, TargetPort: intstr.FromInt(12345)})
},
numErrs: 0,
},
{
name: "valid type=NodePort service with NodePort",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeNodePort
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", NodePort: 12345, TargetPort: intstr.FromInt(12345)})
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeNodePort
+ s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", NodePort: 12345, TargetPort: intstr.FromInt(12345)})
},
numErrs: 0,
},
{
name: "valid type=NodePort service without NodePort",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeNodePort
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(12345)})
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeNodePort
+ s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(12345)})
},
numErrs: 0,
},
{
name: "valid cluster service without NodePort",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeClusterIP
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(12345)})
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeClusterIP
+ s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(12345)})
},
numErrs: 0,
},
{
name: "invalid cluster service with NodePort",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeClusterIP
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", NodePort: 12345, TargetPort: intstr.FromInt(12345)})
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeClusterIP
+ s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", NodePort: 12345, TargetPort: intstr.FromInt(12345)})
},
numErrs: 1,
},
{
name: "invalid public service with duplicate NodePort",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeNodePort
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "p1", Port: 1, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(1)})
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "p2", Port: 2, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(2)})
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeNodePort
+ s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "p1", Port: 1, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(1)})
+ s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "p2", Port: 2, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(2)})
},
numErrs: 1,
},
{
name: "valid type=LoadBalancer",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeLoadBalancer
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(12345)})
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeLoadBalancer
+ s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(12345)})
},
numErrs: 0,
},
@@ -7238,78 +7335,78 @@ func TestValidateService(t *testing.T) {
// For now we open firewalls, and its insecure if we open 10250, remove this
// when we have better protections in place.
name: "invalid port type=LoadBalancer",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeLoadBalancer
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "kubelet", Port: 10250, Protocol: "TCP", TargetPort: intstr.FromInt(12345)})
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeLoadBalancer
+ s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "kubelet", Port: 10250, Protocol: "TCP", TargetPort: intstr.FromInt(12345)})
},
numErrs: 1,
},
{
name: "valid LoadBalancer source range annotation",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeLoadBalancer
- s.Annotations[api.AnnotationLoadBalancerSourceRangesKey] = "1.2.3.4/8, 5.6.7.8/16"
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeLoadBalancer
+ s.Annotations[core.AnnotationLoadBalancerSourceRangesKey] = "1.2.3.4/8, 5.6.7.8/16"
},
numErrs: 0,
},
{
name: "empty LoadBalancer source range annotation",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeLoadBalancer
- s.Annotations[api.AnnotationLoadBalancerSourceRangesKey] = ""
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeLoadBalancer
+ s.Annotations[core.AnnotationLoadBalancerSourceRangesKey] = ""
},
numErrs: 0,
},
{
name: "invalid LoadBalancer source range annotation (hostname)",
- tweakSvc: func(s *api.Service) {
- s.Annotations[api.AnnotationLoadBalancerSourceRangesKey] = "foo.bar"
+ tweakSvc: func(s *core.Service) {
+ s.Annotations[core.AnnotationLoadBalancerSourceRangesKey] = "foo.bar"
},
numErrs: 2,
},
{
name: "invalid LoadBalancer source range annotation (invalid CIDR)",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeLoadBalancer
- s.Annotations[api.AnnotationLoadBalancerSourceRangesKey] = "1.2.3.4/33"
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeLoadBalancer
+ s.Annotations[core.AnnotationLoadBalancerSourceRangesKey] = "1.2.3.4/33"
},
numErrs: 1,
},
{
name: "invalid source range for non LoadBalancer type service",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Spec.LoadBalancerSourceRanges = []string{"1.2.3.4/8", "5.6.7.8/16"}
},
numErrs: 1,
},
{
name: "valid LoadBalancer source range",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeLoadBalancer
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.LoadBalancerSourceRanges = []string{"1.2.3.4/8", "5.6.7.8/16"}
},
numErrs: 0,
},
{
name: "empty LoadBalancer source range",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeLoadBalancer
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.LoadBalancerSourceRanges = []string{" "}
},
numErrs: 1,
},
{
name: "invalid LoadBalancer source range",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeLoadBalancer
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.LoadBalancerSourceRanges = []string{"foo.bar"}
},
numErrs: 1,
},
{
name: "valid ExternalName",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeExternalName
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeExternalName
s.Spec.ClusterIP = ""
s.Spec.ExternalName = "foo.bar.example.com"
},
@@ -7317,8 +7414,8 @@ func TestValidateService(t *testing.T) {
},
{
name: "invalid ExternalName clusterIP (valid IP)",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeExternalName
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeExternalName
s.Spec.ClusterIP = "1.2.3.4"
s.Spec.ExternalName = "foo.bar.example.com"
},
@@ -7326,8 +7423,8 @@ func TestValidateService(t *testing.T) {
},
{
name: "invalid ExternalName clusterIP (None)",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeExternalName
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeExternalName
s.Spec.ClusterIP = "None"
s.Spec.ExternalName = "foo.bar.example.com"
},
@@ -7335,8 +7432,8 @@ func TestValidateService(t *testing.T) {
},
{
name: "invalid ExternalName (not a DNS name)",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeExternalName
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeExternalName
s.Spec.ClusterIP = ""
s.Spec.ExternalName = "-123"
},
@@ -7344,17 +7441,17 @@ func TestValidateService(t *testing.T) {
},
{
name: "LoadBalancer type cannot have None ClusterIP",
- tweakSvc: func(s *api.Service) {
+ tweakSvc: func(s *core.Service) {
s.Spec.ClusterIP = "None"
- s.Spec.Type = api.ServiceTypeLoadBalancer
+ s.Spec.Type = core.ServiceTypeLoadBalancer
},
numErrs: 1,
},
{
name: "invalid node port with clusterIP None",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeNodePort
- s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 1, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(1)})
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeNodePort
+ s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 1, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(1)})
s.Spec.ClusterIP = "None"
},
numErrs: 1,
@@ -7362,26 +7459,26 @@ func TestValidateService(t *testing.T) {
// ESIPP section begins.
{
name: "invalid externalTraffic field",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeLoadBalancer
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.ExternalTrafficPolicy = "invalid"
},
numErrs: 1,
},
{
name: "nagative healthCheckNodePort field",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeLoadBalancer
- s.Spec.ExternalTrafficPolicy = api.ServiceExternalTrafficPolicyTypeLocal
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeLoadBalancer
+ s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeLocal
s.Spec.HealthCheckNodePort = -1
},
numErrs: 1,
},
{
name: "nagative healthCheckNodePort field",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeLoadBalancer
- s.Spec.ExternalTrafficPolicy = api.ServiceExternalTrafficPolicyTypeLocal
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeLoadBalancer
+ s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeLocal
s.Spec.HealthCheckNodePort = 31100
},
numErrs: 0,
@@ -7389,11 +7486,11 @@ func TestValidateService(t *testing.T) {
// ESIPP section ends.
{
name: "invalid timeoutSeconds field",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeClusterIP
- s.Spec.SessionAffinity = api.ServiceAffinityClientIP
- s.Spec.SessionAffinityConfig = &api.SessionAffinityConfig{
- ClientIP: &api.ClientIPConfig{
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeClusterIP
+ s.Spec.SessionAffinity = core.ServiceAffinityClientIP
+ s.Spec.SessionAffinityConfig = &core.SessionAffinityConfig{
+ ClientIP: &core.ClientIPConfig{
TimeoutSeconds: newInt32(-1),
},
}
@@ -7402,11 +7499,11 @@ func TestValidateService(t *testing.T) {
},
{
name: "sessionAffinityConfig can't be set when session affinity is None",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeLoadBalancer
- s.Spec.SessionAffinity = api.ServiceAffinityNone
- s.Spec.SessionAffinityConfig = &api.SessionAffinityConfig{
- ClientIP: &api.ClientIPConfig{
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeLoadBalancer
+ s.Spec.SessionAffinity = core.ServiceAffinityNone
+ s.Spec.SessionAffinityConfig = &core.SessionAffinityConfig{
+ ClientIP: &core.ClientIPConfig{
TimeoutSeconds: newInt32(90),
},
}
@@ -7428,56 +7525,56 @@ func TestValidateService(t *testing.T) {
func TestValidateServiceExternalTrafficFieldsCombination(t *testing.T) {
testCases := []struct {
name string
- tweakSvc func(svc *api.Service) // Given a basic valid service, each test case can customize it.
+ tweakSvc func(svc *core.Service) // Given a basic valid service, each test case can customize it.
numErrs int
}{
{
name: "valid loadBalancer service with externalTrafficPolicy and healthCheckNodePort set",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeLoadBalancer
- s.Spec.ExternalTrafficPolicy = api.ServiceExternalTrafficPolicyTypeLocal
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeLoadBalancer
+ s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeLocal
s.Spec.HealthCheckNodePort = 34567
},
numErrs: 0,
},
{
name: "valid nodePort service with externalTrafficPolicy set",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeNodePort
- s.Spec.ExternalTrafficPolicy = api.ServiceExternalTrafficPolicyTypeLocal
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeNodePort
+ s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeLocal
},
numErrs: 0,
},
{
name: "valid clusterIP service with none of externalTrafficPolicy and healthCheckNodePort set",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeClusterIP
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeClusterIP
},
numErrs: 0,
},
{
name: "cannot set healthCheckNodePort field on loadBalancer service with externalTrafficPolicy!=Local",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeLoadBalancer
- s.Spec.ExternalTrafficPolicy = api.ServiceExternalTrafficPolicyTypeCluster
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeLoadBalancer
+ s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster
s.Spec.HealthCheckNodePort = 34567
},
numErrs: 1,
},
{
name: "cannot set healthCheckNodePort field on nodePort service",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeNodePort
- s.Spec.ExternalTrafficPolicy = api.ServiceExternalTrafficPolicyTypeLocal
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeNodePort
+ s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeLocal
s.Spec.HealthCheckNodePort = 34567
},
numErrs: 1,
},
{
name: "cannot set externalTrafficPolicy or healthCheckNodePort fields on clusterIP service",
- tweakSvc: func(s *api.Service) {
- s.Spec.Type = api.ServiceTypeClusterIP
- s.Spec.ExternalTrafficPolicy = api.ServiceExternalTrafficPolicyTypeLocal
+ tweakSvc: func(s *core.Service) {
+ s.Spec.Type = core.ServiceTypeClusterIP
+ s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeLocal
s.Spec.HealthCheckNodePort = 34567
},
numErrs: 2,
@@ -7599,7 +7696,7 @@ func TestValidateReplicationControllerStatus(t *testing.T) {
}
for _, test := range tests {
- status := api.ReplicationControllerStatus{
+ status := core.ReplicationControllerStatus{
Replicas: test.replicas,
FullyLabeledReplicas: test.fullyLabeledReplicas,
ReadyReplicas: test.readyReplicas,
@@ -7615,42 +7712,42 @@ func TestValidateReplicationControllerStatus(t *testing.T) {
func TestValidateReplicationControllerStatusUpdate(t *testing.T) {
validSelector := map[string]string{"a": "b"}
- validPodTemplate := api.PodTemplate{
- Template: api.PodTemplateSpec{
+ validPodTemplate := core.PodTemplate{
+ Template: core.PodTemplateSpec{
ObjectMeta: metav1.ObjectMeta{
Labels: validSelector,
},
- Spec: api.PodSpec{
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
- Containers: []api.Container{{Name: "abc", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ Spec: core.PodSpec{
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
+ Containers: []core.Container{{Name: "abc", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
},
},
}
type rcUpdateTest struct {
- old api.ReplicationController
- update api.ReplicationController
+ old core.ReplicationController
+ update core.ReplicationController
}
successCases := []rcUpdateTest{
{
- old: api.ReplicationController{
+ old: core.ReplicationController{
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
- Spec: api.ReplicationControllerSpec{
+ Spec: core.ReplicationControllerSpec{
Selector: validSelector,
Template: &validPodTemplate.Template,
},
- Status: api.ReplicationControllerStatus{
+ Status: core.ReplicationControllerStatus{
Replicas: 2,
},
},
- update: api.ReplicationController{
+ update: core.ReplicationController{
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
- Spec: api.ReplicationControllerSpec{
+ Spec: core.ReplicationControllerSpec{
Replicas: 3,
Selector: validSelector,
Template: &validPodTemplate.Template,
},
- Status: api.ReplicationControllerStatus{
+ Status: core.ReplicationControllerStatus{
Replicas: 4,
},
},
@@ -7665,24 +7762,24 @@ func TestValidateReplicationControllerStatusUpdate(t *testing.T) {
}
errorCases := map[string]rcUpdateTest{
"negative replicas": {
- old: api.ReplicationController{
+ old: core.ReplicationController{
ObjectMeta: metav1.ObjectMeta{Name: "", Namespace: metav1.NamespaceDefault},
- Spec: api.ReplicationControllerSpec{
+ Spec: core.ReplicationControllerSpec{
Selector: validSelector,
Template: &validPodTemplate.Template,
},
- Status: api.ReplicationControllerStatus{
+ Status: core.ReplicationControllerStatus{
Replicas: 3,
},
},
- update: api.ReplicationController{
+ update: core.ReplicationController{
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
- Spec: api.ReplicationControllerSpec{
+ Spec: core.ReplicationControllerSpec{
Replicas: 2,
Selector: validSelector,
Template: &validPodTemplate.Template,
},
- Status: api.ReplicationControllerStatus{
+ Status: core.ReplicationControllerStatus{
Replicas: -3,
},
},
@@ -7698,37 +7795,37 @@ func TestValidateReplicationControllerStatusUpdate(t *testing.T) {
func TestValidateReplicationControllerUpdate(t *testing.T) {
validSelector := map[string]string{"a": "b"}
- validPodTemplate := api.PodTemplate{
- Template: api.PodTemplateSpec{
+ validPodTemplate := core.PodTemplate{
+ Template: core.PodTemplateSpec{
ObjectMeta: metav1.ObjectMeta{
Labels: validSelector,
},
- Spec: api.PodSpec{
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
- Containers: []api.Container{{Name: "abc", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ Spec: core.PodSpec{
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
+ Containers: []core.Container{{Name: "abc", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
},
},
}
- readWriteVolumePodTemplate := api.PodTemplate{
- Template: api.PodTemplateSpec{
+ readWriteVolumePodTemplate := core.PodTemplate{
+ Template: core.PodTemplateSpec{
ObjectMeta: metav1.ObjectMeta{
Labels: validSelector,
},
- Spec: api.PodSpec{
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
- Containers: []api.Container{{Name: "abc", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
- Volumes: []api.Volume{{Name: "gcepd", VolumeSource: api.VolumeSource{GCEPersistentDisk: &api.GCEPersistentDiskVolumeSource{PDName: "my-PD", FSType: "ext4", Partition: 1, ReadOnly: false}}}},
+ Spec: core.PodSpec{
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
+ Containers: []core.Container{{Name: "abc", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ Volumes: []core.Volume{{Name: "gcepd", VolumeSource: core.VolumeSource{GCEPersistentDisk: &core.GCEPersistentDiskVolumeSource{PDName: "my-PD", FSType: "ext4", Partition: 1, ReadOnly: false}}}},
},
},
}
invalidSelector := map[string]string{"NoUppercaseOrSpecialCharsLike=Equals": "b"}
- invalidPodTemplate := api.PodTemplate{
- Template: api.PodTemplateSpec{
- Spec: api.PodSpec{
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ invalidPodTemplate := core.PodTemplate{
+ Template: core.PodTemplateSpec{
+ Spec: core.PodSpec{
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
ObjectMeta: metav1.ObjectMeta{
Labels: invalidSelector,
@@ -7736,21 +7833,21 @@ func TestValidateReplicationControllerUpdate(t *testing.T) {
},
}
type rcUpdateTest struct {
- old api.ReplicationController
- update api.ReplicationController
+ old core.ReplicationController
+ update core.ReplicationController
}
successCases := []rcUpdateTest{
{
- old: api.ReplicationController{
+ old: core.ReplicationController{
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
- Spec: api.ReplicationControllerSpec{
+ Spec: core.ReplicationControllerSpec{
Selector: validSelector,
Template: &validPodTemplate.Template,
},
},
- update: api.ReplicationController{
+ update: core.ReplicationController{
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
- Spec: api.ReplicationControllerSpec{
+ Spec: core.ReplicationControllerSpec{
Replicas: 3,
Selector: validSelector,
Template: &validPodTemplate.Template,
@@ -7758,16 +7855,16 @@ func TestValidateReplicationControllerUpdate(t *testing.T) {
},
},
{
- old: api.ReplicationController{
+ old: core.ReplicationController{
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
- Spec: api.ReplicationControllerSpec{
+ Spec: core.ReplicationControllerSpec{
Selector: validSelector,
Template: &validPodTemplate.Template,
},
},
- update: api.ReplicationController{
+ update: core.ReplicationController{
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
- Spec: api.ReplicationControllerSpec{
+ Spec: core.ReplicationControllerSpec{
Replicas: 1,
Selector: validSelector,
Template: &readWriteVolumePodTemplate.Template,
@@ -7784,16 +7881,16 @@ func TestValidateReplicationControllerUpdate(t *testing.T) {
}
errorCases := map[string]rcUpdateTest{
"more than one read/write": {
- old: api.ReplicationController{
+ old: core.ReplicationController{
ObjectMeta: metav1.ObjectMeta{Name: "", Namespace: metav1.NamespaceDefault},
- Spec: api.ReplicationControllerSpec{
+ Spec: core.ReplicationControllerSpec{
Selector: validSelector,
Template: &validPodTemplate.Template,
},
},
- update: api.ReplicationController{
+ update: core.ReplicationController{
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
- Spec: api.ReplicationControllerSpec{
+ Spec: core.ReplicationControllerSpec{
Replicas: 2,
Selector: validSelector,
Template: &readWriteVolumePodTemplate.Template,
@@ -7801,16 +7898,16 @@ func TestValidateReplicationControllerUpdate(t *testing.T) {
},
},
"invalid selector": {
- old: api.ReplicationController{
+ old: core.ReplicationController{
ObjectMeta: metav1.ObjectMeta{Name: "", Namespace: metav1.NamespaceDefault},
- Spec: api.ReplicationControllerSpec{
+ Spec: core.ReplicationControllerSpec{
Selector: validSelector,
Template: &validPodTemplate.Template,
},
},
- update: api.ReplicationController{
+ update: core.ReplicationController{
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
- Spec: api.ReplicationControllerSpec{
+ Spec: core.ReplicationControllerSpec{
Replicas: 2,
Selector: invalidSelector,
Template: &validPodTemplate.Template,
@@ -7818,16 +7915,16 @@ func TestValidateReplicationControllerUpdate(t *testing.T) {
},
},
"invalid pod": {
- old: api.ReplicationController{
+ old: core.ReplicationController{
ObjectMeta: metav1.ObjectMeta{Name: "", Namespace: metav1.NamespaceDefault},
- Spec: api.ReplicationControllerSpec{
+ Spec: core.ReplicationControllerSpec{
Selector: validSelector,
Template: &validPodTemplate.Template,
},
},
- update: api.ReplicationController{
+ update: core.ReplicationController{
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
- Spec: api.ReplicationControllerSpec{
+ Spec: core.ReplicationControllerSpec{
Replicas: 2,
Selector: validSelector,
Template: &invalidPodTemplate.Template,
@@ -7835,16 +7932,16 @@ func TestValidateReplicationControllerUpdate(t *testing.T) {
},
},
"negative replicas": {
- old: api.ReplicationController{
+ old: core.ReplicationController{
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
- Spec: api.ReplicationControllerSpec{
+ Spec: core.ReplicationControllerSpec{
Selector: validSelector,
Template: &validPodTemplate.Template,
},
},
- update: api.ReplicationController{
+ update: core.ReplicationController{
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
- Spec: api.ReplicationControllerSpec{
+ Spec: core.ReplicationControllerSpec{
Replicas: -1,
Selector: validSelector,
Template: &validPodTemplate.Template,
@@ -7861,61 +7958,61 @@ func TestValidateReplicationControllerUpdate(t *testing.T) {
func TestValidateReplicationController(t *testing.T) {
validSelector := map[string]string{"a": "b"}
- validPodTemplate := api.PodTemplate{
- Template: api.PodTemplateSpec{
+ validPodTemplate := core.PodTemplate{
+ Template: core.PodTemplateSpec{
ObjectMeta: metav1.ObjectMeta{
Labels: validSelector,
},
- Spec: api.PodSpec{
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
- Containers: []api.Container{{Name: "abc", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ Spec: core.PodSpec{
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
+ Containers: []core.Container{{Name: "abc", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
},
},
}
- readWriteVolumePodTemplate := api.PodTemplate{
- Template: api.PodTemplateSpec{
+ readWriteVolumePodTemplate := core.PodTemplate{
+ Template: core.PodTemplateSpec{
ObjectMeta: metav1.ObjectMeta{
Labels: validSelector,
},
- Spec: api.PodSpec{
- Volumes: []api.Volume{{Name: "gcepd", VolumeSource: api.VolumeSource{GCEPersistentDisk: &api.GCEPersistentDiskVolumeSource{PDName: "my-PD", FSType: "ext4", Partition: 1, ReadOnly: false}}}},
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
- Containers: []api.Container{{Name: "abc", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ Spec: core.PodSpec{
+ Volumes: []core.Volume{{Name: "gcepd", VolumeSource: core.VolumeSource{GCEPersistentDisk: &core.GCEPersistentDiskVolumeSource{PDName: "my-PD", FSType: "ext4", Partition: 1, ReadOnly: false}}}},
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
+ Containers: []core.Container{{Name: "abc", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
},
},
}
invalidSelector := map[string]string{"NoUppercaseOrSpecialCharsLike=Equals": "b"}
- invalidPodTemplate := api.PodTemplate{
- Template: api.PodTemplateSpec{
- Spec: api.PodSpec{
- RestartPolicy: api.RestartPolicyAlways,
- DNSPolicy: api.DNSClusterFirst,
+ invalidPodTemplate := core.PodTemplate{
+ Template: core.PodTemplateSpec{
+ Spec: core.PodSpec{
+ RestartPolicy: core.RestartPolicyAlways,
+ DNSPolicy: core.DNSClusterFirst,
},
ObjectMeta: metav1.ObjectMeta{
Labels: invalidSelector,
},
},
}
- successCases := []api.ReplicationController{
+ successCases := []core.ReplicationController{
{
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
- Spec: api.ReplicationControllerSpec{
+ Spec: core.ReplicationControllerSpec{
Selector: validSelector,
Template: &validPodTemplate.Template,
},
},
{
ObjectMeta: metav1.ObjectMeta{Name: "abc-123", Namespace: metav1.NamespaceDefault},
- Spec: api.ReplicationControllerSpec{
+ Spec: core.ReplicationControllerSpec{
Selector: validSelector,
Template: &validPodTemplate.Template,
},
},
{
ObjectMeta: metav1.ObjectMeta{Name: "abc-123", Namespace: metav1.NamespaceDefault},
- Spec: api.ReplicationControllerSpec{
+ Spec: core.ReplicationControllerSpec{
Replicas: 1,
Selector: validSelector,
Template: &readWriteVolumePodTemplate.Template,
@@ -7928,43 +8025,43 @@ func TestValidateReplicationController(t *testing.T) {
}
}
- errorCases := map[string]api.ReplicationController{
+ errorCases := map[string]core.ReplicationController{
"zero-length ID": {
ObjectMeta: metav1.ObjectMeta{Name: "", Namespace: metav1.NamespaceDefault},
- Spec: api.ReplicationControllerSpec{
+ Spec: core.ReplicationControllerSpec{
Selector: validSelector,
Template: &validPodTemplate.Template,
},
},
"missing-namespace": {
ObjectMeta: metav1.ObjectMeta{Name: "abc-123"},
- Spec: api.ReplicationControllerSpec{
+ Spec: core.ReplicationControllerSpec{
Selector: validSelector,
Template: &validPodTemplate.Template,
},
},
"empty selector": {
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
- Spec: api.ReplicationControllerSpec{
+ Spec: core.ReplicationControllerSpec{
Template: &validPodTemplate.Template,
},
},
"selector_doesnt_match": {
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
- Spec: api.ReplicationControllerSpec{
+ Spec: core.ReplicationControllerSpec{
Selector: map[string]string{"foo": "bar"},
Template: &validPodTemplate.Template,
},
},
"invalid manifest": {
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
- Spec: api.ReplicationControllerSpec{
+ Spec: core.ReplicationControllerSpec{
Selector: validSelector,
},
},
"read-write persistent disk with > 1 pod": {
ObjectMeta: metav1.ObjectMeta{Name: "abc"},
- Spec: api.ReplicationControllerSpec{
+ Spec: core.ReplicationControllerSpec{
Replicas: 2,
Selector: validSelector,
Template: &readWriteVolumePodTemplate.Template,
@@ -7972,7 +8069,7 @@ func TestValidateReplicationController(t *testing.T) {
},
"negative_replicas": {
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
- Spec: api.ReplicationControllerSpec{
+ Spec: core.ReplicationControllerSpec{
Replicas: -1,
Selector: validSelector,
},
@@ -7985,7 +8082,7 @@ func TestValidateReplicationController(t *testing.T) {
"NoUppercaseOrSpecialCharsLike=Equals": "bar",
},
},
- Spec: api.ReplicationControllerSpec{
+ Spec: core.ReplicationControllerSpec{
Selector: validSelector,
Template: &validPodTemplate.Template,
},
@@ -7998,7 +8095,7 @@ func TestValidateReplicationController(t *testing.T) {
"NoUppercaseOrSpecialCharsLike=Equals": "bar",
},
},
- Spec: api.ReplicationControllerSpec{
+ Spec: core.ReplicationControllerSpec{
Template: &invalidPodTemplate.Template,
},
},
@@ -8010,7 +8107,7 @@ func TestValidateReplicationController(t *testing.T) {
"NoUppercaseOrSpecialCharsLike=Equals": "bar",
},
},
- Spec: api.ReplicationControllerSpec{
+ Spec: core.ReplicationControllerSpec{
Selector: validSelector,
Template: &validPodTemplate.Template,
},
@@ -8020,13 +8117,13 @@ func TestValidateReplicationController(t *testing.T) {
Name: "abc-123",
Namespace: metav1.NamespaceDefault,
},
- Spec: api.ReplicationControllerSpec{
+ Spec: core.ReplicationControllerSpec{
Selector: validSelector,
- Template: &api.PodTemplateSpec{
- Spec: api.PodSpec{
- RestartPolicy: api.RestartPolicyOnFailure,
- DNSPolicy: api.DNSClusterFirst,
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ Template: &core.PodTemplateSpec{
+ Spec: core.PodSpec{
+ RestartPolicy: core.RestartPolicyOnFailure,
+ DNSPolicy: core.DNSClusterFirst,
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
},
ObjectMeta: metav1.ObjectMeta{
Labels: validSelector,
@@ -8039,13 +8136,13 @@ func TestValidateReplicationController(t *testing.T) {
Name: "abc-123",
Namespace: metav1.NamespaceDefault,
},
- Spec: api.ReplicationControllerSpec{
+ Spec: core.ReplicationControllerSpec{
Selector: validSelector,
- Template: &api.PodTemplateSpec{
- Spec: api.PodSpec{
- RestartPolicy: api.RestartPolicyNever,
- DNSPolicy: api.DNSClusterFirst,
- Containers: []api.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
+ Template: &core.PodTemplateSpec{
+ Spec: core.PodSpec{
+ RestartPolicy: core.RestartPolicyNever,
+ DNSPolicy: core.DNSClusterFirst,
+ Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
},
ObjectMeta: metav1.ObjectMeta{
Labels: validSelector,
@@ -8081,25 +8178,25 @@ func TestValidateReplicationController(t *testing.T) {
func TestValidateNode(t *testing.T) {
validSelector := map[string]string{"a": "b"}
invalidSelector := map[string]string{"NoUppercaseOrSpecialCharsLike=Equals": "b"}
- successCases := []api.Node{
+ successCases := []core.Node{
{
ObjectMeta: metav1.ObjectMeta{
Name: "abc",
Labels: validSelector,
},
- Status: api.NodeStatus{
- Addresses: []api.NodeAddress{
- {Type: api.NodeExternalIP, Address: "something"},
+ Status: core.NodeStatus{
+ Addresses: []core.NodeAddress{
+ {Type: core.NodeExternalIP, Address: "something"},
},
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
- api.ResourceName(api.ResourceMemory): resource.MustParse("10G"),
- api.ResourceName("my.org/gpu"): resource.MustParse("10"),
- api.ResourceName("hugepages-2Mi"): resource.MustParse("10Gi"),
- api.ResourceName("hugepages-1Gi"): resource.MustParse("0"),
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("10"),
+ core.ResourceName(core.ResourceMemory): resource.MustParse("10G"),
+ core.ResourceName("my.org/gpu"): resource.MustParse("10"),
+ core.ResourceName("hugepages-2Mi"): resource.MustParse("10Gi"),
+ core.ResourceName("hugepages-1Gi"): resource.MustParse("0"),
},
},
- Spec: api.NodeSpec{
+ Spec: core.NodeSpec{
ExternalID: "external",
},
},
@@ -8107,16 +8204,16 @@ func TestValidateNode(t *testing.T) {
ObjectMeta: metav1.ObjectMeta{
Name: "abc",
},
- Status: api.NodeStatus{
- Addresses: []api.NodeAddress{
- {Type: api.NodeExternalIP, Address: "something"},
+ Status: core.NodeStatus{
+ Addresses: []core.NodeAddress{
+ {Type: core.NodeExternalIP, Address: "something"},
},
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
- api.ResourceName(api.ResourceMemory): resource.MustParse("0"),
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("10"),
+ core.ResourceName(core.ResourceMemory): resource.MustParse("0"),
},
},
- Spec: api.NodeSpec{
+ Spec: core.NodeSpec{
ExternalID: "external",
},
},
@@ -8124,26 +8221,26 @@ func TestValidateNode(t *testing.T) {
ObjectMeta: metav1.ObjectMeta{
Name: "dedicated-node1",
},
- Status: api.NodeStatus{
- Addresses: []api.NodeAddress{
- {Type: api.NodeExternalIP, Address: "something"},
+ Status: core.NodeStatus{
+ Addresses: []core.NodeAddress{
+ {Type: core.NodeExternalIP, Address: "something"},
},
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
- api.ResourceName(api.ResourceMemory): resource.MustParse("0"),
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("10"),
+ core.ResourceName(core.ResourceMemory): resource.MustParse("0"),
},
},
- Spec: api.NodeSpec{
+ Spec: core.NodeSpec{
ExternalID: "external",
// Add a valid taint to a node
- Taints: []api.Taint{{Key: "GPU", Value: "true", Effect: "NoSchedule"}},
+ Taints: []core.Taint{{Key: "GPU", Value: "true", Effect: "NoSchedule"}},
},
},
{
ObjectMeta: metav1.ObjectMeta{
Name: "abc",
Annotations: map[string]string{
- api.PreferAvoidPodsAnnotationKey: `
+ core.PreferAvoidPodsAnnotationKey: `
{
"preferAvoidPods": [
{
@@ -8163,16 +8260,16 @@ func TestValidateNode(t *testing.T) {
}`,
},
},
- Status: api.NodeStatus{
- Addresses: []api.NodeAddress{
- {Type: api.NodeExternalIP, Address: "something"},
+ Status: core.NodeStatus{
+ Addresses: []core.NodeAddress{
+ {Type: core.NodeExternalIP, Address: "something"},
},
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
- api.ResourceName(api.ResourceMemory): resource.MustParse("0"),
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("10"),
+ core.ResourceName(core.ResourceMemory): resource.MustParse("0"),
},
},
- Spec: api.NodeSpec{
+ Spec: core.NodeSpec{
ExternalID: "external",
},
},
@@ -8183,20 +8280,20 @@ func TestValidateNode(t *testing.T) {
}
}
- errorCases := map[string]api.Node{
+ errorCases := map[string]core.Node{
"zero-length Name": {
ObjectMeta: metav1.ObjectMeta{
Name: "",
Labels: validSelector,
},
- Status: api.NodeStatus{
- Addresses: []api.NodeAddress{},
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
- api.ResourceName(api.ResourceMemory): resource.MustParse("10G"),
+ Status: core.NodeStatus{
+ Addresses: []core.NodeAddress{},
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("10"),
+ core.ResourceName(core.ResourceMemory): resource.MustParse("10G"),
},
},
- Spec: api.NodeSpec{
+ Spec: core.NodeSpec{
ExternalID: "external",
},
},
@@ -8205,13 +8302,13 @@ func TestValidateNode(t *testing.T) {
Name: "abc-123",
Labels: invalidSelector,
},
- Status: api.NodeStatus{
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
- api.ResourceName(api.ResourceMemory): resource.MustParse("10G"),
+ Status: core.NodeStatus{
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("10"),
+ core.ResourceName(core.ResourceMemory): resource.MustParse("10G"),
},
},
- Spec: api.NodeSpec{
+ Spec: core.NodeSpec{
ExternalID: "external",
},
},
@@ -8220,10 +8317,10 @@ func TestValidateNode(t *testing.T) {
Name: "abc-123",
Labels: validSelector,
},
- Status: api.NodeStatus{
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
- api.ResourceName(api.ResourceMemory): resource.MustParse("10G"),
+ Status: core.NodeStatus{
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("10"),
+ core.ResourceName(core.ResourceMemory): resource.MustParse("10G"),
},
},
},
@@ -8231,87 +8328,87 @@ func TestValidateNode(t *testing.T) {
ObjectMeta: metav1.ObjectMeta{
Name: "dedicated-node1",
},
- Spec: api.NodeSpec{
+ Spec: core.NodeSpec{
ExternalID: "external",
// Add a taint with an empty key to a node
- Taints: []api.Taint{{Key: "", Value: "special-user-1", Effect: "NoSchedule"}},
+ Taints: []core.Taint{{Key: "", Value: "special-user-1", Effect: "NoSchedule"}},
},
},
"bad-taint-key": {
ObjectMeta: metav1.ObjectMeta{
Name: "dedicated-node1",
},
- Spec: api.NodeSpec{
+ Spec: core.NodeSpec{
ExternalID: "external",
// Add a taint with an invalid key to a node
- Taints: []api.Taint{{Key: "NoUppercaseOrSpecialCharsLike=Equals", Value: "special-user-1", Effect: "NoSchedule"}},
+ Taints: []core.Taint{{Key: "NoUppercaseOrSpecialCharsLike=Equals", Value: "special-user-1", Effect: "NoSchedule"}},
},
},
"bad-taint-value": {
ObjectMeta: metav1.ObjectMeta{
Name: "dedicated-node2",
},
- Status: api.NodeStatus{
- Addresses: []api.NodeAddress{
- {Type: api.NodeExternalIP, Address: "something"},
+ Status: core.NodeStatus{
+ Addresses: []core.NodeAddress{
+ {Type: core.NodeExternalIP, Address: "something"},
},
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
- api.ResourceName(api.ResourceMemory): resource.MustParse("0"),
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("10"),
+ core.ResourceName(core.ResourceMemory): resource.MustParse("0"),
},
},
- Spec: api.NodeSpec{
+ Spec: core.NodeSpec{
ExternalID: "external",
// Add a taint with a bad value to a node
- Taints: []api.Taint{{Key: "dedicated", Value: "some\\bad\\value", Effect: "NoSchedule"}},
+ Taints: []core.Taint{{Key: "dedicated", Value: "some\\bad\\value", Effect: "NoSchedule"}},
},
},
"missing-taint-effect": {
ObjectMeta: metav1.ObjectMeta{
Name: "dedicated-node3",
},
- Status: api.NodeStatus{
- Addresses: []api.NodeAddress{
- {Type: api.NodeExternalIP, Address: "something"},
+ Status: core.NodeStatus{
+ Addresses: []core.NodeAddress{
+ {Type: core.NodeExternalIP, Address: "something"},
},
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
- api.ResourceName(api.ResourceMemory): resource.MustParse("0"),
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("10"),
+ core.ResourceName(core.ResourceMemory): resource.MustParse("0"),
},
},
- Spec: api.NodeSpec{
+ Spec: core.NodeSpec{
ExternalID: "external",
// Add a taint with an empty effect to a node
- Taints: []api.Taint{{Key: "dedicated", Value: "special-user-3", Effect: ""}},
+ Taints: []core.Taint{{Key: "dedicated", Value: "special-user-3", Effect: ""}},
},
},
"invalid-taint-effect": {
ObjectMeta: metav1.ObjectMeta{
Name: "dedicated-node3",
},
- Status: api.NodeStatus{
- Addresses: []api.NodeAddress{
- {Type: api.NodeExternalIP, Address: "something"},
+ Status: core.NodeStatus{
+ Addresses: []core.NodeAddress{
+ {Type: core.NodeExternalIP, Address: "something"},
},
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
- api.ResourceName(api.ResourceMemory): resource.MustParse("0"),
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("10"),
+ core.ResourceName(core.ResourceMemory): resource.MustParse("0"),
},
},
- Spec: api.NodeSpec{
+ Spec: core.NodeSpec{
ExternalID: "external",
// Add a taint with NoExecute effect to a node
- Taints: []api.Taint{{Key: "dedicated", Value: "special-user-3", Effect: "NoScheduleNoAdmit"}},
+ Taints: []core.Taint{{Key: "dedicated", Value: "special-user-3", Effect: "NoScheduleNoAdmit"}},
},
},
"duplicated-taints-with-same-key-effect": {
ObjectMeta: metav1.ObjectMeta{
Name: "dedicated-node1",
},
- Spec: api.NodeSpec{
+ Spec: core.NodeSpec{
ExternalID: "external",
// Add two taints to the node with the same key and effect; should be rejected.
- Taints: []api.Taint{
+ Taints: []core.Taint{
{Key: "dedicated", Value: "special-user-1", Effect: "NoSchedule"},
{Key: "dedicated", Value: "special-user-2", Effect: "NoSchedule"},
},
@@ -8321,7 +8418,7 @@ func TestValidateNode(t *testing.T) {
ObjectMeta: metav1.ObjectMeta{
Name: "abc-123",
Annotations: map[string]string{
- api.PreferAvoidPodsAnnotationKey: `
+ core.PreferAvoidPodsAnnotationKey: `
{
"preferAvoidPods": [
{
@@ -8332,14 +8429,14 @@ func TestValidateNode(t *testing.T) {
}`,
},
},
- Status: api.NodeStatus{
- Addresses: []api.NodeAddress{},
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
- api.ResourceName(api.ResourceMemory): resource.MustParse("0"),
+ Status: core.NodeStatus{
+ Addresses: []core.NodeAddress{},
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("10"),
+ core.ResourceName(core.ResourceMemory): resource.MustParse("0"),
},
},
- Spec: api.NodeSpec{
+ Spec: core.NodeSpec{
ExternalID: "external",
},
},
@@ -8347,7 +8444,7 @@ func TestValidateNode(t *testing.T) {
ObjectMeta: metav1.ObjectMeta{
Name: "abc-123",
Annotations: map[string]string{
- api.PreferAvoidPodsAnnotationKey: `
+ core.PreferAvoidPodsAnnotationKey: `
{
"preferAvoidPods": [
{
@@ -8367,14 +8464,14 @@ func TestValidateNode(t *testing.T) {
}`,
},
},
- Status: api.NodeStatus{
- Addresses: []api.NodeAddress{},
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
- api.ResourceName(api.ResourceMemory): resource.MustParse("0"),
+ Status: core.NodeStatus{
+ Addresses: []core.NodeAddress{},
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("10"),
+ core.ResourceName(core.ResourceMemory): resource.MustParse("0"),
},
},
- Spec: api.NodeSpec{
+ Spec: core.NodeSpec{
ExternalID: "external",
},
},
@@ -8383,19 +8480,19 @@ func TestValidateNode(t *testing.T) {
Name: "abc",
Labels: validSelector,
},
- Status: api.NodeStatus{
- Addresses: []api.NodeAddress{
- {Type: api.NodeExternalIP, Address: "something"},
+ Status: core.NodeStatus{
+ Addresses: []core.NodeAddress{
+ {Type: core.NodeExternalIP, Address: "something"},
},
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
- api.ResourceName(api.ResourceMemory): resource.MustParse("10G"),
- api.ResourceName("my.org/gpu"): resource.MustParse("10"),
- api.ResourceName("hugepages-2Mi"): resource.MustParse("10Gi"),
- api.ResourceName("hugepages-1Gi"): resource.MustParse("10Gi"),
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("10"),
+ core.ResourceName(core.ResourceMemory): resource.MustParse("10G"),
+ core.ResourceName("my.org/gpu"): resource.MustParse("10"),
+ core.ResourceName("hugepages-2Mi"): resource.MustParse("10Gi"),
+ core.ResourceName("hugepages-1Gi"): resource.MustParse("10Gi"),
},
},
- Spec: api.NodeSpec{
+ Spec: core.NodeSpec{
ExternalID: "external",
},
},
@@ -8430,211 +8527,211 @@ func TestValidateNode(t *testing.T) {
func TestValidateNodeUpdate(t *testing.T) {
tests := []struct {
- oldNode api.Node
- node api.Node
+ oldNode core.Node
+ node core.Node
valid bool
}{
- {api.Node{}, api.Node{}, true},
- {api.Node{
+ {core.Node{}, core.Node{}, true},
+ {core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "foo"}},
- api.Node{
+ core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "bar"},
}, false},
- {api.Node{
+ {core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Labels: map[string]string{"foo": "bar"},
},
- }, api.Node{
+ }, core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Labels: map[string]string{"foo": "baz"},
},
}, true},
- {api.Node{
+ {core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- }, api.Node{
+ }, core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Labels: map[string]string{"foo": "baz"},
},
}, true},
- {api.Node{
+ {core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Labels: map[string]string{"bar": "foo"},
},
- }, api.Node{
+ }, core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Labels: map[string]string{"foo": "baz"},
},
}, true},
- {api.Node{
+ {core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Spec: api.NodeSpec{
+ Spec: core.NodeSpec{
PodCIDR: "",
},
- }, api.Node{
+ }, core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Spec: api.NodeSpec{
+ Spec: core.NodeSpec{
PodCIDR: "192.168.0.0/16",
},
}, true},
- {api.Node{
+ {core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Spec: api.NodeSpec{
+ Spec: core.NodeSpec{
PodCIDR: "192.123.0.0/16",
},
- }, api.Node{
+ }, core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Spec: api.NodeSpec{
+ Spec: core.NodeSpec{
PodCIDR: "192.168.0.0/16",
},
}, false},
- {api.Node{
+ {core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Status: api.NodeStatus{
- Capacity: api.ResourceList{
- api.ResourceCPU: resource.MustParse("10000"),
- api.ResourceMemory: resource.MustParse("100"),
+ Status: core.NodeStatus{
+ Capacity: core.ResourceList{
+ core.ResourceCPU: resource.MustParse("10000"),
+ core.ResourceMemory: resource.MustParse("100"),
},
},
- }, api.Node{
+ }, core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Status: api.NodeStatus{
- Capacity: api.ResourceList{
- api.ResourceCPU: resource.MustParse("100"),
- api.ResourceMemory: resource.MustParse("10000"),
+ Status: core.NodeStatus{
+ Capacity: core.ResourceList{
+ core.ResourceCPU: resource.MustParse("100"),
+ core.ResourceMemory: resource.MustParse("10000"),
},
},
}, true},
- {api.Node{
+ {core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Labels: map[string]string{"bar": "foo"},
},
- Status: api.NodeStatus{
- Capacity: api.ResourceList{
- api.ResourceCPU: resource.MustParse("10000"),
- api.ResourceMemory: resource.MustParse("100"),
+ Status: core.NodeStatus{
+ Capacity: core.ResourceList{
+ core.ResourceCPU: resource.MustParse("10000"),
+ core.ResourceMemory: resource.MustParse("100"),
},
},
- }, api.Node{
+ }, core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Labels: map[string]string{"bar": "fooobaz"},
},
- Status: api.NodeStatus{
- Capacity: api.ResourceList{
- api.ResourceCPU: resource.MustParse("100"),
- api.ResourceMemory: resource.MustParse("10000"),
+ Status: core.NodeStatus{
+ Capacity: core.ResourceList{
+ core.ResourceCPU: resource.MustParse("100"),
+ core.ResourceMemory: resource.MustParse("10000"),
},
},
}, true},
- {api.Node{
+ {core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Labels: map[string]string{"bar": "foo"},
},
- Status: api.NodeStatus{
- Addresses: []api.NodeAddress{
- {Type: api.NodeExternalIP, Address: "1.2.3.4"},
+ Status: core.NodeStatus{
+ Addresses: []core.NodeAddress{
+ {Type: core.NodeExternalIP, Address: "1.2.3.4"},
},
},
- }, api.Node{
+ }, core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Labels: map[string]string{"bar": "fooobaz"},
},
}, true},
- {api.Node{
+ {core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Labels: map[string]string{"foo": "baz"},
},
- }, api.Node{
+ }, core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Labels: map[string]string{"Foo": "baz"},
},
}, true},
- {api.Node{
+ {core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Spec: api.NodeSpec{
+ Spec: core.NodeSpec{
Unschedulable: false,
},
- }, api.Node{
+ }, core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Spec: api.NodeSpec{
+ Spec: core.NodeSpec{
Unschedulable: true,
},
}, true},
- {api.Node{
+ {core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Spec: api.NodeSpec{
+ Spec: core.NodeSpec{
Unschedulable: false,
},
- }, api.Node{
+ }, core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Status: api.NodeStatus{
- Addresses: []api.NodeAddress{
- {Type: api.NodeExternalIP, Address: "1.1.1.1"},
- {Type: api.NodeExternalIP, Address: "1.1.1.1"},
+ Status: core.NodeStatus{
+ Addresses: []core.NodeAddress{
+ {Type: core.NodeExternalIP, Address: "1.1.1.1"},
+ {Type: core.NodeExternalIP, Address: "1.1.1.1"},
},
},
}, false},
- {api.Node{
+ {core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Spec: api.NodeSpec{
+ Spec: core.NodeSpec{
Unschedulable: false,
},
- }, api.Node{
+ }, core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- Status: api.NodeStatus{
- Addresses: []api.NodeAddress{
- {Type: api.NodeExternalIP, Address: "1.1.1.1"},
- {Type: api.NodeInternalIP, Address: "10.1.1.1"},
+ Status: core.NodeStatus{
+ Addresses: []core.NodeAddress{
+ {Type: core.NodeExternalIP, Address: "1.1.1.1"},
+ {Type: core.NodeInternalIP, Address: "10.1.1.1"},
},
},
}, true},
- {api.Node{
+ {core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- }, api.Node{
+ }, core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Annotations: map[string]string{
- api.PreferAvoidPodsAnnotationKey: `
+ core.PreferAvoidPodsAnnotationKey: `
{
"preferAvoidPods": [
{
@@ -8654,19 +8751,19 @@ func TestValidateNodeUpdate(t *testing.T) {
}`,
},
},
- Spec: api.NodeSpec{
+ Spec: core.NodeSpec{
Unschedulable: false,
},
}, true},
- {api.Node{
+ {core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- }, api.Node{
+ }, core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Annotations: map[string]string{
- api.PreferAvoidPodsAnnotationKey: `
+ core.PreferAvoidPodsAnnotationKey: `
{
"preferAvoidPods": [
{
@@ -8678,15 +8775,15 @@ func TestValidateNodeUpdate(t *testing.T) {
},
},
}, false},
- {api.Node{
+ {core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
},
- }, api.Node{
+ }, core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Annotations: map[string]string{
- api.PreferAvoidPodsAnnotationKey: `
+ core.PreferAvoidPodsAnnotationKey: `
{
"preferAvoidPods": [
{
@@ -8707,84 +8804,84 @@ func TestValidateNodeUpdate(t *testing.T) {
},
},
}, false},
- {api.Node{
+ {core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "valid-opaque-int-resources",
},
- }, api.Node{
+ }, core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "valid-opaque-int-resources",
},
- Status: api.NodeStatus{
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
- api.ResourceName(api.ResourceMemory): resource.MustParse("10G"),
- helper.OpaqueIntResourceName("A"): resource.MustParse("5"),
- helper.OpaqueIntResourceName("B"): resource.MustParse("10"),
+ Status: core.NodeStatus{
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("10"),
+ core.ResourceName(core.ResourceMemory): resource.MustParse("10G"),
+ helper.OpaqueIntResourceName("A"): resource.MustParse("5"),
+ helper.OpaqueIntResourceName("B"): resource.MustParse("10"),
},
},
}, true},
- {api.Node{
+ {core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "invalid-fractional-opaque-int-capacity",
},
- }, api.Node{
+ }, core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "invalid-fractional-opaque-int-capacity",
},
- Status: api.NodeStatus{
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
- api.ResourceName(api.ResourceMemory): resource.MustParse("10G"),
- helper.OpaqueIntResourceName("A"): resource.MustParse("500m"),
+ Status: core.NodeStatus{
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("10"),
+ core.ResourceName(core.ResourceMemory): resource.MustParse("10G"),
+ helper.OpaqueIntResourceName("A"): resource.MustParse("500m"),
},
},
}, false},
- {api.Node{
+ {core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "invalid-fractional-opaque-int-allocatable",
},
- }, api.Node{
+ }, core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "invalid-fractional-opaque-int-allocatable",
},
- Status: api.NodeStatus{
- Capacity: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
- api.ResourceName(api.ResourceMemory): resource.MustParse("10G"),
- helper.OpaqueIntResourceName("A"): resource.MustParse("5"),
+ Status: core.NodeStatus{
+ Capacity: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("10"),
+ core.ResourceName(core.ResourceMemory): resource.MustParse("10G"),
+ helper.OpaqueIntResourceName("A"): resource.MustParse("5"),
},
- Allocatable: api.ResourceList{
- api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
- api.ResourceName(api.ResourceMemory): resource.MustParse("10G"),
- helper.OpaqueIntResourceName("A"): resource.MustParse("4.5"),
+ Allocatable: core.ResourceList{
+ core.ResourceName(core.ResourceCPU): resource.MustParse("10"),
+ core.ResourceName(core.ResourceMemory): resource.MustParse("10G"),
+ helper.OpaqueIntResourceName("A"): resource.MustParse("4.5"),
},
},
}, false},
- {api.Node{
+ {core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "update-provider-id-when-not-set",
},
- }, api.Node{
+ }, core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "update-provider-id-when-not-set",
},
- Spec: api.NodeSpec{
+ Spec: core.NodeSpec{
ProviderID: "provider:///new",
},
}, true},
- {api.Node{
+ {core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "update-provider-id-when-set",
},
- Spec: api.NodeSpec{
+ Spec: core.NodeSpec{
ProviderID: "provider:///old",
},
- }, api.Node{
+ }, core.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "update-provider-id-when-set",
},
- Spec: api.NodeSpec{
+ Spec: core.NodeSpec{
ProviderID: "provider:///new",
},
}, false},
@@ -8806,47 +8903,47 @@ func TestValidateNodeUpdate(t *testing.T) {
func TestValidateServiceUpdate(t *testing.T) {
testCases := []struct {
name string
- tweakSvc func(oldSvc, newSvc *api.Service) // given basic valid services, each test case can customize them
+ tweakSvc func(oldSvc, newSvc *core.Service) // given basic valid services, each test case can customize them
numErrs int
}{
{
name: "no change",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
// do nothing
},
numErrs: 0,
},
{
name: "change name",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
newSvc.Name += "2"
},
numErrs: 1,
},
{
name: "change namespace",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
newSvc.Namespace += "2"
},
numErrs: 1,
},
{
name: "change label valid",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
newSvc.Labels["key"] = "other-value"
},
numErrs: 0,
},
{
name: "add label",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
newSvc.Labels["key2"] = "value2"
},
numErrs: 0,
},
{
name: "change cluster IP",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
oldSvc.Spec.ClusterIP = "1.2.3.4"
newSvc.Spec.ClusterIP = "8.6.7.5"
},
@@ -8854,7 +8951,7 @@ func TestValidateServiceUpdate(t *testing.T) {
},
{
name: "remove cluster IP",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
oldSvc.Spec.ClusterIP = "1.2.3.4"
newSvc.Spec.ClusterIP = ""
},
@@ -8862,10 +8959,10 @@ func TestValidateServiceUpdate(t *testing.T) {
},
{
name: "change affinity",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
newSvc.Spec.SessionAffinity = "ClientIP"
- newSvc.Spec.SessionAffinityConfig = &api.SessionAffinityConfig{
- ClientIP: &api.ClientIPConfig{
+ newSvc.Spec.SessionAffinityConfig = &core.SessionAffinityConfig{
+ ClientIP: &core.ClientIPConfig{
TimeoutSeconds: newInt32(90),
},
}
@@ -8874,62 +8971,62 @@ func TestValidateServiceUpdate(t *testing.T) {
},
{
name: "remove affinity",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
newSvc.Spec.SessionAffinity = ""
},
numErrs: 1,
},
{
name: "change type",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
- newSvc.Spec.Type = api.ServiceTypeLoadBalancer
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
+ newSvc.Spec.Type = core.ServiceTypeLoadBalancer
},
numErrs: 0,
},
{
name: "remove type",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
newSvc.Spec.Type = ""
},
numErrs: 1,
},
{
name: "change type -> nodeport",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
- newSvc.Spec.Type = api.ServiceTypeNodePort
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
+ newSvc.Spec.Type = core.ServiceTypeNodePort
},
numErrs: 0,
},
{
name: "add loadBalancerSourceRanges",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
- oldSvc.Spec.Type = api.ServiceTypeLoadBalancer
- newSvc.Spec.Type = api.ServiceTypeLoadBalancer
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
+ oldSvc.Spec.Type = core.ServiceTypeLoadBalancer
+ newSvc.Spec.Type = core.ServiceTypeLoadBalancer
newSvc.Spec.LoadBalancerSourceRanges = []string{"10.0.0.0/8"}
},
numErrs: 0,
},
{
name: "update loadBalancerSourceRanges",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
- oldSvc.Spec.Type = api.ServiceTypeLoadBalancer
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
+ oldSvc.Spec.Type = core.ServiceTypeLoadBalancer
oldSvc.Spec.LoadBalancerSourceRanges = []string{"10.0.0.0/8"}
- newSvc.Spec.Type = api.ServiceTypeLoadBalancer
+ newSvc.Spec.Type = core.ServiceTypeLoadBalancer
newSvc.Spec.LoadBalancerSourceRanges = []string{"10.100.0.0/16"}
},
numErrs: 0,
},
{
name: "LoadBalancer type cannot have None ClusterIP",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
newSvc.Spec.ClusterIP = "None"
- newSvc.Spec.Type = api.ServiceTypeLoadBalancer
+ newSvc.Spec.Type = core.ServiceTypeLoadBalancer
},
numErrs: 1,
},
{
name: "`None` ClusterIP cannot be changed",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
oldSvc.Spec.ClusterIP = "None"
newSvc.Spec.ClusterIP = "1.2.3.4"
},
@@ -8937,7 +9034,7 @@ func TestValidateServiceUpdate(t *testing.T) {
},
{
name: "`None` ClusterIP cannot be removed",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
oldSvc.Spec.ClusterIP = "None"
newSvc.Spec.ClusterIP = ""
},
@@ -8945,9 +9042,9 @@ func TestValidateServiceUpdate(t *testing.T) {
},
{
name: "Service with ClusterIP type cannot change its set ClusterIP",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
- oldSvc.Spec.Type = api.ServiceTypeClusterIP
- newSvc.Spec.Type = api.ServiceTypeClusterIP
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
+ oldSvc.Spec.Type = core.ServiceTypeClusterIP
+ newSvc.Spec.Type = core.ServiceTypeClusterIP
oldSvc.Spec.ClusterIP = "1.2.3.4"
newSvc.Spec.ClusterIP = "1.2.3.5"
@@ -8956,9 +9053,9 @@ func TestValidateServiceUpdate(t *testing.T) {
},
{
name: "Service with ClusterIP type can change its empty ClusterIP",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
- oldSvc.Spec.Type = api.ServiceTypeClusterIP
- newSvc.Spec.Type = api.ServiceTypeClusterIP
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
+ oldSvc.Spec.Type = core.ServiceTypeClusterIP
+ newSvc.Spec.Type = core.ServiceTypeClusterIP
oldSvc.Spec.ClusterIP = ""
newSvc.Spec.ClusterIP = "1.2.3.5"
@@ -8967,9 +9064,9 @@ func TestValidateServiceUpdate(t *testing.T) {
},
{
name: "Service with ClusterIP type cannot change its set ClusterIP when changing type to NodePort",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
- oldSvc.Spec.Type = api.ServiceTypeClusterIP
- newSvc.Spec.Type = api.ServiceTypeNodePort
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
+ oldSvc.Spec.Type = core.ServiceTypeClusterIP
+ newSvc.Spec.Type = core.ServiceTypeNodePort
oldSvc.Spec.ClusterIP = "1.2.3.4"
newSvc.Spec.ClusterIP = "1.2.3.5"
@@ -8978,9 +9075,9 @@ func TestValidateServiceUpdate(t *testing.T) {
},
{
name: "Service with ClusterIP type can change its empty ClusterIP when changing type to NodePort",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
- oldSvc.Spec.Type = api.ServiceTypeClusterIP
- newSvc.Spec.Type = api.ServiceTypeNodePort
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
+ oldSvc.Spec.Type = core.ServiceTypeClusterIP
+ newSvc.Spec.Type = core.ServiceTypeNodePort
oldSvc.Spec.ClusterIP = ""
newSvc.Spec.ClusterIP = "1.2.3.5"
@@ -8989,9 +9086,9 @@ func TestValidateServiceUpdate(t *testing.T) {
},
{
name: "Service with ClusterIP type cannot change its ClusterIP when changing type to LoadBalancer",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
- oldSvc.Spec.Type = api.ServiceTypeClusterIP
- newSvc.Spec.Type = api.ServiceTypeLoadBalancer
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
+ oldSvc.Spec.Type = core.ServiceTypeClusterIP
+ newSvc.Spec.Type = core.ServiceTypeLoadBalancer
oldSvc.Spec.ClusterIP = "1.2.3.4"
newSvc.Spec.ClusterIP = "1.2.3.5"
@@ -9000,9 +9097,9 @@ func TestValidateServiceUpdate(t *testing.T) {
},
{
name: "Service with ClusterIP type can change its empty ClusterIP when changing type to LoadBalancer",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
- oldSvc.Spec.Type = api.ServiceTypeClusterIP
- newSvc.Spec.Type = api.ServiceTypeLoadBalancer
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
+ oldSvc.Spec.Type = core.ServiceTypeClusterIP
+ newSvc.Spec.Type = core.ServiceTypeLoadBalancer
oldSvc.Spec.ClusterIP = ""
newSvc.Spec.ClusterIP = "1.2.3.5"
@@ -9011,9 +9108,9 @@ func TestValidateServiceUpdate(t *testing.T) {
},
{
name: "Service with NodePort type cannot change its set ClusterIP",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
- oldSvc.Spec.Type = api.ServiceTypeNodePort
- newSvc.Spec.Type = api.ServiceTypeNodePort
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
+ oldSvc.Spec.Type = core.ServiceTypeNodePort
+ newSvc.Spec.Type = core.ServiceTypeNodePort
oldSvc.Spec.ClusterIP = "1.2.3.4"
newSvc.Spec.ClusterIP = "1.2.3.5"
@@ -9022,9 +9119,9 @@ func TestValidateServiceUpdate(t *testing.T) {
},
{
name: "Service with NodePort type can change its empty ClusterIP",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
- oldSvc.Spec.Type = api.ServiceTypeNodePort
- newSvc.Spec.Type = api.ServiceTypeNodePort
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
+ oldSvc.Spec.Type = core.ServiceTypeNodePort
+ newSvc.Spec.Type = core.ServiceTypeNodePort
oldSvc.Spec.ClusterIP = ""
newSvc.Spec.ClusterIP = "1.2.3.5"
@@ -9033,9 +9130,9 @@ func TestValidateServiceUpdate(t *testing.T) {
},
{
name: "Service with NodePort type cannot change its set ClusterIP when changing type to ClusterIP",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
- oldSvc.Spec.Type = api.ServiceTypeNodePort
- newSvc.Spec.Type = api.ServiceTypeClusterIP
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
+ oldSvc.Spec.Type = core.ServiceTypeNodePort
+ newSvc.Spec.Type = core.ServiceTypeClusterIP
oldSvc.Spec.ClusterIP = "1.2.3.4"
newSvc.Spec.ClusterIP = "1.2.3.5"
@@ -9044,9 +9141,9 @@ func TestValidateServiceUpdate(t *testing.T) {
},
{
name: "Service with NodePort type can change its empty ClusterIP when changing type to ClusterIP",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
- oldSvc.Spec.Type = api.ServiceTypeNodePort
- newSvc.Spec.Type = api.ServiceTypeClusterIP
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
+ oldSvc.Spec.Type = core.ServiceTypeNodePort
+ newSvc.Spec.Type = core.ServiceTypeClusterIP
oldSvc.Spec.ClusterIP = ""
newSvc.Spec.ClusterIP = "1.2.3.5"
@@ -9055,9 +9152,9 @@ func TestValidateServiceUpdate(t *testing.T) {
},
{
name: "Service with NodePort type cannot change its set ClusterIP when changing type to LoadBalancer",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
- oldSvc.Spec.Type = api.ServiceTypeNodePort
- newSvc.Spec.Type = api.ServiceTypeLoadBalancer
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
+ oldSvc.Spec.Type = core.ServiceTypeNodePort
+ newSvc.Spec.Type = core.ServiceTypeLoadBalancer
oldSvc.Spec.ClusterIP = "1.2.3.4"
newSvc.Spec.ClusterIP = "1.2.3.5"
@@ -9066,9 +9163,9 @@ func TestValidateServiceUpdate(t *testing.T) {
},
{
name: "Service with NodePort type can change its empty ClusterIP when changing type to LoadBalancer",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
- oldSvc.Spec.Type = api.ServiceTypeNodePort
- newSvc.Spec.Type = api.ServiceTypeLoadBalancer
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
+ oldSvc.Spec.Type = core.ServiceTypeNodePort
+ newSvc.Spec.Type = core.ServiceTypeLoadBalancer
oldSvc.Spec.ClusterIP = ""
newSvc.Spec.ClusterIP = "1.2.3.5"
@@ -9077,9 +9174,9 @@ func TestValidateServiceUpdate(t *testing.T) {
},
{
name: "Service with LoadBalancer type cannot change its set ClusterIP",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
- oldSvc.Spec.Type = api.ServiceTypeLoadBalancer
- newSvc.Spec.Type = api.ServiceTypeLoadBalancer
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
+ oldSvc.Spec.Type = core.ServiceTypeLoadBalancer
+ newSvc.Spec.Type = core.ServiceTypeLoadBalancer
oldSvc.Spec.ClusterIP = "1.2.3.4"
newSvc.Spec.ClusterIP = "1.2.3.5"
@@ -9088,9 +9185,9 @@ func TestValidateServiceUpdate(t *testing.T) {
},
{
name: "Service with LoadBalancer type can change its empty ClusterIP",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
- oldSvc.Spec.Type = api.ServiceTypeLoadBalancer
- newSvc.Spec.Type = api.ServiceTypeLoadBalancer
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
+ oldSvc.Spec.Type = core.ServiceTypeLoadBalancer
+ newSvc.Spec.Type = core.ServiceTypeLoadBalancer
oldSvc.Spec.ClusterIP = ""
newSvc.Spec.ClusterIP = "1.2.3.5"
@@ -9099,9 +9196,9 @@ func TestValidateServiceUpdate(t *testing.T) {
},
{
name: "Service with LoadBalancer type cannot change its set ClusterIP when changing type to ClusterIP",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
- oldSvc.Spec.Type = api.ServiceTypeLoadBalancer
- newSvc.Spec.Type = api.ServiceTypeClusterIP
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
+ oldSvc.Spec.Type = core.ServiceTypeLoadBalancer
+ newSvc.Spec.Type = core.ServiceTypeClusterIP
oldSvc.Spec.ClusterIP = "1.2.3.4"
newSvc.Spec.ClusterIP = "1.2.3.5"
@@ -9110,9 +9207,9 @@ func TestValidateServiceUpdate(t *testing.T) {
},
{
name: "Service with LoadBalancer type can change its empty ClusterIP when changing type to ClusterIP",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
- oldSvc.Spec.Type = api.ServiceTypeLoadBalancer
- newSvc.Spec.Type = api.ServiceTypeClusterIP
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
+ oldSvc.Spec.Type = core.ServiceTypeLoadBalancer
+ newSvc.Spec.Type = core.ServiceTypeClusterIP
oldSvc.Spec.ClusterIP = ""
newSvc.Spec.ClusterIP = "1.2.3.5"
@@ -9121,9 +9218,9 @@ func TestValidateServiceUpdate(t *testing.T) {
},
{
name: "Service with LoadBalancer type cannot change its set ClusterIP when changing type to NodePort",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
- oldSvc.Spec.Type = api.ServiceTypeLoadBalancer
- newSvc.Spec.Type = api.ServiceTypeNodePort
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
+ oldSvc.Spec.Type = core.ServiceTypeLoadBalancer
+ newSvc.Spec.Type = core.ServiceTypeNodePort
oldSvc.Spec.ClusterIP = "1.2.3.4"
newSvc.Spec.ClusterIP = "1.2.3.5"
@@ -9132,9 +9229,9 @@ func TestValidateServiceUpdate(t *testing.T) {
},
{
name: "Service with LoadBalancer type can change its empty ClusterIP when changing type to NodePort",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
- oldSvc.Spec.Type = api.ServiceTypeLoadBalancer
- newSvc.Spec.Type = api.ServiceTypeNodePort
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
+ oldSvc.Spec.Type = core.ServiceTypeLoadBalancer
+ newSvc.Spec.Type = core.ServiceTypeNodePort
oldSvc.Spec.ClusterIP = ""
newSvc.Spec.ClusterIP = "1.2.3.5"
@@ -9143,9 +9240,9 @@ func TestValidateServiceUpdate(t *testing.T) {
},
{
name: "Service with ExternalName type can change its empty ClusterIP when changing type to ClusterIP",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
- oldSvc.Spec.Type = api.ServiceTypeExternalName
- newSvc.Spec.Type = api.ServiceTypeClusterIP
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
+ oldSvc.Spec.Type = core.ServiceTypeExternalName
+ newSvc.Spec.Type = core.ServiceTypeClusterIP
oldSvc.Spec.ClusterIP = ""
newSvc.Spec.ClusterIP = "1.2.3.5"
@@ -9154,9 +9251,9 @@ func TestValidateServiceUpdate(t *testing.T) {
},
{
name: "Service with ExternalName type can change its set ClusterIP when changing type to ClusterIP",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
- oldSvc.Spec.Type = api.ServiceTypeExternalName
- newSvc.Spec.Type = api.ServiceTypeClusterIP
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
+ oldSvc.Spec.Type = core.ServiceTypeExternalName
+ newSvc.Spec.Type = core.ServiceTypeClusterIP
oldSvc.Spec.ClusterIP = "1.2.3.4"
newSvc.Spec.ClusterIP = "1.2.3.5"
@@ -9165,12 +9262,12 @@ func TestValidateServiceUpdate(t *testing.T) {
},
{
name: "invalid node port with clusterIP None",
- tweakSvc: func(oldSvc, newSvc *api.Service) {
- oldSvc.Spec.Type = api.ServiceTypeNodePort
- newSvc.Spec.Type = api.ServiceTypeNodePort
+ tweakSvc: func(oldSvc, newSvc *core.Service) {
+ oldSvc.Spec.Type = core.ServiceTypeNodePort
+ newSvc.Spec.Type = core.ServiceTypeNodePort
- oldSvc.Spec.Ports = append(oldSvc.Spec.Ports, api.ServicePort{Name: "q", Port: 1, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(1)})
- newSvc.Spec.Ports = append(newSvc.Spec.Ports, api.ServicePort{Name: "q", Port: 1, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(1)})
+ oldSvc.Spec.Ports = append(oldSvc.Spec.Ports, core.ServicePort{Name: "q", Port: 1, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(1)})
+ newSvc.Spec.Ports = append(newSvc.Spec.Ports, core.ServicePort{Name: "q", Port: 1, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(1)})
oldSvc.Spec.ClusterIP = ""
newSvc.Spec.ClusterIP = "None"
@@ -9235,29 +9332,29 @@ func TestValidateResourceNames(t *testing.T) {
}
}
-func getResourceList(cpu, memory string) api.ResourceList {
- res := api.ResourceList{}
+func getResourceList(cpu, memory string) core.ResourceList {
+ res := core.ResourceList{}
if cpu != "" {
- res[api.ResourceCPU] = resource.MustParse(cpu)
+ res[core.ResourceCPU] = resource.MustParse(cpu)
}
if memory != "" {
- res[api.ResourceMemory] = resource.MustParse(memory)
+ res[core.ResourceMemory] = resource.MustParse(memory)
}
return res
}
-func getStorageResourceList(storage string) api.ResourceList {
- res := api.ResourceList{}
+func getStorageResourceList(storage string) core.ResourceList {
+ res := core.ResourceList{}
if storage != "" {
- res[api.ResourceStorage] = resource.MustParse(storage)
+ res[core.ResourceStorage] = resource.MustParse(storage)
}
return res
}
-func getLocalStorageResourceList(ephemeralStorage string) api.ResourceList {
- res := api.ResourceList{}
+func getLocalStorageResourceList(ephemeralStorage string) core.ResourceList {
+ res := core.ResourceList{}
if ephemeralStorage != "" {
- res[api.ResourceEphemeralStorage] = resource.MustParse(ephemeralStorage)
+ res[core.ResourceEphemeralStorage] = resource.MustParse(ephemeralStorage)
}
return res
}
@@ -9265,20 +9362,20 @@ func getLocalStorageResourceList(ephemeralStorage string) api.ResourceList {
func TestValidateLimitRangeForLocalStorage(t *testing.T) {
testCases := []struct {
name string
- spec api.LimitRangeSpec
+ spec core.LimitRangeSpec
}{
{
name: "all-fields-valid",
- spec: api.LimitRangeSpec{
- Limits: []api.LimitRangeItem{
+ spec: core.LimitRangeSpec{
+ Limits: []core.LimitRangeItem{
{
- Type: api.LimitTypePod,
+ Type: core.LimitTypePod,
Max: getLocalStorageResourceList("10000Mi"),
Min: getLocalStorageResourceList("100Mi"),
MaxLimitRequestRatio: getLocalStorageResourceList(""),
},
{
- Type: api.LimitTypeContainer,
+ Type: core.LimitTypeContainer,
Max: getLocalStorageResourceList("10000Mi"),
Min: getLocalStorageResourceList("100Mi"),
Default: getLocalStorageResourceList("500Mi"),
@@ -9298,7 +9395,7 @@ func TestValidateLimitRangeForLocalStorage(t *testing.T) {
}
for _, testCase := range testCases {
- limitRange := &api.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: testCase.name, Namespace: "foo"}, Spec: testCase.spec}
+ limitRange := &core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: testCase.name, Namespace: "foo"}, Spec: testCase.spec}
if errs := ValidateLimitRange(limitRange); len(errs) != 0 {
t.Errorf("Case %v, unexpected error: %v", testCase.name, errs)
}
@@ -9311,7 +9408,7 @@ func TestValidateLimitRangeForLocalStorage(t *testing.T) {
return
}
for _, testCase := range testCases {
- limitRange := &api.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: testCase.name, Namespace: "foo"}, Spec: testCase.spec}
+ limitRange := &core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: testCase.name, Namespace: "foo"}, Spec: testCase.spec}
if errs := ValidateLimitRange(limitRange); len(errs) == 0 {
t.Errorf("Case %v, expected feature gate unable error but actually no error", testCase.name)
}
@@ -9322,20 +9419,20 @@ func TestValidateLimitRangeForLocalStorage(t *testing.T) {
func TestValidateLimitRange(t *testing.T) {
successCases := []struct {
name string
- spec api.LimitRangeSpec
+ spec core.LimitRangeSpec
}{
{
name: "all-fields-valid",
- spec: api.LimitRangeSpec{
- Limits: []api.LimitRangeItem{
+ spec: core.LimitRangeSpec{
+ Limits: []core.LimitRangeItem{
{
- Type: api.LimitTypePod,
+ Type: core.LimitTypePod,
Max: getResourceList("100m", "10000Mi"),
Min: getResourceList("5m", "100Mi"),
MaxLimitRequestRatio: getResourceList("10", ""),
},
{
- Type: api.LimitTypeContainer,
+ Type: core.LimitTypeContainer,
Max: getResourceList("100m", "10000Mi"),
Min: getResourceList("5m", "100Mi"),
Default: getResourceList("50m", "500Mi"),
@@ -9343,7 +9440,7 @@ func TestValidateLimitRange(t *testing.T) {
MaxLimitRequestRatio: getResourceList("10", ""),
},
{
- Type: api.LimitTypePersistentVolumeClaim,
+ Type: core.LimitTypePersistentVolumeClaim,
Max: getStorageResourceList("10Gi"),
Min: getStorageResourceList("5Gi"),
},
@@ -9352,10 +9449,10 @@ func TestValidateLimitRange(t *testing.T) {
},
{
name: "pvc-min-only",
- spec: api.LimitRangeSpec{
- Limits: []api.LimitRangeItem{
+ spec: core.LimitRangeSpec{
+ Limits: []core.LimitRangeItem{
{
- Type: api.LimitTypePersistentVolumeClaim,
+ Type: core.LimitTypePersistentVolumeClaim,
Min: getStorageResourceList("5Gi"),
},
},
@@ -9363,10 +9460,10 @@ func TestValidateLimitRange(t *testing.T) {
},
{
name: "pvc-max-only",
- spec: api.LimitRangeSpec{
- Limits: []api.LimitRangeItem{
+ spec: core.LimitRangeSpec{
+ Limits: []core.LimitRangeItem{
{
- Type: api.LimitTypePersistentVolumeClaim,
+ Type: core.LimitTypePersistentVolumeClaim,
Max: getStorageResourceList("10Gi"),
},
},
@@ -9374,10 +9471,10 @@ func TestValidateLimitRange(t *testing.T) {
},
{
name: "all-fields-valid-big-numbers",
- spec: api.LimitRangeSpec{
- Limits: []api.LimitRangeItem{
+ spec: core.LimitRangeSpec{
+ Limits: []core.LimitRangeItem{
{
- Type: api.LimitTypeContainer,
+ Type: core.LimitTypeContainer,
Max: getResourceList("100m", "10000T"),
Min: getResourceList("5m", "100Mi"),
Default: getResourceList("50m", "500Mi"),
@@ -9389,8 +9486,8 @@ func TestValidateLimitRange(t *testing.T) {
},
{
name: "thirdparty-fields-all-valid-standard-container-resources",
- spec: api.LimitRangeSpec{
- Limits: []api.LimitRangeItem{
+ spec: core.LimitRangeSpec{
+ Limits: []core.LimitRangeItem{
{
Type: "thirdparty.com/foo",
Max: getResourceList("100m", "10000T"),
@@ -9404,8 +9501,8 @@ func TestValidateLimitRange(t *testing.T) {
},
{
name: "thirdparty-fields-all-valid-storage-resources",
- spec: api.LimitRangeSpec{
- Limits: []api.LimitRangeItem{
+ spec: core.LimitRangeSpec{
+ Limits: []core.LimitRangeItem{
{
Type: "thirdparty.com/foo",
Max: getStorageResourceList("10000T"),
@@ -9420,42 +9517,42 @@ func TestValidateLimitRange(t *testing.T) {
}
for _, successCase := range successCases {
- limitRange := &api.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: successCase.name, Namespace: "foo"}, Spec: successCase.spec}
+ limitRange := &core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: successCase.name, Namespace: "foo"}, Spec: successCase.spec}
if errs := ValidateLimitRange(limitRange); len(errs) != 0 {
t.Errorf("Case %v, unexpected error: %v", successCase.name, errs)
}
}
errorCases := map[string]struct {
- R api.LimitRange
+ R core.LimitRange
D string
}{
"zero-length-name": {
- api.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "", Namespace: "foo"}, Spec: api.LimitRangeSpec{}},
+ core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "", Namespace: "foo"}, Spec: core.LimitRangeSpec{}},
"name or generateName is required",
},
"zero-length-namespace": {
- api.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: ""}, Spec: api.LimitRangeSpec{}},
+ core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: ""}, Spec: core.LimitRangeSpec{}},
"",
},
"invalid-name": {
- api.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "^Invalid", Namespace: "foo"}, Spec: api.LimitRangeSpec{}},
+ core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "^Invalid", Namespace: "foo"}, Spec: core.LimitRangeSpec{}},
dnsSubdomainLabelErrMsg,
},
"invalid-namespace": {
- api.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "^Invalid"}, Spec: api.LimitRangeSpec{}},
+ core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "^Invalid"}, Spec: core.LimitRangeSpec{}},
dnsLabelErrMsg,
},
"duplicate-limit-type": {
- api.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: api.LimitRangeSpec{
- Limits: []api.LimitRangeItem{
+ core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
+ Limits: []core.LimitRangeItem{
{
- Type: api.LimitTypePod,
+ Type: core.LimitTypePod,
Max: getResourceList("100m", "10000m"),
Min: getResourceList("0m", "100m"),
},
{
- Type: api.LimitTypePod,
+ Type: core.LimitTypePod,
Min: getResourceList("0m", "100m"),
},
},
@@ -9463,10 +9560,10 @@ func TestValidateLimitRange(t *testing.T) {
"",
},
"default-limit-type-pod": {
- api.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: api.LimitRangeSpec{
- Limits: []api.LimitRangeItem{
+ core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
+ Limits: []core.LimitRangeItem{
{
- Type: api.LimitTypePod,
+ Type: core.LimitTypePod,
Max: getResourceList("100m", "10000m"),
Min: getResourceList("0m", "100m"),
Default: getResourceList("10m", "100m"),
@@ -9476,10 +9573,10 @@ func TestValidateLimitRange(t *testing.T) {
"may not be specified when `type` is 'Pod'",
},
"default-request-limit-type-pod": {
- api.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: api.LimitRangeSpec{
- Limits: []api.LimitRangeItem{
+ core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
+ Limits: []core.LimitRangeItem{
{
- Type: api.LimitTypePod,
+ Type: core.LimitTypePod,
Max: getResourceList("100m", "10000m"),
Min: getResourceList("0m", "100m"),
DefaultRequest: getResourceList("10m", "100m"),
@@ -9489,10 +9586,10 @@ func TestValidateLimitRange(t *testing.T) {
"may not be specified when `type` is 'Pod'",
},
"min value 100m is greater than max value 10m": {
- api.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: api.LimitRangeSpec{
- Limits: []api.LimitRangeItem{
+ core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
+ Limits: []core.LimitRangeItem{
{
- Type: api.LimitTypePod,
+ Type: core.LimitTypePod,
Max: getResourceList("10m", ""),
Min: getResourceList("100m", ""),
},
@@ -9501,10 +9598,10 @@ func TestValidateLimitRange(t *testing.T) {
"min value 100m is greater than max value 10m",
},
"invalid spec default outside range": {
- api.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: api.LimitRangeSpec{
- Limits: []api.LimitRangeItem{
+ core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
+ Limits: []core.LimitRangeItem{
{
- Type: api.LimitTypeContainer,
+ Type: core.LimitTypeContainer,
Max: getResourceList("1", ""),
Min: getResourceList("100m", ""),
Default: getResourceList("2000m", ""),
@@ -9514,10 +9611,10 @@ func TestValidateLimitRange(t *testing.T) {
"default value 2 is greater than max value 1",
},
"invalid spec default request outside range": {
- api.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: api.LimitRangeSpec{
- Limits: []api.LimitRangeItem{
+ core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
+ Limits: []core.LimitRangeItem{
{
- Type: api.LimitTypeContainer,
+ Type: core.LimitTypeContainer,
Max: getResourceList("1", ""),
Min: getResourceList("100m", ""),
DefaultRequest: getResourceList("2000m", ""),
@@ -9527,10 +9624,10 @@ func TestValidateLimitRange(t *testing.T) {
"default request value 2 is greater than max value 1",
},
"invalid spec default request more than default": {
- api.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: api.LimitRangeSpec{
- Limits: []api.LimitRangeItem{
+ core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
+ Limits: []core.LimitRangeItem{
{
- Type: api.LimitTypeContainer,
+ Type: core.LimitTypeContainer,
Max: getResourceList("2", ""),
Min: getResourceList("100m", ""),
Default: getResourceList("500m", ""),
@@ -9541,10 +9638,10 @@ func TestValidateLimitRange(t *testing.T) {
"default request value 800m is greater than default limit value 500m",
},
"invalid spec maxLimitRequestRatio less than 1": {
- api.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: api.LimitRangeSpec{
- Limits: []api.LimitRangeItem{
+ core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
+ Limits: []core.LimitRangeItem{
{
- Type: api.LimitTypePod,
+ Type: core.LimitTypePod,
MaxLimitRequestRatio: getResourceList("800m", ""),
},
},
@@ -9552,10 +9649,10 @@ func TestValidateLimitRange(t *testing.T) {
"ratio 800m is less than 1",
},
"invalid spec maxLimitRequestRatio greater than max/min": {
- api.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: api.LimitRangeSpec{
- Limits: []api.LimitRangeItem{
+ core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
+ Limits: []core.LimitRangeItem{
{
- Type: api.LimitTypeContainer,
+ Type: core.LimitTypeContainer,
Max: getResourceList("", "2Gi"),
Min: getResourceList("", "512Mi"),
MaxLimitRequestRatio: getResourceList("", "10"),
@@ -9565,8 +9662,8 @@ func TestValidateLimitRange(t *testing.T) {
"ratio 10 is greater than max/min = 4.000000",
},
"invalid non standard limit type": {
- api.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: api.LimitRangeSpec{
- Limits: []api.LimitRangeItem{
+ core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
+ Limits: []core.LimitRangeItem{
{
Type: "foo",
Max: getStorageResourceList("10000T"),
@@ -9580,20 +9677,20 @@ func TestValidateLimitRange(t *testing.T) {
"must be a standard limit type or fully qualified",
},
"min and max values missing, one required": {
- api.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: api.LimitRangeSpec{
- Limits: []api.LimitRangeItem{
+ core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
+ Limits: []core.LimitRangeItem{
{
- Type: api.LimitTypePersistentVolumeClaim,
+ Type: core.LimitTypePersistentVolumeClaim,
},
},
}},
"either minimum or maximum storage value is required, but neither was provided",
},
"invalid min greater than max": {
- api.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: api.LimitRangeSpec{
- Limits: []api.LimitRangeItem{
+ core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
+ Limits: []core.LimitRangeItem{
{
- Type: api.LimitTypePersistentVolumeClaim,
+ Type: core.LimitTypePersistentVolumeClaim,
Min: getStorageResourceList("10Gi"),
Max: getStorageResourceList("1Gi"),
},
@@ -9619,37 +9716,37 @@ func TestValidateLimitRange(t *testing.T) {
}
func TestValidatePersistentVolumeClaimStatusUpdate(t *testing.T) {
- validClaim := testVolumeClaim("foo", "ns", api.PersistentVolumeClaimSpec{
- AccessModes: []api.PersistentVolumeAccessMode{
- api.ReadWriteOnce,
- api.ReadOnlyMany,
+ validClaim := testVolumeClaim("foo", "ns", core.PersistentVolumeClaimSpec{
+ AccessModes: []core.PersistentVolumeAccessMode{
+ core.ReadWriteOnce,
+ core.ReadOnlyMany,
},
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
},
})
- validConditionUpdate := testVolumeClaimWithStatus("foo", "ns", api.PersistentVolumeClaimSpec{
- AccessModes: []api.PersistentVolumeAccessMode{
- api.ReadWriteOnce,
- api.ReadOnlyMany,
+ validConditionUpdate := testVolumeClaimWithStatus("foo", "ns", core.PersistentVolumeClaimSpec{
+ AccessModes: []core.PersistentVolumeAccessMode{
+ core.ReadWriteOnce,
+ core.ReadOnlyMany,
},
- Resources: api.ResourceRequirements{
- Requests: api.ResourceList{
- api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
+ Resources: core.ResourceRequirements{
+ Requests: core.ResourceList{
+ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"),
},
},
- }, api.PersistentVolumeClaimStatus{
- Phase: api.ClaimPending,
- Conditions: []api.PersistentVolumeClaimCondition{
- {Type: api.PersistentVolumeClaimResizing, Status: api.ConditionTrue},
+ }, core.PersistentVolumeClaimStatus{
+ Phase: core.ClaimPending,
+ Conditions: []core.PersistentVolumeClaimCondition{
+ {Type: core.PersistentVolumeClaimResizing, Status: core.ConditionTrue},
},
})
scenarios := map[string]struct {
isExpectedFailure bool
- oldClaim *api.PersistentVolumeClaim
- newClaim *api.PersistentVolumeClaim
+ oldClaim *core.PersistentVolumeClaim
+ newClaim *core.PersistentVolumeClaim
enableResize bool
}{
"condition-update-with-disabled-feature-gate": {
@@ -9681,109 +9778,109 @@ func TestValidatePersistentVolumeClaimStatusUpdate(t *testing.T) {
}
func TestValidateResourceQuota(t *testing.T) {
- spec := api.ResourceQuotaSpec{
- Hard: api.ResourceList{
- api.ResourceCPU: resource.MustParse("100"),
- api.ResourceMemory: resource.MustParse("10000"),
- api.ResourceRequestsCPU: resource.MustParse("100"),
- api.ResourceRequestsMemory: resource.MustParse("10000"),
- api.ResourceLimitsCPU: resource.MustParse("100"),
- api.ResourceLimitsMemory: resource.MustParse("10000"),
- api.ResourcePods: resource.MustParse("10"),
- api.ResourceServices: resource.MustParse("0"),
- api.ResourceReplicationControllers: resource.MustParse("10"),
- api.ResourceQuotas: resource.MustParse("10"),
- api.ResourceConfigMaps: resource.MustParse("10"),
- api.ResourceSecrets: resource.MustParse("10"),
+ spec := core.ResourceQuotaSpec{
+ Hard: core.ResourceList{
+ core.ResourceCPU: resource.MustParse("100"),
+ core.ResourceMemory: resource.MustParse("10000"),
+ core.ResourceRequestsCPU: resource.MustParse("100"),
+ core.ResourceRequestsMemory: resource.MustParse("10000"),
+ core.ResourceLimitsCPU: resource.MustParse("100"),
+ core.ResourceLimitsMemory: resource.MustParse("10000"),
+ core.ResourcePods: resource.MustParse("10"),
+ core.ResourceServices: resource.MustParse("0"),
+ core.ResourceReplicationControllers: resource.MustParse("10"),
+ core.ResourceQuotas: resource.MustParse("10"),
+ core.ResourceConfigMaps: resource.MustParse("10"),
+ core.ResourceSecrets: resource.MustParse("10"),
},
}
- terminatingSpec := api.ResourceQuotaSpec{
- Hard: api.ResourceList{
- api.ResourceCPU: resource.MustParse("100"),
- api.ResourceLimitsCPU: resource.MustParse("200"),
+ terminatingSpec := core.ResourceQuotaSpec{
+ Hard: core.ResourceList{
+ core.ResourceCPU: resource.MustParse("100"),
+ core.ResourceLimitsCPU: resource.MustParse("200"),
},
- Scopes: []api.ResourceQuotaScope{api.ResourceQuotaScopeTerminating},
+ Scopes: []core.ResourceQuotaScope{core.ResourceQuotaScopeTerminating},
}
- nonTerminatingSpec := api.ResourceQuotaSpec{
- Hard: api.ResourceList{
- api.ResourceCPU: resource.MustParse("100"),
+ nonTerminatingSpec := core.ResourceQuotaSpec{
+ Hard: core.ResourceList{
+ core.ResourceCPU: resource.MustParse("100"),
},
- Scopes: []api.ResourceQuotaScope{api.ResourceQuotaScopeNotTerminating},
+ Scopes: []core.ResourceQuotaScope{core.ResourceQuotaScopeNotTerminating},
}
- bestEffortSpec := api.ResourceQuotaSpec{
- Hard: api.ResourceList{
- api.ResourcePods: resource.MustParse("100"),
+ bestEffortSpec := core.ResourceQuotaSpec{
+ Hard: core.ResourceList{
+ core.ResourcePods: resource.MustParse("100"),
},
- Scopes: []api.ResourceQuotaScope{api.ResourceQuotaScopeBestEffort},
+ Scopes: []core.ResourceQuotaScope{core.ResourceQuotaScopeBestEffort},
}
- nonBestEffortSpec := api.ResourceQuotaSpec{
- Hard: api.ResourceList{
- api.ResourceCPU: resource.MustParse("100"),
+ nonBestEffortSpec := core.ResourceQuotaSpec{
+ Hard: core.ResourceList{
+ core.ResourceCPU: resource.MustParse("100"),
},
- Scopes: []api.ResourceQuotaScope{api.ResourceQuotaScopeNotBestEffort},
+ Scopes: []core.ResourceQuotaScope{core.ResourceQuotaScopeNotBestEffort},
}
// storage is not yet supported as a quota tracked resource
- invalidQuotaResourceSpec := api.ResourceQuotaSpec{
- Hard: api.ResourceList{
- api.ResourceStorage: resource.MustParse("10"),
+ invalidQuotaResourceSpec := core.ResourceQuotaSpec{
+ Hard: core.ResourceList{
+ core.ResourceStorage: resource.MustParse("10"),
},
}
- negativeSpec := api.ResourceQuotaSpec{
- Hard: api.ResourceList{
- api.ResourceCPU: resource.MustParse("-100"),
- api.ResourceMemory: resource.MustParse("-10000"),
- api.ResourcePods: resource.MustParse("-10"),
- api.ResourceServices: resource.MustParse("-10"),
- api.ResourceReplicationControllers: resource.MustParse("-10"),
- api.ResourceQuotas: resource.MustParse("-10"),
- api.ResourceConfigMaps: resource.MustParse("-10"),
- api.ResourceSecrets: resource.MustParse("-10"),
+ negativeSpec := core.ResourceQuotaSpec{
+ Hard: core.ResourceList{
+ core.ResourceCPU: resource.MustParse("-100"),
+ core.ResourceMemory: resource.MustParse("-10000"),
+ core.ResourcePods: resource.MustParse("-10"),
+ core.ResourceServices: resource.MustParse("-10"),
+ core.ResourceReplicationControllers: resource.MustParse("-10"),
+ core.ResourceQuotas: resource.MustParse("-10"),
+ core.ResourceConfigMaps: resource.MustParse("-10"),
+ core.ResourceSecrets: resource.MustParse("-10"),
},
}
- fractionalComputeSpec := api.ResourceQuotaSpec{
- Hard: api.ResourceList{
- api.ResourceCPU: resource.MustParse("100m"),
+ fractionalComputeSpec := core.ResourceQuotaSpec{
+ Hard: core.ResourceList{
+ core.ResourceCPU: resource.MustParse("100m"),
},
}
- fractionalPodSpec := api.ResourceQuotaSpec{
- Hard: api.ResourceList{
- api.ResourcePods: resource.MustParse(".1"),
- api.ResourceServices: resource.MustParse(".5"),
- api.ResourceReplicationControllers: resource.MustParse("1.25"),
- api.ResourceQuotas: resource.MustParse("2.5"),
+ fractionalPodSpec := core.ResourceQuotaSpec{
+ Hard: core.ResourceList{
+ core.ResourcePods: resource.MustParse(".1"),
+ core.ResourceServices: resource.MustParse(".5"),
+ core.ResourceReplicationControllers: resource.MustParse("1.25"),
+ core.ResourceQuotas: resource.MustParse("2.5"),
},
}
- invalidTerminatingScopePairsSpec := api.ResourceQuotaSpec{
- Hard: api.ResourceList{
- api.ResourceCPU: resource.MustParse("100"),
+ invalidTerminatingScopePairsSpec := core.ResourceQuotaSpec{
+ Hard: core.ResourceList{
+ core.ResourceCPU: resource.MustParse("100"),
},
- Scopes: []api.ResourceQuotaScope{api.ResourceQuotaScopeTerminating, api.ResourceQuotaScopeNotTerminating},
+ Scopes: []core.ResourceQuotaScope{core.ResourceQuotaScopeTerminating, core.ResourceQuotaScopeNotTerminating},
}
- invalidBestEffortScopePairsSpec := api.ResourceQuotaSpec{
- Hard: api.ResourceList{
- api.ResourcePods: resource.MustParse("100"),
+ invalidBestEffortScopePairsSpec := core.ResourceQuotaSpec{
+ Hard: core.ResourceList{
+ core.ResourcePods: resource.MustParse("100"),
},
- Scopes: []api.ResourceQuotaScope{api.ResourceQuotaScopeBestEffort, api.ResourceQuotaScopeNotBestEffort},
+ Scopes: []core.ResourceQuotaScope{core.ResourceQuotaScopeBestEffort, core.ResourceQuotaScopeNotBestEffort},
}
- invalidScopeNameSpec := api.ResourceQuotaSpec{
- Hard: api.ResourceList{
- api.ResourceCPU: resource.MustParse("100"),
+ invalidScopeNameSpec := core.ResourceQuotaSpec{
+ Hard: core.ResourceList{
+ core.ResourceCPU: resource.MustParse("100"),
},
- Scopes: []api.ResourceQuotaScope{api.ResourceQuotaScope("foo")},
+ Scopes: []core.ResourceQuotaScope{core.ResourceQuotaScope("foo")},
}
- successCases := []api.ResourceQuota{
+ successCases := []core.ResourceQuota{
{
ObjectMeta: metav1.ObjectMeta{
Name: "abc",
@@ -9835,47 +9932,47 @@ func TestValidateResourceQuota(t *testing.T) {
}
errorCases := map[string]struct {
- R api.ResourceQuota
+ R core.ResourceQuota
D string
}{
"zero-length Name": {
- api.ResourceQuota{ObjectMeta: metav1.ObjectMeta{Name: "", Namespace: "foo"}, Spec: spec},
+ core.ResourceQuota{ObjectMeta: metav1.ObjectMeta{Name: "", Namespace: "foo"}, Spec: spec},
"name or generateName is required",
},
"zero-length Namespace": {
- api.ResourceQuota{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: ""}, Spec: spec},
+ core.ResourceQuota{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: ""}, Spec: spec},
"",
},
"invalid Name": {
- api.ResourceQuota{ObjectMeta: metav1.ObjectMeta{Name: "^Invalid", Namespace: "foo"}, Spec: spec},
+ core.ResourceQuota{ObjectMeta: metav1.ObjectMeta{Name: "^Invalid", Namespace: "foo"}, Spec: spec},
dnsSubdomainLabelErrMsg,
},
"invalid Namespace": {
- api.ResourceQuota{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "^Invalid"}, Spec: spec},
+ core.ResourceQuota{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "^Invalid"}, Spec: spec},
dnsLabelErrMsg,
},
"negative-limits": {
- api.ResourceQuota{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: negativeSpec},
+ core.ResourceQuota{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: negativeSpec},
isNegativeErrorMsg,
},
"fractional-api-resource": {
- api.ResourceQuota{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: fractionalPodSpec},
+ core.ResourceQuota{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: fractionalPodSpec},
isNotIntegerErrorMsg,
},
"invalid-quota-resource": {
- api.ResourceQuota{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: invalidQuotaResourceSpec},
+ core.ResourceQuota{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: invalidQuotaResourceSpec},
isInvalidQuotaResource,
},
"invalid-quota-terminating-pair": {
- api.ResourceQuota{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: invalidTerminatingScopePairsSpec},
+ core.ResourceQuota{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: invalidTerminatingScopePairsSpec},
"conflicting scopes",
},
"invalid-quota-besteffort-pair": {
- api.ResourceQuota{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: invalidBestEffortScopePairsSpec},
+ core.ResourceQuota{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: invalidBestEffortScopePairsSpec},
"conflicting scopes",
},
"invalid-quota-scope-name": {
- api.ResourceQuota{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: invalidScopeNameSpec},
+ core.ResourceQuota{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: invalidScopeNameSpec},
"unsupported scope",
},
}
@@ -9895,14 +9992,14 @@ func TestValidateResourceQuota(t *testing.T) {
func TestValidateNamespace(t *testing.T) {
validLabels := map[string]string{"a": "b"}
invalidLabels := map[string]string{"NoUppercaseOrSpecialCharsLike=Equals": "b"}
- successCases := []api.Namespace{
+ successCases := []core.Namespace{
{
ObjectMeta: metav1.ObjectMeta{Name: "abc", Labels: validLabels},
},
{
ObjectMeta: metav1.ObjectMeta{Name: "abc-123"},
- Spec: api.NamespaceSpec{
- Finalizers: []api.FinalizerName{"example.com/something", "example.com/other"},
+ Spec: core.NamespaceSpec{
+ Finalizers: []core.FinalizerName{"example.com/something", "example.com/other"},
},
},
}
@@ -9912,19 +10009,19 @@ func TestValidateNamespace(t *testing.T) {
}
}
errorCases := map[string]struct {
- R api.Namespace
+ R core.Namespace
D string
}{
"zero-length name": {
- api.Namespace{ObjectMeta: metav1.ObjectMeta{Name: ""}},
+ core.Namespace{ObjectMeta: metav1.ObjectMeta{Name: ""}},
"",
},
"defined-namespace": {
- api.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "abc-123", Namespace: "makesnosense"}},
+ core.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "abc-123", Namespace: "makesnosense"}},
"",
},
"invalid-labels": {
- api.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "abc", Labels: invalidLabels}},
+ core.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "abc", Labels: invalidLabels}},
"",
},
}
@@ -9938,47 +10035,47 @@ func TestValidateNamespace(t *testing.T) {
func TestValidateNamespaceFinalizeUpdate(t *testing.T) {
tests := []struct {
- oldNamespace api.Namespace
- namespace api.Namespace
+ oldNamespace core.Namespace
+ namespace core.Namespace
valid bool
}{
- {api.Namespace{}, api.Namespace{}, true},
- {api.Namespace{
+ {core.Namespace{}, core.Namespace{}, true},
+ {core.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "foo"}},
- api.Namespace{
+ core.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "foo"},
- Spec: api.NamespaceSpec{
- Finalizers: []api.FinalizerName{"Foo"},
+ Spec: core.NamespaceSpec{
+ Finalizers: []core.FinalizerName{"Foo"},
},
}, false},
- {api.Namespace{
+ {core.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "foo"},
- Spec: api.NamespaceSpec{
- Finalizers: []api.FinalizerName{"foo.com/bar"},
+ Spec: core.NamespaceSpec{
+ Finalizers: []core.FinalizerName{"foo.com/bar"},
},
},
- api.Namespace{
+ core.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "foo"},
- Spec: api.NamespaceSpec{
- Finalizers: []api.FinalizerName{"foo.com/bar", "what.com/bar"},
+ Spec: core.NamespaceSpec{
+ Finalizers: []core.FinalizerName{"foo.com/bar", "what.com/bar"},
},
}, true},
- {api.Namespace{
+ {core.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "fooemptyfinalizer"},
- Spec: api.NamespaceSpec{
- Finalizers: []api.FinalizerName{"foo.com/bar"},
+ Spec: core.NamespaceSpec{
+ Finalizers: []core.FinalizerName{"foo.com/bar"},
},
},
- api.Namespace{
+ core.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "fooemptyfinalizer"},
- Spec: api.NamespaceSpec{
- Finalizers: []api.FinalizerName{"", "foo.com/bar", "what.com/bar"},
+ Spec: core.NamespaceSpec{
+ Finalizers: []core.FinalizerName{"", "foo.com/bar", "what.com/bar"},
},
}, false},
}
@@ -10000,58 +10097,58 @@ func TestValidateNamespaceStatusUpdate(t *testing.T) {
now := metav1.Now()
tests := []struct {
- oldNamespace api.Namespace
- namespace api.Namespace
+ oldNamespace core.Namespace
+ namespace core.Namespace
valid bool
}{
- {api.Namespace{}, api.Namespace{
- Status: api.NamespaceStatus{
- Phase: api.NamespaceActive,
+ {core.Namespace{}, core.Namespace{
+ Status: core.NamespaceStatus{
+ Phase: core.NamespaceActive,
},
}, true},
// Cannot set deletionTimestamp via status update
- {api.Namespace{
+ {core.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "foo"}},
- api.Namespace{
+ core.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
DeletionTimestamp: &now},
- Status: api.NamespaceStatus{
- Phase: api.NamespaceTerminating,
+ Status: core.NamespaceStatus{
+ Phase: core.NamespaceTerminating,
},
}, false},
// Can update phase via status update
- {api.Namespace{
+ {core.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
DeletionTimestamp: &now}},
- api.Namespace{
+ core.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
DeletionTimestamp: &now},
- Status: api.NamespaceStatus{
- Phase: api.NamespaceTerminating,
+ Status: core.NamespaceStatus{
+ Phase: core.NamespaceTerminating,
},
}, true},
- {api.Namespace{
+ {core.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "foo"}},
- api.Namespace{
+ core.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "foo"},
- Status: api.NamespaceStatus{
- Phase: api.NamespaceTerminating,
+ Status: core.NamespaceStatus{
+ Phase: core.NamespaceTerminating,
},
}, false},
- {api.Namespace{
+ {core.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "foo"}},
- api.Namespace{
+ core.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "bar"},
- Status: api.NamespaceStatus{
- Phase: api.NamespaceTerminating,
+ Status: core.NamespaceStatus{
+ Phase: core.NamespaceTerminating,
},
}, false},
}
@@ -10071,76 +10168,76 @@ func TestValidateNamespaceStatusUpdate(t *testing.T) {
func TestValidateNamespaceUpdate(t *testing.T) {
tests := []struct {
- oldNamespace api.Namespace
- namespace api.Namespace
+ oldNamespace core.Namespace
+ namespace core.Namespace
valid bool
}{
- {api.Namespace{}, api.Namespace{}, true},
- {api.Namespace{
+ {core.Namespace{}, core.Namespace{}, true},
+ {core.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "foo1"}},
- api.Namespace{
+ core.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "bar1"},
}, false},
- {api.Namespace{
+ {core.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "foo2",
Labels: map[string]string{"foo": "bar"},
},
- }, api.Namespace{
+ }, core.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "foo2",
Labels: map[string]string{"foo": "baz"},
},
}, true},
- {api.Namespace{
+ {core.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "foo3",
},
- }, api.Namespace{
+ }, core.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "foo3",
Labels: map[string]string{"foo": "baz"},
},
}, true},
- {api.Namespace{
+ {core.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "foo4",
Labels: map[string]string{"bar": "foo"},
},
- }, api.Namespace{
+ }, core.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "foo4",
Labels: map[string]string{"foo": "baz"},
},
}, true},
- {api.Namespace{
+ {core.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "foo5",
Labels: map[string]string{"foo": "baz"},
},
- }, api.Namespace{
+ }, core.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "foo5",
Labels: map[string]string{"Foo": "baz"},
},
}, true},
- {api.Namespace{
+ {core.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "foo6",
Labels: map[string]string{"foo": "baz"},
},
- }, api.Namespace{
+ }, core.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "foo6",
Labels: map[string]string{"Foo": "baz"},
},
- Spec: api.NamespaceSpec{
- Finalizers: []api.FinalizerName{"kubernetes"},
+ Spec: core.NamespaceSpec{
+ Finalizers: []core.FinalizerName{"kubernetes"},
},
- Status: api.NamespaceStatus{
- Phase: api.NamespaceTerminating,
+ Status: core.NamespaceStatus{
+ Phase: core.NamespaceTerminating,
},
}, true},
}
@@ -10160,8 +10257,8 @@ func TestValidateNamespaceUpdate(t *testing.T) {
func TestValidateSecret(t *testing.T) {
// Opaque secret validation
- validSecret := func() api.Secret {
- return api.Secret{
+ validSecret := func() core.Secret {
+ return core.Secret{
ObjectMeta: metav1.ObjectMeta{Name: "foo", Namespace: "bar"},
Data: map[string][]byte{
"data-1": []byte("bar"),
@@ -10186,7 +10283,7 @@ func TestValidateSecret(t *testing.T) {
emptyNs.Namespace = ""
invalidNs.Namespace = "NoUppercaseOrSpecialCharsLike=Equals"
overMaxSize.Data = map[string][]byte{
- "over": make([]byte, api.MaxSecretSize+1),
+ "over": make([]byte, core.MaxSecretSize+1),
}
invalidKey.Data["a*b"] = []byte("whoops")
leadingDotKey.Data[".key"] = []byte("bar")
@@ -10194,16 +10291,16 @@ func TestValidateSecret(t *testing.T) {
doubleDotKey.Data[".."] = []byte("bar")
// kubernetes.io/service-account-token secret validation
- validServiceAccountTokenSecret := func() api.Secret {
- return api.Secret{
+ validServiceAccountTokenSecret := func() core.Secret {
+ return core.Secret{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Namespace: "bar",
Annotations: map[string]string{
- api.ServiceAccountNameKey: "foo",
+ core.ServiceAccountNameKey: "foo",
},
},
- Type: api.SecretTypeServiceAccountToken,
+ Type: core.SecretTypeServiceAccountToken,
Data: map[string][]byte{
"data-1": []byte("bar"),
},
@@ -10215,12 +10312,12 @@ func TestValidateSecret(t *testing.T) {
missingTokenAnnotation = validServiceAccountTokenSecret()
missingTokenAnnotations = validServiceAccountTokenSecret()
)
- emptyTokenAnnotation.Annotations[api.ServiceAccountNameKey] = ""
- delete(missingTokenAnnotation.Annotations, api.ServiceAccountNameKey)
+ emptyTokenAnnotation.Annotations[core.ServiceAccountNameKey] = ""
+ delete(missingTokenAnnotation.Annotations, core.ServiceAccountNameKey)
missingTokenAnnotations.Annotations = nil
tests := map[string]struct {
- secret api.Secret
+ secret core.Secret
valid bool
}{
"valid": {validSecret(), true},
@@ -10251,21 +10348,21 @@ func TestValidateSecret(t *testing.T) {
}
func TestValidateDockerConfigSecret(t *testing.T) {
- validDockerSecret := func() api.Secret {
- return api.Secret{
+ validDockerSecret := func() core.Secret {
+ return core.Secret{
ObjectMeta: metav1.ObjectMeta{Name: "foo", Namespace: "bar"},
- Type: api.SecretTypeDockercfg,
+ Type: core.SecretTypeDockercfg,
Data: map[string][]byte{
- api.DockerConfigKey: []byte(`{"https://index.docker.io/v1/": {"auth": "Y2x1ZWRyb29sZXIwMDAxOnBhc3N3b3Jk","email": "fake@example.com"}}`),
+ core.DockerConfigKey: []byte(`{"https://index.docker.io/v1/": {"auth": "Y2x1ZWRyb29sZXIwMDAxOnBhc3N3b3Jk","email": "fake@example.com"}}`),
},
}
}
- validDockerSecret2 := func() api.Secret {
- return api.Secret{
+ validDockerSecret2 := func() core.Secret {
+ return core.Secret{
ObjectMeta: metav1.ObjectMeta{Name: "foo", Namespace: "bar"},
- Type: api.SecretTypeDockerConfigJson,
+ Type: core.SecretTypeDockerConfigJson,
Data: map[string][]byte{
- api.DockerConfigJsonKey: []byte(`{"auths":{"https://index.docker.io/v1/": {"auth": "Y2x1ZWRyb29sZXIwMDAxOnBhc3N3b3Jk","email": "fake@example.com"}}}`),
+ core.DockerConfigJsonKey: []byte(`{"auths":{"https://index.docker.io/v1/": {"auth": "Y2x1ZWRyb29sZXIwMDAxOnBhc3N3b3Jk","email": "fake@example.com"}}}`),
},
}
}
@@ -10279,15 +10376,15 @@ func TestValidateDockerConfigSecret(t *testing.T) {
invalidDockerConfigKey2 = validDockerSecret2()
)
- delete(missingDockerConfigKey.Data, api.DockerConfigKey)
- emptyDockerConfigKey.Data[api.DockerConfigKey] = []byte("")
- invalidDockerConfigKey.Data[api.DockerConfigKey] = []byte("bad")
- delete(missingDockerConfigKey2.Data, api.DockerConfigJsonKey)
- emptyDockerConfigKey2.Data[api.DockerConfigJsonKey] = []byte("")
- invalidDockerConfigKey2.Data[api.DockerConfigJsonKey] = []byte("bad")
+ delete(missingDockerConfigKey.Data, core.DockerConfigKey)
+ emptyDockerConfigKey.Data[core.DockerConfigKey] = []byte("")
+ invalidDockerConfigKey.Data[core.DockerConfigKey] = []byte("bad")
+ delete(missingDockerConfigKey2.Data, core.DockerConfigJsonKey)
+ emptyDockerConfigKey2.Data[core.DockerConfigJsonKey] = []byte("")
+ invalidDockerConfigKey2.Data[core.DockerConfigJsonKey] = []byte("bad")
tests := map[string]struct {
- secret api.Secret
+ secret core.Secret
valid bool
}{
"valid dockercfg": {validDockerSecret(), true},
@@ -10312,13 +10409,13 @@ func TestValidateDockerConfigSecret(t *testing.T) {
}
func TestValidateBasicAuthSecret(t *testing.T) {
- validBasicAuthSecret := func() api.Secret {
- return api.Secret{
+ validBasicAuthSecret := func() core.Secret {
+ return core.Secret{
ObjectMeta: metav1.ObjectMeta{Name: "foo", Namespace: "bar"},
- Type: api.SecretTypeBasicAuth,
+ Type: core.SecretTypeBasicAuth,
Data: map[string][]byte{
- api.BasicAuthUsernameKey: []byte("username"),
- api.BasicAuthPasswordKey: []byte("password"),
+ core.BasicAuthUsernameKey: []byte("username"),
+ core.BasicAuthPasswordKey: []byte("password"),
},
}
}
@@ -10327,11 +10424,11 @@ func TestValidateBasicAuthSecret(t *testing.T) {
missingBasicAuthUsernamePasswordKeys = validBasicAuthSecret()
)
- delete(missingBasicAuthUsernamePasswordKeys.Data, api.BasicAuthUsernameKey)
- delete(missingBasicAuthUsernamePasswordKeys.Data, api.BasicAuthPasswordKey)
+ delete(missingBasicAuthUsernamePasswordKeys.Data, core.BasicAuthUsernameKey)
+ delete(missingBasicAuthUsernamePasswordKeys.Data, core.BasicAuthPasswordKey)
tests := map[string]struct {
- secret api.Secret
+ secret core.Secret
valid bool
}{
"valid": {validBasicAuthSecret(), true},
@@ -10350,22 +10447,22 @@ func TestValidateBasicAuthSecret(t *testing.T) {
}
func TestValidateSSHAuthSecret(t *testing.T) {
- validSSHAuthSecret := func() api.Secret {
- return api.Secret{
+ validSSHAuthSecret := func() core.Secret {
+ return core.Secret{
ObjectMeta: metav1.ObjectMeta{Name: "foo", Namespace: "bar"},
- Type: api.SecretTypeSSHAuth,
+ Type: core.SecretTypeSSHAuth,
Data: map[string][]byte{
- api.SSHAuthPrivateKey: []byte("foo-bar-baz"),
+ core.SSHAuthPrivateKey: []byte("foo-bar-baz"),
},
}
}
missingSSHAuthPrivateKey := validSSHAuthSecret()
- delete(missingSSHAuthPrivateKey.Data, api.SSHAuthPrivateKey)
+ delete(missingSSHAuthPrivateKey.Data, core.SSHAuthPrivateKey)
tests := map[string]struct {
- secret api.Secret
+ secret core.Secret
valid bool
}{
"valid": {validSSHAuthSecret(), true},
@@ -10384,17 +10481,17 @@ func TestValidateSSHAuthSecret(t *testing.T) {
}
func TestValidateEndpoints(t *testing.T) {
- successCases := map[string]api.Endpoints{
+ successCases := map[string]core.Endpoints{
"simple endpoint": {
ObjectMeta: metav1.ObjectMeta{Name: "mysvc", Namespace: "namespace"},
- Subsets: []api.EndpointSubset{
+ Subsets: []core.EndpointSubset{
{
- Addresses: []api.EndpointAddress{{IP: "10.10.1.1"}, {IP: "10.10.2.2"}},
- Ports: []api.EndpointPort{{Name: "a", Port: 8675, Protocol: "TCP"}, {Name: "b", Port: 309, Protocol: "TCP"}},
+ Addresses: []core.EndpointAddress{{IP: "10.10.1.1"}, {IP: "10.10.2.2"}},
+ Ports: []core.EndpointPort{{Name: "a", Port: 8675, Protocol: "TCP"}, {Name: "b", Port: 309, Protocol: "TCP"}},
},
{
- Addresses: []api.EndpointAddress{{IP: "10.10.3.3"}},
- Ports: []api.EndpointPort{{Name: "a", Port: 93, Protocol: "TCP"}, {Name: "b", Port: 76, Protocol: "TCP"}},
+ Addresses: []core.EndpointAddress{{IP: "10.10.3.3"}},
+ Ports: []core.EndpointPort{{Name: "a", Port: 93, Protocol: "TCP"}, {Name: "b", Port: 76, Protocol: "TCP"}},
},
},
},
@@ -10403,18 +10500,18 @@ func TestValidateEndpoints(t *testing.T) {
},
"no name required for singleton port": {
ObjectMeta: metav1.ObjectMeta{Name: "mysvc", Namespace: "namespace"},
- Subsets: []api.EndpointSubset{
+ Subsets: []core.EndpointSubset{
{
- Addresses: []api.EndpointAddress{{IP: "10.10.1.1"}},
- Ports: []api.EndpointPort{{Port: 8675, Protocol: "TCP"}},
+ Addresses: []core.EndpointAddress{{IP: "10.10.1.1"}},
+ Ports: []core.EndpointPort{{Port: 8675, Protocol: "TCP"}},
},
},
},
"empty ports": {
ObjectMeta: metav1.ObjectMeta{Name: "mysvc", Namespace: "namespace"},
- Subsets: []api.EndpointSubset{
+ Subsets: []core.EndpointSubset{
{
- Addresses: []api.EndpointAddress{{IP: "10.10.3.3"}},
+ Addresses: []core.EndpointAddress{{IP: "10.10.3.3"}},
},
},
},
@@ -10427,46 +10524,46 @@ func TestValidateEndpoints(t *testing.T) {
}
errorCases := map[string]struct {
- endpoints api.Endpoints
+ endpoints core.Endpoints
errorType field.ErrorType
errorDetail string
}{
"missing namespace": {
- endpoints: api.Endpoints{ObjectMeta: metav1.ObjectMeta{Name: "mysvc"}},
+ endpoints: core.Endpoints{ObjectMeta: metav1.ObjectMeta{Name: "mysvc"}},
errorType: "FieldValueRequired",
},
"missing name": {
- endpoints: api.Endpoints{ObjectMeta: metav1.ObjectMeta{Namespace: "namespace"}},
+ endpoints: core.Endpoints{ObjectMeta: metav1.ObjectMeta{Namespace: "namespace"}},
errorType: "FieldValueRequired",
},
"invalid namespace": {
- endpoints: api.Endpoints{ObjectMeta: metav1.ObjectMeta{Name: "mysvc", Namespace: "no@#invalid.;chars\"allowed"}},
+ endpoints: core.Endpoints{ObjectMeta: metav1.ObjectMeta{Name: "mysvc", Namespace: "no@#invalid.;chars\"allowed"}},
errorType: "FieldValueInvalid",
errorDetail: dnsLabelErrMsg,
},
"invalid name": {
- endpoints: api.Endpoints{ObjectMeta: metav1.ObjectMeta{Name: "-_Invliad^&Characters", Namespace: "namespace"}},
+ endpoints: core.Endpoints{ObjectMeta: metav1.ObjectMeta{Name: "-_Invliad^&Characters", Namespace: "namespace"}},
errorType: "FieldValueInvalid",
errorDetail: dnsSubdomainLabelErrMsg,
},
"empty addresses": {
- endpoints: api.Endpoints{
+ endpoints: core.Endpoints{
ObjectMeta: metav1.ObjectMeta{Name: "mysvc", Namespace: "namespace"},
- Subsets: []api.EndpointSubset{
+ Subsets: []core.EndpointSubset{
{
- Ports: []api.EndpointPort{{Name: "a", Port: 93, Protocol: "TCP"}},
+ Ports: []core.EndpointPort{{Name: "a", Port: 93, Protocol: "TCP"}},
},
},
},
errorType: "FieldValueRequired",
},
"invalid IP": {
- endpoints: api.Endpoints{
+ endpoints: core.Endpoints{
ObjectMeta: metav1.ObjectMeta{Name: "mysvc", Namespace: "namespace"},
- Subsets: []api.EndpointSubset{
+ Subsets: []core.EndpointSubset{
{
- Addresses: []api.EndpointAddress{{IP: "[2001:0db8:85a3:0042:1000:8a2e:0370:7334]"}},
- Ports: []api.EndpointPort{{Name: "a", Port: 93, Protocol: "TCP"}},
+ Addresses: []core.EndpointAddress{{IP: "[2001:0db8:85a3:0042:1000:8a2e:0370:7334]"}},
+ Ports: []core.EndpointPort{{Name: "a", Port: 93, Protocol: "TCP"}},
},
},
},
@@ -10474,24 +10571,24 @@ func TestValidateEndpoints(t *testing.T) {
errorDetail: "must be a valid IP address",
},
"Multiple ports, one without name": {
- endpoints: api.Endpoints{
+ endpoints: core.Endpoints{
ObjectMeta: metav1.ObjectMeta{Name: "mysvc", Namespace: "namespace"},
- Subsets: []api.EndpointSubset{
+ Subsets: []core.EndpointSubset{
{
- Addresses: []api.EndpointAddress{{IP: "10.10.1.1"}},
- Ports: []api.EndpointPort{{Port: 8675, Protocol: "TCP"}, {Name: "b", Port: 309, Protocol: "TCP"}},
+ Addresses: []core.EndpointAddress{{IP: "10.10.1.1"}},
+ Ports: []core.EndpointPort{{Port: 8675, Protocol: "TCP"}, {Name: "b", Port: 309, Protocol: "TCP"}},
},
},
},
errorType: "FieldValueRequired",
},
"Invalid port number": {
- endpoints: api.Endpoints{
+ endpoints: core.Endpoints{
ObjectMeta: metav1.ObjectMeta{Name: "mysvc", Namespace: "namespace"},
- Subsets: []api.EndpointSubset{
+ Subsets: []core.EndpointSubset{
{
- Addresses: []api.EndpointAddress{{IP: "10.10.1.1"}},
- Ports: []api.EndpointPort{{Name: "a", Port: 66000, Protocol: "TCP"}},
+ Addresses: []core.EndpointAddress{{IP: "10.10.1.1"}},
+ Ports: []core.EndpointPort{{Name: "a", Port: 66000, Protocol: "TCP"}},
},
},
},
@@ -10499,24 +10596,24 @@ func TestValidateEndpoints(t *testing.T) {
errorDetail: "between",
},
"Invalid protocol": {
- endpoints: api.Endpoints{
+ endpoints: core.Endpoints{
ObjectMeta: metav1.ObjectMeta{Name: "mysvc", Namespace: "namespace"},
- Subsets: []api.EndpointSubset{
+ Subsets: []core.EndpointSubset{
{
- Addresses: []api.EndpointAddress{{IP: "10.10.1.1"}},
- Ports: []api.EndpointPort{{Name: "a", Port: 93, Protocol: "Protocol"}},
+ Addresses: []core.EndpointAddress{{IP: "10.10.1.1"}},
+ Ports: []core.EndpointPort{{Name: "a", Port: 93, Protocol: "Protocol"}},
},
},
},
errorType: "FieldValueNotSupported",
},
"Address missing IP": {
- endpoints: api.Endpoints{
+ endpoints: core.Endpoints{
ObjectMeta: metav1.ObjectMeta{Name: "mysvc", Namespace: "namespace"},
- Subsets: []api.EndpointSubset{
+ Subsets: []core.EndpointSubset{
{
- Addresses: []api.EndpointAddress{{}},
- Ports: []api.EndpointPort{{Name: "a", Port: 93, Protocol: "TCP"}},
+ Addresses: []core.EndpointAddress{{}},
+ Ports: []core.EndpointPort{{Name: "a", Port: 93, Protocol: "TCP"}},
},
},
},
@@ -10524,12 +10621,12 @@ func TestValidateEndpoints(t *testing.T) {
errorDetail: "must be a valid IP address",
},
"Port missing number": {
- endpoints: api.Endpoints{
+ endpoints: core.Endpoints{
ObjectMeta: metav1.ObjectMeta{Name: "mysvc", Namespace: "namespace"},
- Subsets: []api.EndpointSubset{
+ Subsets: []core.EndpointSubset{
{
- Addresses: []api.EndpointAddress{{IP: "10.10.1.1"}},
- Ports: []api.EndpointPort{{Name: "a", Protocol: "TCP"}},
+ Addresses: []core.EndpointAddress{{IP: "10.10.1.1"}},
+ Ports: []core.EndpointPort{{Name: "a", Protocol: "TCP"}},
},
},
},
@@ -10537,24 +10634,24 @@ func TestValidateEndpoints(t *testing.T) {
errorDetail: "between",
},
"Port missing protocol": {
- endpoints: api.Endpoints{
+ endpoints: core.Endpoints{
ObjectMeta: metav1.ObjectMeta{Name: "mysvc", Namespace: "namespace"},
- Subsets: []api.EndpointSubset{
+ Subsets: []core.EndpointSubset{
{
- Addresses: []api.EndpointAddress{{IP: "10.10.1.1"}},
- Ports: []api.EndpointPort{{Name: "a", Port: 93}},
+ Addresses: []core.EndpointAddress{{IP: "10.10.1.1"}},
+ Ports: []core.EndpointPort{{Name: "a", Port: 93}},
},
},
},
errorType: "FieldValueRequired",
},
"Address is loopback": {
- endpoints: api.Endpoints{
+ endpoints: core.Endpoints{
ObjectMeta: metav1.ObjectMeta{Name: "mysvc", Namespace: "namespace"},
- Subsets: []api.EndpointSubset{
+ Subsets: []core.EndpointSubset{
{
- Addresses: []api.EndpointAddress{{IP: "127.0.0.1"}},
- Ports: []api.EndpointPort{{Name: "p", Port: 93, Protocol: "TCP"}},
+ Addresses: []core.EndpointAddress{{IP: "127.0.0.1"}},
+ Ports: []core.EndpointPort{{Name: "p", Port: 93, Protocol: "TCP"}},
},
},
},
@@ -10562,12 +10659,12 @@ func TestValidateEndpoints(t *testing.T) {
errorDetail: "loopback",
},
"Address is link-local": {
- endpoints: api.Endpoints{
+ endpoints: core.Endpoints{
ObjectMeta: metav1.ObjectMeta{Name: "mysvc", Namespace: "namespace"},
- Subsets: []api.EndpointSubset{
+ Subsets: []core.EndpointSubset{
{
- Addresses: []api.EndpointAddress{{IP: "169.254.169.254"}},
- Ports: []api.EndpointPort{{Name: "p", Port: 93, Protocol: "TCP"}},
+ Addresses: []core.EndpointAddress{{IP: "169.254.169.254"}},
+ Ports: []core.EndpointPort{{Name: "p", Port: 93, Protocol: "TCP"}},
},
},
},
@@ -10575,12 +10672,12 @@ func TestValidateEndpoints(t *testing.T) {
errorDetail: "link-local",
},
"Address is link-local multicast": {
- endpoints: api.Endpoints{
+ endpoints: core.Endpoints{
ObjectMeta: metav1.ObjectMeta{Name: "mysvc", Namespace: "namespace"},
- Subsets: []api.EndpointSubset{
+ Subsets: []core.EndpointSubset{
{
- Addresses: []api.EndpointAddress{{IP: "224.0.0.1"}},
- Ports: []api.EndpointPort{{Name: "p", Port: 93, Protocol: "TCP"}},
+ Addresses: []core.EndpointAddress{{IP: "224.0.0.1"}},
+ Ports: []core.EndpointPort{{Name: "p", Port: 93, Protocol: "TCP"}},
},
},
},
@@ -10597,12 +10694,12 @@ func TestValidateEndpoints(t *testing.T) {
}
func TestValidateTLSSecret(t *testing.T) {
- successCases := map[string]api.Secret{
+ successCases := map[string]core.Secret{
"empty certificate chain": {
ObjectMeta: metav1.ObjectMeta{Name: "tls-cert", Namespace: "namespace"},
Data: map[string][]byte{
- api.TLSCertKey: []byte("public key"),
- api.TLSPrivateKeyKey: []byte("private key"),
+ core.TLSCertKey: []byte("public key"),
+ core.TLSPrivateKeyKey: []byte("private key"),
},
},
}
@@ -10612,24 +10709,24 @@ func TestValidateTLSSecret(t *testing.T) {
}
}
errorCases := map[string]struct {
- secrets api.Secret
+ secrets core.Secret
errorType field.ErrorType
errorDetail string
}{
"missing public key": {
- secrets: api.Secret{
+ secrets: core.Secret{
ObjectMeta: metav1.ObjectMeta{Name: "tls-cert"},
Data: map[string][]byte{
- api.TLSCertKey: []byte("public key"),
+ core.TLSCertKey: []byte("public key"),
},
},
errorType: "FieldValueRequired",
},
"missing private key": {
- secrets: api.Secret{
+ secrets: core.Secret{
ObjectMeta: metav1.ObjectMeta{Name: "tls-cert"},
Data: map[string][]byte{
- api.TLSCertKey: []byte("public key"),
+ core.TLSCertKey: []byte("public key"),
},
},
errorType: "FieldValueRequired",
@@ -10645,14 +10742,14 @@ func TestValidateTLSSecret(t *testing.T) {
func TestValidateSecurityContext(t *testing.T) {
priv := false
runAsUser := int64(1)
- fullValidSC := func() *api.SecurityContext {
- return &api.SecurityContext{
+ fullValidSC := func() *core.SecurityContext {
+ return &core.SecurityContext{
Privileged: &priv,
- Capabilities: &api.Capabilities{
- Add: []api.Capability{"foo"},
- Drop: []api.Capability{"bar"},
+ Capabilities: &core.Capabilities{
+ Add: []core.Capability{"foo"},
+ Drop: []core.Capability{"bar"},
},
- SELinuxOptions: &api.SELinuxOptions{
+ SELinuxOptions: &core.SELinuxOptions{
User: "user",
Role: "role",
Type: "type",
@@ -10677,7 +10774,7 @@ func TestValidateSecurityContext(t *testing.T) {
noRunAsUser.RunAsUser = nil
successCases := map[string]struct {
- sc *api.SecurityContext
+ sc *core.SecurityContext
}{
"all settings": {allSettings},
"no capabilities": {noCaps},
@@ -10700,7 +10797,7 @@ func TestValidateSecurityContext(t *testing.T) {
negativeRunAsUser.RunAsUser = &negativeUser
errorCases := map[string]struct {
- sc *api.SecurityContext
+ sc *core.SecurityContext
errorType field.ErrorType
errorDetail string
}{
@@ -10722,8 +10819,8 @@ func TestValidateSecurityContext(t *testing.T) {
}
}
-func fakeValidSecurityContext(priv bool) *api.SecurityContext {
- return &api.SecurityContext{
+func fakeValidSecurityContext(priv bool) *core.SecurityContext {
+ return &core.SecurityContext{
Privileged: &priv,
}
}
@@ -10734,22 +10831,22 @@ func TestValidPodLogOptions(t *testing.T) {
zero := int64(0)
positive := int64(1)
tests := []struct {
- opt api.PodLogOptions
+ opt core.PodLogOptions
errs int
}{
- {api.PodLogOptions{}, 0},
- {api.PodLogOptions{Previous: true}, 0},
- {api.PodLogOptions{Follow: true}, 0},
- {api.PodLogOptions{TailLines: &zero}, 0},
- {api.PodLogOptions{TailLines: &negative}, 1},
- {api.PodLogOptions{TailLines: &positive}, 0},
- {api.PodLogOptions{LimitBytes: &zero}, 1},
- {api.PodLogOptions{LimitBytes: &negative}, 1},
- {api.PodLogOptions{LimitBytes: &positive}, 0},
- {api.PodLogOptions{SinceSeconds: &negative}, 1},
- {api.PodLogOptions{SinceSeconds: &positive}, 0},
- {api.PodLogOptions{SinceSeconds: &zero}, 1},
- {api.PodLogOptions{SinceTime: &now}, 0},
+ {core.PodLogOptions{}, 0},
+ {core.PodLogOptions{Previous: true}, 0},
+ {core.PodLogOptions{Follow: true}, 0},
+ {core.PodLogOptions{TailLines: &zero}, 0},
+ {core.PodLogOptions{TailLines: &negative}, 1},
+ {core.PodLogOptions{TailLines: &positive}, 0},
+ {core.PodLogOptions{LimitBytes: &zero}, 1},
+ {core.PodLogOptions{LimitBytes: &negative}, 1},
+ {core.PodLogOptions{LimitBytes: &positive}, 0},
+ {core.PodLogOptions{SinceSeconds: &negative}, 1},
+ {core.PodLogOptions{SinceSeconds: &positive}, 0},
+ {core.PodLogOptions{SinceSeconds: &zero}, 1},
+ {core.PodLogOptions{SinceTime: &now}, 0},
}
for i, test := range tests {
errs := ValidatePodLogOptions(&test.opt)
@@ -10760,8 +10857,8 @@ func TestValidPodLogOptions(t *testing.T) {
}
func TestValidateConfigMap(t *testing.T) {
- newConfigMap := func(name, namespace string, data map[string]string) api.ConfigMap {
- return api.ConfigMap{
+ newConfigMap := func(name, namespace string, data map[string]string) core.ConfigMap {
+ return core.ConfigMap{
ObjectMeta: metav1.ObjectMeta{
Name: name,
Namespace: namespace,
@@ -10783,11 +10880,11 @@ func TestValidateConfigMap(t *testing.T) {
dotKey = newConfigMap("validname", "validns", map[string]string{".": "value"})
doubleDotKey = newConfigMap("validname", "validns", map[string]string{"..": "value"})
overMaxKeyLength = newConfigMap("validname", "validns", map[string]string{strings.Repeat("a", 254): "value"})
- overMaxSize = newConfigMap("validname", "validns", map[string]string{"key": strings.Repeat("a", api.MaxSecretSize+1)})
+ overMaxSize = newConfigMap("validname", "validns", map[string]string{"key": strings.Repeat("a", core.MaxSecretSize+1)})
)
tests := map[string]struct {
- cfg api.ConfigMap
+ cfg core.ConfigMap
isValid bool
}{
"valid": {validConfigMap, true},
@@ -10816,8 +10913,8 @@ func TestValidateConfigMap(t *testing.T) {
}
func TestValidateConfigMapUpdate(t *testing.T) {
- newConfigMap := func(version, name, namespace string, data map[string]string) api.ConfigMap {
- return api.ConfigMap{
+ newConfigMap := func(version, name, namespace string, data map[string]string) core.ConfigMap {
+ return core.ConfigMap{
ObjectMeta: metav1.ObjectMeta{
Name: name,
Namespace: namespace,
@@ -10834,8 +10931,8 @@ func TestValidateConfigMapUpdate(t *testing.T) {
cases := []struct {
name string
- newCfg api.ConfigMap
- oldCfg api.ConfigMap
+ newCfg core.ConfigMap
+ oldCfg core.ConfigMap
isValid bool
}{
{
@@ -10962,7 +11059,7 @@ func TestValidateSysctls(t *testing.T) {
"_invalid",
}
- sysctls := make([]api.Sysctl, len(valid))
+ sysctls := make([]core.Sysctl, len(valid))
for i, sysctl := range valid {
sysctls[i].Name = sysctl
}
@@ -10971,7 +11068,7 @@ func TestValidateSysctls(t *testing.T) {
t.Errorf("unexpected validation errors: %v", errs)
}
- sysctls = make([]api.Sysctl, len(invalid))
+ sysctls = make([]core.Sysctl, len(invalid))
for i, sysctl := range invalid {
sysctls[i].Name = sysctl
}
@@ -10988,18 +11085,18 @@ func TestValidateSysctls(t *testing.T) {
}
}
-func newNodeNameEndpoint(nodeName string) *api.Endpoints {
- ep := &api.Endpoints{
+func newNodeNameEndpoint(nodeName string) *core.Endpoints {
+ ep := &core.Endpoints{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Namespace: metav1.NamespaceDefault,
ResourceVersion: "1",
},
- Subsets: []api.EndpointSubset{
+ Subsets: []core.EndpointSubset{
{
- NotReadyAddresses: []api.EndpointAddress{},
- Ports: []api.EndpointPort{{Name: "https", Port: 443, Protocol: "TCP"}},
- Addresses: []api.EndpointAddress{
+ NotReadyAddresses: []core.EndpointAddress{},
+ Ports: []core.EndpointPort{{Name: "https", Port: 443, Protocol: "TCP"}},
+ Addresses: []core.EndpointAddress{
{
IP: "8.8.8.8",
Hostname: "zookeeper1",
@@ -11037,23 +11134,23 @@ func TestEndpointAddressNodeNameCanBeAnIPAddress(t *testing.T) {
func TestValidateFlexVolumeSource(t *testing.T) {
testcases := map[string]struct {
- source *api.FlexVolumeSource
+ source *core.FlexVolumeSource
expectedErrs map[string]string
}{
"valid": {
- source: &api.FlexVolumeSource{Driver: "foo"},
+ source: &core.FlexVolumeSource{Driver: "foo"},
expectedErrs: map[string]string{},
},
"valid with options": {
- source: &api.FlexVolumeSource{Driver: "foo", Options: map[string]string{"foo": "bar"}},
+ source: &core.FlexVolumeSource{Driver: "foo", Options: map[string]string{"foo": "bar"}},
expectedErrs: map[string]string{},
},
"no driver": {
- source: &api.FlexVolumeSource{Driver: ""},
+ source: &core.FlexVolumeSource{Driver: ""},
expectedErrs: map[string]string{"driver": "Required value"},
},
"reserved option keys": {
- source: &api.FlexVolumeSource{
+ source: &core.FlexVolumeSource{
Driver: "foo",
Options: map[string]string{
// valid options
@@ -11119,20 +11216,20 @@ func TestValidateFlexVolumeSource(t *testing.T) {
}
func TestValidateOrSetClientIPAffinityConfig(t *testing.T) {
- successCases := map[string]*api.SessionAffinityConfig{
+ successCases := map[string]*core.SessionAffinityConfig{
"non-empty config, valid timeout: 1": {
- ClientIP: &api.ClientIPConfig{
+ ClientIP: &core.ClientIPConfig{
TimeoutSeconds: newInt32(1),
},
},
- "non-empty config, valid timeout: api.MaxClientIPServiceAffinitySeconds-1": {
- ClientIP: &api.ClientIPConfig{
- TimeoutSeconds: newInt32(int(api.MaxClientIPServiceAffinitySeconds - 1)),
+ "non-empty config, valid timeout: core.MaxClientIPServiceAffinitySeconds-1": {
+ ClientIP: &core.ClientIPConfig{
+ TimeoutSeconds: newInt32(int(core.MaxClientIPServiceAffinitySeconds - 1)),
},
},
- "non-empty config, valid timeout: api.MaxClientIPServiceAffinitySeconds": {
- ClientIP: &api.ClientIPConfig{
- TimeoutSeconds: newInt32(int(api.MaxClientIPServiceAffinitySeconds)),
+ "non-empty config, valid timeout: core.MaxClientIPServiceAffinitySeconds": {
+ ClientIP: &core.ClientIPConfig{
+ TimeoutSeconds: newInt32(int(core.MaxClientIPServiceAffinitySeconds)),
},
},
}
@@ -11143,28 +11240,28 @@ func TestValidateOrSetClientIPAffinityConfig(t *testing.T) {
}
}
- errorCases := map[string]*api.SessionAffinityConfig{
+ errorCases := map[string]*core.SessionAffinityConfig{
"empty session affinity config": nil,
"empty client IP config": {
ClientIP: nil,
},
"empty timeoutSeconds": {
- ClientIP: &api.ClientIPConfig{
+ ClientIP: &core.ClientIPConfig{
TimeoutSeconds: nil,
},
},
- "non-empty config, invalid timeout: api.MaxClientIPServiceAffinitySeconds+1": {
- ClientIP: &api.ClientIPConfig{
- TimeoutSeconds: newInt32(int(api.MaxClientIPServiceAffinitySeconds + 1)),
+ "non-empty config, invalid timeout: core.MaxClientIPServiceAffinitySeconds+1": {
+ ClientIP: &core.ClientIPConfig{
+ TimeoutSeconds: newInt32(int(core.MaxClientIPServiceAffinitySeconds + 1)),
},
},
"non-empty config, invalid timeout: -1": {
- ClientIP: &api.ClientIPConfig{
+ ClientIP: &core.ClientIPConfig{
TimeoutSeconds: newInt32(-1),
},
},
"non-empty config, invalid timeout: 0": {
- ClientIP: &api.ClientIPConfig{
+ ClientIP: &core.ClientIPConfig{
TimeoutSeconds: newInt32(0),
},
},
diff --git a/pkg/api/zz_generated.deepcopy.go b/pkg/apis/core/zz_generated.deepcopy.go
similarity index 77%
rename from pkg/api/zz_generated.deepcopy.go
rename to pkg/apis/core/zz_generated.deepcopy.go
index 1b5c796241..b149b365fb 100644
--- a/pkg/api/zz_generated.deepcopy.go
+++ b/pkg/apis/core/zz_generated.deepcopy.go
@@ -18,750 +18,15 @@ limitations under the License.
// This file was autogenerated by deepcopy-gen. Do not edit it manually!
-package api
+package core
import (
resource "k8s.io/apimachinery/pkg/api/resource"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
types "k8s.io/apimachinery/pkg/types"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*AWSElasticBlockStoreVolumeSource).DeepCopyInto(out.(*AWSElasticBlockStoreVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&AWSElasticBlockStoreVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Affinity).DeepCopyInto(out.(*Affinity))
- return nil
- }, InType: reflect.TypeOf(&Affinity{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*AttachedVolume).DeepCopyInto(out.(*AttachedVolume))
- return nil
- }, InType: reflect.TypeOf(&AttachedVolume{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*AvoidPods).DeepCopyInto(out.(*AvoidPods))
- return nil
- }, InType: reflect.TypeOf(&AvoidPods{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*AzureDiskVolumeSource).DeepCopyInto(out.(*AzureDiskVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&AzureDiskVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*AzureFilePersistentVolumeSource).DeepCopyInto(out.(*AzureFilePersistentVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&AzureFilePersistentVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*AzureFileVolumeSource).DeepCopyInto(out.(*AzureFileVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&AzureFileVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Binding).DeepCopyInto(out.(*Binding))
- return nil
- }, InType: reflect.TypeOf(&Binding{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Capabilities).DeepCopyInto(out.(*Capabilities))
- return nil
- }, InType: reflect.TypeOf(&Capabilities{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CephFSPersistentVolumeSource).DeepCopyInto(out.(*CephFSPersistentVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&CephFSPersistentVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CephFSVolumeSource).DeepCopyInto(out.(*CephFSVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&CephFSVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CinderVolumeSource).DeepCopyInto(out.(*CinderVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&CinderVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ClientIPConfig).DeepCopyInto(out.(*ClientIPConfig))
- return nil
- }, InType: reflect.TypeOf(&ClientIPConfig{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ComponentCondition).DeepCopyInto(out.(*ComponentCondition))
- return nil
- }, InType: reflect.TypeOf(&ComponentCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ComponentStatus).DeepCopyInto(out.(*ComponentStatus))
- return nil
- }, InType: reflect.TypeOf(&ComponentStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ComponentStatusList).DeepCopyInto(out.(*ComponentStatusList))
- return nil
- }, InType: reflect.TypeOf(&ComponentStatusList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ConfigMap).DeepCopyInto(out.(*ConfigMap))
- return nil
- }, InType: reflect.TypeOf(&ConfigMap{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ConfigMapEnvSource).DeepCopyInto(out.(*ConfigMapEnvSource))
- return nil
- }, InType: reflect.TypeOf(&ConfigMapEnvSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ConfigMapKeySelector).DeepCopyInto(out.(*ConfigMapKeySelector))
- return nil
- }, InType: reflect.TypeOf(&ConfigMapKeySelector{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ConfigMapList).DeepCopyInto(out.(*ConfigMapList))
- return nil
- }, InType: reflect.TypeOf(&ConfigMapList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ConfigMapProjection).DeepCopyInto(out.(*ConfigMapProjection))
- return nil
- }, InType: reflect.TypeOf(&ConfigMapProjection{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ConfigMapVolumeSource).DeepCopyInto(out.(*ConfigMapVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&ConfigMapVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Container).DeepCopyInto(out.(*Container))
- return nil
- }, InType: reflect.TypeOf(&Container{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ContainerImage).DeepCopyInto(out.(*ContainerImage))
- return nil
- }, InType: reflect.TypeOf(&ContainerImage{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ContainerPort).DeepCopyInto(out.(*ContainerPort))
- return nil
- }, InType: reflect.TypeOf(&ContainerPort{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ContainerState).DeepCopyInto(out.(*ContainerState))
- return nil
- }, InType: reflect.TypeOf(&ContainerState{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ContainerStateRunning).DeepCopyInto(out.(*ContainerStateRunning))
- return nil
- }, InType: reflect.TypeOf(&ContainerStateRunning{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ContainerStateTerminated).DeepCopyInto(out.(*ContainerStateTerminated))
- return nil
- }, InType: reflect.TypeOf(&ContainerStateTerminated{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ContainerStateWaiting).DeepCopyInto(out.(*ContainerStateWaiting))
- return nil
- }, InType: reflect.TypeOf(&ContainerStateWaiting{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ContainerStatus).DeepCopyInto(out.(*ContainerStatus))
- return nil
- }, InType: reflect.TypeOf(&ContainerStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DaemonEndpoint).DeepCopyInto(out.(*DaemonEndpoint))
- return nil
- }, InType: reflect.TypeOf(&DaemonEndpoint{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DeleteOptions).DeepCopyInto(out.(*DeleteOptions))
- return nil
- }, InType: reflect.TypeOf(&DeleteOptions{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DownwardAPIProjection).DeepCopyInto(out.(*DownwardAPIProjection))
- return nil
- }, InType: reflect.TypeOf(&DownwardAPIProjection{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DownwardAPIVolumeFile).DeepCopyInto(out.(*DownwardAPIVolumeFile))
- return nil
- }, InType: reflect.TypeOf(&DownwardAPIVolumeFile{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DownwardAPIVolumeSource).DeepCopyInto(out.(*DownwardAPIVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&DownwardAPIVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*EmptyDirVolumeSource).DeepCopyInto(out.(*EmptyDirVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&EmptyDirVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*EndpointAddress).DeepCopyInto(out.(*EndpointAddress))
- return nil
- }, InType: reflect.TypeOf(&EndpointAddress{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*EndpointPort).DeepCopyInto(out.(*EndpointPort))
- return nil
- }, InType: reflect.TypeOf(&EndpointPort{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*EndpointSubset).DeepCopyInto(out.(*EndpointSubset))
- return nil
- }, InType: reflect.TypeOf(&EndpointSubset{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Endpoints).DeepCopyInto(out.(*Endpoints))
- return nil
- }, InType: reflect.TypeOf(&Endpoints{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*EndpointsList).DeepCopyInto(out.(*EndpointsList))
- return nil
- }, InType: reflect.TypeOf(&EndpointsList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*EnvFromSource).DeepCopyInto(out.(*EnvFromSource))
- return nil
- }, InType: reflect.TypeOf(&EnvFromSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*EnvVar).DeepCopyInto(out.(*EnvVar))
- return nil
- }, InType: reflect.TypeOf(&EnvVar{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*EnvVarSource).DeepCopyInto(out.(*EnvVarSource))
- return nil
- }, InType: reflect.TypeOf(&EnvVarSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Event).DeepCopyInto(out.(*Event))
- return nil
- }, InType: reflect.TypeOf(&Event{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*EventList).DeepCopyInto(out.(*EventList))
- return nil
- }, InType: reflect.TypeOf(&EventList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*EventSource).DeepCopyInto(out.(*EventSource))
- return nil
- }, InType: reflect.TypeOf(&EventSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExecAction).DeepCopyInto(out.(*ExecAction))
- return nil
- }, InType: reflect.TypeOf(&ExecAction{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*FCVolumeSource).DeepCopyInto(out.(*FCVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&FCVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*FlexVolumeSource).DeepCopyInto(out.(*FlexVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&FlexVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*FlockerVolumeSource).DeepCopyInto(out.(*FlockerVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&FlockerVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*GCEPersistentDiskVolumeSource).DeepCopyInto(out.(*GCEPersistentDiskVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&GCEPersistentDiskVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*GitRepoVolumeSource).DeepCopyInto(out.(*GitRepoVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&GitRepoVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*GlusterfsVolumeSource).DeepCopyInto(out.(*GlusterfsVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&GlusterfsVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*HTTPGetAction).DeepCopyInto(out.(*HTTPGetAction))
- return nil
- }, InType: reflect.TypeOf(&HTTPGetAction{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*HTTPHeader).DeepCopyInto(out.(*HTTPHeader))
- return nil
- }, InType: reflect.TypeOf(&HTTPHeader{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Handler).DeepCopyInto(out.(*Handler))
- return nil
- }, InType: reflect.TypeOf(&Handler{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*HostAlias).DeepCopyInto(out.(*HostAlias))
- return nil
- }, InType: reflect.TypeOf(&HostAlias{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*HostPathVolumeSource).DeepCopyInto(out.(*HostPathVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&HostPathVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ISCSIVolumeSource).DeepCopyInto(out.(*ISCSIVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&ISCSIVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*KeyToPath).DeepCopyInto(out.(*KeyToPath))
- return nil
- }, InType: reflect.TypeOf(&KeyToPath{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Lifecycle).DeepCopyInto(out.(*Lifecycle))
- return nil
- }, InType: reflect.TypeOf(&Lifecycle{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*LimitRange).DeepCopyInto(out.(*LimitRange))
- return nil
- }, InType: reflect.TypeOf(&LimitRange{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*LimitRangeItem).DeepCopyInto(out.(*LimitRangeItem))
- return nil
- }, InType: reflect.TypeOf(&LimitRangeItem{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*LimitRangeList).DeepCopyInto(out.(*LimitRangeList))
- return nil
- }, InType: reflect.TypeOf(&LimitRangeList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*LimitRangeSpec).DeepCopyInto(out.(*LimitRangeSpec))
- return nil
- }, InType: reflect.TypeOf(&LimitRangeSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*List).DeepCopyInto(out.(*List))
- return nil
- }, InType: reflect.TypeOf(&List{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ListOptions).DeepCopyInto(out.(*ListOptions))
- return nil
- }, InType: reflect.TypeOf(&ListOptions{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*LoadBalancerIngress).DeepCopyInto(out.(*LoadBalancerIngress))
- return nil
- }, InType: reflect.TypeOf(&LoadBalancerIngress{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*LoadBalancerStatus).DeepCopyInto(out.(*LoadBalancerStatus))
- return nil
- }, InType: reflect.TypeOf(&LoadBalancerStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*LocalObjectReference).DeepCopyInto(out.(*LocalObjectReference))
- return nil
- }, InType: reflect.TypeOf(&LocalObjectReference{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*LocalVolumeSource).DeepCopyInto(out.(*LocalVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&LocalVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NFSVolumeSource).DeepCopyInto(out.(*NFSVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&NFSVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Namespace).DeepCopyInto(out.(*Namespace))
- return nil
- }, InType: reflect.TypeOf(&Namespace{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NamespaceList).DeepCopyInto(out.(*NamespaceList))
- return nil
- }, InType: reflect.TypeOf(&NamespaceList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NamespaceSpec).DeepCopyInto(out.(*NamespaceSpec))
- return nil
- }, InType: reflect.TypeOf(&NamespaceSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NamespaceStatus).DeepCopyInto(out.(*NamespaceStatus))
- return nil
- }, InType: reflect.TypeOf(&NamespaceStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Node).DeepCopyInto(out.(*Node))
- return nil
- }, InType: reflect.TypeOf(&Node{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeAddress).DeepCopyInto(out.(*NodeAddress))
- return nil
- }, InType: reflect.TypeOf(&NodeAddress{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeAffinity).DeepCopyInto(out.(*NodeAffinity))
- return nil
- }, InType: reflect.TypeOf(&NodeAffinity{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeCondition).DeepCopyInto(out.(*NodeCondition))
- return nil
- }, InType: reflect.TypeOf(&NodeCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeConfigSource).DeepCopyInto(out.(*NodeConfigSource))
- return nil
- }, InType: reflect.TypeOf(&NodeConfigSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeDaemonEndpoints).DeepCopyInto(out.(*NodeDaemonEndpoints))
- return nil
- }, InType: reflect.TypeOf(&NodeDaemonEndpoints{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeList).DeepCopyInto(out.(*NodeList))
- return nil
- }, InType: reflect.TypeOf(&NodeList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeProxyOptions).DeepCopyInto(out.(*NodeProxyOptions))
- return nil
- }, InType: reflect.TypeOf(&NodeProxyOptions{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeResources).DeepCopyInto(out.(*NodeResources))
- return nil
- }, InType: reflect.TypeOf(&NodeResources{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeSelector).DeepCopyInto(out.(*NodeSelector))
- return nil
- }, InType: reflect.TypeOf(&NodeSelector{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeSelectorRequirement).DeepCopyInto(out.(*NodeSelectorRequirement))
- return nil
- }, InType: reflect.TypeOf(&NodeSelectorRequirement{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeSelectorTerm).DeepCopyInto(out.(*NodeSelectorTerm))
- return nil
- }, InType: reflect.TypeOf(&NodeSelectorTerm{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeSpec).DeepCopyInto(out.(*NodeSpec))
- return nil
- }, InType: reflect.TypeOf(&NodeSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeStatus).DeepCopyInto(out.(*NodeStatus))
- return nil
- }, InType: reflect.TypeOf(&NodeStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeSystemInfo).DeepCopyInto(out.(*NodeSystemInfo))
- return nil
- }, InType: reflect.TypeOf(&NodeSystemInfo{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ObjectFieldSelector).DeepCopyInto(out.(*ObjectFieldSelector))
- return nil
- }, InType: reflect.TypeOf(&ObjectFieldSelector{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ObjectMeta).DeepCopyInto(out.(*ObjectMeta))
- return nil
- }, InType: reflect.TypeOf(&ObjectMeta{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ObjectReference).DeepCopyInto(out.(*ObjectReference))
- return nil
- }, InType: reflect.TypeOf(&ObjectReference{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PersistentVolume).DeepCopyInto(out.(*PersistentVolume))
- return nil
- }, InType: reflect.TypeOf(&PersistentVolume{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PersistentVolumeClaim).DeepCopyInto(out.(*PersistentVolumeClaim))
- return nil
- }, InType: reflect.TypeOf(&PersistentVolumeClaim{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PersistentVolumeClaimCondition).DeepCopyInto(out.(*PersistentVolumeClaimCondition))
- return nil
- }, InType: reflect.TypeOf(&PersistentVolumeClaimCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PersistentVolumeClaimList).DeepCopyInto(out.(*PersistentVolumeClaimList))
- return nil
- }, InType: reflect.TypeOf(&PersistentVolumeClaimList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PersistentVolumeClaimSpec).DeepCopyInto(out.(*PersistentVolumeClaimSpec))
- return nil
- }, InType: reflect.TypeOf(&PersistentVolumeClaimSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PersistentVolumeClaimStatus).DeepCopyInto(out.(*PersistentVolumeClaimStatus))
- return nil
- }, InType: reflect.TypeOf(&PersistentVolumeClaimStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PersistentVolumeClaimVolumeSource).DeepCopyInto(out.(*PersistentVolumeClaimVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&PersistentVolumeClaimVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PersistentVolumeList).DeepCopyInto(out.(*PersistentVolumeList))
- return nil
- }, InType: reflect.TypeOf(&PersistentVolumeList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PersistentVolumeSource).DeepCopyInto(out.(*PersistentVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&PersistentVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PersistentVolumeSpec).DeepCopyInto(out.(*PersistentVolumeSpec))
- return nil
- }, InType: reflect.TypeOf(&PersistentVolumeSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PersistentVolumeStatus).DeepCopyInto(out.(*PersistentVolumeStatus))
- return nil
- }, InType: reflect.TypeOf(&PersistentVolumeStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PhotonPersistentDiskVolumeSource).DeepCopyInto(out.(*PhotonPersistentDiskVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&PhotonPersistentDiskVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Pod).DeepCopyInto(out.(*Pod))
- return nil
- }, InType: reflect.TypeOf(&Pod{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodAffinity).DeepCopyInto(out.(*PodAffinity))
- return nil
- }, InType: reflect.TypeOf(&PodAffinity{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodAffinityTerm).DeepCopyInto(out.(*PodAffinityTerm))
- return nil
- }, InType: reflect.TypeOf(&PodAffinityTerm{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodAntiAffinity).DeepCopyInto(out.(*PodAntiAffinity))
- return nil
- }, InType: reflect.TypeOf(&PodAntiAffinity{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodAttachOptions).DeepCopyInto(out.(*PodAttachOptions))
- return nil
- }, InType: reflect.TypeOf(&PodAttachOptions{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodCondition).DeepCopyInto(out.(*PodCondition))
- return nil
- }, InType: reflect.TypeOf(&PodCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodExecOptions).DeepCopyInto(out.(*PodExecOptions))
- return nil
- }, InType: reflect.TypeOf(&PodExecOptions{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodList).DeepCopyInto(out.(*PodList))
- return nil
- }, InType: reflect.TypeOf(&PodList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodLogOptions).DeepCopyInto(out.(*PodLogOptions))
- return nil
- }, InType: reflect.TypeOf(&PodLogOptions{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodPortForwardOptions).DeepCopyInto(out.(*PodPortForwardOptions))
- return nil
- }, InType: reflect.TypeOf(&PodPortForwardOptions{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodProxyOptions).DeepCopyInto(out.(*PodProxyOptions))
- return nil
- }, InType: reflect.TypeOf(&PodProxyOptions{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodSecurityContext).DeepCopyInto(out.(*PodSecurityContext))
- return nil
- }, InType: reflect.TypeOf(&PodSecurityContext{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodSignature).DeepCopyInto(out.(*PodSignature))
- return nil
- }, InType: reflect.TypeOf(&PodSignature{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodSpec).DeepCopyInto(out.(*PodSpec))
- return nil
- }, InType: reflect.TypeOf(&PodSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodStatus).DeepCopyInto(out.(*PodStatus))
- return nil
- }, InType: reflect.TypeOf(&PodStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodStatusResult).DeepCopyInto(out.(*PodStatusResult))
- return nil
- }, InType: reflect.TypeOf(&PodStatusResult{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodTemplate).DeepCopyInto(out.(*PodTemplate))
- return nil
- }, InType: reflect.TypeOf(&PodTemplate{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodTemplateList).DeepCopyInto(out.(*PodTemplateList))
- return nil
- }, InType: reflect.TypeOf(&PodTemplateList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodTemplateSpec).DeepCopyInto(out.(*PodTemplateSpec))
- return nil
- }, InType: reflect.TypeOf(&PodTemplateSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PortworxVolumeSource).DeepCopyInto(out.(*PortworxVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&PortworxVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Preconditions).DeepCopyInto(out.(*Preconditions))
- return nil
- }, InType: reflect.TypeOf(&Preconditions{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PreferAvoidPodsEntry).DeepCopyInto(out.(*PreferAvoidPodsEntry))
- return nil
- }, InType: reflect.TypeOf(&PreferAvoidPodsEntry{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PreferredSchedulingTerm).DeepCopyInto(out.(*PreferredSchedulingTerm))
- return nil
- }, InType: reflect.TypeOf(&PreferredSchedulingTerm{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Probe).DeepCopyInto(out.(*Probe))
- return nil
- }, InType: reflect.TypeOf(&Probe{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ProjectedVolumeSource).DeepCopyInto(out.(*ProjectedVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&ProjectedVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*QuobyteVolumeSource).DeepCopyInto(out.(*QuobyteVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&QuobyteVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RBDPersistentVolumeSource).DeepCopyInto(out.(*RBDPersistentVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&RBDPersistentVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RBDVolumeSource).DeepCopyInto(out.(*RBDVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&RBDVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RangeAllocation).DeepCopyInto(out.(*RangeAllocation))
- return nil
- }, InType: reflect.TypeOf(&RangeAllocation{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicationController).DeepCopyInto(out.(*ReplicationController))
- return nil
- }, InType: reflect.TypeOf(&ReplicationController{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicationControllerCondition).DeepCopyInto(out.(*ReplicationControllerCondition))
- return nil
- }, InType: reflect.TypeOf(&ReplicationControllerCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicationControllerList).DeepCopyInto(out.(*ReplicationControllerList))
- return nil
- }, InType: reflect.TypeOf(&ReplicationControllerList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicationControllerSpec).DeepCopyInto(out.(*ReplicationControllerSpec))
- return nil
- }, InType: reflect.TypeOf(&ReplicationControllerSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicationControllerStatus).DeepCopyInto(out.(*ReplicationControllerStatus))
- return nil
- }, InType: reflect.TypeOf(&ReplicationControllerStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ResourceFieldSelector).DeepCopyInto(out.(*ResourceFieldSelector))
- return nil
- }, InType: reflect.TypeOf(&ResourceFieldSelector{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ResourceQuota).DeepCopyInto(out.(*ResourceQuota))
- return nil
- }, InType: reflect.TypeOf(&ResourceQuota{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ResourceQuotaList).DeepCopyInto(out.(*ResourceQuotaList))
- return nil
- }, InType: reflect.TypeOf(&ResourceQuotaList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ResourceQuotaSpec).DeepCopyInto(out.(*ResourceQuotaSpec))
- return nil
- }, InType: reflect.TypeOf(&ResourceQuotaSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ResourceQuotaStatus).DeepCopyInto(out.(*ResourceQuotaStatus))
- return nil
- }, InType: reflect.TypeOf(&ResourceQuotaStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ResourceRequirements).DeepCopyInto(out.(*ResourceRequirements))
- return nil
- }, InType: reflect.TypeOf(&ResourceRequirements{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SELinuxOptions).DeepCopyInto(out.(*SELinuxOptions))
- return nil
- }, InType: reflect.TypeOf(&SELinuxOptions{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ScaleIOPersistentVolumeSource).DeepCopyInto(out.(*ScaleIOPersistentVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&ScaleIOPersistentVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ScaleIOVolumeSource).DeepCopyInto(out.(*ScaleIOVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&ScaleIOVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Secret).DeepCopyInto(out.(*Secret))
- return nil
- }, InType: reflect.TypeOf(&Secret{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SecretEnvSource).DeepCopyInto(out.(*SecretEnvSource))
- return nil
- }, InType: reflect.TypeOf(&SecretEnvSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SecretKeySelector).DeepCopyInto(out.(*SecretKeySelector))
- return nil
- }, InType: reflect.TypeOf(&SecretKeySelector{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SecretList).DeepCopyInto(out.(*SecretList))
- return nil
- }, InType: reflect.TypeOf(&SecretList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SecretProjection).DeepCopyInto(out.(*SecretProjection))
- return nil
- }, InType: reflect.TypeOf(&SecretProjection{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SecretReference).DeepCopyInto(out.(*SecretReference))
- return nil
- }, InType: reflect.TypeOf(&SecretReference{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SecretVolumeSource).DeepCopyInto(out.(*SecretVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&SecretVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SecurityContext).DeepCopyInto(out.(*SecurityContext))
- return nil
- }, InType: reflect.TypeOf(&SecurityContext{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SerializedReference).DeepCopyInto(out.(*SerializedReference))
- return nil
- }, InType: reflect.TypeOf(&SerializedReference{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Service).DeepCopyInto(out.(*Service))
- return nil
- }, InType: reflect.TypeOf(&Service{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ServiceAccount).DeepCopyInto(out.(*ServiceAccount))
- return nil
- }, InType: reflect.TypeOf(&ServiceAccount{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ServiceAccountList).DeepCopyInto(out.(*ServiceAccountList))
- return nil
- }, InType: reflect.TypeOf(&ServiceAccountList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ServiceList).DeepCopyInto(out.(*ServiceList))
- return nil
- }, InType: reflect.TypeOf(&ServiceList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ServicePort).DeepCopyInto(out.(*ServicePort))
- return nil
- }, InType: reflect.TypeOf(&ServicePort{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ServiceProxyOptions).DeepCopyInto(out.(*ServiceProxyOptions))
- return nil
- }, InType: reflect.TypeOf(&ServiceProxyOptions{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ServiceSpec).DeepCopyInto(out.(*ServiceSpec))
- return nil
- }, InType: reflect.TypeOf(&ServiceSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ServiceStatus).DeepCopyInto(out.(*ServiceStatus))
- return nil
- }, InType: reflect.TypeOf(&ServiceStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SessionAffinityConfig).DeepCopyInto(out.(*SessionAffinityConfig))
- return nil
- }, InType: reflect.TypeOf(&SessionAffinityConfig{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StorageOSPersistentVolumeSource).DeepCopyInto(out.(*StorageOSPersistentVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&StorageOSPersistentVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StorageOSVolumeSource).DeepCopyInto(out.(*StorageOSVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&StorageOSVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Sysctl).DeepCopyInto(out.(*Sysctl))
- return nil
- }, InType: reflect.TypeOf(&Sysctl{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TCPSocketAction).DeepCopyInto(out.(*TCPSocketAction))
- return nil
- }, InType: reflect.TypeOf(&TCPSocketAction{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Taint).DeepCopyInto(out.(*Taint))
- return nil
- }, InType: reflect.TypeOf(&Taint{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Toleration).DeepCopyInto(out.(*Toleration))
- return nil
- }, InType: reflect.TypeOf(&Toleration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Volume).DeepCopyInto(out.(*Volume))
- return nil
- }, InType: reflect.TypeOf(&Volume{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*VolumeMount).DeepCopyInto(out.(*VolumeMount))
- return nil
- }, InType: reflect.TypeOf(&VolumeMount{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*VolumeProjection).DeepCopyInto(out.(*VolumeProjection))
- return nil
- }, InType: reflect.TypeOf(&VolumeProjection{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*VolumeSource).DeepCopyInto(out.(*VolumeSource))
- return nil
- }, InType: reflect.TypeOf(&VolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*VsphereVirtualDiskVolumeSource).DeepCopyInto(out.(*VsphereVirtualDiskVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&VsphereVirtualDiskVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*WeightedPodAffinityTerm).DeepCopyInto(out.(*WeightedPodAffinityTerm))
- return nil
- }, InType: reflect.TypeOf(&WeightedPodAffinityTerm{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *AWSElasticBlockStoreVolumeSource) DeepCopyInto(out *AWSElasticBlockStoreVolumeSource) {
*out = *in
diff --git a/pkg/apis/extensions/BUILD b/pkg/apis/extensions/BUILD
index 5cdded17f1..c52d2a9ac9 100644
--- a/pkg/apis/extensions/BUILD
+++ b/pkg/apis/extensions/BUILD
@@ -24,11 +24,11 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/apis/extensions",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/autoscaling:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/networking:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
diff --git a/pkg/apis/extensions/doc.go b/pkg/apis/extensions/doc.go
index fbce8ee707..d97cffdbcb 100644
--- a/pkg/apis/extensions/doc.go
+++ b/pkg/apis/extensions/doc.go
@@ -14,6 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
package extensions // import "k8s.io/kubernetes/pkg/apis/extensions"
diff --git a/pkg/apis/extensions/register.go b/pkg/apis/extensions/register.go
index 717662f48e..48137fc696 100644
--- a/pkg/apis/extensions/register.go
+++ b/pkg/apis/extensions/register.go
@@ -19,6 +19,7 @@ package extensions
import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
+ "k8s.io/kubernetes/pkg/apis/autoscaling"
"k8s.io/kubernetes/pkg/apis/networking"
)
@@ -51,7 +52,6 @@ func addKnownTypes(scheme *runtime.Scheme) error {
&DeploymentList{},
&DeploymentRollback{},
&ReplicationControllerDummy{},
- &Scale{},
&DaemonSetList{},
&DaemonSet{},
&Ingress{},
@@ -60,6 +60,7 @@ func addKnownTypes(scheme *runtime.Scheme) error {
&ReplicaSetList{},
&PodSecurityPolicy{},
&PodSecurityPolicyList{},
+ &autoscaling.Scale{},
&networking.NetworkPolicy{},
&networking.NetworkPolicyList{},
)
diff --git a/pkg/apis/extensions/types.go b/pkg/apis/extensions/types.go
index cfca2683f2..01c6de7dcd 100644
--- a/pkg/apis/extensions/types.go
+++ b/pkg/apis/extensions/types.go
@@ -32,7 +32,7 @@ import (
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/intstr"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
const (
@@ -42,44 +42,6 @@ const (
SysctlsPodSecurityPolicyAnnotationKey string = "security.alpha.kubernetes.io/sysctls"
)
-// describes the attributes of a scale subresource
-type ScaleSpec struct {
- // desired number of instances for the scaled object.
- // +optional
- Replicas int32
-}
-
-// represents the current status of a scale subresource.
-type ScaleStatus struct {
- // actual number of observed instances of the scaled object.
- Replicas int32
-
- // label query over pods that should match the replicas count.
- // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
- // +optional
- Selector *metav1.LabelSelector
-}
-
-// +genclient
-// +genclient:noVerbs
-// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-
-// represents a scaling request for a resource.
-type Scale struct {
- metav1.TypeMeta
- // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.
- // +optional
- metav1.ObjectMeta
-
- // defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.
- // +optional
- Spec ScaleSpec
-
- // current status of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. Read-only.
- // +optional
- Status ScaleStatus
-}
-
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Dummy definition
@@ -111,8 +73,8 @@ type CustomMetricCurrentStatusList struct {
}
// +genclient
-// +genclient:method=GetScale,verb=get,subresource=scale,result=Scale
-// +genclient:method=UpdateScale,verb=update,subresource=scale,input=Scale,result=Scale
+// +genclient:method=GetScale,verb=get,subresource=scale,result=k8s.io/kubernetes/pkg/apis/autoscaling.Scale
+// +genclient:method=UpdateScale,verb=update,subresource=scale,input=k8s.io/kubernetes/pkg/apis/autoscaling.Scale,result=k8s.io/kubernetes/pkg/apis/autoscaling.Scale
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type Deployment struct {
@@ -709,8 +671,8 @@ type IngressBackend struct {
}
// +genclient
-// +genclient:method=GetScale,verb=get,subresource=scale,result=Scale
-// +genclient:method=UpdateScale,verb=update,subresource=scale,input=Scale,result=Scale
+// +genclient:method=GetScale,verb=get,subresource=scale,result=k8s.io/kubernetes/pkg/apis/autoscaling.Scale
+// +genclient:method=UpdateScale,verb=update,subresource=scale,input=k8s.io/kubernetes/pkg/apis/autoscaling.Scale,result=k8s.io/kubernetes/pkg/apis/autoscaling.Scale
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ReplicaSet ensures that a specified number of pod replicas are running at any given time.
@@ -842,7 +804,8 @@ type PodSecurityPolicySpec struct {
Privileged bool
// DefaultAddCapabilities is the default set of capabilities that will be added to the container
// unless the pod spec specifically drops the capability. You may not list a capability in both
- // DefaultAddCapabilities and RequiredDropCapabilities.
+ // DefaultAddCapabilities and RequiredDropCapabilities. Capabilities added here are implicitly
+ // allowed, and need not be included in the AllowedCapabilities list.
// +optional
DefaultAddCapabilities []api.Capability
// RequiredDropCapabilities are the capabilities that will be dropped from the container. These
@@ -916,9 +879,9 @@ type AllowedHostPath struct {
// for pods to use. It requires both the start and end to be defined.
type HostPortRange struct {
// Min is the start of the range, inclusive.
- Min int
+ Min int32
// Max is the end of the range, inclusive.
- Max int
+ Max int32
}
// AllowAllCapabilities can be used as a value for the PodSecurityPolicy.AllowAllCapabilities
diff --git a/pkg/apis/extensions/v1beta1/BUILD b/pkg/apis/extensions/v1beta1/BUILD
index 802e03cf31..51d6bf1c77 100644
--- a/pkg/apis/extensions/v1beta1/BUILD
+++ b/pkg/apis/extensions/v1beta1/BUILD
@@ -18,14 +18,16 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/apis/extensions/v1beta1",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/v1:go_default_library",
+ "//pkg/apis/autoscaling:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/v1:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/apis/networking:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/api/extensions/v1beta1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
@@ -38,9 +40,9 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/apis/extensions/v1beta1_test",
deps = [
":go_default_library",
- "//pkg/api:go_default_library",
- "//pkg/api/install:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//pkg/apis/extensions/install:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/api/extensions/v1beta1:go_default_library",
diff --git a/pkg/apis/extensions/v1beta1/conversion.go b/pkg/apis/extensions/v1beta1/conversion.go
index 70853877ec..d236a415e1 100644
--- a/pkg/apis/extensions/v1beta1/conversion.go
+++ b/pkg/apis/extensions/v1beta1/conversion.go
@@ -24,10 +24,12 @@ import (
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/conversion"
+ "k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/intstr"
- "k8s.io/kubernetes/pkg/api"
- k8s_api_v1 "k8s.io/kubernetes/pkg/api/v1"
+ "k8s.io/kubernetes/pkg/apis/autoscaling"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ k8s_api_v1 "k8s.io/kubernetes/pkg/apis/core/v1"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/apis/networking"
)
@@ -35,8 +37,8 @@ import (
func addConversionFuncs(scheme *runtime.Scheme) error {
// Add non-generated conversion functions
err := scheme.AddConversionFuncs(
- Convert_extensions_ScaleStatus_To_v1beta1_ScaleStatus,
- Convert_v1beta1_ScaleStatus_To_extensions_ScaleStatus,
+ Convert_autoscaling_ScaleStatus_To_v1beta1_ScaleStatus,
+ Convert_v1beta1_ScaleStatus_To_autoscaling_ScaleStatus,
Convert_extensions_DeploymentSpec_To_v1beta1_DeploymentSpec,
Convert_v1beta1_DeploymentSpec_To_extensions_DeploymentSpec,
Convert_extensions_DeploymentStrategy_To_v1beta1_DeploymentStrategy,
@@ -72,48 +74,35 @@ func addConversionFuncs(scheme *runtime.Scheme) error {
return nil
}
-func Convert_extensions_ScaleStatus_To_v1beta1_ScaleStatus(in *extensions.ScaleStatus, out *extensionsv1beta1.ScaleStatus, s conversion.Scope) error {
+func Convert_autoscaling_ScaleStatus_To_v1beta1_ScaleStatus(in *autoscaling.ScaleStatus, out *extensionsv1beta1.ScaleStatus, s conversion.Scope) error {
out.Replicas = int32(in.Replicas)
+ out.TargetSelector = in.Selector
out.Selector = nil
- out.TargetSelector = ""
- if in.Selector != nil {
- if in.Selector.MatchExpressions == nil || len(in.Selector.MatchExpressions) == 0 {
- out.Selector = in.Selector.MatchLabels
- }
-
- selector, err := metav1.LabelSelectorAsSelector(in.Selector)
- if err != nil {
- return fmt.Errorf("invalid label selector: %v", err)
- }
- out.TargetSelector = selector.String()
+ selector, err := metav1.ParseToLabelSelector(in.Selector)
+ if err != nil {
+ return fmt.Errorf("failed to parse selector: %v", err)
}
+ if len(selector.MatchExpressions) == 0 {
+ out.Selector = selector.MatchLabels
+ }
+
return nil
}
-func Convert_v1beta1_ScaleStatus_To_extensions_ScaleStatus(in *extensionsv1beta1.ScaleStatus, out *extensions.ScaleStatus, s conversion.Scope) error {
+func Convert_v1beta1_ScaleStatus_To_autoscaling_ScaleStatus(in *extensionsv1beta1.ScaleStatus, out *autoscaling.ScaleStatus, s conversion.Scope) error {
out.Replicas = in.Replicas
- // Normally when 2 fields map to the same internal value we favor the old field, since
- // old clients can't be expected to know about new fields but clients that know about the
- // new field can be expected to know about the old field (though that's not quite true, due
- // to kubectl apply). However, these fields are readonly, so any non-nil value should work.
if in.TargetSelector != "" {
- labelSelector, err := metav1.ParseToLabelSelector(in.TargetSelector)
- if err != nil {
- out.Selector = nil
- return fmt.Errorf("failed to parse target selector: %v", err)
- }
- out.Selector = labelSelector
+ out.Selector = in.TargetSelector
} else if in.Selector != nil {
- out.Selector = new(metav1.LabelSelector)
- selector := make(map[string]string)
+ set := labels.Set{}
for key, val := range in.Selector {
- selector[key] = val
+ set[key] = val
}
- out.Selector.MatchLabels = selector
+ out.Selector = labels.SelectorFromSet(set).String()
} else {
- out.Selector = nil
+ out.Selector = ""
}
return nil
}
@@ -121,7 +110,7 @@ func Convert_v1beta1_ScaleStatus_To_extensions_ScaleStatus(in *extensionsv1beta1
func Convert_extensions_DeploymentSpec_To_v1beta1_DeploymentSpec(in *extensions.DeploymentSpec, out *extensionsv1beta1.DeploymentSpec, s conversion.Scope) error {
out.Replicas = &in.Replicas
out.Selector = in.Selector
- if err := k8s_api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := k8s_api_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if err := Convert_extensions_DeploymentStrategy_To_v1beta1_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil {
@@ -151,7 +140,7 @@ func Convert_v1beta1_DeploymentSpec_To_extensions_DeploymentSpec(in *extensionsv
out.Replicas = *in.Replicas
}
out.Selector = in.Selector
- if err := k8s_api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := k8s_api_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if err := Convert_v1beta1_DeploymentStrategy_To_extensions_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil {
@@ -247,7 +236,7 @@ func Convert_extensions_ReplicaSetSpec_To_v1beta1_ReplicaSetSpec(in *extensions.
*out.Replicas = int32(in.Replicas)
out.MinReadySeconds = in.MinReadySeconds
out.Selector = in.Selector
- if err := k8s_api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := k8s_api_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
return nil
@@ -259,7 +248,7 @@ func Convert_v1beta1_ReplicaSetSpec_To_extensions_ReplicaSetSpec(in *extensionsv
}
out.MinReadySeconds = in.MinReadySeconds
out.Selector = in.Selector
- if err := k8s_api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := k8s_api_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
return nil
diff --git a/pkg/apis/extensions/v1beta1/defaults_test.go b/pkg/apis/extensions/v1beta1/defaults_test.go
index 0e3532eda2..a35b76f19b 100644
--- a/pkg/apis/extensions/v1beta1/defaults_test.go
+++ b/pkg/apis/extensions/v1beta1/defaults_test.go
@@ -28,9 +28,9 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/intstr"
- "k8s.io/kubernetes/pkg/api"
- _ "k8s.io/kubernetes/pkg/api/install"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
_ "k8s.io/kubernetes/pkg/apis/extensions/install"
. "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
)
diff --git a/pkg/apis/extensions/v1beta1/doc.go b/pkg/apis/extensions/v1beta1/doc.go
index fb27eae221..0d778368f1 100644
--- a/pkg/apis/extensions/v1beta1/doc.go
+++ b/pkg/apis/extensions/v1beta1/doc.go
@@ -15,6 +15,7 @@ limitations under the License.
*/
// +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/extensions
+// +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/autoscaling
// +k8s:conversion-gen-external-types=../../../../vendor/k8s.io/api/extensions/v1beta1
// +k8s:defaulter-gen=TypeMeta
// +k8s:defaulter-gen-input=../../../../vendor/k8s.io/api/extensions/v1beta1
diff --git a/pkg/apis/extensions/v1beta1/zz_generated.conversion.go b/pkg/apis/extensions/v1beta1/zz_generated.conversion.go
index 6a5af58aad..89fe74883c 100644
--- a/pkg/apis/extensions/v1beta1/zz_generated.conversion.go
+++ b/pkg/apis/extensions/v1beta1/zz_generated.conversion.go
@@ -26,8 +26,9 @@ import (
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- api "k8s.io/kubernetes/pkg/api"
- api_v1 "k8s.io/kubernetes/pkg/api/v1"
+ autoscaling "k8s.io/kubernetes/pkg/apis/autoscaling"
+ core "k8s.io/kubernetes/pkg/apis/core"
+ core_v1 "k8s.io/kubernetes/pkg/apis/core/v1"
extensions "k8s.io/kubernetes/pkg/apis/extensions"
unsafe "unsafe"
)
@@ -128,12 +129,12 @@ func RegisterConversions(scheme *runtime.Scheme) error {
Convert_extensions_RunAsUserStrategyOptions_To_v1beta1_RunAsUserStrategyOptions,
Convert_v1beta1_SELinuxStrategyOptions_To_extensions_SELinuxStrategyOptions,
Convert_extensions_SELinuxStrategyOptions_To_v1beta1_SELinuxStrategyOptions,
- Convert_v1beta1_Scale_To_extensions_Scale,
- Convert_extensions_Scale_To_v1beta1_Scale,
- Convert_v1beta1_ScaleSpec_To_extensions_ScaleSpec,
- Convert_extensions_ScaleSpec_To_v1beta1_ScaleSpec,
- Convert_v1beta1_ScaleStatus_To_extensions_ScaleStatus,
- Convert_extensions_ScaleStatus_To_v1beta1_ScaleStatus,
+ Convert_v1beta1_Scale_To_autoscaling_Scale,
+ Convert_autoscaling_Scale_To_v1beta1_Scale,
+ Convert_v1beta1_ScaleSpec_To_autoscaling_ScaleSpec,
+ Convert_autoscaling_ScaleSpec_To_v1beta1_ScaleSpec,
+ Convert_v1beta1_ScaleStatus_To_autoscaling_ScaleStatus,
+ Convert_autoscaling_ScaleStatus_To_v1beta1_ScaleStatus,
Convert_v1beta1_SupplementalGroupsStrategyOptions_To_extensions_SupplementalGroupsStrategyOptions,
Convert_extensions_SupplementalGroupsStrategyOptions_To_v1beta1_SupplementalGroupsStrategyOptions,
)
@@ -277,7 +278,7 @@ func Convert_extensions_DaemonSet_To_v1beta1_DaemonSet(in *extensions.DaemonSet,
func autoConvert_v1beta1_DaemonSetCondition_To_extensions_DaemonSetCondition(in *v1beta1.DaemonSetCondition, out *extensions.DaemonSetCondition, s conversion.Scope) error {
out.Type = extensions.DaemonSetConditionType(in.Type)
- out.Status = api.ConditionStatus(in.Status)
+ out.Status = core.ConditionStatus(in.Status)
out.LastTransitionTime = in.LastTransitionTime
out.Reason = in.Reason
out.Message = in.Message
@@ -347,7 +348,7 @@ func Convert_extensions_DaemonSetList_To_v1beta1_DaemonSetList(in *extensions.Da
func autoConvert_v1beta1_DaemonSetSpec_To_extensions_DaemonSetSpec(in *v1beta1.DaemonSetSpec, out *extensions.DaemonSetSpec, s conversion.Scope) error {
out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
- if err := api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := core_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if err := Convert_v1beta1_DaemonSetUpdateStrategy_To_extensions_DaemonSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, s); err != nil {
@@ -366,7 +367,7 @@ func Convert_v1beta1_DaemonSetSpec_To_extensions_DaemonSetSpec(in *v1beta1.Daemo
func autoConvert_extensions_DaemonSetSpec_To_v1beta1_DaemonSetSpec(in *extensions.DaemonSetSpec, out *v1beta1.DaemonSetSpec, s conversion.Scope) error {
out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
- if err := api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := core_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if err := Convert_extensions_DaemonSetUpdateStrategy_To_v1beta1_DaemonSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, s); err != nil {
@@ -493,7 +494,7 @@ func Convert_extensions_Deployment_To_v1beta1_Deployment(in *extensions.Deployme
func autoConvert_v1beta1_DeploymentCondition_To_extensions_DeploymentCondition(in *v1beta1.DeploymentCondition, out *extensions.DeploymentCondition, s conversion.Scope) error {
out.Type = extensions.DeploymentConditionType(in.Type)
- out.Status = api.ConditionStatus(in.Status)
+ out.Status = core.ConditionStatus(in.Status)
out.LastUpdateTime = in.LastUpdateTime
out.LastTransitionTime = in.LastTransitionTime
out.Reason = in.Reason
@@ -596,7 +597,7 @@ func autoConvert_v1beta1_DeploymentSpec_To_extensions_DeploymentSpec(in *v1beta1
return err
}
out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
- if err := api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := core_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if err := Convert_v1beta1_DeploymentStrategy_To_extensions_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil {
@@ -615,7 +616,7 @@ func autoConvert_extensions_DeploymentSpec_To_v1beta1_DeploymentSpec(in *extensi
return err
}
out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
- if err := api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := core_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
if err := Convert_extensions_DeploymentStrategy_To_v1beta1_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil {
@@ -760,8 +761,8 @@ func Convert_extensions_HTTPIngressRuleValue_To_v1beta1_HTTPIngressRuleValue(in
}
func autoConvert_v1beta1_HostPortRange_To_extensions_HostPortRange(in *v1beta1.HostPortRange, out *extensions.HostPortRange, s conversion.Scope) error {
- out.Min = int(in.Min)
- out.Max = int(in.Max)
+ out.Min = in.Min
+ out.Max = in.Max
return nil
}
@@ -771,8 +772,8 @@ func Convert_v1beta1_HostPortRange_To_extensions_HostPortRange(in *v1beta1.HostP
}
func autoConvert_extensions_HostPortRange_To_v1beta1_HostPortRange(in *extensions.HostPortRange, out *v1beta1.HostPortRange, s conversion.Scope) error {
- out.Min = int32(in.Min)
- out.Max = int32(in.Max)
+ out.Min = in.Min
+ out.Max = in.Max
return nil
}
@@ -1045,22 +1046,12 @@ func Convert_extensions_PodSecurityPolicyList_To_v1beta1_PodSecurityPolicyList(i
func autoConvert_v1beta1_PodSecurityPolicySpec_To_extensions_PodSecurityPolicySpec(in *v1beta1.PodSecurityPolicySpec, out *extensions.PodSecurityPolicySpec, s conversion.Scope) error {
out.Privileged = in.Privileged
- out.DefaultAddCapabilities = *(*[]api.Capability)(unsafe.Pointer(&in.DefaultAddCapabilities))
- out.RequiredDropCapabilities = *(*[]api.Capability)(unsafe.Pointer(&in.RequiredDropCapabilities))
- out.AllowedCapabilities = *(*[]api.Capability)(unsafe.Pointer(&in.AllowedCapabilities))
+ out.DefaultAddCapabilities = *(*[]core.Capability)(unsafe.Pointer(&in.DefaultAddCapabilities))
+ out.RequiredDropCapabilities = *(*[]core.Capability)(unsafe.Pointer(&in.RequiredDropCapabilities))
+ out.AllowedCapabilities = *(*[]core.Capability)(unsafe.Pointer(&in.AllowedCapabilities))
out.Volumes = *(*[]extensions.FSType)(unsafe.Pointer(&in.Volumes))
out.HostNetwork = in.HostNetwork
- if in.HostPorts != nil {
- in, out := &in.HostPorts, &out.HostPorts
- *out = make([]extensions.HostPortRange, len(*in))
- for i := range *in {
- if err := Convert_v1beta1_HostPortRange_To_extensions_HostPortRange(&(*in)[i], &(*out)[i], s); err != nil {
- return err
- }
- }
- } else {
- out.HostPorts = nil
- }
+ out.HostPorts = *(*[]extensions.HostPortRange)(unsafe.Pointer(&in.HostPorts))
out.HostPID = in.HostPID
out.HostIPC = in.HostIPC
if err := Convert_v1beta1_SELinuxStrategyOptions_To_extensions_SELinuxStrategyOptions(&in.SELinux, &out.SELinux, s); err != nil {
@@ -1096,17 +1087,7 @@ func autoConvert_extensions_PodSecurityPolicySpec_To_v1beta1_PodSecurityPolicySp
out.AllowedCapabilities = *(*[]v1.Capability)(unsafe.Pointer(&in.AllowedCapabilities))
out.Volumes = *(*[]v1beta1.FSType)(unsafe.Pointer(&in.Volumes))
out.HostNetwork = in.HostNetwork
- if in.HostPorts != nil {
- in, out := &in.HostPorts, &out.HostPorts
- *out = make([]v1beta1.HostPortRange, len(*in))
- for i := range *in {
- if err := Convert_extensions_HostPortRange_To_v1beta1_HostPortRange(&(*in)[i], &(*out)[i], s); err != nil {
- return err
- }
- }
- } else {
- out.HostPorts = nil
- }
+ out.HostPorts = *(*[]v1beta1.HostPortRange)(unsafe.Pointer(&in.HostPorts))
out.HostPID = in.HostPID
out.HostIPC = in.HostIPC
if err := Convert_extensions_SELinuxStrategyOptions_To_v1beta1_SELinuxStrategyOptions(&in.SELinux, &out.SELinux, s); err != nil {
@@ -1164,7 +1145,7 @@ func Convert_extensions_ReplicaSet_To_v1beta1_ReplicaSet(in *extensions.ReplicaS
func autoConvert_v1beta1_ReplicaSetCondition_To_extensions_ReplicaSetCondition(in *v1beta1.ReplicaSetCondition, out *extensions.ReplicaSetCondition, s conversion.Scope) error {
out.Type = extensions.ReplicaSetConditionType(in.Type)
- out.Status = api.ConditionStatus(in.Status)
+ out.Status = core.ConditionStatus(in.Status)
out.LastTransitionTime = in.LastTransitionTime
out.Reason = in.Reason
out.Message = in.Message
@@ -1238,7 +1219,7 @@ func autoConvert_v1beta1_ReplicaSetSpec_To_extensions_ReplicaSetSpec(in *v1beta1
}
out.MinReadySeconds = in.MinReadySeconds
out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
- if err := api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := core_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
return nil
@@ -1250,7 +1231,7 @@ func autoConvert_extensions_ReplicaSetSpec_To_v1beta1_ReplicaSetSpec(in *extensi
}
out.MinReadySeconds = in.MinReadySeconds
out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector))
- if err := api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
+ if err := core_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
return err
}
return nil
@@ -1370,7 +1351,7 @@ func Convert_extensions_RunAsUserStrategyOptions_To_v1beta1_RunAsUserStrategyOpt
func autoConvert_v1beta1_SELinuxStrategyOptions_To_extensions_SELinuxStrategyOptions(in *v1beta1.SELinuxStrategyOptions, out *extensions.SELinuxStrategyOptions, s conversion.Scope) error {
out.Rule = extensions.SELinuxStrategy(in.Rule)
- out.SELinuxOptions = (*api.SELinuxOptions)(unsafe.Pointer(in.SELinuxOptions))
+ out.SELinuxOptions = (*core.SELinuxOptions)(unsafe.Pointer(in.SELinuxOptions))
return nil
}
@@ -1390,68 +1371,68 @@ func Convert_extensions_SELinuxStrategyOptions_To_v1beta1_SELinuxStrategyOptions
return autoConvert_extensions_SELinuxStrategyOptions_To_v1beta1_SELinuxStrategyOptions(in, out, s)
}
-func autoConvert_v1beta1_Scale_To_extensions_Scale(in *v1beta1.Scale, out *extensions.Scale, s conversion.Scope) error {
+func autoConvert_v1beta1_Scale_To_autoscaling_Scale(in *v1beta1.Scale, out *autoscaling.Scale, s conversion.Scope) error {
out.ObjectMeta = in.ObjectMeta
- if err := Convert_v1beta1_ScaleSpec_To_extensions_ScaleSpec(&in.Spec, &out.Spec, s); err != nil {
+ if err := Convert_v1beta1_ScaleSpec_To_autoscaling_ScaleSpec(&in.Spec, &out.Spec, s); err != nil {
return err
}
- if err := Convert_v1beta1_ScaleStatus_To_extensions_ScaleStatus(&in.Status, &out.Status, s); err != nil {
+ if err := Convert_v1beta1_ScaleStatus_To_autoscaling_ScaleStatus(&in.Status, &out.Status, s); err != nil {
return err
}
return nil
}
-// Convert_v1beta1_Scale_To_extensions_Scale is an autogenerated conversion function.
-func Convert_v1beta1_Scale_To_extensions_Scale(in *v1beta1.Scale, out *extensions.Scale, s conversion.Scope) error {
- return autoConvert_v1beta1_Scale_To_extensions_Scale(in, out, s)
+// Convert_v1beta1_Scale_To_autoscaling_Scale is an autogenerated conversion function.
+func Convert_v1beta1_Scale_To_autoscaling_Scale(in *v1beta1.Scale, out *autoscaling.Scale, s conversion.Scope) error {
+ return autoConvert_v1beta1_Scale_To_autoscaling_Scale(in, out, s)
}
-func autoConvert_extensions_Scale_To_v1beta1_Scale(in *extensions.Scale, out *v1beta1.Scale, s conversion.Scope) error {
+func autoConvert_autoscaling_Scale_To_v1beta1_Scale(in *autoscaling.Scale, out *v1beta1.Scale, s conversion.Scope) error {
out.ObjectMeta = in.ObjectMeta
- if err := Convert_extensions_ScaleSpec_To_v1beta1_ScaleSpec(&in.Spec, &out.Spec, s); err != nil {
+ if err := Convert_autoscaling_ScaleSpec_To_v1beta1_ScaleSpec(&in.Spec, &out.Spec, s); err != nil {
return err
}
- if err := Convert_extensions_ScaleStatus_To_v1beta1_ScaleStatus(&in.Status, &out.Status, s); err != nil {
+ if err := Convert_autoscaling_ScaleStatus_To_v1beta1_ScaleStatus(&in.Status, &out.Status, s); err != nil {
return err
}
return nil
}
-// Convert_extensions_Scale_To_v1beta1_Scale is an autogenerated conversion function.
-func Convert_extensions_Scale_To_v1beta1_Scale(in *extensions.Scale, out *v1beta1.Scale, s conversion.Scope) error {
- return autoConvert_extensions_Scale_To_v1beta1_Scale(in, out, s)
+// Convert_autoscaling_Scale_To_v1beta1_Scale is an autogenerated conversion function.
+func Convert_autoscaling_Scale_To_v1beta1_Scale(in *autoscaling.Scale, out *v1beta1.Scale, s conversion.Scope) error {
+ return autoConvert_autoscaling_Scale_To_v1beta1_Scale(in, out, s)
}
-func autoConvert_v1beta1_ScaleSpec_To_extensions_ScaleSpec(in *v1beta1.ScaleSpec, out *extensions.ScaleSpec, s conversion.Scope) error {
+func autoConvert_v1beta1_ScaleSpec_To_autoscaling_ScaleSpec(in *v1beta1.ScaleSpec, out *autoscaling.ScaleSpec, s conversion.Scope) error {
out.Replicas = in.Replicas
return nil
}
-// Convert_v1beta1_ScaleSpec_To_extensions_ScaleSpec is an autogenerated conversion function.
-func Convert_v1beta1_ScaleSpec_To_extensions_ScaleSpec(in *v1beta1.ScaleSpec, out *extensions.ScaleSpec, s conversion.Scope) error {
- return autoConvert_v1beta1_ScaleSpec_To_extensions_ScaleSpec(in, out, s)
+// Convert_v1beta1_ScaleSpec_To_autoscaling_ScaleSpec is an autogenerated conversion function.
+func Convert_v1beta1_ScaleSpec_To_autoscaling_ScaleSpec(in *v1beta1.ScaleSpec, out *autoscaling.ScaleSpec, s conversion.Scope) error {
+ return autoConvert_v1beta1_ScaleSpec_To_autoscaling_ScaleSpec(in, out, s)
}
-func autoConvert_extensions_ScaleSpec_To_v1beta1_ScaleSpec(in *extensions.ScaleSpec, out *v1beta1.ScaleSpec, s conversion.Scope) error {
+func autoConvert_autoscaling_ScaleSpec_To_v1beta1_ScaleSpec(in *autoscaling.ScaleSpec, out *v1beta1.ScaleSpec, s conversion.Scope) error {
out.Replicas = in.Replicas
return nil
}
-// Convert_extensions_ScaleSpec_To_v1beta1_ScaleSpec is an autogenerated conversion function.
-func Convert_extensions_ScaleSpec_To_v1beta1_ScaleSpec(in *extensions.ScaleSpec, out *v1beta1.ScaleSpec, s conversion.Scope) error {
- return autoConvert_extensions_ScaleSpec_To_v1beta1_ScaleSpec(in, out, s)
+// Convert_autoscaling_ScaleSpec_To_v1beta1_ScaleSpec is an autogenerated conversion function.
+func Convert_autoscaling_ScaleSpec_To_v1beta1_ScaleSpec(in *autoscaling.ScaleSpec, out *v1beta1.ScaleSpec, s conversion.Scope) error {
+ return autoConvert_autoscaling_ScaleSpec_To_v1beta1_ScaleSpec(in, out, s)
}
-func autoConvert_v1beta1_ScaleStatus_To_extensions_ScaleStatus(in *v1beta1.ScaleStatus, out *extensions.ScaleStatus, s conversion.Scope) error {
+func autoConvert_v1beta1_ScaleStatus_To_autoscaling_ScaleStatus(in *v1beta1.ScaleStatus, out *autoscaling.ScaleStatus, s conversion.Scope) error {
out.Replicas = in.Replicas
- // WARNING: in.Selector requires manual conversion: inconvertible types (map[string]string vs *k8s.io/apimachinery/pkg/apis/meta/v1.LabelSelector)
+ // WARNING: in.Selector requires manual conversion: inconvertible types (map[string]string vs string)
// WARNING: in.TargetSelector requires manual conversion: does not exist in peer-type
return nil
}
-func autoConvert_extensions_ScaleStatus_To_v1beta1_ScaleStatus(in *extensions.ScaleStatus, out *v1beta1.ScaleStatus, s conversion.Scope) error {
+func autoConvert_autoscaling_ScaleStatus_To_v1beta1_ScaleStatus(in *autoscaling.ScaleStatus, out *v1beta1.ScaleStatus, s conversion.Scope) error {
out.Replicas = in.Replicas
- // WARNING: in.Selector requires manual conversion: inconvertible types (*k8s.io/apimachinery/pkg/apis/meta/v1.LabelSelector vs map[string]string)
+ // WARNING: in.Selector requires manual conversion: inconvertible types (string vs map[string]string)
return nil
}
diff --git a/pkg/apis/extensions/v1beta1/zz_generated.defaults.go b/pkg/apis/extensions/v1beta1/zz_generated.defaults.go
index 11bd8e6401..f22282f85f 100644
--- a/pkg/apis/extensions/v1beta1/zz_generated.defaults.go
+++ b/pkg/apis/extensions/v1beta1/zz_generated.defaults.go
@@ -23,7 +23,7 @@ package v1beta1
import (
v1beta1 "k8s.io/api/extensions/v1beta1"
runtime "k8s.io/apimachinery/pkg/runtime"
- v1 "k8s.io/kubernetes/pkg/api/v1"
+ v1 "k8s.io/kubernetes/pkg/apis/core/v1"
)
// RegisterDefaults adds defaulters functions to the given scheme.
diff --git a/pkg/apis/extensions/validation/BUILD b/pkg/apis/extensions/validation/BUILD
index 797acbd579..d7ea42609a 100644
--- a/pkg/apis/extensions/validation/BUILD
+++ b/pkg/apis/extensions/validation/BUILD
@@ -11,8 +11,8 @@ go_library(
srcs = ["validation.go"],
importpath = "k8s.io/kubernetes/pkg/apis/extensions/validation",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/security/apparmor:go_default_library",
"//pkg/security/podsecuritypolicy/seccomp:go_default_library",
@@ -34,7 +34,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/apis/extensions/validation",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/security/apparmor:go_default_library",
"//pkg/security/podsecuritypolicy/seccomp:go_default_library",
diff --git a/pkg/apis/extensions/validation/validation.go b/pkg/apis/extensions/validation/validation.go
index 1206feedb7..1da47041a2 100644
--- a/pkg/apis/extensions/validation/validation.go
+++ b/pkg/apis/extensions/validation/validation.go
@@ -33,8 +33,8 @@ import (
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/validation"
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
- apivalidation "k8s.io/kubernetes/pkg/api/validation"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ apivalidation "k8s.io/kubernetes/pkg/apis/core/validation"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/security/apparmor"
"k8s.io/kubernetes/pkg/security/podsecuritypolicy/seccomp"
@@ -353,7 +353,7 @@ func ValidateDeploymentStatusUpdate(update, old *extensions.Deployment) field.Er
return allErrs
}
-// TODO: Move in "k8s.io/kubernetes/pkg/api/validation"
+// TODO: Move in "k8s.io/kubernetes/pkg/apis/core/validation"
func isDecremented(update, old *int32) bool {
if update == nil && old != nil {
return true
@@ -522,17 +522,6 @@ func validateIngressBackend(backend *extensions.IngressBackend, fldPath *field.P
return allErrs
}
-func ValidateScale(scale *extensions.Scale) field.ErrorList {
- allErrs := field.ErrorList{}
- allErrs = append(allErrs, apivalidation.ValidateObjectMeta(&scale.ObjectMeta, true, apivalidation.NameIsDNSSubdomain, field.NewPath("metadata"))...)
-
- if scale.Spec.Replicas < 0 {
- allErrs = append(allErrs, field.Invalid(field.NewPath("spec", "replicas"), scale.Spec.Replicas, "must be greater than or equal to 0"))
- }
-
- return allErrs
-}
-
// ValidateReplicaSetName can be used to check whether the given ReplicaSet
// name is valid.
// Prefix indicates this name will be used as part of generation, in which case
diff --git a/pkg/apis/extensions/validation/validation_test.go b/pkg/apis/extensions/validation/validation_test.go
index 980a6f4725..55b03c65cb 100644
--- a/pkg/apis/extensions/validation/validation_test.go
+++ b/pkg/apis/extensions/validation/validation_test.go
@@ -26,7 +26,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/security/apparmor"
"k8s.io/kubernetes/pkg/security/podsecuritypolicy/seccomp"
@@ -1750,70 +1750,6 @@ func TestValidateIngressStatusUpdate(t *testing.T) {
}
}
-func TestValidateScale(t *testing.T) {
- successCases := []extensions.Scale{
- {
- ObjectMeta: metav1.ObjectMeta{
- Name: "frontend",
- Namespace: metav1.NamespaceDefault,
- },
- Spec: extensions.ScaleSpec{
- Replicas: 1,
- },
- },
- {
- ObjectMeta: metav1.ObjectMeta{
- Name: "frontend",
- Namespace: metav1.NamespaceDefault,
- },
- Spec: extensions.ScaleSpec{
- Replicas: 10,
- },
- },
- {
- ObjectMeta: metav1.ObjectMeta{
- Name: "frontend",
- Namespace: metav1.NamespaceDefault,
- },
- Spec: extensions.ScaleSpec{
- Replicas: 0,
- },
- },
- }
-
- for _, successCase := range successCases {
- if errs := ValidateScale(&successCase); len(errs) != 0 {
- t.Errorf("expected success: %v", errs)
- }
- }
-
- errorCases := []struct {
- scale extensions.Scale
- msg string
- }{
- {
- scale: extensions.Scale{
- ObjectMeta: metav1.ObjectMeta{
- Name: "frontend",
- Namespace: metav1.NamespaceDefault,
- },
- Spec: extensions.ScaleSpec{
- Replicas: -1,
- },
- },
- msg: "must be greater than or equal to 0",
- },
- }
-
- for _, c := range errorCases {
- if errs := ValidateScale(&c.scale); len(errs) == 0 {
- t.Errorf("expected failure for %s", c.msg)
- } else if !strings.Contains(errs[0].Error(), c.msg) {
- t.Errorf("unexpected error: %v, expected: %s", errs[0], c.msg)
- }
- }
-}
-
func TestValidateReplicaSetStatus(t *testing.T) {
tests := []struct {
name string
diff --git a/pkg/apis/extensions/zz_generated.deepcopy.go b/pkg/apis/extensions/zz_generated.deepcopy.go
index a0d2b8d0fd..3d94576924 100644
--- a/pkg/apis/extensions/zz_generated.deepcopy.go
+++ b/pkg/apis/extensions/zz_generated.deepcopy.go
@@ -22,225 +22,10 @@ package extensions
import (
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- api "k8s.io/kubernetes/pkg/api"
- reflect "reflect"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*AllowedHostPath).DeepCopyInto(out.(*AllowedHostPath))
- return nil
- }, InType: reflect.TypeOf(&AllowedHostPath{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CustomMetricCurrentStatus).DeepCopyInto(out.(*CustomMetricCurrentStatus))
- return nil
- }, InType: reflect.TypeOf(&CustomMetricCurrentStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CustomMetricCurrentStatusList).DeepCopyInto(out.(*CustomMetricCurrentStatusList))
- return nil
- }, InType: reflect.TypeOf(&CustomMetricCurrentStatusList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CustomMetricTarget).DeepCopyInto(out.(*CustomMetricTarget))
- return nil
- }, InType: reflect.TypeOf(&CustomMetricTarget{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CustomMetricTargetList).DeepCopyInto(out.(*CustomMetricTargetList))
- return nil
- }, InType: reflect.TypeOf(&CustomMetricTargetList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DaemonSet).DeepCopyInto(out.(*DaemonSet))
- return nil
- }, InType: reflect.TypeOf(&DaemonSet{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DaemonSetCondition).DeepCopyInto(out.(*DaemonSetCondition))
- return nil
- }, InType: reflect.TypeOf(&DaemonSetCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DaemonSetList).DeepCopyInto(out.(*DaemonSetList))
- return nil
- }, InType: reflect.TypeOf(&DaemonSetList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DaemonSetSpec).DeepCopyInto(out.(*DaemonSetSpec))
- return nil
- }, InType: reflect.TypeOf(&DaemonSetSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DaemonSetStatus).DeepCopyInto(out.(*DaemonSetStatus))
- return nil
- }, InType: reflect.TypeOf(&DaemonSetStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DaemonSetUpdateStrategy).DeepCopyInto(out.(*DaemonSetUpdateStrategy))
- return nil
- }, InType: reflect.TypeOf(&DaemonSetUpdateStrategy{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Deployment).DeepCopyInto(out.(*Deployment))
- return nil
- }, InType: reflect.TypeOf(&Deployment{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DeploymentCondition).DeepCopyInto(out.(*DeploymentCondition))
- return nil
- }, InType: reflect.TypeOf(&DeploymentCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DeploymentList).DeepCopyInto(out.(*DeploymentList))
- return nil
- }, InType: reflect.TypeOf(&DeploymentList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DeploymentRollback).DeepCopyInto(out.(*DeploymentRollback))
- return nil
- }, InType: reflect.TypeOf(&DeploymentRollback{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DeploymentSpec).DeepCopyInto(out.(*DeploymentSpec))
- return nil
- }, InType: reflect.TypeOf(&DeploymentSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DeploymentStatus).DeepCopyInto(out.(*DeploymentStatus))
- return nil
- }, InType: reflect.TypeOf(&DeploymentStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DeploymentStrategy).DeepCopyInto(out.(*DeploymentStrategy))
- return nil
- }, InType: reflect.TypeOf(&DeploymentStrategy{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*FSGroupStrategyOptions).DeepCopyInto(out.(*FSGroupStrategyOptions))
- return nil
- }, InType: reflect.TypeOf(&FSGroupStrategyOptions{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*GroupIDRange).DeepCopyInto(out.(*GroupIDRange))
- return nil
- }, InType: reflect.TypeOf(&GroupIDRange{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*HTTPIngressPath).DeepCopyInto(out.(*HTTPIngressPath))
- return nil
- }, InType: reflect.TypeOf(&HTTPIngressPath{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*HTTPIngressRuleValue).DeepCopyInto(out.(*HTTPIngressRuleValue))
- return nil
- }, InType: reflect.TypeOf(&HTTPIngressRuleValue{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*HostPortRange).DeepCopyInto(out.(*HostPortRange))
- return nil
- }, InType: reflect.TypeOf(&HostPortRange{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Ingress).DeepCopyInto(out.(*Ingress))
- return nil
- }, InType: reflect.TypeOf(&Ingress{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*IngressBackend).DeepCopyInto(out.(*IngressBackend))
- return nil
- }, InType: reflect.TypeOf(&IngressBackend{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*IngressList).DeepCopyInto(out.(*IngressList))
- return nil
- }, InType: reflect.TypeOf(&IngressList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*IngressRule).DeepCopyInto(out.(*IngressRule))
- return nil
- }, InType: reflect.TypeOf(&IngressRule{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*IngressRuleValue).DeepCopyInto(out.(*IngressRuleValue))
- return nil
- }, InType: reflect.TypeOf(&IngressRuleValue{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*IngressSpec).DeepCopyInto(out.(*IngressSpec))
- return nil
- }, InType: reflect.TypeOf(&IngressSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*IngressStatus).DeepCopyInto(out.(*IngressStatus))
- return nil
- }, InType: reflect.TypeOf(&IngressStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*IngressTLS).DeepCopyInto(out.(*IngressTLS))
- return nil
- }, InType: reflect.TypeOf(&IngressTLS{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodSecurityPolicy).DeepCopyInto(out.(*PodSecurityPolicy))
- return nil
- }, InType: reflect.TypeOf(&PodSecurityPolicy{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodSecurityPolicyList).DeepCopyInto(out.(*PodSecurityPolicyList))
- return nil
- }, InType: reflect.TypeOf(&PodSecurityPolicyList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodSecurityPolicySpec).DeepCopyInto(out.(*PodSecurityPolicySpec))
- return nil
- }, InType: reflect.TypeOf(&PodSecurityPolicySpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicaSet).DeepCopyInto(out.(*ReplicaSet))
- return nil
- }, InType: reflect.TypeOf(&ReplicaSet{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicaSetCondition).DeepCopyInto(out.(*ReplicaSetCondition))
- return nil
- }, InType: reflect.TypeOf(&ReplicaSetCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicaSetList).DeepCopyInto(out.(*ReplicaSetList))
- return nil
- }, InType: reflect.TypeOf(&ReplicaSetList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicaSetSpec).DeepCopyInto(out.(*ReplicaSetSpec))
- return nil
- }, InType: reflect.TypeOf(&ReplicaSetSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicaSetStatus).DeepCopyInto(out.(*ReplicaSetStatus))
- return nil
- }, InType: reflect.TypeOf(&ReplicaSetStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicationControllerDummy).DeepCopyInto(out.(*ReplicationControllerDummy))
- return nil
- }, InType: reflect.TypeOf(&ReplicationControllerDummy{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RollbackConfig).DeepCopyInto(out.(*RollbackConfig))
- return nil
- }, InType: reflect.TypeOf(&RollbackConfig{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RollingUpdateDaemonSet).DeepCopyInto(out.(*RollingUpdateDaemonSet))
- return nil
- }, InType: reflect.TypeOf(&RollingUpdateDaemonSet{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RollingUpdateDeployment).DeepCopyInto(out.(*RollingUpdateDeployment))
- return nil
- }, InType: reflect.TypeOf(&RollingUpdateDeployment{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RunAsUserStrategyOptions).DeepCopyInto(out.(*RunAsUserStrategyOptions))
- return nil
- }, InType: reflect.TypeOf(&RunAsUserStrategyOptions{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SELinuxStrategyOptions).DeepCopyInto(out.(*SELinuxStrategyOptions))
- return nil
- }, InType: reflect.TypeOf(&SELinuxStrategyOptions{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Scale).DeepCopyInto(out.(*Scale))
- return nil
- }, InType: reflect.TypeOf(&Scale{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ScaleSpec).DeepCopyInto(out.(*ScaleSpec))
- return nil
- }, InType: reflect.TypeOf(&ScaleSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ScaleStatus).DeepCopyInto(out.(*ScaleStatus))
- return nil
- }, InType: reflect.TypeOf(&ScaleStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SupplementalGroupsStrategyOptions).DeepCopyInto(out.(*SupplementalGroupsStrategyOptions))
- return nil
- }, InType: reflect.TypeOf(&SupplementalGroupsStrategyOptions{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*UserIDRange).DeepCopyInto(out.(*UserIDRange))
- return nil
- }, InType: reflect.TypeOf(&UserIDRange{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *AllowedHostPath) DeepCopyInto(out *AllowedHostPath) {
*out = *in
@@ -1093,17 +878,17 @@ func (in *PodSecurityPolicySpec) DeepCopyInto(out *PodSecurityPolicySpec) {
*out = *in
if in.DefaultAddCapabilities != nil {
in, out := &in.DefaultAddCapabilities, &out.DefaultAddCapabilities
- *out = make([]api.Capability, len(*in))
+ *out = make([]core.Capability, len(*in))
copy(*out, *in)
}
if in.RequiredDropCapabilities != nil {
in, out := &in.RequiredDropCapabilities, &out.RequiredDropCapabilities
- *out = make([]api.Capability, len(*in))
+ *out = make([]core.Capability, len(*in))
copy(*out, *in)
}
if in.AllowedCapabilities != nil {
in, out := &in.AllowedCapabilities, &out.AllowedCapabilities
- *out = make([]api.Capability, len(*in))
+ *out = make([]core.Capability, len(*in))
copy(*out, *in)
}
if in.Volumes != nil {
@@ -1382,7 +1167,7 @@ func (in *SELinuxStrategyOptions) DeepCopyInto(out *SELinuxStrategyOptions) {
if *in == nil {
*out = nil
} else {
- *out = new(api.SELinuxOptions)
+ *out = new(core.SELinuxOptions)
**out = **in
}
}
@@ -1399,76 +1184,6 @@ func (in *SELinuxStrategyOptions) DeepCopy() *SELinuxStrategyOptions {
return out
}
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *Scale) DeepCopyInto(out *Scale) {
- *out = *in
- out.TypeMeta = in.TypeMeta
- in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
- out.Spec = in.Spec
- in.Status.DeepCopyInto(&out.Status)
- return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Scale.
-func (in *Scale) DeepCopy() *Scale {
- if in == nil {
- return nil
- }
- out := new(Scale)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *Scale) DeepCopyObject() runtime.Object {
- if c := in.DeepCopy(); c != nil {
- return c
- } else {
- return nil
- }
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ScaleSpec) DeepCopyInto(out *ScaleSpec) {
- *out = *in
- return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScaleSpec.
-func (in *ScaleSpec) DeepCopy() *ScaleSpec {
- if in == nil {
- return nil
- }
- out := new(ScaleSpec)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ScaleStatus) DeepCopyInto(out *ScaleStatus) {
- *out = *in
- if in.Selector != nil {
- in, out := &in.Selector, &out.Selector
- if *in == nil {
- *out = nil
- } else {
- *out = new(v1.LabelSelector)
- (*in).DeepCopyInto(*out)
- }
- }
- return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScaleStatus.
-func (in *ScaleStatus) DeepCopy() *ScaleStatus {
- if in == nil {
- return nil
- }
- out := new(ScaleStatus)
- in.DeepCopyInto(out)
- return out
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *SupplementalGroupsStrategyOptions) DeepCopyInto(out *SupplementalGroupsStrategyOptions) {
*out = *in
diff --git a/pkg/apis/imagepolicy/BUILD b/pkg/apis/imagepolicy/BUILD
index 67e196967d..9dd53f7d33 100644
--- a/pkg/apis/imagepolicy/BUILD
+++ b/pkg/apis/imagepolicy/BUILD
@@ -16,7 +16,6 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/apis/imagepolicy",
deps = [
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/pkg/apis/imagepolicy/doc.go b/pkg/apis/imagepolicy/doc.go
index e69aee3973..a0af1868e1 100644
--- a/pkg/apis/imagepolicy/doc.go
+++ b/pkg/apis/imagepolicy/doc.go
@@ -14,6 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +groupName=imagepolicy.k8s.io
package imagepolicy // import "k8s.io/kubernetes/pkg/apis/imagepolicy"
diff --git a/pkg/apis/imagepolicy/zz_generated.deepcopy.go b/pkg/apis/imagepolicy/zz_generated.deepcopy.go
index aa752870e5..985d677537 100644
--- a/pkg/apis/imagepolicy/zz_generated.deepcopy.go
+++ b/pkg/apis/imagepolicy/zz_generated.deepcopy.go
@@ -21,40 +21,9 @@ limitations under the License.
package imagepolicy
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ImageReview).DeepCopyInto(out.(*ImageReview))
- return nil
- }, InType: reflect.TypeOf(&ImageReview{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ImageReviewContainerSpec).DeepCopyInto(out.(*ImageReviewContainerSpec))
- return nil
- }, InType: reflect.TypeOf(&ImageReviewContainerSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ImageReviewSpec).DeepCopyInto(out.(*ImageReviewSpec))
- return nil
- }, InType: reflect.TypeOf(&ImageReviewSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ImageReviewStatus).DeepCopyInto(out.(*ImageReviewStatus))
- return nil
- }, InType: reflect.TypeOf(&ImageReviewStatus{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ImageReview) DeepCopyInto(out *ImageReview) {
*out = *in
diff --git a/pkg/apis/networking/BUILD b/pkg/apis/networking/BUILD
index 5d62efcc51..4dff82d1ba 100644
--- a/pkg/apis/networking/BUILD
+++ b/pkg/apis/networking/BUILD
@@ -15,9 +15,8 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/apis/networking",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
diff --git a/pkg/apis/networking/doc.go b/pkg/apis/networking/doc.go
index b583051ca4..8b013e3486 100644
--- a/pkg/apis/networking/doc.go
+++ b/pkg/apis/networking/doc.go
@@ -14,6 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +groupName=networking.k8s.io
package networking // import "k8s.io/kubernetes/pkg/apis/networking"
diff --git a/pkg/apis/networking/types.go b/pkg/apis/networking/types.go
index 2109c37452..ae37fcd5e2 100644
--- a/pkg/apis/networking/types.go
+++ b/pkg/apis/networking/types.go
@@ -19,7 +19,7 @@ package networking
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/intstr"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// +genclient
diff --git a/pkg/apis/networking/v1/BUILD b/pkg/apis/networking/v1/BUILD
index 61c73577be..a6237c850c 100644
--- a/pkg/apis/networking/v1/BUILD
+++ b/pkg/apis/networking/v1/BUILD
@@ -17,7 +17,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/apis/networking/v1",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/networking:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/api/networking/v1:go_default_library",
@@ -48,8 +48,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/apis/networking/v1_test",
deps = [
":go_default_library",
- "//pkg/api/install:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//pkg/apis/networking/install:go_default_library",
"//vendor/k8s.io/api/networking/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
diff --git a/pkg/apis/networking/v1/defaults_test.go b/pkg/apis/networking/v1/defaults_test.go
index aa1cfd593a..7bc2a68339 100644
--- a/pkg/apis/networking/v1/defaults_test.go
+++ b/pkg/apis/networking/v1/defaults_test.go
@@ -25,8 +25,8 @@ import (
apiequality "k8s.io/apimachinery/pkg/api/equality"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
- _ "k8s.io/kubernetes/pkg/api/install"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
_ "k8s.io/kubernetes/pkg/apis/networking/install"
. "k8s.io/kubernetes/pkg/apis/networking/v1"
)
diff --git a/pkg/apis/networking/v1/zz_generated.conversion.go b/pkg/apis/networking/v1/zz_generated.conversion.go
index 67132df2c1..0b1c29ddbf 100644
--- a/pkg/apis/networking/v1/zz_generated.conversion.go
+++ b/pkg/apis/networking/v1/zz_generated.conversion.go
@@ -27,7 +27,7 @@ import (
conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
intstr "k8s.io/apimachinery/pkg/util/intstr"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
networking "k8s.io/kubernetes/pkg/apis/networking"
unsafe "unsafe"
)
@@ -198,7 +198,7 @@ func Convert_networking_NetworkPolicyPeer_To_v1_NetworkPolicyPeer(in *networking
}
func autoConvert_v1_NetworkPolicyPort_To_networking_NetworkPolicyPort(in *v1.NetworkPolicyPort, out *networking.NetworkPolicyPort, s conversion.Scope) error {
- out.Protocol = (*api.Protocol)(unsafe.Pointer(in.Protocol))
+ out.Protocol = (*core.Protocol)(unsafe.Pointer(in.Protocol))
out.Port = (*intstr.IntOrString)(unsafe.Pointer(in.Port))
return nil
}
diff --git a/pkg/apis/networking/validation/BUILD b/pkg/apis/networking/validation/BUILD
index f43264234e..5f1ccf0417 100644
--- a/pkg/apis/networking/validation/BUILD
+++ b/pkg/apis/networking/validation/BUILD
@@ -12,7 +12,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/apis/networking/validation",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/networking:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
@@ -24,8 +24,8 @@ go_library(
srcs = ["validation.go"],
importpath = "k8s.io/kubernetes/pkg/apis/networking/validation",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//pkg/apis/networking:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
diff --git a/pkg/apis/networking/validation/validation.go b/pkg/apis/networking/validation/validation.go
index 49f638f91f..a9b43f9bdc 100644
--- a/pkg/apis/networking/validation/validation.go
+++ b/pkg/apis/networking/validation/validation.go
@@ -24,8 +24,8 @@ import (
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/validation"
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
- apivalidation "k8s.io/kubernetes/pkg/api/validation"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ apivalidation "k8s.io/kubernetes/pkg/apis/core/validation"
"k8s.io/kubernetes/pkg/apis/networking"
)
diff --git a/pkg/apis/networking/validation/validation_test.go b/pkg/apis/networking/validation/validation_test.go
index 66d1088378..3af353d8ce 100644
--- a/pkg/apis/networking/validation/validation_test.go
+++ b/pkg/apis/networking/validation/validation_test.go
@@ -21,7 +21,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/intstr"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/networking"
)
diff --git a/pkg/apis/networking/zz_generated.deepcopy.go b/pkg/apis/networking/zz_generated.deepcopy.go
index da38fb5e8d..aa5958efb1 100644
--- a/pkg/apis/networking/zz_generated.deepcopy.go
+++ b/pkg/apis/networking/zz_generated.deepcopy.go
@@ -22,58 +22,11 @@ package networking
import (
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
intstr "k8s.io/apimachinery/pkg/util/intstr"
- api "k8s.io/kubernetes/pkg/api"
- reflect "reflect"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*IPBlock).DeepCopyInto(out.(*IPBlock))
- return nil
- }, InType: reflect.TypeOf(&IPBlock{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NetworkPolicy).DeepCopyInto(out.(*NetworkPolicy))
- return nil
- }, InType: reflect.TypeOf(&NetworkPolicy{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NetworkPolicyEgressRule).DeepCopyInto(out.(*NetworkPolicyEgressRule))
- return nil
- }, InType: reflect.TypeOf(&NetworkPolicyEgressRule{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NetworkPolicyIngressRule).DeepCopyInto(out.(*NetworkPolicyIngressRule))
- return nil
- }, InType: reflect.TypeOf(&NetworkPolicyIngressRule{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NetworkPolicyList).DeepCopyInto(out.(*NetworkPolicyList))
- return nil
- }, InType: reflect.TypeOf(&NetworkPolicyList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NetworkPolicyPeer).DeepCopyInto(out.(*NetworkPolicyPeer))
- return nil
- }, InType: reflect.TypeOf(&NetworkPolicyPeer{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NetworkPolicyPort).DeepCopyInto(out.(*NetworkPolicyPort))
- return nil
- }, InType: reflect.TypeOf(&NetworkPolicyPort{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NetworkPolicySpec).DeepCopyInto(out.(*NetworkPolicySpec))
- return nil
- }, InType: reflect.TypeOf(&NetworkPolicySpec{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *IPBlock) DeepCopyInto(out *IPBlock) {
*out = *in
@@ -268,7 +221,7 @@ func (in *NetworkPolicyPort) DeepCopyInto(out *NetworkPolicyPort) {
if *in == nil {
*out = nil
} else {
- *out = new(api.Protocol)
+ *out = new(core.Protocol)
**out = **in
}
}
diff --git a/pkg/apis/policy/BUILD b/pkg/apis/policy/BUILD
index 8396aae0f6..fa6f1618c0 100644
--- a/pkg/apis/policy/BUILD
+++ b/pkg/apis/policy/BUILD
@@ -16,7 +16,6 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/apis/policy",
deps = [
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
diff --git a/pkg/apis/policy/doc.go b/pkg/apis/policy/doc.go
index 86f4cd5607..e8e081e7a3 100644
--- a/pkg/apis/policy/doc.go
+++ b/pkg/apis/policy/doc.go
@@ -14,6 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
package policy // import "k8s.io/kubernetes/pkg/apis/policy"
diff --git a/pkg/apis/policy/v1alpha1/BUILD b/pkg/apis/policy/v1alpha1/BUILD
index 9818297b0f..767e92fe9f 100644
--- a/pkg/apis/policy/v1alpha1/BUILD
+++ b/pkg/apis/policy/v1alpha1/BUILD
@@ -17,7 +17,6 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/apis/policy/v1alpha1",
deps = [
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
diff --git a/pkg/apis/policy/v1alpha1/doc.go b/pkg/apis/policy/v1alpha1/doc.go
index e5b6777ce2..8ef6fc804a 100644
--- a/pkg/apis/policy/v1alpha1/doc.go
+++ b/pkg/apis/policy/v1alpha1/doc.go
@@ -15,7 +15,7 @@ limitations under the License.
*/
// +k8s:defaulter-gen=TypeMeta
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// Package policy is for any kind of policy object. Suitable examples, even if
// they aren't all here, are PodDisruptionBudget, PodSecurityPolicy,
diff --git a/pkg/apis/policy/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/policy/v1alpha1/zz_generated.deepcopy.go
index d4c2628057..4138017ae6 100644
--- a/pkg/apis/policy/v1alpha1/zz_generated.deepcopy.go
+++ b/pkg/apis/policy/v1alpha1/zz_generated.deepcopy.go
@@ -22,44 +22,9 @@ package v1alpha1
import (
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Eviction).DeepCopyInto(out.(*Eviction))
- return nil
- }, InType: reflect.TypeOf(&Eviction{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodDisruptionBudget).DeepCopyInto(out.(*PodDisruptionBudget))
- return nil
- }, InType: reflect.TypeOf(&PodDisruptionBudget{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodDisruptionBudgetList).DeepCopyInto(out.(*PodDisruptionBudgetList))
- return nil
- }, InType: reflect.TypeOf(&PodDisruptionBudgetList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodDisruptionBudgetSpec).DeepCopyInto(out.(*PodDisruptionBudgetSpec))
- return nil
- }, InType: reflect.TypeOf(&PodDisruptionBudgetSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodDisruptionBudgetStatus).DeepCopyInto(out.(*PodDisruptionBudgetStatus))
- return nil
- }, InType: reflect.TypeOf(&PodDisruptionBudgetStatus{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Eviction) DeepCopyInto(out *Eviction) {
*out = *in
diff --git a/pkg/apis/policy/validation/BUILD b/pkg/apis/policy/validation/BUILD
index 20cf1223ca..1f372c738c 100644
--- a/pkg/apis/policy/validation/BUILD
+++ b/pkg/apis/policy/validation/BUILD
@@ -11,7 +11,7 @@ go_library(
srcs = ["validation.go"],
importpath = "k8s.io/kubernetes/pkg/apis/policy/validation",
deps = [
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//pkg/apis/extensions/validation:go_default_library",
"//pkg/apis/policy:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation:go_default_library",
diff --git a/pkg/apis/policy/validation/validation.go b/pkg/apis/policy/validation/validation.go
index cb0e0506d7..cae1609de6 100644
--- a/pkg/apis/policy/validation/validation.go
+++ b/pkg/apis/policy/validation/validation.go
@@ -21,7 +21,7 @@ import (
unversionedvalidation "k8s.io/apimachinery/pkg/apis/meta/v1/validation"
"k8s.io/apimachinery/pkg/util/validation/field"
- apivalidation "k8s.io/kubernetes/pkg/api/validation"
+ apivalidation "k8s.io/kubernetes/pkg/apis/core/validation"
extensionsvalidation "k8s.io/kubernetes/pkg/apis/extensions/validation"
"k8s.io/kubernetes/pkg/apis/policy"
)
diff --git a/pkg/apis/policy/zz_generated.deepcopy.go b/pkg/apis/policy/zz_generated.deepcopy.go
index 46dfdd8f4f..564329c601 100644
--- a/pkg/apis/policy/zz_generated.deepcopy.go
+++ b/pkg/apis/policy/zz_generated.deepcopy.go
@@ -22,45 +22,10 @@ package policy
import (
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
intstr "k8s.io/apimachinery/pkg/util/intstr"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Eviction).DeepCopyInto(out.(*Eviction))
- return nil
- }, InType: reflect.TypeOf(&Eviction{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodDisruptionBudget).DeepCopyInto(out.(*PodDisruptionBudget))
- return nil
- }, InType: reflect.TypeOf(&PodDisruptionBudget{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodDisruptionBudgetList).DeepCopyInto(out.(*PodDisruptionBudgetList))
- return nil
- }, InType: reflect.TypeOf(&PodDisruptionBudgetList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodDisruptionBudgetSpec).DeepCopyInto(out.(*PodDisruptionBudgetSpec))
- return nil
- }, InType: reflect.TypeOf(&PodDisruptionBudgetSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodDisruptionBudgetStatus).DeepCopyInto(out.(*PodDisruptionBudgetStatus))
- return nil
- }, InType: reflect.TypeOf(&PodDisruptionBudgetStatus{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Eviction) DeepCopyInto(out *Eviction) {
*out = *in
diff --git a/pkg/apis/rbac/BUILD b/pkg/apis/rbac/BUILD
index 3daa84a77c..ef634f03a3 100644
--- a/pkg/apis/rbac/BUILD
+++ b/pkg/apis/rbac/BUILD
@@ -18,7 +18,6 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/apis/rbac",
deps = [
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
diff --git a/pkg/apis/rbac/doc.go b/pkg/apis/rbac/doc.go
index b264fb9a02..bebcb771d1 100644
--- a/pkg/apis/rbac/doc.go
+++ b/pkg/apis/rbac/doc.go
@@ -14,6 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +groupName=rbac.authorization.k8s.io
package rbac // import "k8s.io/kubernetes/pkg/apis/rbac"
diff --git a/pkg/apis/rbac/types.go b/pkg/apis/rbac/types.go
index 9ce2985f02..6fdd486d24 100644
--- a/pkg/apis/rbac/types.go
+++ b/pkg/apis/rbac/types.go
@@ -155,6 +155,18 @@ type ClusterRole struct {
// Rules holds all the PolicyRules for this ClusterRole
Rules []PolicyRule
+
+ // AggregationRule is an optional field that describes how to build the Rules for this ClusterRole.
+ // If AggregationRule is set, then the Rules are controller managed and direct changes to Rules will be
+ // stomped by the controller.
+ AggregationRule *AggregationRule
+}
+
+// AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole
+type AggregationRule struct {
+ // ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules.
+ // If any of the selectors match, then the ClusterRole's permissions will be added
+ ClusterRoleSelectors []metav1.LabelSelector
}
// +genclient
diff --git a/pkg/apis/rbac/v1/zz_generated.conversion.go b/pkg/apis/rbac/v1/zz_generated.conversion.go
index e5e668811e..c46056a926 100644
--- a/pkg/apis/rbac/v1/zz_generated.conversion.go
+++ b/pkg/apis/rbac/v1/zz_generated.conversion.go
@@ -22,6 +22,7 @@ package v1
import (
v1 "k8s.io/api/rbac/v1"
+ meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
rbac "k8s.io/kubernetes/pkg/apis/rbac"
@@ -36,6 +37,8 @@ func init() {
// Public to allow building arbitrary schemes.
func RegisterConversions(scheme *runtime.Scheme) error {
return scheme.AddGeneratedConversionFuncs(
+ Convert_v1_AggregationRule_To_rbac_AggregationRule,
+ Convert_rbac_AggregationRule_To_v1_AggregationRule,
Convert_v1_ClusterRole_To_rbac_ClusterRole,
Convert_rbac_ClusterRole_To_v1_ClusterRole,
Convert_v1_ClusterRoleBinding_To_rbac_ClusterRoleBinding,
@@ -61,9 +64,30 @@ func RegisterConversions(scheme *runtime.Scheme) error {
)
}
+func autoConvert_v1_AggregationRule_To_rbac_AggregationRule(in *v1.AggregationRule, out *rbac.AggregationRule, s conversion.Scope) error {
+ out.ClusterRoleSelectors = *(*[]meta_v1.LabelSelector)(unsafe.Pointer(&in.ClusterRoleSelectors))
+ return nil
+}
+
+// Convert_v1_AggregationRule_To_rbac_AggregationRule is an autogenerated conversion function.
+func Convert_v1_AggregationRule_To_rbac_AggregationRule(in *v1.AggregationRule, out *rbac.AggregationRule, s conversion.Scope) error {
+ return autoConvert_v1_AggregationRule_To_rbac_AggregationRule(in, out, s)
+}
+
+func autoConvert_rbac_AggregationRule_To_v1_AggregationRule(in *rbac.AggregationRule, out *v1.AggregationRule, s conversion.Scope) error {
+ out.ClusterRoleSelectors = *(*[]meta_v1.LabelSelector)(unsafe.Pointer(&in.ClusterRoleSelectors))
+ return nil
+}
+
+// Convert_rbac_AggregationRule_To_v1_AggregationRule is an autogenerated conversion function.
+func Convert_rbac_AggregationRule_To_v1_AggregationRule(in *rbac.AggregationRule, out *v1.AggregationRule, s conversion.Scope) error {
+ return autoConvert_rbac_AggregationRule_To_v1_AggregationRule(in, out, s)
+}
+
func autoConvert_v1_ClusterRole_To_rbac_ClusterRole(in *v1.ClusterRole, out *rbac.ClusterRole, s conversion.Scope) error {
out.ObjectMeta = in.ObjectMeta
out.Rules = *(*[]rbac.PolicyRule)(unsafe.Pointer(&in.Rules))
+ out.AggregationRule = (*rbac.AggregationRule)(unsafe.Pointer(in.AggregationRule))
return nil
}
@@ -75,6 +99,7 @@ func Convert_v1_ClusterRole_To_rbac_ClusterRole(in *v1.ClusterRole, out *rbac.Cl
func autoConvert_rbac_ClusterRole_To_v1_ClusterRole(in *rbac.ClusterRole, out *v1.ClusterRole, s conversion.Scope) error {
out.ObjectMeta = in.ObjectMeta
out.Rules = *(*[]v1.PolicyRule)(unsafe.Pointer(&in.Rules))
+ out.AggregationRule = (*v1.AggregationRule)(unsafe.Pointer(in.AggregationRule))
return nil
}
diff --git a/pkg/apis/rbac/v1alpha1/zz_generated.conversion.go b/pkg/apis/rbac/v1alpha1/zz_generated.conversion.go
index 4c52c5a783..6076e0d3da 100644
--- a/pkg/apis/rbac/v1alpha1/zz_generated.conversion.go
+++ b/pkg/apis/rbac/v1alpha1/zz_generated.conversion.go
@@ -22,6 +22,7 @@ package v1alpha1
import (
v1alpha1 "k8s.io/api/rbac/v1alpha1"
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
rbac "k8s.io/kubernetes/pkg/apis/rbac"
@@ -36,6 +37,8 @@ func init() {
// Public to allow building arbitrary schemes.
func RegisterConversions(scheme *runtime.Scheme) error {
return scheme.AddGeneratedConversionFuncs(
+ Convert_v1alpha1_AggregationRule_To_rbac_AggregationRule,
+ Convert_rbac_AggregationRule_To_v1alpha1_AggregationRule,
Convert_v1alpha1_ClusterRole_To_rbac_ClusterRole,
Convert_rbac_ClusterRole_To_v1alpha1_ClusterRole,
Convert_v1alpha1_ClusterRoleBinding_To_rbac_ClusterRoleBinding,
@@ -61,9 +64,30 @@ func RegisterConversions(scheme *runtime.Scheme) error {
)
}
+func autoConvert_v1alpha1_AggregationRule_To_rbac_AggregationRule(in *v1alpha1.AggregationRule, out *rbac.AggregationRule, s conversion.Scope) error {
+ out.ClusterRoleSelectors = *(*[]v1.LabelSelector)(unsafe.Pointer(&in.ClusterRoleSelectors))
+ return nil
+}
+
+// Convert_v1alpha1_AggregationRule_To_rbac_AggregationRule is an autogenerated conversion function.
+func Convert_v1alpha1_AggregationRule_To_rbac_AggregationRule(in *v1alpha1.AggregationRule, out *rbac.AggregationRule, s conversion.Scope) error {
+ return autoConvert_v1alpha1_AggregationRule_To_rbac_AggregationRule(in, out, s)
+}
+
+func autoConvert_rbac_AggregationRule_To_v1alpha1_AggregationRule(in *rbac.AggregationRule, out *v1alpha1.AggregationRule, s conversion.Scope) error {
+ out.ClusterRoleSelectors = *(*[]v1.LabelSelector)(unsafe.Pointer(&in.ClusterRoleSelectors))
+ return nil
+}
+
+// Convert_rbac_AggregationRule_To_v1alpha1_AggregationRule is an autogenerated conversion function.
+func Convert_rbac_AggregationRule_To_v1alpha1_AggregationRule(in *rbac.AggregationRule, out *v1alpha1.AggregationRule, s conversion.Scope) error {
+ return autoConvert_rbac_AggregationRule_To_v1alpha1_AggregationRule(in, out, s)
+}
+
func autoConvert_v1alpha1_ClusterRole_To_rbac_ClusterRole(in *v1alpha1.ClusterRole, out *rbac.ClusterRole, s conversion.Scope) error {
out.ObjectMeta = in.ObjectMeta
out.Rules = *(*[]rbac.PolicyRule)(unsafe.Pointer(&in.Rules))
+ out.AggregationRule = (*rbac.AggregationRule)(unsafe.Pointer(in.AggregationRule))
return nil
}
@@ -75,6 +99,7 @@ func Convert_v1alpha1_ClusterRole_To_rbac_ClusterRole(in *v1alpha1.ClusterRole,
func autoConvert_rbac_ClusterRole_To_v1alpha1_ClusterRole(in *rbac.ClusterRole, out *v1alpha1.ClusterRole, s conversion.Scope) error {
out.ObjectMeta = in.ObjectMeta
out.Rules = *(*[]v1alpha1.PolicyRule)(unsafe.Pointer(&in.Rules))
+ out.AggregationRule = (*v1alpha1.AggregationRule)(unsafe.Pointer(in.AggregationRule))
return nil
}
diff --git a/pkg/apis/rbac/v1beta1/zz_generated.conversion.go b/pkg/apis/rbac/v1beta1/zz_generated.conversion.go
index d06b9265aa..d031b15fa3 100644
--- a/pkg/apis/rbac/v1beta1/zz_generated.conversion.go
+++ b/pkg/apis/rbac/v1beta1/zz_generated.conversion.go
@@ -22,6 +22,7 @@ package v1beta1
import (
v1beta1 "k8s.io/api/rbac/v1beta1"
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
rbac "k8s.io/kubernetes/pkg/apis/rbac"
@@ -36,6 +37,8 @@ func init() {
// Public to allow building arbitrary schemes.
func RegisterConversions(scheme *runtime.Scheme) error {
return scheme.AddGeneratedConversionFuncs(
+ Convert_v1beta1_AggregationRule_To_rbac_AggregationRule,
+ Convert_rbac_AggregationRule_To_v1beta1_AggregationRule,
Convert_v1beta1_ClusterRole_To_rbac_ClusterRole,
Convert_rbac_ClusterRole_To_v1beta1_ClusterRole,
Convert_v1beta1_ClusterRoleBinding_To_rbac_ClusterRoleBinding,
@@ -61,9 +64,30 @@ func RegisterConversions(scheme *runtime.Scheme) error {
)
}
+func autoConvert_v1beta1_AggregationRule_To_rbac_AggregationRule(in *v1beta1.AggregationRule, out *rbac.AggregationRule, s conversion.Scope) error {
+ out.ClusterRoleSelectors = *(*[]v1.LabelSelector)(unsafe.Pointer(&in.ClusterRoleSelectors))
+ return nil
+}
+
+// Convert_v1beta1_AggregationRule_To_rbac_AggregationRule is an autogenerated conversion function.
+func Convert_v1beta1_AggregationRule_To_rbac_AggregationRule(in *v1beta1.AggregationRule, out *rbac.AggregationRule, s conversion.Scope) error {
+ return autoConvert_v1beta1_AggregationRule_To_rbac_AggregationRule(in, out, s)
+}
+
+func autoConvert_rbac_AggregationRule_To_v1beta1_AggregationRule(in *rbac.AggregationRule, out *v1beta1.AggregationRule, s conversion.Scope) error {
+ out.ClusterRoleSelectors = *(*[]v1.LabelSelector)(unsafe.Pointer(&in.ClusterRoleSelectors))
+ return nil
+}
+
+// Convert_rbac_AggregationRule_To_v1beta1_AggregationRule is an autogenerated conversion function.
+func Convert_rbac_AggregationRule_To_v1beta1_AggregationRule(in *rbac.AggregationRule, out *v1beta1.AggregationRule, s conversion.Scope) error {
+ return autoConvert_rbac_AggregationRule_To_v1beta1_AggregationRule(in, out, s)
+}
+
func autoConvert_v1beta1_ClusterRole_To_rbac_ClusterRole(in *v1beta1.ClusterRole, out *rbac.ClusterRole, s conversion.Scope) error {
out.ObjectMeta = in.ObjectMeta
out.Rules = *(*[]rbac.PolicyRule)(unsafe.Pointer(&in.Rules))
+ out.AggregationRule = (*rbac.AggregationRule)(unsafe.Pointer(in.AggregationRule))
return nil
}
@@ -75,6 +99,7 @@ func Convert_v1beta1_ClusterRole_To_rbac_ClusterRole(in *v1beta1.ClusterRole, ou
func autoConvert_rbac_ClusterRole_To_v1beta1_ClusterRole(in *rbac.ClusterRole, out *v1beta1.ClusterRole, s conversion.Scope) error {
out.ObjectMeta = in.ObjectMeta
out.Rules = *(*[]v1beta1.PolicyRule)(unsafe.Pointer(&in.Rules))
+ out.AggregationRule = (*v1beta1.AggregationRule)(unsafe.Pointer(in.AggregationRule))
return nil
}
diff --git a/pkg/apis/rbac/validation/BUILD b/pkg/apis/rbac/validation/BUILD
index d3a74c673c..3c34083071 100644
--- a/pkg/apis/rbac/validation/BUILD
+++ b/pkg/apis/rbac/validation/BUILD
@@ -11,9 +11,11 @@ go_library(
srcs = ["validation.go"],
importpath = "k8s.io/kubernetes/pkg/apis/rbac/validation",
deps = [
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//pkg/apis/rbac:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/validation/path:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
],
)
diff --git a/pkg/apis/rbac/validation/validation.go b/pkg/apis/rbac/validation/validation.go
index 0fc3cb1fbc..92fc5bdb15 100644
--- a/pkg/apis/rbac/validation/validation.go
+++ b/pkg/apis/rbac/validation/validation.go
@@ -18,8 +18,10 @@ package validation
import (
"k8s.io/apimachinery/pkg/api/validation/path"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ unversionedvalidation "k8s.io/apimachinery/pkg/apis/meta/v1/validation"
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api/validation"
+ "k8s.io/kubernetes/pkg/apis/core/validation"
"k8s.io/kubernetes/pkg/apis/rbac"
)
@@ -61,6 +63,22 @@ func ValidateClusterRole(role *rbac.ClusterRole) field.ErrorList {
allErrs = append(allErrs, err...)
}
}
+
+ if role.AggregationRule != nil {
+ if len(role.AggregationRule.ClusterRoleSelectors) == 0 {
+ allErrs = append(allErrs, field.Required(field.NewPath("aggregationRule", "clusterRoleSelectors"), "at least one clusterRoleSelector required if aggregationRule is non-nil"))
+ }
+ for i, selector := range role.AggregationRule.ClusterRoleSelectors {
+ fieldPath := field.NewPath("aggregationRule", "clusterRoleSelectors").Index(i)
+ allErrs = append(allErrs, unversionedvalidation.ValidateLabelSelector(&selector, fieldPath)...)
+
+ selector, err := metav1.LabelSelectorAsSelector(&selector)
+ if err != nil {
+ allErrs = append(allErrs, field.Invalid(fieldPath, selector, "invalid label selector."))
+ }
+ }
+ }
+
if len(allErrs) != 0 {
return allErrs
}
diff --git a/pkg/apis/rbac/zz_generated.deepcopy.go b/pkg/apis/rbac/zz_generated.deepcopy.go
index ce11037427..8454f23086 100644
--- a/pkg/apis/rbac/zz_generated.deepcopy.go
+++ b/pkg/apis/rbac/zz_generated.deepcopy.go
@@ -21,66 +21,31 @@ limitations under the License.
package rbac
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *AggregationRule) DeepCopyInto(out *AggregationRule) {
+ *out = *in
+ if in.ClusterRoleSelectors != nil {
+ in, out := &in.ClusterRoleSelectors, &out.ClusterRoleSelectors
+ *out = make([]v1.LabelSelector, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+ return
}
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ClusterRole).DeepCopyInto(out.(*ClusterRole))
- return nil
- }, InType: reflect.TypeOf(&ClusterRole{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ClusterRoleBinding).DeepCopyInto(out.(*ClusterRoleBinding))
- return nil
- }, InType: reflect.TypeOf(&ClusterRoleBinding{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ClusterRoleBindingList).DeepCopyInto(out.(*ClusterRoleBindingList))
- return nil
- }, InType: reflect.TypeOf(&ClusterRoleBindingList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ClusterRoleList).DeepCopyInto(out.(*ClusterRoleList))
- return nil
- }, InType: reflect.TypeOf(&ClusterRoleList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PolicyRule).DeepCopyInto(out.(*PolicyRule))
- return nil
- }, InType: reflect.TypeOf(&PolicyRule{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Role).DeepCopyInto(out.(*Role))
- return nil
- }, InType: reflect.TypeOf(&Role{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RoleBinding).DeepCopyInto(out.(*RoleBinding))
- return nil
- }, InType: reflect.TypeOf(&RoleBinding{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RoleBindingList).DeepCopyInto(out.(*RoleBindingList))
- return nil
- }, InType: reflect.TypeOf(&RoleBindingList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RoleList).DeepCopyInto(out.(*RoleList))
- return nil
- }, InType: reflect.TypeOf(&RoleList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RoleRef).DeepCopyInto(out.(*RoleRef))
- return nil
- }, InType: reflect.TypeOf(&RoleRef{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Subject).DeepCopyInto(out.(*Subject))
- return nil
- }, InType: reflect.TypeOf(&Subject{})},
- )
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AggregationRule.
+func (in *AggregationRule) DeepCopy() *AggregationRule {
+ if in == nil {
+ return nil
+ }
+ out := new(AggregationRule)
+ in.DeepCopyInto(out)
+ return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
@@ -95,6 +60,15 @@ func (in *ClusterRole) DeepCopyInto(out *ClusterRole) {
(*in)[i].DeepCopyInto(&(*out)[i])
}
}
+ if in.AggregationRule != nil {
+ in, out := &in.AggregationRule, &out.AggregationRule
+ if *in == nil {
+ *out = nil
+ } else {
+ *out = new(AggregationRule)
+ (*in).DeepCopyInto(*out)
+ }
+ }
return
}
diff --git a/pkg/apis/scheduling/BUILD b/pkg/apis/scheduling/BUILD
index bae1489d2e..58811a5121 100644
--- a/pkg/apis/scheduling/BUILD
+++ b/pkg/apis/scheduling/BUILD
@@ -16,7 +16,6 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/apis/scheduling",
deps = [
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/pkg/apis/scheduling/doc.go b/pkg/apis/scheduling/doc.go
index 782bf3fbd0..f2745c227e 100644
--- a/pkg/apis/scheduling/doc.go
+++ b/pkg/apis/scheduling/doc.go
@@ -14,6 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +groupName=scheduling.k8s.io
package scheduling // import "k8s.io/kubernetes/pkg/apis/scheduling"
diff --git a/pkg/apis/scheduling/validation/BUILD b/pkg/apis/scheduling/validation/BUILD
index 5056a08c1b..fc4680377e 100644
--- a/pkg/apis/scheduling/validation/BUILD
+++ b/pkg/apis/scheduling/validation/BUILD
@@ -23,7 +23,7 @@ go_library(
srcs = ["validation.go"],
importpath = "k8s.io/kubernetes/pkg/apis/scheduling/validation",
deps = [
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//pkg/apis/scheduling:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
],
diff --git a/pkg/apis/scheduling/validation/validation.go b/pkg/apis/scheduling/validation/validation.go
index 0c32fe2513..f4fac9d9ce 100644
--- a/pkg/apis/scheduling/validation/validation.go
+++ b/pkg/apis/scheduling/validation/validation.go
@@ -18,7 +18,7 @@ package validation
import (
"k8s.io/apimachinery/pkg/util/validation/field"
- apivalidation "k8s.io/kubernetes/pkg/api/validation"
+ apivalidation "k8s.io/kubernetes/pkg/apis/core/validation"
"k8s.io/kubernetes/pkg/apis/scheduling"
)
diff --git a/pkg/apis/scheduling/zz_generated.deepcopy.go b/pkg/apis/scheduling/zz_generated.deepcopy.go
index 9eb362fad5..7eb3fea067 100644
--- a/pkg/apis/scheduling/zz_generated.deepcopy.go
+++ b/pkg/apis/scheduling/zz_generated.deepcopy.go
@@ -21,32 +21,9 @@ limitations under the License.
package scheduling
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PriorityClass).DeepCopyInto(out.(*PriorityClass))
- return nil
- }, InType: reflect.TypeOf(&PriorityClass{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PriorityClassList).DeepCopyInto(out.(*PriorityClassList))
- return nil
- }, InType: reflect.TypeOf(&PriorityClassList{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PriorityClass) DeepCopyInto(out *PriorityClass) {
*out = *in
diff --git a/pkg/apis/settings/BUILD b/pkg/apis/settings/BUILD
index cb4d216f5b..2e9f40d277 100644
--- a/pkg/apis/settings/BUILD
+++ b/pkg/apis/settings/BUILD
@@ -15,9 +15,8 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/apis/settings",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/pkg/apis/settings/doc.go b/pkg/apis/settings/doc.go
index 292cb6b244..6093e3e824 100644
--- a/pkg/apis/settings/doc.go
+++ b/pkg/apis/settings/doc.go
@@ -14,6 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +groupName=settings.k8s.io
package settings // import "k8s.io/kubernetes/pkg/apis/settings"
diff --git a/pkg/apis/settings/types.go b/pkg/apis/settings/types.go
index 1087f00f80..876c802553 100644
--- a/pkg/apis/settings/types.go
+++ b/pkg/apis/settings/types.go
@@ -18,7 +18,7 @@ package settings
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// +genclient
diff --git a/pkg/apis/settings/v1alpha1/BUILD b/pkg/apis/settings/v1alpha1/BUILD
index 923fd9e579..7869c4fad8 100644
--- a/pkg/apis/settings/v1alpha1/BUILD
+++ b/pkg/apis/settings/v1alpha1/BUILD
@@ -15,8 +15,8 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/apis/settings/v1alpha1",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/v1:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/v1:go_default_library",
"//pkg/apis/settings:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/api/settings/v1alpha1:go_default_library",
diff --git a/pkg/apis/settings/v1alpha1/zz_generated.conversion.go b/pkg/apis/settings/v1alpha1/zz_generated.conversion.go
index 396102ecd8..de7bb8672f 100644
--- a/pkg/apis/settings/v1alpha1/zz_generated.conversion.go
+++ b/pkg/apis/settings/v1alpha1/zz_generated.conversion.go
@@ -25,7 +25,7 @@ import (
v1alpha1 "k8s.io/api/settings/v1alpha1"
conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
settings "k8s.io/kubernetes/pkg/apis/settings"
unsafe "unsafe"
)
@@ -117,11 +117,11 @@ func Convert_settings_PodPresetList_To_v1alpha1_PodPresetList(in *settings.PodPr
func autoConvert_v1alpha1_PodPresetSpec_To_settings_PodPresetSpec(in *v1alpha1.PodPresetSpec, out *settings.PodPresetSpec, s conversion.Scope) error {
out.Selector = in.Selector
- out.Env = *(*[]api.EnvVar)(unsafe.Pointer(&in.Env))
- out.EnvFrom = *(*[]api.EnvFromSource)(unsafe.Pointer(&in.EnvFrom))
+ out.Env = *(*[]core.EnvVar)(unsafe.Pointer(&in.Env))
+ out.EnvFrom = *(*[]core.EnvFromSource)(unsafe.Pointer(&in.EnvFrom))
if in.Volumes != nil {
in, out := &in.Volumes, &out.Volumes
- *out = make([]api.Volume, len(*in))
+ *out = make([]core.Volume, len(*in))
for i := range *in {
// TODO: Inefficient conversion - can we improve it?
if err := s.Convert(&(*in)[i], &(*out)[i], 0); err != nil {
@@ -131,7 +131,7 @@ func autoConvert_v1alpha1_PodPresetSpec_To_settings_PodPresetSpec(in *v1alpha1.P
} else {
out.Volumes = nil
}
- out.VolumeMounts = *(*[]api.VolumeMount)(unsafe.Pointer(&in.VolumeMounts))
+ out.VolumeMounts = *(*[]core.VolumeMount)(unsafe.Pointer(&in.VolumeMounts))
return nil
}
diff --git a/pkg/apis/settings/v1alpha1/zz_generated.defaults.go b/pkg/apis/settings/v1alpha1/zz_generated.defaults.go
index b2fa4af7d3..af5867ce3a 100644
--- a/pkg/apis/settings/v1alpha1/zz_generated.defaults.go
+++ b/pkg/apis/settings/v1alpha1/zz_generated.defaults.go
@@ -23,7 +23,7 @@ package v1alpha1
import (
v1alpha1 "k8s.io/api/settings/v1alpha1"
runtime "k8s.io/apimachinery/pkg/runtime"
- v1 "k8s.io/kubernetes/pkg/api/v1"
+ v1 "k8s.io/kubernetes/pkg/apis/core/v1"
)
// RegisterDefaults adds defaulters functions to the given scheme.
diff --git a/pkg/apis/settings/validation/BUILD b/pkg/apis/settings/validation/BUILD
index 9b1ab0c1e7..f0e6d67f00 100644
--- a/pkg/apis/settings/validation/BUILD
+++ b/pkg/apis/settings/validation/BUILD
@@ -12,7 +12,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/apis/settings/validation",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/settings:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
],
@@ -23,7 +23,7 @@ go_library(
srcs = ["validation.go"],
importpath = "k8s.io/kubernetes/pkg/apis/settings/validation",
deps = [
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//pkg/apis/settings:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
diff --git a/pkg/apis/settings/validation/validation.go b/pkg/apis/settings/validation/validation.go
index 6f02781ff4..1acfef0d76 100644
--- a/pkg/apis/settings/validation/validation.go
+++ b/pkg/apis/settings/validation/validation.go
@@ -19,7 +19,7 @@ package validation
import (
unversionedvalidation "k8s.io/apimachinery/pkg/apis/meta/v1/validation"
"k8s.io/apimachinery/pkg/util/validation/field"
- apivalidation "k8s.io/kubernetes/pkg/api/validation"
+ apivalidation "k8s.io/kubernetes/pkg/apis/core/validation"
"k8s.io/kubernetes/pkg/apis/settings"
)
diff --git a/pkg/apis/settings/validation/validation_test.go b/pkg/apis/settings/validation/validation_test.go
index 343f6465c0..884b15f2b7 100644
--- a/pkg/apis/settings/validation/validation_test.go
+++ b/pkg/apis/settings/validation/validation_test.go
@@ -21,7 +21,7 @@ import (
"testing"
"k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/settings"
)
diff --git a/pkg/apis/settings/zz_generated.deepcopy.go b/pkg/apis/settings/zz_generated.deepcopy.go
index a6d188a398..742ebb5063 100644
--- a/pkg/apis/settings/zz_generated.deepcopy.go
+++ b/pkg/apis/settings/zz_generated.deepcopy.go
@@ -21,37 +21,10 @@ limitations under the License.
package settings
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- api "k8s.io/kubernetes/pkg/api"
- reflect "reflect"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodPreset).DeepCopyInto(out.(*PodPreset))
- return nil
- }, InType: reflect.TypeOf(&PodPreset{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodPresetList).DeepCopyInto(out.(*PodPresetList))
- return nil
- }, InType: reflect.TypeOf(&PodPresetList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodPresetSpec).DeepCopyInto(out.(*PodPresetSpec))
- return nil
- }, InType: reflect.TypeOf(&PodPresetSpec{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PodPreset) DeepCopyInto(out *PodPreset) {
*out = *in
@@ -120,28 +93,28 @@ func (in *PodPresetSpec) DeepCopyInto(out *PodPresetSpec) {
in.Selector.DeepCopyInto(&out.Selector)
if in.Env != nil {
in, out := &in.Env, &out.Env
- *out = make([]api.EnvVar, len(*in))
+ *out = make([]core.EnvVar, len(*in))
for i := range *in {
(*in)[i].DeepCopyInto(&(*out)[i])
}
}
if in.EnvFrom != nil {
in, out := &in.EnvFrom, &out.EnvFrom
- *out = make([]api.EnvFromSource, len(*in))
+ *out = make([]core.EnvFromSource, len(*in))
for i := range *in {
(*in)[i].DeepCopyInto(&(*out)[i])
}
}
if in.Volumes != nil {
in, out := &in.Volumes, &out.Volumes
- *out = make([]api.Volume, len(*in))
+ *out = make([]core.Volume, len(*in))
for i := range *in {
(*in)[i].DeepCopyInto(&(*out)[i])
}
}
if in.VolumeMounts != nil {
in, out := &in.VolumeMounts, &out.VolumeMounts
- *out = make([]api.VolumeMount, len(*in))
+ *out = make([]core.VolumeMount, len(*in))
for i := range *in {
(*in)[i].DeepCopyInto(&(*out)[i])
}
diff --git a/pkg/apis/storage/BUILD b/pkg/apis/storage/BUILD
index aa487dde15..0f432652f2 100644
--- a/pkg/apis/storage/BUILD
+++ b/pkg/apis/storage/BUILD
@@ -15,9 +15,8 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/apis/storage",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/pkg/apis/storage/doc.go b/pkg/apis/storage/doc.go
index 51dbb344c7..5220b981e4 100644
--- a/pkg/apis/storage/doc.go
+++ b/pkg/apis/storage/doc.go
@@ -14,6 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +groupName=storage.k8s.io
package storage // import "k8s.io/kubernetes/pkg/apis/storage"
diff --git a/pkg/apis/storage/fuzzer/BUILD b/pkg/apis/storage/fuzzer/BUILD
index 150483ad35..fcec240ec8 100644
--- a/pkg/apis/storage/fuzzer/BUILD
+++ b/pkg/apis/storage/fuzzer/BUILD
@@ -10,7 +10,7 @@ go_library(
srcs = ["fuzzer.go"],
importpath = "k8s.io/kubernetes/pkg/apis/storage/fuzzer",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/storage:go_default_library",
"//vendor/github.com/google/gofuzz:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
diff --git a/pkg/apis/storage/fuzzer/fuzzer.go b/pkg/apis/storage/fuzzer/fuzzer.go
index e8a3651494..ea35b74a5a 100644
--- a/pkg/apis/storage/fuzzer/fuzzer.go
+++ b/pkg/apis/storage/fuzzer/fuzzer.go
@@ -20,7 +20,7 @@ import (
fuzz "github.com/google/gofuzz"
runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/storage"
)
diff --git a/pkg/apis/storage/types.go b/pkg/apis/storage/types.go
index 1af94b2d74..f80a6308b8 100644
--- a/pkg/apis/storage/types.go
+++ b/pkg/apis/storage/types.go
@@ -18,7 +18,7 @@ package storage
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// +genclient
diff --git a/pkg/apis/storage/v1/BUILD b/pkg/apis/storage/v1/BUILD
index f630ecc27c..e9ce505c90 100644
--- a/pkg/apis/storage/v1/BUILD
+++ b/pkg/apis/storage/v1/BUILD
@@ -16,7 +16,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/apis/storage/v1",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/storage:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/api/storage/v1:go_default_library",
diff --git a/pkg/apis/storage/v1/zz_generated.conversion.go b/pkg/apis/storage/v1/zz_generated.conversion.go
index 59594d2651..94e78e305f 100644
--- a/pkg/apis/storage/v1/zz_generated.conversion.go
+++ b/pkg/apis/storage/v1/zz_generated.conversion.go
@@ -25,7 +25,7 @@ import (
v1 "k8s.io/api/storage/v1"
conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
storage "k8s.io/kubernetes/pkg/apis/storage"
unsafe "unsafe"
)
@@ -49,7 +49,7 @@ func autoConvert_v1_StorageClass_To_storage_StorageClass(in *v1.StorageClass, ou
out.ObjectMeta = in.ObjectMeta
out.Provisioner = in.Provisioner
out.Parameters = *(*map[string]string)(unsafe.Pointer(&in.Parameters))
- out.ReclaimPolicy = (*api.PersistentVolumeReclaimPolicy)(unsafe.Pointer(in.ReclaimPolicy))
+ out.ReclaimPolicy = (*core.PersistentVolumeReclaimPolicy)(unsafe.Pointer(in.ReclaimPolicy))
out.MountOptions = *(*[]string)(unsafe.Pointer(&in.MountOptions))
out.AllowVolumeExpansion = (*bool)(unsafe.Pointer(in.AllowVolumeExpansion))
return nil
diff --git a/pkg/apis/storage/v1beta1/BUILD b/pkg/apis/storage/v1beta1/BUILD
index 247f4ff047..b734d4d6d0 100644
--- a/pkg/apis/storage/v1beta1/BUILD
+++ b/pkg/apis/storage/v1beta1/BUILD
@@ -16,7 +16,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/apis/storage/v1beta1",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/storage:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/api/storage/v1beta1:go_default_library",
diff --git a/pkg/apis/storage/v1beta1/zz_generated.conversion.go b/pkg/apis/storage/v1beta1/zz_generated.conversion.go
index d340530abb..98f3da43be 100644
--- a/pkg/apis/storage/v1beta1/zz_generated.conversion.go
+++ b/pkg/apis/storage/v1beta1/zz_generated.conversion.go
@@ -25,7 +25,7 @@ import (
v1beta1 "k8s.io/api/storage/v1beta1"
conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
storage "k8s.io/kubernetes/pkg/apis/storage"
unsafe "unsafe"
)
@@ -49,7 +49,7 @@ func autoConvert_v1beta1_StorageClass_To_storage_StorageClass(in *v1beta1.Storag
out.ObjectMeta = in.ObjectMeta
out.Provisioner = in.Provisioner
out.Parameters = *(*map[string]string)(unsafe.Pointer(&in.Parameters))
- out.ReclaimPolicy = (*api.PersistentVolumeReclaimPolicy)(unsafe.Pointer(in.ReclaimPolicy))
+ out.ReclaimPolicy = (*core.PersistentVolumeReclaimPolicy)(unsafe.Pointer(in.ReclaimPolicy))
out.MountOptions = *(*[]string)(unsafe.Pointer(&in.MountOptions))
out.AllowVolumeExpansion = (*bool)(unsafe.Pointer(in.AllowVolumeExpansion))
return nil
diff --git a/pkg/apis/storage/validation/BUILD b/pkg/apis/storage/validation/BUILD
index c637aa9c59..0dd46fd055 100644
--- a/pkg/apis/storage/validation/BUILD
+++ b/pkg/apis/storage/validation/BUILD
@@ -11,8 +11,8 @@ go_library(
srcs = ["validation.go"],
importpath = "k8s.io/kubernetes/pkg/apis/storage/validation",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//pkg/apis/storage:go_default_library",
"//pkg/features:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
@@ -28,7 +28,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/apis/storage/validation",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/storage:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library",
diff --git a/pkg/apis/storage/validation/validation.go b/pkg/apis/storage/validation/validation.go
index 38b7915167..5e9803ecd2 100644
--- a/pkg/apis/storage/validation/validation.go
+++ b/pkg/apis/storage/validation/validation.go
@@ -24,8 +24,8 @@ import (
"k8s.io/apimachinery/pkg/util/validation"
"k8s.io/apimachinery/pkg/util/validation/field"
utilfeature "k8s.io/apiserver/pkg/util/feature"
- "k8s.io/kubernetes/pkg/api"
- apivalidation "k8s.io/kubernetes/pkg/api/validation"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ apivalidation "k8s.io/kubernetes/pkg/apis/core/validation"
"k8s.io/kubernetes/pkg/apis/storage"
"k8s.io/kubernetes/pkg/features"
)
diff --git a/pkg/apis/storage/validation/validation_test.go b/pkg/apis/storage/validation/validation_test.go
index 8e8e9f499a..9333f6a202 100644
--- a/pkg/apis/storage/validation/validation_test.go
+++ b/pkg/apis/storage/validation/validation_test.go
@@ -22,7 +22,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
utilfeature "k8s.io/apiserver/pkg/util/feature"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/storage"
)
diff --git a/pkg/apis/storage/zz_generated.deepcopy.go b/pkg/apis/storage/zz_generated.deepcopy.go
index b6564ce03a..bdb4084650 100644
--- a/pkg/apis/storage/zz_generated.deepcopy.go
+++ b/pkg/apis/storage/zz_generated.deepcopy.go
@@ -21,33 +21,10 @@ limitations under the License.
package storage
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- api "k8s.io/kubernetes/pkg/api"
- reflect "reflect"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StorageClass).DeepCopyInto(out.(*StorageClass))
- return nil
- }, InType: reflect.TypeOf(&StorageClass{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StorageClassList).DeepCopyInto(out.(*StorageClassList))
- return nil
- }, InType: reflect.TypeOf(&StorageClassList{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *StorageClass) DeepCopyInto(out *StorageClass) {
*out = *in
@@ -65,7 +42,7 @@ func (in *StorageClass) DeepCopyInto(out *StorageClass) {
if *in == nil {
*out = nil
} else {
- *out = new(api.PersistentVolumeReclaimPolicy)
+ *out = new(core.PersistentVolumeReclaimPolicy)
**out = **in
}
}
diff --git a/pkg/client/clientset_generated/internalclientset/fake/BUILD b/pkg/client/clientset_generated/internalclientset/fake/BUILD
index 7b7ef98d9e..72685a8788 100644
--- a/pkg/client/clientset_generated/internalclientset/fake/BUILD
+++ b/pkg/client/clientset_generated/internalclientset/fake/BUILD
@@ -14,7 +14,6 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake",
deps = [
- "//pkg/api:go_default_library",
"//pkg/apis/admissionregistration:go_default_library",
"//pkg/apis/apps:go_default_library",
"//pkg/apis/authentication:go_default_library",
@@ -22,6 +21,7 @@ go_library(
"//pkg/apis/autoscaling:go_default_library",
"//pkg/apis/batch:go_default_library",
"//pkg/apis/certificates:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/apis/networking:go_default_library",
"//pkg/apis/policy:go_default_library",
diff --git a/pkg/client/clientset_generated/internalclientset/fake/register.go b/pkg/client/clientset_generated/internalclientset/fake/register.go
index 279688bc76..cf2e6054c5 100644
--- a/pkg/client/clientset_generated/internalclientset/fake/register.go
+++ b/pkg/client/clientset_generated/internalclientset/fake/register.go
@@ -21,7 +21,6 @@ import (
runtime "k8s.io/apimachinery/pkg/runtime"
schema "k8s.io/apimachinery/pkg/runtime/schema"
serializer "k8s.io/apimachinery/pkg/runtime/serializer"
- coreinternalversion "k8s.io/kubernetes/pkg/api"
admissionregistrationinternalversion "k8s.io/kubernetes/pkg/apis/admissionregistration"
appsinternalversion "k8s.io/kubernetes/pkg/apis/apps"
authenticationinternalversion "k8s.io/kubernetes/pkg/apis/authentication"
@@ -29,6 +28,7 @@ import (
autoscalinginternalversion "k8s.io/kubernetes/pkg/apis/autoscaling"
batchinternalversion "k8s.io/kubernetes/pkg/apis/batch"
certificatesinternalversion "k8s.io/kubernetes/pkg/apis/certificates"
+ coreinternalversion "k8s.io/kubernetes/pkg/apis/core"
extensionsinternalversion "k8s.io/kubernetes/pkg/apis/extensions"
networkinginternalversion "k8s.io/kubernetes/pkg/apis/networking"
policyinternalversion "k8s.io/kubernetes/pkg/apis/policy"
diff --git a/pkg/client/clientset_generated/internalclientset/scheme/BUILD b/pkg/client/clientset_generated/internalclientset/scheme/BUILD
index 8b94589bf8..39b1ede5f7 100644
--- a/pkg/client/clientset_generated/internalclientset/scheme/BUILD
+++ b/pkg/client/clientset_generated/internalclientset/scheme/BUILD
@@ -14,7 +14,6 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme",
deps = [
- "//pkg/api/install:go_default_library",
"//pkg/apis/admissionregistration/install:go_default_library",
"//pkg/apis/apps/install:go_default_library",
"//pkg/apis/authentication/install:go_default_library",
@@ -23,6 +22,7 @@ go_library(
"//pkg/apis/batch/install:go_default_library",
"//pkg/apis/certificates/install:go_default_library",
"//pkg/apis/componentconfig/install:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//pkg/apis/extensions/install:go_default_library",
"//pkg/apis/networking/install:go_default_library",
"//pkg/apis/policy/install:go_default_library",
diff --git a/pkg/client/clientset_generated/internalclientset/scheme/register.go b/pkg/client/clientset_generated/internalclientset/scheme/register.go
index 500d8da9fa..0a4fd9bfb9 100644
--- a/pkg/client/clientset_generated/internalclientset/scheme/register.go
+++ b/pkg/client/clientset_generated/internalclientset/scheme/register.go
@@ -23,7 +23,6 @@ import (
runtime "k8s.io/apimachinery/pkg/runtime"
schema "k8s.io/apimachinery/pkg/runtime/schema"
serializer "k8s.io/apimachinery/pkg/runtime/serializer"
- core "k8s.io/kubernetes/pkg/api/install"
admissionregistration "k8s.io/kubernetes/pkg/apis/admissionregistration/install"
apps "k8s.io/kubernetes/pkg/apis/apps/install"
authentication "k8s.io/kubernetes/pkg/apis/authentication/install"
@@ -31,6 +30,7 @@ import (
autoscaling "k8s.io/kubernetes/pkg/apis/autoscaling/install"
batch "k8s.io/kubernetes/pkg/apis/batch/install"
certificates "k8s.io/kubernetes/pkg/apis/certificates/install"
+ core "k8s.io/kubernetes/pkg/apis/core/install"
extensions "k8s.io/kubernetes/pkg/apis/extensions/install"
networking "k8s.io/kubernetes/pkg/apis/networking/install"
policy "k8s.io/kubernetes/pkg/apis/policy/install"
diff --git a/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/BUILD b/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/BUILD
index 6d1e815c9e..74333876b7 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/BUILD
+++ b/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/BUILD
@@ -10,9 +10,10 @@ go_library(
srcs = [
"admissionregistration_client.go",
"doc.go",
- "externaladmissionhookconfiguration.go",
"generated_expansion.go",
"initializerconfiguration.go",
+ "mutatingwebhookconfiguration.go",
+ "validatingwebhookconfiguration.go",
],
importpath = "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion",
deps = [
diff --git a/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/admissionregistration_client.go b/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/admissionregistration_client.go
index e64ad0d137..319d5ebd99 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/admissionregistration_client.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/admissionregistration_client.go
@@ -23,8 +23,9 @@ import (
type AdmissionregistrationInterface interface {
RESTClient() rest.Interface
- ExternalAdmissionHookConfigurationsGetter
InitializerConfigurationsGetter
+ MutatingWebhookConfigurationsGetter
+ ValidatingWebhookConfigurationsGetter
}
// AdmissionregistrationClient is used to interact with features provided by the admissionregistration.k8s.io group.
@@ -32,14 +33,18 @@ type AdmissionregistrationClient struct {
restClient rest.Interface
}
-func (c *AdmissionregistrationClient) ExternalAdmissionHookConfigurations() ExternalAdmissionHookConfigurationInterface {
- return newExternalAdmissionHookConfigurations(c)
-}
-
func (c *AdmissionregistrationClient) InitializerConfigurations() InitializerConfigurationInterface {
return newInitializerConfigurations(c)
}
+func (c *AdmissionregistrationClient) MutatingWebhookConfigurations() MutatingWebhookConfigurationInterface {
+ return newMutatingWebhookConfigurations(c)
+}
+
+func (c *AdmissionregistrationClient) ValidatingWebhookConfigurations() ValidatingWebhookConfigurationInterface {
+ return newValidatingWebhookConfigurations(c)
+}
+
// NewForConfig creates a new AdmissionregistrationClient for the given config.
func NewForConfig(c *rest.Config) (*AdmissionregistrationClient, error) {
config := *c
diff --git a/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/externaladmissionhookconfiguration.go b/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/externaladmissionhookconfiguration.go
deleted file mode 100644
index 09b2b383aa..0000000000
--- a/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/externaladmissionhookconfiguration.go
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
-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 internalversion
-
-import (
- v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- types "k8s.io/apimachinery/pkg/types"
- watch "k8s.io/apimachinery/pkg/watch"
- rest "k8s.io/client-go/rest"
- admissionregistration "k8s.io/kubernetes/pkg/apis/admissionregistration"
- scheme "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme"
-)
-
-// ExternalAdmissionHookConfigurationsGetter has a method to return a ExternalAdmissionHookConfigurationInterface.
-// A group's client should implement this interface.
-type ExternalAdmissionHookConfigurationsGetter interface {
- ExternalAdmissionHookConfigurations() ExternalAdmissionHookConfigurationInterface
-}
-
-// ExternalAdmissionHookConfigurationInterface has methods to work with ExternalAdmissionHookConfiguration resources.
-type ExternalAdmissionHookConfigurationInterface interface {
- Create(*admissionregistration.ExternalAdmissionHookConfiguration) (*admissionregistration.ExternalAdmissionHookConfiguration, error)
- Update(*admissionregistration.ExternalAdmissionHookConfiguration) (*admissionregistration.ExternalAdmissionHookConfiguration, error)
- Delete(name string, options *v1.DeleteOptions) error
- DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error
- Get(name string, options v1.GetOptions) (*admissionregistration.ExternalAdmissionHookConfiguration, error)
- List(opts v1.ListOptions) (*admissionregistration.ExternalAdmissionHookConfigurationList, error)
- Watch(opts v1.ListOptions) (watch.Interface, error)
- Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *admissionregistration.ExternalAdmissionHookConfiguration, err error)
- ExternalAdmissionHookConfigurationExpansion
-}
-
-// externalAdmissionHookConfigurations implements ExternalAdmissionHookConfigurationInterface
-type externalAdmissionHookConfigurations struct {
- client rest.Interface
-}
-
-// newExternalAdmissionHookConfigurations returns a ExternalAdmissionHookConfigurations
-func newExternalAdmissionHookConfigurations(c *AdmissionregistrationClient) *externalAdmissionHookConfigurations {
- return &externalAdmissionHookConfigurations{
- client: c.RESTClient(),
- }
-}
-
-// Get takes name of the externalAdmissionHookConfiguration, and returns the corresponding externalAdmissionHookConfiguration object, and an error if there is any.
-func (c *externalAdmissionHookConfigurations) Get(name string, options v1.GetOptions) (result *admissionregistration.ExternalAdmissionHookConfiguration, err error) {
- result = &admissionregistration.ExternalAdmissionHookConfiguration{}
- err = c.client.Get().
- Resource("externaladmissionhookconfigurations").
- Name(name).
- VersionedParams(&options, scheme.ParameterCodec).
- Do().
- Into(result)
- return
-}
-
-// List takes label and field selectors, and returns the list of ExternalAdmissionHookConfigurations that match those selectors.
-func (c *externalAdmissionHookConfigurations) List(opts v1.ListOptions) (result *admissionregistration.ExternalAdmissionHookConfigurationList, err error) {
- result = &admissionregistration.ExternalAdmissionHookConfigurationList{}
- err = c.client.Get().
- Resource("externaladmissionhookconfigurations").
- VersionedParams(&opts, scheme.ParameterCodec).
- Do().
- Into(result)
- return
-}
-
-// Watch returns a watch.Interface that watches the requested externalAdmissionHookConfigurations.
-func (c *externalAdmissionHookConfigurations) Watch(opts v1.ListOptions) (watch.Interface, error) {
- opts.Watch = true
- return c.client.Get().
- Resource("externaladmissionhookconfigurations").
- VersionedParams(&opts, scheme.ParameterCodec).
- Watch()
-}
-
-// Create takes the representation of a externalAdmissionHookConfiguration and creates it. Returns the server's representation of the externalAdmissionHookConfiguration, and an error, if there is any.
-func (c *externalAdmissionHookConfigurations) Create(externalAdmissionHookConfiguration *admissionregistration.ExternalAdmissionHookConfiguration) (result *admissionregistration.ExternalAdmissionHookConfiguration, err error) {
- result = &admissionregistration.ExternalAdmissionHookConfiguration{}
- err = c.client.Post().
- Resource("externaladmissionhookconfigurations").
- Body(externalAdmissionHookConfiguration).
- Do().
- Into(result)
- return
-}
-
-// Update takes the representation of a externalAdmissionHookConfiguration and updates it. Returns the server's representation of the externalAdmissionHookConfiguration, and an error, if there is any.
-func (c *externalAdmissionHookConfigurations) Update(externalAdmissionHookConfiguration *admissionregistration.ExternalAdmissionHookConfiguration) (result *admissionregistration.ExternalAdmissionHookConfiguration, err error) {
- result = &admissionregistration.ExternalAdmissionHookConfiguration{}
- err = c.client.Put().
- Resource("externaladmissionhookconfigurations").
- Name(externalAdmissionHookConfiguration.Name).
- Body(externalAdmissionHookConfiguration).
- Do().
- Into(result)
- return
-}
-
-// Delete takes name of the externalAdmissionHookConfiguration and deletes it. Returns an error if one occurs.
-func (c *externalAdmissionHookConfigurations) Delete(name string, options *v1.DeleteOptions) error {
- return c.client.Delete().
- Resource("externaladmissionhookconfigurations").
- Name(name).
- Body(options).
- Do().
- Error()
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *externalAdmissionHookConfigurations) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
- return c.client.Delete().
- Resource("externaladmissionhookconfigurations").
- VersionedParams(&listOptions, scheme.ParameterCodec).
- Body(options).
- Do().
- Error()
-}
-
-// Patch applies the patch and returns the patched externalAdmissionHookConfiguration.
-func (c *externalAdmissionHookConfigurations) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *admissionregistration.ExternalAdmissionHookConfiguration, err error) {
- result = &admissionregistration.ExternalAdmissionHookConfiguration{}
- err = c.client.Patch(pt).
- Resource("externaladmissionhookconfigurations").
- SubResource(subresources...).
- Name(name).
- Body(data).
- Do().
- Into(result)
- return
-}
diff --git a/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/fake/BUILD b/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/fake/BUILD
index 8d32bc2496..9fd39c1ad3 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/fake/BUILD
+++ b/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/fake/BUILD
@@ -10,8 +10,9 @@ go_library(
srcs = [
"doc.go",
"fake_admissionregistration_client.go",
- "fake_externaladmissionhookconfiguration.go",
"fake_initializerconfiguration.go",
+ "fake_mutatingwebhookconfiguration.go",
+ "fake_validatingwebhookconfiguration.go",
],
importpath = "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/fake",
deps = [
diff --git a/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/fake/fake_admissionregistration_client.go b/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/fake/fake_admissionregistration_client.go
index b0e7b83572..7e1a6978b8 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/fake/fake_admissionregistration_client.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/fake/fake_admissionregistration_client.go
@@ -26,14 +26,18 @@ type FakeAdmissionregistration struct {
*testing.Fake
}
-func (c *FakeAdmissionregistration) ExternalAdmissionHookConfigurations() internalversion.ExternalAdmissionHookConfigurationInterface {
- return &FakeExternalAdmissionHookConfigurations{c}
-}
-
func (c *FakeAdmissionregistration) InitializerConfigurations() internalversion.InitializerConfigurationInterface {
return &FakeInitializerConfigurations{c}
}
+func (c *FakeAdmissionregistration) MutatingWebhookConfigurations() internalversion.MutatingWebhookConfigurationInterface {
+ return &FakeMutatingWebhookConfigurations{c}
+}
+
+func (c *FakeAdmissionregistration) ValidatingWebhookConfigurations() internalversion.ValidatingWebhookConfigurationInterface {
+ return &FakeValidatingWebhookConfigurations{c}
+}
+
// RESTClient returns a RESTClient that is used to communicate
// with API server by this client implementation.
func (c *FakeAdmissionregistration) RESTClient() rest.Interface {
diff --git a/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/fake/fake_externaladmissionhookconfiguration.go b/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/fake/fake_externaladmissionhookconfiguration.go
deleted file mode 100644
index be6b42e2ed..0000000000
--- a/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/fake/fake_externaladmissionhookconfiguration.go
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
-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 fake
-
-import (
- v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- labels "k8s.io/apimachinery/pkg/labels"
- schema "k8s.io/apimachinery/pkg/runtime/schema"
- types "k8s.io/apimachinery/pkg/types"
- watch "k8s.io/apimachinery/pkg/watch"
- testing "k8s.io/client-go/testing"
- admissionregistration "k8s.io/kubernetes/pkg/apis/admissionregistration"
-)
-
-// FakeExternalAdmissionHookConfigurations implements ExternalAdmissionHookConfigurationInterface
-type FakeExternalAdmissionHookConfigurations struct {
- Fake *FakeAdmissionregistration
-}
-
-var externaladmissionhookconfigurationsResource = schema.GroupVersionResource{Group: "admissionregistration.k8s.io", Version: "", Resource: "externaladmissionhookconfigurations"}
-
-var externaladmissionhookconfigurationsKind = schema.GroupVersionKind{Group: "admissionregistration.k8s.io", Version: "", Kind: "ExternalAdmissionHookConfiguration"}
-
-// Get takes name of the externalAdmissionHookConfiguration, and returns the corresponding externalAdmissionHookConfiguration object, and an error if there is any.
-func (c *FakeExternalAdmissionHookConfigurations) Get(name string, options v1.GetOptions) (result *admissionregistration.ExternalAdmissionHookConfiguration, err error) {
- obj, err := c.Fake.
- Invokes(testing.NewRootGetAction(externaladmissionhookconfigurationsResource, name), &admissionregistration.ExternalAdmissionHookConfiguration{})
- if obj == nil {
- return nil, err
- }
- return obj.(*admissionregistration.ExternalAdmissionHookConfiguration), err
-}
-
-// List takes label and field selectors, and returns the list of ExternalAdmissionHookConfigurations that match those selectors.
-func (c *FakeExternalAdmissionHookConfigurations) List(opts v1.ListOptions) (result *admissionregistration.ExternalAdmissionHookConfigurationList, err error) {
- obj, err := c.Fake.
- Invokes(testing.NewRootListAction(externaladmissionhookconfigurationsResource, externaladmissionhookconfigurationsKind, opts), &admissionregistration.ExternalAdmissionHookConfigurationList{})
- if obj == nil {
- return nil, err
- }
-
- label, _, _ := testing.ExtractFromListOptions(opts)
- if label == nil {
- label = labels.Everything()
- }
- list := &admissionregistration.ExternalAdmissionHookConfigurationList{}
- for _, item := range obj.(*admissionregistration.ExternalAdmissionHookConfigurationList).Items {
- if label.Matches(labels.Set(item.Labels)) {
- list.Items = append(list.Items, item)
- }
- }
- return list, err
-}
-
-// Watch returns a watch.Interface that watches the requested externalAdmissionHookConfigurations.
-func (c *FakeExternalAdmissionHookConfigurations) Watch(opts v1.ListOptions) (watch.Interface, error) {
- return c.Fake.
- InvokesWatch(testing.NewRootWatchAction(externaladmissionhookconfigurationsResource, opts))
-}
-
-// Create takes the representation of a externalAdmissionHookConfiguration and creates it. Returns the server's representation of the externalAdmissionHookConfiguration, and an error, if there is any.
-func (c *FakeExternalAdmissionHookConfigurations) Create(externalAdmissionHookConfiguration *admissionregistration.ExternalAdmissionHookConfiguration) (result *admissionregistration.ExternalAdmissionHookConfiguration, err error) {
- obj, err := c.Fake.
- Invokes(testing.NewRootCreateAction(externaladmissionhookconfigurationsResource, externalAdmissionHookConfiguration), &admissionregistration.ExternalAdmissionHookConfiguration{})
- if obj == nil {
- return nil, err
- }
- return obj.(*admissionregistration.ExternalAdmissionHookConfiguration), err
-}
-
-// Update takes the representation of a externalAdmissionHookConfiguration and updates it. Returns the server's representation of the externalAdmissionHookConfiguration, and an error, if there is any.
-func (c *FakeExternalAdmissionHookConfigurations) Update(externalAdmissionHookConfiguration *admissionregistration.ExternalAdmissionHookConfiguration) (result *admissionregistration.ExternalAdmissionHookConfiguration, err error) {
- obj, err := c.Fake.
- Invokes(testing.NewRootUpdateAction(externaladmissionhookconfigurationsResource, externalAdmissionHookConfiguration), &admissionregistration.ExternalAdmissionHookConfiguration{})
- if obj == nil {
- return nil, err
- }
- return obj.(*admissionregistration.ExternalAdmissionHookConfiguration), err
-}
-
-// Delete takes name of the externalAdmissionHookConfiguration and deletes it. Returns an error if one occurs.
-func (c *FakeExternalAdmissionHookConfigurations) Delete(name string, options *v1.DeleteOptions) error {
- _, err := c.Fake.
- Invokes(testing.NewRootDeleteAction(externaladmissionhookconfigurationsResource, name), &admissionregistration.ExternalAdmissionHookConfiguration{})
- return err
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *FakeExternalAdmissionHookConfigurations) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
- action := testing.NewRootDeleteCollectionAction(externaladmissionhookconfigurationsResource, listOptions)
-
- _, err := c.Fake.Invokes(action, &admissionregistration.ExternalAdmissionHookConfigurationList{})
- return err
-}
-
-// Patch applies the patch and returns the patched externalAdmissionHookConfiguration.
-func (c *FakeExternalAdmissionHookConfigurations) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *admissionregistration.ExternalAdmissionHookConfiguration, err error) {
- obj, err := c.Fake.
- Invokes(testing.NewRootPatchSubresourceAction(externaladmissionhookconfigurationsResource, name, data, subresources...), &admissionregistration.ExternalAdmissionHookConfiguration{})
- if obj == nil {
- return nil, err
- }
- return obj.(*admissionregistration.ExternalAdmissionHookConfiguration), err
-}
diff --git a/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/fake/fake_mutatingwebhookconfiguration.go b/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/fake/fake_mutatingwebhookconfiguration.go
new file mode 100644
index 0000000000..3660ccfbac
--- /dev/null
+++ b/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/fake/fake_mutatingwebhookconfiguration.go
@@ -0,0 +1,118 @@
+/*
+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 fake
+
+import (
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ labels "k8s.io/apimachinery/pkg/labels"
+ schema "k8s.io/apimachinery/pkg/runtime/schema"
+ types "k8s.io/apimachinery/pkg/types"
+ watch "k8s.io/apimachinery/pkg/watch"
+ testing "k8s.io/client-go/testing"
+ admissionregistration "k8s.io/kubernetes/pkg/apis/admissionregistration"
+)
+
+// FakeMutatingWebhookConfigurations implements MutatingWebhookConfigurationInterface
+type FakeMutatingWebhookConfigurations struct {
+ Fake *FakeAdmissionregistration
+}
+
+var mutatingwebhookconfigurationsResource = schema.GroupVersionResource{Group: "admissionregistration.k8s.io", Version: "", Resource: "mutatingwebhookconfigurations"}
+
+var mutatingwebhookconfigurationsKind = schema.GroupVersionKind{Group: "admissionregistration.k8s.io", Version: "", Kind: "MutatingWebhookConfiguration"}
+
+// Get takes name of the mutatingWebhookConfiguration, and returns the corresponding mutatingWebhookConfiguration object, and an error if there is any.
+func (c *FakeMutatingWebhookConfigurations) Get(name string, options v1.GetOptions) (result *admissionregistration.MutatingWebhookConfiguration, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewRootGetAction(mutatingwebhookconfigurationsResource, name), &admissionregistration.MutatingWebhookConfiguration{})
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*admissionregistration.MutatingWebhookConfiguration), err
+}
+
+// List takes label and field selectors, and returns the list of MutatingWebhookConfigurations that match those selectors.
+func (c *FakeMutatingWebhookConfigurations) List(opts v1.ListOptions) (result *admissionregistration.MutatingWebhookConfigurationList, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewRootListAction(mutatingwebhookconfigurationsResource, mutatingwebhookconfigurationsKind, opts), &admissionregistration.MutatingWebhookConfigurationList{})
+ if obj == nil {
+ return nil, err
+ }
+
+ label, _, _ := testing.ExtractFromListOptions(opts)
+ if label == nil {
+ label = labels.Everything()
+ }
+ list := &admissionregistration.MutatingWebhookConfigurationList{}
+ for _, item := range obj.(*admissionregistration.MutatingWebhookConfigurationList).Items {
+ if label.Matches(labels.Set(item.Labels)) {
+ list.Items = append(list.Items, item)
+ }
+ }
+ return list, err
+}
+
+// Watch returns a watch.Interface that watches the requested mutatingWebhookConfigurations.
+func (c *FakeMutatingWebhookConfigurations) Watch(opts v1.ListOptions) (watch.Interface, error) {
+ return c.Fake.
+ InvokesWatch(testing.NewRootWatchAction(mutatingwebhookconfigurationsResource, opts))
+}
+
+// Create takes the representation of a mutatingWebhookConfiguration and creates it. Returns the server's representation of the mutatingWebhookConfiguration, and an error, if there is any.
+func (c *FakeMutatingWebhookConfigurations) Create(mutatingWebhookConfiguration *admissionregistration.MutatingWebhookConfiguration) (result *admissionregistration.MutatingWebhookConfiguration, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewRootCreateAction(mutatingwebhookconfigurationsResource, mutatingWebhookConfiguration), &admissionregistration.MutatingWebhookConfiguration{})
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*admissionregistration.MutatingWebhookConfiguration), err
+}
+
+// Update takes the representation of a mutatingWebhookConfiguration and updates it. Returns the server's representation of the mutatingWebhookConfiguration, and an error, if there is any.
+func (c *FakeMutatingWebhookConfigurations) Update(mutatingWebhookConfiguration *admissionregistration.MutatingWebhookConfiguration) (result *admissionregistration.MutatingWebhookConfiguration, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewRootUpdateAction(mutatingwebhookconfigurationsResource, mutatingWebhookConfiguration), &admissionregistration.MutatingWebhookConfiguration{})
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*admissionregistration.MutatingWebhookConfiguration), err
+}
+
+// Delete takes name of the mutatingWebhookConfiguration and deletes it. Returns an error if one occurs.
+func (c *FakeMutatingWebhookConfigurations) Delete(name string, options *v1.DeleteOptions) error {
+ _, err := c.Fake.
+ Invokes(testing.NewRootDeleteAction(mutatingwebhookconfigurationsResource, name), &admissionregistration.MutatingWebhookConfiguration{})
+ return err
+}
+
+// DeleteCollection deletes a collection of objects.
+func (c *FakeMutatingWebhookConfigurations) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
+ action := testing.NewRootDeleteCollectionAction(mutatingwebhookconfigurationsResource, listOptions)
+
+ _, err := c.Fake.Invokes(action, &admissionregistration.MutatingWebhookConfigurationList{})
+ return err
+}
+
+// Patch applies the patch and returns the patched mutatingWebhookConfiguration.
+func (c *FakeMutatingWebhookConfigurations) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *admissionregistration.MutatingWebhookConfiguration, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewRootPatchSubresourceAction(mutatingwebhookconfigurationsResource, name, data, subresources...), &admissionregistration.MutatingWebhookConfiguration{})
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*admissionregistration.MutatingWebhookConfiguration), err
+}
diff --git a/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/fake/fake_validatingwebhookconfiguration.go b/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/fake/fake_validatingwebhookconfiguration.go
new file mode 100644
index 0000000000..4056e54b75
--- /dev/null
+++ b/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/fake/fake_validatingwebhookconfiguration.go
@@ -0,0 +1,118 @@
+/*
+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 fake
+
+import (
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ labels "k8s.io/apimachinery/pkg/labels"
+ schema "k8s.io/apimachinery/pkg/runtime/schema"
+ types "k8s.io/apimachinery/pkg/types"
+ watch "k8s.io/apimachinery/pkg/watch"
+ testing "k8s.io/client-go/testing"
+ admissionregistration "k8s.io/kubernetes/pkg/apis/admissionregistration"
+)
+
+// FakeValidatingWebhookConfigurations implements ValidatingWebhookConfigurationInterface
+type FakeValidatingWebhookConfigurations struct {
+ Fake *FakeAdmissionregistration
+}
+
+var validatingwebhookconfigurationsResource = schema.GroupVersionResource{Group: "admissionregistration.k8s.io", Version: "", Resource: "validatingwebhookconfigurations"}
+
+var validatingwebhookconfigurationsKind = schema.GroupVersionKind{Group: "admissionregistration.k8s.io", Version: "", Kind: "ValidatingWebhookConfiguration"}
+
+// Get takes name of the validatingWebhookConfiguration, and returns the corresponding validatingWebhookConfiguration object, and an error if there is any.
+func (c *FakeValidatingWebhookConfigurations) Get(name string, options v1.GetOptions) (result *admissionregistration.ValidatingWebhookConfiguration, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewRootGetAction(validatingwebhookconfigurationsResource, name), &admissionregistration.ValidatingWebhookConfiguration{})
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*admissionregistration.ValidatingWebhookConfiguration), err
+}
+
+// List takes label and field selectors, and returns the list of ValidatingWebhookConfigurations that match those selectors.
+func (c *FakeValidatingWebhookConfigurations) List(opts v1.ListOptions) (result *admissionregistration.ValidatingWebhookConfigurationList, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewRootListAction(validatingwebhookconfigurationsResource, validatingwebhookconfigurationsKind, opts), &admissionregistration.ValidatingWebhookConfigurationList{})
+ if obj == nil {
+ return nil, err
+ }
+
+ label, _, _ := testing.ExtractFromListOptions(opts)
+ if label == nil {
+ label = labels.Everything()
+ }
+ list := &admissionregistration.ValidatingWebhookConfigurationList{}
+ for _, item := range obj.(*admissionregistration.ValidatingWebhookConfigurationList).Items {
+ if label.Matches(labels.Set(item.Labels)) {
+ list.Items = append(list.Items, item)
+ }
+ }
+ return list, err
+}
+
+// Watch returns a watch.Interface that watches the requested validatingWebhookConfigurations.
+func (c *FakeValidatingWebhookConfigurations) Watch(opts v1.ListOptions) (watch.Interface, error) {
+ return c.Fake.
+ InvokesWatch(testing.NewRootWatchAction(validatingwebhookconfigurationsResource, opts))
+}
+
+// Create takes the representation of a validatingWebhookConfiguration and creates it. Returns the server's representation of the validatingWebhookConfiguration, and an error, if there is any.
+func (c *FakeValidatingWebhookConfigurations) Create(validatingWebhookConfiguration *admissionregistration.ValidatingWebhookConfiguration) (result *admissionregistration.ValidatingWebhookConfiguration, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewRootCreateAction(validatingwebhookconfigurationsResource, validatingWebhookConfiguration), &admissionregistration.ValidatingWebhookConfiguration{})
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*admissionregistration.ValidatingWebhookConfiguration), err
+}
+
+// Update takes the representation of a validatingWebhookConfiguration and updates it. Returns the server's representation of the validatingWebhookConfiguration, and an error, if there is any.
+func (c *FakeValidatingWebhookConfigurations) Update(validatingWebhookConfiguration *admissionregistration.ValidatingWebhookConfiguration) (result *admissionregistration.ValidatingWebhookConfiguration, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewRootUpdateAction(validatingwebhookconfigurationsResource, validatingWebhookConfiguration), &admissionregistration.ValidatingWebhookConfiguration{})
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*admissionregistration.ValidatingWebhookConfiguration), err
+}
+
+// Delete takes name of the validatingWebhookConfiguration and deletes it. Returns an error if one occurs.
+func (c *FakeValidatingWebhookConfigurations) Delete(name string, options *v1.DeleteOptions) error {
+ _, err := c.Fake.
+ Invokes(testing.NewRootDeleteAction(validatingwebhookconfigurationsResource, name), &admissionregistration.ValidatingWebhookConfiguration{})
+ return err
+}
+
+// DeleteCollection deletes a collection of objects.
+func (c *FakeValidatingWebhookConfigurations) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
+ action := testing.NewRootDeleteCollectionAction(validatingwebhookconfigurationsResource, listOptions)
+
+ _, err := c.Fake.Invokes(action, &admissionregistration.ValidatingWebhookConfigurationList{})
+ return err
+}
+
+// Patch applies the patch and returns the patched validatingWebhookConfiguration.
+func (c *FakeValidatingWebhookConfigurations) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *admissionregistration.ValidatingWebhookConfiguration, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewRootPatchSubresourceAction(validatingwebhookconfigurationsResource, name, data, subresources...), &admissionregistration.ValidatingWebhookConfiguration{})
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*admissionregistration.ValidatingWebhookConfiguration), err
+}
diff --git a/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/generated_expansion.go b/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/generated_expansion.go
index 631817dea3..d41780a7a6 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/generated_expansion.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/generated_expansion.go
@@ -16,6 +16,8 @@ limitations under the License.
package internalversion
-type ExternalAdmissionHookConfigurationExpansion interface{}
-
type InitializerConfigurationExpansion interface{}
+
+type MutatingWebhookConfigurationExpansion interface{}
+
+type ValidatingWebhookConfigurationExpansion interface{}
diff --git a/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/mutatingwebhookconfiguration.go b/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/mutatingwebhookconfiguration.go
new file mode 100644
index 0000000000..a58d0fd1cd
--- /dev/null
+++ b/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/mutatingwebhookconfiguration.go
@@ -0,0 +1,145 @@
+/*
+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 internalversion
+
+import (
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ types "k8s.io/apimachinery/pkg/types"
+ watch "k8s.io/apimachinery/pkg/watch"
+ rest "k8s.io/client-go/rest"
+ admissionregistration "k8s.io/kubernetes/pkg/apis/admissionregistration"
+ scheme "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme"
+)
+
+// MutatingWebhookConfigurationsGetter has a method to return a MutatingWebhookConfigurationInterface.
+// A group's client should implement this interface.
+type MutatingWebhookConfigurationsGetter interface {
+ MutatingWebhookConfigurations() MutatingWebhookConfigurationInterface
+}
+
+// MutatingWebhookConfigurationInterface has methods to work with MutatingWebhookConfiguration resources.
+type MutatingWebhookConfigurationInterface interface {
+ Create(*admissionregistration.MutatingWebhookConfiguration) (*admissionregistration.MutatingWebhookConfiguration, error)
+ Update(*admissionregistration.MutatingWebhookConfiguration) (*admissionregistration.MutatingWebhookConfiguration, error)
+ Delete(name string, options *v1.DeleteOptions) error
+ DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error
+ Get(name string, options v1.GetOptions) (*admissionregistration.MutatingWebhookConfiguration, error)
+ List(opts v1.ListOptions) (*admissionregistration.MutatingWebhookConfigurationList, error)
+ Watch(opts v1.ListOptions) (watch.Interface, error)
+ Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *admissionregistration.MutatingWebhookConfiguration, err error)
+ MutatingWebhookConfigurationExpansion
+}
+
+// mutatingWebhookConfigurations implements MutatingWebhookConfigurationInterface
+type mutatingWebhookConfigurations struct {
+ client rest.Interface
+}
+
+// newMutatingWebhookConfigurations returns a MutatingWebhookConfigurations
+func newMutatingWebhookConfigurations(c *AdmissionregistrationClient) *mutatingWebhookConfigurations {
+ return &mutatingWebhookConfigurations{
+ client: c.RESTClient(),
+ }
+}
+
+// Get takes name of the mutatingWebhookConfiguration, and returns the corresponding mutatingWebhookConfiguration object, and an error if there is any.
+func (c *mutatingWebhookConfigurations) Get(name string, options v1.GetOptions) (result *admissionregistration.MutatingWebhookConfiguration, err error) {
+ result = &admissionregistration.MutatingWebhookConfiguration{}
+ err = c.client.Get().
+ Resource("mutatingwebhookconfigurations").
+ Name(name).
+ VersionedParams(&options, scheme.ParameterCodec).
+ Do().
+ Into(result)
+ return
+}
+
+// List takes label and field selectors, and returns the list of MutatingWebhookConfigurations that match those selectors.
+func (c *mutatingWebhookConfigurations) List(opts v1.ListOptions) (result *admissionregistration.MutatingWebhookConfigurationList, err error) {
+ result = &admissionregistration.MutatingWebhookConfigurationList{}
+ err = c.client.Get().
+ Resource("mutatingwebhookconfigurations").
+ VersionedParams(&opts, scheme.ParameterCodec).
+ Do().
+ Into(result)
+ return
+}
+
+// Watch returns a watch.Interface that watches the requested mutatingWebhookConfigurations.
+func (c *mutatingWebhookConfigurations) Watch(opts v1.ListOptions) (watch.Interface, error) {
+ opts.Watch = true
+ return c.client.Get().
+ Resource("mutatingwebhookconfigurations").
+ VersionedParams(&opts, scheme.ParameterCodec).
+ Watch()
+}
+
+// Create takes the representation of a mutatingWebhookConfiguration and creates it. Returns the server's representation of the mutatingWebhookConfiguration, and an error, if there is any.
+func (c *mutatingWebhookConfigurations) Create(mutatingWebhookConfiguration *admissionregistration.MutatingWebhookConfiguration) (result *admissionregistration.MutatingWebhookConfiguration, err error) {
+ result = &admissionregistration.MutatingWebhookConfiguration{}
+ err = c.client.Post().
+ Resource("mutatingwebhookconfigurations").
+ Body(mutatingWebhookConfiguration).
+ Do().
+ Into(result)
+ return
+}
+
+// Update takes the representation of a mutatingWebhookConfiguration and updates it. Returns the server's representation of the mutatingWebhookConfiguration, and an error, if there is any.
+func (c *mutatingWebhookConfigurations) Update(mutatingWebhookConfiguration *admissionregistration.MutatingWebhookConfiguration) (result *admissionregistration.MutatingWebhookConfiguration, err error) {
+ result = &admissionregistration.MutatingWebhookConfiguration{}
+ err = c.client.Put().
+ Resource("mutatingwebhookconfigurations").
+ Name(mutatingWebhookConfiguration.Name).
+ Body(mutatingWebhookConfiguration).
+ Do().
+ Into(result)
+ return
+}
+
+// Delete takes name of the mutatingWebhookConfiguration and deletes it. Returns an error if one occurs.
+func (c *mutatingWebhookConfigurations) Delete(name string, options *v1.DeleteOptions) error {
+ return c.client.Delete().
+ Resource("mutatingwebhookconfigurations").
+ Name(name).
+ Body(options).
+ Do().
+ Error()
+}
+
+// DeleteCollection deletes a collection of objects.
+func (c *mutatingWebhookConfigurations) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
+ return c.client.Delete().
+ Resource("mutatingwebhookconfigurations").
+ VersionedParams(&listOptions, scheme.ParameterCodec).
+ Body(options).
+ Do().
+ Error()
+}
+
+// Patch applies the patch and returns the patched mutatingWebhookConfiguration.
+func (c *mutatingWebhookConfigurations) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *admissionregistration.MutatingWebhookConfiguration, err error) {
+ result = &admissionregistration.MutatingWebhookConfiguration{}
+ err = c.client.Patch(pt).
+ Resource("mutatingwebhookconfigurations").
+ SubResource(subresources...).
+ Name(name).
+ Body(data).
+ Do().
+ Into(result)
+ return
+}
diff --git a/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/validatingwebhookconfiguration.go b/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/validatingwebhookconfiguration.go
new file mode 100644
index 0000000000..090cd6f674
--- /dev/null
+++ b/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/validatingwebhookconfiguration.go
@@ -0,0 +1,145 @@
+/*
+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 internalversion
+
+import (
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ types "k8s.io/apimachinery/pkg/types"
+ watch "k8s.io/apimachinery/pkg/watch"
+ rest "k8s.io/client-go/rest"
+ admissionregistration "k8s.io/kubernetes/pkg/apis/admissionregistration"
+ scheme "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme"
+)
+
+// ValidatingWebhookConfigurationsGetter has a method to return a ValidatingWebhookConfigurationInterface.
+// A group's client should implement this interface.
+type ValidatingWebhookConfigurationsGetter interface {
+ ValidatingWebhookConfigurations() ValidatingWebhookConfigurationInterface
+}
+
+// ValidatingWebhookConfigurationInterface has methods to work with ValidatingWebhookConfiguration resources.
+type ValidatingWebhookConfigurationInterface interface {
+ Create(*admissionregistration.ValidatingWebhookConfiguration) (*admissionregistration.ValidatingWebhookConfiguration, error)
+ Update(*admissionregistration.ValidatingWebhookConfiguration) (*admissionregistration.ValidatingWebhookConfiguration, error)
+ Delete(name string, options *v1.DeleteOptions) error
+ DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error
+ Get(name string, options v1.GetOptions) (*admissionregistration.ValidatingWebhookConfiguration, error)
+ List(opts v1.ListOptions) (*admissionregistration.ValidatingWebhookConfigurationList, error)
+ Watch(opts v1.ListOptions) (watch.Interface, error)
+ Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *admissionregistration.ValidatingWebhookConfiguration, err error)
+ ValidatingWebhookConfigurationExpansion
+}
+
+// validatingWebhookConfigurations implements ValidatingWebhookConfigurationInterface
+type validatingWebhookConfigurations struct {
+ client rest.Interface
+}
+
+// newValidatingWebhookConfigurations returns a ValidatingWebhookConfigurations
+func newValidatingWebhookConfigurations(c *AdmissionregistrationClient) *validatingWebhookConfigurations {
+ return &validatingWebhookConfigurations{
+ client: c.RESTClient(),
+ }
+}
+
+// Get takes name of the validatingWebhookConfiguration, and returns the corresponding validatingWebhookConfiguration object, and an error if there is any.
+func (c *validatingWebhookConfigurations) Get(name string, options v1.GetOptions) (result *admissionregistration.ValidatingWebhookConfiguration, err error) {
+ result = &admissionregistration.ValidatingWebhookConfiguration{}
+ err = c.client.Get().
+ Resource("validatingwebhookconfigurations").
+ Name(name).
+ VersionedParams(&options, scheme.ParameterCodec).
+ Do().
+ Into(result)
+ return
+}
+
+// List takes label and field selectors, and returns the list of ValidatingWebhookConfigurations that match those selectors.
+func (c *validatingWebhookConfigurations) List(opts v1.ListOptions) (result *admissionregistration.ValidatingWebhookConfigurationList, err error) {
+ result = &admissionregistration.ValidatingWebhookConfigurationList{}
+ err = c.client.Get().
+ Resource("validatingwebhookconfigurations").
+ VersionedParams(&opts, scheme.ParameterCodec).
+ Do().
+ Into(result)
+ return
+}
+
+// Watch returns a watch.Interface that watches the requested validatingWebhookConfigurations.
+func (c *validatingWebhookConfigurations) Watch(opts v1.ListOptions) (watch.Interface, error) {
+ opts.Watch = true
+ return c.client.Get().
+ Resource("validatingwebhookconfigurations").
+ VersionedParams(&opts, scheme.ParameterCodec).
+ Watch()
+}
+
+// Create takes the representation of a validatingWebhookConfiguration and creates it. Returns the server's representation of the validatingWebhookConfiguration, and an error, if there is any.
+func (c *validatingWebhookConfigurations) Create(validatingWebhookConfiguration *admissionregistration.ValidatingWebhookConfiguration) (result *admissionregistration.ValidatingWebhookConfiguration, err error) {
+ result = &admissionregistration.ValidatingWebhookConfiguration{}
+ err = c.client.Post().
+ Resource("validatingwebhookconfigurations").
+ Body(validatingWebhookConfiguration).
+ Do().
+ Into(result)
+ return
+}
+
+// Update takes the representation of a validatingWebhookConfiguration and updates it. Returns the server's representation of the validatingWebhookConfiguration, and an error, if there is any.
+func (c *validatingWebhookConfigurations) Update(validatingWebhookConfiguration *admissionregistration.ValidatingWebhookConfiguration) (result *admissionregistration.ValidatingWebhookConfiguration, err error) {
+ result = &admissionregistration.ValidatingWebhookConfiguration{}
+ err = c.client.Put().
+ Resource("validatingwebhookconfigurations").
+ Name(validatingWebhookConfiguration.Name).
+ Body(validatingWebhookConfiguration).
+ Do().
+ Into(result)
+ return
+}
+
+// Delete takes name of the validatingWebhookConfiguration and deletes it. Returns an error if one occurs.
+func (c *validatingWebhookConfigurations) Delete(name string, options *v1.DeleteOptions) error {
+ return c.client.Delete().
+ Resource("validatingwebhookconfigurations").
+ Name(name).
+ Body(options).
+ Do().
+ Error()
+}
+
+// DeleteCollection deletes a collection of objects.
+func (c *validatingWebhookConfigurations) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
+ return c.client.Delete().
+ Resource("validatingwebhookconfigurations").
+ VersionedParams(&listOptions, scheme.ParameterCodec).
+ Body(options).
+ Do().
+ Error()
+}
+
+// Patch applies the patch and returns the patched validatingWebhookConfiguration.
+func (c *validatingWebhookConfigurations) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *admissionregistration.ValidatingWebhookConfiguration, err error) {
+ result = &admissionregistration.ValidatingWebhookConfiguration{}
+ err = c.client.Patch(pt).
+ Resource("validatingwebhookconfigurations").
+ SubResource(subresources...).
+ Name(name).
+ Body(data).
+ Do().
+ Into(result)
+ return
+}
diff --git a/pkg/client/clientset_generated/internalclientset/typed/apps/internalversion/BUILD b/pkg/client/clientset_generated/internalclientset/typed/apps/internalversion/BUILD
index 9435fcd513..e3fad87bee 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/apps/internalversion/BUILD
+++ b/pkg/client/clientset_generated/internalclientset/typed/apps/internalversion/BUILD
@@ -17,7 +17,7 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/apps/internalversion",
deps = [
"//pkg/apis/apps:go_default_library",
- "//pkg/apis/extensions:go_default_library",
+ "//pkg/apis/autoscaling:go_default_library",
"//pkg/client/clientset_generated/internalclientset/scheme:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
diff --git a/pkg/client/clientset_generated/internalclientset/typed/apps/internalversion/fake/BUILD b/pkg/client/clientset_generated/internalclientset/typed/apps/internalversion/fake/BUILD
index b124ea5785..ecee8ae0d4 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/apps/internalversion/fake/BUILD
+++ b/pkg/client/clientset_generated/internalclientset/typed/apps/internalversion/fake/BUILD
@@ -16,7 +16,7 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/apps/internalversion/fake",
deps = [
"//pkg/apis/apps:go_default_library",
- "//pkg/apis/extensions:go_default_library",
+ "//pkg/apis/autoscaling:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/apps/internalversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
diff --git a/pkg/client/clientset_generated/internalclientset/typed/apps/internalversion/fake/fake_statefulset.go b/pkg/client/clientset_generated/internalclientset/typed/apps/internalversion/fake/fake_statefulset.go
index df41c42aa9..680142275d 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/apps/internalversion/fake/fake_statefulset.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/apps/internalversion/fake/fake_statefulset.go
@@ -24,7 +24,7 @@ import (
watch "k8s.io/apimachinery/pkg/watch"
testing "k8s.io/client-go/testing"
apps "k8s.io/kubernetes/pkg/apis/apps"
- extensions "k8s.io/kubernetes/pkg/apis/extensions"
+ autoscaling "k8s.io/kubernetes/pkg/apis/autoscaling"
)
// FakeStatefulSets implements StatefulSetInterface
@@ -139,23 +139,23 @@ func (c *FakeStatefulSets) Patch(name string, pt types.PatchType, data []byte, s
}
// GetScale takes name of the statefulSet, and returns the corresponding scale object, and an error if there is any.
-func (c *FakeStatefulSets) GetScale(statefulSetName string, options v1.GetOptions) (result *extensions.Scale, err error) {
+func (c *FakeStatefulSets) GetScale(statefulSetName string, options v1.GetOptions) (result *autoscaling.Scale, err error) {
obj, err := c.Fake.
- Invokes(testing.NewGetSubresourceAction(statefulsetsResource, c.ns, "scale", statefulSetName), &extensions.Scale{})
+ Invokes(testing.NewGetSubresourceAction(statefulsetsResource, c.ns, "scale", statefulSetName), &autoscaling.Scale{})
if obj == nil {
return nil, err
}
- return obj.(*extensions.Scale), err
+ return obj.(*autoscaling.Scale), err
}
// UpdateScale takes the representation of a scale and updates it. Returns the server's representation of the scale, and an error, if there is any.
-func (c *FakeStatefulSets) UpdateScale(statefulSetName string, scale *extensions.Scale) (result *extensions.Scale, err error) {
+func (c *FakeStatefulSets) UpdateScale(statefulSetName string, scale *autoscaling.Scale) (result *autoscaling.Scale, err error) {
obj, err := c.Fake.
- Invokes(testing.NewUpdateSubresourceAction(statefulsetsResource, "scale", c.ns, scale), &extensions.Scale{})
+ Invokes(testing.NewUpdateSubresourceAction(statefulsetsResource, "scale", c.ns, scale), &autoscaling.Scale{})
if obj == nil {
return nil, err
}
- return obj.(*extensions.Scale), err
+ return obj.(*autoscaling.Scale), err
}
diff --git a/pkg/client/clientset_generated/internalclientset/typed/apps/internalversion/statefulset.go b/pkg/client/clientset_generated/internalclientset/typed/apps/internalversion/statefulset.go
index 85ee4bd86a..ae64cc0088 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/apps/internalversion/statefulset.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/apps/internalversion/statefulset.go
@@ -22,7 +22,7 @@ import (
watch "k8s.io/apimachinery/pkg/watch"
rest "k8s.io/client-go/rest"
apps "k8s.io/kubernetes/pkg/apis/apps"
- extensions "k8s.io/kubernetes/pkg/apis/extensions"
+ autoscaling "k8s.io/kubernetes/pkg/apis/autoscaling"
scheme "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme"
)
@@ -43,8 +43,8 @@ type StatefulSetInterface interface {
List(opts v1.ListOptions) (*apps.StatefulSetList, error)
Watch(opts v1.ListOptions) (watch.Interface, error)
Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *apps.StatefulSet, err error)
- GetScale(statefulSetName string, options v1.GetOptions) (*extensions.Scale, error)
- UpdateScale(statefulSetName string, scale *extensions.Scale) (*extensions.Scale, error)
+ GetScale(statefulSetName string, options v1.GetOptions) (*autoscaling.Scale, error)
+ UpdateScale(statefulSetName string, scale *autoscaling.Scale) (*autoscaling.Scale, error)
StatefulSetExpansion
}
@@ -175,9 +175,9 @@ func (c *statefulSets) Patch(name string, pt types.PatchType, data []byte, subre
return
}
-// GetScale takes name of the statefulSet, and returns the corresponding extensions.Scale object, and an error if there is any.
-func (c *statefulSets) GetScale(statefulSetName string, options v1.GetOptions) (result *extensions.Scale, err error) {
- result = &extensions.Scale{}
+// GetScale takes name of the statefulSet, and returns the corresponding autoscaling.Scale object, and an error if there is any.
+func (c *statefulSets) GetScale(statefulSetName string, options v1.GetOptions) (result *autoscaling.Scale, err error) {
+ result = &autoscaling.Scale{}
err = c.client.Get().
Namespace(c.ns).
Resource("statefulsets").
@@ -190,8 +190,8 @@ func (c *statefulSets) GetScale(statefulSetName string, options v1.GetOptions) (
}
// UpdateScale takes the top resource name and the representation of a scale and updates it. Returns the server's representation of the scale, and an error, if there is any.
-func (c *statefulSets) UpdateScale(statefulSetName string, scale *extensions.Scale) (result *extensions.Scale, err error) {
- result = &extensions.Scale{}
+func (c *statefulSets) UpdateScale(statefulSetName string, scale *autoscaling.Scale) (result *autoscaling.Scale, err error) {
+ result = &autoscaling.Scale{}
err = c.client.Put().
Namespace(c.ns).
Resource("statefulsets").
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/BUILD b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/BUILD
index 1b155ad98b..ad0e9695a5 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/BUILD
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/BUILD
@@ -35,11 +35,11 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/ref:go_default_library",
- "//pkg/api/v1:go_default_library",
- "//pkg/apis/extensions:go_default_library",
+ "//pkg/apis/autoscaling:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/v1:go_default_library",
"//pkg/client/clientset_generated/internalclientset/scheme:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/componentstatus.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/componentstatus.go
index dfd6969a91..66b4b464ff 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/componentstatus.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/componentstatus.go
@@ -21,7 +21,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
rest "k8s.io/client-go/rest"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
scheme "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme"
)
@@ -33,14 +33,14 @@ type ComponentStatusesGetter interface {
// ComponentStatusInterface has methods to work with ComponentStatus resources.
type ComponentStatusInterface interface {
- Create(*api.ComponentStatus) (*api.ComponentStatus, error)
- Update(*api.ComponentStatus) (*api.ComponentStatus, error)
+ Create(*core.ComponentStatus) (*core.ComponentStatus, error)
+ Update(*core.ComponentStatus) (*core.ComponentStatus, error)
Delete(name string, options *v1.DeleteOptions) error
DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error
- Get(name string, options v1.GetOptions) (*api.ComponentStatus, error)
- List(opts v1.ListOptions) (*api.ComponentStatusList, error)
+ Get(name string, options v1.GetOptions) (*core.ComponentStatus, error)
+ List(opts v1.ListOptions) (*core.ComponentStatusList, error)
Watch(opts v1.ListOptions) (watch.Interface, error)
- Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.ComponentStatus, err error)
+ Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.ComponentStatus, err error)
ComponentStatusExpansion
}
@@ -57,8 +57,8 @@ func newComponentStatuses(c *CoreClient) *componentStatuses {
}
// Get takes name of the componentStatus, and returns the corresponding componentStatus object, and an error if there is any.
-func (c *componentStatuses) Get(name string, options v1.GetOptions) (result *api.ComponentStatus, err error) {
- result = &api.ComponentStatus{}
+func (c *componentStatuses) Get(name string, options v1.GetOptions) (result *core.ComponentStatus, err error) {
+ result = &core.ComponentStatus{}
err = c.client.Get().
Resource("componentstatuses").
Name(name).
@@ -69,8 +69,8 @@ func (c *componentStatuses) Get(name string, options v1.GetOptions) (result *api
}
// List takes label and field selectors, and returns the list of ComponentStatuses that match those selectors.
-func (c *componentStatuses) List(opts v1.ListOptions) (result *api.ComponentStatusList, err error) {
- result = &api.ComponentStatusList{}
+func (c *componentStatuses) List(opts v1.ListOptions) (result *core.ComponentStatusList, err error) {
+ result = &core.ComponentStatusList{}
err = c.client.Get().
Resource("componentstatuses").
VersionedParams(&opts, scheme.ParameterCodec).
@@ -89,8 +89,8 @@ func (c *componentStatuses) Watch(opts v1.ListOptions) (watch.Interface, error)
}
// Create takes the representation of a componentStatus and creates it. Returns the server's representation of the componentStatus, and an error, if there is any.
-func (c *componentStatuses) Create(componentStatus *api.ComponentStatus) (result *api.ComponentStatus, err error) {
- result = &api.ComponentStatus{}
+func (c *componentStatuses) Create(componentStatus *core.ComponentStatus) (result *core.ComponentStatus, err error) {
+ result = &core.ComponentStatus{}
err = c.client.Post().
Resource("componentstatuses").
Body(componentStatus).
@@ -100,8 +100,8 @@ func (c *componentStatuses) Create(componentStatus *api.ComponentStatus) (result
}
// Update takes the representation of a componentStatus and updates it. Returns the server's representation of the componentStatus, and an error, if there is any.
-func (c *componentStatuses) Update(componentStatus *api.ComponentStatus) (result *api.ComponentStatus, err error) {
- result = &api.ComponentStatus{}
+func (c *componentStatuses) Update(componentStatus *core.ComponentStatus) (result *core.ComponentStatus, err error) {
+ result = &core.ComponentStatus{}
err = c.client.Put().
Resource("componentstatuses").
Name(componentStatus.Name).
@@ -132,8 +132,8 @@ func (c *componentStatuses) DeleteCollection(options *v1.DeleteOptions, listOpti
}
// Patch applies the patch and returns the patched componentStatus.
-func (c *componentStatuses) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.ComponentStatus, err error) {
- result = &api.ComponentStatus{}
+func (c *componentStatuses) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.ComponentStatus, err error) {
+ result = &core.ComponentStatus{}
err = c.client.Patch(pt).
Resource("componentstatuses").
SubResource(subresources...).
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/configmap.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/configmap.go
index 53ed9fed80..7f5adbc449 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/configmap.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/configmap.go
@@ -21,7 +21,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
rest "k8s.io/client-go/rest"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
scheme "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme"
)
@@ -33,14 +33,14 @@ type ConfigMapsGetter interface {
// ConfigMapInterface has methods to work with ConfigMap resources.
type ConfigMapInterface interface {
- Create(*api.ConfigMap) (*api.ConfigMap, error)
- Update(*api.ConfigMap) (*api.ConfigMap, error)
+ Create(*core.ConfigMap) (*core.ConfigMap, error)
+ Update(*core.ConfigMap) (*core.ConfigMap, error)
Delete(name string, options *v1.DeleteOptions) error
DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error
- Get(name string, options v1.GetOptions) (*api.ConfigMap, error)
- List(opts v1.ListOptions) (*api.ConfigMapList, error)
+ Get(name string, options v1.GetOptions) (*core.ConfigMap, error)
+ List(opts v1.ListOptions) (*core.ConfigMapList, error)
Watch(opts v1.ListOptions) (watch.Interface, error)
- Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.ConfigMap, err error)
+ Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.ConfigMap, err error)
ConfigMapExpansion
}
@@ -59,8 +59,8 @@ func newConfigMaps(c *CoreClient, namespace string) *configMaps {
}
// Get takes name of the configMap, and returns the corresponding configMap object, and an error if there is any.
-func (c *configMaps) Get(name string, options v1.GetOptions) (result *api.ConfigMap, err error) {
- result = &api.ConfigMap{}
+func (c *configMaps) Get(name string, options v1.GetOptions) (result *core.ConfigMap, err error) {
+ result = &core.ConfigMap{}
err = c.client.Get().
Namespace(c.ns).
Resource("configmaps").
@@ -72,8 +72,8 @@ func (c *configMaps) Get(name string, options v1.GetOptions) (result *api.Config
}
// List takes label and field selectors, and returns the list of ConfigMaps that match those selectors.
-func (c *configMaps) List(opts v1.ListOptions) (result *api.ConfigMapList, err error) {
- result = &api.ConfigMapList{}
+func (c *configMaps) List(opts v1.ListOptions) (result *core.ConfigMapList, err error) {
+ result = &core.ConfigMapList{}
err = c.client.Get().
Namespace(c.ns).
Resource("configmaps").
@@ -94,8 +94,8 @@ func (c *configMaps) Watch(opts v1.ListOptions) (watch.Interface, error) {
}
// Create takes the representation of a configMap and creates it. Returns the server's representation of the configMap, and an error, if there is any.
-func (c *configMaps) Create(configMap *api.ConfigMap) (result *api.ConfigMap, err error) {
- result = &api.ConfigMap{}
+func (c *configMaps) Create(configMap *core.ConfigMap) (result *core.ConfigMap, err error) {
+ result = &core.ConfigMap{}
err = c.client.Post().
Namespace(c.ns).
Resource("configmaps").
@@ -106,8 +106,8 @@ func (c *configMaps) Create(configMap *api.ConfigMap) (result *api.ConfigMap, er
}
// Update takes the representation of a configMap and updates it. Returns the server's representation of the configMap, and an error, if there is any.
-func (c *configMaps) Update(configMap *api.ConfigMap) (result *api.ConfigMap, err error) {
- result = &api.ConfigMap{}
+func (c *configMaps) Update(configMap *core.ConfigMap) (result *core.ConfigMap, err error) {
+ result = &core.ConfigMap{}
err = c.client.Put().
Namespace(c.ns).
Resource("configmaps").
@@ -141,8 +141,8 @@ func (c *configMaps) DeleteCollection(options *v1.DeleteOptions, listOptions v1.
}
// Patch applies the patch and returns the patched configMap.
-func (c *configMaps) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.ConfigMap, err error) {
- result = &api.ConfigMap{}
+func (c *configMaps) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.ConfigMap, err error) {
+ result = &core.ConfigMap{}
err = c.client.Patch(pt).
Namespace(c.ns).
Resource("configmaps").
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/endpoints.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/endpoints.go
index 39fe3d44c1..8a35c807a0 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/endpoints.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/endpoints.go
@@ -21,7 +21,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
rest "k8s.io/client-go/rest"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
scheme "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme"
)
@@ -33,14 +33,14 @@ type EndpointsGetter interface {
// EndpointsInterface has methods to work with Endpoints resources.
type EndpointsInterface interface {
- Create(*api.Endpoints) (*api.Endpoints, error)
- Update(*api.Endpoints) (*api.Endpoints, error)
+ Create(*core.Endpoints) (*core.Endpoints, error)
+ Update(*core.Endpoints) (*core.Endpoints, error)
Delete(name string, options *v1.DeleteOptions) error
DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error
- Get(name string, options v1.GetOptions) (*api.Endpoints, error)
- List(opts v1.ListOptions) (*api.EndpointsList, error)
+ Get(name string, options v1.GetOptions) (*core.Endpoints, error)
+ List(opts v1.ListOptions) (*core.EndpointsList, error)
Watch(opts v1.ListOptions) (watch.Interface, error)
- Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.Endpoints, err error)
+ Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.Endpoints, err error)
EndpointsExpansion
}
@@ -59,8 +59,8 @@ func newEndpoints(c *CoreClient, namespace string) *endpoints {
}
// Get takes name of the endpoints, and returns the corresponding endpoints object, and an error if there is any.
-func (c *endpoints) Get(name string, options v1.GetOptions) (result *api.Endpoints, err error) {
- result = &api.Endpoints{}
+func (c *endpoints) Get(name string, options v1.GetOptions) (result *core.Endpoints, err error) {
+ result = &core.Endpoints{}
err = c.client.Get().
Namespace(c.ns).
Resource("endpoints").
@@ -72,8 +72,8 @@ func (c *endpoints) Get(name string, options v1.GetOptions) (result *api.Endpoin
}
// List takes label and field selectors, and returns the list of Endpoints that match those selectors.
-func (c *endpoints) List(opts v1.ListOptions) (result *api.EndpointsList, err error) {
- result = &api.EndpointsList{}
+func (c *endpoints) List(opts v1.ListOptions) (result *core.EndpointsList, err error) {
+ result = &core.EndpointsList{}
err = c.client.Get().
Namespace(c.ns).
Resource("endpoints").
@@ -94,8 +94,8 @@ func (c *endpoints) Watch(opts v1.ListOptions) (watch.Interface, error) {
}
// Create takes the representation of a endpoints and creates it. Returns the server's representation of the endpoints, and an error, if there is any.
-func (c *endpoints) Create(endpoints *api.Endpoints) (result *api.Endpoints, err error) {
- result = &api.Endpoints{}
+func (c *endpoints) Create(endpoints *core.Endpoints) (result *core.Endpoints, err error) {
+ result = &core.Endpoints{}
err = c.client.Post().
Namespace(c.ns).
Resource("endpoints").
@@ -106,8 +106,8 @@ func (c *endpoints) Create(endpoints *api.Endpoints) (result *api.Endpoints, err
}
// Update takes the representation of a endpoints and updates it. Returns the server's representation of the endpoints, and an error, if there is any.
-func (c *endpoints) Update(endpoints *api.Endpoints) (result *api.Endpoints, err error) {
- result = &api.Endpoints{}
+func (c *endpoints) Update(endpoints *core.Endpoints) (result *core.Endpoints, err error) {
+ result = &core.Endpoints{}
err = c.client.Put().
Namespace(c.ns).
Resource("endpoints").
@@ -141,8 +141,8 @@ func (c *endpoints) DeleteCollection(options *v1.DeleteOptions, listOptions v1.L
}
// Patch applies the patch and returns the patched endpoints.
-func (c *endpoints) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.Endpoints, err error) {
- result = &api.Endpoints{}
+func (c *endpoints) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.Endpoints, err error) {
+ result = &core.Endpoints{}
err = c.client.Patch(pt).
Namespace(c.ns).
Resource("endpoints").
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/event.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/event.go
index 143099b670..cad5b84a3c 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/event.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/event.go
@@ -21,7 +21,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
rest "k8s.io/client-go/rest"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
scheme "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme"
)
@@ -33,14 +33,14 @@ type EventsGetter interface {
// EventInterface has methods to work with Event resources.
type EventInterface interface {
- Create(*api.Event) (*api.Event, error)
- Update(*api.Event) (*api.Event, error)
+ Create(*core.Event) (*core.Event, error)
+ Update(*core.Event) (*core.Event, error)
Delete(name string, options *v1.DeleteOptions) error
DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error
- Get(name string, options v1.GetOptions) (*api.Event, error)
- List(opts v1.ListOptions) (*api.EventList, error)
+ Get(name string, options v1.GetOptions) (*core.Event, error)
+ List(opts v1.ListOptions) (*core.EventList, error)
Watch(opts v1.ListOptions) (watch.Interface, error)
- Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.Event, err error)
+ Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.Event, err error)
EventExpansion
}
@@ -59,8 +59,8 @@ func newEvents(c *CoreClient, namespace string) *events {
}
// Get takes name of the event, and returns the corresponding event object, and an error if there is any.
-func (c *events) Get(name string, options v1.GetOptions) (result *api.Event, err error) {
- result = &api.Event{}
+func (c *events) Get(name string, options v1.GetOptions) (result *core.Event, err error) {
+ result = &core.Event{}
err = c.client.Get().
Namespace(c.ns).
Resource("events").
@@ -72,8 +72,8 @@ func (c *events) Get(name string, options v1.GetOptions) (result *api.Event, err
}
// List takes label and field selectors, and returns the list of Events that match those selectors.
-func (c *events) List(opts v1.ListOptions) (result *api.EventList, err error) {
- result = &api.EventList{}
+func (c *events) List(opts v1.ListOptions) (result *core.EventList, err error) {
+ result = &core.EventList{}
err = c.client.Get().
Namespace(c.ns).
Resource("events").
@@ -94,8 +94,8 @@ func (c *events) Watch(opts v1.ListOptions) (watch.Interface, error) {
}
// Create takes the representation of a event and creates it. Returns the server's representation of the event, and an error, if there is any.
-func (c *events) Create(event *api.Event) (result *api.Event, err error) {
- result = &api.Event{}
+func (c *events) Create(event *core.Event) (result *core.Event, err error) {
+ result = &core.Event{}
err = c.client.Post().
Namespace(c.ns).
Resource("events").
@@ -106,8 +106,8 @@ func (c *events) Create(event *api.Event) (result *api.Event, err error) {
}
// Update takes the representation of a event and updates it. Returns the server's representation of the event, and an error, if there is any.
-func (c *events) Update(event *api.Event) (result *api.Event, err error) {
- result = &api.Event{}
+func (c *events) Update(event *core.Event) (result *core.Event, err error) {
+ result = &core.Event{}
err = c.client.Put().
Namespace(c.ns).
Resource("events").
@@ -141,8 +141,8 @@ func (c *events) DeleteCollection(options *v1.DeleteOptions, listOptions v1.List
}
// Patch applies the patch and returns the patched event.
-func (c *events) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.Event, err error) {
- result = &api.Event{}
+func (c *events) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.Event, err error) {
+ result = &core.Event{}
err = c.client.Patch(pt).
Namespace(c.ns).
Resource("events").
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/event_expansion.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/event_expansion.go
index d9ac64fdb6..5f1ebb89cc 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/event_expansion.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/event_expansion.go
@@ -24,9 +24,9 @@ import (
"k8s.io/apimachinery/pkg/fields"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/ref"
- k8s_api_v1 "k8s.io/kubernetes/pkg/api/v1"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ k8s_api_v1 "k8s.io/kubernetes/pkg/apis/core/v1"
)
// The EventExpansion interface allows manually adding extra methods to the EventInterface.
@@ -155,7 +155,7 @@ type EventSinkImpl struct {
func (e *EventSinkImpl) Create(event *v1.Event) (*v1.Event, error) {
internalEvent := &api.Event{}
- err := k8s_api_v1.Convert_v1_Event_To_api_Event(event, internalEvent, nil)
+ err := k8s_api_v1.Convert_v1_Event_To_core_Event(event, internalEvent, nil)
if err != nil {
return nil, err
}
@@ -168,7 +168,7 @@ func (e *EventSinkImpl) Create(event *v1.Event) (*v1.Event, error) {
func (e *EventSinkImpl) Update(event *v1.Event) (*v1.Event, error) {
internalEvent := &api.Event{}
- err := k8s_api_v1.Convert_v1_Event_To_api_Event(event, internalEvent, nil)
+ err := k8s_api_v1.Convert_v1_Event_To_core_Event(event, internalEvent, nil)
if err != nil {
return nil, err
}
@@ -181,7 +181,7 @@ func (e *EventSinkImpl) Update(event *v1.Event) (*v1.Event, error) {
func (e *EventSinkImpl) Patch(event *v1.Event, data []byte) (*v1.Event, error) {
internalEvent := &api.Event{}
- err := k8s_api_v1.Convert_v1_Event_To_api_Event(event, internalEvent, nil)
+ err := k8s_api_v1.Convert_v1_Event_To_core_Event(event, internalEvent, nil)
if err != nil {
return nil, err
}
@@ -190,7 +190,7 @@ func (e *EventSinkImpl) Patch(event *v1.Event, data []byte) (*v1.Event, error) {
return nil, err
}
externalEvent := &v1.Event{}
- err = k8s_api_v1.Convert_api_Event_To_v1_Event(internalEvent, externalEvent, nil)
+ err = k8s_api_v1.Convert_core_Event_To_v1_Event(internalEvent, externalEvent, nil)
if err != nil {
// Patch succeeded, no need to report the failed conversion
return event, nil
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/BUILD b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/BUILD
index 33bd6660e4..e1c87b0aa7 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/BUILD
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/BUILD
@@ -34,8 +34,8 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/apis/extensions:go_default_library",
+ "//pkg/apis/autoscaling:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/core/internalversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/fields:go_default_library",
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_componentstatus.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_componentstatus.go
index 9d2bdd39e5..48151941c7 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_componentstatus.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_componentstatus.go
@@ -23,7 +23,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
testing "k8s.io/client-go/testing"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// FakeComponentStatuses implements ComponentStatusInterface
@@ -36,19 +36,19 @@ var componentstatusesResource = schema.GroupVersionResource{Group: "", Version:
var componentstatusesKind = schema.GroupVersionKind{Group: "", Version: "", Kind: "ComponentStatus"}
// Get takes name of the componentStatus, and returns the corresponding componentStatus object, and an error if there is any.
-func (c *FakeComponentStatuses) Get(name string, options v1.GetOptions) (result *api.ComponentStatus, err error) {
+func (c *FakeComponentStatuses) Get(name string, options v1.GetOptions) (result *core.ComponentStatus, err error) {
obj, err := c.Fake.
- Invokes(testing.NewRootGetAction(componentstatusesResource, name), &api.ComponentStatus{})
+ Invokes(testing.NewRootGetAction(componentstatusesResource, name), &core.ComponentStatus{})
if obj == nil {
return nil, err
}
- return obj.(*api.ComponentStatus), err
+ return obj.(*core.ComponentStatus), err
}
// List takes label and field selectors, and returns the list of ComponentStatuses that match those selectors.
-func (c *FakeComponentStatuses) List(opts v1.ListOptions) (result *api.ComponentStatusList, err error) {
+func (c *FakeComponentStatuses) List(opts v1.ListOptions) (result *core.ComponentStatusList, err error) {
obj, err := c.Fake.
- Invokes(testing.NewRootListAction(componentstatusesResource, componentstatusesKind, opts), &api.ComponentStatusList{})
+ Invokes(testing.NewRootListAction(componentstatusesResource, componentstatusesKind, opts), &core.ComponentStatusList{})
if obj == nil {
return nil, err
}
@@ -57,8 +57,8 @@ func (c *FakeComponentStatuses) List(opts v1.ListOptions) (result *api.Component
if label == nil {
label = labels.Everything()
}
- list := &api.ComponentStatusList{}
- for _, item := range obj.(*api.ComponentStatusList).Items {
+ list := &core.ComponentStatusList{}
+ for _, item := range obj.(*core.ComponentStatusList).Items {
if label.Matches(labels.Set(item.Labels)) {
list.Items = append(list.Items, item)
}
@@ -73,29 +73,29 @@ func (c *FakeComponentStatuses) Watch(opts v1.ListOptions) (watch.Interface, err
}
// Create takes the representation of a componentStatus and creates it. Returns the server's representation of the componentStatus, and an error, if there is any.
-func (c *FakeComponentStatuses) Create(componentStatus *api.ComponentStatus) (result *api.ComponentStatus, err error) {
+func (c *FakeComponentStatuses) Create(componentStatus *core.ComponentStatus) (result *core.ComponentStatus, err error) {
obj, err := c.Fake.
- Invokes(testing.NewRootCreateAction(componentstatusesResource, componentStatus), &api.ComponentStatus{})
+ Invokes(testing.NewRootCreateAction(componentstatusesResource, componentStatus), &core.ComponentStatus{})
if obj == nil {
return nil, err
}
- return obj.(*api.ComponentStatus), err
+ return obj.(*core.ComponentStatus), err
}
// Update takes the representation of a componentStatus and updates it. Returns the server's representation of the componentStatus, and an error, if there is any.
-func (c *FakeComponentStatuses) Update(componentStatus *api.ComponentStatus) (result *api.ComponentStatus, err error) {
+func (c *FakeComponentStatuses) Update(componentStatus *core.ComponentStatus) (result *core.ComponentStatus, err error) {
obj, err := c.Fake.
- Invokes(testing.NewRootUpdateAction(componentstatusesResource, componentStatus), &api.ComponentStatus{})
+ Invokes(testing.NewRootUpdateAction(componentstatusesResource, componentStatus), &core.ComponentStatus{})
if obj == nil {
return nil, err
}
- return obj.(*api.ComponentStatus), err
+ return obj.(*core.ComponentStatus), err
}
// Delete takes name of the componentStatus and deletes it. Returns an error if one occurs.
func (c *FakeComponentStatuses) Delete(name string, options *v1.DeleteOptions) error {
_, err := c.Fake.
- Invokes(testing.NewRootDeleteAction(componentstatusesResource, name), &api.ComponentStatus{})
+ Invokes(testing.NewRootDeleteAction(componentstatusesResource, name), &core.ComponentStatus{})
return err
}
@@ -103,16 +103,16 @@ func (c *FakeComponentStatuses) Delete(name string, options *v1.DeleteOptions) e
func (c *FakeComponentStatuses) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
action := testing.NewRootDeleteCollectionAction(componentstatusesResource, listOptions)
- _, err := c.Fake.Invokes(action, &api.ComponentStatusList{})
+ _, err := c.Fake.Invokes(action, &core.ComponentStatusList{})
return err
}
// Patch applies the patch and returns the patched componentStatus.
-func (c *FakeComponentStatuses) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.ComponentStatus, err error) {
+func (c *FakeComponentStatuses) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.ComponentStatus, err error) {
obj, err := c.Fake.
- Invokes(testing.NewRootPatchSubresourceAction(componentstatusesResource, name, data, subresources...), &api.ComponentStatus{})
+ Invokes(testing.NewRootPatchSubresourceAction(componentstatusesResource, name, data, subresources...), &core.ComponentStatus{})
if obj == nil {
return nil, err
}
- return obj.(*api.ComponentStatus), err
+ return obj.(*core.ComponentStatus), err
}
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_configmap.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_configmap.go
index cf5ac3e471..94b5e59b93 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_configmap.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_configmap.go
@@ -23,7 +23,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
testing "k8s.io/client-go/testing"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// FakeConfigMaps implements ConfigMapInterface
@@ -37,20 +37,20 @@ var configmapsResource = schema.GroupVersionResource{Group: "", Version: "", Res
var configmapsKind = schema.GroupVersionKind{Group: "", Version: "", Kind: "ConfigMap"}
// Get takes name of the configMap, and returns the corresponding configMap object, and an error if there is any.
-func (c *FakeConfigMaps) Get(name string, options v1.GetOptions) (result *api.ConfigMap, err error) {
+func (c *FakeConfigMaps) Get(name string, options v1.GetOptions) (result *core.ConfigMap, err error) {
obj, err := c.Fake.
- Invokes(testing.NewGetAction(configmapsResource, c.ns, name), &api.ConfigMap{})
+ Invokes(testing.NewGetAction(configmapsResource, c.ns, name), &core.ConfigMap{})
if obj == nil {
return nil, err
}
- return obj.(*api.ConfigMap), err
+ return obj.(*core.ConfigMap), err
}
// List takes label and field selectors, and returns the list of ConfigMaps that match those selectors.
-func (c *FakeConfigMaps) List(opts v1.ListOptions) (result *api.ConfigMapList, err error) {
+func (c *FakeConfigMaps) List(opts v1.ListOptions) (result *core.ConfigMapList, err error) {
obj, err := c.Fake.
- Invokes(testing.NewListAction(configmapsResource, configmapsKind, c.ns, opts), &api.ConfigMapList{})
+ Invokes(testing.NewListAction(configmapsResource, configmapsKind, c.ns, opts), &core.ConfigMapList{})
if obj == nil {
return nil, err
@@ -60,8 +60,8 @@ func (c *FakeConfigMaps) List(opts v1.ListOptions) (result *api.ConfigMapList, e
if label == nil {
label = labels.Everything()
}
- list := &api.ConfigMapList{}
- for _, item := range obj.(*api.ConfigMapList).Items {
+ list := &core.ConfigMapList{}
+ for _, item := range obj.(*core.ConfigMapList).Items {
if label.Matches(labels.Set(item.Labels)) {
list.Items = append(list.Items, item)
}
@@ -77,31 +77,31 @@ func (c *FakeConfigMaps) Watch(opts v1.ListOptions) (watch.Interface, error) {
}
// Create takes the representation of a configMap and creates it. Returns the server's representation of the configMap, and an error, if there is any.
-func (c *FakeConfigMaps) Create(configMap *api.ConfigMap) (result *api.ConfigMap, err error) {
+func (c *FakeConfigMaps) Create(configMap *core.ConfigMap) (result *core.ConfigMap, err error) {
obj, err := c.Fake.
- Invokes(testing.NewCreateAction(configmapsResource, c.ns, configMap), &api.ConfigMap{})
+ Invokes(testing.NewCreateAction(configmapsResource, c.ns, configMap), &core.ConfigMap{})
if obj == nil {
return nil, err
}
- return obj.(*api.ConfigMap), err
+ return obj.(*core.ConfigMap), err
}
// Update takes the representation of a configMap and updates it. Returns the server's representation of the configMap, and an error, if there is any.
-func (c *FakeConfigMaps) Update(configMap *api.ConfigMap) (result *api.ConfigMap, err error) {
+func (c *FakeConfigMaps) Update(configMap *core.ConfigMap) (result *core.ConfigMap, err error) {
obj, err := c.Fake.
- Invokes(testing.NewUpdateAction(configmapsResource, c.ns, configMap), &api.ConfigMap{})
+ Invokes(testing.NewUpdateAction(configmapsResource, c.ns, configMap), &core.ConfigMap{})
if obj == nil {
return nil, err
}
- return obj.(*api.ConfigMap), err
+ return obj.(*core.ConfigMap), err
}
// Delete takes name of the configMap and deletes it. Returns an error if one occurs.
func (c *FakeConfigMaps) Delete(name string, options *v1.DeleteOptions) error {
_, err := c.Fake.
- Invokes(testing.NewDeleteAction(configmapsResource, c.ns, name), &api.ConfigMap{})
+ Invokes(testing.NewDeleteAction(configmapsResource, c.ns, name), &core.ConfigMap{})
return err
}
@@ -110,17 +110,17 @@ func (c *FakeConfigMaps) Delete(name string, options *v1.DeleteOptions) error {
func (c *FakeConfigMaps) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
action := testing.NewDeleteCollectionAction(configmapsResource, c.ns, listOptions)
- _, err := c.Fake.Invokes(action, &api.ConfigMapList{})
+ _, err := c.Fake.Invokes(action, &core.ConfigMapList{})
return err
}
// Patch applies the patch and returns the patched configMap.
-func (c *FakeConfigMaps) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.ConfigMap, err error) {
+func (c *FakeConfigMaps) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.ConfigMap, err error) {
obj, err := c.Fake.
- Invokes(testing.NewPatchSubresourceAction(configmapsResource, c.ns, name, data, subresources...), &api.ConfigMap{})
+ Invokes(testing.NewPatchSubresourceAction(configmapsResource, c.ns, name, data, subresources...), &core.ConfigMap{})
if obj == nil {
return nil, err
}
- return obj.(*api.ConfigMap), err
+ return obj.(*core.ConfigMap), err
}
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_endpoints.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_endpoints.go
index 4e31fdcddc..bfe1ee9248 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_endpoints.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_endpoints.go
@@ -23,7 +23,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
testing "k8s.io/client-go/testing"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// FakeEndpoints implements EndpointsInterface
@@ -37,20 +37,20 @@ var endpointsResource = schema.GroupVersionResource{Group: "", Version: "", Reso
var endpointsKind = schema.GroupVersionKind{Group: "", Version: "", Kind: "Endpoints"}
// Get takes name of the endpoints, and returns the corresponding endpoints object, and an error if there is any.
-func (c *FakeEndpoints) Get(name string, options v1.GetOptions) (result *api.Endpoints, err error) {
+func (c *FakeEndpoints) Get(name string, options v1.GetOptions) (result *core.Endpoints, err error) {
obj, err := c.Fake.
- Invokes(testing.NewGetAction(endpointsResource, c.ns, name), &api.Endpoints{})
+ Invokes(testing.NewGetAction(endpointsResource, c.ns, name), &core.Endpoints{})
if obj == nil {
return nil, err
}
- return obj.(*api.Endpoints), err
+ return obj.(*core.Endpoints), err
}
// List takes label and field selectors, and returns the list of Endpoints that match those selectors.
-func (c *FakeEndpoints) List(opts v1.ListOptions) (result *api.EndpointsList, err error) {
+func (c *FakeEndpoints) List(opts v1.ListOptions) (result *core.EndpointsList, err error) {
obj, err := c.Fake.
- Invokes(testing.NewListAction(endpointsResource, endpointsKind, c.ns, opts), &api.EndpointsList{})
+ Invokes(testing.NewListAction(endpointsResource, endpointsKind, c.ns, opts), &core.EndpointsList{})
if obj == nil {
return nil, err
@@ -60,8 +60,8 @@ func (c *FakeEndpoints) List(opts v1.ListOptions) (result *api.EndpointsList, er
if label == nil {
label = labels.Everything()
}
- list := &api.EndpointsList{}
- for _, item := range obj.(*api.EndpointsList).Items {
+ list := &core.EndpointsList{}
+ for _, item := range obj.(*core.EndpointsList).Items {
if label.Matches(labels.Set(item.Labels)) {
list.Items = append(list.Items, item)
}
@@ -77,31 +77,31 @@ func (c *FakeEndpoints) Watch(opts v1.ListOptions) (watch.Interface, error) {
}
// Create takes the representation of a endpoints and creates it. Returns the server's representation of the endpoints, and an error, if there is any.
-func (c *FakeEndpoints) Create(endpoints *api.Endpoints) (result *api.Endpoints, err error) {
+func (c *FakeEndpoints) Create(endpoints *core.Endpoints) (result *core.Endpoints, err error) {
obj, err := c.Fake.
- Invokes(testing.NewCreateAction(endpointsResource, c.ns, endpoints), &api.Endpoints{})
+ Invokes(testing.NewCreateAction(endpointsResource, c.ns, endpoints), &core.Endpoints{})
if obj == nil {
return nil, err
}
- return obj.(*api.Endpoints), err
+ return obj.(*core.Endpoints), err
}
// Update takes the representation of a endpoints and updates it. Returns the server's representation of the endpoints, and an error, if there is any.
-func (c *FakeEndpoints) Update(endpoints *api.Endpoints) (result *api.Endpoints, err error) {
+func (c *FakeEndpoints) Update(endpoints *core.Endpoints) (result *core.Endpoints, err error) {
obj, err := c.Fake.
- Invokes(testing.NewUpdateAction(endpointsResource, c.ns, endpoints), &api.Endpoints{})
+ Invokes(testing.NewUpdateAction(endpointsResource, c.ns, endpoints), &core.Endpoints{})
if obj == nil {
return nil, err
}
- return obj.(*api.Endpoints), err
+ return obj.(*core.Endpoints), err
}
// Delete takes name of the endpoints and deletes it. Returns an error if one occurs.
func (c *FakeEndpoints) Delete(name string, options *v1.DeleteOptions) error {
_, err := c.Fake.
- Invokes(testing.NewDeleteAction(endpointsResource, c.ns, name), &api.Endpoints{})
+ Invokes(testing.NewDeleteAction(endpointsResource, c.ns, name), &core.Endpoints{})
return err
}
@@ -110,17 +110,17 @@ func (c *FakeEndpoints) Delete(name string, options *v1.DeleteOptions) error {
func (c *FakeEndpoints) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
action := testing.NewDeleteCollectionAction(endpointsResource, c.ns, listOptions)
- _, err := c.Fake.Invokes(action, &api.EndpointsList{})
+ _, err := c.Fake.Invokes(action, &core.EndpointsList{})
return err
}
// Patch applies the patch and returns the patched endpoints.
-func (c *FakeEndpoints) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.Endpoints, err error) {
+func (c *FakeEndpoints) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.Endpoints, err error) {
obj, err := c.Fake.
- Invokes(testing.NewPatchSubresourceAction(endpointsResource, c.ns, name, data, subresources...), &api.Endpoints{})
+ Invokes(testing.NewPatchSubresourceAction(endpointsResource, c.ns, name, data, subresources...), &core.Endpoints{})
if obj == nil {
return nil, err
}
- return obj.(*api.Endpoints), err
+ return obj.(*core.Endpoints), err
}
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_event.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_event.go
index 3242483dfa..52dfe16674 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_event.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_event.go
@@ -23,7 +23,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
testing "k8s.io/client-go/testing"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// FakeEvents implements EventInterface
@@ -37,20 +37,20 @@ var eventsResource = schema.GroupVersionResource{Group: "", Version: "", Resourc
var eventsKind = schema.GroupVersionKind{Group: "", Version: "", Kind: "Event"}
// Get takes name of the event, and returns the corresponding event object, and an error if there is any.
-func (c *FakeEvents) Get(name string, options v1.GetOptions) (result *api.Event, err error) {
+func (c *FakeEvents) Get(name string, options v1.GetOptions) (result *core.Event, err error) {
obj, err := c.Fake.
- Invokes(testing.NewGetAction(eventsResource, c.ns, name), &api.Event{})
+ Invokes(testing.NewGetAction(eventsResource, c.ns, name), &core.Event{})
if obj == nil {
return nil, err
}
- return obj.(*api.Event), err
+ return obj.(*core.Event), err
}
// List takes label and field selectors, and returns the list of Events that match those selectors.
-func (c *FakeEvents) List(opts v1.ListOptions) (result *api.EventList, err error) {
+func (c *FakeEvents) List(opts v1.ListOptions) (result *core.EventList, err error) {
obj, err := c.Fake.
- Invokes(testing.NewListAction(eventsResource, eventsKind, c.ns, opts), &api.EventList{})
+ Invokes(testing.NewListAction(eventsResource, eventsKind, c.ns, opts), &core.EventList{})
if obj == nil {
return nil, err
@@ -60,8 +60,8 @@ func (c *FakeEvents) List(opts v1.ListOptions) (result *api.EventList, err error
if label == nil {
label = labels.Everything()
}
- list := &api.EventList{}
- for _, item := range obj.(*api.EventList).Items {
+ list := &core.EventList{}
+ for _, item := range obj.(*core.EventList).Items {
if label.Matches(labels.Set(item.Labels)) {
list.Items = append(list.Items, item)
}
@@ -77,31 +77,31 @@ func (c *FakeEvents) Watch(opts v1.ListOptions) (watch.Interface, error) {
}
// Create takes the representation of a event and creates it. Returns the server's representation of the event, and an error, if there is any.
-func (c *FakeEvents) Create(event *api.Event) (result *api.Event, err error) {
+func (c *FakeEvents) Create(event *core.Event) (result *core.Event, err error) {
obj, err := c.Fake.
- Invokes(testing.NewCreateAction(eventsResource, c.ns, event), &api.Event{})
+ Invokes(testing.NewCreateAction(eventsResource, c.ns, event), &core.Event{})
if obj == nil {
return nil, err
}
- return obj.(*api.Event), err
+ return obj.(*core.Event), err
}
// Update takes the representation of a event and updates it. Returns the server's representation of the event, and an error, if there is any.
-func (c *FakeEvents) Update(event *api.Event) (result *api.Event, err error) {
+func (c *FakeEvents) Update(event *core.Event) (result *core.Event, err error) {
obj, err := c.Fake.
- Invokes(testing.NewUpdateAction(eventsResource, c.ns, event), &api.Event{})
+ Invokes(testing.NewUpdateAction(eventsResource, c.ns, event), &core.Event{})
if obj == nil {
return nil, err
}
- return obj.(*api.Event), err
+ return obj.(*core.Event), err
}
// Delete takes name of the event and deletes it. Returns an error if one occurs.
func (c *FakeEvents) Delete(name string, options *v1.DeleteOptions) error {
_, err := c.Fake.
- Invokes(testing.NewDeleteAction(eventsResource, c.ns, name), &api.Event{})
+ Invokes(testing.NewDeleteAction(eventsResource, c.ns, name), &core.Event{})
return err
}
@@ -110,17 +110,17 @@ func (c *FakeEvents) Delete(name string, options *v1.DeleteOptions) error {
func (c *FakeEvents) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
action := testing.NewDeleteCollectionAction(eventsResource, c.ns, listOptions)
- _, err := c.Fake.Invokes(action, &api.EventList{})
+ _, err := c.Fake.Invokes(action, &core.EventList{})
return err
}
// Patch applies the patch and returns the patched event.
-func (c *FakeEvents) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.Event, err error) {
+func (c *FakeEvents) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.Event, err error) {
obj, err := c.Fake.
- Invokes(testing.NewPatchSubresourceAction(eventsResource, c.ns, name, data, subresources...), &api.Event{})
+ Invokes(testing.NewPatchSubresourceAction(eventsResource, c.ns, name, data, subresources...), &core.Event{})
if obj == nil {
return nil, err
}
- return obj.(*api.Event), err
+ return obj.(*core.Event), err
}
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_event_expansion.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_event_expansion.go
index 283578a58c..3adbbac702 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_event_expansion.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_event_expansion.go
@@ -21,7 +21,7 @@ import (
"k8s.io/apimachinery/pkg/fields"
"k8s.io/apimachinery/pkg/runtime"
core "k8s.io/client-go/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func (c *FakeEvents) CreateWithEventNamespace(event *api.Event) (*api.Event, error) {
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_limitrange.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_limitrange.go
index 7323825c63..89287b620b 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_limitrange.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_limitrange.go
@@ -23,7 +23,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
testing "k8s.io/client-go/testing"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// FakeLimitRanges implements LimitRangeInterface
@@ -37,20 +37,20 @@ var limitrangesResource = schema.GroupVersionResource{Group: "", Version: "", Re
var limitrangesKind = schema.GroupVersionKind{Group: "", Version: "", Kind: "LimitRange"}
// Get takes name of the limitRange, and returns the corresponding limitRange object, and an error if there is any.
-func (c *FakeLimitRanges) Get(name string, options v1.GetOptions) (result *api.LimitRange, err error) {
+func (c *FakeLimitRanges) Get(name string, options v1.GetOptions) (result *core.LimitRange, err error) {
obj, err := c.Fake.
- Invokes(testing.NewGetAction(limitrangesResource, c.ns, name), &api.LimitRange{})
+ Invokes(testing.NewGetAction(limitrangesResource, c.ns, name), &core.LimitRange{})
if obj == nil {
return nil, err
}
- return obj.(*api.LimitRange), err
+ return obj.(*core.LimitRange), err
}
// List takes label and field selectors, and returns the list of LimitRanges that match those selectors.
-func (c *FakeLimitRanges) List(opts v1.ListOptions) (result *api.LimitRangeList, err error) {
+func (c *FakeLimitRanges) List(opts v1.ListOptions) (result *core.LimitRangeList, err error) {
obj, err := c.Fake.
- Invokes(testing.NewListAction(limitrangesResource, limitrangesKind, c.ns, opts), &api.LimitRangeList{})
+ Invokes(testing.NewListAction(limitrangesResource, limitrangesKind, c.ns, opts), &core.LimitRangeList{})
if obj == nil {
return nil, err
@@ -60,8 +60,8 @@ func (c *FakeLimitRanges) List(opts v1.ListOptions) (result *api.LimitRangeList,
if label == nil {
label = labels.Everything()
}
- list := &api.LimitRangeList{}
- for _, item := range obj.(*api.LimitRangeList).Items {
+ list := &core.LimitRangeList{}
+ for _, item := range obj.(*core.LimitRangeList).Items {
if label.Matches(labels.Set(item.Labels)) {
list.Items = append(list.Items, item)
}
@@ -77,31 +77,31 @@ func (c *FakeLimitRanges) Watch(opts v1.ListOptions) (watch.Interface, error) {
}
// Create takes the representation of a limitRange and creates it. Returns the server's representation of the limitRange, and an error, if there is any.
-func (c *FakeLimitRanges) Create(limitRange *api.LimitRange) (result *api.LimitRange, err error) {
+func (c *FakeLimitRanges) Create(limitRange *core.LimitRange) (result *core.LimitRange, err error) {
obj, err := c.Fake.
- Invokes(testing.NewCreateAction(limitrangesResource, c.ns, limitRange), &api.LimitRange{})
+ Invokes(testing.NewCreateAction(limitrangesResource, c.ns, limitRange), &core.LimitRange{})
if obj == nil {
return nil, err
}
- return obj.(*api.LimitRange), err
+ return obj.(*core.LimitRange), err
}
// Update takes the representation of a limitRange and updates it. Returns the server's representation of the limitRange, and an error, if there is any.
-func (c *FakeLimitRanges) Update(limitRange *api.LimitRange) (result *api.LimitRange, err error) {
+func (c *FakeLimitRanges) Update(limitRange *core.LimitRange) (result *core.LimitRange, err error) {
obj, err := c.Fake.
- Invokes(testing.NewUpdateAction(limitrangesResource, c.ns, limitRange), &api.LimitRange{})
+ Invokes(testing.NewUpdateAction(limitrangesResource, c.ns, limitRange), &core.LimitRange{})
if obj == nil {
return nil, err
}
- return obj.(*api.LimitRange), err
+ return obj.(*core.LimitRange), err
}
// Delete takes name of the limitRange and deletes it. Returns an error if one occurs.
func (c *FakeLimitRanges) Delete(name string, options *v1.DeleteOptions) error {
_, err := c.Fake.
- Invokes(testing.NewDeleteAction(limitrangesResource, c.ns, name), &api.LimitRange{})
+ Invokes(testing.NewDeleteAction(limitrangesResource, c.ns, name), &core.LimitRange{})
return err
}
@@ -110,17 +110,17 @@ func (c *FakeLimitRanges) Delete(name string, options *v1.DeleteOptions) error {
func (c *FakeLimitRanges) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
action := testing.NewDeleteCollectionAction(limitrangesResource, c.ns, listOptions)
- _, err := c.Fake.Invokes(action, &api.LimitRangeList{})
+ _, err := c.Fake.Invokes(action, &core.LimitRangeList{})
return err
}
// Patch applies the patch and returns the patched limitRange.
-func (c *FakeLimitRanges) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.LimitRange, err error) {
+func (c *FakeLimitRanges) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.LimitRange, err error) {
obj, err := c.Fake.
- Invokes(testing.NewPatchSubresourceAction(limitrangesResource, c.ns, name, data, subresources...), &api.LimitRange{})
+ Invokes(testing.NewPatchSubresourceAction(limitrangesResource, c.ns, name, data, subresources...), &core.LimitRange{})
if obj == nil {
return nil, err
}
- return obj.(*api.LimitRange), err
+ return obj.(*core.LimitRange), err
}
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_namespace.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_namespace.go
index be812a4b85..7c5e8353ea 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_namespace.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_namespace.go
@@ -23,7 +23,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
testing "k8s.io/client-go/testing"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// FakeNamespaces implements NamespaceInterface
@@ -36,19 +36,19 @@ var namespacesResource = schema.GroupVersionResource{Group: "", Version: "", Res
var namespacesKind = schema.GroupVersionKind{Group: "", Version: "", Kind: "Namespace"}
// Get takes name of the namespace, and returns the corresponding namespace object, and an error if there is any.
-func (c *FakeNamespaces) Get(name string, options v1.GetOptions) (result *api.Namespace, err error) {
+func (c *FakeNamespaces) Get(name string, options v1.GetOptions) (result *core.Namespace, err error) {
obj, err := c.Fake.
- Invokes(testing.NewRootGetAction(namespacesResource, name), &api.Namespace{})
+ Invokes(testing.NewRootGetAction(namespacesResource, name), &core.Namespace{})
if obj == nil {
return nil, err
}
- return obj.(*api.Namespace), err
+ return obj.(*core.Namespace), err
}
// List takes label and field selectors, and returns the list of Namespaces that match those selectors.
-func (c *FakeNamespaces) List(opts v1.ListOptions) (result *api.NamespaceList, err error) {
+func (c *FakeNamespaces) List(opts v1.ListOptions) (result *core.NamespaceList, err error) {
obj, err := c.Fake.
- Invokes(testing.NewRootListAction(namespacesResource, namespacesKind, opts), &api.NamespaceList{})
+ Invokes(testing.NewRootListAction(namespacesResource, namespacesKind, opts), &core.NamespaceList{})
if obj == nil {
return nil, err
}
@@ -57,8 +57,8 @@ func (c *FakeNamespaces) List(opts v1.ListOptions) (result *api.NamespaceList, e
if label == nil {
label = labels.Everything()
}
- list := &api.NamespaceList{}
- for _, item := range obj.(*api.NamespaceList).Items {
+ list := &core.NamespaceList{}
+ for _, item := range obj.(*core.NamespaceList).Items {
if label.Matches(labels.Set(item.Labels)) {
list.Items = append(list.Items, item)
}
@@ -73,40 +73,40 @@ func (c *FakeNamespaces) Watch(opts v1.ListOptions) (watch.Interface, error) {
}
// Create takes the representation of a namespace and creates it. Returns the server's representation of the namespace, and an error, if there is any.
-func (c *FakeNamespaces) Create(namespace *api.Namespace) (result *api.Namespace, err error) {
+func (c *FakeNamespaces) Create(namespace *core.Namespace) (result *core.Namespace, err error) {
obj, err := c.Fake.
- Invokes(testing.NewRootCreateAction(namespacesResource, namespace), &api.Namespace{})
+ Invokes(testing.NewRootCreateAction(namespacesResource, namespace), &core.Namespace{})
if obj == nil {
return nil, err
}
- return obj.(*api.Namespace), err
+ return obj.(*core.Namespace), err
}
// Update takes the representation of a namespace and updates it. Returns the server's representation of the namespace, and an error, if there is any.
-func (c *FakeNamespaces) Update(namespace *api.Namespace) (result *api.Namespace, err error) {
+func (c *FakeNamespaces) Update(namespace *core.Namespace) (result *core.Namespace, err error) {
obj, err := c.Fake.
- Invokes(testing.NewRootUpdateAction(namespacesResource, namespace), &api.Namespace{})
+ Invokes(testing.NewRootUpdateAction(namespacesResource, namespace), &core.Namespace{})
if obj == nil {
return nil, err
}
- return obj.(*api.Namespace), err
+ return obj.(*core.Namespace), err
}
// UpdateStatus was generated because the type contains a Status member.
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
-func (c *FakeNamespaces) UpdateStatus(namespace *api.Namespace) (*api.Namespace, error) {
+func (c *FakeNamespaces) UpdateStatus(namespace *core.Namespace) (*core.Namespace, error) {
obj, err := c.Fake.
- Invokes(testing.NewRootUpdateSubresourceAction(namespacesResource, "status", namespace), &api.Namespace{})
+ Invokes(testing.NewRootUpdateSubresourceAction(namespacesResource, "status", namespace), &core.Namespace{})
if obj == nil {
return nil, err
}
- return obj.(*api.Namespace), err
+ return obj.(*core.Namespace), err
}
// Delete takes name of the namespace and deletes it. Returns an error if one occurs.
func (c *FakeNamespaces) Delete(name string, options *v1.DeleteOptions) error {
_, err := c.Fake.
- Invokes(testing.NewRootDeleteAction(namespacesResource, name), &api.Namespace{})
+ Invokes(testing.NewRootDeleteAction(namespacesResource, name), &core.Namespace{})
return err
}
@@ -114,16 +114,16 @@ func (c *FakeNamespaces) Delete(name string, options *v1.DeleteOptions) error {
func (c *FakeNamespaces) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
action := testing.NewRootDeleteCollectionAction(namespacesResource, listOptions)
- _, err := c.Fake.Invokes(action, &api.NamespaceList{})
+ _, err := c.Fake.Invokes(action, &core.NamespaceList{})
return err
}
// Patch applies the patch and returns the patched namespace.
-func (c *FakeNamespaces) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.Namespace, err error) {
+func (c *FakeNamespaces) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.Namespace, err error) {
obj, err := c.Fake.
- Invokes(testing.NewRootPatchSubresourceAction(namespacesResource, name, data, subresources...), &api.Namespace{})
+ Invokes(testing.NewRootPatchSubresourceAction(namespacesResource, name, data, subresources...), &core.Namespace{})
if obj == nil {
return nil, err
}
- return obj.(*api.Namespace), err
+ return obj.(*core.Namespace), err
}
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_namespace_expansion.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_namespace_expansion.go
index dd425cf8c1..77200c72fb 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_namespace_expansion.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_namespace_expansion.go
@@ -18,7 +18,7 @@ package fake
import (
core "k8s.io/client-go/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func (c *FakeNamespaces) Finalize(namespace *api.Namespace) (*api.Namespace, error) {
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_node.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_node.go
index 55be99ece2..4fdff82f6c 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_node.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_node.go
@@ -23,7 +23,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
testing "k8s.io/client-go/testing"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// FakeNodes implements NodeInterface
@@ -36,19 +36,19 @@ var nodesResource = schema.GroupVersionResource{Group: "", Version: "", Resource
var nodesKind = schema.GroupVersionKind{Group: "", Version: "", Kind: "Node"}
// Get takes name of the node, and returns the corresponding node object, and an error if there is any.
-func (c *FakeNodes) Get(name string, options v1.GetOptions) (result *api.Node, err error) {
+func (c *FakeNodes) Get(name string, options v1.GetOptions) (result *core.Node, err error) {
obj, err := c.Fake.
- Invokes(testing.NewRootGetAction(nodesResource, name), &api.Node{})
+ Invokes(testing.NewRootGetAction(nodesResource, name), &core.Node{})
if obj == nil {
return nil, err
}
- return obj.(*api.Node), err
+ return obj.(*core.Node), err
}
// List takes label and field selectors, and returns the list of Nodes that match those selectors.
-func (c *FakeNodes) List(opts v1.ListOptions) (result *api.NodeList, err error) {
+func (c *FakeNodes) List(opts v1.ListOptions) (result *core.NodeList, err error) {
obj, err := c.Fake.
- Invokes(testing.NewRootListAction(nodesResource, nodesKind, opts), &api.NodeList{})
+ Invokes(testing.NewRootListAction(nodesResource, nodesKind, opts), &core.NodeList{})
if obj == nil {
return nil, err
}
@@ -57,8 +57,8 @@ func (c *FakeNodes) List(opts v1.ListOptions) (result *api.NodeList, err error)
if label == nil {
label = labels.Everything()
}
- list := &api.NodeList{}
- for _, item := range obj.(*api.NodeList).Items {
+ list := &core.NodeList{}
+ for _, item := range obj.(*core.NodeList).Items {
if label.Matches(labels.Set(item.Labels)) {
list.Items = append(list.Items, item)
}
@@ -73,40 +73,40 @@ func (c *FakeNodes) Watch(opts v1.ListOptions) (watch.Interface, error) {
}
// Create takes the representation of a node and creates it. Returns the server's representation of the node, and an error, if there is any.
-func (c *FakeNodes) Create(node *api.Node) (result *api.Node, err error) {
+func (c *FakeNodes) Create(node *core.Node) (result *core.Node, err error) {
obj, err := c.Fake.
- Invokes(testing.NewRootCreateAction(nodesResource, node), &api.Node{})
+ Invokes(testing.NewRootCreateAction(nodesResource, node), &core.Node{})
if obj == nil {
return nil, err
}
- return obj.(*api.Node), err
+ return obj.(*core.Node), err
}
// Update takes the representation of a node and updates it. Returns the server's representation of the node, and an error, if there is any.
-func (c *FakeNodes) Update(node *api.Node) (result *api.Node, err error) {
+func (c *FakeNodes) Update(node *core.Node) (result *core.Node, err error) {
obj, err := c.Fake.
- Invokes(testing.NewRootUpdateAction(nodesResource, node), &api.Node{})
+ Invokes(testing.NewRootUpdateAction(nodesResource, node), &core.Node{})
if obj == nil {
return nil, err
}
- return obj.(*api.Node), err
+ return obj.(*core.Node), err
}
// UpdateStatus was generated because the type contains a Status member.
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
-func (c *FakeNodes) UpdateStatus(node *api.Node) (*api.Node, error) {
+func (c *FakeNodes) UpdateStatus(node *core.Node) (*core.Node, error) {
obj, err := c.Fake.
- Invokes(testing.NewRootUpdateSubresourceAction(nodesResource, "status", node), &api.Node{})
+ Invokes(testing.NewRootUpdateSubresourceAction(nodesResource, "status", node), &core.Node{})
if obj == nil {
return nil, err
}
- return obj.(*api.Node), err
+ return obj.(*core.Node), err
}
// Delete takes name of the node and deletes it. Returns an error if one occurs.
func (c *FakeNodes) Delete(name string, options *v1.DeleteOptions) error {
_, err := c.Fake.
- Invokes(testing.NewRootDeleteAction(nodesResource, name), &api.Node{})
+ Invokes(testing.NewRootDeleteAction(nodesResource, name), &core.Node{})
return err
}
@@ -114,16 +114,16 @@ func (c *FakeNodes) Delete(name string, options *v1.DeleteOptions) error {
func (c *FakeNodes) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
action := testing.NewRootDeleteCollectionAction(nodesResource, listOptions)
- _, err := c.Fake.Invokes(action, &api.NodeList{})
+ _, err := c.Fake.Invokes(action, &core.NodeList{})
return err
}
// Patch applies the patch and returns the patched node.
-func (c *FakeNodes) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.Node, err error) {
+func (c *FakeNodes) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.Node, err error) {
obj, err := c.Fake.
- Invokes(testing.NewRootPatchSubresourceAction(nodesResource, name, data, subresources...), &api.Node{})
+ Invokes(testing.NewRootPatchSubresourceAction(nodesResource, name, data, subresources...), &core.Node{})
if obj == nil {
return nil, err
}
- return obj.(*api.Node), err
+ return obj.(*core.Node), err
}
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_node_expansion.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_node_expansion.go
index d119e95a45..6d5df8dc74 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_node_expansion.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_node_expansion.go
@@ -18,7 +18,7 @@ package fake
import (
core "k8s.io/client-go/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func (c *FakeNodes) PatchStatus(nodeName string, data []byte) (*api.Node, error) {
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_persistentvolume.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_persistentvolume.go
index b55c8cd6de..a91ff70b31 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_persistentvolume.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_persistentvolume.go
@@ -23,7 +23,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
testing "k8s.io/client-go/testing"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// FakePersistentVolumes implements PersistentVolumeInterface
@@ -36,19 +36,19 @@ var persistentvolumesResource = schema.GroupVersionResource{Group: "", Version:
var persistentvolumesKind = schema.GroupVersionKind{Group: "", Version: "", Kind: "PersistentVolume"}
// Get takes name of the persistentVolume, and returns the corresponding persistentVolume object, and an error if there is any.
-func (c *FakePersistentVolumes) Get(name string, options v1.GetOptions) (result *api.PersistentVolume, err error) {
+func (c *FakePersistentVolumes) Get(name string, options v1.GetOptions) (result *core.PersistentVolume, err error) {
obj, err := c.Fake.
- Invokes(testing.NewRootGetAction(persistentvolumesResource, name), &api.PersistentVolume{})
+ Invokes(testing.NewRootGetAction(persistentvolumesResource, name), &core.PersistentVolume{})
if obj == nil {
return nil, err
}
- return obj.(*api.PersistentVolume), err
+ return obj.(*core.PersistentVolume), err
}
// List takes label and field selectors, and returns the list of PersistentVolumes that match those selectors.
-func (c *FakePersistentVolumes) List(opts v1.ListOptions) (result *api.PersistentVolumeList, err error) {
+func (c *FakePersistentVolumes) List(opts v1.ListOptions) (result *core.PersistentVolumeList, err error) {
obj, err := c.Fake.
- Invokes(testing.NewRootListAction(persistentvolumesResource, persistentvolumesKind, opts), &api.PersistentVolumeList{})
+ Invokes(testing.NewRootListAction(persistentvolumesResource, persistentvolumesKind, opts), &core.PersistentVolumeList{})
if obj == nil {
return nil, err
}
@@ -57,8 +57,8 @@ func (c *FakePersistentVolumes) List(opts v1.ListOptions) (result *api.Persisten
if label == nil {
label = labels.Everything()
}
- list := &api.PersistentVolumeList{}
- for _, item := range obj.(*api.PersistentVolumeList).Items {
+ list := &core.PersistentVolumeList{}
+ for _, item := range obj.(*core.PersistentVolumeList).Items {
if label.Matches(labels.Set(item.Labels)) {
list.Items = append(list.Items, item)
}
@@ -73,40 +73,40 @@ func (c *FakePersistentVolumes) Watch(opts v1.ListOptions) (watch.Interface, err
}
// Create takes the representation of a persistentVolume and creates it. Returns the server's representation of the persistentVolume, and an error, if there is any.
-func (c *FakePersistentVolumes) Create(persistentVolume *api.PersistentVolume) (result *api.PersistentVolume, err error) {
+func (c *FakePersistentVolumes) Create(persistentVolume *core.PersistentVolume) (result *core.PersistentVolume, err error) {
obj, err := c.Fake.
- Invokes(testing.NewRootCreateAction(persistentvolumesResource, persistentVolume), &api.PersistentVolume{})
+ Invokes(testing.NewRootCreateAction(persistentvolumesResource, persistentVolume), &core.PersistentVolume{})
if obj == nil {
return nil, err
}
- return obj.(*api.PersistentVolume), err
+ return obj.(*core.PersistentVolume), err
}
// Update takes the representation of a persistentVolume and updates it. Returns the server's representation of the persistentVolume, and an error, if there is any.
-func (c *FakePersistentVolumes) Update(persistentVolume *api.PersistentVolume) (result *api.PersistentVolume, err error) {
+func (c *FakePersistentVolumes) Update(persistentVolume *core.PersistentVolume) (result *core.PersistentVolume, err error) {
obj, err := c.Fake.
- Invokes(testing.NewRootUpdateAction(persistentvolumesResource, persistentVolume), &api.PersistentVolume{})
+ Invokes(testing.NewRootUpdateAction(persistentvolumesResource, persistentVolume), &core.PersistentVolume{})
if obj == nil {
return nil, err
}
- return obj.(*api.PersistentVolume), err
+ return obj.(*core.PersistentVolume), err
}
// UpdateStatus was generated because the type contains a Status member.
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
-func (c *FakePersistentVolumes) UpdateStatus(persistentVolume *api.PersistentVolume) (*api.PersistentVolume, error) {
+func (c *FakePersistentVolumes) UpdateStatus(persistentVolume *core.PersistentVolume) (*core.PersistentVolume, error) {
obj, err := c.Fake.
- Invokes(testing.NewRootUpdateSubresourceAction(persistentvolumesResource, "status", persistentVolume), &api.PersistentVolume{})
+ Invokes(testing.NewRootUpdateSubresourceAction(persistentvolumesResource, "status", persistentVolume), &core.PersistentVolume{})
if obj == nil {
return nil, err
}
- return obj.(*api.PersistentVolume), err
+ return obj.(*core.PersistentVolume), err
}
// Delete takes name of the persistentVolume and deletes it. Returns an error if one occurs.
func (c *FakePersistentVolumes) Delete(name string, options *v1.DeleteOptions) error {
_, err := c.Fake.
- Invokes(testing.NewRootDeleteAction(persistentvolumesResource, name), &api.PersistentVolume{})
+ Invokes(testing.NewRootDeleteAction(persistentvolumesResource, name), &core.PersistentVolume{})
return err
}
@@ -114,16 +114,16 @@ func (c *FakePersistentVolumes) Delete(name string, options *v1.DeleteOptions) e
func (c *FakePersistentVolumes) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
action := testing.NewRootDeleteCollectionAction(persistentvolumesResource, listOptions)
- _, err := c.Fake.Invokes(action, &api.PersistentVolumeList{})
+ _, err := c.Fake.Invokes(action, &core.PersistentVolumeList{})
return err
}
// Patch applies the patch and returns the patched persistentVolume.
-func (c *FakePersistentVolumes) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.PersistentVolume, err error) {
+func (c *FakePersistentVolumes) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.PersistentVolume, err error) {
obj, err := c.Fake.
- Invokes(testing.NewRootPatchSubresourceAction(persistentvolumesResource, name, data, subresources...), &api.PersistentVolume{})
+ Invokes(testing.NewRootPatchSubresourceAction(persistentvolumesResource, name, data, subresources...), &core.PersistentVolume{})
if obj == nil {
return nil, err
}
- return obj.(*api.PersistentVolume), err
+ return obj.(*core.PersistentVolume), err
}
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_persistentvolumeclaim.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_persistentvolumeclaim.go
index 34727f80ab..db5659ea95 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_persistentvolumeclaim.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_persistentvolumeclaim.go
@@ -23,7 +23,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
testing "k8s.io/client-go/testing"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// FakePersistentVolumeClaims implements PersistentVolumeClaimInterface
@@ -37,20 +37,20 @@ var persistentvolumeclaimsResource = schema.GroupVersionResource{Group: "", Vers
var persistentvolumeclaimsKind = schema.GroupVersionKind{Group: "", Version: "", Kind: "PersistentVolumeClaim"}
// Get takes name of the persistentVolumeClaim, and returns the corresponding persistentVolumeClaim object, and an error if there is any.
-func (c *FakePersistentVolumeClaims) Get(name string, options v1.GetOptions) (result *api.PersistentVolumeClaim, err error) {
+func (c *FakePersistentVolumeClaims) Get(name string, options v1.GetOptions) (result *core.PersistentVolumeClaim, err error) {
obj, err := c.Fake.
- Invokes(testing.NewGetAction(persistentvolumeclaimsResource, c.ns, name), &api.PersistentVolumeClaim{})
+ Invokes(testing.NewGetAction(persistentvolumeclaimsResource, c.ns, name), &core.PersistentVolumeClaim{})
if obj == nil {
return nil, err
}
- return obj.(*api.PersistentVolumeClaim), err
+ return obj.(*core.PersistentVolumeClaim), err
}
// List takes label and field selectors, and returns the list of PersistentVolumeClaims that match those selectors.
-func (c *FakePersistentVolumeClaims) List(opts v1.ListOptions) (result *api.PersistentVolumeClaimList, err error) {
+func (c *FakePersistentVolumeClaims) List(opts v1.ListOptions) (result *core.PersistentVolumeClaimList, err error) {
obj, err := c.Fake.
- Invokes(testing.NewListAction(persistentvolumeclaimsResource, persistentvolumeclaimsKind, c.ns, opts), &api.PersistentVolumeClaimList{})
+ Invokes(testing.NewListAction(persistentvolumeclaimsResource, persistentvolumeclaimsKind, c.ns, opts), &core.PersistentVolumeClaimList{})
if obj == nil {
return nil, err
@@ -60,8 +60,8 @@ func (c *FakePersistentVolumeClaims) List(opts v1.ListOptions) (result *api.Pers
if label == nil {
label = labels.Everything()
}
- list := &api.PersistentVolumeClaimList{}
- for _, item := range obj.(*api.PersistentVolumeClaimList).Items {
+ list := &core.PersistentVolumeClaimList{}
+ for _, item := range obj.(*core.PersistentVolumeClaimList).Items {
if label.Matches(labels.Set(item.Labels)) {
list.Items = append(list.Items, item)
}
@@ -77,43 +77,43 @@ func (c *FakePersistentVolumeClaims) Watch(opts v1.ListOptions) (watch.Interface
}
// Create takes the representation of a persistentVolumeClaim and creates it. Returns the server's representation of the persistentVolumeClaim, and an error, if there is any.
-func (c *FakePersistentVolumeClaims) Create(persistentVolumeClaim *api.PersistentVolumeClaim) (result *api.PersistentVolumeClaim, err error) {
+func (c *FakePersistentVolumeClaims) Create(persistentVolumeClaim *core.PersistentVolumeClaim) (result *core.PersistentVolumeClaim, err error) {
obj, err := c.Fake.
- Invokes(testing.NewCreateAction(persistentvolumeclaimsResource, c.ns, persistentVolumeClaim), &api.PersistentVolumeClaim{})
+ Invokes(testing.NewCreateAction(persistentvolumeclaimsResource, c.ns, persistentVolumeClaim), &core.PersistentVolumeClaim{})
if obj == nil {
return nil, err
}
- return obj.(*api.PersistentVolumeClaim), err
+ return obj.(*core.PersistentVolumeClaim), err
}
// Update takes the representation of a persistentVolumeClaim and updates it. Returns the server's representation of the persistentVolumeClaim, and an error, if there is any.
-func (c *FakePersistentVolumeClaims) Update(persistentVolumeClaim *api.PersistentVolumeClaim) (result *api.PersistentVolumeClaim, err error) {
+func (c *FakePersistentVolumeClaims) Update(persistentVolumeClaim *core.PersistentVolumeClaim) (result *core.PersistentVolumeClaim, err error) {
obj, err := c.Fake.
- Invokes(testing.NewUpdateAction(persistentvolumeclaimsResource, c.ns, persistentVolumeClaim), &api.PersistentVolumeClaim{})
+ Invokes(testing.NewUpdateAction(persistentvolumeclaimsResource, c.ns, persistentVolumeClaim), &core.PersistentVolumeClaim{})
if obj == nil {
return nil, err
}
- return obj.(*api.PersistentVolumeClaim), err
+ return obj.(*core.PersistentVolumeClaim), err
}
// UpdateStatus was generated because the type contains a Status member.
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
-func (c *FakePersistentVolumeClaims) UpdateStatus(persistentVolumeClaim *api.PersistentVolumeClaim) (*api.PersistentVolumeClaim, error) {
+func (c *FakePersistentVolumeClaims) UpdateStatus(persistentVolumeClaim *core.PersistentVolumeClaim) (*core.PersistentVolumeClaim, error) {
obj, err := c.Fake.
- Invokes(testing.NewUpdateSubresourceAction(persistentvolumeclaimsResource, "status", c.ns, persistentVolumeClaim), &api.PersistentVolumeClaim{})
+ Invokes(testing.NewUpdateSubresourceAction(persistentvolumeclaimsResource, "status", c.ns, persistentVolumeClaim), &core.PersistentVolumeClaim{})
if obj == nil {
return nil, err
}
- return obj.(*api.PersistentVolumeClaim), err
+ return obj.(*core.PersistentVolumeClaim), err
}
// Delete takes name of the persistentVolumeClaim and deletes it. Returns an error if one occurs.
func (c *FakePersistentVolumeClaims) Delete(name string, options *v1.DeleteOptions) error {
_, err := c.Fake.
- Invokes(testing.NewDeleteAction(persistentvolumeclaimsResource, c.ns, name), &api.PersistentVolumeClaim{})
+ Invokes(testing.NewDeleteAction(persistentvolumeclaimsResource, c.ns, name), &core.PersistentVolumeClaim{})
return err
}
@@ -122,17 +122,17 @@ func (c *FakePersistentVolumeClaims) Delete(name string, options *v1.DeleteOptio
func (c *FakePersistentVolumeClaims) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
action := testing.NewDeleteCollectionAction(persistentvolumeclaimsResource, c.ns, listOptions)
- _, err := c.Fake.Invokes(action, &api.PersistentVolumeClaimList{})
+ _, err := c.Fake.Invokes(action, &core.PersistentVolumeClaimList{})
return err
}
// Patch applies the patch and returns the patched persistentVolumeClaim.
-func (c *FakePersistentVolumeClaims) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.PersistentVolumeClaim, err error) {
+func (c *FakePersistentVolumeClaims) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.PersistentVolumeClaim, err error) {
obj, err := c.Fake.
- Invokes(testing.NewPatchSubresourceAction(persistentvolumeclaimsResource, c.ns, name, data, subresources...), &api.PersistentVolumeClaim{})
+ Invokes(testing.NewPatchSubresourceAction(persistentvolumeclaimsResource, c.ns, name, data, subresources...), &core.PersistentVolumeClaim{})
if obj == nil {
return nil, err
}
- return obj.(*api.PersistentVolumeClaim), err
+ return obj.(*core.PersistentVolumeClaim), err
}
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_pod.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_pod.go
index 1fe43bd8bd..2d4536ac66 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_pod.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_pod.go
@@ -23,7 +23,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
testing "k8s.io/client-go/testing"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// FakePods implements PodInterface
@@ -37,20 +37,20 @@ var podsResource = schema.GroupVersionResource{Group: "", Version: "", Resource:
var podsKind = schema.GroupVersionKind{Group: "", Version: "", Kind: "Pod"}
// Get takes name of the pod, and returns the corresponding pod object, and an error if there is any.
-func (c *FakePods) Get(name string, options v1.GetOptions) (result *api.Pod, err error) {
+func (c *FakePods) Get(name string, options v1.GetOptions) (result *core.Pod, err error) {
obj, err := c.Fake.
- Invokes(testing.NewGetAction(podsResource, c.ns, name), &api.Pod{})
+ Invokes(testing.NewGetAction(podsResource, c.ns, name), &core.Pod{})
if obj == nil {
return nil, err
}
- return obj.(*api.Pod), err
+ return obj.(*core.Pod), err
}
// List takes label and field selectors, and returns the list of Pods that match those selectors.
-func (c *FakePods) List(opts v1.ListOptions) (result *api.PodList, err error) {
+func (c *FakePods) List(opts v1.ListOptions) (result *core.PodList, err error) {
obj, err := c.Fake.
- Invokes(testing.NewListAction(podsResource, podsKind, c.ns, opts), &api.PodList{})
+ Invokes(testing.NewListAction(podsResource, podsKind, c.ns, opts), &core.PodList{})
if obj == nil {
return nil, err
@@ -60,8 +60,8 @@ func (c *FakePods) List(opts v1.ListOptions) (result *api.PodList, err error) {
if label == nil {
label = labels.Everything()
}
- list := &api.PodList{}
- for _, item := range obj.(*api.PodList).Items {
+ list := &core.PodList{}
+ for _, item := range obj.(*core.PodList).Items {
if label.Matches(labels.Set(item.Labels)) {
list.Items = append(list.Items, item)
}
@@ -77,43 +77,43 @@ func (c *FakePods) Watch(opts v1.ListOptions) (watch.Interface, error) {
}
// Create takes the representation of a pod and creates it. Returns the server's representation of the pod, and an error, if there is any.
-func (c *FakePods) Create(pod *api.Pod) (result *api.Pod, err error) {
+func (c *FakePods) Create(pod *core.Pod) (result *core.Pod, err error) {
obj, err := c.Fake.
- Invokes(testing.NewCreateAction(podsResource, c.ns, pod), &api.Pod{})
+ Invokes(testing.NewCreateAction(podsResource, c.ns, pod), &core.Pod{})
if obj == nil {
return nil, err
}
- return obj.(*api.Pod), err
+ return obj.(*core.Pod), err
}
// Update takes the representation of a pod and updates it. Returns the server's representation of the pod, and an error, if there is any.
-func (c *FakePods) Update(pod *api.Pod) (result *api.Pod, err error) {
+func (c *FakePods) Update(pod *core.Pod) (result *core.Pod, err error) {
obj, err := c.Fake.
- Invokes(testing.NewUpdateAction(podsResource, c.ns, pod), &api.Pod{})
+ Invokes(testing.NewUpdateAction(podsResource, c.ns, pod), &core.Pod{})
if obj == nil {
return nil, err
}
- return obj.(*api.Pod), err
+ return obj.(*core.Pod), err
}
// UpdateStatus was generated because the type contains a Status member.
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
-func (c *FakePods) UpdateStatus(pod *api.Pod) (*api.Pod, error) {
+func (c *FakePods) UpdateStatus(pod *core.Pod) (*core.Pod, error) {
obj, err := c.Fake.
- Invokes(testing.NewUpdateSubresourceAction(podsResource, "status", c.ns, pod), &api.Pod{})
+ Invokes(testing.NewUpdateSubresourceAction(podsResource, "status", c.ns, pod), &core.Pod{})
if obj == nil {
return nil, err
}
- return obj.(*api.Pod), err
+ return obj.(*core.Pod), err
}
// Delete takes name of the pod and deletes it. Returns an error if one occurs.
func (c *FakePods) Delete(name string, options *v1.DeleteOptions) error {
_, err := c.Fake.
- Invokes(testing.NewDeleteAction(podsResource, c.ns, name), &api.Pod{})
+ Invokes(testing.NewDeleteAction(podsResource, c.ns, name), &core.Pod{})
return err
}
@@ -122,17 +122,17 @@ func (c *FakePods) Delete(name string, options *v1.DeleteOptions) error {
func (c *FakePods) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
action := testing.NewDeleteCollectionAction(podsResource, c.ns, listOptions)
- _, err := c.Fake.Invokes(action, &api.PodList{})
+ _, err := c.Fake.Invokes(action, &core.PodList{})
return err
}
// Patch applies the patch and returns the patched pod.
-func (c *FakePods) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.Pod, err error) {
+func (c *FakePods) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.Pod, err error) {
obj, err := c.Fake.
- Invokes(testing.NewPatchSubresourceAction(podsResource, c.ns, name, data, subresources...), &api.Pod{})
+ Invokes(testing.NewPatchSubresourceAction(podsResource, c.ns, name, data, subresources...), &core.Pod{})
if obj == nil {
return nil, err
}
- return obj.(*api.Pod), err
+ return obj.(*core.Pod), err
}
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_pod_expansion.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_pod_expansion.go
index 8e94319ea8..8853f9eee1 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_pod_expansion.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_pod_expansion.go
@@ -19,7 +19,7 @@ package fake
import (
restclient "k8s.io/client-go/rest"
core "k8s.io/client-go/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func (c *FakePods) Bind(binding *api.Binding) error {
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_podtemplate.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_podtemplate.go
index 770ca16d83..4da291103f 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_podtemplate.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_podtemplate.go
@@ -23,7 +23,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
testing "k8s.io/client-go/testing"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// FakePodTemplates implements PodTemplateInterface
@@ -37,20 +37,20 @@ var podtemplatesResource = schema.GroupVersionResource{Group: "", Version: "", R
var podtemplatesKind = schema.GroupVersionKind{Group: "", Version: "", Kind: "PodTemplate"}
// Get takes name of the podTemplate, and returns the corresponding podTemplate object, and an error if there is any.
-func (c *FakePodTemplates) Get(name string, options v1.GetOptions) (result *api.PodTemplate, err error) {
+func (c *FakePodTemplates) Get(name string, options v1.GetOptions) (result *core.PodTemplate, err error) {
obj, err := c.Fake.
- Invokes(testing.NewGetAction(podtemplatesResource, c.ns, name), &api.PodTemplate{})
+ Invokes(testing.NewGetAction(podtemplatesResource, c.ns, name), &core.PodTemplate{})
if obj == nil {
return nil, err
}
- return obj.(*api.PodTemplate), err
+ return obj.(*core.PodTemplate), err
}
// List takes label and field selectors, and returns the list of PodTemplates that match those selectors.
-func (c *FakePodTemplates) List(opts v1.ListOptions) (result *api.PodTemplateList, err error) {
+func (c *FakePodTemplates) List(opts v1.ListOptions) (result *core.PodTemplateList, err error) {
obj, err := c.Fake.
- Invokes(testing.NewListAction(podtemplatesResource, podtemplatesKind, c.ns, opts), &api.PodTemplateList{})
+ Invokes(testing.NewListAction(podtemplatesResource, podtemplatesKind, c.ns, opts), &core.PodTemplateList{})
if obj == nil {
return nil, err
@@ -60,8 +60,8 @@ func (c *FakePodTemplates) List(opts v1.ListOptions) (result *api.PodTemplateLis
if label == nil {
label = labels.Everything()
}
- list := &api.PodTemplateList{}
- for _, item := range obj.(*api.PodTemplateList).Items {
+ list := &core.PodTemplateList{}
+ for _, item := range obj.(*core.PodTemplateList).Items {
if label.Matches(labels.Set(item.Labels)) {
list.Items = append(list.Items, item)
}
@@ -77,31 +77,31 @@ func (c *FakePodTemplates) Watch(opts v1.ListOptions) (watch.Interface, error) {
}
// Create takes the representation of a podTemplate and creates it. Returns the server's representation of the podTemplate, and an error, if there is any.
-func (c *FakePodTemplates) Create(podTemplate *api.PodTemplate) (result *api.PodTemplate, err error) {
+func (c *FakePodTemplates) Create(podTemplate *core.PodTemplate) (result *core.PodTemplate, err error) {
obj, err := c.Fake.
- Invokes(testing.NewCreateAction(podtemplatesResource, c.ns, podTemplate), &api.PodTemplate{})
+ Invokes(testing.NewCreateAction(podtemplatesResource, c.ns, podTemplate), &core.PodTemplate{})
if obj == nil {
return nil, err
}
- return obj.(*api.PodTemplate), err
+ return obj.(*core.PodTemplate), err
}
// Update takes the representation of a podTemplate and updates it. Returns the server's representation of the podTemplate, and an error, if there is any.
-func (c *FakePodTemplates) Update(podTemplate *api.PodTemplate) (result *api.PodTemplate, err error) {
+func (c *FakePodTemplates) Update(podTemplate *core.PodTemplate) (result *core.PodTemplate, err error) {
obj, err := c.Fake.
- Invokes(testing.NewUpdateAction(podtemplatesResource, c.ns, podTemplate), &api.PodTemplate{})
+ Invokes(testing.NewUpdateAction(podtemplatesResource, c.ns, podTemplate), &core.PodTemplate{})
if obj == nil {
return nil, err
}
- return obj.(*api.PodTemplate), err
+ return obj.(*core.PodTemplate), err
}
// Delete takes name of the podTemplate and deletes it. Returns an error if one occurs.
func (c *FakePodTemplates) Delete(name string, options *v1.DeleteOptions) error {
_, err := c.Fake.
- Invokes(testing.NewDeleteAction(podtemplatesResource, c.ns, name), &api.PodTemplate{})
+ Invokes(testing.NewDeleteAction(podtemplatesResource, c.ns, name), &core.PodTemplate{})
return err
}
@@ -110,17 +110,17 @@ func (c *FakePodTemplates) Delete(name string, options *v1.DeleteOptions) error
func (c *FakePodTemplates) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
action := testing.NewDeleteCollectionAction(podtemplatesResource, c.ns, listOptions)
- _, err := c.Fake.Invokes(action, &api.PodTemplateList{})
+ _, err := c.Fake.Invokes(action, &core.PodTemplateList{})
return err
}
// Patch applies the patch and returns the patched podTemplate.
-func (c *FakePodTemplates) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.PodTemplate, err error) {
+func (c *FakePodTemplates) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.PodTemplate, err error) {
obj, err := c.Fake.
- Invokes(testing.NewPatchSubresourceAction(podtemplatesResource, c.ns, name, data, subresources...), &api.PodTemplate{})
+ Invokes(testing.NewPatchSubresourceAction(podtemplatesResource, c.ns, name, data, subresources...), &core.PodTemplate{})
if obj == nil {
return nil, err
}
- return obj.(*api.PodTemplate), err
+ return obj.(*core.PodTemplate), err
}
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_replicationcontroller.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_replicationcontroller.go
index 80e7de10fe..9e14923e84 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_replicationcontroller.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_replicationcontroller.go
@@ -23,8 +23,8 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
testing "k8s.io/client-go/testing"
- api "k8s.io/kubernetes/pkg/api"
- extensions "k8s.io/kubernetes/pkg/apis/extensions"
+ autoscaling "k8s.io/kubernetes/pkg/apis/autoscaling"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// FakeReplicationControllers implements ReplicationControllerInterface
@@ -38,20 +38,20 @@ var replicationcontrollersResource = schema.GroupVersionResource{Group: "", Vers
var replicationcontrollersKind = schema.GroupVersionKind{Group: "", Version: "", Kind: "ReplicationController"}
// Get takes name of the replicationController, and returns the corresponding replicationController object, and an error if there is any.
-func (c *FakeReplicationControllers) Get(name string, options v1.GetOptions) (result *api.ReplicationController, err error) {
+func (c *FakeReplicationControllers) Get(name string, options v1.GetOptions) (result *core.ReplicationController, err error) {
obj, err := c.Fake.
- Invokes(testing.NewGetAction(replicationcontrollersResource, c.ns, name), &api.ReplicationController{})
+ Invokes(testing.NewGetAction(replicationcontrollersResource, c.ns, name), &core.ReplicationController{})
if obj == nil {
return nil, err
}
- return obj.(*api.ReplicationController), err
+ return obj.(*core.ReplicationController), err
}
// List takes label and field selectors, and returns the list of ReplicationControllers that match those selectors.
-func (c *FakeReplicationControllers) List(opts v1.ListOptions) (result *api.ReplicationControllerList, err error) {
+func (c *FakeReplicationControllers) List(opts v1.ListOptions) (result *core.ReplicationControllerList, err error) {
obj, err := c.Fake.
- Invokes(testing.NewListAction(replicationcontrollersResource, replicationcontrollersKind, c.ns, opts), &api.ReplicationControllerList{})
+ Invokes(testing.NewListAction(replicationcontrollersResource, replicationcontrollersKind, c.ns, opts), &core.ReplicationControllerList{})
if obj == nil {
return nil, err
@@ -61,8 +61,8 @@ func (c *FakeReplicationControllers) List(opts v1.ListOptions) (result *api.Repl
if label == nil {
label = labels.Everything()
}
- list := &api.ReplicationControllerList{}
- for _, item := range obj.(*api.ReplicationControllerList).Items {
+ list := &core.ReplicationControllerList{}
+ for _, item := range obj.(*core.ReplicationControllerList).Items {
if label.Matches(labels.Set(item.Labels)) {
list.Items = append(list.Items, item)
}
@@ -78,43 +78,43 @@ func (c *FakeReplicationControllers) Watch(opts v1.ListOptions) (watch.Interface
}
// Create takes the representation of a replicationController and creates it. Returns the server's representation of the replicationController, and an error, if there is any.
-func (c *FakeReplicationControllers) Create(replicationController *api.ReplicationController) (result *api.ReplicationController, err error) {
+func (c *FakeReplicationControllers) Create(replicationController *core.ReplicationController) (result *core.ReplicationController, err error) {
obj, err := c.Fake.
- Invokes(testing.NewCreateAction(replicationcontrollersResource, c.ns, replicationController), &api.ReplicationController{})
+ Invokes(testing.NewCreateAction(replicationcontrollersResource, c.ns, replicationController), &core.ReplicationController{})
if obj == nil {
return nil, err
}
- return obj.(*api.ReplicationController), err
+ return obj.(*core.ReplicationController), err
}
// Update takes the representation of a replicationController and updates it. Returns the server's representation of the replicationController, and an error, if there is any.
-func (c *FakeReplicationControllers) Update(replicationController *api.ReplicationController) (result *api.ReplicationController, err error) {
+func (c *FakeReplicationControllers) Update(replicationController *core.ReplicationController) (result *core.ReplicationController, err error) {
obj, err := c.Fake.
- Invokes(testing.NewUpdateAction(replicationcontrollersResource, c.ns, replicationController), &api.ReplicationController{})
+ Invokes(testing.NewUpdateAction(replicationcontrollersResource, c.ns, replicationController), &core.ReplicationController{})
if obj == nil {
return nil, err
}
- return obj.(*api.ReplicationController), err
+ return obj.(*core.ReplicationController), err
}
// UpdateStatus was generated because the type contains a Status member.
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
-func (c *FakeReplicationControllers) UpdateStatus(replicationController *api.ReplicationController) (*api.ReplicationController, error) {
+func (c *FakeReplicationControllers) UpdateStatus(replicationController *core.ReplicationController) (*core.ReplicationController, error) {
obj, err := c.Fake.
- Invokes(testing.NewUpdateSubresourceAction(replicationcontrollersResource, "status", c.ns, replicationController), &api.ReplicationController{})
+ Invokes(testing.NewUpdateSubresourceAction(replicationcontrollersResource, "status", c.ns, replicationController), &core.ReplicationController{})
if obj == nil {
return nil, err
}
- return obj.(*api.ReplicationController), err
+ return obj.(*core.ReplicationController), err
}
// Delete takes name of the replicationController and deletes it. Returns an error if one occurs.
func (c *FakeReplicationControllers) Delete(name string, options *v1.DeleteOptions) error {
_, err := c.Fake.
- Invokes(testing.NewDeleteAction(replicationcontrollersResource, c.ns, name), &api.ReplicationController{})
+ Invokes(testing.NewDeleteAction(replicationcontrollersResource, c.ns, name), &core.ReplicationController{})
return err
}
@@ -123,39 +123,39 @@ func (c *FakeReplicationControllers) Delete(name string, options *v1.DeleteOptio
func (c *FakeReplicationControllers) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
action := testing.NewDeleteCollectionAction(replicationcontrollersResource, c.ns, listOptions)
- _, err := c.Fake.Invokes(action, &api.ReplicationControllerList{})
+ _, err := c.Fake.Invokes(action, &core.ReplicationControllerList{})
return err
}
// Patch applies the patch and returns the patched replicationController.
-func (c *FakeReplicationControllers) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.ReplicationController, err error) {
+func (c *FakeReplicationControllers) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.ReplicationController, err error) {
obj, err := c.Fake.
- Invokes(testing.NewPatchSubresourceAction(replicationcontrollersResource, c.ns, name, data, subresources...), &api.ReplicationController{})
+ Invokes(testing.NewPatchSubresourceAction(replicationcontrollersResource, c.ns, name, data, subresources...), &core.ReplicationController{})
if obj == nil {
return nil, err
}
- return obj.(*api.ReplicationController), err
+ return obj.(*core.ReplicationController), err
}
// GetScale takes name of the replicationController, and returns the corresponding scale object, and an error if there is any.
-func (c *FakeReplicationControllers) GetScale(replicationControllerName string, options v1.GetOptions) (result *extensions.Scale, err error) {
+func (c *FakeReplicationControllers) GetScale(replicationControllerName string, options v1.GetOptions) (result *autoscaling.Scale, err error) {
obj, err := c.Fake.
- Invokes(testing.NewGetSubresourceAction(replicationcontrollersResource, c.ns, "scale", replicationControllerName), &extensions.Scale{})
+ Invokes(testing.NewGetSubresourceAction(replicationcontrollersResource, c.ns, "scale", replicationControllerName), &autoscaling.Scale{})
if obj == nil {
return nil, err
}
- return obj.(*extensions.Scale), err
+ return obj.(*autoscaling.Scale), err
}
// UpdateScale takes the representation of a scale and updates it. Returns the server's representation of the scale, and an error, if there is any.
-func (c *FakeReplicationControllers) UpdateScale(replicationControllerName string, scale *extensions.Scale) (result *extensions.Scale, err error) {
+func (c *FakeReplicationControllers) UpdateScale(replicationControllerName string, scale *autoscaling.Scale) (result *autoscaling.Scale, err error) {
obj, err := c.Fake.
- Invokes(testing.NewUpdateSubresourceAction(replicationcontrollersResource, "scale", c.ns, scale), &extensions.Scale{})
+ Invokes(testing.NewUpdateSubresourceAction(replicationcontrollersResource, "scale", c.ns, scale), &autoscaling.Scale{})
if obj == nil {
return nil, err
}
- return obj.(*extensions.Scale), err
+ return obj.(*autoscaling.Scale), err
}
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_resourcequota.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_resourcequota.go
index 610f24c1bd..b73040db66 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_resourcequota.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_resourcequota.go
@@ -23,7 +23,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
testing "k8s.io/client-go/testing"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// FakeResourceQuotas implements ResourceQuotaInterface
@@ -37,20 +37,20 @@ var resourcequotasResource = schema.GroupVersionResource{Group: "", Version: "",
var resourcequotasKind = schema.GroupVersionKind{Group: "", Version: "", Kind: "ResourceQuota"}
// Get takes name of the resourceQuota, and returns the corresponding resourceQuota object, and an error if there is any.
-func (c *FakeResourceQuotas) Get(name string, options v1.GetOptions) (result *api.ResourceQuota, err error) {
+func (c *FakeResourceQuotas) Get(name string, options v1.GetOptions) (result *core.ResourceQuota, err error) {
obj, err := c.Fake.
- Invokes(testing.NewGetAction(resourcequotasResource, c.ns, name), &api.ResourceQuota{})
+ Invokes(testing.NewGetAction(resourcequotasResource, c.ns, name), &core.ResourceQuota{})
if obj == nil {
return nil, err
}
- return obj.(*api.ResourceQuota), err
+ return obj.(*core.ResourceQuota), err
}
// List takes label and field selectors, and returns the list of ResourceQuotas that match those selectors.
-func (c *FakeResourceQuotas) List(opts v1.ListOptions) (result *api.ResourceQuotaList, err error) {
+func (c *FakeResourceQuotas) List(opts v1.ListOptions) (result *core.ResourceQuotaList, err error) {
obj, err := c.Fake.
- Invokes(testing.NewListAction(resourcequotasResource, resourcequotasKind, c.ns, opts), &api.ResourceQuotaList{})
+ Invokes(testing.NewListAction(resourcequotasResource, resourcequotasKind, c.ns, opts), &core.ResourceQuotaList{})
if obj == nil {
return nil, err
@@ -60,8 +60,8 @@ func (c *FakeResourceQuotas) List(opts v1.ListOptions) (result *api.ResourceQuot
if label == nil {
label = labels.Everything()
}
- list := &api.ResourceQuotaList{}
- for _, item := range obj.(*api.ResourceQuotaList).Items {
+ list := &core.ResourceQuotaList{}
+ for _, item := range obj.(*core.ResourceQuotaList).Items {
if label.Matches(labels.Set(item.Labels)) {
list.Items = append(list.Items, item)
}
@@ -77,43 +77,43 @@ func (c *FakeResourceQuotas) Watch(opts v1.ListOptions) (watch.Interface, error)
}
// Create takes the representation of a resourceQuota and creates it. Returns the server's representation of the resourceQuota, and an error, if there is any.
-func (c *FakeResourceQuotas) Create(resourceQuota *api.ResourceQuota) (result *api.ResourceQuota, err error) {
+func (c *FakeResourceQuotas) Create(resourceQuota *core.ResourceQuota) (result *core.ResourceQuota, err error) {
obj, err := c.Fake.
- Invokes(testing.NewCreateAction(resourcequotasResource, c.ns, resourceQuota), &api.ResourceQuota{})
+ Invokes(testing.NewCreateAction(resourcequotasResource, c.ns, resourceQuota), &core.ResourceQuota{})
if obj == nil {
return nil, err
}
- return obj.(*api.ResourceQuota), err
+ return obj.(*core.ResourceQuota), err
}
// Update takes the representation of a resourceQuota and updates it. Returns the server's representation of the resourceQuota, and an error, if there is any.
-func (c *FakeResourceQuotas) Update(resourceQuota *api.ResourceQuota) (result *api.ResourceQuota, err error) {
+func (c *FakeResourceQuotas) Update(resourceQuota *core.ResourceQuota) (result *core.ResourceQuota, err error) {
obj, err := c.Fake.
- Invokes(testing.NewUpdateAction(resourcequotasResource, c.ns, resourceQuota), &api.ResourceQuota{})
+ Invokes(testing.NewUpdateAction(resourcequotasResource, c.ns, resourceQuota), &core.ResourceQuota{})
if obj == nil {
return nil, err
}
- return obj.(*api.ResourceQuota), err
+ return obj.(*core.ResourceQuota), err
}
// UpdateStatus was generated because the type contains a Status member.
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
-func (c *FakeResourceQuotas) UpdateStatus(resourceQuota *api.ResourceQuota) (*api.ResourceQuota, error) {
+func (c *FakeResourceQuotas) UpdateStatus(resourceQuota *core.ResourceQuota) (*core.ResourceQuota, error) {
obj, err := c.Fake.
- Invokes(testing.NewUpdateSubresourceAction(resourcequotasResource, "status", c.ns, resourceQuota), &api.ResourceQuota{})
+ Invokes(testing.NewUpdateSubresourceAction(resourcequotasResource, "status", c.ns, resourceQuota), &core.ResourceQuota{})
if obj == nil {
return nil, err
}
- return obj.(*api.ResourceQuota), err
+ return obj.(*core.ResourceQuota), err
}
// Delete takes name of the resourceQuota and deletes it. Returns an error if one occurs.
func (c *FakeResourceQuotas) Delete(name string, options *v1.DeleteOptions) error {
_, err := c.Fake.
- Invokes(testing.NewDeleteAction(resourcequotasResource, c.ns, name), &api.ResourceQuota{})
+ Invokes(testing.NewDeleteAction(resourcequotasResource, c.ns, name), &core.ResourceQuota{})
return err
}
@@ -122,17 +122,17 @@ func (c *FakeResourceQuotas) Delete(name string, options *v1.DeleteOptions) erro
func (c *FakeResourceQuotas) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
action := testing.NewDeleteCollectionAction(resourcequotasResource, c.ns, listOptions)
- _, err := c.Fake.Invokes(action, &api.ResourceQuotaList{})
+ _, err := c.Fake.Invokes(action, &core.ResourceQuotaList{})
return err
}
// Patch applies the patch and returns the patched resourceQuota.
-func (c *FakeResourceQuotas) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.ResourceQuota, err error) {
+func (c *FakeResourceQuotas) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.ResourceQuota, err error) {
obj, err := c.Fake.
- Invokes(testing.NewPatchSubresourceAction(resourcequotasResource, c.ns, name, data, subresources...), &api.ResourceQuota{})
+ Invokes(testing.NewPatchSubresourceAction(resourcequotasResource, c.ns, name, data, subresources...), &core.ResourceQuota{})
if obj == nil {
return nil, err
}
- return obj.(*api.ResourceQuota), err
+ return obj.(*core.ResourceQuota), err
}
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_secret.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_secret.go
index 22f9cf836b..5920dba25b 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_secret.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_secret.go
@@ -23,7 +23,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
testing "k8s.io/client-go/testing"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// FakeSecrets implements SecretInterface
@@ -37,20 +37,20 @@ var secretsResource = schema.GroupVersionResource{Group: "", Version: "", Resour
var secretsKind = schema.GroupVersionKind{Group: "", Version: "", Kind: "Secret"}
// Get takes name of the secret, and returns the corresponding secret object, and an error if there is any.
-func (c *FakeSecrets) Get(name string, options v1.GetOptions) (result *api.Secret, err error) {
+func (c *FakeSecrets) Get(name string, options v1.GetOptions) (result *core.Secret, err error) {
obj, err := c.Fake.
- Invokes(testing.NewGetAction(secretsResource, c.ns, name), &api.Secret{})
+ Invokes(testing.NewGetAction(secretsResource, c.ns, name), &core.Secret{})
if obj == nil {
return nil, err
}
- return obj.(*api.Secret), err
+ return obj.(*core.Secret), err
}
// List takes label and field selectors, and returns the list of Secrets that match those selectors.
-func (c *FakeSecrets) List(opts v1.ListOptions) (result *api.SecretList, err error) {
+func (c *FakeSecrets) List(opts v1.ListOptions) (result *core.SecretList, err error) {
obj, err := c.Fake.
- Invokes(testing.NewListAction(secretsResource, secretsKind, c.ns, opts), &api.SecretList{})
+ Invokes(testing.NewListAction(secretsResource, secretsKind, c.ns, opts), &core.SecretList{})
if obj == nil {
return nil, err
@@ -60,8 +60,8 @@ func (c *FakeSecrets) List(opts v1.ListOptions) (result *api.SecretList, err err
if label == nil {
label = labels.Everything()
}
- list := &api.SecretList{}
- for _, item := range obj.(*api.SecretList).Items {
+ list := &core.SecretList{}
+ for _, item := range obj.(*core.SecretList).Items {
if label.Matches(labels.Set(item.Labels)) {
list.Items = append(list.Items, item)
}
@@ -77,31 +77,31 @@ func (c *FakeSecrets) Watch(opts v1.ListOptions) (watch.Interface, error) {
}
// Create takes the representation of a secret and creates it. Returns the server's representation of the secret, and an error, if there is any.
-func (c *FakeSecrets) Create(secret *api.Secret) (result *api.Secret, err error) {
+func (c *FakeSecrets) Create(secret *core.Secret) (result *core.Secret, err error) {
obj, err := c.Fake.
- Invokes(testing.NewCreateAction(secretsResource, c.ns, secret), &api.Secret{})
+ Invokes(testing.NewCreateAction(secretsResource, c.ns, secret), &core.Secret{})
if obj == nil {
return nil, err
}
- return obj.(*api.Secret), err
+ return obj.(*core.Secret), err
}
// Update takes the representation of a secret and updates it. Returns the server's representation of the secret, and an error, if there is any.
-func (c *FakeSecrets) Update(secret *api.Secret) (result *api.Secret, err error) {
+func (c *FakeSecrets) Update(secret *core.Secret) (result *core.Secret, err error) {
obj, err := c.Fake.
- Invokes(testing.NewUpdateAction(secretsResource, c.ns, secret), &api.Secret{})
+ Invokes(testing.NewUpdateAction(secretsResource, c.ns, secret), &core.Secret{})
if obj == nil {
return nil, err
}
- return obj.(*api.Secret), err
+ return obj.(*core.Secret), err
}
// Delete takes name of the secret and deletes it. Returns an error if one occurs.
func (c *FakeSecrets) Delete(name string, options *v1.DeleteOptions) error {
_, err := c.Fake.
- Invokes(testing.NewDeleteAction(secretsResource, c.ns, name), &api.Secret{})
+ Invokes(testing.NewDeleteAction(secretsResource, c.ns, name), &core.Secret{})
return err
}
@@ -110,17 +110,17 @@ func (c *FakeSecrets) Delete(name string, options *v1.DeleteOptions) error {
func (c *FakeSecrets) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
action := testing.NewDeleteCollectionAction(secretsResource, c.ns, listOptions)
- _, err := c.Fake.Invokes(action, &api.SecretList{})
+ _, err := c.Fake.Invokes(action, &core.SecretList{})
return err
}
// Patch applies the patch and returns the patched secret.
-func (c *FakeSecrets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.Secret, err error) {
+func (c *FakeSecrets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.Secret, err error) {
obj, err := c.Fake.
- Invokes(testing.NewPatchSubresourceAction(secretsResource, c.ns, name, data, subresources...), &api.Secret{})
+ Invokes(testing.NewPatchSubresourceAction(secretsResource, c.ns, name, data, subresources...), &core.Secret{})
if obj == nil {
return nil, err
}
- return obj.(*api.Secret), err
+ return obj.(*core.Secret), err
}
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_service.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_service.go
index 337b3b34db..4c15e2e2fc 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_service.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_service.go
@@ -23,7 +23,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
testing "k8s.io/client-go/testing"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// FakeServices implements ServiceInterface
@@ -37,20 +37,20 @@ var servicesResource = schema.GroupVersionResource{Group: "", Version: "", Resou
var servicesKind = schema.GroupVersionKind{Group: "", Version: "", Kind: "Service"}
// Get takes name of the service, and returns the corresponding service object, and an error if there is any.
-func (c *FakeServices) Get(name string, options v1.GetOptions) (result *api.Service, err error) {
+func (c *FakeServices) Get(name string, options v1.GetOptions) (result *core.Service, err error) {
obj, err := c.Fake.
- Invokes(testing.NewGetAction(servicesResource, c.ns, name), &api.Service{})
+ Invokes(testing.NewGetAction(servicesResource, c.ns, name), &core.Service{})
if obj == nil {
return nil, err
}
- return obj.(*api.Service), err
+ return obj.(*core.Service), err
}
// List takes label and field selectors, and returns the list of Services that match those selectors.
-func (c *FakeServices) List(opts v1.ListOptions) (result *api.ServiceList, err error) {
+func (c *FakeServices) List(opts v1.ListOptions) (result *core.ServiceList, err error) {
obj, err := c.Fake.
- Invokes(testing.NewListAction(servicesResource, servicesKind, c.ns, opts), &api.ServiceList{})
+ Invokes(testing.NewListAction(servicesResource, servicesKind, c.ns, opts), &core.ServiceList{})
if obj == nil {
return nil, err
@@ -60,8 +60,8 @@ func (c *FakeServices) List(opts v1.ListOptions) (result *api.ServiceList, err e
if label == nil {
label = labels.Everything()
}
- list := &api.ServiceList{}
- for _, item := range obj.(*api.ServiceList).Items {
+ list := &core.ServiceList{}
+ for _, item := range obj.(*core.ServiceList).Items {
if label.Matches(labels.Set(item.Labels)) {
list.Items = append(list.Items, item)
}
@@ -77,43 +77,43 @@ func (c *FakeServices) Watch(opts v1.ListOptions) (watch.Interface, error) {
}
// Create takes the representation of a service and creates it. Returns the server's representation of the service, and an error, if there is any.
-func (c *FakeServices) Create(service *api.Service) (result *api.Service, err error) {
+func (c *FakeServices) Create(service *core.Service) (result *core.Service, err error) {
obj, err := c.Fake.
- Invokes(testing.NewCreateAction(servicesResource, c.ns, service), &api.Service{})
+ Invokes(testing.NewCreateAction(servicesResource, c.ns, service), &core.Service{})
if obj == nil {
return nil, err
}
- return obj.(*api.Service), err
+ return obj.(*core.Service), err
}
// Update takes the representation of a service and updates it. Returns the server's representation of the service, and an error, if there is any.
-func (c *FakeServices) Update(service *api.Service) (result *api.Service, err error) {
+func (c *FakeServices) Update(service *core.Service) (result *core.Service, err error) {
obj, err := c.Fake.
- Invokes(testing.NewUpdateAction(servicesResource, c.ns, service), &api.Service{})
+ Invokes(testing.NewUpdateAction(servicesResource, c.ns, service), &core.Service{})
if obj == nil {
return nil, err
}
- return obj.(*api.Service), err
+ return obj.(*core.Service), err
}
// UpdateStatus was generated because the type contains a Status member.
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
-func (c *FakeServices) UpdateStatus(service *api.Service) (*api.Service, error) {
+func (c *FakeServices) UpdateStatus(service *core.Service) (*core.Service, error) {
obj, err := c.Fake.
- Invokes(testing.NewUpdateSubresourceAction(servicesResource, "status", c.ns, service), &api.Service{})
+ Invokes(testing.NewUpdateSubresourceAction(servicesResource, "status", c.ns, service), &core.Service{})
if obj == nil {
return nil, err
}
- return obj.(*api.Service), err
+ return obj.(*core.Service), err
}
// Delete takes name of the service and deletes it. Returns an error if one occurs.
func (c *FakeServices) Delete(name string, options *v1.DeleteOptions) error {
_, err := c.Fake.
- Invokes(testing.NewDeleteAction(servicesResource, c.ns, name), &api.Service{})
+ Invokes(testing.NewDeleteAction(servicesResource, c.ns, name), &core.Service{})
return err
}
@@ -122,17 +122,17 @@ func (c *FakeServices) Delete(name string, options *v1.DeleteOptions) error {
func (c *FakeServices) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
action := testing.NewDeleteCollectionAction(servicesResource, c.ns, listOptions)
- _, err := c.Fake.Invokes(action, &api.ServiceList{})
+ _, err := c.Fake.Invokes(action, &core.ServiceList{})
return err
}
// Patch applies the patch and returns the patched service.
-func (c *FakeServices) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.Service, err error) {
+func (c *FakeServices) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.Service, err error) {
obj, err := c.Fake.
- Invokes(testing.NewPatchSubresourceAction(servicesResource, c.ns, name, data, subresources...), &api.Service{})
+ Invokes(testing.NewPatchSubresourceAction(servicesResource, c.ns, name, data, subresources...), &core.Service{})
if obj == nil {
return nil, err
}
- return obj.(*api.Service), err
+ return obj.(*core.Service), err
}
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_serviceaccount.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_serviceaccount.go
index 07b893b0d6..1776b4ed67 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_serviceaccount.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake/fake_serviceaccount.go
@@ -23,7 +23,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
testing "k8s.io/client-go/testing"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// FakeServiceAccounts implements ServiceAccountInterface
@@ -37,20 +37,20 @@ var serviceaccountsResource = schema.GroupVersionResource{Group: "", Version: ""
var serviceaccountsKind = schema.GroupVersionKind{Group: "", Version: "", Kind: "ServiceAccount"}
// Get takes name of the serviceAccount, and returns the corresponding serviceAccount object, and an error if there is any.
-func (c *FakeServiceAccounts) Get(name string, options v1.GetOptions) (result *api.ServiceAccount, err error) {
+func (c *FakeServiceAccounts) Get(name string, options v1.GetOptions) (result *core.ServiceAccount, err error) {
obj, err := c.Fake.
- Invokes(testing.NewGetAction(serviceaccountsResource, c.ns, name), &api.ServiceAccount{})
+ Invokes(testing.NewGetAction(serviceaccountsResource, c.ns, name), &core.ServiceAccount{})
if obj == nil {
return nil, err
}
- return obj.(*api.ServiceAccount), err
+ return obj.(*core.ServiceAccount), err
}
// List takes label and field selectors, and returns the list of ServiceAccounts that match those selectors.
-func (c *FakeServiceAccounts) List(opts v1.ListOptions) (result *api.ServiceAccountList, err error) {
+func (c *FakeServiceAccounts) List(opts v1.ListOptions) (result *core.ServiceAccountList, err error) {
obj, err := c.Fake.
- Invokes(testing.NewListAction(serviceaccountsResource, serviceaccountsKind, c.ns, opts), &api.ServiceAccountList{})
+ Invokes(testing.NewListAction(serviceaccountsResource, serviceaccountsKind, c.ns, opts), &core.ServiceAccountList{})
if obj == nil {
return nil, err
@@ -60,8 +60,8 @@ func (c *FakeServiceAccounts) List(opts v1.ListOptions) (result *api.ServiceAcco
if label == nil {
label = labels.Everything()
}
- list := &api.ServiceAccountList{}
- for _, item := range obj.(*api.ServiceAccountList).Items {
+ list := &core.ServiceAccountList{}
+ for _, item := range obj.(*core.ServiceAccountList).Items {
if label.Matches(labels.Set(item.Labels)) {
list.Items = append(list.Items, item)
}
@@ -77,31 +77,31 @@ func (c *FakeServiceAccounts) Watch(opts v1.ListOptions) (watch.Interface, error
}
// Create takes the representation of a serviceAccount and creates it. Returns the server's representation of the serviceAccount, and an error, if there is any.
-func (c *FakeServiceAccounts) Create(serviceAccount *api.ServiceAccount) (result *api.ServiceAccount, err error) {
+func (c *FakeServiceAccounts) Create(serviceAccount *core.ServiceAccount) (result *core.ServiceAccount, err error) {
obj, err := c.Fake.
- Invokes(testing.NewCreateAction(serviceaccountsResource, c.ns, serviceAccount), &api.ServiceAccount{})
+ Invokes(testing.NewCreateAction(serviceaccountsResource, c.ns, serviceAccount), &core.ServiceAccount{})
if obj == nil {
return nil, err
}
- return obj.(*api.ServiceAccount), err
+ return obj.(*core.ServiceAccount), err
}
// Update takes the representation of a serviceAccount and updates it. Returns the server's representation of the serviceAccount, and an error, if there is any.
-func (c *FakeServiceAccounts) Update(serviceAccount *api.ServiceAccount) (result *api.ServiceAccount, err error) {
+func (c *FakeServiceAccounts) Update(serviceAccount *core.ServiceAccount) (result *core.ServiceAccount, err error) {
obj, err := c.Fake.
- Invokes(testing.NewUpdateAction(serviceaccountsResource, c.ns, serviceAccount), &api.ServiceAccount{})
+ Invokes(testing.NewUpdateAction(serviceaccountsResource, c.ns, serviceAccount), &core.ServiceAccount{})
if obj == nil {
return nil, err
}
- return obj.(*api.ServiceAccount), err
+ return obj.(*core.ServiceAccount), err
}
// Delete takes name of the serviceAccount and deletes it. Returns an error if one occurs.
func (c *FakeServiceAccounts) Delete(name string, options *v1.DeleteOptions) error {
_, err := c.Fake.
- Invokes(testing.NewDeleteAction(serviceaccountsResource, c.ns, name), &api.ServiceAccount{})
+ Invokes(testing.NewDeleteAction(serviceaccountsResource, c.ns, name), &core.ServiceAccount{})
return err
}
@@ -110,17 +110,17 @@ func (c *FakeServiceAccounts) Delete(name string, options *v1.DeleteOptions) err
func (c *FakeServiceAccounts) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
action := testing.NewDeleteCollectionAction(serviceaccountsResource, c.ns, listOptions)
- _, err := c.Fake.Invokes(action, &api.ServiceAccountList{})
+ _, err := c.Fake.Invokes(action, &core.ServiceAccountList{})
return err
}
// Patch applies the patch and returns the patched serviceAccount.
-func (c *FakeServiceAccounts) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.ServiceAccount, err error) {
+func (c *FakeServiceAccounts) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.ServiceAccount, err error) {
obj, err := c.Fake.
- Invokes(testing.NewPatchSubresourceAction(serviceaccountsResource, c.ns, name, data, subresources...), &api.ServiceAccount{})
+ Invokes(testing.NewPatchSubresourceAction(serviceaccountsResource, c.ns, name, data, subresources...), &core.ServiceAccount{})
if obj == nil {
return nil, err
}
- return obj.(*api.ServiceAccount), err
+ return obj.(*core.ServiceAccount), err
}
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/limitrange.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/limitrange.go
index f809d04cb0..de59dda998 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/limitrange.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/limitrange.go
@@ -21,7 +21,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
rest "k8s.io/client-go/rest"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
scheme "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme"
)
@@ -33,14 +33,14 @@ type LimitRangesGetter interface {
// LimitRangeInterface has methods to work with LimitRange resources.
type LimitRangeInterface interface {
- Create(*api.LimitRange) (*api.LimitRange, error)
- Update(*api.LimitRange) (*api.LimitRange, error)
+ Create(*core.LimitRange) (*core.LimitRange, error)
+ Update(*core.LimitRange) (*core.LimitRange, error)
Delete(name string, options *v1.DeleteOptions) error
DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error
- Get(name string, options v1.GetOptions) (*api.LimitRange, error)
- List(opts v1.ListOptions) (*api.LimitRangeList, error)
+ Get(name string, options v1.GetOptions) (*core.LimitRange, error)
+ List(opts v1.ListOptions) (*core.LimitRangeList, error)
Watch(opts v1.ListOptions) (watch.Interface, error)
- Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.LimitRange, err error)
+ Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.LimitRange, err error)
LimitRangeExpansion
}
@@ -59,8 +59,8 @@ func newLimitRanges(c *CoreClient, namespace string) *limitRanges {
}
// Get takes name of the limitRange, and returns the corresponding limitRange object, and an error if there is any.
-func (c *limitRanges) Get(name string, options v1.GetOptions) (result *api.LimitRange, err error) {
- result = &api.LimitRange{}
+func (c *limitRanges) Get(name string, options v1.GetOptions) (result *core.LimitRange, err error) {
+ result = &core.LimitRange{}
err = c.client.Get().
Namespace(c.ns).
Resource("limitranges").
@@ -72,8 +72,8 @@ func (c *limitRanges) Get(name string, options v1.GetOptions) (result *api.Limit
}
// List takes label and field selectors, and returns the list of LimitRanges that match those selectors.
-func (c *limitRanges) List(opts v1.ListOptions) (result *api.LimitRangeList, err error) {
- result = &api.LimitRangeList{}
+func (c *limitRanges) List(opts v1.ListOptions) (result *core.LimitRangeList, err error) {
+ result = &core.LimitRangeList{}
err = c.client.Get().
Namespace(c.ns).
Resource("limitranges").
@@ -94,8 +94,8 @@ func (c *limitRanges) Watch(opts v1.ListOptions) (watch.Interface, error) {
}
// Create takes the representation of a limitRange and creates it. Returns the server's representation of the limitRange, and an error, if there is any.
-func (c *limitRanges) Create(limitRange *api.LimitRange) (result *api.LimitRange, err error) {
- result = &api.LimitRange{}
+func (c *limitRanges) Create(limitRange *core.LimitRange) (result *core.LimitRange, err error) {
+ result = &core.LimitRange{}
err = c.client.Post().
Namespace(c.ns).
Resource("limitranges").
@@ -106,8 +106,8 @@ func (c *limitRanges) Create(limitRange *api.LimitRange) (result *api.LimitRange
}
// Update takes the representation of a limitRange and updates it. Returns the server's representation of the limitRange, and an error, if there is any.
-func (c *limitRanges) Update(limitRange *api.LimitRange) (result *api.LimitRange, err error) {
- result = &api.LimitRange{}
+func (c *limitRanges) Update(limitRange *core.LimitRange) (result *core.LimitRange, err error) {
+ result = &core.LimitRange{}
err = c.client.Put().
Namespace(c.ns).
Resource("limitranges").
@@ -141,8 +141,8 @@ func (c *limitRanges) DeleteCollection(options *v1.DeleteOptions, listOptions v1
}
// Patch applies the patch and returns the patched limitRange.
-func (c *limitRanges) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.LimitRange, err error) {
- result = &api.LimitRange{}
+func (c *limitRanges) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.LimitRange, err error) {
+ result = &core.LimitRange{}
err = c.client.Patch(pt).
Namespace(c.ns).
Resource("limitranges").
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/namespace.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/namespace.go
index fff41e4206..f4ae538830 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/namespace.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/namespace.go
@@ -21,7 +21,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
rest "k8s.io/client-go/rest"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
scheme "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme"
)
@@ -33,15 +33,15 @@ type NamespacesGetter interface {
// NamespaceInterface has methods to work with Namespace resources.
type NamespaceInterface interface {
- Create(*api.Namespace) (*api.Namespace, error)
- Update(*api.Namespace) (*api.Namespace, error)
- UpdateStatus(*api.Namespace) (*api.Namespace, error)
+ Create(*core.Namespace) (*core.Namespace, error)
+ Update(*core.Namespace) (*core.Namespace, error)
+ UpdateStatus(*core.Namespace) (*core.Namespace, error)
Delete(name string, options *v1.DeleteOptions) error
DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error
- Get(name string, options v1.GetOptions) (*api.Namespace, error)
- List(opts v1.ListOptions) (*api.NamespaceList, error)
+ Get(name string, options v1.GetOptions) (*core.Namespace, error)
+ List(opts v1.ListOptions) (*core.NamespaceList, error)
Watch(opts v1.ListOptions) (watch.Interface, error)
- Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.Namespace, err error)
+ Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.Namespace, err error)
NamespaceExpansion
}
@@ -58,8 +58,8 @@ func newNamespaces(c *CoreClient) *namespaces {
}
// Get takes name of the namespace, and returns the corresponding namespace object, and an error if there is any.
-func (c *namespaces) Get(name string, options v1.GetOptions) (result *api.Namespace, err error) {
- result = &api.Namespace{}
+func (c *namespaces) Get(name string, options v1.GetOptions) (result *core.Namespace, err error) {
+ result = &core.Namespace{}
err = c.client.Get().
Resource("namespaces").
Name(name).
@@ -70,8 +70,8 @@ func (c *namespaces) Get(name string, options v1.GetOptions) (result *api.Namesp
}
// List takes label and field selectors, and returns the list of Namespaces that match those selectors.
-func (c *namespaces) List(opts v1.ListOptions) (result *api.NamespaceList, err error) {
- result = &api.NamespaceList{}
+func (c *namespaces) List(opts v1.ListOptions) (result *core.NamespaceList, err error) {
+ result = &core.NamespaceList{}
err = c.client.Get().
Resource("namespaces").
VersionedParams(&opts, scheme.ParameterCodec).
@@ -90,8 +90,8 @@ func (c *namespaces) Watch(opts v1.ListOptions) (watch.Interface, error) {
}
// Create takes the representation of a namespace and creates it. Returns the server's representation of the namespace, and an error, if there is any.
-func (c *namespaces) Create(namespace *api.Namespace) (result *api.Namespace, err error) {
- result = &api.Namespace{}
+func (c *namespaces) Create(namespace *core.Namespace) (result *core.Namespace, err error) {
+ result = &core.Namespace{}
err = c.client.Post().
Resource("namespaces").
Body(namespace).
@@ -101,8 +101,8 @@ func (c *namespaces) Create(namespace *api.Namespace) (result *api.Namespace, er
}
// Update takes the representation of a namespace and updates it. Returns the server's representation of the namespace, and an error, if there is any.
-func (c *namespaces) Update(namespace *api.Namespace) (result *api.Namespace, err error) {
- result = &api.Namespace{}
+func (c *namespaces) Update(namespace *core.Namespace) (result *core.Namespace, err error) {
+ result = &core.Namespace{}
err = c.client.Put().
Resource("namespaces").
Name(namespace.Name).
@@ -115,8 +115,8 @@ func (c *namespaces) Update(namespace *api.Namespace) (result *api.Namespace, er
// UpdateStatus was generated because the type contains a Status member.
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
-func (c *namespaces) UpdateStatus(namespace *api.Namespace) (result *api.Namespace, err error) {
- result = &api.Namespace{}
+func (c *namespaces) UpdateStatus(namespace *core.Namespace) (result *core.Namespace, err error) {
+ result = &core.Namespace{}
err = c.client.Put().
Resource("namespaces").
Name(namespace.Name).
@@ -148,8 +148,8 @@ func (c *namespaces) DeleteCollection(options *v1.DeleteOptions, listOptions v1.
}
// Patch applies the patch and returns the patched namespace.
-func (c *namespaces) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.Namespace, err error) {
- result = &api.Namespace{}
+func (c *namespaces) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.Namespace, err error) {
+ result = &core.Namespace{}
err = c.client.Patch(pt).
Resource("namespaces").
SubResource(subresources...).
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/namespace_expansion.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/namespace_expansion.go
index 456de1cdfc..29c7bcf2e2 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/namespace_expansion.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/namespace_expansion.go
@@ -16,7 +16,9 @@ limitations under the License.
package internalversion
-import "k8s.io/kubernetes/pkg/api"
+import (
+ api "k8s.io/kubernetes/pkg/apis/core"
+)
// The NamespaceExpansion interface allows manually adding extra methods to the NamespaceInterface.
type NamespaceExpansion interface {
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/node.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/node.go
index ee11691b8a..b5c92087bf 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/node.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/node.go
@@ -21,7 +21,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
rest "k8s.io/client-go/rest"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
scheme "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme"
)
@@ -33,15 +33,15 @@ type NodesGetter interface {
// NodeInterface has methods to work with Node resources.
type NodeInterface interface {
- Create(*api.Node) (*api.Node, error)
- Update(*api.Node) (*api.Node, error)
- UpdateStatus(*api.Node) (*api.Node, error)
+ Create(*core.Node) (*core.Node, error)
+ Update(*core.Node) (*core.Node, error)
+ UpdateStatus(*core.Node) (*core.Node, error)
Delete(name string, options *v1.DeleteOptions) error
DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error
- Get(name string, options v1.GetOptions) (*api.Node, error)
- List(opts v1.ListOptions) (*api.NodeList, error)
+ Get(name string, options v1.GetOptions) (*core.Node, error)
+ List(opts v1.ListOptions) (*core.NodeList, error)
Watch(opts v1.ListOptions) (watch.Interface, error)
- Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.Node, err error)
+ Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.Node, err error)
NodeExpansion
}
@@ -58,8 +58,8 @@ func newNodes(c *CoreClient) *nodes {
}
// Get takes name of the node, and returns the corresponding node object, and an error if there is any.
-func (c *nodes) Get(name string, options v1.GetOptions) (result *api.Node, err error) {
- result = &api.Node{}
+func (c *nodes) Get(name string, options v1.GetOptions) (result *core.Node, err error) {
+ result = &core.Node{}
err = c.client.Get().
Resource("nodes").
Name(name).
@@ -70,8 +70,8 @@ func (c *nodes) Get(name string, options v1.GetOptions) (result *api.Node, err e
}
// List takes label and field selectors, and returns the list of Nodes that match those selectors.
-func (c *nodes) List(opts v1.ListOptions) (result *api.NodeList, err error) {
- result = &api.NodeList{}
+func (c *nodes) List(opts v1.ListOptions) (result *core.NodeList, err error) {
+ result = &core.NodeList{}
err = c.client.Get().
Resource("nodes").
VersionedParams(&opts, scheme.ParameterCodec).
@@ -90,8 +90,8 @@ func (c *nodes) Watch(opts v1.ListOptions) (watch.Interface, error) {
}
// Create takes the representation of a node and creates it. Returns the server's representation of the node, and an error, if there is any.
-func (c *nodes) Create(node *api.Node) (result *api.Node, err error) {
- result = &api.Node{}
+func (c *nodes) Create(node *core.Node) (result *core.Node, err error) {
+ result = &core.Node{}
err = c.client.Post().
Resource("nodes").
Body(node).
@@ -101,8 +101,8 @@ func (c *nodes) Create(node *api.Node) (result *api.Node, err error) {
}
// Update takes the representation of a node and updates it. Returns the server's representation of the node, and an error, if there is any.
-func (c *nodes) Update(node *api.Node) (result *api.Node, err error) {
- result = &api.Node{}
+func (c *nodes) Update(node *core.Node) (result *core.Node, err error) {
+ result = &core.Node{}
err = c.client.Put().
Resource("nodes").
Name(node.Name).
@@ -115,8 +115,8 @@ func (c *nodes) Update(node *api.Node) (result *api.Node, err error) {
// UpdateStatus was generated because the type contains a Status member.
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
-func (c *nodes) UpdateStatus(node *api.Node) (result *api.Node, err error) {
- result = &api.Node{}
+func (c *nodes) UpdateStatus(node *core.Node) (result *core.Node, err error) {
+ result = &core.Node{}
err = c.client.Put().
Resource("nodes").
Name(node.Name).
@@ -148,8 +148,8 @@ func (c *nodes) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListO
}
// Patch applies the patch and returns the patched node.
-func (c *nodes) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.Node, err error) {
- result = &api.Node{}
+func (c *nodes) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.Node, err error) {
+ result = &core.Node{}
err = c.client.Patch(pt).
Resource("nodes").
SubResource(subresources...).
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/node_expansion.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/node_expansion.go
index b02fa083ba..8e29d5f1ef 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/node_expansion.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/node_expansion.go
@@ -18,7 +18,7 @@ package internalversion
import (
"k8s.io/apimachinery/pkg/types"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// The NodeExpansion interface allows manually adding extra methods to the NodeInterface.
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/persistentvolume.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/persistentvolume.go
index 92a2657d45..9f8921c481 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/persistentvolume.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/persistentvolume.go
@@ -21,7 +21,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
rest "k8s.io/client-go/rest"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
scheme "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme"
)
@@ -33,15 +33,15 @@ type PersistentVolumesGetter interface {
// PersistentVolumeInterface has methods to work with PersistentVolume resources.
type PersistentVolumeInterface interface {
- Create(*api.PersistentVolume) (*api.PersistentVolume, error)
- Update(*api.PersistentVolume) (*api.PersistentVolume, error)
- UpdateStatus(*api.PersistentVolume) (*api.PersistentVolume, error)
+ Create(*core.PersistentVolume) (*core.PersistentVolume, error)
+ Update(*core.PersistentVolume) (*core.PersistentVolume, error)
+ UpdateStatus(*core.PersistentVolume) (*core.PersistentVolume, error)
Delete(name string, options *v1.DeleteOptions) error
DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error
- Get(name string, options v1.GetOptions) (*api.PersistentVolume, error)
- List(opts v1.ListOptions) (*api.PersistentVolumeList, error)
+ Get(name string, options v1.GetOptions) (*core.PersistentVolume, error)
+ List(opts v1.ListOptions) (*core.PersistentVolumeList, error)
Watch(opts v1.ListOptions) (watch.Interface, error)
- Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.PersistentVolume, err error)
+ Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.PersistentVolume, err error)
PersistentVolumeExpansion
}
@@ -58,8 +58,8 @@ func newPersistentVolumes(c *CoreClient) *persistentVolumes {
}
// Get takes name of the persistentVolume, and returns the corresponding persistentVolume object, and an error if there is any.
-func (c *persistentVolumes) Get(name string, options v1.GetOptions) (result *api.PersistentVolume, err error) {
- result = &api.PersistentVolume{}
+func (c *persistentVolumes) Get(name string, options v1.GetOptions) (result *core.PersistentVolume, err error) {
+ result = &core.PersistentVolume{}
err = c.client.Get().
Resource("persistentvolumes").
Name(name).
@@ -70,8 +70,8 @@ func (c *persistentVolumes) Get(name string, options v1.GetOptions) (result *api
}
// List takes label and field selectors, and returns the list of PersistentVolumes that match those selectors.
-func (c *persistentVolumes) List(opts v1.ListOptions) (result *api.PersistentVolumeList, err error) {
- result = &api.PersistentVolumeList{}
+func (c *persistentVolumes) List(opts v1.ListOptions) (result *core.PersistentVolumeList, err error) {
+ result = &core.PersistentVolumeList{}
err = c.client.Get().
Resource("persistentvolumes").
VersionedParams(&opts, scheme.ParameterCodec).
@@ -90,8 +90,8 @@ func (c *persistentVolumes) Watch(opts v1.ListOptions) (watch.Interface, error)
}
// Create takes the representation of a persistentVolume and creates it. Returns the server's representation of the persistentVolume, and an error, if there is any.
-func (c *persistentVolumes) Create(persistentVolume *api.PersistentVolume) (result *api.PersistentVolume, err error) {
- result = &api.PersistentVolume{}
+func (c *persistentVolumes) Create(persistentVolume *core.PersistentVolume) (result *core.PersistentVolume, err error) {
+ result = &core.PersistentVolume{}
err = c.client.Post().
Resource("persistentvolumes").
Body(persistentVolume).
@@ -101,8 +101,8 @@ func (c *persistentVolumes) Create(persistentVolume *api.PersistentVolume) (resu
}
// Update takes the representation of a persistentVolume and updates it. Returns the server's representation of the persistentVolume, and an error, if there is any.
-func (c *persistentVolumes) Update(persistentVolume *api.PersistentVolume) (result *api.PersistentVolume, err error) {
- result = &api.PersistentVolume{}
+func (c *persistentVolumes) Update(persistentVolume *core.PersistentVolume) (result *core.PersistentVolume, err error) {
+ result = &core.PersistentVolume{}
err = c.client.Put().
Resource("persistentvolumes").
Name(persistentVolume.Name).
@@ -115,8 +115,8 @@ func (c *persistentVolumes) Update(persistentVolume *api.PersistentVolume) (resu
// UpdateStatus was generated because the type contains a Status member.
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
-func (c *persistentVolumes) UpdateStatus(persistentVolume *api.PersistentVolume) (result *api.PersistentVolume, err error) {
- result = &api.PersistentVolume{}
+func (c *persistentVolumes) UpdateStatus(persistentVolume *core.PersistentVolume) (result *core.PersistentVolume, err error) {
+ result = &core.PersistentVolume{}
err = c.client.Put().
Resource("persistentvolumes").
Name(persistentVolume.Name).
@@ -148,8 +148,8 @@ func (c *persistentVolumes) DeleteCollection(options *v1.DeleteOptions, listOpti
}
// Patch applies the patch and returns the patched persistentVolume.
-func (c *persistentVolumes) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.PersistentVolume, err error) {
- result = &api.PersistentVolume{}
+func (c *persistentVolumes) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.PersistentVolume, err error) {
+ result = &core.PersistentVolume{}
err = c.client.Patch(pt).
Resource("persistentvolumes").
SubResource(subresources...).
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/persistentvolumeclaim.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/persistentvolumeclaim.go
index d0db131d77..d8e2e5a3e9 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/persistentvolumeclaim.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/persistentvolumeclaim.go
@@ -21,7 +21,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
rest "k8s.io/client-go/rest"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
scheme "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme"
)
@@ -33,15 +33,15 @@ type PersistentVolumeClaimsGetter interface {
// PersistentVolumeClaimInterface has methods to work with PersistentVolumeClaim resources.
type PersistentVolumeClaimInterface interface {
- Create(*api.PersistentVolumeClaim) (*api.PersistentVolumeClaim, error)
- Update(*api.PersistentVolumeClaim) (*api.PersistentVolumeClaim, error)
- UpdateStatus(*api.PersistentVolumeClaim) (*api.PersistentVolumeClaim, error)
+ Create(*core.PersistentVolumeClaim) (*core.PersistentVolumeClaim, error)
+ Update(*core.PersistentVolumeClaim) (*core.PersistentVolumeClaim, error)
+ UpdateStatus(*core.PersistentVolumeClaim) (*core.PersistentVolumeClaim, error)
Delete(name string, options *v1.DeleteOptions) error
DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error
- Get(name string, options v1.GetOptions) (*api.PersistentVolumeClaim, error)
- List(opts v1.ListOptions) (*api.PersistentVolumeClaimList, error)
+ Get(name string, options v1.GetOptions) (*core.PersistentVolumeClaim, error)
+ List(opts v1.ListOptions) (*core.PersistentVolumeClaimList, error)
Watch(opts v1.ListOptions) (watch.Interface, error)
- Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.PersistentVolumeClaim, err error)
+ Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.PersistentVolumeClaim, err error)
PersistentVolumeClaimExpansion
}
@@ -60,8 +60,8 @@ func newPersistentVolumeClaims(c *CoreClient, namespace string) *persistentVolum
}
// Get takes name of the persistentVolumeClaim, and returns the corresponding persistentVolumeClaim object, and an error if there is any.
-func (c *persistentVolumeClaims) Get(name string, options v1.GetOptions) (result *api.PersistentVolumeClaim, err error) {
- result = &api.PersistentVolumeClaim{}
+func (c *persistentVolumeClaims) Get(name string, options v1.GetOptions) (result *core.PersistentVolumeClaim, err error) {
+ result = &core.PersistentVolumeClaim{}
err = c.client.Get().
Namespace(c.ns).
Resource("persistentvolumeclaims").
@@ -73,8 +73,8 @@ func (c *persistentVolumeClaims) Get(name string, options v1.GetOptions) (result
}
// List takes label and field selectors, and returns the list of PersistentVolumeClaims that match those selectors.
-func (c *persistentVolumeClaims) List(opts v1.ListOptions) (result *api.PersistentVolumeClaimList, err error) {
- result = &api.PersistentVolumeClaimList{}
+func (c *persistentVolumeClaims) List(opts v1.ListOptions) (result *core.PersistentVolumeClaimList, err error) {
+ result = &core.PersistentVolumeClaimList{}
err = c.client.Get().
Namespace(c.ns).
Resource("persistentvolumeclaims").
@@ -95,8 +95,8 @@ func (c *persistentVolumeClaims) Watch(opts v1.ListOptions) (watch.Interface, er
}
// Create takes the representation of a persistentVolumeClaim and creates it. Returns the server's representation of the persistentVolumeClaim, and an error, if there is any.
-func (c *persistentVolumeClaims) Create(persistentVolumeClaim *api.PersistentVolumeClaim) (result *api.PersistentVolumeClaim, err error) {
- result = &api.PersistentVolumeClaim{}
+func (c *persistentVolumeClaims) Create(persistentVolumeClaim *core.PersistentVolumeClaim) (result *core.PersistentVolumeClaim, err error) {
+ result = &core.PersistentVolumeClaim{}
err = c.client.Post().
Namespace(c.ns).
Resource("persistentvolumeclaims").
@@ -107,8 +107,8 @@ func (c *persistentVolumeClaims) Create(persistentVolumeClaim *api.PersistentVol
}
// Update takes the representation of a persistentVolumeClaim and updates it. Returns the server's representation of the persistentVolumeClaim, and an error, if there is any.
-func (c *persistentVolumeClaims) Update(persistentVolumeClaim *api.PersistentVolumeClaim) (result *api.PersistentVolumeClaim, err error) {
- result = &api.PersistentVolumeClaim{}
+func (c *persistentVolumeClaims) Update(persistentVolumeClaim *core.PersistentVolumeClaim) (result *core.PersistentVolumeClaim, err error) {
+ result = &core.PersistentVolumeClaim{}
err = c.client.Put().
Namespace(c.ns).
Resource("persistentvolumeclaims").
@@ -122,8 +122,8 @@ func (c *persistentVolumeClaims) Update(persistentVolumeClaim *api.PersistentVol
// UpdateStatus was generated because the type contains a Status member.
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
-func (c *persistentVolumeClaims) UpdateStatus(persistentVolumeClaim *api.PersistentVolumeClaim) (result *api.PersistentVolumeClaim, err error) {
- result = &api.PersistentVolumeClaim{}
+func (c *persistentVolumeClaims) UpdateStatus(persistentVolumeClaim *core.PersistentVolumeClaim) (result *core.PersistentVolumeClaim, err error) {
+ result = &core.PersistentVolumeClaim{}
err = c.client.Put().
Namespace(c.ns).
Resource("persistentvolumeclaims").
@@ -158,8 +158,8 @@ func (c *persistentVolumeClaims) DeleteCollection(options *v1.DeleteOptions, lis
}
// Patch applies the patch and returns the patched persistentVolumeClaim.
-func (c *persistentVolumeClaims) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.PersistentVolumeClaim, err error) {
- result = &api.PersistentVolumeClaim{}
+func (c *persistentVolumeClaims) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.PersistentVolumeClaim, err error) {
+ result = &core.PersistentVolumeClaim{}
err = c.client.Patch(pt).
Namespace(c.ns).
Resource("persistentvolumeclaims").
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/pod.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/pod.go
index b662689cf5..7c85553290 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/pod.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/pod.go
@@ -21,7 +21,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
rest "k8s.io/client-go/rest"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
scheme "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme"
)
@@ -33,15 +33,15 @@ type PodsGetter interface {
// PodInterface has methods to work with Pod resources.
type PodInterface interface {
- Create(*api.Pod) (*api.Pod, error)
- Update(*api.Pod) (*api.Pod, error)
- UpdateStatus(*api.Pod) (*api.Pod, error)
+ Create(*core.Pod) (*core.Pod, error)
+ Update(*core.Pod) (*core.Pod, error)
+ UpdateStatus(*core.Pod) (*core.Pod, error)
Delete(name string, options *v1.DeleteOptions) error
DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error
- Get(name string, options v1.GetOptions) (*api.Pod, error)
- List(opts v1.ListOptions) (*api.PodList, error)
+ Get(name string, options v1.GetOptions) (*core.Pod, error)
+ List(opts v1.ListOptions) (*core.PodList, error)
Watch(opts v1.ListOptions) (watch.Interface, error)
- Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.Pod, err error)
+ Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.Pod, err error)
PodExpansion
}
@@ -60,8 +60,8 @@ func newPods(c *CoreClient, namespace string) *pods {
}
// Get takes name of the pod, and returns the corresponding pod object, and an error if there is any.
-func (c *pods) Get(name string, options v1.GetOptions) (result *api.Pod, err error) {
- result = &api.Pod{}
+func (c *pods) Get(name string, options v1.GetOptions) (result *core.Pod, err error) {
+ result = &core.Pod{}
err = c.client.Get().
Namespace(c.ns).
Resource("pods").
@@ -73,8 +73,8 @@ func (c *pods) Get(name string, options v1.GetOptions) (result *api.Pod, err err
}
// List takes label and field selectors, and returns the list of Pods that match those selectors.
-func (c *pods) List(opts v1.ListOptions) (result *api.PodList, err error) {
- result = &api.PodList{}
+func (c *pods) List(opts v1.ListOptions) (result *core.PodList, err error) {
+ result = &core.PodList{}
err = c.client.Get().
Namespace(c.ns).
Resource("pods").
@@ -95,8 +95,8 @@ func (c *pods) Watch(opts v1.ListOptions) (watch.Interface, error) {
}
// Create takes the representation of a pod and creates it. Returns the server's representation of the pod, and an error, if there is any.
-func (c *pods) Create(pod *api.Pod) (result *api.Pod, err error) {
- result = &api.Pod{}
+func (c *pods) Create(pod *core.Pod) (result *core.Pod, err error) {
+ result = &core.Pod{}
err = c.client.Post().
Namespace(c.ns).
Resource("pods").
@@ -107,8 +107,8 @@ func (c *pods) Create(pod *api.Pod) (result *api.Pod, err error) {
}
// Update takes the representation of a pod and updates it. Returns the server's representation of the pod, and an error, if there is any.
-func (c *pods) Update(pod *api.Pod) (result *api.Pod, err error) {
- result = &api.Pod{}
+func (c *pods) Update(pod *core.Pod) (result *core.Pod, err error) {
+ result = &core.Pod{}
err = c.client.Put().
Namespace(c.ns).
Resource("pods").
@@ -122,8 +122,8 @@ func (c *pods) Update(pod *api.Pod) (result *api.Pod, err error) {
// UpdateStatus was generated because the type contains a Status member.
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
-func (c *pods) UpdateStatus(pod *api.Pod) (result *api.Pod, err error) {
- result = &api.Pod{}
+func (c *pods) UpdateStatus(pod *core.Pod) (result *core.Pod, err error) {
+ result = &core.Pod{}
err = c.client.Put().
Namespace(c.ns).
Resource("pods").
@@ -158,8 +158,8 @@ func (c *pods) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOp
}
// Patch applies the patch and returns the patched pod.
-func (c *pods) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.Pod, err error) {
- result = &api.Pod{}
+func (c *pods) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.Pod, err error) {
+ result = &core.Pod{}
err = c.client.Patch(pt).
Namespace(c.ns).
Resource("pods").
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/pod_expansion.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/pod_expansion.go
index 7b806dbd0b..86fead7cce 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/pod_expansion.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/pod_expansion.go
@@ -18,8 +18,8 @@ package internalversion
import (
restclient "k8s.io/client-go/rest"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// The PodExpansion interface allows manually adding extra methods to the PodInterface.
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/podtemplate.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/podtemplate.go
index 8a940bf6b7..49723c1207 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/podtemplate.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/podtemplate.go
@@ -21,7 +21,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
rest "k8s.io/client-go/rest"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
scheme "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme"
)
@@ -33,14 +33,14 @@ type PodTemplatesGetter interface {
// PodTemplateInterface has methods to work with PodTemplate resources.
type PodTemplateInterface interface {
- Create(*api.PodTemplate) (*api.PodTemplate, error)
- Update(*api.PodTemplate) (*api.PodTemplate, error)
+ Create(*core.PodTemplate) (*core.PodTemplate, error)
+ Update(*core.PodTemplate) (*core.PodTemplate, error)
Delete(name string, options *v1.DeleteOptions) error
DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error
- Get(name string, options v1.GetOptions) (*api.PodTemplate, error)
- List(opts v1.ListOptions) (*api.PodTemplateList, error)
+ Get(name string, options v1.GetOptions) (*core.PodTemplate, error)
+ List(opts v1.ListOptions) (*core.PodTemplateList, error)
Watch(opts v1.ListOptions) (watch.Interface, error)
- Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.PodTemplate, err error)
+ Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.PodTemplate, err error)
PodTemplateExpansion
}
@@ -59,8 +59,8 @@ func newPodTemplates(c *CoreClient, namespace string) *podTemplates {
}
// Get takes name of the podTemplate, and returns the corresponding podTemplate object, and an error if there is any.
-func (c *podTemplates) Get(name string, options v1.GetOptions) (result *api.PodTemplate, err error) {
- result = &api.PodTemplate{}
+func (c *podTemplates) Get(name string, options v1.GetOptions) (result *core.PodTemplate, err error) {
+ result = &core.PodTemplate{}
err = c.client.Get().
Namespace(c.ns).
Resource("podtemplates").
@@ -72,8 +72,8 @@ func (c *podTemplates) Get(name string, options v1.GetOptions) (result *api.PodT
}
// List takes label and field selectors, and returns the list of PodTemplates that match those selectors.
-func (c *podTemplates) List(opts v1.ListOptions) (result *api.PodTemplateList, err error) {
- result = &api.PodTemplateList{}
+func (c *podTemplates) List(opts v1.ListOptions) (result *core.PodTemplateList, err error) {
+ result = &core.PodTemplateList{}
err = c.client.Get().
Namespace(c.ns).
Resource("podtemplates").
@@ -94,8 +94,8 @@ func (c *podTemplates) Watch(opts v1.ListOptions) (watch.Interface, error) {
}
// Create takes the representation of a podTemplate and creates it. Returns the server's representation of the podTemplate, and an error, if there is any.
-func (c *podTemplates) Create(podTemplate *api.PodTemplate) (result *api.PodTemplate, err error) {
- result = &api.PodTemplate{}
+func (c *podTemplates) Create(podTemplate *core.PodTemplate) (result *core.PodTemplate, err error) {
+ result = &core.PodTemplate{}
err = c.client.Post().
Namespace(c.ns).
Resource("podtemplates").
@@ -106,8 +106,8 @@ func (c *podTemplates) Create(podTemplate *api.PodTemplate) (result *api.PodTemp
}
// Update takes the representation of a podTemplate and updates it. Returns the server's representation of the podTemplate, and an error, if there is any.
-func (c *podTemplates) Update(podTemplate *api.PodTemplate) (result *api.PodTemplate, err error) {
- result = &api.PodTemplate{}
+func (c *podTemplates) Update(podTemplate *core.PodTemplate) (result *core.PodTemplate, err error) {
+ result = &core.PodTemplate{}
err = c.client.Put().
Namespace(c.ns).
Resource("podtemplates").
@@ -141,8 +141,8 @@ func (c *podTemplates) DeleteCollection(options *v1.DeleteOptions, listOptions v
}
// Patch applies the patch and returns the patched podTemplate.
-func (c *podTemplates) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.PodTemplate, err error) {
- result = &api.PodTemplate{}
+func (c *podTemplates) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.PodTemplate, err error) {
+ result = &core.PodTemplate{}
err = c.client.Patch(pt).
Namespace(c.ns).
Resource("podtemplates").
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/replicationcontroller.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/replicationcontroller.go
index 3be51c316f..5c787f7764 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/replicationcontroller.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/replicationcontroller.go
@@ -21,8 +21,8 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
rest "k8s.io/client-go/rest"
- api "k8s.io/kubernetes/pkg/api"
- extensions "k8s.io/kubernetes/pkg/apis/extensions"
+ autoscaling "k8s.io/kubernetes/pkg/apis/autoscaling"
+ core "k8s.io/kubernetes/pkg/apis/core"
scheme "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme"
)
@@ -34,17 +34,17 @@ type ReplicationControllersGetter interface {
// ReplicationControllerInterface has methods to work with ReplicationController resources.
type ReplicationControllerInterface interface {
- Create(*api.ReplicationController) (*api.ReplicationController, error)
- Update(*api.ReplicationController) (*api.ReplicationController, error)
- UpdateStatus(*api.ReplicationController) (*api.ReplicationController, error)
+ Create(*core.ReplicationController) (*core.ReplicationController, error)
+ Update(*core.ReplicationController) (*core.ReplicationController, error)
+ UpdateStatus(*core.ReplicationController) (*core.ReplicationController, error)
Delete(name string, options *v1.DeleteOptions) error
DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error
- Get(name string, options v1.GetOptions) (*api.ReplicationController, error)
- List(opts v1.ListOptions) (*api.ReplicationControllerList, error)
+ Get(name string, options v1.GetOptions) (*core.ReplicationController, error)
+ List(opts v1.ListOptions) (*core.ReplicationControllerList, error)
Watch(opts v1.ListOptions) (watch.Interface, error)
- Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.ReplicationController, err error)
- GetScale(replicationControllerName string, options v1.GetOptions) (*extensions.Scale, error)
- UpdateScale(replicationControllerName string, scale *extensions.Scale) (*extensions.Scale, error)
+ Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.ReplicationController, err error)
+ GetScale(replicationControllerName string, options v1.GetOptions) (*autoscaling.Scale, error)
+ UpdateScale(replicationControllerName string, scale *autoscaling.Scale) (*autoscaling.Scale, error)
ReplicationControllerExpansion
}
@@ -64,8 +64,8 @@ func newReplicationControllers(c *CoreClient, namespace string) *replicationCont
}
// Get takes name of the replicationController, and returns the corresponding replicationController object, and an error if there is any.
-func (c *replicationControllers) Get(name string, options v1.GetOptions) (result *api.ReplicationController, err error) {
- result = &api.ReplicationController{}
+func (c *replicationControllers) Get(name string, options v1.GetOptions) (result *core.ReplicationController, err error) {
+ result = &core.ReplicationController{}
err = c.client.Get().
Namespace(c.ns).
Resource("replicationcontrollers").
@@ -77,8 +77,8 @@ func (c *replicationControllers) Get(name string, options v1.GetOptions) (result
}
// List takes label and field selectors, and returns the list of ReplicationControllers that match those selectors.
-func (c *replicationControllers) List(opts v1.ListOptions) (result *api.ReplicationControllerList, err error) {
- result = &api.ReplicationControllerList{}
+func (c *replicationControllers) List(opts v1.ListOptions) (result *core.ReplicationControllerList, err error) {
+ result = &core.ReplicationControllerList{}
err = c.client.Get().
Namespace(c.ns).
Resource("replicationcontrollers").
@@ -99,8 +99,8 @@ func (c *replicationControllers) Watch(opts v1.ListOptions) (watch.Interface, er
}
// Create takes the representation of a replicationController and creates it. Returns the server's representation of the replicationController, and an error, if there is any.
-func (c *replicationControllers) Create(replicationController *api.ReplicationController) (result *api.ReplicationController, err error) {
- result = &api.ReplicationController{}
+func (c *replicationControllers) Create(replicationController *core.ReplicationController) (result *core.ReplicationController, err error) {
+ result = &core.ReplicationController{}
err = c.client.Post().
Namespace(c.ns).
Resource("replicationcontrollers").
@@ -111,8 +111,8 @@ func (c *replicationControllers) Create(replicationController *api.ReplicationCo
}
// Update takes the representation of a replicationController and updates it. Returns the server's representation of the replicationController, and an error, if there is any.
-func (c *replicationControllers) Update(replicationController *api.ReplicationController) (result *api.ReplicationController, err error) {
- result = &api.ReplicationController{}
+func (c *replicationControllers) Update(replicationController *core.ReplicationController) (result *core.ReplicationController, err error) {
+ result = &core.ReplicationController{}
err = c.client.Put().
Namespace(c.ns).
Resource("replicationcontrollers").
@@ -126,8 +126,8 @@ func (c *replicationControllers) Update(replicationController *api.ReplicationCo
// UpdateStatus was generated because the type contains a Status member.
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
-func (c *replicationControllers) UpdateStatus(replicationController *api.ReplicationController) (result *api.ReplicationController, err error) {
- result = &api.ReplicationController{}
+func (c *replicationControllers) UpdateStatus(replicationController *core.ReplicationController) (result *core.ReplicationController, err error) {
+ result = &core.ReplicationController{}
err = c.client.Put().
Namespace(c.ns).
Resource("replicationcontrollers").
@@ -162,8 +162,8 @@ func (c *replicationControllers) DeleteCollection(options *v1.DeleteOptions, lis
}
// Patch applies the patch and returns the patched replicationController.
-func (c *replicationControllers) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.ReplicationController, err error) {
- result = &api.ReplicationController{}
+func (c *replicationControllers) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.ReplicationController, err error) {
+ result = &core.ReplicationController{}
err = c.client.Patch(pt).
Namespace(c.ns).
Resource("replicationcontrollers").
@@ -175,9 +175,9 @@ func (c *replicationControllers) Patch(name string, pt types.PatchType, data []b
return
}
-// GetScale takes name of the replicationController, and returns the corresponding extensions.Scale object, and an error if there is any.
-func (c *replicationControllers) GetScale(replicationControllerName string, options v1.GetOptions) (result *extensions.Scale, err error) {
- result = &extensions.Scale{}
+// GetScale takes name of the replicationController, and returns the corresponding autoscaling.Scale object, and an error if there is any.
+func (c *replicationControllers) GetScale(replicationControllerName string, options v1.GetOptions) (result *autoscaling.Scale, err error) {
+ result = &autoscaling.Scale{}
err = c.client.Get().
Namespace(c.ns).
Resource("replicationcontrollers").
@@ -190,8 +190,8 @@ func (c *replicationControllers) GetScale(replicationControllerName string, opti
}
// UpdateScale takes the top resource name and the representation of a scale and updates it. Returns the server's representation of the scale, and an error, if there is any.
-func (c *replicationControllers) UpdateScale(replicationControllerName string, scale *extensions.Scale) (result *extensions.Scale, err error) {
- result = &extensions.Scale{}
+func (c *replicationControllers) UpdateScale(replicationControllerName string, scale *autoscaling.Scale) (result *autoscaling.Scale, err error) {
+ result = &autoscaling.Scale{}
err = c.client.Put().
Namespace(c.ns).
Resource("replicationcontrollers").
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/resourcequota.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/resourcequota.go
index 169f3219af..5c5c3f1364 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/resourcequota.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/resourcequota.go
@@ -21,7 +21,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
rest "k8s.io/client-go/rest"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
scheme "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme"
)
@@ -33,15 +33,15 @@ type ResourceQuotasGetter interface {
// ResourceQuotaInterface has methods to work with ResourceQuota resources.
type ResourceQuotaInterface interface {
- Create(*api.ResourceQuota) (*api.ResourceQuota, error)
- Update(*api.ResourceQuota) (*api.ResourceQuota, error)
- UpdateStatus(*api.ResourceQuota) (*api.ResourceQuota, error)
+ Create(*core.ResourceQuota) (*core.ResourceQuota, error)
+ Update(*core.ResourceQuota) (*core.ResourceQuota, error)
+ UpdateStatus(*core.ResourceQuota) (*core.ResourceQuota, error)
Delete(name string, options *v1.DeleteOptions) error
DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error
- Get(name string, options v1.GetOptions) (*api.ResourceQuota, error)
- List(opts v1.ListOptions) (*api.ResourceQuotaList, error)
+ Get(name string, options v1.GetOptions) (*core.ResourceQuota, error)
+ List(opts v1.ListOptions) (*core.ResourceQuotaList, error)
Watch(opts v1.ListOptions) (watch.Interface, error)
- Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.ResourceQuota, err error)
+ Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.ResourceQuota, err error)
ResourceQuotaExpansion
}
@@ -60,8 +60,8 @@ func newResourceQuotas(c *CoreClient, namespace string) *resourceQuotas {
}
// Get takes name of the resourceQuota, and returns the corresponding resourceQuota object, and an error if there is any.
-func (c *resourceQuotas) Get(name string, options v1.GetOptions) (result *api.ResourceQuota, err error) {
- result = &api.ResourceQuota{}
+func (c *resourceQuotas) Get(name string, options v1.GetOptions) (result *core.ResourceQuota, err error) {
+ result = &core.ResourceQuota{}
err = c.client.Get().
Namespace(c.ns).
Resource("resourcequotas").
@@ -73,8 +73,8 @@ func (c *resourceQuotas) Get(name string, options v1.GetOptions) (result *api.Re
}
// List takes label and field selectors, and returns the list of ResourceQuotas that match those selectors.
-func (c *resourceQuotas) List(opts v1.ListOptions) (result *api.ResourceQuotaList, err error) {
- result = &api.ResourceQuotaList{}
+func (c *resourceQuotas) List(opts v1.ListOptions) (result *core.ResourceQuotaList, err error) {
+ result = &core.ResourceQuotaList{}
err = c.client.Get().
Namespace(c.ns).
Resource("resourcequotas").
@@ -95,8 +95,8 @@ func (c *resourceQuotas) Watch(opts v1.ListOptions) (watch.Interface, error) {
}
// Create takes the representation of a resourceQuota and creates it. Returns the server's representation of the resourceQuota, and an error, if there is any.
-func (c *resourceQuotas) Create(resourceQuota *api.ResourceQuota) (result *api.ResourceQuota, err error) {
- result = &api.ResourceQuota{}
+func (c *resourceQuotas) Create(resourceQuota *core.ResourceQuota) (result *core.ResourceQuota, err error) {
+ result = &core.ResourceQuota{}
err = c.client.Post().
Namespace(c.ns).
Resource("resourcequotas").
@@ -107,8 +107,8 @@ func (c *resourceQuotas) Create(resourceQuota *api.ResourceQuota) (result *api.R
}
// Update takes the representation of a resourceQuota and updates it. Returns the server's representation of the resourceQuota, and an error, if there is any.
-func (c *resourceQuotas) Update(resourceQuota *api.ResourceQuota) (result *api.ResourceQuota, err error) {
- result = &api.ResourceQuota{}
+func (c *resourceQuotas) Update(resourceQuota *core.ResourceQuota) (result *core.ResourceQuota, err error) {
+ result = &core.ResourceQuota{}
err = c.client.Put().
Namespace(c.ns).
Resource("resourcequotas").
@@ -122,8 +122,8 @@ func (c *resourceQuotas) Update(resourceQuota *api.ResourceQuota) (result *api.R
// UpdateStatus was generated because the type contains a Status member.
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
-func (c *resourceQuotas) UpdateStatus(resourceQuota *api.ResourceQuota) (result *api.ResourceQuota, err error) {
- result = &api.ResourceQuota{}
+func (c *resourceQuotas) UpdateStatus(resourceQuota *core.ResourceQuota) (result *core.ResourceQuota, err error) {
+ result = &core.ResourceQuota{}
err = c.client.Put().
Namespace(c.ns).
Resource("resourcequotas").
@@ -158,8 +158,8 @@ func (c *resourceQuotas) DeleteCollection(options *v1.DeleteOptions, listOptions
}
// Patch applies the patch and returns the patched resourceQuota.
-func (c *resourceQuotas) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.ResourceQuota, err error) {
- result = &api.ResourceQuota{}
+func (c *resourceQuotas) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.ResourceQuota, err error) {
+ result = &core.ResourceQuota{}
err = c.client.Patch(pt).
Namespace(c.ns).
Resource("resourcequotas").
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/secret.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/secret.go
index 628fa14717..36a1a16e0a 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/secret.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/secret.go
@@ -21,7 +21,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
rest "k8s.io/client-go/rest"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
scheme "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme"
)
@@ -33,14 +33,14 @@ type SecretsGetter interface {
// SecretInterface has methods to work with Secret resources.
type SecretInterface interface {
- Create(*api.Secret) (*api.Secret, error)
- Update(*api.Secret) (*api.Secret, error)
+ Create(*core.Secret) (*core.Secret, error)
+ Update(*core.Secret) (*core.Secret, error)
Delete(name string, options *v1.DeleteOptions) error
DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error
- Get(name string, options v1.GetOptions) (*api.Secret, error)
- List(opts v1.ListOptions) (*api.SecretList, error)
+ Get(name string, options v1.GetOptions) (*core.Secret, error)
+ List(opts v1.ListOptions) (*core.SecretList, error)
Watch(opts v1.ListOptions) (watch.Interface, error)
- Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.Secret, err error)
+ Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.Secret, err error)
SecretExpansion
}
@@ -59,8 +59,8 @@ func newSecrets(c *CoreClient, namespace string) *secrets {
}
// Get takes name of the secret, and returns the corresponding secret object, and an error if there is any.
-func (c *secrets) Get(name string, options v1.GetOptions) (result *api.Secret, err error) {
- result = &api.Secret{}
+func (c *secrets) Get(name string, options v1.GetOptions) (result *core.Secret, err error) {
+ result = &core.Secret{}
err = c.client.Get().
Namespace(c.ns).
Resource("secrets").
@@ -72,8 +72,8 @@ func (c *secrets) Get(name string, options v1.GetOptions) (result *api.Secret, e
}
// List takes label and field selectors, and returns the list of Secrets that match those selectors.
-func (c *secrets) List(opts v1.ListOptions) (result *api.SecretList, err error) {
- result = &api.SecretList{}
+func (c *secrets) List(opts v1.ListOptions) (result *core.SecretList, err error) {
+ result = &core.SecretList{}
err = c.client.Get().
Namespace(c.ns).
Resource("secrets").
@@ -94,8 +94,8 @@ func (c *secrets) Watch(opts v1.ListOptions) (watch.Interface, error) {
}
// Create takes the representation of a secret and creates it. Returns the server's representation of the secret, and an error, if there is any.
-func (c *secrets) Create(secret *api.Secret) (result *api.Secret, err error) {
- result = &api.Secret{}
+func (c *secrets) Create(secret *core.Secret) (result *core.Secret, err error) {
+ result = &core.Secret{}
err = c.client.Post().
Namespace(c.ns).
Resource("secrets").
@@ -106,8 +106,8 @@ func (c *secrets) Create(secret *api.Secret) (result *api.Secret, err error) {
}
// Update takes the representation of a secret and updates it. Returns the server's representation of the secret, and an error, if there is any.
-func (c *secrets) Update(secret *api.Secret) (result *api.Secret, err error) {
- result = &api.Secret{}
+func (c *secrets) Update(secret *core.Secret) (result *core.Secret, err error) {
+ result = &core.Secret{}
err = c.client.Put().
Namespace(c.ns).
Resource("secrets").
@@ -141,8 +141,8 @@ func (c *secrets) DeleteCollection(options *v1.DeleteOptions, listOptions v1.Lis
}
// Patch applies the patch and returns the patched secret.
-func (c *secrets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.Secret, err error) {
- result = &api.Secret{}
+func (c *secrets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.Secret, err error) {
+ result = &core.Secret{}
err = c.client.Patch(pt).
Namespace(c.ns).
Resource("secrets").
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/service.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/service.go
index 05bd7855dc..6a9cfc0cb6 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/service.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/service.go
@@ -21,7 +21,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
rest "k8s.io/client-go/rest"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
scheme "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme"
)
@@ -33,15 +33,15 @@ type ServicesGetter interface {
// ServiceInterface has methods to work with Service resources.
type ServiceInterface interface {
- Create(*api.Service) (*api.Service, error)
- Update(*api.Service) (*api.Service, error)
- UpdateStatus(*api.Service) (*api.Service, error)
+ Create(*core.Service) (*core.Service, error)
+ Update(*core.Service) (*core.Service, error)
+ UpdateStatus(*core.Service) (*core.Service, error)
Delete(name string, options *v1.DeleteOptions) error
DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error
- Get(name string, options v1.GetOptions) (*api.Service, error)
- List(opts v1.ListOptions) (*api.ServiceList, error)
+ Get(name string, options v1.GetOptions) (*core.Service, error)
+ List(opts v1.ListOptions) (*core.ServiceList, error)
Watch(opts v1.ListOptions) (watch.Interface, error)
- Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.Service, err error)
+ Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.Service, err error)
ServiceExpansion
}
@@ -60,8 +60,8 @@ func newServices(c *CoreClient, namespace string) *services {
}
// Get takes name of the service, and returns the corresponding service object, and an error if there is any.
-func (c *services) Get(name string, options v1.GetOptions) (result *api.Service, err error) {
- result = &api.Service{}
+func (c *services) Get(name string, options v1.GetOptions) (result *core.Service, err error) {
+ result = &core.Service{}
err = c.client.Get().
Namespace(c.ns).
Resource("services").
@@ -73,8 +73,8 @@ func (c *services) Get(name string, options v1.GetOptions) (result *api.Service,
}
// List takes label and field selectors, and returns the list of Services that match those selectors.
-func (c *services) List(opts v1.ListOptions) (result *api.ServiceList, err error) {
- result = &api.ServiceList{}
+func (c *services) List(opts v1.ListOptions) (result *core.ServiceList, err error) {
+ result = &core.ServiceList{}
err = c.client.Get().
Namespace(c.ns).
Resource("services").
@@ -95,8 +95,8 @@ func (c *services) Watch(opts v1.ListOptions) (watch.Interface, error) {
}
// Create takes the representation of a service and creates it. Returns the server's representation of the service, and an error, if there is any.
-func (c *services) Create(service *api.Service) (result *api.Service, err error) {
- result = &api.Service{}
+func (c *services) Create(service *core.Service) (result *core.Service, err error) {
+ result = &core.Service{}
err = c.client.Post().
Namespace(c.ns).
Resource("services").
@@ -107,8 +107,8 @@ func (c *services) Create(service *api.Service) (result *api.Service, err error)
}
// Update takes the representation of a service and updates it. Returns the server's representation of the service, and an error, if there is any.
-func (c *services) Update(service *api.Service) (result *api.Service, err error) {
- result = &api.Service{}
+func (c *services) Update(service *core.Service) (result *core.Service, err error) {
+ result = &core.Service{}
err = c.client.Put().
Namespace(c.ns).
Resource("services").
@@ -122,8 +122,8 @@ func (c *services) Update(service *api.Service) (result *api.Service, err error)
// UpdateStatus was generated because the type contains a Status member.
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
-func (c *services) UpdateStatus(service *api.Service) (result *api.Service, err error) {
- result = &api.Service{}
+func (c *services) UpdateStatus(service *core.Service) (result *core.Service, err error) {
+ result = &core.Service{}
err = c.client.Put().
Namespace(c.ns).
Resource("services").
@@ -158,8 +158,8 @@ func (c *services) DeleteCollection(options *v1.DeleteOptions, listOptions v1.Li
}
// Patch applies the patch and returns the patched service.
-func (c *services) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.Service, err error) {
- result = &api.Service{}
+func (c *services) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.Service, err error) {
+ result = &core.Service{}
err = c.client.Patch(pt).
Namespace(c.ns).
Resource("services").
diff --git a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/serviceaccount.go b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/serviceaccount.go
index 3a7bf04aaf..75f0191f6f 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/serviceaccount.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/serviceaccount.go
@@ -21,7 +21,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
rest "k8s.io/client-go/rest"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
scheme "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme"
)
@@ -33,14 +33,14 @@ type ServiceAccountsGetter interface {
// ServiceAccountInterface has methods to work with ServiceAccount resources.
type ServiceAccountInterface interface {
- Create(*api.ServiceAccount) (*api.ServiceAccount, error)
- Update(*api.ServiceAccount) (*api.ServiceAccount, error)
+ Create(*core.ServiceAccount) (*core.ServiceAccount, error)
+ Update(*core.ServiceAccount) (*core.ServiceAccount, error)
Delete(name string, options *v1.DeleteOptions) error
DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error
- Get(name string, options v1.GetOptions) (*api.ServiceAccount, error)
- List(opts v1.ListOptions) (*api.ServiceAccountList, error)
+ Get(name string, options v1.GetOptions) (*core.ServiceAccount, error)
+ List(opts v1.ListOptions) (*core.ServiceAccountList, error)
Watch(opts v1.ListOptions) (watch.Interface, error)
- Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.ServiceAccount, err error)
+ Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.ServiceAccount, err error)
ServiceAccountExpansion
}
@@ -59,8 +59,8 @@ func newServiceAccounts(c *CoreClient, namespace string) *serviceAccounts {
}
// Get takes name of the serviceAccount, and returns the corresponding serviceAccount object, and an error if there is any.
-func (c *serviceAccounts) Get(name string, options v1.GetOptions) (result *api.ServiceAccount, err error) {
- result = &api.ServiceAccount{}
+func (c *serviceAccounts) Get(name string, options v1.GetOptions) (result *core.ServiceAccount, err error) {
+ result = &core.ServiceAccount{}
err = c.client.Get().
Namespace(c.ns).
Resource("serviceaccounts").
@@ -72,8 +72,8 @@ func (c *serviceAccounts) Get(name string, options v1.GetOptions) (result *api.S
}
// List takes label and field selectors, and returns the list of ServiceAccounts that match those selectors.
-func (c *serviceAccounts) List(opts v1.ListOptions) (result *api.ServiceAccountList, err error) {
- result = &api.ServiceAccountList{}
+func (c *serviceAccounts) List(opts v1.ListOptions) (result *core.ServiceAccountList, err error) {
+ result = &core.ServiceAccountList{}
err = c.client.Get().
Namespace(c.ns).
Resource("serviceaccounts").
@@ -94,8 +94,8 @@ func (c *serviceAccounts) Watch(opts v1.ListOptions) (watch.Interface, error) {
}
// Create takes the representation of a serviceAccount and creates it. Returns the server's representation of the serviceAccount, and an error, if there is any.
-func (c *serviceAccounts) Create(serviceAccount *api.ServiceAccount) (result *api.ServiceAccount, err error) {
- result = &api.ServiceAccount{}
+func (c *serviceAccounts) Create(serviceAccount *core.ServiceAccount) (result *core.ServiceAccount, err error) {
+ result = &core.ServiceAccount{}
err = c.client.Post().
Namespace(c.ns).
Resource("serviceaccounts").
@@ -106,8 +106,8 @@ func (c *serviceAccounts) Create(serviceAccount *api.ServiceAccount) (result *ap
}
// Update takes the representation of a serviceAccount and updates it. Returns the server's representation of the serviceAccount, and an error, if there is any.
-func (c *serviceAccounts) Update(serviceAccount *api.ServiceAccount) (result *api.ServiceAccount, err error) {
- result = &api.ServiceAccount{}
+func (c *serviceAccounts) Update(serviceAccount *core.ServiceAccount) (result *core.ServiceAccount, err error) {
+ result = &core.ServiceAccount{}
err = c.client.Put().
Namespace(c.ns).
Resource("serviceaccounts").
@@ -141,8 +141,8 @@ func (c *serviceAccounts) DeleteCollection(options *v1.DeleteOptions, listOption
}
// Patch applies the patch and returns the patched serviceAccount.
-func (c *serviceAccounts) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *api.ServiceAccount, err error) {
- result = &api.ServiceAccount{}
+func (c *serviceAccounts) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core.ServiceAccount, err error) {
+ result = &core.ServiceAccount{}
err = c.client.Patch(pt).
Namespace(c.ns).
Resource("serviceaccounts").
diff --git a/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/BUILD b/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/BUILD
index d48b7d4699..85d27b1651 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/BUILD
+++ b/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/BUILD
@@ -17,16 +17,13 @@ go_library(
"ingress.go",
"podsecuritypolicy.go",
"replicaset.go",
- "scale.go",
- "scale_expansion.go",
],
importpath = "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion",
deps = [
+ "//pkg/apis/autoscaling:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/client/clientset_generated/internalclientset/scheme:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
"//vendor/k8s.io/client-go/rest:go_default_library",
diff --git a/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/deployment.go b/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/deployment.go
index 3221375178..919ab32e2a 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/deployment.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/deployment.go
@@ -21,6 +21,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
rest "k8s.io/client-go/rest"
+ autoscaling "k8s.io/kubernetes/pkg/apis/autoscaling"
extensions "k8s.io/kubernetes/pkg/apis/extensions"
scheme "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme"
)
@@ -42,8 +43,8 @@ type DeploymentInterface interface {
List(opts v1.ListOptions) (*extensions.DeploymentList, error)
Watch(opts v1.ListOptions) (watch.Interface, error)
Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *extensions.Deployment, err error)
- GetScale(deploymentName string, options v1.GetOptions) (*extensions.Scale, error)
- UpdateScale(deploymentName string, scale *extensions.Scale) (*extensions.Scale, error)
+ GetScale(deploymentName string, options v1.GetOptions) (*autoscaling.Scale, error)
+ UpdateScale(deploymentName string, scale *autoscaling.Scale) (*autoscaling.Scale, error)
DeploymentExpansion
}
@@ -174,9 +175,9 @@ func (c *deployments) Patch(name string, pt types.PatchType, data []byte, subres
return
}
-// GetScale takes name of the deployment, and returns the corresponding extensions.Scale object, and an error if there is any.
-func (c *deployments) GetScale(deploymentName string, options v1.GetOptions) (result *extensions.Scale, err error) {
- result = &extensions.Scale{}
+// GetScale takes name of the deployment, and returns the corresponding autoscaling.Scale object, and an error if there is any.
+func (c *deployments) GetScale(deploymentName string, options v1.GetOptions) (result *autoscaling.Scale, err error) {
+ result = &autoscaling.Scale{}
err = c.client.Get().
Namespace(c.ns).
Resource("deployments").
@@ -189,8 +190,8 @@ func (c *deployments) GetScale(deploymentName string, options v1.GetOptions) (re
}
// UpdateScale takes the top resource name and the representation of a scale and updates it. Returns the server's representation of the scale, and an error, if there is any.
-func (c *deployments) UpdateScale(deploymentName string, scale *extensions.Scale) (result *extensions.Scale, err error) {
- result = &extensions.Scale{}
+func (c *deployments) UpdateScale(deploymentName string, scale *autoscaling.Scale) (result *autoscaling.Scale, err error) {
+ result = &autoscaling.Scale{}
err = c.client.Put().
Namespace(c.ns).
Resource("deployments").
diff --git a/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/extensions_client.go b/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/extensions_client.go
index f3bbaf4fc1..1a26d5d302 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/extensions_client.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/extensions_client.go
@@ -28,7 +28,6 @@ type ExtensionsInterface interface {
IngressesGetter
PodSecurityPoliciesGetter
ReplicaSetsGetter
- ScalesGetter
}
// ExtensionsClient is used to interact with features provided by the extensions group.
@@ -56,10 +55,6 @@ func (c *ExtensionsClient) ReplicaSets(namespace string) ReplicaSetInterface {
return newReplicaSets(c, namespace)
}
-func (c *ExtensionsClient) Scales(namespace string) ScaleInterface {
- return newScales(c, namespace)
-}
-
// NewForConfig creates a new ExtensionsClient for the given config.
func NewForConfig(c *rest.Config) (*ExtensionsClient, error) {
config := *c
diff --git a/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/fake/BUILD b/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/fake/BUILD
index 0fcaf57240..91755daa63 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/fake/BUILD
+++ b/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/fake/BUILD
@@ -16,11 +16,10 @@ go_library(
"fake_ingress.go",
"fake_podsecuritypolicy.go",
"fake_replicaset.go",
- "fake_scale.go",
- "fake_scale_expansion.go",
],
importpath = "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/fake",
deps = [
+ "//pkg/apis/autoscaling:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
diff --git a/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/fake/fake_deployment.go b/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/fake/fake_deployment.go
index be65113bba..73d8730c16 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/fake/fake_deployment.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/fake/fake_deployment.go
@@ -23,6 +23,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
testing "k8s.io/client-go/testing"
+ autoscaling "k8s.io/kubernetes/pkg/apis/autoscaling"
extensions "k8s.io/kubernetes/pkg/apis/extensions"
)
@@ -138,23 +139,23 @@ func (c *FakeDeployments) Patch(name string, pt types.PatchType, data []byte, su
}
// GetScale takes name of the deployment, and returns the corresponding scale object, and an error if there is any.
-func (c *FakeDeployments) GetScale(deploymentName string, options v1.GetOptions) (result *extensions.Scale, err error) {
+func (c *FakeDeployments) GetScale(deploymentName string, options v1.GetOptions) (result *autoscaling.Scale, err error) {
obj, err := c.Fake.
- Invokes(testing.NewGetSubresourceAction(deploymentsResource, c.ns, "scale", deploymentName), &extensions.Scale{})
+ Invokes(testing.NewGetSubresourceAction(deploymentsResource, c.ns, "scale", deploymentName), &autoscaling.Scale{})
if obj == nil {
return nil, err
}
- return obj.(*extensions.Scale), err
+ return obj.(*autoscaling.Scale), err
}
// UpdateScale takes the representation of a scale and updates it. Returns the server's representation of the scale, and an error, if there is any.
-func (c *FakeDeployments) UpdateScale(deploymentName string, scale *extensions.Scale) (result *extensions.Scale, err error) {
+func (c *FakeDeployments) UpdateScale(deploymentName string, scale *autoscaling.Scale) (result *autoscaling.Scale, err error) {
obj, err := c.Fake.
- Invokes(testing.NewUpdateSubresourceAction(deploymentsResource, "scale", c.ns, scale), &extensions.Scale{})
+ Invokes(testing.NewUpdateSubresourceAction(deploymentsResource, "scale", c.ns, scale), &autoscaling.Scale{})
if obj == nil {
return nil, err
}
- return obj.(*extensions.Scale), err
+ return obj.(*autoscaling.Scale), err
}
diff --git a/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/fake/fake_extensions_client.go b/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/fake/fake_extensions_client.go
index edbce063e9..1032452a79 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/fake/fake_extensions_client.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/fake/fake_extensions_client.go
@@ -46,10 +46,6 @@ func (c *FakeExtensions) ReplicaSets(namespace string) internalversion.ReplicaSe
return &FakeReplicaSets{c, namespace}
}
-func (c *FakeExtensions) Scales(namespace string) internalversion.ScaleInterface {
- return &FakeScales{c, namespace}
-}
-
// RESTClient returns a RESTClient that is used to communicate
// with API server by this client implementation.
func (c *FakeExtensions) RESTClient() rest.Interface {
diff --git a/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/fake/fake_replicaset.go b/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/fake/fake_replicaset.go
index 37ed3661ad..3a5a59f116 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/fake/fake_replicaset.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/fake/fake_replicaset.go
@@ -23,6 +23,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
testing "k8s.io/client-go/testing"
+ autoscaling "k8s.io/kubernetes/pkg/apis/autoscaling"
extensions "k8s.io/kubernetes/pkg/apis/extensions"
)
@@ -138,23 +139,23 @@ func (c *FakeReplicaSets) Patch(name string, pt types.PatchType, data []byte, su
}
// GetScale takes name of the replicaSet, and returns the corresponding scale object, and an error if there is any.
-func (c *FakeReplicaSets) GetScale(replicaSetName string, options v1.GetOptions) (result *extensions.Scale, err error) {
+func (c *FakeReplicaSets) GetScale(replicaSetName string, options v1.GetOptions) (result *autoscaling.Scale, err error) {
obj, err := c.Fake.
- Invokes(testing.NewGetSubresourceAction(replicasetsResource, c.ns, "scale", replicaSetName), &extensions.Scale{})
+ Invokes(testing.NewGetSubresourceAction(replicasetsResource, c.ns, "scale", replicaSetName), &autoscaling.Scale{})
if obj == nil {
return nil, err
}
- return obj.(*extensions.Scale), err
+ return obj.(*autoscaling.Scale), err
}
// UpdateScale takes the representation of a scale and updates it. Returns the server's representation of the scale, and an error, if there is any.
-func (c *FakeReplicaSets) UpdateScale(replicaSetName string, scale *extensions.Scale) (result *extensions.Scale, err error) {
+func (c *FakeReplicaSets) UpdateScale(replicaSetName string, scale *autoscaling.Scale) (result *autoscaling.Scale, err error) {
obj, err := c.Fake.
- Invokes(testing.NewUpdateSubresourceAction(replicasetsResource, "scale", c.ns, scale), &extensions.Scale{})
+ Invokes(testing.NewUpdateSubresourceAction(replicasetsResource, "scale", c.ns, scale), &autoscaling.Scale{})
if obj == nil {
return nil, err
}
- return obj.(*extensions.Scale), err
+ return obj.(*autoscaling.Scale), err
}
diff --git a/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/fake/fake_scale_expansion.go b/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/fake/fake_scale_expansion.go
deleted file mode 100644
index 4b9413322a..0000000000
--- a/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/fake/fake_scale_expansion.go
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-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 fake
-
-import (
- "k8s.io/apimachinery/pkg/runtime/schema"
- core "k8s.io/client-go/testing"
- "k8s.io/kubernetes/pkg/apis/extensions"
-)
-
-func (c *FakeScales) Get(kind string, name string) (result *extensions.Scale, err error) {
- action := core.GetActionImpl{}
- action.Verb = "get"
- action.Namespace = c.ns
- action.Resource = schema.GroupVersionResource{Resource: kind}
- action.Subresource = "scale"
- action.Name = name
- obj, err := c.Fake.Invokes(action, &extensions.Scale{})
- result = obj.(*extensions.Scale)
- return
-}
-
-func (c *FakeScales) Update(kind string, scale *extensions.Scale) (result *extensions.Scale, err error) {
- action := core.UpdateActionImpl{}
- action.Verb = "update"
- action.Namespace = c.ns
- action.Resource = schema.GroupVersionResource{Resource: kind}
- action.Subresource = "scale"
- action.Object = scale
- obj, err := c.Fake.Invokes(action, scale)
- result = obj.(*extensions.Scale)
- return
-}
diff --git a/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/replicaset.go b/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/replicaset.go
index d6debe65fc..5da973b716 100644
--- a/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/replicaset.go
+++ b/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/replicaset.go
@@ -21,6 +21,7 @@ import (
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"
rest "k8s.io/client-go/rest"
+ autoscaling "k8s.io/kubernetes/pkg/apis/autoscaling"
extensions "k8s.io/kubernetes/pkg/apis/extensions"
scheme "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme"
)
@@ -42,8 +43,8 @@ type ReplicaSetInterface interface {
List(opts v1.ListOptions) (*extensions.ReplicaSetList, error)
Watch(opts v1.ListOptions) (watch.Interface, error)
Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *extensions.ReplicaSet, err error)
- GetScale(replicaSetName string, options v1.GetOptions) (*extensions.Scale, error)
- UpdateScale(replicaSetName string, scale *extensions.Scale) (*extensions.Scale, error)
+ GetScale(replicaSetName string, options v1.GetOptions) (*autoscaling.Scale, error)
+ UpdateScale(replicaSetName string, scale *autoscaling.Scale) (*autoscaling.Scale, error)
ReplicaSetExpansion
}
@@ -174,9 +175,9 @@ func (c *replicaSets) Patch(name string, pt types.PatchType, data []byte, subres
return
}
-// GetScale takes name of the replicaSet, and returns the corresponding extensions.Scale object, and an error if there is any.
-func (c *replicaSets) GetScale(replicaSetName string, options v1.GetOptions) (result *extensions.Scale, err error) {
- result = &extensions.Scale{}
+// GetScale takes name of the replicaSet, and returns the corresponding autoscaling.Scale object, and an error if there is any.
+func (c *replicaSets) GetScale(replicaSetName string, options v1.GetOptions) (result *autoscaling.Scale, err error) {
+ result = &autoscaling.Scale{}
err = c.client.Get().
Namespace(c.ns).
Resource("replicasets").
@@ -189,8 +190,8 @@ func (c *replicaSets) GetScale(replicaSetName string, options v1.GetOptions) (re
}
// UpdateScale takes the top resource name and the representation of a scale and updates it. Returns the server's representation of the scale, and an error, if there is any.
-func (c *replicaSets) UpdateScale(replicaSetName string, scale *extensions.Scale) (result *extensions.Scale, err error) {
- result = &extensions.Scale{}
+func (c *replicaSets) UpdateScale(replicaSetName string, scale *autoscaling.Scale) (result *autoscaling.Scale, err error) {
+ result = &autoscaling.Scale{}
err = c.client.Put().
Namespace(c.ns).
Resource("replicasets").
diff --git a/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/scale.go b/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/scale.go
deleted file mode 100644
index ad1d91b015..0000000000
--- a/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/scale.go
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-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 internalversion
-
-import (
- rest "k8s.io/client-go/rest"
-)
-
-// ScalesGetter has a method to return a ScaleInterface.
-// A group's client should implement this interface.
-type ScalesGetter interface {
- Scales(namespace string) ScaleInterface
-}
-
-// ScaleInterface has methods to work with Scale resources.
-type ScaleInterface interface {
- ScaleExpansion
-}
-
-// scales implements ScaleInterface
-type scales struct {
- client rest.Interface
- ns string
-}
-
-// newScales returns a Scales
-func newScales(c *ExtensionsClient, namespace string) *scales {
- return &scales{
- client: c.RESTClient(),
- ns: namespace,
- }
-}
diff --git a/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/scale_expansion.go b/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/scale_expansion.go
deleted file mode 100644
index e5f2242a8d..0000000000
--- a/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/scale_expansion.go
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
-Copyright 2016 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 internalversion
-
-import (
- "k8s.io/apimachinery/pkg/api/meta"
- "k8s.io/apimachinery/pkg/runtime/schema"
- "k8s.io/kubernetes/pkg/apis/extensions"
-)
-
-// The ScaleExpansion interface allows manually adding extra methods to the ScaleInterface.
-type ScaleExpansion interface {
- Get(kind string, name string) (*extensions.Scale, error)
- Update(kind string, scale *extensions.Scale) (*extensions.Scale, error)
-}
-
-// Get takes the reference to scale subresource and returns the subresource or error, if one occurs.
-func (c *scales) Get(kind string, name string) (result *extensions.Scale, err error) {
- result = &extensions.Scale{}
-
- // TODO this method needs to take a proper unambiguous kind
- fullyQualifiedKind := schema.GroupVersionKind{Kind: kind}
- resource, _ := meta.UnsafeGuessKindToResource(fullyQualifiedKind)
-
- err = c.client.Get().
- Namespace(c.ns).
- Resource(resource.Resource).
- Name(name).
- SubResource("scale").
- Do().
- Into(result)
- return
-}
-
-func (c *scales) Update(kind string, scale *extensions.Scale) (result *extensions.Scale, err error) {
- result = &extensions.Scale{}
-
- // TODO this method needs to take a proper unambiguous kind
- fullyQualifiedKind := schema.GroupVersionKind{Kind: kind}
- resource, _ := meta.UnsafeGuessKindToResource(fullyQualifiedKind)
-
- err = c.client.Put().
- Namespace(scale.Namespace).
- Resource(resource.Resource).
- Name(scale.Name).
- SubResource("scale").
- Body(scale).
- Do().
- Into(result)
- return
-}
diff --git a/pkg/client/informers/informers_generated/internalversion/BUILD b/pkg/client/informers/informers_generated/internalversion/BUILD
index fea81e07cd..91495dc5d9 100644
--- a/pkg/client/informers/informers_generated/internalversion/BUILD
+++ b/pkg/client/informers/informers_generated/internalversion/BUILD
@@ -13,12 +13,12 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion",
deps = [
- "//pkg/api:go_default_library",
"//pkg/apis/admissionregistration:go_default_library",
"//pkg/apis/apps:go_default_library",
"//pkg/apis/autoscaling:go_default_library",
"//pkg/apis/batch:go_default_library",
"//pkg/apis/certificates:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/apis/networking:go_default_library",
"//pkg/apis/policy:go_default_library",
@@ -41,6 +41,7 @@ go_library(
"//pkg/client/informers/informers_generated/internalversion/scheduling:go_default_library",
"//pkg/client/informers/informers_generated/internalversion/settings:go_default_library",
"//pkg/client/informers/informers_generated/internalversion/storage:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
diff --git a/pkg/client/informers/informers_generated/internalversion/admissionregistration/interface.go b/pkg/client/informers/informers_generated/internalversion/admissionregistration/interface.go
index 036ae9754b..30943e156e 100644
--- a/pkg/client/informers/informers_generated/internalversion/admissionregistration/interface.go
+++ b/pkg/client/informers/informers_generated/internalversion/admissionregistration/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// InternalVersion returns a new internalversion.Interface.
func (g *group) InternalVersion() internalversion.Interface {
- return internalversion.New(g.SharedInformerFactory)
+ return internalversion.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/pkg/client/informers/informers_generated/internalversion/admissionregistration/internalversion/BUILD b/pkg/client/informers/informers_generated/internalversion/admissionregistration/internalversion/BUILD
index 19467f1ed5..ca1c234c01 100644
--- a/pkg/client/informers/informers_generated/internalversion/admissionregistration/internalversion/BUILD
+++ b/pkg/client/informers/informers_generated/internalversion/admissionregistration/internalversion/BUILD
@@ -8,9 +8,10 @@ load(
go_library(
name = "go_default_library",
srcs = [
- "externaladmissionhookconfiguration.go",
"initializerconfiguration.go",
"interface.go",
+ "mutatingwebhookconfiguration.go",
+ "validatingwebhookconfiguration.go",
],
importpath = "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/admissionregistration/internalversion",
deps = [
diff --git a/pkg/client/informers/informers_generated/internalversion/admissionregistration/internalversion/externaladmissionhookconfiguration.go b/pkg/client/informers/informers_generated/internalversion/admissionregistration/internalversion/externaladmissionhookconfiguration.go
deleted file mode 100644
index 6972004733..0000000000
--- a/pkg/client/informers/informers_generated/internalversion/admissionregistration/internalversion/externaladmissionhookconfiguration.go
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
-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.
-*/
-
-// This file was automatically generated by informer-gen
-
-package internalversion
-
-import (
- v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- runtime "k8s.io/apimachinery/pkg/runtime"
- watch "k8s.io/apimachinery/pkg/watch"
- cache "k8s.io/client-go/tools/cache"
- admissionregistration "k8s.io/kubernetes/pkg/apis/admissionregistration"
- internalclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
- internalinterfaces "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces"
- internalversion "k8s.io/kubernetes/pkg/client/listers/admissionregistration/internalversion"
- time "time"
-)
-
-// ExternalAdmissionHookConfigurationInformer provides access to a shared informer and lister for
-// ExternalAdmissionHookConfigurations.
-type ExternalAdmissionHookConfigurationInformer interface {
- Informer() cache.SharedIndexInformer
- Lister() internalversion.ExternalAdmissionHookConfigurationLister
-}
-
-type externalAdmissionHookConfigurationInformer struct {
- factory internalinterfaces.SharedInformerFactory
-}
-
-// NewExternalAdmissionHookConfigurationInformer constructs a new informer for ExternalAdmissionHookConfiguration type.
-// Always prefer using an informer factory to get a shared informer instead of getting an independent
-// one. This reduces memory footprint and number of connections to the server.
-func NewExternalAdmissionHookConfigurationInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
- return cache.NewSharedIndexInformer(
- &cache.ListWatch{
- ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
- return client.Admissionregistration().ExternalAdmissionHookConfigurations().List(options)
- },
- WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
- return client.Admissionregistration().ExternalAdmissionHookConfigurations().Watch(options)
- },
- },
- &admissionregistration.ExternalAdmissionHookConfiguration{},
- resyncPeriod,
- indexers,
- )
-}
-
-func defaultExternalAdmissionHookConfigurationInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewExternalAdmissionHookConfigurationInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
-}
-
-func (f *externalAdmissionHookConfigurationInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&admissionregistration.ExternalAdmissionHookConfiguration{}, defaultExternalAdmissionHookConfigurationInformer)
-}
-
-func (f *externalAdmissionHookConfigurationInformer) Lister() internalversion.ExternalAdmissionHookConfigurationLister {
- return internalversion.NewExternalAdmissionHookConfigurationLister(f.Informer().GetIndexer())
-}
diff --git a/pkg/client/informers/informers_generated/internalversion/admissionregistration/internalversion/initializerconfiguration.go b/pkg/client/informers/informers_generated/internalversion/admissionregistration/internalversion/initializerconfiguration.go
index 70f869291d..bc31ce1021 100644
--- a/pkg/client/informers/informers_generated/internalversion/admissionregistration/internalversion/initializerconfiguration.go
+++ b/pkg/client/informers/informers_generated/internalversion/admissionregistration/internalversion/initializerconfiguration.go
@@ -38,19 +38,33 @@ type InitializerConfigurationInformer interface {
}
type initializerConfigurationInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewInitializerConfigurationInformer constructs a new informer for InitializerConfiguration type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewInitializerConfigurationInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredInitializerConfigurationInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredInitializerConfigurationInformer constructs a new informer for InitializerConfiguration type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredInitializerConfigurationInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Admissionregistration().InitializerConfigurations().List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Admissionregistration().InitializerConfigurations().Watch(options)
},
},
@@ -60,12 +74,12 @@ func NewInitializerConfigurationInformer(client internalclientset.Interface, res
)
}
-func defaultInitializerConfigurationInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewInitializerConfigurationInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *initializerConfigurationInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredInitializerConfigurationInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *initializerConfigurationInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&admissionregistration.InitializerConfiguration{}, defaultInitializerConfigurationInformer)
+ return f.factory.InformerFor(&admissionregistration.InitializerConfiguration{}, f.defaultInformer)
}
func (f *initializerConfigurationInformer) Lister() internalversion.InitializerConfigurationLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/admissionregistration/internalversion/interface.go b/pkg/client/informers/informers_generated/internalversion/admissionregistration/internalversion/interface.go
index bd0803e275..0d7bec0173 100644
--- a/pkg/client/informers/informers_generated/internalversion/admissionregistration/internalversion/interface.go
+++ b/pkg/client/informers/informers_generated/internalversion/admissionregistration/internalversion/interface.go
@@ -24,27 +24,36 @@ import (
// Interface provides access to all the informers in this group version.
type Interface interface {
- // ExternalAdmissionHookConfigurations returns a ExternalAdmissionHookConfigurationInformer.
- ExternalAdmissionHookConfigurations() ExternalAdmissionHookConfigurationInformer
// InitializerConfigurations returns a InitializerConfigurationInformer.
InitializerConfigurations() InitializerConfigurationInformer
+ // MutatingWebhookConfigurations returns a MutatingWebhookConfigurationInformer.
+ MutatingWebhookConfigurations() MutatingWebhookConfigurationInformer
+ // ValidatingWebhookConfigurations returns a ValidatingWebhookConfigurationInformer.
+ ValidatingWebhookConfigurations() ValidatingWebhookConfigurationInformer
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
-}
-
-// ExternalAdmissionHookConfigurations returns a ExternalAdmissionHookConfigurationInformer.
-func (v *version) ExternalAdmissionHookConfigurations() ExternalAdmissionHookConfigurationInformer {
- return &externalAdmissionHookConfigurationInformer{factory: v.SharedInformerFactory}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// InitializerConfigurations returns a InitializerConfigurationInformer.
func (v *version) InitializerConfigurations() InitializerConfigurationInformer {
- return &initializerConfigurationInformer{factory: v.SharedInformerFactory}
+ return &initializerConfigurationInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
+}
+
+// MutatingWebhookConfigurations returns a MutatingWebhookConfigurationInformer.
+func (v *version) MutatingWebhookConfigurations() MutatingWebhookConfigurationInformer {
+ return &mutatingWebhookConfigurationInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
+}
+
+// ValidatingWebhookConfigurations returns a ValidatingWebhookConfigurationInformer.
+func (v *version) ValidatingWebhookConfigurations() ValidatingWebhookConfigurationInformer {
+ return &validatingWebhookConfigurationInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
diff --git a/pkg/client/informers/informers_generated/internalversion/admissionregistration/internalversion/mutatingwebhookconfiguration.go b/pkg/client/informers/informers_generated/internalversion/admissionregistration/internalversion/mutatingwebhookconfiguration.go
new file mode 100644
index 0000000000..409f36b965
--- /dev/null
+++ b/pkg/client/informers/informers_generated/internalversion/admissionregistration/internalversion/mutatingwebhookconfiguration.go
@@ -0,0 +1,87 @@
+/*
+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.
+*/
+
+// This file was automatically generated by informer-gen
+
+package internalversion
+
+import (
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ runtime "k8s.io/apimachinery/pkg/runtime"
+ watch "k8s.io/apimachinery/pkg/watch"
+ cache "k8s.io/client-go/tools/cache"
+ admissionregistration "k8s.io/kubernetes/pkg/apis/admissionregistration"
+ internalclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
+ internalinterfaces "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces"
+ internalversion "k8s.io/kubernetes/pkg/client/listers/admissionregistration/internalversion"
+ time "time"
+)
+
+// MutatingWebhookConfigurationInformer provides access to a shared informer and lister for
+// MutatingWebhookConfigurations.
+type MutatingWebhookConfigurationInformer interface {
+ Informer() cache.SharedIndexInformer
+ Lister() internalversion.MutatingWebhookConfigurationLister
+}
+
+type mutatingWebhookConfigurationInformer struct {
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+}
+
+// NewMutatingWebhookConfigurationInformer constructs a new informer for MutatingWebhookConfiguration type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewMutatingWebhookConfigurationInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredMutatingWebhookConfigurationInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredMutatingWebhookConfigurationInformer constructs a new informer for MutatingWebhookConfiguration type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredMutatingWebhookConfigurationInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
+ return cache.NewSharedIndexInformer(
+ &cache.ListWatch{
+ ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
+ return client.Admissionregistration().MutatingWebhookConfigurations().List(options)
+ },
+ WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
+ return client.Admissionregistration().MutatingWebhookConfigurations().Watch(options)
+ },
+ },
+ &admissionregistration.MutatingWebhookConfiguration{},
+ resyncPeriod,
+ indexers,
+ )
+}
+
+func (f *mutatingWebhookConfigurationInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredMutatingWebhookConfigurationInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
+}
+
+func (f *mutatingWebhookConfigurationInformer) Informer() cache.SharedIndexInformer {
+ return f.factory.InformerFor(&admissionregistration.MutatingWebhookConfiguration{}, f.defaultInformer)
+}
+
+func (f *mutatingWebhookConfigurationInformer) Lister() internalversion.MutatingWebhookConfigurationLister {
+ return internalversion.NewMutatingWebhookConfigurationLister(f.Informer().GetIndexer())
+}
diff --git a/pkg/client/informers/informers_generated/internalversion/admissionregistration/internalversion/validatingwebhookconfiguration.go b/pkg/client/informers/informers_generated/internalversion/admissionregistration/internalversion/validatingwebhookconfiguration.go
new file mode 100644
index 0000000000..3242e317f5
--- /dev/null
+++ b/pkg/client/informers/informers_generated/internalversion/admissionregistration/internalversion/validatingwebhookconfiguration.go
@@ -0,0 +1,87 @@
+/*
+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.
+*/
+
+// This file was automatically generated by informer-gen
+
+package internalversion
+
+import (
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ runtime "k8s.io/apimachinery/pkg/runtime"
+ watch "k8s.io/apimachinery/pkg/watch"
+ cache "k8s.io/client-go/tools/cache"
+ admissionregistration "k8s.io/kubernetes/pkg/apis/admissionregistration"
+ internalclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
+ internalinterfaces "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces"
+ internalversion "k8s.io/kubernetes/pkg/client/listers/admissionregistration/internalversion"
+ time "time"
+)
+
+// ValidatingWebhookConfigurationInformer provides access to a shared informer and lister for
+// ValidatingWebhookConfigurations.
+type ValidatingWebhookConfigurationInformer interface {
+ Informer() cache.SharedIndexInformer
+ Lister() internalversion.ValidatingWebhookConfigurationLister
+}
+
+type validatingWebhookConfigurationInformer struct {
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+}
+
+// NewValidatingWebhookConfigurationInformer constructs a new informer for ValidatingWebhookConfiguration type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewValidatingWebhookConfigurationInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredValidatingWebhookConfigurationInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredValidatingWebhookConfigurationInformer constructs a new informer for ValidatingWebhookConfiguration type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredValidatingWebhookConfigurationInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
+ return cache.NewSharedIndexInformer(
+ &cache.ListWatch{
+ ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
+ return client.Admissionregistration().ValidatingWebhookConfigurations().List(options)
+ },
+ WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
+ return client.Admissionregistration().ValidatingWebhookConfigurations().Watch(options)
+ },
+ },
+ &admissionregistration.ValidatingWebhookConfiguration{},
+ resyncPeriod,
+ indexers,
+ )
+}
+
+func (f *validatingWebhookConfigurationInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredValidatingWebhookConfigurationInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
+}
+
+func (f *validatingWebhookConfigurationInformer) Informer() cache.SharedIndexInformer {
+ return f.factory.InformerFor(&admissionregistration.ValidatingWebhookConfiguration{}, f.defaultInformer)
+}
+
+func (f *validatingWebhookConfigurationInformer) Lister() internalversion.ValidatingWebhookConfigurationLister {
+ return internalversion.NewValidatingWebhookConfigurationLister(f.Informer().GetIndexer())
+}
diff --git a/pkg/client/informers/informers_generated/internalversion/apps/interface.go b/pkg/client/informers/informers_generated/internalversion/apps/interface.go
index 720ab8c11e..7467b3eec0 100644
--- a/pkg/client/informers/informers_generated/internalversion/apps/interface.go
+++ b/pkg/client/informers/informers_generated/internalversion/apps/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// InternalVersion returns a new internalversion.Interface.
func (g *group) InternalVersion() internalversion.Interface {
- return internalversion.New(g.SharedInformerFactory)
+ return internalversion.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/pkg/client/informers/informers_generated/internalversion/apps/internalversion/controllerrevision.go b/pkg/client/informers/informers_generated/internalversion/apps/internalversion/controllerrevision.go
index 11e381b537..27407a12d6 100644
--- a/pkg/client/informers/informers_generated/internalversion/apps/internalversion/controllerrevision.go
+++ b/pkg/client/informers/informers_generated/internalversion/apps/internalversion/controllerrevision.go
@@ -38,19 +38,34 @@ type ControllerRevisionInformer interface {
}
type controllerRevisionInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewControllerRevisionInformer constructs a new informer for ControllerRevision type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewControllerRevisionInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredControllerRevisionInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredControllerRevisionInformer constructs a new informer for ControllerRevision type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredControllerRevisionInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Apps().ControllerRevisions(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Apps().ControllerRevisions(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewControllerRevisionInformer(client internalclientset.Interface, namespace
)
}
-func defaultControllerRevisionInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewControllerRevisionInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *controllerRevisionInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredControllerRevisionInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *controllerRevisionInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&apps.ControllerRevision{}, defaultControllerRevisionInformer)
+ return f.factory.InformerFor(&apps.ControllerRevision{}, f.defaultInformer)
}
func (f *controllerRevisionInformer) Lister() internalversion.ControllerRevisionLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/apps/internalversion/interface.go b/pkg/client/informers/informers_generated/internalversion/apps/internalversion/interface.go
index bd5ec23b15..3ceeae009b 100644
--- a/pkg/client/informers/informers_generated/internalversion/apps/internalversion/interface.go
+++ b/pkg/client/informers/informers_generated/internalversion/apps/internalversion/interface.go
@@ -31,20 +31,22 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// ControllerRevisions returns a ControllerRevisionInformer.
func (v *version) ControllerRevisions() ControllerRevisionInformer {
- return &controllerRevisionInformer{factory: v.SharedInformerFactory}
+ return &controllerRevisionInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// StatefulSets returns a StatefulSetInformer.
func (v *version) StatefulSets() StatefulSetInformer {
- return &statefulSetInformer{factory: v.SharedInformerFactory}
+ return &statefulSetInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/pkg/client/informers/informers_generated/internalversion/apps/internalversion/statefulset.go b/pkg/client/informers/informers_generated/internalversion/apps/internalversion/statefulset.go
index e52b64661b..055612f8d5 100644
--- a/pkg/client/informers/informers_generated/internalversion/apps/internalversion/statefulset.go
+++ b/pkg/client/informers/informers_generated/internalversion/apps/internalversion/statefulset.go
@@ -38,19 +38,34 @@ type StatefulSetInformer interface {
}
type statefulSetInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewStatefulSetInformer constructs a new informer for StatefulSet type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewStatefulSetInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredStatefulSetInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredStatefulSetInformer constructs a new informer for StatefulSet type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredStatefulSetInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Apps().StatefulSets(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Apps().StatefulSets(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewStatefulSetInformer(client internalclientset.Interface, namespace string
)
}
-func defaultStatefulSetInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewStatefulSetInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *statefulSetInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredStatefulSetInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *statefulSetInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&apps.StatefulSet{}, defaultStatefulSetInformer)
+ return f.factory.InformerFor(&apps.StatefulSet{}, f.defaultInformer)
}
func (f *statefulSetInformer) Lister() internalversion.StatefulSetLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/autoscaling/interface.go b/pkg/client/informers/informers_generated/internalversion/autoscaling/interface.go
index 52a595766d..00e9e7f0c9 100644
--- a/pkg/client/informers/informers_generated/internalversion/autoscaling/interface.go
+++ b/pkg/client/informers/informers_generated/internalversion/autoscaling/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// InternalVersion returns a new internalversion.Interface.
func (g *group) InternalVersion() internalversion.Interface {
- return internalversion.New(g.SharedInformerFactory)
+ return internalversion.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/pkg/client/informers/informers_generated/internalversion/autoscaling/internalversion/horizontalpodautoscaler.go b/pkg/client/informers/informers_generated/internalversion/autoscaling/internalversion/horizontalpodautoscaler.go
index cc8e7997bc..4ba40676aa 100644
--- a/pkg/client/informers/informers_generated/internalversion/autoscaling/internalversion/horizontalpodautoscaler.go
+++ b/pkg/client/informers/informers_generated/internalversion/autoscaling/internalversion/horizontalpodautoscaler.go
@@ -38,19 +38,34 @@ type HorizontalPodAutoscalerInformer interface {
}
type horizontalPodAutoscalerInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewHorizontalPodAutoscalerInformer constructs a new informer for HorizontalPodAutoscaler type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewHorizontalPodAutoscalerInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredHorizontalPodAutoscalerInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredHorizontalPodAutoscalerInformer constructs a new informer for HorizontalPodAutoscaler type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredHorizontalPodAutoscalerInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Autoscaling().HorizontalPodAutoscalers(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Autoscaling().HorizontalPodAutoscalers(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewHorizontalPodAutoscalerInformer(client internalclientset.Interface, name
)
}
-func defaultHorizontalPodAutoscalerInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewHorizontalPodAutoscalerInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *horizontalPodAutoscalerInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredHorizontalPodAutoscalerInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *horizontalPodAutoscalerInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&autoscaling.HorizontalPodAutoscaler{}, defaultHorizontalPodAutoscalerInformer)
+ return f.factory.InformerFor(&autoscaling.HorizontalPodAutoscaler{}, f.defaultInformer)
}
func (f *horizontalPodAutoscalerInformer) Lister() internalversion.HorizontalPodAutoscalerLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/autoscaling/internalversion/interface.go b/pkg/client/informers/informers_generated/internalversion/autoscaling/internalversion/interface.go
index e442cfb1b4..3ac44fa630 100644
--- a/pkg/client/informers/informers_generated/internalversion/autoscaling/internalversion/interface.go
+++ b/pkg/client/informers/informers_generated/internalversion/autoscaling/internalversion/interface.go
@@ -29,15 +29,17 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// HorizontalPodAutoscalers returns a HorizontalPodAutoscalerInformer.
func (v *version) HorizontalPodAutoscalers() HorizontalPodAutoscalerInformer {
- return &horizontalPodAutoscalerInformer{factory: v.SharedInformerFactory}
+ return &horizontalPodAutoscalerInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/pkg/client/informers/informers_generated/internalversion/batch/interface.go b/pkg/client/informers/informers_generated/internalversion/batch/interface.go
index 72bb5e7291..ec3bef48d4 100644
--- a/pkg/client/informers/informers_generated/internalversion/batch/interface.go
+++ b/pkg/client/informers/informers_generated/internalversion/batch/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// InternalVersion returns a new internalversion.Interface.
func (g *group) InternalVersion() internalversion.Interface {
- return internalversion.New(g.SharedInformerFactory)
+ return internalversion.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/pkg/client/informers/informers_generated/internalversion/batch/internalversion/cronjob.go b/pkg/client/informers/informers_generated/internalversion/batch/internalversion/cronjob.go
index d0362f436a..eeff85dadc 100644
--- a/pkg/client/informers/informers_generated/internalversion/batch/internalversion/cronjob.go
+++ b/pkg/client/informers/informers_generated/internalversion/batch/internalversion/cronjob.go
@@ -38,19 +38,34 @@ type CronJobInformer interface {
}
type cronJobInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewCronJobInformer constructs a new informer for CronJob type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewCronJobInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredCronJobInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredCronJobInformer constructs a new informer for CronJob type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredCronJobInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Batch().CronJobs(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Batch().CronJobs(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewCronJobInformer(client internalclientset.Interface, namespace string, re
)
}
-func defaultCronJobInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewCronJobInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *cronJobInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredCronJobInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *cronJobInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&batch.CronJob{}, defaultCronJobInformer)
+ return f.factory.InformerFor(&batch.CronJob{}, f.defaultInformer)
}
func (f *cronJobInformer) Lister() internalversion.CronJobLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/batch/internalversion/interface.go b/pkg/client/informers/informers_generated/internalversion/batch/internalversion/interface.go
index e02c25aafb..ca29cc526b 100644
--- a/pkg/client/informers/informers_generated/internalversion/batch/internalversion/interface.go
+++ b/pkg/client/informers/informers_generated/internalversion/batch/internalversion/interface.go
@@ -31,20 +31,22 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// CronJobs returns a CronJobInformer.
func (v *version) CronJobs() CronJobInformer {
- return &cronJobInformer{factory: v.SharedInformerFactory}
+ return &cronJobInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// Jobs returns a JobInformer.
func (v *version) Jobs() JobInformer {
- return &jobInformer{factory: v.SharedInformerFactory}
+ return &jobInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/pkg/client/informers/informers_generated/internalversion/batch/internalversion/job.go b/pkg/client/informers/informers_generated/internalversion/batch/internalversion/job.go
index 56039f740a..1430f5b128 100644
--- a/pkg/client/informers/informers_generated/internalversion/batch/internalversion/job.go
+++ b/pkg/client/informers/informers_generated/internalversion/batch/internalversion/job.go
@@ -38,19 +38,34 @@ type JobInformer interface {
}
type jobInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewJobInformer constructs a new informer for Job type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewJobInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredJobInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredJobInformer constructs a new informer for Job type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredJobInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Batch().Jobs(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Batch().Jobs(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewJobInformer(client internalclientset.Interface, namespace string, resync
)
}
-func defaultJobInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewJobInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *jobInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredJobInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *jobInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&batch.Job{}, defaultJobInformer)
+ return f.factory.InformerFor(&batch.Job{}, f.defaultInformer)
}
func (f *jobInformer) Lister() internalversion.JobLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/certificates/interface.go b/pkg/client/informers/informers_generated/internalversion/certificates/interface.go
index eda8f81538..881fc209e7 100644
--- a/pkg/client/informers/informers_generated/internalversion/certificates/interface.go
+++ b/pkg/client/informers/informers_generated/internalversion/certificates/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// InternalVersion returns a new internalversion.Interface.
func (g *group) InternalVersion() internalversion.Interface {
- return internalversion.New(g.SharedInformerFactory)
+ return internalversion.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/pkg/client/informers/informers_generated/internalversion/certificates/internalversion/certificatesigningrequest.go b/pkg/client/informers/informers_generated/internalversion/certificates/internalversion/certificatesigningrequest.go
index 88bda731be..d4608c9e3a 100644
--- a/pkg/client/informers/informers_generated/internalversion/certificates/internalversion/certificatesigningrequest.go
+++ b/pkg/client/informers/informers_generated/internalversion/certificates/internalversion/certificatesigningrequest.go
@@ -38,19 +38,33 @@ type CertificateSigningRequestInformer interface {
}
type certificateSigningRequestInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewCertificateSigningRequestInformer constructs a new informer for CertificateSigningRequest type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewCertificateSigningRequestInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredCertificateSigningRequestInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredCertificateSigningRequestInformer constructs a new informer for CertificateSigningRequest type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredCertificateSigningRequestInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Certificates().CertificateSigningRequests().List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Certificates().CertificateSigningRequests().Watch(options)
},
},
@@ -60,12 +74,12 @@ func NewCertificateSigningRequestInformer(client internalclientset.Interface, re
)
}
-func defaultCertificateSigningRequestInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewCertificateSigningRequestInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *certificateSigningRequestInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredCertificateSigningRequestInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *certificateSigningRequestInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&certificates.CertificateSigningRequest{}, defaultCertificateSigningRequestInformer)
+ return f.factory.InformerFor(&certificates.CertificateSigningRequest{}, f.defaultInformer)
}
func (f *certificateSigningRequestInformer) Lister() internalversion.CertificateSigningRequestLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/certificates/internalversion/interface.go b/pkg/client/informers/informers_generated/internalversion/certificates/internalversion/interface.go
index 6dcbb45030..d017cfceae 100644
--- a/pkg/client/informers/informers_generated/internalversion/certificates/internalversion/interface.go
+++ b/pkg/client/informers/informers_generated/internalversion/certificates/internalversion/interface.go
@@ -29,15 +29,17 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// CertificateSigningRequests returns a CertificateSigningRequestInformer.
func (v *version) CertificateSigningRequests() CertificateSigningRequestInformer {
- return &certificateSigningRequestInformer{factory: v.SharedInformerFactory}
+ return &certificateSigningRequestInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
diff --git a/pkg/client/informers/informers_generated/internalversion/core/interface.go b/pkg/client/informers/informers_generated/internalversion/core/interface.go
index 329d6b529e..12dab3466f 100644
--- a/pkg/client/informers/informers_generated/internalversion/core/interface.go
+++ b/pkg/client/informers/informers_generated/internalversion/core/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// InternalVersion returns a new internalversion.Interface.
func (g *group) InternalVersion() internalversion.Interface {
- return internalversion.New(g.SharedInformerFactory)
+ return internalversion.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/pkg/client/informers/informers_generated/internalversion/core/internalversion/BUILD b/pkg/client/informers/informers_generated/internalversion/core/internalversion/BUILD
index 5d703c4a2e..6724faa6a8 100644
--- a/pkg/client/informers/informers_generated/internalversion/core/internalversion/BUILD
+++ b/pkg/client/informers/informers_generated/internalversion/core/internalversion/BUILD
@@ -28,7 +28,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/core/internalversion",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/informers/informers_generated/internalversion/internalinterfaces:go_default_library",
"//pkg/client/listers/core/internalversion:go_default_library",
diff --git a/pkg/client/informers/informers_generated/internalversion/core/internalversion/componentstatus.go b/pkg/client/informers/informers_generated/internalversion/core/internalversion/componentstatus.go
index 4044e1abad..805e45bb53 100644
--- a/pkg/client/informers/informers_generated/internalversion/core/internalversion/componentstatus.go
+++ b/pkg/client/informers/informers_generated/internalversion/core/internalversion/componentstatus.go
@@ -23,7 +23,7 @@ import (
runtime "k8s.io/apimachinery/pkg/runtime"
watch "k8s.io/apimachinery/pkg/watch"
cache "k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
internalclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
internalinterfaces "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces"
internalversion "k8s.io/kubernetes/pkg/client/listers/core/internalversion"
@@ -38,34 +38,48 @@ type ComponentStatusInformer interface {
}
type componentStatusInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewComponentStatusInformer constructs a new informer for ComponentStatus type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewComponentStatusInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredComponentStatusInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredComponentStatusInformer constructs a new informer for ComponentStatus type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredComponentStatusInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().ComponentStatuses().List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().ComponentStatuses().Watch(options)
},
},
- &api.ComponentStatus{},
+ &core.ComponentStatus{},
resyncPeriod,
indexers,
)
}
-func defaultComponentStatusInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewComponentStatusInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *componentStatusInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredComponentStatusInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *componentStatusInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&api.ComponentStatus{}, defaultComponentStatusInformer)
+ return f.factory.InformerFor(&core.ComponentStatus{}, f.defaultInformer)
}
func (f *componentStatusInformer) Lister() internalversion.ComponentStatusLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/core/internalversion/configmap.go b/pkg/client/informers/informers_generated/internalversion/core/internalversion/configmap.go
index bfd2af64b2..f96cdf8d9d 100644
--- a/pkg/client/informers/informers_generated/internalversion/core/internalversion/configmap.go
+++ b/pkg/client/informers/informers_generated/internalversion/core/internalversion/configmap.go
@@ -23,7 +23,7 @@ import (
runtime "k8s.io/apimachinery/pkg/runtime"
watch "k8s.io/apimachinery/pkg/watch"
cache "k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
internalclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
internalinterfaces "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces"
internalversion "k8s.io/kubernetes/pkg/client/listers/core/internalversion"
@@ -38,34 +38,49 @@ type ConfigMapInformer interface {
}
type configMapInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewConfigMapInformer constructs a new informer for ConfigMap type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewConfigMapInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredConfigMapInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredConfigMapInformer constructs a new informer for ConfigMap type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredConfigMapInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().ConfigMaps(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().ConfigMaps(namespace).Watch(options)
},
},
- &api.ConfigMap{},
+ &core.ConfigMap{},
resyncPeriod,
indexers,
)
}
-func defaultConfigMapInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewConfigMapInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *configMapInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredConfigMapInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *configMapInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&api.ConfigMap{}, defaultConfigMapInformer)
+ return f.factory.InformerFor(&core.ConfigMap{}, f.defaultInformer)
}
func (f *configMapInformer) Lister() internalversion.ConfigMapLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/core/internalversion/endpoints.go b/pkg/client/informers/informers_generated/internalversion/core/internalversion/endpoints.go
index bb99912568..f45d518174 100644
--- a/pkg/client/informers/informers_generated/internalversion/core/internalversion/endpoints.go
+++ b/pkg/client/informers/informers_generated/internalversion/core/internalversion/endpoints.go
@@ -23,7 +23,7 @@ import (
runtime "k8s.io/apimachinery/pkg/runtime"
watch "k8s.io/apimachinery/pkg/watch"
cache "k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
internalclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
internalinterfaces "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces"
internalversion "k8s.io/kubernetes/pkg/client/listers/core/internalversion"
@@ -38,34 +38,49 @@ type EndpointsInformer interface {
}
type endpointsInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewEndpointsInformer constructs a new informer for Endpoints type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewEndpointsInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredEndpointsInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredEndpointsInformer constructs a new informer for Endpoints type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredEndpointsInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().Endpoints(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().Endpoints(namespace).Watch(options)
},
},
- &api.Endpoints{},
+ &core.Endpoints{},
resyncPeriod,
indexers,
)
}
-func defaultEndpointsInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewEndpointsInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *endpointsInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredEndpointsInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *endpointsInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&api.Endpoints{}, defaultEndpointsInformer)
+ return f.factory.InformerFor(&core.Endpoints{}, f.defaultInformer)
}
func (f *endpointsInformer) Lister() internalversion.EndpointsLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/core/internalversion/event.go b/pkg/client/informers/informers_generated/internalversion/core/internalversion/event.go
index 7b7108b61d..936b601866 100644
--- a/pkg/client/informers/informers_generated/internalversion/core/internalversion/event.go
+++ b/pkg/client/informers/informers_generated/internalversion/core/internalversion/event.go
@@ -23,7 +23,7 @@ import (
runtime "k8s.io/apimachinery/pkg/runtime"
watch "k8s.io/apimachinery/pkg/watch"
cache "k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
internalclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
internalinterfaces "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces"
internalversion "k8s.io/kubernetes/pkg/client/listers/core/internalversion"
@@ -38,34 +38,49 @@ type EventInformer interface {
}
type eventInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewEventInformer constructs a new informer for Event type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewEventInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredEventInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredEventInformer constructs a new informer for Event type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredEventInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().Events(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().Events(namespace).Watch(options)
},
},
- &api.Event{},
+ &core.Event{},
resyncPeriod,
indexers,
)
}
-func defaultEventInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewEventInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *eventInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredEventInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *eventInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&api.Event{}, defaultEventInformer)
+ return f.factory.InformerFor(&core.Event{}, f.defaultInformer)
}
func (f *eventInformer) Lister() internalversion.EventLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/core/internalversion/interface.go b/pkg/client/informers/informers_generated/internalversion/core/internalversion/interface.go
index a9f5f16335..295600cb5a 100644
--- a/pkg/client/informers/informers_generated/internalversion/core/internalversion/interface.go
+++ b/pkg/client/informers/informers_generated/internalversion/core/internalversion/interface.go
@@ -59,90 +59,92 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// ComponentStatuses returns a ComponentStatusInformer.
func (v *version) ComponentStatuses() ComponentStatusInformer {
- return &componentStatusInformer{factory: v.SharedInformerFactory}
+ return &componentStatusInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
// ConfigMaps returns a ConfigMapInformer.
func (v *version) ConfigMaps() ConfigMapInformer {
- return &configMapInformer{factory: v.SharedInformerFactory}
+ return &configMapInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// Endpoints returns a EndpointsInformer.
func (v *version) Endpoints() EndpointsInformer {
- return &endpointsInformer{factory: v.SharedInformerFactory}
+ return &endpointsInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// Events returns a EventInformer.
func (v *version) Events() EventInformer {
- return &eventInformer{factory: v.SharedInformerFactory}
+ return &eventInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// LimitRanges returns a LimitRangeInformer.
func (v *version) LimitRanges() LimitRangeInformer {
- return &limitRangeInformer{factory: v.SharedInformerFactory}
+ return &limitRangeInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// Namespaces returns a NamespaceInformer.
func (v *version) Namespaces() NamespaceInformer {
- return &namespaceInformer{factory: v.SharedInformerFactory}
+ return &namespaceInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
// Nodes returns a NodeInformer.
func (v *version) Nodes() NodeInformer {
- return &nodeInformer{factory: v.SharedInformerFactory}
+ return &nodeInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
// PersistentVolumes returns a PersistentVolumeInformer.
func (v *version) PersistentVolumes() PersistentVolumeInformer {
- return &persistentVolumeInformer{factory: v.SharedInformerFactory}
+ return &persistentVolumeInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
// PersistentVolumeClaims returns a PersistentVolumeClaimInformer.
func (v *version) PersistentVolumeClaims() PersistentVolumeClaimInformer {
- return &persistentVolumeClaimInformer{factory: v.SharedInformerFactory}
+ return &persistentVolumeClaimInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// Pods returns a PodInformer.
func (v *version) Pods() PodInformer {
- return &podInformer{factory: v.SharedInformerFactory}
+ return &podInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// PodTemplates returns a PodTemplateInformer.
func (v *version) PodTemplates() PodTemplateInformer {
- return &podTemplateInformer{factory: v.SharedInformerFactory}
+ return &podTemplateInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// ReplicationControllers returns a ReplicationControllerInformer.
func (v *version) ReplicationControllers() ReplicationControllerInformer {
- return &replicationControllerInformer{factory: v.SharedInformerFactory}
+ return &replicationControllerInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// ResourceQuotas returns a ResourceQuotaInformer.
func (v *version) ResourceQuotas() ResourceQuotaInformer {
- return &resourceQuotaInformer{factory: v.SharedInformerFactory}
+ return &resourceQuotaInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// Secrets returns a SecretInformer.
func (v *version) Secrets() SecretInformer {
- return &secretInformer{factory: v.SharedInformerFactory}
+ return &secretInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// Services returns a ServiceInformer.
func (v *version) Services() ServiceInformer {
- return &serviceInformer{factory: v.SharedInformerFactory}
+ return &serviceInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// ServiceAccounts returns a ServiceAccountInformer.
func (v *version) ServiceAccounts() ServiceAccountInformer {
- return &serviceAccountInformer{factory: v.SharedInformerFactory}
+ return &serviceAccountInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/pkg/client/informers/informers_generated/internalversion/core/internalversion/limitrange.go b/pkg/client/informers/informers_generated/internalversion/core/internalversion/limitrange.go
index 8eea5642fc..e167da6e37 100644
--- a/pkg/client/informers/informers_generated/internalversion/core/internalversion/limitrange.go
+++ b/pkg/client/informers/informers_generated/internalversion/core/internalversion/limitrange.go
@@ -23,7 +23,7 @@ import (
runtime "k8s.io/apimachinery/pkg/runtime"
watch "k8s.io/apimachinery/pkg/watch"
cache "k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
internalclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
internalinterfaces "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces"
internalversion "k8s.io/kubernetes/pkg/client/listers/core/internalversion"
@@ -38,34 +38,49 @@ type LimitRangeInformer interface {
}
type limitRangeInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewLimitRangeInformer constructs a new informer for LimitRange type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewLimitRangeInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredLimitRangeInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredLimitRangeInformer constructs a new informer for LimitRange type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredLimitRangeInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().LimitRanges(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().LimitRanges(namespace).Watch(options)
},
},
- &api.LimitRange{},
+ &core.LimitRange{},
resyncPeriod,
indexers,
)
}
-func defaultLimitRangeInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewLimitRangeInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *limitRangeInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredLimitRangeInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *limitRangeInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&api.LimitRange{}, defaultLimitRangeInformer)
+ return f.factory.InformerFor(&core.LimitRange{}, f.defaultInformer)
}
func (f *limitRangeInformer) Lister() internalversion.LimitRangeLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/core/internalversion/namespace.go b/pkg/client/informers/informers_generated/internalversion/core/internalversion/namespace.go
index 8610b66c78..da9f88eaa8 100644
--- a/pkg/client/informers/informers_generated/internalversion/core/internalversion/namespace.go
+++ b/pkg/client/informers/informers_generated/internalversion/core/internalversion/namespace.go
@@ -23,7 +23,7 @@ import (
runtime "k8s.io/apimachinery/pkg/runtime"
watch "k8s.io/apimachinery/pkg/watch"
cache "k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
internalclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
internalinterfaces "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces"
internalversion "k8s.io/kubernetes/pkg/client/listers/core/internalversion"
@@ -38,34 +38,48 @@ type NamespaceInformer interface {
}
type namespaceInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewNamespaceInformer constructs a new informer for Namespace type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewNamespaceInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredNamespaceInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredNamespaceInformer constructs a new informer for Namespace type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredNamespaceInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().Namespaces().List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().Namespaces().Watch(options)
},
},
- &api.Namespace{},
+ &core.Namespace{},
resyncPeriod,
indexers,
)
}
-func defaultNamespaceInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewNamespaceInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *namespaceInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredNamespaceInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *namespaceInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&api.Namespace{}, defaultNamespaceInformer)
+ return f.factory.InformerFor(&core.Namespace{}, f.defaultInformer)
}
func (f *namespaceInformer) Lister() internalversion.NamespaceLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/core/internalversion/node.go b/pkg/client/informers/informers_generated/internalversion/core/internalversion/node.go
index bc8432c3a7..5a112bf898 100644
--- a/pkg/client/informers/informers_generated/internalversion/core/internalversion/node.go
+++ b/pkg/client/informers/informers_generated/internalversion/core/internalversion/node.go
@@ -23,7 +23,7 @@ import (
runtime "k8s.io/apimachinery/pkg/runtime"
watch "k8s.io/apimachinery/pkg/watch"
cache "k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
internalclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
internalinterfaces "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces"
internalversion "k8s.io/kubernetes/pkg/client/listers/core/internalversion"
@@ -38,34 +38,48 @@ type NodeInformer interface {
}
type nodeInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewNodeInformer constructs a new informer for Node type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewNodeInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredNodeInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredNodeInformer constructs a new informer for Node type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredNodeInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().Nodes().List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().Nodes().Watch(options)
},
},
- &api.Node{},
+ &core.Node{},
resyncPeriod,
indexers,
)
}
-func defaultNodeInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewNodeInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *nodeInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredNodeInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *nodeInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&api.Node{}, defaultNodeInformer)
+ return f.factory.InformerFor(&core.Node{}, f.defaultInformer)
}
func (f *nodeInformer) Lister() internalversion.NodeLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/core/internalversion/persistentvolume.go b/pkg/client/informers/informers_generated/internalversion/core/internalversion/persistentvolume.go
index 7f344f1fd8..ecccd769ff 100644
--- a/pkg/client/informers/informers_generated/internalversion/core/internalversion/persistentvolume.go
+++ b/pkg/client/informers/informers_generated/internalversion/core/internalversion/persistentvolume.go
@@ -23,7 +23,7 @@ import (
runtime "k8s.io/apimachinery/pkg/runtime"
watch "k8s.io/apimachinery/pkg/watch"
cache "k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
internalclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
internalinterfaces "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces"
internalversion "k8s.io/kubernetes/pkg/client/listers/core/internalversion"
@@ -38,34 +38,48 @@ type PersistentVolumeInformer interface {
}
type persistentVolumeInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewPersistentVolumeInformer constructs a new informer for PersistentVolume type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewPersistentVolumeInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredPersistentVolumeInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredPersistentVolumeInformer constructs a new informer for PersistentVolume type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredPersistentVolumeInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().PersistentVolumes().List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().PersistentVolumes().Watch(options)
},
},
- &api.PersistentVolume{},
+ &core.PersistentVolume{},
resyncPeriod,
indexers,
)
}
-func defaultPersistentVolumeInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewPersistentVolumeInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *persistentVolumeInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredPersistentVolumeInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *persistentVolumeInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&api.PersistentVolume{}, defaultPersistentVolumeInformer)
+ return f.factory.InformerFor(&core.PersistentVolume{}, f.defaultInformer)
}
func (f *persistentVolumeInformer) Lister() internalversion.PersistentVolumeLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/core/internalversion/persistentvolumeclaim.go b/pkg/client/informers/informers_generated/internalversion/core/internalversion/persistentvolumeclaim.go
index e32130ba3b..bc0c55a12c 100644
--- a/pkg/client/informers/informers_generated/internalversion/core/internalversion/persistentvolumeclaim.go
+++ b/pkg/client/informers/informers_generated/internalversion/core/internalversion/persistentvolumeclaim.go
@@ -23,7 +23,7 @@ import (
runtime "k8s.io/apimachinery/pkg/runtime"
watch "k8s.io/apimachinery/pkg/watch"
cache "k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
internalclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
internalinterfaces "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces"
internalversion "k8s.io/kubernetes/pkg/client/listers/core/internalversion"
@@ -38,34 +38,49 @@ type PersistentVolumeClaimInformer interface {
}
type persistentVolumeClaimInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewPersistentVolumeClaimInformer constructs a new informer for PersistentVolumeClaim type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewPersistentVolumeClaimInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredPersistentVolumeClaimInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredPersistentVolumeClaimInformer constructs a new informer for PersistentVolumeClaim type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredPersistentVolumeClaimInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().PersistentVolumeClaims(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().PersistentVolumeClaims(namespace).Watch(options)
},
},
- &api.PersistentVolumeClaim{},
+ &core.PersistentVolumeClaim{},
resyncPeriod,
indexers,
)
}
-func defaultPersistentVolumeClaimInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewPersistentVolumeClaimInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *persistentVolumeClaimInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredPersistentVolumeClaimInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *persistentVolumeClaimInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&api.PersistentVolumeClaim{}, defaultPersistentVolumeClaimInformer)
+ return f.factory.InformerFor(&core.PersistentVolumeClaim{}, f.defaultInformer)
}
func (f *persistentVolumeClaimInformer) Lister() internalversion.PersistentVolumeClaimLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/core/internalversion/pod.go b/pkg/client/informers/informers_generated/internalversion/core/internalversion/pod.go
index a5bf7be529..cf72a57fcd 100644
--- a/pkg/client/informers/informers_generated/internalversion/core/internalversion/pod.go
+++ b/pkg/client/informers/informers_generated/internalversion/core/internalversion/pod.go
@@ -23,7 +23,7 @@ import (
runtime "k8s.io/apimachinery/pkg/runtime"
watch "k8s.io/apimachinery/pkg/watch"
cache "k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
internalclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
internalinterfaces "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces"
internalversion "k8s.io/kubernetes/pkg/client/listers/core/internalversion"
@@ -38,34 +38,49 @@ type PodInformer interface {
}
type podInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewPodInformer constructs a new informer for Pod type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewPodInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredPodInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredPodInformer constructs a new informer for Pod type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredPodInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().Pods(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().Pods(namespace).Watch(options)
},
},
- &api.Pod{},
+ &core.Pod{},
resyncPeriod,
indexers,
)
}
-func defaultPodInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewPodInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *podInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredPodInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *podInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&api.Pod{}, defaultPodInformer)
+ return f.factory.InformerFor(&core.Pod{}, f.defaultInformer)
}
func (f *podInformer) Lister() internalversion.PodLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/core/internalversion/podtemplate.go b/pkg/client/informers/informers_generated/internalversion/core/internalversion/podtemplate.go
index 295fdc174c..536fafd63f 100644
--- a/pkg/client/informers/informers_generated/internalversion/core/internalversion/podtemplate.go
+++ b/pkg/client/informers/informers_generated/internalversion/core/internalversion/podtemplate.go
@@ -23,7 +23,7 @@ import (
runtime "k8s.io/apimachinery/pkg/runtime"
watch "k8s.io/apimachinery/pkg/watch"
cache "k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
internalclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
internalinterfaces "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces"
internalversion "k8s.io/kubernetes/pkg/client/listers/core/internalversion"
@@ -38,34 +38,49 @@ type PodTemplateInformer interface {
}
type podTemplateInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewPodTemplateInformer constructs a new informer for PodTemplate type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewPodTemplateInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredPodTemplateInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredPodTemplateInformer constructs a new informer for PodTemplate type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredPodTemplateInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().PodTemplates(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().PodTemplates(namespace).Watch(options)
},
},
- &api.PodTemplate{},
+ &core.PodTemplate{},
resyncPeriod,
indexers,
)
}
-func defaultPodTemplateInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewPodTemplateInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *podTemplateInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredPodTemplateInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *podTemplateInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&api.PodTemplate{}, defaultPodTemplateInformer)
+ return f.factory.InformerFor(&core.PodTemplate{}, f.defaultInformer)
}
func (f *podTemplateInformer) Lister() internalversion.PodTemplateLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/core/internalversion/replicationcontroller.go b/pkg/client/informers/informers_generated/internalversion/core/internalversion/replicationcontroller.go
index 592d6bcc47..4741b32b41 100644
--- a/pkg/client/informers/informers_generated/internalversion/core/internalversion/replicationcontroller.go
+++ b/pkg/client/informers/informers_generated/internalversion/core/internalversion/replicationcontroller.go
@@ -23,7 +23,7 @@ import (
runtime "k8s.io/apimachinery/pkg/runtime"
watch "k8s.io/apimachinery/pkg/watch"
cache "k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
internalclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
internalinterfaces "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces"
internalversion "k8s.io/kubernetes/pkg/client/listers/core/internalversion"
@@ -38,34 +38,49 @@ type ReplicationControllerInformer interface {
}
type replicationControllerInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewReplicationControllerInformer constructs a new informer for ReplicationController type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewReplicationControllerInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredReplicationControllerInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredReplicationControllerInformer constructs a new informer for ReplicationController type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredReplicationControllerInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().ReplicationControllers(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().ReplicationControllers(namespace).Watch(options)
},
},
- &api.ReplicationController{},
+ &core.ReplicationController{},
resyncPeriod,
indexers,
)
}
-func defaultReplicationControllerInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewReplicationControllerInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *replicationControllerInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredReplicationControllerInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *replicationControllerInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&api.ReplicationController{}, defaultReplicationControllerInformer)
+ return f.factory.InformerFor(&core.ReplicationController{}, f.defaultInformer)
}
func (f *replicationControllerInformer) Lister() internalversion.ReplicationControllerLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/core/internalversion/resourcequota.go b/pkg/client/informers/informers_generated/internalversion/core/internalversion/resourcequota.go
index 04327b479e..2a50f2c498 100644
--- a/pkg/client/informers/informers_generated/internalversion/core/internalversion/resourcequota.go
+++ b/pkg/client/informers/informers_generated/internalversion/core/internalversion/resourcequota.go
@@ -23,7 +23,7 @@ import (
runtime "k8s.io/apimachinery/pkg/runtime"
watch "k8s.io/apimachinery/pkg/watch"
cache "k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
internalclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
internalinterfaces "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces"
internalversion "k8s.io/kubernetes/pkg/client/listers/core/internalversion"
@@ -38,34 +38,49 @@ type ResourceQuotaInformer interface {
}
type resourceQuotaInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewResourceQuotaInformer constructs a new informer for ResourceQuota type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewResourceQuotaInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredResourceQuotaInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredResourceQuotaInformer constructs a new informer for ResourceQuota type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredResourceQuotaInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().ResourceQuotas(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().ResourceQuotas(namespace).Watch(options)
},
},
- &api.ResourceQuota{},
+ &core.ResourceQuota{},
resyncPeriod,
indexers,
)
}
-func defaultResourceQuotaInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewResourceQuotaInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *resourceQuotaInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredResourceQuotaInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *resourceQuotaInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&api.ResourceQuota{}, defaultResourceQuotaInformer)
+ return f.factory.InformerFor(&core.ResourceQuota{}, f.defaultInformer)
}
func (f *resourceQuotaInformer) Lister() internalversion.ResourceQuotaLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/core/internalversion/secret.go b/pkg/client/informers/informers_generated/internalversion/core/internalversion/secret.go
index 1dae567709..35c4d2067d 100644
--- a/pkg/client/informers/informers_generated/internalversion/core/internalversion/secret.go
+++ b/pkg/client/informers/informers_generated/internalversion/core/internalversion/secret.go
@@ -23,7 +23,7 @@ import (
runtime "k8s.io/apimachinery/pkg/runtime"
watch "k8s.io/apimachinery/pkg/watch"
cache "k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
internalclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
internalinterfaces "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces"
internalversion "k8s.io/kubernetes/pkg/client/listers/core/internalversion"
@@ -38,34 +38,49 @@ type SecretInformer interface {
}
type secretInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewSecretInformer constructs a new informer for Secret type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewSecretInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredSecretInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredSecretInformer constructs a new informer for Secret type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredSecretInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().Secrets(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().Secrets(namespace).Watch(options)
},
},
- &api.Secret{},
+ &core.Secret{},
resyncPeriod,
indexers,
)
}
-func defaultSecretInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewSecretInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *secretInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredSecretInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *secretInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&api.Secret{}, defaultSecretInformer)
+ return f.factory.InformerFor(&core.Secret{}, f.defaultInformer)
}
func (f *secretInformer) Lister() internalversion.SecretLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/core/internalversion/service.go b/pkg/client/informers/informers_generated/internalversion/core/internalversion/service.go
index 0e61757540..086529166d 100644
--- a/pkg/client/informers/informers_generated/internalversion/core/internalversion/service.go
+++ b/pkg/client/informers/informers_generated/internalversion/core/internalversion/service.go
@@ -23,7 +23,7 @@ import (
runtime "k8s.io/apimachinery/pkg/runtime"
watch "k8s.io/apimachinery/pkg/watch"
cache "k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
internalclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
internalinterfaces "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces"
internalversion "k8s.io/kubernetes/pkg/client/listers/core/internalversion"
@@ -38,34 +38,49 @@ type ServiceInformer interface {
}
type serviceInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewServiceInformer constructs a new informer for Service type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewServiceInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredServiceInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredServiceInformer constructs a new informer for Service type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredServiceInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().Services(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().Services(namespace).Watch(options)
},
},
- &api.Service{},
+ &core.Service{},
resyncPeriod,
indexers,
)
}
-func defaultServiceInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewServiceInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *serviceInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredServiceInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *serviceInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&api.Service{}, defaultServiceInformer)
+ return f.factory.InformerFor(&core.Service{}, f.defaultInformer)
}
func (f *serviceInformer) Lister() internalversion.ServiceLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/core/internalversion/serviceaccount.go b/pkg/client/informers/informers_generated/internalversion/core/internalversion/serviceaccount.go
index dce710de76..54d4509c33 100644
--- a/pkg/client/informers/informers_generated/internalversion/core/internalversion/serviceaccount.go
+++ b/pkg/client/informers/informers_generated/internalversion/core/internalversion/serviceaccount.go
@@ -23,7 +23,7 @@ import (
runtime "k8s.io/apimachinery/pkg/runtime"
watch "k8s.io/apimachinery/pkg/watch"
cache "k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
internalclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
internalinterfaces "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces"
internalversion "k8s.io/kubernetes/pkg/client/listers/core/internalversion"
@@ -38,34 +38,49 @@ type ServiceAccountInformer interface {
}
type serviceAccountInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewServiceAccountInformer constructs a new informer for ServiceAccount type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewServiceAccountInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredServiceAccountInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredServiceAccountInformer constructs a new informer for ServiceAccount type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredServiceAccountInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().ServiceAccounts(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Core().ServiceAccounts(namespace).Watch(options)
},
},
- &api.ServiceAccount{},
+ &core.ServiceAccount{},
resyncPeriod,
indexers,
)
}
-func defaultServiceAccountInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewServiceAccountInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *serviceAccountInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredServiceAccountInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *serviceAccountInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&api.ServiceAccount{}, defaultServiceAccountInformer)
+ return f.factory.InformerFor(&core.ServiceAccount{}, f.defaultInformer)
}
func (f *serviceAccountInformer) Lister() internalversion.ServiceAccountLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/extensions/interface.go b/pkg/client/informers/informers_generated/internalversion/extensions/interface.go
index acc422e798..b909a563ff 100644
--- a/pkg/client/informers/informers_generated/internalversion/extensions/interface.go
+++ b/pkg/client/informers/informers_generated/internalversion/extensions/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// InternalVersion returns a new internalversion.Interface.
func (g *group) InternalVersion() internalversion.Interface {
- return internalversion.New(g.SharedInformerFactory)
+ return internalversion.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/pkg/client/informers/informers_generated/internalversion/extensions/internalversion/daemonset.go b/pkg/client/informers/informers_generated/internalversion/extensions/internalversion/daemonset.go
index 401a08551f..21479d96ee 100644
--- a/pkg/client/informers/informers_generated/internalversion/extensions/internalversion/daemonset.go
+++ b/pkg/client/informers/informers_generated/internalversion/extensions/internalversion/daemonset.go
@@ -38,19 +38,34 @@ type DaemonSetInformer interface {
}
type daemonSetInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewDaemonSetInformer constructs a new informer for DaemonSet type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewDaemonSetInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredDaemonSetInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredDaemonSetInformer constructs a new informer for DaemonSet type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredDaemonSetInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Extensions().DaemonSets(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Extensions().DaemonSets(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewDaemonSetInformer(client internalclientset.Interface, namespace string,
)
}
-func defaultDaemonSetInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewDaemonSetInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *daemonSetInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredDaemonSetInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *daemonSetInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&extensions.DaemonSet{}, defaultDaemonSetInformer)
+ return f.factory.InformerFor(&extensions.DaemonSet{}, f.defaultInformer)
}
func (f *daemonSetInformer) Lister() internalversion.DaemonSetLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/extensions/internalversion/deployment.go b/pkg/client/informers/informers_generated/internalversion/extensions/internalversion/deployment.go
index 872c211e00..6b1044a465 100644
--- a/pkg/client/informers/informers_generated/internalversion/extensions/internalversion/deployment.go
+++ b/pkg/client/informers/informers_generated/internalversion/extensions/internalversion/deployment.go
@@ -38,19 +38,34 @@ type DeploymentInformer interface {
}
type deploymentInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewDeploymentInformer constructs a new informer for Deployment type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewDeploymentInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredDeploymentInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredDeploymentInformer constructs a new informer for Deployment type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredDeploymentInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Extensions().Deployments(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Extensions().Deployments(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewDeploymentInformer(client internalclientset.Interface, namespace string,
)
}
-func defaultDeploymentInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewDeploymentInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *deploymentInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredDeploymentInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *deploymentInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&extensions.Deployment{}, defaultDeploymentInformer)
+ return f.factory.InformerFor(&extensions.Deployment{}, f.defaultInformer)
}
func (f *deploymentInformer) Lister() internalversion.DeploymentLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/extensions/internalversion/ingress.go b/pkg/client/informers/informers_generated/internalversion/extensions/internalversion/ingress.go
index 8c1e22d71c..f402444944 100644
--- a/pkg/client/informers/informers_generated/internalversion/extensions/internalversion/ingress.go
+++ b/pkg/client/informers/informers_generated/internalversion/extensions/internalversion/ingress.go
@@ -38,19 +38,34 @@ type IngressInformer interface {
}
type ingressInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewIngressInformer constructs a new informer for Ingress type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewIngressInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredIngressInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredIngressInformer constructs a new informer for Ingress type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredIngressInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Extensions().Ingresses(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Extensions().Ingresses(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewIngressInformer(client internalclientset.Interface, namespace string, re
)
}
-func defaultIngressInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewIngressInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *ingressInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredIngressInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *ingressInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&extensions.Ingress{}, defaultIngressInformer)
+ return f.factory.InformerFor(&extensions.Ingress{}, f.defaultInformer)
}
func (f *ingressInformer) Lister() internalversion.IngressLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/extensions/internalversion/interface.go b/pkg/client/informers/informers_generated/internalversion/extensions/internalversion/interface.go
index e66d74a01e..2c5f3212d4 100644
--- a/pkg/client/informers/informers_generated/internalversion/extensions/internalversion/interface.go
+++ b/pkg/client/informers/informers_generated/internalversion/extensions/internalversion/interface.go
@@ -37,35 +37,37 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// DaemonSets returns a DaemonSetInformer.
func (v *version) DaemonSets() DaemonSetInformer {
- return &daemonSetInformer{factory: v.SharedInformerFactory}
+ return &daemonSetInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// Deployments returns a DeploymentInformer.
func (v *version) Deployments() DeploymentInformer {
- return &deploymentInformer{factory: v.SharedInformerFactory}
+ return &deploymentInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// Ingresses returns a IngressInformer.
func (v *version) Ingresses() IngressInformer {
- return &ingressInformer{factory: v.SharedInformerFactory}
+ return &ingressInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// PodSecurityPolicies returns a PodSecurityPolicyInformer.
func (v *version) PodSecurityPolicies() PodSecurityPolicyInformer {
- return &podSecurityPolicyInformer{factory: v.SharedInformerFactory}
+ return &podSecurityPolicyInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
// ReplicaSets returns a ReplicaSetInformer.
func (v *version) ReplicaSets() ReplicaSetInformer {
- return &replicaSetInformer{factory: v.SharedInformerFactory}
+ return &replicaSetInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/pkg/client/informers/informers_generated/internalversion/extensions/internalversion/podsecuritypolicy.go b/pkg/client/informers/informers_generated/internalversion/extensions/internalversion/podsecuritypolicy.go
index 07d30d0dd2..c1015ae101 100644
--- a/pkg/client/informers/informers_generated/internalversion/extensions/internalversion/podsecuritypolicy.go
+++ b/pkg/client/informers/informers_generated/internalversion/extensions/internalversion/podsecuritypolicy.go
@@ -38,19 +38,33 @@ type PodSecurityPolicyInformer interface {
}
type podSecurityPolicyInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewPodSecurityPolicyInformer constructs a new informer for PodSecurityPolicy type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewPodSecurityPolicyInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredPodSecurityPolicyInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredPodSecurityPolicyInformer constructs a new informer for PodSecurityPolicy type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredPodSecurityPolicyInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Extensions().PodSecurityPolicies().List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Extensions().PodSecurityPolicies().Watch(options)
},
},
@@ -60,12 +74,12 @@ func NewPodSecurityPolicyInformer(client internalclientset.Interface, resyncPeri
)
}
-func defaultPodSecurityPolicyInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewPodSecurityPolicyInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *podSecurityPolicyInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredPodSecurityPolicyInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *podSecurityPolicyInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&extensions.PodSecurityPolicy{}, defaultPodSecurityPolicyInformer)
+ return f.factory.InformerFor(&extensions.PodSecurityPolicy{}, f.defaultInformer)
}
func (f *podSecurityPolicyInformer) Lister() internalversion.PodSecurityPolicyLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/extensions/internalversion/replicaset.go b/pkg/client/informers/informers_generated/internalversion/extensions/internalversion/replicaset.go
index c5deda6ce6..7a4b889f6d 100644
--- a/pkg/client/informers/informers_generated/internalversion/extensions/internalversion/replicaset.go
+++ b/pkg/client/informers/informers_generated/internalversion/extensions/internalversion/replicaset.go
@@ -38,19 +38,34 @@ type ReplicaSetInformer interface {
}
type replicaSetInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewReplicaSetInformer constructs a new informer for ReplicaSet type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewReplicaSetInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredReplicaSetInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredReplicaSetInformer constructs a new informer for ReplicaSet type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredReplicaSetInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Extensions().ReplicaSets(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Extensions().ReplicaSets(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewReplicaSetInformer(client internalclientset.Interface, namespace string,
)
}
-func defaultReplicaSetInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewReplicaSetInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *replicaSetInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredReplicaSetInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *replicaSetInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&extensions.ReplicaSet{}, defaultReplicaSetInformer)
+ return f.factory.InformerFor(&extensions.ReplicaSet{}, f.defaultInformer)
}
func (f *replicaSetInformer) Lister() internalversion.ReplicaSetLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/factory.go b/pkg/client/informers/informers_generated/internalversion/factory.go
index c5dba5cc02..e66407f88c 100644
--- a/pkg/client/informers/informers_generated/internalversion/factory.go
+++ b/pkg/client/informers/informers_generated/internalversion/factory.go
@@ -19,6 +19,7 @@ limitations under the License.
package internalversion
import (
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
schema "k8s.io/apimachinery/pkg/runtime/schema"
cache "k8s.io/client-go/tools/cache"
@@ -43,9 +44,11 @@ import (
)
type sharedInformerFactory struct {
- client internalclientset.Interface
- lock sync.Mutex
- defaultResync time.Duration
+ client internalclientset.Interface
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ lock sync.Mutex
+ defaultResync time.Duration
informers map[reflect.Type]cache.SharedIndexInformer
// startedInformers is used for tracking which informers have been started.
@@ -55,8 +58,17 @@ type sharedInformerFactory struct {
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory
func NewSharedInformerFactory(client internalclientset.Interface, defaultResync time.Duration) SharedInformerFactory {
+ return NewFilteredSharedInformerFactory(client, defaultResync, v1.NamespaceAll, nil)
+}
+
+// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
+// Listers obtained via this SharedInformerFactory will be subject to the same filters
+// as specified here.
+func NewFilteredSharedInformerFactory(client internalclientset.Interface, defaultResync time.Duration, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerFactory {
return &sharedInformerFactory{
client: client,
+ namespace: namespace,
+ tweakListOptions: tweakListOptions,
defaultResync: defaultResync,
informers: make(map[reflect.Type]cache.SharedIndexInformer),
startedInformers: make(map[reflect.Type]bool),
@@ -138,53 +150,53 @@ type SharedInformerFactory interface {
}
func (f *sharedInformerFactory) Admissionregistration() admissionregistration.Interface {
- return admissionregistration.New(f)
+ return admissionregistration.New(f, f.namespace, f.tweakListOptions)
}
func (f *sharedInformerFactory) Apps() apps.Interface {
- return apps.New(f)
+ return apps.New(f, f.namespace, f.tweakListOptions)
}
func (f *sharedInformerFactory) Autoscaling() autoscaling.Interface {
- return autoscaling.New(f)
+ return autoscaling.New(f, f.namespace, f.tweakListOptions)
}
func (f *sharedInformerFactory) Batch() batch.Interface {
- return batch.New(f)
+ return batch.New(f, f.namespace, f.tweakListOptions)
}
func (f *sharedInformerFactory) Certificates() certificates.Interface {
- return certificates.New(f)
+ return certificates.New(f, f.namespace, f.tweakListOptions)
}
func (f *sharedInformerFactory) Core() core.Interface {
- return core.New(f)
+ return core.New(f, f.namespace, f.tweakListOptions)
}
func (f *sharedInformerFactory) Extensions() extensions.Interface {
- return extensions.New(f)
+ return extensions.New(f, f.namespace, f.tweakListOptions)
}
func (f *sharedInformerFactory) Networking() networking.Interface {
- return networking.New(f)
+ return networking.New(f, f.namespace, f.tweakListOptions)
}
func (f *sharedInformerFactory) Policy() policy.Interface {
- return policy.New(f)
+ return policy.New(f, f.namespace, f.tweakListOptions)
}
func (f *sharedInformerFactory) Rbac() rbac.Interface {
- return rbac.New(f)
+ return rbac.New(f, f.namespace, f.tweakListOptions)
}
func (f *sharedInformerFactory) Scheduling() scheduling.Interface {
- return scheduling.New(f)
+ return scheduling.New(f, f.namespace, f.tweakListOptions)
}
func (f *sharedInformerFactory) Settings() settings.Interface {
- return settings.New(f)
+ return settings.New(f, f.namespace, f.tweakListOptions)
}
func (f *sharedInformerFactory) Storage() storage.Interface {
- return storage.New(f)
+ return storage.New(f, f.namespace, f.tweakListOptions)
}
diff --git a/pkg/client/informers/informers_generated/internalversion/generic.go b/pkg/client/informers/informers_generated/internalversion/generic.go
index e4eb601087..b491ea260a 100644
--- a/pkg/client/informers/informers_generated/internalversion/generic.go
+++ b/pkg/client/informers/informers_generated/internalversion/generic.go
@@ -22,12 +22,12 @@ import (
"fmt"
schema "k8s.io/apimachinery/pkg/runtime/schema"
cache "k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
admissionregistration "k8s.io/kubernetes/pkg/apis/admissionregistration"
apps "k8s.io/kubernetes/pkg/apis/apps"
autoscaling "k8s.io/kubernetes/pkg/apis/autoscaling"
batch "k8s.io/kubernetes/pkg/apis/batch"
certificates "k8s.io/kubernetes/pkg/apis/certificates"
+ core "k8s.io/kubernetes/pkg/apis/core"
extensions "k8s.io/kubernetes/pkg/apis/extensions"
networking "k8s.io/kubernetes/pkg/apis/networking"
policy "k8s.io/kubernetes/pkg/apis/policy"
@@ -64,10 +64,12 @@ func (f *genericInformer) Lister() cache.GenericLister {
func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource) (GenericInformer, error) {
switch resource {
// Group=admissionregistration.k8s.io, Version=internalVersion
- case admissionregistration.SchemeGroupVersion.WithResource("externaladmissionhookconfigurations"):
- return &genericInformer{resource: resource.GroupResource(), informer: f.Admissionregistration().InternalVersion().ExternalAdmissionHookConfigurations().Informer()}, nil
case admissionregistration.SchemeGroupVersion.WithResource("initializerconfigurations"):
return &genericInformer{resource: resource.GroupResource(), informer: f.Admissionregistration().InternalVersion().InitializerConfigurations().Informer()}, nil
+ case admissionregistration.SchemeGroupVersion.WithResource("mutatingwebhookconfigurations"):
+ return &genericInformer{resource: resource.GroupResource(), informer: f.Admissionregistration().InternalVersion().MutatingWebhookConfigurations().Informer()}, nil
+ case admissionregistration.SchemeGroupVersion.WithResource("validatingwebhookconfigurations"):
+ return &genericInformer{resource: resource.GroupResource(), informer: f.Admissionregistration().InternalVersion().ValidatingWebhookConfigurations().Informer()}, nil
// Group=apps, Version=internalVersion
case apps.SchemeGroupVersion.WithResource("controllerrevisions"):
@@ -90,37 +92,37 @@ func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource
return &genericInformer{resource: resource.GroupResource(), informer: f.Certificates().InternalVersion().CertificateSigningRequests().Informer()}, nil
// Group=core, Version=internalVersion
- case api.SchemeGroupVersion.WithResource("componentstatuses"):
+ case core.SchemeGroupVersion.WithResource("componentstatuses"):
return &genericInformer{resource: resource.GroupResource(), informer: f.Core().InternalVersion().ComponentStatuses().Informer()}, nil
- case api.SchemeGroupVersion.WithResource("configmaps"):
+ case core.SchemeGroupVersion.WithResource("configmaps"):
return &genericInformer{resource: resource.GroupResource(), informer: f.Core().InternalVersion().ConfigMaps().Informer()}, nil
- case api.SchemeGroupVersion.WithResource("endpoints"):
+ case core.SchemeGroupVersion.WithResource("endpoints"):
return &genericInformer{resource: resource.GroupResource(), informer: f.Core().InternalVersion().Endpoints().Informer()}, nil
- case api.SchemeGroupVersion.WithResource("events"):
+ case core.SchemeGroupVersion.WithResource("events"):
return &genericInformer{resource: resource.GroupResource(), informer: f.Core().InternalVersion().Events().Informer()}, nil
- case api.SchemeGroupVersion.WithResource("limitranges"):
+ case core.SchemeGroupVersion.WithResource("limitranges"):
return &genericInformer{resource: resource.GroupResource(), informer: f.Core().InternalVersion().LimitRanges().Informer()}, nil
- case api.SchemeGroupVersion.WithResource("namespaces"):
+ case core.SchemeGroupVersion.WithResource("namespaces"):
return &genericInformer{resource: resource.GroupResource(), informer: f.Core().InternalVersion().Namespaces().Informer()}, nil
- case api.SchemeGroupVersion.WithResource("nodes"):
+ case core.SchemeGroupVersion.WithResource("nodes"):
return &genericInformer{resource: resource.GroupResource(), informer: f.Core().InternalVersion().Nodes().Informer()}, nil
- case api.SchemeGroupVersion.WithResource("persistentvolumes"):
+ case core.SchemeGroupVersion.WithResource("persistentvolumes"):
return &genericInformer{resource: resource.GroupResource(), informer: f.Core().InternalVersion().PersistentVolumes().Informer()}, nil
- case api.SchemeGroupVersion.WithResource("persistentvolumeclaims"):
+ case core.SchemeGroupVersion.WithResource("persistentvolumeclaims"):
return &genericInformer{resource: resource.GroupResource(), informer: f.Core().InternalVersion().PersistentVolumeClaims().Informer()}, nil
- case api.SchemeGroupVersion.WithResource("pods"):
+ case core.SchemeGroupVersion.WithResource("pods"):
return &genericInformer{resource: resource.GroupResource(), informer: f.Core().InternalVersion().Pods().Informer()}, nil
- case api.SchemeGroupVersion.WithResource("podtemplates"):
+ case core.SchemeGroupVersion.WithResource("podtemplates"):
return &genericInformer{resource: resource.GroupResource(), informer: f.Core().InternalVersion().PodTemplates().Informer()}, nil
- case api.SchemeGroupVersion.WithResource("replicationcontrollers"):
+ case core.SchemeGroupVersion.WithResource("replicationcontrollers"):
return &genericInformer{resource: resource.GroupResource(), informer: f.Core().InternalVersion().ReplicationControllers().Informer()}, nil
- case api.SchemeGroupVersion.WithResource("resourcequotas"):
+ case core.SchemeGroupVersion.WithResource("resourcequotas"):
return &genericInformer{resource: resource.GroupResource(), informer: f.Core().InternalVersion().ResourceQuotas().Informer()}, nil
- case api.SchemeGroupVersion.WithResource("secrets"):
+ case core.SchemeGroupVersion.WithResource("secrets"):
return &genericInformer{resource: resource.GroupResource(), informer: f.Core().InternalVersion().Secrets().Informer()}, nil
- case api.SchemeGroupVersion.WithResource("services"):
+ case core.SchemeGroupVersion.WithResource("services"):
return &genericInformer{resource: resource.GroupResource(), informer: f.Core().InternalVersion().Services().Informer()}, nil
- case api.SchemeGroupVersion.WithResource("serviceaccounts"):
+ case core.SchemeGroupVersion.WithResource("serviceaccounts"):
return &genericInformer{resource: resource.GroupResource(), informer: f.Core().InternalVersion().ServiceAccounts().Informer()}, nil
// Group=extensions, Version=internalVersion
diff --git a/pkg/client/informers/informers_generated/internalversion/internalinterfaces/BUILD b/pkg/client/informers/informers_generated/internalversion/internalinterfaces/BUILD
index 05f5fa1819..a87900962d 100644
--- a/pkg/client/informers/informers_generated/internalversion/internalinterfaces/BUILD
+++ b/pkg/client/informers/informers_generated/internalversion/internalinterfaces/BUILD
@@ -11,6 +11,7 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces",
deps = [
"//pkg/client/clientset_generated/internalclientset:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
],
diff --git a/pkg/client/informers/informers_generated/internalversion/internalinterfaces/factory_interfaces.go b/pkg/client/informers/informers_generated/internalversion/internalinterfaces/factory_interfaces.go
index 5b168b5919..9c7a919058 100644
--- a/pkg/client/informers/informers_generated/internalversion/internalinterfaces/factory_interfaces.go
+++ b/pkg/client/informers/informers_generated/internalversion/internalinterfaces/factory_interfaces.go
@@ -19,6 +19,7 @@ limitations under the License.
package internalinterfaces
import (
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
cache "k8s.io/client-go/tools/cache"
internalclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
@@ -32,3 +33,5 @@ type SharedInformerFactory interface {
Start(stopCh <-chan struct{})
InformerFor(obj runtime.Object, newFunc NewInformerFunc) cache.SharedIndexInformer
}
+
+type TweakListOptionsFunc func(*v1.ListOptions)
diff --git a/pkg/client/informers/informers_generated/internalversion/networking/interface.go b/pkg/client/informers/informers_generated/internalversion/networking/interface.go
index bae69a5041..e6b7762129 100644
--- a/pkg/client/informers/informers_generated/internalversion/networking/interface.go
+++ b/pkg/client/informers/informers_generated/internalversion/networking/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// InternalVersion returns a new internalversion.Interface.
func (g *group) InternalVersion() internalversion.Interface {
- return internalversion.New(g.SharedInformerFactory)
+ return internalversion.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/pkg/client/informers/informers_generated/internalversion/networking/internalversion/interface.go b/pkg/client/informers/informers_generated/internalversion/networking/internalversion/interface.go
index e3eb5fa818..8a87627750 100644
--- a/pkg/client/informers/informers_generated/internalversion/networking/internalversion/interface.go
+++ b/pkg/client/informers/informers_generated/internalversion/networking/internalversion/interface.go
@@ -29,15 +29,17 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// NetworkPolicies returns a NetworkPolicyInformer.
func (v *version) NetworkPolicies() NetworkPolicyInformer {
- return &networkPolicyInformer{factory: v.SharedInformerFactory}
+ return &networkPolicyInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/pkg/client/informers/informers_generated/internalversion/networking/internalversion/networkpolicy.go b/pkg/client/informers/informers_generated/internalversion/networking/internalversion/networkpolicy.go
index aea32f716b..0b094a7ce0 100644
--- a/pkg/client/informers/informers_generated/internalversion/networking/internalversion/networkpolicy.go
+++ b/pkg/client/informers/informers_generated/internalversion/networking/internalversion/networkpolicy.go
@@ -38,19 +38,34 @@ type NetworkPolicyInformer interface {
}
type networkPolicyInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewNetworkPolicyInformer constructs a new informer for NetworkPolicy type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewNetworkPolicyInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredNetworkPolicyInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredNetworkPolicyInformer constructs a new informer for NetworkPolicy type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredNetworkPolicyInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Networking().NetworkPolicies(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Networking().NetworkPolicies(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewNetworkPolicyInformer(client internalclientset.Interface, namespace stri
)
}
-func defaultNetworkPolicyInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewNetworkPolicyInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *networkPolicyInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredNetworkPolicyInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *networkPolicyInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&networking.NetworkPolicy{}, defaultNetworkPolicyInformer)
+ return f.factory.InformerFor(&networking.NetworkPolicy{}, f.defaultInformer)
}
func (f *networkPolicyInformer) Lister() internalversion.NetworkPolicyLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/policy/interface.go b/pkg/client/informers/informers_generated/internalversion/policy/interface.go
index 82977c9ce9..2860283749 100644
--- a/pkg/client/informers/informers_generated/internalversion/policy/interface.go
+++ b/pkg/client/informers/informers_generated/internalversion/policy/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// InternalVersion returns a new internalversion.Interface.
func (g *group) InternalVersion() internalversion.Interface {
- return internalversion.New(g.SharedInformerFactory)
+ return internalversion.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/pkg/client/informers/informers_generated/internalversion/policy/internalversion/interface.go b/pkg/client/informers/informers_generated/internalversion/policy/internalversion/interface.go
index 258654df2e..74773e72e3 100644
--- a/pkg/client/informers/informers_generated/internalversion/policy/internalversion/interface.go
+++ b/pkg/client/informers/informers_generated/internalversion/policy/internalversion/interface.go
@@ -29,15 +29,17 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// PodDisruptionBudgets returns a PodDisruptionBudgetInformer.
func (v *version) PodDisruptionBudgets() PodDisruptionBudgetInformer {
- return &podDisruptionBudgetInformer{factory: v.SharedInformerFactory}
+ return &podDisruptionBudgetInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/pkg/client/informers/informers_generated/internalversion/policy/internalversion/poddisruptionbudget.go b/pkg/client/informers/informers_generated/internalversion/policy/internalversion/poddisruptionbudget.go
index 6be99a7120..431d5898b4 100644
--- a/pkg/client/informers/informers_generated/internalversion/policy/internalversion/poddisruptionbudget.go
+++ b/pkg/client/informers/informers_generated/internalversion/policy/internalversion/poddisruptionbudget.go
@@ -38,19 +38,34 @@ type PodDisruptionBudgetInformer interface {
}
type podDisruptionBudgetInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewPodDisruptionBudgetInformer constructs a new informer for PodDisruptionBudget type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewPodDisruptionBudgetInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredPodDisruptionBudgetInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredPodDisruptionBudgetInformer constructs a new informer for PodDisruptionBudget type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredPodDisruptionBudgetInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Policy().PodDisruptionBudgets(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Policy().PodDisruptionBudgets(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewPodDisruptionBudgetInformer(client internalclientset.Interface, namespac
)
}
-func defaultPodDisruptionBudgetInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewPodDisruptionBudgetInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *podDisruptionBudgetInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredPodDisruptionBudgetInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *podDisruptionBudgetInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&policy.PodDisruptionBudget{}, defaultPodDisruptionBudgetInformer)
+ return f.factory.InformerFor(&policy.PodDisruptionBudget{}, f.defaultInformer)
}
func (f *podDisruptionBudgetInformer) Lister() internalversion.PodDisruptionBudgetLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/rbac/interface.go b/pkg/client/informers/informers_generated/internalversion/rbac/interface.go
index 47dad0522d..bcd5167014 100644
--- a/pkg/client/informers/informers_generated/internalversion/rbac/interface.go
+++ b/pkg/client/informers/informers_generated/internalversion/rbac/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// InternalVersion returns a new internalversion.Interface.
func (g *group) InternalVersion() internalversion.Interface {
- return internalversion.New(g.SharedInformerFactory)
+ return internalversion.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/pkg/client/informers/informers_generated/internalversion/rbac/internalversion/clusterrole.go b/pkg/client/informers/informers_generated/internalversion/rbac/internalversion/clusterrole.go
index 6f3d575ce0..d723beeeb4 100644
--- a/pkg/client/informers/informers_generated/internalversion/rbac/internalversion/clusterrole.go
+++ b/pkg/client/informers/informers_generated/internalversion/rbac/internalversion/clusterrole.go
@@ -38,19 +38,33 @@ type ClusterRoleInformer interface {
}
type clusterRoleInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewClusterRoleInformer constructs a new informer for ClusterRole type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewClusterRoleInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredClusterRoleInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredClusterRoleInformer constructs a new informer for ClusterRole type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredClusterRoleInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Rbac().ClusterRoles().List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Rbac().ClusterRoles().Watch(options)
},
},
@@ -60,12 +74,12 @@ func NewClusterRoleInformer(client internalclientset.Interface, resyncPeriod tim
)
}
-func defaultClusterRoleInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewClusterRoleInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *clusterRoleInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredClusterRoleInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *clusterRoleInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&rbac.ClusterRole{}, defaultClusterRoleInformer)
+ return f.factory.InformerFor(&rbac.ClusterRole{}, f.defaultInformer)
}
func (f *clusterRoleInformer) Lister() internalversion.ClusterRoleLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/rbac/internalversion/clusterrolebinding.go b/pkg/client/informers/informers_generated/internalversion/rbac/internalversion/clusterrolebinding.go
index e0c5160a73..07b15deaad 100644
--- a/pkg/client/informers/informers_generated/internalversion/rbac/internalversion/clusterrolebinding.go
+++ b/pkg/client/informers/informers_generated/internalversion/rbac/internalversion/clusterrolebinding.go
@@ -38,19 +38,33 @@ type ClusterRoleBindingInformer interface {
}
type clusterRoleBindingInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewClusterRoleBindingInformer constructs a new informer for ClusterRoleBinding type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewClusterRoleBindingInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredClusterRoleBindingInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredClusterRoleBindingInformer constructs a new informer for ClusterRoleBinding type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredClusterRoleBindingInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Rbac().ClusterRoleBindings().List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Rbac().ClusterRoleBindings().Watch(options)
},
},
@@ -60,12 +74,12 @@ func NewClusterRoleBindingInformer(client internalclientset.Interface, resyncPer
)
}
-func defaultClusterRoleBindingInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewClusterRoleBindingInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *clusterRoleBindingInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredClusterRoleBindingInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *clusterRoleBindingInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&rbac.ClusterRoleBinding{}, defaultClusterRoleBindingInformer)
+ return f.factory.InformerFor(&rbac.ClusterRoleBinding{}, f.defaultInformer)
}
func (f *clusterRoleBindingInformer) Lister() internalversion.ClusterRoleBindingLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/rbac/internalversion/interface.go b/pkg/client/informers/informers_generated/internalversion/rbac/internalversion/interface.go
index fc85041c4a..ac8b2040c0 100644
--- a/pkg/client/informers/informers_generated/internalversion/rbac/internalversion/interface.go
+++ b/pkg/client/informers/informers_generated/internalversion/rbac/internalversion/interface.go
@@ -35,30 +35,32 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// ClusterRoles returns a ClusterRoleInformer.
func (v *version) ClusterRoles() ClusterRoleInformer {
- return &clusterRoleInformer{factory: v.SharedInformerFactory}
+ return &clusterRoleInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
// ClusterRoleBindings returns a ClusterRoleBindingInformer.
func (v *version) ClusterRoleBindings() ClusterRoleBindingInformer {
- return &clusterRoleBindingInformer{factory: v.SharedInformerFactory}
+ return &clusterRoleBindingInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
// Roles returns a RoleInformer.
func (v *version) Roles() RoleInformer {
- return &roleInformer{factory: v.SharedInformerFactory}
+ return &roleInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// RoleBindings returns a RoleBindingInformer.
func (v *version) RoleBindings() RoleBindingInformer {
- return &roleBindingInformer{factory: v.SharedInformerFactory}
+ return &roleBindingInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/pkg/client/informers/informers_generated/internalversion/rbac/internalversion/role.go b/pkg/client/informers/informers_generated/internalversion/rbac/internalversion/role.go
index 5d61c9c28e..7a736633d0 100644
--- a/pkg/client/informers/informers_generated/internalversion/rbac/internalversion/role.go
+++ b/pkg/client/informers/informers_generated/internalversion/rbac/internalversion/role.go
@@ -38,19 +38,34 @@ type RoleInformer interface {
}
type roleInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewRoleInformer constructs a new informer for Role type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewRoleInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredRoleInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredRoleInformer constructs a new informer for Role type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredRoleInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Rbac().Roles(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Rbac().Roles(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewRoleInformer(client internalclientset.Interface, namespace string, resyn
)
}
-func defaultRoleInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewRoleInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *roleInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredRoleInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *roleInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&rbac.Role{}, defaultRoleInformer)
+ return f.factory.InformerFor(&rbac.Role{}, f.defaultInformer)
}
func (f *roleInformer) Lister() internalversion.RoleLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/rbac/internalversion/rolebinding.go b/pkg/client/informers/informers_generated/internalversion/rbac/internalversion/rolebinding.go
index 752fba074e..6b0560953e 100644
--- a/pkg/client/informers/informers_generated/internalversion/rbac/internalversion/rolebinding.go
+++ b/pkg/client/informers/informers_generated/internalversion/rbac/internalversion/rolebinding.go
@@ -38,19 +38,34 @@ type RoleBindingInformer interface {
}
type roleBindingInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewRoleBindingInformer constructs a new informer for RoleBinding type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewRoleBindingInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredRoleBindingInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredRoleBindingInformer constructs a new informer for RoleBinding type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredRoleBindingInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Rbac().RoleBindings(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Rbac().RoleBindings(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewRoleBindingInformer(client internalclientset.Interface, namespace string
)
}
-func defaultRoleBindingInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewRoleBindingInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *roleBindingInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredRoleBindingInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *roleBindingInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&rbac.RoleBinding{}, defaultRoleBindingInformer)
+ return f.factory.InformerFor(&rbac.RoleBinding{}, f.defaultInformer)
}
func (f *roleBindingInformer) Lister() internalversion.RoleBindingLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/scheduling/interface.go b/pkg/client/informers/informers_generated/internalversion/scheduling/interface.go
index 3fb2db10b1..54b493e237 100644
--- a/pkg/client/informers/informers_generated/internalversion/scheduling/interface.go
+++ b/pkg/client/informers/informers_generated/internalversion/scheduling/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// InternalVersion returns a new internalversion.Interface.
func (g *group) InternalVersion() internalversion.Interface {
- return internalversion.New(g.SharedInformerFactory)
+ return internalversion.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/pkg/client/informers/informers_generated/internalversion/scheduling/internalversion/interface.go b/pkg/client/informers/informers_generated/internalversion/scheduling/internalversion/interface.go
index fe670796c4..37dd2d17d9 100644
--- a/pkg/client/informers/informers_generated/internalversion/scheduling/internalversion/interface.go
+++ b/pkg/client/informers/informers_generated/internalversion/scheduling/internalversion/interface.go
@@ -29,15 +29,17 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// PriorityClasses returns a PriorityClassInformer.
func (v *version) PriorityClasses() PriorityClassInformer {
- return &priorityClassInformer{factory: v.SharedInformerFactory}
+ return &priorityClassInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
diff --git a/pkg/client/informers/informers_generated/internalversion/scheduling/internalversion/priorityclass.go b/pkg/client/informers/informers_generated/internalversion/scheduling/internalversion/priorityclass.go
index 551ba23b2e..68600f23b5 100644
--- a/pkg/client/informers/informers_generated/internalversion/scheduling/internalversion/priorityclass.go
+++ b/pkg/client/informers/informers_generated/internalversion/scheduling/internalversion/priorityclass.go
@@ -38,19 +38,33 @@ type PriorityClassInformer interface {
}
type priorityClassInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewPriorityClassInformer constructs a new informer for PriorityClass type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewPriorityClassInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredPriorityClassInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredPriorityClassInformer constructs a new informer for PriorityClass type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredPriorityClassInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Scheduling().PriorityClasses().List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Scheduling().PriorityClasses().Watch(options)
},
},
@@ -60,12 +74,12 @@ func NewPriorityClassInformer(client internalclientset.Interface, resyncPeriod t
)
}
-func defaultPriorityClassInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewPriorityClassInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *priorityClassInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredPriorityClassInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *priorityClassInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&scheduling.PriorityClass{}, defaultPriorityClassInformer)
+ return f.factory.InformerFor(&scheduling.PriorityClass{}, f.defaultInformer)
}
func (f *priorityClassInformer) Lister() internalversion.PriorityClassLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/settings/interface.go b/pkg/client/informers/informers_generated/internalversion/settings/interface.go
index 2c4321439a..6683fbdf54 100644
--- a/pkg/client/informers/informers_generated/internalversion/settings/interface.go
+++ b/pkg/client/informers/informers_generated/internalversion/settings/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// InternalVersion returns a new internalversion.Interface.
func (g *group) InternalVersion() internalversion.Interface {
- return internalversion.New(g.SharedInformerFactory)
+ return internalversion.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/pkg/client/informers/informers_generated/internalversion/settings/internalversion/interface.go b/pkg/client/informers/informers_generated/internalversion/settings/internalversion/interface.go
index d8f7c34186..679c8a2d56 100644
--- a/pkg/client/informers/informers_generated/internalversion/settings/internalversion/interface.go
+++ b/pkg/client/informers/informers_generated/internalversion/settings/internalversion/interface.go
@@ -29,15 +29,17 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// PodPresets returns a PodPresetInformer.
func (v *version) PodPresets() PodPresetInformer {
- return &podPresetInformer{factory: v.SharedInformerFactory}
+ return &podPresetInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/pkg/client/informers/informers_generated/internalversion/settings/internalversion/podpreset.go b/pkg/client/informers/informers_generated/internalversion/settings/internalversion/podpreset.go
index df812b4219..5ecfe1e6d0 100644
--- a/pkg/client/informers/informers_generated/internalversion/settings/internalversion/podpreset.go
+++ b/pkg/client/informers/informers_generated/internalversion/settings/internalversion/podpreset.go
@@ -38,19 +38,34 @@ type PodPresetInformer interface {
}
type podPresetInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewPodPresetInformer constructs a new informer for PodPreset type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewPodPresetInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredPodPresetInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredPodPresetInformer constructs a new informer for PodPreset type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredPodPresetInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Settings().PodPresets(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Settings().PodPresets(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewPodPresetInformer(client internalclientset.Interface, namespace string,
)
}
-func defaultPodPresetInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewPodPresetInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *podPresetInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredPodPresetInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *podPresetInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&settings.PodPreset{}, defaultPodPresetInformer)
+ return f.factory.InformerFor(&settings.PodPreset{}, f.defaultInformer)
}
func (f *podPresetInformer) Lister() internalversion.PodPresetLister {
diff --git a/pkg/client/informers/informers_generated/internalversion/storage/interface.go b/pkg/client/informers/informers_generated/internalversion/storage/interface.go
index d4f366fed7..01c55b1b6a 100644
--- a/pkg/client/informers/informers_generated/internalversion/storage/interface.go
+++ b/pkg/client/informers/informers_generated/internalversion/storage/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// InternalVersion returns a new internalversion.Interface.
func (g *group) InternalVersion() internalversion.Interface {
- return internalversion.New(g.SharedInformerFactory)
+ return internalversion.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/pkg/client/informers/informers_generated/internalversion/storage/internalversion/interface.go b/pkg/client/informers/informers_generated/internalversion/storage/internalversion/interface.go
index 86cf367635..d88d2983dc 100644
--- a/pkg/client/informers/informers_generated/internalversion/storage/internalversion/interface.go
+++ b/pkg/client/informers/informers_generated/internalversion/storage/internalversion/interface.go
@@ -29,15 +29,17 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// StorageClasses returns a StorageClassInformer.
func (v *version) StorageClasses() StorageClassInformer {
- return &storageClassInformer{factory: v.SharedInformerFactory}
+ return &storageClassInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
diff --git a/pkg/client/informers/informers_generated/internalversion/storage/internalversion/storageclass.go b/pkg/client/informers/informers_generated/internalversion/storage/internalversion/storageclass.go
index eb7761a80a..01e9326278 100644
--- a/pkg/client/informers/informers_generated/internalversion/storage/internalversion/storageclass.go
+++ b/pkg/client/informers/informers_generated/internalversion/storage/internalversion/storageclass.go
@@ -38,19 +38,33 @@ type StorageClassInformer interface {
}
type storageClassInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewStorageClassInformer constructs a new informer for StorageClass type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewStorageClassInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredStorageClassInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredStorageClassInformer constructs a new informer for StorageClass type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredStorageClassInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Storage().StorageClasses().List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Storage().StorageClasses().Watch(options)
},
},
@@ -60,12 +74,12 @@ func NewStorageClassInformer(client internalclientset.Interface, resyncPeriod ti
)
}
-func defaultStorageClassInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewStorageClassInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *storageClassInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredStorageClassInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *storageClassInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&storage.StorageClass{}, defaultStorageClassInformer)
+ return f.factory.InformerFor(&storage.StorageClass{}, f.defaultInformer)
}
func (f *storageClassInformer) Lister() internalversion.StorageClassLister {
diff --git a/pkg/client/listers/admissionregistration/internalversion/BUILD b/pkg/client/listers/admissionregistration/internalversion/BUILD
index 455a1cff69..1afdec477e 100644
--- a/pkg/client/listers/admissionregistration/internalversion/BUILD
+++ b/pkg/client/listers/admissionregistration/internalversion/BUILD
@@ -9,8 +9,9 @@ go_library(
name = "go_default_library",
srcs = [
"expansion_generated.go",
- "externaladmissionhookconfiguration.go",
"initializerconfiguration.go",
+ "mutatingwebhookconfiguration.go",
+ "validatingwebhookconfiguration.go",
],
importpath = "k8s.io/kubernetes/pkg/client/listers/admissionregistration/internalversion",
deps = [
diff --git a/pkg/client/listers/admissionregistration/internalversion/expansion_generated.go b/pkg/client/listers/admissionregistration/internalversion/expansion_generated.go
index 278e929fb4..366db3d774 100644
--- a/pkg/client/listers/admissionregistration/internalversion/expansion_generated.go
+++ b/pkg/client/listers/admissionregistration/internalversion/expansion_generated.go
@@ -18,10 +18,14 @@ limitations under the License.
package internalversion
-// ExternalAdmissionHookConfigurationListerExpansion allows custom methods to be added to
-// ExternalAdmissionHookConfigurationLister.
-type ExternalAdmissionHookConfigurationListerExpansion interface{}
-
// InitializerConfigurationListerExpansion allows custom methods to be added to
// InitializerConfigurationLister.
type InitializerConfigurationListerExpansion interface{}
+
+// MutatingWebhookConfigurationListerExpansion allows custom methods to be added to
+// MutatingWebhookConfigurationLister.
+type MutatingWebhookConfigurationListerExpansion interface{}
+
+// ValidatingWebhookConfigurationListerExpansion allows custom methods to be added to
+// ValidatingWebhookConfigurationLister.
+type ValidatingWebhookConfigurationListerExpansion interface{}
diff --git a/pkg/client/listers/admissionregistration/internalversion/externaladmissionhookconfiguration.go b/pkg/client/listers/admissionregistration/internalversion/externaladmissionhookconfiguration.go
deleted file mode 100644
index b9145988d9..0000000000
--- a/pkg/client/listers/admissionregistration/internalversion/externaladmissionhookconfiguration.go
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
-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.
-*/
-
-// This file was automatically generated by lister-gen
-
-package internalversion
-
-import (
- "k8s.io/apimachinery/pkg/api/errors"
- "k8s.io/apimachinery/pkg/labels"
- "k8s.io/client-go/tools/cache"
- admissionregistration "k8s.io/kubernetes/pkg/apis/admissionregistration"
-)
-
-// ExternalAdmissionHookConfigurationLister helps list ExternalAdmissionHookConfigurations.
-type ExternalAdmissionHookConfigurationLister interface {
- // List lists all ExternalAdmissionHookConfigurations in the indexer.
- List(selector labels.Selector) (ret []*admissionregistration.ExternalAdmissionHookConfiguration, err error)
- // Get retrieves the ExternalAdmissionHookConfiguration from the index for a given name.
- Get(name string) (*admissionregistration.ExternalAdmissionHookConfiguration, error)
- ExternalAdmissionHookConfigurationListerExpansion
-}
-
-// externalAdmissionHookConfigurationLister implements the ExternalAdmissionHookConfigurationLister interface.
-type externalAdmissionHookConfigurationLister struct {
- indexer cache.Indexer
-}
-
-// NewExternalAdmissionHookConfigurationLister returns a new ExternalAdmissionHookConfigurationLister.
-func NewExternalAdmissionHookConfigurationLister(indexer cache.Indexer) ExternalAdmissionHookConfigurationLister {
- return &externalAdmissionHookConfigurationLister{indexer: indexer}
-}
-
-// List lists all ExternalAdmissionHookConfigurations in the indexer.
-func (s *externalAdmissionHookConfigurationLister) List(selector labels.Selector) (ret []*admissionregistration.ExternalAdmissionHookConfiguration, err error) {
- err = cache.ListAll(s.indexer, selector, func(m interface{}) {
- ret = append(ret, m.(*admissionregistration.ExternalAdmissionHookConfiguration))
- })
- return ret, err
-}
-
-// Get retrieves the ExternalAdmissionHookConfiguration from the index for a given name.
-func (s *externalAdmissionHookConfigurationLister) Get(name string) (*admissionregistration.ExternalAdmissionHookConfiguration, error) {
- obj, exists, err := s.indexer.GetByKey(name)
- if err != nil {
- return nil, err
- }
- if !exists {
- return nil, errors.NewNotFound(admissionregistration.Resource("externaladmissionhookconfiguration"), name)
- }
- return obj.(*admissionregistration.ExternalAdmissionHookConfiguration), nil
-}
diff --git a/pkg/client/listers/admissionregistration/internalversion/mutatingwebhookconfiguration.go b/pkg/client/listers/admissionregistration/internalversion/mutatingwebhookconfiguration.go
new file mode 100644
index 0000000000..31fcbdba72
--- /dev/null
+++ b/pkg/client/listers/admissionregistration/internalversion/mutatingwebhookconfiguration.go
@@ -0,0 +1,65 @@
+/*
+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.
+*/
+
+// This file was automatically generated by lister-gen
+
+package internalversion
+
+import (
+ "k8s.io/apimachinery/pkg/api/errors"
+ "k8s.io/apimachinery/pkg/labels"
+ "k8s.io/client-go/tools/cache"
+ admissionregistration "k8s.io/kubernetes/pkg/apis/admissionregistration"
+)
+
+// MutatingWebhookConfigurationLister helps list MutatingWebhookConfigurations.
+type MutatingWebhookConfigurationLister interface {
+ // List lists all MutatingWebhookConfigurations in the indexer.
+ List(selector labels.Selector) (ret []*admissionregistration.MutatingWebhookConfiguration, err error)
+ // Get retrieves the MutatingWebhookConfiguration from the index for a given name.
+ Get(name string) (*admissionregistration.MutatingWebhookConfiguration, error)
+ MutatingWebhookConfigurationListerExpansion
+}
+
+// mutatingWebhookConfigurationLister implements the MutatingWebhookConfigurationLister interface.
+type mutatingWebhookConfigurationLister struct {
+ indexer cache.Indexer
+}
+
+// NewMutatingWebhookConfigurationLister returns a new MutatingWebhookConfigurationLister.
+func NewMutatingWebhookConfigurationLister(indexer cache.Indexer) MutatingWebhookConfigurationLister {
+ return &mutatingWebhookConfigurationLister{indexer: indexer}
+}
+
+// List lists all MutatingWebhookConfigurations in the indexer.
+func (s *mutatingWebhookConfigurationLister) List(selector labels.Selector) (ret []*admissionregistration.MutatingWebhookConfiguration, err error) {
+ err = cache.ListAll(s.indexer, selector, func(m interface{}) {
+ ret = append(ret, m.(*admissionregistration.MutatingWebhookConfiguration))
+ })
+ return ret, err
+}
+
+// Get retrieves the MutatingWebhookConfiguration from the index for a given name.
+func (s *mutatingWebhookConfigurationLister) Get(name string) (*admissionregistration.MutatingWebhookConfiguration, error) {
+ obj, exists, err := s.indexer.GetByKey(name)
+ if err != nil {
+ return nil, err
+ }
+ if !exists {
+ return nil, errors.NewNotFound(admissionregistration.Resource("mutatingwebhookconfiguration"), name)
+ }
+ return obj.(*admissionregistration.MutatingWebhookConfiguration), nil
+}
diff --git a/pkg/client/listers/admissionregistration/internalversion/validatingwebhookconfiguration.go b/pkg/client/listers/admissionregistration/internalversion/validatingwebhookconfiguration.go
new file mode 100644
index 0000000000..9b4693584f
--- /dev/null
+++ b/pkg/client/listers/admissionregistration/internalversion/validatingwebhookconfiguration.go
@@ -0,0 +1,65 @@
+/*
+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.
+*/
+
+// This file was automatically generated by lister-gen
+
+package internalversion
+
+import (
+ "k8s.io/apimachinery/pkg/api/errors"
+ "k8s.io/apimachinery/pkg/labels"
+ "k8s.io/client-go/tools/cache"
+ admissionregistration "k8s.io/kubernetes/pkg/apis/admissionregistration"
+)
+
+// ValidatingWebhookConfigurationLister helps list ValidatingWebhookConfigurations.
+type ValidatingWebhookConfigurationLister interface {
+ // List lists all ValidatingWebhookConfigurations in the indexer.
+ List(selector labels.Selector) (ret []*admissionregistration.ValidatingWebhookConfiguration, err error)
+ // Get retrieves the ValidatingWebhookConfiguration from the index for a given name.
+ Get(name string) (*admissionregistration.ValidatingWebhookConfiguration, error)
+ ValidatingWebhookConfigurationListerExpansion
+}
+
+// validatingWebhookConfigurationLister implements the ValidatingWebhookConfigurationLister interface.
+type validatingWebhookConfigurationLister struct {
+ indexer cache.Indexer
+}
+
+// NewValidatingWebhookConfigurationLister returns a new ValidatingWebhookConfigurationLister.
+func NewValidatingWebhookConfigurationLister(indexer cache.Indexer) ValidatingWebhookConfigurationLister {
+ return &validatingWebhookConfigurationLister{indexer: indexer}
+}
+
+// List lists all ValidatingWebhookConfigurations in the indexer.
+func (s *validatingWebhookConfigurationLister) List(selector labels.Selector) (ret []*admissionregistration.ValidatingWebhookConfiguration, err error) {
+ err = cache.ListAll(s.indexer, selector, func(m interface{}) {
+ ret = append(ret, m.(*admissionregistration.ValidatingWebhookConfiguration))
+ })
+ return ret, err
+}
+
+// Get retrieves the ValidatingWebhookConfiguration from the index for a given name.
+func (s *validatingWebhookConfigurationLister) Get(name string) (*admissionregistration.ValidatingWebhookConfiguration, error) {
+ obj, exists, err := s.indexer.GetByKey(name)
+ if err != nil {
+ return nil, err
+ }
+ if !exists {
+ return nil, errors.NewNotFound(admissionregistration.Resource("validatingwebhookconfiguration"), name)
+ }
+ return obj.(*admissionregistration.ValidatingWebhookConfiguration), nil
+}
diff --git a/pkg/client/listers/apis/admissionregistration/BUILD b/pkg/client/listers/apis/admissionregistration/BUILD
new file mode 100644
index 0000000000..abefdf365c
--- /dev/null
+++ b/pkg/client/listers/apis/admissionregistration/BUILD
@@ -0,0 +1,31 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library")
+
+go_library(
+ name = "go_default_library",
+ srcs = [
+ "expansion_generated.go",
+ "initializerconfiguration.go",
+ ],
+ importpath = "k8s.io/kubernetes/pkg/client/listers/apis/admissionregistration",
+ visibility = ["//visibility:public"],
+ deps = [
+ "//pkg/apis/admissionregistration:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
+ "//vendor/k8s.io/client-go/tools/cache:go_default_library",
+ ],
+)
+
+filegroup(
+ name = "package-srcs",
+ srcs = glob(["**"]),
+ tags = ["automanaged"],
+ visibility = ["//visibility:private"],
+)
+
+filegroup(
+ name = "all-srcs",
+ srcs = [":package-srcs"],
+ tags = ["automanaged"],
+ visibility = ["//visibility:public"],
+)
diff --git a/pkg/client/listers/apis/admissionregistration/expansion_generated.go b/pkg/client/listers/apis/admissionregistration/expansion_generated.go
new file mode 100644
index 0000000000..8142f2712b
--- /dev/null
+++ b/pkg/client/listers/apis/admissionregistration/expansion_generated.go
@@ -0,0 +1,27 @@
+/*
+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.
+*/
+
+// This file was automatically generated by lister-gen
+
+package admissionregistration
+
+// InitializerConfigurationListerExpansion allows custom methods to be added to
+// InitializerConfigurationLister.
+type InitializerConfigurationListerExpansion interface{}
+
+// ValidatingWebhookConfigurationListerExpansion allows custom methods to be added to
+// ValidatingWebhookConfigurationLister.
+type ValidatingWebhookConfigurationListerExpansion interface{}
diff --git a/pkg/client/listers/apis/admissionregistration/initializerconfiguration.go b/pkg/client/listers/apis/admissionregistration/initializerconfiguration.go
new file mode 100644
index 0000000000..a935f624ef
--- /dev/null
+++ b/pkg/client/listers/apis/admissionregistration/initializerconfiguration.go
@@ -0,0 +1,65 @@
+/*
+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.
+*/
+
+// This file was automatically generated by lister-gen
+
+package admissionregistration
+
+import (
+ "k8s.io/apimachinery/pkg/api/errors"
+ "k8s.io/apimachinery/pkg/labels"
+ "k8s.io/client-go/tools/cache"
+ admissionregistration "k8s.io/kubernetes/pkg/apis/admissionregistration"
+)
+
+// InitializerConfigurationLister helps list InitializerConfigurations.
+type InitializerConfigurationLister interface {
+ // List lists all InitializerConfigurations in the indexer.
+ List(selector labels.Selector) (ret []*admissionregistration.InitializerConfiguration, err error)
+ // Get retrieves the InitializerConfiguration from the index for a given name.
+ Get(name string) (*admissionregistration.InitializerConfiguration, error)
+ InitializerConfigurationListerExpansion
+}
+
+// initializerConfigurationLister implements the InitializerConfigurationLister interface.
+type initializerConfigurationLister struct {
+ indexer cache.Indexer
+}
+
+// NewInitializerConfigurationLister returns a new InitializerConfigurationLister.
+func NewInitializerConfigurationLister(indexer cache.Indexer) InitializerConfigurationLister {
+ return &initializerConfigurationLister{indexer: indexer}
+}
+
+// List lists all InitializerConfigurations in the indexer.
+func (s *initializerConfigurationLister) List(selector labels.Selector) (ret []*admissionregistration.InitializerConfiguration, err error) {
+ err = cache.ListAll(s.indexer, selector, func(m interface{}) {
+ ret = append(ret, m.(*admissionregistration.InitializerConfiguration))
+ })
+ return ret, err
+}
+
+// Get retrieves the InitializerConfiguration from the index for a given name.
+func (s *initializerConfigurationLister) Get(name string) (*admissionregistration.InitializerConfiguration, error) {
+ obj, exists, err := s.indexer.GetByKey(name)
+ if err != nil {
+ return nil, err
+ }
+ if !exists {
+ return nil, errors.NewNotFound(admissionregistration.Resource("initializerconfiguration"), name)
+ }
+ return obj.(*admissionregistration.InitializerConfiguration), nil
+}
diff --git a/pkg/client/listers/apps/internalversion/BUILD b/pkg/client/listers/apps/internalversion/BUILD
index bd5e13960c..73334dd2e1 100644
--- a/pkg/client/listers/apps/internalversion/BUILD
+++ b/pkg/client/listers/apps/internalversion/BUILD
@@ -15,8 +15,8 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/client/listers/apps/internalversion",
deps = [
- "//pkg/api:go_default_library",
"//pkg/apis/apps:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
diff --git a/pkg/client/listers/apps/internalversion/statefulset_expansion.go b/pkg/client/listers/apps/internalversion/statefulset_expansion.go
index c98c700b43..8798f7249b 100644
--- a/pkg/client/listers/apps/internalversion/statefulset_expansion.go
+++ b/pkg/client/listers/apps/internalversion/statefulset_expansion.go
@@ -21,8 +21,8 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/apps"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// StatefulSetListerExpansion allows custom methods to be added to
diff --git a/pkg/client/listers/batch/internalversion/BUILD b/pkg/client/listers/batch/internalversion/BUILD
index 1d09a95123..1f0b207995 100644
--- a/pkg/client/listers/batch/internalversion/BUILD
+++ b/pkg/client/listers/batch/internalversion/BUILD
@@ -16,8 +16,8 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/client/listers/batch/internalversion",
deps = [
- "//pkg/api:go_default_library",
"//pkg/apis/batch:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
@@ -31,8 +31,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/client/listers/batch/internalversion",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/apis/batch:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
diff --git a/pkg/client/listers/batch/internalversion/job_expansion.go b/pkg/client/listers/batch/internalversion/job_expansion.go
index 1687f88198..083453d90f 100644
--- a/pkg/client/listers/batch/internalversion/job_expansion.go
+++ b/pkg/client/listers/batch/internalversion/job_expansion.go
@@ -21,8 +21,8 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/batch"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// JobListerExpansion allows custom methods to be added to
diff --git a/pkg/client/listers/batch/internalversion/job_test.go b/pkg/client/listers/batch/internalversion/job_test.go
index c478593452..b4c60de3e9 100644
--- a/pkg/client/listers/batch/internalversion/job_test.go
+++ b/pkg/client/listers/batch/internalversion/job_test.go
@@ -23,8 +23,8 @@ import (
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/client-go/tools/cache"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/batch"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func TestJobLister(t *testing.T) {
diff --git a/pkg/client/listers/core/internalversion/BUILD b/pkg/client/listers/core/internalversion/BUILD
index 4d3837bb18..8daff542f4 100644
--- a/pkg/client/listers/core/internalversion/BUILD
+++ b/pkg/client/listers/core/internalversion/BUILD
@@ -31,7 +31,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/client/listers/core/internalversion",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
diff --git a/pkg/client/listers/core/internalversion/componentstatus.go b/pkg/client/listers/core/internalversion/componentstatus.go
index 7e560ba709..0be8bc557d 100644
--- a/pkg/client/listers/core/internalversion/componentstatus.go
+++ b/pkg/client/listers/core/internalversion/componentstatus.go
@@ -22,15 +22,15 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// ComponentStatusLister helps list ComponentStatuses.
type ComponentStatusLister interface {
// List lists all ComponentStatuses in the indexer.
- List(selector labels.Selector) (ret []*api.ComponentStatus, err error)
+ List(selector labels.Selector) (ret []*core.ComponentStatus, err error)
// Get retrieves the ComponentStatus from the index for a given name.
- Get(name string) (*api.ComponentStatus, error)
+ Get(name string) (*core.ComponentStatus, error)
ComponentStatusListerExpansion
}
@@ -45,21 +45,21 @@ func NewComponentStatusLister(indexer cache.Indexer) ComponentStatusLister {
}
// List lists all ComponentStatuses in the indexer.
-func (s *componentStatusLister) List(selector labels.Selector) (ret []*api.ComponentStatus, err error) {
+func (s *componentStatusLister) List(selector labels.Selector) (ret []*core.ComponentStatus, err error) {
err = cache.ListAll(s.indexer, selector, func(m interface{}) {
- ret = append(ret, m.(*api.ComponentStatus))
+ ret = append(ret, m.(*core.ComponentStatus))
})
return ret, err
}
// Get retrieves the ComponentStatus from the index for a given name.
-func (s *componentStatusLister) Get(name string) (*api.ComponentStatus, error) {
+func (s *componentStatusLister) Get(name string) (*core.ComponentStatus, error) {
obj, exists, err := s.indexer.GetByKey(name)
if err != nil {
return nil, err
}
if !exists {
- return nil, errors.NewNotFound(api.Resource("componentstatus"), name)
+ return nil, errors.NewNotFound(core.Resource("componentstatus"), name)
}
- return obj.(*api.ComponentStatus), nil
+ return obj.(*core.ComponentStatus), nil
}
diff --git a/pkg/client/listers/core/internalversion/configmap.go b/pkg/client/listers/core/internalversion/configmap.go
index 373447625c..539a9751d4 100644
--- a/pkg/client/listers/core/internalversion/configmap.go
+++ b/pkg/client/listers/core/internalversion/configmap.go
@@ -22,13 +22,13 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// ConfigMapLister helps list ConfigMaps.
type ConfigMapLister interface {
// List lists all ConfigMaps in the indexer.
- List(selector labels.Selector) (ret []*api.ConfigMap, err error)
+ List(selector labels.Selector) (ret []*core.ConfigMap, err error)
// ConfigMaps returns an object that can list and get ConfigMaps.
ConfigMaps(namespace string) ConfigMapNamespaceLister
ConfigMapListerExpansion
@@ -45,9 +45,9 @@ func NewConfigMapLister(indexer cache.Indexer) ConfigMapLister {
}
// List lists all ConfigMaps in the indexer.
-func (s *configMapLister) List(selector labels.Selector) (ret []*api.ConfigMap, err error) {
+func (s *configMapLister) List(selector labels.Selector) (ret []*core.ConfigMap, err error) {
err = cache.ListAll(s.indexer, selector, func(m interface{}) {
- ret = append(ret, m.(*api.ConfigMap))
+ ret = append(ret, m.(*core.ConfigMap))
})
return ret, err
}
@@ -60,9 +60,9 @@ func (s *configMapLister) ConfigMaps(namespace string) ConfigMapNamespaceLister
// ConfigMapNamespaceLister helps list and get ConfigMaps.
type ConfigMapNamespaceLister interface {
// List lists all ConfigMaps in the indexer for a given namespace.
- List(selector labels.Selector) (ret []*api.ConfigMap, err error)
+ List(selector labels.Selector) (ret []*core.ConfigMap, err error)
// Get retrieves the ConfigMap from the indexer for a given namespace and name.
- Get(name string) (*api.ConfigMap, error)
+ Get(name string) (*core.ConfigMap, error)
ConfigMapNamespaceListerExpansion
}
@@ -74,21 +74,21 @@ type configMapNamespaceLister struct {
}
// List lists all ConfigMaps in the indexer for a given namespace.
-func (s configMapNamespaceLister) List(selector labels.Selector) (ret []*api.ConfigMap, err error) {
+func (s configMapNamespaceLister) List(selector labels.Selector) (ret []*core.ConfigMap, err error) {
err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
- ret = append(ret, m.(*api.ConfigMap))
+ ret = append(ret, m.(*core.ConfigMap))
})
return ret, err
}
// Get retrieves the ConfigMap from the indexer for a given namespace and name.
-func (s configMapNamespaceLister) Get(name string) (*api.ConfigMap, error) {
+func (s configMapNamespaceLister) Get(name string) (*core.ConfigMap, error) {
obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
if err != nil {
return nil, err
}
if !exists {
- return nil, errors.NewNotFound(api.Resource("configmap"), name)
+ return nil, errors.NewNotFound(core.Resource("configmap"), name)
}
- return obj.(*api.ConfigMap), nil
+ return obj.(*core.ConfigMap), nil
}
diff --git a/pkg/client/listers/core/internalversion/endpoints.go b/pkg/client/listers/core/internalversion/endpoints.go
index efea139faa..a65c98b0bb 100644
--- a/pkg/client/listers/core/internalversion/endpoints.go
+++ b/pkg/client/listers/core/internalversion/endpoints.go
@@ -22,13 +22,13 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// EndpointsLister helps list Endpoints.
type EndpointsLister interface {
// List lists all Endpoints in the indexer.
- List(selector labels.Selector) (ret []*api.Endpoints, err error)
+ List(selector labels.Selector) (ret []*core.Endpoints, err error)
// Endpoints returns an object that can list and get Endpoints.
Endpoints(namespace string) EndpointsNamespaceLister
EndpointsListerExpansion
@@ -45,9 +45,9 @@ func NewEndpointsLister(indexer cache.Indexer) EndpointsLister {
}
// List lists all Endpoints in the indexer.
-func (s *endpointsLister) List(selector labels.Selector) (ret []*api.Endpoints, err error) {
+func (s *endpointsLister) List(selector labels.Selector) (ret []*core.Endpoints, err error) {
err = cache.ListAll(s.indexer, selector, func(m interface{}) {
- ret = append(ret, m.(*api.Endpoints))
+ ret = append(ret, m.(*core.Endpoints))
})
return ret, err
}
@@ -60,9 +60,9 @@ func (s *endpointsLister) Endpoints(namespace string) EndpointsNamespaceLister {
// EndpointsNamespaceLister helps list and get Endpoints.
type EndpointsNamespaceLister interface {
// List lists all Endpoints in the indexer for a given namespace.
- List(selector labels.Selector) (ret []*api.Endpoints, err error)
+ List(selector labels.Selector) (ret []*core.Endpoints, err error)
// Get retrieves the Endpoints from the indexer for a given namespace and name.
- Get(name string) (*api.Endpoints, error)
+ Get(name string) (*core.Endpoints, error)
EndpointsNamespaceListerExpansion
}
@@ -74,21 +74,21 @@ type endpointsNamespaceLister struct {
}
// List lists all Endpoints in the indexer for a given namespace.
-func (s endpointsNamespaceLister) List(selector labels.Selector) (ret []*api.Endpoints, err error) {
+func (s endpointsNamespaceLister) List(selector labels.Selector) (ret []*core.Endpoints, err error) {
err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
- ret = append(ret, m.(*api.Endpoints))
+ ret = append(ret, m.(*core.Endpoints))
})
return ret, err
}
// Get retrieves the Endpoints from the indexer for a given namespace and name.
-func (s endpointsNamespaceLister) Get(name string) (*api.Endpoints, error) {
+func (s endpointsNamespaceLister) Get(name string) (*core.Endpoints, error) {
obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
if err != nil {
return nil, err
}
if !exists {
- return nil, errors.NewNotFound(api.Resource("endpoints"), name)
+ return nil, errors.NewNotFound(core.Resource("endpoints"), name)
}
- return obj.(*api.Endpoints), nil
+ return obj.(*core.Endpoints), nil
}
diff --git a/pkg/client/listers/core/internalversion/event.go b/pkg/client/listers/core/internalversion/event.go
index e66ec202a2..2c04cd1ddd 100644
--- a/pkg/client/listers/core/internalversion/event.go
+++ b/pkg/client/listers/core/internalversion/event.go
@@ -22,13 +22,13 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// EventLister helps list Events.
type EventLister interface {
// List lists all Events in the indexer.
- List(selector labels.Selector) (ret []*api.Event, err error)
+ List(selector labels.Selector) (ret []*core.Event, err error)
// Events returns an object that can list and get Events.
Events(namespace string) EventNamespaceLister
EventListerExpansion
@@ -45,9 +45,9 @@ func NewEventLister(indexer cache.Indexer) EventLister {
}
// List lists all Events in the indexer.
-func (s *eventLister) List(selector labels.Selector) (ret []*api.Event, err error) {
+func (s *eventLister) List(selector labels.Selector) (ret []*core.Event, err error) {
err = cache.ListAll(s.indexer, selector, func(m interface{}) {
- ret = append(ret, m.(*api.Event))
+ ret = append(ret, m.(*core.Event))
})
return ret, err
}
@@ -60,9 +60,9 @@ func (s *eventLister) Events(namespace string) EventNamespaceLister {
// EventNamespaceLister helps list and get Events.
type EventNamespaceLister interface {
// List lists all Events in the indexer for a given namespace.
- List(selector labels.Selector) (ret []*api.Event, err error)
+ List(selector labels.Selector) (ret []*core.Event, err error)
// Get retrieves the Event from the indexer for a given namespace and name.
- Get(name string) (*api.Event, error)
+ Get(name string) (*core.Event, error)
EventNamespaceListerExpansion
}
@@ -74,21 +74,21 @@ type eventNamespaceLister struct {
}
// List lists all Events in the indexer for a given namespace.
-func (s eventNamespaceLister) List(selector labels.Selector) (ret []*api.Event, err error) {
+func (s eventNamespaceLister) List(selector labels.Selector) (ret []*core.Event, err error) {
err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
- ret = append(ret, m.(*api.Event))
+ ret = append(ret, m.(*core.Event))
})
return ret, err
}
// Get retrieves the Event from the indexer for a given namespace and name.
-func (s eventNamespaceLister) Get(name string) (*api.Event, error) {
+func (s eventNamespaceLister) Get(name string) (*core.Event, error) {
obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
if err != nil {
return nil, err
}
if !exists {
- return nil, errors.NewNotFound(api.Resource("event"), name)
+ return nil, errors.NewNotFound(core.Resource("event"), name)
}
- return obj.(*api.Event), nil
+ return obj.(*core.Event), nil
}
diff --git a/pkg/client/listers/core/internalversion/limitrange.go b/pkg/client/listers/core/internalversion/limitrange.go
index 1fa3bea66b..92bcf032e0 100644
--- a/pkg/client/listers/core/internalversion/limitrange.go
+++ b/pkg/client/listers/core/internalversion/limitrange.go
@@ -22,13 +22,13 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// LimitRangeLister helps list LimitRanges.
type LimitRangeLister interface {
// List lists all LimitRanges in the indexer.
- List(selector labels.Selector) (ret []*api.LimitRange, err error)
+ List(selector labels.Selector) (ret []*core.LimitRange, err error)
// LimitRanges returns an object that can list and get LimitRanges.
LimitRanges(namespace string) LimitRangeNamespaceLister
LimitRangeListerExpansion
@@ -45,9 +45,9 @@ func NewLimitRangeLister(indexer cache.Indexer) LimitRangeLister {
}
// List lists all LimitRanges in the indexer.
-func (s *limitRangeLister) List(selector labels.Selector) (ret []*api.LimitRange, err error) {
+func (s *limitRangeLister) List(selector labels.Selector) (ret []*core.LimitRange, err error) {
err = cache.ListAll(s.indexer, selector, func(m interface{}) {
- ret = append(ret, m.(*api.LimitRange))
+ ret = append(ret, m.(*core.LimitRange))
})
return ret, err
}
@@ -60,9 +60,9 @@ func (s *limitRangeLister) LimitRanges(namespace string) LimitRangeNamespaceList
// LimitRangeNamespaceLister helps list and get LimitRanges.
type LimitRangeNamespaceLister interface {
// List lists all LimitRanges in the indexer for a given namespace.
- List(selector labels.Selector) (ret []*api.LimitRange, err error)
+ List(selector labels.Selector) (ret []*core.LimitRange, err error)
// Get retrieves the LimitRange from the indexer for a given namespace and name.
- Get(name string) (*api.LimitRange, error)
+ Get(name string) (*core.LimitRange, error)
LimitRangeNamespaceListerExpansion
}
@@ -74,21 +74,21 @@ type limitRangeNamespaceLister struct {
}
// List lists all LimitRanges in the indexer for a given namespace.
-func (s limitRangeNamespaceLister) List(selector labels.Selector) (ret []*api.LimitRange, err error) {
+func (s limitRangeNamespaceLister) List(selector labels.Selector) (ret []*core.LimitRange, err error) {
err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
- ret = append(ret, m.(*api.LimitRange))
+ ret = append(ret, m.(*core.LimitRange))
})
return ret, err
}
// Get retrieves the LimitRange from the indexer for a given namespace and name.
-func (s limitRangeNamespaceLister) Get(name string) (*api.LimitRange, error) {
+func (s limitRangeNamespaceLister) Get(name string) (*core.LimitRange, error) {
obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
if err != nil {
return nil, err
}
if !exists {
- return nil, errors.NewNotFound(api.Resource("limitrange"), name)
+ return nil, errors.NewNotFound(core.Resource("limitrange"), name)
}
- return obj.(*api.LimitRange), nil
+ return obj.(*core.LimitRange), nil
}
diff --git a/pkg/client/listers/core/internalversion/namespace.go b/pkg/client/listers/core/internalversion/namespace.go
index 2f5933a6f5..a429b48a61 100644
--- a/pkg/client/listers/core/internalversion/namespace.go
+++ b/pkg/client/listers/core/internalversion/namespace.go
@@ -22,15 +22,15 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// NamespaceLister helps list Namespaces.
type NamespaceLister interface {
// List lists all Namespaces in the indexer.
- List(selector labels.Selector) (ret []*api.Namespace, err error)
+ List(selector labels.Selector) (ret []*core.Namespace, err error)
// Get retrieves the Namespace from the index for a given name.
- Get(name string) (*api.Namespace, error)
+ Get(name string) (*core.Namespace, error)
NamespaceListerExpansion
}
@@ -45,21 +45,21 @@ func NewNamespaceLister(indexer cache.Indexer) NamespaceLister {
}
// List lists all Namespaces in the indexer.
-func (s *namespaceLister) List(selector labels.Selector) (ret []*api.Namespace, err error) {
+func (s *namespaceLister) List(selector labels.Selector) (ret []*core.Namespace, err error) {
err = cache.ListAll(s.indexer, selector, func(m interface{}) {
- ret = append(ret, m.(*api.Namespace))
+ ret = append(ret, m.(*core.Namespace))
})
return ret, err
}
// Get retrieves the Namespace from the index for a given name.
-func (s *namespaceLister) Get(name string) (*api.Namespace, error) {
+func (s *namespaceLister) Get(name string) (*core.Namespace, error) {
obj, exists, err := s.indexer.GetByKey(name)
if err != nil {
return nil, err
}
if !exists {
- return nil, errors.NewNotFound(api.Resource("namespace"), name)
+ return nil, errors.NewNotFound(core.Resource("namespace"), name)
}
- return obj.(*api.Namespace), nil
+ return obj.(*core.Namespace), nil
}
diff --git a/pkg/client/listers/core/internalversion/node.go b/pkg/client/listers/core/internalversion/node.go
index 8625fbc5f2..e722b0fe65 100644
--- a/pkg/client/listers/core/internalversion/node.go
+++ b/pkg/client/listers/core/internalversion/node.go
@@ -22,15 +22,15 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// NodeLister helps list Nodes.
type NodeLister interface {
// List lists all Nodes in the indexer.
- List(selector labels.Selector) (ret []*api.Node, err error)
+ List(selector labels.Selector) (ret []*core.Node, err error)
// Get retrieves the Node from the index for a given name.
- Get(name string) (*api.Node, error)
+ Get(name string) (*core.Node, error)
NodeListerExpansion
}
@@ -45,21 +45,21 @@ func NewNodeLister(indexer cache.Indexer) NodeLister {
}
// List lists all Nodes in the indexer.
-func (s *nodeLister) List(selector labels.Selector) (ret []*api.Node, err error) {
+func (s *nodeLister) List(selector labels.Selector) (ret []*core.Node, err error) {
err = cache.ListAll(s.indexer, selector, func(m interface{}) {
- ret = append(ret, m.(*api.Node))
+ ret = append(ret, m.(*core.Node))
})
return ret, err
}
// Get retrieves the Node from the index for a given name.
-func (s *nodeLister) Get(name string) (*api.Node, error) {
+func (s *nodeLister) Get(name string) (*core.Node, error) {
obj, exists, err := s.indexer.GetByKey(name)
if err != nil {
return nil, err
}
if !exists {
- return nil, errors.NewNotFound(api.Resource("node"), name)
+ return nil, errors.NewNotFound(core.Resource("node"), name)
}
- return obj.(*api.Node), nil
+ return obj.(*core.Node), nil
}
diff --git a/pkg/client/listers/core/internalversion/node_expansion.go b/pkg/client/listers/core/internalversion/node_expansion.go
index 465c59e3ba..3abca2d58e 100644
--- a/pkg/client/listers/core/internalversion/node_expansion.go
+++ b/pkg/client/listers/core/internalversion/node_expansion.go
@@ -18,7 +18,7 @@ package internalversion
import (
"k8s.io/apimachinery/pkg/labels"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// NodeConditionPredicate is a function that indicates whether the given node's conditions meet
diff --git a/pkg/client/listers/core/internalversion/persistentvolume.go b/pkg/client/listers/core/internalversion/persistentvolume.go
index 808af1e9ef..e5b0f7fff0 100644
--- a/pkg/client/listers/core/internalversion/persistentvolume.go
+++ b/pkg/client/listers/core/internalversion/persistentvolume.go
@@ -22,15 +22,15 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// PersistentVolumeLister helps list PersistentVolumes.
type PersistentVolumeLister interface {
// List lists all PersistentVolumes in the indexer.
- List(selector labels.Selector) (ret []*api.PersistentVolume, err error)
+ List(selector labels.Selector) (ret []*core.PersistentVolume, err error)
// Get retrieves the PersistentVolume from the index for a given name.
- Get(name string) (*api.PersistentVolume, error)
+ Get(name string) (*core.PersistentVolume, error)
PersistentVolumeListerExpansion
}
@@ -45,21 +45,21 @@ func NewPersistentVolumeLister(indexer cache.Indexer) PersistentVolumeLister {
}
// List lists all PersistentVolumes in the indexer.
-func (s *persistentVolumeLister) List(selector labels.Selector) (ret []*api.PersistentVolume, err error) {
+func (s *persistentVolumeLister) List(selector labels.Selector) (ret []*core.PersistentVolume, err error) {
err = cache.ListAll(s.indexer, selector, func(m interface{}) {
- ret = append(ret, m.(*api.PersistentVolume))
+ ret = append(ret, m.(*core.PersistentVolume))
})
return ret, err
}
// Get retrieves the PersistentVolume from the index for a given name.
-func (s *persistentVolumeLister) Get(name string) (*api.PersistentVolume, error) {
+func (s *persistentVolumeLister) Get(name string) (*core.PersistentVolume, error) {
obj, exists, err := s.indexer.GetByKey(name)
if err != nil {
return nil, err
}
if !exists {
- return nil, errors.NewNotFound(api.Resource("persistentvolume"), name)
+ return nil, errors.NewNotFound(core.Resource("persistentvolume"), name)
}
- return obj.(*api.PersistentVolume), nil
+ return obj.(*core.PersistentVolume), nil
}
diff --git a/pkg/client/listers/core/internalversion/persistentvolumeclaim.go b/pkg/client/listers/core/internalversion/persistentvolumeclaim.go
index f2e482269e..bfd54a63f8 100644
--- a/pkg/client/listers/core/internalversion/persistentvolumeclaim.go
+++ b/pkg/client/listers/core/internalversion/persistentvolumeclaim.go
@@ -22,13 +22,13 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// PersistentVolumeClaimLister helps list PersistentVolumeClaims.
type PersistentVolumeClaimLister interface {
// List lists all PersistentVolumeClaims in the indexer.
- List(selector labels.Selector) (ret []*api.PersistentVolumeClaim, err error)
+ List(selector labels.Selector) (ret []*core.PersistentVolumeClaim, err error)
// PersistentVolumeClaims returns an object that can list and get PersistentVolumeClaims.
PersistentVolumeClaims(namespace string) PersistentVolumeClaimNamespaceLister
PersistentVolumeClaimListerExpansion
@@ -45,9 +45,9 @@ func NewPersistentVolumeClaimLister(indexer cache.Indexer) PersistentVolumeClaim
}
// List lists all PersistentVolumeClaims in the indexer.
-func (s *persistentVolumeClaimLister) List(selector labels.Selector) (ret []*api.PersistentVolumeClaim, err error) {
+func (s *persistentVolumeClaimLister) List(selector labels.Selector) (ret []*core.PersistentVolumeClaim, err error) {
err = cache.ListAll(s.indexer, selector, func(m interface{}) {
- ret = append(ret, m.(*api.PersistentVolumeClaim))
+ ret = append(ret, m.(*core.PersistentVolumeClaim))
})
return ret, err
}
@@ -60,9 +60,9 @@ func (s *persistentVolumeClaimLister) PersistentVolumeClaims(namespace string) P
// PersistentVolumeClaimNamespaceLister helps list and get PersistentVolumeClaims.
type PersistentVolumeClaimNamespaceLister interface {
// List lists all PersistentVolumeClaims in the indexer for a given namespace.
- List(selector labels.Selector) (ret []*api.PersistentVolumeClaim, err error)
+ List(selector labels.Selector) (ret []*core.PersistentVolumeClaim, err error)
// Get retrieves the PersistentVolumeClaim from the indexer for a given namespace and name.
- Get(name string) (*api.PersistentVolumeClaim, error)
+ Get(name string) (*core.PersistentVolumeClaim, error)
PersistentVolumeClaimNamespaceListerExpansion
}
@@ -74,21 +74,21 @@ type persistentVolumeClaimNamespaceLister struct {
}
// List lists all PersistentVolumeClaims in the indexer for a given namespace.
-func (s persistentVolumeClaimNamespaceLister) List(selector labels.Selector) (ret []*api.PersistentVolumeClaim, err error) {
+func (s persistentVolumeClaimNamespaceLister) List(selector labels.Selector) (ret []*core.PersistentVolumeClaim, err error) {
err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
- ret = append(ret, m.(*api.PersistentVolumeClaim))
+ ret = append(ret, m.(*core.PersistentVolumeClaim))
})
return ret, err
}
// Get retrieves the PersistentVolumeClaim from the indexer for a given namespace and name.
-func (s persistentVolumeClaimNamespaceLister) Get(name string) (*api.PersistentVolumeClaim, error) {
+func (s persistentVolumeClaimNamespaceLister) Get(name string) (*core.PersistentVolumeClaim, error) {
obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
if err != nil {
return nil, err
}
if !exists {
- return nil, errors.NewNotFound(api.Resource("persistentvolumeclaim"), name)
+ return nil, errors.NewNotFound(core.Resource("persistentvolumeclaim"), name)
}
- return obj.(*api.PersistentVolumeClaim), nil
+ return obj.(*core.PersistentVolumeClaim), nil
}
diff --git a/pkg/client/listers/core/internalversion/pod.go b/pkg/client/listers/core/internalversion/pod.go
index 2785db1c55..c89ae6f208 100644
--- a/pkg/client/listers/core/internalversion/pod.go
+++ b/pkg/client/listers/core/internalversion/pod.go
@@ -22,13 +22,13 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// PodLister helps list Pods.
type PodLister interface {
// List lists all Pods in the indexer.
- List(selector labels.Selector) (ret []*api.Pod, err error)
+ List(selector labels.Selector) (ret []*core.Pod, err error)
// Pods returns an object that can list and get Pods.
Pods(namespace string) PodNamespaceLister
PodListerExpansion
@@ -45,9 +45,9 @@ func NewPodLister(indexer cache.Indexer) PodLister {
}
// List lists all Pods in the indexer.
-func (s *podLister) List(selector labels.Selector) (ret []*api.Pod, err error) {
+func (s *podLister) List(selector labels.Selector) (ret []*core.Pod, err error) {
err = cache.ListAll(s.indexer, selector, func(m interface{}) {
- ret = append(ret, m.(*api.Pod))
+ ret = append(ret, m.(*core.Pod))
})
return ret, err
}
@@ -60,9 +60,9 @@ func (s *podLister) Pods(namespace string) PodNamespaceLister {
// PodNamespaceLister helps list and get Pods.
type PodNamespaceLister interface {
// List lists all Pods in the indexer for a given namespace.
- List(selector labels.Selector) (ret []*api.Pod, err error)
+ List(selector labels.Selector) (ret []*core.Pod, err error)
// Get retrieves the Pod from the indexer for a given namespace and name.
- Get(name string) (*api.Pod, error)
+ Get(name string) (*core.Pod, error)
PodNamespaceListerExpansion
}
@@ -74,21 +74,21 @@ type podNamespaceLister struct {
}
// List lists all Pods in the indexer for a given namespace.
-func (s podNamespaceLister) List(selector labels.Selector) (ret []*api.Pod, err error) {
+func (s podNamespaceLister) List(selector labels.Selector) (ret []*core.Pod, err error) {
err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
- ret = append(ret, m.(*api.Pod))
+ ret = append(ret, m.(*core.Pod))
})
return ret, err
}
// Get retrieves the Pod from the indexer for a given namespace and name.
-func (s podNamespaceLister) Get(name string) (*api.Pod, error) {
+func (s podNamespaceLister) Get(name string) (*core.Pod, error) {
obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
if err != nil {
return nil, err
}
if !exists {
- return nil, errors.NewNotFound(api.Resource("pod"), name)
+ return nil, errors.NewNotFound(core.Resource("pod"), name)
}
- return obj.(*api.Pod), nil
+ return obj.(*core.Pod), nil
}
diff --git a/pkg/client/listers/core/internalversion/podtemplate.go b/pkg/client/listers/core/internalversion/podtemplate.go
index becc584855..ec83433143 100644
--- a/pkg/client/listers/core/internalversion/podtemplate.go
+++ b/pkg/client/listers/core/internalversion/podtemplate.go
@@ -22,13 +22,13 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// PodTemplateLister helps list PodTemplates.
type PodTemplateLister interface {
// List lists all PodTemplates in the indexer.
- List(selector labels.Selector) (ret []*api.PodTemplate, err error)
+ List(selector labels.Selector) (ret []*core.PodTemplate, err error)
// PodTemplates returns an object that can list and get PodTemplates.
PodTemplates(namespace string) PodTemplateNamespaceLister
PodTemplateListerExpansion
@@ -45,9 +45,9 @@ func NewPodTemplateLister(indexer cache.Indexer) PodTemplateLister {
}
// List lists all PodTemplates in the indexer.
-func (s *podTemplateLister) List(selector labels.Selector) (ret []*api.PodTemplate, err error) {
+func (s *podTemplateLister) List(selector labels.Selector) (ret []*core.PodTemplate, err error) {
err = cache.ListAll(s.indexer, selector, func(m interface{}) {
- ret = append(ret, m.(*api.PodTemplate))
+ ret = append(ret, m.(*core.PodTemplate))
})
return ret, err
}
@@ -60,9 +60,9 @@ func (s *podTemplateLister) PodTemplates(namespace string) PodTemplateNamespaceL
// PodTemplateNamespaceLister helps list and get PodTemplates.
type PodTemplateNamespaceLister interface {
// List lists all PodTemplates in the indexer for a given namespace.
- List(selector labels.Selector) (ret []*api.PodTemplate, err error)
+ List(selector labels.Selector) (ret []*core.PodTemplate, err error)
// Get retrieves the PodTemplate from the indexer for a given namespace and name.
- Get(name string) (*api.PodTemplate, error)
+ Get(name string) (*core.PodTemplate, error)
PodTemplateNamespaceListerExpansion
}
@@ -74,21 +74,21 @@ type podTemplateNamespaceLister struct {
}
// List lists all PodTemplates in the indexer for a given namespace.
-func (s podTemplateNamespaceLister) List(selector labels.Selector) (ret []*api.PodTemplate, err error) {
+func (s podTemplateNamespaceLister) List(selector labels.Selector) (ret []*core.PodTemplate, err error) {
err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
- ret = append(ret, m.(*api.PodTemplate))
+ ret = append(ret, m.(*core.PodTemplate))
})
return ret, err
}
// Get retrieves the PodTemplate from the indexer for a given namespace and name.
-func (s podTemplateNamespaceLister) Get(name string) (*api.PodTemplate, error) {
+func (s podTemplateNamespaceLister) Get(name string) (*core.PodTemplate, error) {
obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
if err != nil {
return nil, err
}
if !exists {
- return nil, errors.NewNotFound(api.Resource("podtemplate"), name)
+ return nil, errors.NewNotFound(core.Resource("podtemplate"), name)
}
- return obj.(*api.PodTemplate), nil
+ return obj.(*core.PodTemplate), nil
}
diff --git a/pkg/client/listers/core/internalversion/replicationcontroller.go b/pkg/client/listers/core/internalversion/replicationcontroller.go
index b9728c249e..77cf24677f 100644
--- a/pkg/client/listers/core/internalversion/replicationcontroller.go
+++ b/pkg/client/listers/core/internalversion/replicationcontroller.go
@@ -22,13 +22,13 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// ReplicationControllerLister helps list ReplicationControllers.
type ReplicationControllerLister interface {
// List lists all ReplicationControllers in the indexer.
- List(selector labels.Selector) (ret []*api.ReplicationController, err error)
+ List(selector labels.Selector) (ret []*core.ReplicationController, err error)
// ReplicationControllers returns an object that can list and get ReplicationControllers.
ReplicationControllers(namespace string) ReplicationControllerNamespaceLister
ReplicationControllerListerExpansion
@@ -45,9 +45,9 @@ func NewReplicationControllerLister(indexer cache.Indexer) ReplicationController
}
// List lists all ReplicationControllers in the indexer.
-func (s *replicationControllerLister) List(selector labels.Selector) (ret []*api.ReplicationController, err error) {
+func (s *replicationControllerLister) List(selector labels.Selector) (ret []*core.ReplicationController, err error) {
err = cache.ListAll(s.indexer, selector, func(m interface{}) {
- ret = append(ret, m.(*api.ReplicationController))
+ ret = append(ret, m.(*core.ReplicationController))
})
return ret, err
}
@@ -60,9 +60,9 @@ func (s *replicationControllerLister) ReplicationControllers(namespace string) R
// ReplicationControllerNamespaceLister helps list and get ReplicationControllers.
type ReplicationControllerNamespaceLister interface {
// List lists all ReplicationControllers in the indexer for a given namespace.
- List(selector labels.Selector) (ret []*api.ReplicationController, err error)
+ List(selector labels.Selector) (ret []*core.ReplicationController, err error)
// Get retrieves the ReplicationController from the indexer for a given namespace and name.
- Get(name string) (*api.ReplicationController, error)
+ Get(name string) (*core.ReplicationController, error)
ReplicationControllerNamespaceListerExpansion
}
@@ -74,21 +74,21 @@ type replicationControllerNamespaceLister struct {
}
// List lists all ReplicationControllers in the indexer for a given namespace.
-func (s replicationControllerNamespaceLister) List(selector labels.Selector) (ret []*api.ReplicationController, err error) {
+func (s replicationControllerNamespaceLister) List(selector labels.Selector) (ret []*core.ReplicationController, err error) {
err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
- ret = append(ret, m.(*api.ReplicationController))
+ ret = append(ret, m.(*core.ReplicationController))
})
return ret, err
}
// Get retrieves the ReplicationController from the indexer for a given namespace and name.
-func (s replicationControllerNamespaceLister) Get(name string) (*api.ReplicationController, error) {
+func (s replicationControllerNamespaceLister) Get(name string) (*core.ReplicationController, error) {
obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
if err != nil {
return nil, err
}
if !exists {
- return nil, errors.NewNotFound(api.Resource("replicationcontroller"), name)
+ return nil, errors.NewNotFound(core.Resource("replicationcontroller"), name)
}
- return obj.(*api.ReplicationController), nil
+ return obj.(*core.ReplicationController), nil
}
diff --git a/pkg/client/listers/core/internalversion/replicationcontroller_expansion.go b/pkg/client/listers/core/internalversion/replicationcontroller_expansion.go
index c08d38d2d8..bd9029160d 100644
--- a/pkg/client/listers/core/internalversion/replicationcontroller_expansion.go
+++ b/pkg/client/listers/core/internalversion/replicationcontroller_expansion.go
@@ -20,7 +20,7 @@ import (
"fmt"
"k8s.io/apimachinery/pkg/labels"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// ReplicationControllerListerExpansion allows custom methods to be added to
diff --git a/pkg/client/listers/core/internalversion/resourcequota.go b/pkg/client/listers/core/internalversion/resourcequota.go
index d0015df76e..2b695099be 100644
--- a/pkg/client/listers/core/internalversion/resourcequota.go
+++ b/pkg/client/listers/core/internalversion/resourcequota.go
@@ -22,13 +22,13 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// ResourceQuotaLister helps list ResourceQuotas.
type ResourceQuotaLister interface {
// List lists all ResourceQuotas in the indexer.
- List(selector labels.Selector) (ret []*api.ResourceQuota, err error)
+ List(selector labels.Selector) (ret []*core.ResourceQuota, err error)
// ResourceQuotas returns an object that can list and get ResourceQuotas.
ResourceQuotas(namespace string) ResourceQuotaNamespaceLister
ResourceQuotaListerExpansion
@@ -45,9 +45,9 @@ func NewResourceQuotaLister(indexer cache.Indexer) ResourceQuotaLister {
}
// List lists all ResourceQuotas in the indexer.
-func (s *resourceQuotaLister) List(selector labels.Selector) (ret []*api.ResourceQuota, err error) {
+func (s *resourceQuotaLister) List(selector labels.Selector) (ret []*core.ResourceQuota, err error) {
err = cache.ListAll(s.indexer, selector, func(m interface{}) {
- ret = append(ret, m.(*api.ResourceQuota))
+ ret = append(ret, m.(*core.ResourceQuota))
})
return ret, err
}
@@ -60,9 +60,9 @@ func (s *resourceQuotaLister) ResourceQuotas(namespace string) ResourceQuotaName
// ResourceQuotaNamespaceLister helps list and get ResourceQuotas.
type ResourceQuotaNamespaceLister interface {
// List lists all ResourceQuotas in the indexer for a given namespace.
- List(selector labels.Selector) (ret []*api.ResourceQuota, err error)
+ List(selector labels.Selector) (ret []*core.ResourceQuota, err error)
// Get retrieves the ResourceQuota from the indexer for a given namespace and name.
- Get(name string) (*api.ResourceQuota, error)
+ Get(name string) (*core.ResourceQuota, error)
ResourceQuotaNamespaceListerExpansion
}
@@ -74,21 +74,21 @@ type resourceQuotaNamespaceLister struct {
}
// List lists all ResourceQuotas in the indexer for a given namespace.
-func (s resourceQuotaNamespaceLister) List(selector labels.Selector) (ret []*api.ResourceQuota, err error) {
+func (s resourceQuotaNamespaceLister) List(selector labels.Selector) (ret []*core.ResourceQuota, err error) {
err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
- ret = append(ret, m.(*api.ResourceQuota))
+ ret = append(ret, m.(*core.ResourceQuota))
})
return ret, err
}
// Get retrieves the ResourceQuota from the indexer for a given namespace and name.
-func (s resourceQuotaNamespaceLister) Get(name string) (*api.ResourceQuota, error) {
+func (s resourceQuotaNamespaceLister) Get(name string) (*core.ResourceQuota, error) {
obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
if err != nil {
return nil, err
}
if !exists {
- return nil, errors.NewNotFound(api.Resource("resourcequota"), name)
+ return nil, errors.NewNotFound(core.Resource("resourcequota"), name)
}
- return obj.(*api.ResourceQuota), nil
+ return obj.(*core.ResourceQuota), nil
}
diff --git a/pkg/client/listers/core/internalversion/secret.go b/pkg/client/listers/core/internalversion/secret.go
index 820fc42197..e5585d9e0d 100644
--- a/pkg/client/listers/core/internalversion/secret.go
+++ b/pkg/client/listers/core/internalversion/secret.go
@@ -22,13 +22,13 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// SecretLister helps list Secrets.
type SecretLister interface {
// List lists all Secrets in the indexer.
- List(selector labels.Selector) (ret []*api.Secret, err error)
+ List(selector labels.Selector) (ret []*core.Secret, err error)
// Secrets returns an object that can list and get Secrets.
Secrets(namespace string) SecretNamespaceLister
SecretListerExpansion
@@ -45,9 +45,9 @@ func NewSecretLister(indexer cache.Indexer) SecretLister {
}
// List lists all Secrets in the indexer.
-func (s *secretLister) List(selector labels.Selector) (ret []*api.Secret, err error) {
+func (s *secretLister) List(selector labels.Selector) (ret []*core.Secret, err error) {
err = cache.ListAll(s.indexer, selector, func(m interface{}) {
- ret = append(ret, m.(*api.Secret))
+ ret = append(ret, m.(*core.Secret))
})
return ret, err
}
@@ -60,9 +60,9 @@ func (s *secretLister) Secrets(namespace string) SecretNamespaceLister {
// SecretNamespaceLister helps list and get Secrets.
type SecretNamespaceLister interface {
// List lists all Secrets in the indexer for a given namespace.
- List(selector labels.Selector) (ret []*api.Secret, err error)
+ List(selector labels.Selector) (ret []*core.Secret, err error)
// Get retrieves the Secret from the indexer for a given namespace and name.
- Get(name string) (*api.Secret, error)
+ Get(name string) (*core.Secret, error)
SecretNamespaceListerExpansion
}
@@ -74,21 +74,21 @@ type secretNamespaceLister struct {
}
// List lists all Secrets in the indexer for a given namespace.
-func (s secretNamespaceLister) List(selector labels.Selector) (ret []*api.Secret, err error) {
+func (s secretNamespaceLister) List(selector labels.Selector) (ret []*core.Secret, err error) {
err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
- ret = append(ret, m.(*api.Secret))
+ ret = append(ret, m.(*core.Secret))
})
return ret, err
}
// Get retrieves the Secret from the indexer for a given namespace and name.
-func (s secretNamespaceLister) Get(name string) (*api.Secret, error) {
+func (s secretNamespaceLister) Get(name string) (*core.Secret, error) {
obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
if err != nil {
return nil, err
}
if !exists {
- return nil, errors.NewNotFound(api.Resource("secret"), name)
+ return nil, errors.NewNotFound(core.Resource("secret"), name)
}
- return obj.(*api.Secret), nil
+ return obj.(*core.Secret), nil
}
diff --git a/pkg/client/listers/core/internalversion/service.go b/pkg/client/listers/core/internalversion/service.go
index 06afb1b504..34f3d7747f 100644
--- a/pkg/client/listers/core/internalversion/service.go
+++ b/pkg/client/listers/core/internalversion/service.go
@@ -22,13 +22,13 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// ServiceLister helps list Services.
type ServiceLister interface {
// List lists all Services in the indexer.
- List(selector labels.Selector) (ret []*api.Service, err error)
+ List(selector labels.Selector) (ret []*core.Service, err error)
// Services returns an object that can list and get Services.
Services(namespace string) ServiceNamespaceLister
ServiceListerExpansion
@@ -45,9 +45,9 @@ func NewServiceLister(indexer cache.Indexer) ServiceLister {
}
// List lists all Services in the indexer.
-func (s *serviceLister) List(selector labels.Selector) (ret []*api.Service, err error) {
+func (s *serviceLister) List(selector labels.Selector) (ret []*core.Service, err error) {
err = cache.ListAll(s.indexer, selector, func(m interface{}) {
- ret = append(ret, m.(*api.Service))
+ ret = append(ret, m.(*core.Service))
})
return ret, err
}
@@ -60,9 +60,9 @@ func (s *serviceLister) Services(namespace string) ServiceNamespaceLister {
// ServiceNamespaceLister helps list and get Services.
type ServiceNamespaceLister interface {
// List lists all Services in the indexer for a given namespace.
- List(selector labels.Selector) (ret []*api.Service, err error)
+ List(selector labels.Selector) (ret []*core.Service, err error)
// Get retrieves the Service from the indexer for a given namespace and name.
- Get(name string) (*api.Service, error)
+ Get(name string) (*core.Service, error)
ServiceNamespaceListerExpansion
}
@@ -74,21 +74,21 @@ type serviceNamespaceLister struct {
}
// List lists all Services in the indexer for a given namespace.
-func (s serviceNamespaceLister) List(selector labels.Selector) (ret []*api.Service, err error) {
+func (s serviceNamespaceLister) List(selector labels.Selector) (ret []*core.Service, err error) {
err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
- ret = append(ret, m.(*api.Service))
+ ret = append(ret, m.(*core.Service))
})
return ret, err
}
// Get retrieves the Service from the indexer for a given namespace and name.
-func (s serviceNamespaceLister) Get(name string) (*api.Service, error) {
+func (s serviceNamespaceLister) Get(name string) (*core.Service, error) {
obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
if err != nil {
return nil, err
}
if !exists {
- return nil, errors.NewNotFound(api.Resource("service"), name)
+ return nil, errors.NewNotFound(core.Resource("service"), name)
}
- return obj.(*api.Service), nil
+ return obj.(*core.Service), nil
}
diff --git a/pkg/client/listers/core/internalversion/service_expansion.go b/pkg/client/listers/core/internalversion/service_expansion.go
index 1bbc89c5c7..6a951cabfd 100644
--- a/pkg/client/listers/core/internalversion/service_expansion.go
+++ b/pkg/client/listers/core/internalversion/service_expansion.go
@@ -18,7 +18,7 @@ package internalversion
import (
"k8s.io/apimachinery/pkg/labels"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// ServiceListerExpansion allows custom methods to be added to
diff --git a/pkg/client/listers/core/internalversion/serviceaccount.go b/pkg/client/listers/core/internalversion/serviceaccount.go
index 5b07ee039f..59a0e8aef7 100644
--- a/pkg/client/listers/core/internalversion/serviceaccount.go
+++ b/pkg/client/listers/core/internalversion/serviceaccount.go
@@ -22,13 +22,13 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/client-go/tools/cache"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
// ServiceAccountLister helps list ServiceAccounts.
type ServiceAccountLister interface {
// List lists all ServiceAccounts in the indexer.
- List(selector labels.Selector) (ret []*api.ServiceAccount, err error)
+ List(selector labels.Selector) (ret []*core.ServiceAccount, err error)
// ServiceAccounts returns an object that can list and get ServiceAccounts.
ServiceAccounts(namespace string) ServiceAccountNamespaceLister
ServiceAccountListerExpansion
@@ -45,9 +45,9 @@ func NewServiceAccountLister(indexer cache.Indexer) ServiceAccountLister {
}
// List lists all ServiceAccounts in the indexer.
-func (s *serviceAccountLister) List(selector labels.Selector) (ret []*api.ServiceAccount, err error) {
+func (s *serviceAccountLister) List(selector labels.Selector) (ret []*core.ServiceAccount, err error) {
err = cache.ListAll(s.indexer, selector, func(m interface{}) {
- ret = append(ret, m.(*api.ServiceAccount))
+ ret = append(ret, m.(*core.ServiceAccount))
})
return ret, err
}
@@ -60,9 +60,9 @@ func (s *serviceAccountLister) ServiceAccounts(namespace string) ServiceAccountN
// ServiceAccountNamespaceLister helps list and get ServiceAccounts.
type ServiceAccountNamespaceLister interface {
// List lists all ServiceAccounts in the indexer for a given namespace.
- List(selector labels.Selector) (ret []*api.ServiceAccount, err error)
+ List(selector labels.Selector) (ret []*core.ServiceAccount, err error)
// Get retrieves the ServiceAccount from the indexer for a given namespace and name.
- Get(name string) (*api.ServiceAccount, error)
+ Get(name string) (*core.ServiceAccount, error)
ServiceAccountNamespaceListerExpansion
}
@@ -74,21 +74,21 @@ type serviceAccountNamespaceLister struct {
}
// List lists all ServiceAccounts in the indexer for a given namespace.
-func (s serviceAccountNamespaceLister) List(selector labels.Selector) (ret []*api.ServiceAccount, err error) {
+func (s serviceAccountNamespaceLister) List(selector labels.Selector) (ret []*core.ServiceAccount, err error) {
err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
- ret = append(ret, m.(*api.ServiceAccount))
+ ret = append(ret, m.(*core.ServiceAccount))
})
return ret, err
}
// Get retrieves the ServiceAccount from the indexer for a given namespace and name.
-func (s serviceAccountNamespaceLister) Get(name string) (*api.ServiceAccount, error) {
+func (s serviceAccountNamespaceLister) Get(name string) (*core.ServiceAccount, error) {
obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
if err != nil {
return nil, err
}
if !exists {
- return nil, errors.NewNotFound(api.Resource("serviceaccount"), name)
+ return nil, errors.NewNotFound(core.Resource("serviceaccount"), name)
}
- return obj.(*api.ServiceAccount), nil
+ return obj.(*core.ServiceAccount), nil
}
diff --git a/pkg/client/listers/extensions/internalversion/BUILD b/pkg/client/listers/extensions/internalversion/BUILD
index e1405b5b7d..2e76730a7c 100644
--- a/pkg/client/listers/extensions/internalversion/BUILD
+++ b/pkg/client/listers/extensions/internalversion/BUILD
@@ -18,11 +18,10 @@ go_library(
"podsecuritypolicy.go",
"replicaset.go",
"replicaset_expansion.go",
- "scale.go",
],
importpath = "k8s.io/kubernetes/pkg/client/listers/extensions/internalversion",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
@@ -50,7 +49,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/client/listers/extensions/internalversion",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
diff --git a/pkg/client/listers/extensions/internalversion/daemonset_expansion.go b/pkg/client/listers/extensions/internalversion/daemonset_expansion.go
index d6c55ec49a..dd9eee7431 100644
--- a/pkg/client/listers/extensions/internalversion/daemonset_expansion.go
+++ b/pkg/client/listers/extensions/internalversion/daemonset_expansion.go
@@ -21,7 +21,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
)
diff --git a/pkg/client/listers/extensions/internalversion/daemonset_expansion_test.go b/pkg/client/listers/extensions/internalversion/daemonset_expansion_test.go
index b3a596c07e..2455b5271a 100644
--- a/pkg/client/listers/extensions/internalversion/daemonset_expansion_test.go
+++ b/pkg/client/listers/extensions/internalversion/daemonset_expansion_test.go
@@ -23,7 +23,7 @@ import (
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/client-go/tools/cache"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
)
diff --git a/pkg/client/listers/extensions/internalversion/expansion_generated.go b/pkg/client/listers/extensions/internalversion/expansion_generated.go
index 41b4c2b07c..1872c99f04 100644
--- a/pkg/client/listers/extensions/internalversion/expansion_generated.go
+++ b/pkg/client/listers/extensions/internalversion/expansion_generated.go
@@ -29,11 +29,3 @@ type IngressNamespaceListerExpansion interface{}
// PodSecurityPolicyListerExpansion allows custom methods to be added to
// PodSecurityPolicyLister.
type PodSecurityPolicyListerExpansion interface{}
-
-// ScaleListerExpansion allows custom methods to be added to
-// ScaleLister.
-type ScaleListerExpansion interface{}
-
-// ScaleNamespaceListerExpansion allows custom methods to be added to
-// ScaleNamespaceLister.
-type ScaleNamespaceListerExpansion interface{}
diff --git a/pkg/client/listers/extensions/internalversion/replicaset_expansion.go b/pkg/client/listers/extensions/internalversion/replicaset_expansion.go
index 44808306b4..3b3cfc361f 100644
--- a/pkg/client/listers/extensions/internalversion/replicaset_expansion.go
+++ b/pkg/client/listers/extensions/internalversion/replicaset_expansion.go
@@ -21,7 +21,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
)
diff --git a/pkg/client/listers/extensions/internalversion/scale.go b/pkg/client/listers/extensions/internalversion/scale.go
deleted file mode 100644
index b33c2a156f..0000000000
--- a/pkg/client/listers/extensions/internalversion/scale.go
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
-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.
-*/
-
-// This file was automatically generated by lister-gen
-
-package internalversion
-
-import (
- "k8s.io/apimachinery/pkg/api/errors"
- "k8s.io/apimachinery/pkg/labels"
- "k8s.io/client-go/tools/cache"
- extensions "k8s.io/kubernetes/pkg/apis/extensions"
-)
-
-// ScaleLister helps list Scales.
-type ScaleLister interface {
- // List lists all Scales in the indexer.
- List(selector labels.Selector) (ret []*extensions.Scale, err error)
- // Scales returns an object that can list and get Scales.
- Scales(namespace string) ScaleNamespaceLister
- ScaleListerExpansion
-}
-
-// scaleLister implements the ScaleLister interface.
-type scaleLister struct {
- indexer cache.Indexer
-}
-
-// NewScaleLister returns a new ScaleLister.
-func NewScaleLister(indexer cache.Indexer) ScaleLister {
- return &scaleLister{indexer: indexer}
-}
-
-// List lists all Scales in the indexer.
-func (s *scaleLister) List(selector labels.Selector) (ret []*extensions.Scale, err error) {
- err = cache.ListAll(s.indexer, selector, func(m interface{}) {
- ret = append(ret, m.(*extensions.Scale))
- })
- return ret, err
-}
-
-// Scales returns an object that can list and get Scales.
-func (s *scaleLister) Scales(namespace string) ScaleNamespaceLister {
- return scaleNamespaceLister{indexer: s.indexer, namespace: namespace}
-}
-
-// ScaleNamespaceLister helps list and get Scales.
-type ScaleNamespaceLister interface {
- // List lists all Scales in the indexer for a given namespace.
- List(selector labels.Selector) (ret []*extensions.Scale, err error)
- // Get retrieves the Scale from the indexer for a given namespace and name.
- Get(name string) (*extensions.Scale, error)
- ScaleNamespaceListerExpansion
-}
-
-// scaleNamespaceLister implements the ScaleNamespaceLister
-// interface.
-type scaleNamespaceLister struct {
- indexer cache.Indexer
- namespace string
-}
-
-// List lists all Scales in the indexer for a given namespace.
-func (s scaleNamespaceLister) List(selector labels.Selector) (ret []*extensions.Scale, err error) {
- err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
- ret = append(ret, m.(*extensions.Scale))
- })
- return ret, err
-}
-
-// Get retrieves the Scale from the indexer for a given namespace and name.
-func (s scaleNamespaceLister) Get(name string) (*extensions.Scale, error) {
- obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
- if err != nil {
- return nil, err
- }
- if !exists {
- return nil, errors.NewNotFound(extensions.Resource("scale"), name)
- }
- return obj.(*extensions.Scale), nil
-}
diff --git a/pkg/client/listers/policy/internalversion/BUILD b/pkg/client/listers/policy/internalversion/BUILD
index 26f5cfc146..c120deb3b4 100644
--- a/pkg/client/listers/policy/internalversion/BUILD
+++ b/pkg/client/listers/policy/internalversion/BUILD
@@ -15,7 +15,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/client/listers/policy/internalversion",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/policy:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
diff --git a/pkg/client/listers/policy/internalversion/poddisruptionbudget_expansion.go b/pkg/client/listers/policy/internalversion/poddisruptionbudget_expansion.go
index 025358920f..fcbc88bc8d 100644
--- a/pkg/client/listers/policy/internalversion/poddisruptionbudget_expansion.go
+++ b/pkg/client/listers/policy/internalversion/poddisruptionbudget_expansion.go
@@ -22,7 +22,7 @@ import (
"github.com/golang/glog"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/policy"
)
diff --git a/pkg/client/tests/BUILD b/pkg/client/tests/BUILD
index 401b34d93f..cf7b507475 100644
--- a/pkg/client/tests/BUILD
+++ b/pkg/client/tests/BUILD
@@ -17,10 +17,10 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/client/tests",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/install:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/clientset_generated/internalclientset/fake:go_default_library",
"//pkg/kubelet/server/portforward:go_default_library",
diff --git a/pkg/client/tests/fake_client_test.go b/pkg/client/tests/fake_client_test.go
index 25b3dc03de..731e334e76 100644
--- a/pkg/client/tests/fake_client_test.go
+++ b/pkg/client/tests/fake_client_test.go
@@ -20,10 +20,10 @@ import (
"testing"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
clientsetfake "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
- _ "k8s.io/kubernetes/pkg/api/install"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
)
func TestFakeClientSetFiltering(t *testing.T) {
diff --git a/pkg/client/tests/remotecommand_test.go b/pkg/client/tests/remotecommand_test.go
index 6ea8a96ecb..71d3be8fee 100644
--- a/pkg/client/tests/remotecommand_test.go
+++ b/pkg/client/tests/remotecommand_test.go
@@ -38,8 +38,8 @@ import (
restclient "k8s.io/client-go/rest"
remoteclient "k8s.io/client-go/tools/remotecommand"
"k8s.io/client-go/transport/spdy"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testapi"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/kubelet/server/remotecommand"
)
diff --git a/pkg/client/unversioned/BUILD b/pkg/client/unversioned/BUILD
index cde792c138..4ed4a551f1 100644
--- a/pkg/client/unversioned/BUILD
+++ b/pkg/client/unversioned/BUILD
@@ -14,11 +14,11 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/client/unversioned",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/pod:go_default_library",
"//pkg/apis/apps:go_default_library",
"//pkg/apis/batch:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/apps/internalversion:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/batch/internalversion:go_default_library",
@@ -40,9 +40,9 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/client/unversioned",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
diff --git a/pkg/client/unversioned/conditions.go b/pkg/client/unversioned/conditions.go
index a65c847508..042d13a6fa 100644
--- a/pkg/client/unversioned/conditions.go
+++ b/pkg/client/unversioned/conditions.go
@@ -24,10 +24,10 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apimachinery/pkg/watch"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/pod"
"k8s.io/kubernetes/pkg/apis/apps"
"k8s.io/kubernetes/pkg/apis/batch"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
appsclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/apps/internalversion"
batchclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/batch/internalversion"
diff --git a/pkg/client/unversioned/helper_test.go b/pkg/client/unversioned/helper_test.go
index 398dd5879a..4b62c3bfc8 100644
--- a/pkg/client/unversioned/helper_test.go
+++ b/pkg/client/unversioned/helper_test.go
@@ -27,9 +27,9 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
restclient "k8s.io/client-go/rest"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func TestSetKubernetesDefaults(t *testing.T) {
diff --git a/pkg/client/unversioned/testclient/simple/BUILD b/pkg/client/unversioned/testclient/simple/BUILD
index c85218db85..788e07aeec 100644
--- a/pkg/client/unversioned/testclient/simple/BUILD
+++ b/pkg/client/unversioned/testclient/simple/BUILD
@@ -10,9 +10,9 @@ go_library(
srcs = ["simple_testclient.go"],
importpath = "k8s.io/kubernetes/pkg/client/unversioned/testclient/simple",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
diff --git a/pkg/client/unversioned/testclient/simple/simple_testclient.go b/pkg/client/unversioned/testclient/simple/simple_testclient.go
index e6fa148e21..17160aa3f2 100644
--- a/pkg/client/unversioned/testclient/simple/simple_testclient.go
+++ b/pkg/client/unversioned/testclient/simple/simple_testclient.go
@@ -31,9 +31,9 @@ import (
"k8s.io/apimachinery/pkg/runtime"
restclient "k8s.io/client-go/rest"
utiltesting "k8s.io/client-go/util/testing"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
+ api "k8s.io/kubernetes/pkg/apis/core"
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
)
diff --git a/pkg/cloudprovider/providers/azure/azure_loadbalancer.go b/pkg/cloudprovider/providers/azure/azure_loadbalancer.go
index bdbea78899..3b970e87ed 100644
--- a/pkg/cloudprovider/providers/azure/azure_loadbalancer.go
+++ b/pkg/cloudprovider/providers/azure/azure_loadbalancer.go
@@ -39,6 +39,9 @@ const ServiceAnnotationLoadBalancerInternal = "service.beta.kubernetes.io/azure-
// to specify what subnet it is exposed on
const ServiceAnnotationLoadBalancerInternalSubnet = "service.beta.kubernetes.io/azure-load-balancer-internal-subnet"
+// ServiceAnnotationDNSLabelName annotation speficying the DNS label name for the service.
+const ServiceAnnotationDNSLabelName = "service.beta.kubernetes.io/azure-dns-label-name"
+
// GetLoadBalancer returns whether the specified load balancer exists, and
// if so, what its status is.
func (az *Cloud) GetLoadBalancer(clusterName string, service *v1.Service) (status *v1.LoadBalancerStatus, exists bool, err error) {
@@ -118,6 +121,13 @@ func (az *Cloud) determinePublicIPName(clusterName string, service *v1.Service)
return "", fmt.Errorf("user supplied IP Address %s was not found", loadBalancerIP)
}
+func getPublicIPLabel(service *v1.Service) string {
+ if labelName, found := service.Annotations[ServiceAnnotationDNSLabelName]; found {
+ return labelName
+ }
+ return ""
+}
+
// EnsureLoadBalancer creates a new load balancer 'name', or updates the existing one. Returns the status of the balancer
func (az *Cloud) EnsureLoadBalancer(clusterName string, service *v1.Service, nodes []*v1.Node) (*v1.LoadBalancerStatus, error) {
isInternal := requiresInternalLoadBalancer(service)
@@ -185,7 +195,8 @@ func (az *Cloud) EnsureLoadBalancer(clusterName string, service *v1.Service, nod
if err != nil {
return nil, err
}
- pip, err := az.ensurePublicIPExists(serviceName, pipName)
+ domainNameLabel := getPublicIPLabel(service)
+ pip, err := az.ensurePublicIPExists(serviceName, pipName, domainNameLabel)
if err != nil {
return nil, err
}
@@ -463,7 +474,7 @@ func (az *Cloud) cleanupLoadBalancer(clusterName string, service *v1.Service, is
return nil
}
-func (az *Cloud) ensurePublicIPExists(serviceName, pipName string) (*network.PublicIPAddress, error) {
+func (az *Cloud) ensurePublicIPExists(serviceName, pipName, domainNameLabel string) (*network.PublicIPAddress, error) {
pip, existsPip, err := az.getPublicIPAddress(pipName)
if err != nil {
return nil, err
@@ -477,6 +488,11 @@ func (az *Cloud) ensurePublicIPExists(serviceName, pipName string) (*network.Pub
pip.PublicIPAddressPropertiesFormat = &network.PublicIPAddressPropertiesFormat{
PublicIPAllocationMethod: network.Static,
}
+ if len(domainNameLabel) > 0 {
+ pip.PublicIPAddressPropertiesFormat.DNSSettings = &network.PublicIPAddressDNSSettings{
+ DomainNameLabel: &domainNameLabel,
+ }
+ }
pip.Tags = &map[string]*string{"service": &serviceName}
glog.V(3).Infof("ensure(%s): pip(%s) - creating", serviceName, *pip.Name)
diff --git a/pkg/cloudprovider/providers/openstack/BUILD b/pkg/cloudprovider/providers/openstack/BUILD
index 9a4d58dbd4..756b145eeb 100644
--- a/pkg/cloudprovider/providers/openstack/BUILD
+++ b/pkg/cloudprovider/providers/openstack/BUILD
@@ -20,8 +20,8 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/cloudprovider/providers/openstack",
deps = [
- "//pkg/api/v1/helper:go_default_library",
"//pkg/api/v1/service:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
"//pkg/cloudprovider:go_default_library",
"//pkg/controller:go_default_library",
"//pkg/util/mount:go_default_library",
diff --git a/pkg/cloudprovider/providers/openstack/openstack.go b/pkg/cloudprovider/providers/openstack/openstack.go
index 0d3c25db87..422cc72deb 100644
--- a/pkg/cloudprovider/providers/openstack/openstack.go
+++ b/pkg/cloudprovider/providers/openstack/openstack.go
@@ -42,7 +42,7 @@ import (
"k8s.io/apimachinery/pkg/types"
netutil "k8s.io/apimachinery/pkg/util/net"
certutil "k8s.io/client-go/util/cert"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
"k8s.io/kubernetes/pkg/cloudprovider"
"k8s.io/kubernetes/pkg/controller"
)
diff --git a/pkg/cloudprovider/providers/photon/BUILD b/pkg/cloudprovider/providers/photon/BUILD
index 875fec3544..052159a13e 100644
--- a/pkg/cloudprovider/providers/photon/BUILD
+++ b/pkg/cloudprovider/providers/photon/BUILD
@@ -11,7 +11,7 @@ go_library(
srcs = ["photon.go"],
importpath = "k8s.io/kubernetes/pkg/cloudprovider/providers/photon",
deps = [
- "//pkg/api/v1/helper:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
"//pkg/cloudprovider:go_default_library",
"//pkg/controller:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
diff --git a/pkg/cloudprovider/providers/photon/photon.go b/pkg/cloudprovider/providers/photon/photon.go
index 0abb8149fa..5071de5c53 100644
--- a/pkg/cloudprovider/providers/photon/photon.go
+++ b/pkg/cloudprovider/providers/photon/photon.go
@@ -38,7 +38,7 @@ import (
"gopkg.in/gcfg.v1"
"k8s.io/api/core/v1"
k8stypes "k8s.io/apimachinery/pkg/types"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
"k8s.io/kubernetes/pkg/cloudprovider"
"k8s.io/kubernetes/pkg/controller"
)
diff --git a/pkg/cloudprovider/providers/vsphere/BUILD b/pkg/cloudprovider/providers/vsphere/BUILD
index 598a2700a4..f5b75b0c9e 100644
--- a/pkg/cloudprovider/providers/vsphere/BUILD
+++ b/pkg/cloudprovider/providers/vsphere/BUILD
@@ -14,7 +14,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere",
deps = [
- "//pkg/api/v1/helper:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
"//pkg/cloudprovider:go_default_library",
"//pkg/cloudprovider/providers/vsphere/vclib:go_default_library",
"//pkg/cloudprovider/providers/vsphere/vclib/diskmanagers:go_default_library",
diff --git a/pkg/cloudprovider/providers/vsphere/vsphere.go b/pkg/cloudprovider/providers/vsphere/vsphere.go
index 849a0d5421..31d2b64ec0 100644
--- a/pkg/cloudprovider/providers/vsphere/vsphere.go
+++ b/pkg/cloudprovider/providers/vsphere/vsphere.go
@@ -34,7 +34,7 @@ import (
"golang.org/x/net/context"
"k8s.io/api/core/v1"
k8stypes "k8s.io/apimachinery/pkg/types"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
"k8s.io/kubernetes/pkg/cloudprovider"
"k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vclib"
"k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vclib/diskmanagers"
diff --git a/pkg/controller/BUILD b/pkg/controller/BUILD
index 11ed251371..287ff8d32b 100644
--- a/pkg/controller/BUILD
+++ b/pkg/controller/BUILD
@@ -15,9 +15,9 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/controller",
library = ":go_default_library",
deps = [
- "//pkg/api/install:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//pkg/controller/testutil:go_default_library",
"//pkg/securitycontext:go_default_library",
"//vendor/github.com/stretchr/testify/assert:go_default_library",
@@ -52,11 +52,11 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/controller",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/install:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/v1/pod:go_default_library",
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//pkg/serviceaccount:go_default_library",
"//pkg/util/hash:go_default_library",
"//pkg/util/taints:go_default_library",
@@ -107,6 +107,7 @@ filegroup(
"//pkg/controller/bootstrap:all-srcs",
"//pkg/controller/certificates:all-srcs",
"//pkg/controller/cloud:all-srcs",
+ "//pkg/controller/clusterroleaggregation:all-srcs",
"//pkg/controller/cronjob:all-srcs",
"//pkg/controller/daemon:all-srcs",
"//pkg/controller/deployment:all-srcs",
diff --git a/pkg/controller/bootstrap/BUILD b/pkg/controller/bootstrap/BUILD
index fe86ddc555..6dfcd204c9 100644
--- a/pkg/controller/bootstrap/BUILD
+++ b/pkg/controller/bootstrap/BUILD
@@ -18,8 +18,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/controller/bootstrap",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/helper:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
"//pkg/bootstrap/api:go_default_library",
"//vendor/github.com/davecgh/go-spew/spew:go_default_library",
"//vendor/github.com/stretchr/testify/assert:go_default_library",
@@ -42,7 +42,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/controller/bootstrap",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/bootstrap/api:go_default_library",
"//pkg/util/metrics:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
diff --git a/pkg/controller/bootstrap/bootstrapsigner.go b/pkg/controller/bootstrap/bootstrapsigner.go
index a422f0c66a..5bb53a4483 100644
--- a/pkg/controller/bootstrap/bootstrapsigner.go
+++ b/pkg/controller/bootstrap/bootstrapsigner.go
@@ -33,7 +33,7 @@ import (
clientset "k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/util/workqueue"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
bootstrapapi "k8s.io/kubernetes/pkg/bootstrap/api"
"k8s.io/kubernetes/pkg/util/metrics"
)
diff --git a/pkg/controller/bootstrap/bootstrapsigner_test.go b/pkg/controller/bootstrap/bootstrapsigner_test.go
index 5a67b5ada3..ba92382300 100644
--- a/pkg/controller/bootstrap/bootstrapsigner_test.go
+++ b/pkg/controller/bootstrap/bootstrapsigner_test.go
@@ -26,7 +26,7 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/kubernetes/fake"
core "k8s.io/client-go/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
bootstrapapi "k8s.io/kubernetes/pkg/bootstrap/api"
)
diff --git a/pkg/controller/bootstrap/common_test.go b/pkg/controller/bootstrap/common_test.go
index c4937deff1..a61ebc2188 100644
--- a/pkg/controller/bootstrap/common_test.go
+++ b/pkg/controller/bootstrap/common_test.go
@@ -24,7 +24,7 @@ import (
"k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
core "k8s.io/client-go/testing"
- "k8s.io/kubernetes/pkg/api/helper"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
bootstrapapi "k8s.io/kubernetes/pkg/bootstrap/api"
)
diff --git a/pkg/controller/bootstrap/tokencleaner.go b/pkg/controller/bootstrap/tokencleaner.go
index c018a6e472..6c099a4c73 100644
--- a/pkg/controller/bootstrap/tokencleaner.go
+++ b/pkg/controller/bootstrap/tokencleaner.go
@@ -30,7 +30,7 @@ import (
"k8s.io/apimachinery/pkg/watch"
clientset "k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/cache"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
bootstrapapi "k8s.io/kubernetes/pkg/bootstrap/api"
"k8s.io/kubernetes/pkg/util/metrics"
)
diff --git a/pkg/controller/bootstrap/tokencleaner_test.go b/pkg/controller/bootstrap/tokencleaner_test.go
index cade7c86fd..47059dd4d1 100644
--- a/pkg/controller/bootstrap/tokencleaner_test.go
+++ b/pkg/controller/bootstrap/tokencleaner_test.go
@@ -25,7 +25,7 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/kubernetes/fake"
core "k8s.io/client-go/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func init() {
diff --git a/pkg/controller/client_builder.go b/pkg/controller/client_builder.go
index cb8121f6d5..3703987500 100644
--- a/pkg/controller/client_builder.go
+++ b/pkg/controller/client_builder.go
@@ -34,8 +34,8 @@ import (
v1core "k8s.io/client-go/kubernetes/typed/core/v1"
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/tools/cache"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/serviceaccount"
"github.com/golang/glog"
diff --git a/pkg/controller/clusterroleaggregation/BUILD b/pkg/controller/clusterroleaggregation/BUILD
new file mode 100644
index 0000000000..94a93af996
--- /dev/null
+++ b/pkg/controller/clusterroleaggregation/BUILD
@@ -0,0 +1,57 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
+
+go_library(
+ name = "go_default_library",
+ srcs = ["clusterroleaggregation_controller.go"],
+ importpath = "k8s.io/kubernetes/pkg/controller/clusterroleaggregation",
+ visibility = ["//visibility:public"],
+ deps = [
+ "//pkg/controller:go_default_library",
+ "//vendor/github.com/golang/glog:go_default_library",
+ "//vendor/k8s.io/api/rbac/v1:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
+ "//vendor/k8s.io/client-go/informers/rbac/v1:go_default_library",
+ "//vendor/k8s.io/client-go/kubernetes/typed/rbac/v1:go_default_library",
+ "//vendor/k8s.io/client-go/listers/rbac/v1:go_default_library",
+ "//vendor/k8s.io/client-go/tools/cache:go_default_library",
+ "//vendor/k8s.io/client-go/util/workqueue:go_default_library",
+ ],
+)
+
+filegroup(
+ name = "package-srcs",
+ srcs = glob(["**"]),
+ tags = ["automanaged"],
+ visibility = ["//visibility:private"],
+)
+
+filegroup(
+ name = "all-srcs",
+ srcs = [":package-srcs"],
+ tags = ["automanaged"],
+ visibility = ["//visibility:public"],
+)
+
+go_test(
+ name = "go_default_test",
+ srcs = ["clusterroleaggregation_controller_test.go"],
+ importpath = "k8s.io/kubernetes/pkg/controller/clusterroleaggregation",
+ library = ":go_default_library",
+ deps = [
+ "//pkg/controller:go_default_library",
+ "//vendor/k8s.io/api/rbac/v1:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library",
+ "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library",
+ "//vendor/k8s.io/client-go/listers/rbac/v1:go_default_library",
+ "//vendor/k8s.io/client-go/testing:go_default_library",
+ "//vendor/k8s.io/client-go/tools/cache:go_default_library",
+ ],
+)
diff --git a/pkg/controller/clusterroleaggregation/clusterroleaggregation_controller.go b/pkg/controller/clusterroleaggregation/clusterroleaggregation_controller.go
new file mode 100644
index 0000000000..05879e0e68
--- /dev/null
+++ b/pkg/controller/clusterroleaggregation/clusterroleaggregation_controller.go
@@ -0,0 +1,213 @@
+/*
+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 clusterroleaggregation
+
+import (
+ "fmt"
+ "sort"
+ "time"
+
+ "github.com/golang/glog"
+
+ rbacv1 "k8s.io/api/rbac/v1"
+ "k8s.io/apimachinery/pkg/api/equality"
+ "k8s.io/apimachinery/pkg/api/errors"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apimachinery/pkg/labels"
+ utilruntime "k8s.io/apimachinery/pkg/util/runtime"
+ "k8s.io/apimachinery/pkg/util/wait"
+ rbacinformers "k8s.io/client-go/informers/rbac/v1"
+ rbacclient "k8s.io/client-go/kubernetes/typed/rbac/v1"
+ rbaclisters "k8s.io/client-go/listers/rbac/v1"
+ "k8s.io/client-go/tools/cache"
+ "k8s.io/client-go/util/workqueue"
+ "k8s.io/kubernetes/pkg/controller"
+)
+
+// ClusterRoleAggregationController is a controller to combine cluster roles
+type ClusterRoleAggregationController struct {
+ clusterRoleClient rbacclient.ClusterRolesGetter
+ clusterRoleLister rbaclisters.ClusterRoleLister
+ clusterRolesSynced cache.InformerSynced
+
+ syncHandler func(key string) error
+ queue workqueue.RateLimitingInterface
+}
+
+// NewClusterRoleAggregation creates a new controller
+func NewClusterRoleAggregation(clusterRoleInformer rbacinformers.ClusterRoleInformer, clusterRoleClient rbacclient.ClusterRolesGetter) *ClusterRoleAggregationController {
+ c := &ClusterRoleAggregationController{
+ clusterRoleClient: clusterRoleClient,
+ clusterRoleLister: clusterRoleInformer.Lister(),
+ clusterRolesSynced: clusterRoleInformer.Informer().HasSynced,
+
+ queue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "ClusterRoleAggregator"),
+ }
+ c.syncHandler = c.syncClusterRole
+
+ clusterRoleInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
+ AddFunc: func(obj interface{}) {
+ c.enqueue()
+ },
+ UpdateFunc: func(old, cur interface{}) {
+ c.enqueue()
+ },
+ DeleteFunc: func(uncast interface{}) {
+ c.enqueue()
+ },
+ })
+ return c
+}
+
+func (c *ClusterRoleAggregationController) syncClusterRole(key string) error {
+ _, name, err := cache.SplitMetaNamespaceKey(key)
+ if err != nil {
+ return err
+ }
+ sharedClusterRole, err := c.clusterRoleLister.Get(name)
+ if errors.IsNotFound(err) {
+ return nil
+ }
+ if err != nil {
+ return err
+ }
+ if sharedClusterRole.AggregationRule == nil {
+ return nil
+ }
+
+ newPolicyRules := []rbacv1.PolicyRule{}
+ for i := range sharedClusterRole.AggregationRule.ClusterRoleSelectors {
+ selector := sharedClusterRole.AggregationRule.ClusterRoleSelectors[i]
+ runtimeLabelSelector, err := metav1.LabelSelectorAsSelector(&selector)
+ if err != nil {
+ return err
+ }
+ clusterRoles, err := c.clusterRoleLister.List(runtimeLabelSelector)
+ if err != nil {
+ return err
+ }
+ sort.Sort(byName(clusterRoles))
+
+ for i := range clusterRoles {
+ if clusterRoles[i].Name == sharedClusterRole.Name {
+ continue
+ }
+
+ for j := range clusterRoles[i].Rules {
+ currRule := clusterRoles[i].Rules[j]
+ if !ruleExists(newPolicyRules, currRule) {
+ newPolicyRules = append(newPolicyRules, currRule)
+ }
+ }
+ }
+ }
+
+ if equality.Semantic.DeepEqual(newPolicyRules, sharedClusterRole.Rules) {
+ return nil
+ }
+
+ // we need to update
+ clusterRole := sharedClusterRole.DeepCopy()
+ clusterRole.Rules = nil
+ for _, rule := range newPolicyRules {
+ clusterRole.Rules = append(clusterRole.Rules, *rule.DeepCopy())
+ }
+ _, err = c.clusterRoleClient.ClusterRoles().Update(clusterRole)
+
+ return err
+}
+
+func ruleExists(haystack []rbacv1.PolicyRule, needle rbacv1.PolicyRule) bool {
+ for _, curr := range haystack {
+ if equality.Semantic.DeepEqual(curr, needle) {
+ return true
+ }
+ }
+ return false
+}
+
+// Run starts the controller and blocks until stopCh is closed.
+func (c *ClusterRoleAggregationController) Run(workers int, stopCh <-chan struct{}) {
+ defer utilruntime.HandleCrash()
+ defer c.queue.ShutDown()
+
+ glog.Infof("Starting ClusterRoleAggregator")
+ defer glog.Infof("Shutting down ClusterRoleAggregator")
+
+ if !controller.WaitForCacheSync("ClusterRoleAggregator", stopCh, c.clusterRolesSynced) {
+ return
+ }
+
+ for i := 0; i < workers; i++ {
+ go wait.Until(c.runWorker, time.Second, stopCh)
+ }
+
+ <-stopCh
+}
+
+func (c *ClusterRoleAggregationController) runWorker() {
+ for c.processNextWorkItem() {
+ }
+}
+
+func (c *ClusterRoleAggregationController) processNextWorkItem() bool {
+ dsKey, quit := c.queue.Get()
+ if quit {
+ return false
+ }
+ defer c.queue.Done(dsKey)
+
+ err := c.syncHandler(dsKey.(string))
+ if err == nil {
+ c.queue.Forget(dsKey)
+ return true
+ }
+
+ utilruntime.HandleError(fmt.Errorf("%v failed with : %v", dsKey, err))
+ c.queue.AddRateLimited(dsKey)
+
+ return true
+}
+
+func (c *ClusterRoleAggregationController) enqueue() {
+ // this is unusual, but since the set of all clusterroles is small and we don't know the dependency
+ // graph, just queue up every thing each time. This allows errors to be selectively retried if there
+ // is a problem updating a single role
+ allClusterRoles, err := c.clusterRoleLister.List(labels.Everything())
+ if err != nil {
+ utilruntime.HandleError(fmt.Errorf("Couldn't list all objects %v", err))
+ return
+ }
+ for _, clusterRole := range allClusterRoles {
+ // only queue ones that we may need to aggregate
+ if clusterRole.AggregationRule == nil {
+ continue
+ }
+ key, err := controller.KeyFunc(clusterRole)
+ if err != nil {
+ utilruntime.HandleError(fmt.Errorf("Couldn't get key for object %#v: %v", clusterRole, err))
+ return
+ }
+ c.queue.Add(key)
+ }
+}
+
+type byName []*rbacv1.ClusterRole
+
+func (a byName) Len() int { return len(a) }
+func (a byName) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
+func (a byName) Less(i, j int) bool { return a[i].Name < a[j].Name }
diff --git a/pkg/controller/clusterroleaggregation/clusterroleaggregation_controller_test.go b/pkg/controller/clusterroleaggregation/clusterroleaggregation_controller_test.go
new file mode 100644
index 0000000000..de007cdd3f
--- /dev/null
+++ b/pkg/controller/clusterroleaggregation/clusterroleaggregation_controller_test.go
@@ -0,0 +1,182 @@
+/*
+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 clusterroleaggregation
+
+import (
+ "testing"
+
+ rbacv1 "k8s.io/api/rbac/v1"
+ "k8s.io/apimachinery/pkg/api/equality"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apimachinery/pkg/runtime"
+ "k8s.io/apimachinery/pkg/util/diff"
+ fakeclient "k8s.io/client-go/kubernetes/fake"
+ rbaclisters "k8s.io/client-go/listers/rbac/v1"
+ clienttesting "k8s.io/client-go/testing"
+ "k8s.io/client-go/tools/cache"
+ "k8s.io/kubernetes/pkg/controller"
+)
+
+func TestSyncClusterRole(t *testing.T) {
+ hammerRules := func() []rbacv1.PolicyRule {
+ return []rbacv1.PolicyRule{
+ {Verbs: []string{"hammer"}, Resources: []string{"nails"}},
+ {Verbs: []string{"hammer"}, Resources: []string{"wedges"}},
+ }
+ }
+ chiselRules := func() []rbacv1.PolicyRule {
+ return []rbacv1.PolicyRule{
+ {Verbs: []string{"chisel"}, Resources: []string{"mortises"}},
+ }
+ }
+ sawRules := func() []rbacv1.PolicyRule {
+ return []rbacv1.PolicyRule{
+ {Verbs: []string{"saw"}, Resources: []string{"boards"}},
+ }
+ }
+ role := func(name string, labels map[string]string, rules []rbacv1.PolicyRule) *rbacv1.ClusterRole {
+ return &rbacv1.ClusterRole{
+ ObjectMeta: metav1.ObjectMeta{Name: name, Labels: labels},
+ Rules: rules,
+ }
+ }
+ combinedRole := func(selectors []map[string]string, rules ...[]rbacv1.PolicyRule) *rbacv1.ClusterRole {
+ ret := &rbacv1.ClusterRole{
+ ObjectMeta: metav1.ObjectMeta{Name: "combined"},
+ AggregationRule: &rbacv1.AggregationRule{},
+ }
+ for _, selector := range selectors {
+ ret.AggregationRule.ClusterRoleSelectors = append(ret.AggregationRule.ClusterRoleSelectors,
+ metav1.LabelSelector{MatchLabels: selector})
+ }
+ for _, currRules := range rules {
+ ret.Rules = append(ret.Rules, currRules...)
+ }
+ return ret
+ }
+
+ tests := []struct {
+ name string
+ startingClusterRoles []*rbacv1.ClusterRole
+ clusterRoleToSync string
+ expectedClusterRole *rbacv1.ClusterRole
+ }{
+ {
+ name: "remove dead rules",
+ startingClusterRoles: []*rbacv1.ClusterRole{
+ role("hammer", map[string]string{"foo": "bar"}, hammerRules()),
+ combinedRole([]map[string]string{{"foo": "bar"}}, sawRules()),
+ },
+ clusterRoleToSync: "combined",
+ expectedClusterRole: combinedRole([]map[string]string{{"foo": "bar"}}, hammerRules()),
+ },
+ {
+ name: "strip rules",
+ startingClusterRoles: []*rbacv1.ClusterRole{
+ role("hammer", map[string]string{"foo": "not-bar"}, hammerRules()),
+ combinedRole([]map[string]string{{"foo": "bar"}}, hammerRules()),
+ },
+ clusterRoleToSync: "combined",
+ expectedClusterRole: combinedRole([]map[string]string{{"foo": "bar"}}),
+ },
+ {
+ name: "select properly and put in order",
+ startingClusterRoles: []*rbacv1.ClusterRole{
+ role("hammer", map[string]string{"foo": "bar"}, hammerRules()),
+ role("chisel", map[string]string{"foo": "bar"}, chiselRules()),
+ role("saw", map[string]string{"foo": "not-bar"}, sawRules()),
+ combinedRole([]map[string]string{{"foo": "bar"}}),
+ },
+ clusterRoleToSync: "combined",
+ expectedClusterRole: combinedRole([]map[string]string{{"foo": "bar"}}, chiselRules(), hammerRules()),
+ },
+ {
+ name: "select properly with multiple selectors",
+ startingClusterRoles: []*rbacv1.ClusterRole{
+ role("hammer", map[string]string{"foo": "bar"}, hammerRules()),
+ role("chisel", map[string]string{"foo": "bar"}, chiselRules()),
+ role("saw", map[string]string{"foo": "not-bar"}, sawRules()),
+ combinedRole([]map[string]string{{"foo": "bar"}, {"foo": "not-bar"}}),
+ },
+ clusterRoleToSync: "combined",
+ expectedClusterRole: combinedRole([]map[string]string{{"foo": "bar"}, {"foo": "not-bar"}}, chiselRules(), hammerRules(), sawRules()),
+ },
+ {
+ name: "select properly remove duplicates",
+ startingClusterRoles: []*rbacv1.ClusterRole{
+ role("hammer", map[string]string{"foo": "bar"}, hammerRules()),
+ role("chisel", map[string]string{"foo": "bar"}, chiselRules()),
+ role("saw", map[string]string{"foo": "bar"}, sawRules()),
+ role("other-saw", map[string]string{"foo": "not-bar"}, sawRules()),
+ combinedRole([]map[string]string{{"foo": "bar"}, {"foo": "not-bar"}}),
+ },
+ clusterRoleToSync: "combined",
+ expectedClusterRole: combinedRole([]map[string]string{{"foo": "bar"}, {"foo": "not-bar"}}, chiselRules(), hammerRules(), sawRules()),
+ },
+ {
+ name: "no diff skip",
+ startingClusterRoles: []*rbacv1.ClusterRole{
+ role("hammer", map[string]string{"foo": "bar"}, hammerRules()),
+ combinedRole([]map[string]string{{"foo": "bar"}}, hammerRules()),
+ },
+ clusterRoleToSync: "combined",
+ expectedClusterRole: nil,
+ }}
+
+ for _, test := range tests {
+ t.Run(test.name, func(t *testing.T) {
+ indexer := cache.NewIndexer(controller.KeyFunc, cache.Indexers{})
+ objs := []runtime.Object{}
+ for _, obj := range test.startingClusterRoles {
+ objs = append(objs, obj)
+ indexer.Add(obj)
+ }
+ fakeClient := fakeclient.NewSimpleClientset(objs...)
+ c := ClusterRoleAggregationController{
+ clusterRoleClient: fakeClient.RbacV1(),
+ clusterRoleLister: rbaclisters.NewClusterRoleLister(indexer),
+ }
+ err := c.syncClusterRole(test.clusterRoleToSync)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if test.expectedClusterRole == nil {
+ if len(fakeClient.Actions()) != 0 {
+ t.Fatalf("unexpected actions %#v", fakeClient.Actions())
+ }
+ return
+ }
+ if len(fakeClient.Actions()) != 1 {
+ t.Fatalf("unexpected actions %#v", fakeClient.Actions())
+ }
+
+ action := fakeClient.Actions()[0]
+ if !action.Matches("update", "clusterroles") {
+ t.Fatalf("unexpected action %#v", action)
+ }
+ updateAction, ok := action.(clienttesting.UpdateAction)
+ if !ok {
+ t.Fatalf("unexpected action %#v", action)
+ }
+ if !equality.Semantic.DeepEqual(updateAction.GetObject().(*rbacv1.ClusterRole), test.expectedClusterRole) {
+ t.Fatalf("%v", diff.ObjectDiff(test.expectedClusterRole, updateAction.GetObject().(*rbacv1.ClusterRole)))
+
+ }
+ })
+ }
+}
diff --git a/pkg/controller/controller_utils.go b/pkg/controller/controller_utils.go
index e5c992c0ae..9e0cb9f4d0 100644
--- a/pkg/controller/controller_utils.go
+++ b/pkg/controller/controller_utils.go
@@ -42,9 +42,9 @@ import (
"k8s.io/client-go/tools/record"
"k8s.io/client-go/util/integer"
clientretry "k8s.io/client-go/util/retry"
- _ "k8s.io/kubernetes/pkg/api/install"
podutil "k8s.io/kubernetes/pkg/api/v1/pod"
- "k8s.io/kubernetes/pkg/api/validation"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
+ "k8s.io/kubernetes/pkg/apis/core/validation"
hashutil "k8s.io/kubernetes/pkg/util/hash"
taintutils "k8s.io/kubernetes/pkg/util/taints"
diff --git a/pkg/controller/controller_utils_test.go b/pkg/controller/controller_utils_test.go
index 0887f146b5..12bed73d96 100644
--- a/pkg/controller/controller_utils_test.go
+++ b/pkg/controller/controller_utils_test.go
@@ -41,9 +41,9 @@ import (
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/tools/record"
utiltesting "k8s.io/client-go/util/testing"
- _ "k8s.io/kubernetes/pkg/api/install"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
"k8s.io/kubernetes/pkg/controller/testutil"
"k8s.io/kubernetes/pkg/securitycontext"
diff --git a/pkg/controller/cronjob/BUILD b/pkg/controller/cronjob/BUILD
index 6a95d2b938..e484d2c50a 100644
--- a/pkg/controller/cronjob/BUILD
+++ b/pkg/controller/cronjob/BUILD
@@ -49,8 +49,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/controller/cronjob",
library = ":go_default_library",
deps = [
- "//pkg/api/install:go_default_library",
"//pkg/apis/batch/install:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//vendor/k8s.io/api/batch/v1:go_default_library",
"//vendor/k8s.io/api/batch/v1beta1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
diff --git a/pkg/controller/cronjob/cronjob_controller_test.go b/pkg/controller/cronjob/cronjob_controller_test.go
index bc08af54e7..63cff8ef04 100644
--- a/pkg/controller/cronjob/cronjob_controller_test.go
+++ b/pkg/controller/cronjob/cronjob_controller_test.go
@@ -31,8 +31,8 @@ import (
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/client-go/tools/record"
// For the cronjob controller to do conversions.
- _ "k8s.io/kubernetes/pkg/api/install"
_ "k8s.io/kubernetes/pkg/apis/batch/install"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
)
var (
diff --git a/pkg/controller/daemon/BUILD b/pkg/controller/daemon/BUILD
index 97ff9b777a..dd082c9ac2 100644
--- a/pkg/controller/daemon/BUILD
+++ b/pkg/controller/daemon/BUILD
@@ -15,8 +15,8 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/controller/daemon",
deps = [
- "//pkg/api/v1/helper:go_default_library",
"//pkg/api/v1/pod:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
"//pkg/controller:go_default_library",
"//pkg/controller/daemon/util:go_default_library",
"//pkg/features:go_default_library",
@@ -68,10 +68,10 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/controller/daemon",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/api/v1/pod:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/controller:go_default_library",
"//pkg/kubelet/types:go_default_library",
"//pkg/securitycontext:go_default_library",
diff --git a/pkg/controller/daemon/daemon_controller.go b/pkg/controller/daemon/daemon_controller.go
index caac2741a7..72308b93b5 100644
--- a/pkg/controller/daemon/daemon_controller.go
+++ b/pkg/controller/daemon/daemon_controller.go
@@ -48,8 +48,8 @@ import (
"k8s.io/client-go/tools/record"
"k8s.io/client-go/util/integer"
"k8s.io/client-go/util/workqueue"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
podutil "k8s.io/kubernetes/pkg/api/v1/pod"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
"k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/controller/daemon/util"
"k8s.io/kubernetes/pkg/features"
diff --git a/pkg/controller/daemon/daemon_controller_test.go b/pkg/controller/daemon/daemon_controller_test.go
index ab3f650f42..9012e7ed6c 100644
--- a/pkg/controller/daemon/daemon_controller_test.go
+++ b/pkg/controller/daemon/daemon_controller_test.go
@@ -39,10 +39,10 @@ import (
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/tools/record"
"k8s.io/client-go/util/workqueue"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
podutil "k8s.io/kubernetes/pkg/api/v1/pod"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/controller"
kubelettypes "k8s.io/kubernetes/pkg/kubelet/types"
"k8s.io/kubernetes/pkg/securitycontext"
diff --git a/pkg/controller/daemon/util/BUILD b/pkg/controller/daemon/util/BUILD
index 72743c3021..4a87a1eacd 100644
--- a/pkg/controller/daemon/util/BUILD
+++ b/pkg/controller/daemon/util/BUILD
@@ -11,8 +11,8 @@ go_library(
srcs = ["daemonset_util.go"],
importpath = "k8s.io/kubernetes/pkg/controller/daemon/util",
deps = [
- "//pkg/api/v1/helper:go_default_library",
"//pkg/api/v1/pod:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
"//pkg/features:go_default_library",
"//pkg/kubelet/types:go_default_library",
"//pkg/util/labels:go_default_library",
diff --git a/pkg/controller/daemon/util/daemonset_util.go b/pkg/controller/daemon/util/daemonset_util.go
index 6ef70a3fac..1ea30b713f 100644
--- a/pkg/controller/daemon/util/daemonset_util.go
+++ b/pkg/controller/daemon/util/daemonset_util.go
@@ -23,8 +23,8 @@ import (
extensions "k8s.io/api/extensions/v1beta1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
utilfeature "k8s.io/apiserver/pkg/util/feature"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
podutil "k8s.io/kubernetes/pkg/api/v1/pod"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
"k8s.io/kubernetes/pkg/features"
kubelettypes "k8s.io/kubernetes/pkg/kubelet/types"
labelsutil "k8s.io/kubernetes/pkg/util/labels"
diff --git a/pkg/controller/deployment/BUILD b/pkg/controller/deployment/BUILD
index 045aaee531..6995ca4c33 100644
--- a/pkg/controller/deployment/BUILD
+++ b/pkg/controller/deployment/BUILD
@@ -59,7 +59,6 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/controller/deployment",
library = ":go_default_library",
deps = [
- "//pkg/api/install:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/apis/apps/install:go_default_library",
"//pkg/apis/authentication/install:go_default_library",
@@ -67,6 +66,7 @@ go_test(
"//pkg/apis/autoscaling/install:go_default_library",
"//pkg/apis/batch/install:go_default_library",
"//pkg/apis/certificates/install:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//pkg/apis/extensions/install:go_default_library",
"//pkg/apis/policy/install:go_default_library",
"//pkg/apis/rbac/install:go_default_library",
diff --git a/pkg/controller/deployment/deployment_controller_test.go b/pkg/controller/deployment/deployment_controller_test.go
index f5af5c3c24..7b4ed1432b 100644
--- a/pkg/controller/deployment/deployment_controller_test.go
+++ b/pkg/controller/deployment/deployment_controller_test.go
@@ -31,7 +31,6 @@ import (
"k8s.io/client-go/kubernetes/fake"
core "k8s.io/client-go/testing"
"k8s.io/client-go/tools/record"
- _ "k8s.io/kubernetes/pkg/api/install"
"k8s.io/kubernetes/pkg/api/legacyscheme"
_ "k8s.io/kubernetes/pkg/apis/apps/install"
_ "k8s.io/kubernetes/pkg/apis/authentication/install"
@@ -39,6 +38,7 @@ import (
_ "k8s.io/kubernetes/pkg/apis/autoscaling/install"
_ "k8s.io/kubernetes/pkg/apis/batch/install"
_ "k8s.io/kubernetes/pkg/apis/certificates/install"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
_ "k8s.io/kubernetes/pkg/apis/extensions/install"
_ "k8s.io/kubernetes/pkg/apis/policy/install"
_ "k8s.io/kubernetes/pkg/apis/rbac/install"
diff --git a/pkg/controller/disruption/BUILD b/pkg/controller/disruption/BUILD
index 555556e84a..b92a2e2c94 100644
--- a/pkg/controller/disruption/BUILD
+++ b/pkg/controller/disruption/BUILD
@@ -48,8 +48,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/controller/disruption",
library = ":go_default_library",
deps = [
- "//pkg/api/install:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//pkg/controller:go_default_library",
"//vendor/github.com/Azure/go-autorest/autorest/to:go_default_library",
"//vendor/k8s.io/api/apps/v1beta1:go_default_library",
diff --git a/pkg/controller/disruption/disruption_test.go b/pkg/controller/disruption/disruption_test.go
index 457441642c..b64a7a10c7 100644
--- a/pkg/controller/disruption/disruption_test.go
+++ b/pkg/controller/disruption/disruption_test.go
@@ -33,8 +33,8 @@ import (
"k8s.io/client-go/informers"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/util/workqueue"
- _ "k8s.io/kubernetes/pkg/api/install"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
"k8s.io/kubernetes/pkg/controller"
"github.com/Azure/go-autorest/autorest/to"
diff --git a/pkg/controller/endpoint/BUILD b/pkg/controller/endpoint/BUILD
index 58bc13885b..ed8acb206d 100644
--- a/pkg/controller/endpoint/BUILD
+++ b/pkg/controller/endpoint/BUILD
@@ -14,9 +14,9 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/controller/endpoint",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/v1/endpoints:go_default_library",
"//pkg/api/v1/pod:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/controller:go_default_library",
"//pkg/util/metrics:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
@@ -43,10 +43,10 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/controller/endpoint",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/api/v1/endpoints:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/controller:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
diff --git a/pkg/controller/endpoint/endpoints_controller.go b/pkg/controller/endpoint/endpoints_controller.go
index fd205f4941..8aa41da8a8 100644
--- a/pkg/controller/endpoint/endpoints_controller.go
+++ b/pkg/controller/endpoint/endpoints_controller.go
@@ -36,9 +36,9 @@ import (
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/tools/leaderelection/resourcelock"
"k8s.io/client-go/util/workqueue"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/v1/endpoints"
podutil "k8s.io/kubernetes/pkg/api/v1/pod"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/util/metrics"
diff --git a/pkg/controller/endpoint/endpoints_controller_test.go b/pkg/controller/endpoint/endpoints_controller_test.go
index 0fb098d72f..49e786d9c7 100644
--- a/pkg/controller/endpoint/endpoints_controller_test.go
+++ b/pkg/controller/endpoint/endpoints_controller_test.go
@@ -34,10 +34,10 @@ import (
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/tools/cache"
utiltesting "k8s.io/client-go/util/testing"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
endptspkg "k8s.io/kubernetes/pkg/api/v1/endpoints"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/controller"
)
diff --git a/pkg/controller/garbagecollector/BUILD b/pkg/controller/garbagecollector/BUILD
index 9464b69dc6..1ea321cce9 100644
--- a/pkg/controller/garbagecollector/BUILD
+++ b/pkg/controller/garbagecollector/BUILD
@@ -53,8 +53,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/controller/garbagecollector",
library = ":go_default_library",
deps = [
- "//pkg/api/install:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//pkg/controller/garbagecollector/metaonly:go_default_library",
"//vendor/github.com/stretchr/testify/assert:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
diff --git a/pkg/controller/garbagecollector/garbagecollector_test.go b/pkg/controller/garbagecollector/garbagecollector_test.go
index 7b46279e81..0927b392ce 100644
--- a/pkg/controller/garbagecollector/garbagecollector_test.go
+++ b/pkg/controller/garbagecollector/garbagecollector_test.go
@@ -27,7 +27,7 @@ import (
"github.com/stretchr/testify/assert"
- _ "k8s.io/kubernetes/pkg/api/install"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/meta"
diff --git a/pkg/controller/garbagecollector/metaonly/BUILD b/pkg/controller/garbagecollector/metaonly/BUILD
index c5689b8859..157f4ba9a1 100644
--- a/pkg/controller/garbagecollector/metaonly/BUILD
+++ b/pkg/controller/garbagecollector/metaonly/BUILD
@@ -17,7 +17,6 @@ go_library(
deps = [
"//pkg/api/legacyscheme:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
@@ -30,7 +29,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/controller/garbagecollector/metaonly",
library = ":go_default_library",
deps = [
- "//pkg/api/install:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
diff --git a/pkg/controller/garbagecollector/metaonly/metaonly_test.go b/pkg/controller/garbagecollector/metaonly/metaonly_test.go
index 6c0952c339..2bdf9c879d 100644
--- a/pkg/controller/garbagecollector/metaonly/metaonly_test.go
+++ b/pkg/controller/garbagecollector/metaonly/metaonly_test.go
@@ -27,7 +27,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/runtime/serializer"
- _ "k8s.io/kubernetes/pkg/api/install"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
)
func getPod() *v1.Pod {
diff --git a/pkg/controller/garbagecollector/metaonly/zz_generated.deepcopy.go b/pkg/controller/garbagecollector/metaonly/zz_generated.deepcopy.go
index 70e2946939..9c766f2630 100644
--- a/pkg/controller/garbagecollector/metaonly/zz_generated.deepcopy.go
+++ b/pkg/controller/garbagecollector/metaonly/zz_generated.deepcopy.go
@@ -21,27 +21,9 @@ limitations under the License.
package metaonly
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc {
- return []conversion.GeneratedDeepCopyFunc{
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*MetadataOnlyObject).DeepCopyInto(out.(*MetadataOnlyObject))
- return nil
- }, InType: reflect.TypeOf(&MetadataOnlyObject{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*MetadataOnlyObjectList).DeepCopyInto(out.(*MetadataOnlyObjectList))
- return nil
- }, InType: reflect.TypeOf(&MetadataOnlyObjectList{})},
- }
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *MetadataOnlyObject) DeepCopyInto(out *MetadataOnlyObject) {
*out = *in
diff --git a/pkg/controller/job/BUILD b/pkg/controller/job/BUILD
index 0b9001d80b..a5ab7ba7ae 100644
--- a/pkg/controller/job/BUILD
+++ b/pkg/controller/job/BUILD
@@ -48,8 +48,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/controller/job",
library = ":go_default_library",
deps = [
- "//pkg/api/install:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//pkg/controller:go_default_library",
"//vendor/k8s.io/api/batch/v1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
diff --git a/pkg/controller/job/job_controller_test.go b/pkg/controller/job/job_controller_test.go
index e28fc734ee..4a9ddac1f8 100644
--- a/pkg/controller/job/job_controller_test.go
+++ b/pkg/controller/job/job_controller_test.go
@@ -36,8 +36,8 @@ import (
restclient "k8s.io/client-go/rest"
core "k8s.io/client-go/testing"
"k8s.io/client-go/tools/cache"
- _ "k8s.io/kubernetes/pkg/api/install"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
"k8s.io/kubernetes/pkg/controller"
)
diff --git a/pkg/controller/namespace/deletion/BUILD b/pkg/controller/namespace/deletion/BUILD
index 07f55beeaf..3ff183f2e4 100644
--- a/pkg/controller/namespace/deletion/BUILD
+++ b/pkg/controller/namespace/deletion/BUILD
@@ -32,8 +32,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/controller/namespace/deletion",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
diff --git a/pkg/controller/namespace/deletion/namespaced_resources_deleter_test.go b/pkg/controller/namespace/deletion/namespaced_resources_deleter_test.go
index 8ae9f88a8e..d20cb4b103 100644
--- a/pkg/controller/namespace/deletion/namespaced_resources_deleter_test.go
+++ b/pkg/controller/namespace/deletion/namespaced_resources_deleter_test.go
@@ -36,8 +36,8 @@ import (
"k8s.io/client-go/kubernetes/fake"
restclient "k8s.io/client-go/rest"
core "k8s.io/client-go/testing"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func TestFinalized(t *testing.T) {
diff --git a/pkg/controller/node/ipam/cidrset/cidr_set.go b/pkg/controller/node/ipam/cidrset/cidr_set.go
index c977fd08b8..088c62511b 100644
--- a/pkg/controller/node/ipam/cidrset/cidr_set.go
+++ b/pkg/controller/node/ipam/cidrset/cidr_set.go
@@ -48,30 +48,33 @@ const (
)
var (
- // ErrCIDRRangeNoCIDRsRemaining occurs when there are no more space
+ // ErrCIDRRangeNoCIDRsRemaining occurs when there is no more space
// to allocate CIDR ranges.
ErrCIDRRangeNoCIDRsRemaining = errors.New(
"CIDR allocation failed; there are no remaining CIDRs left to allocate in the accepted range")
+ // ErrCIDRSetSubNetTooBig occurs when the subnet mask size is too
+ // big compared to the CIDR mask size.
+ ErrCIDRSetSubNetTooBig = errors.New(
+ "New CIDR set failed; the node CIDR size is too big")
)
// NewCIDRSet creates a new CidrSet.
-func NewCIDRSet(clusterCIDR *net.IPNet, subNetMaskSize int) *CidrSet {
+func NewCIDRSet(clusterCIDR *net.IPNet, subNetMaskSize int) (*CidrSet, error) {
clusterMask := clusterCIDR.Mask
clusterMaskSize, _ := clusterMask.Size()
var maxCIDRs int
if (clusterCIDR.IP.To4() == nil) && (subNetMaskSize-clusterMaskSize > clusterSubnetMaxDiff) {
- maxCIDRs = 0
- } else {
- maxCIDRs = 1 << uint32(subNetMaskSize-clusterMaskSize)
+ return nil, ErrCIDRSetSubNetTooBig
}
+ maxCIDRs = 1 << uint32(subNetMaskSize-clusterMaskSize)
return &CidrSet{
clusterCIDR: clusterCIDR,
clusterIP: clusterCIDR.IP,
clusterMaskSize: clusterMaskSize,
maxCIDRs: maxCIDRs,
subNetMaskSize: subNetMaskSize,
- }
+ }, nil
}
// TODO: Remove this function when upgrading to go 1.9
diff --git a/pkg/controller/node/ipam/cidrset/cidr_set_test.go b/pkg/controller/node/ipam/cidrset/cidr_set_test.go
index a79cc100a1..826eeba9bd 100644
--- a/pkg/controller/node/ipam/cidrset/cidr_set_test.go
+++ b/pkg/controller/node/ipam/cidrset/cidr_set_test.go
@@ -47,8 +47,10 @@ func TestCIDRSetFullyAllocated(t *testing.T) {
}
for _, tc := range cases {
_, clusterCIDR, _ := net.ParseCIDR(tc.clusterCIDRStr)
- a := NewCIDRSet(clusterCIDR, tc.subNetMaskSize)
-
+ a, err := NewCIDRSet(clusterCIDR, tc.subNetMaskSize)
+ if err != nil {
+ t.Fatalf("unexpected error: %v for %v", err, tc.description)
+ }
p, err := a.AllocateNext()
if err != nil {
t.Fatalf("unexpected error: %v for %v", err, tc.description)
@@ -196,7 +198,10 @@ func TestIndexToCIDRBlock(t *testing.T) {
}
for _, tc := range cases {
_, clusterCIDR, _ := net.ParseCIDR(tc.clusterCIDRStr)
- a := NewCIDRSet(clusterCIDR, tc.subnetMaskSize)
+ a, err := NewCIDRSet(clusterCIDR, tc.subnetMaskSize)
+ if err != nil {
+ t.Fatalf("error for %v ", tc.description)
+ }
cidr := a.indexToCIDRBlock(tc.index)
if cidr.String() != tc.CIDRBlock {
t.Fatalf("error for %v index %d %s", tc.description, tc.index, cidr.String())
@@ -220,7 +225,10 @@ func TestCIDRSet_RandomishAllocation(t *testing.T) {
}
for _, tc := range cases {
_, clusterCIDR, _ := net.ParseCIDR(tc.clusterCIDRStr)
- a := NewCIDRSet(clusterCIDR, 24)
+ a, err := NewCIDRSet(clusterCIDR, 24)
+ if err != nil {
+ t.Fatalf("Error allocating CIDRSet for %v", tc.description)
+ }
// allocate all the CIDRs
var cidrs []*net.IPNet
@@ -232,7 +240,7 @@ func TestCIDRSet_RandomishAllocation(t *testing.T) {
}
}
- var err error
+ //var err error
_, err = a.AllocateNext()
if err == nil {
t.Fatalf("expected error because of fully-allocated range for %v", tc.description)
@@ -278,8 +286,10 @@ func TestCIDRSet_AllocationOccupied(t *testing.T) {
}
for _, tc := range cases {
_, clusterCIDR, _ := net.ParseCIDR(tc.clusterCIDRStr)
- a := NewCIDRSet(clusterCIDR, 24)
-
+ a, err := NewCIDRSet(clusterCIDR, 24)
+ if err != nil {
+ t.Fatalf("Error allocating CIDRSet for %v", tc.description)
+ }
// allocate all the CIDRs
var cidrs []*net.IPNet
var numCIDRs = 256
@@ -292,7 +302,7 @@ func TestCIDRSet_AllocationOccupied(t *testing.T) {
}
}
- var err error
+ //var err error
_, err = a.AllocateNext()
if err == nil {
t.Fatalf("expected error because of fully-allocated range for %v", tc.description)
@@ -457,8 +467,10 @@ func TestGetBitforCIDR(t *testing.T) {
t.Fatalf("unexpected error: %v for %v", err, tc.description)
}
- cs := NewCIDRSet(clusterCIDR, tc.subNetMaskSize)
-
+ cs, err := NewCIDRSet(clusterCIDR, tc.subNetMaskSize)
+ if err != nil {
+ t.Fatalf("Error allocating CIDRSet for %v", tc.description)
+ }
_, subnetCIDR, err := net.ParseCIDR(tc.subNetCIDRStr)
if err != nil {
t.Fatalf("unexpected error: %v for %v", err, tc.description)
@@ -625,7 +637,10 @@ func TestOccupy(t *testing.T) {
t.Fatalf("unexpected error: %v for %v", err, tc.description)
}
- cs := NewCIDRSet(clusterCIDR, tc.subNetMaskSize)
+ cs, err := NewCIDRSet(clusterCIDR, tc.subNetMaskSize)
+ if err != nil {
+ t.Fatalf("Error allocating CIDRSet for %v", tc.description)
+ }
_, subnetCIDR, err := net.ParseCIDR(tc.subNetCIDRStr)
if err != nil {
@@ -686,7 +701,13 @@ func TestCIDRSetv6(t *testing.T) {
}
for _, tc := range cases {
_, clusterCIDR, _ := net.ParseCIDR(tc.clusterCIDRStr)
- a := NewCIDRSet(clusterCIDR, tc.subNetMaskSize)
+ a, err := NewCIDRSet(clusterCIDR, tc.subNetMaskSize)
+ if err != nil {
+ if tc.expectErr {
+ continue
+ }
+ t.Fatalf("Error allocating CIDRSet for %v", tc.description)
+ }
p, err := a.AllocateNext()
if err == nil && tc.expectErr {
diff --git a/pkg/controller/node/ipam/controller.go b/pkg/controller/node/ipam/controller.go
index f8a2375678..4b1221b678 100644
--- a/pkg/controller/node/ipam/controller.go
+++ b/pkg/controller/node/ipam/controller.go
@@ -76,11 +76,16 @@ func NewController(
return nil, fmt.Errorf("cloud IPAM controller does not support %q provider", cloud.ProviderName())
}
+ set, err := cidrset.NewCIDRSet(clusterCIDR, nodeCIDRMaskSize)
+ if err != nil {
+ return nil, err
+ }
+
c := &Controller{
config: config,
adapter: newAdapter(kubeClient, gceCloud),
syncers: make(map[string]*nodesync.NodeSync),
- set: cidrset.NewCIDRSet(clusterCIDR, nodeCIDRMaskSize),
+ set: set,
}
if err := occupyServiceCIDR(c.set, clusterCIDR, serviceCIDR); err != nil {
diff --git a/pkg/controller/node/ipam/controller_test.go b/pkg/controller/node/ipam/controller_test.go
index 22baf2081b..14fbb4340f 100644
--- a/pkg/controller/node/ipam/controller_test.go
+++ b/pkg/controller/node/ipam/controller_test.go
@@ -37,7 +37,10 @@ TestCase:
{"10.2.0.0/24"},
} {
serviceCIDR := test.MustParseCIDR(tc.serviceCIDR)
- set := cidrset.NewCIDRSet(test.MustParseCIDR(clusterCIDR), 24)
+ set, err := cidrset.NewCIDRSet(test.MustParseCIDR(clusterCIDR), 24)
+ if err != nil {
+ t.Errorf("test case %+v: NewCIDRSet() = %v, want nil", tc, err)
+ }
if err := occupyServiceCIDR(set, test.MustParseCIDR(clusterCIDR), serviceCIDR); err != nil {
t.Errorf("test case %+v: occupyServiceCIDR() = %v, want nil", tc, err)
}
diff --git a/pkg/controller/node/ipam/range_allocator.go b/pkg/controller/node/ipam/range_allocator.go
index 5fdb90145a..102eac43d8 100644
--- a/pkg/controller/node/ipam/range_allocator.go
+++ b/pkg/controller/node/ipam/range_allocator.go
@@ -70,9 +70,13 @@ func NewCIDRRangeAllocator(client clientset.Interface, clusterCIDR *net.IPNet, s
glog.V(0).Infof("Sending events to api server.")
eventBroadcaster.StartRecordingToSink(&v1core.EventSinkImpl{Interface: v1core.New(client.CoreV1().RESTClient()).Events("")})
+ set, err := cidrset.NewCIDRSet(clusterCIDR, subNetMaskSize)
+ if err != nil {
+ return nil, err
+ }
ra := &rangeAllocator{
client: client,
- cidrs: cidrset.NewCIDRSet(clusterCIDR, subNetMaskSize),
+ cidrs: set,
clusterCIDR: clusterCIDR,
nodeCIDRUpdateChannel: make(chan nodeAndCIDR, cidrUpdateQueueSize),
recorder: recorder,
diff --git a/pkg/controller/node/ipam/sync/sync_test.go b/pkg/controller/node/ipam/sync/sync_test.go
index 15d3e1b5b3..d326848043 100644
--- a/pkg/controller/node/ipam/sync/sync_test.go
+++ b/pkg/controller/node/ipam/sync/sync_test.go
@@ -194,7 +194,8 @@ func TestNodeSyncUpdate(t *testing.T) {
wantError: false,
},
} {
- sync := New(&tc.fake, &tc.fake, &tc.fake, tc.mode, "node1", cidrset.NewCIDRSet(clusterCIDRRange, 24))
+ cidr, _ := cidrset.NewCIDRSet(clusterCIDRRange, 24)
+ sync := New(&tc.fake, &tc.fake, &tc.fake, tc.mode, "node1", cidr)
doneChan := make(chan struct{})
// Do a single step of the loop.
@@ -225,7 +226,8 @@ func TestNodeSyncResync(t *testing.T) {
resyncTimeout: time.Millisecond,
reportChan: make(chan struct{}),
}
- sync := New(fake, fake, fake, SyncFromCluster, "node1", cidrset.NewCIDRSet(clusterCIDRRange, 24))
+ cidr, _ := cidrset.NewCIDRSet(clusterCIDRRange, 24)
+ sync := New(fake, fake, fake, SyncFromCluster, "node1", cidr)
doneChan := make(chan struct{})
go sync.Loop(doneChan)
@@ -267,7 +269,8 @@ func TestNodeSyncDelete(t *testing.T) {
},
},
} {
- sync := New(&tc.fake, &tc.fake, &tc.fake, tc.mode, "node1", cidrset.NewCIDRSet(clusterCIDRRange, 24))
+ cidr, _ := cidrset.NewCIDRSet(clusterCIDRRange, 24)
+ sync := New(&tc.fake, &tc.fake, &tc.fake, tc.mode, "node1", cidr)
doneChan := make(chan struct{})
// Do a single step of the loop.
diff --git a/pkg/controller/node/scheduler/BUILD b/pkg/controller/node/scheduler/BUILD
index 4c57a38286..eb64653514 100644
--- a/pkg/controller/node/scheduler/BUILD
+++ b/pkg/controller/node/scheduler/BUILD
@@ -35,8 +35,8 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/controller/node/scheduler",
deps = [
- "//pkg/api/helper:go_default_library",
- "//pkg/api/v1/helper:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
diff --git a/pkg/controller/node/scheduler/taint_controller.go b/pkg/controller/node/scheduler/taint_controller.go
index 574752a6b2..bf641f69fb 100644
--- a/pkg/controller/node/scheduler/taint_controller.go
+++ b/pkg/controller/node/scheduler/taint_controller.go
@@ -23,8 +23,8 @@ import (
"k8s.io/api/core/v1"
clientset "k8s.io/client-go/kubernetes"
- "k8s.io/kubernetes/pkg/api/helper"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/fields"
diff --git a/pkg/controller/node/util/BUILD b/pkg/controller/node/util/BUILD
index 2f55c24c34..b14d0cb926 100644
--- a/pkg/controller/node/util/BUILD
+++ b/pkg/controller/node/util/BUILD
@@ -10,7 +10,7 @@ go_library(
srcs = ["controller_utils.go"],
importpath = "k8s.io/kubernetes/pkg/controller/node/util",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/cloudprovider:go_default_library",
"//pkg/controller:go_default_library",
"//pkg/kubelet/util/format:go_default_library",
diff --git a/pkg/controller/node/util/controller_utils.go b/pkg/controller/node/util/controller_utils.go
index 34e1ff0f45..a9d8e08fad 100644
--- a/pkg/controller/node/util/controller_utils.go
+++ b/pkg/controller/node/util/controller_utils.go
@@ -33,7 +33,7 @@ import (
"k8s.io/api/core/v1"
clientset "k8s.io/client-go/kubernetes"
extensionslisters "k8s.io/client-go/listers/extensions/v1beta1"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/cloudprovider"
"k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/kubelet/util/format"
diff --git a/pkg/controller/podautoscaler/BUILD b/pkg/controller/podautoscaler/BUILD
index b0fa8efaa3..08701232be 100644
--- a/pkg/controller/podautoscaler/BUILD
+++ b/pkg/controller/podautoscaler/BUILD
@@ -58,10 +58,10 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/controller/podautoscaler",
library = ":go_default_library",
deps = [
- "//pkg/api/install:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/apis/autoscaling:go_default_library",
"//pkg/apis/autoscaling/install:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//pkg/apis/extensions/install:go_default_library",
"//pkg/controller:go_default_library",
"//pkg/controller/podautoscaler/metrics:go_default_library",
diff --git a/pkg/controller/podautoscaler/legacy_horizontal_test.go b/pkg/controller/podautoscaler/legacy_horizontal_test.go
index 72eeade211..ba12990b46 100644
--- a/pkg/controller/podautoscaler/legacy_horizontal_test.go
+++ b/pkg/controller/podautoscaler/legacy_horizontal_test.go
@@ -50,8 +50,8 @@ import (
"github.com/stretchr/testify/assert"
- _ "k8s.io/kubernetes/pkg/api/install"
_ "k8s.io/kubernetes/pkg/apis/autoscaling/install"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
_ "k8s.io/kubernetes/pkg/apis/extensions/install"
)
diff --git a/pkg/controller/replication/BUILD b/pkg/controller/replication/BUILD
index c967cc02a6..17eb6701a8 100644
--- a/pkg/controller/replication/BUILD
+++ b/pkg/controller/replication/BUILD
@@ -16,7 +16,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/controller/replication",
deps = [
- "//pkg/api/v1:go_default_library",
+ "//pkg/apis/core/v1:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/apis/extensions/v1beta1:go_default_library",
"//pkg/controller:go_default_library",
diff --git a/pkg/controller/replication/conversion.go b/pkg/controller/replication/conversion.go
index 81d747de53..67c1847a95 100644
--- a/pkg/controller/replication/conversion.go
+++ b/pkg/controller/replication/conversion.go
@@ -43,7 +43,7 @@ import (
v1listers "k8s.io/client-go/listers/core/v1"
extensionslisters "k8s.io/client-go/listers/extensions/v1beta1"
"k8s.io/client-go/tools/cache"
- apiv1 "k8s.io/kubernetes/pkg/api/v1"
+ apiv1 "k8s.io/kubernetes/pkg/apis/core/v1"
"k8s.io/kubernetes/pkg/apis/extensions"
extensionsinternalv1beta1 "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
"k8s.io/kubernetes/pkg/controller"
diff --git a/pkg/controller/resourcequota/BUILD b/pkg/controller/resourcequota/BUILD
index dd47659ea5..2b4bf45648 100644
--- a/pkg/controller/resourcequota/BUILD
+++ b/pkg/controller/resourcequota/BUILD
@@ -15,8 +15,8 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/controller/resourcequota",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/v1:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/v1:go_default_library",
"//pkg/controller:go_default_library",
"//pkg/quota:go_default_library",
"//pkg/quota/evaluator/core:go_default_library",
diff --git a/pkg/controller/resourcequota/resource_quota_controller.go b/pkg/controller/resourcequota/resource_quota_controller.go
index 8964090022..7ac8d350ac 100644
--- a/pkg/controller/resourcequota/resource_quota_controller.go
+++ b/pkg/controller/resourcequota/resource_quota_controller.go
@@ -39,8 +39,8 @@ import (
corelisters "k8s.io/client-go/listers/core/v1"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/util/workqueue"
- "k8s.io/kubernetes/pkg/api"
- k8s_api_v1 "k8s.io/kubernetes/pkg/api/v1"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ k8s_api_v1 "k8s.io/kubernetes/pkg/apis/core/v1"
"k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/quota"
)
@@ -320,7 +320,7 @@ func (rq *ResourceQuotaController) syncResourceQuota(v1ResourceQuota *v1.Resourc
dirty := !apiequality.Semantic.DeepEqual(v1ResourceQuota.Spec.Hard, v1ResourceQuota.Status.Hard)
resourceQuota := api.ResourceQuota{}
- if err := k8s_api_v1.Convert_v1_ResourceQuota_To_api_ResourceQuota(v1ResourceQuota, &resourceQuota, nil); err != nil {
+ if err := k8s_api_v1.Convert_v1_ResourceQuota_To_core_ResourceQuota(v1ResourceQuota, &resourceQuota, nil); err != nil {
return err
}
@@ -367,7 +367,7 @@ func (rq *ResourceQuotaController) syncResourceQuota(v1ResourceQuota *v1.Resourc
// there was a change observed by this controller that requires we update quota
if dirty {
v1Usage := &v1.ResourceQuota{}
- if err := k8s_api_v1.Convert_api_ResourceQuota_To_v1_ResourceQuota(&usage, v1Usage, nil); err != nil {
+ if err := k8s_api_v1.Convert_core_ResourceQuota_To_v1_ResourceQuota(&usage, v1Usage, nil); err != nil {
return err
}
_, err = rq.rqClient.ResourceQuotas(usage.Namespace).UpdateStatus(v1Usage)
@@ -402,7 +402,7 @@ func (rq *ResourceQuotaController) replenishQuota(groupResource schema.GroupReso
for i := range resourceQuotas {
resourceQuota := resourceQuotas[i]
internalResourceQuota := &api.ResourceQuota{}
- if err := k8s_api_v1.Convert_v1_ResourceQuota_To_api_ResourceQuota(resourceQuota, internalResourceQuota, nil); err != nil {
+ if err := k8s_api_v1.Convert_v1_ResourceQuota_To_core_ResourceQuota(resourceQuota, internalResourceQuota, nil); err != nil {
glog.Error(err)
continue
}
diff --git a/pkg/controller/service/BUILD b/pkg/controller/service/BUILD
index 11766c49ca..cfb191f9ca 100644
--- a/pkg/controller/service/BUILD
+++ b/pkg/controller/service/BUILD
@@ -14,7 +14,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/controller/service",
deps = [
- "//pkg/api/v1/helper:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
"//pkg/cloudprovider:go_default_library",
"//pkg/controller:go_default_library",
"//pkg/features:go_default_library",
diff --git a/pkg/controller/service/service_controller.go b/pkg/controller/service/service_controller.go
index 1c5bcff604..2b2ff2be8e 100644
--- a/pkg/controller/service/service_controller.go
+++ b/pkg/controller/service/service_controller.go
@@ -38,7 +38,7 @@ import (
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/tools/record"
"k8s.io/client-go/util/workqueue"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
"k8s.io/kubernetes/pkg/cloudprovider"
"k8s.io/kubernetes/pkg/controller"
kubefeatures "k8s.io/kubernetes/pkg/features"
diff --git a/pkg/controller/serviceaccount/BUILD b/pkg/controller/serviceaccount/BUILD
index 85d5012bbd..ef389de512 100644
--- a/pkg/controller/serviceaccount/BUILD
+++ b/pkg/controller/serviceaccount/BUILD
@@ -16,7 +16,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/controller/serviceaccount",
deps = [
- "//pkg/api/v1:go_default_library",
+ "//pkg/apis/core/v1:go_default_library",
"//pkg/controller:go_default_library",
"//pkg/registry/core/secret:go_default_library",
"//pkg/registry/core/secret/storage:go_default_library",
@@ -54,7 +54,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/controller/serviceaccount",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/controller:go_default_library",
"//vendor/github.com/davecgh/go-spew/spew:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
diff --git a/pkg/controller/serviceaccount/tokengetter.go b/pkg/controller/serviceaccount/tokengetter.go
index 08e7cd1ce4..d21f578b29 100644
--- a/pkg/controller/serviceaccount/tokengetter.go
+++ b/pkg/controller/serviceaccount/tokengetter.go
@@ -23,7 +23,7 @@ import (
"k8s.io/apiserver/pkg/registry/generic"
"k8s.io/apiserver/pkg/storage/storagebackend"
clientset "k8s.io/client-go/kubernetes"
- apiv1 "k8s.io/kubernetes/pkg/api/v1"
+ apiv1 "k8s.io/kubernetes/pkg/apis/core/v1"
"k8s.io/kubernetes/pkg/registry/core/secret"
secretstore "k8s.io/kubernetes/pkg/registry/core/secret/storage"
serviceaccountregistry "k8s.io/kubernetes/pkg/registry/core/serviceaccount"
@@ -68,7 +68,7 @@ func (r *registryGetter) GetServiceAccount(namespace, name string) (*v1.ServiceA
return nil, err
}
v1ServiceAccount := v1.ServiceAccount{}
- err = apiv1.Convert_api_ServiceAccount_To_v1_ServiceAccount(internalServiceAccount, &v1ServiceAccount, nil)
+ err = apiv1.Convert_core_ServiceAccount_To_v1_ServiceAccount(internalServiceAccount, &v1ServiceAccount, nil)
return &v1ServiceAccount, err
}
@@ -79,7 +79,7 @@ func (r *registryGetter) GetSecret(namespace, name string) (*v1.Secret, error) {
return nil, err
}
v1Secret := v1.Secret{}
- err = apiv1.Convert_api_Secret_To_v1_Secret(internalSecret, &v1Secret, nil)
+ err = apiv1.Convert_core_Secret_To_v1_Secret(internalSecret, &v1Secret, nil)
return &v1Secret, err
}
diff --git a/pkg/controller/serviceaccount/tokens_controller_test.go b/pkg/controller/serviceaccount/tokens_controller_test.go
index a416c1ec90..bacf60500c 100644
--- a/pkg/controller/serviceaccount/tokens_controller_test.go
+++ b/pkg/controller/serviceaccount/tokens_controller_test.go
@@ -34,7 +34,7 @@ import (
"k8s.io/client-go/informers"
"k8s.io/client-go/kubernetes/fake"
core "k8s.io/client-go/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/controller"
)
diff --git a/pkg/controller/statefulset/BUILD b/pkg/controller/statefulset/BUILD
index d2203271fa..d35a9de078 100644
--- a/pkg/controller/statefulset/BUILD
+++ b/pkg/controller/statefulset/BUILD
@@ -57,9 +57,9 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/controller/statefulset",
library = ":go_default_library",
deps = [
- "//pkg/api/install:go_default_library",
"//pkg/api/v1/pod:go_default_library",
"//pkg/apis/apps/install:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//pkg/controller:go_default_library",
"//pkg/controller/history:go_default_library",
"//vendor/k8s.io/api/apps/v1beta1:go_default_library",
diff --git a/pkg/controller/statefulset/stateful_pod_control_test.go b/pkg/controller/statefulset/stateful_pod_control_test.go
index 9d397930a7..31ea8ac467 100644
--- a/pkg/controller/statefulset/stateful_pod_control_test.go
+++ b/pkg/controller/statefulset/stateful_pod_control_test.go
@@ -31,8 +31,8 @@ import (
"k8s.io/api/core/v1"
"k8s.io/client-go/kubernetes/fake"
corelisters "k8s.io/client-go/listers/core/v1"
- _ "k8s.io/kubernetes/pkg/api/install"
_ "k8s.io/kubernetes/pkg/apis/apps/install"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
)
func TestStatefulPodControlCreatesPods(t *testing.T) {
diff --git a/pkg/controller/testutil/BUILD b/pkg/controller/testutil/BUILD
index 8d835ddd67..0bfd0d077c 100644
--- a/pkg/controller/testutil/BUILD
+++ b/pkg/controller/testutil/BUILD
@@ -10,8 +10,8 @@ go_library(
srcs = ["test_utils.go"],
importpath = "k8s.io/kubernetes/pkg/controller/testutil",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/util/node:go_default_library",
"//vendor/github.com/evanphx/json-patch:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
diff --git a/pkg/controller/testutil/test_utils.go b/pkg/controller/testutil/test_utils.go
index 3a3dc13468..1ecada1f6f 100644
--- a/pkg/controller/testutil/test_utils.go
+++ b/pkg/controller/testutil/test_utils.go
@@ -38,8 +38,8 @@ import (
"k8s.io/api/core/v1"
"k8s.io/client-go/kubernetes/fake"
v1core "k8s.io/client-go/kubernetes/typed/core/v1"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ api "k8s.io/kubernetes/pkg/apis/core"
utilnode "k8s.io/kubernetes/pkg/util/node"
jsonpatch "github.com/evanphx/json-patch"
diff --git a/pkg/controller/volume/persistentvolume/BUILD b/pkg/controller/volume/persistentvolume/BUILD
index e2871ab095..a9899d788b 100644
--- a/pkg/controller/volume/persistentvolume/BUILD
+++ b/pkg/controller/volume/persistentvolume/BUILD
@@ -16,7 +16,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/controller/volume/persistentvolume",
deps = [
- "//pkg/api/v1/helper:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
"//pkg/cloudprovider:go_default_library",
"//pkg/controller:go_default_library",
"//pkg/controller/volume/events:go_default_library",
@@ -65,8 +65,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/controller/volume/persistentvolume",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/testapi:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/controller:go_default_library",
"//pkg/volume:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
diff --git a/pkg/controller/volume/persistentvolume/index.go b/pkg/controller/volume/persistentvolume/index.go
index e9a40fe1c8..d39fca6d21 100644
--- a/pkg/controller/volume/persistentvolume/index.go
+++ b/pkg/controller/volume/persistentvolume/index.go
@@ -25,7 +25,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/client-go/tools/cache"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
"k8s.io/kubernetes/pkg/volume"
)
diff --git a/pkg/controller/volume/persistentvolume/provision_test.go b/pkg/controller/volume/persistentvolume/provision_test.go
index db247b080c..15b8987090 100644
--- a/pkg/controller/volume/persistentvolume/provision_test.go
+++ b/pkg/controller/volume/persistentvolume/provision_test.go
@@ -24,7 +24,7 @@ import (
storage "k8s.io/api/storage/v1"
apierrs "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
var class1Parameters = map[string]string{
diff --git a/pkg/controller/volume/persistentvolume/pv_controller.go b/pkg/controller/volume/persistentvolume/pv_controller.go
index efe3b511ad..ebcb38995a 100644
--- a/pkg/controller/volume/persistentvolume/pv_controller.go
+++ b/pkg/controller/volume/persistentvolume/pv_controller.go
@@ -34,7 +34,7 @@ import (
"k8s.io/client-go/tools/record"
ref "k8s.io/client-go/tools/reference"
"k8s.io/client-go/util/workqueue"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
"k8s.io/kubernetes/pkg/cloudprovider"
"k8s.io/kubernetes/pkg/controller/volume/events"
"k8s.io/kubernetes/pkg/util/goroutinemap"
diff --git a/pkg/controller/volume/persistentvolume/pv_controller_base.go b/pkg/controller/volume/persistentvolume/pv_controller_base.go
index f40086a803..2ba5d831cb 100644
--- a/pkg/controller/volume/persistentvolume/pv_controller_base.go
+++ b/pkg/controller/volume/persistentvolume/pv_controller_base.go
@@ -243,11 +243,15 @@ func (ctrl *PersistentVolumeController) deleteClaim(claim *v1.PersistentVolumeCl
_ = ctrl.claims.Delete(claim)
glog.V(4).Infof("claim %q deleted", claimToClaimKey(claim))
+ volumeName := claim.Spec.VolumeName
+ if volumeName == "" {
+ glog.V(5).Infof("deleteClaim[%q]: volume not bound", claimToClaimKey(claim))
+ return
+ }
// sync the volume when its claim is deleted. Explicitly sync'ing the
// volume here in response to claim deletion prevents the volume from
// waiting until the next sync period for its Release.
- volumeName := claim.Spec.VolumeName
- glog.V(5).Infof("deleteClaim[%s]: scheduling sync of volume %q", claimToClaimKey(claim), volumeName)
+ glog.V(5).Infof("deleteClaim[%q]: scheduling sync of volume %s", claimToClaimKey(claim), volumeName)
ctrl.volumeQueue.Add(volumeName)
}
diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go
index 197397c472..9e6a61274a 100644
--- a/pkg/features/kube_features.go
+++ b/pkg/features/kube_features.go
@@ -169,6 +169,12 @@ const (
//
// Enable nodes to exclude themselves from service load balancers
ServiceNodeExclusion utilfeature.Feature = "ServiceNodeExclusion"
+
+ // owner: @jsafrane
+ // alpha: v1.9
+ //
+ // Enable running mount utilities in containers.
+ MountContainers utilfeature.Feature = "MountContainers"
)
func init() {
@@ -201,6 +207,7 @@ var defaultKubernetesFeatureGates = map[utilfeature.Feature]utilfeature.FeatureS
ExpandPersistentVolumes: {Default: false, PreRelease: utilfeature.Alpha},
CPUManager: {Default: false, PreRelease: utilfeature.Alpha},
ServiceNodeExclusion: {Default: false, PreRelease: utilfeature.Alpha},
+ MountContainers: {Default: false, PreRelease: utilfeature.Alpha},
// inherited features from generic apiserver, relisted here to get a conflict if it is changed
// unintentionally on either side:
diff --git a/pkg/generated/bindata.go b/pkg/generated/bindata.go
index b7e8c56798..e926127d8b 100644
--- a/pkg/generated/bindata.go
+++ b/pkg/generated/bindata.go
@@ -383,8 +383,8 @@ msgstr ""
msgid ""
"\n"
"\t\t# Auto scale a deployment \"foo\", with the number of pods between 2 and "
-"10, target CPU utilization specified so a default autoscaling policy will be "
-"used:\n"
+"10, no target CPU utilization specified so a default autoscaling policy will "
+"be used:\n"
"\t\tkubectl autoscale deployment foo --min=2 --max=10\n"
"\n"
"\t\t# Auto scale a replication controller \"foo\", with the number of pods "
@@ -3606,8 +3606,8 @@ msgstr ""
msgid ""
"\n"
"\t\t# Auto scale a deployment \"foo\", with the number of pods between 2 and "
-"10, target CPU utilization specified so a default autoscaling policy will be "
-"used:\n"
+"10, no target CPU utilization specified so a default autoscaling policy will "
+"be used:\n"
"\t\tkubectl autoscale deployment foo --min=2 --max=10\n"
"\n"
"\t\t# Auto scale a replication controller \"foo\", with the number of pods "
@@ -3616,8 +3616,8 @@ msgid ""
msgstr ""
"\n"
"\t\t# Auto scale a deployment \"foo\", with the number of pods between 2 and "
-"10, target CPU utilization specified so a default autoscaling policy will be "
-"used:\n"
+"10, no target CPU utilization specified so a default autoscaling policy will "
+"be used:\n"
"\t\tkubectl autoscale deployment foo --min=2 --max=10\n"
"\n"
"\t\t# Auto scale a replication controller \"foo\", with the number of pods "
@@ -7083,8 +7083,8 @@ msgstr ""
msgid ""
"\n"
"\t\t# Auto scale a deployment \"foo\", with the number of pods between 2 and "
-"10, target CPU utilization specified so a default autoscaling policy will be "
-"used:\n"
+"10, no target CPU utilization specified so a default autoscaling policy will "
+"be used:\n"
"\t\tkubectl autoscale deployment foo --min=2 --max=10\n"
"\n"
"\t\t# Auto scale a replication controller \"foo\", with the number of pods "
@@ -7093,8 +7093,8 @@ msgid ""
msgstr ""
"\n"
"\t\t# Auto scale a deployment \"foo\", with the number of pods between 2 and "
-"10, target CPU utilization specified so a default autoscaling policy will be "
-"used:\n"
+"10, no target CPU utilization specified so a default autoscaling policy will "
+"be used:\n"
"\t\tkubectl autoscale deployment foo --min=2 --max=10\n"
"\n"
"\t\t# Auto scale a replication controller \"foo\", with the number of pods "
@@ -10690,8 +10690,8 @@ msgstr ""
msgid ""
"\n"
"\t\t# Auto scale a deployment \"foo\", with the number of pods between 2 and "
-"10, target CPU utilization specified so a default autoscaling policy will be "
-"used:\n"
+"10, no target CPU utilization specified so a default autoscaling policy will "
+"be used:\n"
"\t\tkubectl autoscale deployment foo --min=2 --max=10\n"
"\n"
"\t\t# Auto scale a replication controller \"foo\", with the number of pods "
@@ -14096,8 +14096,8 @@ msgstr ""
msgid ""
"\n"
"\t\t# Auto scale a deployment \"foo\", with the number of pods between 2 and "
-"10, target CPU utilization specified so a default autoscaling policy will be "
-"used:\n"
+"10, no target CPU utilization specified so a default autoscaling policy will "
+"be used:\n"
"\t\tkubectl autoscale deployment foo --min=2 --max=10\n"
"\n"
"\t\t# Auto scale a replication controller \"foo\", with the number of pods "
diff --git a/pkg/generated/openapi/BUILD b/pkg/generated/openapi/BUILD
index 0554244459..f76158b4fc 100644
--- a/pkg/generated/openapi/BUILD
+++ b/pkg/generated/openapi/BUILD
@@ -59,6 +59,7 @@ openapi_library(
"k8s.io/apiserver/pkg/apis/audit/v1alpha1",
"k8s.io/apiserver/pkg/apis/audit/v1beta1",
"k8s.io/apiserver/pkg/apis/example/v1",
+ "k8s.io/apiserver/pkg/apis/example2/v1",
"k8s.io/client-go/pkg/version",
"k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1",
"k8s.io/metrics/pkg/apis/custom_metrics/v1beta1",
diff --git a/pkg/kubeapiserver/BUILD b/pkg/kubeapiserver/BUILD
index 1d6e41b37b..e72de1f9f9 100644
--- a/pkg/kubeapiserver/BUILD
+++ b/pkg/kubeapiserver/BUILD
@@ -49,8 +49,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/kubeapiserver",
library = ":go_default_library",
deps = [
- "//pkg/api/install:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//pkg/apis/extensions/install:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/api/extensions/v1beta1:go_default_library",
diff --git a/pkg/kubeapiserver/default_storage_factory_builder_test.go b/pkg/kubeapiserver/default_storage_factory_builder_test.go
index 9e2c92cd27..b5c9b4d886 100644
--- a/pkg/kubeapiserver/default_storage_factory_builder_test.go
+++ b/pkg/kubeapiserver/default_storage_factory_builder_test.go
@@ -24,8 +24,8 @@ import (
extensionsapiv1beta1 "k8s.io/api/extensions/v1beta1"
"k8s.io/apimachinery/pkg/runtime/schema"
serverstorage "k8s.io/apiserver/pkg/server/storage"
- _ "k8s.io/kubernetes/pkg/api/install"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
_ "k8s.io/kubernetes/pkg/apis/extensions/install"
)
diff --git a/pkg/kubeapiserver/server/insecure_handler.go b/pkg/kubeapiserver/server/insecure_handler.go
index 8186a0ac7a..cc7c0a79de 100644
--- a/pkg/kubeapiserver/server/insecure_handler.go
+++ b/pkg/kubeapiserver/server/insecure_handler.go
@@ -19,6 +19,7 @@ package server
import (
"net"
"net/http"
+ "time"
"github.com/golang/glog"
@@ -45,11 +46,12 @@ func BuildInsecureHandlerChain(apiHandler http.Handler, c *server.Config) http.H
}
handler = genericapifilters.WithAuthentication(handler, c.RequestContextMapper, insecureSuperuser{}, nil)
handler = genericfilters.WithCORS(handler, c.CorsAllowedOriginList, nil, nil, nil, "true")
- handler = genericfilters.WithPanicRecovery(handler)
handler = genericfilters.WithTimeoutForNonLongRunningRequests(handler, c.RequestContextMapper, c.LongRunningFunc, c.RequestTimeout)
handler = genericfilters.WithMaxInFlightLimit(handler, c.MaxRequestsInFlight, c.MaxMutatingRequestsInFlight, c.RequestContextMapper, c.LongRunningFunc)
+ handler = genericfilters.WithWaitGroup(handler, c.RequestContextMapper, c.LongRunningFunc, c.HandlerChainWaitGroup)
handler = genericapifilters.WithRequestInfo(handler, server.NewRequestInfoResolver(c), c.RequestContextMapper)
handler = apirequest.WithRequestContext(handler, c.RequestContextMapper)
+ handler = genericfilters.WithPanicRecovery(handler)
return handler
}
@@ -84,12 +86,12 @@ func (s *InsecureServingInfo) NewLoopbackClientConfig(token string) (*rest.Confi
// NonBlockingRun spawns the insecure http server. An error is
// returned if the ports cannot be listened on.
-func NonBlockingRun(insecureServingInfo *InsecureServingInfo, insecureHandler http.Handler, stopCh <-chan struct{}) error {
+func NonBlockingRun(insecureServingInfo *InsecureServingInfo, insecureHandler http.Handler, shutDownTimeout time.Duration, stopCh <-chan struct{}) error {
// Use an internal stop channel to allow cleanup of the listeners on error.
internalStopCh := make(chan struct{})
if insecureServingInfo != nil && insecureHandler != nil {
- if err := serveInsecurely(insecureServingInfo, insecureHandler, internalStopCh); err != nil {
+ if err := serveInsecurely(insecureServingInfo, insecureHandler, shutDownTimeout, internalStopCh); err != nil {
close(internalStopCh)
return err
}
@@ -109,7 +111,7 @@ func NonBlockingRun(insecureServingInfo *InsecureServingInfo, insecureHandler ht
// serveInsecurely run the insecure http server. It fails only if the initial listen
// call fails. The actual server loop (stoppable by closing stopCh) runs in a go
// routine, i.e. serveInsecurely does not block.
-func serveInsecurely(insecureServingInfo *InsecureServingInfo, insecureHandler http.Handler, stopCh <-chan struct{}) error {
+func serveInsecurely(insecureServingInfo *InsecureServingInfo, insecureHandler http.Handler, shutDownTimeout time.Duration, stopCh <-chan struct{}) error {
insecureServer := &http.Server{
Addr: insecureServingInfo.BindAddress,
Handler: insecureHandler,
@@ -117,7 +119,7 @@ func serveInsecurely(insecureServingInfo *InsecureServingInfo, insecureHandler h
}
glog.Infof("Serving insecurely on %s", insecureServingInfo.BindAddress)
var err error
- _, err = server.RunServer(insecureServer, insecureServingInfo.BindNetwork, stopCh)
+ _, err = server.RunServer(insecureServer, insecureServingInfo.BindNetwork, shutDownTimeout, stopCh)
return err
}
diff --git a/pkg/kubectl/.import-restrictions b/pkg/kubectl/.import-restrictions
index 6b2d9f39ae..cedbea71e7 100644
--- a/pkg/kubectl/.import-restrictions
+++ b/pkg/kubectl/.import-restrictions
@@ -4,20 +4,13 @@
"AllowedPrefixes": [
"k8s.io/kubernetes/pkg/api",
"k8s.io/kubernetes/pkg/api/events",
- "k8s.io/kubernetes/pkg/api/helper",
- "k8s.io/kubernetes/pkg/api/helper/qos",
- "k8s.io/kubernetes/pkg/api/install",
"k8s.io/kubernetes/pkg/api/legacyscheme",
"k8s.io/kubernetes/pkg/api/pod",
"k8s.io/kubernetes/pkg/api/ref",
"k8s.io/kubernetes/pkg/api/resource",
"k8s.io/kubernetes/pkg/api/service",
- "k8s.io/kubernetes/pkg/api/v1",
- "k8s.io/kubernetes/pkg/api/v1/helper",
- "k8s.io/kubernetes/pkg/api/v1/helper/qos",
"k8s.io/kubernetes/pkg/api/v1/pod",
"k8s.io/kubernetes/pkg/api/v1/service",
- "k8s.io/kubernetes/pkg/api/validation",
"k8s.io/kubernetes/pkg/apis/admissionregistration",
"k8s.io/kubernetes/pkg/apis/admissionregistration/install",
"k8s.io/kubernetes/pkg/apis/admissionregistration/v1alpha1",
@@ -49,6 +42,14 @@
"k8s.io/kubernetes/pkg/apis/componentconfig",
"k8s.io/kubernetes/pkg/apis/componentconfig/install",
"k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1",
+ "k8s.io/kubernetes/pkg/apis/core",
+ "k8s.io/kubernetes/pkg/apis/core/helper",
+ "k8s.io/kubernetes/pkg/apis/core/helper/qos",
+ "k8s.io/kubernetes/pkg/apis/core/install",
+ "k8s.io/kubernetes/pkg/apis/core/v1",
+ "k8s.io/kubernetes/pkg/apis/core/v1/helper",
+ "k8s.io/kubernetes/pkg/apis/core/v1/helper/qos",
+ "k8s.io/kubernetes/pkg/apis/core/validation",
"k8s.io/kubernetes/pkg/apis/extensions",
"k8s.io/kubernetes/pkg/apis/extensions/install",
"k8s.io/kubernetes/pkg/apis/extensions/v1beta1",
diff --git a/pkg/kubectl/BUILD b/pkg/kubectl/BUILD
index 073c05d09d..2c6a7b2f3d 100644
--- a/pkg/kubectl/BUILD
+++ b/pkg/kubectl/BUILD
@@ -16,8 +16,10 @@ go_test(
"deployment_test.go",
"env_file_test.go",
"generate_test.go",
+ "history_test.go",
"namespace_test.go",
"pdb_test.go",
+ "priorityclass_test.go",
"quota_test.go",
"resource_filter_test.go",
"rolebinding_test.go",
@@ -36,11 +38,11 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/kubectl",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/api/testing:go_default_library",
"//pkg/apis/batch:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/clientset_generated/internalclientset/fake:go_default_library",
@@ -60,6 +62,7 @@ go_test(
"//vendor/k8s.io/api/policy/v1beta1:go_default_library",
"//vendor/k8s.io/api/rbac/v1:go_default_library",
"//vendor/k8s.io/api/rbac/v1beta1:go_default_library",
+ "//vendor/k8s.io/api/scheduling/v1alpha1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
@@ -97,6 +100,7 @@ go_library(
"kubectl.go",
"namespace.go",
"pdb.go",
+ "priorityclass.go",
"quota.go",
"resource_filter.go",
"rolebinding.go",
@@ -116,12 +120,12 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/kubectl",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
- "//pkg/api/v1:go_default_library",
"//pkg/api/v1/pod:go_default_library",
"//pkg/apis/apps:go_default_library",
"//pkg/apis/batch:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/v1:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/apps/internalversion:go_default_library",
@@ -133,6 +137,7 @@ go_library(
"//pkg/controller/deployment/util:go_default_library",
"//pkg/controller/statefulset:go_default_library",
"//pkg/credentialprovider:go_default_library",
+ "//pkg/kubectl/apps:go_default_library",
"//pkg/kubectl/resource:go_default_library",
"//pkg/kubectl/util:go_default_library",
"//pkg/kubectl/util/hash:go_default_library",
@@ -152,6 +157,7 @@ go_library(
"//vendor/k8s.io/api/policy/v1beta1:go_default_library",
"//vendor/k8s.io/api/rbac/v1:go_default_library",
"//vendor/k8s.io/api/rbac/v1beta1:go_default_library",
+ "//vendor/k8s.io/api/scheduling/v1alpha1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
diff --git a/pkg/kubectl/apply.go b/pkg/kubectl/apply.go
index ba74888952..784fc9b25c 100644
--- a/pkg/kubectl/apply.go
+++ b/pkg/kubectl/apply.go
@@ -19,7 +19,7 @@ package kubectl
import (
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/kubectl/resource"
)
diff --git a/pkg/kubectl/cmd/BUILD b/pkg/kubectl/cmd/BUILD
index a3e3461448..83e8ca7ab0 100644
--- a/pkg/kubectl/cmd/BUILD
+++ b/pkg/kubectl/cmd/BUILD
@@ -30,6 +30,7 @@ go_library(
"create_deployment.go",
"create_namespace.go",
"create_pdb.go",
+ "create_priorityclass.go",
"create_quota.go",
"create_role.go",
"create_rolebinding.go",
@@ -67,10 +68,10 @@ go_library(
"//build/visible_to:pkg_kubectl_cmd_CONSUMERS",
],
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
- "//pkg/api/validation:go_default_library",
"//pkg/apis/certificates:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/core/internalversion:go_default_library",
"//pkg/client/unversioned:go_default_library",
@@ -166,6 +167,7 @@ go_test(
"create_deployment_test.go",
"create_namespace_test.go",
"create_pdb_test.go",
+ "create_priorityclass_test.go",
"create_quota_test.go",
"create_role_test.go",
"create_rolebinding_test.go",
@@ -201,12 +203,12 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/kubectl/cmd",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/ref:go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/api/testing:go_default_library",
"//pkg/apis/batch:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/kubectl:go_default_library",
"//pkg/kubectl/cmd/testing:go_default_library",
diff --git a/pkg/kubectl/cmd/annotate_test.go b/pkg/kubectl/cmd/annotate_test.go
index a41fa2387d..1c112d6a83 100644
--- a/pkg/kubectl/cmd/annotate_test.go
+++ b/pkg/kubectl/cmd/annotate_test.go
@@ -27,7 +27,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/rest/fake"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
)
diff --git a/pkg/kubectl/cmd/apply.go b/pkg/kubectl/cmd/apply.go
index 17f04fe433..a3c3019056 100644
--- a/pkg/kubectl/cmd/apply.go
+++ b/pkg/kubectl/cmd/apply.go
@@ -37,7 +37,7 @@ import (
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/strategicpatch"
"k8s.io/apimachinery/pkg/util/wait"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
diff --git a/pkg/kubectl/cmd/apply_set_last_applied.go b/pkg/kubectl/cmd/apply_set_last_applied.go
index 60f84f3268..1bc06902f0 100644
--- a/pkg/kubectl/cmd/apply_set_last_applied.go
+++ b/pkg/kubectl/cmd/apply_set_last_applied.go
@@ -30,7 +30,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
apijson "k8s.io/apimachinery/pkg/util/json"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
diff --git a/pkg/kubectl/cmd/apply_test.go b/pkg/kubectl/cmd/apply_test.go
index 4a45140da9..84eaa967a3 100644
--- a/pkg/kubectl/cmd/apply_test.go
+++ b/pkg/kubectl/cmd/apply_test.go
@@ -34,8 +34,8 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/rest/fake"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testapi"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
diff --git a/pkg/kubectl/cmd/attach.go b/pkg/kubectl/cmd/attach.go
index 37c6e4d224..313291d18b 100644
--- a/pkg/kubectl/cmd/attach.go
+++ b/pkg/kubectl/cmd/attach.go
@@ -30,8 +30,8 @@ import (
utilerrors "k8s.io/apimachinery/pkg/util/errors"
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/tools/remotecommand"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ api "k8s.io/kubernetes/pkg/apis/core"
coreclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
diff --git a/pkg/kubectl/cmd/attach_test.go b/pkg/kubectl/cmd/attach_test.go
index 04dcd0aedf..42801a9b25 100644
--- a/pkg/kubectl/cmd/attach_test.go
+++ b/pkg/kubectl/cmd/attach_test.go
@@ -34,8 +34,8 @@ import (
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake"
"k8s.io/client-go/tools/remotecommand"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ api "k8s.io/kubernetes/pkg/apis/core"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
)
diff --git a/pkg/kubectl/cmd/autoscale.go b/pkg/kubectl/cmd/autoscale.go
index 27f320d5d1..ce96b037c0 100644
--- a/pkg/kubectl/cmd/autoscale.go
+++ b/pkg/kubectl/cmd/autoscale.go
@@ -38,7 +38,7 @@ var (
An autoscaler can automatically increase or decrease number of pods deployed within the system as needed.`))
autoscaleExample = templates.Examples(i18n.T(`
- # Auto scale a deployment "foo", with the number of pods between 2 and 10, target CPU utilization specified so a default autoscaling policy will be used:
+ # Auto scale a deployment "foo", with the number of pods between 2 and 10, no target CPU utilization specified so a default autoscaling policy will be used:
kubectl autoscale deployment foo --min=2 --max=10
# Auto scale a replication controller "foo", with the number of pods between 1 and 5, target CPU utilization at 80%:
diff --git a/pkg/kubectl/cmd/clusterinfo.go b/pkg/kubectl/cmd/clusterinfo.go
index 2c63d49a82..6f8139649c 100644
--- a/pkg/kubectl/cmd/clusterinfo.go
+++ b/pkg/kubectl/cmd/clusterinfo.go
@@ -23,7 +23,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
utilnet "k8s.io/apimachinery/pkg/util/net"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/resource"
diff --git a/pkg/kubectl/cmd/clusterinfo_dump.go b/pkg/kubectl/cmd/clusterinfo_dump.go
index b718bf6e7e..511bba5d93 100644
--- a/pkg/kubectl/cmd/clusterinfo_dump.go
+++ b/pkg/kubectl/cmd/clusterinfo_dump.go
@@ -25,7 +25,7 @@ import (
"github.com/spf13/cobra"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
diff --git a/pkg/kubectl/cmd/cmd.go b/pkg/kubectl/cmd/cmd.go
index af3886659a..782fa37c2b 100644
--- a/pkg/kubectl/cmd/cmd.go
+++ b/pkg/kubectl/cmd/cmd.go
@@ -188,7 +188,7 @@ __custom_func() {
__kubectl_get_resource_node
return
;;
- kubectl_config_use-context)
+ kubectl_config_use-context | kubectl_config_rename-context)
__kubectl_config_get_contexts
return
;;
diff --git a/pkg/kubectl/cmd/cmd_test.go b/pkg/kubectl/cmd/cmd_test.go
index 736f2b0ee7..260689e435 100644
--- a/pkg/kubectl/cmd/cmd_test.go
+++ b/pkg/kubectl/cmd/cmd_test.go
@@ -36,9 +36,9 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema"
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testapi"
apitesting "k8s.io/kubernetes/pkg/api/testing"
+ api "k8s.io/kubernetes/pkg/apis/core"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/scheme"
diff --git a/pkg/kubectl/cmd/config/get_contexts.go b/pkg/kubectl/cmd/config/get_contexts.go
index 9ba113b155..b018a52dca 100644
--- a/pkg/kubectl/cmd/config/get_contexts.go
+++ b/pkg/kubectl/cmd/config/get_contexts.go
@@ -19,6 +19,7 @@ package config
import (
"fmt"
"io"
+ "sort"
"strings"
"text/tabwriter"
@@ -138,6 +139,7 @@ func (o GetContextsOptions) RunGetContexts() error {
}
}
+ sort.Strings(toPrint)
for _, name := range toPrint {
err = printContext(name, config.Contexts[name], out, o.nameOnly, config.CurrentContext == name)
if err != nil {
diff --git a/pkg/kubectl/cmd/config/get_contexts_test.go b/pkg/kubectl/cmd/config/get_contexts_test.go
index 209d26c05c..d21c4470a4 100644
--- a/pkg/kubectl/cmd/config/get_contexts_test.go
+++ b/pkg/kubectl/cmd/config/get_contexts_test.go
@@ -66,6 +66,27 @@ func TestGetContextsAllNoHeader(t *testing.T) {
test.run(t)
}
+func TestGetContextsAllSorted(t *testing.T) {
+ tconf := clientcmdapi.Config{
+ CurrentContext: "shaker-context",
+ Contexts: map[string]*clientcmdapi.Context{
+ "shaker-context": {AuthInfo: "blue-user", Cluster: "big-cluster", Namespace: "saw-ns"},
+ "abc": {AuthInfo: "blue-user", Cluster: "abc-cluster", Namespace: "kube-system"},
+ "xyz": {AuthInfo: "blue-user", Cluster: "xyz-cluster", Namespace: "default"}}}
+ test := getContextsTest{
+ startingConfig: tconf,
+ names: []string{},
+ noHeader: false,
+ nameOnly: false,
+ expectedOut: `CURRENT NAME CLUSTER AUTHINFO NAMESPACE
+ abc abc-cluster blue-user kube-system
+* shaker-context big-cluster blue-user saw-ns
+ xyz xyz-cluster blue-user default
+`,
+ }
+ test.run(t)
+}
+
func TestGetContextsAllName(t *testing.T) {
tconf := clientcmdapi.Config{
Contexts: map[string]*clientcmdapi.Context{
diff --git a/pkg/kubectl/cmd/config/rename_context.go b/pkg/kubectl/cmd/config/rename_context.go
index fa300bdd09..3216a7c83e 100644
--- a/pkg/kubectl/cmd/config/rename_context.go
+++ b/pkg/kubectl/cmd/config/rename_context.go
@@ -130,6 +130,6 @@ func (o RenameContextOptions) RunRenameContext(out io.Writer) error {
return err
}
- fmt.Fprintf(out, "Context %q was renamed to %q.\n", o.contextName, o.newName)
+ fmt.Fprintf(out, "Context %q renamed to %q.\n", o.contextName, o.newName)
return nil
}
diff --git a/pkg/kubectl/cmd/config/rename_context_test.go b/pkg/kubectl/cmd/config/rename_context_test.go
index 4a074a49e8..cfe371497f 100644
--- a/pkg/kubectl/cmd/config/rename_context_test.go
+++ b/pkg/kubectl/cmd/config/rename_context_test.go
@@ -62,7 +62,7 @@ func TestRenameContext(t *testing.T) {
initialConfig: initialConfig,
expectedConfig: expectedConfig,
args: []string{currentContext, newContext},
- expectedOut: fmt.Sprintf("Context %q was renamed to %q.\n", currentContext, newContext),
+ expectedOut: fmt.Sprintf("Context %q renamed to %q.\n", currentContext, newContext),
expectedErr: "",
}
test.run(t)
diff --git a/pkg/kubectl/cmd/convert.go b/pkg/kubectl/cmd/convert.go
index 492f850162..2c91b7d8a8 100644
--- a/pkg/kubectl/cmd/convert.go
+++ b/pkg/kubectl/cmd/convert.go
@@ -23,8 +23,8 @@ import (
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
- "k8s.io/kubernetes/pkg/api"
scheme "k8s.io/kubernetes/pkg/api/legacyscheme"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/resource"
diff --git a/pkg/kubectl/cmd/create.go b/pkg/kubectl/cmd/create.go
index 5aecf9688e..d14da3882d 100644
--- a/pkg/kubectl/cmd/create.go
+++ b/pkg/kubectl/cmd/create.go
@@ -108,6 +108,7 @@ func NewCmdCreate(f cmdutil.Factory, out, errOut io.Writer) *cobra.Command {
cmd.AddCommand(NewCmdCreateRole(f, out))
cmd.AddCommand(NewCmdCreateRoleBinding(f, out))
cmd.AddCommand(NewCmdCreatePodDisruptionBudget(f, out))
+ cmd.AddCommand(NewCmdCreatePriorityClass(f, out))
return cmd
}
diff --git a/pkg/kubectl/cmd/create_priorityclass.go b/pkg/kubectl/cmd/create_priorityclass.go
new file mode 100644
index 0000000000..7f3561ae61
--- /dev/null
+++ b/pkg/kubectl/cmd/create_priorityclass.go
@@ -0,0 +1,90 @@
+/*
+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 cmd
+
+import (
+ "io"
+
+ "github.com/spf13/cobra"
+
+ "k8s.io/kubernetes/pkg/kubectl"
+ "k8s.io/kubernetes/pkg/kubectl/cmd/templates"
+ cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
+ "k8s.io/kubernetes/pkg/kubectl/util/i18n"
+)
+
+var (
+ pcLong = templates.LongDesc(i18n.T(`
+ Create a priorityclass with the specified name, value, globalDefault and description`))
+
+ pcExample = templates.Examples(i18n.T(`
+ # Create a priorityclass named high-priority
+ kubectl create priorityclass default-priority --value=1000 --description="high priority"
+
+ # Create a priorityclass named default-priority that considered as the global default priority
+ kubectl create priorityclass default-priority --value=1000 --global-default=true --description="default priority"`))
+)
+
+// NewCmdCreatePriorityClass is a macro command to create a new priorityClass.
+func NewCmdCreatePriorityClass(f cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
+ cmd := &cobra.Command{
+ Use: "priorityclass NAME --value=VALUE --global-default=BOOL [--dry-run]",
+ Aliases: []string{"pc"},
+ Short: i18n.T("Create a priorityclass with the specified name."),
+ Long: pcLong,
+ Example: pcExample,
+ Run: func(cmd *cobra.Command, args []string) {
+ cmdutil.CheckErr(CreatePriorityClass(f, cmdOut, cmd, args))
+ },
+ }
+
+ cmdutil.AddApplyAnnotationFlags(cmd)
+ cmdutil.AddValidateFlags(cmd)
+ cmdutil.AddPrinterFlags(cmd)
+ cmdutil.AddGeneratorFlags(cmd, cmdutil.PriorityClassV1Alpha1GeneratorName)
+
+ cmd.Flags().Int32("value", 0, i18n.T("the value of this priority class."))
+ cmd.Flags().Bool("global-default", false, i18n.T("global-default specifies whether this PriorityClass should be considered as the default priority."))
+ cmd.Flags().String("description", "", i18n.T("description is an arbitrary string that usually provides guidelines on when this priority class should be used."))
+ return cmd
+}
+
+// CreatePriorityClass implements the behavior to run the create priorityClass command.
+func CreatePriorityClass(f cmdutil.Factory, cmdOut io.Writer, cmd *cobra.Command, args []string) error {
+ name, err := NameFromCommandArgs(cmd, args)
+ if err != nil {
+ return err
+ }
+ var generator kubectl.StructuredGenerator
+ switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
+ case cmdutil.PriorityClassV1Alpha1GeneratorName:
+ generator = &kubectl.PriorityClassV1Generator{
+ Name: name,
+ Value: cmdutil.GetFlagInt32(cmd, "value"),
+ GlobalDefault: cmdutil.GetFlagBool(cmd, "global-default"),
+ Description: cmdutil.GetFlagString(cmd, "description"),
+ }
+ default:
+ return errUnsupportedGenerator(cmd, generatorName)
+ }
+ return RunCreateSubcommand(f, cmd, cmdOut, &CreateSubcommandOptions{
+ Name: name,
+ StructuredGenerator: generator,
+ DryRun: cmdutil.GetFlagBool(cmd, "dry-run"),
+ OutputFormat: cmdutil.GetFlagString(cmd, "output"),
+ })
+}
diff --git a/pkg/kubectl/cmd/create_priorityclass_test.go b/pkg/kubectl/cmd/create_priorityclass_test.go
new file mode 100644
index 0000000000..2ef8b143a9
--- /dev/null
+++ b/pkg/kubectl/cmd/create_priorityclass_test.go
@@ -0,0 +1,59 @@
+/*
+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 cmd
+
+import (
+ "bytes"
+ "io/ioutil"
+ "net/http"
+ "testing"
+
+ "k8s.io/apimachinery/pkg/runtime/schema"
+ restclient "k8s.io/client-go/rest"
+ "k8s.io/client-go/rest/fake"
+ cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
+)
+
+func TestCreatePriorityClass(t *testing.T) {
+ pcName := "my-pc"
+ f, tf, _, ns := cmdtesting.NewAPIFactory()
+ tf.Client = &fake.RESTClient{
+ GroupVersion: schema.GroupVersion{Group: "scheduling.k8s.io", Version: "v1alpha1"},
+ NegotiatedSerializer: ns,
+ Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
+ return &http.Response{
+ StatusCode: http.StatusOK,
+ Body: ioutil.NopCloser(&bytes.Buffer{}),
+ }, nil
+ }),
+ }
+ tf.ClientConfig = &restclient.Config{}
+ tf.Printer = &testPrinter{}
+ buf := bytes.NewBuffer([]byte{})
+
+ cmd := NewCmdCreatePriorityClass(f, buf)
+ cmd.Flags().Set("value", "1000")
+ cmd.Flags().Set("global-default", "true")
+ cmd.Flags().Set("description", "my priority")
+ cmd.Flags().Set("dry-run", "true")
+ cmd.Flags().Set("output", "name")
+ CreatePriorityClass(f, buf, cmd, []string{pcName})
+ expectedOutput := "priorityclass/" + pcName + "\n"
+ if buf.String() != expectedOutput {
+ t.Errorf("expected output: %s, but got: %s", expectedOutput, buf.String())
+ }
+}
diff --git a/pkg/kubectl/cmd/delete_test.go b/pkg/kubectl/cmd/delete_test.go
index bdedc203b4..5b78ba0976 100644
--- a/pkg/kubectl/cmd/delete_test.go
+++ b/pkg/kubectl/cmd/delete_test.go
@@ -33,7 +33,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/dynamic"
"k8s.io/client-go/rest/fake"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/kubectl"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
diff --git a/pkg/kubectl/cmd/diff.go b/pkg/kubectl/cmd/diff.go
index b6c98ec85c..c3aaca5e7c 100644
--- a/pkg/kubectl/cmd/diff.go
+++ b/pkg/kubectl/cmd/diff.go
@@ -29,7 +29,7 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/kubectl/apply/parse"
"k8s.io/kubernetes/pkg/kubectl/apply/strategy"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
diff --git a/pkg/kubectl/cmd/drain_test.go b/pkg/kubectl/cmd/drain_test.go
index 5754d59163..df390a181c 100644
--- a/pkg/kubectl/cmd/drain_test.go
+++ b/pkg/kubectl/cmd/drain_test.go
@@ -43,11 +43,11 @@ import (
"k8s.io/apimachinery/pkg/util/strategicpatch"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/client-go/rest/fake"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/ref"
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/apis/batch"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
diff --git a/pkg/kubectl/cmd/exec.go b/pkg/kubectl/cmd/exec.go
index eb6c676c5b..810cd91060 100644
--- a/pkg/kubectl/cmd/exec.go
+++ b/pkg/kubectl/cmd/exec.go
@@ -27,8 +27,8 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/tools/remotecommand"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ api "k8s.io/kubernetes/pkg/apis/core"
coreclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
diff --git a/pkg/kubectl/cmd/exec_test.go b/pkg/kubectl/cmd/exec_test.go
index 46c006eed1..afa52ca634 100644
--- a/pkg/kubectl/cmd/exec_test.go
+++ b/pkg/kubectl/cmd/exec_test.go
@@ -33,7 +33,7 @@ import (
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake"
"k8s.io/client-go/tools/remotecommand"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/util/term"
)
diff --git a/pkg/kubectl/cmd/expose_test.go b/pkg/kubectl/cmd/expose_test.go
index 9dbd697663..edcc75ee86 100644
--- a/pkg/kubectl/cmd/expose_test.go
+++ b/pkg/kubectl/cmd/expose_test.go
@@ -28,7 +28,7 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/client-go/rest/fake"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/printers"
diff --git a/pkg/kubectl/cmd/label_test.go b/pkg/kubectl/cmd/label_test.go
index 18e60fbbc5..ff7d564975 100644
--- a/pkg/kubectl/cmd/label_test.go
+++ b/pkg/kubectl/cmd/label_test.go
@@ -26,7 +26,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/rest/fake"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/resource"
)
diff --git a/pkg/kubectl/cmd/logs.go b/pkg/kubectl/cmd/logs.go
index 7cfc93d3df..d0e7601dad 100644
--- a/pkg/kubectl/cmd/logs.go
+++ b/pkg/kubectl/cmd/logs.go
@@ -28,8 +28,8 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
restclient "k8s.io/client-go/rest"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/validation"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/validation"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/util"
diff --git a/pkg/kubectl/cmd/logs_test.go b/pkg/kubectl/cmd/logs_test.go
index ed7100fd0f..ab71ccf16e 100644
--- a/pkg/kubectl/cmd/logs_test.go
+++ b/pkg/kubectl/cmd/logs_test.go
@@ -28,7 +28,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/rest/fake"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
)
diff --git a/pkg/kubectl/cmd/portforward.go b/pkg/kubectl/cmd/portforward.go
index b9ef507366..cedb93bb23 100644
--- a/pkg/kubectl/cmd/portforward.go
+++ b/pkg/kubectl/cmd/portforward.go
@@ -30,7 +30,7 @@ import (
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/tools/portforward"
"k8s.io/client-go/transport/spdy"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
coreclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
diff --git a/pkg/kubectl/cmd/portforward_test.go b/pkg/kubectl/cmd/portforward_test.go
index e92eb91b15..dcb6f1da82 100644
--- a/pkg/kubectl/cmd/portforward_test.go
+++ b/pkg/kubectl/cmd/portforward_test.go
@@ -27,7 +27,7 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/rest/fake"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
)
diff --git a/pkg/kubectl/cmd/replace_test.go b/pkg/kubectl/cmd/replace_test.go
index b00c8b7932..2e5e175acc 100644
--- a/pkg/kubectl/cmd/replace_test.go
+++ b/pkg/kubectl/cmd/replace_test.go
@@ -23,7 +23,7 @@ import (
"testing"
"k8s.io/client-go/rest/fake"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
)
diff --git a/pkg/kubectl/cmd/resource/BUILD b/pkg/kubectl/cmd/resource/BUILD
index 71cf74bc5e..207a5cf799 100644
--- a/pkg/kubectl/cmd/resource/BUILD
+++ b/pkg/kubectl/cmd/resource/BUILD
@@ -6,7 +6,7 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/kubectl/cmd/resource",
visibility = ["//visibility:public"],
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/kubectl:go_default_library",
"//pkg/kubectl/cmd/templates:go_default_library",
"//pkg/kubectl/cmd/util:go_default_library",
@@ -38,10 +38,10 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/kubectl/cmd/resource",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/api/testing:go_default_library",
- "//pkg/api/v1:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/v1:go_default_library",
"//pkg/kubectl/cmd/testing:go_default_library",
"//pkg/kubectl/cmd/util:go_default_library",
"//pkg/kubectl/cmd/util/openapi:go_default_library",
diff --git a/pkg/kubectl/cmd/resource/get.go b/pkg/kubectl/cmd/resource/get.go
index a47730e4d4..b99d4857ab 100644
--- a/pkg/kubectl/cmd/resource/get.go
+++ b/pkg/kubectl/cmd/resource/get.go
@@ -33,7 +33,7 @@ import (
utilerrors "k8s.io/apimachinery/pkg/util/errors"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/watch"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
diff --git a/pkg/kubectl/cmd/resource/get_test.go b/pkg/kubectl/cmd/resource/get_test.go
index 7ecfb2c416..0ff0c4e068 100644
--- a/pkg/kubectl/cmd/resource/get_test.go
+++ b/pkg/kubectl/cmd/resource/get_test.go
@@ -41,10 +41,11 @@ import (
"k8s.io/client-go/rest/fake"
restclientwatch "k8s.io/client-go/rest/watch"
"k8s.io/kube-openapi/pkg/util/proto"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testapi"
apitesting "k8s.io/kubernetes/pkg/api/testing"
- "k8s.io/kubernetes/pkg/api/v1"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/v1"
+
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/cmd/util/openapi"
@@ -54,8 +55,8 @@ import (
// This init should be removed after switching this command and its tests to user external types.
func init() {
api.AddToScheme(scheme.Scheme)
- scheme.Scheme.AddConversionFuncs(v1.Convert_api_PodSpec_To_v1_PodSpec)
- scheme.Scheme.AddConversionFuncs(v1.Convert_v1_PodSecurityContext_To_api_PodSecurityContext)
+ scheme.Scheme.AddConversionFuncs(v1.Convert_core_PodSpec_To_v1_PodSpec)
+ scheme.Scheme.AddConversionFuncs(v1.Convert_v1_PodSecurityContext_To_core_PodSecurityContext)
}
var unstructuredSerializer = dynamic.ContentConfig().NegotiatedSerializer
diff --git a/pkg/kubectl/cmd/rollingupdate.go b/pkg/kubectl/cmd/rollingupdate.go
index d9bf01b736..3b97e6fd87 100644
--- a/pkg/kubectl/cmd/rollingupdate.go
+++ b/pkg/kubectl/cmd/rollingupdate.go
@@ -31,8 +31,8 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
utilerrors "k8s.io/apimachinery/pkg/util/errors"
"k8s.io/apimachinery/pkg/util/intstr"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
diff --git a/pkg/kubectl/cmd/run.go b/pkg/kubectl/cmd/run.go
index 5f0989317e..87b5ba2a02 100644
--- a/pkg/kubectl/cmd/run.go
+++ b/pkg/kubectl/cmd/run.go
@@ -31,7 +31,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/watch"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
coreclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
conditions "k8s.io/kubernetes/pkg/client/unversioned"
"k8s.io/kubernetes/pkg/kubectl"
diff --git a/pkg/kubectl/cmd/run_test.go b/pkg/kubectl/cmd/run_test.go
index de6fcee827..1e8790ac54 100644
--- a/pkg/kubectl/cmd/run_test.go
+++ b/pkg/kubectl/cmd/run_test.go
@@ -35,7 +35,7 @@ import (
"k8s.io/apimachinery/pkg/util/intstr"
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/scheme"
diff --git a/pkg/kubectl/cmd/set/BUILD b/pkg/kubectl/cmd/set/BUILD
index 19d946148b..04a98ce07d 100644
--- a/pkg/kubectl/cmd/set/BUILD
+++ b/pkg/kubectl/cmd/set/BUILD
@@ -19,7 +19,6 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/kubectl/cmd/set",
visibility = ["//build/visible_to:pkg_kubectl_cmd_set_CONSUMERS"],
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/apis/rbac:go_default_library",
"//pkg/kubectl:go_default_library",
@@ -29,6 +28,7 @@ go_library(
"//pkg/kubectl/resource:go_default_library",
"//pkg/kubectl/util/i18n:go_default_library",
"//vendor/github.com/spf13/cobra:go_default_library",
+ "//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
@@ -38,6 +38,7 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library",
+ "//vendor/k8s.io/client-go/kubernetes:go_default_library",
],
)
@@ -59,19 +60,21 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/kubectl/cmd/set",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
- "//pkg/apis/apps:go_default_library",
- "//pkg/apis/batch:go_default_library",
- "//pkg/apis/extensions:go_default_library",
"//pkg/apis/rbac:go_default_library",
"//pkg/kubectl/cmd/testing:go_default_library",
"//pkg/kubectl/cmd/util:go_default_library",
"//pkg/kubectl/resource:go_default_library",
+ "//pkg/kubectl/scheme:go_default_library",
"//pkg/printers:go_default_library",
"//vendor/github.com/spf13/cobra:go_default_library",
"//vendor/github.com/stretchr/testify/assert:go_default_library",
+ "//vendor/k8s.io/api/apps/v1:go_default_library",
+ "//vendor/k8s.io/api/apps/v1beta1:go_default_library",
+ "//vendor/k8s.io/api/apps/v1beta2:go_default_library",
+ "//vendor/k8s.io/api/batch/v1:go_default_library",
+ "//vendor/k8s.io/api/core/v1:go_default_library",
+ "//vendor/k8s.io/api/extensions/v1beta1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
diff --git a/pkg/kubectl/cmd/set/helper.go b/pkg/kubectl/cmd/set/helper.go
index 67a89f7198..6f8bdfee80 100644
--- a/pkg/kubectl/cmd/set/helper.go
+++ b/pkg/kubectl/cmd/set/helper.go
@@ -21,20 +21,19 @@ import (
"io"
"strings"
+ "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/strategicpatch"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/legacyscheme"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/resource"
)
// selectContainers allows one or more containers to be matched against a string or wildcard
-func selectContainers(containers []api.Container, spec string) ([]*api.Container, []*api.Container) {
- out := []*api.Container{}
- skipped := []*api.Container{}
+func selectContainers(containers []v1.Container, spec string) ([]*v1.Container, []*v1.Container) {
+ out := []*v1.Container{}
+ skipped := []*v1.Container{}
for i, c := range containers {
if selectString(c.Name, spec) {
out = append(out, &containers[i])
@@ -127,10 +126,14 @@ type patchFn func(*resource.Info) ([]byte, error)
// the changes in the object. Encoder must be able to encode the info into the appropriate destination type.
// This function returns whether the mutation function made any change in the original object.
func CalculatePatch(patch *Patch, encoder runtime.Encoder, mutateFn patchFn) bool {
- versionedEncoder := legacyscheme.Codecs.EncoderForVersion(encoder, patch.Info.Mapping.GroupVersionKind.GroupVersion())
-
- patch.Before, patch.Err = runtime.Encode(versionedEncoder, patch.Info.Object)
+ versioned, err := patch.Info.Mapping.ConvertToVersion(patch.Info.Object, patch.Info.Mapping.GroupVersionKind.GroupVersion())
+ if err != nil {
+ patch.Err = err
+ return true
+ }
+ patch.Info.VersionedObject = versioned
+ patch.Before, patch.Err = runtime.Encode(encoder, patch.Info.VersionedObject)
patch.After, patch.Err = mutateFn(patch.Info)
if patch.Err != nil {
return true
@@ -139,14 +142,7 @@ func CalculatePatch(patch *Patch, encoder runtime.Encoder, mutateFn patchFn) boo
return false
}
- // TODO: should be via New
- versioned, err := patch.Info.Mapping.ConvertToVersion(patch.Info.Object, patch.Info.Mapping.GroupVersionKind.GroupVersion())
- if err != nil {
- patch.Err = err
- return true
- }
-
- patch.Patch, patch.Err = strategicpatch.CreateTwoWayMergePatch(patch.Before, patch.After, versioned)
+ patch.Patch, patch.Err = strategicpatch.CreateTwoWayMergePatch(patch.Before, patch.After, patch.Info.VersionedObject)
return true
}
@@ -163,17 +159,17 @@ func CalculatePatches(infos []*resource.Info, encoder runtime.Encoder, mutateFn
return patches
}
-func findEnv(env []api.EnvVar, name string) (api.EnvVar, bool) {
+func findEnv(env []v1.EnvVar, name string) (v1.EnvVar, bool) {
for _, e := range env {
if e.Name == name {
return e, true
}
}
- return api.EnvVar{}, false
+ return v1.EnvVar{}, false
}
-func updateEnv(existing []api.EnvVar, env []api.EnvVar, remove []string) []api.EnvVar {
- out := []api.EnvVar{}
+func updateEnv(existing []v1.EnvVar, env []v1.EnvVar, remove []string) []v1.EnvVar {
+ out := []v1.EnvVar{}
covered := sets.NewString(remove...)
for _, e := range existing {
if covered.Has(e.Name) {
diff --git a/pkg/kubectl/cmd/set/set_env.go b/pkg/kubectl/cmd/set/set_env.go
index 1e92195ed3..303ccc009d 100644
--- a/pkg/kubectl/cmd/set/set_env.go
+++ b/pkg/kubectl/cmd/set/set_env.go
@@ -25,11 +25,11 @@ import (
"strings"
"github.com/spf13/cobra"
+ "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/legacyscheme"
+ "k8s.io/client-go/kubernetes"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
envutil "k8s.io/kubernetes/pkg/kubectl/cmd/util/env"
@@ -116,14 +116,13 @@ type EnvOptions struct {
Prefix string
Mapper meta.RESTMapper
- Typer runtime.ObjectTyper
Builder *resource.Builder
Infos []*resource.Info
Encoder runtime.Encoder
Cmd *cobra.Command
- UpdatePodSpecForObject func(obj runtime.Object, fn func(*api.PodSpec) error) (bool, error)
+ UpdatePodSpecForObject func(obj runtime.Object, fn func(*v1.PodSpec) error) (bool, error)
PrintObject func(cmd *cobra.Command, isLocal bool, mapper meta.RESTMapper, obj runtime.Object, out io.Writer) error
}
@@ -163,7 +162,7 @@ func NewCmdEnv(f cmdutil.Factory, in io.Reader, out, errout io.Writer) *cobra.Co
return cmd
}
-func validateNoOverwrites(existing []api.EnvVar, env []api.EnvVar) error {
+func validateNoOverwrites(existing []v1.EnvVar, env []v1.EnvVar) error {
for _, e := range env {
if current, exists := findEnv(existing, e.Name); exists && current.Value != e.Value {
return fmt.Errorf("'%s' already has a value (%s), and --overwrite is false", current.Name, current.Value)
@@ -186,7 +185,7 @@ func (o *EnvOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []stri
return cmdutil.UsageErrorf(cmd, "one or more resources must be specified as or /")
}
- o.Mapper, o.Typer = f.Object()
+ o.Mapper, _ = f.Object()
o.UpdatePodSpecForObject = f.UpdatePodSpecForObject
o.Encoder = f.JSONEncoder()
o.ContainerSelector = cmdutil.GetFlagString(cmd, "containers")
@@ -216,9 +215,13 @@ func (o *EnvOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []stri
// RunEnv contains all the necessary functionality for the OpenShift cli env command
func (o *EnvOptions) RunEnv(f cmdutil.Factory) error {
- kubeClient, err := f.ClientSet()
- if err != nil {
- return err
+ var kubeClient *kubernetes.Clientset
+ if o.List {
+ client, err := f.KubernetesClientSet()
+ if err != nil {
+ return err
+ }
+ kubeClient = client
}
cmdNamespace, enforceNamespace, err := f.DefaultNamespace()
@@ -253,14 +256,18 @@ func (o *EnvOptions) RunEnv(f cmdutil.Factory) error {
}
for _, info := range infos {
- switch from := info.Object.(type) {
- case *api.Secret:
+ versionedObject, err := info.Mapping.ConvertToVersion(info.Object, info.Mapping.GroupVersionKind.GroupVersion())
+ if err != nil {
+ return err
+ }
+ switch from := versionedObject.(type) {
+ case *v1.Secret:
for key := range from.Data {
- envVar := api.EnvVar{
+ envVar := v1.EnvVar{
Name: keyToEnvName(key),
- ValueFrom: &api.EnvVarSource{
- SecretKeyRef: &api.SecretKeySelector{
- LocalObjectReference: api.LocalObjectReference{
+ ValueFrom: &v1.EnvVarSource{
+ SecretKeyRef: &v1.SecretKeySelector{
+ LocalObjectReference: v1.LocalObjectReference{
Name: from.Name,
},
Key: key,
@@ -269,13 +276,13 @@ func (o *EnvOptions) RunEnv(f cmdutil.Factory) error {
}
env = append(env, envVar)
}
- case *api.ConfigMap:
+ case *v1.ConfigMap:
for key := range from.Data {
- envVar := api.EnvVar{
+ envVar := v1.EnvVar{
Name: keyToEnvName(key),
- ValueFrom: &api.EnvVarSource{
- ConfigMapKeyRef: &api.ConfigMapKeySelector{
- LocalObjectReference: api.LocalObjectReference{
+ ValueFrom: &v1.EnvVarSource{
+ ConfigMapKeyRef: &v1.ConfigMapKeySelector{
+ LocalObjectReference: v1.LocalObjectReference{
Name: from.Name,
},
Key: key,
@@ -316,7 +323,7 @@ func (o *EnvOptions) RunEnv(f cmdutil.Factory) error {
return err
}
patches := CalculatePatches(o.Infos, o.Encoder, func(info *resource.Info) ([]byte, error) {
- _, err := o.UpdatePodSpecForObject(info.Object, func(spec *api.PodSpec) error {
+ _, err := o.UpdatePodSpecForObject(info.VersionedObject, func(spec *v1.PodSpec) error {
resolutionErrorsEncountered := false
containers, _ := selectContainers(spec.Containers, o.ContainerSelector)
if len(containers) == 0 {
@@ -382,9 +389,7 @@ func (o *EnvOptions) RunEnv(f cmdutil.Factory) error {
})
if err == nil {
- // TODO: switch UpdatePodSpecForObject to work on v1.PodSpec, use info.VersionedObject, and avoid conversion completely
- versionedEncoder := legacyscheme.Codecs.EncoderForVersion(o.Encoder, info.Mapping.GroupVersionKind.GroupVersion())
- return runtime.Encode(versionedEncoder, info.Object)
+ return runtime.Encode(o.Encoder, info.VersionedObject)
}
return nil, err
})
@@ -408,7 +413,7 @@ func (o *EnvOptions) RunEnv(f cmdutil.Factory) error {
}
if o.PrintObject != nil && (o.Local || o.DryRun) {
- if err := o.PrintObject(o.Cmd, o.Local, o.Mapper, info.Object, o.Out); err != nil {
+ if err := o.PrintObject(o.Cmd, o.Local, o.Mapper, patch.Info.VersionedObject, o.Out); err != nil {
return err
}
continue
@@ -428,7 +433,11 @@ func (o *EnvOptions) RunEnv(f cmdutil.Factory) error {
}
if len(o.Output) > 0 {
- if err := o.PrintObject(o.Cmd, o.Local, o.Mapper, obj, o.Out); err != nil {
+ versionedObject, err := patch.Info.Mapping.ConvertToVersion(obj, patch.Info.Mapping.GroupVersionKind.GroupVersion())
+ if err != nil {
+ return err
+ }
+ if err := o.PrintObject(o.Cmd, o.Local, o.Mapper, versionedObject, o.Out); err != nil {
return err
}
continue
diff --git a/pkg/kubectl/cmd/set/set_env_test.go b/pkg/kubectl/cmd/set/set_env_test.go
index 1349e97b91..2c4d1455b1 100644
--- a/pkg/kubectl/cmd/set/set_env_test.go
+++ b/pkg/kubectl/cmd/set/set_env_test.go
@@ -18,25 +18,37 @@ package set
import (
"bytes"
+ "fmt"
+ "io/ioutil"
"net/http"
"os"
+ "path"
"strings"
"testing"
+ "github.com/stretchr/testify/assert"
+ appsv1 "k8s.io/api/apps/v1"
+ appsv1beta1 "k8s.io/api/apps/v1beta1"
+ appsv1beta2 "k8s.io/api/apps/v1beta2"
+ batchv1 "k8s.io/api/batch/v1"
+ "k8s.io/api/core/v1"
+ extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
+ "k8s.io/apimachinery/pkg/runtime/schema"
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/legacyscheme"
+ "k8s.io/kubernetes/pkg/api/testapi"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/resource"
+ "k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/printers"
)
func TestSetEnvLocal(t *testing.T) {
f, tf, codec, ns := cmdtesting.NewAPIFactory()
tf.Client = &fake.RESTClient{
- GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
+ GroupVersion: schema.GroupVersion{Version: ""},
NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
t.Fatalf("unexpected request: %s %#v\n%#v", req.Method, req.URL, req)
@@ -44,7 +56,7 @@ func TestSetEnvLocal(t *testing.T) {
}),
}
tf.Namespace = "test"
- tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion}}
+ tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &schema.GroupVersion{Version: ""}}}
buf := bytes.NewBuffer([]byte{})
cmd := NewCmdEnv(f, os.Stdin, buf, buf)
@@ -73,7 +85,7 @@ func TestSetEnvLocal(t *testing.T) {
func TestSetMultiResourcesEnvLocal(t *testing.T) {
f, tf, codec, ns := cmdtesting.NewAPIFactory()
tf.Client = &fake.RESTClient{
- GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
+ GroupVersion: schema.GroupVersion{Version: ""},
NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
t.Fatalf("unexpected request: %s %#v\n%#v", req.Method, req.URL, req)
@@ -81,7 +93,7 @@ func TestSetMultiResourcesEnvLocal(t *testing.T) {
}),
}
tf.Namespace = "test"
- tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion}}
+ tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &schema.GroupVersion{Version: ""}}}
buf := bytes.NewBuffer([]byte{})
cmd := NewCmdEnv(f, os.Stdin, buf, buf)
@@ -108,3 +120,359 @@ func TestSetMultiResourcesEnvLocal(t *testing.T) {
t.Errorf("expected out:\n%s\nbut got:\n%s", expectedOut, buf.String())
}
}
+
+func TestSetEnvRemote(t *testing.T) {
+ inputs := []struct {
+ object runtime.Object
+ apiPrefix, apiGroup, apiVersion string
+ testAPIGroup string
+ args []string
+ }{
+ {
+ object: &extensionsv1beta1.ReplicaSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: extensionsv1beta1.ReplicaSetSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "extensions", apiVersion: "v1beta1",
+ args: []string{"replicaset", "nginx", "env=prod"},
+ },
+ {
+ object: &appsv1beta2.ReplicaSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1beta2.ReplicaSetSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1beta2",
+ args: []string{"replicaset", "nginx", "env=prod"},
+ },
+ {
+ object: &appsv1.ReplicaSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1.ReplicaSetSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1",
+ args: []string{"replicaset", "nginx", "env=prod"},
+ },
+ {
+ object: &extensionsv1beta1.DaemonSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: extensionsv1beta1.DaemonSetSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "extensions", apiVersion: "v1beta1",
+ args: []string{"daemonset", "nginx", "env=prod"},
+ },
+ {
+ object: &appsv1beta2.DaemonSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1beta2.DaemonSetSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1beta2",
+ args: []string{"daemonset", "nginx", "env=prod"},
+ },
+ {
+ object: &appsv1.DaemonSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1.DaemonSetSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1",
+ args: []string{"daemonset", "nginx", "env=prod"},
+ },
+ {
+ object: &extensionsv1beta1.Deployment{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: extensionsv1beta1.DeploymentSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "extensions", apiVersion: "v1beta1",
+ args: []string{"deployment", "nginx", "env=prod"},
+ },
+ {
+ object: &appsv1beta1.Deployment{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1beta1.DeploymentSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1beta1",
+ args: []string{"deployment", "nginx", "env=prod"},
+ },
+ {
+ object: &appsv1beta2.Deployment{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1beta2.DeploymentSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1beta2",
+ args: []string{"deployment", "nginx", "env=prod"},
+ },
+ {
+ object: &appsv1.Deployment{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1.DeploymentSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1",
+ args: []string{"deployment", "nginx", "env=prod"},
+ },
+ {
+ object: &appsv1beta1.StatefulSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1beta1.StatefulSetSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "apps",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1beta1",
+ args: []string{"statefulset", "nginx", "env=prod"},
+ },
+ {
+ object: &appsv1beta2.StatefulSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1beta2.StatefulSetSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "apps",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1beta2",
+ args: []string{"statefulset", "nginx", "env=prod"},
+ },
+ {
+ object: &appsv1.StatefulSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1.StatefulSetSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "apps",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1",
+ args: []string{"statefulset", "nginx", "env=prod"},
+ },
+ {
+ object: &batchv1.Job{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: batchv1.JobSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "batch",
+ apiPrefix: "/apis", apiGroup: "batch", apiVersion: "v1",
+ args: []string{"job", "nginx", "env=prod"},
+ },
+ {
+ object: &v1.ReplicationController{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: v1.ReplicationControllerSpec{
+ Template: &v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "",
+ apiPrefix: "/api", apiGroup: "", apiVersion: "v1",
+ args: []string{"replicationcontroller", "nginx", "env=prod"},
+ },
+ }
+ for _, input := range inputs {
+ groupVersion := schema.GroupVersion{Group: input.apiGroup, Version: input.apiVersion}
+ testapi.Default = testapi.Groups[input.testAPIGroup]
+ f, tf, _, ns := cmdtesting.NewAPIFactory()
+ codec := scheme.Codecs.CodecForVersions(scheme.Codecs.LegacyCodec(groupVersion), scheme.Codecs.UniversalDecoder(groupVersion), groupVersion, groupVersion)
+ tf.Printer = printers.NewVersionedPrinter(&printers.YAMLPrinter{}, testapi.Default.Converter(), *testapi.Default.GroupVersion())
+ tf.Namespace = "test"
+ tf.CategoryExpander = resource.LegacyCategoryExpander
+ tf.Client = &fake.RESTClient{
+ GroupVersion: groupVersion,
+ NegotiatedSerializer: ns,
+ Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
+ resourcePath := testapi.Default.ResourcePath(input.args[0]+"s", tf.Namespace, input.args[1])
+ switch p, m := req.URL.Path, req.Method; {
+ case p == resourcePath && m == http.MethodGet:
+ return &http.Response{StatusCode: http.StatusOK, Header: defaultHeader(), Body: objBody(codec, input.object)}, nil
+ case p == resourcePath && m == http.MethodPatch:
+ stream, err := req.GetBody()
+ if err != nil {
+ return nil, err
+ }
+ bytes, err := ioutil.ReadAll(stream)
+ if err != nil {
+ return nil, err
+ }
+ assert.Contains(t, string(bytes), `"value":`+`"`+"prod"+`"`, fmt.Sprintf("env not updated for %#v", input.object))
+ return &http.Response{StatusCode: http.StatusOK, Header: defaultHeader(), Body: objBody(codec, input.object)}, nil
+ default:
+ t.Errorf("%s: unexpected request: %s %#v\n%#v", "image", req.Method, req.URL, req)
+ return nil, fmt.Errorf("unexpected request")
+ }
+ }),
+ VersionedAPIPath: path.Join(input.apiPrefix, testapi.Default.GroupVersion().String()),
+ }
+ out := new(bytes.Buffer)
+ cmd := NewCmdEnv(f, out, out, out)
+ cmd.SetOutput(out)
+ cmd.Flags().Set("output", "yaml")
+ opts := EnvOptions{
+ Out: out,
+ Local: false}
+ err := opts.Complete(f, cmd, input.args)
+ assert.NoError(t, err)
+ err = opts.RunEnv(f)
+ assert.NoError(t, err)
+ }
+}
diff --git a/pkg/kubectl/cmd/set/set_image.go b/pkg/kubectl/cmd/set/set_image.go
index 2ccf578d26..bad1c7ac24 100644
--- a/pkg/kubectl/cmd/set/set_image.go
+++ b/pkg/kubectl/cmd/set/set_image.go
@@ -21,12 +21,11 @@ import (
"io"
"github.com/spf13/cobra"
+ "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
utilerrors "k8s.io/apimachinery/pkg/util/errors"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/resource"
@@ -39,9 +38,9 @@ type ImageOptions struct {
resource.FilenameOptions
Mapper meta.RESTMapper
- Typer runtime.ObjectTyper
Infos []*resource.Info
Encoder runtime.Encoder
+ Decoder runtime.Decoder
Selector string
Out io.Writer
Err io.Writer
@@ -56,7 +55,7 @@ type ImageOptions struct {
ResolveImage func(in string) (string, error)
PrintObject func(cmd *cobra.Command, isLocal bool, mapper meta.RESTMapper, obj runtime.Object, out io.Writer) error
- UpdatePodSpecForObject func(obj runtime.Object, fn func(*api.PodSpec) error) (bool, error)
+ UpdatePodSpecForObject func(obj runtime.Object, fn func(*v1.PodSpec) error) (bool, error)
Resources []string
ContainerImages map[string]string
}
@@ -116,9 +115,10 @@ func NewCmdImage(f cmdutil.Factory, out, err io.Writer) *cobra.Command {
}
func (o *ImageOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error {
- o.Mapper, o.Typer = f.Object()
+ o.Mapper, _ = f.Object()
o.UpdatePodSpecForObject = f.UpdatePodSpecForObject
o.Encoder = f.JSONEncoder()
+ o.Decoder = f.Decoder(true)
o.ShortOutput = cmdutil.GetFlagString(cmd, "output") == "name"
o.Record = cmdutil.GetRecordFlag(cmd)
o.ChangeCause = f.Command(cmd, false)
@@ -189,7 +189,7 @@ func (o *ImageOptions) Run() error {
patches := CalculatePatches(o.Infos, o.Encoder, func(info *resource.Info) ([]byte, error) {
transformed := false
- _, err := o.UpdatePodSpecForObject(info.Object, func(spec *api.PodSpec) error {
+ _, err := o.UpdatePodSpecForObject(info.VersionedObject, func(spec *v1.PodSpec) error {
for name, image := range o.ContainerImages {
var (
containerFound bool
@@ -226,9 +226,7 @@ func (o *ImageOptions) Run() error {
return nil
})
if transformed && err == nil {
- // TODO: switch UpdatePodSpecForObject to work on v1.PodSpec, use info.VersionedObject, and avoid conversion completely
- versionedEncoder := legacyscheme.Codecs.EncoderForVersion(o.Encoder, info.Mapping.GroupVersionKind.GroupVersion())
- return runtime.Encode(versionedEncoder, info.Object)
+ return runtime.Encode(o.Encoder, info.VersionedObject)
}
return nil, err
})
@@ -246,7 +244,7 @@ func (o *ImageOptions) Run() error {
}
if o.PrintObject != nil && (o.Local || o.DryRun) {
- if err := o.PrintObject(o.Cmd, o.Local, o.Mapper, info.Object, o.Out); err != nil {
+ if err := o.PrintObject(o.Cmd, o.Local, o.Mapper, patch.Info.VersionedObject, o.Out); err != nil {
return err
}
continue
@@ -272,7 +270,11 @@ func (o *ImageOptions) Run() error {
info.Refresh(obj, true)
if len(o.Output) > 0 {
- if err := o.PrintObject(o.Cmd, o.Local, o.Mapper, obj, o.Out); err != nil {
+ versionedObject, err := patch.Info.Mapping.ConvertToVersion(obj, patch.Info.Mapping.GroupVersionKind.GroupVersion())
+ if err != nil {
+ return err
+ }
+ if err := o.PrintObject(o.Cmd, o.Local, o.Mapper, versionedObject, o.Out); err != nil {
return err
}
continue
diff --git a/pkg/kubectl/cmd/set/set_image_test.go b/pkg/kubectl/cmd/set/set_image_test.go
index d214713b54..144d92184d 100644
--- a/pkg/kubectl/cmd/set/set_image_test.go
+++ b/pkg/kubectl/cmd/set/set_image_test.go
@@ -18,24 +18,36 @@ package set
import (
"bytes"
+ "fmt"
+ "io/ioutil"
"net/http"
+ "path"
"strings"
"testing"
+ "github.com/stretchr/testify/assert"
+ appsv1 "k8s.io/api/apps/v1"
+ appsv1beta1 "k8s.io/api/apps/v1beta1"
+ appsv1beta2 "k8s.io/api/apps/v1beta2"
+ batchv1 "k8s.io/api/batch/v1"
+ "k8s.io/api/core/v1"
+ extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
+ "k8s.io/apimachinery/pkg/runtime/schema"
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/legacyscheme"
+ "k8s.io/kubernetes/pkg/api/testapi"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/resource"
+ "k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/printers"
)
func TestImageLocal(t *testing.T) {
f, tf, codec, ns := cmdtesting.NewAPIFactory()
tf.Client = &fake.RESTClient{
- GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
+ GroupVersion: schema.GroupVersion{Version: ""},
NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
t.Fatalf("unexpected request: %s %#v\n%#v", req.Method, req.URL, req)
@@ -43,7 +55,7 @@ func TestImageLocal(t *testing.T) {
}),
}
tf.Namespace = "test"
- tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion}}
+ tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &schema.GroupVersion{Version: ""}}}
buf := bytes.NewBuffer([]byte{})
cmd := NewCmdImage(f, buf, buf)
@@ -138,7 +150,7 @@ func TestSetImageValidation(t *testing.T) {
func TestSetMultiResourcesImageLocal(t *testing.T) {
f, tf, codec, ns := cmdtesting.NewAPIFactory()
tf.Client = &fake.RESTClient{
- GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
+ GroupVersion: schema.GroupVersion{Version: ""},
NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
t.Fatalf("unexpected request: %s %#v\n%#v", req.Method, req.URL, req)
@@ -146,7 +158,7 @@ func TestSetMultiResourcesImageLocal(t *testing.T) {
}),
}
tf.Namespace = "test"
- tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion}}
+ tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &schema.GroupVersion{Version: ""}}}
buf := bytes.NewBuffer([]byte{})
cmd := NewCmdImage(f, buf, buf)
@@ -175,3 +187,359 @@ func TestSetMultiResourcesImageLocal(t *testing.T) {
t.Errorf("expected out:\n%s\nbut got:\n%s", expectedOut, buf.String())
}
}
+
+func TestSetImageRemote(t *testing.T) {
+ inputs := []struct {
+ object runtime.Object
+ apiPrefix, apiGroup, apiVersion string
+ testAPIGroup string
+ args []string
+ }{
+ {
+ object: &extensionsv1beta1.ReplicaSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: extensionsv1beta1.ReplicaSetSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "extensions", apiVersion: "v1beta1",
+ args: []string{"replicaset", "nginx", "*=thingy"},
+ },
+ {
+ object: &appsv1beta2.ReplicaSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1beta2.ReplicaSetSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1beta2",
+ args: []string{"replicaset", "nginx", "*=thingy"},
+ },
+ {
+ object: &appsv1.ReplicaSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1.ReplicaSetSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1",
+ args: []string{"replicaset", "nginx", "*=thingy"},
+ },
+ {
+ object: &extensionsv1beta1.DaemonSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: extensionsv1beta1.DaemonSetSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "extensions", apiVersion: "v1beta1",
+ args: []string{"daemonset", "nginx", "*=thingy"},
+ },
+ {
+ object: &appsv1beta2.DaemonSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1beta2.DaemonSetSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1beta2",
+ args: []string{"daemonset", "nginx", "*=thingy"},
+ },
+ {
+ object: &appsv1.DaemonSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1.DaemonSetSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1",
+ args: []string{"daemonset", "nginx", "*=thingy"},
+ },
+ {
+ object: &extensionsv1beta1.Deployment{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: extensionsv1beta1.DeploymentSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "extensions", apiVersion: "v1beta1",
+ args: []string{"deployment", "nginx", "*=thingy"},
+ },
+ {
+ object: &appsv1beta1.Deployment{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1beta1.DeploymentSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1beta1",
+ args: []string{"deployment", "nginx", "*=thingy"},
+ },
+ {
+ object: &appsv1beta2.Deployment{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1beta2.DeploymentSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1beta2",
+ args: []string{"deployment", "nginx", "*=thingy"},
+ },
+ {
+ object: &appsv1.Deployment{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1.DeploymentSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1",
+ args: []string{"deployment", "nginx", "*=thingy"},
+ },
+ {
+ object: &appsv1beta1.StatefulSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1beta1.StatefulSetSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "apps",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1beta1",
+ args: []string{"statefulset", "nginx", "*=thingy"},
+ },
+ {
+ object: &appsv1beta2.StatefulSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1beta2.StatefulSetSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "apps",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1beta2",
+ args: []string{"statefulset", "nginx", "*=thingy"},
+ },
+ {
+ object: &appsv1.StatefulSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1.StatefulSetSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "apps",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1",
+ args: []string{"statefulset", "nginx", "*=thingy"},
+ },
+ {
+ object: &batchv1.Job{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: batchv1.JobSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "batch",
+ apiPrefix: "/apis", apiGroup: "batch", apiVersion: "v1",
+ args: []string{"job", "nginx", "*=thingy"},
+ },
+ {
+ object: &v1.ReplicationController{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: v1.ReplicationControllerSpec{
+ Template: &v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "",
+ apiPrefix: "/api", apiGroup: "", apiVersion: "v1",
+ args: []string{"replicationcontroller", "nginx", "*=thingy"},
+ },
+ }
+ for _, input := range inputs {
+ groupVersion := schema.GroupVersion{Group: input.apiGroup, Version: input.apiVersion}
+ testapi.Default = testapi.Groups[input.testAPIGroup]
+ f, tf, _, ns := cmdtesting.NewAPIFactory()
+ codec := scheme.Codecs.CodecForVersions(scheme.Codecs.LegacyCodec(groupVersion), scheme.Codecs.UniversalDecoder(groupVersion), groupVersion, groupVersion)
+ tf.Printer = printers.NewVersionedPrinter(&printers.YAMLPrinter{}, testapi.Default.Converter(), *testapi.Default.GroupVersion())
+ tf.Namespace = "test"
+ tf.CategoryExpander = resource.LegacyCategoryExpander
+ tf.Client = &fake.RESTClient{
+ GroupVersion: groupVersion,
+ NegotiatedSerializer: ns,
+ Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
+ resourcePath := testapi.Default.ResourcePath(input.args[0]+"s", tf.Namespace, input.args[1])
+ switch p, m := req.URL.Path, req.Method; {
+ case p == resourcePath && m == http.MethodGet:
+ return &http.Response{StatusCode: http.StatusOK, Header: defaultHeader(), Body: objBody(codec, input.object)}, nil
+ case p == resourcePath && m == http.MethodPatch:
+ stream, err := req.GetBody()
+ if err != nil {
+ return nil, err
+ }
+ bytes, err := ioutil.ReadAll(stream)
+ if err != nil {
+ return nil, err
+ }
+ assert.Contains(t, string(bytes), `"image":`+`"`+"thingy"+`"`, fmt.Sprintf("image not updated for %#v", input.object))
+ return &http.Response{StatusCode: http.StatusOK, Header: defaultHeader(), Body: objBody(codec, input.object)}, nil
+ default:
+ t.Errorf("%s: unexpected request: %s %#v\n%#v", "image", req.Method, req.URL, req)
+ return nil, fmt.Errorf("unexpected request")
+ }
+ }),
+ VersionedAPIPath: path.Join(input.apiPrefix, testapi.Default.GroupVersion().String()),
+ }
+ out := new(bytes.Buffer)
+ cmd := NewCmdImage(f, out, out)
+ cmd.SetOutput(out)
+ cmd.Flags().Set("output", "yaml")
+ opts := ImageOptions{
+ Out: out,
+ Local: false}
+ err := opts.Complete(f, cmd, input.args)
+ assert.NoError(t, err)
+ err = opts.Run()
+ assert.NoError(t, err)
+ }
+}
diff --git a/pkg/kubectl/cmd/set/set_resources.go b/pkg/kubectl/cmd/set/set_resources.go
index db882d0ed4..5b6a1ac60e 100644
--- a/pkg/kubectl/cmd/set/set_resources.go
+++ b/pkg/kubectl/cmd/set/set_resources.go
@@ -22,13 +22,12 @@ import (
"strings"
"github.com/spf13/cobra"
+ "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/meta"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
utilerrors "k8s.io/apimachinery/pkg/util/errors"
- "k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
@@ -64,7 +63,6 @@ type ResourcesOptions struct {
resource.FilenameOptions
Mapper meta.RESTMapper
- Typer runtime.ObjectTyper
Infos []*resource.Info
Encoder runtime.Encoder
Out io.Writer
@@ -80,10 +78,10 @@ type ResourcesOptions struct {
Limits string
Requests string
- ResourceRequirements api.ResourceRequirements
+ ResourceRequirements v1.ResourceRequirements
PrintObject func(cmd *cobra.Command, isLocal bool, mapper meta.RESTMapper, obj runtime.Object, out io.Writer) error
- UpdatePodSpecForObject func(obj runtime.Object, fn func(*api.PodSpec) error) (bool, error)
+ UpdatePodSpecForObject func(obj runtime.Object, fn func(*v1.PodSpec) error) (bool, error)
Resources []string
}
@@ -128,7 +126,7 @@ func NewCmdResources(f cmdutil.Factory, out io.Writer, errOut io.Writer) *cobra.
}
func (o *ResourcesOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error {
- o.Mapper, o.Typer = f.Object()
+ o.Mapper, _ = f.Object()
o.UpdatePodSpecForObject = f.UpdatePodSpecForObject
o.Encoder = f.JSONEncoder()
o.Output = cmdutil.GetFlagString(cmd, "output")
@@ -180,7 +178,7 @@ func (o *ResourcesOptions) Validate() error {
return fmt.Errorf("you must specify an update to requests or limits (in the form of --requests/--limits)")
}
- o.ResourceRequirements, err = kubectl.HandleResourceRequirements(map[string]string{"limits": o.Limits, "requests": o.Requests})
+ o.ResourceRequirements, err = kubectl.HandleResourceRequirementsV1(map[string]string{"limits": o.Limits, "requests": o.Requests})
if err != nil {
return err
}
@@ -192,19 +190,19 @@ func (o *ResourcesOptions) Run() error {
allErrs := []error{}
patches := CalculatePatches(o.Infos, o.Encoder, func(info *resource.Info) ([]byte, error) {
transformed := false
- _, err := o.UpdatePodSpecForObject(info.Object, func(spec *api.PodSpec) error {
+ _, err := o.UpdatePodSpecForObject(info.VersionedObject, func(spec *v1.PodSpec) error {
containers, _ := selectContainers(spec.Containers, o.ContainerSelector)
if len(containers) != 0 {
for i := range containers {
if len(o.Limits) != 0 && len(containers[i].Resources.Limits) == 0 {
- containers[i].Resources.Limits = make(api.ResourceList)
+ containers[i].Resources.Limits = make(v1.ResourceList)
}
for key, value := range o.ResourceRequirements.Limits {
containers[i].Resources.Limits[key] = value
}
if len(o.Requests) != 0 && len(containers[i].Resources.Requests) == 0 {
- containers[i].Resources.Requests = make(api.ResourceList)
+ containers[i].Resources.Requests = make(v1.ResourceList)
}
for key, value := range o.ResourceRequirements.Requests {
containers[i].Resources.Requests[key] = value
@@ -217,9 +215,7 @@ func (o *ResourcesOptions) Run() error {
return nil
})
if transformed && err == nil {
- // TODO: switch UpdatePodSpecForObject to work on v1.PodSpec, use info.VersionedObject, and avoid conversion completely
- versionedEncoder := legacyscheme.Codecs.EncoderForVersion(o.Encoder, info.Mapping.GroupVersionKind.GroupVersion())
- return runtime.Encode(versionedEncoder, info.Object)
+ return runtime.Encode(o.Encoder, info.VersionedObject)
}
return nil, err
})
@@ -238,7 +234,7 @@ func (o *ResourcesOptions) Run() error {
}
if o.Local || cmdutil.GetDryRunFlag(o.Cmd) {
- if err := o.PrintObject(o.Cmd, o.Local, o.Mapper, info.Object, o.Out); err != nil {
+ if err := o.PrintObject(o.Cmd, o.Local, o.Mapper, patch.Info.VersionedObject, o.Out); err != nil {
return err
}
continue
@@ -263,7 +259,14 @@ func (o *ResourcesOptions) Run() error {
shortOutput := o.Output == "name"
if len(o.Output) > 0 && !shortOutput {
- return o.PrintObject(o.Cmd, o.Local, o.Mapper, info.Object, o.Out)
+ versionedObject, err := patch.Info.Mapping.ConvertToVersion(obj, patch.Info.Mapping.GroupVersionKind.GroupVersion())
+ if err != nil {
+ return err
+ }
+ if err := o.PrintObject(o.Cmd, o.Local, o.Mapper, versionedObject, o.Out); err != nil {
+ return err
+ }
+ continue
}
cmdutil.PrintSuccess(o.Mapper, shortOutput, o.Out, info.Mapping.Resource, info.Name, false, "resource requirements updated")
}
diff --git a/pkg/kubectl/cmd/set/set_resources_test.go b/pkg/kubectl/cmd/set/set_resources_test.go
index a456c0843a..dcfd89bd4d 100644
--- a/pkg/kubectl/cmd/set/set_resources_test.go
+++ b/pkg/kubectl/cmd/set/set_resources_test.go
@@ -18,24 +18,36 @@ package set
import (
"bytes"
+ "fmt"
+ "io/ioutil"
"net/http"
+ "path"
"strings"
"testing"
+ "github.com/stretchr/testify/assert"
+ appsv1 "k8s.io/api/apps/v1"
+ appsv1beta1 "k8s.io/api/apps/v1beta1"
+ appsv1beta2 "k8s.io/api/apps/v1beta2"
+ batchv1 "k8s.io/api/batch/v1"
+ "k8s.io/api/core/v1"
+ extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
+ "k8s.io/apimachinery/pkg/runtime/schema"
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/legacyscheme"
+ "k8s.io/kubernetes/pkg/api/testapi"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/resource"
+ "k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/printers"
)
func TestResourcesLocal(t *testing.T) {
f, tf, codec, ns := cmdtesting.NewAPIFactory()
tf.Client = &fake.RESTClient{
- GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
+ GroupVersion: schema.GroupVersion{Version: ""},
NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
t.Fatalf("unexpected request: %s %#v\n%#v", req.Method, req.URL, req)
@@ -43,7 +55,7 @@ func TestResourcesLocal(t *testing.T) {
}),
}
tf.Namespace = "test"
- tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion}}
+ tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &schema.GroupVersion{Version: ""}}}
buf := bytes.NewBuffer([]byte{})
cmd := NewCmdResources(f, buf, buf)
@@ -79,7 +91,7 @@ func TestResourcesLocal(t *testing.T) {
func TestSetMultiResourcesLimitsLocal(t *testing.T) {
f, tf, codec, ns := cmdtesting.NewAPIFactory()
tf.Client = &fake.RESTClient{
- GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
+ GroupVersion: schema.GroupVersion{Version: ""},
NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
t.Fatalf("unexpected request: %s %#v\n%#v", req.Method, req.URL, req)
@@ -87,7 +99,7 @@ func TestSetMultiResourcesLimitsLocal(t *testing.T) {
}),
}
tf.Namespace = "test"
- tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion}}
+ tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &schema.GroupVersion{Version: ""}}}
buf := bytes.NewBuffer([]byte{})
cmd := NewCmdResources(f, buf, buf)
@@ -120,3 +132,366 @@ func TestSetMultiResourcesLimitsLocal(t *testing.T) {
t.Errorf("expected out:\n%s\nbut got:\n%s", expectedOut, buf.String())
}
}
+
+func TestSetResourcesRemote(t *testing.T) {
+ inputs := []struct {
+ object runtime.Object
+ apiPrefix, apiGroup, apiVersion string
+ testAPIGroup string
+ args []string
+ }{
+ {
+ object: &extensionsv1beta1.ReplicaSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: extensionsv1beta1.ReplicaSetSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "extensions", apiVersion: "v1beta1",
+ args: []string{"replicaset", "nginx"},
+ },
+ {
+ object: &appsv1beta2.ReplicaSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1beta2.ReplicaSetSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1beta2",
+ args: []string{"replicaset", "nginx"},
+ },
+ {
+ object: &appsv1.ReplicaSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1.ReplicaSetSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1",
+ args: []string{"replicaset", "nginx"},
+ },
+ {
+ object: &extensionsv1beta1.DaemonSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: extensionsv1beta1.DaemonSetSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "extensions", apiVersion: "v1beta1",
+ args: []string{"daemonset", "nginx"},
+ },
+ {
+ object: &appsv1beta2.DaemonSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1beta2.DaemonSetSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1beta2",
+ args: []string{"daemonset", "nginx"},
+ },
+ {
+ object: &appsv1.DaemonSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1.DaemonSetSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1",
+ args: []string{"daemonset", "nginx"},
+ },
+ {
+ object: &extensionsv1beta1.Deployment{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: extensionsv1beta1.DeploymentSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "extensions", apiVersion: "v1beta1",
+ args: []string{"deployment", "nginx"},
+ },
+ {
+ object: &appsv1beta1.Deployment{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1beta1.DeploymentSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1beta1",
+ args: []string{"deployment", "nginx"},
+ },
+ {
+ object: &appsv1beta2.Deployment{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1beta2.DeploymentSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1beta2",
+ args: []string{"deployment", "nginx"},
+ },
+ {
+ object: &appsv1.Deployment{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1.DeploymentSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1",
+ args: []string{"deployment", "nginx"},
+ },
+ {
+ object: &appsv1beta1.StatefulSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1beta1.StatefulSetSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "apps",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1beta1",
+ args: []string{"statefulset", "nginx"},
+ },
+ {
+ object: &appsv1beta2.StatefulSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1beta2.StatefulSetSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "apps",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1beta2",
+ args: []string{"statefulset", "nginx"},
+ },
+ {
+ object: &appsv1.StatefulSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1.StatefulSetSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "apps",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1",
+ args: []string{"statefulset", "nginx"},
+ },
+ {
+ object: &batchv1.Job{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: batchv1.JobSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "batch",
+ apiPrefix: "/apis", apiGroup: "batch", apiVersion: "v1",
+ args: []string{"job", "nginx"},
+ },
+ {
+ object: &v1.ReplicationController{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: v1.ReplicationControllerSpec{
+ Template: &v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "",
+ apiPrefix: "/api", apiGroup: "", apiVersion: "v1",
+ args: []string{"replicationcontroller", "nginx"},
+ },
+ }
+ for _, input := range inputs {
+ groupVersion := schema.GroupVersion{Group: input.apiGroup, Version: input.apiVersion}
+ testapi.Default = testapi.Groups[input.testAPIGroup]
+ f, tf, _, ns := cmdtesting.NewAPIFactory()
+ codec := scheme.Codecs.CodecForVersions(scheme.Codecs.LegacyCodec(groupVersion), scheme.Codecs.UniversalDecoder(groupVersion), groupVersion, groupVersion)
+ mapper, typer := f.Object()
+ tf.Printer = &printers.NamePrinter{Decoders: []runtime.Decoder{testapi.Default.Codec()}, Typer: typer, Mapper: mapper}
+ tf.Namespace = "test"
+ tf.CategoryExpander = resource.LegacyCategoryExpander
+ tf.Client = &fake.RESTClient{
+ GroupVersion: groupVersion,
+ NegotiatedSerializer: ns,
+ Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
+ resourcePath := testapi.Default.ResourcePath(input.args[0]+"s", tf.Namespace, input.args[1])
+ switch p, m := req.URL.Path, req.Method; {
+ case p == resourcePath && m == http.MethodGet:
+ return &http.Response{StatusCode: http.StatusOK, Header: defaultHeader(), Body: objBody(codec, input.object)}, nil
+ case p == resourcePath && m == http.MethodPatch:
+ stream, err := req.GetBody()
+ if err != nil {
+ return nil, err
+ }
+ bytes, err := ioutil.ReadAll(stream)
+ if err != nil {
+ return nil, err
+ }
+ assert.Contains(t, string(bytes), "200m", fmt.Sprintf("resources not updated for %#v", input.object))
+ return &http.Response{StatusCode: http.StatusOK, Header: defaultHeader(), Body: objBody(codec, input.object)}, nil
+ default:
+ t.Errorf("%s: unexpected request: %s %#v\n%#v", "resources", req.Method, req.URL, req)
+ return nil, fmt.Errorf("unexpected request")
+ }
+ }),
+ VersionedAPIPath: path.Join(input.apiPrefix, testapi.Default.GroupVersion().String()),
+ }
+ buf := new(bytes.Buffer)
+ cmd := NewCmdResources(f, buf, buf)
+ cmd.SetOutput(buf)
+ cmd.Flags().Set("output", "yaml")
+ opts := ResourcesOptions{
+ Out: buf,
+ Local: true,
+ Limits: "cpu=200m,memory=512Mi",
+ ContainerSelector: "*"}
+ err := opts.Complete(f, cmd, input.args)
+ if err == nil {
+ err = opts.Validate()
+ }
+ if err == nil {
+ err = opts.Run()
+ }
+ assert.NoError(t, err)
+ }
+}
diff --git a/pkg/kubectl/cmd/set/set_selector.go b/pkg/kubectl/cmd/set/set_selector.go
index 83d6432ca8..bebc824db6 100644
--- a/pkg/kubectl/cmd/set/set_selector.go
+++ b/pkg/kubectl/cmd/set/set_selector.go
@@ -21,13 +21,12 @@ import (
"io"
"github.com/spf13/cobra"
-
+ "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/meta"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/validation"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/resource"
@@ -119,6 +118,7 @@ func (o *SelectorOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args [
mapper, _ := f.Object()
o.mapper = mapper
o.encoder = f.JSONEncoder()
+
o.resources, o.selector, err = getResourcesAndSelector(args)
if err != nil {
return err
@@ -178,10 +178,15 @@ func (o *SelectorOptions) RunSelector() error {
return r.Visit(func(info *resource.Info, err error) error {
patch := &Patch{Info: info}
CalculatePatch(patch, o.encoder, func(info *resource.Info) ([]byte, error) {
- selectErr := updateSelectorForObject(info.Object, *o.selector)
+ versioned, err := info.Mapping.ConvertToVersion(info.Object, info.Mapping.GroupVersionKind.GroupVersion())
+ if err != nil {
+ return nil, err
+ }
+ patch.Info.VersionedObject = versioned
+ selectErr := updateSelectorForObject(info.VersionedObject, *o.selector)
if selectErr == nil {
- return runtime.Encode(o.encoder, info.Object)
+ return runtime.Encode(o.encoder, info.VersionedObject)
}
return nil, selectErr
})
@@ -190,8 +195,7 @@ func (o *SelectorOptions) RunSelector() error {
return patch.Err
}
if o.local || o.dryrun {
- o.PrintObject(info.Object)
- return nil
+ return o.PrintObject(info.VersionedObject)
}
patched, err := resource.NewHelper(info.Client, info.Mapping).Patch(info.Namespace, info.Name, types.StrategicMergePatchType, patch.Patch)
@@ -211,7 +215,7 @@ func (o *SelectorOptions) RunSelector() error {
shortOutput := o.output == "name"
if len(o.output) > 0 && !shortOutput {
- return o.PrintObject(info.Object)
+ return o.PrintObject(patched)
}
cmdutil.PrintSuccess(o.mapper, shortOutput, o.out, info.Mapping.Resource, info.Name, o.dryrun, "selector updated")
return nil
@@ -231,7 +235,7 @@ func updateSelectorForObject(obj runtime.Object, selector metav1.LabelSelector)
}
var err error
switch t := obj.(type) {
- case *api.Service:
+ case *v1.Service:
t.Spec.Selector, err = copyOldSelector()
default:
err = fmt.Errorf("setting a selector is only supported for Services")
diff --git a/pkg/kubectl/cmd/set/set_selector_test.go b/pkg/kubectl/cmd/set/set_selector_test.go
index 3b45e4da2b..901b956499 100644
--- a/pkg/kubectl/cmd/set/set_selector_test.go
+++ b/pkg/kubectl/cmd/set/set_selector_test.go
@@ -24,14 +24,14 @@ import (
"testing"
"github.com/stretchr/testify/assert"
+ batchv1 "k8s.io/api/batch/v1"
+ "k8s.io/api/core/v1"
+ extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
+ "k8s.io/apimachinery/pkg/runtime/schema"
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/legacyscheme"
- "k8s.io/kubernetes/pkg/apis/batch"
- "k8s.io/kubernetes/pkg/apis/extensions"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/printers"
)
@@ -46,14 +46,14 @@ func TestUpdateSelectorForObjectTypes(t *testing.T) {
},
}}
- rc := api.ReplicationController{}
- ser := api.Service{}
- dep := extensions.Deployment{Spec: extensions.DeploymentSpec{Selector: &before}}
- ds := extensions.DaemonSet{Spec: extensions.DaemonSetSpec{Selector: &before}}
- rs := extensions.ReplicaSet{Spec: extensions.ReplicaSetSpec{Selector: &before}}
- job := batch.Job{Spec: batch.JobSpec{Selector: &before}}
- pvc := api.PersistentVolumeClaim{Spec: api.PersistentVolumeClaimSpec{Selector: &before}}
- sa := api.ServiceAccount{}
+ rc := v1.ReplicationController{}
+ ser := v1.Service{}
+ dep := extensionsv1beta1.Deployment{Spec: extensionsv1beta1.DeploymentSpec{Selector: &before}}
+ ds := extensionsv1beta1.DaemonSet{Spec: extensionsv1beta1.DaemonSetSpec{Selector: &before}}
+ rs := extensionsv1beta1.ReplicaSet{Spec: extensionsv1beta1.ReplicaSetSpec{Selector: &before}}
+ job := batchv1.Job{Spec: batchv1.JobSpec{Selector: &before}}
+ pvc := v1.PersistentVolumeClaim{Spec: v1.PersistentVolumeClaimSpec{Selector: &before}}
+ sa := v1.ServiceAccount{}
type args struct {
obj runtime.Object
selector metav1.LabelSelector
@@ -128,7 +128,7 @@ func TestUpdateSelectorForObjectTypes(t *testing.T) {
}
func TestUpdateNewSelectorValuesForObject(t *testing.T) {
- ser := api.Service{}
+ ser := v1.Service{}
type args struct {
obj runtime.Object
selector metav1.LabelSelector
@@ -170,7 +170,7 @@ func TestUpdateNewSelectorValuesForObject(t *testing.T) {
}
func TestUpdateOldSelectorValuesForObject(t *testing.T) {
- ser := api.Service{Spec: api.ServiceSpec{Selector: map[string]string{"fee": "true"}}}
+ ser := v1.Service{Spec: v1.ServiceSpec{Selector: map[string]string{"fee": "true"}}}
type args struct {
obj runtime.Object
selector metav1.LabelSelector
@@ -318,7 +318,7 @@ func TestGetResourcesAndSelector(t *testing.T) {
func TestSelectorTest(t *testing.T) {
f, tf, codec, ns := cmdtesting.NewAPIFactory()
tf.Client = &fake.RESTClient{
- GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
+ GroupVersion: schema.GroupVersion{Version: ""},
NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
t.Fatalf("unexpected request: %s %#v\n%#v", req.Method, req.URL, req)
@@ -326,7 +326,7 @@ func TestSelectorTest(t *testing.T) {
}),
}
tf.Namespace = "test"
- tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion}}
+ tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &schema.GroupVersion{Version: ""}}}
buf := bytes.NewBuffer([]byte{})
cmd := NewCmdSelector(f, buf)
diff --git a/pkg/kubectl/cmd/set/set_serviceaccount.go b/pkg/kubectl/cmd/set/set_serviceaccount.go
index f558386759..db17d0ebcf 100644
--- a/pkg/kubectl/cmd/set/set_serviceaccount.go
+++ b/pkg/kubectl/cmd/set/set_serviceaccount.go
@@ -23,11 +23,11 @@ import (
"github.com/spf13/cobra"
+ "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
utilerrors "k8s.io/apimachinery/pkg/util/errors"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/resource"
@@ -61,14 +61,15 @@ type serviceAccountConfig struct {
out io.Writer
err io.Writer
dryRun bool
+ cmd *cobra.Command
shortOutput bool
all bool
record bool
output string
changeCause string
local bool
- saPrint func(obj runtime.Object) error
- updatePodSpecForObject func(runtime.Object, func(*api.PodSpec) error) (bool, error)
+ PrintObject func(cmd *cobra.Command, isLocal bool, mapper meta.RESTMapper, obj runtime.Object, out io.Writer) error
+ updatePodSpecForObject func(runtime.Object, func(*v1.PodSpec) error) (bool, error)
infos []*resource.Info
serviceAccountName string
}
@@ -113,9 +114,9 @@ func (saConfig *serviceAccountConfig) Complete(f cmdutil.Factory, cmd *cobra.Com
saConfig.dryRun = cmdutil.GetDryRunFlag(cmd)
saConfig.output = cmdutil.GetFlagString(cmd, "output")
saConfig.updatePodSpecForObject = f.UpdatePodSpecForObject
- saConfig.saPrint = func(obj runtime.Object) error {
- return f.PrintObject(cmd, saConfig.local, saConfig.mapper, obj, saConfig.out)
- }
+ saConfig.PrintObject = f.PrintObject
+ saConfig.cmd = cmd
+
cmdNamespace, enforceNamespace, err := f.DefaultNamespace()
if err != nil {
return err
@@ -148,11 +149,11 @@ func (saConfig *serviceAccountConfig) Complete(f cmdutil.Factory, cmd *cobra.Com
func (saConfig *serviceAccountConfig) Run() error {
patchErrs := []error{}
patchFn := func(info *resource.Info) ([]byte, error) {
- saConfig.updatePodSpecForObject(info.Object, func(podSpec *api.PodSpec) error {
+ saConfig.updatePodSpecForObject(info.VersionedObject, func(podSpec *v1.PodSpec) error {
podSpec.ServiceAccountName = saConfig.serviceAccountName
return nil
})
- return runtime.Encode(saConfig.encoder, info.Object)
+ return runtime.Encode(saConfig.encoder, info.VersionedObject)
}
patches := CalculatePatches(saConfig.infos, saConfig.encoder, patchFn)
for _, patch := range patches {
@@ -162,7 +163,9 @@ func (saConfig *serviceAccountConfig) Run() error {
continue
}
if saConfig.local || saConfig.dryRun {
- saConfig.saPrint(patch.Info.Object)
+ if err := saConfig.PrintObject(saConfig.cmd, saConfig.local, saConfig.mapper, patch.Info.VersionedObject, saConfig.out); err != nil {
+ return err
+ }
continue
}
patched, err := resource.NewHelper(info.Client, info.Mapping).Patch(info.Namespace, info.Name, types.StrategicMergePatchType, patch.Patch)
@@ -179,7 +182,14 @@ func (saConfig *serviceAccountConfig) Run() error {
}
}
if len(saConfig.output) > 0 {
- saConfig.saPrint(patched)
+ versionedObject, err := patch.Info.Mapping.ConvertToVersion(patched, patch.Info.Mapping.GroupVersionKind.GroupVersion())
+ if err != nil {
+ return err
+ }
+ if err := saConfig.PrintObject(saConfig.cmd, saConfig.local, saConfig.mapper, versionedObject, saConfig.out); err != nil {
+ return err
+ }
+ continue
}
cmdutil.PrintSuccess(saConfig.mapper, saConfig.shortOutput, saConfig.out, info.Mapping.Resource, info.Name, saConfig.dryRun, "serviceaccount updated")
}
diff --git a/pkg/kubectl/cmd/set/set_serviceaccount_test.go b/pkg/kubectl/cmd/set/set_serviceaccount_test.go
index 2330083b84..c162d618c3 100644
--- a/pkg/kubectl/cmd/set/set_serviceaccount_test.go
+++ b/pkg/kubectl/cmd/set/set_serviceaccount_test.go
@@ -26,19 +26,21 @@ import (
"testing"
"github.com/stretchr/testify/assert"
-
+ appsv1 "k8s.io/api/apps/v1"
+ appsv1beta1 "k8s.io/api/apps/v1beta1"
+ appsv1beta2 "k8s.io/api/apps/v1beta2"
+ batchv1 "k8s.io/api/batch/v1"
+ "k8s.io/api/core/v1"
+ extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
+ restclient "k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
- "k8s.io/kubernetes/pkg/apis/apps"
- "k8s.io/kubernetes/pkg/apis/batch"
- "k8s.io/kubernetes/pkg/apis/extensions"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/resource"
+ "k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/printers"
)
@@ -51,22 +53,21 @@ Example resource specifications include:
' '
''`
-func TestServiceAccountLocal(t *testing.T) {
+func TestSetServiceAccountLocal(t *testing.T) {
inputs := []struct {
yaml string
apiGroup string
}{
- {yaml: "../../../../test/fixtures/doc-yaml/user-guide/replication.yaml", apiGroup: api.GroupName},
- {yaml: "../../../../test/fixtures/doc-yaml/admin/daemon.yaml", apiGroup: extensions.GroupName},
- {yaml: "../../../../test/fixtures/doc-yaml/user-guide/replicaset/redis-slave.yaml", apiGroup: extensions.GroupName},
- {yaml: "../../../../test/fixtures/doc-yaml/user-guide/job.yaml", apiGroup: batch.GroupName},
- {yaml: "../../../../test/fixtures/doc-yaml/user-guide/deployment.yaml", apiGroup: extensions.GroupName},
- {yaml: "../../../../examples/storage/minio/minio-distributed-statefulset.yaml", apiGroup: apps.GroupName},
+ {yaml: "../../../../test/fixtures/doc-yaml/user-guide/replication.yaml", apiGroup: ""},
+ {yaml: "../../../../test/fixtures/doc-yaml/admin/daemon.yaml", apiGroup: "extensions"},
+ {yaml: "../../../../test/fixtures/doc-yaml/user-guide/replicaset/redis-slave.yaml", apiGroup: "extensions"},
+ {yaml: "../../../../test/fixtures/doc-yaml/user-guide/job.yaml", apiGroup: "batch"},
+ {yaml: "../../../../test/fixtures/doc-yaml/user-guide/deployment.yaml", apiGroup: "extensions"},
}
f, tf, _, _ := cmdtesting.NewAPIFactory()
tf.Client = &fake.RESTClient{
- GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
+ GroupVersion: schema.GroupVersion{Version: "v1"},
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
t.Fatalf("unexpected request: %s %#v\n%#v", req.Method, req.URL, req)
return nil, nil
@@ -93,71 +94,232 @@ func TestServiceAccountLocal(t *testing.T) {
}
}
-func TestServiceAccountRemote(t *testing.T) {
+func TestSetServiceAccountMultiLocal(t *testing.T) {
+ testapi.Default = testapi.Groups[""]
+ f, tf, codec, ns := cmdtesting.NewAPIFactory()
+ tf.Client = &fake.RESTClient{
+ GroupVersion: schema.GroupVersion{Version: ""},
+ NegotiatedSerializer: ns,
+ Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
+ t.Fatalf("unexpected request: %s %#v\n%#v", req.Method, req.URL, req)
+ return nil, nil
+ }),
+ }
+ tf.Namespace = "test"
+ tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &schema.GroupVersion{Version: ""}}}
+
+ buf := bytes.NewBuffer([]byte{})
+ cmd := NewCmdServiceAccount(f, buf, buf)
+ cmd.SetOutput(buf)
+ cmd.Flags().Set("output", "name")
+ cmd.Flags().Set("local", "true")
+ mapper, typer := f.Object()
+ tf.Printer = &printers.NamePrinter{Decoders: []runtime.Decoder{codec}, Typer: typer, Mapper: mapper}
+ opts := serviceAccountConfig{fileNameOptions: resource.FilenameOptions{
+ Filenames: []string{"../../../../test/fixtures/pkg/kubectl/cmd/set/multi-resource-yaml.yaml"}},
+ out: buf,
+ local: true}
+
+ err := opts.Complete(f, cmd, []string{serviceAccount})
+ if err == nil {
+ err = opts.Run()
+ }
+ if err != nil {
+ t.Fatalf("unexpected error: %v", err)
+ }
+ expectedOut := "replicationcontrollers/first-rc\nreplicationcontrollers/second-rc\n"
+ if buf.String() != expectedOut {
+ t.Errorf("expected out:\n%s\nbut got:\n%s", expectedOut, buf.String())
+ }
+}
+
+func TestSetServiceAccountRemote(t *testing.T) {
inputs := []struct {
- object runtime.Object
- apiPrefix, apiGroup string
- args []string
+ object runtime.Object
+ apiPrefix, apiGroup, apiVersion string
+ testAPIGroup string
+ args []string
}{
{
- object: &extensions.ReplicaSet{
- TypeMeta: metav1.TypeMeta{Kind: "ReplicaSet", APIVersion: legacyscheme.Registry.GroupOrDie(extensions.GroupName).GroupVersion.String()},
+ object: &extensionsv1beta1.ReplicaSet{
ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
},
- apiPrefix: "/apis", apiGroup: extensions.GroupName,
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "extensions", apiVersion: "v1beta1",
args: []string{"replicaset", "nginx", serviceAccount},
},
{
- object: &extensions.DaemonSet{
- TypeMeta: metav1.TypeMeta{Kind: "DaemonSet", APIVersion: legacyscheme.Registry.GroupOrDie(extensions.GroupName).GroupVersion.String()},
+ object: &appsv1beta2.ReplicaSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1beta2.ReplicaSetSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1beta2",
+ args: []string{"replicaset", "nginx", serviceAccount},
+ },
+ {
+ object: &appsv1.ReplicaSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1.ReplicaSetSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1",
+ args: []string{"replicaset", "nginx", serviceAccount},
+ },
+ {
+ object: &extensionsv1beta1.DaemonSet{
ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
},
- apiPrefix: "/apis", apiGroup: extensions.GroupName,
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "extensions", apiVersion: "v1beta1",
args: []string{"daemonset", "nginx", serviceAccount},
},
{
- object: &api.ReplicationController{
- TypeMeta: metav1.TypeMeta{Kind: "ReplicationController", APIVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion.String()},
+ object: &appsv1beta2.DaemonSet{
ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
},
- apiPrefix: "/api", apiGroup: api.GroupName,
- args: []string{"replicationcontroller", "nginx", serviceAccount}},
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1beta2",
+ args: []string{"daemonset", "nginx", serviceAccount},
+ },
{
- object: &extensions.Deployment{
- TypeMeta: metav1.TypeMeta{Kind: "Deployment", APIVersion: legacyscheme.Registry.GroupOrDie(extensions.GroupName).GroupVersion.String()},
+ object: &appsv1.DaemonSet{
ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
},
- apiPrefix: "/apis", apiGroup: extensions.GroupName,
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1",
+ args: []string{"daemonset", "nginx", serviceAccount},
+ },
+ {
+ object: &extensionsv1beta1.Deployment{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "extensions", apiVersion: "v1beta1",
args: []string{"deployment", "nginx", serviceAccount},
},
{
- object: &batch.Job{
- TypeMeta: metav1.TypeMeta{Kind: "Job", APIVersion: legacyscheme.Registry.GroupOrDie(batch.GroupName).GroupVersion.String()},
+ object: &appsv1beta1.Deployment{
ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
},
- apiPrefix: "/apis", apiGroup: batch.GroupName,
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1beta1",
+ args: []string{"deployment", "nginx", serviceAccount},
+ },
+ {
+ object: &appsv1beta2.Deployment{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1beta2",
+ args: []string{"deployment", "nginx", serviceAccount},
+ },
+ {
+ object: &appsv1.Deployment{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1.DeploymentSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "extensions",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1",
+ args: []string{"deployment", "nginx", serviceAccount},
+ },
+ {
+ object: &appsv1beta1.StatefulSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ },
+ testAPIGroup: "apps",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1beta1",
+ args: []string{"statefulset", "nginx", serviceAccount},
+ },
+ {
+ object: &appsv1beta2.StatefulSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ },
+ testAPIGroup: "apps",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1beta2",
+ args: []string{"statefulset", "nginx", serviceAccount},
+ },
+ {
+ object: &appsv1.StatefulSet{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ Spec: appsv1.StatefulSetSpec{
+ Template: v1.PodTemplateSpec{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "nginx",
+ Image: "nginx",
+ },
+ },
+ },
+ },
+ },
+ },
+ testAPIGroup: "apps",
+ apiPrefix: "/apis", apiGroup: "apps", apiVersion: "v1",
+ args: []string{"statefulset", "nginx", serviceAccount},
+ },
+ {
+ object: &batchv1.Job{
+ ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
+ },
+ testAPIGroup: "batch",
+ apiPrefix: "/apis", apiGroup: "batch", apiVersion: "v1",
args: []string{"job", "nginx", serviceAccount},
},
{
- object: &apps.StatefulSet{
- TypeMeta: metav1.TypeMeta{Kind: "StatefulSet", APIVersion: legacyscheme.Registry.GroupOrDie(apps.GroupName).GroupVersion.String()},
+ object: &v1.ReplicationController{
ObjectMeta: metav1.ObjectMeta{Name: "nginx"},
},
- apiPrefix: "/apis", apiGroup: apps.GroupName,
- args: []string{"statefulset", "nginx", serviceAccount},
+ testAPIGroup: "",
+ apiPrefix: "/api", apiGroup: "", apiVersion: "v1",
+ args: []string{"replicationcontroller", "nginx", serviceAccount},
},
}
for _, input := range inputs {
-
- groupVersion := legacyscheme.Registry.GroupOrDie(input.apiGroup).GroupVersion
- testapi.Default = testapi.Groups[input.apiGroup]
- f, tf, codec, _ := cmdtesting.NewAPIFactory()
+ groupVersion := schema.GroupVersion{Group: input.apiGroup, Version: input.apiVersion}
+ testapi.Default = testapi.Groups[input.testAPIGroup]
+ f, tf, _, ns := cmdtesting.NewAPIFactory()
+ codec := scheme.Codecs.CodecForVersions(scheme.Codecs.LegacyCodec(groupVersion), scheme.Codecs.UniversalDecoder(groupVersion), groupVersion, groupVersion)
tf.Printer = printers.NewVersionedPrinter(&printers.YAMLPrinter{}, testapi.Default.Converter(), *testapi.Default.GroupVersion())
tf.Namespace = "test"
tf.CategoryExpander = resource.LegacyCategoryExpander
tf.Client = &fake.RESTClient{
- GroupVersion: legacyscheme.Registry.GroupOrDie(input.apiGroup).GroupVersion,
- NegotiatedSerializer: testapi.Default.NegotiatedSerializer(),
+ GroupVersion: groupVersion,
+ NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
resourcePath := testapi.Default.ResourcePath(input.args[0]+"s", tf.Namespace, input.args[1])
switch p, m := req.URL.Path, req.Method; {
@@ -179,13 +341,12 @@ func TestServiceAccountRemote(t *testing.T) {
return nil, fmt.Errorf("unexpected request")
}
}),
- VersionedAPIPath: path.Join(input.apiPrefix, groupVersion.String()),
+ VersionedAPIPath: path.Join(input.apiPrefix, testapi.Default.GroupVersion().String()),
}
out := new(bytes.Buffer)
cmd := NewCmdServiceAccount(f, out, out)
cmd.SetOutput(out)
cmd.Flags().Set("output", "yaml")
-
saConfig := serviceAccountConfig{
out: out,
local: false}
diff --git a/pkg/kubectl/cmd/testing/BUILD b/pkg/kubectl/cmd/testing/BUILD
index 3d4fd21662..f556f1f6ff 100644
--- a/pkg/kubectl/cmd/testing/BUILD
+++ b/pkg/kubectl/cmd/testing/BUILD
@@ -14,9 +14,9 @@ go_library(
"//build/visible_to:pkg_kubectl_cmd_testing_CONSUMERS",
],
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/kubectl:go_default_library",
"//pkg/kubectl/cmd/util:go_default_library",
@@ -27,10 +27,10 @@ go_library(
"//pkg/printers:go_default_library",
"//vendor/github.com/spf13/cobra:go_default_library",
"//vendor/github.com/spf13/pflag:go_default_library",
+ "//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
diff --git a/pkg/kubectl/cmd/testing/fake.go b/pkg/kubectl/cmd/testing/fake.go
index a451ab6b71..68ccf915af 100644
--- a/pkg/kubectl/cmd/testing/fake.go
+++ b/pkg/kubectl/cmd/testing/fake.go
@@ -26,6 +26,7 @@ import (
"github.com/spf13/cobra"
"github.com/spf13/pflag"
+ "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/meta"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
@@ -36,9 +37,9 @@ import (
"k8s.io/client-go/kubernetes"
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/pkg/kubectl"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
@@ -448,7 +449,7 @@ func (f *FakeFactory) ApproximatePodTemplateForObject(obj runtime.Object) (*api.
return f.ApproximatePodTemplateForObject(obj)
}
-func (f *FakeFactory) UpdatePodSpecForObject(obj runtime.Object, fn func(*api.PodSpec) error) (bool, error) {
+func (f *FakeFactory) UpdatePodSpecForObject(obj runtime.Object, fn func(*v1.PodSpec) error) (bool, error) {
return false, nil
}
diff --git a/pkg/kubectl/cmd/testing/zz_generated.deepcopy.go b/pkg/kubectl/cmd/testing/zz_generated.deepcopy.go
index 08c8d321cc..db57244871 100644
--- a/pkg/kubectl/cmd/testing/zz_generated.deepcopy.go
+++ b/pkg/kubectl/cmd/testing/zz_generated.deepcopy.go
@@ -21,43 +21,9 @@ limitations under the License.
package testing
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc {
- return []conversion.GeneratedDeepCopyFunc{
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExternalNamespacedType).DeepCopyInto(out.(*ExternalNamespacedType))
- return nil
- }, InType: reflect.TypeOf(&ExternalNamespacedType{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExternalNamespacedType2).DeepCopyInto(out.(*ExternalNamespacedType2))
- return nil
- }, InType: reflect.TypeOf(&ExternalNamespacedType2{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExternalType).DeepCopyInto(out.(*ExternalType))
- return nil
- }, InType: reflect.TypeOf(&ExternalType{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExternalType2).DeepCopyInto(out.(*ExternalType2))
- return nil
- }, InType: reflect.TypeOf(&ExternalType2{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*InternalNamespacedType).DeepCopyInto(out.(*InternalNamespacedType))
- return nil
- }, InType: reflect.TypeOf(&InternalNamespacedType{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*InternalType).DeepCopyInto(out.(*InternalType))
- return nil
- }, InType: reflect.TypeOf(&InternalType{})},
- }
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ExternalNamespacedType) DeepCopyInto(out *ExternalNamespacedType) {
*out = *in
diff --git a/pkg/kubectl/cmd/util/BUILD b/pkg/kubectl/cmd/util/BUILD
index 1b7ada546a..e6fcfeead8 100644
--- a/pkg/kubectl/cmd/util/BUILD
+++ b/pkg/kubectl/cmd/util/BUILD
@@ -22,11 +22,11 @@ go_library(
"//build/visible_to:pkg_kubectl_cmd_util_CONSUMERS",
],
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
- "//pkg/api/v1:go_default_library",
"//pkg/apis/apps:go_default_library",
"//pkg/apis/batch:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/v1:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/core/internalversion:go_default_library",
@@ -48,9 +48,13 @@ go_library(
"//vendor/github.com/googleapis/gnostic/OpenAPIv2:go_default_library",
"//vendor/github.com/spf13/cobra:go_default_library",
"//vendor/github.com/spf13/pflag:go_default_library",
+ "//vendor/k8s.io/api/apps/v1:go_default_library",
"//vendor/k8s.io/api/apps/v1beta1:go_default_library",
+ "//vendor/k8s.io/api/apps/v1beta2:go_default_library",
+ "//vendor/k8s.io/api/batch/v1:go_default_library",
"//vendor/k8s.io/api/batch/v2alpha1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
+ "//vendor/k8s.io/api/extensions/v1beta1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
@@ -95,12 +99,12 @@ go_test(
"//build/visible_to:COMMON_testing",
],
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/api/testing:go_default_library",
"//pkg/apis/apps:go_default_library",
"//pkg/apis/batch:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/clientset_generated/internalclientset/fake:go_default_library",
diff --git a/pkg/kubectl/cmd/util/editor/BUILD b/pkg/kubectl/cmd/util/editor/BUILD
index 0e1c430d14..c156ddb6eb 100644
--- a/pkg/kubectl/cmd/util/editor/BUILD
+++ b/pkg/kubectl/cmd/util/editor/BUILD
@@ -15,7 +15,7 @@ go_library(
"//build/visible_to:pkg_kubectl_cmd_util_editor_CONSUMERS",
],
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/kubectl:go_default_library",
"//pkg/kubectl/cmd/util:go_default_library",
"//pkg/kubectl/resource:go_default_library",
diff --git a/pkg/kubectl/cmd/util/editor/editoptions.go b/pkg/kubectl/cmd/util/editor/editoptions.go
index 2403217b04..6531d7382a 100644
--- a/pkg/kubectl/cmd/util/editor/editoptions.go
+++ b/pkg/kubectl/cmd/util/editor/editoptions.go
@@ -41,7 +41,7 @@ import (
"k8s.io/apimachinery/pkg/util/strategicpatch"
"k8s.io/apimachinery/pkg/util/validation/field"
"k8s.io/apimachinery/pkg/util/yaml"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/kubectl"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/resource"
diff --git a/pkg/kubectl/cmd/util/env/BUILD b/pkg/kubectl/cmd/util/env/BUILD
index b076b74a55..c6084cfea4 100644
--- a/pkg/kubectl/cmd/util/env/BUILD
+++ b/pkg/kubectl/cmd/util/env/BUILD
@@ -10,13 +10,13 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/kubectl/cmd/util/env",
visibility = ["//visibility:public"],
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/resource:go_default_library",
- "//pkg/client/clientset_generated/internalclientset:go_default_library",
+ "//pkg/api/v1/resource:go_default_library",
"//pkg/fieldpath:go_default_library",
+ "//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
+ "//vendor/k8s.io/client-go/kubernetes:go_default_library",
],
)
diff --git a/pkg/kubectl/cmd/util/env/env_parse.go b/pkg/kubectl/cmd/util/env/env_parse.go
index 6b68aacbf6..1d1686af64 100644
--- a/pkg/kubectl/cmd/util/env/env_parse.go
+++ b/pkg/kubectl/cmd/util/env/env_parse.go
@@ -24,8 +24,8 @@ import (
"regexp"
"strings"
+ "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/util/sets"
- "k8s.io/kubernetes/pkg/api"
)
// Env returns an environment variable if not nil, or a default value.
@@ -83,8 +83,8 @@ func SplitEnvironmentFromResources(args []string) (resources, envArgs []string,
// parseIntoEnvVar parses the list of key-value pairs into kubernetes EnvVar.
// envVarType is for making errors more specific to user intentions.
-func parseIntoEnvVar(spec []string, defaultReader io.Reader, envVarType string) ([]api.EnvVar, []string, error) {
- env := []api.EnvVar{}
+func parseIntoEnvVar(spec []string, defaultReader io.Reader, envVarType string) ([]v1.EnvVar, []string, error) {
+ env := []v1.EnvVar{}
exists := sets.NewString()
var remove []string
for _, envSpec := range spec {
@@ -106,7 +106,7 @@ func parseIntoEnvVar(spec []string, defaultReader io.Reader, envVarType string)
return nil, nil, fmt.Errorf("invalid %s: %v", envVarType, envSpec)
}
exists.Insert(parts[0])
- env = append(env, api.EnvVar{
+ env = append(env, v1.EnvVar{
Name: parts[0],
Value: parts[1],
})
@@ -126,12 +126,12 @@ func parseIntoEnvVar(spec []string, defaultReader io.Reader, envVarType string)
// ParseEnv parses the elements of the first argument looking for environment variables in key=value form and, if one of those values is "-", it also scans the reader.
// The same environment variable cannot be both modified and removed in the same command.
-func ParseEnv(spec []string, defaultReader io.Reader) ([]api.EnvVar, []string, error) {
+func ParseEnv(spec []string, defaultReader io.Reader) ([]v1.EnvVar, []string, error) {
return parseIntoEnvVar(spec, defaultReader, "environment variable")
}
-func readEnv(r io.Reader, envVarType string) ([]api.EnvVar, error) {
- env := []api.EnvVar{}
+func readEnv(r io.Reader, envVarType string) ([]v1.EnvVar, error) {
+ env := []v1.EnvVar{}
scanner := bufio.NewScanner(r)
for scanner.Scan() {
envSpec := scanner.Text()
@@ -143,7 +143,7 @@ func readEnv(r io.Reader, envVarType string) ([]api.EnvVar, error) {
if len(parts) != 2 {
return nil, fmt.Errorf("invalid %s: %v", envVarType, envSpec)
}
- env = append(env, api.EnvVar{
+ env = append(env, v1.EnvVar{
Name: parts[0],
Value: parts[1],
})
diff --git a/pkg/kubectl/cmd/util/env/env_parse_test.go b/pkg/kubectl/cmd/util/env/env_parse_test.go
index f5e780f4d4..32be9833c7 100644
--- a/pkg/kubectl/cmd/util/env/env_parse_test.go
+++ b/pkg/kubectl/cmd/util/env/env_parse_test.go
@@ -84,7 +84,7 @@ func ExampleParseEnv_good() {
ss := []string{"ENV=VARIABLE", "AND=ANOTHER", "REMOVE-", "-"}
fmt.Println(ParseEnv(ss, r))
// Output:
- // [{ENV VARIABLE } {AND ANOTHER } {FROM READER }] [REMOVE]
+ // [{ENV VARIABLE nil} {AND ANOTHER nil} {FROM READER nil}] [REMOVE]
}
func ExampleParseEnv_bad() {
diff --git a/pkg/kubectl/cmd/util/env/env_resolve.go b/pkg/kubectl/cmd/util/env/env_resolve.go
index df79c4cf4f..d663f73047 100644
--- a/pkg/kubectl/cmd/util/env/env_resolve.go
+++ b/pkg/kubectl/cmd/util/env/env_resolve.go
@@ -19,30 +19,30 @@ package env
import (
"fmt"
+ "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/resource"
- clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
+ "k8s.io/client-go/kubernetes"
+ "k8s.io/kubernetes/pkg/api/v1/resource"
"k8s.io/kubernetes/pkg/fieldpath"
)
// ResourceStore defines a new resource store data structure.
type ResourceStore struct {
- SecretStore map[string]*api.Secret
- ConfigMapStore map[string]*api.ConfigMap
+ SecretStore map[string]*v1.Secret
+ ConfigMapStore map[string]*v1.ConfigMap
}
// NewResourceStore returns a pointer to a new resource store data structure.
func NewResourceStore() *ResourceStore {
return &ResourceStore{
- SecretStore: make(map[string]*api.Secret),
- ConfigMapStore: make(map[string]*api.ConfigMap),
+ SecretStore: make(map[string]*v1.Secret),
+ ConfigMapStore: make(map[string]*v1.ConfigMap),
}
}
// getSecretRefValue returns the value of a secret in the supplied namespace
-func getSecretRefValue(client clientset.Interface, namespace string, store *ResourceStore, secretSelector *api.SecretKeySelector) (string, error) {
+func getSecretRefValue(client kubernetes.Interface, namespace string, store *ResourceStore, secretSelector *v1.SecretKeySelector) (string, error) {
secret, ok := store.SecretStore[secretSelector.Name]
if !ok {
var err error
@@ -60,7 +60,7 @@ func getSecretRefValue(client clientset.Interface, namespace string, store *Reso
}
// getConfigMapRefValue returns the value of a configmap in the supplied namespace
-func getConfigMapRefValue(client clientset.Interface, namespace string, store *ResourceStore, configMapSelector *api.ConfigMapKeySelector) (string, error) {
+func getConfigMapRefValue(client kubernetes.Interface, namespace string, store *ResourceStore, configMapSelector *v1.ConfigMapKeySelector) (string, error) {
configMap, ok := store.ConfigMapStore[configMapSelector.Name]
if !ok {
var err error
@@ -77,17 +77,17 @@ func getConfigMapRefValue(client clientset.Interface, namespace string, store *R
}
// getFieldRef returns the value of the supplied path in the given object
-func getFieldRef(obj runtime.Object, from *api.EnvVarSource) (string, error) {
+func getFieldRef(obj runtime.Object, from *v1.EnvVarSource) (string, error) {
return fieldpath.ExtractFieldPathAsString(obj, from.FieldRef.FieldPath)
}
// getResourceFieldRef returns the value of a resource in the given container
-func getResourceFieldRef(from *api.EnvVarSource, c *api.Container) (string, error) {
+func getResourceFieldRef(from *v1.EnvVarSource, c *v1.Container) (string, error) {
return resource.ExtractContainerResourceValue(from.ResourceFieldRef, c)
}
// GetEnvVarRefValue returns the value referenced by the supplied EnvVarSource given the other supplied information.
-func GetEnvVarRefValue(kc clientset.Interface, ns string, store *ResourceStore, from *api.EnvVarSource, obj runtime.Object, c *api.Container) (string, error) {
+func GetEnvVarRefValue(kc kubernetes.Interface, ns string, store *ResourceStore, from *v1.EnvVarSource, obj runtime.Object, c *v1.Container) (string, error) {
if from.SecretKeyRef != nil {
return getSecretRefValue(kc, ns, store, from.SecretKeyRef)
}
@@ -108,7 +108,7 @@ func GetEnvVarRefValue(kc clientset.Interface, ns string, store *ResourceStore,
}
// GetEnvVarRefString returns a text description of whichever field is set within the supplied EnvVarSource argument.
-func GetEnvVarRefString(from *api.EnvVarSource) string {
+func GetEnvVarRefString(from *v1.EnvVarSource) string {
if from.ConfigMapKeyRef != nil {
return fmt.Sprintf("configmap %s, key %s", from.ConfigMapKeyRef.Name, from.ConfigMapKeyRef.Key)
}
diff --git a/pkg/kubectl/cmd/util/factory.go b/pkg/kubectl/cmd/util/factory.go
index a614ff0688..4fefd3b5d7 100644
--- a/pkg/kubectl/cmd/util/factory.go
+++ b/pkg/kubectl/cmd/util/factory.go
@@ -37,8 +37,8 @@ import (
"k8s.io/client-go/kubernetes"
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
- "k8s.io/kubernetes/pkg/api"
- apiv1 "k8s.io/kubernetes/pkg/api/v1"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ apiv1 "k8s.io/kubernetes/pkg/apis/core/v1"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
coreclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
"k8s.io/kubernetes/pkg/kubectl"
@@ -116,7 +116,7 @@ type ClientAccessFactory interface {
// UpdatePodSpecForObject will call the provided function on the pod spec this object supports,
// return false if no pod spec is supported, or return an error.
- UpdatePodSpecForObject(obj runtime.Object, fn func(*api.PodSpec) error) (bool, error)
+ UpdatePodSpecForObject(obj runtime.Object, fn func(*v1.PodSpec) error) (bool, error)
// MapBasedSelectorForObject returns the map-based selector associated with the provided object. If a
// new set-based selector is provided, an error is returned if the selector cannot be converted to a
@@ -297,13 +297,13 @@ func GetFirstPod(client coreclient.PodsGetter, namespace string, selector string
for i := range podList.Items {
pod := podList.Items[i]
externalPod := &v1.Pod{}
- apiv1.Convert_api_Pod_To_v1_Pod(&pod, externalPod, nil)
+ apiv1.Convert_core_Pod_To_v1_Pod(&pod, externalPod, nil)
pods = append(pods, externalPod)
}
if len(pods) > 0 {
sort.Sort(sortBy(pods))
internalPod := &api.Pod{}
- apiv1.Convert_v1_Pod_To_api_Pod(pods[0], internalPod, nil)
+ apiv1.Convert_v1_Pod_To_core_Pod(pods[0], internalPod, nil)
return internalPod, len(podList.Items), nil
}
diff --git a/pkg/kubectl/cmd/util/factory_builder.go b/pkg/kubectl/cmd/util/factory_builder.go
index e62280a735..97b2cb14b4 100644
--- a/pkg/kubectl/cmd/util/factory_builder.go
+++ b/pkg/kubectl/cmd/util/factory_builder.go
@@ -125,8 +125,13 @@ func (f *ring2Factory) PrintObject(cmd *cobra.Command, isLocal bool, mapper meta
if err != nil {
return err
}
+ // Prefer the existing external version if specified
+ var preferredVersion []string
+ if gvks[0].Version != "" && gvks[0].Version != runtime.APIVersionInternal {
+ preferredVersion = []string{gvks[0].Version}
+ }
- mapping, err := mapper.RESTMapping(gvks[0].GroupKind())
+ mapping, err := mapper.RESTMapping(gvks[0].GroupKind(), preferredVersion...)
if err != nil {
return err
}
diff --git a/pkg/kubectl/cmd/util/factory_client_access.go b/pkg/kubectl/cmd/util/factory_client_access.go
index 6c12da8a35..ea783b99e9 100644
--- a/pkg/kubectl/cmd/util/factory_client_access.go
+++ b/pkg/kubectl/cmd/util/factory_client_access.go
@@ -29,11 +29,17 @@ import (
"strings"
"time"
+ "k8s.io/api/core/v1"
+
"github.com/spf13/cobra"
"github.com/spf13/pflag"
+ appsv1 "k8s.io/api/apps/v1"
appsv1beta1 "k8s.io/api/apps/v1beta1"
+ appsv1beta2 "k8s.io/api/apps/v1beta2"
+ batchv1 "k8s.io/api/batch/v1"
batchv2alpha1 "k8s.io/api/batch/v2alpha1"
+ extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/api/meta"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -45,10 +51,9 @@ import (
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
"k8s.io/client-go/util/homedir"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/apis/apps"
- "k8s.io/kubernetes/pkg/apis/batch"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/pkg/kubectl"
@@ -226,25 +231,49 @@ func (f *ring0Factory) JSONEncoder() runtime.Encoder {
return legacyscheme.Codecs.LegacyCodec(legacyscheme.Registry.EnabledVersions()...)
}
-func (f *ring0Factory) UpdatePodSpecForObject(obj runtime.Object, fn func(*api.PodSpec) error) (bool, error) {
+func (f *ring0Factory) UpdatePodSpecForObject(obj runtime.Object, fn func(*v1.PodSpec) error) (bool, error) {
// TODO: replace with a swagger schema based approach (identify pod template via schema introspection)
switch t := obj.(type) {
- case *api.Pod:
+ case *v1.Pod:
return true, fn(&t.Spec)
- case *api.ReplicationController:
+ // ReplicationController
+ case *v1.ReplicationController:
if t.Spec.Template == nil {
- t.Spec.Template = &api.PodTemplateSpec{}
+ t.Spec.Template = &v1.PodTemplateSpec{}
}
return true, fn(&t.Spec.Template.Spec)
- case *extensions.Deployment:
+ // Deployment
+ case *extensionsv1beta1.Deployment:
return true, fn(&t.Spec.Template.Spec)
- case *extensions.DaemonSet:
+ case *appsv1beta1.Deployment:
return true, fn(&t.Spec.Template.Spec)
- case *extensions.ReplicaSet:
+ case *appsv1beta2.Deployment:
return true, fn(&t.Spec.Template.Spec)
- case *apps.StatefulSet:
+ case *appsv1.Deployment:
return true, fn(&t.Spec.Template.Spec)
- case *batch.Job:
+ // DaemonSet
+ case *extensionsv1beta1.DaemonSet:
+ return true, fn(&t.Spec.Template.Spec)
+ case *appsv1beta2.DaemonSet:
+ return true, fn(&t.Spec.Template.Spec)
+ case *appsv1.DaemonSet:
+ return true, fn(&t.Spec.Template.Spec)
+ // ReplicaSet
+ case *extensionsv1beta1.ReplicaSet:
+ return true, fn(&t.Spec.Template.Spec)
+ case *appsv1beta2.ReplicaSet:
+ return true, fn(&t.Spec.Template.Spec)
+ case *appsv1.ReplicaSet:
+ return true, fn(&t.Spec.Template.Spec)
+ // StatefulSet
+ case *appsv1beta1.StatefulSet:
+ return true, fn(&t.Spec.Template.Spec)
+ case *appsv1beta2.StatefulSet:
+ return true, fn(&t.Spec.Template.Spec)
+ case *appsv1.StatefulSet:
+ return true, fn(&t.Spec.Template.Spec)
+ // Job
+ case *batchv1.Job:
return true, fn(&t.Spec.Template.Spec)
default:
return false, fmt.Errorf("the object is not a pod or does not have a pod template")
@@ -498,6 +527,7 @@ const (
ClusterV1Beta1GeneratorName = "cluster/v1beta1"
PodDisruptionBudgetV1GeneratorName = "poddisruptionbudget/v1beta1"
PodDisruptionBudgetV2GeneratorName = "poddisruptionbudget/v1beta1/v2"
+ PriorityClassV1Alpha1GeneratorName = "priorityclass/v1alpha1"
)
// DefaultGenerators returns the set of default generators for use in Factory instances
diff --git a/pkg/kubectl/cmd/util/factory_object_mapping.go b/pkg/kubectl/cmd/util/factory_object_mapping.go
index 671130d6e8..a7cdf76039 100644
--- a/pkg/kubectl/cmd/util/factory_object_mapping.go
+++ b/pkg/kubectl/cmd/util/factory_object_mapping.go
@@ -35,10 +35,10 @@ import (
"k8s.io/client-go/discovery"
"k8s.io/client-go/dynamic"
restclient "k8s.io/client-go/rest"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/apis/apps"
"k8s.io/kubernetes/pkg/apis/batch"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
client "k8s.io/kubernetes/pkg/client/unversioned"
"k8s.io/kubernetes/pkg/controller"
diff --git a/pkg/kubectl/cmd/util/factory_object_mapping_test.go b/pkg/kubectl/cmd/util/factory_object_mapping_test.go
index 80622d793b..3da414c6ec 100644
--- a/pkg/kubectl/cmd/util/factory_object_mapping_test.go
+++ b/pkg/kubectl/cmd/util/factory_object_mapping_test.go
@@ -26,9 +26,9 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/util/diff"
testclient "k8s.io/client-go/testing"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/apps"
"k8s.io/kubernetes/pkg/apis/batch"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
diff --git a/pkg/kubectl/cmd/util/factory_test.go b/pkg/kubectl/cmd/util/factory_test.go
index f671090bcf..c8f349898b 100644
--- a/pkg/kubectl/cmd/util/factory_test.go
+++ b/pkg/kubectl/cmd/util/factory_test.go
@@ -38,9 +38,9 @@ import (
testcore "k8s.io/client-go/testing"
"k8s.io/client-go/tools/clientcmd"
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
"k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/kubectl"
diff --git a/pkg/kubectl/cmd/util/helpers.go b/pkg/kubectl/cmd/util/helpers.go
index ee094f85d1..b982d86b87 100644
--- a/pkg/kubectl/cmd/util/helpers.go
+++ b/pkg/kubectl/cmd/util/helpers.go
@@ -27,7 +27,7 @@ import (
"strings"
"time"
- jsonpatch "github.com/evanphx/json-patch"
+ "github.com/evanphx/json-patch"
"github.com/golang/glog"
"github.com/spf13/cobra"
@@ -362,6 +362,15 @@ func GetFlagInt(cmd *cobra.Command, flag string) int {
return i
}
+// Assumes the flag has a default value.
+func GetFlagInt32(cmd *cobra.Command, flag string) int32 {
+ i, err := cmd.Flags().GetInt32(flag)
+ if err != nil {
+ glog.Fatalf("error accessing flag %s for command %s: %v", flag, cmd.Name(), err)
+ }
+ return i
+}
+
// Assumes the flag has a default value.
func GetFlagInt64(cmd *cobra.Command, flag string) int64 {
i, err := cmd.Flags().GetInt64(flag)
diff --git a/pkg/kubectl/cmd/util/helpers_test.go b/pkg/kubectl/cmd/util/helpers_test.go
index 3b4a58312d..db3d09ae39 100644
--- a/pkg/kubectl/cmd/util/helpers_test.go
+++ b/pkg/kubectl/cmd/util/helpers_test.go
@@ -32,10 +32,10 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
apitesting "k8s.io/kubernetes/pkg/api/testing"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/utils/exec"
)
diff --git a/pkg/kubectl/cmd/util/openapi/OWNERS b/pkg/kubectl/cmd/util/openapi/OWNERS
new file mode 100644
index 0000000000..7eb2d06fe1
--- /dev/null
+++ b/pkg/kubectl/cmd/util/openapi/OWNERS
@@ -0,0 +1,4 @@
+approvers:
+- apelisse
+reviewers:
+- apelisse
diff --git a/pkg/kubectl/cmd/util/shortcut_restmapper.go b/pkg/kubectl/cmd/util/shortcut_restmapper.go
index 8d71af02ce..33889b48a5 100644
--- a/pkg/kubectl/cmd/util/shortcut_restmapper.go
+++ b/pkg/kubectl/cmd/util/shortcut_restmapper.go
@@ -79,22 +79,24 @@ func (e shortcutExpander) RESTMappings(gk schema.GroupKind, versions ...string)
func (e shortcutExpander) getShortcutMappings() ([]kubectl.ResourceShortcuts, error) {
res := []kubectl.ResourceShortcuts{}
// get server resources
+ // This can return an error *and* the results it was able to find. We don't need to fail on the error.
apiResList, err := e.discoveryClient.ServerResources()
- if err == nil {
- for _, apiResources := range apiResList {
- for _, apiRes := range apiResources.APIResources {
- for _, shortName := range apiRes.ShortNames {
- gv, err := schema.ParseGroupVersion(apiResources.GroupVersion)
- if err != nil {
- glog.V(1).Infof("Unable to parse groupversion = %s due to = %s", apiResources.GroupVersion, err.Error())
- continue
- }
- rs := kubectl.ResourceShortcuts{
- ShortForm: schema.GroupResource{Group: gv.Group, Resource: shortName},
- LongForm: schema.GroupResource{Group: gv.Group, Resource: apiRes.Name},
- }
- res = append(res, rs)
+ if err != nil {
+ glog.V(1).Infof("Error loading discovery information: %v", err)
+ }
+ for _, apiResources := range apiResList {
+ for _, apiRes := range apiResources.APIResources {
+ for _, shortName := range apiRes.ShortNames {
+ gv, err := schema.ParseGroupVersion(apiResources.GroupVersion)
+ if err != nil {
+ glog.V(1).Infof("Unable to parse groupversion = %s due to = %s", apiResources.GroupVersion, err.Error())
+ continue
}
+ rs := kubectl.ResourceShortcuts{
+ ShortForm: schema.GroupResource{Group: gv.Group, Resource: shortName},
+ LongForm: schema.GroupResource{Group: gv.Group, Resource: apiRes.Name},
+ }
+ res = append(res, rs)
}
}
}
diff --git a/pkg/kubectl/delete.go b/pkg/kubectl/delete.go
index 3982bc17e7..1522f71b68 100644
--- a/pkg/kubectl/delete.go
+++ b/pkg/kubectl/delete.go
@@ -28,9 +28,9 @@ import (
utilerrors "k8s.io/apimachinery/pkg/util/errors"
"k8s.io/apimachinery/pkg/util/uuid"
"k8s.io/apimachinery/pkg/util/wait"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/apps"
"k8s.io/kubernetes/pkg/apis/batch"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
appsclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/apps/internalversion"
diff --git a/pkg/kubectl/delete_test.go b/pkg/kubectl/delete_test.go
index 66803de147..d250d1e548 100644
--- a/pkg/kubectl/delete_test.go
+++ b/pkg/kubectl/delete_test.go
@@ -30,8 +30,8 @@ import (
"k8s.io/apimachinery/pkg/util/uuid"
"k8s.io/apimachinery/pkg/watch"
testcore "k8s.io/client-go/testing"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/batch"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
coreclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
diff --git a/pkg/kubectl/explain/OWNERS b/pkg/kubectl/explain/OWNERS
new file mode 100644
index 0000000000..7eb2d06fe1
--- /dev/null
+++ b/pkg/kubectl/explain/OWNERS
@@ -0,0 +1,4 @@
+approvers:
+- apelisse
+reviewers:
+- apelisse
diff --git a/pkg/kubectl/explain/field_lookup_test.go b/pkg/kubectl/explain/field_lookup_test.go
index 4120c31f33..239ad70400 100644
--- a/pkg/kubectl/explain/field_lookup_test.go
+++ b/pkg/kubectl/explain/field_lookup_test.go
@@ -69,9 +69,9 @@ func TestFindField(t *testing.T) {
gotPath = path.GetPath().String()
}
- if gotErr != test.err && gotPath != test.expectedPath {
- t.Errorf("LookupSchemaForField(schema, %v) = (%v, %v), expected (%s, %v)",
- test.path, gotErr, gotPath, test.expectedPath, test.err)
+ if gotErr != test.err || gotPath != test.expectedPath {
+ t.Errorf("LookupSchemaForField(schema, %v) = (path: %q, err: %q), expected (path: %q, err: %q)",
+ test.path, gotPath, gotErr, test.expectedPath, test.err)
}
}
}
diff --git a/pkg/kubectl/history.go b/pkg/kubectl/history.go
index a4e913e3af..f59da50bed 100644
--- a/pkg/kubectl/history.go
+++ b/pkg/kubectl/history.go
@@ -35,10 +35,10 @@ import (
"k8s.io/client-go/kubernetes"
clientappsv1beta1 "k8s.io/client-go/kubernetes/typed/apps/v1beta1"
clientextv1beta1 "k8s.io/client-go/kubernetes/typed/extensions/v1beta1"
- "k8s.io/kubernetes/pkg/api"
- apiv1 "k8s.io/kubernetes/pkg/api/v1"
- "k8s.io/kubernetes/pkg/apis/apps"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ apiv1 "k8s.io/kubernetes/pkg/apis/core/v1"
deploymentutil "k8s.io/kubernetes/pkg/controller/deployment/util"
+ kapps "k8s.io/kubernetes/pkg/kubectl/apps"
sliceutil "k8s.io/kubernetes/pkg/kubectl/util/slice"
printersinternal "k8s.io/kubernetes/pkg/printers/internalversion"
)
@@ -52,16 +52,47 @@ type HistoryViewer interface {
ViewHistory(namespace, name string, revision int64) (string, error)
}
+type HistoryVisitor struct {
+ clientset kubernetes.Interface
+ result HistoryViewer
+}
+
+func (v *HistoryVisitor) VisitDeployment(elem kapps.GroupKindElement) {
+ v.result = &DeploymentHistoryViewer{v.clientset}
+}
+
+func (v *HistoryVisitor) VisitStatefulSet(kind kapps.GroupKindElement) {
+ v.result = &StatefulSetHistoryViewer{v.clientset}
+}
+
+func (v *HistoryVisitor) VisitDaemonSet(kind kapps.GroupKindElement) {
+ v.result = &DaemonSetHistoryViewer{v.clientset}
+}
+
+func (v *HistoryVisitor) VisitJob(kind kapps.GroupKindElement) {}
+func (v *HistoryVisitor) VisitPod(kind kapps.GroupKindElement) {}
+func (v *HistoryVisitor) VisitReplicaSet(kind kapps.GroupKindElement) {}
+func (v *HistoryVisitor) VisitReplicationController(kind kapps.GroupKindElement) {}
+
+// HistoryViewerFor returns an implementation of HistoryViewer interface for the given schema kind
func HistoryViewerFor(kind schema.GroupKind, c kubernetes.Interface) (HistoryViewer, error) {
- switch kind {
- case extensionsv1beta1.SchemeGroupVersion.WithKind("Deployment").GroupKind(), apps.Kind("Deployment"):
- return &DeploymentHistoryViewer{c}, nil
- case apps.Kind("StatefulSet"):
- return &StatefulSetHistoryViewer{c}, nil
- case extensionsv1beta1.SchemeGroupVersion.WithKind("DaemonSet").GroupKind(), apps.Kind("DaemonSet"):
- return &DaemonSetHistoryViewer{c}, nil
+ elem := kapps.GroupKindElement(kind)
+ visitor := &HistoryVisitor{
+ clientset: c,
}
- return nil, fmt.Errorf("no history viewer has been implemented for %q", kind)
+
+ // Determine which HistoryViewer we need here
+ err := elem.Accept(visitor)
+
+ if err != nil {
+ return nil, fmt.Errorf("error retrieving history for %q, %v", kind.String(), err)
+ }
+
+ if visitor.result == nil {
+ return nil, fmt.Errorf("no history viewer has been implemented for %q", kind.String())
+ }
+
+ return visitor.result, nil
}
type DeploymentHistoryViewer struct {
@@ -138,7 +169,7 @@ func (h *DeploymentHistoryViewer) ViewHistory(namespace, name string, revision i
func printTemplate(template *v1.PodTemplateSpec) (string, error) {
buf := bytes.NewBuffer([]byte{})
internalTemplate := &api.PodTemplateSpec{}
- if err := apiv1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(template, internalTemplate, nil); err != nil {
+ if err := apiv1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(template, internalTemplate, nil); err != nil {
return "", fmt.Errorf("failed to convert podtemplate, %v", err)
}
w := printersinternal.NewPrefixWriter(buf)
diff --git a/pkg/kubectl/history_test.go b/pkg/kubectl/history_test.go
new file mode 100644
index 0000000000..55a266935d
--- /dev/null
+++ b/pkg/kubectl/history_test.go
@@ -0,0 +1,46 @@
+/*
+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 kubectl
+
+import (
+ "reflect"
+ "testing"
+
+ "k8s.io/apimachinery/pkg/runtime/schema"
+ "k8s.io/client-go/kubernetes/fake"
+)
+
+var historytests = map[schema.GroupKind]reflect.Type{
+ {Group: "apps", Kind: "DaemonSet"}: reflect.TypeOf(&DaemonSetHistoryViewer{}),
+ {Group: "apps", Kind: "StatefulSet"}: reflect.TypeOf(&StatefulSetHistoryViewer{}),
+ {Group: "apps", Kind: "Deployment"}: reflect.TypeOf(&DeploymentHistoryViewer{}),
+}
+
+func TestHistoryViewerFor(t *testing.T) {
+ fakeClientset := &fake.Clientset{}
+
+ for kind, expectedType := range historytests {
+ result, err := HistoryViewerFor(kind, fakeClientset)
+ if err != nil {
+ t.Fatalf("error getting HistoryViewer for a %v: %v", kind.String(), err)
+ }
+
+ if reflect.TypeOf(result) != expectedType {
+ t.Fatalf("unexpected output type (%v was expected but got %v)", expectedType, reflect.TypeOf(result))
+ }
+ }
+}
diff --git a/pkg/kubectl/metricsutil/BUILD b/pkg/kubectl/metricsutil/BUILD
index 91e1e0af3c..84fc55a01d 100644
--- a/pkg/kubectl/metricsutil/BUILD
+++ b/pkg/kubectl/metricsutil/BUILD
@@ -15,7 +15,7 @@ go_library(
],
deps = [
"//pkg/api/legacyscheme:go_default_library",
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//pkg/printers:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
diff --git a/pkg/kubectl/metricsutil/metrics_client.go b/pkg/kubectl/metricsutil/metrics_client.go
index 24bf0ba5e5..909f91f67e 100644
--- a/pkg/kubectl/metricsutil/metrics_client.go
+++ b/pkg/kubectl/metricsutil/metrics_client.go
@@ -25,7 +25,7 @@ import (
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime/schema"
corev1 "k8s.io/client-go/kubernetes/typed/core/v1"
- "k8s.io/kubernetes/pkg/api/validation"
+ "k8s.io/kubernetes/pkg/apis/core/validation"
metricsapi "k8s.io/metrics/pkg/apis/metrics/v1alpha1"
)
diff --git a/pkg/kubectl/plugins/examples/aging/aging.rb b/pkg/kubectl/plugins/examples/aging/aging.rb
index ed9a87fffc..3a60e94c43 100755
--- a/pkg/kubectl/plugins/examples/aging/aging.rb
+++ b/pkg/kubectl/plugins/examples/aging/aging.rb
@@ -22,7 +22,8 @@ class Numeric
end
end
-pods_json = `kubectl get pods -o json`
+namespace = ENV['KUBECTL_PLUGINS_CURRENT_NAMESPACE'] || 'default'
+pods_json = `kubectl --namespace #{namespace} get pods -o json`
pods_parsed = JSON.parse(pods_json)
puts "The Magnificent Aging Plugin."
diff --git a/pkg/kubectl/plugins/examples/aging/plugin.yaml b/pkg/kubectl/plugins/examples/aging/plugin.yaml
index 07dc2022a6..87275dc095 100644
--- a/pkg/kubectl/plugins/examples/aging/plugin.yaml
+++ b/pkg/kubectl/plugins/examples/aging/plugin.yaml
@@ -2,7 +2,4 @@ name: "aging"
shortDesc: "Aging shows pods by age"
longDesc: >
Aging shows pods from the current namespace by age.
- Once we have plugin support for global flags through
- env vars (planned for V1) we'll be able to switch
- between namespaces using the --namespace flag.
command: ./aging.rb
diff --git a/pkg/kubectl/priorityclass.go b/pkg/kubectl/priorityclass.go
new file mode 100644
index 0000000000..fd600ae325
--- /dev/null
+++ b/pkg/kubectl/priorityclass.go
@@ -0,0 +1,85 @@
+/*
+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 kubectl
+
+import (
+ "fmt"
+
+ scheduling "k8s.io/api/scheduling/v1alpha1"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apimachinery/pkg/runtime"
+)
+
+// PriorityClassV1Generator supports stable generation of a priorityClass.
+type PriorityClassV1Generator struct {
+ Name string
+ Value int32
+ GlobalDefault bool
+ Description string
+}
+
+// Ensure it supports the generator pattern that uses parameters specified during construction.
+var _ StructuredGenerator = &PriorityClassV1Generator{}
+
+func (PriorityClassV1Generator) ParamNames() []GeneratorParam {
+ return []GeneratorParam{
+ {"name", true},
+ {"value", true},
+ {"global-default", false},
+ {"description", false},
+ }
+}
+
+func (s PriorityClassV1Generator) Generate(params map[string]interface{}) (runtime.Object, error) {
+ if err := ValidateParams(s.ParamNames(), params); err != nil {
+ return nil, err
+ }
+
+ name, found := params["name"].(string)
+ if !found {
+ return nil, fmt.Errorf("expected string, saw %v for 'name'", name)
+ }
+
+ value, found := params["value"].(int32)
+ if !found {
+ return nil, fmt.Errorf("expected int32, found %v", value)
+ }
+
+ globalDefault, found := params["global-default"].(bool)
+ if !found {
+ return nil, fmt.Errorf("expected bool, found %v", globalDefault)
+ }
+
+ description, found := params["description"].(string)
+ if !found {
+ return nil, fmt.Errorf("expected string, found %v", description)
+ }
+ delegate := &PriorityClassV1Generator{Name: name, Value: value, GlobalDefault: globalDefault, Description: description}
+ return delegate.StructuredGenerate()
+}
+
+// StructuredGenerate outputs a priorityClass object using the configured fields.
+func (s *PriorityClassV1Generator) StructuredGenerate() (runtime.Object, error) {
+ return &scheduling.PriorityClass{
+ ObjectMeta: metav1.ObjectMeta{
+ Name: s.Name,
+ },
+ Value: s.Value,
+ GlobalDefault: s.GlobalDefault,
+ Description: s.Description,
+ }, nil
+}
diff --git a/pkg/kubectl/priorityclass_test.go b/pkg/kubectl/priorityclass_test.go
new file mode 100644
index 0000000000..2702ce33bb
--- /dev/null
+++ b/pkg/kubectl/priorityclass_test.go
@@ -0,0 +1,90 @@
+/*
+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 kubectl
+
+import (
+ scheduling "k8s.io/api/scheduling/v1alpha1"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+
+ "reflect"
+ "testing"
+)
+
+func TestPriorityClassV1Generator(t *testing.T) {
+ tests := map[string]struct {
+ params map[string]interface{}
+ expected *scheduling.PriorityClass
+ expectErr bool
+ }{
+ "test valid case": {
+ params: map[string]interface{}{
+ "name": "foo",
+ "value": int32(1000),
+ "global-default": false,
+ "description": "high priority class",
+ },
+ expected: &scheduling.PriorityClass{
+ ObjectMeta: metav1.ObjectMeta{
+ Name: "foo",
+ },
+ Value: int32(1000),
+ GlobalDefault: false,
+ Description: "high priority class",
+ },
+ expectErr: false,
+ },
+ "test valid case that as default priority": {
+ params: map[string]interface{}{
+ "name": "foo",
+ "value": int32(1000),
+ "global-default": true,
+ "description": "high priority class",
+ },
+ expected: &scheduling.PriorityClass{
+ ObjectMeta: metav1.ObjectMeta{
+ Name: "foo",
+ },
+ Value: int32(1000),
+ GlobalDefault: true,
+ Description: "high priority class",
+ },
+ expectErr: false,
+ },
+ "test missing required param": {
+ params: map[string]interface{}{
+ "name": "foo",
+ "global-default": true,
+ "description": "high priority class",
+ },
+ expectErr: true,
+ },
+ }
+
+ generator := PriorityClassV1Generator{}
+ for name, test := range tests {
+ obj, err := generator.Generate(test.params)
+ if !test.expectErr && err != nil {
+ t.Errorf("%s: unexpected error: %v", name, err)
+ }
+ if test.expectErr && err != nil {
+ continue
+ }
+ if !reflect.DeepEqual(obj.(*scheduling.PriorityClass), test.expected) {
+ t.Errorf("%s:\nexpected:\n%#v\nsaw:\n%#v", name, test.expected, obj.(*scheduling.PriorityClass))
+ }
+ }
+}
diff --git a/pkg/kubectl/resource_filter.go b/pkg/kubectl/resource_filter.go
index 7010b2d836..a77cbf1012 100644
--- a/pkg/kubectl/resource_filter.go
+++ b/pkg/kubectl/resource_filter.go
@@ -19,8 +19,8 @@ package kubectl
import (
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/printers"
)
diff --git a/pkg/kubectl/resource_filter_test.go b/pkg/kubectl/resource_filter_test.go
index a459336335..7c3335bdf9 100644
--- a/pkg/kubectl/resource_filter_test.go
+++ b/pkg/kubectl/resource_filter_test.go
@@ -21,7 +21,7 @@ import (
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/printers"
)
diff --git a/pkg/kubectl/rollback.go b/pkg/kubectl/rollback.go
index 38cff7d092..7f6dfa80fb 100644
--- a/pkg/kubectl/rollback.go
+++ b/pkg/kubectl/rollback.go
@@ -34,10 +34,10 @@ import (
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/client-go/kubernetes"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
- apiv1 "k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/apis/apps"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ apiv1 "k8s.io/kubernetes/pkg/apis/core/v1"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/controller/daemon"
deploymentutil "k8s.io/kubernetes/pkg/controller/deployment/util"
@@ -186,7 +186,7 @@ func simpleDryRun(deployment *extensions.Deployment, c kubernetes.Interface, toR
}
buf := bytes.NewBuffer([]byte{})
internalTemplate := &api.PodTemplateSpec{}
- if err := apiv1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(template, internalTemplate, nil); err != nil {
+ if err := apiv1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(template, internalTemplate, nil); err != nil {
return "", fmt.Errorf("failed to convert podtemplate, %v", err)
}
w := printersinternal.NewPrefixWriter(buf)
@@ -205,7 +205,7 @@ func simpleDryRun(deployment *extensions.Deployment, c kubernetes.Interface, toR
buf := bytes.NewBuffer([]byte{})
buf.WriteString("\n")
internalTemplate := &api.PodTemplateSpec{}
- if err := apiv1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(template, internalTemplate, nil); err != nil {
+ if err := apiv1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(template, internalTemplate, nil); err != nil {
return "", fmt.Errorf("failed to convert podtemplate, %v", err)
}
w := printersinternal.NewPrefixWriter(buf)
@@ -345,7 +345,7 @@ func printPodTemplate(specTemplate *v1.PodTemplateSpec) (string, error) {
content := bytes.NewBuffer([]byte{})
w := printersinternal.NewPrefixWriter(content)
internalTemplate := &api.PodTemplateSpec{}
- if err := apiv1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(specTemplate, internalTemplate, nil); err != nil {
+ if err := apiv1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(specTemplate, internalTemplate, nil); err != nil {
return "", fmt.Errorf("failed to convert podtemplate while printing: %v", err)
}
printersinternal.DescribePodTemplate(internalTemplate, w)
diff --git a/pkg/kubectl/rolling_updater.go b/pkg/kubectl/rolling_updater.go
index 395213d640..1a1f8dfb33 100644
--- a/pkg/kubectl/rolling_updater.go
+++ b/pkg/kubectl/rolling_updater.go
@@ -32,9 +32,9 @@ import (
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/client-go/util/integer"
"k8s.io/client-go/util/retry"
- "k8s.io/kubernetes/pkg/api"
- apiv1 "k8s.io/kubernetes/pkg/api/v1"
podutil "k8s.io/kubernetes/pkg/api/v1/pod"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ apiv1 "k8s.io/kubernetes/pkg/apis/core/v1"
coreclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
client "k8s.io/kubernetes/pkg/client/unversioned"
deploymentutil "k8s.io/kubernetes/pkg/controller/deployment/util"
@@ -425,7 +425,7 @@ func (r *RollingUpdater) readyPods(oldRc, newRc *api.ReplicationController, minR
}
for _, pod := range pods.Items {
v1Pod := &v1.Pod{}
- if err := apiv1.Convert_api_Pod_To_v1_Pod(&pod, v1Pod, nil); err != nil {
+ if err := apiv1.Convert_core_Pod_To_v1_Pod(&pod, v1Pod, nil); err != nil {
return 0, 0, err
}
// Do not count deleted pods as ready
diff --git a/pkg/kubectl/rolling_updater_test.go b/pkg/kubectl/rolling_updater_test.go
index b30c118340..0bd04c6b18 100644
--- a/pkg/kubectl/rolling_updater_test.go
+++ b/pkg/kubectl/rolling_updater_test.go
@@ -36,10 +36,10 @@ import (
restclient "k8s.io/client-go/rest"
manualfake "k8s.io/client-go/rest/fake"
testcore "k8s.io/client-go/testing"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
apitesting "k8s.io/kubernetes/pkg/api/testing"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
"k8s.io/kubernetes/pkg/kubectl/util"
diff --git a/pkg/kubectl/run.go b/pkg/kubectl/run.go
index 7dd77f1f39..e78bfd4c31 100644
--- a/pkg/kubectl/run.go
+++ b/pkg/kubectl/run.go
@@ -31,7 +31,6 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/validation"
- "k8s.io/kubernetes/pkg/api"
)
type DeploymentV1Beta1 struct{}
@@ -102,8 +101,6 @@ func (DeploymentV1Beta1) Generate(genericParams map[string]interface{}) (runtime
return nil, err
}
- // TODO: use versioned types for generators so that we don't need to
- // set default values manually (see issue #17384)
count32 := int32(count)
deployment := extensionsv1beta1.Deployment{
ObjectMeta: metav1.ObjectMeta{
@@ -608,31 +605,6 @@ func (BasicReplicationController) ParamNames() []GeneratorParam {
}
}
-// populateResourceList takes strings of form =,=
-// and returns ResourceList.
-func populateResourceList(spec string) (api.ResourceList, error) {
- // empty input gets a nil response to preserve generator test expected behaviors
- if spec == "" {
- return nil, nil
- }
-
- result := api.ResourceList{}
- resourceStatements := strings.Split(spec, ",")
- for _, resourceStatement := range resourceStatements {
- parts := strings.Split(resourceStatement, "=")
- if len(parts) != 2 {
- return nil, fmt.Errorf("Invalid argument syntax %v, expected =", resourceStatement)
- }
- resourceName := api.ResourceName(parts[0])
- resourceQuantity, err := resource.ParseQuantity(parts[1])
- if err != nil {
- return nil, err
- }
- result[resourceName] = resourceQuantity
- }
- return result, nil
-}
-
// populateResourceListV1 takes strings of form =,=
// and returns ResourceList.
func populateResourceListV1(spec string) (v1.ResourceList, error) {
@@ -658,23 +630,6 @@ func populateResourceListV1(spec string) (v1.ResourceList, error) {
return result, nil
}
-// HandleResourceRequirements parses the limits and requests parameters if specified
-// and returns ResourceRequirements.
-func HandleResourceRequirements(params map[string]string) (api.ResourceRequirements, error) {
- result := api.ResourceRequirements{}
- limits, err := populateResourceList(params["limits"])
- if err != nil {
- return result, err
- }
- result.Limits = limits
- requests, err := populateResourceList(params["requests"])
- if err != nil {
- return result, err
- }
- result.Requests = requests
- return result, nil
-}
-
// HandleResourceRequirementsV1 parses the limits and requests parameters if specified
// and returns ResourceRequirements.
func HandleResourceRequirementsV1(params map[string]string) (v1.ResourceRequirements, error) {
diff --git a/pkg/kubectl/scale.go b/pkg/kubectl/scale.go
index 20734bc5f7..da6d4fbb79 100644
--- a/pkg/kubectl/scale.go
+++ b/pkg/kubectl/scale.go
@@ -27,9 +27,9 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apimachinery/pkg/watch"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/apps"
"k8s.io/kubernetes/pkg/apis/batch"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
appsclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/apps/internalversion"
diff --git a/pkg/kubectl/scale_test.go b/pkg/kubectl/scale_test.go
index 6e6cd62ed4..85c77a1ffb 100644
--- a/pkg/kubectl/scale_test.go
+++ b/pkg/kubectl/scale_test.go
@@ -23,8 +23,8 @@ import (
kerrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
testcore "k8s.io/client-go/testing"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/batch"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
batchclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/batch/internalversion"
diff --git a/pkg/kubectl/scheme/install.go b/pkg/kubectl/scheme/install.go
index 01f1354ced..fd405aefdc 100644
--- a/pkg/kubectl/scheme/install.go
+++ b/pkg/kubectl/scheme/install.go
@@ -106,7 +106,7 @@ func init() {
if err := announced.NewGroupMetaFactory(
&announced.GroupMetaFactoryArgs{
GroupName: admissionregistrationv1alpha1.GroupName,
- RootScopedKinds: sets.NewString("InitializerConfiguration", "ExternalAdmissionHookConfiguration"),
+ RootScopedKinds: sets.NewString("InitializerConfiguration", "ValidatingWebhookConfiguration", "MutatingWebhookConfiguration"),
VersionPreferenceOrder: []string{admissionregistrationv1alpha1.SchemeGroupVersion.Version},
},
announced.VersionToSchemeFunc{
diff --git a/pkg/kubectl/service_basic.go b/pkg/kubectl/service_basic.go
index b7e9168773..1f31bd09a2 100644
--- a/pkg/kubectl/service_basic.go
+++ b/pkg/kubectl/service_basic.go
@@ -89,14 +89,25 @@ func parsePorts(portString string) (int32, intstr.IntOrString, error) {
if err != nil {
return 0, intstr.FromInt(0), err
}
+
+ if errs := validation.IsValidPortNum(port); len(errs) != 0 {
+ return 0, intstr.FromInt(0), fmt.Errorf(strings.Join(errs, ","))
+ }
+
if len(portStringSlice) == 1 {
return int32(port), intstr.FromInt(int(port)), nil
}
var targetPort intstr.IntOrString
if portNum, err := strconv.Atoi(portStringSlice[1]); err != nil {
+ if errs := validation.IsValidPortName(portStringSlice[1]); len(errs) != 0 {
+ return 0, intstr.FromInt(0), fmt.Errorf(strings.Join(errs, ","))
+ }
targetPort = intstr.FromString(portStringSlice[1])
} else {
+ if errs := validation.IsValidPortNum(portNum); len(errs) != 0 {
+ return 0, intstr.FromInt(0), fmt.Errorf(strings.Join(errs, ","))
+ }
targetPort = intstr.FromInt(portNum)
}
return int32(port), targetPort, nil
diff --git a/pkg/kubectl/service_basic_test.go b/pkg/kubectl/service_basic_test.go
index 44875817e6..c7f9ff7178 100644
--- a/pkg/kubectl/service_basic_test.go
+++ b/pkg/kubectl/service_basic_test.go
@@ -115,6 +115,20 @@ func TestServiceBasicGenerate(t *testing.T) {
},
expectErr: false,
},
+ {
+ name: "invalid-port",
+ tcp: []string{"65536"},
+ clusterip: "None",
+ serviceType: v1.ServiceTypeClusterIP,
+ expectErr: true,
+ },
+ {
+ name: "invalid-port-mapping",
+ tcp: []string{"8080:-abc"},
+ clusterip: "None",
+ serviceType: v1.ServiceTypeClusterIP,
+ expectErr: true,
+ },
{
expectErr: true,
},
diff --git a/pkg/kubectl/testing/BUILD b/pkg/kubectl/testing/BUILD
index 99e7bf90a1..f6fff93f03 100644
--- a/pkg/kubectl/testing/BUILD
+++ b/pkg/kubectl/testing/BUILD
@@ -11,7 +11,6 @@ go_library(
visibility = ["//visibility:public"],
deps = [
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
],
)
diff --git a/pkg/kubectl/testing/zz_generated.deepcopy.go b/pkg/kubectl/testing/zz_generated.deepcopy.go
index 79c1b4003d..bfa6c1d788 100644
--- a/pkg/kubectl/testing/zz_generated.deepcopy.go
+++ b/pkg/kubectl/testing/zz_generated.deepcopy.go
@@ -21,23 +21,9 @@ limitations under the License.
package testing
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc {
- return []conversion.GeneratedDeepCopyFunc{
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TestStruct).DeepCopyInto(out.(*TestStruct))
- return nil
- }, InType: reflect.TypeOf(&TestStruct{})},
- }
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TestStruct) DeepCopyInto(out *TestStruct) {
*out = *in
diff --git a/pkg/kubelet/BUILD b/pkg/kubelet/BUILD
index 8e9d8ea4e9..4fa0bb5073 100644
--- a/pkg/kubelet/BUILD
+++ b/pkg/kubelet/BUILD
@@ -18,7 +18,6 @@ go_library(
"kubelet_pods.go",
"kubelet_resources.go",
"kubelet_volumes.go",
- "networks.go",
"oom_watcher.go",
"pod_container_deletor.go",
"pod_workers.go",
@@ -30,14 +29,14 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/kubelet",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
- "//pkg/api/v1:go_default_library",
- "//pkg/api/v1/helper:go_default_library",
- "//pkg/api/v1/helper/qos:go_default_library",
"//pkg/api/v1/pod:go_default_library",
"//pkg/api/v1/resource:go_default_library",
- "//pkg/api/v1/validation:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/v1:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
+ "//pkg/apis/core/v1/helper/qos:go_default_library",
+ "//pkg/apis/core/v1/validation:go_default_library",
"//pkg/capabilities:go_default_library",
"//pkg/cloudprovider:go_default_library",
"//pkg/features:go_default_library",
@@ -54,7 +53,6 @@ go_library(
"//pkg/kubelet/configmap:go_default_library",
"//pkg/kubelet/container:go_default_library",
"//pkg/kubelet/dockershim:go_default_library",
- "//pkg/kubelet/dockershim/libdocker:go_default_library",
"//pkg/kubelet/dockershim/remote:go_default_library",
"//pkg/kubelet/envvars:go_default_library",
"//pkg/kubelet/events:go_default_library",
@@ -66,6 +64,7 @@ go_library(
"//pkg/kubelet/kuberuntime:go_default_library",
"//pkg/kubelet/lifecycle:go_default_library",
"//pkg/kubelet/metrics:go_default_library",
+ "//pkg/kubelet/mountpod:go_default_library",
"//pkg/kubelet/network:go_default_library",
"//pkg/kubelet/pleg:go_default_library",
"//pkg/kubelet/pod:go_default_library",
@@ -153,7 +152,6 @@ go_test(
"kubelet_resources_test.go",
"kubelet_test.go",
"kubelet_volumes_test.go",
- "networks_test.go",
"oom_watcher_test.go",
"pod_container_deletor_test.go",
"pod_workers_test.go",
@@ -168,8 +166,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/kubelet",
library = ":go_default_library",
deps = [
- "//pkg/api/install:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//pkg/capabilities:go_default_library",
"//pkg/cloudprovider/providers/fake:go_default_library",
"//pkg/kubelet/apis:go_default_library",
@@ -272,6 +270,7 @@ filegroup(
"//pkg/kubelet/leaky:all-srcs",
"//pkg/kubelet/lifecycle:all-srcs",
"//pkg/kubelet/metrics:all-srcs",
+ "//pkg/kubelet/mountpod:all-srcs",
"//pkg/kubelet/network:all-srcs",
"//pkg/kubelet/pleg:all-srcs",
"//pkg/kubelet/pod:all-srcs",
diff --git a/pkg/kubelet/apis/kubeletconfig/BUILD b/pkg/kubelet/apis/kubeletconfig/BUILD
index 252d7c2aab..fcbe978fc6 100644
--- a/pkg/kubelet/apis/kubeletconfig/BUILD
+++ b/pkg/kubelet/apis/kubeletconfig/BUILD
@@ -15,9 +15,8 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/pkg/kubelet/apis/kubeletconfig/doc.go b/pkg/kubelet/apis/kubeletconfig/doc.go
index 831e600619..bd856d8311 100644
--- a/pkg/kubelet/apis/kubeletconfig/doc.go
+++ b/pkg/kubelet/apis/kubeletconfig/doc.go
@@ -14,6 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
package kubeletconfig // import "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig"
diff --git a/pkg/kubelet/apis/kubeletconfig/types.go b/pkg/kubelet/apis/kubeletconfig/types.go
index e9a2e6751a..947774aed7 100644
--- a/pkg/kubelet/apis/kubeletconfig/types.go
+++ b/pkg/kubelet/apis/kubeletconfig/types.go
@@ -22,7 +22,7 @@ import (
"strings"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// HairpinMode denotes how the kubelet should configure networking to handle
diff --git a/pkg/kubelet/apis/kubeletconfig/v1alpha1/BUILD b/pkg/kubelet/apis/kubeletconfig/v1alpha1/BUILD
index f72ddde62d..317244557b 100644
--- a/pkg/kubelet/apis/kubeletconfig/v1alpha1/BUILD
+++ b/pkg/kubelet/apis/kubeletconfig/v1alpha1/BUILD
@@ -18,7 +18,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1alpha1",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/kubelet/apis/kubeletconfig:go_default_library",
"//pkg/kubelet/qos:go_default_library",
"//pkg/kubelet/types:go_default_library",
diff --git a/pkg/kubelet/apis/kubeletconfig/v1alpha1/defaults.go b/pkg/kubelet/apis/kubeletconfig/v1alpha1/defaults.go
index 7351e9f735..941a975e63 100644
--- a/pkg/kubelet/apis/kubeletconfig/v1alpha1/defaults.go
+++ b/pkg/kubelet/apis/kubeletconfig/v1alpha1/defaults.go
@@ -242,6 +242,9 @@ func SetDefaults_KubeletConfiguration(obj *KubeletConfiguration) {
if obj.FeatureGates == nil {
obj.FeatureGates = make(map[string]bool)
}
+ if obj.ManifestURLHeader == nil {
+ obj.ManifestURLHeader = make(map[string][]string)
+ }
}
func boolVar(b bool) *bool {
diff --git a/pkg/kubelet/apis/kubeletconfig/v1alpha1/doc.go b/pkg/kubelet/apis/kubeletconfig/v1alpha1/doc.go
index dc1a195362..eb9b391369 100644
--- a/pkg/kubelet/apis/kubeletconfig/v1alpha1/doc.go
+++ b/pkg/kubelet/apis/kubeletconfig/v1alpha1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:conversion-gen=k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig
// +k8s:openapi-gen=true
// +k8s:defaulter-gen=TypeMeta
diff --git a/pkg/kubelet/apis/kubeletconfig/v1alpha1/zz_generated.conversion.go b/pkg/kubelet/apis/kubeletconfig/v1alpha1/zz_generated.conversion.go
index 001cc6f07c..5e4e975848 100644
--- a/pkg/kubelet/apis/kubeletconfig/v1alpha1/zz_generated.conversion.go
+++ b/pkg/kubelet/apis/kubeletconfig/v1alpha1/zz_generated.conversion.go
@@ -25,7 +25,7 @@ import (
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig"
unsafe "unsafe"
)
@@ -232,7 +232,7 @@ func autoConvert_v1alpha1_KubeletConfiguration_To_kubeletconfig_KubeletConfigura
return err
}
out.MaxOpenFiles = in.MaxOpenFiles
- out.RegisterWithTaints = *(*[]api.Taint)(unsafe.Pointer(&in.RegisterWithTaints))
+ out.RegisterWithTaints = *(*[]core.Taint)(unsafe.Pointer(&in.RegisterWithTaints))
out.ContentType = in.ContentType
if err := v1.Convert_Pointer_int32_To_int32(&in.KubeAPIQPS, &out.KubeAPIQPS, s); err != nil {
return err
diff --git a/pkg/kubelet/apis/kubeletconfig/v1alpha1/zz_generated.deepcopy.go b/pkg/kubelet/apis/kubeletconfig/v1alpha1/zz_generated.deepcopy.go
index 4671e50fdb..88311be36c 100644
--- a/pkg/kubelet/apis/kubeletconfig/v1alpha1/zz_generated.deepcopy.go
+++ b/pkg/kubelet/apis/kubeletconfig/v1alpha1/zz_generated.deepcopy.go
@@ -23,52 +23,9 @@ package v1alpha1
import (
core_v1 "k8s.io/api/core/v1"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*KubeletAnonymousAuthentication).DeepCopyInto(out.(*KubeletAnonymousAuthentication))
- return nil
- }, InType: reflect.TypeOf(&KubeletAnonymousAuthentication{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*KubeletAuthentication).DeepCopyInto(out.(*KubeletAuthentication))
- return nil
- }, InType: reflect.TypeOf(&KubeletAuthentication{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*KubeletAuthorization).DeepCopyInto(out.(*KubeletAuthorization))
- return nil
- }, InType: reflect.TypeOf(&KubeletAuthorization{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*KubeletConfiguration).DeepCopyInto(out.(*KubeletConfiguration))
- return nil
- }, InType: reflect.TypeOf(&KubeletConfiguration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*KubeletWebhookAuthentication).DeepCopyInto(out.(*KubeletWebhookAuthentication))
- return nil
- }, InType: reflect.TypeOf(&KubeletWebhookAuthentication{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*KubeletWebhookAuthorization).DeepCopyInto(out.(*KubeletWebhookAuthorization))
- return nil
- }, InType: reflect.TypeOf(&KubeletWebhookAuthorization{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*KubeletX509Authentication).DeepCopyInto(out.(*KubeletX509Authentication))
- return nil
- }, InType: reflect.TypeOf(&KubeletX509Authentication{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *KubeletAnonymousAuthentication) DeepCopyInto(out *KubeletAnonymousAuthentication) {
*out = *in
diff --git a/pkg/kubelet/apis/kubeletconfig/zz_generated.deepcopy.go b/pkg/kubelet/apis/kubeletconfig/zz_generated.deepcopy.go
index bf64fd145b..9a05dd7606 100644
--- a/pkg/kubelet/apis/kubeletconfig/zz_generated.deepcopy.go
+++ b/pkg/kubelet/apis/kubeletconfig/zz_generated.deepcopy.go
@@ -22,53 +22,10 @@ package kubeletconfig
import (
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- api "k8s.io/kubernetes/pkg/api"
- reflect "reflect"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*KubeletAnonymousAuthentication).DeepCopyInto(out.(*KubeletAnonymousAuthentication))
- return nil
- }, InType: reflect.TypeOf(&KubeletAnonymousAuthentication{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*KubeletAuthentication).DeepCopyInto(out.(*KubeletAuthentication))
- return nil
- }, InType: reflect.TypeOf(&KubeletAuthentication{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*KubeletAuthorization).DeepCopyInto(out.(*KubeletAuthorization))
- return nil
- }, InType: reflect.TypeOf(&KubeletAuthorization{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*KubeletConfiguration).DeepCopyInto(out.(*KubeletConfiguration))
- return nil
- }, InType: reflect.TypeOf(&KubeletConfiguration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*KubeletWebhookAuthentication).DeepCopyInto(out.(*KubeletWebhookAuthentication))
- return nil
- }, InType: reflect.TypeOf(&KubeletWebhookAuthentication{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*KubeletWebhookAuthorization).DeepCopyInto(out.(*KubeletWebhookAuthorization))
- return nil
- }, InType: reflect.TypeOf(&KubeletWebhookAuthorization{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*KubeletX509Authentication).DeepCopyInto(out.(*KubeletX509Authentication))
- return nil
- }, InType: reflect.TypeOf(&KubeletX509Authentication{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *KubeletAnonymousAuthentication) DeepCopyInto(out *KubeletAnonymousAuthentication) {
*out = *in
@@ -179,7 +136,7 @@ func (in *KubeletConfiguration) DeepCopyInto(out *KubeletConfiguration) {
out.RuntimeRequestTimeout = in.RuntimeRequestTimeout
if in.RegisterWithTaints != nil {
in, out := &in.RegisterWithTaints, &out.RegisterWithTaints
- *out = make([]api.Taint, len(*in))
+ *out = make([]core.Taint, len(*in))
for i := range *in {
(*in)[i].DeepCopyInto(&(*out)[i])
}
diff --git a/pkg/kubelet/cadvisor/BUILD b/pkg/kubelet/cadvisor/BUILD
index c64cad6afc..adb113dd97 100644
--- a/pkg/kubelet/cadvisor/BUILD
+++ b/pkg/kubelet/cadvisor/BUILD
@@ -26,7 +26,7 @@ go_library(
}),
importpath = "k8s.io/kubernetes/pkg/kubelet/cadvisor",
deps = [
- "//pkg/api/v1/helper:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
"//pkg/features:go_default_library",
"//vendor/github.com/google/cadvisor/events:go_default_library",
"//vendor/github.com/google/cadvisor/info/v1:go_default_library",
diff --git a/pkg/kubelet/cadvisor/util.go b/pkg/kubelet/cadvisor/util.go
index dd4d7c4b1f..6c679a0720 100644
--- a/pkg/kubelet/cadvisor/util.go
+++ b/pkg/kubelet/cadvisor/util.go
@@ -22,7 +22,7 @@ import (
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
utilfeature "k8s.io/apiserver/pkg/util/feature"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
"k8s.io/kubernetes/pkg/features"
)
diff --git a/pkg/kubelet/cm/BUILD b/pkg/kubelet/cm/BUILD
index dafbacebca..78ffeb575b 100644
--- a/pkg/kubelet/cm/BUILD
+++ b/pkg/kubelet/cm/BUILD
@@ -49,9 +49,9 @@ go_library(
"//vendor/k8s.io/client-go/tools/record:go_default_library",
] + select({
"@io_bazel_rules_go//go/platform:linux_amd64": [
- "//pkg/api/v1/helper:go_default_library",
- "//pkg/api/v1/helper/qos:go_default_library",
"//pkg/api/v1/resource:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
+ "//pkg/apis/core/v1/helper/qos:go_default_library",
"//pkg/kubelet/cm/deviceplugin:go_default_library",
"//pkg/kubelet/cm/util:go_default_library",
"//pkg/kubelet/events:go_default_library",
diff --git a/pkg/kubelet/cm/cpumanager/BUILD b/pkg/kubelet/cm/cpumanager/BUILD
index 64a5f7e1bb..370217f3db 100644
--- a/pkg/kubelet/cm/cpumanager/BUILD
+++ b/pkg/kubelet/cm/cpumanager/BUILD
@@ -13,7 +13,7 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager",
visibility = ["//visibility:public"],
deps = [
- "//pkg/api/v1/helper/qos:go_default_library",
+ "//pkg/apis/core/v1/helper/qos:go_default_library",
"//pkg/kubelet/apis/cri/v1alpha1/runtime:go_default_library",
"//pkg/kubelet/cm/cpumanager/state:go_default_library",
"//pkg/kubelet/cm/cpumanager/topology:go_default_library",
diff --git a/pkg/kubelet/cm/cpumanager/policy_static.go b/pkg/kubelet/cm/cpumanager/policy_static.go
index 1eca50b91f..8f1403a6d2 100644
--- a/pkg/kubelet/cm/cpumanager/policy_static.go
+++ b/pkg/kubelet/cm/cpumanager/policy_static.go
@@ -21,7 +21,7 @@ import (
"github.com/golang/glog"
"k8s.io/api/core/v1"
- v1qos "k8s.io/kubernetes/pkg/api/v1/helper/qos"
+ v1qos "k8s.io/kubernetes/pkg/apis/core/v1/helper/qos"
"k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state"
"k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/topology"
"k8s.io/kubernetes/pkg/kubelet/cm/cpuset"
diff --git a/pkg/kubelet/cm/deviceplugin/BUILD b/pkg/kubelet/cm/deviceplugin/BUILD
index 456325870d..1d650b6d89 100644
--- a/pkg/kubelet/cm/deviceplugin/BUILD
+++ b/pkg/kubelet/cm/deviceplugin/BUILD
@@ -19,7 +19,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/kubelet/cm/deviceplugin",
deps = [
- "//pkg/api/v1/helper:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
"//pkg/kubelet/apis/deviceplugin/v1alpha:go_default_library",
"//pkg/kubelet/container:go_default_library",
"//pkg/kubelet/lifecycle:go_default_library",
diff --git a/pkg/kubelet/cm/deviceplugin/device_plugin_handler.go b/pkg/kubelet/cm/deviceplugin/device_plugin_handler.go
index b95ec22610..4c9de6b3f8 100644
--- a/pkg/kubelet/cm/deviceplugin/device_plugin_handler.go
+++ b/pkg/kubelet/cm/deviceplugin/device_plugin_handler.go
@@ -61,12 +61,14 @@ type Handler interface {
type HandlerImpl struct {
// TODO: consider to change this to RWMutex.
sync.Mutex
+ // devicePluginManager is an implementation of deviceplugin.Manager interface.
devicePluginManager Manager
// activePods is a method for listing active pods on the node
// so the amount of pluginResources requested by existing pods
// could be counted when updating allocated devices
activePods ActivePodsFunc
- // devicePluginManagerMonitorCallback is used for testing only.
+ // devicePluginManagerMonitorCallback is used for updating devices' states in one time call.
+ // e.g. a new device is advertised, two old devices are deleted and a running device fails.
devicePluginManagerMonitorCallback MonitorCallback
// allDevices contains all of registered resourceNames and their exported device IDs.
allDevices map[string]sets.String
diff --git a/pkg/kubelet/cm/deviceplugin/manager.go b/pkg/kubelet/cm/deviceplugin/manager.go
index c3ca8b8126..e255054af3 100644
--- a/pkg/kubelet/cm/deviceplugin/manager.go
+++ b/pkg/kubelet/cm/deviceplugin/manager.go
@@ -28,7 +28,7 @@ import (
"google.golang.org/grpc"
"k8s.io/api/core/v1"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
pluginapi "k8s.io/kubernetes/pkg/kubelet/apis/deviceplugin/v1alpha"
)
diff --git a/pkg/kubelet/cm/helpers_linux.go b/pkg/kubelet/cm/helpers_linux.go
index 6525bb9843..e36e97be01 100644
--- a/pkg/kubelet/cm/helpers_linux.go
+++ b/pkg/kubelet/cm/helpers_linux.go
@@ -26,9 +26,9 @@ import (
libcontainercgroups "github.com/opencontainers/runc/libcontainer/cgroups"
"k8s.io/api/core/v1"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
- v1qos "k8s.io/kubernetes/pkg/api/v1/helper/qos"
"k8s.io/kubernetes/pkg/api/v1/resource"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
+ v1qos "k8s.io/kubernetes/pkg/apis/core/v1/helper/qos"
)
const (
diff --git a/pkg/kubelet/cm/pod_container_manager_linux.go b/pkg/kubelet/cm/pod_container_manager_linux.go
index 7180a73c49..2043596c91 100644
--- a/pkg/kubelet/cm/pod_container_manager_linux.go
+++ b/pkg/kubelet/cm/pod_container_manager_linux.go
@@ -27,7 +27,7 @@ import (
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/types"
utilerrors "k8s.io/apimachinery/pkg/util/errors"
- v1qos "k8s.io/kubernetes/pkg/api/v1/helper/qos"
+ v1qos "k8s.io/kubernetes/pkg/apis/core/v1/helper/qos"
)
const (
diff --git a/pkg/kubelet/cm/qos_container_manager_linux.go b/pkg/kubelet/cm/qos_container_manager_linux.go
index 12bf9a2d8d..129acda582 100644
--- a/pkg/kubelet/cm/qos_container_manager_linux.go
+++ b/pkg/kubelet/cm/qos_container_manager_linux.go
@@ -31,8 +31,8 @@ import (
cgroupfs "github.com/opencontainers/runc/libcontainer/cgroups/fs"
"k8s.io/api/core/v1"
utilfeature "k8s.io/apiserver/pkg/util/feature"
- v1qos "k8s.io/kubernetes/pkg/api/v1/helper/qos"
"k8s.io/kubernetes/pkg/api/v1/resource"
+ v1qos "k8s.io/kubernetes/pkg/apis/core/v1/helper/qos"
kubefeatures "k8s.io/kubernetes/pkg/features"
)
diff --git a/pkg/kubelet/config/BUILD b/pkg/kubelet/config/BUILD
index 854f5dab96..c5c0f37e74 100644
--- a/pkg/kubelet/config/BUILD
+++ b/pkg/kubelet/config/BUILD
@@ -27,12 +27,12 @@ go_library(
}),
importpath = "k8s.io/kubernetes/pkg/kubelet/config",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/helper:go_default_library",
- "//pkg/api/install:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
- "//pkg/api/v1:go_default_library",
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
+ "//pkg/apis/core/v1:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//pkg/kubelet/container:go_default_library",
"//pkg/kubelet/events:go_default_library",
"//pkg/kubelet/types:go_default_library",
@@ -76,11 +76,11 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/kubelet/config",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
- "//pkg/api/v1:go_default_library",
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/v1:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//pkg/kubelet/types:go_default_library",
"//pkg/securitycontext:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
diff --git a/pkg/kubelet/config/apiserver.go b/pkg/kubelet/config/apiserver.go
index cbc10c2951..a8afc6e345 100644
--- a/pkg/kubelet/config/apiserver.go
+++ b/pkg/kubelet/config/apiserver.go
@@ -25,7 +25,7 @@ import (
"k8s.io/apimachinery/pkg/util/wait"
clientset "k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/cache"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
)
diff --git a/pkg/kubelet/config/common.go b/pkg/kubelet/config/common.go
index 345e50ff2e..02a4f47612 100644
--- a/pkg/kubelet/config/common.go
+++ b/pkg/kubelet/config/common.go
@@ -27,15 +27,15 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
utilyaml "k8s.io/apimachinery/pkg/util/yaml"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/helper"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
// TODO: remove this import if
// api.Registry.GroupOrDie(v1.GroupName).GroupVersion.String() is changed
// to "v1"?
- _ "k8s.io/kubernetes/pkg/api/install"
"k8s.io/kubernetes/pkg/api/legacyscheme"
- k8s_api_v1 "k8s.io/kubernetes/pkg/api/v1"
- "k8s.io/kubernetes/pkg/api/validation"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
+ k8s_api_v1 "k8s.io/kubernetes/pkg/apis/core/v1"
+ "k8s.io/kubernetes/pkg/apis/core/validation"
kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
"k8s.io/kubernetes/pkg/util/hash"
@@ -130,7 +130,7 @@ func tryDecodeSinglePod(data []byte, defaultFn defaultFunc) (parsed bool, pod *v
return true, pod, fmt.Errorf("invalid pod: %v", errs)
}
v1Pod := &v1.Pod{}
- if err := k8s_api_v1.Convert_api_Pod_To_v1_Pod(newPod, v1Pod, nil); err != nil {
+ if err := k8s_api_v1.Convert_core_Pod_To_v1_Pod(newPod, v1Pod, nil); err != nil {
glog.Errorf("Pod %q failed to convert to v1", newPod.Name)
return true, nil, err
}
@@ -162,7 +162,7 @@ func tryDecodePodList(data []byte, defaultFn defaultFunc) (parsed bool, pods v1.
}
}
v1Pods := &v1.PodList{}
- if err := k8s_api_v1.Convert_api_PodList_To_v1_PodList(newPods, v1Pods, nil); err != nil {
+ if err := k8s_api_v1.Convert_core_PodList_To_v1_PodList(newPods, v1Pods, nil); err != nil {
return true, pods, err
}
return true, *v1Pods, err
diff --git a/pkg/kubelet/config/common_test.go b/pkg/kubelet/config/common_test.go
index c077aa0e21..9dd694669f 100644
--- a/pkg/kubelet/config/common_test.go
+++ b/pkg/kubelet/config/common_test.go
@@ -23,9 +23,9 @@ import (
"k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/securitycontext"
)
diff --git a/pkg/kubelet/config/defaults.go b/pkg/kubelet/config/defaults.go
index b000b60b11..e70659d367 100644
--- a/pkg/kubelet/config/defaults.go
+++ b/pkg/kubelet/config/defaults.go
@@ -17,8 +17,9 @@ limitations under the License.
package config
const (
- DefaultKubeletPodsDirName = "pods"
- DefaultKubeletVolumesDirName = "volumes"
- DefaultKubeletPluginsDirName = "plugins"
- DefaultKubeletContainersDirName = "containers"
+ DefaultKubeletPodsDirName = "pods"
+ DefaultKubeletVolumesDirName = "volumes"
+ DefaultKubeletPluginsDirName = "plugins"
+ DefaultKubeletContainersDirName = "containers"
+ DefaultKubeletPluginContainersDirName = "plugin-containers"
)
diff --git a/pkg/kubelet/config/file.go b/pkg/kubelet/config/file.go
index f825c2eb52..a706abdb36 100644
--- a/pkg/kubelet/config/file.go
+++ b/pkg/kubelet/config/file.go
@@ -32,7 +32,7 @@ import (
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/client-go/tools/cache"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
)
diff --git a/pkg/kubelet/config/file_linux_test.go b/pkg/kubelet/config/file_linux_test.go
index c17d33fc51..9ca23f115a 100644
--- a/pkg/kubelet/config/file_linux_test.go
+++ b/pkg/kubelet/config/file_linux_test.go
@@ -36,10 +36,10 @@ import (
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/wait"
utiltesting "k8s.io/client-go/util/testing"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testapi"
- k8s_api_v1 "k8s.io/kubernetes/pkg/api/v1"
- "k8s.io/kubernetes/pkg/api/validation"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ k8s_api_v1 "k8s.io/kubernetes/pkg/apis/core/v1"
+ "k8s.io/kubernetes/pkg/apis/core/validation"
kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
"k8s.io/kubernetes/pkg/securitycontext"
)
@@ -90,7 +90,7 @@ func TestReadPodsFromFileExistAlready(t *testing.T) {
for _, pod := range update.Pods {
// TODO: remove the conversion when validation is performed on versioned objects.
internalPod := &api.Pod{}
- if err := k8s_api_v1.Convert_v1_Pod_To_api_Pod(pod, internalPod, nil); err != nil {
+ if err := k8s_api_v1.Convert_v1_Pod_To_core_Pod(pod, internalPod, nil); err != nil {
t.Fatalf("%s: Cannot convert pod %#v, %#v", testCase.desc, pod, err)
}
if errs := validation.ValidatePod(internalPod); len(errs) > 0 {
@@ -373,7 +373,7 @@ func expectUpdate(t *testing.T, ch chan interface{}, testCase *testCase) {
for _, pod := range update.Pods {
// TODO: remove the conversion when validation is performed on versioned objects.
internalPod := &api.Pod{}
- if err := k8s_api_v1.Convert_v1_Pod_To_api_Pod(pod, internalPod, nil); err != nil {
+ if err := k8s_api_v1.Convert_v1_Pod_To_core_Pod(pod, internalPod, nil); err != nil {
t.Fatalf("%s: Cannot convert pod %#v, %#v", testCase.desc, pod, err)
}
if errs := validation.ValidatePod(internalPod); len(errs) > 0 {
diff --git a/pkg/kubelet/config/http.go b/pkg/kubelet/config/http.go
index 077fdb4447..0ef43e062a 100644
--- a/pkg/kubelet/config/http.go
+++ b/pkg/kubelet/config/http.go
@@ -26,7 +26,7 @@ import (
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/util/wait"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
"github.com/golang/glog"
diff --git a/pkg/kubelet/config/http_test.go b/pkg/kubelet/config/http_test.go
index 710baef13e..edb25dda96 100644
--- a/pkg/kubelet/config/http_test.go
+++ b/pkg/kubelet/config/http_test.go
@@ -29,11 +29,11 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
utiltesting "k8s.io/client-go/util/testing"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
- k8s_api_v1 "k8s.io/kubernetes/pkg/api/v1"
- "k8s.io/kubernetes/pkg/api/validation"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ k8s_api_v1 "k8s.io/kubernetes/pkg/apis/core/v1"
+ "k8s.io/kubernetes/pkg/apis/core/validation"
kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
)
@@ -318,7 +318,7 @@ func TestExtractPodsFromHTTP(t *testing.T) {
for _, pod := range update.Pods {
// TODO: remove the conversion when validation is performed on versioned objects.
internalPod := &api.Pod{}
- if err := k8s_api_v1.Convert_v1_Pod_To_api_Pod(pod, internalPod, nil); err != nil {
+ if err := k8s_api_v1.Convert_v1_Pod_To_core_Pod(pod, internalPod, nil); err != nil {
t.Fatalf("%s: Cannot convert pod %#v, %#v", testCase.desc, pod, err)
}
if errs := validation.ValidatePod(internalPod); len(errs) != 0 {
diff --git a/pkg/kubelet/container/BUILD b/pkg/kubelet/container/BUILD
index 96656b86dc..ac38ebd800 100644
--- a/pkg/kubelet/container/BUILD
+++ b/pkg/kubelet/container/BUILD
@@ -61,8 +61,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/kubelet/container",
library = ":go_default_library",
deps = [
- "//pkg/api/install:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//vendor/github.com/stretchr/testify/assert:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
diff --git a/pkg/kubelet/container/ref_test.go b/pkg/kubelet/container/ref_test.go
index 369a8455d2..705f202fda 100644
--- a/pkg/kubelet/container/ref_test.go
+++ b/pkg/kubelet/container/ref_test.go
@@ -21,8 +21,8 @@ import (
"k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- _ "k8s.io/kubernetes/pkg/api/install"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
)
func TestFieldPath(t *testing.T) {
diff --git a/pkg/kubelet/dockershim/docker_container.go b/pkg/kubelet/dockershim/docker_container.go
index 61401ee1fa..453c18c756 100644
--- a/pkg/kubelet/dockershim/docker_container.go
+++ b/pkg/kubelet/dockershim/docker_container.go
@@ -197,7 +197,7 @@ func (ds *dockerService) createContainerLogSymlink(containerID string) error {
path, realPath, containerID, err)
}
} else {
- supported, err := IsCRISupportedLogDriver(ds.client)
+ supported, err := ds.IsCRISupportedLogDriver()
if err != nil {
glog.Warningf("Failed to check supported logging driver by CRI: %v", err)
return nil
diff --git a/pkg/kubelet/dockershim/docker_service.go b/pkg/kubelet/dockershim/docker_service.go
index b8525de17d..be0ba255e0 100644
--- a/pkg/kubelet/dockershim/docker_service.go
+++ b/pkg/kubelet/dockershim/docker_service.go
@@ -148,9 +148,41 @@ type dockerNetworkHost struct {
var internalLabelKeys []string = []string{containerTypeLabelKey, containerLogPathLabelKey, sandboxIDLabelKey}
+// ClientConfig is parameters used to initialize docker client
+type ClientConfig struct {
+ DockerEndpoint string
+ RuntimeRequestTimeout time.Duration
+ ImagePullProgressDeadline time.Duration
+
+ // Configuration for fake docker client
+ EnableSleep bool
+ WithTraceDisabled bool
+}
+
+// NewDockerClientFromConfig create a docker client from given configure
+// return nil if nil configure is given.
+func NewDockerClientFromConfig(config *ClientConfig) libdocker.Interface {
+ if config != nil {
+ // Create docker client.
+ client := libdocker.ConnectToDockerOrDie(
+ config.DockerEndpoint,
+ config.RuntimeRequestTimeout,
+ config.ImagePullProgressDeadline,
+ config.WithTraceDisabled,
+ config.EnableSleep,
+ )
+ return client
+ }
+
+ return nil
+}
+
// NOTE: Anything passed to DockerService should be eventually handled in another way when we switch to running the shim as a different process.
-func NewDockerService(client libdocker.Interface, podSandboxImage string, streamingConfig *streaming.Config,
+func NewDockerService(config *ClientConfig, podSandboxImage string, streamingConfig *streaming.Config,
pluginSettings *NetworkPluginSettings, cgroupsName string, kubeCgroupDriver string, dockershimRootDir string, disableSharedPID bool) (DockerService, error) {
+
+ client := NewDockerClientFromConfig(config)
+
c := libdocker.NewInstrumentedInterface(client)
checkpointHandler, err := NewPersistentCheckpointHandler(dockershimRootDir)
if err != nil {
@@ -238,6 +270,15 @@ type DockerService interface {
Start() error
// For serving streaming calls.
http.Handler
+
+ // IsCRISupportedLogDriver checks whether the logging driver used by docker is
+ // suppoted by native CRI integration.
+ // TODO(resouer): remove this when deprecating unsupported log driver
+ IsCRISupportedLogDriver() (bool, error)
+
+ // NewDockerLegacyService created docker legacy service when log driver is not supported.
+ // TODO(resouer): remove this when deprecating unsupported log driver
+ NewDockerLegacyService() DockerLegacyService
}
type dockerService struct {
@@ -480,8 +521,10 @@ type dockerLegacyService struct {
client libdocker.Interface
}
-func NewDockerLegacyService(client libdocker.Interface) DockerLegacyService {
- return &dockerLegacyService{client: client}
+// NewDockerLegacyService created docker legacy service when log driver is not supported.
+// TODO(resouer): remove this when deprecating unsupported log driver
+func (d *dockerService) NewDockerLegacyService() DockerLegacyService {
+ return &dockerLegacyService{client: d.client}
}
// GetContainerLogs get container logs directly from docker daemon.
@@ -553,8 +596,8 @@ var criSupportedLogDrivers = []string{"json-file"}
// IsCRISupportedLogDriver checks whether the logging driver used by docker is
// suppoted by native CRI integration.
-func IsCRISupportedLogDriver(client libdocker.Interface) (bool, error) {
- info, err := client.Info()
+func (d *dockerService) IsCRISupportedLogDriver() (bool, error) {
+ info, err := d.client.Info()
if err != nil {
return false, fmt.Errorf("failed to get docker info: %v", err)
}
diff --git a/pkg/kubelet/dockershim/libdocker/client.go b/pkg/kubelet/dockershim/libdocker/client.go
index 0b5dcdd8da..0400bbb917 100644
--- a/pkg/kubelet/dockershim/libdocker/client.go
+++ b/pkg/kubelet/dockershim/libdocker/client.go
@@ -40,6 +40,9 @@ const (
// This is only used by GetKubeletDockerContainers(), and should be removed
// along with the function.
containerNamePrefix = "k8s"
+
+ // Fake docker endpoint
+ FakeDockerEndpoint = "fake://"
)
// Interface is an abstract interface for testability. It abstracts the interface of docker client.
@@ -86,9 +89,18 @@ func getDockerClient(dockerEndpoint string) (*dockerapi.Client, error) {
// is the timeout for docker requests. If timeout is exceeded, the request
// will be cancelled and throw out an error. If requestTimeout is 0, a default
// value will be applied.
-func ConnectToDockerOrDie(dockerEndpoint string, requestTimeout, imagePullProgressDeadline time.Duration) Interface {
- if dockerEndpoint == "fake://" {
- return NewFakeDockerClient()
+func ConnectToDockerOrDie(dockerEndpoint string, requestTimeout, imagePullProgressDeadline time.Duration,
+ withTraceDisabled bool, enableSleep bool) Interface {
+ if dockerEndpoint == FakeDockerEndpoint {
+ fakeClient := NewFakeDockerClient()
+ if withTraceDisabled {
+ fakeClient = fakeClient.WithTraceDisabled()
+ }
+
+ if enableSleep {
+ fakeClient.EnableSleep = true
+ }
+ return fakeClient
}
client, err := getDockerClient(dockerEndpoint)
if err != nil {
diff --git a/pkg/kubelet/envvars/BUILD b/pkg/kubelet/envvars/BUILD
index c65ecdd4c8..0583ebdf13 100644
--- a/pkg/kubelet/envvars/BUILD
+++ b/pkg/kubelet/envvars/BUILD
@@ -14,7 +14,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/kubelet/envvars",
deps = [
- "//pkg/api/v1/helper:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
],
)
diff --git a/pkg/kubelet/envvars/envvars.go b/pkg/kubelet/envvars/envvars.go
index 9dcb7ebbb4..789c20820c 100644
--- a/pkg/kubelet/envvars/envvars.go
+++ b/pkg/kubelet/envvars/envvars.go
@@ -23,7 +23,7 @@ import (
"strings"
"k8s.io/api/core/v1"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
)
// FromServices builds environment variables that a container is started with,
diff --git a/pkg/kubelet/eviction/BUILD b/pkg/kubelet/eviction/BUILD
index 880cdbf0db..3f90d903bf 100644
--- a/pkg/kubelet/eviction/BUILD
+++ b/pkg/kubelet/eviction/BUILD
@@ -15,7 +15,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/kubelet/eviction",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/features:go_default_library",
"//pkg/kubelet/apis/stats/v1alpha1:go_default_library",
"//pkg/kubelet/cm:go_default_library",
@@ -49,8 +49,8 @@ go_library(
}),
importpath = "k8s.io/kubernetes/pkg/kubelet/eviction",
deps = [
- "//pkg/api/v1/helper/qos:go_default_library",
"//pkg/api/v1/resource:go_default_library",
+ "//pkg/apis/core/v1/helper/qos:go_default_library",
"//pkg/features:go_default_library",
"//pkg/kubelet/apis/stats/v1alpha1:go_default_library",
"//pkg/kubelet/cm:go_default_library",
diff --git a/pkg/kubelet/eviction/eviction_manager.go b/pkg/kubelet/eviction/eviction_manager.go
index 14596188f6..b8f763712c 100644
--- a/pkg/kubelet/eviction/eviction_manager.go
+++ b/pkg/kubelet/eviction/eviction_manager.go
@@ -30,8 +30,8 @@ import (
"k8s.io/apimachinery/pkg/util/wait"
utilfeature "k8s.io/apiserver/pkg/util/feature"
"k8s.io/client-go/tools/record"
- v1qos "k8s.io/kubernetes/pkg/api/v1/helper/qos"
apiv1resource "k8s.io/kubernetes/pkg/api/v1/resource"
+ v1qos "k8s.io/kubernetes/pkg/apis/core/v1/helper/qos"
"k8s.io/kubernetes/pkg/features"
statsapi "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1"
"k8s.io/kubernetes/pkg/kubelet/cm"
diff --git a/pkg/kubelet/eviction/eviction_manager_test.go b/pkg/kubelet/eviction/eviction_manager_test.go
index d847481428..488e54d2e9 100644
--- a/pkg/kubelet/eviction/eviction_manager_test.go
+++ b/pkg/kubelet/eviction/eviction_manager_test.go
@@ -26,7 +26,7 @@ import (
"k8s.io/apimachinery/pkg/util/clock"
utilfeature "k8s.io/apiserver/pkg/util/feature"
"k8s.io/client-go/tools/record"
- kubeapi "k8s.io/kubernetes/pkg/api"
+ kubeapi "k8s.io/kubernetes/pkg/apis/core"
statsapi "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1"
evictionapi "k8s.io/kubernetes/pkg/kubelet/eviction/api"
"k8s.io/kubernetes/pkg/kubelet/lifecycle"
diff --git a/pkg/kubelet/eviction/helpers_test.go b/pkg/kubelet/eviction/helpers_test.go
index 448c89a4ba..f2089b04f3 100644
--- a/pkg/kubelet/eviction/helpers_test.go
+++ b/pkg/kubelet/eviction/helpers_test.go
@@ -27,7 +27,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
utilfeature "k8s.io/apiserver/pkg/util/feature"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/features"
statsapi "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1"
"k8s.io/kubernetes/pkg/kubelet/cm"
diff --git a/pkg/kubelet/gpu/nvidia/BUILD b/pkg/kubelet/gpu/nvidia/BUILD
index 2b31e7eb6b..62082545e7 100644
--- a/pkg/kubelet/gpu/nvidia/BUILD
+++ b/pkg/kubelet/gpu/nvidia/BUILD
@@ -14,6 +14,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/kubelet/gpu/nvidia",
deps = [
+ "//pkg/kubelet/dockershim:go_default_library",
"//pkg/kubelet/dockershim/libdocker:go_default_library",
"//pkg/kubelet/gpu:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
@@ -42,6 +43,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/kubelet/gpu/nvidia",
library = ":go_default_library",
deps = [
+ "//pkg/kubelet/dockershim:go_default_library",
"//pkg/kubelet/dockershim/libdocker:go_default_library",
"//vendor/github.com/stretchr/testify/assert:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
diff --git a/pkg/kubelet/gpu/nvidia/nvidia_gpu_manager.go b/pkg/kubelet/gpu/nvidia/nvidia_gpu_manager.go
index c347cd2add..911434f6b6 100644
--- a/pkg/kubelet/gpu/nvidia/nvidia_gpu_manager.go
+++ b/pkg/kubelet/gpu/nvidia/nvidia_gpu_manager.go
@@ -30,6 +30,7 @@ import (
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
"k8s.io/apimachinery/pkg/util/sets"
+ "k8s.io/kubernetes/pkg/kubelet/dockershim"
"k8s.io/kubernetes/pkg/kubelet/dockershim/libdocker"
"k8s.io/kubernetes/pkg/kubelet/gpu"
)
@@ -67,10 +68,12 @@ type nvidiaGPUManager struct {
// NewNvidiaGPUManager returns a GPUManager that manages local Nvidia GPUs.
// TODO: Migrate to use pod level cgroups and make it generic to all runtimes.
-func NewNvidiaGPUManager(activePodsLister activePodsLister, dockerClient libdocker.Interface) (gpu.GPUManager, error) {
+func NewNvidiaGPUManager(activePodsLister activePodsLister, config *dockershim.ClientConfig) (gpu.GPUManager, error) {
+ dockerClient := dockershim.NewDockerClientFromConfig(config)
if dockerClient == nil {
- return nil, fmt.Errorf("invalid docker client specified")
+ return nil, fmt.Errorf("invalid docker client configure specified")
}
+
return &nvidiaGPUManager{
allGPUs: sets.NewString(),
dockerClient: dockerClient,
diff --git a/pkg/kubelet/gpu/nvidia/nvidia_gpu_manager_test.go b/pkg/kubelet/gpu/nvidia/nvidia_gpu_manager_test.go
index dc7253f094..8dc2cd6e67 100644
--- a/pkg/kubelet/gpu/nvidia/nvidia_gpu_manager_test.go
+++ b/pkg/kubelet/gpu/nvidia/nvidia_gpu_manager_test.go
@@ -28,6 +28,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/uuid"
+ "k8s.io/kubernetes/pkg/kubelet/dockershim"
"k8s.io/kubernetes/pkg/kubelet/dockershim/libdocker"
)
@@ -73,8 +74,9 @@ func TestNewNvidiaGPUManager(t *testing.T) {
as.NotNil(err)
// Expects a GPUManager to be created with non-nil dockerClient.
- fakeDocker := libdocker.NewFakeDockerClient()
- testGpuManager2, err := NewNvidiaGPUManager(podLister, fakeDocker)
+ testGpuManager2, err := NewNvidiaGPUManager(podLister, &dockershim.ClientConfig{
+ DockerEndpoint: libdocker.FakeDockerEndpoint,
+ })
as.NotNil(testGpuManager2)
as.Nil(err)
diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go
index b8865a7fb1..1bdb5555c2 100644
--- a/pkg/kubelet/kubelet.go
+++ b/pkg/kubelet/kubelet.go
@@ -19,13 +19,11 @@ package kubelet
import (
"crypto/tls"
"fmt"
- "io/ioutil"
"net"
"net/http"
"net/url"
"os"
"path"
- "path/filepath"
goruntime "runtime"
"sort"
"strings"
@@ -57,7 +55,7 @@ import (
"k8s.io/client-go/util/certificate"
"k8s.io/client-go/util/flowcontrol"
"k8s.io/client-go/util/integer"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/cloudprovider"
"k8s.io/kubernetes/pkg/features"
internalapi "k8s.io/kubernetes/pkg/kubelet/apis/cri"
@@ -70,7 +68,6 @@ import (
"k8s.io/kubernetes/pkg/kubelet/configmap"
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
"k8s.io/kubernetes/pkg/kubelet/dockershim"
- "k8s.io/kubernetes/pkg/kubelet/dockershim/libdocker"
dockerremote "k8s.io/kubernetes/pkg/kubelet/dockershim/remote"
"k8s.io/kubernetes/pkg/kubelet/events"
"k8s.io/kubernetes/pkg/kubelet/eviction"
@@ -252,7 +249,7 @@ type Dependencies struct {
CAdvisorInterface cadvisor.Interface
Cloud cloudprovider.Interface
ContainerManager cm.ContainerManager
- DockerClient libdocker.Interface
+ DockerClientConfig *dockershim.ClientConfig
EventClient v1core.EventsGetter
HeartbeatClient v1core.CoreV1Interface
KubeClient clientset.Interface
@@ -579,13 +576,12 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
}
// TODO: These need to become arguments to a standalone docker shim.
- binDir := crOptions.CNIBinDir
pluginSettings := dockershim.NetworkPluginSettings{
HairpinMode: hairpinMode,
NonMasqueradeCIDR: nonMasqueradeCIDR,
PluginName: crOptions.NetworkPluginName,
PluginConfDir: crOptions.CNIConfDir,
- PluginBinDir: binDir,
+ PluginBinDir: crOptions.CNIBinDir,
MTU: int(crOptions.NetworkPluginMTU),
}
@@ -611,7 +607,7 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
case kubetypes.DockerContainerRuntime:
// Create and start the CRI shim running as a grpc server.
streamingConfig := getStreamingConfig(kubeCfg, kubeDeps)
- ds, err := dockershim.NewDockerService(kubeDeps.DockerClient, crOptions.PodSandboxImage, streamingConfig,
+ ds, err := dockershim.NewDockerService(kubeDeps.DockerClientConfig, crOptions.PodSandboxImage, streamingConfig,
&pluginSettings, runtimeCgroups, kubeCfg.CgroupDriver, crOptions.DockershimRootDirectory,
crOptions.DockerDisableSharedPID)
if err != nil {
@@ -635,12 +631,12 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
}
// Create dockerLegacyService when the logging driver is not supported.
- supported, err := dockershim.IsCRISupportedLogDriver(kubeDeps.DockerClient)
+ supported, err := ds.IsCRISupportedLogDriver()
if err != nil {
return nil, err
}
if !supported {
- klet.dockerLegacyService = dockershim.NewDockerLegacyService(kubeDeps.DockerClient)
+ klet.dockerLegacyService = ds.NewDockerLegacyService()
legacyLogProvider = dockershim.NewLegacyLogProvider(klet.dockerLegacyService)
}
case kubetypes.RemoteContainerRuntime:
@@ -889,7 +885,7 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
klet.softAdmitHandlers.AddPodAdmitHandler(lifecycle.NewNoNewPrivsAdmitHandler(klet.containerRuntime))
if utilfeature.DefaultFeatureGate.Enabled(features.Accelerators) {
if containerRuntime == kubetypes.DockerContainerRuntime {
- if klet.gpuManager, err = nvidia.NewNvidiaGPUManager(klet, kubeDeps.DockerClient); err != nil {
+ if klet.gpuManager, err = nvidia.NewNvidiaGPUManager(klet, kubeDeps.DockerClientConfig); err != nil {
return nil, err
}
} else {
@@ -1401,64 +1397,6 @@ func (kl *Kubelet) GetKubeClient() clientset.Interface {
return kl.kubeClient
}
-// GetClusterDNS returns a list of the DNS servers, a list of the DNS search
-// domains of the cluster, and a list of resolv.conf options.
-func (kl *Kubelet) GetClusterDNS(pod *v1.Pod) ([]string, []string, []string, bool, error) {
- var hostDNS, hostSearch, hostOptions []string
- // Get host DNS settings
- if kl.resolverConfig != "" {
- f, err := os.Open(kl.resolverConfig)
- if err != nil {
- return nil, nil, nil, false, err
- }
- defer f.Close()
-
- hostDNS, hostSearch, hostOptions, err = kl.parseResolvConf(f)
- if err != nil {
- return nil, nil, nil, false, err
- }
- }
- useClusterFirstPolicy := ((pod.Spec.DNSPolicy == v1.DNSClusterFirst && !kubecontainer.IsHostNetworkPod(pod)) || pod.Spec.DNSPolicy == v1.DNSClusterFirstWithHostNet)
- if useClusterFirstPolicy && len(kl.clusterDNS) == 0 {
- // clusterDNS is not known.
- // pod with ClusterDNSFirst Policy cannot be created
- kl.recorder.Eventf(pod, v1.EventTypeWarning, "MissingClusterDNS", "kubelet does not have ClusterDNS IP configured and cannot create Pod using %q policy. Falling back to DNSDefault policy.", pod.Spec.DNSPolicy)
- log := fmt.Sprintf("kubelet does not have ClusterDNS IP configured and cannot create Pod using %q policy. pod: %q. Falling back to DNSDefault policy.", pod.Spec.DNSPolicy, format.Pod(pod))
- kl.recorder.Eventf(kl.nodeRef, v1.EventTypeWarning, "MissingClusterDNS", log)
-
- // fallback to DNSDefault
- useClusterFirstPolicy = false
- }
-
- if !useClusterFirstPolicy {
- // When the kubelet --resolv-conf flag is set to the empty string, use
- // DNS settings that override the docker default (which is to use
- // /etc/resolv.conf) and effectively disable DNS lookups. According to
- // the bind documentation, the behavior of the DNS client library when
- // "nameservers" are not specified is to "use the nameserver on the
- // local machine". A nameserver setting of localhost is equivalent to
- // this documented behavior.
- if kl.resolverConfig == "" {
- hostDNS = []string{"127.0.0.1"}
- hostSearch = []string{"."}
- } else {
- hostSearch = kl.formDNSSearchForDNSDefault(hostSearch, pod)
- }
- return hostDNS, hostSearch, hostOptions, useClusterFirstPolicy, nil
- }
-
- // for a pod with DNSClusterFirst policy, the cluster DNS server is the only nameserver configured for
- // the pod. The cluster DNS server itself will forward queries to other nameservers that is configured to use,
- // in case the cluster DNS server cannot resolve the DNS query itself
- dns := make([]string, len(kl.clusterDNS))
- for i, ip := range kl.clusterDNS {
- dns[i] = ip.String()
- }
- dnsSearch := kl.formDNSSearch(hostSearch, pod)
-
- return dns, dnsSearch, hostOptions, useClusterFirstPolicy, nil
-}
-
// syncPod is the transaction script for the sync of a single pod.
//
// Arguments:
@@ -2224,36 +2162,6 @@ func (kl *Kubelet) cleanUpContainersInPod(podID types.UID, exitedContainerID str
}
}
-// Replace the nameserver in containerized-mounter's rootfs/etc/resolve.conf with kubelet.ClusterDNS
-func (kl *Kubelet) setupDNSinContainerizedMounter(mounterPath string) {
- resolvePath := filepath.Join(strings.TrimSuffix(mounterPath, "/mounter"), "rootfs", "etc", "resolv.conf")
- dnsString := ""
- for _, dns := range kl.clusterDNS {
- dnsString = dnsString + fmt.Sprintf("nameserver %s\n", dns)
- }
- if kl.resolverConfig != "" {
- f, err := os.Open(kl.resolverConfig)
- defer f.Close()
- if err != nil {
- glog.Error("Could not open resolverConf file")
- } else {
- _, hostSearch, _, err := kl.parseResolvConf(f)
- if err != nil {
- glog.Errorf("Error for parsing the reslov.conf file: %v", err)
- } else {
- dnsString = dnsString + "search"
- for _, search := range hostSearch {
- dnsString = dnsString + fmt.Sprintf(" %s", search)
- }
- dnsString = dnsString + "\n"
- }
- }
- }
- if err := ioutil.WriteFile(resolvePath, []byte(dnsString), 0600); err != nil {
- glog.Errorf("Could not write dns nameserver in file %s, with error %v", resolvePath, err)
- }
-}
-
// isSyncPodWorthy filters out events that are not worthy of pod syncing
func isSyncPodWorthy(event *pleg.PodLifecycleEvent) bool {
// ContatnerRemoved doesn't affect pod state
diff --git a/pkg/kubelet/kubelet_network.go b/pkg/kubelet/kubelet_network.go
index d2c3b41fb5..f9397a0e3b 100644
--- a/pkg/kubelet/kubelet_network.go
+++ b/pkg/kubelet/kubelet_network.go
@@ -21,13 +21,17 @@ import (
"io"
"io/ioutil"
"os"
+ "path/filepath"
"strings"
"github.com/golang/glog"
"k8s.io/api/core/v1"
+ clientset "k8s.io/client-go/kubernetes"
"k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig"
+ kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
"k8s.io/kubernetes/pkg/kubelet/network"
kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
+ "k8s.io/kubernetes/pkg/kubelet/util/format"
utiliptables "k8s.io/kubernetes/pkg/util/iptables"
)
@@ -46,6 +50,77 @@ const (
KubeFirewallChain utiliptables.Chain = "KUBE-FIREWALL"
)
+// This just exports required functions from kubelet proper, for use by network
+// plugins.
+// TODO(#35457): get rid of this backchannel to the kubelet. The scope of
+// the back channel is restricted to host-ports/testing, and restricted
+// to kubenet. No other network plugin wrapper needs it. Other plugins
+// only require a way to access namespace information, which they can do
+// directly through the methods implemented by criNetworkHost.
+type networkHost struct {
+ kubelet *Kubelet
+}
+
+func (nh *networkHost) GetPodByName(name, namespace string) (*v1.Pod, bool) {
+ return nh.kubelet.GetPodByName(name, namespace)
+}
+
+func (nh *networkHost) GetKubeClient() clientset.Interface {
+ return nh.kubelet.kubeClient
+}
+
+func (nh *networkHost) GetRuntime() kubecontainer.Runtime {
+ return nh.kubelet.GetRuntime()
+}
+
+func (nh *networkHost) SupportsLegacyFeatures() bool {
+ return true
+}
+
+// criNetworkHost implements the part of network.Host required by the
+// cri (NamespaceGetter). It leechs off networkHost for all other
+// methods, because networkHost is slated for deletion.
+type criNetworkHost struct {
+ *networkHost
+ // criNetworkHost currently support legacy features. Hence no need to support PortMappingGetter
+ *network.NoopPortMappingGetter
+}
+
+// GetNetNS returns the network namespace of the given containerID.
+// This method satisfies the network.NamespaceGetter interface for
+// networkHost. It's only meant to be used from network plugins
+// that are directly invoked by the kubelet (aka: legacy, pre-cri).
+// Any network plugin invoked by a cri must implement NamespaceGetter
+// to talk directly to the runtime instead.
+func (c *criNetworkHost) GetNetNS(containerID string) (string, error) {
+ return c.kubelet.GetRuntime().GetNetNS(kubecontainer.ContainerID{Type: "", ID: containerID})
+}
+
+// NoOpLegacyHost implements the network.LegacyHost interface for the remote
+// runtime shim by just returning empties. It doesn't support legacy features
+// like host port and bandwidth shaping.
+type NoOpLegacyHost struct{}
+
+// GetPodByName always returns "nil, true" for 'NoOpLegacyHost'
+func (n *NoOpLegacyHost) GetPodByName(namespace, name string) (*v1.Pod, bool) {
+ return nil, true
+}
+
+// GetKubeClient always returns "nil" for 'NoOpLegacyHost'
+func (n *NoOpLegacyHost) GetKubeClient() clientset.Interface {
+ return nil
+}
+
+// GetRuntime always returns "nil" for 'NoOpLegacyHost'
+func (n *NoOpLegacyHost) GetRuntime() kubecontainer.Runtime {
+ return nil
+}
+
+// SupportsLegacyFeatures always returns "false" for 'NoOpLegacyHost'
+func (n *NoOpLegacyHost) SupportsLegacyFeatures() bool {
+ return false
+}
+
// effectiveHairpinMode determines the effective hairpin mode given the
// configured mode, container runtime, and whether cbr0 should be configured.
func effectiveHairpinMode(hairpinMode kubeletconfig.HairpinMode, containerRuntime string, networkPlugin string) (kubeletconfig.HairpinMode, error) {
@@ -89,7 +164,7 @@ func (kl *Kubelet) providerRequiresNetworkingConfiguration() bool {
return supported
}
-func omitDuplicates(kl *Kubelet, pod *v1.Pod, combinedSearch []string) []string {
+func omitDuplicates(pod *v1.Pod, combinedSearch []string) []string {
uniqueDomains := map[string]bool{}
for _, dnsDomain := range combinedSearch {
@@ -101,7 +176,7 @@ func omitDuplicates(kl *Kubelet, pod *v1.Pod, combinedSearch []string) []string
return combinedSearch[:len(uniqueDomains)]
}
-func formDNSSearchFitsLimits(kl *Kubelet, pod *v1.Pod, composedSearch []string) []string {
+func (kl *Kubelet) formDNSSearchFitsLimits(pod *v1.Pod, composedSearch []string) []string {
// resolver file Search line current limitations
resolvSearchLineDNSDomainsLimit := 6
resolvSearchLineLenLimit := 255
@@ -137,12 +212,12 @@ func formDNSSearchFitsLimits(kl *Kubelet, pod *v1.Pod, composedSearch []string)
}
func (kl *Kubelet) formDNSSearchForDNSDefault(hostSearch []string, pod *v1.Pod) []string {
- return formDNSSearchFitsLimits(kl, pod, hostSearch)
+ return kl.formDNSSearchFitsLimits(pod, hostSearch)
}
func (kl *Kubelet) formDNSSearch(hostSearch []string, pod *v1.Pod) []string {
if kl.clusterDomain == "" {
- formDNSSearchFitsLimits(kl, pod, hostSearch)
+ kl.formDNSSearchFitsLimits(pod, hostSearch)
return hostSearch
}
@@ -152,8 +227,8 @@ func (kl *Kubelet) formDNSSearch(hostSearch []string, pod *v1.Pod) []string {
combinedSearch := append(dnsSearch, hostSearch...)
- combinedSearch = omitDuplicates(kl, pod, combinedSearch)
- return formDNSSearchFitsLimits(kl, pod, combinedSearch)
+ combinedSearch = omitDuplicates(pod, combinedSearch)
+ return kl.formDNSSearchFitsLimits(pod, combinedSearch)
}
func (kl *Kubelet) checkLimitsForResolvConf() {
@@ -246,6 +321,94 @@ func (kl *Kubelet) parseResolvConf(reader io.Reader) (nameservers []string, sear
return nameservers, searches, options, nil
}
+// GetClusterDNS returns a list of the DNS servers, a list of the DNS search
+// domains of the cluster, and a list of resolv.conf options.
+func (kl *Kubelet) GetClusterDNS(pod *v1.Pod) ([]string, []string, []string, bool, error) {
+ var hostDNS, hostSearch, hostOptions []string
+ // Get host DNS settings
+ if kl.resolverConfig != "" {
+ f, err := os.Open(kl.resolverConfig)
+ if err != nil {
+ return nil, nil, nil, false, err
+ }
+ defer f.Close()
+
+ hostDNS, hostSearch, hostOptions, err = kl.parseResolvConf(f)
+ if err != nil {
+ return nil, nil, nil, false, err
+ }
+ }
+ useClusterFirstPolicy := ((pod.Spec.DNSPolicy == v1.DNSClusterFirst && !kubecontainer.IsHostNetworkPod(pod)) || pod.Spec.DNSPolicy == v1.DNSClusterFirstWithHostNet)
+ if useClusterFirstPolicy && len(kl.clusterDNS) == 0 {
+ // clusterDNS is not known.
+ // pod with ClusterDNSFirst Policy cannot be created
+ kl.recorder.Eventf(pod, v1.EventTypeWarning, "MissingClusterDNS", "kubelet does not have ClusterDNS IP configured and cannot create Pod using %q policy. Falling back to DNSDefault policy.", pod.Spec.DNSPolicy)
+ log := fmt.Sprintf("kubelet does not have ClusterDNS IP configured and cannot create Pod using %q policy. pod: %q. Falling back to DNSDefault policy.", pod.Spec.DNSPolicy, format.Pod(pod))
+ kl.recorder.Eventf(kl.nodeRef, v1.EventTypeWarning, "MissingClusterDNS", log)
+
+ // fallback to DNSDefault
+ useClusterFirstPolicy = false
+ }
+
+ if !useClusterFirstPolicy {
+ // When the kubelet --resolv-conf flag is set to the empty string, use
+ // DNS settings that override the docker default (which is to use
+ // /etc/resolv.conf) and effectively disable DNS lookups. According to
+ // the bind documentation, the behavior of the DNS client library when
+ // "nameservers" are not specified is to "use the nameserver on the
+ // local machine". A nameserver setting of localhost is equivalent to
+ // this documented behavior.
+ if kl.resolverConfig == "" {
+ hostDNS = []string{"127.0.0.1"}
+ hostSearch = []string{"."}
+ } else {
+ hostSearch = kl.formDNSSearchForDNSDefault(hostSearch, pod)
+ }
+ return hostDNS, hostSearch, hostOptions, useClusterFirstPolicy, nil
+ }
+
+ // for a pod with DNSClusterFirst policy, the cluster DNS server is the only nameserver configured for
+ // the pod. The cluster DNS server itself will forward queries to other nameservers that is configured to use,
+ // in case the cluster DNS server cannot resolve the DNS query itself
+ dns := make([]string, len(kl.clusterDNS))
+ for i, ip := range kl.clusterDNS {
+ dns[i] = ip.String()
+ }
+ dnsSearch := kl.formDNSSearch(hostSearch, pod)
+
+ return dns, dnsSearch, hostOptions, useClusterFirstPolicy, nil
+}
+
+// Replace the nameserver in containerized-mounter's rootfs/etc/resolve.conf with kubelet.ClusterDNS
+func (kl *Kubelet) setupDNSinContainerizedMounter(mounterPath string) {
+ resolvePath := filepath.Join(strings.TrimSuffix(mounterPath, "/mounter"), "rootfs", "etc", "resolv.conf")
+ dnsString := ""
+ for _, dns := range kl.clusterDNS {
+ dnsString = dnsString + fmt.Sprintf("nameserver %s\n", dns)
+ }
+ if kl.resolverConfig != "" {
+ f, err := os.Open(kl.resolverConfig)
+ defer f.Close()
+ if err != nil {
+ glog.Error("Could not open resolverConf file")
+ } else {
+ _, hostSearch, _, err := kl.parseResolvConf(f)
+ if err != nil {
+ glog.Errorf("Error for parsing the reslov.conf file: %v", err)
+ } else {
+ dnsString = dnsString + "search"
+ for _, search := range hostSearch {
+ dnsString = dnsString + fmt.Sprintf(" %s", search)
+ }
+ dnsString = dnsString + "\n"
+ }
+ }
+ }
+ if err := ioutil.WriteFile(resolvePath, []byte(dnsString), 0600); err != nil {
+ glog.Errorf("Could not write dns nameserver in file %s, with error %v", resolvePath, err)
+ }
+}
+
// syncNetworkStatus updates the network state
func (kl *Kubelet) syncNetworkStatus() {
// For cri integration, network state will be updated in updateRuntimeUp,
diff --git a/pkg/kubelet/kubelet_network_test.go b/pkg/kubelet/kubelet_network_test.go
index 0d1e20ae11..4bffe2c55d 100644
--- a/pkg/kubelet/kubelet_network_test.go
+++ b/pkg/kubelet/kubelet_network_test.go
@@ -28,6 +28,76 @@ import (
"k8s.io/client-go/tools/record"
)
+func TestNetworkHostGetsPodNotFound(t *testing.T) {
+ testKubelet := newTestKubelet(t, true)
+ defer testKubelet.Cleanup()
+ nh := networkHost{testKubelet.kubelet}
+
+ actualPod, _ := nh.GetPodByName("", "")
+ if actualPod != nil {
+ t.Fatalf("Was expected nil, received %v instead", actualPod)
+ }
+}
+
+func TestNetworkHostGetsKubeClient(t *testing.T) {
+ testKubelet := newTestKubelet(t, true)
+ defer testKubelet.Cleanup()
+ nh := networkHost{testKubelet.kubelet}
+
+ if nh.GetKubeClient() != testKubelet.fakeKubeClient {
+ t.Fatalf("NetworkHost client does not match testKubelet's client")
+ }
+}
+
+func TestNetworkHostGetsRuntime(t *testing.T) {
+ testKubelet := newTestKubelet(t, true)
+ defer testKubelet.Cleanup()
+ nh := networkHost{testKubelet.kubelet}
+
+ if nh.GetRuntime() != testKubelet.fakeRuntime {
+ t.Fatalf("NetworkHost runtime does not match testKubelet's runtime")
+ }
+}
+
+func TestNetworkHostSupportsLegacyFeatures(t *testing.T) {
+ testKubelet := newTestKubelet(t, true)
+ defer testKubelet.Cleanup()
+ nh := networkHost{testKubelet.kubelet}
+
+ if nh.SupportsLegacyFeatures() == false {
+ t.Fatalf("SupportsLegacyFeatures should not be false")
+ }
+}
+
+func TestNoOpHostGetsName(t *testing.T) {
+ nh := NoOpLegacyHost{}
+ pod, err := nh.GetPodByName("", "")
+ if pod != nil && err != true {
+ t.Fatalf("noOpLegacyHost getpodbyname expected to be nil and true")
+ }
+}
+
+func TestNoOpHostGetsKubeClient(t *testing.T) {
+ nh := NoOpLegacyHost{}
+ if nh.GetKubeClient() != nil {
+ t.Fatalf("noOpLegacyHost client expected to be nil")
+ }
+}
+
+func TestNoOpHostGetsRuntime(t *testing.T) {
+ nh := NoOpLegacyHost{}
+ if nh.GetRuntime() != nil {
+ t.Fatalf("noOpLegacyHost runtime expected to be nil")
+ }
+}
+
+func TestNoOpHostSupportsLegacyFeatures(t *testing.T) {
+ nh := NoOpLegacyHost{}
+ if nh.SupportsLegacyFeatures() != false {
+ t.Fatalf("noOpLegacyHost legacy features expected to be false")
+ }
+}
+
func TestNodeIPParam(t *testing.T) {
testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */)
defer testKubelet.Cleanup()
@@ -183,6 +253,93 @@ func TestComposeDNSSearch(t *testing.T) {
}
}
+func TestGetClusterDNS(t *testing.T) {
+ testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */)
+ defer testKubelet.Cleanup()
+ kubelet := testKubelet.kubelet
+
+ clusterNS := "203.0.113.1"
+ kubelet.clusterDomain = "kubernetes.io"
+ kubelet.clusterDNS = []net.IP{net.ParseIP(clusterNS)}
+
+ pods := newTestPods(4)
+ pods[0].Spec.DNSPolicy = v1.DNSClusterFirstWithHostNet
+ pods[1].Spec.DNSPolicy = v1.DNSClusterFirst
+ pods[2].Spec.DNSPolicy = v1.DNSClusterFirst
+ pods[2].Spec.HostNetwork = false
+ pods[3].Spec.DNSPolicy = v1.DNSDefault
+
+ options := make([]struct {
+ DNS []string
+ DNSSearch []string
+ }, 4)
+ for i, pod := range pods {
+ var err error
+ options[i].DNS, options[i].DNSSearch, _, _, err = kubelet.GetClusterDNS(pod)
+ if err != nil {
+ t.Fatalf("failed to generate container options: %v", err)
+ }
+ }
+ if len(options[0].DNS) != 1 || options[0].DNS[0] != clusterNS {
+ t.Errorf("expected nameserver %s, got %+v", clusterNS, options[0].DNS)
+ }
+ if len(options[0].DNSSearch) == 0 || options[0].DNSSearch[0] != ".svc."+kubelet.clusterDomain {
+ t.Errorf("expected search %s, got %+v", ".svc."+kubelet.clusterDomain, options[0].DNSSearch)
+ }
+ if len(options[1].DNS) != 1 || options[1].DNS[0] != "127.0.0.1" {
+ t.Errorf("expected nameserver 127.0.0.1, got %+v", options[1].DNS)
+ }
+ if len(options[1].DNSSearch) != 1 || options[1].DNSSearch[0] != "." {
+ t.Errorf("expected search \".\", got %+v", options[1].DNSSearch)
+ }
+ if len(options[2].DNS) != 1 || options[2].DNS[0] != clusterNS {
+ t.Errorf("expected nameserver %s, got %+v", clusterNS, options[2].DNS)
+ }
+ if len(options[2].DNSSearch) == 0 || options[2].DNSSearch[0] != ".svc."+kubelet.clusterDomain {
+ t.Errorf("expected search %s, got %+v", ".svc."+kubelet.clusterDomain, options[2].DNSSearch)
+ }
+ if len(options[3].DNS) != 1 || options[3].DNS[0] != "127.0.0.1" {
+ t.Errorf("expected nameserver 127.0.0.1, got %+v", options[3].DNS)
+ }
+ if len(options[3].DNSSearch) != 1 || options[3].DNSSearch[0] != "." {
+ t.Errorf("expected search \".\", got %+v", options[3].DNSSearch)
+ }
+
+ kubelet.resolverConfig = "/etc/resolv.conf"
+ for i, pod := range pods {
+ var err error
+ options[i].DNS, options[i].DNSSearch, _, _, err = kubelet.GetClusterDNS(pod)
+ if err != nil {
+ t.Fatalf("failed to generate container options: %v", err)
+ }
+ }
+ t.Logf("nameservers %+v", options[1].DNS)
+ if len(options[0].DNS) != 1 {
+ t.Errorf("expected cluster nameserver only, got %+v", options[0].DNS)
+ } else if options[0].DNS[0] != clusterNS {
+ t.Errorf("expected nameserver %s, got %v", clusterNS, options[0].DNS[0])
+ }
+ expLength := len(options[1].DNSSearch) + 3
+ if expLength > 6 {
+ expLength = 6
+ }
+ if len(options[0].DNSSearch) != expLength {
+ t.Errorf("expected prepend of cluster domain, got %+v", options[0].DNSSearch)
+ } else if options[0].DNSSearch[0] != ".svc."+kubelet.clusterDomain {
+ t.Errorf("expected domain %s, got %s", ".svc."+kubelet.clusterDomain, options[0].DNSSearch)
+ }
+ if len(options[2].DNS) != 1 {
+ t.Errorf("expected cluster nameserver only, got %+v", options[2].DNS)
+ } else if options[2].DNS[0] != clusterNS {
+ t.Errorf("expected nameserver %s, got %v", clusterNS, options[2].DNS[0])
+ }
+ if len(options[2].DNSSearch) != expLength {
+ t.Errorf("expected prepend of cluster domain, got %+v", options[2].DNSSearch)
+ } else if options[2].DNSSearch[0] != ".svc."+kubelet.clusterDomain {
+ t.Errorf("expected domain %s, got %s", ".svc."+kubelet.clusterDomain, options[0].DNSSearch)
+ }
+}
+
func TestGetIPTablesMark(t *testing.T) {
tests := []struct {
bit int
diff --git a/pkg/kubelet/kubelet_node_status.go b/pkg/kubelet/kubelet_node_status.go
index e4ba0d8555..9b72da7271 100644
--- a/pkg/kubelet/kubelet_node_status.go
+++ b/pkg/kubelet/kubelet_node_status.go
@@ -33,8 +33,8 @@ import (
"k8s.io/apimachinery/pkg/types"
utilnet "k8s.io/apimachinery/pkg/util/net"
utilfeature "k8s.io/apiserver/pkg/util/feature"
- k8s_api_v1 "k8s.io/kubernetes/pkg/api/v1"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
+ k8s_api_v1 "k8s.io/kubernetes/pkg/apis/core/v1"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
"k8s.io/kubernetes/pkg/cloudprovider"
"k8s.io/kubernetes/pkg/features"
kubeletapis "k8s.io/kubernetes/pkg/kubelet/apis"
@@ -236,7 +236,7 @@ func (kl *Kubelet) initialNode() (*v1.Node, error) {
if len(kl.kubeletConfiguration.RegisterWithTaints) > 0 {
taints := make([]v1.Taint, len(kl.kubeletConfiguration.RegisterWithTaints))
for i := range kl.kubeletConfiguration.RegisterWithTaints {
- if err := k8s_api_v1.Convert_api_Taint_To_v1_Taint(&kl.kubeletConfiguration.RegisterWithTaints[i], &taints[i], nil); err != nil {
+ if err := k8s_api_v1.Convert_core_Taint_To_v1_Taint(&kl.kubeletConfiguration.RegisterWithTaints[i], &taints[i], nil); err != nil {
return nil, err
}
}
diff --git a/pkg/kubelet/kubelet_pods.go b/pkg/kubelet/kubelet_pods.go
index 0375b0e39f..7a5063e44a 100644
--- a/pkg/kubelet/kubelet_pods.go
+++ b/pkg/kubelet/kubelet_pods.go
@@ -44,11 +44,11 @@ import (
utilfeature "k8s.io/apiserver/pkg/util/feature"
"k8s.io/client-go/tools/remotecommand"
"k8s.io/kubernetes/pkg/api/legacyscheme"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
- v1qos "k8s.io/kubernetes/pkg/api/v1/helper/qos"
podutil "k8s.io/kubernetes/pkg/api/v1/pod"
"k8s.io/kubernetes/pkg/api/v1/resource"
- "k8s.io/kubernetes/pkg/api/v1/validation"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
+ v1qos "k8s.io/kubernetes/pkg/apis/core/v1/helper/qos"
+ "k8s.io/kubernetes/pkg/apis/core/v1/validation"
"k8s.io/kubernetes/pkg/features"
"k8s.io/kubernetes/pkg/fieldpath"
runtimeapi "k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1/runtime"
diff --git a/pkg/kubelet/kubelet_pods_test.go b/pkg/kubelet/kubelet_pods_test.go
index 4da79c514e..5b759d5d1a 100644
--- a/pkg/kubelet/kubelet_pods_test.go
+++ b/pkg/kubelet/kubelet_pods_test.go
@@ -40,8 +40,8 @@ import (
// TODO: remove this import if
// api.Registry.GroupOrDie(v1.GroupName).GroupVersion.String() is changed
// to "v1"?
- _ "k8s.io/kubernetes/pkg/api/install"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
runtimeapi "k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1/runtime"
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
containertest "k8s.io/kubernetes/pkg/kubelet/container/testing"
diff --git a/pkg/kubelet/kubelet_test.go b/pkg/kubelet/kubelet_test.go
index 7be0104550..5019121d43 100644
--- a/pkg/kubelet/kubelet_test.go
+++ b/pkg/kubelet/kubelet_test.go
@@ -19,7 +19,6 @@ package kubelet
import (
"fmt"
"io/ioutil"
- "net"
"os"
"sort"
"testing"
@@ -2171,90 +2170,3 @@ type podsByUID []*v1.Pod
func (p podsByUID) Len() int { return len(p) }
func (p podsByUID) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
func (p podsByUID) Less(i, j int) bool { return p[i].UID < p[j].UID }
-
-func TestGetClusterDNS(t *testing.T) {
- testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */)
- defer testKubelet.Cleanup()
- kubelet := testKubelet.kubelet
-
- clusterNS := "203.0.113.1"
- kubelet.clusterDomain = "kubernetes.io"
- kubelet.clusterDNS = []net.IP{net.ParseIP(clusterNS)}
-
- pods := newTestPods(4)
- pods[0].Spec.DNSPolicy = v1.DNSClusterFirstWithHostNet
- pods[1].Spec.DNSPolicy = v1.DNSClusterFirst
- pods[2].Spec.DNSPolicy = v1.DNSClusterFirst
- pods[2].Spec.HostNetwork = false
- pods[3].Spec.DNSPolicy = v1.DNSDefault
-
- options := make([]struct {
- DNS []string
- DNSSearch []string
- }, 4)
- for i, pod := range pods {
- var err error
- options[i].DNS, options[i].DNSSearch, _, _, err = kubelet.GetClusterDNS(pod)
- if err != nil {
- t.Fatalf("failed to generate container options: %v", err)
- }
- }
- if len(options[0].DNS) != 1 || options[0].DNS[0] != clusterNS {
- t.Errorf("expected nameserver %s, got %+v", clusterNS, options[0].DNS)
- }
- if len(options[0].DNSSearch) == 0 || options[0].DNSSearch[0] != ".svc."+kubelet.clusterDomain {
- t.Errorf("expected search %s, got %+v", ".svc."+kubelet.clusterDomain, options[0].DNSSearch)
- }
- if len(options[1].DNS) != 1 || options[1].DNS[0] != "127.0.0.1" {
- t.Errorf("expected nameserver 127.0.0.1, got %+v", options[1].DNS)
- }
- if len(options[1].DNSSearch) != 1 || options[1].DNSSearch[0] != "." {
- t.Errorf("expected search \".\", got %+v", options[1].DNSSearch)
- }
- if len(options[2].DNS) != 1 || options[2].DNS[0] != clusterNS {
- t.Errorf("expected nameserver %s, got %+v", clusterNS, options[2].DNS)
- }
- if len(options[2].DNSSearch) == 0 || options[2].DNSSearch[0] != ".svc."+kubelet.clusterDomain {
- t.Errorf("expected search %s, got %+v", ".svc."+kubelet.clusterDomain, options[2].DNSSearch)
- }
- if len(options[3].DNS) != 1 || options[3].DNS[0] != "127.0.0.1" {
- t.Errorf("expected nameserver 127.0.0.1, got %+v", options[3].DNS)
- }
- if len(options[3].DNSSearch) != 1 || options[3].DNSSearch[0] != "." {
- t.Errorf("expected search \".\", got %+v", options[3].DNSSearch)
- }
-
- kubelet.resolverConfig = "/etc/resolv.conf"
- for i, pod := range pods {
- var err error
- options[i].DNS, options[i].DNSSearch, _, _, err = kubelet.GetClusterDNS(pod)
- if err != nil {
- t.Fatalf("failed to generate container options: %v", err)
- }
- }
- t.Logf("nameservers %+v", options[1].DNS)
- if len(options[0].DNS) != 1 {
- t.Errorf("expected cluster nameserver only, got %+v", options[0].DNS)
- } else if options[0].DNS[0] != clusterNS {
- t.Errorf("expected nameserver %s, got %v", clusterNS, options[0].DNS[0])
- }
- expLength := len(options[1].DNSSearch) + 3
- if expLength > 6 {
- expLength = 6
- }
- if len(options[0].DNSSearch) != expLength {
- t.Errorf("expected prepend of cluster domain, got %+v", options[0].DNSSearch)
- } else if options[0].DNSSearch[0] != ".svc."+kubelet.clusterDomain {
- t.Errorf("expected domain %s, got %s", ".svc."+kubelet.clusterDomain, options[0].DNSSearch)
- }
- if len(options[2].DNS) != 1 {
- t.Errorf("expected cluster nameserver only, got %+v", options[2].DNS)
- } else if options[2].DNS[0] != clusterNS {
- t.Errorf("expected nameserver %s, got %v", clusterNS, options[2].DNS[0])
- }
- if len(options[2].DNSSearch) != expLength {
- t.Errorf("expected prepend of cluster domain, got %+v", options[2].DNSSearch)
- } else if options[2].DNSSearch[0] != ".svc."+kubelet.clusterDomain {
- t.Errorf("expected domain %s, got %s", ".svc."+kubelet.clusterDomain, options[0].DNSSearch)
- }
-}
diff --git a/pkg/kubelet/kubeletconfig/status/BUILD b/pkg/kubelet/kubeletconfig/status/BUILD
index 8118b051e8..6de1a105e3 100644
--- a/pkg/kubelet/kubeletconfig/status/BUILD
+++ b/pkg/kubelet/kubeletconfig/status/BUILD
@@ -10,8 +10,8 @@ go_library(
srcs = ["status.go"],
importpath = "k8s.io/kubernetes/pkg/kubelet/kubeletconfig/status",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/kubelet/kubeletconfig/util/equal:go_default_library",
"//pkg/kubelet/kubeletconfig/util/log:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
diff --git a/pkg/kubelet/kubeletconfig/status/status.go b/pkg/kubelet/kubeletconfig/status/status.go
index fa073a78e1..b83e6891d7 100644
--- a/pkg/kubelet/kubeletconfig/status/status.go
+++ b/pkg/kubelet/kubeletconfig/status/status.go
@@ -26,8 +26,8 @@ import (
kuberuntime "k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/strategicpatch"
clientset "k8s.io/client-go/kubernetes"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ api "k8s.io/kubernetes/pkg/apis/core"
utilequal "k8s.io/kubernetes/pkg/kubelet/kubeletconfig/util/equal"
utillog "k8s.io/kubernetes/pkg/kubelet/kubeletconfig/util/log"
)
diff --git a/pkg/kubelet/kubeletconfig/util/codec/BUILD b/pkg/kubelet/kubeletconfig/util/codec/BUILD
index 4d6c6716c5..50b123e7a3 100644
--- a/pkg/kubelet/kubeletconfig/util/codec/BUILD
+++ b/pkg/kubelet/kubeletconfig/util/codec/BUILD
@@ -10,8 +10,8 @@ go_library(
srcs = ["codec.go"],
importpath = "k8s.io/kubernetes/pkg/kubelet/kubeletconfig/util/codec",
deps = [
- "//pkg/api/install:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//pkg/kubelet/apis/kubeletconfig:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
diff --git a/pkg/kubelet/kubeletconfig/util/codec/codec.go b/pkg/kubelet/kubeletconfig/util/codec/codec.go
index 6a714a95b3..3316f955af 100644
--- a/pkg/kubelet/kubeletconfig/util/codec/codec.go
+++ b/pkg/kubelet/kubeletconfig/util/codec/codec.go
@@ -20,7 +20,7 @@ import (
"fmt"
// ensure the core apis are installed
- _ "k8s.io/kubernetes/pkg/api/install"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/serializer"
diff --git a/pkg/kubelet/kuberuntime/BUILD b/pkg/kubelet/kuberuntime/BUILD
index 2cdf367b62..e46a4dcc41 100644
--- a/pkg/kubelet/kuberuntime/BUILD
+++ b/pkg/kubelet/kuberuntime/BUILD
@@ -26,7 +26,7 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/kubelet/kuberuntime",
deps = [
"//pkg/api/legacyscheme:go_default_library",
- "//pkg/api/v1/helper:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
"//pkg/credentialprovider:go_default_library",
"//pkg/kubelet/apis/cri:go_default_library",
"//pkg/kubelet/apis/cri/v1alpha1/runtime:go_default_library",
diff --git a/pkg/kubelet/kuberuntime/helpers.go b/pkg/kubelet/kuberuntime/helpers.go
index 2ecc2e81ed..0aa1e47d1a 100644
--- a/pkg/kubelet/kuberuntime/helpers.go
+++ b/pkg/kubelet/kuberuntime/helpers.go
@@ -25,7 +25,7 @@ import (
"github.com/golang/glog"
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/types"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
runtimeapi "k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1/runtime"
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
)
diff --git a/pkg/kubelet/mountpod/BUILD b/pkg/kubelet/mountpod/BUILD
new file mode 100644
index 0000000000..d21981739a
--- /dev/null
+++ b/pkg/kubelet/mountpod/BUILD
@@ -0,0 +1,45 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
+
+go_library(
+ name = "go_default_library",
+ srcs = ["mount_pod.go"],
+ importpath = "k8s.io/kubernetes/pkg/kubelet/mountpod",
+ visibility = ["//visibility:public"],
+ deps = [
+ "//pkg/kubelet/config:go_default_library",
+ "//pkg/kubelet/pod:go_default_library",
+ "//pkg/util/strings:go_default_library",
+ "//vendor/k8s.io/api/core/v1:go_default_library",
+ ],
+)
+
+go_test(
+ name = "go_default_test",
+ srcs = ["mount_pod_test.go"],
+ importpath = "k8s.io/kubernetes/pkg/kubelet/mountpod",
+ library = ":go_default_library",
+ deps = [
+ "//pkg/kubelet/configmap:go_default_library",
+ "//pkg/kubelet/pod:go_default_library",
+ "//pkg/kubelet/pod/testing:go_default_library",
+ "//pkg/kubelet/secret:go_default_library",
+ "//vendor/github.com/golang/glog:go_default_library",
+ "//vendor/k8s.io/api/core/v1:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
+ "//vendor/k8s.io/client-go/util/testing:go_default_library",
+ ],
+)
+
+filegroup(
+ name = "package-srcs",
+ srcs = glob(["**"]),
+ tags = ["automanaged"],
+ visibility = ["//visibility:private"],
+)
+
+filegroup(
+ name = "all-srcs",
+ srcs = [":package-srcs"],
+ tags = ["automanaged"],
+ visibility = ["//visibility:public"],
+)
diff --git a/pkg/kubelet/mountpod/mount_pod.go b/pkg/kubelet/mountpod/mount_pod.go
new file mode 100644
index 0000000000..6c7afda481
--- /dev/null
+++ b/pkg/kubelet/mountpod/mount_pod.go
@@ -0,0 +1,120 @@
+/*
+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 mountpod
+
+import (
+ "encoding/json"
+ "fmt"
+ "io/ioutil"
+ "os"
+ "path"
+
+ "k8s.io/api/core/v1"
+ "k8s.io/kubernetes/pkg/kubelet/config"
+ kubepod "k8s.io/kubernetes/pkg/kubelet/pod"
+ "k8s.io/kubernetes/pkg/util/strings"
+)
+
+// Manager is an interface that tracks pods with mount utilities for individual
+// volume plugins.
+type Manager interface {
+ GetMountPod(pluginName string) (pod *v1.Pod, container string, err error)
+}
+
+// basicManager is simple implementation of Manager. Pods with mount utilities
+// are registered by placing a JSON file into
+// /var/lib/kubelet/plugin-containers/.json and this manager just
+// finds them there.
+type basicManager struct {
+ registrationDirectory string
+ podManager kubepod.Manager
+}
+
+// volumePluginRegistration specified format of the json files placed in
+// /var/lib/kubelet/plugin-containers/
+type volumePluginRegistration struct {
+ PodName string `json:"podName"`
+ PodNamespace string `json:"podNamespace"`
+ PodUID string `json:"podUID"`
+ ContainerName string `json:"containerName"`
+}
+
+// NewManager returns a new mount pod manager.
+func NewManager(rootDirectory string, podManager kubepod.Manager) (Manager, error) {
+ regPath := path.Join(rootDirectory, config.DefaultKubeletPluginContainersDirName)
+
+ // Create the directory on startup
+ os.MkdirAll(regPath, 0700)
+
+ return &basicManager{
+ registrationDirectory: regPath,
+ podManager: podManager,
+ }, nil
+}
+
+func (m *basicManager) getVolumePluginRegistrationPath(pluginName string) string {
+ // sanitize plugin name so it does not escape directory
+ safePluginName := strings.EscapePluginName(pluginName) + ".json"
+ return path.Join(m.registrationDirectory, safePluginName)
+}
+
+func (m *basicManager) GetMountPod(pluginName string) (pod *v1.Pod, containerName string, err error) {
+ // Read /var/lib/kubelet/plugin-containers/.json
+ regPath := m.getVolumePluginRegistrationPath(pluginName)
+ regBytes, err := ioutil.ReadFile(regPath)
+ if err != nil {
+ if os.IsNotExist(err) {
+ // No pod is registered for this plugin
+ return nil, "", nil
+ }
+ return nil, "", fmt.Errorf("cannot read %s: %v", regPath, err)
+ }
+
+ // Parse json
+ var reg volumePluginRegistration
+ if err := json.Unmarshal(regBytes, ®); err != nil {
+ return nil, "", fmt.Errorf("unable to parse %s: %s", regPath, err)
+ }
+ if len(reg.ContainerName) == 0 {
+ return nil, "", fmt.Errorf("unable to parse %s: \"containerName\" is not set", regPath)
+ }
+ if len(reg.PodUID) == 0 {
+ return nil, "", fmt.Errorf("unable to parse %s: \"podUID\" is not set", regPath)
+ }
+ if len(reg.PodNamespace) == 0 {
+ return nil, "", fmt.Errorf("unable to parse %s: \"podNamespace\" is not set", regPath)
+ }
+ if len(reg.PodName) == 0 {
+ return nil, "", fmt.Errorf("unable to parse %s: \"podName\" is not set", regPath)
+ }
+
+ pod, ok := m.podManager.GetPodByName(reg.PodNamespace, reg.PodName)
+ if !ok {
+ return nil, "", fmt.Errorf("unable to process %s: pod %s/%s not found", regPath, reg.PodNamespace, reg.PodName)
+ }
+ if string(pod.UID) != reg.PodUID {
+ return nil, "", fmt.Errorf("unable to process %s: pod %s/%s has unexpected UID", regPath, reg.PodNamespace, reg.PodName)
+ }
+ // make sure that reg.ContainerName exists in the pod
+ for i := range pod.Spec.Containers {
+ if pod.Spec.Containers[i].Name == reg.ContainerName {
+ return pod, reg.ContainerName, nil
+ }
+ }
+ return nil, "", fmt.Errorf("unable to process %s: pod %s/%s has no container named %q", regPath, reg.PodNamespace, reg.PodName, reg.ContainerName)
+
+}
diff --git a/pkg/kubelet/mountpod/mount_pod_test.go b/pkg/kubelet/mountpod/mount_pod_test.go
new file mode 100644
index 0000000000..3f84739fff
--- /dev/null
+++ b/pkg/kubelet/mountpod/mount_pod_test.go
@@ -0,0 +1,160 @@
+/*
+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 mountpod
+
+import (
+ "io/ioutil"
+ "os"
+ "path"
+ "testing"
+
+ "github.com/golang/glog"
+
+ "k8s.io/api/core/v1"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ utiltesting "k8s.io/client-go/util/testing"
+ "k8s.io/kubernetes/pkg/kubelet/configmap"
+ kubepod "k8s.io/kubernetes/pkg/kubelet/pod"
+ podtest "k8s.io/kubernetes/pkg/kubelet/pod/testing"
+ "k8s.io/kubernetes/pkg/kubelet/secret"
+)
+
+func TestGetVolumeExec(t *testing.T) {
+ // prepare PodManager
+ pods := []*v1.Pod{
+ {
+ ObjectMeta: metav1.ObjectMeta{
+ UID: "12345678",
+ Name: "foo",
+ Namespace: "bar",
+ },
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {Name: "baz"},
+ },
+ },
+ },
+ }
+ fakeSecretManager := secret.NewFakeManager()
+ fakeConfigMapManager := configmap.NewFakeManager()
+ podManager := kubepod.NewBasicPodManager(
+ podtest.NewFakeMirrorClient(), fakeSecretManager, fakeConfigMapManager)
+ podManager.SetPods(pods)
+
+ // Prepare fake /var/lib/kubelet
+ basePath, err := utiltesting.MkTmpdir("kubelet")
+ if err != nil {
+ t.Fatal(err)
+ }
+ defer os.RemoveAll(basePath)
+ regPath := path.Join(basePath, "plugin-containers")
+
+ mgr, err := NewManager(basePath, podManager)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ tests := []struct {
+ name string
+ json string
+ expectError bool
+ }{
+ {
+ "invalid json",
+ "{{{}",
+ true,
+ },
+ {
+ "missing json",
+ "", // this means no json file should be created
+ false,
+ },
+ {
+ "missing podNamespace",
+ `{"podName": "foo", "podUID": "87654321", "containerName": "baz"}`,
+ true,
+ },
+ {
+ "missing podName",
+ `{"podNamespace": "bar", "podUID": "87654321", "containerName": "baz"}`,
+ true,
+ },
+ {
+ "missing containerName",
+ `{"podNamespace": "bar", "podName": "foo", "podUID": "87654321"}`,
+ true,
+ },
+ {
+ "missing podUID",
+ `{"podNamespace": "bar", "podName": "foo", "containerName": "baz"}`,
+ true,
+ },
+ {
+ "missing pod",
+ `{"podNamespace": "bar", "podName": "non-existing-pod", "podUID": "12345678", "containerName": "baz"}`,
+ true,
+ },
+ {
+ "invalid uid",
+ `{"podNamespace": "bar", "podName": "foo", "podUID": "87654321", "containerName": "baz"}`,
+ true,
+ },
+ {
+ "invalid container",
+ `{"podNamespace": "bar", "podName": "foo", "podUID": "12345678", "containerName": "invalid"}`,
+ true,
+ },
+ {
+ "valid pod",
+ `{"podNamespace": "bar", "podName": "foo", "podUID": "12345678", "containerName": "baz"}`,
+ false,
+ },
+ }
+ for _, test := range tests {
+ p := path.Join(regPath, "kubernetes.io~glusterfs.json")
+ if len(test.json) > 0 {
+ if err := ioutil.WriteFile(p, []byte(test.json), 0600); err != nil {
+ t.Errorf("test %q: error writing %s: %v", test.name, p, err)
+ continue
+ }
+ } else {
+ // "" means no JSON file
+ os.Remove(p)
+ }
+ pod, container, err := mgr.GetMountPod("kubernetes.io/glusterfs")
+ if err != nil {
+ glog.V(5).Infof("test %q returned error %s", test.name, err)
+ }
+ if err == nil && test.expectError {
+ t.Errorf("test %q: expected error, got none", test.name)
+ }
+ if err != nil && !test.expectError {
+ t.Errorf("test %q: unexpected error: %v", test.name, err)
+ }
+
+ if err == nil {
+ // Pod must be returned when the json file was not empty
+ if pod == nil && len(test.json) != 0 {
+ t.Errorf("test %q: expected exec, got nil", test.name)
+ }
+ // Both pod and container must be returned
+ if pod != nil && len(container) == 0 {
+ t.Errorf("test %q: expected container name, got %q", test.name, container)
+ }
+ }
+ }
+}
diff --git a/pkg/kubelet/network/cni/cni.go b/pkg/kubelet/network/cni/cni.go
index 5649cc1352..540be4b70c 100644
--- a/pkg/kubelet/network/cni/cni.go
+++ b/pkg/kubelet/network/cni/cni.go
@@ -282,7 +282,7 @@ func (plugin *cniNetworkPlugin) deleteFromNetwork(network *cniNetwork, podName s
func (plugin *cniNetworkPlugin) buildCNIRuntimeConf(podName string, podNs string, podSandboxID kubecontainer.ContainerID, podNetnsPath string) (*libcni.RuntimeConf, error) {
glog.V(4).Infof("Got netns path %v", podNetnsPath)
- glog.V(4).Infof("Using netns path %v", podNs)
+ glog.V(4).Infof("Using podns path %v", podNs)
rt := &libcni.RuntimeConf{
ContainerID: podSandboxID.ID,
diff --git a/pkg/kubelet/network/kubenet/kubenet_linux.go b/pkg/kubelet/network/kubenet/kubenet_linux.go
index fce972d004..8551946d49 100644
--- a/pkg/kubelet/network/kubenet/kubenet_linux.go
+++ b/pkg/kubelet/network/kubenet/kubenet_linux.go
@@ -304,6 +304,11 @@ func (plugin *kubenetNetworkPlugin) Capabilities() utilsets.Int {
// TODO: Don't pass the pod to this method, it only needs it for bandwidth
// shaping and hostport management.
func (plugin *kubenetNetworkPlugin) setup(namespace string, name string, id kubecontainer.ContainerID, pod *v1.Pod, annotations map[string]string) error {
+ // Disable DAD so we skip the kernel delay on bringing up new interfaces.
+ if err := plugin.disableContainerDAD(id); err != nil {
+ glog.V(3).Infof("Failed to disable DAD in container: %v", err)
+ }
+
// Bring up container loopback interface
if _, err := plugin.addContainerToNetwork(plugin.loConfig, "lo", namespace, name, id); err != nil {
return err
@@ -820,3 +825,43 @@ func (plugin *kubenetNetworkPlugin) syncEbtablesDedupRules(macAddr net.HardwareA
return
}
}
+
+// disableContainerDAD disables duplicate address detection in the container.
+// DAD has a negative affect on pod creation latency, since we have to wait
+// a second or more for the addresses to leave the "tentative" state. Since
+// we're sure there won't be an address conflict (since we manage them manually),
+// this is safe. See issue 54651.
+//
+// This sets net.ipv6.conf.default.dad_transmits to 0. It must be run *before*
+// the CNI plugins are run.
+func (plugin *kubenetNetworkPlugin) disableContainerDAD(id kubecontainer.ContainerID) error {
+ key := "net/ipv6/conf/default/dad_transmits"
+
+ sysctlBin, err := plugin.execer.LookPath("sysctl")
+ if err != nil {
+ return fmt.Errorf("Could not find sysctl binary: %s", err)
+ }
+
+ netnsPath, err := plugin.host.GetNetNS(id.ID)
+ if err != nil {
+ return fmt.Errorf("Failed to get netns: %v", err)
+ }
+ if netnsPath == "" {
+ return fmt.Errorf("Pod has no network namespace")
+ }
+
+ // If the sysctl doesn't exist, it means ipv6 is disabled; log and move on
+ if _, err := plugin.sysctl.GetSysctl(key); err != nil {
+ return fmt.Errorf("Ipv6 not enabled: %v", err)
+ }
+
+ output, err := plugin.execer.Command(plugin.nsenterPath,
+ fmt.Sprintf("--net=%s", netnsPath), "-F", "--",
+ sysctlBin, "-w", fmt.Sprintf("%s=%s", key, "0"),
+ ).CombinedOutput()
+ if err != nil {
+ return fmt.Errorf("Failed to write sysctl: output: %s error: %s",
+ output, err)
+ }
+ return nil
+}
diff --git a/pkg/kubelet/networks.go b/pkg/kubelet/networks.go
deleted file mode 100644
index 84bcdb8fa0..0000000000
--- a/pkg/kubelet/networks.go
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
-Copyright 2014 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 kubelet
-
-import (
- "k8s.io/api/core/v1"
- clientset "k8s.io/client-go/kubernetes"
- kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
- "k8s.io/kubernetes/pkg/kubelet/network"
-)
-
-// This just exports required functions from kubelet proper, for use by network
-// plugins.
-// TODO(#35457): get rid of this backchannel to the kubelet. The scope of
-// the back channel is restricted to host-ports/testing, and restricted
-// to kubenet. No other network plugin wrapper needs it. Other plugins
-// only require a way to access namespace information, which they can do
-// directly through the methods implemented by criNetworkHost.
-type networkHost struct {
- kubelet *Kubelet
-}
-
-func (nh *networkHost) GetPodByName(name, namespace string) (*v1.Pod, bool) {
- return nh.kubelet.GetPodByName(name, namespace)
-}
-
-func (nh *networkHost) GetKubeClient() clientset.Interface {
- return nh.kubelet.kubeClient
-}
-
-func (nh *networkHost) GetRuntime() kubecontainer.Runtime {
- return nh.kubelet.GetRuntime()
-}
-
-func (nh *networkHost) SupportsLegacyFeatures() bool {
- return true
-}
-
-// criNetworkHost implements the part of network.Host required by the
-// cri (NamespaceGetter). It leechs off networkHost for all other
-// methods, because networkHost is slated for deletion.
-type criNetworkHost struct {
- *networkHost
- // criNetworkHost currently support legacy features. Hence no need to support PortMappingGetter
- *network.NoopPortMappingGetter
-}
-
-// GetNetNS returns the network namespace of the given containerID.
-// This method satisfies the network.NamespaceGetter interface for
-// networkHost. It's only meant to be used from network plugins
-// that are directly invoked by the kubelet (aka: legacy, pre-cri).
-// Any network plugin invoked by a cri must implement NamespaceGetter
-// to talk directly to the runtime instead.
-func (c *criNetworkHost) GetNetNS(containerID string) (string, error) {
- return c.kubelet.GetRuntime().GetNetNS(kubecontainer.ContainerID{Type: "", ID: containerID})
-}
-
-// NoOpLegacyHost implements the network.LegacyHost interface for the remote
-// runtime shim by just returning empties. It doesn't support legacy features
-// like host port and bandwidth shaping.
-type NoOpLegacyHost struct{}
-
-// GetPodByName always returns "nil, true" for 'NoOpLegacyHost'
-func (n *NoOpLegacyHost) GetPodByName(namespace, name string) (*v1.Pod, bool) {
- return nil, true
-}
-
-// GetKubeClient always returns "nil" for 'NoOpLegacyHost'
-func (n *NoOpLegacyHost) GetKubeClient() clientset.Interface {
- return nil
-}
-
-// GetRuntime always returns "nil" for 'NoOpLegacyHost'
-func (n *NoOpLegacyHost) GetRuntime() kubecontainer.Runtime {
- return nil
-}
-
-// SupportsLegacyFeatures always returns "false" for 'NoOpLegacyHost'
-func (n *NoOpLegacyHost) SupportsLegacyFeatures() bool {
- return false
-}
diff --git a/pkg/kubelet/networks_test.go b/pkg/kubelet/networks_test.go
deleted file mode 100644
index 6c7c68f8a0..0000000000
--- a/pkg/kubelet/networks_test.go
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
-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 kubelet
-
-import (
- "testing"
-)
-
-func TestNetworkHostGetsPodNotFound(t *testing.T) {
- testKubelet := newTestKubelet(t, true)
- defer testKubelet.Cleanup()
- nh := networkHost{testKubelet.kubelet}
-
- actualPod, _ := nh.GetPodByName("", "")
- if actualPod != nil {
- t.Fatalf("Was expected nil, received %v instead", actualPod)
- }
-}
-
-func TestNetworkHostGetsKubeClient(t *testing.T) {
- testKubelet := newTestKubelet(t, true)
- defer testKubelet.Cleanup()
- nh := networkHost{testKubelet.kubelet}
-
- if nh.GetKubeClient() != testKubelet.fakeKubeClient {
- t.Fatalf("NetworkHost client does not match testKubelet's client")
- }
-}
-
-func TestNetworkHostGetsRuntime(t *testing.T) {
- testKubelet := newTestKubelet(t, true)
- defer testKubelet.Cleanup()
- nh := networkHost{testKubelet.kubelet}
-
- if nh.GetRuntime() != testKubelet.fakeRuntime {
- t.Fatalf("NetworkHost runtime does not match testKubelet's runtime")
- }
-}
-
-func TestNetworkHostSupportsLegacyFeatures(t *testing.T) {
- testKubelet := newTestKubelet(t, true)
- defer testKubelet.Cleanup()
- nh := networkHost{testKubelet.kubelet}
-
- if nh.SupportsLegacyFeatures() == false {
- t.Fatalf("SupportsLegacyFeatures should not be false")
- }
-}
-
-func TestNoOpHostGetsName(t *testing.T) {
- nh := NoOpLegacyHost{}
- pod, err := nh.GetPodByName("", "")
- if pod != nil && err != true {
- t.Fatalf("noOpLegacyHost getpodbyname expected to be nil and true")
- }
-}
-
-func TestNoOpHostGetsKubeClient(t *testing.T) {
- nh := NoOpLegacyHost{}
- if nh.GetKubeClient() != nil {
- t.Fatalf("noOpLegacyHost client expected to be nil")
- }
-}
-
-func TestNoOpHostGetsRuntime(t *testing.T) {
- nh := NoOpLegacyHost{}
- if nh.GetRuntime() != nil {
- t.Fatalf("noOpLegacyHost runtime expected to be nil")
- }
-}
-
-func TestNoOpHostSupportsLegacyFeatures(t *testing.T) {
- nh := NoOpLegacyHost{}
- if nh.SupportsLegacyFeatures() != false {
- t.Fatalf("noOpLegacyHost legacy features expected to be false")
- }
-}
diff --git a/pkg/kubelet/preemption/BUILD b/pkg/kubelet/preemption/BUILD
index 6812977818..736a457de1 100644
--- a/pkg/kubelet/preemption/BUILD
+++ b/pkg/kubelet/preemption/BUILD
@@ -11,8 +11,8 @@ go_library(
srcs = ["preemption.go"],
importpath = "k8s.io/kubernetes/pkg/kubelet/preemption",
deps = [
- "//pkg/api/v1/helper/qos:go_default_library",
"//pkg/api/v1/resource:go_default_library",
+ "//pkg/apis/core/v1/helper/qos:go_default_library",
"//pkg/features:go_default_library",
"//pkg/kubelet/events:go_default_library",
"//pkg/kubelet/eviction:go_default_library",
@@ -47,7 +47,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/kubelet/preemption",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/kubelet/types:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
diff --git a/pkg/kubelet/preemption/preemption.go b/pkg/kubelet/preemption/preemption.go
index fd144632fe..1f9214b830 100644
--- a/pkg/kubelet/preemption/preemption.go
+++ b/pkg/kubelet/preemption/preemption.go
@@ -24,8 +24,8 @@ import (
"k8s.io/api/core/v1"
utilfeature "k8s.io/apiserver/pkg/util/feature"
"k8s.io/client-go/tools/record"
- v1qos "k8s.io/kubernetes/pkg/api/v1/helper/qos"
"k8s.io/kubernetes/pkg/api/v1/resource"
+ v1qos "k8s.io/kubernetes/pkg/apis/core/v1/helper/qos"
"k8s.io/kubernetes/pkg/features"
"k8s.io/kubernetes/pkg/kubelet/events"
"k8s.io/kubernetes/pkg/kubelet/eviction"
diff --git a/pkg/kubelet/preemption/preemption_test.go b/pkg/kubelet/preemption/preemption_test.go
index 331b4f72a5..d142240c29 100644
--- a/pkg/kubelet/preemption/preemption_test.go
+++ b/pkg/kubelet/preemption/preemption_test.go
@@ -24,7 +24,7 @@ import (
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/tools/record"
- kubeapi "k8s.io/kubernetes/pkg/api"
+ kubeapi "k8s.io/kubernetes/pkg/apis/core"
kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
)
diff --git a/pkg/kubelet/qos/BUILD b/pkg/kubelet/qos/BUILD
index 7807bc798d..6160d7b413 100644
--- a/pkg/kubelet/qos/BUILD
+++ b/pkg/kubelet/qos/BUILD
@@ -25,7 +25,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/kubelet/qos",
deps = [
- "//pkg/api/v1/helper/qos:go_default_library",
+ "//pkg/apis/core/v1/helper/qos:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
],
)
diff --git a/pkg/kubelet/qos/policy.go b/pkg/kubelet/qos/policy.go
index 01125dd770..b7177d2a4f 100644
--- a/pkg/kubelet/qos/policy.go
+++ b/pkg/kubelet/qos/policy.go
@@ -18,7 +18,7 @@ package qos
import (
"k8s.io/api/core/v1"
- v1qos "k8s.io/kubernetes/pkg/api/v1/helper/qos"
+ v1qos "k8s.io/kubernetes/pkg/apis/core/v1/helper/qos"
)
const (
diff --git a/pkg/kubelet/server/BUILD b/pkg/kubelet/server/BUILD
index 3d6760bdfc..7584f70d52 100644
--- a/pkg/kubelet/server/BUILD
+++ b/pkg/kubelet/server/BUILD
@@ -15,9 +15,9 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/kubelet/server",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
- "//pkg/api/v1/validation:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/v1/validation:go_default_library",
"//pkg/kubelet/container:go_default_library",
"//pkg/kubelet/server/portforward:go_default_library",
"//pkg/kubelet/server/remotecommand:go_default_library",
@@ -59,8 +59,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/kubelet/server",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/install:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//pkg/kubelet/apis/stats/v1alpha1:go_default_library",
"//pkg/kubelet/cm:go_default_library",
"//pkg/kubelet/container:go_default_library",
diff --git a/pkg/kubelet/server/portforward/BUILD b/pkg/kubelet/server/portforward/BUILD
index 062f972a0a..190ff72197 100644
--- a/pkg/kubelet/server/portforward/BUILD
+++ b/pkg/kubelet/server/portforward/BUILD
@@ -16,7 +16,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/kubelet/server/portforward",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/httpstream:go_default_library",
@@ -36,7 +36,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/kubelet/server/portforward",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/httpstream:go_default_library",
],
)
diff --git a/pkg/kubelet/server/portforward/httpstream.go b/pkg/kubelet/server/portforward/httpstream.go
index 5f872c8201..919ed5a786 100644
--- a/pkg/kubelet/server/portforward/httpstream.go
+++ b/pkg/kubelet/server/portforward/httpstream.go
@@ -28,7 +28,7 @@ import (
"k8s.io/apimachinery/pkg/util/httpstream"
"k8s.io/apimachinery/pkg/util/httpstream/spdy"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"github.com/golang/glog"
)
diff --git a/pkg/kubelet/server/portforward/httpstream_test.go b/pkg/kubelet/server/portforward/httpstream_test.go
index ee5696d5a1..7f815036b9 100644
--- a/pkg/kubelet/server/portforward/httpstream_test.go
+++ b/pkg/kubelet/server/portforward/httpstream_test.go
@@ -22,7 +22,7 @@ import (
"time"
"k8s.io/apimachinery/pkg/util/httpstream"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func TestHTTPStreamReceived(t *testing.T) {
diff --git a/pkg/kubelet/server/portforward/websocket.go b/pkg/kubelet/server/portforward/websocket.go
index cb4bca0455..b445c922f6 100644
--- a/pkg/kubelet/server/portforward/websocket.go
+++ b/pkg/kubelet/server/portforward/websocket.go
@@ -32,7 +32,7 @@ import (
"k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/apiserver/pkg/server/httplog"
"k8s.io/apiserver/pkg/util/wsstream"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
const (
diff --git a/pkg/kubelet/server/remotecommand/BUILD b/pkg/kubelet/server/remotecommand/BUILD
index 8e340aeb5f..97da39d617 100644
--- a/pkg/kubelet/server/remotecommand/BUILD
+++ b/pkg/kubelet/server/remotecommand/BUILD
@@ -16,7 +16,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/kubelet/server/remotecommand",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
diff --git a/pkg/kubelet/server/remotecommand/httpstream.go b/pkg/kubelet/server/remotecommand/httpstream.go
index 9d4883212d..74f0595cf7 100644
--- a/pkg/kubelet/server/remotecommand/httpstream.go
+++ b/pkg/kubelet/server/remotecommand/httpstream.go
@@ -32,7 +32,7 @@ import (
"k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/apiserver/pkg/util/wsstream"
"k8s.io/client-go/tools/remotecommand"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"github.com/golang/glog"
)
diff --git a/pkg/kubelet/server/server.go b/pkg/kubelet/server/server.go
index aed6ecb117..d22096e48d 100644
--- a/pkg/kubelet/server/server.go
+++ b/pkg/kubelet/server/server.go
@@ -50,9 +50,9 @@ import (
"k8s.io/apiserver/pkg/server/httplog"
"k8s.io/apiserver/pkg/util/flushwriter"
"k8s.io/client-go/tools/remotecommand"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
- "k8s.io/kubernetes/pkg/api/v1/validation"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/v1/validation"
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
"k8s.io/kubernetes/pkg/kubelet/server/portforward"
remotecommandserver "k8s.io/kubernetes/pkg/kubelet/server/remotecommand"
diff --git a/pkg/kubelet/server/server_test.go b/pkg/kubelet/server/server_test.go
index daa1a91600..c1b068f231 100644
--- a/pkg/kubelet/server/server_test.go
+++ b/pkg/kubelet/server/server_test.go
@@ -47,10 +47,10 @@ import (
"k8s.io/apiserver/pkg/authorization/authorizer"
"k8s.io/client-go/tools/remotecommand"
utiltesting "k8s.io/client-go/util/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
statsapi "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1"
// Do some initialization to decode the query parameters correctly.
- _ "k8s.io/kubernetes/pkg/api/install"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
"k8s.io/kubernetes/pkg/kubelet/cm"
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
kubecontainertesting "k8s.io/kubernetes/pkg/kubelet/container/testing"
diff --git a/pkg/kubelet/server/streaming/BUILD b/pkg/kubelet/server/streaming/BUILD
index f8d34f1856..70fe31d096 100644
--- a/pkg/kubelet/server/streaming/BUILD
+++ b/pkg/kubelet/server/streaming/BUILD
@@ -37,7 +37,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/kubelet/server/streaming",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/kubelet/apis/cri/v1alpha1/runtime:go_default_library",
"//pkg/kubelet/server/portforward:go_default_library",
"//vendor/github.com/stretchr/testify/assert:go_default_library",
diff --git a/pkg/kubelet/server/streaming/server_test.go b/pkg/kubelet/server/streaming/server_test.go
index 835125151f..77ccc721cd 100644
--- a/pkg/kubelet/server/streaming/server_test.go
+++ b/pkg/kubelet/server/streaming/server_test.go
@@ -33,7 +33,7 @@ import (
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/tools/remotecommand"
"k8s.io/client-go/transport/spdy"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
runtimeapi "k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1/runtime"
kubeletportforward "k8s.io/kubernetes/pkg/kubelet/server/portforward"
)
diff --git a/pkg/kubelet/status/BUILD b/pkg/kubelet/status/BUILD
index 52cc538bcf..0483a6a3b6 100644
--- a/pkg/kubelet/status/BUILD
+++ b/pkg/kubelet/status/BUILD
@@ -40,8 +40,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/kubelet/status",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/v1/pod:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/kubelet/configmap:go_default_library",
"//pkg/kubelet/container:go_default_library",
"//pkg/kubelet/pod:go_default_library",
diff --git a/pkg/kubelet/status/status_manager_test.go b/pkg/kubelet/status/status_manager_test.go
index dff67680e0..1d332b221f 100644
--- a/pkg/kubelet/status/status_manager_test.go
+++ b/pkg/kubelet/status/status_manager_test.go
@@ -34,8 +34,8 @@ import (
clientset "k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes/fake"
core "k8s.io/client-go/testing"
- "k8s.io/kubernetes/pkg/api"
podutil "k8s.io/kubernetes/pkg/api/v1/pod"
+ api "k8s.io/kubernetes/pkg/apis/core"
kubeconfigmap "k8s.io/kubernetes/pkg/kubelet/configmap"
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
kubepod "k8s.io/kubernetes/pkg/kubelet/pod"
diff --git a/pkg/kubelet/sysctl/BUILD b/pkg/kubelet/sysctl/BUILD
index b5d2a4e847..7d7cc778dc 100644
--- a/pkg/kubelet/sysctl/BUILD
+++ b/pkg/kubelet/sysctl/BUILD
@@ -15,8 +15,8 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/kubelet/sysctl",
deps = [
- "//pkg/api/v1/helper:go_default_library",
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//pkg/apis/extensions/validation:go_default_library",
"//pkg/kubelet/container:go_default_library",
"//pkg/kubelet/lifecycle:go_default_library",
diff --git a/pkg/kubelet/sysctl/runtime.go b/pkg/kubelet/sysctl/runtime.go
index 36d8e1db3a..cd8e34f7c5 100644
--- a/pkg/kubelet/sysctl/runtime.go
+++ b/pkg/kubelet/sysctl/runtime.go
@@ -19,7 +19,7 @@ package sysctl
import (
"fmt"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
"k8s.io/kubernetes/pkg/kubelet/container"
"k8s.io/kubernetes/pkg/kubelet/lifecycle"
)
diff --git a/pkg/kubelet/sysctl/whitelist.go b/pkg/kubelet/sysctl/whitelist.go
index d78c7b7d10..9bb1086a55 100644
--- a/pkg/kubelet/sysctl/whitelist.go
+++ b/pkg/kubelet/sysctl/whitelist.go
@@ -21,8 +21,8 @@ import (
"strings"
"k8s.io/api/core/v1"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
- "k8s.io/kubernetes/pkg/api/validation"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
+ "k8s.io/kubernetes/pkg/apis/core/validation"
extvalidation "k8s.io/kubernetes/pkg/apis/extensions/validation"
"k8s.io/kubernetes/pkg/kubelet/lifecycle"
)
diff --git a/pkg/kubelet/types/BUILD b/pkg/kubelet/types/BUILD
index 42d594fe07..515d1e8a09 100644
--- a/pkg/kubelet/types/BUILD
+++ b/pkg/kubelet/types/BUILD
@@ -17,7 +17,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/kubelet/types",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
diff --git a/pkg/kubelet/types/pod_update.go b/pkg/kubelet/types/pod_update.go
index 2b95b3b187..7d1f481dc3 100644
--- a/pkg/kubelet/types/pod_update.go
+++ b/pkg/kubelet/types/pod_update.go
@@ -21,7 +21,7 @@ import (
"k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- kubeapi "k8s.io/kubernetes/pkg/api"
+ kubeapi "k8s.io/kubernetes/pkg/apis/core"
)
const (
diff --git a/pkg/kubelet/volume_host.go b/pkg/kubelet/volume_host.go
index 26323b7d84..2519451264 100644
--- a/pkg/kubelet/volume_host.go
+++ b/pkg/kubelet/volume_host.go
@@ -20,11 +20,17 @@ import (
"fmt"
"net"
+ "github.com/golang/glog"
+
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/types"
+ utilfeature "k8s.io/apiserver/pkg/util/feature"
clientset "k8s.io/client-go/kubernetes"
"k8s.io/kubernetes/pkg/cloudprovider"
+ "k8s.io/kubernetes/pkg/features"
"k8s.io/kubernetes/pkg/kubelet/configmap"
+ "k8s.io/kubernetes/pkg/kubelet/container"
+ "k8s.io/kubernetes/pkg/kubelet/mountpod"
"k8s.io/kubernetes/pkg/kubelet/secret"
"k8s.io/kubernetes/pkg/util/io"
"k8s.io/kubernetes/pkg/util/mount"
@@ -43,11 +49,17 @@ func NewInitializedVolumePluginMgr(
configMapManager configmap.Manager,
plugins []volume.VolumePlugin,
prober volume.DynamicPluginProber) (*volume.VolumePluginMgr, error) {
+
+ mountPodManager, err := mountpod.NewManager(kubelet.getRootDir(), kubelet.podManager)
+ if err != nil {
+ return nil, err
+ }
kvh := &kubeletVolumeHost{
kubelet: kubelet,
volumePluginMgr: volume.VolumePluginMgr{},
secretManager: secretManager,
configMapManager: configMapManager,
+ mountPodManager: mountPodManager,
}
if err := kvh.volumePluginMgr.InitPlugins(plugins, prober, kvh); err != nil {
@@ -71,6 +83,7 @@ type kubeletVolumeHost struct {
volumePluginMgr volume.VolumePluginMgr
secretManager secret.Manager
configMapManager configmap.Manager
+ mountPodManager mountpod.Manager
}
func (kvh *kubeletVolumeHost) GetPodVolumeDir(podUID types.UID, pluginName string, volumeName string) string {
@@ -119,7 +132,16 @@ func (kvh *kubeletVolumeHost) GetCloudProvider() cloudprovider.Interface {
}
func (kvh *kubeletVolumeHost) GetMounter(pluginName string) mount.Interface {
- return kvh.kubelet.mounter
+ exec, err := kvh.getMountExec(pluginName)
+ if err != nil {
+ glog.V(2).Info("Error finding mount pod for plugin %s: %s", pluginName, err.Error())
+ // Use the default mounter
+ exec = nil
+ }
+ if exec == nil {
+ return kvh.kubelet.mounter
+ }
+ return mount.NewExecMounter(exec, kvh.kubelet.mounter)
}
func (kvh *kubeletVolumeHost) GetWriter() io.Writer {
@@ -159,5 +181,56 @@ func (kvh *kubeletVolumeHost) GetNodeLabels() (map[string]string, error) {
}
func (kvh *kubeletVolumeHost) GetExec(pluginName string) mount.Exec {
- return mount.NewOsExec()
+ exec, err := kvh.getMountExec(pluginName)
+ if err != nil {
+ glog.V(2).Info("Error finding mount pod for plugin %s: %s", pluginName, err.Error())
+ // Use the default exec
+ exec = nil
+ }
+ if exec == nil {
+ return mount.NewOsExec()
+ }
+ return exec
+}
+
+// getMountExec returns mount.Exec implementation that leads to pod with mount
+// utilities. It returns nil,nil when there is no such pod and default mounter /
+// os.Exec should be used.
+func (kvh *kubeletVolumeHost) getMountExec(pluginName string) (mount.Exec, error) {
+ if !utilfeature.DefaultFeatureGate.Enabled(features.MountContainers) {
+ glog.V(5).Infof("using default mounter/exec for %s", pluginName)
+ return nil, nil
+ }
+
+ pod, container, err := kvh.mountPodManager.GetMountPod(pluginName)
+ if err != nil {
+ return nil, err
+ }
+ if pod == nil {
+ // Use default mounter/exec for this plugin
+ glog.V(5).Infof("using default mounter/exec for %s", pluginName)
+ return nil, nil
+ }
+ glog.V(5).Infof("using container %s/%s/%s to execute mount utilites for %s", pod.Namespace, pod.Name, container, pluginName)
+ return &containerExec{
+ pod: pod,
+ containerName: container,
+ kl: kvh.kubelet,
+ }, nil
+}
+
+// containerExec is implementation of mount.Exec that executes commands in given
+// container in given pod.
+type containerExec struct {
+ pod *v1.Pod
+ containerName string
+ kl *Kubelet
+}
+
+var _ mount.Exec = &containerExec{}
+
+func (e *containerExec) Run(cmd string, args ...string) ([]byte, error) {
+ cmdline := append([]string{cmd}, args...)
+ glog.V(5).Infof("Exec mounter running in pod %s/%s/%s: %v", e.pod.Namespace, e.pod.Name, e.containerName, cmdline)
+ return e.kl.RunInContainer(container.GetPodFullName(e.pod), e.pod.UID, e.containerName, cmdline)
}
diff --git a/pkg/kubemark/BUILD b/pkg/kubemark/BUILD
index 4cb0026ab5..a11620af86 100644
--- a/pkg/kubemark/BUILD
+++ b/pkg/kubemark/BUILD
@@ -17,7 +17,7 @@ go_library(
"//cmd/kube-proxy/app:go_default_library",
"//cmd/kubelet/app:go_default_library",
"//cmd/kubelet/app/options:go_default_library",
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/controller:go_default_library",
"//pkg/kubelet:go_default_library",
@@ -25,7 +25,7 @@ go_library(
"//pkg/kubelet/cadvisor:go_default_library",
"//pkg/kubelet/cm:go_default_library",
"//pkg/kubelet/container/testing:go_default_library",
- "//pkg/kubelet/dockershim/libdocker:go_default_library",
+ "//pkg/kubelet/dockershim:go_default_library",
"//pkg/kubelet/types:go_default_library",
"//pkg/proxy:go_default_library",
"//pkg/proxy/config:go_default_library",
diff --git a/pkg/kubemark/hollow_kubelet.go b/pkg/kubemark/hollow_kubelet.go
index 4fa656b479..da805d5356 100644
--- a/pkg/kubemark/hollow_kubelet.go
+++ b/pkg/kubemark/hollow_kubelet.go
@@ -28,7 +28,7 @@ import (
"k8s.io/kubernetes/pkg/kubelet/cadvisor"
"k8s.io/kubernetes/pkg/kubelet/cm"
containertest "k8s.io/kubernetes/pkg/kubelet/container/testing"
- "k8s.io/kubernetes/pkg/kubelet/dockershim/libdocker"
+ "k8s.io/kubernetes/pkg/kubelet/dockershim"
kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
kubeio "k8s.io/kubernetes/pkg/util/io"
"k8s.io/kubernetes/pkg/util/mount"
@@ -50,7 +50,7 @@ func NewHollowKubelet(
nodeName string,
client *clientset.Clientset,
cadvisorInterface cadvisor.Interface,
- dockerClient libdocker.Interface,
+ dockerClientConfig *dockershim.ClientConfig,
kubeletPort, kubeletReadOnlyPort int,
containerManager cm.ContainerManager,
maxPods int, podsPerCore int,
@@ -66,18 +66,18 @@ func NewHollowKubelet(
volumePlugins := empty_dir.ProbeVolumePlugins()
volumePlugins = append(volumePlugins, secret.ProbeVolumePlugins()...)
d := &kubelet.Dependencies{
- KubeClient: client,
- HeartbeatClient: client.CoreV1(),
- DockerClient: dockerClient,
- CAdvisorInterface: cadvisorInterface,
- Cloud: nil,
- OSInterface: &containertest.FakeOS{},
- ContainerManager: containerManager,
- VolumePlugins: volumePlugins,
- TLSOptions: nil,
- OOMAdjuster: oom.NewFakeOOMAdjuster(),
- Writer: &kubeio.StdWriter{},
- Mounter: mount.New("" /* default mount path */),
+ KubeClient: client,
+ HeartbeatClient: client.CoreV1(),
+ DockerClientConfig: dockerClientConfig,
+ CAdvisorInterface: cadvisorInterface,
+ Cloud: nil,
+ OSInterface: &containertest.FakeOS{},
+ ContainerManager: containerManager,
+ VolumePlugins: volumePlugins,
+ TLSOptions: nil,
+ OOMAdjuster: oom.NewFakeOOMAdjuster(),
+ Writer: &kubeio.StdWriter{},
+ Mounter: mount.New("" /* default mount path */),
}
return &HollowKubelet{
diff --git a/pkg/kubemark/hollow_proxy.go b/pkg/kubemark/hollow_proxy.go
index 861509cc1f..27ca112892 100644
--- a/pkg/kubemark/hollow_proxy.go
+++ b/pkg/kubemark/hollow_proxy.go
@@ -27,7 +27,7 @@ import (
v1core "k8s.io/client-go/kubernetes/typed/core/v1"
"k8s.io/client-go/tools/record"
proxyapp "k8s.io/kubernetes/cmd/kube-proxy/app"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/pkg/proxy"
proxyconfig "k8s.io/kubernetes/pkg/proxy/config"
diff --git a/pkg/master/BUILD b/pkg/master/BUILD
index d18dac2825..639949d4d9 100644
--- a/pkg/master/BUILD
+++ b/pkg/master/BUILD
@@ -18,8 +18,6 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/master",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/install:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/apis/admission/install:go_default_library",
"//pkg/apis/admissionregistration/install:go_default_library",
@@ -30,6 +28,8 @@ go_library(
"//pkg/apis/batch/install:go_default_library",
"//pkg/apis/certificates/install:go_default_library",
"//pkg/apis/componentconfig/install:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//pkg/apis/extensions/install:go_default_library",
"//pkg/apis/imagepolicy/install:go_default_library",
"//pkg/apis/networking/install:go_default_library",
@@ -119,13 +119,13 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/master",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/apis/apps:go_default_library",
"//pkg/apis/autoscaling:go_default_library",
"//pkg/apis/batch:go_default_library",
"//pkg/apis/certificates:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/apis/rbac:go_default_library",
"//pkg/client/clientset_generated/internalclientset/fake:go_default_library",
diff --git a/pkg/master/client_ca_hook.go b/pkg/master/client_ca_hook.go
index 3a2780c92a..fedfdca35e 100644
--- a/pkg/master/client_ca_hook.go
+++ b/pkg/master/client_ca_hook.go
@@ -26,7 +26,7 @@ import (
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/apimachinery/pkg/util/wait"
genericapiserver "k8s.io/apiserver/pkg/server"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
coreclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
)
diff --git a/pkg/master/client_ca_hook_test.go b/pkg/master/client_ca_hook_test.go
index 02dff52c13..64aa61712c 100644
--- a/pkg/master/client_ca_hook_test.go
+++ b/pkg/master/client_ca_hook_test.go
@@ -24,7 +24,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/diff"
clienttesting "k8s.io/client-go/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
)
diff --git a/pkg/master/controller.go b/pkg/master/controller.go
index c0bd6c0250..ef919b2963 100644
--- a/pkg/master/controller.go
+++ b/pkg/master/controller.go
@@ -29,7 +29,7 @@ import (
"k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/apimachinery/pkg/util/wait"
genericapiserver "k8s.io/apiserver/pkg/server"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
coreclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
"k8s.io/kubernetes/pkg/master/reconcilers"
"k8s.io/kubernetes/pkg/registry/core/rangeallocation"
diff --git a/pkg/master/controller_test.go b/pkg/master/controller_test.go
index 439f6f698b..ec7d63158e 100644
--- a/pkg/master/controller_test.go
+++ b/pkg/master/controller_test.go
@@ -24,7 +24,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/intstr"
core "k8s.io/client-go/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
"k8s.io/kubernetes/pkg/master/reconcilers"
)
diff --git a/pkg/master/import_known_versions.go b/pkg/master/import_known_versions.go
index 2b115e9b57..30a6b6b24c 100644
--- a/pkg/master/import_known_versions.go
+++ b/pkg/master/import_known_versions.go
@@ -22,7 +22,6 @@ import (
"k8s.io/kubernetes/pkg/api/legacyscheme"
- _ "k8s.io/kubernetes/pkg/api/install"
_ "k8s.io/kubernetes/pkg/apis/admission/install"
_ "k8s.io/kubernetes/pkg/apis/admissionregistration/install"
_ "k8s.io/kubernetes/pkg/apis/apps/install"
@@ -32,6 +31,7 @@ import (
_ "k8s.io/kubernetes/pkg/apis/batch/install"
_ "k8s.io/kubernetes/pkg/apis/certificates/install"
_ "k8s.io/kubernetes/pkg/apis/componentconfig/install"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
_ "k8s.io/kubernetes/pkg/apis/extensions/install"
_ "k8s.io/kubernetes/pkg/apis/imagepolicy/install"
_ "k8s.io/kubernetes/pkg/apis/networking/install"
diff --git a/pkg/master/import_known_versions_test.go b/pkg/master/import_known_versions_test.go
index fd015504ae..e6a69e7d6f 100644
--- a/pkg/master/import_known_versions_test.go
+++ b/pkg/master/import_known_versions_test.go
@@ -99,7 +99,7 @@ func ensureNoTags(t *testing.T, gvk schema.GroupVersionKind, tp reflect.Type, pa
case reflect.Map, reflect.Slice, reflect.Ptr:
ensureNoTags(t, gvk, tp.Elem(), parents)
- case reflect.String, reflect.Bool, reflect.Float32, reflect.Int, reflect.Int32, reflect.Int64, reflect.Uint8, reflect.Uintptr, reflect.Uint32, reflect.Uint64, reflect.Interface:
+ case reflect.String, reflect.Bool, reflect.Float32, reflect.Int32, reflect.Int64, reflect.Uint8, reflect.Uintptr, reflect.Uint32, reflect.Uint64, reflect.Interface:
// no-op
case reflect.Struct:
diff --git a/pkg/master/master.go b/pkg/master/master.go
index 84e734d645..965b0ba55a 100644
--- a/pkg/master/master.go
+++ b/pkg/master/master.go
@@ -53,8 +53,8 @@ import (
serverstorage "k8s.io/apiserver/pkg/server/storage"
storagefactory "k8s.io/apiserver/pkg/storage/storagebackend/factory"
corev1client "k8s.io/client-go/kubernetes/typed/core/v1"
- "k8s.io/kubernetes/pkg/api"
- kapi "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ kapi "k8s.io/kubernetes/pkg/apis/core"
coreclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
kubeoptions "k8s.io/kubernetes/pkg/kubeapiserver/options"
kubeletclient "k8s.io/kubernetes/pkg/kubelet/client"
diff --git a/pkg/master/master_test.go b/pkg/master/master_test.go
index e75e14be3e..506b81f9f6 100644
--- a/pkg/master/master_test.go
+++ b/pkg/master/master_test.go
@@ -49,13 +49,13 @@ import (
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes/fake"
restclient "k8s.io/client-go/rest"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/apis/apps"
"k8s.io/kubernetes/pkg/apis/autoscaling"
"k8s.io/kubernetes/pkg/apis/batch"
"k8s.io/kubernetes/pkg/apis/certificates"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/apis/rbac"
kubeletclient "k8s.io/kubernetes/pkg/kubelet/client"
diff --git a/pkg/master/reconcilers/BUILD b/pkg/master/reconcilers/BUILD
index 20ca7b2455..3fbb514b0e 100644
--- a/pkg/master/reconcilers/BUILD
+++ b/pkg/master/reconcilers/BUILD
@@ -12,8 +12,8 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/master/reconcilers",
visibility = ["//visibility:public"],
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/endpoints:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/core/internalversion:go_default_library",
"//pkg/registry/core/endpoint:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
@@ -33,7 +33,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/master/reconcilers",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/registrytest:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
],
diff --git a/pkg/master/reconcilers/lease.go b/pkg/master/reconcilers/lease.go
index fbb4d2da80..934ece2900 100644
--- a/pkg/master/reconcilers/lease.go
+++ b/pkg/master/reconcilers/lease.go
@@ -35,8 +35,8 @@ import (
apirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/registry/rest"
"k8s.io/apiserver/pkg/storage"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/endpoints"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/core/endpoint"
)
diff --git a/pkg/master/reconcilers/lease_test.go b/pkg/master/reconcilers/lease_test.go
index 1cdab4e4b5..e16612e255 100644
--- a/pkg/master/reconcilers/lease_test.go
+++ b/pkg/master/reconcilers/lease_test.go
@@ -27,7 +27,7 @@ import (
"testing"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/registrytest"
)
diff --git a/pkg/master/reconcilers/mastercount.go b/pkg/master/reconcilers/mastercount.go
index 8d5493e59d..d7aa4c7718 100644
--- a/pkg/master/reconcilers/mastercount.go
+++ b/pkg/master/reconcilers/mastercount.go
@@ -25,8 +25,8 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/util/retry"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/endpoints"
+ api "k8s.io/kubernetes/pkg/apis/core"
coreclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
)
diff --git a/pkg/master/reconcilers/none.go b/pkg/master/reconcilers/none.go
index ca73e1a591..dce38c2a66 100644
--- a/pkg/master/reconcilers/none.go
+++ b/pkg/master/reconcilers/none.go
@@ -18,9 +18,8 @@ limitations under the License.
package reconcilers
import (
+ api "k8s.io/kubernetes/pkg/apis/core"
"net"
-
- "k8s.io/kubernetes/pkg/api"
)
// NoneEndpointReconciler allows for the endpoint reconciler to be disabled
diff --git a/pkg/master/reconcilers/reconcilers.go b/pkg/master/reconcilers/reconcilers.go
index abaabaa03c..8bbabc6590 100644
--- a/pkg/master/reconcilers/reconcilers.go
+++ b/pkg/master/reconcilers/reconcilers.go
@@ -18,9 +18,8 @@ limitations under the License.
package reconcilers
import (
+ api "k8s.io/kubernetes/pkg/apis/core"
"net"
-
- "k8s.io/kubernetes/pkg/api"
)
// EndpointReconciler knows how to reconcile the endpoints for the apiserver service.
diff --git a/pkg/printers/BUILD b/pkg/printers/BUILD
index e2070e3fd8..c59f547fc2 100644
--- a/pkg/printers/BUILD
+++ b/pkg/printers/BUILD
@@ -42,8 +42,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/printers_test",
deps = [
":go_default_library",
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
@@ -73,7 +73,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/printers",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
diff --git a/pkg/printers/customcolumn_test.go b/pkg/printers/customcolumn_test.go
index 062141ec53..cb67a4ef70 100644
--- a/pkg/printers/customcolumn_test.go
+++ b/pkg/printers/customcolumn_test.go
@@ -25,8 +25,8 @@ import (
"k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/printers"
)
diff --git a/pkg/printers/humanreadable_test.go b/pkg/printers/humanreadable_test.go
index 3c779864a3..7c45b868e3 100644
--- a/pkg/printers/humanreadable_test.go
+++ b/pkg/printers/humanreadable_test.go
@@ -25,7 +25,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
metav1alpha1 "k8s.io/apimachinery/pkg/apis/meta/v1alpha1"
"k8s.io/apimachinery/pkg/runtime"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
var testNamespaceColumnDefinitions = []metav1alpha1.TableColumnDefinition{
diff --git a/pkg/printers/internalversion/BUILD b/pkg/printers/internalversion/BUILD
index 757909ffcb..522478a731 100644
--- a/pkg/printers/internalversion/BUILD
+++ b/pkg/printers/internalversion/BUILD
@@ -16,12 +16,12 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/printers/internalversion",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/apis/apps:go_default_library",
"//pkg/apis/autoscaling:go_default_library",
"//pkg/apis/batch:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/apis/networking:go_default_library",
"//pkg/apis/policy:go_default_library",
@@ -57,10 +57,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/printers/internalversion",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/events:go_default_library",
- "//pkg/api/helper:go_default_library",
- "//pkg/api/helper/qos:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/ref:go_default_library",
"//pkg/api/resource:go_default_library",
@@ -68,6 +65,9 @@ go_library(
"//pkg/apis/autoscaling:go_default_library",
"//pkg/apis/batch:go_default_library",
"//pkg/apis/certificates:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
+ "//pkg/apis/core/helper/qos:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/apis/networking:go_default_library",
"//pkg/apis/policy:go_default_library",
diff --git a/pkg/printers/internalversion/describe.go b/pkg/printers/internalversion/describe.go
index e7a3e7da5f..79295cf21f 100644
--- a/pkg/printers/internalversion/describe.go
+++ b/pkg/printers/internalversion/describe.go
@@ -46,10 +46,7 @@ import (
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/client-go/dynamic"
clientextensionsv1beta1 "k8s.io/client-go/kubernetes/typed/extensions/v1beta1"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/events"
- "k8s.io/kubernetes/pkg/api/helper"
- "k8s.io/kubernetes/pkg/api/helper/qos"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/ref"
resourcehelper "k8s.io/kubernetes/pkg/api/resource"
@@ -57,6 +54,9 @@ import (
"k8s.io/kubernetes/pkg/apis/autoscaling"
"k8s.io/kubernetes/pkg/apis/batch"
"k8s.io/kubernetes/pkg/apis/certificates"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
+ "k8s.io/kubernetes/pkg/apis/core/helper/qos"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/apis/networking"
"k8s.io/kubernetes/pkg/apis/policy"
diff --git a/pkg/printers/internalversion/describe_test.go b/pkg/printers/internalversion/describe_test.go
index f17b6f6355..962ff3936f 100644
--- a/pkg/printers/internalversion/describe_test.go
+++ b/pkg/printers/internalversion/describe_test.go
@@ -33,8 +33,8 @@ import (
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/util/intstr"
versionedfake "k8s.io/client-go/kubernetes/fake"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/autoscaling"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/apis/networking"
"k8s.io/kubernetes/pkg/apis/policy"
@@ -682,7 +682,7 @@ func TestDescribers(t *testing.T) {
t.Errorf("unexpected result: %s %v", out, err)
} else {
if noDescriber, ok := err.(printers.ErrNoDescriber); ok {
- if !reflect.DeepEqual(noDescriber.Types, []string{"*api.Event", "*api.Pod", "*api.Pod"}) {
+ if !reflect.DeepEqual(noDescriber.Types, []string{"*core.Event", "*core.Pod", "*core.Pod"}) {
t.Errorf("unexpected describer: %v", err)
}
} else {
diff --git a/pkg/printers/internalversion/printers.go b/pkg/printers/internalversion/printers.go
index aa15ad8d77..2c52c5e22f 100644
--- a/pkg/printers/internalversion/printers.go
+++ b/pkg/printers/internalversion/printers.go
@@ -41,13 +41,13 @@ import (
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/sets"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/events"
- "k8s.io/kubernetes/pkg/api/helper"
"k8s.io/kubernetes/pkg/apis/apps"
"k8s.io/kubernetes/pkg/apis/autoscaling"
"k8s.io/kubernetes/pkg/apis/batch"
"k8s.io/kubernetes/pkg/apis/certificates"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/apis/networking"
"k8s.io/kubernetes/pkg/apis/policy"
diff --git a/pkg/printers/internalversion/printers_test.go b/pkg/printers/internalversion/printers_test.go
index 7593c70d63..6c1cf7ecea 100644
--- a/pkg/printers/internalversion/printers_test.go
+++ b/pkg/printers/internalversion/printers_test.go
@@ -41,12 +41,12 @@ import (
"k8s.io/apimachinery/pkg/util/diff"
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/apimachinery/pkg/util/sets"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/apis/apps"
"k8s.io/kubernetes/pkg/apis/autoscaling"
"k8s.io/kubernetes/pkg/apis/batch"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/apis/policy"
"k8s.io/kubernetes/pkg/apis/storage"
diff --git a/pkg/printers/internalversion/sorted_resource_name_list_test.go b/pkg/printers/internalversion/sorted_resource_name_list_test.go
index 8989691e70..175c0cec71 100644
--- a/pkg/printers/internalversion/sorted_resource_name_list_test.go
+++ b/pkg/printers/internalversion/sorted_resource_name_list_test.go
@@ -17,11 +17,10 @@ limitations under the License.
package internalversion
import (
+ api "k8s.io/kubernetes/pkg/apis/core"
"reflect"
"sort"
"testing"
-
- "k8s.io/kubernetes/pkg/api"
)
func TestSortableResourceNamesSorting(t *testing.T) {
diff --git a/pkg/proxy/apis/kubeproxyconfig/BUILD b/pkg/proxy/apis/kubeproxyconfig/BUILD
index f1e925ab19..d9887d9f99 100644
--- a/pkg/proxy/apis/kubeproxyconfig/BUILD
+++ b/pkg/proxy/apis/kubeproxyconfig/BUILD
@@ -16,7 +16,6 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig",
deps = [
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/pkg/proxy/apis/kubeproxyconfig/doc.go b/pkg/proxy/apis/kubeproxyconfig/doc.go
index 3693deb7ee..4a6a6ef960 100644
--- a/pkg/proxy/apis/kubeproxyconfig/doc.go
+++ b/pkg/proxy/apis/kubeproxyconfig/doc.go
@@ -14,6 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
package kubeproxyconfig // import "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig"
diff --git a/pkg/proxy/apis/kubeproxyconfig/types.go b/pkg/proxy/apis/kubeproxyconfig/types.go
index 73678a4bfd..d8bf19fe5f 100644
--- a/pkg/proxy/apis/kubeproxyconfig/types.go
+++ b/pkg/proxy/apis/kubeproxyconfig/types.go
@@ -37,7 +37,7 @@ type ClientConnectionConfiguration struct {
// qps controls the number of queries per second allowed for this connection.
QPS float32
// burst allows extra queries to accumulate when a client is exceeding its rate.
- Burst int
+ Burst int32
}
// KubeProxyIPTablesConfiguration contains iptables-related configuration
@@ -73,21 +73,21 @@ type KubeProxyIPVSConfiguration struct {
// the Kubernetes proxy server.
type KubeProxyConntrackConfiguration struct {
// max is the maximum number of NAT connections to track (0 to
- // leave as-is). This takes precedence over conntrackMaxPerCore and conntrackMin.
- Max int32
+ // leave as-is). This takes precedence over maxPerCore and min.
+ Max *int32
// maxPerCore is the maximum number of NAT connections to track
- // per CPU core (0 to leave the limit as-is and ignore conntrackMin).
- MaxPerCore int32
+ // per CPU core (0 to leave the limit as-is and ignore min).
+ MaxPerCore *int32
// min is the minimum value of connect-tracking records to allocate,
- // regardless of conntrackMaxPerCore (set conntrackMaxPerCore=0 to leave the limit as-is).
- Min int32
+ // regardless of maxPerCore (set maxPerCore=0 to leave the limit as-is).
+ Min *int32
// tcpEstablishedTimeout is how long an idle TCP connection will be kept open
- // (e.g. '2s'). Must be greater than 0.
- TCPEstablishedTimeout metav1.Duration
+ // (e.g. '2s'). Must be greater than 0 to set.
+ TCPEstablishedTimeout *metav1.Duration
// tcpCloseWaitTimeout is how long an idle conntrack entry
// in CLOSE_WAIT state will remain in the conntrack
// table. (e.g. '60s'). Must be greater than 0 to set.
- TCPCloseWaitTimeout metav1.Duration
+ TCPCloseWaitTimeout *metav1.Duration
}
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
diff --git a/pkg/proxy/apis/kubeproxyconfig/v1alpha1/BUILD b/pkg/proxy/apis/kubeproxyconfig/v1alpha1/BUILD
index 7b08354489..5ddeb90140 100644
--- a/pkg/proxy/apis/kubeproxyconfig/v1alpha1/BUILD
+++ b/pkg/proxy/apis/kubeproxyconfig/v1alpha1/BUILD
@@ -21,6 +21,7 @@ go_library(
"//pkg/kubelet/qos:go_default_library",
"//pkg/master/ports:go_default_library",
"//pkg/proxy/apis/kubeproxyconfig:go_default_library",
+ "//pkg/util/pointer:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
diff --git a/pkg/proxy/apis/kubeproxyconfig/v1alpha1/defaults.go b/pkg/proxy/apis/kubeproxyconfig/v1alpha1/defaults.go
index 1378b7bfc8..af74a14248 100644
--- a/pkg/proxy/apis/kubeproxyconfig/v1alpha1/defaults.go
+++ b/pkg/proxy/apis/kubeproxyconfig/v1alpha1/defaults.go
@@ -25,6 +25,7 @@ import (
kruntime "k8s.io/apimachinery/pkg/runtime"
"k8s.io/kubernetes/pkg/kubelet/qos"
"k8s.io/kubernetes/pkg/master/ports"
+ "k8s.io/kubernetes/pkg/util/pointer"
)
func addDefaultingFuncs(scheme *kruntime.Scheme) error {
@@ -63,23 +64,23 @@ func SetDefaults_KubeProxyConfiguration(obj *KubeProxyConfiguration) {
obj.UDPIdleTimeout = metav1.Duration{Duration: 250 * time.Millisecond}
}
// If ConntrackMax is set, respect it.
- if obj.Conntrack.Max == 0 {
+ if obj.Conntrack.Max == nil {
// If ConntrackMax is *not* set, use per-core scaling.
- if obj.Conntrack.MaxPerCore == 0 {
- obj.Conntrack.MaxPerCore = 32 * 1024
+ if obj.Conntrack.MaxPerCore == nil {
+ obj.Conntrack.MaxPerCore = pointer.Int32Ptr(32 * 1024)
}
- if obj.Conntrack.Min == 0 {
- obj.Conntrack.Min = 128 * 1024
+ if obj.Conntrack.Min == nil {
+ obj.Conntrack.Min = pointer.Int32Ptr(128 * 1024)
}
}
if obj.IPTables.MasqueradeBit == nil {
temp := int32(14)
obj.IPTables.MasqueradeBit = &temp
}
- if obj.Conntrack.TCPEstablishedTimeout == zero {
- obj.Conntrack.TCPEstablishedTimeout = metav1.Duration{Duration: 24 * time.Hour} // 1 day (1/5 default)
+ if obj.Conntrack.TCPEstablishedTimeout == nil {
+ obj.Conntrack.TCPEstablishedTimeout = &metav1.Duration{Duration: 24 * time.Hour} // 1 day (1/5 default)
}
- if obj.Conntrack.TCPCloseWaitTimeout == zero {
+ if obj.Conntrack.TCPCloseWaitTimeout == nil {
// See https://github.com/kubernetes/kubernetes/issues/32551.
//
// CLOSE_WAIT conntrack state occurs when the Linux kernel
@@ -100,7 +101,7 @@ func SetDefaults_KubeProxyConfiguration(obj *KubeProxyConfiguration) {
//
// We set CLOSE_WAIT to one hour by default to better match
// typical server timeouts.
- obj.Conntrack.TCPCloseWaitTimeout = metav1.Duration{Duration: 1 * time.Hour}
+ obj.Conntrack.TCPCloseWaitTimeout = &metav1.Duration{Duration: 1 * time.Hour}
}
if obj.ConfigSyncPeriod.Duration == 0 {
obj.ConfigSyncPeriod.Duration = 15 * time.Minute
diff --git a/pkg/proxy/apis/kubeproxyconfig/v1alpha1/doc.go b/pkg/proxy/apis/kubeproxyconfig/v1alpha1/doc.go
index 723d492a54..0aea399885 100644
--- a/pkg/proxy/apis/kubeproxyconfig/v1alpha1/doc.go
+++ b/pkg/proxy/apis/kubeproxyconfig/v1alpha1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:conversion-gen=k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig
// +k8s:openapi-gen=true
// +k8s:defaulter-gen=TypeMeta
diff --git a/pkg/proxy/apis/kubeproxyconfig/v1alpha1/types.go b/pkg/proxy/apis/kubeproxyconfig/v1alpha1/types.go
index d8ee5d0f93..add86cdcbf 100644
--- a/pkg/proxy/apis/kubeproxyconfig/v1alpha1/types.go
+++ b/pkg/proxy/apis/kubeproxyconfig/v1alpha1/types.go
@@ -69,21 +69,21 @@ type KubeProxyIPVSConfiguration struct {
// the Kubernetes proxy server.
type KubeProxyConntrackConfiguration struct {
// max is the maximum number of NAT connections to track (0 to
- // leave as-is). This takes precedence over conntrackMaxPerCore and conntrackMin.
- Max int32 `json:"max"`
+ // leave as-is). This takes precedence over maxPerCore and min.
+ Max *int32 `json:"max"`
// maxPerCore is the maximum number of NAT connections to track
- // per CPU core (0 to leave the limit as-is and ignore conntrackMin).
- MaxPerCore int32 `json:"maxPerCore"`
+ // per CPU core (0 to leave the limit as-is and ignore min).
+ MaxPerCore *int32 `json:"maxPerCore"`
// min is the minimum value of connect-tracking records to allocate,
- // regardless of conntrackMaxPerCore (set conntrackMaxPerCore=0 to leave the limit as-is).
- Min int32 `json:"min"`
+ // regardless of conntrackMaxPerCore (set maxPerCore=0 to leave the limit as-is).
+ Min *int32 `json:"min"`
// tcpEstablishedTimeout is how long an idle TCP connection will be kept open
- // (e.g. '2s'). Must be greater than 0.
- TCPEstablishedTimeout metav1.Duration `json:"tcpEstablishedTimeout"`
+ // (e.g. '2s'). Must be greater than 0 to set.
+ TCPEstablishedTimeout *metav1.Duration `json:"tcpEstablishedTimeout"`
// tcpCloseWaitTimeout is how long an idle conntrack entry
// in CLOSE_WAIT state will remain in the conntrack
// table. (e.g. '60s'). Must be greater than 0 to set.
- TCPCloseWaitTimeout metav1.Duration `json:"tcpCloseWaitTimeout"`
+ TCPCloseWaitTimeout *metav1.Duration `json:"tcpCloseWaitTimeout"`
}
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
diff --git a/pkg/proxy/apis/kubeproxyconfig/v1alpha1/zz_generated.conversion.go b/pkg/proxy/apis/kubeproxyconfig/v1alpha1/zz_generated.conversion.go
index f364ca5602..1b3a91c5aa 100644
--- a/pkg/proxy/apis/kubeproxyconfig/v1alpha1/zz_generated.conversion.go
+++ b/pkg/proxy/apis/kubeproxyconfig/v1alpha1/zz_generated.conversion.go
@@ -21,6 +21,7 @@ limitations under the License.
package v1alpha1
import (
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
kubeproxyconfig "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig"
@@ -53,7 +54,7 @@ func autoConvert_v1alpha1_ClientConnectionConfiguration_To_kubeproxyconfig_Clien
out.AcceptContentTypes = in.AcceptContentTypes
out.ContentType = in.ContentType
out.QPS = in.QPS
- out.Burst = in.Burst
+ out.Burst = int32(in.Burst)
return nil
}
@@ -67,7 +68,7 @@ func autoConvert_kubeproxyconfig_ClientConnectionConfiguration_To_v1alpha1_Clien
out.AcceptContentTypes = in.AcceptContentTypes
out.ContentType = in.ContentType
out.QPS = in.QPS
- out.Burst = in.Burst
+ out.Burst = int(in.Burst)
return nil
}
@@ -145,11 +146,11 @@ func Convert_kubeproxyconfig_KubeProxyConfiguration_To_v1alpha1_KubeProxyConfigu
}
func autoConvert_v1alpha1_KubeProxyConntrackConfiguration_To_kubeproxyconfig_KubeProxyConntrackConfiguration(in *KubeProxyConntrackConfiguration, out *kubeproxyconfig.KubeProxyConntrackConfiguration, s conversion.Scope) error {
- out.Max = in.Max
- out.MaxPerCore = in.MaxPerCore
- out.Min = in.Min
- out.TCPEstablishedTimeout = in.TCPEstablishedTimeout
- out.TCPCloseWaitTimeout = in.TCPCloseWaitTimeout
+ out.Max = (*int32)(unsafe.Pointer(in.Max))
+ out.MaxPerCore = (*int32)(unsafe.Pointer(in.MaxPerCore))
+ out.Min = (*int32)(unsafe.Pointer(in.Min))
+ out.TCPEstablishedTimeout = (*v1.Duration)(unsafe.Pointer(in.TCPEstablishedTimeout))
+ out.TCPCloseWaitTimeout = (*v1.Duration)(unsafe.Pointer(in.TCPCloseWaitTimeout))
return nil
}
@@ -159,11 +160,11 @@ func Convert_v1alpha1_KubeProxyConntrackConfiguration_To_kubeproxyconfig_KubePro
}
func autoConvert_kubeproxyconfig_KubeProxyConntrackConfiguration_To_v1alpha1_KubeProxyConntrackConfiguration(in *kubeproxyconfig.KubeProxyConntrackConfiguration, out *KubeProxyConntrackConfiguration, s conversion.Scope) error {
- out.Max = in.Max
- out.MaxPerCore = in.MaxPerCore
- out.Min = in.Min
- out.TCPEstablishedTimeout = in.TCPEstablishedTimeout
- out.TCPCloseWaitTimeout = in.TCPCloseWaitTimeout
+ out.Max = (*int32)(unsafe.Pointer(in.Max))
+ out.MaxPerCore = (*int32)(unsafe.Pointer(in.MaxPerCore))
+ out.Min = (*int32)(unsafe.Pointer(in.Min))
+ out.TCPEstablishedTimeout = (*v1.Duration)(unsafe.Pointer(in.TCPEstablishedTimeout))
+ out.TCPCloseWaitTimeout = (*v1.Duration)(unsafe.Pointer(in.TCPCloseWaitTimeout))
return nil
}
diff --git a/pkg/proxy/apis/kubeproxyconfig/v1alpha1/zz_generated.deepcopy.go b/pkg/proxy/apis/kubeproxyconfig/v1alpha1/zz_generated.deepcopy.go
index 0378bc152f..44b2a69902 100644
--- a/pkg/proxy/apis/kubeproxyconfig/v1alpha1/zz_generated.deepcopy.go
+++ b/pkg/proxy/apis/kubeproxyconfig/v1alpha1/zz_generated.deepcopy.go
@@ -21,44 +21,10 @@ limitations under the License.
package v1alpha1
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ClientConnectionConfiguration).DeepCopyInto(out.(*ClientConnectionConfiguration))
- return nil
- }, InType: reflect.TypeOf(&ClientConnectionConfiguration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*KubeProxyConfiguration).DeepCopyInto(out.(*KubeProxyConfiguration))
- return nil
- }, InType: reflect.TypeOf(&KubeProxyConfiguration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*KubeProxyConntrackConfiguration).DeepCopyInto(out.(*KubeProxyConntrackConfiguration))
- return nil
- }, InType: reflect.TypeOf(&KubeProxyConntrackConfiguration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*KubeProxyIPTablesConfiguration).DeepCopyInto(out.(*KubeProxyIPTablesConfiguration))
- return nil
- }, InType: reflect.TypeOf(&KubeProxyIPTablesConfiguration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*KubeProxyIPVSConfiguration).DeepCopyInto(out.(*KubeProxyIPVSConfiguration))
- return nil
- }, InType: reflect.TypeOf(&KubeProxyIPVSConfiguration{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ClientConnectionConfiguration) DeepCopyInto(out *ClientConnectionConfiguration) {
*out = *in
@@ -92,7 +58,7 @@ func (in *KubeProxyConfiguration) DeepCopyInto(out *KubeProxyConfiguration) {
}
}
out.UDPIdleTimeout = in.UDPIdleTimeout
- out.Conntrack = in.Conntrack
+ in.Conntrack.DeepCopyInto(&out.Conntrack)
out.ConfigSyncPeriod = in.ConfigSyncPeriod
return
}
@@ -119,8 +85,51 @@ func (in *KubeProxyConfiguration) DeepCopyObject() runtime.Object {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *KubeProxyConntrackConfiguration) DeepCopyInto(out *KubeProxyConntrackConfiguration) {
*out = *in
- out.TCPEstablishedTimeout = in.TCPEstablishedTimeout
- out.TCPCloseWaitTimeout = in.TCPCloseWaitTimeout
+ if in.Max != nil {
+ in, out := &in.Max, &out.Max
+ if *in == nil {
+ *out = nil
+ } else {
+ *out = new(int32)
+ **out = **in
+ }
+ }
+ if in.MaxPerCore != nil {
+ in, out := &in.MaxPerCore, &out.MaxPerCore
+ if *in == nil {
+ *out = nil
+ } else {
+ *out = new(int32)
+ **out = **in
+ }
+ }
+ if in.Min != nil {
+ in, out := &in.Min, &out.Min
+ if *in == nil {
+ *out = nil
+ } else {
+ *out = new(int32)
+ **out = **in
+ }
+ }
+ if in.TCPEstablishedTimeout != nil {
+ in, out := &in.TCPEstablishedTimeout, &out.TCPEstablishedTimeout
+ if *in == nil {
+ *out = nil
+ } else {
+ *out = new(v1.Duration)
+ **out = **in
+ }
+ }
+ if in.TCPCloseWaitTimeout != nil {
+ in, out := &in.TCPCloseWaitTimeout, &out.TCPCloseWaitTimeout
+ if *in == nil {
+ *out = nil
+ } else {
+ *out = new(v1.Duration)
+ **out = **in
+ }
+ }
return
}
diff --git a/pkg/proxy/apis/kubeproxyconfig/validation/BUILD b/pkg/proxy/apis/kubeproxyconfig/validation/BUILD
index cc25b22d7b..2c8abb0dca 100644
--- a/pkg/proxy/apis/kubeproxyconfig/validation/BUILD
+++ b/pkg/proxy/apis/kubeproxyconfig/validation/BUILD
@@ -11,7 +11,7 @@ go_library(
srcs = ["validation.go"],
importpath = "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/validation",
deps = [
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//pkg/proxy/apis/kubeproxyconfig:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
@@ -38,6 +38,7 @@ go_test(
library = ":go_default_library",
deps = [
"//pkg/proxy/apis/kubeproxyconfig:go_default_library",
+ "//pkg/util/pointer:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
],
diff --git a/pkg/proxy/apis/kubeproxyconfig/validation/validation.go b/pkg/proxy/apis/kubeproxyconfig/validation/validation.go
index c85152eb74..03ffa0b5cb 100644
--- a/pkg/proxy/apis/kubeproxyconfig/validation/validation.go
+++ b/pkg/proxy/apis/kubeproxyconfig/validation/validation.go
@@ -24,7 +24,7 @@ import (
utilnet "k8s.io/apimachinery/pkg/util/net"
"k8s.io/apimachinery/pkg/util/validation/field"
- apivalidation "k8s.io/kubernetes/pkg/api/validation"
+ apivalidation "k8s.io/kubernetes/pkg/apis/core/validation"
"k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig"
)
@@ -93,24 +93,24 @@ func validateKubeProxyIPTablesConfiguration(config kubeproxyconfig.KubeProxyIPTa
func validateKubeProxyConntrackConfiguration(config kubeproxyconfig.KubeProxyConntrackConfiguration, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
- if config.Max < 0 {
+ if config.Max != nil && *config.Max < 0 {
allErrs = append(allErrs, field.Invalid(fldPath.Child("Max"), config.Max, "must be greater than or equal to 0"))
}
- if config.MaxPerCore < 0 {
+ if config.MaxPerCore != nil && *config.MaxPerCore < 0 {
allErrs = append(allErrs, field.Invalid(fldPath.Child("MaxPerCore"), config.MaxPerCore, "must be greater than or equal to 0"))
}
- if config.Min < 0 {
+ if config.Min != nil && *config.Min < 0 {
allErrs = append(allErrs, field.Invalid(fldPath.Child("Min"), config.Min, "must be greater than or equal to 0"))
}
- if config.TCPEstablishedTimeout.Duration <= 0 {
- allErrs = append(allErrs, field.Invalid(fldPath.Child("TCPEstablishedTimeout"), config.TCPEstablishedTimeout, "must be greater than 0"))
+ if config.TCPEstablishedTimeout.Duration < 0 {
+ allErrs = append(allErrs, field.Invalid(fldPath.Child("TCPEstablishedTimeout"), config.TCPEstablishedTimeout, "must be greater than or equal to 0"))
}
- if config.TCPCloseWaitTimeout.Duration <= 0 {
- allErrs = append(allErrs, field.Invalid(fldPath.Child("TCPCloseWaitTimeout"), config.TCPCloseWaitTimeout, "must be greater than 0"))
+ if config.TCPCloseWaitTimeout.Duration < 0 {
+ allErrs = append(allErrs, field.Invalid(fldPath.Child("TCPCloseWaitTimeout"), config.TCPCloseWaitTimeout, "must be greater than or equal to 0"))
}
return allErrs
diff --git a/pkg/proxy/apis/kubeproxyconfig/validation/validation_test.go b/pkg/proxy/apis/kubeproxyconfig/validation/validation_test.go
index 1fe01e64b8..27b07fbdb9 100644
--- a/pkg/proxy/apis/kubeproxyconfig/validation/validation_test.go
+++ b/pkg/proxy/apis/kubeproxyconfig/validation/validation_test.go
@@ -24,6 +24,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/validation/field"
"k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig"
+ "k8s.io/kubernetes/pkg/util/pointer"
)
func TestValidateKubeProxyConfiguration(t *testing.T) {
@@ -41,11 +42,11 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
},
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
- Max: int32(2),
- MaxPerCore: int32(1),
- Min: int32(1),
- TCPEstablishedTimeout: metav1.Duration{Duration: 5 * time.Second},
- TCPCloseWaitTimeout: metav1.Duration{Duration: 5 * time.Second},
+ Max: pointer.Int32Ptr(2),
+ MaxPerCore: pointer.Int32Ptr(1),
+ Min: pointer.Int32Ptr(1),
+ TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
+ TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
},
},
}
@@ -75,11 +76,11 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
},
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
- Max: int32(2),
- MaxPerCore: int32(1),
- Min: int32(1),
- TCPEstablishedTimeout: metav1.Duration{Duration: 5 * time.Second},
- TCPCloseWaitTimeout: metav1.Duration{Duration: 5 * time.Second},
+ Max: pointer.Int32Ptr(2),
+ MaxPerCore: pointer.Int32Ptr(1),
+ Min: pointer.Int32Ptr(1),
+ TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
+ TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
},
},
msg: "not a valid textual representation of an IP address",
@@ -99,11 +100,11 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
},
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
- Max: int32(2),
- MaxPerCore: int32(1),
- Min: int32(1),
- TCPEstablishedTimeout: metav1.Duration{Duration: 5 * time.Second},
- TCPCloseWaitTimeout: metav1.Duration{Duration: 5 * time.Second},
+ Max: pointer.Int32Ptr(2),
+ MaxPerCore: pointer.Int32Ptr(1),
+ Min: pointer.Int32Ptr(1),
+ TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
+ TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
},
},
msg: "must be IP:port",
@@ -123,11 +124,11 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
},
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
- Max: int32(2),
- MaxPerCore: int32(1),
- Min: int32(1),
- TCPEstablishedTimeout: metav1.Duration{Duration: 5 * time.Second},
- TCPCloseWaitTimeout: metav1.Duration{Duration: 5 * time.Second},
+ Max: pointer.Int32Ptr(2),
+ MaxPerCore: pointer.Int32Ptr(1),
+ Min: pointer.Int32Ptr(1),
+ TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
+ TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
},
},
msg: "must be IP:port",
@@ -147,11 +148,11 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
},
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
- Max: int32(2),
- MaxPerCore: int32(1),
- Min: int32(1),
- TCPEstablishedTimeout: metav1.Duration{Duration: 5 * time.Second},
- TCPCloseWaitTimeout: metav1.Duration{Duration: 5 * time.Second},
+ Max: pointer.Int32Ptr(2),
+ MaxPerCore: pointer.Int32Ptr(1),
+ Min: pointer.Int32Ptr(1),
+ TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
+ TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
},
},
msg: "must be a valid CIDR block (e.g. 10.100.0.0/16)",
@@ -171,11 +172,11 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
},
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
- Max: int32(2),
- MaxPerCore: int32(1),
- Min: int32(1),
- TCPEstablishedTimeout: metav1.Duration{Duration: 5 * time.Second},
- TCPCloseWaitTimeout: metav1.Duration{Duration: 5 * time.Second},
+ Max: pointer.Int32Ptr(2),
+ MaxPerCore: pointer.Int32Ptr(1),
+ Min: pointer.Int32Ptr(1),
+ TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
+ TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
},
},
msg: "must be greater than 0",
@@ -195,11 +196,11 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
},
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
- Max: int32(2),
- MaxPerCore: int32(1),
- Min: int32(1),
- TCPEstablishedTimeout: metav1.Duration{Duration: 5 * time.Second},
- TCPCloseWaitTimeout: metav1.Duration{Duration: 5 * time.Second},
+ Max: pointer.Int32Ptr(2),
+ MaxPerCore: pointer.Int32Ptr(1),
+ Min: pointer.Int32Ptr(1),
+ TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
+ TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
},
},
msg: "must be greater than 0",
@@ -282,18 +283,18 @@ func TestValidateKubeProxyIPTablesConfiguration(t *testing.T) {
func TestValidateKubeProxyConntrackConfiguration(t *testing.T) {
successCases := []kubeproxyconfig.KubeProxyConntrackConfiguration{
{
- Max: int32(2),
- MaxPerCore: int32(1),
- Min: int32(1),
- TCPEstablishedTimeout: metav1.Duration{Duration: 5 * time.Second},
- TCPCloseWaitTimeout: metav1.Duration{Duration: 5 * time.Second},
+ Max: pointer.Int32Ptr(2),
+ MaxPerCore: pointer.Int32Ptr(1),
+ Min: pointer.Int32Ptr(1),
+ TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
+ TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
},
{
- Max: 0,
- MaxPerCore: 0,
- Min: 0,
- TCPEstablishedTimeout: metav1.Duration{Duration: 5 * time.Second},
- TCPCloseWaitTimeout: metav1.Duration{Duration: 60 * time.Second},
+ Max: pointer.Int32Ptr(0),
+ MaxPerCore: pointer.Int32Ptr(0),
+ Min: pointer.Int32Ptr(0),
+ TCPEstablishedTimeout: &metav1.Duration{Duration: 0 * time.Second},
+ TCPCloseWaitTimeout: &metav1.Duration{Duration: 0 * time.Second},
},
}
newPath := field.NewPath("KubeProxyConfiguration")
@@ -309,53 +310,53 @@ func TestValidateKubeProxyConntrackConfiguration(t *testing.T) {
}{
{
config: kubeproxyconfig.KubeProxyConntrackConfiguration{
- Max: int32(-1),
- MaxPerCore: int32(1),
- Min: int32(1),
- TCPEstablishedTimeout: metav1.Duration{Duration: 5 * time.Second},
- TCPCloseWaitTimeout: metav1.Duration{Duration: 5 * time.Second},
+ Max: pointer.Int32Ptr(-1),
+ MaxPerCore: pointer.Int32Ptr(1),
+ Min: pointer.Int32Ptr(1),
+ TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
+ TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
},
msg: "must be greater than or equal to 0",
},
{
config: kubeproxyconfig.KubeProxyConntrackConfiguration{
- Max: int32(2),
- MaxPerCore: int32(-1),
- Min: int32(1),
- TCPEstablishedTimeout: metav1.Duration{Duration: 5 * time.Second},
- TCPCloseWaitTimeout: metav1.Duration{Duration: 5 * time.Second},
+ Max: pointer.Int32Ptr(2),
+ MaxPerCore: pointer.Int32Ptr(-1),
+ Min: pointer.Int32Ptr(1),
+ TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
+ TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
},
msg: "must be greater than or equal to 0",
},
{
config: kubeproxyconfig.KubeProxyConntrackConfiguration{
- Max: int32(2),
- MaxPerCore: int32(1),
- Min: int32(-1),
- TCPEstablishedTimeout: metav1.Duration{Duration: 5 * time.Second},
- TCPCloseWaitTimeout: metav1.Duration{Duration: 5 * time.Second},
+ Max: pointer.Int32Ptr(2),
+ MaxPerCore: pointer.Int32Ptr(1),
+ Min: pointer.Int32Ptr(-1),
+ TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
+ TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
},
msg: "must be greater than or equal to 0",
},
{
config: kubeproxyconfig.KubeProxyConntrackConfiguration{
- Max: int32(4),
- MaxPerCore: int32(1),
- Min: int32(3),
- TCPEstablishedTimeout: metav1.Duration{Duration: -5 * time.Second},
- TCPCloseWaitTimeout: metav1.Duration{Duration: 5 * time.Second},
+ Max: pointer.Int32Ptr(4),
+ MaxPerCore: pointer.Int32Ptr(1),
+ Min: pointer.Int32Ptr(3),
+ TCPEstablishedTimeout: &metav1.Duration{Duration: -5 * time.Second},
+ TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
},
- msg: "must be greater than 0",
+ msg: "must be greater than or equal to 0",
},
{
config: kubeproxyconfig.KubeProxyConntrackConfiguration{
- Max: int32(4),
- MaxPerCore: int32(1),
- Min: int32(3),
- TCPEstablishedTimeout: metav1.Duration{Duration: 5 * time.Second},
- TCPCloseWaitTimeout: metav1.Duration{Duration: -5 * time.Second},
+ Max: pointer.Int32Ptr(4),
+ MaxPerCore: pointer.Int32Ptr(1),
+ Min: pointer.Int32Ptr(3),
+ TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
+ TCPCloseWaitTimeout: &metav1.Duration{Duration: -5 * time.Second},
},
- msg: "must be greater than 0",
+ msg: "must be greater than or equal to 0",
},
}
diff --git a/pkg/proxy/apis/kubeproxyconfig/zz_generated.deepcopy.go b/pkg/proxy/apis/kubeproxyconfig/zz_generated.deepcopy.go
index 16ca086f03..7527116372 100644
--- a/pkg/proxy/apis/kubeproxyconfig/zz_generated.deepcopy.go
+++ b/pkg/proxy/apis/kubeproxyconfig/zz_generated.deepcopy.go
@@ -21,44 +21,10 @@ limitations under the License.
package kubeproxyconfig
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ClientConnectionConfiguration).DeepCopyInto(out.(*ClientConnectionConfiguration))
- return nil
- }, InType: reflect.TypeOf(&ClientConnectionConfiguration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*KubeProxyConfiguration).DeepCopyInto(out.(*KubeProxyConfiguration))
- return nil
- }, InType: reflect.TypeOf(&KubeProxyConfiguration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*KubeProxyConntrackConfiguration).DeepCopyInto(out.(*KubeProxyConntrackConfiguration))
- return nil
- }, InType: reflect.TypeOf(&KubeProxyConntrackConfiguration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*KubeProxyIPTablesConfiguration).DeepCopyInto(out.(*KubeProxyIPTablesConfiguration))
- return nil
- }, InType: reflect.TypeOf(&KubeProxyIPTablesConfiguration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*KubeProxyIPVSConfiguration).DeepCopyInto(out.(*KubeProxyIPVSConfiguration))
- return nil
- }, InType: reflect.TypeOf(&KubeProxyIPVSConfiguration{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ClientConnectionConfiguration) DeepCopyInto(out *ClientConnectionConfiguration) {
*out = *in
@@ -92,7 +58,7 @@ func (in *KubeProxyConfiguration) DeepCopyInto(out *KubeProxyConfiguration) {
}
}
out.UDPIdleTimeout = in.UDPIdleTimeout
- out.Conntrack = in.Conntrack
+ in.Conntrack.DeepCopyInto(&out.Conntrack)
out.ConfigSyncPeriod = in.ConfigSyncPeriod
return
}
@@ -119,8 +85,51 @@ func (in *KubeProxyConfiguration) DeepCopyObject() runtime.Object {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *KubeProxyConntrackConfiguration) DeepCopyInto(out *KubeProxyConntrackConfiguration) {
*out = *in
- out.TCPEstablishedTimeout = in.TCPEstablishedTimeout
- out.TCPCloseWaitTimeout = in.TCPCloseWaitTimeout
+ if in.Max != nil {
+ in, out := &in.Max, &out.Max
+ if *in == nil {
+ *out = nil
+ } else {
+ *out = new(int32)
+ **out = **in
+ }
+ }
+ if in.MaxPerCore != nil {
+ in, out := &in.MaxPerCore, &out.MaxPerCore
+ if *in == nil {
+ *out = nil
+ } else {
+ *out = new(int32)
+ **out = **in
+ }
+ }
+ if in.Min != nil {
+ in, out := &in.Min, &out.Min
+ if *in == nil {
+ *out = nil
+ } else {
+ *out = new(int32)
+ **out = **in
+ }
+ }
+ if in.TCPEstablishedTimeout != nil {
+ in, out := &in.TCPEstablishedTimeout, &out.TCPEstablishedTimeout
+ if *in == nil {
+ *out = nil
+ } else {
+ *out = new(v1.Duration)
+ **out = **in
+ }
+ }
+ if in.TCPCloseWaitTimeout != nil {
+ in, out := &in.TCPCloseWaitTimeout, &out.TCPCloseWaitTimeout
+ if *in == nil {
+ *out = nil
+ } else {
+ *out = new(v1.Duration)
+ **out = **in
+ }
+ }
return
}
diff --git a/pkg/proxy/config/BUILD b/pkg/proxy/config/BUILD
index 48ab0cb49f..a3f59aa45b 100644
--- a/pkg/proxy/config/BUILD
+++ b/pkg/proxy/config/BUILD
@@ -14,7 +14,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/proxy/config",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/client/informers/informers_generated/internalversion/core/internalversion:go_default_library",
"//pkg/client/listers/core/internalversion:go_default_library",
"//pkg/controller:go_default_library",
@@ -33,7 +33,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/proxy/config",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/client/clientset_generated/internalclientset/fake:go_default_library",
"//pkg/client/informers/informers_generated/internalversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
diff --git a/pkg/proxy/config/api_test.go b/pkg/proxy/config/api_test.go
index afc42817d6..234129b18f 100644
--- a/pkg/proxy/config/api_test.go
+++ b/pkg/proxy/config/api_test.go
@@ -26,7 +26,7 @@ import (
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/watch"
ktesting "k8s.io/client-go/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
informers "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion"
)
diff --git a/pkg/proxy/config/config.go b/pkg/proxy/config/config.go
index 1c79fdf6f2..33e0bd169e 100644
--- a/pkg/proxy/config/config.go
+++ b/pkg/proxy/config/config.go
@@ -23,7 +23,7 @@ import (
"github.com/golang/glog"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/client-go/tools/cache"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
coreinformers "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/core/internalversion"
listers "k8s.io/kubernetes/pkg/client/listers/core/internalversion"
"k8s.io/kubernetes/pkg/controller"
diff --git a/pkg/proxy/config/config_test.go b/pkg/proxy/config/config_test.go
index c64072d234..e6a3a6cb53 100644
--- a/pkg/proxy/config/config_test.go
+++ b/pkg/proxy/config/config_test.go
@@ -28,7 +28,7 @@ import (
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apimachinery/pkg/watch"
ktesting "k8s.io/client-go/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
informers "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion"
)
diff --git a/pkg/proxy/healthcheck/BUILD b/pkg/proxy/healthcheck/BUILD
index d195692a09..a909cef8b5 100644
--- a/pkg/proxy/healthcheck/BUILD
+++ b/pkg/proxy/healthcheck/BUILD
@@ -14,7 +14,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/proxy/healthcheck",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/github.com/renstrom/dedent:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
diff --git a/pkg/proxy/healthcheck/healthcheck.go b/pkg/proxy/healthcheck/healthcheck.go
index 7ea31d0a4e..7ee1da6ff4 100644
--- a/pkg/proxy/healthcheck/healthcheck.go
+++ b/pkg/proxy/healthcheck/healthcheck.go
@@ -33,7 +33,7 @@ import (
"k8s.io/apimachinery/pkg/util/clock"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/client-go/tools/record"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
var nodeHealthzRetryInterval = 60 * time.Second
diff --git a/pkg/proxy/iptables/BUILD b/pkg/proxy/iptables/BUILD
index cc0ef13039..a308c9c4a0 100644
--- a/pkg/proxy/iptables/BUILD
+++ b/pkg/proxy/iptables/BUILD
@@ -13,9 +13,9 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/proxy/iptables",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/helper:go_default_library",
"//pkg/api/service:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
"//pkg/features:go_default_library",
"//pkg/proxy:go_default_library",
"//pkg/proxy/healthcheck:go_default_library",
@@ -42,7 +42,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/proxy/iptables",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/proxy:go_default_library",
"//pkg/proxy/util:go_default_library",
"//pkg/util/async:go_default_library",
diff --git a/pkg/proxy/iptables/proxier.go b/pkg/proxy/iptables/proxier.go
index 786434f7c1..f33b4b674e 100644
--- a/pkg/proxy/iptables/proxier.go
+++ b/pkg/proxy/iptables/proxier.go
@@ -41,9 +41,9 @@ import (
"k8s.io/apimachinery/pkg/util/wait"
utilfeature "k8s.io/apiserver/pkg/util/feature"
"k8s.io/client-go/tools/record"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/helper"
apiservice "k8s.io/kubernetes/pkg/api/service"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
"k8s.io/kubernetes/pkg/features"
"k8s.io/kubernetes/pkg/proxy"
"k8s.io/kubernetes/pkg/proxy/healthcheck"
@@ -80,6 +80,9 @@ const (
// the mark-for-drop chain
KubeMarkDropChain utiliptables.Chain = "KUBE-MARK-DROP"
+
+ // the kubernetes forward chain
+ kubeForwardChain utiliptables.Chain = "KUBE-FORWARD"
)
// IPTablesVersioner can query the current iptables version.
@@ -543,6 +546,18 @@ func CleanupLeftovers(ipt utiliptables.Interface) (encounteredError bool) {
}
}
+ // Unlink the forwarding chain.
+ args = []string{
+ "-m", "comment", "--comment", "kubernetes forwarding rules",
+ "-j", string(kubeForwardChain),
+ }
+ if err := ipt.DeleteRule(utiliptables.TableFilter, utiliptables.ChainForward, args...); err != nil {
+ if !utiliptables.IsNotFoundError(err) {
+ glog.Errorf("Error removing pure-iptables proxy rule: %v", err)
+ encounteredError = true
+ }
+ }
+
// Flush and remove all of our chains.
iptablesData := bytes.NewBuffer(nil)
if err := ipt.SaveInto(utiliptables.TableNAT, iptablesData); err != nil {
@@ -578,14 +593,28 @@ func CleanupLeftovers(ipt utiliptables.Interface) (encounteredError bool) {
encounteredError = true
}
}
- {
- filterBuf := bytes.NewBuffer(nil)
- writeLine(filterBuf, "*filter")
- writeLine(filterBuf, fmt.Sprintf(":%s - [0:0]", kubeServicesChain))
- writeLine(filterBuf, fmt.Sprintf("-X %s", kubeServicesChain))
- writeLine(filterBuf, "COMMIT")
+
+ // Flush and remove all of our chains.
+ iptablesData = bytes.NewBuffer(nil)
+ if err := ipt.SaveInto(utiliptables.TableFilter, iptablesData); err != nil {
+ glog.Errorf("Failed to execute iptables-save for %s: %v", utiliptables.TableFilter, err)
+ encounteredError = true
+ } else {
+ existingFilterChains := utiliptables.GetChainLines(utiliptables.TableFilter, iptablesData.Bytes())
+ filterChains := bytes.NewBuffer(nil)
+ filterRules := bytes.NewBuffer(nil)
+ writeLine(filterChains, "*filter")
+ for _, chain := range []utiliptables.Chain{kubeServicesChain, kubeForwardChain} {
+ if _, found := existingFilterChains[chain]; found {
+ chainString := string(chain)
+ writeLine(filterChains, existingFilterChains[chain])
+ writeLine(filterRules, "-X", chainString)
+ }
+ }
+ writeLine(filterRules, "COMMIT")
+ filterLines := append(filterChains.Bytes(), filterRules.Bytes()...)
// Write it.
- if err := ipt.Restore(utiliptables.TableFilter, filterBuf.Bytes(), utiliptables.NoFlushTables, utiliptables.RestoreCounters); err != nil {
+ if err := ipt.Restore(utiliptables.TableFilter, filterLines, utiliptables.NoFlushTables, utiliptables.RestoreCounters); err != nil {
glog.Errorf("Failed to execute iptables-restore for %s: %v", utiliptables.TableFilter, err)
encounteredError = true
}
@@ -798,7 +827,7 @@ func getLocalIPs(endpointsMap proxyEndpointsMap) map[types.NamespacedName]sets.S
for svcPortName := range endpointsMap {
for _, ep := range endpointsMap[svcPortName] {
if ep.isLocal {
- // If the endpoint has a bad format, ipPart() will log an
+ // If the endpoint has a bad format, utilproxy.IPPart() will log an
// error and ep.IPPart() will return a null string.
if ip := ep.IPPart(); ip != "" {
nsn := svcPortName.NamespacedName
@@ -1027,6 +1056,21 @@ func (proxier *Proxier) syncProxyRules() {
}
}
+ // Create and link the kube forward chain.
+ {
+ if _, err := proxier.iptables.EnsureChain(utiliptables.TableFilter, kubeForwardChain); err != nil {
+ glog.Errorf("Failed to ensure that %s chain %s exists: %v", utiliptables.TableFilter, kubeForwardChain, err)
+ return
+ }
+
+ comment := "kubernetes forward rules"
+ args := []string{"-m", "comment", "--comment", comment, "-j", string(kubeForwardChain)}
+ if _, err := proxier.iptables.EnsureRule(utiliptables.Prepend, utiliptables.TableFilter, utiliptables.ChainForward, args...); err != nil {
+ glog.Errorf("Failed to ensure that %s chain %s jumps to %s: %v", utiliptables.TableFilter, utiliptables.ChainForward, kubeForwardChain, err)
+ return
+ }
+ }
+
//
// Below this point we will not return until we try to write the iptables rules.
//
@@ -1069,6 +1113,11 @@ func (proxier *Proxier) syncProxyRules() {
} else {
writeLine(proxier.filterChains, utiliptables.MakeChainLine(kubeServicesChain))
}
+ if chain, ok := existingFilterChains[kubeForwardChain]; ok {
+ writeLine(proxier.filterChains, chain)
+ } else {
+ writeLine(proxier.filterChains, utiliptables.MakeChainLine(kubeForwardChain))
+ }
if chain, ok := existingNATChains[kubeServicesChain]; ok {
writeLine(proxier.natChains, chain)
} else {
@@ -1516,6 +1565,18 @@ func (proxier *Proxier) syncProxyRules() {
)
writeLine(proxier.natRules, args...)
} else {
+ // First write session affinity rules only over local endpoints, if applicable.
+ if svcInfo.sessionAffinityType == api.ServiceAffinityClientIP {
+ for _, endpointChain := range localEndpointChains {
+ writeLine(proxier.natRules,
+ "-A", string(svcXlbChain),
+ "-m", "comment", "--comment", svcNameString,
+ "-m", "recent", "--name", string(endpointChain),
+ "--rcheck", "--seconds", strconv.Itoa(svcInfo.stickyMaxAgeSeconds), "--reap",
+ "-j", string(endpointChain))
+ }
+ }
+
// Setup probability filter rules only over local endpoints
for i, endpointChain := range localEndpointChains {
// Balancing rules in the per-service chain.
@@ -1562,6 +1623,40 @@ func (proxier *Proxier) syncProxyRules() {
"-m", "addrtype", "--dst-type", "LOCAL",
"-j", string(kubeNodePortsChain))
+ // If the masqueradeMark has been added then we want to forward that same
+ // traffic, this allows NodePort traffic to be forwarded even if the default
+ // FORWARD policy is not accept.
+ writeLine(proxier.filterRules,
+ "-A", string(kubeForwardChain),
+ "-m", "comment", "--comment", `"kubernetes forwarding rules"`,
+ "-m", "mark", "--mark", proxier.masqueradeMark,
+ "-j", "ACCEPT",
+ )
+
+ // The following rules can only be set if clusterCIDR has been defined.
+ if len(proxier.clusterCIDR) != 0 {
+ // The following two rules ensure the traffic after the initial packet
+ // accepted by the "kubernetes forwarding rules" rule above will be
+ // accepted, to be as specific as possible the traffic must be sourced
+ // or destined to the clusterCIDR (to/from a pod).
+ writeLine(proxier.filterRules,
+ "-A", string(kubeForwardChain),
+ "-s", proxier.clusterCIDR,
+ "-m", "comment", "--comment", `"kubernetes forwarding conntrack pod source rule"`,
+ "-m", "conntrack",
+ "--ctstate", "RELATED,ESTABLISHED",
+ "-j", "ACCEPT",
+ )
+ writeLine(proxier.filterRules,
+ "-A", string(kubeForwardChain),
+ "-m", "comment", "--comment", `"kubernetes forwarding conntrack pod destination rule"`,
+ "-d", proxier.clusterCIDR,
+ "-m", "conntrack",
+ "--ctstate", "RELATED,ESTABLISHED",
+ "-j", "ACCEPT",
+ )
+ }
+
// Write the end-of-table markers.
writeLine(proxier.filterRules, "COMMIT")
writeLine(proxier.natRules, "COMMIT")
@@ -1609,7 +1704,7 @@ func (proxier *Proxier) syncProxyRules() {
// Finish housekeeping.
// TODO: these could be made more consistent.
- for _, svcIP := range staleServices.List() {
+ for _, svcIP := range staleServices.UnsortedList() {
if err := utilproxy.ClearUDPConntrackForIP(proxier.exec, svcIP); err != nil {
glog.Errorf("Failed to delete stale service IP %s connections, error: %v", svcIP, err)
}
diff --git a/pkg/proxy/iptables/proxier_test.go b/pkg/proxy/iptables/proxier_test.go
index aba1b5d58e..873b47ba69 100644
--- a/pkg/proxy/iptables/proxier_test.go
+++ b/pkg/proxy/iptables/proxier_test.go
@@ -33,7 +33,7 @@ import (
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/apimachinery/pkg/util/sets"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/proxy"
utilproxy "k8s.io/kubernetes/pkg/proxy/util"
"k8s.io/kubernetes/pkg/util/async"
@@ -325,6 +325,15 @@ func NewFakeProxier(ipt utiliptables.Interface) *Proxier {
return p
}
+func hasSessionAffinityRule(rules []iptablestest.Rule) bool {
+ for _, r := range rules {
+ if _, ok := r[iptablestest.Recent]; ok {
+ return true
+ }
+ }
+ return false
+}
+
func hasJump(rules []iptablestest.Rule, destChain, destIP string, destPort int) bool {
destPortStr := strconv.Itoa(destPort)
match := false
@@ -769,6 +778,7 @@ func TestOnlyLocalLoadBalancing(t *testing.T) {
NamespacedName: makeNSN("ns1", "svc1"),
Port: "p80",
}
+ svcSessionAffinityTimeout := int32(10800)
makeServiceMap(fp,
makeTestService(svcPortName.Namespace, svcPortName.Name, func(svc *api.Service) {
@@ -784,6 +794,10 @@ func TestOnlyLocalLoadBalancing(t *testing.T) {
IP: svcLBIP,
}}
svc.Spec.ExternalTrafficPolicy = api.ServiceExternalTrafficPolicyTypeLocal
+ svc.Spec.SessionAffinity = api.ServiceAffinityClientIP
+ svc.Spec.SessionAffinityConfig = &api.SessionAffinityConfig{
+ ClientIP: &api.ClientIPConfig{TimeoutSeconds: &svcSessionAffinityTimeout},
+ }
}),
)
@@ -838,6 +852,9 @@ func TestOnlyLocalLoadBalancing(t *testing.T) {
if !hasJump(lbRules, localEpChain, "", 0) {
errorf(fmt.Sprintf("Didn't find jump from lb chain %v to local ep %v", lbChain, epStrNonLocal), lbRules, t)
}
+ if !hasSessionAffinityRule(lbRules) {
+ errorf(fmt.Sprintf("Didn't find session affinity rule from lb chain %v", lbChain), lbRules, t)
+ }
}
func TestOnlyLocalNodePortsNoClusterCIDR(t *testing.T) {
@@ -1050,7 +1067,7 @@ func TestBuildServiceMapAddRemove(t *testing.T) {
// the not-deleted service, because one of it's ServicePorts was deleted.
expectedStaleUDPServices := []string{"172.16.55.10", "172.16.55.4", "172.16.55.11", "172.16.55.12"}
if len(result.staleServices) != len(expectedStaleUDPServices) {
- t.Errorf("expected stale UDP services length %d, got %v", len(expectedStaleUDPServices), result.staleServices.List())
+ t.Errorf("expected stale UDP services length %d, got %v", len(expectedStaleUDPServices), result.staleServices.UnsortedList())
}
for _, ip := range expectedStaleUDPServices {
if !result.staleServices.Has(ip) {
@@ -1166,7 +1183,7 @@ func TestBuildServiceMapServiceUpdate(t *testing.T) {
t.Errorf("expected healthcheck ports length 1, got %v", result.hcServices)
}
if len(result.staleServices) != 0 {
- t.Errorf("expected stale UDP services length 0, got %v", result.staleServices.List())
+ t.Errorf("expected stale UDP services length 0, got %v", result.staleServices.UnsortedList())
}
// No change; make sure the service map stays the same and there are
@@ -1180,7 +1197,7 @@ func TestBuildServiceMapServiceUpdate(t *testing.T) {
t.Errorf("expected healthcheck ports length 1, got %v", result.hcServices)
}
if len(result.staleServices) != 0 {
- t.Errorf("expected stale UDP services length 0, got %v", result.staleServices.List())
+ t.Errorf("expected stale UDP services length 0, got %v", result.staleServices.UnsortedList())
}
// And back to ClusterIP
@@ -1264,6 +1281,14 @@ func Test_getLocalIPs(t *testing.T) {
{Namespace: "ns2", Name: "ep2"}: sets.NewString("2.2.2.2", "2.2.2.22", "2.2.2.3"),
{Namespace: "ns4", Name: "ep4"}: sets.NewString("4.4.4.4", "4.4.4.6"),
},
+ }, {
+ // Case[5]: named port local and bad endpoints IP
+ endpointsMap: map[proxy.ServicePortName][]*endpointsInfo{
+ makeServicePortName("ns1", "ep1", "p11"): {
+ {endpoint: "bad ip:11", isLocal: true},
+ },
+ },
+ expected: map[types.NamespacedName]sets.String{},
}}
for tci, tc := range testCases {
diff --git a/pkg/proxy/ipvs/BUILD b/pkg/proxy/ipvs/BUILD
index 95e8c9fe8b..232c71ee3e 100644
--- a/pkg/proxy/ipvs/BUILD
+++ b/pkg/proxy/ipvs/BUILD
@@ -8,11 +8,13 @@ load(
go_test(
name = "go_default_test",
- srcs = ["proxier_test.go"],
+ srcs = [
+ "proxier_test.go",
+ ],
importpath = "k8s.io/kubernetes/pkg/proxy/ipvs",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/proxy:go_default_library",
"//pkg/proxy/ipvs/testing:go_default_library",
"//pkg/proxy/util:go_default_library",
@@ -44,9 +46,9 @@ go_library(
}),
importpath = "k8s.io/kubernetes/pkg/proxy/ipvs",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/helper:go_default_library",
"//pkg/api/service:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
"//pkg/features:go_default_library",
"//pkg/proxy:go_default_library",
"//pkg/proxy/healthcheck:go_default_library",
diff --git a/pkg/proxy/ipvs/netlink.go b/pkg/proxy/ipvs/netlink.go
index a4e859f2b2..4f66f706ee 100644
--- a/pkg/proxy/ipvs/netlink.go
+++ b/pkg/proxy/ipvs/netlink.go
@@ -22,4 +22,8 @@ type NetLinkHandle interface {
EnsureAddressBind(address, devName string) (exist bool, err error)
// UnbindAddress unbind address from the interface
UnbindAddress(address, devName string) error
+ // EnsureDummyDevice checks if dummy device is exist and, if not, create one. If the dummy device is already exist, return true.
+ EnsureDummyDevice(devName string) (exist bool, err error)
+ // DeleteDummyDevice deletes the given dummy device by name.
+ DeleteDummyDevice(devName string) error
}
diff --git a/pkg/proxy/ipvs/netlink_linux.go b/pkg/proxy/ipvs/netlink_linux.go
index df5b2f779a..e709afafab 100644
--- a/pkg/proxy/ipvs/netlink_linux.go
+++ b/pkg/proxy/ipvs/netlink_linux.go
@@ -70,3 +70,29 @@ func (h *netlinkHandle) UnbindAddress(address, devName string) error {
}
return nil
}
+
+// EnsureDummyDevice is part of interface
+func (h *netlinkHandle) EnsureDummyDevice(devName string) (bool, error) {
+ _, err := h.LinkByName(devName)
+ if err == nil {
+ // found dummy device
+ return true, nil
+ }
+ dummy := &netlink.Dummy{
+ LinkAttrs: netlink.LinkAttrs{Name: devName},
+ }
+ return false, h.LinkAdd(dummy)
+}
+
+// DeleteDummyDevice is part of interface.
+func (h *netlinkHandle) DeleteDummyDevice(devName string) error {
+ link, err := h.LinkByName(devName)
+ if err != nil {
+ return fmt.Errorf("error deleting a non-exist dummy device: %s", devName)
+ }
+ dummy, ok := link.(*netlink.Dummy)
+ if !ok {
+ return fmt.Errorf("expect dummy device, got device type: %s", link.Type())
+ }
+ return h.LinkDel(dummy)
+}
diff --git a/pkg/proxy/ipvs/netlink_unsupported.go b/pkg/proxy/ipvs/netlink_unsupported.go
index 6fec7de4a6..1e22685b27 100644
--- a/pkg/proxy/ipvs/netlink_unsupported.go
+++ b/pkg/proxy/ipvs/netlink_unsupported.go
@@ -39,3 +39,13 @@ func (h *emptyHandle) EnsureAddressBind(address, devName string) (exist bool, er
func (h *emptyHandle) UnbindAddress(address, devName string) error {
return fmt.Errorf("netlink not supported for this platform")
}
+
+// EnsureDummyDevice is part of interface
+func (h *emptyHandle) EnsureDummyDevice(devName string) (bool, error) {
+ return false, fmt.Errorf("netlink is not supported in this platform")
+}
+
+// DeleteDummyDevice is part of interface.
+func (h *emptyHandle) DeleteDummyDevice(devName string) error {
+ return fmt.Errorf("netlink is not supported in this platform")
+}
diff --git a/pkg/proxy/ipvs/proxier.go b/pkg/proxy/ipvs/proxier.go
index 6d06d0053a..0614605539 100644
--- a/pkg/proxy/ipvs/proxier.go
+++ b/pkg/proxy/ipvs/proxier.go
@@ -40,9 +40,9 @@ import (
"k8s.io/apimachinery/pkg/util/wait"
utilfeature "k8s.io/apiserver/pkg/util/feature"
"k8s.io/client-go/tools/record"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/helper"
apiservice "k8s.io/kubernetes/pkg/api/service"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
"k8s.io/kubernetes/pkg/features"
"k8s.io/kubernetes/pkg/proxy"
"k8s.io/kubernetes/pkg/proxy/healthcheck"
@@ -673,7 +673,7 @@ func CanUseIPVSProxier() (bool, error) {
loadModules := sets.NewString()
wantModules.Insert(ipvsModules...)
loadModules.Insert(mods...)
- modules := wantModules.Difference(loadModules).List()
+ modules := wantModules.Difference(loadModules).UnsortedList()
if len(modules) != 0 {
return false, fmt.Errorf("IPVS proxier will not be used because the following required kernel modules are not loaded: %v", modules)
}
@@ -748,7 +748,7 @@ func cleanupIptablesLeftovers(ipt utiliptables.Interface) (encounteredError bool
}
// CleanupLeftovers clean up all ipvs and iptables rules created by ipvs Proxier.
-func CleanupLeftovers(execer utilexec.Interface, ipvs utilipvs.Interface, ipt utiliptables.Interface) (encounteredError bool) {
+func CleanupLeftovers(ipvs utilipvs.Interface, ipt utiliptables.Interface) (encounteredError bool) {
// Return immediately when ipvs interface is nil - Probably initialization failed in somewhere.
if ipvs == nil {
return true
@@ -761,7 +761,8 @@ func CleanupLeftovers(execer utilexec.Interface, ipvs utilipvs.Interface, ipt ut
encounteredError = true
}
// Delete dummy interface created by ipvs Proxier.
- err = deleteDummyDevice(execer, DefaultDummyDevice)
+ nl := NewNetLinkHandle()
+ err = nl.DeleteDummyDevice(DefaultDummyDevice)
if err != nil {
encounteredError = true
}
@@ -950,7 +951,7 @@ func (proxier *Proxier) syncProxyRules() {
// End install iptables
// make sure dummy interface exists in the system where ipvs Proxier will bind service address on it
- _, err = ensureDummyDevice(proxier.exec, DefaultDummyDevice)
+ _, err = proxier.netlinkHandle.EnsureDummyDevice(DefaultDummyDevice)
if err != nil {
glog.Errorf("Failed to create dummy interface: %s, error: %v", DefaultDummyDevice, err)
return
@@ -1253,7 +1254,7 @@ func (proxier *Proxier) syncProxyRules() {
// Finish housekeeping.
// TODO: these could be made more consistent.
- for _, svcIP := range staleServices.List() {
+ for _, svcIP := range staleServices.UnsortedList() {
if err := utilproxy.ClearUDPConntrackForIP(proxier.exec, svcIP); err != nil {
glog.Errorf("Failed to delete stale service IP %s connections, error: %v", svcIP, err)
}
@@ -1338,7 +1339,7 @@ func (proxier *Proxier) syncEndpoint(svcPortName proxy.ServicePortName, onlyNode
if !curEndpoints.Equal(newEndpoints) {
// Create new endpoints
- for _, ep := range newEndpoints.Difference(curEndpoints).List() {
+ for _, ep := range newEndpoints.Difference(curEndpoints).UnsortedList() {
ip, port, err := net.SplitHostPort(ep)
if err != nil {
glog.Errorf("Failed to parse endpoint: %v, error: %v", ep, err)
@@ -1362,7 +1363,7 @@ func (proxier *Proxier) syncEndpoint(svcPortName proxy.ServicePortName, onlyNode
}
}
// Delete old endpoints
- for _, ep := range curEndpoints.Difference(newEndpoints).List() {
+ for _, ep := range curEndpoints.Difference(newEndpoints).UnsortedList() {
ip, port, err := net.SplitHostPort(ep)
if err != nil {
glog.Errorf("Failed to parse endpoint: %v, error: %v", ep, err)
@@ -1465,14 +1466,18 @@ func writeLine(buf *bytes.Buffer, words ...string) {
func getLocalIPs(endpointsMap proxyEndpointsMap) map[types.NamespacedName]sets.String {
localIPs := make(map[types.NamespacedName]sets.String)
- for svcPort := range endpointsMap {
- for _, ep := range endpointsMap[svcPort] {
+ for svcPortName := range endpointsMap {
+ for _, ep := range endpointsMap[svcPortName] {
if ep.isLocal {
- nsn := svcPort.NamespacedName
- if localIPs[nsn] == nil {
- localIPs[nsn] = sets.NewString()
+ // If the endpoint has a bad format, utilproxy.IPPart() will log an
+ // error and ep.IPPart() will return a null string.
+ if ip := ep.IPPart(); ip != "" {
+ nsn := svcPortName.NamespacedName
+ if localIPs[nsn] == nil {
+ localIPs[nsn] = sets.NewString()
+ }
+ localIPs[nsn].Insert(ip)
}
- localIPs[nsn].Insert(ep.IPPart()) // just the IP part
}
}
}
@@ -1525,32 +1530,6 @@ func openLocalPort(lp *utilproxy.LocalPort) (utilproxy.Closeable, error) {
return socket, nil
}
-const cmdIP = "ip"
-
-func ensureDummyDevice(execer utilexec.Interface, dummyDev string) (exist bool, err error) {
- args := []string{"link", "add", dummyDev, "type", "dummy"}
- out, err := execer.Command(cmdIP, args...).CombinedOutput()
- if err != nil {
- // "exit status code 2" will be returned if the device already exists
- if ee, ok := err.(utilexec.ExitError); ok {
- if ee.Exited() && ee.ExitStatus() == 2 {
- return true, nil
- }
- }
- return false, fmt.Errorf("error creating dummy interface %q: %v: %s", dummyDev, err, out)
- }
- return false, nil
-}
-
-func deleteDummyDevice(execer utilexec.Interface, dummyDev string) error {
- args := []string{"link", "del", dummyDev}
- out, err := execer.Command(cmdIP, args...).CombinedOutput()
- if err != nil {
- return fmt.Errorf("error deleting dummy interface %q: %v: %s", dummyDev, err, out)
- }
- return nil
-}
-
// ipvs Proxier fall back on iptables when it needs to do SNAT for engress packets
// It will only operate iptables *nat table.
// Create and link the kube postrouting chain for SNAT packets.
diff --git a/pkg/proxy/ipvs/proxier_test.go b/pkg/proxy/ipvs/proxier_test.go
index 8119f6d5ac..182d9cae48 100644
--- a/pkg/proxy/ipvs/proxier_test.go
+++ b/pkg/proxy/ipvs/proxier_test.go
@@ -25,7 +25,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/intstr"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/proxy"
"k8s.io/utils/exec"
fakeexec "k8s.io/utils/exec/testing"
@@ -2017,6 +2017,14 @@ func Test_getLocalIPs(t *testing.T) {
{Namespace: "ns2", Name: "ep2"}: sets.NewString("2.2.2.2", "2.2.2.22", "2.2.2.3"),
{Namespace: "ns4", Name: "ep4"}: sets.NewString("4.4.4.4", "4.4.4.6"),
},
+ }, {
+ // Case[5]: named port local and bad endpoints IP
+ endpointsMap: map[proxy.ServicePortName][]*endpointsInfo{
+ makeServicePortName("ns1", "ep1", "p11"): {
+ {endpoint: "bad ip:11", isLocal: true},
+ },
+ },
+ expected: map[types.NamespacedName]sets.String{},
}}
for tci, tc := range testCases {
@@ -2213,75 +2221,3 @@ func Test_endpointsToEndpointsMap(t *testing.T) {
}
}
}
-
-func Test_ensureDummyDevice(t *testing.T) {
- fcmd := fakeexec.FakeCmd{
- CombinedOutputScript: []fakeexec.FakeCombinedOutputAction{
- // Success.
- func() ([]byte, error) { return []byte{}, nil },
- // Exists.
- func() ([]byte, error) { return nil, &fakeexec.FakeExitError{Status: 2} },
- },
- }
- fexec := fakeexec.FakeExec{
- CommandScript: []fakeexec.FakeCommandAction{
- func(cmd string, args ...string) exec.Cmd { return fakeexec.InitFakeCmd(&fcmd, cmd, args...) },
- func(cmd string, args ...string) exec.Cmd { return fakeexec.InitFakeCmd(&fcmd, cmd, args...) },
- },
- }
- // Success.
- exists, err := ensureDummyDevice(&fexec, DefaultDummyDevice)
- if err != nil {
- t.Errorf("expected success, got %v", err)
- }
- if exists {
- t.Errorf("expected exists = false")
- }
- if fcmd.CombinedOutputCalls != 1 {
- t.Errorf("expected 1 CombinedOutput() calls, got %d", fcmd.CombinedOutputCalls)
- }
- if !sets.NewString(fcmd.CombinedOutputLog[0]...).HasAll("ip", "link", "add", "kube-ipvs0", "type", "dummy") {
- t.Errorf("wrong CombinedOutput() log, got %s", fcmd.CombinedOutputLog[0])
- }
- // Exists.
- exists, err = ensureDummyDevice(&fexec, DefaultDummyDevice)
- if err != nil {
- t.Errorf("expected success, got %v", err)
- }
- if !exists {
- t.Errorf("expected exists = true")
- }
-}
-
-func Test_deleteDummyDevice(t *testing.T) {
- fcmd := fakeexec.FakeCmd{
- CombinedOutputScript: []fakeexec.FakeCombinedOutputAction{
- // Success.
- func() ([]byte, error) { return []byte{}, nil },
- // Failure.
- func() ([]byte, error) { return nil, &fakeexec.FakeExitError{Status: 1} },
- },
- }
- fexec := fakeexec.FakeExec{
- CommandScript: []fakeexec.FakeCommandAction{
- func(cmd string, args ...string) exec.Cmd { return fakeexec.InitFakeCmd(&fcmd, cmd, args...) },
- func(cmd string, args ...string) exec.Cmd { return fakeexec.InitFakeCmd(&fcmd, cmd, args...) },
- },
- }
- // Success.
- err := deleteDummyDevice(&fexec, DefaultDummyDevice)
- if err != nil {
- t.Errorf("expected success, got %v", err)
- }
- if fcmd.CombinedOutputCalls != 1 {
- t.Errorf("expected 1 CombinedOutput() calls, got %d", fcmd.CombinedOutputCalls)
- }
- if !sets.NewString(fcmd.CombinedOutputLog[0]...).HasAll("ip", "link", "del", "kube-ipvs0") {
- t.Errorf("wrong CombinedOutput() log, got %s", fcmd.CombinedOutputLog[0])
- }
- // Failure.
- err = deleteDummyDevice(&fexec, DefaultDummyDevice)
- if err == nil {
- t.Errorf("expected failure")
- }
-}
diff --git a/pkg/proxy/ipvs/testing/fake.go b/pkg/proxy/ipvs/testing/fake.go
index 3060dccbba..6b3f0ddc1b 100644
--- a/pkg/proxy/ipvs/testing/fake.go
+++ b/pkg/proxy/ipvs/testing/fake.go
@@ -34,3 +34,13 @@ func (h *FakeNetlinkHandle) EnsureAddressBind(address, devName string) (exist bo
func (h *FakeNetlinkHandle) UnbindAddress(address, devName string) error {
return nil
}
+
+// EnsureDummyDevice is a mock implementation
+func (h *FakeNetlinkHandle) EnsureDummyDevice(devName string) (bool, error) {
+ return false, nil
+}
+
+// DeleteDummyDevice is a mock implementation
+func (h *FakeNetlinkHandle) DeleteDummyDevice(devName string) error {
+ return nil
+}
diff --git a/pkg/proxy/userspace/BUILD b/pkg/proxy/userspace/BUILD
index 7e204340fc..f533d0daa2 100644
--- a/pkg/proxy/userspace/BUILD
+++ b/pkg/proxy/userspace/BUILD
@@ -24,8 +24,8 @@ go_library(
}),
importpath = "k8s.io/kubernetes/pkg/proxy/userspace",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/helper:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
"//pkg/proxy:go_default_library",
"//pkg/proxy/util:go_default_library",
"//pkg/util/iptables:go_default_library",
@@ -52,7 +52,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/proxy/userspace",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/proxy:go_default_library",
"//pkg/util/iptables/testing:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
diff --git a/pkg/proxy/userspace/loadbalancer.go b/pkg/proxy/userspace/loadbalancer.go
index 369094e329..ebaeb9f4db 100644
--- a/pkg/proxy/userspace/loadbalancer.go
+++ b/pkg/proxy/userspace/loadbalancer.go
@@ -17,10 +17,9 @@ limitations under the License.
package userspace
import (
- "net"
-
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/proxy"
+ "net"
)
// LoadBalancer is an interface for distributing incoming requests to service endpoints.
diff --git a/pkg/proxy/userspace/proxier.go b/pkg/proxy/userspace/proxier.go
index 5712236cec..8c4f622e11 100644
--- a/pkg/proxy/userspace/proxier.go
+++ b/pkg/proxy/userspace/proxier.go
@@ -28,8 +28,8 @@ import (
"github.com/golang/glog"
"k8s.io/apimachinery/pkg/types"
utilnet "k8s.io/apimachinery/pkg/util/net"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/helper"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
"k8s.io/kubernetes/pkg/proxy"
utilerrors "k8s.io/apimachinery/pkg/util/errors"
@@ -503,7 +503,7 @@ func (proxier *Proxier) unmergeService(service *api.Service, existingPorts sets.
}
proxier.loadBalancer.DeleteService(serviceName)
}
- for _, svcIP := range staleUDPServices.List() {
+ for _, svcIP := range staleUDPServices.UnsortedList() {
if err := utilproxy.ClearUDPConntrackForIP(proxier.exec, svcIP); err != nil {
glog.Errorf("Failed to delete stale service IP %s connections, error: %v", svcIP, err)
}
diff --git a/pkg/proxy/userspace/proxier_test.go b/pkg/proxy/userspace/proxier_test.go
index d3699a0a7e..ef55b1ba07 100644
--- a/pkg/proxy/userspace/proxier_test.go
+++ b/pkg/proxy/userspace/proxier_test.go
@@ -32,7 +32,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/runtime"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/proxy"
ipttest "k8s.io/kubernetes/pkg/util/iptables/testing"
"k8s.io/utils/exec"
diff --git a/pkg/proxy/userspace/proxysocket.go b/pkg/proxy/userspace/proxysocket.go
index a28b6011b6..d65ac02a0c 100644
--- a/pkg/proxy/userspace/proxysocket.go
+++ b/pkg/proxy/userspace/proxysocket.go
@@ -27,7 +27,7 @@ import (
"github.com/golang/glog"
"k8s.io/apimachinery/pkg/util/runtime"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/proxy"
)
diff --git a/pkg/proxy/userspace/roundrobin.go b/pkg/proxy/userspace/roundrobin.go
index b32d69d877..e2aca29913 100644
--- a/pkg/proxy/userspace/roundrobin.go
+++ b/pkg/proxy/userspace/roundrobin.go
@@ -27,7 +27,7 @@ import (
"github.com/golang/glog"
"k8s.io/apimachinery/pkg/types"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/proxy"
"k8s.io/kubernetes/pkg/util/slice"
)
diff --git a/pkg/proxy/userspace/roundrobin_test.go b/pkg/proxy/userspace/roundrobin_test.go
index 05ccbd37a8..8da691a6ea 100644
--- a/pkg/proxy/userspace/roundrobin_test.go
+++ b/pkg/proxy/userspace/roundrobin_test.go
@@ -22,7 +22,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/proxy"
)
diff --git a/pkg/proxy/util/BUILD b/pkg/proxy/util/BUILD
index 1da2c3ad0f..2956b52126 100644
--- a/pkg/proxy/util/BUILD
+++ b/pkg/proxy/util/BUILD
@@ -11,8 +11,8 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/proxy/util",
visibility = ["//visibility:public"],
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/helper:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/utils/exec:go_default_library",
@@ -30,7 +30,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/proxy/util",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/utils/exec:go_default_library",
diff --git a/pkg/proxy/util/endpoints.go b/pkg/proxy/util/endpoints.go
index 32e770d4f9..0e8bdffc31 100644
--- a/pkg/proxy/util/endpoints.go
+++ b/pkg/proxy/util/endpoints.go
@@ -32,12 +32,17 @@ func IPPart(s string) string {
return s
}
// Must be IP:port
- ip, _, err := net.SplitHostPort(s)
+ host, _, err := net.SplitHostPort(s)
if err != nil {
glog.Errorf("Error parsing '%s': %v", s, err)
return ""
}
- return ip
+ // Check if host string is a valid IP address
+ if ip := net.ParseIP(host); ip != nil {
+ glog.Errorf("invalid IP part '%s'", host)
+ return host
+ }
+ return ""
}
// ToCIDR returns a host address of the form /32 for
diff --git a/pkg/proxy/util/endpoints_test.go b/pkg/proxy/util/endpoints_test.go
index 618f59e96a..bb28cbd714 100644
--- a/pkg/proxy/util/endpoints_test.go
+++ b/pkg/proxy/util/endpoints_test.go
@@ -35,6 +35,7 @@ func TestIPPart(t *testing.T) {
{"[2001:db8::2:2]:9999", "2001:db8::2:2", noError},
{"1.2.3.4::9999", "", "too many colons"},
{"1.2.3.4:[0]", "", "unexpected '[' in address"},
+ {"1.2.3:8080", "", "invalid ip part"},
}
for _, tc := range testCases {
diff --git a/pkg/proxy/util/utils.go b/pkg/proxy/util/utils.go
index 81734f5489..cac0140c38 100644
--- a/pkg/proxy/util/utils.go
+++ b/pkg/proxy/util/utils.go
@@ -20,8 +20,8 @@ import (
"net"
"k8s.io/apimachinery/pkg/types"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/helper"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
"github.com/golang/glog"
)
diff --git a/pkg/proxy/util/utils_test.go b/pkg/proxy/util/utils_test.go
index b57850ae5f..5810788714 100644
--- a/pkg/proxy/util/utils_test.go
+++ b/pkg/proxy/util/utils_test.go
@@ -21,7 +21,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func TestShouldSkipService(t *testing.T) {
diff --git a/pkg/proxy/winkernel/BUILD b/pkg/proxy/winkernel/BUILD
index d1ee257303..4249439169 100644
--- a/pkg/proxy/winkernel/BUILD
+++ b/pkg/proxy/winkernel/BUILD
@@ -16,9 +16,9 @@ go_library(
"//vendor/github.com/prometheus/client_golang/prometheus:go_default_library",
] + select({
"@io_bazel_rules_go//go/platform:windows_amd64": [
- "//pkg/api:go_default_library",
- "//pkg/api/helper:go_default_library",
"//pkg/api/service:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
"//pkg/features:go_default_library",
"//pkg/proxy:go_default_library",
"//pkg/proxy/healthcheck:go_default_library",
@@ -48,7 +48,7 @@ go_test(
library = ":go_default_library",
deps = select({
"@io_bazel_rules_go//go/platform:windows_amd64": [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/proxy:go_default_library",
"//pkg/util/async:go_default_library",
"//vendor/github.com/davecgh/go-spew/spew:go_default_library",
diff --git a/pkg/proxy/winkernel/proxier.go b/pkg/proxy/winkernel/proxier.go
index c984183df6..d570760955 100644
--- a/pkg/proxy/winkernel/proxier.go
+++ b/pkg/proxy/winkernel/proxier.go
@@ -37,9 +37,9 @@ import (
"k8s.io/apimachinery/pkg/util/wait"
utilfeature "k8s.io/apiserver/pkg/util/feature"
"k8s.io/client-go/tools/record"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/helper"
apiservice "k8s.io/kubernetes/pkg/api/service"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
"k8s.io/kubernetes/pkg/features"
"k8s.io/kubernetes/pkg/proxy"
"k8s.io/kubernetes/pkg/proxy/healthcheck"
@@ -1130,7 +1130,7 @@ func (proxier *Proxier) syncProxyRules() {
// Finish housekeeping.
// TODO: these could be made more consistent.
- for _, svcIP := range staleServices.List() {
+ for _, svcIP := range staleServices.UnsortedList() {
// TODO : Check if this is required to cleanup stale services here
glog.V(5).Infof("Pending delete stale service IP %s connections", svcIP)
}
diff --git a/pkg/proxy/winkernel/proxier_test.go b/pkg/proxy/winkernel/proxier_test.go
index 2cf3ac98bc..3bb2f641ff 100644
--- a/pkg/proxy/winkernel/proxier_test.go
+++ b/pkg/proxy/winkernel/proxier_test.go
@@ -33,7 +33,7 @@ import (
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/apimachinery/pkg/util/sets"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/proxy"
"k8s.io/kubernetes/pkg/util/async"
"k8s.io/utils/exec"
diff --git a/pkg/proxy/winuserspace/BUILD b/pkg/proxy/winuserspace/BUILD
index 163523d849..cd583ef269 100644
--- a/pkg/proxy/winuserspace/BUILD
+++ b/pkg/proxy/winuserspace/BUILD
@@ -18,8 +18,8 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/proxy/winuserspace",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/helper:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
"//pkg/proxy:go_default_library",
"//pkg/util/ipconfig:go_default_library",
"//pkg/util/netsh:go_default_library",
@@ -42,7 +42,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/proxy/winuserspace",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/proxy:go_default_library",
"//pkg/util/netsh/testing:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
diff --git a/pkg/proxy/winuserspace/loadbalancer.go b/pkg/proxy/winuserspace/loadbalancer.go
index b4a5bc2c25..eb0dc2dbf6 100644
--- a/pkg/proxy/winuserspace/loadbalancer.go
+++ b/pkg/proxy/winuserspace/loadbalancer.go
@@ -17,10 +17,9 @@ limitations under the License.
package winuserspace
import (
- "net"
-
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/proxy"
+ "net"
)
// LoadBalancer is an interface for distributing incoming requests to service endpoints.
diff --git a/pkg/proxy/winuserspace/proxier.go b/pkg/proxy/winuserspace/proxier.go
index 4e6382918c..5b31816422 100644
--- a/pkg/proxy/winuserspace/proxier.go
+++ b/pkg/proxy/winuserspace/proxier.go
@@ -29,8 +29,8 @@ import (
"k8s.io/apimachinery/pkg/types"
utilnet "k8s.io/apimachinery/pkg/util/net"
"k8s.io/apimachinery/pkg/util/runtime"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/helper"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
"k8s.io/kubernetes/pkg/proxy"
"k8s.io/kubernetes/pkg/util/netsh"
)
diff --git a/pkg/proxy/winuserspace/proxier_test.go b/pkg/proxy/winuserspace/proxier_test.go
index fadc5e38bc..f69e64c63f 100644
--- a/pkg/proxy/winuserspace/proxier_test.go
+++ b/pkg/proxy/winuserspace/proxier_test.go
@@ -32,7 +32,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/runtime"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/proxy"
netshtest "k8s.io/kubernetes/pkg/util/netsh/testing"
)
diff --git a/pkg/proxy/winuserspace/proxysocket.go b/pkg/proxy/winuserspace/proxysocket.go
index ced3a8b0cc..ed87f19753 100644
--- a/pkg/proxy/winuserspace/proxysocket.go
+++ b/pkg/proxy/winuserspace/proxysocket.go
@@ -30,7 +30,7 @@ import (
"github.com/miekg/dns"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/runtime"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/proxy"
"k8s.io/kubernetes/pkg/util/ipconfig"
"k8s.io/utils/exec"
diff --git a/pkg/proxy/winuserspace/roundrobin.go b/pkg/proxy/winuserspace/roundrobin.go
index 86d7614c85..27b8355599 100644
--- a/pkg/proxy/winuserspace/roundrobin.go
+++ b/pkg/proxy/winuserspace/roundrobin.go
@@ -27,7 +27,7 @@ import (
"github.com/golang/glog"
"k8s.io/apimachinery/pkg/types"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/proxy"
"k8s.io/kubernetes/pkg/util/slice"
)
diff --git a/pkg/proxy/winuserspace/roundrobin_test.go b/pkg/proxy/winuserspace/roundrobin_test.go
index 1f4973ee1a..c0dce2b512 100644
--- a/pkg/proxy/winuserspace/roundrobin_test.go
+++ b/pkg/proxy/winuserspace/roundrobin_test.go
@@ -22,7 +22,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/proxy"
)
diff --git a/pkg/quota/BUILD b/pkg/quota/BUILD
index 572e6e1a45..7d5cd09601 100644
--- a/pkg/quota/BUILD
+++ b/pkg/quota/BUILD
@@ -14,7 +14,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/quota",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
@@ -31,7 +31,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/quota",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
],
)
diff --git a/pkg/quota/evaluator/core/BUILD b/pkg/quota/evaluator/core/BUILD
index b93dc1c858..85d50d0855 100644
--- a/pkg/quota/evaluator/core/BUILD
+++ b/pkg/quota/evaluator/core/BUILD
@@ -17,11 +17,11 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/quota/evaluator/core",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/helper:go_default_library",
- "//pkg/api/helper/qos:go_default_library",
- "//pkg/api/v1:go_default_library",
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
+ "//pkg/apis/core/helper/qos:go_default_library",
+ "//pkg/apis/core/v1:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//pkg/features:go_default_library",
"//pkg/kubeapiserver/admission/util:go_default_library",
"//pkg/quota:go_default_library",
@@ -51,7 +51,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/quota/evaluator/core",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/quota:go_default_library",
"//pkg/quota/generic:go_default_library",
"//pkg/util/node:go_default_library",
diff --git a/pkg/quota/evaluator/core/persistent_volume_claims.go b/pkg/quota/evaluator/core/persistent_volume_claims.go
index cd24c14cc3..9032dcaf7b 100644
--- a/pkg/quota/evaluator/core/persistent_volume_claims.go
+++ b/pkg/quota/evaluator/core/persistent_volume_claims.go
@@ -29,9 +29,9 @@ import (
"k8s.io/apiserver/pkg/admission"
"k8s.io/apiserver/pkg/features"
utilfeature "k8s.io/apiserver/pkg/util/feature"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/helper"
- k8s_api_v1 "k8s.io/kubernetes/pkg/api/v1"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
+ k8s_api_v1 "k8s.io/kubernetes/pkg/apis/core/v1"
k8sfeatures "k8s.io/kubernetes/pkg/features"
"k8s.io/kubernetes/pkg/kubeapiserver/admission/util"
"k8s.io/kubernetes/pkg/quota"
@@ -196,7 +196,7 @@ func toInternalPersistentVolumeClaimOrError(obj runtime.Object) (*api.Persistent
pvc := &api.PersistentVolumeClaim{}
switch t := obj.(type) {
case *v1.PersistentVolumeClaim:
- if err := k8s_api_v1.Convert_v1_PersistentVolumeClaim_To_api_PersistentVolumeClaim(t, pvc, nil); err != nil {
+ if err := k8s_api_v1.Convert_v1_PersistentVolumeClaim_To_core_PersistentVolumeClaim(t, pvc, nil); err != nil {
return nil, err
}
case *api.PersistentVolumeClaim:
diff --git a/pkg/quota/evaluator/core/persistent_volume_claims_test.go b/pkg/quota/evaluator/core/persistent_volume_claims_test.go
index 2218db7ec9..e2b1c69d98 100644
--- a/pkg/quota/evaluator/core/persistent_volume_claims_test.go
+++ b/pkg/quota/evaluator/core/persistent_volume_claims_test.go
@@ -22,7 +22,7 @@ import (
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/quota"
"k8s.io/kubernetes/pkg/quota/generic"
)
diff --git a/pkg/quota/evaluator/core/pods.go b/pkg/quota/evaluator/core/pods.go
index 5c25be5c19..c55fb7f721 100644
--- a/pkg/quota/evaluator/core/pods.go
+++ b/pkg/quota/evaluator/core/pods.go
@@ -31,10 +31,10 @@ import (
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/validation/field"
"k8s.io/apiserver/pkg/admission"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/helper/qos"
- k8s_api_v1 "k8s.io/kubernetes/pkg/api/v1"
- "k8s.io/kubernetes/pkg/api/validation"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/helper/qos"
+ k8s_api_v1 "k8s.io/kubernetes/pkg/apis/core/v1"
+ "k8s.io/kubernetes/pkg/apis/core/validation"
"k8s.io/kubernetes/pkg/kubeapiserver/admission/util"
"k8s.io/kubernetes/pkg/quota"
"k8s.io/kubernetes/pkg/quota/generic"
@@ -219,7 +219,7 @@ func toInternalPodOrError(obj runtime.Object) (*api.Pod, error) {
pod := &api.Pod{}
switch t := obj.(type) {
case *v1.Pod:
- if err := k8s_api_v1.Convert_v1_Pod_To_api_Pod(t, pod, nil); err != nil {
+ if err := k8s_api_v1.Convert_v1_Pod_To_core_Pod(t, pod, nil); err != nil {
return nil, err
}
case *api.Pod:
diff --git a/pkg/quota/evaluator/core/pods_test.go b/pkg/quota/evaluator/core/pods_test.go
index 87e70bd312..f74e4603fa 100644
--- a/pkg/quota/evaluator/core/pods_test.go
+++ b/pkg/quota/evaluator/core/pods_test.go
@@ -24,7 +24,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/util/clock"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/quota"
"k8s.io/kubernetes/pkg/quota/generic"
"k8s.io/kubernetes/pkg/util/node"
diff --git a/pkg/quota/evaluator/core/registry.go b/pkg/quota/evaluator/core/registry.go
index 313913dc61..5a642b386a 100644
--- a/pkg/quota/evaluator/core/registry.go
+++ b/pkg/quota/evaluator/core/registry.go
@@ -20,7 +20,7 @@ import (
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/util/clock"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/quota"
"k8s.io/kubernetes/pkg/quota/generic"
)
diff --git a/pkg/quota/evaluator/core/services.go b/pkg/quota/evaluator/core/services.go
index 63304b7792..f4dec5973a 100644
--- a/pkg/quota/evaluator/core/services.go
+++ b/pkg/quota/evaluator/core/services.go
@@ -24,8 +24,8 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apiserver/pkg/admission"
- "k8s.io/kubernetes/pkg/api"
- k8s_api_v1 "k8s.io/kubernetes/pkg/api/v1"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ k8s_api_v1 "k8s.io/kubernetes/pkg/apis/core/v1"
"k8s.io/kubernetes/pkg/quota"
"k8s.io/kubernetes/pkg/quota/generic"
)
@@ -87,7 +87,7 @@ func toInternalServiceOrError(obj runtime.Object) (*api.Service, error) {
svc := &api.Service{}
switch t := obj.(type) {
case *v1.Service:
- if err := k8s_api_v1.Convert_v1_Service_To_api_Service(t, svc, nil); err != nil {
+ if err := k8s_api_v1.Convert_v1_Service_To_core_Service(t, svc, nil); err != nil {
return nil, err
}
case *api.Service:
diff --git a/pkg/quota/evaluator/core/services_test.go b/pkg/quota/evaluator/core/services_test.go
index 6914e5a3a2..601397ce19 100644
--- a/pkg/quota/evaluator/core/services_test.go
+++ b/pkg/quota/evaluator/core/services_test.go
@@ -21,7 +21,7 @@ import (
"k8s.io/apimachinery/pkg/api/resource"
"k8s.io/apimachinery/pkg/runtime/schema"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/quota"
"k8s.io/kubernetes/pkg/quota/generic"
)
diff --git a/pkg/quota/generic/BUILD b/pkg/quota/generic/BUILD
index 1581fca446..db871e85fa 100644
--- a/pkg/quota/generic/BUILD
+++ b/pkg/quota/generic/BUILD
@@ -14,7 +14,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/quota/generic",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/quota:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
diff --git a/pkg/quota/generic/evaluator.go b/pkg/quota/generic/evaluator.go
index def12324f1..5bcb1cb20f 100644
--- a/pkg/quota/generic/evaluator.go
+++ b/pkg/quota/generic/evaluator.go
@@ -26,7 +26,7 @@ import (
"k8s.io/apiserver/pkg/admission"
"k8s.io/client-go/informers"
"k8s.io/client-go/tools/cache"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/quota"
)
diff --git a/pkg/quota/interfaces.go b/pkg/quota/interfaces.go
index fde24e5776..8d7295ef0c 100644
--- a/pkg/quota/interfaces.go
+++ b/pkg/quota/interfaces.go
@@ -21,7 +21,7 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apiserver/pkg/admission"
"k8s.io/client-go/tools/cache"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// UsageStatsOptions is an options structs that describes how stats should be calculated
diff --git a/pkg/quota/resources.go b/pkg/quota/resources.go
index 285d0420e1..4d0ccd5fa9 100644
--- a/pkg/quota/resources.go
+++ b/pkg/quota/resources.go
@@ -20,7 +20,7 @@ import (
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
"k8s.io/apimachinery/pkg/util/sets"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// Equals returns true if the two lists are equivalent
diff --git a/pkg/quota/resources_test.go b/pkg/quota/resources_test.go
index 5e4c11a9c7..d76abbad47 100644
--- a/pkg/quota/resources_test.go
+++ b/pkg/quota/resources_test.go
@@ -20,7 +20,7 @@ import (
"testing"
"k8s.io/apimachinery/pkg/api/resource"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func TestEquals(t *testing.T) {
diff --git a/pkg/registry/BUILD b/pkg/registry/BUILD
index 317340e016..f821d9b330 100644
--- a/pkg/registry/BUILD
+++ b/pkg/registry/BUILD
@@ -22,9 +22,10 @@ filegroup(
name = "all-srcs",
srcs = [
":package-srcs",
- "//pkg/registry/admissionregistration/externaladmissionhookconfiguration:all-srcs",
"//pkg/registry/admissionregistration/initializerconfiguration:all-srcs",
+ "//pkg/registry/admissionregistration/mutatingwebhookconfiguration:all-srcs",
"//pkg/registry/admissionregistration/rest:all-srcs",
+ "//pkg/registry/admissionregistration/validatingwebhookconfiguration:all-srcs",
"//pkg/registry/apps/controllerrevision:all-srcs",
"//pkg/registry/apps/rest:all-srcs",
"//pkg/registry/apps/statefulset:all-srcs",
diff --git a/pkg/registry/admissionregistration/externaladmissionhookconfiguration/strategy.go b/pkg/registry/admissionregistration/externaladmissionhookconfiguration/strategy.go
deleted file mode 100644
index 8fd2b63a60..0000000000
--- a/pkg/registry/admissionregistration/externaladmissionhookconfiguration/strategy.go
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
-Copyright 2014 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 externaladmissionhookconfiguration
-
-import (
- "reflect"
-
- "k8s.io/apimachinery/pkg/runtime"
- "k8s.io/apimachinery/pkg/util/validation/field"
- genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
- "k8s.io/apiserver/pkg/storage/names"
- "k8s.io/kubernetes/pkg/api/legacyscheme"
- "k8s.io/kubernetes/pkg/apis/admissionregistration"
- "k8s.io/kubernetes/pkg/apis/admissionregistration/validation"
-)
-
-// externaladmissionhookConfigurationStrategy implements verification logic for ExternalAdmissionHookConfiguration.
-type externaladmissionhookConfigurationStrategy struct {
- runtime.ObjectTyper
- names.NameGenerator
-}
-
-// Strategy is the default logic that applies when creating and updating ExternalAdmissionHookConfiguration objects.
-var Strategy = externaladmissionhookConfigurationStrategy{legacyscheme.Scheme, names.SimpleNameGenerator}
-
-// NamespaceScoped returns true because all ExternalAdmissionHookConfiguration' need to be within a namespace.
-func (externaladmissionhookConfigurationStrategy) NamespaceScoped() bool {
- return false
-}
-
-// PrepareForCreate clears the status of an ExternalAdmissionHookConfiguration before creation.
-func (externaladmissionhookConfigurationStrategy) PrepareForCreate(ctx genericapirequest.Context, obj runtime.Object) {
- ic := obj.(*admissionregistration.ExternalAdmissionHookConfiguration)
- ic.Generation = 1
-}
-
-// PrepareForUpdate clears fields that are not allowed to be set by end users on update.
-func (externaladmissionhookConfigurationStrategy) PrepareForUpdate(ctx genericapirequest.Context, obj, old runtime.Object) {
- newIC := obj.(*admissionregistration.ExternalAdmissionHookConfiguration)
- oldIC := old.(*admissionregistration.ExternalAdmissionHookConfiguration)
-
- // Any changes to the spec increment the generation number, any changes to the
- // status should reflect the generation number of the corresponding object.
- // See metav1.ObjectMeta description for more information on Generation.
- if !reflect.DeepEqual(oldIC.ExternalAdmissionHooks, newIC.ExternalAdmissionHooks) {
- newIC.Generation = oldIC.Generation + 1
- }
-}
-
-// Validate validates a new ExternalAdmissionHookConfiguration.
-func (externaladmissionhookConfigurationStrategy) Validate(ctx genericapirequest.Context, obj runtime.Object) field.ErrorList {
- ic := obj.(*admissionregistration.ExternalAdmissionHookConfiguration)
- return validation.ValidateExternalAdmissionHookConfiguration(ic)
-}
-
-// Canonicalize normalizes the object after validation.
-func (externaladmissionhookConfigurationStrategy) Canonicalize(obj runtime.Object) {
-}
-
-// AllowCreateOnUpdate is true for ExternalAdmissionHookConfiguration; this means you may create one with a PUT request.
-func (externaladmissionhookConfigurationStrategy) AllowCreateOnUpdate() bool {
- return false
-}
-
-// ValidateUpdate is the default update validation for an end user.
-func (externaladmissionhookConfigurationStrategy) ValidateUpdate(ctx genericapirequest.Context, obj, old runtime.Object) field.ErrorList {
- validationErrorList := validation.ValidateExternalAdmissionHookConfiguration(obj.(*admissionregistration.ExternalAdmissionHookConfiguration))
- updateErrorList := validation.ValidateExternalAdmissionHookConfigurationUpdate(obj.(*admissionregistration.ExternalAdmissionHookConfiguration), old.(*admissionregistration.ExternalAdmissionHookConfiguration))
- return append(validationErrorList, updateErrorList...)
-}
-
-// AllowUnconditionalUpdate is the default update policy for ExternalAdmissionHookConfiguration objects. Status update should
-// only be allowed if version match.
-func (externaladmissionhookConfigurationStrategy) AllowUnconditionalUpdate() bool {
- return false
-}
diff --git a/pkg/registry/admissionregistration/externaladmissionhookconfiguration/BUILD b/pkg/registry/admissionregistration/mutatingwebhookconfiguration/BUILD
similarity index 88%
rename from pkg/registry/admissionregistration/externaladmissionhookconfiguration/BUILD
rename to pkg/registry/admissionregistration/mutatingwebhookconfiguration/BUILD
index eb78808029..92ae7b566f 100644
--- a/pkg/registry/admissionregistration/externaladmissionhookconfiguration/BUILD
+++ b/pkg/registry/admissionregistration/mutatingwebhookconfiguration/BUILD
@@ -11,7 +11,7 @@ go_library(
"doc.go",
"strategy.go",
],
- importpath = "k8s.io/kubernetes/pkg/registry/admissionregistration/externaladmissionhookconfiguration",
+ importpath = "k8s.io/kubernetes/pkg/registry/admissionregistration/mutatingwebhookconfiguration",
deps = [
"//pkg/api/legacyscheme:go_default_library",
"//pkg/apis/admissionregistration:go_default_library",
@@ -34,7 +34,7 @@ filegroup(
name = "all-srcs",
srcs = [
":package-srcs",
- "//pkg/registry/admissionregistration/externaladmissionhookconfiguration/storage:all-srcs",
+ "//pkg/registry/admissionregistration/mutatingwebhookconfiguration/storage:all-srcs",
],
tags = ["automanaged"],
)
diff --git a/pkg/registry/admissionregistration/externaladmissionhookconfiguration/doc.go b/pkg/registry/admissionregistration/mutatingwebhookconfiguration/doc.go
similarity index 79%
rename from pkg/registry/admissionregistration/externaladmissionhookconfiguration/doc.go
rename to pkg/registry/admissionregistration/mutatingwebhookconfiguration/doc.go
index dcbd2a048c..1c56651af1 100644
--- a/pkg/registry/admissionregistration/externaladmissionhookconfiguration/doc.go
+++ b/pkg/registry/admissionregistration/mutatingwebhookconfiguration/doc.go
@@ -14,4 +14,4 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-package externaladmissionhookconfiguration // import "k8s.io/kubernetes/pkg/registry/admissionregistration/externaladmissionhookconfiguration"
+package mutatingwebhookconfiguration // import "k8s.io/kubernetes/pkg/registry/admissionregistration/mutatingwebhookconfiguration"
diff --git a/pkg/registry/admissionregistration/externaladmissionhookconfiguration/storage/BUILD b/pkg/registry/admissionregistration/mutatingwebhookconfiguration/storage/BUILD
similarity index 83%
rename from pkg/registry/admissionregistration/externaladmissionhookconfiguration/storage/BUILD
rename to pkg/registry/admissionregistration/mutatingwebhookconfiguration/storage/BUILD
index 14c2bdc1be..7cb1a472f9 100644
--- a/pkg/registry/admissionregistration/externaladmissionhookconfiguration/storage/BUILD
+++ b/pkg/registry/admissionregistration/mutatingwebhookconfiguration/storage/BUILD
@@ -8,10 +8,10 @@ load(
go_library(
name = "go_default_library",
srcs = ["storage.go"],
- importpath = "k8s.io/kubernetes/pkg/registry/admissionregistration/externaladmissionhookconfiguration/storage",
+ importpath = "k8s.io/kubernetes/pkg/registry/admissionregistration/mutatingwebhookconfiguration/storage",
deps = [
"//pkg/apis/admissionregistration:go_default_library",
- "//pkg/registry/admissionregistration/externaladmissionhookconfiguration:go_default_library",
+ "//pkg/registry/admissionregistration/mutatingwebhookconfiguration:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library",
"//vendor/k8s.io/apiserver/pkg/registry/generic/registry:go_default_library",
diff --git a/pkg/registry/admissionregistration/externaladmissionhookconfiguration/storage/storage.go b/pkg/registry/admissionregistration/mutatingwebhookconfiguration/storage/storage.go
similarity index 72%
rename from pkg/registry/admissionregistration/externaladmissionhookconfiguration/storage/storage.go
rename to pkg/registry/admissionregistration/mutatingwebhookconfiguration/storage/storage.go
index 08db5d8459..7f3be34927 100644
--- a/pkg/registry/admissionregistration/externaladmissionhookconfiguration/storage/storage.go
+++ b/pkg/registry/admissionregistration/mutatingwebhookconfiguration/storage/storage.go
@@ -21,7 +21,7 @@ import (
"k8s.io/apiserver/pkg/registry/generic"
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
"k8s.io/kubernetes/pkg/apis/admissionregistration"
- "k8s.io/kubernetes/pkg/registry/admissionregistration/externaladmissionhookconfiguration"
+ "k8s.io/kubernetes/pkg/registry/admissionregistration/mutatingwebhookconfiguration"
)
// rest implements a RESTStorage for pod disruption budgets against etcd
@@ -32,16 +32,16 @@ type REST struct {
// NewREST returns a RESTStorage object that will work against pod disruption budgets.
func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
store := &genericregistry.Store{
- NewFunc: func() runtime.Object { return &admissionregistration.ExternalAdmissionHookConfiguration{} },
- NewListFunc: func() runtime.Object { return &admissionregistration.ExternalAdmissionHookConfigurationList{} },
+ NewFunc: func() runtime.Object { return &admissionregistration.MutatingWebhookConfiguration{} },
+ NewListFunc: func() runtime.Object { return &admissionregistration.MutatingWebhookConfigurationList{} },
ObjectNameFunc: func(obj runtime.Object) (string, error) {
- return obj.(*admissionregistration.ExternalAdmissionHookConfiguration).Name, nil
+ return obj.(*admissionregistration.MutatingWebhookConfiguration).Name, nil
},
- DefaultQualifiedResource: admissionregistration.Resource("externaladmissionhookconfigurations"),
+ DefaultQualifiedResource: admissionregistration.Resource("mutatingwebhookconfigurations"),
- CreateStrategy: externaladmissionhookconfiguration.Strategy,
- UpdateStrategy: externaladmissionhookconfiguration.Strategy,
- DeleteStrategy: externaladmissionhookconfiguration.Strategy,
+ CreateStrategy: mutatingwebhookconfiguration.Strategy,
+ UpdateStrategy: mutatingwebhookconfiguration.Strategy,
+ DeleteStrategy: mutatingwebhookconfiguration.Strategy,
}
options := &generic.StoreOptions{RESTOptions: optsGetter}
if err := store.CompleteWithOptions(options); err != nil {
diff --git a/pkg/registry/admissionregistration/mutatingwebhookconfiguration/strategy.go b/pkg/registry/admissionregistration/mutatingwebhookconfiguration/strategy.go
new file mode 100644
index 0000000000..735980ac42
--- /dev/null
+++ b/pkg/registry/admissionregistration/mutatingwebhookconfiguration/strategy.go
@@ -0,0 +1,90 @@
+/*
+Copyright 2014 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 mutatingwebhookconfiguration
+
+import (
+ "reflect"
+
+ "k8s.io/apimachinery/pkg/runtime"
+ "k8s.io/apimachinery/pkg/util/validation/field"
+ genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
+ "k8s.io/apiserver/pkg/storage/names"
+ "k8s.io/kubernetes/pkg/api/legacyscheme"
+ "k8s.io/kubernetes/pkg/apis/admissionregistration"
+ "k8s.io/kubernetes/pkg/apis/admissionregistration/validation"
+)
+
+// mutatingWebhookConfigurationStrategy implements verification logic for mutatingWebhookConfiguration.
+type mutatingWebhookConfigurationStrategy struct {
+ runtime.ObjectTyper
+ names.NameGenerator
+}
+
+// Strategy is the default logic that applies when creating and updating mutatingWebhookConfiguration objects.
+var Strategy = mutatingWebhookConfigurationStrategy{legacyscheme.Scheme, names.SimpleNameGenerator}
+
+// NamespaceScoped returns true because all mutatingWebhookConfiguration' need to be within a namespace.
+func (mutatingWebhookConfigurationStrategy) NamespaceScoped() bool {
+ return false
+}
+
+// PrepareForCreate clears the status of an mutatingWebhookConfiguration before creation.
+func (mutatingWebhookConfigurationStrategy) PrepareForCreate(ctx genericapirequest.Context, obj runtime.Object) {
+ ic := obj.(*admissionregistration.MutatingWebhookConfiguration)
+ ic.Generation = 1
+}
+
+// PrepareForUpdate clears fields that are not allowed to be set by end users on update.
+func (mutatingWebhookConfigurationStrategy) PrepareForUpdate(ctx genericapirequest.Context, obj, old runtime.Object) {
+ newIC := obj.(*admissionregistration.MutatingWebhookConfiguration)
+ oldIC := old.(*admissionregistration.MutatingWebhookConfiguration)
+
+ // Any changes to the spec increment the generation number, any changes to the
+ // status should reflect the generation number of the corresponding object.
+ // See metav1.ObjectMeta description for more information on Generation.
+ if !reflect.DeepEqual(oldIC.Webhooks, newIC.Webhooks) {
+ newIC.Generation = oldIC.Generation + 1
+ }
+}
+
+// Validate validates a new mutatingWebhookConfiguration.
+func (mutatingWebhookConfigurationStrategy) Validate(ctx genericapirequest.Context, obj runtime.Object) field.ErrorList {
+ ic := obj.(*admissionregistration.MutatingWebhookConfiguration)
+ return validation.ValidateMutatingWebhookConfiguration(ic)
+}
+
+// Canonicalize normalizes the object after validation.
+func (mutatingWebhookConfigurationStrategy) Canonicalize(obj runtime.Object) {
+}
+
+// AllowCreateOnUpdate is true for mutatingWebhookConfiguration; this means you may create one with a PUT request.
+func (mutatingWebhookConfigurationStrategy) AllowCreateOnUpdate() bool {
+ return false
+}
+
+// ValidateUpdate is the default update validation for an end user.
+func (mutatingWebhookConfigurationStrategy) ValidateUpdate(ctx genericapirequest.Context, obj, old runtime.Object) field.ErrorList {
+ validationErrorList := validation.ValidateMutatingWebhookConfiguration(obj.(*admissionregistration.MutatingWebhookConfiguration))
+ updateErrorList := validation.ValidateMutatingWebhookConfigurationUpdate(obj.(*admissionregistration.MutatingWebhookConfiguration), old.(*admissionregistration.MutatingWebhookConfiguration))
+ return append(validationErrorList, updateErrorList...)
+}
+
+// AllowUnconditionalUpdate is the default update policy for mutatingWebhookConfiguration objects. Status update should
+// only be allowed if version match.
+func (mutatingWebhookConfigurationStrategy) AllowUnconditionalUpdate() bool {
+ return false
+}
diff --git a/pkg/registry/admissionregistration/rest/BUILD b/pkg/registry/admissionregistration/rest/BUILD
index 2bc6b9d341..3d0df07063 100644
--- a/pkg/registry/admissionregistration/rest/BUILD
+++ b/pkg/registry/admissionregistration/rest/BUILD
@@ -12,8 +12,9 @@ go_library(
deps = [
"//pkg/api/legacyscheme:go_default_library",
"//pkg/apis/admissionregistration:go_default_library",
- "//pkg/registry/admissionregistration/externaladmissionhookconfiguration/storage:go_default_library",
"//pkg/registry/admissionregistration/initializerconfiguration/storage:go_default_library",
+ "//pkg/registry/admissionregistration/mutatingwebhookconfiguration/storage:go_default_library",
+ "//pkg/registry/admissionregistration/validatingwebhookconfiguration/storage:go_default_library",
"//vendor/k8s.io/api/admissionregistration/v1alpha1:go_default_library",
"//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library",
"//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library",
diff --git a/pkg/registry/admissionregistration/rest/storage_apiserver.go b/pkg/registry/admissionregistration/rest/storage_apiserver.go
index 70169d2e7b..9604e22d66 100644
--- a/pkg/registry/admissionregistration/rest/storage_apiserver.go
+++ b/pkg/registry/admissionregistration/rest/storage_apiserver.go
@@ -24,8 +24,9 @@ import (
serverstorage "k8s.io/apiserver/pkg/server/storage"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/apis/admissionregistration"
- externaladmissionhookconfigurationstorage "k8s.io/kubernetes/pkg/registry/admissionregistration/externaladmissionhookconfiguration/storage"
initializerconfigurationstorage "k8s.io/kubernetes/pkg/registry/admissionregistration/initializerconfiguration/storage"
+ mutatingwebhookconfigurationstorage "k8s.io/kubernetes/pkg/registry/admissionregistration/mutatingwebhookconfiguration/storage"
+ validatingwebhookconfigurationstorage "k8s.io/kubernetes/pkg/registry/admissionregistration/validatingwebhookconfiguration/storage"
)
type RESTStorageProvider struct{}
@@ -49,9 +50,13 @@ func (p RESTStorageProvider) v1alpha1Storage(apiResourceConfigSource serverstora
s := initializerconfigurationstorage.NewREST(restOptionsGetter)
storage["initializerconfigurations"] = s
}
- if apiResourceConfigSource.ResourceEnabled(version.WithResource("externaladmissionhookconfigurations")) {
- s := externaladmissionhookconfigurationstorage.NewREST(restOptionsGetter)
- storage["externaladmissionhookconfigurations"] = s
+ if apiResourceConfigSource.ResourceEnabled(version.WithResource("validatingwebhookconfigurations")) {
+ s := validatingwebhookconfigurationstorage.NewREST(restOptionsGetter)
+ storage["validatingwebhookconfigurations"] = s
+ }
+ if apiResourceConfigSource.ResourceEnabled(version.WithResource("mutatingwebhookconfigurations")) {
+ s := mutatingwebhookconfigurationstorage.NewREST(restOptionsGetter)
+ storage["mutatingwebhookconfigurations"] = s
}
return storage
}
diff --git a/pkg/registry/admissionregistration/validatingwebhookconfiguration/BUILD b/pkg/registry/admissionregistration/validatingwebhookconfiguration/BUILD
new file mode 100644
index 0000000000..0b07d30286
--- /dev/null
+++ b/pkg/registry/admissionregistration/validatingwebhookconfiguration/BUILD
@@ -0,0 +1,40 @@
+package(default_visibility = ["//visibility:public"])
+
+load(
+ "@io_bazel_rules_go//go:def.bzl",
+ "go_library",
+)
+
+go_library(
+ name = "go_default_library",
+ srcs = [
+ "doc.go",
+ "strategy.go",
+ ],
+ importpath = "k8s.io/kubernetes/pkg/registry/admissionregistration/validatingwebhookconfiguration",
+ deps = [
+ "//pkg/api/legacyscheme:go_default_library",
+ "//pkg/apis/admissionregistration:go_default_library",
+ "//pkg/apis/admissionregistration/validation:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
+ "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
+ "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library",
+ ],
+)
+
+filegroup(
+ name = "package-srcs",
+ srcs = glob(["**"]),
+ tags = ["automanaged"],
+ visibility = ["//visibility:private"],
+)
+
+filegroup(
+ name = "all-srcs",
+ srcs = [
+ ":package-srcs",
+ "//pkg/registry/admissionregistration/validatingwebhookconfiguration/storage:all-srcs",
+ ],
+ tags = ["automanaged"],
+)
diff --git a/pkg/registry/admissionregistration/validatingwebhookconfiguration/doc.go b/pkg/registry/admissionregistration/validatingwebhookconfiguration/doc.go
new file mode 100644
index 0000000000..d23152a4b4
--- /dev/null
+++ b/pkg/registry/admissionregistration/validatingwebhookconfiguration/doc.go
@@ -0,0 +1,17 @@
+/*
+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 validatingwebhookconfiguration // import "k8s.io/kubernetes/pkg/registry/admissionregistration/validatingwebhookconfiguration"
diff --git a/pkg/registry/admissionregistration/validatingwebhookconfiguration/storage/BUILD b/pkg/registry/admissionregistration/validatingwebhookconfiguration/storage/BUILD
new file mode 100644
index 0000000000..30da94ee1a
--- /dev/null
+++ b/pkg/registry/admissionregistration/validatingwebhookconfiguration/storage/BUILD
@@ -0,0 +1,32 @@
+package(default_visibility = ["//visibility:public"])
+
+load(
+ "@io_bazel_rules_go//go:def.bzl",
+ "go_library",
+)
+
+go_library(
+ name = "go_default_library",
+ srcs = ["storage.go"],
+ importpath = "k8s.io/kubernetes/pkg/registry/admissionregistration/validatingwebhookconfiguration/storage",
+ deps = [
+ "//pkg/apis/admissionregistration:go_default_library",
+ "//pkg/registry/admissionregistration/validatingwebhookconfiguration:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
+ "//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library",
+ "//vendor/k8s.io/apiserver/pkg/registry/generic/registry:go_default_library",
+ ],
+)
+
+filegroup(
+ name = "package-srcs",
+ srcs = glob(["**"]),
+ tags = ["automanaged"],
+ visibility = ["//visibility:private"],
+)
+
+filegroup(
+ name = "all-srcs",
+ srcs = [":package-srcs"],
+ tags = ["automanaged"],
+)
diff --git a/pkg/registry/admissionregistration/validatingwebhookconfiguration/storage/storage.go b/pkg/registry/admissionregistration/validatingwebhookconfiguration/storage/storage.go
new file mode 100644
index 0000000000..6a0bee2f06
--- /dev/null
+++ b/pkg/registry/admissionregistration/validatingwebhookconfiguration/storage/storage.go
@@ -0,0 +1,51 @@
+/*
+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 storage
+
+import (
+ "k8s.io/apimachinery/pkg/runtime"
+ "k8s.io/apiserver/pkg/registry/generic"
+ genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
+ "k8s.io/kubernetes/pkg/apis/admissionregistration"
+ "k8s.io/kubernetes/pkg/registry/admissionregistration/validatingwebhookconfiguration"
+)
+
+// rest implements a RESTStorage for pod disruption budgets against etcd
+type REST struct {
+ *genericregistry.Store
+}
+
+// NewREST returns a RESTStorage object that will work against pod disruption budgets.
+func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
+ store := &genericregistry.Store{
+ NewFunc: func() runtime.Object { return &admissionregistration.ValidatingWebhookConfiguration{} },
+ NewListFunc: func() runtime.Object { return &admissionregistration.ValidatingWebhookConfigurationList{} },
+ ObjectNameFunc: func(obj runtime.Object) (string, error) {
+ return obj.(*admissionregistration.ValidatingWebhookConfiguration).Name, nil
+ },
+ DefaultQualifiedResource: admissionregistration.Resource("validatingwebhookconfigurations"),
+
+ CreateStrategy: validatingwebhookconfiguration.Strategy,
+ UpdateStrategy: validatingwebhookconfiguration.Strategy,
+ DeleteStrategy: validatingwebhookconfiguration.Strategy,
+ }
+ options := &generic.StoreOptions{RESTOptions: optsGetter}
+ if err := store.CompleteWithOptions(options); err != nil {
+ panic(err) // TODO: Propagate error up
+ }
+ return &REST{store}
+}
diff --git a/pkg/registry/admissionregistration/validatingwebhookconfiguration/strategy.go b/pkg/registry/admissionregistration/validatingwebhookconfiguration/strategy.go
new file mode 100644
index 0000000000..e59ecc9895
--- /dev/null
+++ b/pkg/registry/admissionregistration/validatingwebhookconfiguration/strategy.go
@@ -0,0 +1,90 @@
+/*
+Copyright 2014 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 validatingwebhookconfiguration
+
+import (
+ "reflect"
+
+ "k8s.io/apimachinery/pkg/runtime"
+ "k8s.io/apimachinery/pkg/util/validation/field"
+ genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
+ "k8s.io/apiserver/pkg/storage/names"
+ "k8s.io/kubernetes/pkg/api/legacyscheme"
+ "k8s.io/kubernetes/pkg/apis/admissionregistration"
+ "k8s.io/kubernetes/pkg/apis/admissionregistration/validation"
+)
+
+// validatingWebhookConfigurationStrategy implements verification logic for validatingWebhookConfiguration.
+type validatingWebhookConfigurationStrategy struct {
+ runtime.ObjectTyper
+ names.NameGenerator
+}
+
+// Strategy is the default logic that applies when creating and updating validatingWebhookConfiguration objects.
+var Strategy = validatingWebhookConfigurationStrategy{legacyscheme.Scheme, names.SimpleNameGenerator}
+
+// NamespaceScoped returns true because all validatingWebhookConfiguration' need to be within a namespace.
+func (validatingWebhookConfigurationStrategy) NamespaceScoped() bool {
+ return false
+}
+
+// PrepareForCreate clears the status of an validatingWebhookConfiguration before creation.
+func (validatingWebhookConfigurationStrategy) PrepareForCreate(ctx genericapirequest.Context, obj runtime.Object) {
+ ic := obj.(*admissionregistration.ValidatingWebhookConfiguration)
+ ic.Generation = 1
+}
+
+// PrepareForUpdate clears fields that are not allowed to be set by end users on update.
+func (validatingWebhookConfigurationStrategy) PrepareForUpdate(ctx genericapirequest.Context, obj, old runtime.Object) {
+ newIC := obj.(*admissionregistration.ValidatingWebhookConfiguration)
+ oldIC := old.(*admissionregistration.ValidatingWebhookConfiguration)
+
+ // Any changes to the spec increment the generation number, any changes to the
+ // status should reflect the generation number of the corresponding object.
+ // See metav1.ObjectMeta description for more information on Generation.
+ if !reflect.DeepEqual(oldIC.Webhooks, newIC.Webhooks) {
+ newIC.Generation = oldIC.Generation + 1
+ }
+}
+
+// Validate validates a new validatingWebhookConfiguration.
+func (validatingWebhookConfigurationStrategy) Validate(ctx genericapirequest.Context, obj runtime.Object) field.ErrorList {
+ ic := obj.(*admissionregistration.ValidatingWebhookConfiguration)
+ return validation.ValidateValidatingWebhookConfiguration(ic)
+}
+
+// Canonicalize normalizes the object after validation.
+func (validatingWebhookConfigurationStrategy) Canonicalize(obj runtime.Object) {
+}
+
+// AllowCreateOnUpdate is true for validatingWebhookConfiguration; this means you may create one with a PUT request.
+func (validatingWebhookConfigurationStrategy) AllowCreateOnUpdate() bool {
+ return false
+}
+
+// ValidateUpdate is the default update validation for an end user.
+func (validatingWebhookConfigurationStrategy) ValidateUpdate(ctx genericapirequest.Context, obj, old runtime.Object) field.ErrorList {
+ validationErrorList := validation.ValidateValidatingWebhookConfiguration(obj.(*admissionregistration.ValidatingWebhookConfiguration))
+ updateErrorList := validation.ValidateValidatingWebhookConfigurationUpdate(obj.(*admissionregistration.ValidatingWebhookConfiguration), old.(*admissionregistration.ValidatingWebhookConfiguration))
+ return append(validationErrorList, updateErrorList...)
+}
+
+// AllowUnconditionalUpdate is the default update policy for validatingWebhookConfiguration objects. Status update should
+// only be allowed if version match.
+func (validatingWebhookConfigurationStrategy) AllowUnconditionalUpdate() bool {
+ return false
+}
diff --git a/pkg/registry/apps/controllerrevision/BUILD b/pkg/registry/apps/controllerrevision/BUILD
index 007504005d..24e6e13da2 100644
--- a/pkg/registry/apps/controllerrevision/BUILD
+++ b/pkg/registry/apps/controllerrevision/BUILD
@@ -12,8 +12,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/apps/controllerrevision",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/apis/apps:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
diff --git a/pkg/registry/apps/controllerrevision/storage/BUILD b/pkg/registry/apps/controllerrevision/storage/BUILD
index 53544f5dc3..52e8c8d438 100644
--- a/pkg/registry/apps/controllerrevision/storage/BUILD
+++ b/pkg/registry/apps/controllerrevision/storage/BUILD
@@ -12,8 +12,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/apps/controllerrevision/storage",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/apis/apps:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/registrytest:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/fields:go_default_library",
diff --git a/pkg/registry/apps/controllerrevision/storage/storage_test.go b/pkg/registry/apps/controllerrevision/storage/storage_test.go
index 05abb7a600..99d42c18d8 100644
--- a/pkg/registry/apps/controllerrevision/storage/storage_test.go
+++ b/pkg/registry/apps/controllerrevision/storage/storage_test.go
@@ -25,8 +25,8 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apiserver/pkg/registry/generic"
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/apps"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/registrytest"
)
diff --git a/pkg/registry/apps/controllerrevision/strategy_test.go b/pkg/registry/apps/controllerrevision/strategy_test.go
index 594e33277a..ed9f886e89 100644
--- a/pkg/registry/apps/controllerrevision/strategy_test.go
+++ b/pkg/registry/apps/controllerrevision/strategy_test.go
@@ -22,8 +22,8 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/apps"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func TestStrategy_NamespaceScoped(t *testing.T) {
diff --git a/pkg/registry/apps/rest/storage_apps.go b/pkg/registry/apps/rest/storage_apps.go
index 10b1c8a0bf..f77900e881 100644
--- a/pkg/registry/apps/rest/storage_apps.go
+++ b/pkg/registry/apps/rest/storage_apps.go
@@ -122,11 +122,13 @@ func (p RESTStorageProvider) v1Storage(apiResourceConfigSource serverstorage.API
deploymentStorage := deploymentstore.NewStorage(restOptionsGetter)
storage["deployments"] = deploymentStorage.Deployment
storage["deployments/status"] = deploymentStorage.Status
+ storage["deployments/scale"] = deploymentStorage.Scale
}
if apiResourceConfigSource.ResourceEnabled(version.WithResource("statefulsets")) {
statefulSetStorage := statefulsetstore.NewStorage(restOptionsGetter)
storage["statefulsets"] = statefulSetStorage.StatefulSet
storage["statefulsets/status"] = statefulSetStorage.Status
+ storage["statefulsets/scale"] = statefulSetStorage.Scale
}
if apiResourceConfigSource.ResourceEnabled(version.WithResource("daemonsets")) {
daemonSetStorage, daemonSetStatusStorage := daemonsetstore.NewREST(restOptionsGetter)
@@ -137,6 +139,7 @@ func (p RESTStorageProvider) v1Storage(apiResourceConfigSource serverstorage.API
replicaSetStorage := replicasetstore.NewStorage(restOptionsGetter)
storage["replicasets"] = replicaSetStorage.ReplicaSet
storage["replicasets/status"] = replicaSetStorage.Status
+ storage["replicasets/scale"] = replicaSetStorage.Scale
}
if apiResourceConfigSource.ResourceEnabled(version.WithResource("controllerrevisions")) {
historyStorage := controllerrevisionsstore.NewREST(restOptionsGetter)
diff --git a/pkg/registry/apps/statefulset/BUILD b/pkg/registry/apps/statefulset/BUILD
index d3e665853d..0a227ada4c 100644
--- a/pkg/registry/apps/statefulset/BUILD
+++ b/pkg/registry/apps/statefulset/BUILD
@@ -38,8 +38,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/apps/statefulset",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/apis/apps:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
"//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library",
diff --git a/pkg/registry/apps/statefulset/storage/BUILD b/pkg/registry/apps/statefulset/storage/BUILD
index f9bccc8b9c..e9699e9119 100644
--- a/pkg/registry/apps/statefulset/storage/BUILD
+++ b/pkg/registry/apps/statefulset/storage/BUILD
@@ -12,9 +12,9 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/apps/statefulset/storage",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/apis/apps:go_default_library",
- "//pkg/apis/extensions:go_default_library",
+ "//pkg/apis/autoscaling:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/registrytest:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
@@ -37,9 +37,10 @@ go_library(
"//pkg/apis/apps:go_default_library",
"//pkg/apis/apps/v1beta1:go_default_library",
"//pkg/apis/apps/v1beta2:go_default_library",
+ "//pkg/apis/autoscaling:go_default_library",
"//pkg/apis/autoscaling/v1:go_default_library",
+ "//pkg/apis/autoscaling/validation:go_default_library",
"//pkg/apis/extensions:go_default_library",
- "//pkg/apis/extensions/validation:go_default_library",
"//pkg/printers:go_default_library",
"//pkg/printers/internalversion:go_default_library",
"//pkg/printers/storage:go_default_library",
diff --git a/pkg/registry/apps/statefulset/storage/storage.go b/pkg/registry/apps/statefulset/storage/storage.go
index 6adce290dc..d97f17270e 100644
--- a/pkg/registry/apps/statefulset/storage/storage.go
+++ b/pkg/registry/apps/statefulset/storage/storage.go
@@ -30,9 +30,10 @@ import (
"k8s.io/kubernetes/pkg/apis/apps"
appsv1beta1 "k8s.io/kubernetes/pkg/apis/apps/v1beta1"
appsv1beta2 "k8s.io/kubernetes/pkg/apis/apps/v1beta2"
+ "k8s.io/kubernetes/pkg/apis/autoscaling"
autoscalingv1 "k8s.io/kubernetes/pkg/apis/autoscaling/v1"
+ autoscalingvalidation "k8s.io/kubernetes/pkg/apis/autoscaling/validation"
"k8s.io/kubernetes/pkg/apis/extensions"
- extvalidation "k8s.io/kubernetes/pkg/apis/extensions/validation"
"k8s.io/kubernetes/pkg/printers"
printersinternal "k8s.io/kubernetes/pkg/printers/internalversion"
printerstorage "k8s.io/kubernetes/pkg/printers/storage"
@@ -141,7 +142,7 @@ func (r *ScaleREST) GroupVersionKind(containingGV schema.GroupVersion) schema.Gr
// New creates a new Scale object
func (r *ScaleREST) New() runtime.Object {
- return &extensions.Scale{}
+ return &autoscaling.Scale{}
}
func (r *ScaleREST) Get(ctx genericapirequest.Context, name string, options *metav1.GetOptions) (runtime.Object, error) {
@@ -174,12 +175,12 @@ func (r *ScaleREST) Update(ctx genericapirequest.Context, name string, objInfo r
if obj == nil {
return nil, false, errors.NewBadRequest(fmt.Sprintf("nil update passed to Scale"))
}
- scale, ok := obj.(*extensions.Scale)
+ scale, ok := obj.(*autoscaling.Scale)
if !ok {
return nil, false, errors.NewBadRequest(fmt.Sprintf("wrong object passed to Scale update: %v", obj))
}
- if errs := extvalidation.ValidateScale(scale); len(errs) > 0 {
+ if errs := autoscalingvalidation.ValidateScale(scale); len(errs) > 0 {
return nil, false, errors.NewInvalid(extensions.Kind("Scale"), scale.Name, errs)
}
@@ -197,8 +198,12 @@ func (r *ScaleREST) Update(ctx genericapirequest.Context, name string, objInfo r
}
// scaleFromStatefulSet returns a scale subresource for a statefulset.
-func scaleFromStatefulSet(ss *apps.StatefulSet) (*extensions.Scale, error) {
- return &extensions.Scale{
+func scaleFromStatefulSet(ss *apps.StatefulSet) (*autoscaling.Scale, error) {
+ selector, err := metav1.LabelSelectorAsSelector(ss.Spec.Selector)
+ if err != nil {
+ return nil, err
+ }
+ return &autoscaling.Scale{
// TODO: Create a variant of ObjectMeta type that only contains the fields below.
ObjectMeta: metav1.ObjectMeta{
Name: ss.Name,
@@ -207,12 +212,12 @@ func scaleFromStatefulSet(ss *apps.StatefulSet) (*extensions.Scale, error) {
ResourceVersion: ss.ResourceVersion,
CreationTimestamp: ss.CreationTimestamp,
},
- Spec: extensions.ScaleSpec{
+ Spec: autoscaling.ScaleSpec{
Replicas: ss.Spec.Replicas,
},
- Status: extensions.ScaleStatus{
+ Status: autoscaling.ScaleStatus{
Replicas: ss.Status.Replicas,
- Selector: ss.Spec.Selector,
+ Selector: selector.String(),
},
}, nil
}
diff --git a/pkg/registry/apps/statefulset/storage/storage_test.go b/pkg/registry/apps/statefulset/storage/storage_test.go
index 75761d01e5..1adaa44480 100644
--- a/pkg/registry/apps/statefulset/storage/storage_test.go
+++ b/pkg/registry/apps/statefulset/storage/storage_test.go
@@ -29,9 +29,9 @@ import (
"k8s.io/apiserver/pkg/registry/generic"
"k8s.io/apiserver/pkg/registry/rest"
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/apps"
- "k8s.io/kubernetes/pkg/apis/extensions"
+ "k8s.io/kubernetes/pkg/apis/autoscaling"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/registrytest"
)
@@ -224,7 +224,11 @@ func TestScaleGet(t *testing.T) {
t.Fatalf("error setting new statefulset (key: %s) %v: %v", key, validStatefulSet, err)
}
- want := &extensions.Scale{
+ selector, err := metav1.LabelSelectorAsSelector(validStatefulSet.Spec.Selector)
+ if err != nil {
+ t.Fatal(err)
+ }
+ want := &autoscaling.Scale{
ObjectMeta: metav1.ObjectMeta{
Name: name,
Namespace: metav1.NamespaceDefault,
@@ -232,16 +236,16 @@ func TestScaleGet(t *testing.T) {
ResourceVersion: sts.ResourceVersion,
CreationTimestamp: sts.CreationTimestamp,
},
- Spec: extensions.ScaleSpec{
+ Spec: autoscaling.ScaleSpec{
Replicas: validStatefulSet.Spec.Replicas,
},
- Status: extensions.ScaleStatus{
+ Status: autoscaling.ScaleStatus{
Replicas: validStatefulSet.Status.Replicas,
- Selector: validStatefulSet.Spec.Selector,
+ Selector: selector.String(),
},
}
obj, err := storage.Scale.Get(ctx, name, &metav1.GetOptions{})
- got := obj.(*extensions.Scale)
+ got := obj.(*autoscaling.Scale)
if err != nil {
t.Fatalf("error fetching scale for %s: %v", name, err)
}
@@ -264,12 +268,12 @@ func TestScaleUpdate(t *testing.T) {
t.Fatalf("error setting new statefulset (key: %s) %v: %v", key, validStatefulSet, err)
}
replicas := 12
- update := extensions.Scale{
+ update := autoscaling.Scale{
ObjectMeta: metav1.ObjectMeta{
Name: name,
Namespace: metav1.NamespaceDefault,
},
- Spec: extensions.ScaleSpec{
+ Spec: autoscaling.ScaleSpec{
Replicas: int32(replicas),
},
}
@@ -282,7 +286,7 @@ func TestScaleUpdate(t *testing.T) {
if err != nil {
t.Fatalf("error fetching scale for %s: %v", name, err)
}
- scale := obj.(*extensions.Scale)
+ scale := obj.(*autoscaling.Scale)
if scale.Spec.Replicas != int32(replicas) {
t.Errorf("wrong replicas count expected: %d got: %d", replicas, scale.Spec.Replicas)
}
diff --git a/pkg/registry/apps/statefulset/strategy_test.go b/pkg/registry/apps/statefulset/strategy_test.go
index 6c65b687e1..9e99e7e7e8 100644
--- a/pkg/registry/apps/statefulset/strategy_test.go
+++ b/pkg/registry/apps/statefulset/strategy_test.go
@@ -22,8 +22,8 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/apps"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func TestStatefulSetStrategy(t *testing.T) {
diff --git a/pkg/registry/autoscaling/horizontalpodautoscaler/storage/BUILD b/pkg/registry/autoscaling/horizontalpodautoscaler/storage/BUILD
index 3ec7da1e04..5b063c3c64 100644
--- a/pkg/registry/autoscaling/horizontalpodautoscaler/storage/BUILD
+++ b/pkg/registry/autoscaling/horizontalpodautoscaler/storage/BUILD
@@ -12,8 +12,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/autoscaling/horizontalpodautoscaler/storage",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/apis/autoscaling:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/registrytest:go_default_library",
"//vendor/k8s.io/api/autoscaling/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
diff --git a/pkg/registry/autoscaling/horizontalpodautoscaler/storage/storage_test.go b/pkg/registry/autoscaling/horizontalpodautoscaler/storage/storage_test.go
index 6e4ed8b84a..3c97343d47 100644
--- a/pkg/registry/autoscaling/horizontalpodautoscaler/storage/storage_test.go
+++ b/pkg/registry/autoscaling/horizontalpodautoscaler/storage/storage_test.go
@@ -20,8 +20,8 @@ import (
"testing"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/autoscaling"
+ api "k8s.io/kubernetes/pkg/apis/core"
// Ensure that autoscaling/v1 package is initialized.
_ "k8s.io/api/autoscaling/v1"
"k8s.io/apimachinery/pkg/fields"
diff --git a/pkg/registry/batch/cronjob/BUILD b/pkg/registry/batch/cronjob/BUILD
index b5931e5aea..4b037adf2d 100644
--- a/pkg/registry/batch/cronjob/BUILD
+++ b/pkg/registry/batch/cronjob/BUILD
@@ -32,8 +32,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/batch/cronjob",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/apis/batch:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
"//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library",
diff --git a/pkg/registry/batch/cronjob/storage/BUILD b/pkg/registry/batch/cronjob/storage/BUILD
index 0cb9584c3e..e9a9934ed5 100644
--- a/pkg/registry/batch/cronjob/storage/BUILD
+++ b/pkg/registry/batch/cronjob/storage/BUILD
@@ -12,9 +12,9 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/batch/cronjob/storage",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/apis/batch:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/registrytest:go_default_library",
"//vendor/k8s.io/api/batch/v2alpha1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
diff --git a/pkg/registry/batch/cronjob/storage/storage_test.go b/pkg/registry/batch/cronjob/storage/storage_test.go
index 780d0baaf5..55269046bb 100644
--- a/pkg/registry/batch/cronjob/storage/storage_test.go
+++ b/pkg/registry/batch/cronjob/storage/storage_test.go
@@ -26,9 +26,9 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apiserver/pkg/registry/generic"
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/apis/batch"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/registrytest"
)
diff --git a/pkg/registry/batch/cronjob/strategy_test.go b/pkg/registry/batch/cronjob/strategy_test.go
index 4dd34ee4ad..0df11e384d 100644
--- a/pkg/registry/batch/cronjob/strategy_test.go
+++ b/pkg/registry/batch/cronjob/strategy_test.go
@@ -22,8 +22,8 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/batch"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func newBool(a bool) *bool {
diff --git a/pkg/registry/batch/job/BUILD b/pkg/registry/batch/job/BUILD
index 9927eba58c..d5d3f23ffb 100644
--- a/pkg/registry/batch/job/BUILD
+++ b/pkg/registry/batch/job/BUILD
@@ -37,10 +37,10 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/batch/job",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/api/testing:go_default_library",
"//pkg/apis/batch:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
diff --git a/pkg/registry/batch/job/storage/BUILD b/pkg/registry/batch/job/storage/BUILD
index 75abed92de..35773420de 100644
--- a/pkg/registry/batch/job/storage/BUILD
+++ b/pkg/registry/batch/job/storage/BUILD
@@ -12,8 +12,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/batch/job/storage",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/apis/batch:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/registrytest:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/fields:go_default_library",
diff --git a/pkg/registry/batch/job/storage/storage_test.go b/pkg/registry/batch/job/storage/storage_test.go
index 963977eb25..ec78633beb 100644
--- a/pkg/registry/batch/job/storage/storage_test.go
+++ b/pkg/registry/batch/job/storage/storage_test.go
@@ -25,8 +25,8 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apiserver/pkg/registry/generic"
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/batch"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/registrytest"
)
diff --git a/pkg/registry/batch/job/strategy_test.go b/pkg/registry/batch/job/strategy_test.go
index 1586c4994d..f55ded1552 100644
--- a/pkg/registry/batch/job/strategy_test.go
+++ b/pkg/registry/batch/job/strategy_test.go
@@ -24,10 +24,10 @@ import (
"k8s.io/apimachinery/pkg/types"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testapi"
apitesting "k8s.io/kubernetes/pkg/api/testing"
"k8s.io/kubernetes/pkg/apis/batch"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func newBool(a bool) *bool {
diff --git a/pkg/registry/core/componentstatus/BUILD b/pkg/registry/core/componentstatus/BUILD
index 5dbb6bf340..48e5f6c73b 100644
--- a/pkg/registry/core/componentstatus/BUILD
+++ b/pkg/registry/core/componentstatus/BUILD
@@ -15,7 +15,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/registry/core/componentstatus",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/probe:go_default_library",
"//pkg/probe/http:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library",
@@ -36,7 +36,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/componentstatus",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/probe:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library",
diff --git a/pkg/registry/core/componentstatus/rest.go b/pkg/registry/core/componentstatus/rest.go
index e0f0e18e4e..c67b42ead7 100644
--- a/pkg/registry/core/componentstatus/rest.go
+++ b/pkg/registry/core/componentstatus/rest.go
@@ -25,7 +25,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/probe"
)
diff --git a/pkg/registry/core/componentstatus/rest_test.go b/pkg/registry/core/componentstatus/rest_test.go
index cf643d3690..3b2194f56e 100644
--- a/pkg/registry/core/componentstatus/rest_test.go
+++ b/pkg/registry/core/componentstatus/rest_test.go
@@ -29,7 +29,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/diff"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/probe"
)
diff --git a/pkg/registry/core/configmap/BUILD b/pkg/registry/core/configmap/BUILD
index c8d4179b13..7af8141a14 100644
--- a/pkg/registry/core/configmap/BUILD
+++ b/pkg/registry/core/configmap/BUILD
@@ -15,9 +15,9 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/registry/core/configmap",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
@@ -35,7 +35,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/configmap",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
],
diff --git a/pkg/registry/core/configmap/registry.go b/pkg/registry/core/configmap/registry.go
index 0006f87095..440300f2dc 100644
--- a/pkg/registry/core/configmap/registry.go
+++ b/pkg/registry/core/configmap/registry.go
@@ -22,7 +22,7 @@ import (
"k8s.io/apimachinery/pkg/watch"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// Registry is an interface for things that know how to store ConfigMaps.
diff --git a/pkg/registry/core/configmap/storage/BUILD b/pkg/registry/core/configmap/storage/BUILD
index a39c394132..b3d46baada 100644
--- a/pkg/registry/core/configmap/storage/BUILD
+++ b/pkg/registry/core/configmap/storage/BUILD
@@ -12,7 +12,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/configmap/storage",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/registrytest:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/fields:go_default_library",
@@ -28,7 +28,7 @@ go_library(
srcs = ["storage.go"],
importpath = "k8s.io/kubernetes/pkg/registry/core/configmap/storage",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/core/configmap:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library",
diff --git a/pkg/registry/core/configmap/storage/storage.go b/pkg/registry/core/configmap/storage/storage.go
index 14e3f815a7..50855e3640 100644
--- a/pkg/registry/core/configmap/storage/storage.go
+++ b/pkg/registry/core/configmap/storage/storage.go
@@ -21,7 +21,7 @@ import (
"k8s.io/apiserver/pkg/registry/generic"
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/core/configmap"
)
diff --git a/pkg/registry/core/configmap/storage/storage_test.go b/pkg/registry/core/configmap/storage/storage_test.go
index 9daebb7b1c..f2f3fe0da7 100644
--- a/pkg/registry/core/configmap/storage/storage_test.go
+++ b/pkg/registry/core/configmap/storage/storage_test.go
@@ -25,7 +25,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apiserver/pkg/registry/generic"
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/registrytest"
)
diff --git a/pkg/registry/core/configmap/strategy.go b/pkg/registry/core/configmap/strategy.go
index c5da62b4de..58f57f4f9c 100644
--- a/pkg/registry/core/configmap/strategy.go
+++ b/pkg/registry/core/configmap/strategy.go
@@ -22,9 +22,9 @@ import (
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/registry/rest"
"k8s.io/apiserver/pkg/storage/names"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
- "k8s.io/kubernetes/pkg/api/validation"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/validation"
)
// strategy implements behavior for ConfigMap objects
diff --git a/pkg/registry/core/configmap/strategy_test.go b/pkg/registry/core/configmap/strategy_test.go
index a6ec3254e1..26e931ccb7 100644
--- a/pkg/registry/core/configmap/strategy_test.go
+++ b/pkg/registry/core/configmap/strategy_test.go
@@ -21,7 +21,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func TestConfigMapStrategy(t *testing.T) {
diff --git a/pkg/registry/core/endpoint/BUILD b/pkg/registry/core/endpoint/BUILD
index 1012bc1394..775b195839 100644
--- a/pkg/registry/core/endpoint/BUILD
+++ b/pkg/registry/core/endpoint/BUILD
@@ -14,10 +14,10 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/registry/core/endpoint",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/endpoints:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
diff --git a/pkg/registry/core/endpoint/registry.go b/pkg/registry/core/endpoint/registry.go
index cc2f3e4448..3cb03c4f9c 100644
--- a/pkg/registry/core/endpoint/registry.go
+++ b/pkg/registry/core/endpoint/registry.go
@@ -22,7 +22,7 @@ import (
"k8s.io/apimachinery/pkg/watch"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// Registry is an interface for things that know how to store endpoints.
diff --git a/pkg/registry/core/endpoint/storage/BUILD b/pkg/registry/core/endpoint/storage/BUILD
index 468d93368c..b71d8d6894 100644
--- a/pkg/registry/core/endpoint/storage/BUILD
+++ b/pkg/registry/core/endpoint/storage/BUILD
@@ -12,7 +12,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/endpoint/storage",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/registrytest:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/fields:go_default_library",
@@ -28,7 +28,7 @@ go_library(
srcs = ["storage.go"],
importpath = "k8s.io/kubernetes/pkg/registry/core/endpoint/storage",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/printers:go_default_library",
"//pkg/printers/internalversion:go_default_library",
"//pkg/printers/storage:go_default_library",
diff --git a/pkg/registry/core/endpoint/storage/storage.go b/pkg/registry/core/endpoint/storage/storage.go
index c12e3499ff..902b7df0b5 100644
--- a/pkg/registry/core/endpoint/storage/storage.go
+++ b/pkg/registry/core/endpoint/storage/storage.go
@@ -21,7 +21,7 @@ import (
"k8s.io/apiserver/pkg/registry/generic"
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/printers"
printersinternal "k8s.io/kubernetes/pkg/printers/internalversion"
printerstorage "k8s.io/kubernetes/pkg/printers/storage"
diff --git a/pkg/registry/core/endpoint/storage/storage_test.go b/pkg/registry/core/endpoint/storage/storage_test.go
index fe5674b0c5..4590d7e9b0 100644
--- a/pkg/registry/core/endpoint/storage/storage_test.go
+++ b/pkg/registry/core/endpoint/storage/storage_test.go
@@ -25,7 +25,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apiserver/pkg/registry/generic"
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/registrytest"
)
diff --git a/pkg/registry/core/endpoint/strategy.go b/pkg/registry/core/endpoint/strategy.go
index e880530d66..93204e6ca6 100644
--- a/pkg/registry/core/endpoint/strategy.go
+++ b/pkg/registry/core/endpoint/strategy.go
@@ -21,10 +21,10 @@ import (
"k8s.io/apimachinery/pkg/util/validation/field"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/storage/names"
- "k8s.io/kubernetes/pkg/api"
endptspkg "k8s.io/kubernetes/pkg/api/endpoints"
"k8s.io/kubernetes/pkg/api/legacyscheme"
- "k8s.io/kubernetes/pkg/api/validation"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/validation"
)
// endpointsStrategy implements behavior for Endpoints
diff --git a/pkg/registry/core/event/BUILD b/pkg/registry/core/event/BUILD
index d2ce425d1d..8bdfa1d2d7 100644
--- a/pkg/registry/core/event/BUILD
+++ b/pkg/registry/core/event/BUILD
@@ -14,9 +14,9 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/registry/core/event",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/fields:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
@@ -35,10 +35,10 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/event",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/api/testing:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/fields:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library",
diff --git a/pkg/registry/core/event/storage/BUILD b/pkg/registry/core/event/storage/BUILD
index 6f4dfec1e0..075af16a06 100644
--- a/pkg/registry/core/event/storage/BUILD
+++ b/pkg/registry/core/event/storage/BUILD
@@ -12,7 +12,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/event/storage",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/registrytest:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
@@ -26,7 +26,7 @@ go_library(
srcs = ["storage.go"],
importpath = "k8s.io/kubernetes/pkg/registry/core/event/storage",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/core/event:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library",
diff --git a/pkg/registry/core/event/storage/storage.go b/pkg/registry/core/event/storage/storage.go
index 8c3639aca9..21fa08b3b7 100644
--- a/pkg/registry/core/event/storage/storage.go
+++ b/pkg/registry/core/event/storage/storage.go
@@ -21,7 +21,7 @@ import (
"k8s.io/apiserver/pkg/registry/generic"
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/core/event"
)
diff --git a/pkg/registry/core/event/storage/storage_test.go b/pkg/registry/core/event/storage/storage_test.go
index 3410c9d2df..b0d88372f8 100644
--- a/pkg/registry/core/event/storage/storage_test.go
+++ b/pkg/registry/core/event/storage/storage_test.go
@@ -23,7 +23,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apiserver/pkg/registry/generic"
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/registrytest"
)
diff --git a/pkg/registry/core/event/strategy.go b/pkg/registry/core/event/strategy.go
index 4368a7e071..0777e387f7 100644
--- a/pkg/registry/core/event/strategy.go
+++ b/pkg/registry/core/event/strategy.go
@@ -28,9 +28,9 @@ import (
"k8s.io/apiserver/pkg/registry/rest"
"k8s.io/apiserver/pkg/storage"
"k8s.io/apiserver/pkg/storage/names"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
- "k8s.io/kubernetes/pkg/api/validation"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/validation"
)
type eventStrategy struct {
diff --git a/pkg/registry/core/event/strategy_test.go b/pkg/registry/core/event/strategy_test.go
index 70832c0df4..e95df8a0f8 100644
--- a/pkg/registry/core/event/strategy_test.go
+++ b/pkg/registry/core/event/strategy_test.go
@@ -23,9 +23,9 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/fields"
"k8s.io/apimachinery/pkg/util/diff"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
apitesting "k8s.io/kubernetes/pkg/api/testing"
+ api "k8s.io/kubernetes/pkg/apis/core"
// install all api groups for testing
_ "k8s.io/kubernetes/pkg/api/testapi"
diff --git a/pkg/registry/core/limitrange/BUILD b/pkg/registry/core/limitrange/BUILD
index 2e8604f0f0..303471f795 100644
--- a/pkg/registry/core/limitrange/BUILD
+++ b/pkg/registry/core/limitrange/BUILD
@@ -13,9 +13,9 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/registry/core/limitrange",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/uuid:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
diff --git a/pkg/registry/core/limitrange/storage/BUILD b/pkg/registry/core/limitrange/storage/BUILD
index 361531cca9..e00e18c4ce 100644
--- a/pkg/registry/core/limitrange/storage/BUILD
+++ b/pkg/registry/core/limitrange/storage/BUILD
@@ -12,7 +12,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/limitrange/storage",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/registrytest:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
@@ -29,7 +29,7 @@ go_library(
srcs = ["storage.go"],
importpath = "k8s.io/kubernetes/pkg/registry/core/limitrange/storage",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/core/limitrange:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library",
diff --git a/pkg/registry/core/limitrange/storage/storage.go b/pkg/registry/core/limitrange/storage/storage.go
index b0462387e4..adb60f252d 100644
--- a/pkg/registry/core/limitrange/storage/storage.go
+++ b/pkg/registry/core/limitrange/storage/storage.go
@@ -21,7 +21,7 @@ import (
"k8s.io/apiserver/pkg/registry/generic"
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/core/limitrange"
)
diff --git a/pkg/registry/core/limitrange/storage/storage_test.go b/pkg/registry/core/limitrange/storage/storage_test.go
index 403a3dfec7..8688357841 100644
--- a/pkg/registry/core/limitrange/storage/storage_test.go
+++ b/pkg/registry/core/limitrange/storage/storage_test.go
@@ -26,7 +26,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apiserver/pkg/registry/generic"
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/registrytest"
)
diff --git a/pkg/registry/core/limitrange/strategy.go b/pkg/registry/core/limitrange/strategy.go
index b98ade6fff..b4a55075b9 100644
--- a/pkg/registry/core/limitrange/strategy.go
+++ b/pkg/registry/core/limitrange/strategy.go
@@ -22,9 +22,9 @@ import (
"k8s.io/apimachinery/pkg/util/validation/field"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/storage/names"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
- "k8s.io/kubernetes/pkg/api/validation"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/validation"
)
type limitrangeStrategy struct {
diff --git a/pkg/registry/core/namespace/BUILD b/pkg/registry/core/namespace/BUILD
index 431dc3ea98..d9c4392200 100644
--- a/pkg/registry/core/namespace/BUILD
+++ b/pkg/registry/core/namespace/BUILD
@@ -15,9 +15,9 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/registry/core/namespace",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/fields:go_default_library",
@@ -39,10 +39,10 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/namespace",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/api/testing:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
],
diff --git a/pkg/registry/core/namespace/registry.go b/pkg/registry/core/namespace/registry.go
index 9cc0957216..cbd470d151 100644
--- a/pkg/registry/core/namespace/registry.go
+++ b/pkg/registry/core/namespace/registry.go
@@ -22,7 +22,7 @@ import (
"k8s.io/apimachinery/pkg/watch"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// Registry is an interface implemented by things that know how to store Namespace objects.
diff --git a/pkg/registry/core/namespace/storage/BUILD b/pkg/registry/core/namespace/storage/BUILD
index 16fcc0e35c..4699138d77 100644
--- a/pkg/registry/core/namespace/storage/BUILD
+++ b/pkg/registry/core/namespace/storage/BUILD
@@ -12,7 +12,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/namespace/storage",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/registrytest:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/fields:go_default_library",
@@ -29,7 +29,7 @@ go_library(
srcs = ["storage.go"],
importpath = "k8s.io/kubernetes/pkg/registry/core/namespace/storage",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/core/namespace:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library",
diff --git a/pkg/registry/core/namespace/storage/storage.go b/pkg/registry/core/namespace/storage/storage.go
index b457f9959d..faa099a951 100644
--- a/pkg/registry/core/namespace/storage/storage.go
+++ b/pkg/registry/core/namespace/storage/storage.go
@@ -30,7 +30,7 @@ import (
"k8s.io/apiserver/pkg/registry/rest"
"k8s.io/apiserver/pkg/storage"
storageerr "k8s.io/apiserver/pkg/storage/errors"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/core/namespace"
)
diff --git a/pkg/registry/core/namespace/storage/storage_test.go b/pkg/registry/core/namespace/storage/storage_test.go
index 26183d3b4a..8a5fdba4e5 100644
--- a/pkg/registry/core/namespace/storage/storage_test.go
+++ b/pkg/registry/core/namespace/storage/storage_test.go
@@ -26,7 +26,7 @@ import (
"k8s.io/apiserver/pkg/registry/generic"
"k8s.io/apiserver/pkg/registry/rest"
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/registrytest"
)
diff --git a/pkg/registry/core/namespace/strategy.go b/pkg/registry/core/namespace/strategy.go
index 05a65ebb3a..53a139e522 100644
--- a/pkg/registry/core/namespace/strategy.go
+++ b/pkg/registry/core/namespace/strategy.go
@@ -27,9 +27,9 @@ import (
"k8s.io/apiserver/pkg/registry/generic"
apistorage "k8s.io/apiserver/pkg/storage"
"k8s.io/apiserver/pkg/storage/names"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
- "k8s.io/kubernetes/pkg/api/validation"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/validation"
)
// namespaceStrategy implements behavior for Namespaces
diff --git a/pkg/registry/core/namespace/strategy_test.go b/pkg/registry/core/namespace/strategy_test.go
index 57b5379b8a..9ebac31338 100644
--- a/pkg/registry/core/namespace/strategy_test.go
+++ b/pkg/registry/core/namespace/strategy_test.go
@@ -21,9 +21,9 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
apitesting "k8s.io/kubernetes/pkg/api/testing"
+ api "k8s.io/kubernetes/pkg/apis/core"
// install all api groups for testing
_ "k8s.io/kubernetes/pkg/api/testapi"
diff --git a/pkg/registry/core/node/BUILD b/pkg/registry/core/node/BUILD
index 6d6b37a97f..ad3fb4995d 100644
--- a/pkg/registry/core/node/BUILD
+++ b/pkg/registry/core/node/BUILD
@@ -15,9 +15,9 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/registry/core/node",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//pkg/features:go_default_library",
"//pkg/kubelet/client:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
@@ -45,10 +45,10 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/node",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/api/testing:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/fields:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
],
diff --git a/pkg/registry/core/node/registry.go b/pkg/registry/core/node/registry.go
index 4640af58af..e4476ded4b 100644
--- a/pkg/registry/core/node/registry.go
+++ b/pkg/registry/core/node/registry.go
@@ -22,7 +22,7 @@ import (
"k8s.io/apimachinery/pkg/watch"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// Registry is an interface for things that know how to store node.
diff --git a/pkg/registry/core/node/rest/BUILD b/pkg/registry/core/node/rest/BUILD
index 94d3f91998..1425ee9202 100644
--- a/pkg/registry/core/node/rest/BUILD
+++ b/pkg/registry/core/node/rest/BUILD
@@ -10,7 +10,7 @@ go_library(
srcs = ["proxy.go"],
importpath = "k8s.io/kubernetes/pkg/registry/core/node/rest",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/capabilities:go_default_library",
"//pkg/kubelet/client:go_default_library",
"//pkg/registry/core/node:go_default_library",
diff --git a/pkg/registry/core/node/rest/proxy.go b/pkg/registry/core/node/rest/proxy.go
index 61356d97b8..b314617f42 100644
--- a/pkg/registry/core/node/rest/proxy.go
+++ b/pkg/registry/core/node/rest/proxy.go
@@ -27,7 +27,7 @@ import (
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/capabilities"
"k8s.io/kubernetes/pkg/kubelet/client"
"k8s.io/kubernetes/pkg/registry/core/node"
diff --git a/pkg/registry/core/node/storage/BUILD b/pkg/registry/core/node/storage/BUILD
index 8c521581f4..41d3f227e5 100644
--- a/pkg/registry/core/node/storage/BUILD
+++ b/pkg/registry/core/node/storage/BUILD
@@ -12,7 +12,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/node/storage",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/kubelet/client:go_default_library",
"//pkg/registry/registrytest:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
@@ -30,8 +30,8 @@ go_library(
srcs = ["storage.go"],
importpath = "k8s.io/kubernetes/pkg/registry/core/node/storage",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/v1:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/v1:go_default_library",
"//pkg/kubelet/client:go_default_library",
"//pkg/printers:go_default_library",
"//pkg/printers/internalversion:go_default_library",
diff --git a/pkg/registry/core/node/storage/storage.go b/pkg/registry/core/node/storage/storage.go
index ad47a8f2a0..a61e575885 100644
--- a/pkg/registry/core/node/storage/storage.go
+++ b/pkg/registry/core/node/storage/storage.go
@@ -28,8 +28,8 @@ import (
"k8s.io/apiserver/pkg/registry/generic"
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
- k8s_api_v1 "k8s.io/kubernetes/pkg/api/v1"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ k8s_api_v1 "k8s.io/kubernetes/pkg/apis/core/v1"
"k8s.io/kubernetes/pkg/kubelet/client"
"k8s.io/kubernetes/pkg/printers"
printersinternal "k8s.io/kubernetes/pkg/printers/internalversion"
@@ -112,7 +112,7 @@ func NewStorage(optsGetter generic.RESTOptionsGetter, kubeletClientConfig client
}
// TODO: Remove the conversion. Consider only return the NodeAddresses
externalNode := &v1.Node{}
- err = k8s_api_v1.Convert_api_Node_To_v1_Node(node, externalNode, nil)
+ err = k8s_api_v1.Convert_core_Node_To_v1_Node(node, externalNode, nil)
if err != nil {
return nil, fmt.Errorf("failed to convert to v1.Node: %v", err)
}
diff --git a/pkg/registry/core/node/storage/storage_test.go b/pkg/registry/core/node/storage/storage_test.go
index e9ee3da6d2..50ba810e65 100644
--- a/pkg/registry/core/node/storage/storage_test.go
+++ b/pkg/registry/core/node/storage/storage_test.go
@@ -26,7 +26,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apiserver/pkg/registry/generic"
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
kubeletclient "k8s.io/kubernetes/pkg/kubelet/client"
"k8s.io/kubernetes/pkg/registry/registrytest"
)
diff --git a/pkg/registry/core/node/strategy.go b/pkg/registry/core/node/strategy.go
index dff507a09c..4653b3f445 100644
--- a/pkg/registry/core/node/strategy.go
+++ b/pkg/registry/core/node/strategy.go
@@ -35,9 +35,9 @@ import (
pkgstorage "k8s.io/apiserver/pkg/storage"
"k8s.io/apiserver/pkg/storage/names"
utilfeature "k8s.io/apiserver/pkg/util/feature"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
- "k8s.io/kubernetes/pkg/api/validation"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/validation"
"k8s.io/kubernetes/pkg/features"
"k8s.io/kubernetes/pkg/kubelet/client"
)
diff --git a/pkg/registry/core/node/strategy_test.go b/pkg/registry/core/node/strategy_test.go
index 7beec85129..c32da10bb6 100644
--- a/pkg/registry/core/node/strategy_test.go
+++ b/pkg/registry/core/node/strategy_test.go
@@ -21,9 +21,9 @@ import (
"k8s.io/apimachinery/pkg/fields"
"k8s.io/apimachinery/pkg/labels"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
apitesting "k8s.io/kubernetes/pkg/api/testing"
+ api "k8s.io/kubernetes/pkg/apis/core"
// install all api groups for testing
_ "k8s.io/kubernetes/pkg/api/testapi"
diff --git a/pkg/registry/core/persistentvolume/BUILD b/pkg/registry/core/persistentvolume/BUILD
index 7ab8879a9d..eefda27f79 100644
--- a/pkg/registry/core/persistentvolume/BUILD
+++ b/pkg/registry/core/persistentvolume/BUILD
@@ -14,9 +14,9 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/registry/core/persistentvolume",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//pkg/volume/validation:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/fields:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
@@ -35,10 +35,10 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/persistentvolume",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/api/testing:go_default_library",
+ "//pkg/apis/core:go_default_library",
],
)
diff --git a/pkg/registry/core/persistentvolume/storage/BUILD b/pkg/registry/core/persistentvolume/storage/BUILD
index d7e70a3b37..76edbdfb6e 100644
--- a/pkg/registry/core/persistentvolume/storage/BUILD
+++ b/pkg/registry/core/persistentvolume/storage/BUILD
@@ -12,7 +12,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/persistentvolume/storage",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/registrytest:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
@@ -33,7 +33,7 @@ go_library(
srcs = ["storage.go"],
importpath = "k8s.io/kubernetes/pkg/registry/core/persistentvolume/storage",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/core/persistentvolume:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
diff --git a/pkg/registry/core/persistentvolume/storage/storage.go b/pkg/registry/core/persistentvolume/storage/storage.go
index 7eb5dd4452..b8f7948f9b 100644
--- a/pkg/registry/core/persistentvolume/storage/storage.go
+++ b/pkg/registry/core/persistentvolume/storage/storage.go
@@ -23,7 +23,7 @@ import (
"k8s.io/apiserver/pkg/registry/generic"
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/core/persistentvolume"
)
diff --git a/pkg/registry/core/persistentvolume/storage/storage_test.go b/pkg/registry/core/persistentvolume/storage/storage_test.go
index 215f633d9e..a409266537 100644
--- a/pkg/registry/core/persistentvolume/storage/storage_test.go
+++ b/pkg/registry/core/persistentvolume/storage/storage_test.go
@@ -30,7 +30,7 @@ import (
"k8s.io/apiserver/pkg/registry/generic"
"k8s.io/apiserver/pkg/registry/rest"
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/registrytest"
)
diff --git a/pkg/registry/core/persistentvolume/strategy.go b/pkg/registry/core/persistentvolume/strategy.go
index 946ec2bdec..924baabe10 100644
--- a/pkg/registry/core/persistentvolume/strategy.go
+++ b/pkg/registry/core/persistentvolume/strategy.go
@@ -27,9 +27,9 @@ import (
"k8s.io/apiserver/pkg/registry/generic"
"k8s.io/apiserver/pkg/storage"
"k8s.io/apiserver/pkg/storage/names"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
- "k8s.io/kubernetes/pkg/api/validation"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/validation"
volumevalidation "k8s.io/kubernetes/pkg/volume/validation"
)
diff --git a/pkg/registry/core/persistentvolume/strategy_test.go b/pkg/registry/core/persistentvolume/strategy_test.go
index 1ae0571128..3c5fbb7d9e 100644
--- a/pkg/registry/core/persistentvolume/strategy_test.go
+++ b/pkg/registry/core/persistentvolume/strategy_test.go
@@ -19,9 +19,9 @@ package persistentvolume
import (
"testing"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
apitesting "k8s.io/kubernetes/pkg/api/testing"
+ api "k8s.io/kubernetes/pkg/apis/core"
// install all api groups for testing
_ "k8s.io/kubernetes/pkg/api/testapi"
diff --git a/pkg/registry/core/persistentvolumeclaim/BUILD b/pkg/registry/core/persistentvolumeclaim/BUILD
index 50f7ba07fb..cd9b8110b7 100644
--- a/pkg/registry/core/persistentvolumeclaim/BUILD
+++ b/pkg/registry/core/persistentvolumeclaim/BUILD
@@ -14,9 +14,9 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/registry/core/persistentvolumeclaim",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/fields:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
@@ -34,10 +34,10 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/persistentvolumeclaim",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/api/testing:go_default_library",
+ "//pkg/apis/core:go_default_library",
],
)
diff --git a/pkg/registry/core/persistentvolumeclaim/storage/BUILD b/pkg/registry/core/persistentvolumeclaim/storage/BUILD
index 45a0f4745c..078c72d0e6 100644
--- a/pkg/registry/core/persistentvolumeclaim/storage/BUILD
+++ b/pkg/registry/core/persistentvolumeclaim/storage/BUILD
@@ -12,7 +12,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/persistentvolumeclaim/storage",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/registrytest:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
@@ -33,7 +33,7 @@ go_library(
srcs = ["storage.go"],
importpath = "k8s.io/kubernetes/pkg/registry/core/persistentvolumeclaim/storage",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/core/persistentvolumeclaim:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
diff --git a/pkg/registry/core/persistentvolumeclaim/storage/storage.go b/pkg/registry/core/persistentvolumeclaim/storage/storage.go
index f27a624f83..c361d59a47 100644
--- a/pkg/registry/core/persistentvolumeclaim/storage/storage.go
+++ b/pkg/registry/core/persistentvolumeclaim/storage/storage.go
@@ -23,7 +23,7 @@ import (
"k8s.io/apiserver/pkg/registry/generic"
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/core/persistentvolumeclaim"
)
diff --git a/pkg/registry/core/persistentvolumeclaim/storage/storage_test.go b/pkg/registry/core/persistentvolumeclaim/storage/storage_test.go
index 5ac282eaa6..4962f5f41d 100644
--- a/pkg/registry/core/persistentvolumeclaim/storage/storage_test.go
+++ b/pkg/registry/core/persistentvolumeclaim/storage/storage_test.go
@@ -30,7 +30,7 @@ import (
"k8s.io/apiserver/pkg/registry/generic"
"k8s.io/apiserver/pkg/registry/rest"
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/registrytest"
)
diff --git a/pkg/registry/core/persistentvolumeclaim/strategy.go b/pkg/registry/core/persistentvolumeclaim/strategy.go
index 9ae37db92d..1d9f3be68c 100644
--- a/pkg/registry/core/persistentvolumeclaim/strategy.go
+++ b/pkg/registry/core/persistentvolumeclaim/strategy.go
@@ -27,9 +27,9 @@ import (
"k8s.io/apiserver/pkg/registry/generic"
"k8s.io/apiserver/pkg/storage"
"k8s.io/apiserver/pkg/storage/names"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
- "k8s.io/kubernetes/pkg/api/validation"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/validation"
)
// persistentvolumeclaimStrategy implements behavior for PersistentVolumeClaim objects
diff --git a/pkg/registry/core/persistentvolumeclaim/strategy_test.go b/pkg/registry/core/persistentvolumeclaim/strategy_test.go
index 802c35f385..ae0ef99708 100644
--- a/pkg/registry/core/persistentvolumeclaim/strategy_test.go
+++ b/pkg/registry/core/persistentvolumeclaim/strategy_test.go
@@ -19,9 +19,9 @@ package persistentvolumeclaim
import (
"testing"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
apitesting "k8s.io/kubernetes/pkg/api/testing"
+ api "k8s.io/kubernetes/pkg/apis/core"
// install all api groups for testing
_ "k8s.io/kubernetes/pkg/api/testapi"
diff --git a/pkg/registry/core/pod/BUILD b/pkg/registry/core/pod/BUILD
index 3a2300145d..cf35e0ba5b 100644
--- a/pkg/registry/core/pod/BUILD
+++ b/pkg/registry/core/pod/BUILD
@@ -14,11 +14,11 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/registry/core/pod",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/helper/qos:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/pod:go_default_library",
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/helper/qos:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//pkg/kubelet/client:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
@@ -45,10 +45,10 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/pod",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/api/testing:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/kubelet/client:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
diff --git a/pkg/registry/core/pod/rest/BUILD b/pkg/registry/core/pod/rest/BUILD
index 71a13dc19c..122911086b 100644
--- a/pkg/registry/core/pod/rest/BUILD
+++ b/pkg/registry/core/pod/rest/BUILD
@@ -14,8 +14,8 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/registry/core/pod/rest",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//pkg/capabilities:go_default_library",
"//pkg/kubelet/client:go_default_library",
"//pkg/registry/core/pod:go_default_library",
@@ -38,7 +38,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/pod/rest",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/registrytest:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
diff --git a/pkg/registry/core/pod/rest/log.go b/pkg/registry/core/pod/rest/log.go
index cb637257a4..e33f2a7fe9 100644
--- a/pkg/registry/core/pod/rest/log.go
+++ b/pkg/registry/core/pod/rest/log.go
@@ -25,8 +25,8 @@ import (
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
genericrest "k8s.io/apiserver/pkg/registry/generic/rest"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/validation"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/validation"
"k8s.io/kubernetes/pkg/kubelet/client"
"k8s.io/kubernetes/pkg/registry/core/pod"
)
diff --git a/pkg/registry/core/pod/rest/log_test.go b/pkg/registry/core/pod/rest/log_test.go
index e81197216b..2b58ee2587 100644
--- a/pkg/registry/core/pod/rest/log_test.go
+++ b/pkg/registry/core/pod/rest/log_test.go
@@ -23,7 +23,7 @@ import (
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/registry/generic"
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/registrytest"
)
diff --git a/pkg/registry/core/pod/rest/subresources.go b/pkg/registry/core/pod/rest/subresources.go
index b152688a10..2df8279768 100644
--- a/pkg/registry/core/pod/rest/subresources.go
+++ b/pkg/registry/core/pod/rest/subresources.go
@@ -29,7 +29,7 @@ import (
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
"k8s.io/apiserver/pkg/registry/rest"
utilfeature "k8s.io/apiserver/pkg/util/feature"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/capabilities"
"k8s.io/kubernetes/pkg/kubelet/client"
"k8s.io/kubernetes/pkg/registry/core/pod"
diff --git a/pkg/registry/core/pod/storage/BUILD b/pkg/registry/core/pod/storage/BUILD
index 02ccdf8ba6..3284982eb9 100644
--- a/pkg/registry/core/pod/storage/BUILD
+++ b/pkg/registry/core/pod/storage/BUILD
@@ -12,7 +12,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/pod/storage",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/registrytest:go_default_library",
"//pkg/securitycontext:go_default_library",
"//vendor/golang.org/x/net/context:go_default_library",
@@ -45,9 +45,9 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/registry/core/pod/storage",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/pod:go_default_library",
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//pkg/apis/policy:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/policy/internalversion:go_default_library",
"//pkg/kubelet/client:go_default_library",
diff --git a/pkg/registry/core/pod/storage/eviction.go b/pkg/registry/core/pod/storage/eviction.go
index d7d9e152d1..ff03d96dd5 100644
--- a/pkg/registry/core/pod/storage/eviction.go
+++ b/pkg/registry/core/pod/storage/eviction.go
@@ -30,7 +30,7 @@ import (
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
"k8s.io/apiserver/pkg/registry/rest"
"k8s.io/client-go/util/retry"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/policy"
policyclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/policy/internalversion"
)
diff --git a/pkg/registry/core/pod/storage/storage.go b/pkg/registry/core/pod/storage/storage.go
index 7a71ba4b76..129fd1a43d 100644
--- a/pkg/registry/core/pod/storage/storage.go
+++ b/pkg/registry/core/pod/storage/storage.go
@@ -30,9 +30,9 @@ import (
"k8s.io/apiserver/pkg/registry/rest"
"k8s.io/apiserver/pkg/storage"
storeerr "k8s.io/apiserver/pkg/storage/errors"
- "k8s.io/kubernetes/pkg/api"
podutil "k8s.io/kubernetes/pkg/api/pod"
- "k8s.io/kubernetes/pkg/api/validation"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/validation"
policyclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/policy/internalversion"
"k8s.io/kubernetes/pkg/kubelet/client"
"k8s.io/kubernetes/pkg/printers"
diff --git a/pkg/registry/core/pod/storage/storage_test.go b/pkg/registry/core/pod/storage/storage_test.go
index 1a98bc7d38..574a29996e 100644
--- a/pkg/registry/core/pod/storage/storage_test.go
+++ b/pkg/registry/core/pod/storage/storage_test.go
@@ -40,7 +40,7 @@ import (
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
utilfeature "k8s.io/apiserver/pkg/util/feature"
utilfeaturetesting "k8s.io/apiserver/pkg/util/feature/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/registrytest"
"k8s.io/kubernetes/pkg/securitycontext"
)
diff --git a/pkg/registry/core/pod/strategy.go b/pkg/registry/core/pod/strategy.go
index 4508475d65..5cd0eb03cf 100644
--- a/pkg/registry/core/pod/strategy.go
+++ b/pkg/registry/core/pod/strategy.go
@@ -41,11 +41,11 @@ import (
"k8s.io/apiserver/pkg/storage"
"k8s.io/apiserver/pkg/storage/names"
utilfeature "k8s.io/apiserver/pkg/util/feature"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/helper/qos"
"k8s.io/kubernetes/pkg/api/legacyscheme"
podutil "k8s.io/kubernetes/pkg/api/pod"
- "k8s.io/kubernetes/pkg/api/validation"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/helper/qos"
+ "k8s.io/kubernetes/pkg/apis/core/validation"
"k8s.io/kubernetes/pkg/kubelet/client"
)
diff --git a/pkg/registry/core/pod/strategy_test.go b/pkg/registry/core/pod/strategy_test.go
index 0f300ba33f..8d10e6a6ee 100644
--- a/pkg/registry/core/pod/strategy_test.go
+++ b/pkg/registry/core/pod/strategy_test.go
@@ -29,9 +29,9 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
apitesting "k8s.io/kubernetes/pkg/api/testing"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/kubelet/client"
// install all api groups for testing
diff --git a/pkg/registry/core/podtemplate/BUILD b/pkg/registry/core/podtemplate/BUILD
index 06b0b05e7f..5841503ea2 100644
--- a/pkg/registry/core/podtemplate/BUILD
+++ b/pkg/registry/core/podtemplate/BUILD
@@ -13,10 +13,10 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/registry/core/podtemplate",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/pod:go_default_library",
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
"//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
diff --git a/pkg/registry/core/podtemplate/storage/BUILD b/pkg/registry/core/podtemplate/storage/BUILD
index 5a3e812ecc..8c4553aeea 100644
--- a/pkg/registry/core/podtemplate/storage/BUILD
+++ b/pkg/registry/core/podtemplate/storage/BUILD
@@ -12,7 +12,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/podtemplate/storage",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/registrytest:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/fields:go_default_library",
@@ -28,7 +28,7 @@ go_library(
srcs = ["storage.go"],
importpath = "k8s.io/kubernetes/pkg/registry/core/podtemplate/storage",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/printers:go_default_library",
"//pkg/printers/internalversion:go_default_library",
"//pkg/printers/storage:go_default_library",
diff --git a/pkg/registry/core/podtemplate/storage/storage.go b/pkg/registry/core/podtemplate/storage/storage.go
index 5c35ac1bd0..1767186b99 100644
--- a/pkg/registry/core/podtemplate/storage/storage.go
+++ b/pkg/registry/core/podtemplate/storage/storage.go
@@ -20,7 +20,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apiserver/pkg/registry/generic"
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/printers"
printersinternal "k8s.io/kubernetes/pkg/printers/internalversion"
printerstorage "k8s.io/kubernetes/pkg/printers/storage"
diff --git a/pkg/registry/core/podtemplate/storage/storage_test.go b/pkg/registry/core/podtemplate/storage/storage_test.go
index 432d88e08b..f70ce48d42 100644
--- a/pkg/registry/core/podtemplate/storage/storage_test.go
+++ b/pkg/registry/core/podtemplate/storage/storage_test.go
@@ -25,7 +25,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apiserver/pkg/registry/generic"
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/registrytest"
)
diff --git a/pkg/registry/core/podtemplate/strategy.go b/pkg/registry/core/podtemplate/strategy.go
index 6f1091ffbd..0f19250d97 100644
--- a/pkg/registry/core/podtemplate/strategy.go
+++ b/pkg/registry/core/podtemplate/strategy.go
@@ -21,10 +21,10 @@ import (
"k8s.io/apimachinery/pkg/util/validation/field"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/storage/names"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/pod"
- "k8s.io/kubernetes/pkg/api/validation"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/validation"
)
// podTemplateStrategy implements behavior for PodTemplates
diff --git a/pkg/registry/core/rangeallocation/BUILD b/pkg/registry/core/rangeallocation/BUILD
index 6f2289d4f5..8b55dd09d8 100644
--- a/pkg/registry/core/rangeallocation/BUILD
+++ b/pkg/registry/core/rangeallocation/BUILD
@@ -12,7 +12,7 @@ go_library(
"registry.go",
],
importpath = "k8s.io/kubernetes/pkg/registry/core/rangeallocation",
- deps = ["//pkg/api:go_default_library"],
+ deps = ["//pkg/apis/core:go_default_library"],
)
filegroup(
diff --git a/pkg/registry/core/rangeallocation/registry.go b/pkg/registry/core/rangeallocation/registry.go
index 5fd3aa3af7..d67b52f86f 100644
--- a/pkg/registry/core/rangeallocation/registry.go
+++ b/pkg/registry/core/rangeallocation/registry.go
@@ -17,7 +17,7 @@ limitations under the License.
package rangeallocation
import (
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// RangeRegistry is a registry that can retrieve or persist a RangeAllocation object.
diff --git a/pkg/registry/core/replicationcontroller/BUILD b/pkg/registry/core/replicationcontroller/BUILD
index 3a79bd3dfd..931c1bb287 100644
--- a/pkg/registry/core/replicationcontroller/BUILD
+++ b/pkg/registry/core/replicationcontroller/BUILD
@@ -15,11 +15,11 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/registry/core/replicationcontroller",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/helper:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/pod:go_default_library",
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
@@ -42,10 +42,10 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/replicationcontroller",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/api/testing:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
],
diff --git a/pkg/registry/core/replicationcontroller/registry.go b/pkg/registry/core/replicationcontroller/registry.go
index 90f6c791f7..199981db09 100644
--- a/pkg/registry/core/replicationcontroller/registry.go
+++ b/pkg/registry/core/replicationcontroller/registry.go
@@ -26,7 +26,7 @@ import (
"k8s.io/apimachinery/pkg/watch"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// Registry is an interface for things that know how to store ReplicationControllers.
diff --git a/pkg/registry/core/replicationcontroller/storage/BUILD b/pkg/registry/core/replicationcontroller/storage/BUILD
index 4ff72af612..513924edf3 100644
--- a/pkg/registry/core/replicationcontroller/storage/BUILD
+++ b/pkg/registry/core/replicationcontroller/storage/BUILD
@@ -12,8 +12,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/replicationcontroller/storage",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/apis/autoscaling:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/registrytest:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
@@ -34,10 +34,10 @@ go_library(
srcs = ["storage.go"],
importpath = "k8s.io/kubernetes/pkg/registry/core/replicationcontroller/storage",
deps = [
- "//pkg/api:go_default_library",
"//pkg/apis/autoscaling:go_default_library",
"//pkg/apis/autoscaling/v1:go_default_library",
"//pkg/apis/autoscaling/validation:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions/v1beta1:go_default_library",
"//pkg/printers:go_default_library",
"//pkg/printers/internalversion:go_default_library",
diff --git a/pkg/registry/core/replicationcontroller/storage/storage.go b/pkg/registry/core/replicationcontroller/storage/storage.go
index f5a57af80b..ead95842d9 100644
--- a/pkg/registry/core/replicationcontroller/storage/storage.go
+++ b/pkg/registry/core/replicationcontroller/storage/storage.go
@@ -30,10 +30,10 @@ import (
"k8s.io/apiserver/pkg/registry/generic"
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/autoscaling"
autoscalingv1 "k8s.io/kubernetes/pkg/apis/autoscaling/v1"
"k8s.io/kubernetes/pkg/apis/autoscaling/validation"
+ api "k8s.io/kubernetes/pkg/apis/core"
extensionsv1beta1 "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
"k8s.io/kubernetes/pkg/printers"
printersinternal "k8s.io/kubernetes/pkg/printers/internalversion"
diff --git a/pkg/registry/core/replicationcontroller/storage/storage_test.go b/pkg/registry/core/replicationcontroller/storage/storage_test.go
index 4a63ee79a1..102c24d6eb 100644
--- a/pkg/registry/core/replicationcontroller/storage/storage_test.go
+++ b/pkg/registry/core/replicationcontroller/storage/storage_test.go
@@ -30,8 +30,8 @@ import (
"k8s.io/apiserver/pkg/registry/generic"
"k8s.io/apiserver/pkg/registry/rest"
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/autoscaling"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/registrytest"
)
diff --git a/pkg/registry/core/replicationcontroller/strategy.go b/pkg/registry/core/replicationcontroller/strategy.go
index 812f82e4fa..8d2cb79d54 100644
--- a/pkg/registry/core/replicationcontroller/strategy.go
+++ b/pkg/registry/core/replicationcontroller/strategy.go
@@ -33,11 +33,11 @@ import (
"k8s.io/apiserver/pkg/registry/rest"
apistorage "k8s.io/apiserver/pkg/storage"
"k8s.io/apiserver/pkg/storage/names"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/helper"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/pod"
- "k8s.io/kubernetes/pkg/api/validation"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
+ "k8s.io/kubernetes/pkg/apis/core/validation"
)
// rcStrategy implements verification logic for Replication Controllers.
diff --git a/pkg/registry/core/replicationcontroller/strategy_test.go b/pkg/registry/core/replicationcontroller/strategy_test.go
index 92ce03b1d7..1a89135ab8 100644
--- a/pkg/registry/core/replicationcontroller/strategy_test.go
+++ b/pkg/registry/core/replicationcontroller/strategy_test.go
@@ -22,9 +22,9 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
apitesting "k8s.io/kubernetes/pkg/api/testing"
+ api "k8s.io/kubernetes/pkg/apis/core"
// install all api groups for testing
_ "k8s.io/kubernetes/pkg/api/testapi"
diff --git a/pkg/registry/core/resourcequota/BUILD b/pkg/registry/core/resourcequota/BUILD
index e46876d8cd..77150f2f29 100644
--- a/pkg/registry/core/resourcequota/BUILD
+++ b/pkg/registry/core/resourcequota/BUILD
@@ -14,9 +14,9 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/registry/core/resourcequota",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
"//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
@@ -30,7 +30,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/resourcequota",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
diff --git a/pkg/registry/core/resourcequota/storage/BUILD b/pkg/registry/core/resourcequota/storage/BUILD
index acc8d41033..0ca8b417b0 100644
--- a/pkg/registry/core/resourcequota/storage/BUILD
+++ b/pkg/registry/core/resourcequota/storage/BUILD
@@ -12,7 +12,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/resourcequota/storage",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/registrytest:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
@@ -32,7 +32,7 @@ go_library(
srcs = ["storage.go"],
importpath = "k8s.io/kubernetes/pkg/registry/core/resourcequota/storage",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/core/resourcequota:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
diff --git a/pkg/registry/core/resourcequota/storage/storage.go b/pkg/registry/core/resourcequota/storage/storage.go
index daf6fa2c07..391cb17f06 100644
--- a/pkg/registry/core/resourcequota/storage/storage.go
+++ b/pkg/registry/core/resourcequota/storage/storage.go
@@ -23,7 +23,7 @@ import (
"k8s.io/apiserver/pkg/registry/generic"
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/core/resourcequota"
)
diff --git a/pkg/registry/core/resourcequota/storage/storage_test.go b/pkg/registry/core/resourcequota/storage/storage_test.go
index 6249687c49..f1da4b0062 100644
--- a/pkg/registry/core/resourcequota/storage/storage_test.go
+++ b/pkg/registry/core/resourcequota/storage/storage_test.go
@@ -29,7 +29,7 @@ import (
"k8s.io/apiserver/pkg/registry/generic"
"k8s.io/apiserver/pkg/registry/rest"
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/registrytest"
)
diff --git a/pkg/registry/core/resourcequota/strategy.go b/pkg/registry/core/resourcequota/strategy.go
index a330e3019d..eecfc59d93 100644
--- a/pkg/registry/core/resourcequota/strategy.go
+++ b/pkg/registry/core/resourcequota/strategy.go
@@ -21,9 +21,9 @@ import (
"k8s.io/apimachinery/pkg/util/validation/field"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/storage/names"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
- "k8s.io/kubernetes/pkg/api/validation"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/validation"
)
// resourcequotaStrategy implements behavior for ResourceQuota objects
diff --git a/pkg/registry/core/resourcequota/strategy_test.go b/pkg/registry/core/resourcequota/strategy_test.go
index 6ec3816fc0..c571c2a336 100644
--- a/pkg/registry/core/resourcequota/strategy_test.go
+++ b/pkg/registry/core/resourcequota/strategy_test.go
@@ -22,7 +22,7 @@ import (
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func TestResourceQuotaStrategy(t *testing.T) {
diff --git a/pkg/registry/core/rest/BUILD b/pkg/registry/core/rest/BUILD
index d16236850a..9e81ccda77 100644
--- a/pkg/registry/core/rest/BUILD
+++ b/pkg/registry/core/rest/BUILD
@@ -23,8 +23,8 @@ go_library(
srcs = ["storage_core.go"],
importpath = "k8s.io/kubernetes/pkg/registry/core/rest",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/policy/internalversion:go_default_library",
"//pkg/kubelet/client:go_default_library",
"//pkg/master/ports:go_default_library",
diff --git a/pkg/registry/core/rest/storage_core.go b/pkg/registry/core/rest/storage_core.go
index 241c6965ae..ad7a9a91ad 100644
--- a/pkg/registry/core/rest/storage_core.go
+++ b/pkg/registry/core/rest/storage_core.go
@@ -35,8 +35,8 @@ import (
serverstorage "k8s.io/apiserver/pkg/server/storage"
etcdutil "k8s.io/apiserver/pkg/storage/etcd/util"
restclient "k8s.io/client-go/rest"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ api "k8s.io/kubernetes/pkg/apis/core"
policyclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/policy/internalversion"
kubeletclient "k8s.io/kubernetes/pkg/kubelet/client"
"k8s.io/kubernetes/pkg/master/ports"
diff --git a/pkg/registry/core/secret/BUILD b/pkg/registry/core/secret/BUILD
index f20cd2738d..48332003ed 100644
--- a/pkg/registry/core/secret/BUILD
+++ b/pkg/registry/core/secret/BUILD
@@ -15,9 +15,9 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/registry/core/secret",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
@@ -40,10 +40,10 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/secret",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/api/testing:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
diff --git a/pkg/registry/core/secret/registry.go b/pkg/registry/core/secret/registry.go
index 73e1b5e2c1..8d214d4f1f 100644
--- a/pkg/registry/core/secret/registry.go
+++ b/pkg/registry/core/secret/registry.go
@@ -22,7 +22,7 @@ import (
"k8s.io/apimachinery/pkg/watch"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// Registry is an interface implemented by things that know how to store Secret objects.
diff --git a/pkg/registry/core/secret/storage/BUILD b/pkg/registry/core/secret/storage/BUILD
index ee2c08ecc3..ec91be84d8 100644
--- a/pkg/registry/core/secret/storage/BUILD
+++ b/pkg/registry/core/secret/storage/BUILD
@@ -12,7 +12,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/secret/storage",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/registrytest:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/fields:go_default_library",
@@ -28,7 +28,7 @@ go_library(
srcs = ["storage.go"],
importpath = "k8s.io/kubernetes/pkg/registry/core/secret/storage",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/core/secret:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library",
diff --git a/pkg/registry/core/secret/storage/storage.go b/pkg/registry/core/secret/storage/storage.go
index 9f70cad2fc..13600daf05 100644
--- a/pkg/registry/core/secret/storage/storage.go
+++ b/pkg/registry/core/secret/storage/storage.go
@@ -20,7 +20,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apiserver/pkg/registry/generic"
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/core/secret"
)
diff --git a/pkg/registry/core/secret/storage/storage_test.go b/pkg/registry/core/secret/storage/storage_test.go
index 1071ee414a..847a4e702a 100644
--- a/pkg/registry/core/secret/storage/storage_test.go
+++ b/pkg/registry/core/secret/storage/storage_test.go
@@ -25,7 +25,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apiserver/pkg/registry/generic"
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/registrytest"
)
diff --git a/pkg/registry/core/secret/strategy.go b/pkg/registry/core/secret/strategy.go
index 529de069d4..fbdb05572d 100644
--- a/pkg/registry/core/secret/strategy.go
+++ b/pkg/registry/core/secret/strategy.go
@@ -29,9 +29,9 @@ import (
"k8s.io/apiserver/pkg/registry/rest"
apistorage "k8s.io/apiserver/pkg/storage"
"k8s.io/apiserver/pkg/storage/names"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
- "k8s.io/kubernetes/pkg/api/validation"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/validation"
)
// strategy implements behavior for Secret objects
diff --git a/pkg/registry/core/secret/strategy_test.go b/pkg/registry/core/secret/strategy_test.go
index 6724963ff1..dda59ab1ee 100644
--- a/pkg/registry/core/secret/strategy_test.go
+++ b/pkg/registry/core/secret/strategy_test.go
@@ -23,9 +23,9 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
apitesting "k8s.io/kubernetes/pkg/api/testing"
+ api "k8s.io/kubernetes/pkg/apis/core"
// install all api groups for testing
_ "k8s.io/kubernetes/pkg/api/testapi"
diff --git a/pkg/registry/core/service/BUILD b/pkg/registry/core/service/BUILD
index 0864f0bb6c..ca6517abf2 100644
--- a/pkg/registry/core/service/BUILD
+++ b/pkg/registry/core/service/BUILD
@@ -17,11 +17,11 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/registry/core/service",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/helper:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/service:go_default_library",
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//pkg/capabilities:go_default_library",
"//pkg/features:go_default_library",
"//pkg/registry/core/endpoint:go_default_library",
@@ -53,9 +53,9 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/service",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/helper:go_default_library",
"//pkg/api/service:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
"//pkg/features:go_default_library",
"//pkg/registry/core/service/ipallocator:go_default_library",
"//pkg/registry/core/service/portallocator:go_default_library",
diff --git a/pkg/registry/core/service/allocator/storage/BUILD b/pkg/registry/core/service/allocator/storage/BUILD
index 4031d10160..18a175e63b 100644
--- a/pkg/registry/core/service/allocator/storage/BUILD
+++ b/pkg/registry/core/service/allocator/storage/BUILD
@@ -12,7 +12,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/service/allocator/storage",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/core/service/allocator:go_default_library",
"//pkg/registry/registrytest:go_default_library",
"//vendor/golang.org/x/net/context:go_default_library",
@@ -26,7 +26,7 @@ go_library(
srcs = ["storage.go"],
importpath = "k8s.io/kubernetes/pkg/registry/core/service/allocator/storage",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/core/rangeallocation:go_default_library",
"//pkg/registry/core/service/allocator:go_default_library",
"//vendor/golang.org/x/net/context:go_default_library",
diff --git a/pkg/registry/core/service/allocator/storage/storage.go b/pkg/registry/core/service/allocator/storage/storage.go
index d1d7a949be..03f28431ad 100644
--- a/pkg/registry/core/service/allocator/storage/storage.go
+++ b/pkg/registry/core/service/allocator/storage/storage.go
@@ -29,7 +29,7 @@ import (
"k8s.io/apiserver/pkg/storage"
storeerr "k8s.io/apiserver/pkg/storage/errors"
"k8s.io/apiserver/pkg/storage/storagebackend"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/core/rangeallocation"
"k8s.io/kubernetes/pkg/registry/core/service/allocator"
diff --git a/pkg/registry/core/service/allocator/storage/storage_test.go b/pkg/registry/core/service/allocator/storage/storage_test.go
index 4936b35f4d..a0f2cceb6a 100644
--- a/pkg/registry/core/service/allocator/storage/storage_test.go
+++ b/pkg/registry/core/service/allocator/storage/storage_test.go
@@ -22,7 +22,7 @@ import (
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
"k8s.io/apiserver/pkg/storage/storagebackend"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/core/service/allocator"
"k8s.io/kubernetes/pkg/registry/registrytest"
diff --git a/pkg/registry/core/service/ipallocator/BUILD b/pkg/registry/core/service/ipallocator/BUILD
index 36e61632b7..17b5d49255 100644
--- a/pkg/registry/core/service/ipallocator/BUILD
+++ b/pkg/registry/core/service/ipallocator/BUILD
@@ -11,7 +11,7 @@ go_library(
srcs = ["allocator.go"],
importpath = "k8s.io/kubernetes/pkg/registry/core/service/ipallocator",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/core/service/allocator:go_default_library",
],
)
@@ -22,7 +22,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/service/ipallocator",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
],
)
diff --git a/pkg/registry/core/service/ipallocator/allocator.go b/pkg/registry/core/service/ipallocator/allocator.go
index e8c28bf374..b480418c2f 100644
--- a/pkg/registry/core/service/ipallocator/allocator.go
+++ b/pkg/registry/core/service/ipallocator/allocator.go
@@ -19,11 +19,10 @@ package ipallocator
import (
"errors"
"fmt"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/registry/core/service/allocator"
"math/big"
"net"
-
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/registry/core/service/allocator"
)
// Interface manages the allocation of IP addresses out of a range. Interface
diff --git a/pkg/registry/core/service/ipallocator/allocator_test.go b/pkg/registry/core/service/ipallocator/allocator_test.go
index 481a4d41b6..fa29e4e173 100644
--- a/pkg/registry/core/service/ipallocator/allocator_test.go
+++ b/pkg/registry/core/service/ipallocator/allocator_test.go
@@ -21,7 +21,7 @@ import (
"testing"
"k8s.io/apimachinery/pkg/util/sets"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func TestAllocate(t *testing.T) {
diff --git a/pkg/registry/core/service/ipallocator/controller/BUILD b/pkg/registry/core/service/ipallocator/controller/BUILD
index a0723fa8ad..b6a8f0a64d 100644
--- a/pkg/registry/core/service/ipallocator/controller/BUILD
+++ b/pkg/registry/core/service/ipallocator/controller/BUILD
@@ -11,8 +11,8 @@ go_library(
srcs = ["repair.go"],
importpath = "k8s.io/kubernetes/pkg/registry/core/service/ipallocator/controller",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/helper:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/core/internalversion:go_default_library",
"//pkg/registry/core/rangeallocation:go_default_library",
"//pkg/registry/core/service/ipallocator:go_default_library",
@@ -30,7 +30,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/service/ipallocator/controller",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/client/clientset_generated/internalclientset/fake:go_default_library",
"//pkg/registry/core/service/ipallocator:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
diff --git a/pkg/registry/core/service/ipallocator/controller/repair.go b/pkg/registry/core/service/ipallocator/controller/repair.go
index 7e13115f1f..fa2cae7f3a 100644
--- a/pkg/registry/core/service/ipallocator/controller/repair.go
+++ b/pkg/registry/core/service/ipallocator/controller/repair.go
@@ -26,8 +26,8 @@ import (
"k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/client-go/util/retry"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/helper"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
coreclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
"k8s.io/kubernetes/pkg/registry/core/rangeallocation"
"k8s.io/kubernetes/pkg/registry/core/service/ipallocator"
diff --git a/pkg/registry/core/service/ipallocator/controller/repair_test.go b/pkg/registry/core/service/ipallocator/controller/repair_test.go
index c784f04cec..51392b843a 100644
--- a/pkg/registry/core/service/ipallocator/controller/repair_test.go
+++ b/pkg/registry/core/service/ipallocator/controller/repair_test.go
@@ -23,7 +23,7 @@ import (
"testing"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
"k8s.io/kubernetes/pkg/registry/core/service/ipallocator"
)
diff --git a/pkg/registry/core/service/ipallocator/storage/BUILD b/pkg/registry/core/service/ipallocator/storage/BUILD
index 303f8402cf..e836d56a91 100644
--- a/pkg/registry/core/service/ipallocator/storage/BUILD
+++ b/pkg/registry/core/service/ipallocator/storage/BUILD
@@ -12,7 +12,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/service/ipallocator/storage",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/core/service/allocator:go_default_library",
"//pkg/registry/core/service/allocator/storage:go_default_library",
"//pkg/registry/core/service/ipallocator:go_default_library",
diff --git a/pkg/registry/core/service/ipallocator/storage/storage_test.go b/pkg/registry/core/service/ipallocator/storage/storage_test.go
index cd4e34c323..f70197d729 100644
--- a/pkg/registry/core/service/ipallocator/storage/storage_test.go
+++ b/pkg/registry/core/service/ipallocator/storage/storage_test.go
@@ -25,7 +25,7 @@ import (
"k8s.io/apiserver/pkg/storage"
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
"k8s.io/apiserver/pkg/storage/storagebackend/factory"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/core/service/allocator"
allocatorstore "k8s.io/kubernetes/pkg/registry/core/service/allocator/storage"
"k8s.io/kubernetes/pkg/registry/core/service/ipallocator"
diff --git a/pkg/registry/core/service/portallocator/BUILD b/pkg/registry/core/service/portallocator/BUILD
index fe22e770b0..4d038b33ad 100644
--- a/pkg/registry/core/service/portallocator/BUILD
+++ b/pkg/registry/core/service/portallocator/BUILD
@@ -14,7 +14,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/registry/core/service/portallocator",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/core/service/allocator:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library",
@@ -27,7 +27,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/service/portallocator",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
],
diff --git a/pkg/registry/core/service/portallocator/allocator.go b/pkg/registry/core/service/portallocator/allocator.go
index c73253f2dc..c31f4b045e 100644
--- a/pkg/registry/core/service/portallocator/allocator.go
+++ b/pkg/registry/core/service/portallocator/allocator.go
@@ -21,7 +21,7 @@ import (
"fmt"
"k8s.io/apimachinery/pkg/util/net"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/core/service/allocator"
"github.com/golang/glog"
diff --git a/pkg/registry/core/service/portallocator/allocator_test.go b/pkg/registry/core/service/portallocator/allocator_test.go
index fb3ea1f434..da393bc295 100644
--- a/pkg/registry/core/service/portallocator/allocator_test.go
+++ b/pkg/registry/core/service/portallocator/allocator_test.go
@@ -23,7 +23,7 @@ import (
"k8s.io/apimachinery/pkg/util/net"
"k8s.io/apimachinery/pkg/util/sets"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func TestAllocate(t *testing.T) {
diff --git a/pkg/registry/core/service/portallocator/controller/BUILD b/pkg/registry/core/service/portallocator/controller/BUILD
index 6054b2de9d..01408f6fba 100644
--- a/pkg/registry/core/service/portallocator/controller/BUILD
+++ b/pkg/registry/core/service/portallocator/controller/BUILD
@@ -11,7 +11,7 @@ go_library(
srcs = ["repair.go"],
importpath = "k8s.io/kubernetes/pkg/registry/core/service/portallocator/controller",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/core/internalversion:go_default_library",
"//pkg/registry/core/rangeallocation:go_default_library",
"//pkg/registry/core/service:go_default_library",
@@ -31,7 +31,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/service/portallocator/controller",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/client/clientset_generated/internalclientset/fake:go_default_library",
"//pkg/registry/core/service/portallocator:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
diff --git a/pkg/registry/core/service/portallocator/controller/repair.go b/pkg/registry/core/service/portallocator/controller/repair.go
index 25de257036..e02ca3ef1e 100644
--- a/pkg/registry/core/service/portallocator/controller/repair.go
+++ b/pkg/registry/core/service/portallocator/controller/repair.go
@@ -26,7 +26,7 @@ import (
"k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/client-go/util/retry"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
coreclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
"k8s.io/kubernetes/pkg/registry/core/rangeallocation"
"k8s.io/kubernetes/pkg/registry/core/service"
diff --git a/pkg/registry/core/service/portallocator/controller/repair_test.go b/pkg/registry/core/service/portallocator/controller/repair_test.go
index beb5a4cfd3..a011606253 100644
--- a/pkg/registry/core/service/portallocator/controller/repair_test.go
+++ b/pkg/registry/core/service/portallocator/controller/repair_test.go
@@ -23,7 +23,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/net"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
"k8s.io/kubernetes/pkg/registry/core/service/portallocator"
)
diff --git a/pkg/registry/core/service/proxy.go b/pkg/registry/core/service/proxy.go
index 03074de983..1956f276fb 100644
--- a/pkg/registry/core/service/proxy.go
+++ b/pkg/registry/core/service/proxy.go
@@ -26,7 +26,7 @@ import (
"k8s.io/apimachinery/pkg/util/proxy"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/capabilities"
)
diff --git a/pkg/registry/core/service/registry.go b/pkg/registry/core/service/registry.go
index 1660535525..332d651e7d 100644
--- a/pkg/registry/core/service/registry.go
+++ b/pkg/registry/core/service/registry.go
@@ -24,7 +24,7 @@ import (
"k8s.io/apimachinery/pkg/watch"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// Registry is an interface for things that know how to store services.
diff --git a/pkg/registry/core/service/rest.go b/pkg/registry/core/service/rest.go
index a36d098346..689850c1b8 100644
--- a/pkg/registry/core/service/rest.go
+++ b/pkg/registry/core/service/rest.go
@@ -36,10 +36,10 @@ import (
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/registry/rest"
utilfeature "k8s.io/apiserver/pkg/util/feature"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/helper"
apiservice "k8s.io/kubernetes/pkg/api/service"
- "k8s.io/kubernetes/pkg/api/validation"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
+ "k8s.io/kubernetes/pkg/apis/core/validation"
"k8s.io/kubernetes/pkg/features"
"k8s.io/kubernetes/pkg/registry/core/endpoint"
"k8s.io/kubernetes/pkg/registry/core/service/ipallocator"
@@ -61,6 +61,16 @@ type REST struct {
proxyTransport http.RoundTripper
}
+// ServiceNodePort includes protocol and port number of a service NodePort.
+type ServiceNodePort struct {
+ // The IP protocol for this port. Supports "TCP" and "UDP".
+ Protocol api.Protocol
+
+ // The port on each node on which this service is exposed.
+ // Default is to auto-allocate a port if the ServiceType of this Service requires one.
+ NodePort int32
+}
+
// NewStorage returns a new REST.
func NewStorage(registry Registry, endpoints endpoint.Registry, serviceIPs ipallocator.Interface,
serviceNodePorts portallocator.Interface, proxyTransport http.RoundTripper) *ServiceRest {
@@ -437,7 +447,7 @@ func (rs *REST) ResourceLocation(ctx genericapirequest.Context, id string) (*url
// This is O(N), but we expect haystack to be small;
// so small that we expect a linear search to be faster
-func contains(haystack []int, needle int) bool {
+func containsNumber(haystack []int, needle int) bool {
for _, v := range haystack {
if v == needle {
return true
@@ -446,6 +456,17 @@ func contains(haystack []int, needle int) bool {
return false
}
+// This is O(N), but we expect serviceNodePorts to be small;
+// so small that we expect a linear search to be faster
+func containsNodePort(serviceNodePorts []ServiceNodePort, serviceNodePort ServiceNodePort) bool {
+ for _, snp := range serviceNodePorts {
+ if snp == serviceNodePort {
+ return true
+ }
+ }
+ return false
+}
+
func CollectServiceNodePorts(service *api.Service) []int {
servicePorts := []int{}
for i := range service.Spec.Ports {
@@ -569,44 +590,48 @@ func (rs *REST) initNodePorts(service *api.Service, nodePortOp *portallocator.Po
}
func (rs *REST) updateNodePorts(oldService, newService *api.Service, nodePortOp *portallocator.PortAllocationOperation) error {
- oldNodePorts := CollectServiceNodePorts(oldService)
+ oldNodePortsNumbers := CollectServiceNodePorts(oldService)
+ newNodePorts := []ServiceNodePort{}
+ portAllocated := map[int]bool{}
- newNodePorts := []int{}
for i := range newService.Spec.Ports {
servicePort := &newService.Spec.Ports[i]
- nodePort := int(servicePort.NodePort)
- if nodePort != 0 {
- if !contains(oldNodePorts, nodePort) {
- err := nodePortOp.Allocate(nodePort)
+ nodePort := ServiceNodePort{Protocol: servicePort.Protocol, NodePort: servicePort.NodePort}
+ if nodePort.NodePort != 0 {
+ if !containsNumber(oldNodePortsNumbers, int(nodePort.NodePort)) && !portAllocated[int(nodePort.NodePort)] {
+ err := nodePortOp.Allocate(int(nodePort.NodePort))
if err != nil {
- el := field.ErrorList{field.Invalid(field.NewPath("spec", "ports").Index(i).Child("nodePort"), nodePort, err.Error())}
+ el := field.ErrorList{field.Invalid(field.NewPath("spec", "ports").Index(i).Child("nodePort"), nodePort.NodePort, err.Error())}
return errors.NewInvalid(api.Kind("Service"), newService.Name, el)
}
+ portAllocated[int(nodePort.NodePort)] = true
}
} else {
- nodePort, err := nodePortOp.AllocateNext()
+ nodePortNumber, err := nodePortOp.AllocateNext()
if err != nil {
// TODO: what error should be returned here? It's not a
// field-level validation failure (the field is valid), and it's
// not really an internal error.
return errors.NewInternalError(fmt.Errorf("failed to allocate a nodePort: %v", err))
}
- servicePort.NodePort = int32(nodePort)
+ servicePort.NodePort = int32(nodePortNumber)
+ nodePort.NodePort = servicePort.NodePort
}
- // Detect duplicate node ports; this should have been caught by validation, so we panic
- if contains(newNodePorts, nodePort) {
- panic("duplicate node port")
+ if containsNodePort(newNodePorts, nodePort) {
+ return fmt.Errorf("duplicate nodePort: %v", nodePort)
}
newNodePorts = append(newNodePorts, nodePort)
}
+ newNodePortsNumbers := CollectServiceNodePorts(newService)
+
// The comparison loops are O(N^2), but we don't expect N to be huge
// (there's a hard-limit at 2^16, because they're ports; and even 4 ports would be a lot)
- for _, oldNodePort := range oldNodePorts {
- if contains(newNodePorts, oldNodePort) {
+ for _, oldNodePortNumber := range oldNodePortsNumbers {
+ if containsNumber(newNodePortsNumbers, oldNodePortNumber) {
continue
}
- nodePortOp.ReleaseDeferred(oldNodePort)
+ nodePortOp.ReleaseDeferred(int(oldNodePortNumber))
}
return nil
diff --git a/pkg/registry/core/service/rest_test.go b/pkg/registry/core/service/rest_test.go
index ad171e9441..edc1a334d4 100644
--- a/pkg/registry/core/service/rest_test.go
+++ b/pkg/registry/core/service/rest_test.go
@@ -32,9 +32,9 @@ import (
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/registry/rest"
utilfeature "k8s.io/apiserver/pkg/util/feature"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/helper"
"k8s.io/kubernetes/pkg/api/service"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
"k8s.io/kubernetes/pkg/features"
"k8s.io/kubernetes/pkg/registry/core/service/ipallocator"
"k8s.io/kubernetes/pkg/registry/core/service/portallocator"
@@ -1570,6 +1570,92 @@ func TestUpdateNodePorts(t *testing.T) {
},
expectSpecifiedNodePorts: []int{},
},
+ {
+ name: "Add new ServicePort with a different protocol without changing port numbers",
+ oldService: &api.Service{
+ ObjectMeta: metav1.ObjectMeta{Name: "foo"},
+ Spec: api.ServiceSpec{
+ Selector: map[string]string{"bar": "baz"},
+ SessionAffinity: api.ServiceAffinityNone,
+ Type: api.ServiceTypeNodePort,
+ Ports: []api.ServicePort{
+ {
+ Name: "port-tcp",
+ Port: 53,
+ TargetPort: intstr.FromInt(6502),
+ Protocol: api.ProtocolTCP,
+ NodePort: 30053,
+ },
+ },
+ },
+ },
+ newService: &api.Service{
+ ObjectMeta: metav1.ObjectMeta{Name: "foo"},
+ Spec: api.ServiceSpec{
+ Selector: map[string]string{"bar": "baz"},
+ SessionAffinity: api.ServiceAffinityNone,
+ Type: api.ServiceTypeNodePort,
+ Ports: []api.ServicePort{
+ {
+ Name: "port-tcp",
+ Port: 53,
+ TargetPort: intstr.FromInt(6502),
+ Protocol: api.ProtocolTCP,
+ NodePort: 30053,
+ },
+ {
+ Name: "port-udp",
+ Port: 53,
+ TargetPort: intstr.FromInt(6502),
+ Protocol: api.ProtocolUDP,
+ NodePort: 30053,
+ },
+ },
+ },
+ },
+ expectSpecifiedNodePorts: []int{30053, 30053},
+ },
+ {
+ name: "Change service type from ClusterIP to NodePort with same NodePort number but different protocols",
+ oldService: &api.Service{
+ ObjectMeta: metav1.ObjectMeta{Name: "foo"},
+ Spec: api.ServiceSpec{
+ Selector: map[string]string{"bar": "baz"},
+ SessionAffinity: api.ServiceAffinityNone,
+ Type: api.ServiceTypeClusterIP,
+ Ports: []api.ServicePort{{
+ Port: 53,
+ Protocol: api.ProtocolTCP,
+ TargetPort: intstr.FromInt(6502),
+ }},
+ },
+ },
+ newService: &api.Service{
+ ObjectMeta: metav1.ObjectMeta{Name: "foo"},
+ Spec: api.ServiceSpec{
+ Selector: map[string]string{"bar": "baz"},
+ SessionAffinity: api.ServiceAffinityNone,
+ Type: api.ServiceTypeNodePort,
+ Ports: []api.ServicePort{
+ {
+ Name: "port-tcp",
+ Port: 53,
+ TargetPort: intstr.FromInt(6502),
+ Protocol: api.ProtocolTCP,
+ NodePort: 30053,
+ },
+ {
+ Name: "port-udp",
+ Port: 53,
+ TargetPort: intstr.FromInt(6502),
+ Protocol: api.ProtocolUDP,
+ NodePort: 30053,
+ },
+ },
+ },
+ },
+ expectSpecifiedNodePorts: []int{30053, 30053},
+ },
}
for _, test := range testCases {
diff --git a/pkg/registry/core/service/storage/BUILD b/pkg/registry/core/service/storage/BUILD
index 4afd2f4b0b..46a72fcd6a 100644
--- a/pkg/registry/core/service/storage/BUILD
+++ b/pkg/registry/core/service/storage/BUILD
@@ -12,7 +12,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/service/storage",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/registrytest:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/fields:go_default_library",
@@ -29,7 +29,7 @@ go_library(
srcs = ["storage.go"],
importpath = "k8s.io/kubernetes/pkg/registry/core/service/storage",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/printers:go_default_library",
"//pkg/printers/internalversion:go_default_library",
"//pkg/printers/storage:go_default_library",
diff --git a/pkg/registry/core/service/storage/storage.go b/pkg/registry/core/service/storage/storage.go
index eb0f8d052e..0d492b7e88 100644
--- a/pkg/registry/core/service/storage/storage.go
+++ b/pkg/registry/core/service/storage/storage.go
@@ -23,7 +23,7 @@ import (
"k8s.io/apiserver/pkg/registry/generic"
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/printers"
printersinternal "k8s.io/kubernetes/pkg/printers/internalversion"
printerstorage "k8s.io/kubernetes/pkg/printers/storage"
diff --git a/pkg/registry/core/service/storage/storage_test.go b/pkg/registry/core/service/storage/storage_test.go
index 9e2fab55e8..b51c3a9479 100644
--- a/pkg/registry/core/service/storage/storage_test.go
+++ b/pkg/registry/core/service/storage/storage_test.go
@@ -26,7 +26,7 @@ import (
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/apiserver/pkg/registry/generic"
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/registrytest"
)
diff --git a/pkg/registry/core/service/strategy.go b/pkg/registry/core/service/strategy.go
index 7b7e7033ae..278da88ed6 100644
--- a/pkg/registry/core/service/strategy.go
+++ b/pkg/registry/core/service/strategy.go
@@ -23,9 +23,9 @@ import (
"k8s.io/apimachinery/pkg/util/validation/field"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/storage/names"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
- "k8s.io/kubernetes/pkg/api/validation"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/validation"
)
// svcStrategy implements behavior for Services
diff --git a/pkg/registry/core/service/strategy_test.go b/pkg/registry/core/service/strategy_test.go
index 903af1ec03..e5b4b4cc5d 100644
--- a/pkg/registry/core/service/strategy_test.go
+++ b/pkg/registry/core/service/strategy_test.go
@@ -26,7 +26,7 @@ import (
"k8s.io/apimachinery/pkg/util/intstr"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func TestExportService(t *testing.T) {
diff --git a/pkg/registry/core/serviceaccount/BUILD b/pkg/registry/core/serviceaccount/BUILD
index 03d1ab32e4..956de50f0d 100644
--- a/pkg/registry/core/serviceaccount/BUILD
+++ b/pkg/registry/core/serviceaccount/BUILD
@@ -14,9 +14,9 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/registry/core/serviceaccount",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
diff --git a/pkg/registry/core/serviceaccount/registry.go b/pkg/registry/core/serviceaccount/registry.go
index edb30e9de5..8d13600577 100644
--- a/pkg/registry/core/serviceaccount/registry.go
+++ b/pkg/registry/core/serviceaccount/registry.go
@@ -22,7 +22,7 @@ import (
"k8s.io/apimachinery/pkg/watch"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// Registry is an interface implemented by things that know how to store ServiceAccount objects.
diff --git a/pkg/registry/core/serviceaccount/storage/BUILD b/pkg/registry/core/serviceaccount/storage/BUILD
index bd122cffa4..039b3efb6a 100644
--- a/pkg/registry/core/serviceaccount/storage/BUILD
+++ b/pkg/registry/core/serviceaccount/storage/BUILD
@@ -12,7 +12,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/core/serviceaccount/storage",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/registrytest:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/fields:go_default_library",
@@ -28,7 +28,7 @@ go_library(
srcs = ["storage.go"],
importpath = "k8s.io/kubernetes/pkg/registry/core/serviceaccount/storage",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/core/serviceaccount:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library",
diff --git a/pkg/registry/core/serviceaccount/storage/storage.go b/pkg/registry/core/serviceaccount/storage/storage.go
index 47d7641335..1b889374ad 100644
--- a/pkg/registry/core/serviceaccount/storage/storage.go
+++ b/pkg/registry/core/serviceaccount/storage/storage.go
@@ -21,7 +21,7 @@ import (
"k8s.io/apiserver/pkg/registry/generic"
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/core/serviceaccount"
)
diff --git a/pkg/registry/core/serviceaccount/storage/storage_test.go b/pkg/registry/core/serviceaccount/storage/storage_test.go
index 2d96c74f78..d10acb9ffa 100644
--- a/pkg/registry/core/serviceaccount/storage/storage_test.go
+++ b/pkg/registry/core/serviceaccount/storage/storage_test.go
@@ -25,7 +25,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apiserver/pkg/registry/generic"
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/registrytest"
)
diff --git a/pkg/registry/core/serviceaccount/strategy.go b/pkg/registry/core/serviceaccount/strategy.go
index f233f6015a..8a6a372070 100644
--- a/pkg/registry/core/serviceaccount/strategy.go
+++ b/pkg/registry/core/serviceaccount/strategy.go
@@ -21,9 +21,9 @@ import (
"k8s.io/apimachinery/pkg/util/validation/field"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/storage/names"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
- "k8s.io/kubernetes/pkg/api/validation"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/validation"
)
// strategy implements behavior for ServiceAccount objects
diff --git a/pkg/registry/extensions/controller/storage/BUILD b/pkg/registry/extensions/controller/storage/BUILD
index 6ddb41393b..8f4cf02eec 100644
--- a/pkg/registry/extensions/controller/storage/BUILD
+++ b/pkg/registry/extensions/controller/storage/BUILD
@@ -12,8 +12,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/extensions/controller/storage",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/apis/extensions:go_default_library",
+ "//pkg/apis/autoscaling:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/registry/registrytest:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
@@ -30,13 +30,15 @@ go_library(
srcs = ["storage.go"],
importpath = "k8s.io/kubernetes/pkg/registry/extensions/controller/storage",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/autoscaling:go_default_library",
+ "//pkg/apis/autoscaling/validation:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
- "//pkg/apis/extensions/validation:go_default_library",
"//pkg/registry/core/replicationcontroller:go_default_library",
"//pkg/registry/core/replicationcontroller/storage:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
"//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library",
diff --git a/pkg/registry/extensions/controller/storage/storage.go b/pkg/registry/extensions/controller/storage/storage.go
index d7e83e84b7..774a78911f 100644
--- a/pkg/registry/extensions/controller/storage/storage.go
+++ b/pkg/registry/extensions/controller/storage/storage.go
@@ -21,13 +21,15 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/registry/generic"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
+ "k8s.io/kubernetes/pkg/apis/autoscaling"
+ autoscalingvalidation "k8s.io/kubernetes/pkg/apis/autoscaling/validation"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
- extvalidation "k8s.io/kubernetes/pkg/apis/extensions/validation"
"k8s.io/kubernetes/pkg/registry/core/replicationcontroller"
controllerstore "k8s.io/kubernetes/pkg/registry/core/replicationcontroller/storage"
)
@@ -58,7 +60,7 @@ var _ = rest.Patcher(&ScaleREST{})
// New creates a new Scale object
func (r *ScaleREST) New() runtime.Object {
- return &extensions.Scale{}
+ return &autoscaling.Scale{}
}
func (r *ScaleREST) Get(ctx genericapirequest.Context, name string, options *metav1.GetOptions) (runtime.Object, error) {
@@ -81,12 +83,12 @@ func (r *ScaleREST) Update(ctx genericapirequest.Context, name string, objInfo r
if obj == nil {
return nil, false, errors.NewBadRequest(fmt.Sprintf("nil update passed to Scale"))
}
- scale, ok := obj.(*extensions.Scale)
+ scale, ok := obj.(*autoscaling.Scale)
if !ok {
return nil, false, errors.NewBadRequest(fmt.Sprintf("wrong object passed to Scale update: %v", obj))
}
- if errs := extvalidation.ValidateScale(scale); len(errs) > 0 {
+ if errs := autoscalingvalidation.ValidateScale(scale); len(errs) > 0 {
return nil, false, errors.NewInvalid(extensions.Kind("Scale"), scale.Name, errs)
}
@@ -100,8 +102,8 @@ func (r *ScaleREST) Update(ctx genericapirequest.Context, name string, objInfo r
}
// scaleFromRC returns a scale subresource for a replication controller.
-func scaleFromRC(rc *api.ReplicationController) *extensions.Scale {
- return &extensions.Scale{
+func scaleFromRC(rc *api.ReplicationController) *autoscaling.Scale {
+ return &autoscaling.Scale{
ObjectMeta: metav1.ObjectMeta{
Name: rc.Name,
Namespace: rc.Namespace,
@@ -109,14 +111,12 @@ func scaleFromRC(rc *api.ReplicationController) *extensions.Scale {
ResourceVersion: rc.ResourceVersion,
CreationTimestamp: rc.CreationTimestamp,
},
- Spec: extensions.ScaleSpec{
+ Spec: autoscaling.ScaleSpec{
Replicas: rc.Spec.Replicas,
},
- Status: extensions.ScaleStatus{
+ Status: autoscaling.ScaleStatus{
Replicas: rc.Status.Replicas,
- Selector: &metav1.LabelSelector{
- MatchLabels: rc.Spec.Selector,
- },
+ Selector: labels.SelectorFromSet(labels.Set(rc.Spec.Selector)).String(),
},
}
}
diff --git a/pkg/registry/extensions/controller/storage/storage_test.go b/pkg/registry/extensions/controller/storage/storage_test.go
index 27bc76d727..62689035fb 100644
--- a/pkg/registry/extensions/controller/storage/storage_test.go
+++ b/pkg/registry/extensions/controller/storage/storage_test.go
@@ -26,8 +26,8 @@ import (
"k8s.io/apiserver/pkg/storage"
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
"k8s.io/apiserver/pkg/storage/storagebackend/factory"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/apis/extensions"
+ "k8s.io/kubernetes/pkg/apis/autoscaling"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/registry/registrytest"
)
@@ -74,16 +74,14 @@ var validController = api.ReplicationController{
Spec: validControllerSpec,
}
-var validScale = extensions.Scale{
+var validScale = autoscaling.Scale{
ObjectMeta: metav1.ObjectMeta{Name: "foo", Namespace: "test"},
- Spec: extensions.ScaleSpec{
+ Spec: autoscaling.ScaleSpec{
Replicas: validReplicas,
},
- Status: extensions.ScaleStatus{
+ Status: autoscaling.ScaleStatus{
Replicas: 0,
- Selector: &metav1.LabelSelector{
- MatchLabels: validPodTemplate.Template.Labels,
- },
+ Selector: "a=b",
},
}
@@ -100,7 +98,7 @@ func TestGet(t *testing.T) {
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
- scale := obj.(*extensions.Scale)
+ scale := obj.(*autoscaling.Scale)
if scale.Spec.Replicas != validReplicas {
t.Errorf("wrong replicas count expected: %d got: %d", validReplicas, scale.Spec.Replicas)
}
@@ -116,9 +114,9 @@ func TestUpdate(t *testing.T) {
t.Fatalf("unexpected error: %v", err)
}
replicas := int32(12)
- update := extensions.Scale{
+ update := autoscaling.Scale{
ObjectMeta: metav1.ObjectMeta{Name: "foo", Namespace: "test"},
- Spec: extensions.ScaleSpec{
+ Spec: autoscaling.ScaleSpec{
Replicas: replicas,
},
}
@@ -131,7 +129,7 @@ func TestUpdate(t *testing.T) {
t.Fatalf("unexpected error: %v", err)
}
- updated := obj.(*extensions.Scale)
+ updated := obj.(*autoscaling.Scale)
if updated.Spec.Replicas != replicas {
t.Errorf("wrong replicas count expected: %d got: %d", replicas, updated.Spec.Replicas)
}
diff --git a/pkg/registry/extensions/daemonset/BUILD b/pkg/registry/extensions/daemonset/BUILD
index 20927a9f70..d2afe48f1b 100644
--- a/pkg/registry/extensions/daemonset/BUILD
+++ b/pkg/registry/extensions/daemonset/BUILD
@@ -36,7 +36,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/extensions/daemonset",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
diff --git a/pkg/registry/extensions/daemonset/storage/BUILD b/pkg/registry/extensions/daemonset/storage/BUILD
index 9c4ae86778..2d53cd28d3 100644
--- a/pkg/registry/extensions/daemonset/storage/BUILD
+++ b/pkg/registry/extensions/daemonset/storage/BUILD
@@ -12,7 +12,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/extensions/daemonset/storage",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/registry/registrytest:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
diff --git a/pkg/registry/extensions/daemonset/storage/storage_test.go b/pkg/registry/extensions/daemonset/storage/storage_test.go
index 4f20090102..1d029f7478 100644
--- a/pkg/registry/extensions/daemonset/storage/storage_test.go
+++ b/pkg/registry/extensions/daemonset/storage/storage_test.go
@@ -25,7 +25,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apiserver/pkg/registry/generic"
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/registry/registrytest"
)
diff --git a/pkg/registry/extensions/daemonset/strategy_test.go b/pkg/registry/extensions/daemonset/strategy_test.go
index 50aee5545a..466b0f17bf 100644
--- a/pkg/registry/extensions/daemonset/strategy_test.go
+++ b/pkg/registry/extensions/daemonset/strategy_test.go
@@ -24,7 +24,7 @@ import (
"k8s.io/apimachinery/pkg/util/validation/field"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
)
diff --git a/pkg/registry/extensions/deployment/BUILD b/pkg/registry/extensions/deployment/BUILD
index b6b327f269..daeb853697 100644
--- a/pkg/registry/extensions/deployment/BUILD
+++ b/pkg/registry/extensions/deployment/BUILD
@@ -40,7 +40,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/extensions/deployment",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
diff --git a/pkg/registry/extensions/deployment/storage/BUILD b/pkg/registry/extensions/deployment/storage/BUILD
index cb4d1ed8e7..3276c7105b 100644
--- a/pkg/registry/extensions/deployment/storage/BUILD
+++ b/pkg/registry/extensions/deployment/storage/BUILD
@@ -12,7 +12,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/extensions/deployment/storage",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/autoscaling:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/registry/registrytest:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
@@ -38,7 +39,9 @@ go_library(
deps = [
"//pkg/apis/apps/v1beta1:go_default_library",
"//pkg/apis/apps/v1beta2:go_default_library",
+ "//pkg/apis/autoscaling:go_default_library",
"//pkg/apis/autoscaling/v1:go_default_library",
+ "//pkg/apis/autoscaling/validation:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/apis/extensions/v1beta1:go_default_library",
"//pkg/apis/extensions/validation:go_default_library",
diff --git a/pkg/registry/extensions/deployment/storage/storage.go b/pkg/registry/extensions/deployment/storage/storage.go
index aedccc58bf..6cf80f8dcc 100644
--- a/pkg/registry/extensions/deployment/storage/storage.go
+++ b/pkg/registry/extensions/deployment/storage/storage.go
@@ -32,7 +32,9 @@ import (
storeerr "k8s.io/apiserver/pkg/storage/errors"
appsv1beta1 "k8s.io/kubernetes/pkg/apis/apps/v1beta1"
appsv1beta2 "k8s.io/kubernetes/pkg/apis/apps/v1beta2"
+ "k8s.io/kubernetes/pkg/apis/autoscaling"
autoscalingv1 "k8s.io/kubernetes/pkg/apis/autoscaling/v1"
+ autoscalingvalidation "k8s.io/kubernetes/pkg/apis/autoscaling/validation"
"k8s.io/kubernetes/pkg/apis/extensions"
extensionsv1beta1 "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
extvalidation "k8s.io/kubernetes/pkg/apis/extensions/validation"
@@ -212,7 +214,7 @@ func (r *ScaleREST) GroupVersionKind(containingGV schema.GroupVersion) schema.Gr
// New creates a new Scale object
func (r *ScaleREST) New() runtime.Object {
- return &extensions.Scale{}
+ return &autoscaling.Scale{}
}
func (r *ScaleREST) Get(ctx genericapirequest.Context, name string, options *metav1.GetOptions) (runtime.Object, error) {
@@ -245,12 +247,12 @@ func (r *ScaleREST) Update(ctx genericapirequest.Context, name string, objInfo r
if obj == nil {
return nil, false, errors.NewBadRequest(fmt.Sprintf("nil update passed to Scale"))
}
- scale, ok := obj.(*extensions.Scale)
+ scale, ok := obj.(*autoscaling.Scale)
if !ok {
return nil, false, errors.NewBadRequest(fmt.Sprintf("expected input object type to be Scale, but %T", obj))
}
- if errs := extvalidation.ValidateScale(scale); len(errs) > 0 {
+ if errs := autoscalingvalidation.ValidateScale(scale); len(errs) > 0 {
return nil, false, errors.NewInvalid(extensions.Kind("Scale"), name, errs)
}
@@ -268,8 +270,12 @@ func (r *ScaleREST) Update(ctx genericapirequest.Context, name string, objInfo r
}
// scaleFromDeployment returns a scale subresource for a deployment.
-func scaleFromDeployment(deployment *extensions.Deployment) (*extensions.Scale, error) {
- return &extensions.Scale{
+func scaleFromDeployment(deployment *extensions.Deployment) (*autoscaling.Scale, error) {
+ selector, err := metav1.LabelSelectorAsSelector(deployment.Spec.Selector)
+ if err != nil {
+ return nil, err
+ }
+ return &autoscaling.Scale{
// TODO: Create a variant of ObjectMeta type that only contains the fields below.
ObjectMeta: metav1.ObjectMeta{
Name: deployment.Name,
@@ -278,12 +284,12 @@ func scaleFromDeployment(deployment *extensions.Deployment) (*extensions.Scale,
ResourceVersion: deployment.ResourceVersion,
CreationTimestamp: deployment.CreationTimestamp,
},
- Spec: extensions.ScaleSpec{
+ Spec: autoscaling.ScaleSpec{
Replicas: deployment.Spec.Replicas,
},
- Status: extensions.ScaleStatus{
+ Status: autoscaling.ScaleStatus{
Replicas: deployment.Status.Replicas,
- Selector: deployment.Spec.Selector,
+ Selector: selector.String(),
},
}, nil
}
diff --git a/pkg/registry/extensions/deployment/storage/storage_test.go b/pkg/registry/extensions/deployment/storage/storage_test.go
index 55fe3476f4..aa7764b16f 100644
--- a/pkg/registry/extensions/deployment/storage/storage_test.go
+++ b/pkg/registry/extensions/deployment/storage/storage_test.go
@@ -34,7 +34,8 @@ import (
"k8s.io/apiserver/pkg/registry/rest"
storeerr "k8s.io/apiserver/pkg/storage/errors"
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
- "k8s.io/kubernetes/pkg/api"
+ "k8s.io/kubernetes/pkg/apis/autoscaling"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/registry/registrytest"
)
@@ -207,7 +208,11 @@ func TestScaleGet(t *testing.T) {
t.Fatalf("error setting new deployment (key: %s) %v: %v", key, validDeployment, err)
}
- want := &extensions.Scale{
+ selector, err := metav1.LabelSelectorAsSelector(validDeployment.Spec.Selector)
+ if err != nil {
+ t.Fatal(err)
+ }
+ want := &autoscaling.Scale{
ObjectMeta: metav1.ObjectMeta{
Name: name,
Namespace: namespace,
@@ -215,19 +220,19 @@ func TestScaleGet(t *testing.T) {
ResourceVersion: deployment.ResourceVersion,
CreationTimestamp: deployment.CreationTimestamp,
},
- Spec: extensions.ScaleSpec{
+ Spec: autoscaling.ScaleSpec{
Replicas: validDeployment.Spec.Replicas,
},
- Status: extensions.ScaleStatus{
+ Status: autoscaling.ScaleStatus{
Replicas: validDeployment.Status.Replicas,
- Selector: validDeployment.Spec.Selector,
+ Selector: selector.String(),
},
}
obj, err := storage.Scale.Get(ctx, name, &metav1.GetOptions{})
if err != nil {
t.Fatalf("error fetching scale for %s: %v", name, err)
}
- got := obj.(*extensions.Scale)
+ got := obj.(*autoscaling.Scale)
if !apiequality.Semantic.DeepEqual(want, got) {
t.Errorf("unexpected scale: %s", diff.ObjectDiff(want, got))
}
@@ -244,9 +249,9 @@ func TestScaleUpdate(t *testing.T) {
t.Fatalf("error setting new deployment (key: %s) %v: %v", key, validDeployment, err)
}
replicas := int32(12)
- update := extensions.Scale{
+ update := autoscaling.Scale{
ObjectMeta: metav1.ObjectMeta{Name: name, Namespace: namespace},
- Spec: extensions.ScaleSpec{
+ Spec: autoscaling.ScaleSpec{
Replicas: replicas,
},
}
@@ -258,7 +263,7 @@ func TestScaleUpdate(t *testing.T) {
if err != nil {
t.Fatalf("error fetching scale for %s: %v", name, err)
}
- scale := obj.(*extensions.Scale)
+ scale := obj.(*autoscaling.Scale)
if scale.Spec.Replicas != replicas {
t.Errorf("wrong replicas count expected: %d got: %d", replicas, deployment.Spec.Replicas)
}
diff --git a/pkg/registry/extensions/deployment/strategy_test.go b/pkg/registry/extensions/deployment/strategy_test.go
index 2a53b347f2..77e65f8ce3 100644
--- a/pkg/registry/extensions/deployment/strategy_test.go
+++ b/pkg/registry/extensions/deployment/strategy_test.go
@@ -25,7 +25,7 @@ import (
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/apimachinery/pkg/util/validation/field"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
)
diff --git a/pkg/registry/extensions/ingress/BUILD b/pkg/registry/extensions/ingress/BUILD
index d5a1189d3d..277a12e4a8 100644
--- a/pkg/registry/extensions/ingress/BUILD
+++ b/pkg/registry/extensions/ingress/BUILD
@@ -31,7 +31,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/extensions/ingress",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
diff --git a/pkg/registry/extensions/ingress/storage/BUILD b/pkg/registry/extensions/ingress/storage/BUILD
index d1dc772f9c..76c3855151 100644
--- a/pkg/registry/extensions/ingress/storage/BUILD
+++ b/pkg/registry/extensions/ingress/storage/BUILD
@@ -12,7 +12,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/extensions/ingress/storage",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/registry/registrytest:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
diff --git a/pkg/registry/extensions/ingress/storage/storage_test.go b/pkg/registry/extensions/ingress/storage/storage_test.go
index 10f911952c..aacdf556ab 100644
--- a/pkg/registry/extensions/ingress/storage/storage_test.go
+++ b/pkg/registry/extensions/ingress/storage/storage_test.go
@@ -26,7 +26,7 @@ import (
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/apiserver/pkg/registry/generic"
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/registry/registrytest"
)
diff --git a/pkg/registry/extensions/ingress/strategy_test.go b/pkg/registry/extensions/ingress/strategy_test.go
index 15db6711ff..e12b79ff91 100644
--- a/pkg/registry/extensions/ingress/strategy_test.go
+++ b/pkg/registry/extensions/ingress/strategy_test.go
@@ -22,7 +22,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/intstr"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
)
diff --git a/pkg/registry/extensions/replicaset/BUILD b/pkg/registry/extensions/replicaset/BUILD
index 073ea54ec4..430ba736c0 100644
--- a/pkg/registry/extensions/replicaset/BUILD
+++ b/pkg/registry/extensions/replicaset/BUILD
@@ -44,7 +44,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/extensions/replicaset",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
diff --git a/pkg/registry/extensions/replicaset/storage/BUILD b/pkg/registry/extensions/replicaset/storage/BUILD
index 8c6c095b14..cb47722779 100644
--- a/pkg/registry/extensions/replicaset/storage/BUILD
+++ b/pkg/registry/extensions/replicaset/storage/BUILD
@@ -12,7 +12,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/extensions/replicaset/storage",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/autoscaling:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/registry/registrytest:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
@@ -36,10 +37,11 @@ go_library(
deps = [
"//pkg/apis/apps/v1beta1:go_default_library",
"//pkg/apis/apps/v1beta2:go_default_library",
+ "//pkg/apis/autoscaling:go_default_library",
"//pkg/apis/autoscaling/v1:go_default_library",
+ "//pkg/apis/autoscaling/validation:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/apis/extensions/v1beta1:go_default_library",
- "//pkg/apis/extensions/validation:go_default_library",
"//pkg/printers:go_default_library",
"//pkg/printers/internalversion:go_default_library",
"//pkg/printers/storage:go_default_library",
diff --git a/pkg/registry/extensions/replicaset/storage/storage.go b/pkg/registry/extensions/replicaset/storage/storage.go
index de513a337a..893e66390d 100644
--- a/pkg/registry/extensions/replicaset/storage/storage.go
+++ b/pkg/registry/extensions/replicaset/storage/storage.go
@@ -31,10 +31,11 @@ import (
"k8s.io/apiserver/pkg/registry/rest"
appsv1beta1 "k8s.io/kubernetes/pkg/apis/apps/v1beta1"
appsv1beta2 "k8s.io/kubernetes/pkg/apis/apps/v1beta2"
+ "k8s.io/kubernetes/pkg/apis/autoscaling"
autoscalingv1 "k8s.io/kubernetes/pkg/apis/autoscaling/v1"
+ autoscalingvalidation "k8s.io/kubernetes/pkg/apis/autoscaling/validation"
"k8s.io/kubernetes/pkg/apis/extensions"
extensionsv1beta1 "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
- extvalidation "k8s.io/kubernetes/pkg/apis/extensions/validation"
"k8s.io/kubernetes/pkg/printers"
printersinternal "k8s.io/kubernetes/pkg/printers/internalversion"
printerstorage "k8s.io/kubernetes/pkg/printers/storage"
@@ -146,7 +147,7 @@ func (r *ScaleREST) GroupVersionKind(containingGV schema.GroupVersion) schema.Gr
// New creates a new Scale object
func (r *ScaleREST) New() runtime.Object {
- return &extensions.Scale{}
+ return &autoscaling.Scale{}
}
func (r *ScaleREST) Get(ctx genericapirequest.Context, name string, options *metav1.GetOptions) (runtime.Object, error) {
@@ -180,12 +181,12 @@ func (r *ScaleREST) Update(ctx genericapirequest.Context, name string, objInfo r
if obj == nil {
return nil, false, errors.NewBadRequest(fmt.Sprintf("nil update passed to Scale"))
}
- scale, ok := obj.(*extensions.Scale)
+ scale, ok := obj.(*autoscaling.Scale)
if !ok {
return nil, false, errors.NewBadRequest(fmt.Sprintf("wrong object passed to Scale update: %v", obj))
}
- if errs := extvalidation.ValidateScale(scale); len(errs) > 0 {
+ if errs := autoscalingvalidation.ValidateScale(scale); len(errs) > 0 {
return nil, false, errors.NewInvalid(extensions.Kind("Scale"), scale.Name, errs)
}
@@ -203,8 +204,12 @@ func (r *ScaleREST) Update(ctx genericapirequest.Context, name string, objInfo r
}
// scaleFromReplicaSet returns a scale subresource for a replica set.
-func scaleFromReplicaSet(rs *extensions.ReplicaSet) (*extensions.Scale, error) {
- return &extensions.Scale{
+func scaleFromReplicaSet(rs *extensions.ReplicaSet) (*autoscaling.Scale, error) {
+ selector, err := metav1.LabelSelectorAsSelector(rs.Spec.Selector)
+ if err != nil {
+ return nil, err
+ }
+ return &autoscaling.Scale{
// TODO: Create a variant of ObjectMeta type that only contains the fields below.
ObjectMeta: metav1.ObjectMeta{
Name: rs.Name,
@@ -213,12 +218,12 @@ func scaleFromReplicaSet(rs *extensions.ReplicaSet) (*extensions.Scale, error) {
ResourceVersion: rs.ResourceVersion,
CreationTimestamp: rs.CreationTimestamp,
},
- Spec: extensions.ScaleSpec{
+ Spec: autoscaling.ScaleSpec{
Replicas: rs.Spec.Replicas,
},
- Status: extensions.ScaleStatus{
+ Status: autoscaling.ScaleStatus{
Replicas: rs.Status.Replicas,
- Selector: rs.Spec.Selector,
+ Selector: selector.String(),
},
}, nil
}
diff --git a/pkg/registry/extensions/replicaset/storage/storage_test.go b/pkg/registry/extensions/replicaset/storage/storage_test.go
index 8f58047564..a501099c5a 100644
--- a/pkg/registry/extensions/replicaset/storage/storage_test.go
+++ b/pkg/registry/extensions/replicaset/storage/storage_test.go
@@ -30,7 +30,8 @@ import (
"k8s.io/apiserver/pkg/registry/generic"
"k8s.io/apiserver/pkg/registry/rest"
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
- "k8s.io/kubernetes/pkg/api"
+ "k8s.io/kubernetes/pkg/apis/autoscaling"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/registry/registrytest"
)
@@ -261,7 +262,12 @@ func TestScaleGet(t *testing.T) {
t.Fatalf("error setting new replica set (key: %s) %v: %v", key, validReplicaSet, err)
}
- want := &extensions.Scale{
+ selector, err := metav1.LabelSelectorAsSelector(validReplicaSet.Spec.Selector)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ want := &autoscaling.Scale{
ObjectMeta: metav1.ObjectMeta{
Name: name,
Namespace: metav1.NamespaceDefault,
@@ -269,16 +275,16 @@ func TestScaleGet(t *testing.T) {
ResourceVersion: rs.ResourceVersion,
CreationTimestamp: rs.CreationTimestamp,
},
- Spec: extensions.ScaleSpec{
+ Spec: autoscaling.ScaleSpec{
Replicas: validReplicaSet.Spec.Replicas,
},
- Status: extensions.ScaleStatus{
+ Status: autoscaling.ScaleStatus{
Replicas: validReplicaSet.Status.Replicas,
- Selector: validReplicaSet.Spec.Selector,
+ Selector: selector.String(),
},
}
obj, err := storage.Scale.Get(ctx, name, &metav1.GetOptions{})
- got := obj.(*extensions.Scale)
+ got := obj.(*autoscaling.Scale)
if err != nil {
t.Fatalf("error fetching scale for %s: %v", name, err)
}
@@ -301,12 +307,12 @@ func TestScaleUpdate(t *testing.T) {
t.Fatalf("error setting new replica set (key: %s) %v: %v", key, validReplicaSet, err)
}
replicas := 12
- update := extensions.Scale{
+ update := autoscaling.Scale{
ObjectMeta: metav1.ObjectMeta{
Name: name,
Namespace: metav1.NamespaceDefault,
},
- Spec: extensions.ScaleSpec{
+ Spec: autoscaling.ScaleSpec{
Replicas: int32(replicas),
},
}
@@ -319,7 +325,7 @@ func TestScaleUpdate(t *testing.T) {
if err != nil {
t.Fatalf("error fetching scale for %s: %v", name, err)
}
- scale := obj.(*extensions.Scale)
+ scale := obj.(*autoscaling.Scale)
if scale.Spec.Replicas != int32(replicas) {
t.Errorf("wrong replicas count expected: %d got: %d", replicas, scale.Spec.Replicas)
}
diff --git a/pkg/registry/extensions/replicaset/strategy_test.go b/pkg/registry/extensions/replicaset/strategy_test.go
index 27f7b9020e..2e87de59c0 100644
--- a/pkg/registry/extensions/replicaset/strategy_test.go
+++ b/pkg/registry/extensions/replicaset/strategy_test.go
@@ -23,7 +23,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/validation/field"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
)
diff --git a/pkg/registry/networking/networkpolicy/storage/BUILD b/pkg/registry/networking/networkpolicy/storage/BUILD
index ceacb4ebed..bcb2cdeada 100644
--- a/pkg/registry/networking/networkpolicy/storage/BUILD
+++ b/pkg/registry/networking/networkpolicy/storage/BUILD
@@ -39,7 +39,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/networking/networkpolicy/storage",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/networking:go_default_library",
"//pkg/registry/registrytest:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
diff --git a/pkg/registry/networking/networkpolicy/storage/storage_test.go b/pkg/registry/networking/networkpolicy/storage/storage_test.go
index 89fff4c9e4..d93e270363 100644
--- a/pkg/registry/networking/networkpolicy/storage/storage_test.go
+++ b/pkg/registry/networking/networkpolicy/storage/storage_test.go
@@ -26,7 +26,7 @@ import (
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/apiserver/pkg/registry/generic"
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/networking"
"k8s.io/kubernetes/pkg/registry/registrytest"
)
diff --git a/pkg/registry/rbac/BUILD b/pkg/registry/rbac/BUILD
index 432335889c..10bb682083 100644
--- a/pkg/registry/rbac/BUILD
+++ b/pkg/registry/rbac/BUILD
@@ -53,8 +53,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/rbac",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/helper:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
],
diff --git a/pkg/registry/rbac/clusterrole/policybased/BUILD b/pkg/registry/rbac/clusterrole/policybased/BUILD
index 28a5d9a6a1..e58b32eac0 100644
--- a/pkg/registry/rbac/clusterrole/policybased/BUILD
+++ b/pkg/registry/rbac/clusterrole/policybased/BUILD
@@ -10,7 +10,7 @@ go_library(
srcs = ["storage.go"],
importpath = "k8s.io/kubernetes/pkg/registry/rbac/clusterrole/policybased",
deps = [
- "//pkg/api/helper:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
"//pkg/apis/rbac:go_default_library",
"//pkg/registry/rbac:go_default_library",
"//pkg/registry/rbac/validation:go_default_library",
diff --git a/pkg/registry/rbac/clusterrole/policybased/storage.go b/pkg/registry/rbac/clusterrole/policybased/storage.go
index 6a19e61634..0b32fdebf1 100644
--- a/pkg/registry/rbac/clusterrole/policybased/storage.go
+++ b/pkg/registry/rbac/clusterrole/policybased/storage.go
@@ -18,11 +18,13 @@ limitations under the License.
package policybased
import (
- "k8s.io/apimachinery/pkg/api/errors"
+ "errors"
+
+ apierrors "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/runtime"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/registry/rest"
- kapihelper "k8s.io/kubernetes/pkg/api/helper"
+ kapihelper "k8s.io/kubernetes/pkg/apis/core/helper"
"k8s.io/kubernetes/pkg/apis/rbac"
rbacregistry "k8s.io/kubernetes/pkg/registry/rbac"
rbacregistryvalidation "k8s.io/kubernetes/pkg/registry/rbac/validation"
@@ -40,6 +42,11 @@ func NewStorage(s rest.StandardStorage, ruleResolver rbacregistryvalidation.Auth
return &Storage{s, ruleResolver}
}
+var fullAuthority = []rbac.PolicyRule{
+ rbac.NewRule("*").Groups("*").Resources("*").RuleOrDie(),
+ rbac.NewRule("*").URLs("*").RuleOrDie(),
+}
+
func (s *Storage) Create(ctx genericapirequest.Context, obj runtime.Object, createValidatingAdmission rest.ValidateObjectFunc, includeUninitialized bool) (runtime.Object, error) {
if rbacregistry.EscalationAllowed(ctx) {
return s.StandardStorage.Create(ctx, obj, createValidatingAdmission, includeUninitialized)
@@ -48,8 +55,15 @@ func (s *Storage) Create(ctx genericapirequest.Context, obj runtime.Object, crea
clusterRole := obj.(*rbac.ClusterRole)
rules := clusterRole.Rules
if err := rbacregistryvalidation.ConfirmNoEscalation(ctx, s.ruleResolver, rules); err != nil {
- return nil, errors.NewForbidden(groupResource, clusterRole.Name, err)
+ return nil, apierrors.NewForbidden(groupResource, clusterRole.Name, err)
}
+ // to set the aggregation rule, since it can gather anything, requires * on *.*
+ if hasAggregationRule(clusterRole) {
+ if err := rbacregistryvalidation.ConfirmNoEscalation(ctx, s.ruleResolver, fullAuthority); err != nil {
+ return nil, apierrors.NewForbidden(groupResource, clusterRole.Name, errors.New("must have cluster-admin privileges to use the aggregationRule"))
+ }
+ }
+
return s.StandardStorage.Create(ctx, obj, createValidatingAdmission, includeUninitialized)
}
@@ -60,6 +74,7 @@ func (s *Storage) Update(ctx genericapirequest.Context, name string, obj rest.Up
nonEscalatingInfo := rest.WrapUpdatedObjectInfo(obj, func(ctx genericapirequest.Context, obj runtime.Object, oldObj runtime.Object) (runtime.Object, error) {
clusterRole := obj.(*rbac.ClusterRole)
+ oldClusterRole := oldObj.(*rbac.ClusterRole)
// if we're only mutating fields needed for the GC to eventually delete this obj, return
if rbacregistry.IsOnlyMutatingGCFields(obj, oldObj, kapihelper.Semantic) {
@@ -68,10 +83,21 @@ func (s *Storage) Update(ctx genericapirequest.Context, name string, obj rest.Up
rules := clusterRole.Rules
if err := rbacregistryvalidation.ConfirmNoEscalation(ctx, s.ruleResolver, rules); err != nil {
- return nil, errors.NewForbidden(groupResource, clusterRole.Name, err)
+ return nil, apierrors.NewForbidden(groupResource, clusterRole.Name, err)
}
+ // to change the aggregation rule, since it can gather anything and prevent tightening, requires * on *.*
+ if hasAggregationRule(clusterRole) || hasAggregationRule(oldClusterRole) {
+ if err := rbacregistryvalidation.ConfirmNoEscalation(ctx, s.ruleResolver, fullAuthority); err != nil {
+ return nil, apierrors.NewForbidden(groupResource, clusterRole.Name, errors.New("must have cluster-admin privileges to use the aggregationRule"))
+ }
+ }
+
return obj, nil
})
return s.StandardStorage.Update(ctx, name, nonEscalatingInfo, createValidation, updateValidation)
}
+
+func hasAggregationRule(clusterRole *rbac.ClusterRole) bool {
+ return clusterRole.AggregationRule != nil && len(clusterRole.AggregationRule.ClusterRoleSelectors) > 0
+}
diff --git a/pkg/registry/rbac/clusterrolebinding/policybased/BUILD b/pkg/registry/rbac/clusterrolebinding/policybased/BUILD
index 5d18bdb26f..2141978eec 100644
--- a/pkg/registry/rbac/clusterrolebinding/policybased/BUILD
+++ b/pkg/registry/rbac/clusterrolebinding/policybased/BUILD
@@ -10,7 +10,7 @@ go_library(
srcs = ["storage.go"],
importpath = "k8s.io/kubernetes/pkg/registry/rbac/clusterrolebinding/policybased",
deps = [
- "//pkg/api/helper:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
"//pkg/apis/rbac:go_default_library",
"//pkg/registry/rbac:go_default_library",
"//pkg/registry/rbac/validation:go_default_library",
diff --git a/pkg/registry/rbac/clusterrolebinding/policybased/storage.go b/pkg/registry/rbac/clusterrolebinding/policybased/storage.go
index c6b54f92cc..12264dba46 100644
--- a/pkg/registry/rbac/clusterrolebinding/policybased/storage.go
+++ b/pkg/registry/rbac/clusterrolebinding/policybased/storage.go
@@ -24,7 +24,7 @@ import (
"k8s.io/apiserver/pkg/authorization/authorizer"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/registry/rest"
- kapihelper "k8s.io/kubernetes/pkg/api/helper"
+ kapihelper "k8s.io/kubernetes/pkg/apis/core/helper"
"k8s.io/kubernetes/pkg/apis/rbac"
rbacregistry "k8s.io/kubernetes/pkg/registry/rbac"
rbacregistryvalidation "k8s.io/kubernetes/pkg/registry/rbac/validation"
diff --git a/pkg/registry/rbac/helpers_test.go b/pkg/registry/rbac/helpers_test.go
index a371c7964c..755b82a026 100644
--- a/pkg/registry/rbac/helpers_test.go
+++ b/pkg/registry/rbac/helpers_test.go
@@ -21,8 +21,8 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
- kapi "k8s.io/kubernetes/pkg/api"
- kapihelper "k8s.io/kubernetes/pkg/api/helper"
+ kapi "k8s.io/kubernetes/pkg/apis/core"
+ kapihelper "k8s.io/kubernetes/pkg/apis/core/helper"
)
func newPod() *kapi.Pod {
diff --git a/pkg/registry/rbac/reconciliation/BUILD b/pkg/registry/rbac/reconciliation/BUILD
index a9d398dd8e..72d6ae1d5b 100644
--- a/pkg/registry/rbac/reconciliation/BUILD
+++ b/pkg/registry/rbac/reconciliation/BUILD
@@ -15,9 +15,10 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/rbac/reconciliation",
library = ":go_default_library",
deps = [
- "//pkg/api/helper:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
"//pkg/apis/rbac:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library",
],
)
@@ -34,14 +35,14 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/registry/rbac/reconciliation",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/rbac:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/core/internalversion:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/rbac/internalversion:go_default_library",
"//pkg/registry/rbac/validation:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
],
diff --git a/pkg/registry/rbac/reconciliation/clusterrole_interfaces.go b/pkg/registry/rbac/reconciliation/clusterrole_interfaces.go
index cd4f221f37..419cc1df26 100644
--- a/pkg/registry/rbac/reconciliation/clusterrole_interfaces.go
+++ b/pkg/registry/rbac/reconciliation/clusterrole_interfaces.go
@@ -66,6 +66,14 @@ func (o ClusterRoleRuleOwner) SetRules(in []rbac.PolicyRule) {
o.ClusterRole.Rules = in
}
+func (o ClusterRoleRuleOwner) GetAggregationRule() *rbac.AggregationRule {
+ return o.ClusterRole.AggregationRule
+}
+
+func (o ClusterRoleRuleOwner) SetAggregationRule(in *rbac.AggregationRule) {
+ o.ClusterRole.AggregationRule = in
+}
+
type ClusterRoleModifier struct {
Client internalversion.ClusterRoleInterface
}
diff --git a/pkg/registry/rbac/reconciliation/reconcile_role.go b/pkg/registry/rbac/reconciliation/reconcile_role.go
index 873b329b0a..b460599101 100644
--- a/pkg/registry/rbac/reconciliation/reconcile_role.go
+++ b/pkg/registry/rbac/reconciliation/reconcile_role.go
@@ -20,7 +20,9 @@ import (
"fmt"
"reflect"
+ "k8s.io/apimachinery/pkg/api/equality"
"k8s.io/apimachinery/pkg/api/errors"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/kubernetes/pkg/apis/rbac"
"k8s.io/kubernetes/pkg/registry/rbac/validation"
@@ -51,6 +53,8 @@ type RuleOwner interface {
SetAnnotations(map[string]string)
GetRules() []rbac.PolicyRule
SetRules([]rbac.PolicyRule)
+ GetAggregationRule() *rbac.AggregationRule
+ SetAggregationRule(*rbac.AggregationRule)
DeepCopyRuleOwner() RuleOwner
}
@@ -75,6 +79,11 @@ type ReconcileClusterRoleResult struct {
// ExtraRules contains extra permissions the currently persisted role had
ExtraRules []rbac.PolicyRule
+ // MissingAggregationRuleSelectors contains expected selectors that were missing from the currently persisted role
+ MissingAggregationRuleSelectors []metav1.LabelSelector
+ // ExtraAggregationRuleSelectors contains extra selectors the currently persisted role had
+ ExtraAggregationRuleSelectors []metav1.LabelSelector
+
// Operation is the API operation required to reconcile.
// If no reconciliation was needed, it is set to ReconcileNone.
// If options.Confirm == false, the reconcile was in dry-run mode, so the operation was not performed.
@@ -101,10 +110,15 @@ func (o *ReconcileRoleOptions) run(attempts int) (*ReconcileClusterRoleResult, e
existing, err := o.Client.Get(o.Role.GetNamespace(), o.Role.GetName())
switch {
case errors.IsNotFound(err):
+ aggregationRule := o.Role.GetAggregationRule()
+ if aggregationRule == nil {
+ aggregationRule = &rbac.AggregationRule{}
+ }
result = &ReconcileClusterRoleResult{
- Role: o.Role,
- MissingRules: o.Role.GetRules(),
- Operation: ReconcileCreate,
+ Role: o.Role,
+ MissingRules: o.Role.GetRules(),
+ MissingAggregationRuleSelectors: aggregationRule.ClusterRoleSelectors,
+ Operation: ReconcileCreate,
}
case err != nil:
@@ -195,6 +209,26 @@ func computeReconciledRole(existing, expected RuleOwner, removeExtraPermissions
result.Operation = ReconcileUpdate
}
+ // Compute extra and missing rules
+ _, result.ExtraAggregationRuleSelectors = aggregationRuleCovers(expected.GetAggregationRule(), existing.GetAggregationRule())
+ _, result.MissingAggregationRuleSelectors = aggregationRuleCovers(existing.GetAggregationRule(), expected.GetAggregationRule())
+
+ switch {
+ case !removeExtraPermissions && len(result.MissingAggregationRuleSelectors) > 0:
+ // add missing rules in the union case
+ aggregationRule := result.Role.GetAggregationRule()
+ if aggregationRule == nil {
+ aggregationRule = &rbac.AggregationRule{}
+ }
+ aggregationRule.ClusterRoleSelectors = append(aggregationRule.ClusterRoleSelectors, result.MissingAggregationRuleSelectors...)
+ result.Role.SetAggregationRule(aggregationRule)
+ result.Operation = ReconcileUpdate
+
+ case removeExtraPermissions && (len(result.MissingAggregationRuleSelectors) > 0 || len(result.ExtraAggregationRuleSelectors) > 0):
+ result.Role.SetAggregationRule(expected.GetAggregationRule())
+ result.Operation = ReconcileUpdate
+ }
+
return result, nil
}
@@ -211,3 +245,37 @@ func merge(maps ...map[string]string) map[string]string {
}
return output
}
+
+// aggregationRuleCovers determines whether or not the ownerSelectors cover the servantSelectors in terms of semantically
+// equal label selectors.
+// It returns whether or not the ownerSelectors cover and a list of the rules that the ownerSelectors do not cover.
+func aggregationRuleCovers(ownerRule, servantRule *rbac.AggregationRule) (bool, []metav1.LabelSelector) {
+ switch {
+ case ownerRule == nil && servantRule == nil:
+ return true, []metav1.LabelSelector{}
+ case ownerRule == nil && servantRule != nil:
+ return false, servantRule.ClusterRoleSelectors
+ case ownerRule != nil && servantRule == nil:
+ return true, []metav1.LabelSelector{}
+
+ }
+
+ ownerSelectors := ownerRule.ClusterRoleSelectors
+ servantSelectors := servantRule.ClusterRoleSelectors
+ uncoveredSelectors := []metav1.LabelSelector{}
+
+ for _, servantSelector := range servantSelectors {
+ covered := false
+ for _, ownerSelector := range ownerSelectors {
+ if equality.Semantic.DeepEqual(ownerSelector, servantSelector) {
+ covered = true
+ break
+ }
+ }
+ if !covered {
+ uncoveredSelectors = append(uncoveredSelectors, servantSelector)
+ }
+ }
+
+ return (len(uncoveredSelectors) == 0), uncoveredSelectors
+}
diff --git a/pkg/registry/rbac/reconciliation/reconcile_role_test.go b/pkg/registry/rbac/reconciliation/reconcile_role_test.go
index 9cd146648f..1d30c9cad6 100644
--- a/pkg/registry/rbac/reconciliation/reconcile_role_test.go
+++ b/pkg/registry/rbac/reconciliation/reconcile_role_test.go
@@ -20,12 +20,16 @@ import (
"testing"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/kubernetes/pkg/api/helper"
+ "k8s.io/apimachinery/pkg/util/diff"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
"k8s.io/kubernetes/pkg/apis/rbac"
)
func role(rules []rbac.PolicyRule, labels map[string]string, annotations map[string]string) *rbac.ClusterRole {
- return &rbac.ClusterRole{Rules: rules, ObjectMeta: metav1.ObjectMeta{Labels: labels, Annotations: annotations}}
+ return &rbac.ClusterRole{
+ Rules: rules,
+ ObjectMeta: metav1.ObjectMeta{Labels: labels, Annotations: annotations},
+ }
}
func rules(resources ...string) []rbac.PolicyRule {
@@ -38,7 +42,7 @@ func rules(resources ...string) []rbac.PolicyRule {
type ss map[string]string
-func TestComputeReconciledRole(t *testing.T) {
+func TestComputeReconciledRoleRules(t *testing.T) {
tests := map[string]struct {
expectedRole *rbac.ClusterRole
actualRole *rbac.ClusterRole
@@ -273,3 +277,96 @@ func TestComputeReconciledRole(t *testing.T) {
}
}
}
+
+func aggregatedRole(aggregationRule *rbac.AggregationRule) *rbac.ClusterRole {
+ return &rbac.ClusterRole{
+ AggregationRule: aggregationRule,
+ }
+}
+
+func aggregationrule(selectors []map[string]string) *rbac.AggregationRule {
+ ret := &rbac.AggregationRule{}
+ for _, selector := range selectors {
+ ret.ClusterRoleSelectors = append(ret.ClusterRoleSelectors,
+ metav1.LabelSelector{MatchLabels: selector})
+ }
+ return ret
+}
+
+func TestComputeReconciledRoleAggregationRules(t *testing.T) {
+ tests := map[string]struct {
+ expectedRole *rbac.ClusterRole
+ actualRole *rbac.ClusterRole
+ removeExtraPermissions bool
+
+ expectedReconciledRole *rbac.ClusterRole
+ expectedReconciliationNeeded bool
+ }{
+ "empty": {
+ expectedRole: aggregatedRole(&rbac.AggregationRule{}),
+ actualRole: aggregatedRole(nil),
+ removeExtraPermissions: true,
+
+ expectedReconciledRole: nil,
+ expectedReconciliationNeeded: false,
+ },
+ "empty-2": {
+ expectedRole: aggregatedRole(&rbac.AggregationRule{}),
+ actualRole: aggregatedRole(&rbac.AggregationRule{}),
+ removeExtraPermissions: true,
+
+ expectedReconciledRole: nil,
+ expectedReconciliationNeeded: false,
+ },
+ "match without union": {
+ expectedRole: aggregatedRole(aggregationrule([]map[string]string{{"foo": "bar"}})),
+ actualRole: aggregatedRole(aggregationrule([]map[string]string{{"foo": "bar"}})),
+ removeExtraPermissions: true,
+
+ expectedReconciledRole: nil,
+ expectedReconciliationNeeded: false,
+ },
+ "match with union": {
+ expectedRole: aggregatedRole(aggregationrule([]map[string]string{{"foo": "bar"}})),
+ actualRole: aggregatedRole(aggregationrule([]map[string]string{{"foo": "bar"}})),
+ removeExtraPermissions: false,
+
+ expectedReconciledRole: nil,
+ expectedReconciliationNeeded: false,
+ },
+ "different rules without union": {
+ expectedRole: aggregatedRole(aggregationrule([]map[string]string{{"foo": "bar"}})),
+ actualRole: aggregatedRole(aggregationrule([]map[string]string{{"alpha": "bravo"}})),
+ removeExtraPermissions: true,
+
+ expectedReconciledRole: aggregatedRole(aggregationrule([]map[string]string{{"foo": "bar"}})),
+ expectedReconciliationNeeded: true,
+ },
+ "different rules with union": {
+ expectedRole: aggregatedRole(aggregationrule([]map[string]string{{"foo": "bar"}})),
+ actualRole: aggregatedRole(aggregationrule([]map[string]string{{"alpha": "bravo"}})),
+ removeExtraPermissions: false,
+
+ expectedReconciledRole: aggregatedRole(aggregationrule([]map[string]string{{"alpha": "bravo"}, {"foo": "bar"}})),
+ expectedReconciliationNeeded: true,
+ },
+ }
+
+ for k, tc := range tests {
+ actualRole := ClusterRoleRuleOwner{ClusterRole: tc.actualRole}
+ expectedRole := ClusterRoleRuleOwner{ClusterRole: tc.expectedRole}
+ result, err := computeReconciledRole(actualRole, expectedRole, tc.removeExtraPermissions)
+ if err != nil {
+ t.Errorf("%s: %v", k, err)
+ continue
+ }
+ reconciliationNeeded := result.Operation != ReconcileNone
+ if reconciliationNeeded != tc.expectedReconciliationNeeded {
+ t.Errorf("%s: Expected\n\t%v\ngot\n\t%v", k, tc.expectedReconciliationNeeded, reconciliationNeeded)
+ continue
+ }
+ if reconciliationNeeded && !helper.Semantic.DeepEqual(result.Role.(ClusterRoleRuleOwner).ClusterRole, tc.expectedReconciledRole) {
+ t.Errorf("%s: %v", k, diff.ObjectDiff(tc.expectedReconciledRole, result.Role.(ClusterRoleRuleOwner).ClusterRole))
+ }
+ }
+}
diff --git a/pkg/registry/rbac/reconciliation/reconcile_rolebindings_test.go b/pkg/registry/rbac/reconciliation/reconcile_rolebindings_test.go
index b61b2540ee..0cdd3cf46b 100644
--- a/pkg/registry/rbac/reconciliation/reconcile_rolebindings_test.go
+++ b/pkg/registry/rbac/reconciliation/reconcile_rolebindings_test.go
@@ -19,7 +19,7 @@ package reconciliation
import (
"testing"
- "k8s.io/kubernetes/pkg/api/helper"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
"k8s.io/kubernetes/pkg/apis/rbac"
)
diff --git a/pkg/registry/rbac/reconciliation/role_interfaces.go b/pkg/registry/rbac/reconciliation/role_interfaces.go
index f671c8c43b..b46e9e872e 100644
--- a/pkg/registry/rbac/reconciliation/role_interfaces.go
+++ b/pkg/registry/rbac/reconciliation/role_interfaces.go
@@ -20,7 +20,7 @@ import (
apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/rbac"
core "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/rbac/internalversion"
@@ -69,6 +69,13 @@ func (o RoleRuleOwner) SetRules(in []rbac.PolicyRule) {
o.Role.Rules = in
}
+func (o RoleRuleOwner) GetAggregationRule() *rbac.AggregationRule {
+ return nil
+}
+
+func (o RoleRuleOwner) SetAggregationRule(in *rbac.AggregationRule) {
+}
+
type RoleModifier struct {
Client internalversion.RolesGetter
NamespaceClient core.NamespaceInterface
diff --git a/pkg/registry/rbac/reconciliation/rolebinding_interfaces.go b/pkg/registry/rbac/reconciliation/rolebinding_interfaces.go
index 2f26fc9541..126f479cb1 100644
--- a/pkg/registry/rbac/reconciliation/rolebinding_interfaces.go
+++ b/pkg/registry/rbac/reconciliation/rolebinding_interfaces.go
@@ -21,7 +21,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/rbac"
core "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/rbac/internalversion"
diff --git a/pkg/registry/rbac/reconciliation/zz_generated.deepcopy.go b/pkg/registry/rbac/reconciliation/zz_generated.deepcopy.go
index b99814e331..f6a288fdd9 100644
--- a/pkg/registry/rbac/reconciliation/zz_generated.deepcopy.go
+++ b/pkg/registry/rbac/reconciliation/zz_generated.deepcopy.go
@@ -21,35 +21,9 @@ limitations under the License.
package reconciliation
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
rbac "k8s.io/kubernetes/pkg/apis/rbac"
- reflect "reflect"
)
-// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc {
- return []conversion.GeneratedDeepCopyFunc{
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ClusterRoleBindingAdapter).DeepCopyInto(out.(*ClusterRoleBindingAdapter))
- return nil
- }, InType: reflect.TypeOf(&ClusterRoleBindingAdapter{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ClusterRoleRuleOwner).DeepCopyInto(out.(*ClusterRoleRuleOwner))
- return nil
- }, InType: reflect.TypeOf(&ClusterRoleRuleOwner{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RoleBindingAdapter).DeepCopyInto(out.(*RoleBindingAdapter))
- return nil
- }, InType: reflect.TypeOf(&RoleBindingAdapter{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RoleRuleOwner).DeepCopyInto(out.(*RoleRuleOwner))
- return nil
- }, InType: reflect.TypeOf(&RoleRuleOwner{})},
- }
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ClusterRoleBindingAdapter) DeepCopyInto(out *ClusterRoleBindingAdapter) {
*out = *in
diff --git a/pkg/registry/rbac/rest/BUILD b/pkg/registry/rbac/rest/BUILD
index e3d750ca74..685a8334bf 100644
--- a/pkg/registry/rbac/rest/BUILD
+++ b/pkg/registry/rbac/rest/BUILD
@@ -33,6 +33,7 @@ go_library(
"//vendor/k8s.io/api/rbac/v1:go_default_library",
"//vendor/k8s.io/api/rbac/v1alpha1:go_default_library",
"//vendor/k8s.io/api/rbac/v1beta1:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
diff --git a/pkg/registry/rbac/rest/storage_rbac.go b/pkg/registry/rbac/rest/storage_rbac.go
index e1152a8fe8..88fdf73d59 100644
--- a/pkg/registry/rbac/rest/storage_rbac.go
+++ b/pkg/registry/rbac/rest/storage_rbac.go
@@ -26,6 +26,7 @@ import (
rbacapiv1 "k8s.io/api/rbac/v1"
rbacapiv1alpha1 "k8s.io/api/rbac/v1alpha1"
rbacapiv1beta1 "k8s.io/api/rbac/v1beta1"
+ apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
@@ -134,10 +135,11 @@ func (p RESTStorageProvider) storage(version schema.GroupVersion, apiResourceCon
func (p RESTStorageProvider) PostStartHook() (string, genericapiserver.PostStartHookFunc, error) {
policy := &PolicyData{
- ClusterRoles: append(bootstrappolicy.ClusterRoles(), bootstrappolicy.ControllerRoles()...),
- ClusterRoleBindings: append(bootstrappolicy.ClusterRoleBindings(), bootstrappolicy.ControllerRoleBindings()...),
- Roles: bootstrappolicy.NamespaceRoles(),
- RoleBindings: bootstrappolicy.NamespaceRoleBindings(),
+ ClusterRoles: append(bootstrappolicy.ClusterRoles(), bootstrappolicy.ControllerRoles()...),
+ ClusterRoleBindings: append(bootstrappolicy.ClusterRoleBindings(), bootstrappolicy.ControllerRoleBindings()...),
+ Roles: bootstrappolicy.NamespaceRoles(),
+ RoleBindings: bootstrappolicy.NamespaceRoleBindings(),
+ ClusterRolesToAggregate: bootstrappolicy.ClusterRolesToAggregate(),
}
return PostStartHookName, policy.EnsureRBACPolicy(), nil
}
@@ -147,6 +149,8 @@ type PolicyData struct {
ClusterRoleBindings []rbac.ClusterRoleBinding
Roles map[string][]rbac.Role
RoleBindings map[string][]rbac.RoleBinding
+ // ClusterRolesToAggregate maps from previous clusterrole name to the new clusterrole name
+ ClusterRolesToAggregate map[string]string
}
func (p *PolicyData) EnsureRBACPolicy() genericapiserver.PostStartHookFunc {
@@ -176,6 +180,13 @@ func (p *PolicyData) EnsureRBACPolicy() genericapiserver.PostStartHookFunc {
return false, nil
}
+ // if the new cluster roles to aggregate do not yet exist, then we need to copy the old roles if they don't exist
+ // in new locations
+ if err := primeAggregatedClusterRoles(p.ClusterRolesToAggregate, clientset); err != nil {
+ utilruntime.HandleError(fmt.Errorf("unable to prime aggregated clusterroles: %v", err))
+ return false, nil
+ }
+
// ensure bootstrap roles are created or reconciled
for _, clusterRole := range p.ClusterRoles {
opts := reconciliation.ReconcileRoleOptions{
@@ -310,3 +321,32 @@ func (p *PolicyData) EnsureRBACPolicy() genericapiserver.PostStartHookFunc {
func (p RESTStorageProvider) GroupName() string {
return rbac.GroupName
}
+
+// primeAggregatedClusterRoles copies roles that have transitioned to aggregated roles and may need to pick up changes
+// that were done to the legacy roles.
+func primeAggregatedClusterRoles(clusterRolesToAggregate map[string]string, clusterRoleClient rbacclient.ClusterRolesGetter) error {
+ for oldName, newName := range clusterRolesToAggregate {
+ _, err := clusterRoleClient.ClusterRoles().Get(newName, metav1.GetOptions{})
+ if err == nil {
+ continue
+ }
+ if !apierrors.IsNotFound(err) {
+ return err
+ }
+
+ existingRole, err := clusterRoleClient.ClusterRoles().Get(oldName, metav1.GetOptions{})
+ if apierrors.IsNotFound(err) {
+ continue
+ }
+ if err != nil {
+ return err
+ }
+ glog.V(1).Infof("migrating %v to %v", existingRole.Name, newName)
+ existingRole.Name = newName
+ if _, err := clusterRoleClient.ClusterRoles().Create(existingRole); err != nil && !apierrors.IsAlreadyExists(err) {
+ return err
+ }
+ }
+
+ return nil
+}
diff --git a/pkg/registry/rbac/role/policybased/BUILD b/pkg/registry/rbac/role/policybased/BUILD
index 88098c0eb8..65fa12025f 100644
--- a/pkg/registry/rbac/role/policybased/BUILD
+++ b/pkg/registry/rbac/role/policybased/BUILD
@@ -10,7 +10,7 @@ go_library(
srcs = ["storage.go"],
importpath = "k8s.io/kubernetes/pkg/registry/rbac/role/policybased",
deps = [
- "//pkg/api/helper:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
"//pkg/apis/rbac:go_default_library",
"//pkg/registry/rbac:go_default_library",
"//pkg/registry/rbac/validation:go_default_library",
diff --git a/pkg/registry/rbac/role/policybased/storage.go b/pkg/registry/rbac/role/policybased/storage.go
index faf973731c..d67e3777fe 100644
--- a/pkg/registry/rbac/role/policybased/storage.go
+++ b/pkg/registry/rbac/role/policybased/storage.go
@@ -22,7 +22,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/registry/rest"
- kapihelper "k8s.io/kubernetes/pkg/api/helper"
+ kapihelper "k8s.io/kubernetes/pkg/apis/core/helper"
"k8s.io/kubernetes/pkg/apis/rbac"
rbacregistry "k8s.io/kubernetes/pkg/registry/rbac"
rbacregistryvalidation "k8s.io/kubernetes/pkg/registry/rbac/validation"
diff --git a/pkg/registry/rbac/rolebinding/policybased/BUILD b/pkg/registry/rbac/rolebinding/policybased/BUILD
index 05e10263fb..fd05f21b46 100644
--- a/pkg/registry/rbac/rolebinding/policybased/BUILD
+++ b/pkg/registry/rbac/rolebinding/policybased/BUILD
@@ -10,7 +10,7 @@ go_library(
srcs = ["storage.go"],
importpath = "k8s.io/kubernetes/pkg/registry/rbac/rolebinding/policybased",
deps = [
- "//pkg/api/helper:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
"//pkg/apis/rbac:go_default_library",
"//pkg/registry/rbac:go_default_library",
"//pkg/registry/rbac/validation:go_default_library",
diff --git a/pkg/registry/rbac/rolebinding/policybased/storage.go b/pkg/registry/rbac/rolebinding/policybased/storage.go
index 0a78ce3665..9e539a77ac 100644
--- a/pkg/registry/rbac/rolebinding/policybased/storage.go
+++ b/pkg/registry/rbac/rolebinding/policybased/storage.go
@@ -23,7 +23,7 @@ import (
"k8s.io/apiserver/pkg/authorization/authorizer"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/registry/rest"
- kapihelper "k8s.io/kubernetes/pkg/api/helper"
+ kapihelper "k8s.io/kubernetes/pkg/apis/core/helper"
"k8s.io/kubernetes/pkg/apis/rbac"
rbacregistry "k8s.io/kubernetes/pkg/registry/rbac"
rbacregistryvalidation "k8s.io/kubernetes/pkg/registry/rbac/validation"
diff --git a/pkg/registry/registrytest/BUILD b/pkg/registry/registrytest/BUILD
index 080ba840d8..5a01ba270f 100644
--- a/pkg/registry/registrytest/BUILD
+++ b/pkg/registry/registrytest/BUILD
@@ -19,9 +19,9 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/registry/registrytest",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/util/slice:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
diff --git a/pkg/registry/registrytest/endpoint.go b/pkg/registry/registrytest/endpoint.go
index 6bf85b0c7d..170b959554 100644
--- a/pkg/registry/registrytest/endpoint.go
+++ b/pkg/registry/registrytest/endpoint.go
@@ -26,7 +26,7 @@ import (
"k8s.io/apimachinery/pkg/watch"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// Registry is an interface for things that know how to store endpoints.
diff --git a/pkg/registry/registrytest/etcd.go b/pkg/registry/registrytest/etcd.go
index b19901c57f..4d57b375b9 100644
--- a/pkg/registry/registrytest/etcd.go
+++ b/pkg/registry/registrytest/etcd.go
@@ -33,9 +33,9 @@ import (
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
"k8s.io/apiserver/pkg/storage/storagebackend"
storagetesting "k8s.io/apiserver/pkg/storage/testing"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func NewEtcdStorage(t *testing.T, group string) (*storagebackend.Config, *etcdtesting.EtcdTestServer) {
diff --git a/pkg/registry/registrytest/node.go b/pkg/registry/registrytest/node.go
index e853d47a39..e4d813dfe9 100644
--- a/pkg/registry/registrytest/node.go
+++ b/pkg/registry/registrytest/node.go
@@ -24,7 +24,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/watch"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// NodeRegistry implements node.Registry interface.
diff --git a/pkg/registry/registrytest/service.go b/pkg/registry/registrytest/service.go
index 38ba722281..136d34153b 100644
--- a/pkg/registry/registrytest/service.go
+++ b/pkg/registry/registrytest/service.go
@@ -24,7 +24,7 @@ import (
"k8s.io/apimachinery/pkg/watch"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func NewServiceRegistry() *ServiceRegistry {
diff --git a/pkg/registry/settings/podpreset/storage/BUILD b/pkg/registry/settings/podpreset/storage/BUILD
index 584b94f53f..692dfc7ba3 100644
--- a/pkg/registry/settings/podpreset/storage/BUILD
+++ b/pkg/registry/settings/podpreset/storage/BUILD
@@ -38,7 +38,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/settings/podpreset/storage",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/settings:go_default_library",
"//pkg/registry/registrytest:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
diff --git a/pkg/registry/settings/podpreset/storage/storage_test.go b/pkg/registry/settings/podpreset/storage/storage_test.go
index e1b81eff89..2c4181fea9 100644
--- a/pkg/registry/settings/podpreset/storage/storage_test.go
+++ b/pkg/registry/settings/podpreset/storage/storage_test.go
@@ -25,7 +25,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apiserver/pkg/registry/generic"
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/settings"
"k8s.io/kubernetes/pkg/registry/registrytest"
)
diff --git a/pkg/registry/storage/storageclass/BUILD b/pkg/registry/storage/storageclass/BUILD
index 5724d9ea83..44e2166842 100644
--- a/pkg/registry/storage/storageclass/BUILD
+++ b/pkg/registry/storage/storageclass/BUILD
@@ -32,7 +32,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/storage/storageclass",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/storage:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
diff --git a/pkg/registry/storage/storageclass/storage/BUILD b/pkg/registry/storage/storageclass/storage/BUILD
index 67d33541d6..8fe6629836 100644
--- a/pkg/registry/storage/storageclass/storage/BUILD
+++ b/pkg/registry/storage/storageclass/storage/BUILD
@@ -12,7 +12,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/registry/storage/storageclass/storage",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/storage:go_default_library",
"//pkg/registry/registrytest:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
diff --git a/pkg/registry/storage/storageclass/storage/storage_test.go b/pkg/registry/storage/storageclass/storage/storage_test.go
index f9858b9a2b..60d714042a 100644
--- a/pkg/registry/storage/storageclass/storage/storage_test.go
+++ b/pkg/registry/storage/storageclass/storage/storage_test.go
@@ -25,7 +25,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apiserver/pkg/registry/generic"
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
storageapi "k8s.io/kubernetes/pkg/apis/storage"
"k8s.io/kubernetes/pkg/registry/registrytest"
)
diff --git a/pkg/registry/storage/storageclass/strategy_test.go b/pkg/registry/storage/storageclass/strategy_test.go
index da57f0460c..1f455e7528 100644
--- a/pkg/registry/storage/storageclass/strategy_test.go
+++ b/pkg/registry/storage/storageclass/strategy_test.go
@@ -21,7 +21,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/storage"
)
diff --git a/pkg/security/podsecuritypolicy/BUILD b/pkg/security/podsecuritypolicy/BUILD
index 55a68dec3b..282d256aae 100644
--- a/pkg/security/podsecuritypolicy/BUILD
+++ b/pkg/security/podsecuritypolicy/BUILD
@@ -16,7 +16,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/security/podsecuritypolicy",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/security/podsecuritypolicy/apparmor:go_default_library",
"//pkg/security/podsecuritypolicy/capabilities:go_default_library",
@@ -39,8 +39,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/security/podsecuritypolicy",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/v1:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/v1:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/security/apparmor:go_default_library",
"//pkg/security/podsecuritypolicy/seccomp:go_default_library",
diff --git a/pkg/security/podsecuritypolicy/apparmor/BUILD b/pkg/security/podsecuritypolicy/apparmor/BUILD
index 4ec208951a..d1cf962c8f 100644
--- a/pkg/security/podsecuritypolicy/apparmor/BUILD
+++ b/pkg/security/podsecuritypolicy/apparmor/BUILD
@@ -11,7 +11,7 @@ go_library(
srcs = ["strategy.go"],
importpath = "k8s.io/kubernetes/pkg/security/podsecuritypolicy/apparmor",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/security/apparmor:go_default_library",
"//pkg/util/maps:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
@@ -24,7 +24,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/security/podsecuritypolicy/apparmor",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/security/apparmor:go_default_library",
"//pkg/util/maps:go_default_library",
"//vendor/github.com/davecgh/go-spew/spew:go_default_library",
diff --git a/pkg/security/podsecuritypolicy/apparmor/strategy.go b/pkg/security/podsecuritypolicy/apparmor/strategy.go
index 47755c80c0..9f6affdd2b 100644
--- a/pkg/security/podsecuritypolicy/apparmor/strategy.go
+++ b/pkg/security/podsecuritypolicy/apparmor/strategy.go
@@ -21,7 +21,7 @@ import (
"strings"
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/security/apparmor"
"k8s.io/kubernetes/pkg/util/maps"
)
diff --git a/pkg/security/podsecuritypolicy/apparmor/strategy_test.go b/pkg/security/podsecuritypolicy/apparmor/strategy_test.go
index 927bdf9aeb..ac4edc448e 100644
--- a/pkg/security/podsecuritypolicy/apparmor/strategy_test.go
+++ b/pkg/security/podsecuritypolicy/apparmor/strategy_test.go
@@ -23,7 +23,7 @@ import (
"github.com/stretchr/testify/assert"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/security/apparmor"
"k8s.io/kubernetes/pkg/util/maps"
)
diff --git a/pkg/security/podsecuritypolicy/capabilities/BUILD b/pkg/security/podsecuritypolicy/capabilities/BUILD
index 939756ecb2..87681f9e78 100644
--- a/pkg/security/podsecuritypolicy/capabilities/BUILD
+++ b/pkg/security/podsecuritypolicy/capabilities/BUILD
@@ -15,7 +15,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/security/podsecuritypolicy/capabilities",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
@@ -28,7 +28,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/security/podsecuritypolicy/capabilities",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
],
)
diff --git a/pkg/security/podsecuritypolicy/capabilities/mustrunas.go b/pkg/security/podsecuritypolicy/capabilities/mustrunas.go
index 6ab75c214b..bb713c7be1 100644
--- a/pkg/security/podsecuritypolicy/capabilities/mustrunas.go
+++ b/pkg/security/podsecuritypolicy/capabilities/mustrunas.go
@@ -21,7 +21,7 @@ import (
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
)
diff --git a/pkg/security/podsecuritypolicy/capabilities/mustrunas_test.go b/pkg/security/podsecuritypolicy/capabilities/mustrunas_test.go
index 21044e924c..56cf5db5a4 100644
--- a/pkg/security/podsecuritypolicy/capabilities/mustrunas_test.go
+++ b/pkg/security/podsecuritypolicy/capabilities/mustrunas_test.go
@@ -20,7 +20,7 @@ import (
"reflect"
"testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
)
@@ -373,14 +373,14 @@ func TestValidateDrops(t *testing.T) {
containerCaps: &api.Capabilities{
Drop: []api.Capability{"bar"},
},
- expectedError: `capabilities.drop: Invalid value: []api.Capability{"bar"}: foo is required to be dropped but was not found`,
+ expectedError: `capabilities.drop: Invalid value: []core.Capability{"bar"}: foo is required to be dropped but was not found`,
},
"validation is case sensitive": {
requiredDropCaps: []api.Capability{"foo"},
containerCaps: &api.Capabilities{
Drop: []api.Capability{"FOO"},
},
- expectedError: `capabilities.drop: Invalid value: []api.Capability{"FOO"}: foo is required to be dropped but was not found`,
+ expectedError: `capabilities.drop: Invalid value: []core.Capability{"FOO"}: foo is required to be dropped but was not found`,
},
}
diff --git a/pkg/security/podsecuritypolicy/capabilities/types.go b/pkg/security/podsecuritypolicy/capabilities/types.go
index c936d93867..47226fabab 100644
--- a/pkg/security/podsecuritypolicy/capabilities/types.go
+++ b/pkg/security/podsecuritypolicy/capabilities/types.go
@@ -18,7 +18,7 @@ package capabilities
import (
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// Strategy defines the interface for all cap constraint strategies.
diff --git a/pkg/security/podsecuritypolicy/factory.go b/pkg/security/podsecuritypolicy/factory.go
index 0fbd8a714a..69cf3945d6 100644
--- a/pkg/security/podsecuritypolicy/factory.go
+++ b/pkg/security/podsecuritypolicy/factory.go
@@ -20,7 +20,7 @@ import (
"fmt"
"k8s.io/apimachinery/pkg/util/errors"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/security/podsecuritypolicy/apparmor"
"k8s.io/kubernetes/pkg/security/podsecuritypolicy/capabilities"
diff --git a/pkg/security/podsecuritypolicy/group/BUILD b/pkg/security/podsecuritypolicy/group/BUILD
index edb5d0eb98..2a7bbe66e3 100644
--- a/pkg/security/podsecuritypolicy/group/BUILD
+++ b/pkg/security/podsecuritypolicy/group/BUILD
@@ -16,7 +16,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/security/podsecuritypolicy/group",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/security/podsecuritypolicy/util:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
@@ -32,7 +32,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/security/podsecuritypolicy/group",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
],
)
diff --git a/pkg/security/podsecuritypolicy/group/mustrunas.go b/pkg/security/podsecuritypolicy/group/mustrunas.go
index b2182afaa3..8fc48ac294 100644
--- a/pkg/security/podsecuritypolicy/group/mustrunas.go
+++ b/pkg/security/podsecuritypolicy/group/mustrunas.go
@@ -20,7 +20,7 @@ import (
"fmt"
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
psputil "k8s.io/kubernetes/pkg/security/podsecuritypolicy/util"
)
diff --git a/pkg/security/podsecuritypolicy/group/mustrunas_test.go b/pkg/security/podsecuritypolicy/group/mustrunas_test.go
index d3075a8862..395ffd80eb 100644
--- a/pkg/security/podsecuritypolicy/group/mustrunas_test.go
+++ b/pkg/security/podsecuritypolicy/group/mustrunas_test.go
@@ -17,10 +17,9 @@ limitations under the License.
package group
import (
- "testing"
-
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
+ "testing"
)
func TestMustRunAsOptions(t *testing.T) {
diff --git a/pkg/security/podsecuritypolicy/group/runasany.go b/pkg/security/podsecuritypolicy/group/runasany.go
index 071f2e08ec..3890f84991 100644
--- a/pkg/security/podsecuritypolicy/group/runasany.go
+++ b/pkg/security/podsecuritypolicy/group/runasany.go
@@ -18,7 +18,7 @@ package group
import (
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// runAsAny implements the GroupStrategy interface.
diff --git a/pkg/security/podsecuritypolicy/group/types.go b/pkg/security/podsecuritypolicy/group/types.go
index fa3a11d97d..dbf1520421 100644
--- a/pkg/security/podsecuritypolicy/group/types.go
+++ b/pkg/security/podsecuritypolicy/group/types.go
@@ -18,7 +18,7 @@ package group
import (
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// GroupStrategy defines the interface for all group constraint strategies.
diff --git a/pkg/security/podsecuritypolicy/provider.go b/pkg/security/podsecuritypolicy/provider.go
index fadacec1dd..139a453a9e 100644
--- a/pkg/security/podsecuritypolicy/provider.go
+++ b/pkg/security/podsecuritypolicy/provider.go
@@ -21,7 +21,7 @@ import (
"strings"
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
psputil "k8s.io/kubernetes/pkg/security/podsecuritypolicy/util"
"k8s.io/kubernetes/pkg/securitycontext"
@@ -307,7 +307,7 @@ func (s *simpleProvider) ValidateContainerSecurityContext(pod *api.Pod, containe
func (s *simpleProvider) hasInvalidHostPort(container *api.Container, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
for _, cp := range container.Ports {
- if cp.HostPort > 0 && !s.isValidHostPort(int(cp.HostPort)) {
+ if cp.HostPort > 0 && !s.isValidHostPort(cp.HostPort) {
detail := fmt.Sprintf("Host port %d is not allowed to be used. Allowed ports: [%s]", cp.HostPort, hostPortRangesToString(s.psp.Spec.HostPorts))
allErrs = append(allErrs, field.Invalid(fldPath.Child("hostPort"), cp.HostPort, detail))
}
@@ -316,7 +316,7 @@ func (s *simpleProvider) hasInvalidHostPort(container *api.Container, fldPath *f
}
// isValidHostPort returns true if the port falls in any range allowed by the PSP.
-func (s *simpleProvider) isValidHostPort(port int) bool {
+func (s *simpleProvider) isValidHostPort(port int32) bool {
for _, hostPortRange := range s.psp.Spec.HostPorts {
if port >= hostPortRange.Min && port <= hostPortRange.Max {
return true
diff --git a/pkg/security/podsecuritypolicy/provider_test.go b/pkg/security/podsecuritypolicy/provider_test.go
index cfba7786c6..b0389e33aa 100644
--- a/pkg/security/podsecuritypolicy/provider_test.go
+++ b/pkg/security/podsecuritypolicy/provider_test.go
@@ -28,8 +28,8 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/diff"
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
- k8s_api_v1 "k8s.io/kubernetes/pkg/api/v1"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ k8s_api_v1 "k8s.io/kubernetes/pkg/apis/core/v1"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/security/apparmor"
"k8s.io/kubernetes/pkg/security/podsecuritypolicy/seccomp"
@@ -387,7 +387,7 @@ func TestValidateContainerSecurityContextFailures(t *testing.T) {
v1FailInvalidAppArmorPod := defaultV1Pod()
apparmor.SetProfileName(v1FailInvalidAppArmorPod, defaultContainerName, apparmor.ProfileNamePrefix+"foo")
failInvalidAppArmorPod := &api.Pod{}
- k8s_api_v1.Convert_v1_Pod_To_api_Pod(v1FailInvalidAppArmorPod, failInvalidAppArmorPod, nil)
+ k8s_api_v1.Convert_v1_Pod_To_core_Pod(v1FailInvalidAppArmorPod, failInvalidAppArmorPod, nil)
failAppArmorPSP := defaultPSP()
failAppArmorPSP.Annotations = map[string]string{
@@ -699,7 +699,7 @@ func TestValidateContainerSecurityContextSuccess(t *testing.T) {
v1AppArmorPod := defaultV1Pod()
apparmor.SetProfileName(v1AppArmorPod, defaultContainerName, apparmor.ProfileRuntimeDefault)
appArmorPod := &api.Pod{}
- k8s_api_v1.Convert_v1_Pod_To_api_Pod(v1AppArmorPod, appArmorPod, nil)
+ k8s_api_v1.Convert_v1_Pod_To_core_Pod(v1AppArmorPod, appArmorPod, nil)
privPSP := defaultPSP()
privPSP.Spec.Privileged = true
diff --git a/pkg/security/podsecuritypolicy/seccomp/BUILD b/pkg/security/podsecuritypolicy/seccomp/BUILD
index fa673f075a..c49f6fc699 100644
--- a/pkg/security/podsecuritypolicy/seccomp/BUILD
+++ b/pkg/security/podsecuritypolicy/seccomp/BUILD
@@ -11,7 +11,7 @@ go_library(
srcs = ["strategy.go"],
importpath = "k8s.io/kubernetes/pkg/security/podsecuritypolicy/seccomp",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
],
)
@@ -22,7 +22,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/security/podsecuritypolicy/seccomp",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
],
)
diff --git a/pkg/security/podsecuritypolicy/seccomp/strategy.go b/pkg/security/podsecuritypolicy/seccomp/strategy.go
index aaeb0c1f36..715156e8a0 100644
--- a/pkg/security/podsecuritypolicy/seccomp/strategy.go
+++ b/pkg/security/podsecuritypolicy/seccomp/strategy.go
@@ -21,7 +21,7 @@ import (
"strings"
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
const (
diff --git a/pkg/security/podsecuritypolicy/seccomp/strategy_test.go b/pkg/security/podsecuritypolicy/seccomp/strategy_test.go
index 663900ecf2..c79602c225 100644
--- a/pkg/security/podsecuritypolicy/seccomp/strategy_test.go
+++ b/pkg/security/podsecuritypolicy/seccomp/strategy_test.go
@@ -22,7 +22,7 @@ import (
"testing"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
var (
diff --git a/pkg/security/podsecuritypolicy/selinux/BUILD b/pkg/security/podsecuritypolicy/selinux/BUILD
index 9319a36cc8..97f5e5292c 100644
--- a/pkg/security/podsecuritypolicy/selinux/BUILD
+++ b/pkg/security/podsecuritypolicy/selinux/BUILD
@@ -16,7 +16,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/security/podsecuritypolicy/selinux",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
],
@@ -31,7 +31,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/security/podsecuritypolicy/selinux",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
],
)
diff --git a/pkg/security/podsecuritypolicy/selinux/mustrunas.go b/pkg/security/podsecuritypolicy/selinux/mustrunas.go
index 4f13272bda..b2605cd330 100644
--- a/pkg/security/podsecuritypolicy/selinux/mustrunas.go
+++ b/pkg/security/podsecuritypolicy/selinux/mustrunas.go
@@ -20,7 +20,7 @@ import (
"fmt"
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
)
diff --git a/pkg/security/podsecuritypolicy/selinux/mustrunas_test.go b/pkg/security/podsecuritypolicy/selinux/mustrunas_test.go
index bd57b8a989..986fa8adb7 100644
--- a/pkg/security/podsecuritypolicy/selinux/mustrunas_test.go
+++ b/pkg/security/podsecuritypolicy/selinux/mustrunas_test.go
@@ -17,12 +17,11 @@ limitations under the License.
package selinux
import (
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/extensions"
"reflect"
"strings"
"testing"
-
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/apis/extensions"
)
func TestMustRunAsOptions(t *testing.T) {
diff --git a/pkg/security/podsecuritypolicy/selinux/runasany.go b/pkg/security/podsecuritypolicy/selinux/runasany.go
index 62fd9083b1..008ad0a41d 100644
--- a/pkg/security/podsecuritypolicy/selinux/runasany.go
+++ b/pkg/security/podsecuritypolicy/selinux/runasany.go
@@ -18,7 +18,7 @@ package selinux
import (
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
)
diff --git a/pkg/security/podsecuritypolicy/selinux/runasany_test.go b/pkg/security/podsecuritypolicy/selinux/runasany_test.go
index d31550034b..8e1a7f1b07 100644
--- a/pkg/security/podsecuritypolicy/selinux/runasany_test.go
+++ b/pkg/security/podsecuritypolicy/selinux/runasany_test.go
@@ -17,10 +17,9 @@ limitations under the License.
package selinux
import (
- "testing"
-
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
+ "testing"
)
func TestRunAsAnyOptions(t *testing.T) {
diff --git a/pkg/security/podsecuritypolicy/selinux/types.go b/pkg/security/podsecuritypolicy/selinux/types.go
index 8f312e64cb..cdaae80931 100644
--- a/pkg/security/podsecuritypolicy/selinux/types.go
+++ b/pkg/security/podsecuritypolicy/selinux/types.go
@@ -18,7 +18,7 @@ package selinux
import (
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// SELinuxStrategy defines the interface for all SELinux constraint strategies.
diff --git a/pkg/security/podsecuritypolicy/sysctl/BUILD b/pkg/security/podsecuritypolicy/sysctl/BUILD
index 20aed789a4..dbd473ec83 100644
--- a/pkg/security/podsecuritypolicy/sysctl/BUILD
+++ b/pkg/security/podsecuritypolicy/sysctl/BUILD
@@ -14,8 +14,8 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/security/podsecuritypolicy/sysctl",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/helper:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
],
)
@@ -26,8 +26,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/security/podsecuritypolicy/sysctl",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/helper:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
],
)
diff --git a/pkg/security/podsecuritypolicy/sysctl/mustmatchpatterns.go b/pkg/security/podsecuritypolicy/sysctl/mustmatchpatterns.go
index 969993450a..b59dd9d3ff 100644
--- a/pkg/security/podsecuritypolicy/sysctl/mustmatchpatterns.go
+++ b/pkg/security/podsecuritypolicy/sysctl/mustmatchpatterns.go
@@ -21,8 +21,8 @@ import (
"strings"
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/helper"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
)
// mustMatchPatterns implements the SysctlsStrategy interface
diff --git a/pkg/security/podsecuritypolicy/sysctl/mustmatchpatterns_test.go b/pkg/security/podsecuritypolicy/sysctl/mustmatchpatterns_test.go
index f8aef3df10..7622c82669 100644
--- a/pkg/security/podsecuritypolicy/sysctl/mustmatchpatterns_test.go
+++ b/pkg/security/podsecuritypolicy/sysctl/mustmatchpatterns_test.go
@@ -17,10 +17,9 @@ limitations under the License.
package sysctl
import (
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
"testing"
-
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/helper"
)
func TestValidate(t *testing.T) {
diff --git a/pkg/security/podsecuritypolicy/sysctl/types.go b/pkg/security/podsecuritypolicy/sysctl/types.go
index ee9291bfb7..a6c2034a8d 100644
--- a/pkg/security/podsecuritypolicy/sysctl/types.go
+++ b/pkg/security/podsecuritypolicy/sysctl/types.go
@@ -18,7 +18,7 @@ package sysctl
import (
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// SysctlsStrategy defines the interface for all sysctl strategies.
diff --git a/pkg/security/podsecuritypolicy/types.go b/pkg/security/podsecuritypolicy/types.go
index d067a0325b..31fcc5484d 100644
--- a/pkg/security/podsecuritypolicy/types.go
+++ b/pkg/security/podsecuritypolicy/types.go
@@ -18,7 +18,7 @@ package podsecuritypolicy
import (
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/security/podsecuritypolicy/apparmor"
"k8s.io/kubernetes/pkg/security/podsecuritypolicy/capabilities"
diff --git a/pkg/security/podsecuritypolicy/user/BUILD b/pkg/security/podsecuritypolicy/user/BUILD
index 41b0223ab4..f4e57284ad 100644
--- a/pkg/security/podsecuritypolicy/user/BUILD
+++ b/pkg/security/podsecuritypolicy/user/BUILD
@@ -17,7 +17,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/security/podsecuritypolicy/user",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/security/podsecuritypolicy/util:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
@@ -34,7 +34,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/security/podsecuritypolicy/user",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
],
)
diff --git a/pkg/security/podsecuritypolicy/user/mustrunas.go b/pkg/security/podsecuritypolicy/user/mustrunas.go
index df89163357..6b0ed1397d 100644
--- a/pkg/security/podsecuritypolicy/user/mustrunas.go
+++ b/pkg/security/podsecuritypolicy/user/mustrunas.go
@@ -20,7 +20,7 @@ import (
"fmt"
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
psputil "k8s.io/kubernetes/pkg/security/podsecuritypolicy/util"
)
diff --git a/pkg/security/podsecuritypolicy/user/mustrunas_test.go b/pkg/security/podsecuritypolicy/user/mustrunas_test.go
index 9121882063..5a0a770370 100644
--- a/pkg/security/podsecuritypolicy/user/mustrunas_test.go
+++ b/pkg/security/podsecuritypolicy/user/mustrunas_test.go
@@ -17,11 +17,10 @@ limitations under the License.
package user
import (
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/extensions"
"strings"
"testing"
-
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/apis/extensions"
)
func TestNewMustRunAs(t *testing.T) {
diff --git a/pkg/security/podsecuritypolicy/user/nonroot.go b/pkg/security/podsecuritypolicy/user/nonroot.go
index 2a9624fc0b..68e644a7e3 100644
--- a/pkg/security/podsecuritypolicy/user/nonroot.go
+++ b/pkg/security/podsecuritypolicy/user/nonroot.go
@@ -18,7 +18,7 @@ package user
import (
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
)
diff --git a/pkg/security/podsecuritypolicy/user/nonroot_test.go b/pkg/security/podsecuritypolicy/user/nonroot_test.go
index 7822ccf126..1597af0083 100644
--- a/pkg/security/podsecuritypolicy/user/nonroot_test.go
+++ b/pkg/security/podsecuritypolicy/user/nonroot_test.go
@@ -17,10 +17,9 @@ limitations under the License.
package user
import (
- "testing"
-
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
+ "testing"
)
func TestNonRootOptions(t *testing.T) {
diff --git a/pkg/security/podsecuritypolicy/user/runasany.go b/pkg/security/podsecuritypolicy/user/runasany.go
index 729201bf64..e1384f2da7 100644
--- a/pkg/security/podsecuritypolicy/user/runasany.go
+++ b/pkg/security/podsecuritypolicy/user/runasany.go
@@ -18,7 +18,7 @@ package user
import (
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
)
diff --git a/pkg/security/podsecuritypolicy/user/types.go b/pkg/security/podsecuritypolicy/user/types.go
index 8df0c766d5..fbcc34c79a 100644
--- a/pkg/security/podsecuritypolicy/user/types.go
+++ b/pkg/security/podsecuritypolicy/user/types.go
@@ -18,7 +18,7 @@ package user
import (
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// RunAsUserStrategy defines the interface for all uid constraint strategies.
diff --git a/pkg/security/podsecuritypolicy/util/BUILD b/pkg/security/podsecuritypolicy/util/BUILD
index 03652e680a..118784e9f0 100644
--- a/pkg/security/podsecuritypolicy/util/BUILD
+++ b/pkg/security/podsecuritypolicy/util/BUILD
@@ -14,7 +14,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/security/podsecuritypolicy/util",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
],
@@ -26,7 +26,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/security/podsecuritypolicy/util",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
],
)
diff --git a/pkg/security/podsecuritypolicy/util/util.go b/pkg/security/podsecuritypolicy/util/util.go
index 3ff6d89bc7..1e5b673dc3 100644
--- a/pkg/security/podsecuritypolicy/util/util.go
+++ b/pkg/security/podsecuritypolicy/util/util.go
@@ -21,7 +21,7 @@ import (
"strings"
"k8s.io/apimachinery/pkg/util/sets"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
)
diff --git a/pkg/security/podsecuritypolicy/util/util_test.go b/pkg/security/podsecuritypolicy/util/util_test.go
index 048e793fa8..f4910a4970 100644
--- a/pkg/security/podsecuritypolicy/util/util_test.go
+++ b/pkg/security/podsecuritypolicy/util/util_test.go
@@ -17,11 +17,10 @@ limitations under the License.
package util
import (
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/extensions"
"reflect"
"testing"
-
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/apis/extensions"
)
// TestVolumeSourceFSTypeDrift ensures that for every known type of volume source (by the fields on
diff --git a/pkg/securitycontext/BUILD b/pkg/securitycontext/BUILD
index 1061140280..fa4eb424a0 100644
--- a/pkg/securitycontext/BUILD
+++ b/pkg/securitycontext/BUILD
@@ -16,7 +16,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/securitycontext",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
],
)
@@ -30,7 +30,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/securitycontext",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library",
],
diff --git a/pkg/securitycontext/accessors.go b/pkg/securitycontext/accessors.go
index f7abb22a25..98ac6e0b92 100644
--- a/pkg/securitycontext/accessors.go
+++ b/pkg/securitycontext/accessors.go
@@ -19,7 +19,7 @@ package securitycontext
import (
"reflect"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// PodSecurityContextAccessor allows reading the values of a PodSecurityContext object
diff --git a/pkg/securitycontext/accessors_test.go b/pkg/securitycontext/accessors_test.go
index 7f6e73cd0e..68b129836a 100644
--- a/pkg/securitycontext/accessors_test.go
+++ b/pkg/securitycontext/accessors_test.go
@@ -21,7 +21,7 @@ import (
"testing"
"k8s.io/apimachinery/pkg/util/diff"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func TestPodSecurityContextAccessor(t *testing.T) {
diff --git a/pkg/securitycontext/fake.go b/pkg/securitycontext/fake.go
index 2c2d0d22d4..975445bab0 100644
--- a/pkg/securitycontext/fake.go
+++ b/pkg/securitycontext/fake.go
@@ -18,7 +18,7 @@ package securitycontext
import (
"k8s.io/api/core/v1"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// ValidSecurityContextWithContainerDefaults creates a valid security context provider based on
diff --git a/pkg/securitycontext/util.go b/pkg/securitycontext/util.go
index dee1564d06..73d23a4313 100644
--- a/pkg/securitycontext/util.go
+++ b/pkg/securitycontext/util.go
@@ -21,7 +21,7 @@ import (
"strings"
"k8s.io/api/core/v1"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// HasPrivilegedRequest returns the value of SecurityContext.Privileged, taking into account
diff --git a/pkg/serviceaccount/BUILD b/pkg/serviceaccount/BUILD
index 7300dc6ce9..afafa2849d 100644
--- a/pkg/serviceaccount/BUILD
+++ b/pkg/serviceaccount/BUILD
@@ -14,7 +14,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/serviceaccount",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/github.com/dgrijalva/jwt-go:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
diff --git a/pkg/serviceaccount/util.go b/pkg/serviceaccount/util.go
index df4dc3a914..0503c1513e 100644
--- a/pkg/serviceaccount/util.go
+++ b/pkg/serviceaccount/util.go
@@ -20,7 +20,7 @@ import (
"k8s.io/api/core/v1"
apiserverserviceaccount "k8s.io/apiserver/pkg/authentication/serviceaccount"
"k8s.io/apiserver/pkg/authentication/user"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// UserInfo returns a user.Info interface for the given namespace, service account name and UID
diff --git a/pkg/util/bandwidth/BUILD b/pkg/util/bandwidth/BUILD
index 166acf29b4..f440a61cef 100644
--- a/pkg/util/bandwidth/BUILD
+++ b/pkg/util/bandwidth/BUILD
@@ -46,7 +46,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/util/bandwidth",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
] + select({
diff --git a/pkg/util/bandwidth/utils_test.go b/pkg/util/bandwidth/utils_test.go
index 56687975af..5ce2287ac4 100644
--- a/pkg/util/bandwidth/utils_test.go
+++ b/pkg/util/bandwidth/utils_test.go
@@ -22,7 +22,7 @@ import (
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func TestExtractPodBandwidthResources(t *testing.T) {
diff --git a/pkg/util/iptables/iptables.go b/pkg/util/iptables/iptables.go
index 359e7c8204..342e28ceeb 100644
--- a/pkg/util/iptables/iptables.go
+++ b/pkg/util/iptables/iptables.go
@@ -91,6 +91,7 @@ const (
ChainPrerouting Chain = "PREROUTING"
ChainOutput Chain = "OUTPUT"
ChainInput Chain = "INPUT"
+ ChainForward Chain = "FORWARD"
)
const (
diff --git a/pkg/util/iptables/testing/fake.go b/pkg/util/iptables/testing/fake.go
index 8d9ac7c070..6f398597f7 100644
--- a/pkg/util/iptables/testing/fake.go
+++ b/pkg/util/iptables/testing/fake.go
@@ -32,6 +32,7 @@ const (
Jump = "-j "
Reject = "REJECT"
ToDest = "--to-destination "
+ Recent = "recent "
)
type Rule map[string]string
@@ -111,7 +112,7 @@ func (f *FakeIPTables) GetRules(chainName string) (rules []Rule) {
for _, l := range strings.Split(string(f.Lines), "\n") {
if strings.Contains(l, fmt.Sprintf("-A %v", chainName)) {
newRule := Rule(map[string]string{})
- for _, arg := range []string{Destination, Source, DPort, Protocol, Jump, ToDest} {
+ for _, arg := range []string{Destination, Source, DPort, Protocol, Jump, ToDest, Recent} {
tok := getToken(l, arg)
if tok != "" {
newRule[arg] = tok
diff --git a/pkg/util/keymutex/keymutex_test.go b/pkg/util/keymutex/keymutex_test.go
index 2f9bd3e268..c155a18af5 100644
--- a/pkg/util/keymutex/keymutex_test.go
+++ b/pkg/util/keymutex/keymutex_test.go
@@ -91,21 +91,3 @@ func verifyCallbackDoesntHappens(t *testing.T, callbackCh <-chan interface{}) bo
return true
}
}
-
-func verifyNoError(t *testing.T, err error, name string) {
- if err != nil {
- t.Fatalf("Unexpected response on %q. Expected: Actual: <%v>", name, err)
- }
-}
-
-func verifyError(t *testing.T, err error, name string) {
- if err == nil {
- t.Fatalf("Unexpected response on %q. Expected: Actual: ", name)
- }
-}
-
-func verifyMsg(t *testing.T, expected, actual string) {
- if actual != expected {
- t.Fatalf("Unexpected testMsg value. Expected: <%v> Actual: <%v>", expected, actual)
- }
-}
diff --git a/pkg/util/mount/BUILD b/pkg/util/mount/BUILD
index 023fad7ba3..c966015d9c 100644
--- a/pkg/util/mount/BUILD
+++ b/pkg/util/mount/BUILD
@@ -17,6 +17,7 @@ go_library(
"nsenter_mount_unsupported.go",
] + select({
"@io_bazel_rules_go//go/platform:linux_amd64": [
+ "exec_mount.go",
"mount_linux.go",
"nsenter_mount.go",
],
@@ -46,6 +47,7 @@ go_test(
"safe_format_and_mount_test.go",
] + select({
"@io_bazel_rules_go//go/platform:linux_amd64": [
+ "exec_mount_test.go",
"mount_linux_test.go",
"nsenter_mount_test.go",
],
diff --git a/pkg/util/mount/exec_mount.go b/pkg/util/mount/exec_mount.go
new file mode 100644
index 0000000000..1dedc5b7ae
--- /dev/null
+++ b/pkg/util/mount/exec_mount.go
@@ -0,0 +1,140 @@
+// +build linux
+
+/*
+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 mount
+
+import (
+ "fmt"
+
+ "github.com/golang/glog"
+)
+
+// ExecMounter is a mounter that uses provided Exec interface to mount and
+// unmount a filesystem. For all other calls it uses a wrapped mounter.
+type execMounter struct {
+ wrappedMounter Interface
+ exec Exec
+}
+
+func NewExecMounter(exec Exec, wrapped Interface) Interface {
+ return &execMounter{
+ wrappedMounter: wrapped,
+ exec: exec,
+ }
+}
+
+// execMounter implements mount.Interface
+var _ Interface = &execMounter{}
+
+// Mount runs mount(8) using given exec interface.
+func (m *execMounter) Mount(source string, target string, fstype string, options []string) error {
+ bind, bindRemountOpts := isBind(options)
+
+ if bind {
+ err := m.doExecMount(source, target, fstype, []string{"bind"})
+ if err != nil {
+ return err
+ }
+ return m.doExecMount(source, target, fstype, bindRemountOpts)
+ }
+
+ return m.doExecMount(source, target, fstype, options)
+}
+
+// doExecMount calls exec(mount ) using given exec interface.
+func (m *execMounter) doExecMount(source, target, fstype string, options []string) error {
+ glog.V(5).Infof("Exec Mounting %s %s %s %v", source, target, fstype, options)
+ mountArgs := makeMountArgs(source, target, fstype, options)
+ output, err := m.exec.Run("mount", mountArgs...)
+ glog.V(5).Infof("Exec mounted %v: %v: %s", mountArgs, err, string(output))
+ if err != nil {
+ return fmt.Errorf("mount failed: %v\nMounting command: %s\nMounting arguments: %s %s %s %v\nOutput: %s\n",
+ err, "mount", source, target, fstype, options, string(output))
+ }
+
+ return err
+}
+
+// Unmount runs umount(8) using given exec interface.
+func (m *execMounter) Unmount(target string) error {
+ outputBytes, err := m.exec.Run("umount", target)
+ if err == nil {
+ glog.V(5).Infof("Exec unmounted %s: %s", target, string(outputBytes))
+ } else {
+ glog.V(5).Infof("Failed to exec unmount %s: err: %q, umount output: %s", target, err, string(outputBytes))
+ }
+
+ return err
+}
+
+// List returns a list of all mounted filesystems.
+func (m *execMounter) List() ([]MountPoint, error) {
+ return m.wrappedMounter.List()
+}
+
+// IsLikelyNotMountPoint determines whether a path is a mountpoint.
+func (m *execMounter) IsLikelyNotMountPoint(file string) (bool, error) {
+ return m.wrappedMounter.IsLikelyNotMountPoint(file)
+}
+
+// DeviceOpened checks if block device in use by calling Open with O_EXCL flag.
+// Returns true if open returns errno EBUSY, and false if errno is nil.
+// Returns an error if errno is any error other than EBUSY.
+// Returns with error if pathname is not a device.
+func (m *execMounter) DeviceOpened(pathname string) (bool, error) {
+ return m.wrappedMounter.DeviceOpened(pathname)
+}
+
+// PathIsDevice uses FileInfo returned from os.Stat to check if path refers
+// to a device.
+func (m *execMounter) PathIsDevice(pathname string) (bool, error) {
+ return m.wrappedMounter.PathIsDevice(pathname)
+}
+
+//GetDeviceNameFromMount given a mount point, find the volume id from checking /proc/mounts
+func (m *execMounter) GetDeviceNameFromMount(mountPath, pluginDir string) (string, error) {
+ return m.wrappedMounter.GetDeviceNameFromMount(mountPath, pluginDir)
+}
+
+func (m *execMounter) IsMountPointMatch(mp MountPoint, dir string) bool {
+ return m.wrappedMounter.IsMountPointMatch(mp, dir)
+}
+
+func (m *execMounter) IsNotMountPoint(dir string) (bool, error) {
+ return m.wrappedMounter.IsNotMountPoint(dir)
+}
+
+func (m *execMounter) MakeRShared(path string) error {
+ return m.wrappedMounter.MakeRShared(path)
+}
+
+func (m *execMounter) GetFileType(pathname string) (FileType, error) {
+ return m.wrappedMounter.GetFileType(pathname)
+}
+
+func (m *execMounter) MakeFile(pathname string) error {
+ return m.wrappedMounter.MakeFile(pathname)
+}
+
+func (m *execMounter) MakeDir(pathname string) error {
+ return m.wrappedMounter.MakeDir(pathname)
+}
+
+func (m *execMounter) ExistsPath(pathname string) bool {
+ return m.wrappedMounter.ExistsPath(pathname)
+}
diff --git a/pkg/util/mount/exec_mount_test.go b/pkg/util/mount/exec_mount_test.go
new file mode 100644
index 0000000000..5882477f71
--- /dev/null
+++ b/pkg/util/mount/exec_mount_test.go
@@ -0,0 +1,153 @@
+// +build linux
+
+/*
+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 mount
+
+import (
+ "fmt"
+ "reflect"
+ "strings"
+ "testing"
+)
+
+var (
+ sourcePath = "/mnt/srv"
+ destinationPath = "/mnt/dst"
+ fsType = "xfs"
+ mountOptions = []string{"vers=1", "foo=bar"}
+)
+
+func TestMount(t *testing.T) {
+ exec := NewFakeExec(func(cmd string, args ...string) ([]byte, error) {
+ if cmd != "mount" {
+ t.Errorf("expected mount command, got %q", cmd)
+ }
+ // mount -t fstype -o options source target
+ expectedArgs := []string{"-t", fsType, "-o", strings.Join(mountOptions, ","), sourcePath, destinationPath}
+ if !reflect.DeepEqual(expectedArgs, args) {
+ t.Errorf("expected arguments %q, got %q", strings.Join(expectedArgs, " "), strings.Join(args, " "))
+ }
+ return nil, nil
+ })
+
+ wrappedMounter := &fakeMounter{t}
+ mounter := NewExecMounter(exec, wrappedMounter)
+
+ mounter.Mount(sourcePath, destinationPath, fsType, mountOptions)
+}
+
+func TestBindMount(t *testing.T) {
+ cmdCount := 0
+ exec := NewFakeExec(func(cmd string, args ...string) ([]byte, error) {
+ cmdCount++
+ if cmd != "mount" {
+ t.Errorf("expected mount command, got %q", cmd)
+ }
+ var expectedArgs []string
+ switch cmdCount {
+ case 1:
+ // mount -t fstype -o "bind" source target
+ expectedArgs = []string{"-t", fsType, "-o", "bind", sourcePath, destinationPath}
+ case 2:
+ // mount -t fstype -o "remount,opts" source target
+ expectedArgs = []string{"-t", fsType, "-o", "remount," + strings.Join(mountOptions, ","), sourcePath, destinationPath}
+ }
+ if !reflect.DeepEqual(expectedArgs, args) {
+ t.Errorf("expected arguments %q, got %q", strings.Join(expectedArgs, " "), strings.Join(args, " "))
+ }
+ return nil, nil
+ })
+
+ wrappedMounter := &fakeMounter{t}
+ mounter := NewExecMounter(exec, wrappedMounter)
+ bindOptions := append(mountOptions, "bind")
+ mounter.Mount(sourcePath, destinationPath, fsType, bindOptions)
+}
+
+func TestUnmount(t *testing.T) {
+ exec := NewFakeExec(func(cmd string, args ...string) ([]byte, error) {
+ if cmd != "umount" {
+ t.Errorf("expected unmount command, got %q", cmd)
+ }
+ // unmount $target
+ expectedArgs := []string{destinationPath}
+ if !reflect.DeepEqual(expectedArgs, args) {
+ t.Errorf("expected arguments %q, got %q", strings.Join(expectedArgs, " "), strings.Join(args, " "))
+ }
+ return nil, nil
+ })
+
+ wrappedMounter := &fakeMounter{t}
+ mounter := NewExecMounter(exec, wrappedMounter)
+
+ mounter.Unmount(destinationPath)
+}
+
+/* Fake wrapped mounter */
+type fakeMounter struct {
+ t *testing.T
+}
+
+func (fm *fakeMounter) Mount(source string, target string, fstype string, options []string) error {
+ // Mount() of wrapped mounter should never be called. We call exec instead.
+ fm.t.Errorf("Unexpected wrapped mount call")
+ return fmt.Errorf("Unexpected wrapped mount call")
+}
+
+func (fm *fakeMounter) Unmount(target string) error {
+ // umount() of wrapped mounter should never be called. We call exec instead.
+ fm.t.Errorf("Unexpected wrapped mount call")
+ return fmt.Errorf("Unexpected wrapped mount call")
+}
+
+func (fm *fakeMounter) List() ([]MountPoint, error) {
+ return nil, nil
+}
+func (fm *fakeMounter) IsMountPointMatch(mp MountPoint, dir string) bool {
+ return false
+}
+func (fm *fakeMounter) IsNotMountPoint(file string) (bool, error) {
+ return false, nil
+}
+func (fm *fakeMounter) IsLikelyNotMountPoint(file string) (bool, error) {
+ return false, nil
+}
+func (fm *fakeMounter) DeviceOpened(pathname string) (bool, error) {
+ return false, nil
+}
+func (fm *fakeMounter) PathIsDevice(pathname string) (bool, error) {
+ return false, nil
+}
+func (fm *fakeMounter) GetDeviceNameFromMount(mountPath, pluginDir string) (string, error) {
+ return "", nil
+}
+func (fm *fakeMounter) MakeRShared(path string) error {
+ return nil
+}
+func (fm *fakeMounter) MakeFile(pathname string) error {
+ return nil
+}
+func (fm *fakeMounter) MakeDir(pathname string) error {
+ return nil
+}
+func (fm *fakeMounter) ExistsPath(pathname string) bool {
+ return false
+}
+func (fm *fakeMounter) GetFileType(pathname string) (FileType, error) {
+ return FileTypeFile, nil
+}
diff --git a/pkg/util/node/BUILD b/pkg/util/node/BUILD
index a6b14d3ae8..6ce01d7e6f 100644
--- a/pkg/util/node/BUILD
+++ b/pkg/util/node/BUILD
@@ -11,7 +11,7 @@ go_library(
srcs = ["node.go"],
importpath = "k8s.io/kubernetes/pkg/util/node",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/kubelet/apis:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
diff --git a/pkg/util/node/node.go b/pkg/util/node/node.go
index 72790e4c8e..a985c9f039 100644
--- a/pkg/util/node/node.go
+++ b/pkg/util/node/node.go
@@ -31,7 +31,7 @@ import (
"k8s.io/apimachinery/pkg/util/strategicpatch"
clientset "k8s.io/client-go/kubernetes"
v1core "k8s.io/client-go/kubernetes/typed/core/v1"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
kubeletapis "k8s.io/kubernetes/pkg/kubelet/apis"
)
diff --git a/pkg/util/taints/BUILD b/pkg/util/taints/BUILD
index 1df1e7ba32..957af3c05f 100644
--- a/pkg/util/taints/BUILD
+++ b/pkg/util/taints/BUILD
@@ -11,8 +11,8 @@ go_library(
srcs = ["taints.go"],
importpath = "k8s.io/kubernetes/pkg/util/taints",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/helper:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
@@ -26,7 +26,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/util/taints",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/github.com/spf13/pflag:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
],
diff --git a/pkg/util/taints/taints.go b/pkg/util/taints/taints.go
index a86839b5b3..76e4bb8668 100644
--- a/pkg/util/taints/taints.go
+++ b/pkg/util/taints/taints.go
@@ -25,8 +25,8 @@ import (
utilerrors "k8s.io/apimachinery/pkg/util/errors"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/validation"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/helper"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
)
const (
diff --git a/pkg/util/taints/taints_test.go b/pkg/util/taints/taints_test.go
index c0db4ec577..110d78f787 100644
--- a/pkg/util/taints/taints_test.go
+++ b/pkg/util/taints/taints_test.go
@@ -22,7 +22,7 @@ import (
"testing"
"k8s.io/api/core/v1"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"github.com/spf13/pflag"
)
diff --git a/pkg/util/tolerations/BUILD b/pkg/util/tolerations/BUILD
index 768f41e50d..1e3b1189b0 100644
--- a/pkg/util/tolerations/BUILD
+++ b/pkg/util/tolerations/BUILD
@@ -13,7 +13,7 @@ go_library(
"tolerations.go",
],
importpath = "k8s.io/kubernetes/pkg/util/tolerations",
- deps = ["//pkg/api:go_default_library"],
+ deps = ["//pkg/apis/core:go_default_library"],
)
filegroup(
@@ -34,5 +34,5 @@ go_test(
srcs = ["tolerations_test.go"],
importpath = "k8s.io/kubernetes/pkg/util/tolerations",
library = ":go_default_library",
- deps = ["//pkg/api:go_default_library"],
+ deps = ["//pkg/apis/core:go_default_library"],
)
diff --git a/pkg/util/tolerations/tolerations.go b/pkg/util/tolerations/tolerations.go
index 9936d2d43e..5b5cec8b7d 100644
--- a/pkg/util/tolerations/tolerations.go
+++ b/pkg/util/tolerations/tolerations.go
@@ -17,7 +17,7 @@ limitations under the License.
package tolerations
import (
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
type key struct {
diff --git a/pkg/util/tolerations/tolerations_test.go b/pkg/util/tolerations/tolerations_test.go
index e652baf357..3f88e30d3b 100644
--- a/pkg/util/tolerations/tolerations_test.go
+++ b/pkg/util/tolerations/tolerations_test.go
@@ -17,9 +17,8 @@ limitations under the License.
package tolerations
import (
+ api "k8s.io/kubernetes/pkg/apis/core"
"testing"
-
- "k8s.io/kubernetes/pkg/api"
)
func TestVerifyAgainstWhitelist(t *testing.T) {
diff --git a/pkg/version/base.go b/pkg/version/base.go
index 6239d53ff8..730e79f03d 100644
--- a/pkg/version/base.go
+++ b/pkg/version/base.go
@@ -51,9 +51,13 @@ var (
// semantic version is a git hash, but the version itself is no
// longer the direct output of "git describe", but a slight
// translation to be semver compliant.
+
+ // NOTE: The $Format strings are replaced during 'git archive' thanks to the
+ // companion .gitattributes file containing 'export-subst' in this same
+ // directory. See also https://git-scm.com/docs/gitattributes
gitVersion = "v0.0.0-master+$Format:%h$"
- gitCommit = "$Format:%H$" // sha1 from git, output of $(git rev-parse HEAD)
- gitTreeState = "not a git tree" // state of git tree, either "clean" or "dirty"
+ gitCommit = "$Format:%H$" // sha1 from git, output of $(git rev-parse HEAD)
+ gitTreeState = "" // state of git tree, either "clean" or "dirty"
buildDate = "1970-01-01T00:00:00Z" // build date in ISO8601 format, output of $(date -u +'%Y-%m-%dT%H:%M:%SZ')
)
diff --git a/pkg/volume/BUILD b/pkg/volume/BUILD
index 6796dcb4e2..020a644d01 100644
--- a/pkg/volume/BUILD
+++ b/pkg/volume/BUILD
@@ -56,7 +56,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/volume",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/util/slice:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
diff --git a/pkg/volume/azure_dd/BUILD b/pkg/volume/azure_dd/BUILD
index 95e925f6ff..7a71a2c4bb 100644
--- a/pkg/volume/azure_dd/BUILD
+++ b/pkg/volume/azure_dd/BUILD
@@ -26,7 +26,7 @@ go_library(
}),
importpath = "k8s.io/kubernetes/pkg/volume/azure_dd",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/cloudprovider:go_default_library",
"//pkg/cloudprovider/providers/azure:go_default_library",
"//pkg/util/keymutex:go_default_library",
diff --git a/pkg/volume/azure_dd/azure_common.go b/pkg/volume/azure_dd/azure_common.go
index 938f76ca9a..b4fa3b2c91 100644
--- a/pkg/volume/azure_dd/azure_common.go
+++ b/pkg/volume/azure_dd/azure_common.go
@@ -27,7 +27,7 @@ import (
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/sets"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/cloudprovider/providers/azure"
"k8s.io/kubernetes/pkg/util/mount"
"k8s.io/kubernetes/pkg/util/strings"
diff --git a/pkg/volume/empty_dir/BUILD b/pkg/volume/empty_dir/BUILD
index 4f5a52c895..c20dd4f39f 100644
--- a/pkg/volume/empty_dir/BUILD
+++ b/pkg/volume/empty_dir/BUILD
@@ -20,7 +20,7 @@ go_library(
}),
importpath = "k8s.io/kubernetes/pkg/volume/empty_dir",
deps = [
- "//pkg/api/v1/helper:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
"//pkg/util/mount:go_default_library",
"//pkg/util/strings:go_default_library",
"//pkg/volume:go_default_library",
diff --git a/pkg/volume/empty_dir/empty_dir.go b/pkg/volume/empty_dir/empty_dir.go
index fdba51c1ec..ef7807601e 100644
--- a/pkg/volume/empty_dir/empty_dir.go
+++ b/pkg/volume/empty_dir/empty_dir.go
@@ -26,7 +26,7 @@ import (
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
"k8s.io/kubernetes/pkg/util/mount"
stringsutil "k8s.io/kubernetes/pkg/util/strings"
"k8s.io/kubernetes/pkg/volume"
diff --git a/pkg/volume/glusterfs/BUILD b/pkg/volume/glusterfs/BUILD
index 5eeb65b40f..b8371b5e8d 100644
--- a/pkg/volume/glusterfs/BUILD
+++ b/pkg/volume/glusterfs/BUILD
@@ -16,7 +16,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/volume/glusterfs",
deps = [
- "//pkg/api/v1/helper:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
"//pkg/util/mount:go_default_library",
"//pkg/util/strings:go_default_library",
"//pkg/volume:go_default_library",
diff --git a/pkg/volume/glusterfs/glusterfs.go b/pkg/volume/glusterfs/glusterfs.go
index 25e25c04d2..300d19cdeb 100644
--- a/pkg/volume/glusterfs/glusterfs.go
+++ b/pkg/volume/glusterfs/glusterfs.go
@@ -37,7 +37,7 @@ import (
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/sets"
clientset "k8s.io/client-go/kubernetes"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
"k8s.io/kubernetes/pkg/util/mount"
"k8s.io/kubernetes/pkg/util/strings"
"k8s.io/kubernetes/pkg/volume"
diff --git a/pkg/volume/portworx/BUILD b/pkg/volume/portworx/BUILD
index d2f7dd633e..36714e9635 100644
--- a/pkg/volume/portworx/BUILD
+++ b/pkg/volume/portworx/BUILD
@@ -30,7 +30,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/volume/portworx",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/util/mount:go_default_library",
"//pkg/util/strings:go_default_library",
"//pkg/volume:go_default_library",
diff --git a/pkg/volume/portworx/portworx_util.go b/pkg/volume/portworx/portworx_util.go
index cf7ddf8edb..60677df2c9 100644
--- a/pkg/volume/portworx/portworx_util.go
+++ b/pkg/volume/portworx/portworx_util.go
@@ -25,7 +25,7 @@ import (
volumeapi "github.com/libopenstorage/openstorage/volume"
"k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/volume"
)
diff --git a/pkg/volume/util/BUILD b/pkg/volume/util/BUILD
index b1ec18f52b..5cff2bf556 100644
--- a/pkg/volume/util/BUILD
+++ b/pkg/volume/util/BUILD
@@ -30,7 +30,7 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/volume/util",
deps = [
"//pkg/api/legacyscheme:go_default_library",
- "//pkg/api/v1/helper:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
"//pkg/kubelet/apis:go_default_library",
"//pkg/util/mount:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
@@ -68,8 +68,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/volume/util",
library = ":go_default_library",
deps = [
- "//pkg/api/install:go_default_library",
- "//pkg/api/v1/helper:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
diff --git a/pkg/volume/util/util.go b/pkg/volume/util/util.go
index ad4ac6a082..2bd4fc89c2 100644
--- a/pkg/volume/util/util.go
+++ b/pkg/volume/util/util.go
@@ -33,7 +33,7 @@ import (
"k8s.io/apimachinery/pkg/util/sets"
clientset "k8s.io/client-go/kubernetes"
"k8s.io/kubernetes/pkg/api/legacyscheme"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
kubeletapis "k8s.io/kubernetes/pkg/kubelet/apis"
"k8s.io/kubernetes/pkg/util/mount"
)
diff --git a/pkg/volume/util/util_test.go b/pkg/volume/util/util_test.go
index 480e576273..b11be33eeb 100644
--- a/pkg/volume/util/util_test.go
+++ b/pkg/volume/util/util_test.go
@@ -26,8 +26,8 @@ import (
"k8s.io/apimachinery/pkg/util/sets"
// util.go uses api.Codecs.LegacyCodec so import this package to do some
// resource initialization.
- _ "k8s.io/kubernetes/pkg/api/install"
- "k8s.io/kubernetes/pkg/api/v1/helper"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
+ "k8s.io/kubernetes/pkg/apis/core/v1/helper"
)
var nodeLabels map[string]string = map[string]string{
diff --git a/pkg/volume/util_test.go b/pkg/volume/util_test.go
index 8d3a0f12a7..c902fde2a7 100644
--- a/pkg/volume/util_test.go
+++ b/pkg/volume/util_test.go
@@ -29,7 +29,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/watch"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/util/slice"
)
diff --git a/pkg/volume/validation/BUILD b/pkg/volume/validation/BUILD
index fcda122d2c..a3cc585f7a 100644
--- a/pkg/volume/validation/BUILD
+++ b/pkg/volume/validation/BUILD
@@ -12,7 +12,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/volume/validation",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
],
@@ -23,7 +23,7 @@ go_library(
srcs = ["pv_validation.go"],
importpath = "k8s.io/kubernetes/pkg/volume/validation",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
],
)
diff --git a/pkg/volume/validation/pv_validation.go b/pkg/volume/validation/pv_validation.go
index 45db2f5e52..23fa51fdac 100644
--- a/pkg/volume/validation/pv_validation.go
+++ b/pkg/volume/validation/pv_validation.go
@@ -22,7 +22,7 @@ import (
"strings"
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// ValidatePersistentVolume validates PV object for plugin specific validation
diff --git a/pkg/volume/validation/pv_validation_test.go b/pkg/volume/validation/pv_validation_test.go
index d0a8f1c3ee..d7601185b9 100644
--- a/pkg/volume/validation/pv_validation_test.go
+++ b/pkg/volume/validation/pv_validation_test.go
@@ -21,7 +21,7 @@ import (
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func TestValidatePersistentVolumes(t *testing.T) {
diff --git a/plugin/cmd/kube-scheduler/app/server.go b/plugin/cmd/kube-scheduler/app/server.go
index 2a4c206dfe..8eef7ef3e3 100644
--- a/plugin/cmd/kube-scheduler/app/server.go
+++ b/plugin/cmd/kube-scheduler/app/server.go
@@ -122,11 +122,11 @@ func AddFlags(options *Options, fs *pflag.FlagSet) {
fs.StringVar(&options.config.ClientConnection.KubeConfigFile, "kubeconfig", options.config.ClientConnection.KubeConfigFile, "Path to kubeconfig file with authorization and master location information.")
fs.StringVar(&options.config.ClientConnection.ContentType, "kube-api-content-type", options.config.ClientConnection.ContentType, "Content type of requests sent to apiserver.")
fs.Float32Var(&options.config.ClientConnection.QPS, "kube-api-qps", options.config.ClientConnection.QPS, "QPS to use while talking with kubernetes apiserver")
- fs.IntVar(&options.config.ClientConnection.Burst, "kube-api-burst", options.config.ClientConnection.Burst, "Burst to use while talking with kubernetes apiserver")
+ fs.Int32Var(&options.config.ClientConnection.Burst, "kube-api-burst", options.config.ClientConnection.Burst, "Burst to use while talking with kubernetes apiserver")
fs.StringVar(&options.config.SchedulerName, "scheduler-name", options.config.SchedulerName, "Name of the scheduler, used to select which pods will be processed by this scheduler, based on pod's \"spec.SchedulerName\".")
fs.StringVar(&options.config.LeaderElection.LockObjectNamespace, "lock-object-namespace", options.config.LeaderElection.LockObjectNamespace, "Define the namespace of the lock object.")
fs.StringVar(&options.config.LeaderElection.LockObjectName, "lock-object-name", options.config.LeaderElection.LockObjectName, "Define the name of the lock object.")
- fs.IntVar(&options.config.HardPodAffinitySymmetricWeight, "hard-pod-affinity-symmetric-weight", options.config.HardPodAffinitySymmetricWeight,
+ fs.Int32Var(&options.config.HardPodAffinitySymmetricWeight, "hard-pod-affinity-symmetric-weight", options.config.HardPodAffinitySymmetricWeight,
"RequiredDuringScheduling affinity is not symmetric, but there is an implicit PreferredDuringScheduling affinity rule corresponding "+
"to every RequiredDuringScheduling affinity rule. --hard-pod-affinity-symmetric-weight represents the weight of implicit PreferredDuringScheduling affinity rule.")
fs.MarkDeprecated("hard-pod-affinity-symmetric-weight", "This option was moved to the policy configuration file")
@@ -358,7 +358,7 @@ type SchedulerServer struct {
InformerFactory informers.SharedInformerFactory
PodInformer coreinformers.PodInformer
AlgorithmSource componentconfig.SchedulerAlgorithmSource
- HardPodAffinitySymmetricWeight int
+ HardPodAffinitySymmetricWeight int32
EventClient v1core.EventsGetter
Recorder record.EventRecorder
Broadcaster record.EventBroadcaster
diff --git a/plugin/pkg/admission/admit/BUILD b/plugin/pkg/admission/admit/BUILD
index e406017ce2..d660932d21 100644
--- a/plugin/pkg/admission/admit/BUILD
+++ b/plugin/pkg/admission/admit/BUILD
@@ -19,7 +19,7 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/admission/admit",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission:go_default_library",
],
)
diff --git a/plugin/pkg/admission/admit/admission_test.go b/plugin/pkg/admission/admit/admission_test.go
index 9281aec966..d7d3737e70 100644
--- a/plugin/pkg/admission/admit/admission_test.go
+++ b/plugin/pkg/admission/admit/admission_test.go
@@ -20,7 +20,7 @@ import (
"testing"
"k8s.io/apiserver/pkg/admission"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func TestAdmissionNonNilAttribute(t *testing.T) {
diff --git a/plugin/pkg/admission/alwayspullimages/BUILD b/plugin/pkg/admission/alwayspullimages/BUILD
index 24dd34728a..ab8a3fd14d 100644
--- a/plugin/pkg/admission/alwayspullimages/BUILD
+++ b/plugin/pkg/admission/alwayspullimages/BUILD
@@ -11,7 +11,7 @@ go_library(
srcs = ["admission.go"],
importpath = "k8s.io/kubernetes/plugin/pkg/admission/alwayspullimages",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission:go_default_library",
@@ -24,7 +24,7 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/admission/alwayspullimages",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission:go_default_library",
diff --git a/plugin/pkg/admission/alwayspullimages/admission.go b/plugin/pkg/admission/alwayspullimages/admission.go
index c9e07aa431..c9a90f648a 100644
--- a/plugin/pkg/admission/alwayspullimages/admission.go
+++ b/plugin/pkg/admission/alwayspullimages/admission.go
@@ -30,7 +30,7 @@ import (
apierrors "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/util/validation/field"
"k8s.io/apiserver/pkg/admission"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// Register registers a plugin
diff --git a/plugin/pkg/admission/alwayspullimages/admission_test.go b/plugin/pkg/admission/alwayspullimages/admission_test.go
index 518fd81107..de6fd5df9b 100644
--- a/plugin/pkg/admission/alwayspullimages/admission_test.go
+++ b/plugin/pkg/admission/alwayspullimages/admission_test.go
@@ -22,7 +22,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apiserver/pkg/admission"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// TestAdmission verifies all create requests for pods result in every container's image pull policy
diff --git a/plugin/pkg/admission/antiaffinity/BUILD b/plugin/pkg/admission/antiaffinity/BUILD
index 930e815a4b..c0e381995a 100644
--- a/plugin/pkg/admission/antiaffinity/BUILD
+++ b/plugin/pkg/admission/antiaffinity/BUILD
@@ -14,7 +14,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/plugin/pkg/admission/antiaffinity",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/kubelet/apis:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission:go_default_library",
@@ -27,7 +27,7 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/admission/antiaffinity",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/kubelet/apis:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
diff --git a/plugin/pkg/admission/antiaffinity/admission.go b/plugin/pkg/admission/antiaffinity/admission.go
index c126e5cffe..bec95b8d8d 100644
--- a/plugin/pkg/admission/antiaffinity/admission.go
+++ b/plugin/pkg/admission/antiaffinity/admission.go
@@ -22,7 +22,7 @@ import (
apierrors "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apiserver/pkg/admission"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
kubeletapis "k8s.io/kubernetes/pkg/kubelet/apis"
)
diff --git a/plugin/pkg/admission/antiaffinity/admission_test.go b/plugin/pkg/admission/antiaffinity/admission_test.go
index dac46930d7..dc79c91128 100644
--- a/plugin/pkg/admission/antiaffinity/admission_test.go
+++ b/plugin/pkg/admission/antiaffinity/admission_test.go
@@ -22,7 +22,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apiserver/pkg/admission"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
kubeletapis "k8s.io/kubernetes/pkg/kubelet/apis"
)
diff --git a/plugin/pkg/admission/defaulttolerationseconds/BUILD b/plugin/pkg/admission/defaulttolerationseconds/BUILD
index 571320d80d..00bfbc9d5d 100644
--- a/plugin/pkg/admission/defaulttolerationseconds/BUILD
+++ b/plugin/pkg/admission/defaulttolerationseconds/BUILD
@@ -12,8 +12,8 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/admission/defaulttolerationseconds",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/helper:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
"//plugin/pkg/scheduler/algorithm:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission:go_default_library",
],
@@ -24,8 +24,8 @@ go_library(
srcs = ["admission.go"],
importpath = "k8s.io/kubernetes/plugin/pkg/admission/defaulttolerationseconds",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/helper:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
"//plugin/pkg/scheduler/algorithm:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission:go_default_library",
diff --git a/plugin/pkg/admission/defaulttolerationseconds/admission.go b/plugin/pkg/admission/defaulttolerationseconds/admission.go
index f3630a873d..05e170a96b 100644
--- a/plugin/pkg/admission/defaulttolerationseconds/admission.go
+++ b/plugin/pkg/admission/defaulttolerationseconds/admission.go
@@ -23,8 +23,8 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apiserver/pkg/admission"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/helper"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
"k8s.io/kubernetes/plugin/pkg/scheduler/algorithm"
)
@@ -55,6 +55,8 @@ type Plugin struct {
*admission.Handler
}
+var _ admission.MutationInterface = &Plugin{}
+
// NewDefaultTolerationSeconds creates a new instance of the DefaultTolerationSeconds admission controller
func NewDefaultTolerationSeconds() *Plugin {
return &Plugin{
diff --git a/plugin/pkg/admission/defaulttolerationseconds/admission_test.go b/plugin/pkg/admission/defaulttolerationseconds/admission_test.go
index f480d1f0c1..c249442dd4 100644
--- a/plugin/pkg/admission/defaulttolerationseconds/admission_test.go
+++ b/plugin/pkg/admission/defaulttolerationseconds/admission_test.go
@@ -20,8 +20,8 @@ import (
"testing"
"k8s.io/apiserver/pkg/admission"
- "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/helper"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
"k8s.io/kubernetes/plugin/pkg/scheduler/algorithm"
)
diff --git a/plugin/pkg/admission/deny/BUILD b/plugin/pkg/admission/deny/BUILD
index 7809eebe1b..c5eb8bf5af 100644
--- a/plugin/pkg/admission/deny/BUILD
+++ b/plugin/pkg/admission/deny/BUILD
@@ -19,7 +19,7 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/admission/deny",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission:go_default_library",
],
)
diff --git a/plugin/pkg/admission/deny/admission_test.go b/plugin/pkg/admission/deny/admission_test.go
index a2a6f32d9b..fcc15ce0b7 100644
--- a/plugin/pkg/admission/deny/admission_test.go
+++ b/plugin/pkg/admission/deny/admission_test.go
@@ -20,7 +20,7 @@ import (
"testing"
"k8s.io/apiserver/pkg/admission"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func TestAdmission(t *testing.T) {
diff --git a/plugin/pkg/admission/eventratelimit/BUILD b/plugin/pkg/admission/eventratelimit/BUILD
index 67df0c8cbd..7dbb98cfc8 100644
--- a/plugin/pkg/admission/eventratelimit/BUILD
+++ b/plugin/pkg/admission/eventratelimit/BUILD
@@ -15,7 +15,7 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/admission/eventratelimit",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//plugin/pkg/admission/eventratelimit/apis/eventratelimit:go_default_library",
"//vendor/github.com/hashicorp/golang-lru:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
@@ -39,7 +39,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/plugin/pkg/admission/eventratelimit",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//plugin/pkg/admission/eventratelimit/apis/eventratelimit:go_default_library",
"//plugin/pkg/admission/eventratelimit/apis/eventratelimit/install:go_default_library",
"//plugin/pkg/admission/eventratelimit/apis/eventratelimit/v1alpha1:go_default_library",
diff --git a/plugin/pkg/admission/eventratelimit/admission.go b/plugin/pkg/admission/eventratelimit/admission.go
index c2691cf604..7e02531969 100644
--- a/plugin/pkg/admission/eventratelimit/admission.go
+++ b/plugin/pkg/admission/eventratelimit/admission.go
@@ -21,7 +21,7 @@ import (
"k8s.io/apiserver/pkg/admission"
"k8s.io/client-go/util/flowcontrol"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
eventratelimitapi "k8s.io/kubernetes/plugin/pkg/admission/eventratelimit/apis/eventratelimit"
"k8s.io/kubernetes/plugin/pkg/admission/eventratelimit/apis/eventratelimit/validation"
)
diff --git a/plugin/pkg/admission/eventratelimit/admission_test.go b/plugin/pkg/admission/eventratelimit/admission_test.go
index 72a5ff8889..e0e96176c6 100644
--- a/plugin/pkg/admission/eventratelimit/admission_test.go
+++ b/plugin/pkg/admission/eventratelimit/admission_test.go
@@ -25,7 +25,7 @@ import (
"k8s.io/apimachinery/pkg/util/clock"
"k8s.io/apiserver/pkg/admission"
"k8s.io/apiserver/pkg/authentication/user"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
eventratelimitapi "k8s.io/kubernetes/plugin/pkg/admission/eventratelimit/apis/eventratelimit"
)
diff --git a/plugin/pkg/admission/eventratelimit/apis/eventratelimit/BUILD b/plugin/pkg/admission/eventratelimit/apis/eventratelimit/BUILD
index b519a400be..7f723eadea 100644
--- a/plugin/pkg/admission/eventratelimit/apis/eventratelimit/BUILD
+++ b/plugin/pkg/admission/eventratelimit/apis/eventratelimit/BUILD
@@ -16,7 +16,6 @@ go_library(
importpath = "k8s.io/kubernetes/plugin/pkg/admission/eventratelimit/apis/eventratelimit",
deps = [
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/plugin/pkg/admission/eventratelimit/apis/eventratelimit/doc.go b/plugin/pkg/admission/eventratelimit/apis/eventratelimit/doc.go
index c70a60a56f..56d99bee29 100644
--- a/plugin/pkg/admission/eventratelimit/apis/eventratelimit/doc.go
+++ b/plugin/pkg/admission/eventratelimit/apis/eventratelimit/doc.go
@@ -14,6 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
package eventratelimit // import "k8s.io/kubernetes/plugin/pkg/admission/eventratelimit/apis/eventratelimit"
diff --git a/plugin/pkg/admission/eventratelimit/apis/eventratelimit/v1alpha1/doc.go b/plugin/pkg/admission/eventratelimit/apis/eventratelimit/v1alpha1/doc.go
index 483c858dee..cf325fa9f2 100644
--- a/plugin/pkg/admission/eventratelimit/apis/eventratelimit/v1alpha1/doc.go
+++ b/plugin/pkg/admission/eventratelimit/apis/eventratelimit/v1alpha1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:conversion-gen=k8s.io/kubernetes/plugin/pkg/admission/eventratelimit/apis/eventratelimit
// +k8s:defaulter-gen=TypeMeta
diff --git a/plugin/pkg/admission/eventratelimit/apis/eventratelimit/v1alpha1/zz_generated.deepcopy.go b/plugin/pkg/admission/eventratelimit/apis/eventratelimit/v1alpha1/zz_generated.deepcopy.go
index 49fc877913..3ed408c1a3 100644
--- a/plugin/pkg/admission/eventratelimit/apis/eventratelimit/v1alpha1/zz_generated.deepcopy.go
+++ b/plugin/pkg/admission/eventratelimit/apis/eventratelimit/v1alpha1/zz_generated.deepcopy.go
@@ -21,32 +21,9 @@ limitations under the License.
package v1alpha1
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Configuration).DeepCopyInto(out.(*Configuration))
- return nil
- }, InType: reflect.TypeOf(&Configuration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Limit).DeepCopyInto(out.(*Limit))
- return nil
- }, InType: reflect.TypeOf(&Limit{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Configuration) DeepCopyInto(out *Configuration) {
*out = *in
diff --git a/plugin/pkg/admission/eventratelimit/apis/eventratelimit/zz_generated.deepcopy.go b/plugin/pkg/admission/eventratelimit/apis/eventratelimit/zz_generated.deepcopy.go
index a1bd747541..006fcbc04e 100644
--- a/plugin/pkg/admission/eventratelimit/apis/eventratelimit/zz_generated.deepcopy.go
+++ b/plugin/pkg/admission/eventratelimit/apis/eventratelimit/zz_generated.deepcopy.go
@@ -21,32 +21,9 @@ limitations under the License.
package eventratelimit
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Configuration).DeepCopyInto(out.(*Configuration))
- return nil
- }, InType: reflect.TypeOf(&Configuration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Limit).DeepCopyInto(out.(*Limit))
- return nil
- }, InType: reflect.TypeOf(&Limit{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Configuration) DeepCopyInto(out *Configuration) {
*out = *in
diff --git a/plugin/pkg/admission/eventratelimit/limitenforcer.go b/plugin/pkg/admission/eventratelimit/limitenforcer.go
index 4fa5ee90f7..3faff618f0 100644
--- a/plugin/pkg/admission/eventratelimit/limitenforcer.go
+++ b/plugin/pkg/admission/eventratelimit/limitenforcer.go
@@ -25,7 +25,7 @@ import (
apierrors "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apiserver/pkg/admission"
"k8s.io/client-go/util/flowcontrol"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
eventratelimitapi "k8s.io/kubernetes/plugin/pkg/admission/eventratelimit/apis/eventratelimit"
)
diff --git a/plugin/pkg/admission/exec/BUILD b/plugin/pkg/admission/exec/BUILD
index 55700fcbd5..61fe910995 100644
--- a/plugin/pkg/admission/exec/BUILD
+++ b/plugin/pkg/admission/exec/BUILD
@@ -11,7 +11,7 @@ go_library(
srcs = ["admission.go"],
importpath = "k8s.io/kubernetes/plugin/pkg/admission/exec",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/kubeapiserver/admission:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
@@ -27,7 +27,7 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/admission/exec",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/client/clientset_generated/internalclientset/fake:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
diff --git a/plugin/pkg/admission/exec/admission.go b/plugin/pkg/admission/exec/admission.go
index 405a992805..456d47e07e 100644
--- a/plugin/pkg/admission/exec/admission.go
+++ b/plugin/pkg/admission/exec/admission.go
@@ -24,7 +24,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apiserver/pkg/admission"
"k8s.io/apiserver/pkg/registry/rest"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
kubeapiserveradmission "k8s.io/kubernetes/pkg/kubeapiserver/admission"
)
diff --git a/plugin/pkg/admission/exec/admission_test.go b/plugin/pkg/admission/exec/admission_test.go
index 56a6ca4343..649089ced9 100644
--- a/plugin/pkg/admission/exec/admission_test.go
+++ b/plugin/pkg/admission/exec/admission_test.go
@@ -24,7 +24,7 @@ import (
"k8s.io/apiserver/pkg/admission"
"k8s.io/apiserver/pkg/registry/rest"
core "k8s.io/client-go/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
)
diff --git a/plugin/pkg/admission/gc/BUILD b/plugin/pkg/admission/gc/BUILD
index c68db4360b..e4d316030f 100644
--- a/plugin/pkg/admission/gc/BUILD
+++ b/plugin/pkg/admission/gc/BUILD
@@ -28,8 +28,8 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/admission/gc",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/kubeapiserver/admission:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
diff --git a/plugin/pkg/admission/gc/gc_admission_test.go b/plugin/pkg/admission/gc/gc_admission_test.go
index 52fb665065..818220f3d2 100644
--- a/plugin/pkg/admission/gc/gc_admission_test.go
+++ b/plugin/pkg/admission/gc/gc_admission_test.go
@@ -27,8 +27,8 @@ import (
"k8s.io/apiserver/pkg/admission/initializer"
"k8s.io/apiserver/pkg/authentication/user"
"k8s.io/apiserver/pkg/authorization/authorizer"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ api "k8s.io/kubernetes/pkg/apis/core"
kubeadmission "k8s.io/kubernetes/pkg/kubeapiserver/admission"
)
@@ -86,10 +86,7 @@ func newGCPermissionsEnforcement() (*gcPermissionsEnforcement, error) {
whiteList: whiteList,
}
- genericPluginInitializer, err := initializer.New(nil, nil, fakeAuthorizer{}, nil)
- if err != nil {
- return nil, err
- }
+ genericPluginInitializer := initializer.New(nil, nil, fakeAuthorizer{}, nil)
pluginInitializer := kubeadmission.NewPluginInitializer(nil, nil, nil, legacyscheme.Registry.RESTMapper(), nil, nil, nil)
initializersChain := admission.PluginInitializers{}
initializersChain = append(initializersChain, genericPluginInitializer)
diff --git a/plugin/pkg/admission/imagepolicy/BUILD b/plugin/pkg/admission/imagepolicy/BUILD
index 4ccc1a5615..9ea88c749b 100644
--- a/plugin/pkg/admission/imagepolicy/BUILD
+++ b/plugin/pkg/admission/imagepolicy/BUILD
@@ -15,8 +15,8 @@ go_library(
],
importpath = "k8s.io/kubernetes/plugin/pkg/admission/imagepolicy",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/imagepolicy/install:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/k8s.io/api/imagepolicy/v1alpha1:go_default_library",
@@ -40,7 +40,7 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/admission/imagepolicy",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/imagepolicy/install:go_default_library",
"//vendor/k8s.io/api/imagepolicy/v1alpha1:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission:go_default_library",
diff --git a/plugin/pkg/admission/imagepolicy/admission.go b/plugin/pkg/admission/imagepolicy/admission.go
index 2be89631e9..e63430bdd6 100644
--- a/plugin/pkg/admission/imagepolicy/admission.go
+++ b/plugin/pkg/admission/imagepolicy/admission.go
@@ -36,8 +36,8 @@ import (
"k8s.io/apiserver/pkg/admission"
"k8s.io/apiserver/pkg/util/webhook"
"k8s.io/client-go/rest"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ api "k8s.io/kubernetes/pkg/apis/core"
// install the clientgo image policy API for use with api registry
_ "k8s.io/kubernetes/pkg/apis/imagepolicy/install"
diff --git a/plugin/pkg/admission/imagepolicy/admission_test.go b/plugin/pkg/admission/imagepolicy/admission_test.go
index 08f13e86cb..04cd782254 100644
--- a/plugin/pkg/admission/imagepolicy/admission_test.go
+++ b/plugin/pkg/admission/imagepolicy/admission_test.go
@@ -32,7 +32,7 @@ import (
"k8s.io/apiserver/pkg/admission"
"k8s.io/apiserver/pkg/authentication/user"
"k8s.io/client-go/tools/clientcmd/api/v1"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"fmt"
"io/ioutil"
diff --git a/plugin/pkg/admission/initialresources/BUILD b/plugin/pkg/admission/initialresources/BUILD
index e40439051e..a10961168a 100644
--- a/plugin/pkg/admission/initialresources/BUILD
+++ b/plugin/pkg/admission/initialresources/BUILD
@@ -17,7 +17,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/plugin/pkg/admission/initialresources",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/cloud.google.com/go/compute/metadata:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/github.com/hawkular/hawkular-client-go/metrics:go_default_library",
@@ -46,7 +46,7 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/admission/initialresources",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/github.com/stretchr/testify/require:go_default_library",
"//vendor/golang.org/x/oauth2:go_default_library",
"//vendor/golang.org/x/oauth2/google:go_default_library",
diff --git a/plugin/pkg/admission/initialresources/admission.go b/plugin/pkg/admission/initialresources/admission.go
index f1e69d0677..360885091a 100644
--- a/plugin/pkg/admission/initialresources/admission.go
+++ b/plugin/pkg/admission/initialresources/admission.go
@@ -28,7 +28,7 @@ import (
apierrors "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/api/resource"
"k8s.io/apiserver/pkg/admission"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
var (
@@ -64,6 +64,8 @@ type InitialResources struct {
nsOnly bool
}
+var _ admission.MutationInterface = &InitialResources{}
+
func newInitialResources(source dataSource, percentile int64, nsOnly bool) *InitialResources {
return &InitialResources{
Handler: admission.NewHandler(admission.Create),
diff --git a/plugin/pkg/admission/initialresources/admission_test.go b/plugin/pkg/admission/initialresources/admission_test.go
index 408fbaab47..a265fd93a0 100644
--- a/plugin/pkg/admission/initialresources/admission_test.go
+++ b/plugin/pkg/admission/initialresources/admission_test.go
@@ -24,7 +24,7 @@ import (
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apiserver/pkg/admission"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
type fakeSource struct {
diff --git a/plugin/pkg/admission/initialresources/data_source.go b/plugin/pkg/admission/initialresources/data_source.go
index 0d366c18c4..a25f5ee800 100644
--- a/plugin/pkg/admission/initialresources/data_source.go
+++ b/plugin/pkg/admission/initialresources/data_source.go
@@ -19,9 +19,8 @@ package initialresources
import (
"flag"
"fmt"
+ api "k8s.io/kubernetes/pkg/apis/core"
"time"
-
- "k8s.io/kubernetes/pkg/api"
)
var (
diff --git a/plugin/pkg/admission/initialresources/gcm.go b/plugin/pkg/admission/initialresources/gcm.go
index ce981e3e8c..fbe64b5dba 100644
--- a/plugin/pkg/admission/initialresources/gcm.go
+++ b/plugin/pkg/admission/initialresources/gcm.go
@@ -17,12 +17,11 @@ limitations under the License.
package initialresources
import (
+ api "k8s.io/kubernetes/pkg/apis/core"
"math"
"sort"
"time"
- "k8s.io/kubernetes/pkg/api"
-
gce "cloud.google.com/go/compute/metadata"
"golang.org/x/oauth2"
"golang.org/x/oauth2/google"
diff --git a/plugin/pkg/admission/initialresources/gcm_test.go b/plugin/pkg/admission/initialresources/gcm_test.go
index 426306cf2f..b03960bb35 100644
--- a/plugin/pkg/admission/initialresources/gcm_test.go
+++ b/plugin/pkg/admission/initialresources/gcm_test.go
@@ -23,7 +23,7 @@ import (
"golang.org/x/oauth2"
"golang.org/x/oauth2/google"
gcm "google.golang.org/api/cloudmonitoring/v2beta2"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func TestGCMReturnsErrorIfClientCannotConnect(t *testing.T) {
diff --git a/plugin/pkg/admission/initialresources/hawkular.go b/plugin/pkg/admission/initialresources/hawkular.go
index fea6da8824..1f5aaea424 100644
--- a/plugin/pkg/admission/initialresources/hawkular.go
+++ b/plugin/pkg/admission/initialresources/hawkular.go
@@ -30,7 +30,7 @@ import (
"github.com/golang/glog"
"github.com/hawkular/hawkular-client-go/metrics"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
diff --git a/plugin/pkg/admission/initialresources/hawkular_test.go b/plugin/pkg/admission/initialresources/hawkular_test.go
index 6bf86371ad..306728f0ba 100644
--- a/plugin/pkg/admission/initialresources/hawkular_test.go
+++ b/plugin/pkg/admission/initialresources/hawkular_test.go
@@ -18,6 +18,7 @@ package initialresources
import (
"fmt"
+ api "k8s.io/kubernetes/pkg/apis/core"
"net/http"
"net/http/httptest"
"net/url"
@@ -25,8 +26,6 @@ import (
"testing"
"time"
- "k8s.io/kubernetes/pkg/api"
-
assert "github.com/stretchr/testify/require"
)
diff --git a/plugin/pkg/admission/initialresources/influxdb.go b/plugin/pkg/admission/initialresources/influxdb.go
index ad526ba37f..2986367a73 100644
--- a/plugin/pkg/admission/initialresources/influxdb.go
+++ b/plugin/pkg/admission/initialresources/influxdb.go
@@ -22,7 +22,7 @@ import (
"time"
influxdb "github.com/influxdata/influxdb/client"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
const (
diff --git a/plugin/pkg/admission/initialresources/influxdb_test.go b/plugin/pkg/admission/initialresources/influxdb_test.go
index bada3acf8c..34106ee727 100644
--- a/plugin/pkg/admission/initialresources/influxdb_test.go
+++ b/plugin/pkg/admission/initialresources/influxdb_test.go
@@ -20,7 +20,7 @@ import (
"testing"
"time"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
func TestInfluxDBGetUsagePercentileCPU(t *testing.T) {
diff --git a/plugin/pkg/admission/limitranger/BUILD b/plugin/pkg/admission/limitranger/BUILD
index 774d2da699..f858867d3a 100644
--- a/plugin/pkg/admission/limitranger/BUILD
+++ b/plugin/pkg/admission/limitranger/BUILD
@@ -14,7 +14,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/plugin/pkg/admission/limitranger",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/informers/informers_generated/internalversion:go_default_library",
"//pkg/client/listers/core/internalversion:go_default_library",
@@ -36,7 +36,7 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/admission/limitranger",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/clientset_generated/internalclientset/fake:go_default_library",
"//pkg/client/informers/informers_generated/internalversion:go_default_library",
diff --git a/plugin/pkg/admission/limitranger/admission.go b/plugin/pkg/admission/limitranger/admission.go
index 676f459eb2..73336b7f56 100644
--- a/plugin/pkg/admission/limitranger/admission.go
+++ b/plugin/pkg/admission/limitranger/admission.go
@@ -32,7 +32,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
utilerrors "k8s.io/apimachinery/pkg/util/errors"
"k8s.io/apiserver/pkg/admission"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
informers "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion"
corelisters "k8s.io/kubernetes/pkg/client/listers/core/internalversion"
@@ -64,6 +64,10 @@ type LimitRanger struct {
liveTTL time.Duration
}
+var _ admission.MutationInterface = &LimitRanger{}
+var _ admission.ValidationInterface = &LimitRanger{}
+var _ kubeapiserveradmission.WantsInternalKubeInformerFactory = &LimitRanger{}
+
type liveLookupEntry struct {
expiry time.Time
items []*api.LimitRange
@@ -87,6 +91,15 @@ func (l *LimitRanger) ValidateInitialization() error {
// Admit admits resources into cluster that do not violate any defined LimitRange in the namespace
func (l *LimitRanger) Admit(a admission.Attributes) (err error) {
+ return l.runLimitFunc(a, l.actions.MutateLimit)
+}
+
+// Validate admits resources into cluster that do not violate any defined LimitRange in the namespace
+func (l *LimitRanger) Validate(a admission.Attributes) (err error) {
+ return l.runLimitFunc(a, l.actions.ValidateLimit)
+}
+
+func (l *LimitRanger) runLimitFunc(a admission.Attributes, limitFn func(limitRange *api.LimitRange, kind string, obj runtime.Object) error) (err error) {
if !l.actions.SupportsAttributes(a) {
return nil
}
@@ -100,9 +113,31 @@ func (l *LimitRanger) Admit(a admission.Attributes) (err error) {
}
}
+ items, err := l.GetLimitRanges(a)
+ if err != nil {
+ return err
+ }
+
+ // ensure it meets each prescribed min/max
+ for i := range items {
+ limitRange := items[i]
+
+ if !l.actions.SupportsLimit(limitRange) {
+ continue
+ }
+
+ err = limitFn(limitRange, a.GetResource().Resource, a.GetObject())
+ if err != nil {
+ return admission.NewForbidden(a, err)
+ }
+ }
+ return nil
+}
+
+func (l *LimitRanger) GetLimitRanges(a admission.Attributes) ([]*api.LimitRange, error) {
items, err := l.lister.LimitRanges(a.GetNamespace()).List(labels.Everything())
if err != nil {
- return admission.NewForbidden(a, fmt.Errorf("unable to %s %v at this time because there was an error enforcing limit ranges", a.GetOperation(), a.GetResource()))
+ return nil, admission.NewForbidden(a, fmt.Errorf("unable to %s %v at this time because there was an error enforcing limit ranges", a.GetOperation(), a.GetResource()))
}
// if there are no items held in our indexer, check our live-lookup LRU, if that misses, do the live lookup to prime it.
@@ -116,7 +151,7 @@ func (l *LimitRanger) Admit(a admission.Attributes) (err error) {
// throttling - see #22422 for details.
liveList, err := l.client.Core().LimitRanges(a.GetNamespace()).List(metav1.ListOptions{})
if err != nil {
- return admission.NewForbidden(a, err)
+ return nil, admission.NewForbidden(a, err)
}
newEntry := liveLookupEntry{expiry: time.Now().Add(l.liveTTL)}
for i := range liveList.Items {
@@ -133,20 +168,7 @@ func (l *LimitRanger) Admit(a admission.Attributes) (err error) {
}
- // ensure it meets each prescribed min/max
- for i := range items {
- limitRange := items[i]
-
- if !l.actions.SupportsLimit(limitRange) {
- continue
- }
-
- err = l.actions.Limit(limitRange, a.GetResource().Resource, a.GetObject())
- if err != nil {
- return admission.NewForbidden(a, err)
- }
- }
- return nil
+ return items, nil
}
// NewLimitRanger returns an object that enforces limits based on the supplied limit function
@@ -399,12 +421,23 @@ var _ LimitRangerActions = &DefaultLimitRangerActions{}
// Limit enforces resource requirements of incoming resources against enumerated constraints
// on the LimitRange. It may modify the incoming object to apply default resource requirements
// if not specified, and enumerated on the LimitRange
-func (d *DefaultLimitRangerActions) Limit(limitRange *api.LimitRange, resourceName string, obj runtime.Object) error {
+func (d *DefaultLimitRangerActions) MutateLimit(limitRange *api.LimitRange, resourceName string, obj runtime.Object) error {
switch resourceName {
case "pods":
- return PodLimitFunc(limitRange, obj.(*api.Pod))
+ return PodMutateLimitFunc(limitRange, obj.(*api.Pod))
+ }
+ return nil
+}
+
+// Limit enforces resource requirements of incoming resources against enumerated constraints
+// on the LimitRange. It may modify the incoming object to apply default resource requirements
+// if not specified, and enumerated on the LimitRange
+func (d *DefaultLimitRangerActions) ValidateLimit(limitRange *api.LimitRange, resourceName string, obj runtime.Object) error {
+ switch resourceName {
+ case "pods":
+ return PodValidateLimitFunc(limitRange, obj.(*api.Pod))
case "persistentvolumeclaims":
- return PersistentVolumeClaimLimitFunc(limitRange, obj.(*api.PersistentVolumeClaim))
+ return PersistentVolumeClaimValidateLimitFunc(limitRange, obj.(*api.PersistentVolumeClaim))
}
return nil
}
@@ -424,11 +457,11 @@ func (d *DefaultLimitRangerActions) SupportsLimit(limitRange *api.LimitRange) bo
return true
}
-// PersistentVolumeClaimLimitFunc enforces storage limits for PVCs.
+// PersistentVolumeClaimValidateLimitFunc enforces storage limits for PVCs.
// Users request storage via pvc.Spec.Resources.Requests. Min/Max is enforced by an admin with LimitRange.
// Claims will not be modified with default values because storage is a required part of pvc.Spec.
// All storage enforced values *only* apply to pvc.Spec.Resources.Requests.
-func PersistentVolumeClaimLimitFunc(limitRange *api.LimitRange, pvc *api.PersistentVolumeClaim) error {
+func PersistentVolumeClaimValidateLimitFunc(limitRange *api.LimitRange, pvc *api.PersistentVolumeClaim) error {
var errs []error
for i := range limitRange.Spec.Limits {
limit := limitRange.Spec.Limits[i]
@@ -452,14 +485,19 @@ func PersistentVolumeClaimLimitFunc(limitRange *api.LimitRange, pvc *api.Persist
return utilerrors.NewAggregate(errs)
}
-// PodLimitFunc enforces resource requirements enumerated by the pod against
+// PodMutateLimitFunc sets resource requirements enumerated by the pod against
// the specified LimitRange. The pod may be modified to apply default resource
// requirements if not specified, and enumerated on the LimitRange
-func PodLimitFunc(limitRange *api.LimitRange, pod *api.Pod) error {
- var errs []error
-
+func PodMutateLimitFunc(limitRange *api.LimitRange, pod *api.Pod) error {
defaultResources := defaultContainerResourceRequirements(limitRange)
mergePodResourceRequirements(pod, &defaultResources)
+ return nil
+}
+
+// PodValidateLimitFunc enforces resource requirements enumerated by the pod against
+// the specified LimitRange.
+func PodValidateLimitFunc(limitRange *api.LimitRange, pod *api.Pod) error {
+ var errs []error
for i := range limitRange.Spec.Limits {
limit := limitRange.Spec.Limits[i]
diff --git a/plugin/pkg/admission/limitranger/admission_test.go b/plugin/pkg/admission/limitranger/admission_test.go
index 4ed29df8df..2e864ba36d 100644
--- a/plugin/pkg/admission/limitranger/admission_test.go
+++ b/plugin/pkg/admission/limitranger/admission_test.go
@@ -29,7 +29,7 @@ import (
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apiserver/pkg/admission"
core "k8s.io/client-go/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
informers "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion"
@@ -430,7 +430,11 @@ func TestPodLimitFunc(t *testing.T) {
}
for i := range successCases {
test := successCases[i]
- err := PodLimitFunc(&test.limitRange, &test.pod)
+ err := PodMutateLimitFunc(&test.limitRange, &test.pod)
+ if err != nil {
+ t.Errorf("Unexpected error for pod: %s, %v", test.pod.Name, err)
+ }
+ err = PodValidateLimitFunc(&test.limitRange, &test.pod)
if err != nil {
t.Errorf("Unexpected error for pod: %s, %v", test.pod.Name, err)
}
@@ -610,7 +614,11 @@ func TestPodLimitFunc(t *testing.T) {
}
for i := range errorCases {
test := errorCases[i]
- err := PodLimitFunc(&test.limitRange, &test.pod)
+ err := PodMutateLimitFunc(&test.limitRange, &test.pod)
+ if err != nil {
+ t.Errorf("Unexpected error for pod: %s, %v", test.pod.Name, err)
+ }
+ err = PodValidateLimitFunc(&test.limitRange, &test.pod)
if err == nil {
t.Errorf("Expected error for pod: %s", test.pod.Name)
}
@@ -628,7 +636,7 @@ func getLocalStorageResourceList(ephemeralStorage string) api.ResourceList {
func TestPodLimitFuncApplyDefault(t *testing.T) {
limitRange := validLimitRange()
testPod := validPodInit(validPod("foo", 1, getResourceRequirements(api.ResourceList{}, api.ResourceList{})), getResourceRequirements(api.ResourceList{}, api.ResourceList{}))
- err := PodLimitFunc(&limitRange, &testPod)
+ err := PodMutateLimitFunc(&limitRange, &testPod)
if err != nil {
t.Errorf("Unexpected error for valid pod: %s, %v", testPod.Name, err)
}
@@ -687,11 +695,15 @@ func TestLimitRangerIgnoresSubresource(t *testing.T) {
testPod := validPod("testPod", 1, api.ResourceRequirements{})
err = handler.Admit(admission.NewAttributesRecord(&testPod, nil, api.Kind("Pod").WithVersion("version"), limitRange.Namespace, "testPod", api.Resource("pods").WithVersion("version"), "", admission.Update, nil))
+ if err != nil {
+ t.Fatal(err)
+ }
+ err = handler.Validate(admission.NewAttributesRecord(&testPod, nil, api.Kind("Pod").WithVersion("version"), limitRange.Namespace, "testPod", api.Resource("pods").WithVersion("version"), "", admission.Update, nil))
if err == nil {
t.Errorf("Expected an error since the pod did not specify resource limits in its update call")
}
- err = handler.Admit(admission.NewAttributesRecord(&testPod, nil, api.Kind("Pod").WithVersion("version"), limitRange.Namespace, "testPod", api.Resource("pods").WithVersion("version"), "status", admission.Update, nil))
+ err = handler.Validate(admission.NewAttributesRecord(&testPod, nil, api.Kind("Pod").WithVersion("version"), limitRange.Namespace, "testPod", api.Resource("pods").WithVersion("version"), "status", admission.Update, nil))
if err != nil {
t.Errorf("Should have ignored calls to any subresource of pod %v", err)
}
@@ -709,11 +721,15 @@ func TestLimitRangerAdmitPod(t *testing.T) {
testPod := validPod("testPod", 1, api.ResourceRequirements{})
err = handler.Admit(admission.NewAttributesRecord(&testPod, nil, api.Kind("Pod").WithVersion("version"), limitRange.Namespace, "testPod", api.Resource("pods").WithVersion("version"), "", admission.Update, nil))
+ if err != nil {
+ t.Fatal(err)
+ }
+ err = handler.Validate(admission.NewAttributesRecord(&testPod, nil, api.Kind("Pod").WithVersion("version"), limitRange.Namespace, "testPod", api.Resource("pods").WithVersion("version"), "", admission.Update, nil))
if err == nil {
t.Errorf("Expected an error since the pod did not specify resource limits in its update call")
}
- err = handler.Admit(admission.NewAttributesRecord(&testPod, nil, api.Kind("Pod").WithVersion("version"), limitRange.Namespace, "testPod", api.Resource("pods").WithVersion("version"), "status", admission.Update, nil))
+ err = handler.Validate(admission.NewAttributesRecord(&testPod, nil, api.Kind("Pod").WithVersion("version"), limitRange.Namespace, "testPod", api.Resource("pods").WithVersion("version"), "status", admission.Update, nil))
if err != nil {
t.Errorf("Should have ignored calls to any subresource of pod %v", err)
}
@@ -786,7 +802,7 @@ func TestPersistentVolumeClaimLimitFunc(t *testing.T) {
}
for i := range successCases {
test := successCases[i]
- err := PersistentVolumeClaimLimitFunc(&test.limitRange, &test.pvc)
+ err := PersistentVolumeClaimValidateLimitFunc(&test.limitRange, &test.pvc)
if err != nil {
t.Errorf("Unexpected error for pvc: %s, %v", test.pvc.Name, err)
}
@@ -804,7 +820,7 @@ func TestPersistentVolumeClaimLimitFunc(t *testing.T) {
}
for i := range errorCases {
test := errorCases[i]
- err := PersistentVolumeClaimLimitFunc(&test.limitRange, &test.pvc)
+ err := PersistentVolumeClaimValidateLimitFunc(&test.limitRange, &test.pvc)
if err == nil {
t.Errorf("Expected error for pvc: %s", test.pvc.Name)
}
diff --git a/plugin/pkg/admission/limitranger/interfaces.go b/plugin/pkg/admission/limitranger/interfaces.go
index f42b3269b9..4c520c6848 100644
--- a/plugin/pkg/admission/limitranger/interfaces.go
+++ b/plugin/pkg/admission/limitranger/interfaces.go
@@ -19,12 +19,14 @@ package limitranger
import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apiserver/pkg/admission"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
type LimitRangerActions interface {
- // Limit is a pluggable function to enforce limits on the object.
- Limit(limitRange *api.LimitRange, kind string, obj runtime.Object) error
+ // MutateLimit is a pluggable function to set limits on the object.
+ MutateLimit(limitRange *api.LimitRange, kind string, obj runtime.Object) error
+ // ValidateLimits is a pluggable function to enforce limits on the object.
+ ValidateLimit(limitRange *api.LimitRange, kind string, obj runtime.Object) error
// SupportsAttributes is a pluggable function to allow overridding what resources the limitranger
// supports.
SupportsAttributes(attr admission.Attributes) bool
diff --git a/plugin/pkg/admission/namespace/autoprovision/BUILD b/plugin/pkg/admission/namespace/autoprovision/BUILD
index c735795a88..649aa56785 100644
--- a/plugin/pkg/admission/namespace/autoprovision/BUILD
+++ b/plugin/pkg/admission/namespace/autoprovision/BUILD
@@ -11,7 +11,7 @@ go_library(
srcs = ["admission.go"],
importpath = "k8s.io/kubernetes/plugin/pkg/admission/namespace/autoprovision",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/informers/informers_generated/internalversion:go_default_library",
"//pkg/client/listers/core/internalversion:go_default_library",
@@ -28,7 +28,7 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/admission/namespace/autoprovision",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/clientset_generated/internalclientset/fake:go_default_library",
"//pkg/client/informers/informers_generated/internalversion:go_default_library",
diff --git a/plugin/pkg/admission/namespace/autoprovision/admission.go b/plugin/pkg/admission/namespace/autoprovision/admission.go
index a963c06c43..51e113af00 100644
--- a/plugin/pkg/admission/namespace/autoprovision/admission.go
+++ b/plugin/pkg/admission/namespace/autoprovision/admission.go
@@ -23,7 +23,7 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apiserver/pkg/admission"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
informers "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion"
corelisters "k8s.io/kubernetes/pkg/client/listers/core/internalversion"
@@ -46,6 +46,7 @@ type Provision struct {
namespaceLister corelisters.NamespaceLister
}
+var _ admission.MutationInterface = &Provision{}
var _ = kubeapiserveradmission.WantsInternalKubeInformerFactory(&Provision{})
var _ = kubeapiserveradmission.WantsInternalKubeClientSet(&Provision{})
diff --git a/plugin/pkg/admission/namespace/autoprovision/admission_test.go b/plugin/pkg/admission/namespace/autoprovision/admission_test.go
index bbe8524dae..755906d560 100644
--- a/plugin/pkg/admission/namespace/autoprovision/admission_test.go
+++ b/plugin/pkg/admission/namespace/autoprovision/admission_test.go
@@ -27,7 +27,7 @@ import (
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apiserver/pkg/admission"
core "k8s.io/client-go/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
informers "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion"
diff --git a/plugin/pkg/admission/namespace/exists/BUILD b/plugin/pkg/admission/namespace/exists/BUILD
index c5ee77024b..8da3f51b78 100644
--- a/plugin/pkg/admission/namespace/exists/BUILD
+++ b/plugin/pkg/admission/namespace/exists/BUILD
@@ -11,7 +11,7 @@ go_library(
srcs = ["admission.go"],
importpath = "k8s.io/kubernetes/plugin/pkg/admission/namespace/exists",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/informers/informers_generated/internalversion:go_default_library",
"//pkg/client/listers/core/internalversion:go_default_library",
@@ -28,7 +28,7 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/admission/namespace/exists",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/clientset_generated/internalclientset/fake:go_default_library",
"//pkg/client/informers/informers_generated/internalversion:go_default_library",
diff --git a/plugin/pkg/admission/namespace/exists/admission.go b/plugin/pkg/admission/namespace/exists/admission.go
index 7138a0f13f..5130748224 100644
--- a/plugin/pkg/admission/namespace/exists/admission.go
+++ b/plugin/pkg/admission/namespace/exists/admission.go
@@ -23,7 +23,7 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apiserver/pkg/admission"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
informers "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion"
corelisters "k8s.io/kubernetes/pkg/client/listers/core/internalversion"
diff --git a/plugin/pkg/admission/namespace/exists/admission_test.go b/plugin/pkg/admission/namespace/exists/admission_test.go
index 9119cf878a..d040b7e213 100644
--- a/plugin/pkg/admission/namespace/exists/admission_test.go
+++ b/plugin/pkg/admission/namespace/exists/admission_test.go
@@ -26,7 +26,7 @@ import (
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apiserver/pkg/admission"
core "k8s.io/client-go/testing"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
informers "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion"
diff --git a/plugin/pkg/admission/noderestriction/BUILD b/plugin/pkg/admission/noderestriction/BUILD
index d35a2507ff..f909885429 100644
--- a/plugin/pkg/admission/noderestriction/BUILD
+++ b/plugin/pkg/admission/noderestriction/BUILD
@@ -11,8 +11,8 @@ go_library(
srcs = ["admission.go"],
importpath = "k8s.io/kubernetes/plugin/pkg/admission/noderestriction",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/pod:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/policy:go_default_library",
"//pkg/auth/nodeidentifier:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
@@ -31,7 +31,7 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/admission/noderestriction",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/policy:go_default_library",
"//pkg/auth/nodeidentifier:go_default_library",
"//pkg/client/clientset_generated/internalclientset/fake:go_default_library",
diff --git a/plugin/pkg/admission/noderestriction/admission.go b/plugin/pkg/admission/noderestriction/admission.go
index 86c90a5883..71feec8c3d 100644
--- a/plugin/pkg/admission/noderestriction/admission.go
+++ b/plugin/pkg/admission/noderestriction/admission.go
@@ -24,8 +24,8 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apiserver/pkg/admission"
- "k8s.io/kubernetes/pkg/api"
podutil "k8s.io/kubernetes/pkg/api/pod"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/policy"
"k8s.io/kubernetes/pkg/auth/nodeidentifier"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
diff --git a/plugin/pkg/admission/noderestriction/admission_test.go b/plugin/pkg/admission/noderestriction/admission_test.go
index 7c109b2d3f..e7737d43ea 100644
--- a/plugin/pkg/admission/noderestriction/admission_test.go
+++ b/plugin/pkg/admission/noderestriction/admission_test.go
@@ -23,7 +23,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apiserver/pkg/admission"
"k8s.io/apiserver/pkg/authentication/user"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/policy"
policyapi "k8s.io/kubernetes/pkg/apis/policy"
"k8s.io/kubernetes/pkg/auth/nodeidentifier"
diff --git a/plugin/pkg/admission/persistentvolume/label/BUILD b/plugin/pkg/admission/persistentvolume/label/BUILD
index 36299294a0..0c04cbc99d 100644
--- a/plugin/pkg/admission/persistentvolume/label/BUILD
+++ b/plugin/pkg/admission/persistentvolume/label/BUILD
@@ -14,7 +14,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/plugin/pkg/admission/persistentvolume/label",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/cloudprovider:go_default_library",
"//pkg/cloudprovider/providers/aws:go_default_library",
"//pkg/cloudprovider/providers/gce:go_default_library",
@@ -32,7 +32,7 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/admission/persistentvolume/label",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/cloudprovider/providers/aws:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
diff --git a/plugin/pkg/admission/persistentvolume/label/admission.go b/plugin/pkg/admission/persistentvolume/label/admission.go
index 92dd76f992..86e1921fcd 100644
--- a/plugin/pkg/admission/persistentvolume/label/admission.go
+++ b/plugin/pkg/admission/persistentvolume/label/admission.go
@@ -24,7 +24,7 @@ import (
"github.com/golang/glog"
"k8s.io/apiserver/pkg/admission"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/cloudprovider"
"k8s.io/kubernetes/pkg/cloudprovider/providers/aws"
"k8s.io/kubernetes/pkg/cloudprovider/providers/gce"
@@ -52,6 +52,7 @@ type persistentVolumeLabel struct {
gceCloudProvider *gce.GCECloud
}
+var _ admission.MutationInterface = &persistentVolumeLabel{}
var _ kubeapiserveradmission.WantsCloudConfig = &persistentVolumeLabel{}
// NewPersistentVolumeLabel returns an admission.Interface implementation which adds labels to PersistentVolume CREATE requests,
diff --git a/plugin/pkg/admission/persistentvolume/label/admission_test.go b/plugin/pkg/admission/persistentvolume/label/admission_test.go
index 2094edd00f..d13dcc3038 100644
--- a/plugin/pkg/admission/persistentvolume/label/admission_test.go
+++ b/plugin/pkg/admission/persistentvolume/label/admission_test.go
@@ -24,7 +24,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apiserver/pkg/admission"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/cloudprovider/providers/aws"
)
diff --git a/plugin/pkg/admission/persistentvolume/resize/BUILD b/plugin/pkg/admission/persistentvolume/resize/BUILD
index 078121a3fb..90a12f1331 100644
--- a/plugin/pkg/admission/persistentvolume/resize/BUILD
+++ b/plugin/pkg/admission/persistentvolume/resize/BUILD
@@ -12,7 +12,7 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/admission/persistentvolume/resize",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/storage:go_default_library",
"//pkg/client/informers/informers_generated/internalversion:go_default_library",
"//pkg/controller:go_default_library",
@@ -29,8 +29,8 @@ go_library(
srcs = ["admission.go"],
importpath = "k8s.io/kubernetes/plugin/pkg/admission/persistentvolume/resize",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/helper:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
"//pkg/client/informers/informers_generated/internalversion:go_default_library",
"//pkg/client/listers/core/internalversion:go_default_library",
"//pkg/client/listers/storage/internalversion:go_default_library",
diff --git a/plugin/pkg/admission/persistentvolume/resize/admission.go b/plugin/pkg/admission/persistentvolume/resize/admission.go
index 9768735326..97f33fbe99 100644
--- a/plugin/pkg/admission/persistentvolume/resize/admission.go
+++ b/plugin/pkg/admission/persistentvolume/resize/admission.go
@@ -21,8 +21,8 @@ import (
"io"
"k8s.io/apiserver/pkg/admission"
- "k8s.io/kubernetes/pkg/api"
- apihelper "k8s.io/kubernetes/pkg/api/helper"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ apihelper "k8s.io/kubernetes/pkg/apis/core/helper"
informers "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion"
pvlister "k8s.io/kubernetes/pkg/client/listers/core/internalversion"
storagelisters "k8s.io/kubernetes/pkg/client/listers/storage/internalversion"
diff --git a/plugin/pkg/admission/persistentvolume/resize/admission_test.go b/plugin/pkg/admission/persistentvolume/resize/admission_test.go
index 25c4227cb1..ab5e7817ba 100644
--- a/plugin/pkg/admission/persistentvolume/resize/admission_test.go
+++ b/plugin/pkg/admission/persistentvolume/resize/admission_test.go
@@ -26,7 +26,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apiserver/pkg/admission"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/storage"
informers "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion"
"k8s.io/kubernetes/pkg/controller"
diff --git a/plugin/pkg/admission/podnodeselector/BUILD b/plugin/pkg/admission/podnodeselector/BUILD
index efd6017126..f0c03fb8c7 100644
--- a/plugin/pkg/admission/podnodeselector/BUILD
+++ b/plugin/pkg/admission/podnodeselector/BUILD
@@ -11,7 +11,7 @@ go_library(
srcs = ["admission.go"],
importpath = "k8s.io/kubernetes/plugin/pkg/admission/podnodeselector",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/informers/informers_generated/internalversion:go_default_library",
"//pkg/client/listers/core/internalversion:go_default_library",
@@ -32,7 +32,7 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/admission/podnodeselector",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/clientset_generated/internalclientset/fake:go_default_library",
"//pkg/client/informers/informers_generated/internalversion:go_default_library",
diff --git a/plugin/pkg/admission/podnodeselector/admission.go b/plugin/pkg/admission/podnodeselector/admission.go
index a8b6dd947e..84bb1d6ef1 100644
--- a/plugin/pkg/admission/podnodeselector/admission.go
+++ b/plugin/pkg/admission/podnodeselector/admission.go
@@ -28,7 +28,7 @@ import (
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/util/yaml"
"k8s.io/apiserver/pkg/admission"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
informers "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion"
corelisters "k8s.io/kubernetes/pkg/client/listers/core/internalversion"
diff --git a/plugin/pkg/admission/podnodeselector/admission_test.go b/plugin/pkg/admission/podnodeselector/admission_test.go
index c55c0fe778..cc2c730e03 100644
--- a/plugin/pkg/admission/podnodeselector/admission_test.go
+++ b/plugin/pkg/admission/podnodeselector/admission_test.go
@@ -23,7 +23,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apiserver/pkg/admission"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
informers "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion"
diff --git a/plugin/pkg/admission/podpreset/BUILD b/plugin/pkg/admission/podpreset/BUILD
index 1325e38781..ca7376afd7 100644
--- a/plugin/pkg/admission/podpreset/BUILD
+++ b/plugin/pkg/admission/podpreset/BUILD
@@ -12,7 +12,7 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/admission/podpreset",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/settings:go_default_library",
"//pkg/client/clientset_generated/internalclientset/fake:go_default_library",
"//pkg/client/informers/informers_generated/internalversion:go_default_library",
@@ -30,9 +30,9 @@ go_library(
srcs = ["admission.go"],
importpath = "k8s.io/kubernetes/plugin/pkg/admission/podpreset",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/ref:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/settings:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/informers/informers_generated/internalversion:go_default_library",
diff --git a/plugin/pkg/admission/podpreset/admission.go b/plugin/pkg/admission/podpreset/admission.go
index 60554fb7c1..30752a2666 100644
--- a/plugin/pkg/admission/podpreset/admission.go
+++ b/plugin/pkg/admission/podpreset/admission.go
@@ -29,9 +29,9 @@ import (
"k8s.io/apimachinery/pkg/labels"
utilerrors "k8s.io/apimachinery/pkg/util/errors"
"k8s.io/apiserver/pkg/admission"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/ref"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/settings"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
informers "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion"
@@ -59,6 +59,7 @@ type podPresetPlugin struct {
lister settingslisters.PodPresetLister
}
+var _ admission.MutationInterface = &podPresetPlugin{}
var _ = kubeapiserveradmission.WantsInternalKubeInformerFactory(&podPresetPlugin{})
var _ = kubeapiserveradmission.WantsInternalKubeClientSet(&podPresetPlugin{})
diff --git a/plugin/pkg/admission/podpreset/admission_test.go b/plugin/pkg/admission/podpreset/admission_test.go
index f7940986fd..af301ac51d 100644
--- a/plugin/pkg/admission/podpreset/admission_test.go
+++ b/plugin/pkg/admission/podpreset/admission_test.go
@@ -25,7 +25,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
kadmission "k8s.io/apiserver/pkg/admission"
"k8s.io/apiserver/pkg/authentication/user"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/settings"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
informers "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion"
diff --git a/plugin/pkg/admission/podtolerationrestriction/BUILD b/plugin/pkg/admission/podtolerationrestriction/BUILD
index 6d16eb4dfe..d3af4b936c 100644
--- a/plugin/pkg/admission/podtolerationrestriction/BUILD
+++ b/plugin/pkg/admission/podtolerationrestriction/BUILD
@@ -12,7 +12,7 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/admission/podtolerationrestriction",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/clientset_generated/internalclientset/fake:go_default_library",
"//pkg/client/informers/informers_generated/internalversion:go_default_library",
@@ -35,9 +35,9 @@ go_library(
],
importpath = "k8s.io/kubernetes/plugin/pkg/admission/podtolerationrestriction",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/helper/qos:go_default_library",
- "//pkg/api/v1:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/helper/qos:go_default_library",
+ "//pkg/apis/core/v1:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/informers/informers_generated/internalversion:go_default_library",
"//pkg/client/listers/core/internalversion:go_default_library",
diff --git a/plugin/pkg/admission/podtolerationrestriction/admission.go b/plugin/pkg/admission/podtolerationrestriction/admission.go
index 1e6bcdc457..14ff93f221 100644
--- a/plugin/pkg/admission/podtolerationrestriction/admission.go
+++ b/plugin/pkg/admission/podtolerationrestriction/admission.go
@@ -27,9 +27,9 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apiserver/pkg/admission"
- "k8s.io/kubernetes/pkg/api"
- qoshelper "k8s.io/kubernetes/pkg/api/helper/qos"
- k8s_api_v1 "k8s.io/kubernetes/pkg/api/v1"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ qoshelper "k8s.io/kubernetes/pkg/apis/core/helper/qos"
+ k8s_api_v1 "k8s.io/kubernetes/pkg/apis/core/v1"
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
informers "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion"
corelisters "k8s.io/kubernetes/pkg/client/listers/core/internalversion"
@@ -57,6 +57,8 @@ const (
NSWLTolerations string = "scheduler.alpha.kubernetes.io/tolerationsWhitelist"
)
+var _ admission.MutationInterface = &podTolerationsPlugin{}
+var _ admission.ValidationInterface = &podTolerationsPlugin{}
var _ = kubeapiserveradmission.WantsInternalKubeInformerFactory(&podTolerationsPlugin{})
type podTolerationsPlugin struct {
@@ -282,7 +284,7 @@ func extractNSTolerations(ns *api.Namespace, key string) ([]api.Toleration, erro
ts := make([]api.Toleration, len(v1Tolerations))
for i := range v1Tolerations {
- if err := k8s_api_v1.Convert_v1_Toleration_To_api_Toleration(&v1Tolerations[i], &ts[i], nil); err != nil {
+ if err := k8s_api_v1.Convert_v1_Toleration_To_core_Toleration(&v1Tolerations[i], &ts[i], nil); err != nil {
return nil, err
}
}
diff --git a/plugin/pkg/admission/podtolerationrestriction/admission_test.go b/plugin/pkg/admission/podtolerationrestriction/admission_test.go
index 5cc9e3a183..4a669c62ce 100644
--- a/plugin/pkg/admission/podtolerationrestriction/admission_test.go
+++ b/plugin/pkg/admission/podtolerationrestriction/admission_test.go
@@ -25,7 +25,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apiserver/pkg/admission"
utilfeature "k8s.io/apiserver/pkg/util/feature"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
informers "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion"
diff --git a/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/BUILD b/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/BUILD
index 526c88cbad..ef58e5e1fb 100644
--- a/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/BUILD
+++ b/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/BUILD
@@ -15,9 +15,8 @@ go_library(
],
importpath = "k8s.io/kubernetes/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/doc.go b/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/doc.go
index 093d630a72..1ea05752d4 100644
--- a/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/doc.go
+++ b/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/doc.go
@@ -14,6 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
package podtolerationrestriction // import "k8s.io/kubernetes/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction"
diff --git a/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/types.go b/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/types.go
index 28ae2eae67..d38c6e0613 100644
--- a/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/types.go
+++ b/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/types.go
@@ -18,7 +18,7 @@ package podtolerationrestriction
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
diff --git a/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/v1alpha1/BUILD b/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/v1alpha1/BUILD
index 5b81f25db5..9a48ebb8c0 100644
--- a/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/v1alpha1/BUILD
+++ b/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/v1alpha1/BUILD
@@ -18,7 +18,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/v1alpha1",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
diff --git a/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/v1alpha1/doc.go b/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/v1alpha1/doc.go
index 3640b251c3..c21764baee 100644
--- a/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/v1alpha1/doc.go
+++ b/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/v1alpha1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:conversion-gen=k8s.io/kubernetes/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction
// +k8s:defaulter-gen=TypeMeta
diff --git a/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/v1alpha1/zz_generated.conversion.go b/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/v1alpha1/zz_generated.conversion.go
index 8a44886b82..d72f98f2fa 100644
--- a/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/v1alpha1/zz_generated.conversion.go
+++ b/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/v1alpha1/zz_generated.conversion.go
@@ -24,7 +24,7 @@ import (
v1 "k8s.io/api/core/v1"
conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- api "k8s.io/kubernetes/pkg/api"
+ core "k8s.io/kubernetes/pkg/apis/core"
podtolerationrestriction "k8s.io/kubernetes/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction"
unsafe "unsafe"
)
@@ -43,8 +43,8 @@ func RegisterConversions(scheme *runtime.Scheme) error {
}
func autoConvert_v1alpha1_Configuration_To_podtolerationrestriction_Configuration(in *Configuration, out *podtolerationrestriction.Configuration, s conversion.Scope) error {
- out.Default = *(*[]api.Toleration)(unsafe.Pointer(&in.Default))
- out.Whitelist = *(*[]api.Toleration)(unsafe.Pointer(&in.Whitelist))
+ out.Default = *(*[]core.Toleration)(unsafe.Pointer(&in.Default))
+ out.Whitelist = *(*[]core.Toleration)(unsafe.Pointer(&in.Whitelist))
return nil
}
diff --git a/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/v1alpha1/zz_generated.deepcopy.go b/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/v1alpha1/zz_generated.deepcopy.go
index 3f9e04a1d0..98ab990727 100644
--- a/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/v1alpha1/zz_generated.deepcopy.go
+++ b/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/v1alpha1/zz_generated.deepcopy.go
@@ -22,28 +22,9 @@ package v1alpha1
import (
v1 "k8s.io/api/core/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Configuration).DeepCopyInto(out.(*Configuration))
- return nil
- }, InType: reflect.TypeOf(&Configuration{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Configuration) DeepCopyInto(out *Configuration) {
*out = *in
diff --git a/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/validation/BUILD b/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/validation/BUILD
index 7ef5f8b766..42a0a1328b 100644
--- a/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/validation/BUILD
+++ b/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/validation/BUILD
@@ -11,7 +11,7 @@ go_library(
srcs = ["validation.go"],
importpath = "k8s.io/kubernetes/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/validation",
deps = [
- "//pkg/api/validation:go_default_library",
+ "//pkg/apis/core/validation:go_default_library",
"//plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
],
@@ -36,7 +36,7 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/validation",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction:go_default_library",
],
)
diff --git a/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/validation/validation.go b/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/validation/validation.go
index 6312ed12e3..99a36ed3aa 100644
--- a/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/validation/validation.go
+++ b/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/validation/validation.go
@@ -20,7 +20,7 @@ import (
"fmt"
"k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/api/validation"
+ "k8s.io/kubernetes/pkg/apis/core/validation"
internalapi "k8s.io/kubernetes/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction"
)
diff --git a/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/validation/validation_test.go b/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/validation/validation_test.go
index da41e21dcf..d444921a51 100644
--- a/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/validation/validation_test.go
+++ b/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/validation/validation_test.go
@@ -17,10 +17,9 @@ limitations under the License.
package validation
import (
- "testing"
-
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
internalapi "k8s.io/kubernetes/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction"
+ "testing"
)
func TestValidateConfiguration(t *testing.T) {
diff --git a/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/zz_generated.deepcopy.go b/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/zz_generated.deepcopy.go
index 8760a045b0..afe5bccec2 100644
--- a/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/zz_generated.deepcopy.go
+++ b/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/zz_generated.deepcopy.go
@@ -21,43 +21,24 @@ limitations under the License.
package podtolerationrestriction
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- api "k8s.io/kubernetes/pkg/api"
- reflect "reflect"
+ core "k8s.io/kubernetes/pkg/apis/core"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Configuration).DeepCopyInto(out.(*Configuration))
- return nil
- }, InType: reflect.TypeOf(&Configuration{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Configuration) DeepCopyInto(out *Configuration) {
*out = *in
out.TypeMeta = in.TypeMeta
if in.Default != nil {
in, out := &in.Default, &out.Default
- *out = make([]api.Toleration, len(*in))
+ *out = make([]core.Toleration, len(*in))
for i := range *in {
(*in)[i].DeepCopyInto(&(*out)[i])
}
}
if in.Whitelist != nil {
in, out := &in.Whitelist, &out.Whitelist
- *out = make([]api.Toleration, len(*in))
+ *out = make([]core.Toleration, len(*in))
for i := range *in {
(*in)[i].DeepCopyInto(&(*out)[i])
}
diff --git a/plugin/pkg/admission/priority/BUILD b/plugin/pkg/admission/priority/BUILD
index 56360c9a75..db47cedb02 100644
--- a/plugin/pkg/admission/priority/BUILD
+++ b/plugin/pkg/admission/priority/BUILD
@@ -12,7 +12,7 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/admission/priority",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/scheduling:go_default_library",
"//pkg/client/informers/informers_generated/internalversion:go_default_library",
"//pkg/controller:go_default_library",
@@ -29,7 +29,7 @@ go_library(
srcs = ["admission.go"],
importpath = "k8s.io/kubernetes/plugin/pkg/admission/priority",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/scheduling:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/informers/informers_generated/internalversion:go_default_library",
diff --git a/plugin/pkg/admission/priority/admission.go b/plugin/pkg/admission/priority/admission.go
index d67fb51832..646ff17635 100644
--- a/plugin/pkg/admission/priority/admission.go
+++ b/plugin/pkg/admission/priority/admission.go
@@ -24,7 +24,7 @@ import (
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apiserver/pkg/admission"
utilfeature "k8s.io/apiserver/pkg/util/feature"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/scheduling"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
informers "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion"
@@ -105,6 +105,7 @@ var (
)
// Admit checks Pods and admits or rejects them. It also resolves the priority of pods based on their PriorityClass.
+// Note that pod validation mechanism prevents update of a pod priority.
func (p *PriorityPlugin) Admit(a admission.Attributes) error {
operation := a.GetOperation()
// Ignore all calls to subresources
@@ -114,7 +115,7 @@ func (p *PriorityPlugin) Admit(a admission.Attributes) error {
switch a.GetResource().GroupResource() {
case podResource:
- if operation == admission.Create || operation == admission.Update {
+ if operation == admission.Create {
return p.admitPod(a)
}
return nil
@@ -149,7 +150,6 @@ func (p *PriorityPlugin) Validate(a admission.Attributes) error {
}
// admitPod makes sure a new pod does not set spec.Priority field. It also makes sure that the PriorityClassName exists if it is provided and resolves the pod priority from the PriorityClassName.
-// Note that pod validation mechanism prevents update of a pod priority.
func (p *PriorityPlugin) admitPod(a admission.Attributes) error {
operation := a.GetOperation()
pod, ok := a.GetObject().(*api.Pod)
diff --git a/plugin/pkg/admission/priority/admission_test.go b/plugin/pkg/admission/priority/admission_test.go
index 7c9a7f8e4f..cf159efffd 100644
--- a/plugin/pkg/admission/priority/admission_test.go
+++ b/plugin/pkg/admission/priority/admission_test.go
@@ -25,7 +25,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apiserver/pkg/admission"
utilfeature "k8s.io/apiserver/pkg/util/feature"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/scheduling"
informers "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion"
"k8s.io/kubernetes/pkg/controller"
diff --git a/plugin/pkg/admission/resourcequota/BUILD b/plugin/pkg/admission/resourcequota/BUILD
index b54f99e2a4..d2518c15c8 100644
--- a/plugin/pkg/admission/resourcequota/BUILD
+++ b/plugin/pkg/admission/resourcequota/BUILD
@@ -17,7 +17,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/plugin/pkg/admission/resourcequota",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/informers/informers_generated/internalversion:go_default_library",
"//pkg/client/listers/core/internalversion:go_default_library",
@@ -55,7 +55,7 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/admission/resourcequota",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/client/clientset_generated/internalclientset/fake:go_default_library",
"//pkg/client/informers/informers_generated/internalversion:go_default_library",
"//pkg/controller:go_default_library",
diff --git a/plugin/pkg/admission/resourcequota/admission.go b/plugin/pkg/admission/resourcequota/admission.go
index 97de60454d..c6e89aad80 100644
--- a/plugin/pkg/admission/resourcequota/admission.go
+++ b/plugin/pkg/admission/resourcequota/admission.go
@@ -22,7 +22,7 @@ import (
"time"
"k8s.io/apiserver/pkg/admission"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
informers "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion"
kubeapiserveradmission "k8s.io/kubernetes/pkg/kubeapiserver/admission"
diff --git a/plugin/pkg/admission/resourcequota/admission_test.go b/plugin/pkg/admission/resourcequota/admission_test.go
index 71b7a74722..755d0f5d00 100644
--- a/plugin/pkg/admission/resourcequota/admission_test.go
+++ b/plugin/pkg/admission/resourcequota/admission_test.go
@@ -31,7 +31,7 @@ import (
utilfeature "k8s.io/apiserver/pkg/util/feature"
testcore "k8s.io/client-go/testing"
"k8s.io/client-go/tools/cache"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
informers "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion"
"k8s.io/kubernetes/pkg/controller"
diff --git a/plugin/pkg/admission/resourcequota/apis/resourcequota/BUILD b/plugin/pkg/admission/resourcequota/apis/resourcequota/BUILD
index 6da8520269..7c43ea4a12 100644
--- a/plugin/pkg/admission/resourcequota/apis/resourcequota/BUILD
+++ b/plugin/pkg/admission/resourcequota/apis/resourcequota/BUILD
@@ -16,7 +16,6 @@ go_library(
importpath = "k8s.io/kubernetes/plugin/pkg/admission/resourcequota/apis/resourcequota",
deps = [
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/plugin/pkg/admission/resourcequota/apis/resourcequota/doc.go b/plugin/pkg/admission/resourcequota/apis/resourcequota/doc.go
index fd56cc64a2..5a514f605d 100644
--- a/plugin/pkg/admission/resourcequota/apis/resourcequota/doc.go
+++ b/plugin/pkg/admission/resourcequota/apis/resourcequota/doc.go
@@ -14,6 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
package resourcequota // import "k8s.io/kubernetes/plugin/pkg/admission/resourcequota/apis/resourcequota"
diff --git a/plugin/pkg/admission/resourcequota/apis/resourcequota/v1alpha1/doc.go b/plugin/pkg/admission/resourcequota/apis/resourcequota/v1alpha1/doc.go
index 582d9a35f5..53508c2f2d 100644
--- a/plugin/pkg/admission/resourcequota/apis/resourcequota/v1alpha1/doc.go
+++ b/plugin/pkg/admission/resourcequota/apis/resourcequota/v1alpha1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:conversion-gen=k8s.io/kubernetes/plugin/pkg/admission/resourcequota/apis/resourcequota
// +k8s:defaulter-gen=TypeMeta
diff --git a/plugin/pkg/admission/resourcequota/apis/resourcequota/v1alpha1/zz_generated.deepcopy.go b/plugin/pkg/admission/resourcequota/apis/resourcequota/v1alpha1/zz_generated.deepcopy.go
index 7146088ff4..130bdd7021 100644
--- a/plugin/pkg/admission/resourcequota/apis/resourcequota/v1alpha1/zz_generated.deepcopy.go
+++ b/plugin/pkg/admission/resourcequota/apis/resourcequota/v1alpha1/zz_generated.deepcopy.go
@@ -21,32 +21,9 @@ limitations under the License.
package v1alpha1
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Configuration).DeepCopyInto(out.(*Configuration))
- return nil
- }, InType: reflect.TypeOf(&Configuration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*LimitedResource).DeepCopyInto(out.(*LimitedResource))
- return nil
- }, InType: reflect.TypeOf(&LimitedResource{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Configuration) DeepCopyInto(out *Configuration) {
*out = *in
diff --git a/plugin/pkg/admission/resourcequota/apis/resourcequota/zz_generated.deepcopy.go b/plugin/pkg/admission/resourcequota/apis/resourcequota/zz_generated.deepcopy.go
index 697a99623e..5dc53616ce 100644
--- a/plugin/pkg/admission/resourcequota/apis/resourcequota/zz_generated.deepcopy.go
+++ b/plugin/pkg/admission/resourcequota/apis/resourcequota/zz_generated.deepcopy.go
@@ -21,32 +21,9 @@ limitations under the License.
package resourcequota
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Configuration).DeepCopyInto(out.(*Configuration))
- return nil
- }, InType: reflect.TypeOf(&Configuration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*LimitedResource).DeepCopyInto(out.(*LimitedResource))
- return nil
- }, InType: reflect.TypeOf(&LimitedResource{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Configuration) DeepCopyInto(out *Configuration) {
*out = *in
diff --git a/plugin/pkg/admission/resourcequota/controller.go b/plugin/pkg/admission/resourcequota/controller.go
index ca0dd50e97..832943d647 100644
--- a/plugin/pkg/admission/resourcequota/controller.go
+++ b/plugin/pkg/admission/resourcequota/controller.go
@@ -32,7 +32,7 @@ import (
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apiserver/pkg/admission"
"k8s.io/client-go/util/workqueue"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/quota"
"k8s.io/kubernetes/pkg/quota/generic"
_ "k8s.io/kubernetes/pkg/util/reflector/prometheus" // for reflector metric registration
diff --git a/plugin/pkg/admission/resourcequota/resource_access.go b/plugin/pkg/admission/resourcequota/resource_access.go
index edbaff9040..9384770f51 100644
--- a/plugin/pkg/admission/resourcequota/resource_access.go
+++ b/plugin/pkg/admission/resourcequota/resource_access.go
@@ -25,7 +25,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apiserver/pkg/storage/etcd"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
corelisters "k8s.io/kubernetes/pkg/client/listers/core/internalversion"
)
diff --git a/plugin/pkg/admission/security/podsecuritypolicy/BUILD b/plugin/pkg/admission/security/podsecuritypolicy/BUILD
index ab709a080d..ceceed20e2 100644
--- a/plugin/pkg/admission/security/podsecuritypolicy/BUILD
+++ b/plugin/pkg/admission/security/podsecuritypolicy/BUILD
@@ -11,7 +11,7 @@ go_library(
srcs = ["admission.go"],
importpath = "k8s.io/kubernetes/plugin/pkg/admission/security/podsecuritypolicy",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/client/informers/informers_generated/internalversion:go_default_library",
"//pkg/client/listers/extensions/internalversion:go_default_library",
@@ -37,9 +37,9 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/admission/security/podsecuritypolicy",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/helper:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/client/informers/informers_generated/internalversion:go_default_library",
"//pkg/client/listers/extensions/internalversion:go_default_library",
diff --git a/plugin/pkg/admission/security/podsecuritypolicy/admission.go b/plugin/pkg/admission/security/podsecuritypolicy/admission.go
index b672838a65..fa6f62e36e 100644
--- a/plugin/pkg/admission/security/podsecuritypolicy/admission.go
+++ b/plugin/pkg/admission/security/podsecuritypolicy/admission.go
@@ -31,7 +31,7 @@ import (
genericadmissioninit "k8s.io/apiserver/pkg/admission/initializer"
"k8s.io/apiserver/pkg/authentication/user"
"k8s.io/apiserver/pkg/authorization/authorizer"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
informers "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion"
extensionslisters "k8s.io/kubernetes/pkg/client/listers/extensions/internalversion"
@@ -57,8 +57,8 @@ func Register(plugins *admission.Plugins) {
// PSPMatchFn allows plugging in how PSPs are matched against user information.
type PSPMatchFn func(lister extensionslisters.PodSecurityPolicyLister, user user.Info, sa user.Info, authz authorizer.Authorizer, namespace string) ([]*extensions.PodSecurityPolicy, error)
-// podSecurityPolicyPlugin holds state for and implements the admission plugin.
-type podSecurityPolicyPlugin struct {
+// PodSecurityPolicyPlugin holds state for and implements the admission plugin.
+type PodSecurityPolicyPlugin struct {
*admission.Handler
strategyFactory psp.StrategyFactory
pspMatcher PSPMatchFn
@@ -68,12 +68,12 @@ type podSecurityPolicyPlugin struct {
}
// SetAuthorizer sets the authorizer.
-func (plugin *podSecurityPolicyPlugin) SetAuthorizer(authz authorizer.Authorizer) {
+func (plugin *PodSecurityPolicyPlugin) SetAuthorizer(authz authorizer.Authorizer) {
plugin.authz = authz
}
// ValidateInitialization ensures an authorizer is set.
-func (plugin *podSecurityPolicyPlugin) ValidateInitialization() error {
+func (plugin *PodSecurityPolicyPlugin) ValidateInitialization() error {
if plugin.authz == nil {
return fmt.Errorf("%s requires an authorizer", PluginName)
}
@@ -83,13 +83,14 @@ func (plugin *podSecurityPolicyPlugin) ValidateInitialization() error {
return nil
}
-var _ admission.Interface = &podSecurityPolicyPlugin{}
-var _ genericadmissioninit.WantsAuthorizer = &podSecurityPolicyPlugin{}
-var _ kubeapiserveradmission.WantsInternalKubeInformerFactory = &podSecurityPolicyPlugin{}
+var _ admission.MutationInterface = &PodSecurityPolicyPlugin{}
+var _ admission.ValidationInterface = &PodSecurityPolicyPlugin{}
+var _ genericadmissioninit.WantsAuthorizer = &PodSecurityPolicyPlugin{}
+var _ kubeapiserveradmission.WantsInternalKubeInformerFactory = &PodSecurityPolicyPlugin{}
// NewPlugin creates a new PSP admission plugin.
-func NewPlugin(strategyFactory psp.StrategyFactory, pspMatcher PSPMatchFn, failOnNoPolicies bool) *podSecurityPolicyPlugin {
- return &podSecurityPolicyPlugin{
+func NewPlugin(strategyFactory psp.StrategyFactory, pspMatcher PSPMatchFn, failOnNoPolicies bool) *PodSecurityPolicyPlugin {
+ return &PodSecurityPolicyPlugin{
Handler: admission.NewHandler(admission.Create, admission.Update),
strategyFactory: strategyFactory,
pspMatcher: pspMatcher,
@@ -97,7 +98,7 @@ func NewPlugin(strategyFactory psp.StrategyFactory, pspMatcher PSPMatchFn, failO
}
}
-func (a *podSecurityPolicyPlugin) SetInternalKubeInformerFactory(f informers.SharedInformerFactory) {
+func (a *PodSecurityPolicyPlugin) SetInternalKubeInformerFactory(f informers.SharedInformerFactory) {
podSecurityPolicyInformer := f.Extensions().InternalVersion().PodSecurityPolicies()
a.lister = podSecurityPolicyInformer.Lister()
a.SetReadyFunc(podSecurityPolicyInformer.Informer().HasSynced)
@@ -111,30 +112,94 @@ func (a *podSecurityPolicyPlugin) SetInternalKubeInformerFactory(f informers.Sha
// 3. Try to generate and validate a PSP with providers. If we find one then admit the pod
// with the validated PSP. If we don't find any reject the pod and give all errors from the
// failed attempts.
-func (c *podSecurityPolicyPlugin) Admit(a admission.Attributes) error {
+func (c *PodSecurityPolicyPlugin) Admit(a admission.Attributes) error {
+ if ignore, err := shouldIgnore(a); err != nil {
+ return err
+ } else if ignore {
+ return nil
+ }
+
+ // only mutate if this is a CREATE request. On updates we only validate.
+ // TODO(liggitt): allow spec mutation during initializing updates?
+ if a.GetOperation() != admission.Create {
+ return nil
+ }
+
+ pod := a.GetObject().(*api.Pod)
+
+ // compute the context
+ allowedPod, pspName, validationErrs, err := c.computeSecurityContext(a, pod, true)
+ if err != nil {
+ return admission.NewForbidden(a, err)
+ }
+ if allowedPod != nil {
+ *pod = *allowedPod
+ // annotate and accept the pod
+ glog.V(4).Infof("pod %s (generate: %s) in namespace %s validated against provider %s", pod.Name, pod.GenerateName, a.GetNamespace(), pspName)
+ if pod.ObjectMeta.Annotations == nil {
+ pod.ObjectMeta.Annotations = map[string]string{}
+ }
+ pod.ObjectMeta.Annotations[psputil.ValidatedPSPAnnotation] = pspName
+ return nil
+ }
+
+ // we didn't validate against any provider, reject the pod and give the errors for each attempt
+ glog.V(4).Infof("unable to validate pod %s (generate: %s) in namespace %s against any pod security policy: %v", pod.Name, pod.GenerateName, a.GetNamespace(), validationErrs)
+ return admission.NewForbidden(a, fmt.Errorf("unable to validate against any pod security policy: %v", validationErrs))
+}
+
+func (c *PodSecurityPolicyPlugin) Validate(a admission.Attributes) error {
+ if ignore, err := shouldIgnore(a); err != nil {
+ return err
+ } else if ignore {
+ return nil
+ }
+
+ pod := a.GetObject().(*api.Pod)
+
+ // compute the context. Mutation is not allowed.
+ allowedPod, _, validationErrs, err := c.computeSecurityContext(a, pod, false)
+ if err != nil {
+ return admission.NewForbidden(a, err)
+ }
+ if apiequality.Semantic.DeepEqual(pod, allowedPod) {
+ return nil
+ }
+
+ // we didn't validate against any provider, reject the pod and give the errors for each attempt
+ glog.V(4).Infof("unable to validate pod %s (generate: %s) in namespace %s against any pod security policy: %v", pod.Name, pod.GenerateName, a.GetNamespace(), validationErrs)
+ return admission.NewForbidden(a, fmt.Errorf("unable to validate against any pod security policy: %v", validationErrs))
+}
+
+func shouldIgnore(a admission.Attributes) (bool, error) {
if a.GetResource().GroupResource() != api.Resource("pods") {
- return nil
+ return true, nil
}
-
if len(a.GetSubresource()) != 0 {
- return nil
+ return true, nil
}
- pod, ok := a.GetObject().(*api.Pod)
// if we can't convert then fail closed since we've already checked that this is supposed to be a pod object.
// this shouldn't normally happen during admission but could happen if an integrator passes a versioned
// pod object rather than an internal object.
- if !ok {
- return admission.NewForbidden(a, fmt.Errorf("unexpected type %T", a.GetObject()))
+ if _, ok := a.GetObject().(*api.Pod); !ok {
+ return false, admission.NewForbidden(a, fmt.Errorf("unexpected type %T", a.GetObject()))
}
// if this is an update, see if we are only updating the ownerRef/finalizers. Garbage collection does this
// and we should allow it in general, since you had the power to update and the power to delete.
// The worst that happens is that you delete something, but you aren't controlling the privileged object itself
if a.GetOperation() == admission.Update && rbacregistry.IsOnlyMutatingGCFields(a.GetObject(), a.GetOldObject(), apiequality.Semantic) {
- return nil
+ return true, nil
}
+ return false, nil
+}
+
+// computeSecurityContext derives a valid security context while trying to avoid any changes to the given pod. I.e.
+// if there is a matching policy with the same security context as given, it will be reused. If there is no
+// matching policy the returned pod will be nil and the pspName empty.
+func (c *PodSecurityPolicyPlugin) computeSecurityContext(a admission.Attributes, pod *api.Pod, specMutationAllowed bool) (*api.Pod, string, field.ErrorList, error) {
// get all constraints that are usable by the user
glog.V(4).Infof("getting pod security policies for pod %s (generate: %s)", pod.Name, pod.GenerateName)
var saInfo user.Info
@@ -144,13 +209,13 @@ func (c *podSecurityPolicyPlugin) Admit(a admission.Attributes) error {
matchedPolicies, err := c.pspMatcher(c.lister, a.GetUserInfo(), saInfo, c.authz, a.GetNamespace())
if err != nil {
- return admission.NewForbidden(a, err)
+ return nil, "", nil, err
}
// if we have no policies and want to succeed then return. Otherwise we'll end up with no
// providers and fail with "unable to validate against any pod security policy" below.
if len(matchedPolicies) == 0 && !c.failOnNoPolicies {
- return nil
+ return pod, "", nil, nil
}
// sort by name to make order deterministic
@@ -163,20 +228,16 @@ func (c *podSecurityPolicyPlugin) Admit(a admission.Attributes) error {
logProviders(a, pod, providers, errs)
if len(providers) == 0 {
- return admission.NewForbidden(a, fmt.Errorf("no providers available to validate pod request"))
+ return nil, "", nil, fmt.Errorf("no providers available to validate pod request")
}
- // TODO(liggitt): allow spec mutation during initializing updates?
- specMutationAllowed := a.GetOperation() == admission.Create
-
// all containers in a single pod must validate under a single provider or we will reject the request
validationErrs := field.ErrorList{}
var (
- allowedPod *api.Pod
- allowingProvider psp.Provider
+ allowedMutatedPod *api.Pod
+ allowingMutatingPSP string
)
-loop:
for _, provider := range providers {
podCopy := pod.DeepCopy()
@@ -190,34 +251,21 @@ loop:
switch {
case apiequality.Semantic.DeepEqual(pod, podCopy):
// if it validated without mutating anything, use this result
- allowedPod = podCopy
- allowingProvider = provider
- break loop
- case specMutationAllowed && allowedPod == nil:
+ return podCopy, provider.GetPSPName(), nil, nil
+
+ case specMutationAllowed && allowedMutatedPod == nil:
// if mutation is allowed and this is the first PSP to allow the pod, remember it,
// but continue to see if another PSP allows without mutating
- allowedPod = podCopy
- allowingProvider = provider
- glog.V(6).Infof("pod %s (generate: %s) in namespace %s validated against provider %s with mutation", pod.Name, pod.GenerateName, a.GetNamespace(), provider.GetPSPName())
- case !specMutationAllowed:
- glog.V(6).Infof("pod %s (generate: %s) in namespace %s validated against provider %s, but required mutation, skipping", pod.Name, pod.GenerateName, a.GetNamespace(), provider.GetPSPName())
+ allowedMutatedPod = podCopy
+ allowingMutatingPSP = provider.GetPSPName()
}
}
- if allowedPod != nil {
- *pod = *allowedPod
- // annotate and accept the pod
- glog.V(4).Infof("pod %s (generate: %s) in namespace %s validated against provider %s", pod.Name, pod.GenerateName, a.GetNamespace(), allowingProvider.GetPSPName())
- if pod.ObjectMeta.Annotations == nil {
- pod.ObjectMeta.Annotations = map[string]string{}
- }
- pod.ObjectMeta.Annotations[psputil.ValidatedPSPAnnotation] = allowingProvider.GetPSPName()
- return nil
+ if allowedMutatedPod == nil {
+ return nil, "", validationErrs, nil
}
- // we didn't validate against any provider, reject the pod and give the errors for each attempt
- glog.V(4).Infof("unable to validate pod %s (generate: %s) in namespace %s against any pod security policy: %v", pod.Name, pod.GenerateName, a.GetNamespace(), validationErrs)
- return admission.NewForbidden(a, fmt.Errorf("unable to validate against any pod security policy: %v", validationErrs))
+ return allowedMutatedPod, allowingMutatingPSP, nil, nil
}
// assignSecurityContext creates a security context for each container in the pod
@@ -265,7 +313,7 @@ func assignSecurityContext(provider psp.Provider, pod *api.Pod, fldPath *field.P
}
// createProvidersFromPolicies creates providers from the constraints supplied.
-func (c *podSecurityPolicyPlugin) createProvidersFromPolicies(psps []*extensions.PodSecurityPolicy, namespace string) ([]psp.Provider, []error) {
+func (c *PodSecurityPolicyPlugin) createProvidersFromPolicies(psps []*extensions.PodSecurityPolicy, namespace string) ([]psp.Provider, []error) {
var (
// collected providers
providers []psp.Provider
diff --git a/plugin/pkg/admission/security/podsecuritypolicy/admission_test.go b/plugin/pkg/admission/security/podsecuritypolicy/admission_test.go
index 022a307851..bf043b7523 100644
--- a/plugin/pkg/admission/security/podsecuritypolicy/admission_test.go
+++ b/plugin/pkg/admission/security/podsecuritypolicy/admission_test.go
@@ -32,9 +32,9 @@ import (
kadmission "k8s.io/apiserver/pkg/admission"
"k8s.io/apiserver/pkg/authentication/user"
"k8s.io/apiserver/pkg/authorization/authorizer"
- kapi "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/helper"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ kapi "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
"k8s.io/kubernetes/pkg/apis/extensions"
informers "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion"
extensionslisters "k8s.io/kubernetes/pkg/client/listers/extensions/internalversion"
@@ -49,8 +49,8 @@ const defaultContainerName = "test-c"
// NewTestAdmission provides an admission plugin with test implementations of internal structs. It uses
// an authorizer that always returns true.
-func NewTestAdmission(lister extensionslisters.PodSecurityPolicyLister) kadmission.MutationInterface {
- return &podSecurityPolicyPlugin{
+func NewTestAdmission(lister extensionslisters.PodSecurityPolicyLister) *PodSecurityPolicyPlugin {
+ return &PodSecurityPolicyPlugin{
Handler: kadmission.NewHandler(kadmission.Create, kadmission.Update),
strategyFactory: kpsp.NewSimpleStrategyFactory(),
pspMatcher: getMatchingPolicies,
@@ -89,35 +89,40 @@ func useInitContainers(pod *kapi.Pod) *kapi.Pod {
func TestAdmitSeccomp(t *testing.T) {
containerName := "container"
tests := map[string]struct {
- pspAnnotations map[string]string
- podAnnotations map[string]string
- shouldAdmit bool
+ pspAnnotations map[string]string
+ podAnnotations map[string]string
+ shouldPassAdmit bool
+ shouldPassValidate bool
}{
"no seccomp, no pod annotations": {
- pspAnnotations: nil,
- podAnnotations: nil,
- shouldAdmit: true,
+ pspAnnotations: nil,
+ podAnnotations: nil,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
},
"no seccomp, pod annotations": {
pspAnnotations: nil,
podAnnotations: map[string]string{
kapi.SeccompPodAnnotationKey: "foo",
},
- shouldAdmit: false,
+ shouldPassAdmit: false,
+ shouldPassValidate: false,
},
"no seccomp, container annotations": {
pspAnnotations: nil,
podAnnotations: map[string]string{
kapi.SeccompContainerAnnotationKeyPrefix + containerName: "foo",
},
- shouldAdmit: false,
+ shouldPassAdmit: false,
+ shouldPassValidate: false,
},
"seccomp, allow any no pod annotation": {
pspAnnotations: map[string]string{
seccomp.AllowedProfilesAnnotationKey: seccomp.AllowAny,
},
- podAnnotations: nil,
- shouldAdmit: true,
+ podAnnotations: nil,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
},
"seccomp, allow any pod annotation": {
pspAnnotations: map[string]string{
@@ -126,7 +131,8 @@ func TestAdmitSeccomp(t *testing.T) {
podAnnotations: map[string]string{
kapi.SeccompPodAnnotationKey: "foo",
},
- shouldAdmit: true,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
},
"seccomp, allow any container annotation": {
pspAnnotations: map[string]string{
@@ -135,7 +141,8 @@ func TestAdmitSeccomp(t *testing.T) {
podAnnotations: map[string]string{
kapi.SeccompContainerAnnotationKeyPrefix + containerName: "foo",
},
- shouldAdmit: true,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
},
"seccomp, allow specific pod annotation failure": {
pspAnnotations: map[string]string{
@@ -144,7 +151,8 @@ func TestAdmitSeccomp(t *testing.T) {
podAnnotations: map[string]string{
kapi.SeccompPodAnnotationKey: "bar",
},
- shouldAdmit: false,
+ shouldPassAdmit: false,
+ shouldPassValidate: false,
},
"seccomp, allow specific container annotation failure": {
pspAnnotations: map[string]string{
@@ -155,7 +163,8 @@ func TestAdmitSeccomp(t *testing.T) {
podAnnotations: map[string]string{
kapi.SeccompContainerAnnotationKeyPrefix + containerName: "bar",
},
- shouldAdmit: false,
+ shouldPassAdmit: false,
+ shouldPassValidate: false,
},
"seccomp, allow specific pod annotation pass": {
pspAnnotations: map[string]string{
@@ -164,7 +173,8 @@ func TestAdmitSeccomp(t *testing.T) {
podAnnotations: map[string]string{
kapi.SeccompPodAnnotationKey: "foo",
},
- shouldAdmit: true,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
},
"seccomp, allow specific container annotation pass": {
pspAnnotations: map[string]string{
@@ -175,7 +185,8 @@ func TestAdmitSeccomp(t *testing.T) {
podAnnotations: map[string]string{
kapi.SeccompContainerAnnotationKeyPrefix + containerName: "bar",
},
- shouldAdmit: true,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
},
}
for k, v := range tests {
@@ -191,7 +202,7 @@ func TestAdmitSeccomp(t *testing.T) {
},
},
}
- testPSPAdmit(k, []*extensions.PodSecurityPolicy{psp}, pod, v.shouldAdmit, psp.Name, t)
+ testPSPAdmit(k, []*extensions.PodSecurityPolicy{psp}, pod, v.shouldPassAdmit, v.shouldPassValidate, psp.Name, t)
}
}
@@ -214,58 +225,65 @@ func TestAdmitPrivileged(t *testing.T) {
falseValue := false
tests := map[string]struct {
- pod *kapi.Pod
- psps []*extensions.PodSecurityPolicy
- shouldPass bool
- expectedPriv *bool
- expectedPSP string
+ pod *kapi.Pod
+ psps []*extensions.PodSecurityPolicy
+ shouldPassAdmit bool
+ shouldPassValidate bool
+ expectedPriv *bool
+ expectedPSP string
}{
"pod with priv=nil allowed under non priv PSP": {
- pod: goodPod(),
- psps: []*extensions.PodSecurityPolicy{nonPrivilegedPSP},
- shouldPass: true,
- expectedPriv: nil,
- expectedPSP: nonPrivilegedPSP.Name,
+ pod: goodPod(),
+ psps: []*extensions.PodSecurityPolicy{nonPrivilegedPSP},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedPriv: nil,
+ expectedPSP: nonPrivilegedPSP.Name,
},
"pod with priv=nil allowed under priv PSP": {
- pod: goodPod(),
- psps: []*extensions.PodSecurityPolicy{privilegedPSP},
- shouldPass: true,
- expectedPriv: nil,
- expectedPSP: privilegedPSP.Name,
+ pod: goodPod(),
+ psps: []*extensions.PodSecurityPolicy{privilegedPSP},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedPriv: nil,
+ expectedPSP: privilegedPSP.Name,
},
"pod with priv=false allowed under non priv PSP": {
- pod: createPodWithPriv(false),
- psps: []*extensions.PodSecurityPolicy{nonPrivilegedPSP},
- shouldPass: true,
- expectedPriv: &falseValue,
- expectedPSP: nonPrivilegedPSP.Name,
+ pod: createPodWithPriv(false),
+ psps: []*extensions.PodSecurityPolicy{nonPrivilegedPSP},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedPriv: &falseValue,
+ expectedPSP: nonPrivilegedPSP.Name,
},
"pod with priv=false allowed under priv PSP": {
- pod: createPodWithPriv(false),
- psps: []*extensions.PodSecurityPolicy{privilegedPSP},
- shouldPass: true,
- expectedPriv: &falseValue,
- expectedPSP: privilegedPSP.Name,
+ pod: createPodWithPriv(false),
+ psps: []*extensions.PodSecurityPolicy{privilegedPSP},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedPriv: &falseValue,
+ expectedPSP: privilegedPSP.Name,
},
"pod with priv=true denied by non priv PSP": {
- pod: createPodWithPriv(true),
- psps: []*extensions.PodSecurityPolicy{nonPrivilegedPSP},
- shouldPass: false,
+ pod: createPodWithPriv(true),
+ psps: []*extensions.PodSecurityPolicy{nonPrivilegedPSP},
+ shouldPassAdmit: false,
+ shouldPassValidate: false,
},
"pod with priv=true allowed by priv PSP": {
- pod: createPodWithPriv(true),
- psps: []*extensions.PodSecurityPolicy{nonPrivilegedPSP, privilegedPSP},
- shouldPass: true,
- expectedPriv: &trueValue,
- expectedPSP: privilegedPSP.Name,
+ pod: createPodWithPriv(true),
+ psps: []*extensions.PodSecurityPolicy{nonPrivilegedPSP, privilegedPSP},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedPriv: &trueValue,
+ expectedPSP: privilegedPSP.Name,
},
}
for k, v := range tests {
- testPSPAdmit(k, v.psps, v.pod, v.shouldPass, v.expectedPSP, t)
+ testPSPAdmit(k, v.psps, v.pod, v.shouldPassAdmit, v.shouldPassValidate, v.expectedPSP, t)
- if v.shouldPass {
+ if v.shouldPassAdmit {
priv := v.pod.Spec.Containers[0].SecurityContext.Privileged
if (priv == nil) != (v.expectedPriv == nil) {
t.Errorf("%s expected privileged to be %v, got %v", k, v.expectedPriv, priv)
@@ -311,6 +329,11 @@ func TestAdmitPreferNonmutating(t *testing.T) {
changedPod := unprivilegedRunAsAnyPod.DeepCopy()
changedPod.Spec.Containers[0].Image = "myimage2"
+ podWithSC := unprivilegedRunAsAnyPod.DeepCopy()
+ podWithSC.Annotations = map[string]string{psputil.ValidatedPSPAnnotation: privilegedPSP.Name}
+ changedPodWithSC := changedPod.DeepCopy()
+ changedPodWithSC.Annotations = map[string]string{psputil.ValidatedPSPAnnotation: privilegedPSP.Name}
+
gcChangedPod := unprivilegedRunAsAnyPod.DeepCopy()
gcChangedPod.OwnerReferences = []metav1.OwnerReference{{Kind: "Foo", Name: "bar"}}
gcChangedPod.Finalizers = []string{"foo"}
@@ -318,9 +341,10 @@ func TestAdmitPreferNonmutating(t *testing.T) {
tests := map[string]struct {
operation kadmission.Operation
pod *kapi.Pod
- oldPod *kapi.Pod
+ podBeforeUpdate *kapi.Pod
psps []*extensions.PodSecurityPolicy
- shouldPass bool
+ shouldPassAdmit bool
+ shouldPassValidate bool
expectMutation bool
expectedPodUser *int64
expectedContainerUser *int64
@@ -330,7 +354,8 @@ func TestAdmitPreferNonmutating(t *testing.T) {
operation: kadmission.Create,
pod: unprivilegedRunAsAnyPod.DeepCopy(),
psps: []*extensions.PodSecurityPolicy{privilegedPSP},
- shouldPass: true,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
expectMutation: false,
expectedPodUser: nil,
expectedContainerUser: nil,
@@ -340,7 +365,8 @@ func TestAdmitPreferNonmutating(t *testing.T) {
operation: kadmission.Create,
pod: unprivilegedRunAsAnyPod.DeepCopy(),
psps: []*extensions.PodSecurityPolicy{mutating2, mutating1, privilegedPSP},
- shouldPass: true,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
expectMutation: false,
expectedPodUser: nil,
expectedContainerUser: nil,
@@ -350,7 +376,8 @@ func TestAdmitPreferNonmutating(t *testing.T) {
operation: kadmission.Create,
pod: unprivilegedRunAsAnyPod.DeepCopy(),
psps: []*extensions.PodSecurityPolicy{mutating2, mutating1},
- shouldPass: true,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
expectMutation: true,
expectedPodUser: nil,
expectedContainerUser: &mutating1.Spec.RunAsUser.Ranges[0].Min,
@@ -358,21 +385,23 @@ func TestAdmitPreferNonmutating(t *testing.T) {
},
"pod should prefer non-mutating PSP on update": {
operation: kadmission.Update,
- pod: unprivilegedRunAsAnyPod.DeepCopy(),
- oldPod: changedPod.DeepCopy(),
+ pod: changedPodWithSC.DeepCopy(),
+ podBeforeUpdate: podWithSC.DeepCopy(),
psps: []*extensions.PodSecurityPolicy{mutating2, mutating1, privilegedPSP},
- shouldPass: true,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
expectMutation: false,
expectedPodUser: nil,
expectedContainerUser: nil,
expectedPSP: privilegedPSP.Name,
},
- "pod should not allow mutation on update": {
+ "pod should not mutate on update, but fail validation": {
operation: kadmission.Update,
- pod: unprivilegedRunAsAnyPod.DeepCopy(),
- oldPod: changedPod.DeepCopy(),
+ pod: changedPod.DeepCopy(),
+ podBeforeUpdate: unprivilegedRunAsAnyPod.DeepCopy(),
psps: []*extensions.PodSecurityPolicy{mutating2, mutating1},
- shouldPass: false,
+ shouldPassAdmit: true,
+ shouldPassValidate: false,
expectMutation: false,
expectedPodUser: nil,
expectedContainerUser: nil,
@@ -381,9 +410,10 @@ func TestAdmitPreferNonmutating(t *testing.T) {
"pod should be allowed if completely unchanged on update": {
operation: kadmission.Update,
pod: unprivilegedRunAsAnyPod.DeepCopy(),
- oldPod: unprivilegedRunAsAnyPod.DeepCopy(),
+ podBeforeUpdate: unprivilegedRunAsAnyPod.DeepCopy(),
psps: []*extensions.PodSecurityPolicy{mutating2, mutating1},
- shouldPass: true,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
expectMutation: false,
expectedPodUser: nil,
expectedContainerUser: nil,
@@ -391,10 +421,11 @@ func TestAdmitPreferNonmutating(t *testing.T) {
},
"pod should be allowed if unchanged on update except finalizers,ownerrefs": {
operation: kadmission.Update,
- pod: unprivilegedRunAsAnyPod.DeepCopy(),
- oldPod: gcChangedPod.DeepCopy(),
+ pod: gcChangedPod.DeepCopy(),
+ podBeforeUpdate: unprivilegedRunAsAnyPod.DeepCopy(),
psps: []*extensions.PodSecurityPolicy{mutating2, mutating1},
- shouldPass: true,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
expectMutation: false,
expectedPodUser: nil,
expectedContainerUser: nil,
@@ -403,9 +434,9 @@ func TestAdmitPreferNonmutating(t *testing.T) {
}
for k, v := range tests {
- testPSPAdmitAdvanced(k, v.operation, v.psps, v.pod, v.oldPod, v.shouldPass, v.expectMutation, v.expectedPSP, t)
+ testPSPAdmitAdvanced(k, v.operation, v.psps, v.pod, v.podBeforeUpdate, v.shouldPassAdmit, v.shouldPassValidate, v.expectMutation, v.expectedPSP, t)
- if v.shouldPass {
+ if v.shouldPassAdmit {
actualPodUser := (*int64)(nil)
if v.pod.Spec.SecurityContext != nil {
actualPodUser = v.pod.Spec.SecurityContext.RunAsUser
@@ -433,13 +464,21 @@ func TestFailClosedOnInvalidPod(t *testing.T) {
plugin := NewTestAdmission(nil)
pod := &v1.Pod{}
attrs := kadmission.NewAttributesRecord(pod, nil, kapi.Kind("Pod").WithVersion("version"), pod.Namespace, pod.Name, kapi.Resource("pods").WithVersion("version"), "", kadmission.Create, &user.DefaultInfo{})
- err := plugin.Admit(attrs)
+ err := plugin.Admit(attrs)
if err == nil {
- t.Fatalf("expected versioned pod object to fail admission")
+ t.Fatalf("expected versioned pod object to fail mutating admission")
}
if !strings.Contains(err.Error(), "unexpected type") {
- t.Errorf("expected type error but got: %v", err)
+ t.Errorf("expected type error on Admit but got: %v", err)
+ }
+
+ err = plugin.Validate(attrs)
+ if err == nil {
+ t.Fatalf("expected versioned pod object to fail validating admission")
+ }
+ if !strings.Contains(err.Error(), "unexpected type") {
+ t.Errorf("expected type error on Validate but got: %v", err)
}
}
@@ -471,53 +510,60 @@ func TestAdmitCaps(t *testing.T) {
tc := map[string]struct {
pod *kapi.Pod
psps []*extensions.PodSecurityPolicy
- shouldPass bool
+ shouldPassAdmit bool
+ shouldPassValidate bool
expectedCapabilities *kapi.Capabilities
expectedPSP string
}{
// UC 1: if a PSP does not define allowed or required caps then a pod requesting a cap
// should be rejected.
"should reject cap add when not allowed or required": {
- pod: createPodWithCaps(&kapi.Capabilities{Add: []kapi.Capability{"foo"}}),
- psps: []*extensions.PodSecurityPolicy{restricted},
- shouldPass: false,
+ pod: createPodWithCaps(&kapi.Capabilities{Add: []kapi.Capability{"foo"}}),
+ psps: []*extensions.PodSecurityPolicy{restricted},
+ shouldPassAdmit: false,
+ shouldPassValidate: false,
},
// UC 2: if a PSP allows a cap in the allowed field it should accept the pod request
// to add the cap.
"should accept cap add when in allowed": {
- pod: createPodWithCaps(&kapi.Capabilities{Add: []kapi.Capability{"foo"}}),
- psps: []*extensions.PodSecurityPolicy{restricted, allowsFooInAllowed},
- shouldPass: true,
- expectedPSP: allowsFooInAllowed.Name,
+ pod: createPodWithCaps(&kapi.Capabilities{Add: []kapi.Capability{"foo"}}),
+ psps: []*extensions.PodSecurityPolicy{restricted, allowsFooInAllowed},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedPSP: allowsFooInAllowed.Name,
},
// UC 3: if a PSP requires a cap then it should accept the pod request
// to add the cap.
"should accept cap add when in required": {
- pod: createPodWithCaps(&kapi.Capabilities{Add: []kapi.Capability{"foo"}}),
- psps: []*extensions.PodSecurityPolicy{restricted, allowsFooInRequired},
- shouldPass: true,
- expectedPSP: allowsFooInRequired.Name,
+ pod: createPodWithCaps(&kapi.Capabilities{Add: []kapi.Capability{"foo"}}),
+ psps: []*extensions.PodSecurityPolicy{restricted, allowsFooInRequired},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedPSP: allowsFooInRequired.Name,
},
// UC 4: if a PSP requires a cap to be dropped then it should fail both
// in the verification of adds and verification of drops
"should reject cap add when requested cap is required to be dropped": {
- pod: createPodWithCaps(&kapi.Capabilities{Add: []kapi.Capability{"foo"}}),
- psps: []*extensions.PodSecurityPolicy{restricted, requiresFooToBeDropped},
- shouldPass: false,
+ pod: createPodWithCaps(&kapi.Capabilities{Add: []kapi.Capability{"foo"}}),
+ psps: []*extensions.PodSecurityPolicy{restricted, requiresFooToBeDropped},
+ shouldPassAdmit: false,
+ shouldPassValidate: false,
},
// UC 5: if a PSP requires a cap to be dropped it should accept
// a manual request to drop the cap.
"should accept cap drop when cap is required to be dropped": {
- pod: createPodWithCaps(&kapi.Capabilities{Drop: []kapi.Capability{"foo"}}),
- psps: []*extensions.PodSecurityPolicy{requiresFooToBeDropped},
- shouldPass: true,
- expectedPSP: requiresFooToBeDropped.Name,
+ pod: createPodWithCaps(&kapi.Capabilities{Drop: []kapi.Capability{"foo"}}),
+ psps: []*extensions.PodSecurityPolicy{requiresFooToBeDropped},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedPSP: requiresFooToBeDropped.Name,
},
// UC 6: required add is defaulted
"required add is defaulted": {
- pod: goodPod(),
- psps: []*extensions.PodSecurityPolicy{allowsFooInRequired},
- shouldPass: true,
+ pod: goodPod(),
+ psps: []*extensions.PodSecurityPolicy{allowsFooInRequired},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
expectedCapabilities: &kapi.Capabilities{
Add: []kapi.Capability{"foo"},
},
@@ -525,9 +571,10 @@ func TestAdmitCaps(t *testing.T) {
},
// UC 7: required drop is defaulted
"required drop is defaulted": {
- pod: goodPod(),
- psps: []*extensions.PodSecurityPolicy{requiresFooToBeDropped},
- shouldPass: true,
+ pod: goodPod(),
+ psps: []*extensions.PodSecurityPolicy{requiresFooToBeDropped},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
expectedCapabilities: &kapi.Capabilities{
Drop: []kapi.Capability{"foo"},
},
@@ -535,15 +582,16 @@ func TestAdmitCaps(t *testing.T) {
},
// UC 8: using '*' in allowed caps
"should accept cap add when all caps are allowed": {
- pod: createPodWithCaps(&kapi.Capabilities{Add: []kapi.Capability{"foo"}}),
- psps: []*extensions.PodSecurityPolicy{restricted, allowAllInAllowed},
- shouldPass: true,
- expectedPSP: allowAllInAllowed.Name,
+ pod: createPodWithCaps(&kapi.Capabilities{Add: []kapi.Capability{"foo"}}),
+ psps: []*extensions.PodSecurityPolicy{restricted, allowAllInAllowed},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedPSP: allowAllInAllowed.Name,
},
}
for k, v := range tc {
- testPSPAdmit(k, v.psps, v.pod, v.shouldPass, v.expectedPSP, t)
+ testPSPAdmit(k, v.psps, v.pod, v.shouldPassAdmit, v.shouldPassValidate, v.expectedPSP, t)
if v.expectedCapabilities != nil {
if !reflect.DeepEqual(v.expectedCapabilities, v.pod.Spec.Containers[0].SecurityContext.Capabilities) {
@@ -554,7 +602,7 @@ func TestAdmitCaps(t *testing.T) {
for k, v := range tc {
useInitContainers(v.pod)
- testPSPAdmit(k, v.psps, v.pod, v.shouldPass, v.expectedPSP, t)
+ testPSPAdmit(k, v.psps, v.pod, v.shouldPassAdmit, v.shouldPassValidate, v.expectedPSP, t)
if v.expectedCapabilities != nil {
if !reflect.DeepEqual(v.expectedCapabilities, v.pod.Spec.InitContainers[0].SecurityContext.Capabilities) {
@@ -593,19 +641,19 @@ func TestAdmitVolumes(t *testing.T) {
psp := restrictivePSP()
// expect a denial for this PSP
- testPSPAdmit(fmt.Sprintf("%s denial", string(fsType)), []*extensions.PodSecurityPolicy{psp}, pod, false, "", t)
+ testPSPAdmit(fmt.Sprintf("%s denial", string(fsType)), []*extensions.PodSecurityPolicy{psp}, pod, false, false, "", t)
// also expect a denial for this PSP if it's an init container
useInitContainers(pod)
- testPSPAdmit(fmt.Sprintf("%s denial", string(fsType)), []*extensions.PodSecurityPolicy{psp}, pod, false, "", t)
+ testPSPAdmit(fmt.Sprintf("%s denial", string(fsType)), []*extensions.PodSecurityPolicy{psp}, pod, false, false, "", t)
// now add the fstype directly to the psp and it should validate
psp.Spec.Volumes = []extensions.FSType{fsType}
- testPSPAdmit(fmt.Sprintf("%s direct accept", string(fsType)), []*extensions.PodSecurityPolicy{psp}, pod, true, psp.Name, t)
+ testPSPAdmit(fmt.Sprintf("%s direct accept", string(fsType)), []*extensions.PodSecurityPolicy{psp}, pod, true, true, psp.Name, t)
// now change the psp to allow any volumes and the pod should still validate
psp.Spec.Volumes = []extensions.FSType{extensions.All}
- testPSPAdmit(fmt.Sprintf("%s wildcard accept", string(fsType)), []*extensions.PodSecurityPolicy{psp}, pod, true, psp.Name, t)
+ testPSPAdmit(fmt.Sprintf("%s wildcard accept", string(fsType)), []*extensions.PodSecurityPolicy{psp}, pod, true, true, psp.Name, t)
}
}
@@ -627,42 +675,47 @@ func TestAdmitHostNetwork(t *testing.T) {
tests := map[string]struct {
pod *kapi.Pod
psps []*extensions.PodSecurityPolicy
- shouldPass bool
+ shouldPassAdmit bool
+ shouldPassValidate bool
expectedHostNetwork bool
expectedPSP string
}{
"pod without hostnetwork request allowed under noHostNetwork PSP": {
pod: goodPod(),
psps: []*extensions.PodSecurityPolicy{noHostNetwork},
- shouldPass: true,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
expectedHostNetwork: false,
expectedPSP: noHostNetwork.Name,
},
"pod without hostnetwork request allowed under hostNetwork PSP": {
pod: goodPod(),
psps: []*extensions.PodSecurityPolicy{hostNetwork},
- shouldPass: true,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
expectedHostNetwork: false,
expectedPSP: hostNetwork.Name,
},
"pod with hostnetwork request denied by noHostNetwork PSP": {
- pod: createPodWithHostNetwork(true),
- psps: []*extensions.PodSecurityPolicy{noHostNetwork},
- shouldPass: false,
+ pod: createPodWithHostNetwork(true),
+ psps: []*extensions.PodSecurityPolicy{noHostNetwork},
+ shouldPassAdmit: false,
+ shouldPassValidate: false,
},
"pod with hostnetwork request allowed by hostNetwork PSP": {
pod: createPodWithHostNetwork(true),
psps: []*extensions.PodSecurityPolicy{noHostNetwork, hostNetwork},
- shouldPass: true,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
expectedHostNetwork: true,
expectedPSP: hostNetwork.Name,
},
}
for k, v := range tests {
- testPSPAdmit(k, v.psps, v.pod, v.shouldPass, v.expectedPSP, t)
+ testPSPAdmit(k, v.psps, v.pod, v.shouldPassAdmit, v.shouldPassValidate, v.expectedPSP, t)
- if v.shouldPass {
+ if v.shouldPassAdmit {
if v.pod.Spec.SecurityContext.HostNetwork != v.expectedHostNetwork {
t.Errorf("%s expected hostNetwork to be %t", k, v.expectedHostNetwork)
}
@@ -672,9 +725,9 @@ func TestAdmitHostNetwork(t *testing.T) {
// test again with init containers
for k, v := range tests {
useInitContainers(v.pod)
- testPSPAdmit(k, v.psps, v.pod, v.shouldPass, v.expectedPSP, t)
+ testPSPAdmit(k, v.psps, v.pod, v.shouldPassAdmit, v.shouldPassValidate, v.expectedPSP, t)
- if v.shouldPass {
+ if v.shouldPassAdmit {
if v.pod.Spec.SecurityContext.HostNetwork != v.expectedHostNetwork {
t.Errorf("%s expected hostNetwork to be %t", k, v.expectedHostNetwork)
}
@@ -701,45 +754,51 @@ func TestAdmitHostPorts(t *testing.T) {
}
tests := map[string]struct {
- pod *kapi.Pod
- psps []*extensions.PodSecurityPolicy
- shouldPass bool
- expectedPSP string
+ pod *kapi.Pod
+ psps []*extensions.PodSecurityPolicy
+ shouldPassAdmit bool
+ shouldPassValidate bool
+ expectedPSP string
}{
"host port out of range": {
- pod: createPodWithHostPorts(11),
- psps: []*extensions.PodSecurityPolicy{hostPorts},
- shouldPass: false,
+ pod: createPodWithHostPorts(11),
+ psps: []*extensions.PodSecurityPolicy{hostPorts},
+ shouldPassAdmit: false,
+ shouldPassValidate: false,
},
"host port in range": {
- pod: createPodWithHostPorts(5),
- psps: []*extensions.PodSecurityPolicy{hostPorts},
- shouldPass: true,
- expectedPSP: hostPorts.Name,
+ pod: createPodWithHostPorts(5),
+ psps: []*extensions.PodSecurityPolicy{hostPorts},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedPSP: hostPorts.Name,
},
"no host ports with range": {
- pod: goodPod(),
- psps: []*extensions.PodSecurityPolicy{hostPorts},
- shouldPass: true,
- expectedPSP: hostPorts.Name,
+ pod: goodPod(),
+ psps: []*extensions.PodSecurityPolicy{hostPorts},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedPSP: hostPorts.Name,
},
"no host ports without range": {
- pod: goodPod(),
- psps: []*extensions.PodSecurityPolicy{noHostPorts},
- shouldPass: true,
- expectedPSP: noHostPorts.Name,
+ pod: goodPod(),
+ psps: []*extensions.PodSecurityPolicy{noHostPorts},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedPSP: noHostPorts.Name,
},
"host ports without range": {
- pod: createPodWithHostPorts(5),
- psps: []*extensions.PodSecurityPolicy{noHostPorts},
- shouldPass: false,
+ pod: createPodWithHostPorts(5),
+ psps: []*extensions.PodSecurityPolicy{noHostPorts},
+ shouldPassAdmit: false,
+ shouldPassValidate: false,
},
}
for i := 0; i < 2; i++ {
for k, v := range tests {
v.pod.Spec.Containers, v.pod.Spec.InitContainers = v.pod.Spec.InitContainers, v.pod.Spec.Containers
- testPSPAdmit(k, v.psps, v.pod, v.shouldPass, v.expectedPSP, t)
+ testPSPAdmit(k, v.psps, v.pod, v.shouldPassAdmit, v.shouldPassValidate, v.expectedPSP, t)
}
}
}
@@ -760,44 +819,48 @@ func TestAdmitHostPID(t *testing.T) {
hostPID.Spec.HostPID = true
tests := map[string]struct {
- pod *kapi.Pod
- psps []*extensions.PodSecurityPolicy
- shouldPass bool
- expectedHostPID bool
- expectedPSP string
+ pod *kapi.Pod
+ psps []*extensions.PodSecurityPolicy
+ shouldPassAdmit bool
+ shouldPassValidate bool
+ expectedHostPID bool
+ expectedPSP string
}{
"pod without hostpid request allowed under noHostPID PSP": {
- pod: goodPod(),
- psps: []*extensions.PodSecurityPolicy{noHostPID},
- shouldPass: true,
- expectedHostPID: false,
- expectedPSP: noHostPID.Name,
+ pod: goodPod(),
+ psps: []*extensions.PodSecurityPolicy{noHostPID},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedHostPID: false,
+ expectedPSP: noHostPID.Name,
},
"pod without hostpid request allowed under hostPID PSP": {
- pod: goodPod(),
- psps: []*extensions.PodSecurityPolicy{hostPID},
- shouldPass: true,
- expectedHostPID: false,
- expectedPSP: hostPID.Name,
+ pod: goodPod(),
+ psps: []*extensions.PodSecurityPolicy{hostPID},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedHostPID: false,
+ expectedPSP: hostPID.Name,
},
"pod with hostpid request denied by noHostPID PSP": {
- pod: createPodWithHostPID(true),
- psps: []*extensions.PodSecurityPolicy{noHostPID},
- shouldPass: false,
+ pod: createPodWithHostPID(true),
+ psps: []*extensions.PodSecurityPolicy{noHostPID},
+ shouldPassAdmit: false,
},
"pod with hostpid request allowed by hostPID PSP": {
- pod: createPodWithHostPID(true),
- psps: []*extensions.PodSecurityPolicy{noHostPID, hostPID},
- shouldPass: true,
- expectedHostPID: true,
- expectedPSP: hostPID.Name,
+ pod: createPodWithHostPID(true),
+ psps: []*extensions.PodSecurityPolicy{noHostPID, hostPID},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedHostPID: true,
+ expectedPSP: hostPID.Name,
},
}
for k, v := range tests {
- testPSPAdmit(k, v.psps, v.pod, v.shouldPass, v.expectedPSP, t)
+ testPSPAdmit(k, v.psps, v.pod, v.shouldPassAdmit, v.shouldPassValidate, v.expectedPSP, t)
- if v.shouldPass {
+ if v.shouldPassAdmit {
if v.pod.Spec.SecurityContext.HostPID != v.expectedHostPID {
t.Errorf("%s expected hostPID to be %t", k, v.expectedHostPID)
}
@@ -821,44 +884,49 @@ func TestAdmitHostIPC(t *testing.T) {
hostIPC.Spec.HostIPC = true
tests := map[string]struct {
- pod *kapi.Pod
- psps []*extensions.PodSecurityPolicy
- shouldPass bool
- expectedHostIPC bool
- expectedPSP string
+ pod *kapi.Pod
+ psps []*extensions.PodSecurityPolicy
+ shouldPassAdmit bool
+ shouldPassValidate bool
+ expectedHostIPC bool
+ expectedPSP string
}{
"pod without hostIPC request allowed under noHostIPC PSP": {
- pod: goodPod(),
- psps: []*extensions.PodSecurityPolicy{noHostIPC},
- shouldPass: true,
- expectedHostIPC: false,
- expectedPSP: noHostIPC.Name,
+ pod: goodPod(),
+ psps: []*extensions.PodSecurityPolicy{noHostIPC},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedHostIPC: false,
+ expectedPSP: noHostIPC.Name,
},
"pod without hostIPC request allowed under hostIPC PSP": {
- pod: goodPod(),
- psps: []*extensions.PodSecurityPolicy{hostIPC},
- shouldPass: true,
- expectedHostIPC: false,
- expectedPSP: hostIPC.Name,
+ pod: goodPod(),
+ psps: []*extensions.PodSecurityPolicy{hostIPC},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedHostIPC: false,
+ expectedPSP: hostIPC.Name,
},
"pod with hostIPC request denied by noHostIPC PSP": {
- pod: createPodWithHostIPC(true),
- psps: []*extensions.PodSecurityPolicy{noHostIPC},
- shouldPass: false,
+ pod: createPodWithHostIPC(true),
+ psps: []*extensions.PodSecurityPolicy{noHostIPC},
+ shouldPassAdmit: false,
+ shouldPassValidate: false,
},
"pod with hostIPC request allowed by hostIPC PSP": {
- pod: createPodWithHostIPC(true),
- psps: []*extensions.PodSecurityPolicy{noHostIPC, hostIPC},
- shouldPass: true,
- expectedHostIPC: true,
- expectedPSP: hostIPC.Name,
+ pod: createPodWithHostIPC(true),
+ psps: []*extensions.PodSecurityPolicy{noHostIPC, hostIPC},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedHostIPC: true,
+ expectedPSP: hostIPC.Name,
},
}
for k, v := range tests {
- testPSPAdmit(k, v.psps, v.pod, v.shouldPass, v.expectedPSP, t)
+ testPSPAdmit(k, v.psps, v.pod, v.shouldPassAdmit, v.shouldPassValidate, v.expectedPSP, t)
- if v.shouldPass {
+ if v.shouldPassAdmit {
if v.pod.Spec.SecurityContext.HostIPC != v.expectedHostIPC {
t.Errorf("%s expected hostIPC to be %t", k, v.expectedHostIPC)
}
@@ -891,7 +959,8 @@ func TestAdmitSELinux(t *testing.T) {
tests := map[string]struct {
pod *kapi.Pod
psps []*extensions.PodSecurityPolicy
- shouldPass bool
+ shouldPassAdmit bool
+ shouldPassValidate bool
expectedPodSC *kapi.PodSecurityContext
expectedContainerSC *kapi.SecurityContext
expectedPSP string
@@ -899,7 +968,8 @@ func TestAdmitSELinux(t *testing.T) {
"runAsAny with no request": {
pod: createPodWithSecurityContexts(nil, nil),
psps: []*extensions.PodSecurityPolicy{runAsAny},
- shouldPass: true,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
expectedPodSC: nil,
expectedContainerSC: nil,
expectedPSP: runAsAny.Name,
@@ -907,7 +977,8 @@ func TestAdmitSELinux(t *testing.T) {
"runAsAny with empty pod request": {
pod: createPodWithSecurityContexts(&kapi.PodSecurityContext{}, nil),
psps: []*extensions.PodSecurityPolicy{runAsAny},
- shouldPass: true,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
expectedPodSC: &kapi.PodSecurityContext{},
expectedContainerSC: nil,
expectedPSP: runAsAny.Name,
@@ -915,7 +986,8 @@ func TestAdmitSELinux(t *testing.T) {
"runAsAny with empty container request": {
pod: createPodWithSecurityContexts(nil, &kapi.SecurityContext{}),
psps: []*extensions.PodSecurityPolicy{runAsAny},
- shouldPass: true,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
expectedPodSC: nil,
expectedContainerSC: &kapi.SecurityContext{},
expectedPSP: runAsAny.Name,
@@ -924,7 +996,8 @@ func TestAdmitSELinux(t *testing.T) {
"runAsAny with pod request": {
pod: createPodWithSecurityContexts(&kapi.PodSecurityContext{SELinuxOptions: &kapi.SELinuxOptions{User: "foo"}}, nil),
psps: []*extensions.PodSecurityPolicy{runAsAny},
- shouldPass: true,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
expectedPodSC: &kapi.PodSecurityContext{SELinuxOptions: &kapi.SELinuxOptions{User: "foo"}},
expectedContainerSC: nil,
expectedPSP: runAsAny.Name,
@@ -932,7 +1005,8 @@ func TestAdmitSELinux(t *testing.T) {
"runAsAny with container request": {
pod: createPodWithSecurityContexts(nil, &kapi.SecurityContext{SELinuxOptions: &kapi.SELinuxOptions{User: "foo"}}),
psps: []*extensions.PodSecurityPolicy{runAsAny},
- shouldPass: true,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
expectedPodSC: nil,
expectedContainerSC: &kapi.SecurityContext{SELinuxOptions: &kapi.SELinuxOptions{User: "foo"}},
expectedPSP: runAsAny.Name,
@@ -940,26 +1014,30 @@ func TestAdmitSELinux(t *testing.T) {
"runAsAny with pod and container request": {
pod: createPodWithSecurityContexts(&kapi.PodSecurityContext{SELinuxOptions: &kapi.SELinuxOptions{User: "bar"}}, &kapi.SecurityContext{SELinuxOptions: &kapi.SELinuxOptions{User: "foo"}}),
psps: []*extensions.PodSecurityPolicy{runAsAny},
- shouldPass: true,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
expectedPodSC: &kapi.PodSecurityContext{SELinuxOptions: &kapi.SELinuxOptions{User: "bar"}},
expectedContainerSC: &kapi.SecurityContext{SELinuxOptions: &kapi.SELinuxOptions{User: "foo"}},
expectedPSP: runAsAny.Name,
},
"mustRunAs with bad pod request": {
- pod: createPodWithSecurityContexts(&kapi.PodSecurityContext{SELinuxOptions: &kapi.SELinuxOptions{User: "foo"}}, nil),
- psps: []*extensions.PodSecurityPolicy{mustRunAs},
- shouldPass: false,
+ pod: createPodWithSecurityContexts(&kapi.PodSecurityContext{SELinuxOptions: &kapi.SELinuxOptions{User: "foo"}}, nil),
+ psps: []*extensions.PodSecurityPolicy{mustRunAs},
+ shouldPassAdmit: false,
+ shouldPassValidate: false,
},
"mustRunAs with bad container request": {
- pod: createPodWithSecurityContexts(nil, &kapi.SecurityContext{SELinuxOptions: &kapi.SELinuxOptions{User: "foo"}}),
- psps: []*extensions.PodSecurityPolicy{mustRunAs},
- shouldPass: false,
+ pod: createPodWithSecurityContexts(nil, &kapi.SecurityContext{SELinuxOptions: &kapi.SELinuxOptions{User: "foo"}}),
+ psps: []*extensions.PodSecurityPolicy{mustRunAs},
+ shouldPassAdmit: false,
+ shouldPassValidate: false,
},
"mustRunAs with no request": {
pod: createPodWithSecurityContexts(nil, nil),
psps: []*extensions.PodSecurityPolicy{mustRunAs},
- shouldPass: true,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
expectedPodSC: &kapi.PodSecurityContext{SELinuxOptions: mustRunAs.Spec.SELinux.SELinuxOptions},
expectedContainerSC: nil,
expectedPSP: mustRunAs.Name,
@@ -970,7 +1048,8 @@ func TestAdmitSELinux(t *testing.T) {
nil,
),
psps: []*extensions.PodSecurityPolicy{mustRunAs},
- shouldPass: true,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
expectedPodSC: &kapi.PodSecurityContext{SELinuxOptions: mustRunAs.Spec.SELinux.SELinuxOptions},
expectedContainerSC: nil,
expectedPSP: mustRunAs.Name,
@@ -981,7 +1060,8 @@ func TestAdmitSELinux(t *testing.T) {
nil,
),
psps: []*extensions.PodSecurityPolicy{mustRunAs},
- shouldPass: true,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
expectedPodSC: &kapi.PodSecurityContext{SELinuxOptions: mustRunAs.Spec.SELinux.SELinuxOptions},
expectedContainerSC: nil,
expectedPSP: mustRunAs.Name,
@@ -989,9 +1069,9 @@ func TestAdmitSELinux(t *testing.T) {
}
for k, v := range tests {
- testPSPAdmit(k, v.psps, v.pod, v.shouldPass, v.expectedPSP, t)
+ testPSPAdmit(k, v.psps, v.pod, v.shouldPassAdmit, v.shouldPassValidate, v.expectedPSP, t)
- if v.shouldPass {
+ if v.shouldPassAdmit {
if !reflect.DeepEqual(v.expectedPodSC, v.pod.Spec.SecurityContext) {
t.Errorf("%s unexpected diff:\n%s", k, diff.ObjectGoPrintSideBySide(v.expectedPodSC, v.pod.Spec.SecurityContext))
}
@@ -1025,57 +1105,65 @@ func TestAdmitAppArmor(t *testing.T) {
}
tests := map[string]struct {
- pod *kapi.Pod
- psp *extensions.PodSecurityPolicy
- shouldPass bool
- expectedProfile string
+ pod *kapi.Pod
+ psp *extensions.PodSecurityPolicy
+ shouldPassAdmit bool
+ shouldPassValidate bool
+ expectedProfile string
}{
"unconstrained with no profile": {
- pod: goodPod(),
- psp: unconstrainedPSP,
- shouldPass: true,
- expectedProfile: "",
+ pod: goodPod(),
+ psp: unconstrainedPSP,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedProfile: "",
},
"unconstrained with profile": {
- pod: createPodWithAppArmor(apparmor.ProfileRuntimeDefault),
- psp: unconstrainedPSP,
- shouldPass: true,
- expectedProfile: apparmor.ProfileRuntimeDefault,
+ pod: createPodWithAppArmor(apparmor.ProfileRuntimeDefault),
+ psp: unconstrainedPSP,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedProfile: apparmor.ProfileRuntimeDefault,
},
"unconstrained with default profile": {
- pod: goodPod(),
- psp: defaultedPSP,
- shouldPass: true,
- expectedProfile: apparmor.ProfileRuntimeDefault,
+ pod: goodPod(),
+ psp: defaultedPSP,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedProfile: apparmor.ProfileRuntimeDefault,
},
"AppArmor enforced with no profile": {
- pod: goodPod(),
- psp: appArmorPSP,
- shouldPass: false,
+ pod: goodPod(),
+ psp: appArmorPSP,
+ shouldPassAdmit: false,
+ shouldPassValidate: false,
},
"AppArmor enforced with default profile": {
- pod: goodPod(),
- psp: appArmorDefaultPSP,
- shouldPass: true,
- expectedProfile: apparmor.ProfileRuntimeDefault,
+ pod: goodPod(),
+ psp: appArmorDefaultPSP,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedProfile: apparmor.ProfileRuntimeDefault,
},
"AppArmor enforced with good profile": {
- pod: createPodWithAppArmor(apparmor.ProfileNamePrefix + "foo"),
- psp: appArmorDefaultPSP,
- shouldPass: true,
- expectedProfile: apparmor.ProfileNamePrefix + "foo",
+ pod: createPodWithAppArmor(apparmor.ProfileNamePrefix + "foo"),
+ psp: appArmorDefaultPSP,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedProfile: apparmor.ProfileNamePrefix + "foo",
},
"AppArmor enforced with local profile": {
- pod: createPodWithAppArmor(apparmor.ProfileNamePrefix + "bar"),
- psp: appArmorPSP,
- shouldPass: false,
+ pod: createPodWithAppArmor(apparmor.ProfileNamePrefix + "bar"),
+ psp: appArmorPSP,
+ shouldPassAdmit: false,
+ shouldPassValidate: false,
},
}
for k, v := range tests {
- testPSPAdmit(k, []*extensions.PodSecurityPolicy{v.psp}, v.pod, v.shouldPass, v.psp.Name, t)
+ testPSPAdmit(k, []*extensions.PodSecurityPolicy{v.psp}, v.pod, v.shouldPassAdmit, v.shouldPassValidate, v.psp.Name, t)
- if v.shouldPass {
+ if v.shouldPassAdmit {
assert.Equal(t, v.expectedProfile, apparmor.GetProfileNameFromPodAnnotations(v.pod.Annotations, defaultContainerName), k)
}
}
@@ -1109,7 +1197,8 @@ func TestAdmitRunAsUser(t *testing.T) {
tests := map[string]struct {
pod *kapi.Pod
psps []*extensions.PodSecurityPolicy
- shouldPass bool
+ shouldPassAdmit bool
+ shouldPassValidate bool
expectedPodSC *kapi.PodSecurityContext
expectedContainerSC *kapi.SecurityContext
expectedPSP string
@@ -1117,7 +1206,8 @@ func TestAdmitRunAsUser(t *testing.T) {
"runAsAny no pod request": {
pod: createPodWithSecurityContexts(nil, nil),
psps: []*extensions.PodSecurityPolicy{runAsAny},
- shouldPass: true,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
expectedPodSC: nil,
expectedContainerSC: nil,
expectedPSP: runAsAny.Name,
@@ -1125,7 +1215,8 @@ func TestAdmitRunAsUser(t *testing.T) {
"runAsAny pod request": {
pod: createPodWithSecurityContexts(podSC(userIDPtr(1)), nil),
psps: []*extensions.PodSecurityPolicy{runAsAny},
- shouldPass: true,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
expectedPodSC: podSC(userIDPtr(1)),
expectedContainerSC: nil,
expectedPSP: runAsAny.Name,
@@ -1133,27 +1224,31 @@ func TestAdmitRunAsUser(t *testing.T) {
"runAsAny container request": {
pod: createPodWithSecurityContexts(nil, containerSC(userIDPtr(1))),
psps: []*extensions.PodSecurityPolicy{runAsAny},
- shouldPass: true,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
expectedPodSC: nil,
expectedContainerSC: containerSC(userIDPtr(1)),
expectedPSP: runAsAny.Name,
},
"mustRunAs pod request out of range": {
- pod: createPodWithSecurityContexts(podSC(userIDPtr(1)), nil),
- psps: []*extensions.PodSecurityPolicy{mustRunAs},
- shouldPass: false,
+ pod: createPodWithSecurityContexts(podSC(userIDPtr(1)), nil),
+ psps: []*extensions.PodSecurityPolicy{mustRunAs},
+ shouldPassAdmit: false,
+ shouldPassValidate: false,
},
"mustRunAs container request out of range": {
- pod: createPodWithSecurityContexts(podSC(userIDPtr(999)), containerSC(userIDPtr(1))),
- psps: []*extensions.PodSecurityPolicy{mustRunAs},
- shouldPass: false,
+ pod: createPodWithSecurityContexts(podSC(userIDPtr(999)), containerSC(userIDPtr(1))),
+ psps: []*extensions.PodSecurityPolicy{mustRunAs},
+ shouldPassAdmit: false,
+ shouldPassValidate: false,
},
"mustRunAs pod request in range": {
pod: createPodWithSecurityContexts(podSC(userIDPtr(999)), nil),
psps: []*extensions.PodSecurityPolicy{mustRunAs},
- shouldPass: true,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
expectedPodSC: podSC(&mustRunAs.Spec.RunAsUser.Ranges[0].Min),
expectedContainerSC: nil,
expectedPSP: mustRunAs.Name,
@@ -1161,7 +1256,8 @@ func TestAdmitRunAsUser(t *testing.T) {
"mustRunAs container request in range": {
pod: createPodWithSecurityContexts(nil, containerSC(userIDPtr(999))),
psps: []*extensions.PodSecurityPolicy{mustRunAs},
- shouldPass: true,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
expectedPodSC: nil,
expectedContainerSC: containerSC(&mustRunAs.Spec.RunAsUser.Ranges[0].Min),
expectedPSP: mustRunAs.Name,
@@ -1169,7 +1265,8 @@ func TestAdmitRunAsUser(t *testing.T) {
"mustRunAs pod and container request in range": {
pod: createPodWithSecurityContexts(podSC(userIDPtr(999)), containerSC(userIDPtr(1000))),
psps: []*extensions.PodSecurityPolicy{mustRunAs},
- shouldPass: true,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
expectedPodSC: podSC(userIDPtr(999)),
expectedContainerSC: containerSC(userIDPtr(1000)),
expectedPSP: mustRunAs.Name,
@@ -1177,7 +1274,8 @@ func TestAdmitRunAsUser(t *testing.T) {
"mustRunAs no request": {
pod: createPodWithSecurityContexts(nil, nil),
psps: []*extensions.PodSecurityPolicy{mustRunAs},
- shouldPass: true,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
expectedPodSC: nil,
expectedContainerSC: containerSC(&mustRunAs.Spec.RunAsUser.Ranges[0].Min),
expectedPSP: mustRunAs.Name,
@@ -1186,32 +1284,37 @@ func TestAdmitRunAsUser(t *testing.T) {
"runAsNonRoot no request": {
pod: createPodWithSecurityContexts(nil, nil),
psps: []*extensions.PodSecurityPolicy{runAsNonRoot},
- shouldPass: true,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
expectedPodSC: nil,
expectedContainerSC: &kapi.SecurityContext{RunAsNonRoot: &trueValue},
expectedPSP: runAsNonRoot.Name,
},
"runAsNonRoot pod request root": {
- pod: createPodWithSecurityContexts(podSC(userIDPtr(0)), nil),
- psps: []*extensions.PodSecurityPolicy{runAsNonRoot},
- shouldPass: false,
+ pod: createPodWithSecurityContexts(podSC(userIDPtr(0)), nil),
+ psps: []*extensions.PodSecurityPolicy{runAsNonRoot},
+ shouldPassAdmit: false,
+ shouldPassValidate: false,
},
"runAsNonRoot pod request non-root": {
- pod: createPodWithSecurityContexts(podSC(userIDPtr(1)), nil),
- psps: []*extensions.PodSecurityPolicy{runAsNonRoot},
- shouldPass: true,
- expectedPodSC: podSC(userIDPtr(1)),
- expectedPSP: runAsNonRoot.Name,
+ pod: createPodWithSecurityContexts(podSC(userIDPtr(1)), nil),
+ psps: []*extensions.PodSecurityPolicy{runAsNonRoot},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedPodSC: podSC(userIDPtr(1)),
+ expectedPSP: runAsNonRoot.Name,
},
"runAsNonRoot container request root": {
- pod: createPodWithSecurityContexts(podSC(userIDPtr(1)), containerSC(userIDPtr(0))),
- psps: []*extensions.PodSecurityPolicy{runAsNonRoot},
- shouldPass: false,
+ pod: createPodWithSecurityContexts(podSC(userIDPtr(1)), containerSC(userIDPtr(0))),
+ psps: []*extensions.PodSecurityPolicy{runAsNonRoot},
+ shouldPassAdmit: false,
+ shouldPassValidate: false,
},
"runAsNonRoot container request non-root": {
pod: createPodWithSecurityContexts(podSC(userIDPtr(1)), containerSC(userIDPtr(2))),
psps: []*extensions.PodSecurityPolicy{runAsNonRoot},
- shouldPass: true,
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
expectedPodSC: podSC(userIDPtr(1)),
expectedContainerSC: containerSC(userIDPtr(2)),
expectedPSP: runAsNonRoot.Name,
@@ -1219,9 +1322,9 @@ func TestAdmitRunAsUser(t *testing.T) {
}
for k, v := range tests {
- testPSPAdmit(k, v.psps, v.pod, v.shouldPass, v.expectedPSP, t)
+ testPSPAdmit(k, v.psps, v.pod, v.shouldPassAdmit, v.shouldPassValidate, v.expectedPSP, t)
- if v.shouldPass {
+ if v.shouldPassAdmit {
if !reflect.DeepEqual(v.expectedPodSC, v.pod.Spec.SecurityContext) {
t.Errorf("%s unexpected pod sc diff:\n%s", k, diff.ObjectGoPrintSideBySide(v.expectedPodSC, v.pod.Spec.SecurityContext))
}
@@ -1247,65 +1350,73 @@ func TestAdmitSupplementalGroups(t *testing.T) {
mustRunAs.Spec.SupplementalGroups.Ranges = []extensions.GroupIDRange{{Min: int64(999), Max: int64(1000)}}
tests := map[string]struct {
- pod *kapi.Pod
- psps []*extensions.PodSecurityPolicy
- shouldPass bool
- expectedPodSC *kapi.PodSecurityContext
- expectedPSP string
+ pod *kapi.Pod
+ psps []*extensions.PodSecurityPolicy
+ shouldPassAdmit bool
+ shouldPassValidate bool
+ expectedPodSC *kapi.PodSecurityContext
+ expectedPSP string
}{
"runAsAny no pod request": {
- pod: createPodWithSecurityContexts(nil, nil),
- psps: []*extensions.PodSecurityPolicy{runAsAny},
- shouldPass: true,
- expectedPodSC: nil,
- expectedPSP: runAsAny.Name,
+ pod: createPodWithSecurityContexts(nil, nil),
+ psps: []*extensions.PodSecurityPolicy{runAsAny},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedPodSC: nil,
+ expectedPSP: runAsAny.Name,
},
"runAsAny empty pod request": {
- pod: createPodWithSecurityContexts(&kapi.PodSecurityContext{}, nil),
- psps: []*extensions.PodSecurityPolicy{runAsAny},
- shouldPass: true,
- expectedPodSC: &kapi.PodSecurityContext{},
- expectedPSP: runAsAny.Name,
+ pod: createPodWithSecurityContexts(&kapi.PodSecurityContext{}, nil),
+ psps: []*extensions.PodSecurityPolicy{runAsAny},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedPodSC: &kapi.PodSecurityContext{},
+ expectedPSP: runAsAny.Name,
},
"runAsAny empty pod request empty supplemental groups": {
- pod: createPodWithSecurityContexts(&kapi.PodSecurityContext{SupplementalGroups: []int64{}}, nil),
- psps: []*extensions.PodSecurityPolicy{runAsAny},
- shouldPass: true,
- expectedPodSC: &kapi.PodSecurityContext{SupplementalGroups: []int64{}},
- expectedPSP: runAsAny.Name,
+ pod: createPodWithSecurityContexts(&kapi.PodSecurityContext{SupplementalGroups: []int64{}}, nil),
+ psps: []*extensions.PodSecurityPolicy{runAsAny},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedPodSC: &kapi.PodSecurityContext{SupplementalGroups: []int64{}},
+ expectedPSP: runAsAny.Name,
},
"runAsAny pod request": {
- pod: createPodWithSecurityContexts(podSC(1), nil),
- psps: []*extensions.PodSecurityPolicy{runAsAny},
- shouldPass: true,
- expectedPodSC: &kapi.PodSecurityContext{SupplementalGroups: []int64{1}},
- expectedPSP: runAsAny.Name,
+ pod: createPodWithSecurityContexts(podSC(1), nil),
+ psps: []*extensions.PodSecurityPolicy{runAsAny},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedPodSC: &kapi.PodSecurityContext{SupplementalGroups: []int64{1}},
+ expectedPSP: runAsAny.Name,
},
"mustRunAs no pod request": {
- pod: createPodWithSecurityContexts(nil, nil),
- psps: []*extensions.PodSecurityPolicy{mustRunAs},
- shouldPass: true,
- expectedPodSC: podSC(mustRunAs.Spec.SupplementalGroups.Ranges[0].Min),
- expectedPSP: mustRunAs.Name,
+ pod: createPodWithSecurityContexts(nil, nil),
+ psps: []*extensions.PodSecurityPolicy{mustRunAs},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedPodSC: podSC(mustRunAs.Spec.SupplementalGroups.Ranges[0].Min),
+ expectedPSP: mustRunAs.Name,
},
"mustRunAs bad pod request": {
- pod: createPodWithSecurityContexts(podSC(1), nil),
- psps: []*extensions.PodSecurityPolicy{mustRunAs},
- shouldPass: false,
+ pod: createPodWithSecurityContexts(podSC(1), nil),
+ psps: []*extensions.PodSecurityPolicy{mustRunAs},
+ shouldPassAdmit: false,
+ shouldPassValidate: false,
},
"mustRunAs good pod request": {
- pod: createPodWithSecurityContexts(podSC(999), nil),
- psps: []*extensions.PodSecurityPolicy{mustRunAs},
- shouldPass: true,
- expectedPodSC: podSC(999),
- expectedPSP: mustRunAs.Name,
+ pod: createPodWithSecurityContexts(podSC(999), nil),
+ psps: []*extensions.PodSecurityPolicy{mustRunAs},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedPodSC: podSC(999),
+ expectedPSP: mustRunAs.Name,
},
}
for k, v := range tests {
- testPSPAdmit(k, v.psps, v.pod, v.shouldPass, v.expectedPSP, t)
+ testPSPAdmit(k, v.psps, v.pod, v.shouldPassAdmit, v.shouldPassValidate, v.expectedPSP, t)
- if v.shouldPass {
+ if v.shouldPassAdmit {
if !reflect.DeepEqual(v.expectedPodSC, v.pod.Spec.SecurityContext) {
t.Errorf("%s unexpected pod sc diff:\n%s", k, diff.ObjectGoPrintSideBySide(v.expectedPodSC, v.pod.Spec.SecurityContext))
}
@@ -1331,51 +1442,57 @@ func TestAdmitFSGroup(t *testing.T) {
mustRunAs.Name = "mustRunAs"
tests := map[string]struct {
- pod *kapi.Pod
- psps []*extensions.PodSecurityPolicy
- shouldPass bool
- expectedFSGroup *int64
- expectedPSP string
+ pod *kapi.Pod
+ psps []*extensions.PodSecurityPolicy
+ shouldPassAdmit bool
+ shouldPassValidate bool
+ expectedFSGroup *int64
+ expectedPSP string
}{
"runAsAny no pod request": {
- pod: goodPod(),
- psps: []*extensions.PodSecurityPolicy{runAsAny},
- shouldPass: true,
- expectedFSGroup: nil,
- expectedPSP: runAsAny.Name,
+ pod: goodPod(),
+ psps: []*extensions.PodSecurityPolicy{runAsAny},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedFSGroup: nil,
+ expectedPSP: runAsAny.Name,
},
"runAsAny pod request": {
- pod: createPodWithFSGroup(1),
- psps: []*extensions.PodSecurityPolicy{runAsAny},
- shouldPass: true,
- expectedFSGroup: groupIDPtr(1),
- expectedPSP: runAsAny.Name,
+ pod: createPodWithFSGroup(1),
+ psps: []*extensions.PodSecurityPolicy{runAsAny},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedFSGroup: groupIDPtr(1),
+ expectedPSP: runAsAny.Name,
},
"mustRunAs no pod request": {
- pod: goodPod(),
- psps: []*extensions.PodSecurityPolicy{mustRunAs},
- shouldPass: true,
- expectedFSGroup: &mustRunAs.Spec.SupplementalGroups.Ranges[0].Min,
- expectedPSP: mustRunAs.Name,
+ pod: goodPod(),
+ psps: []*extensions.PodSecurityPolicy{mustRunAs},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedFSGroup: &mustRunAs.Spec.SupplementalGroups.Ranges[0].Min,
+ expectedPSP: mustRunAs.Name,
},
"mustRunAs bad pod request": {
- pod: createPodWithFSGroup(1),
- psps: []*extensions.PodSecurityPolicy{mustRunAs},
- shouldPass: false,
+ pod: createPodWithFSGroup(1),
+ psps: []*extensions.PodSecurityPolicy{mustRunAs},
+ shouldPassAdmit: false,
+ shouldPassValidate: false,
},
"mustRunAs good pod request": {
- pod: createPodWithFSGroup(999),
- psps: []*extensions.PodSecurityPolicy{mustRunAs},
- shouldPass: true,
- expectedFSGroup: groupIDPtr(999),
- expectedPSP: mustRunAs.Name,
+ pod: createPodWithFSGroup(999),
+ psps: []*extensions.PodSecurityPolicy{mustRunAs},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedFSGroup: groupIDPtr(999),
+ expectedPSP: mustRunAs.Name,
},
}
for k, v := range tests {
- testPSPAdmit(k, v.psps, v.pod, v.shouldPass, v.expectedPSP, t)
+ testPSPAdmit(k, v.psps, v.pod, v.shouldPassAdmit, v.shouldPassValidate, v.expectedPSP, t)
- if v.shouldPass {
+ if v.shouldPassAdmit {
if v.pod.Spec.SecurityContext.FSGroup == nil && v.expectedFSGroup == nil {
// ok, don't need to worry about identifying specific diffs
continue
@@ -1411,51 +1528,57 @@ func TestAdmitReadOnlyRootFilesystem(t *testing.T) {
rorfs.Spec.ReadOnlyRootFilesystem = true
tests := map[string]struct {
- pod *kapi.Pod
- psps []*extensions.PodSecurityPolicy
- shouldPass bool
- expectedRORFS bool
- expectedPSP string
+ pod *kapi.Pod
+ psps []*extensions.PodSecurityPolicy
+ shouldPassAdmit bool
+ shouldPassValidate bool
+ expectedRORFS bool
+ expectedPSP string
}{
"no-rorfs allows pod request with rorfs": {
- pod: createPodWithRORFS(true),
- psps: []*extensions.PodSecurityPolicy{noRORFS},
- shouldPass: true,
- expectedRORFS: true,
- expectedPSP: noRORFS.Name,
+ pod: createPodWithRORFS(true),
+ psps: []*extensions.PodSecurityPolicy{noRORFS},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedRORFS: true,
+ expectedPSP: noRORFS.Name,
},
"no-rorfs allows pod request without rorfs": {
- pod: createPodWithRORFS(false),
- psps: []*extensions.PodSecurityPolicy{noRORFS},
- shouldPass: true,
- expectedRORFS: false,
- expectedPSP: noRORFS.Name,
+ pod: createPodWithRORFS(false),
+ psps: []*extensions.PodSecurityPolicy{noRORFS},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedRORFS: false,
+ expectedPSP: noRORFS.Name,
},
"rorfs rejects pod request without rorfs": {
- pod: createPodWithRORFS(false),
- psps: []*extensions.PodSecurityPolicy{rorfs},
- shouldPass: false,
+ pod: createPodWithRORFS(false),
+ psps: []*extensions.PodSecurityPolicy{rorfs},
+ shouldPassAdmit: false,
+ shouldPassValidate: false,
},
"rorfs defaults nil pod request": {
- pod: goodPod(),
- psps: []*extensions.PodSecurityPolicy{rorfs},
- shouldPass: true,
- expectedRORFS: true,
- expectedPSP: rorfs.Name,
+ pod: goodPod(),
+ psps: []*extensions.PodSecurityPolicy{rorfs},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedRORFS: true,
+ expectedPSP: rorfs.Name,
},
"rorfs accepts pod request with rorfs": {
- pod: createPodWithRORFS(true),
- psps: []*extensions.PodSecurityPolicy{rorfs},
- shouldPass: true,
- expectedRORFS: true,
- expectedPSP: rorfs.Name,
+ pod: createPodWithRORFS(true),
+ psps: []*extensions.PodSecurityPolicy{rorfs},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedRORFS: true,
+ expectedPSP: rorfs.Name,
},
}
for k, v := range tests {
- testPSPAdmit(k, v.psps, v.pod, v.shouldPass, v.expectedPSP, t)
+ testPSPAdmit(k, v.psps, v.pod, v.shouldPassAdmit, v.shouldPassValidate, v.expectedPSP, t)
- if v.shouldPass {
+ if v.shouldPassAdmit {
if v.pod.Spec.Containers[0].SecurityContext.ReadOnlyRootFilesystem == nil ||
*v.pod.Spec.Containers[0].SecurityContext.ReadOnlyRootFilesystem != v.expectedRORFS {
t.Errorf("%s expected ReadOnlyRootFilesystem to be %t but found %#v", k, v.expectedRORFS, v.pod.Spec.Containers[0].SecurityContext.ReadOnlyRootFilesystem)
@@ -1508,116 +1631,136 @@ func TestAdmitSysctls(t *testing.T) {
catchallSysctls.Annotations[extensions.SysctlsPodSecurityPolicyAnnotationKey] = "*"
tests := map[string]struct {
- pod *kapi.Pod
- psps []*extensions.PodSecurityPolicy
- shouldPass bool
- expectedPSP string
+ pod *kapi.Pod
+ psps []*extensions.PodSecurityPolicy
+ shouldPassAdmit bool
+ shouldPassValidate bool
+ expectedPSP string
}{
"pod without unsafe sysctls request allowed under noSysctls PSP": {
- pod: goodPod(),
- psps: []*extensions.PodSecurityPolicy{noSysctls},
- shouldPass: true,
- expectedPSP: noSysctls.Name,
+ pod: goodPod(),
+ psps: []*extensions.PodSecurityPolicy{noSysctls},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedPSP: noSysctls.Name,
},
"pod without any sysctls request allowed under emptySysctls PSP": {
- pod: goodPod(),
- psps: []*extensions.PodSecurityPolicy{emptySysctls},
- shouldPass: true,
- expectedPSP: emptySysctls.Name,
+ pod: goodPod(),
+ psps: []*extensions.PodSecurityPolicy{emptySysctls},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedPSP: emptySysctls.Name,
},
"pod with safe sysctls request allowed under noSysctls PSP": {
- pod: podWithSysctls([]string{"a", "b"}, []string{}),
- psps: []*extensions.PodSecurityPolicy{noSysctls},
- shouldPass: true,
- expectedPSP: noSysctls.Name,
+ pod: podWithSysctls([]string{"a", "b"}, []string{}),
+ psps: []*extensions.PodSecurityPolicy{noSysctls},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedPSP: noSysctls.Name,
},
"pod with unsafe sysctls request allowed under noSysctls PSP": {
- pod: podWithSysctls([]string{}, []string{"a", "b"}),
- psps: []*extensions.PodSecurityPolicy{noSysctls},
- shouldPass: true,
- expectedPSP: noSysctls.Name,
+ pod: podWithSysctls([]string{}, []string{"a", "b"}),
+ psps: []*extensions.PodSecurityPolicy{noSysctls},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedPSP: noSysctls.Name,
},
"pod with safe sysctls request disallowed under emptySysctls PSP": {
- pod: podWithSysctls([]string{"a", "b"}, []string{}),
- psps: []*extensions.PodSecurityPolicy{emptySysctls},
- shouldPass: false,
+ pod: podWithSysctls([]string{"a", "b"}, []string{}),
+ psps: []*extensions.PodSecurityPolicy{emptySysctls},
+ shouldPassAdmit: false,
+ shouldPassValidate: false,
},
"pod with unsafe sysctls a, b request disallowed under aSysctls SCC": {
- pod: podWithSysctls([]string{}, []string{"a", "b"}),
- psps: []*extensions.PodSecurityPolicy{aSysctl},
- shouldPass: false,
+ pod: podWithSysctls([]string{}, []string{"a", "b"}),
+ psps: []*extensions.PodSecurityPolicy{aSysctl},
+ shouldPassAdmit: false,
+ shouldPassValidate: false,
},
"pod with unsafe sysctls b request disallowed under aSysctls SCC": {
- pod: podWithSysctls([]string{}, []string{"b"}),
- psps: []*extensions.PodSecurityPolicy{aSysctl},
- shouldPass: false,
+ pod: podWithSysctls([]string{}, []string{"b"}),
+ psps: []*extensions.PodSecurityPolicy{aSysctl},
+ shouldPassAdmit: false,
+ shouldPassValidate: false,
},
"pod with unsafe sysctls a request allowed under aSysctls SCC": {
- pod: podWithSysctls([]string{}, []string{"a"}),
- psps: []*extensions.PodSecurityPolicy{aSysctl},
- shouldPass: true,
- expectedPSP: aSysctl.Name,
+ pod: podWithSysctls([]string{}, []string{"a"}),
+ psps: []*extensions.PodSecurityPolicy{aSysctl},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedPSP: aSysctl.Name,
},
"pod with safe sysctls a, b request disallowed under aSysctls SCC": {
- pod: podWithSysctls([]string{"a", "b"}, []string{}),
- psps: []*extensions.PodSecurityPolicy{aSysctl},
- shouldPass: false,
+ pod: podWithSysctls([]string{"a", "b"}, []string{}),
+ psps: []*extensions.PodSecurityPolicy{aSysctl},
+ shouldPassAdmit: false,
+ shouldPassValidate: false,
},
"pod with safe sysctls b request disallowed under aSysctls SCC": {
- pod: podWithSysctls([]string{"b"}, []string{}),
- psps: []*extensions.PodSecurityPolicy{aSysctl},
- shouldPass: false,
+ pod: podWithSysctls([]string{"b"}, []string{}),
+ psps: []*extensions.PodSecurityPolicy{aSysctl},
+ shouldPassAdmit: false,
+ shouldPassValidate: false,
},
"pod with safe sysctls a request allowed under aSysctls SCC": {
- pod: podWithSysctls([]string{"a"}, []string{}),
- psps: []*extensions.PodSecurityPolicy{aSysctl},
- shouldPass: true,
- expectedPSP: aSysctl.Name,
+ pod: podWithSysctls([]string{"a"}, []string{}),
+ psps: []*extensions.PodSecurityPolicy{aSysctl},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedPSP: aSysctl.Name,
},
"pod with unsafe sysctls request disallowed under emptySysctls PSP": {
- pod: podWithSysctls([]string{}, []string{"a", "b"}),
- psps: []*extensions.PodSecurityPolicy{emptySysctls},
- shouldPass: false,
+ pod: podWithSysctls([]string{}, []string{"a", "b"}),
+ psps: []*extensions.PodSecurityPolicy{emptySysctls},
+ shouldPassAdmit: false,
+ shouldPassValidate: false,
},
"pod with matching sysctls request allowed under mixedSysctls PSP": {
- pod: podWithSysctls([]string{"a.b", "b.c"}, []string{"c", "d.e.f"}),
- psps: []*extensions.PodSecurityPolicy{mixedSysctls},
- shouldPass: true,
- expectedPSP: mixedSysctls.Name,
+ pod: podWithSysctls([]string{"a.b", "b.c"}, []string{"c", "d.e.f"}),
+ psps: []*extensions.PodSecurityPolicy{mixedSysctls},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedPSP: mixedSysctls.Name,
},
"pod with not-matching unsafe sysctls request disallowed under mixedSysctls PSP": {
- pod: podWithSysctls([]string{"a.b", "b.c", "c", "d.e.f"}, []string{"e"}),
- psps: []*extensions.PodSecurityPolicy{mixedSysctls},
- shouldPass: false,
+ pod: podWithSysctls([]string{"a.b", "b.c", "c", "d.e.f"}, []string{"e"}),
+ psps: []*extensions.PodSecurityPolicy{mixedSysctls},
+ shouldPassAdmit: false,
+ shouldPassValidate: false,
},
"pod with not-matching safe sysctls request disallowed under mixedSysctls PSP": {
- pod: podWithSysctls([]string{"a.b", "b.c", "c", "d.e.f", "e"}, []string{}),
- psps: []*extensions.PodSecurityPolicy{mixedSysctls},
- shouldPass: false,
+ pod: podWithSysctls([]string{"a.b", "b.c", "c", "d.e.f", "e"}, []string{}),
+ psps: []*extensions.PodSecurityPolicy{mixedSysctls},
+ shouldPassAdmit: false,
+ shouldPassValidate: false,
},
"pod with sysctls request allowed under catchallSysctls PSP": {
- pod: podWithSysctls([]string{"e"}, []string{"f"}),
- psps: []*extensions.PodSecurityPolicy{catchallSysctls},
- shouldPass: true,
- expectedPSP: catchallSysctls.Name,
+ pod: podWithSysctls([]string{"e"}, []string{"f"}),
+ psps: []*extensions.PodSecurityPolicy{catchallSysctls},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedPSP: catchallSysctls.Name,
},
"pod with sysctls request allowed under catchallSysctls PSP, not under mixedSysctls or emptySysctls PSP": {
- pod: podWithSysctls([]string{"e"}, []string{"f"}),
- psps: []*extensions.PodSecurityPolicy{mixedSysctls, catchallSysctls, emptySysctls},
- shouldPass: true,
- expectedPSP: catchallSysctls.Name,
+ pod: podWithSysctls([]string{"e"}, []string{"f"}),
+ psps: []*extensions.PodSecurityPolicy{mixedSysctls, catchallSysctls, emptySysctls},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedPSP: catchallSysctls.Name,
},
"pod with safe c sysctl request allowed under cSysctl PSP, not under aSysctl or bSysctl PSP": {
- pod: podWithSysctls([]string{}, []string{"c"}),
- psps: []*extensions.PodSecurityPolicy{aSysctl, bSysctl, cSysctl},
- shouldPass: true,
- expectedPSP: cSysctl.Name,
+ pod: podWithSysctls([]string{}, []string{"c"}),
+ psps: []*extensions.PodSecurityPolicy{aSysctl, bSysctl, cSysctl},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedPSP: cSysctl.Name,
},
"pod with unsafe c sysctl request allowed under cSysctl PSP, not under aSysctl or bSysctl PSP": {
- pod: podWithSysctls([]string{"c"}, []string{}),
- psps: []*extensions.PodSecurityPolicy{aSysctl, bSysctl, cSysctl},
- shouldPass: true,
- expectedPSP: cSysctl.Name,
+ pod: podWithSysctls([]string{"c"}, []string{}),
+ psps: []*extensions.PodSecurityPolicy{aSysctl, bSysctl, cSysctl},
+ shouldPassAdmit: true,
+ shouldPassValidate: true,
+ expectedPSP: cSysctl.Name,
},
}
@@ -1627,9 +1770,9 @@ func TestAdmitSysctls(t *testing.T) {
t.Fatalf("invalid sysctl annotation: %v", err)
}
- testPSPAdmit(k, v.psps, v.pod, v.shouldPass, v.expectedPSP, t)
+ testPSPAdmit(k, v.psps, v.pod, v.shouldPassAdmit, v.shouldPassValidate, v.expectedPSP, t)
- if v.shouldPass {
+ if v.shouldPassAdmit {
safeSysctls, unsafeSysctls, _ := helper.SysctlsFromPodAnnotations(v.pod.Annotations)
if !reflect.DeepEqual(safeSysctls, origSafeSysctls) {
t.Errorf("%s: wrong safe sysctls: expected=%v, got=%v", k, origSafeSysctls, safeSysctls)
@@ -1641,11 +1784,11 @@ func TestAdmitSysctls(t *testing.T) {
}
}
-func testPSPAdmit(testCaseName string, psps []*extensions.PodSecurityPolicy, pod *kapi.Pod, shouldPass bool, expectedPSP string, t *testing.T) {
- testPSPAdmitAdvanced(testCaseName, kadmission.Create, psps, pod, nil, shouldPass, true, expectedPSP, t)
+func testPSPAdmit(testCaseName string, psps []*extensions.PodSecurityPolicy, pod *kapi.Pod, shouldPassAdmit, shouldPassValidate bool, expectedPSP string, t *testing.T) {
+ testPSPAdmitAdvanced(testCaseName, kadmission.Create, psps, pod, nil, shouldPassAdmit, shouldPassValidate, true, expectedPSP, t)
}
-func testPSPAdmitAdvanced(testCaseName string, op kadmission.Operation, psps []*extensions.PodSecurityPolicy, pod, oldPod *kapi.Pod, shouldPass bool, canMutate bool, expectedPSP string, t *testing.T) {
+func testPSPAdmitAdvanced(testCaseName string, op kadmission.Operation, psps []*extensions.PodSecurityPolicy, pod, oldPod *kapi.Pod, shouldPassAdmit, shouldPassValidate bool, canMutate bool, expectedPSP string, t *testing.T) {
informerFactory := informers.NewSharedInformerFactory(nil, controller.NoResyncPeriodFunc())
store := informerFactory.Extensions().InternalVersion().PodSecurityPolicies().Informer().GetStore()
@@ -1660,13 +1803,13 @@ func testPSPAdmitAdvanced(testCaseName string, op kadmission.Operation, psps []*
attrs := kadmission.NewAttributesRecord(pod, oldPod, kapi.Kind("Pod").WithVersion("version"), "namespace", "", kapi.Resource("pods").WithVersion("version"), "", op, &user.DefaultInfo{})
err := plugin.Admit(attrs)
- if shouldPass && err != nil {
- t.Errorf("%s: expected no errors but received %v", testCaseName, err)
+ if shouldPassAdmit && err != nil {
+ t.Errorf("%s: expected no errors on Admit but received %v", testCaseName, err)
}
- if shouldPass && err == nil {
+ if shouldPassAdmit && err == nil {
if pod.Annotations[psputil.ValidatedPSPAnnotation] != expectedPSP {
- t.Errorf("%s: expected to validate under %q PSP but found %q", testCaseName, expectedPSP, pod.Annotations[psputil.ValidatedPSPAnnotation])
+ t.Errorf("%s: expected to be admitted under %q PSP but found %q", testCaseName, expectedPSP, pod.Annotations[psputil.ValidatedPSPAnnotation])
}
if !canMutate {
@@ -1677,13 +1820,20 @@ func testPSPAdmitAdvanced(testCaseName string, op kadmission.Operation, psps []*
delete(originalPodWithoutPSPAnnotation.Annotations, psputil.ValidatedPSPAnnotation)
if !apiequality.Semantic.DeepEqual(originalPodWithoutPSPAnnotation.Spec, podWithoutPSPAnnotation.Spec) {
- t.Errorf("%s: expected no mutation, got %s", testCaseName, diff.ObjectGoPrintSideBySide(originalPodWithoutPSPAnnotation.Spec, podWithoutPSPAnnotation.Spec))
+ t.Errorf("%s: expected no mutation on Admit, got %s", testCaseName, diff.ObjectGoPrintSideBySide(originalPodWithoutPSPAnnotation.Spec, podWithoutPSPAnnotation.Spec))
}
}
}
- if !shouldPass && err == nil {
- t.Errorf("%s: expected errors but received none", testCaseName)
+ if !shouldPassAdmit && err == nil {
+ t.Errorf("%s: expected errors on Admit but received none", testCaseName)
+ }
+
+ err = plugin.Validate(attrs)
+ if shouldPassValidate && err != nil {
+ t.Errorf("%s: expected no errors on Validate but received %v", testCaseName, err)
+ } else if !shouldPassValidate && err == nil {
+ t.Errorf("%s: expected errors on Validate but received none", testCaseName)
}
}
@@ -1807,7 +1957,7 @@ func TestCreateProvidersFromConstraints(t *testing.T) {
}
for k, v := range testCases {
- admit := &podSecurityPolicyPlugin{
+ admit := &PodSecurityPolicyPlugin{
Handler: kadmission.NewHandler(kadmission.Create, kadmission.Update),
strategyFactory: kpsp.NewSimpleStrategyFactory(),
}
diff --git a/plugin/pkg/admission/securitycontext/scdeny/BUILD b/plugin/pkg/admission/securitycontext/scdeny/BUILD
index 7935b1af4c..a90da5e8f7 100644
--- a/plugin/pkg/admission/securitycontext/scdeny/BUILD
+++ b/plugin/pkg/admission/securitycontext/scdeny/BUILD
@@ -11,7 +11,7 @@ go_library(
srcs = ["admission.go"],
importpath = "k8s.io/kubernetes/plugin/pkg/admission/securitycontext/scdeny",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission:go_default_library",
],
@@ -23,7 +23,7 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/admission/securitycontext/scdeny",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission:go_default_library",
],
)
diff --git a/plugin/pkg/admission/securitycontext/scdeny/admission.go b/plugin/pkg/admission/securitycontext/scdeny/admission.go
index 91a89c263b..cace3843da 100644
--- a/plugin/pkg/admission/securitycontext/scdeny/admission.go
+++ b/plugin/pkg/admission/securitycontext/scdeny/admission.go
@@ -22,7 +22,7 @@ import (
apierrors "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apiserver/pkg/admission"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// Register registers a plugin
diff --git a/plugin/pkg/admission/securitycontext/scdeny/admission_test.go b/plugin/pkg/admission/securitycontext/scdeny/admission_test.go
index f80c4760b6..9fb041c51a 100644
--- a/plugin/pkg/admission/securitycontext/scdeny/admission_test.go
+++ b/plugin/pkg/admission/securitycontext/scdeny/admission_test.go
@@ -20,7 +20,7 @@ import (
"testing"
"k8s.io/apiserver/pkg/admission"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
)
// ensures the SecurityContext is denied if it defines anything more than Caps or Privileged
diff --git a/plugin/pkg/admission/serviceaccount/BUILD b/plugin/pkg/admission/serviceaccount/BUILD
index 4f916fe237..aaeedacddc 100644
--- a/plugin/pkg/admission/serviceaccount/BUILD
+++ b/plugin/pkg/admission/serviceaccount/BUILD
@@ -14,8 +14,8 @@ go_library(
],
importpath = "k8s.io/kubernetes/plugin/pkg/admission/serviceaccount",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/pod:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/informers/informers_generated/internalversion:go_default_library",
"//pkg/client/listers/core/internalversion:go_default_library",
@@ -38,7 +38,7 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/admission/serviceaccount",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/client/clientset_generated/internalclientset/fake:go_default_library",
"//pkg/client/informers/informers_generated/internalversion:go_default_library",
"//pkg/client/listers/core/internalversion:go_default_library",
diff --git a/plugin/pkg/admission/serviceaccount/admission.go b/plugin/pkg/admission/serviceaccount/admission.go
index 0876bb3b6c..6e245ecf8b 100644
--- a/plugin/pkg/admission/serviceaccount/admission.go
+++ b/plugin/pkg/admission/serviceaccount/admission.go
@@ -30,8 +30,8 @@ import (
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apiserver/pkg/admission"
"k8s.io/apiserver/pkg/storage/names"
- "k8s.io/kubernetes/pkg/api"
podutil "k8s.io/kubernetes/pkg/api/pod"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
informers "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion"
corelisters "k8s.io/kubernetes/pkg/client/listers/core/internalversion"
@@ -80,6 +80,8 @@ type serviceAccount struct {
secretLister corelisters.SecretLister
}
+var _ admission.MutationInterface = &serviceAccount{}
+var _ admission.ValidationInterface = &serviceAccount{}
var _ = kubeapiserveradmission.WantsInternalKubeClientSet(&serviceAccount{})
var _ = kubeapiserveradmission.WantsInternalKubeInformerFactory(&serviceAccount{})
@@ -132,18 +134,9 @@ func (a *serviceAccount) ValidateInitialization() error {
}
func (s *serviceAccount) Admit(a admission.Attributes) (err error) {
- if a.GetResource().GroupResource() != api.Resource("pods") {
+ if shouldIgnore(a) {
return nil
}
- obj := a.GetObject()
- if obj == nil {
- return nil
- }
- pod, ok := obj.(*api.Pod)
- if !ok {
- return nil
- }
-
updateInitialized, err := util.IsUpdatingInitializedObject(a)
if err != nil {
return err
@@ -153,9 +146,56 @@ func (s *serviceAccount) Admit(a admission.Attributes) (err error) {
return nil
}
+ pod := a.GetObject().(*api.Pod)
+
// Don't modify the spec of mirror pods.
// That makes the kubelet very angry and confused, and it immediately deletes the pod (because the spec doesn't match)
// That said, don't allow mirror pods to reference ServiceAccounts or SecretVolumeSources either
+ if _, isMirrorPod := pod.Annotations[api.MirrorPodAnnotationKey]; isMirrorPod {
+ return s.Validate(a)
+ }
+
+ // Set the default service account if needed
+ if len(pod.Spec.ServiceAccountName) == 0 {
+ pod.Spec.ServiceAccountName = DefaultServiceAccountName
+ }
+
+ serviceAccount, err := s.getServiceAccount(a.GetNamespace(), pod.Spec.ServiceAccountName)
+ if err != nil {
+ return admission.NewForbidden(a, fmt.Errorf("error looking up service account %s/%s: %v", a.GetNamespace(), pod.Spec.ServiceAccountName, err))
+ }
+ if s.MountServiceAccountToken && shouldAutomount(serviceAccount, pod) {
+ if err := s.mountServiceAccountToken(serviceAccount, pod); err != nil {
+ if _, ok := err.(errors.APIStatus); ok {
+ return err
+ }
+ return admission.NewForbidden(a, err)
+ }
+ }
+ if len(pod.Spec.ImagePullSecrets) == 0 {
+ pod.Spec.ImagePullSecrets = make([]api.LocalObjectReference, len(serviceAccount.ImagePullSecrets))
+ copy(pod.Spec.ImagePullSecrets, serviceAccount.ImagePullSecrets)
+ }
+
+ return s.Validate(a)
+}
+
+func (s *serviceAccount) Validate(a admission.Attributes) (err error) {
+ if shouldIgnore(a) {
+ return nil
+ }
+ updateInitialized, err := util.IsUpdatingInitializedObject(a)
+ if err != nil {
+ return err
+ }
+ if updateInitialized {
+ // related pod spec fields are immutable after the pod is initialized
+ return nil
+ }
+
+ pod := a.GetObject().(*api.Pod)
+
+ // Mirror pods have restrictions on what they can reference
if _, isMirrorPod := pod.Annotations[api.MirrorPodAnnotationKey]; isMirrorPod {
if len(pod.Spec.ServiceAccountName) != 0 {
return admission.NewForbidden(a, fmt.Errorf("a mirror pod may not reference service accounts"))
@@ -171,20 +211,11 @@ func (s *serviceAccount) Admit(a admission.Attributes) (err error) {
return nil
}
- // Set the default service account if needed
- if len(pod.Spec.ServiceAccountName) == 0 {
- pod.Spec.ServiceAccountName = DefaultServiceAccountName
- }
-
// Ensure the referenced service account exists
serviceAccount, err := s.getServiceAccount(a.GetNamespace(), pod.Spec.ServiceAccountName)
if err != nil {
return admission.NewForbidden(a, fmt.Errorf("error looking up service account %s/%s: %v", a.GetNamespace(), pod.Spec.ServiceAccountName, err))
}
- if serviceAccount == nil {
- // TODO: convert to a ServerTimeout error (or other error that sends a Retry-After header)
- return admission.NewForbidden(a, fmt.Errorf("service account %s/%s was not found, retry after the service account is created", a.GetNamespace(), pod.Spec.ServiceAccountName))
- }
if s.enforceMountableSecrets(serviceAccount) {
if err := s.limitSecretReferences(serviceAccount, pod); err != nil {
@@ -192,23 +223,25 @@ func (s *serviceAccount) Admit(a admission.Attributes) (err error) {
}
}
- if s.MountServiceAccountToken && shouldAutomount(serviceAccount, pod) {
- if err := s.mountServiceAccountToken(serviceAccount, pod); err != nil {
- if _, ok := err.(errors.APIStatus); ok {
- return err
- }
- return admission.NewForbidden(a, err)
- }
- }
-
- if len(pod.Spec.ImagePullSecrets) == 0 {
- pod.Spec.ImagePullSecrets = make([]api.LocalObjectReference, len(serviceAccount.ImagePullSecrets))
- copy(pod.Spec.ImagePullSecrets, serviceAccount.ImagePullSecrets)
- }
-
return nil
}
+func shouldIgnore(a admission.Attributes) bool {
+ if a.GetResource().GroupResource() != api.Resource("pods") {
+ return true
+ }
+ obj := a.GetObject()
+ if obj == nil {
+ return true
+ }
+ _, ok := obj.(*api.Pod)
+ if !ok {
+ return true
+ }
+
+ return false
+}
+
func shouldAutomount(sa *api.ServiceAccount, pod *api.Pod) bool {
// Pod's preference wins
if pod.Spec.AutomountServiceAccountToken != nil {
@@ -267,7 +300,7 @@ func (s *serviceAccount) getServiceAccount(namespace string, name string) (*api.
}
}
- return nil, nil
+ return nil, errors.NewNotFound(api.Resource("serviceaccount"), name)
}
// getReferencedServiceAccountToken returns the name of the first referenced secret which is a ServiceAccountToken for the service account
diff --git a/plugin/pkg/admission/serviceaccount/admission_test.go b/plugin/pkg/admission/serviceaccount/admission_test.go
index 8033748101..55ca3d0e8e 100644
--- a/plugin/pkg/admission/serviceaccount/admission_test.go
+++ b/plugin/pkg/admission/serviceaccount/admission_test.go
@@ -26,7 +26,7 @@ import (
"k8s.io/apimachinery/pkg/types"
"k8s.io/apiserver/pkg/admission"
"k8s.io/client-go/tools/cache"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
informers "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion"
corelisters "k8s.io/kubernetes/pkg/client/listers/core/internalversion"
diff --git a/plugin/pkg/admission/storageclass/setdefault/BUILD b/plugin/pkg/admission/storageclass/setdefault/BUILD
index 3e971c490e..27b114d064 100644
--- a/plugin/pkg/admission/storageclass/setdefault/BUILD
+++ b/plugin/pkg/admission/storageclass/setdefault/BUILD
@@ -11,8 +11,8 @@ go_library(
srcs = ["admission.go"],
importpath = "k8s.io/kubernetes/plugin/pkg/admission/storageclass/setdefault",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/helper:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
"//pkg/apis/storage:go_default_library",
"//pkg/apis/storage/util:go_default_library",
"//pkg/client/informers/informers_generated/internalversion:go_default_library",
@@ -31,7 +31,7 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/admission/storageclass/setdefault",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/storage:go_default_library",
"//pkg/apis/storage/util:go_default_library",
"//pkg/client/informers/informers_generated/internalversion:go_default_library",
diff --git a/plugin/pkg/admission/storageclass/setdefault/admission.go b/plugin/pkg/admission/storageclass/setdefault/admission.go
index 39aaaac00a..6a9fe197a0 100644
--- a/plugin/pkg/admission/storageclass/setdefault/admission.go
+++ b/plugin/pkg/admission/storageclass/setdefault/admission.go
@@ -25,8 +25,8 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/labels"
admission "k8s.io/apiserver/pkg/admission"
- api "k8s.io/kubernetes/pkg/api"
- "k8s.io/kubernetes/pkg/api/helper"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
"k8s.io/kubernetes/pkg/apis/storage"
storageutil "k8s.io/kubernetes/pkg/apis/storage/util"
informers "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion"
@@ -54,6 +54,7 @@ type claimDefaulterPlugin struct {
}
var _ admission.Interface = &claimDefaulterPlugin{}
+var _ admission.MutationInterface = &claimDefaulterPlugin{}
var _ = kubeapiserveradmission.WantsInternalKubeInformerFactory(&claimDefaulterPlugin{})
// newPlugin creates a new admission plugin.
diff --git a/plugin/pkg/admission/storageclass/setdefault/admission_test.go b/plugin/pkg/admission/storageclass/setdefault/admission_test.go
index e0516eaf13..6be3765430 100644
--- a/plugin/pkg/admission/storageclass/setdefault/admission_test.go
+++ b/plugin/pkg/admission/storageclass/setdefault/admission_test.go
@@ -23,7 +23,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apiserver/pkg/admission"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/storage"
storageutil "k8s.io/kubernetes/pkg/apis/storage/util"
informers "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion"
diff --git a/plugin/pkg/auth/authenticator/token/bootstrap/BUILD b/plugin/pkg/auth/authenticator/token/bootstrap/BUILD
index c852e70587..b6f0426ab1 100644
--- a/plugin/pkg/auth/authenticator/token/bootstrap/BUILD
+++ b/plugin/pkg/auth/authenticator/token/bootstrap/BUILD
@@ -12,7 +12,7 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/auth/authenticator/token/bootstrap",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/bootstrap/api:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
@@ -27,7 +27,7 @@ go_library(
srcs = ["bootstrap.go"],
importpath = "k8s.io/kubernetes/plugin/pkg/auth/authenticator/token/bootstrap",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/bootstrap/api:go_default_library",
"//pkg/client/listers/core/internalversion:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
diff --git a/plugin/pkg/auth/authenticator/token/bootstrap/bootstrap.go b/plugin/pkg/auth/authenticator/token/bootstrap/bootstrap.go
index fecea0f685..90a0137489 100644
--- a/plugin/pkg/auth/authenticator/token/bootstrap/bootstrap.go
+++ b/plugin/pkg/auth/authenticator/token/bootstrap/bootstrap.go
@@ -31,7 +31,7 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apiserver/pkg/authentication/user"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
bootstrapapi "k8s.io/kubernetes/pkg/bootstrap/api"
"k8s.io/kubernetes/pkg/client/listers/core/internalversion"
)
diff --git a/plugin/pkg/auth/authenticator/token/bootstrap/bootstrap_test.go b/plugin/pkg/auth/authenticator/token/bootstrap/bootstrap_test.go
index 7e76faaf63..f319cc8667 100644
--- a/plugin/pkg/auth/authenticator/token/bootstrap/bootstrap_test.go
+++ b/plugin/pkg/auth/authenticator/token/bootstrap/bootstrap_test.go
@@ -25,7 +25,7 @@ import (
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apiserver/pkg/authentication/user"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
bootstrapapi "k8s.io/kubernetes/pkg/bootstrap/api"
)
diff --git a/plugin/pkg/auth/authorizer/node/BUILD b/plugin/pkg/auth/authorizer/node/BUILD
index fb4aa7008a..1dbbdb2458 100644
--- a/plugin/pkg/auth/authorizer/node/BUILD
+++ b/plugin/pkg/auth/authorizer/node/BUILD
@@ -12,7 +12,7 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/auth/authorizer/node",
library = ":go_default_library",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/auth/nodeidentifier:go_default_library",
"//plugin/pkg/auth/authorizer/rbac/bootstrappolicy:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
@@ -30,9 +30,9 @@ go_library(
],
importpath = "k8s.io/kubernetes/plugin/pkg/auth/authorizer/node",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/persistentvolume:go_default_library",
"//pkg/api/pod:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/rbac:go_default_library",
"//pkg/auth/nodeidentifier:go_default_library",
"//pkg/client/informers/informers_generated/internalversion/core/internalversion:go_default_library",
diff --git a/plugin/pkg/auth/authorizer/node/graph.go b/plugin/pkg/auth/authorizer/node/graph.go
index cdcd0201f8..729cad2ea7 100644
--- a/plugin/pkg/auth/authorizer/node/graph.go
+++ b/plugin/pkg/auth/authorizer/node/graph.go
@@ -19,9 +19,9 @@ package node
import (
"sync"
- "k8s.io/kubernetes/pkg/api"
pvutil "k8s.io/kubernetes/pkg/api/persistentvolume"
podutil "k8s.io/kubernetes/pkg/api/pod"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/third_party/forked/gonum/graph"
"k8s.io/kubernetes/third_party/forked/gonum/graph/simple"
)
diff --git a/plugin/pkg/auth/authorizer/node/graph_populator.go b/plugin/pkg/auth/authorizer/node/graph_populator.go
index ecea060d6e..64ea648227 100644
--- a/plugin/pkg/auth/authorizer/node/graph_populator.go
+++ b/plugin/pkg/auth/authorizer/node/graph_populator.go
@@ -20,7 +20,7 @@ import (
"github.com/golang/glog"
"k8s.io/client-go/tools/cache"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
coreinformers "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/core/internalversion"
)
diff --git a/plugin/pkg/auth/authorizer/node/node_authorizer.go b/plugin/pkg/auth/authorizer/node/node_authorizer.go
index febe7fbda3..62ab4a5b08 100644
--- a/plugin/pkg/auth/authorizer/node/node_authorizer.go
+++ b/plugin/pkg/auth/authorizer/node/node_authorizer.go
@@ -23,7 +23,7 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apiserver/pkg/authorization/authorizer"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
rbacapi "k8s.io/kubernetes/pkg/apis/rbac"
"k8s.io/kubernetes/pkg/auth/nodeidentifier"
"k8s.io/kubernetes/plugin/pkg/auth/authorizer/rbac"
diff --git a/plugin/pkg/auth/authorizer/node/node_authorizer_test.go b/plugin/pkg/auth/authorizer/node/node_authorizer_test.go
index b4cf82d6a1..b6410dce98 100644
--- a/plugin/pkg/auth/authorizer/node/node_authorizer_test.go
+++ b/plugin/pkg/auth/authorizer/node/node_authorizer_test.go
@@ -27,7 +27,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apiserver/pkg/authentication/user"
"k8s.io/apiserver/pkg/authorization/authorizer"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/auth/nodeidentifier"
"k8s.io/kubernetes/plugin/pkg/auth/authorizer/rbac/bootstrappolicy"
)
diff --git a/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/BUILD b/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/BUILD
index 56298d5126..e503bb50c6 100644
--- a/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/BUILD
+++ b/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/BUILD
@@ -35,9 +35,9 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/auth/authorizer/rbac/bootstrappolicy_test",
deps = [
":go_default_library",
- "//pkg/api:go_default_library",
- "//pkg/api/install:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//pkg/apis/rbac:go_default_library",
"//pkg/apis/rbac/install:go_default_library",
"//pkg/registry/rbac/validation:go_default_library",
diff --git a/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/controller_policy.go b/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/controller_policy.go
index 6a32aa80a2..f1270f611b 100644
--- a/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/controller_policy.go
+++ b/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/controller_policy.go
@@ -68,6 +68,14 @@ func buildControllerRoles() ([]rbac.ClusterRole, []rbac.ClusterRoleBinding) {
eventsRule(),
},
})
+ addControllerRole(&controllerRoles, &controllerRoleBindings, rbac.ClusterRole{
+ ObjectMeta: metav1.ObjectMeta{Name: saRolePrefix + "clusterrole-aggregation-controller"},
+ Rules: []rbac.PolicyRule{
+ // this controller must have full permissions to allow it to mutate any role in any way
+ rbac.NewRule("*").Groups("*").Resources("*").RuleOrDie(),
+ rbac.NewRule("*").URLs("*").RuleOrDie(),
+ },
+ })
addControllerRole(&controllerRoles, &controllerRoleBindings, rbac.ClusterRole{
ObjectMeta: metav1.ObjectMeta{Name: saRolePrefix + "cronjob-controller"},
Rules: []rbac.PolicyRule{
diff --git a/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/controller_policy_test.go b/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/controller_policy_test.go
index e1c98019bc..f1064f2708 100644
--- a/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/controller_policy_test.go
+++ b/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/controller_policy_test.go
@@ -32,6 +32,7 @@ var rolesWithAllowStar = sets.NewString(
saRolePrefix+"generic-garbage-collector",
saRolePrefix+"resourcequota-controller",
saRolePrefix+"horizontal-pod-autoscaler",
+ saRolePrefix+"clusterrole-aggregation-controller",
)
// TestNoStarsForControllers confirms that no controller role has star verbs, groups,
diff --git a/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/policy.go b/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/policy.go
index 01d5547fbd..16a5d9a44e 100644
--- a/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/policy.go
+++ b/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/policy.go
@@ -176,6 +176,30 @@ func ClusterRoles() []rbac.ClusterRole {
{
// a role for a namespace level admin. It is `edit` plus the power to grant permissions to other users.
ObjectMeta: metav1.ObjectMeta{Name: "admin"},
+ AggregationRule: &rbac.AggregationRule{
+ ClusterRoleSelectors: []metav1.LabelSelector{{MatchLabels: map[string]string{"rbac.authorization.k8s.io/aggregate-to-admin": "true"}}},
+ },
+ },
+ {
+ // a role for a namespace level editor. It grants access to all user level actions in a namespace.
+ // It does not grant powers for "privileged" resources which are domain of the system: `/status`
+ // subresources or `quota`/`limits` which are used to control namespaces
+ ObjectMeta: metav1.ObjectMeta{Name: "edit"},
+ AggregationRule: &rbac.AggregationRule{
+ ClusterRoleSelectors: []metav1.LabelSelector{{MatchLabels: map[string]string{"rbac.authorization.k8s.io/aggregate-to-edit": "true"}}},
+ },
+ },
+ {
+ // a role for namespace level viewing. It grants Read-only access to non-escalating resources in
+ // a namespace.
+ ObjectMeta: metav1.ObjectMeta{Name: "view"},
+ AggregationRule: &rbac.AggregationRule{
+ ClusterRoleSelectors: []metav1.LabelSelector{{MatchLabels: map[string]string{"rbac.authorization.k8s.io/aggregate-to-view": "true"}}},
+ },
+ },
+ {
+ // a role for a namespace level admin. It is `edit` plus the power to grant permissions to other users.
+ ObjectMeta: metav1.ObjectMeta{Name: "system:aggregate-to-admin", Labels: map[string]string{"rbac.authorization.k8s.io/aggregate-to-admin": "true"}},
Rules: []rbac.PolicyRule{
rbac.NewRule(ReadWrite...).Groups(legacyGroup).Resources("pods", "pods/attach", "pods/proxy", "pods/exec", "pods/portforward").RuleOrDie(),
rbac.NewRule(ReadWrite...).Groups(legacyGroup).Resources("replicationcontrollers", "replicationcontrollers/scale", "serviceaccounts",
@@ -211,7 +235,7 @@ func ClusterRoles() []rbac.ClusterRole {
// a role for a namespace level editor. It grants access to all user level actions in a namespace.
// It does not grant powers for "privileged" resources which are domain of the system: `/status`
// subresources or `quota`/`limits` which are used to control namespaces
- ObjectMeta: metav1.ObjectMeta{Name: "edit"},
+ ObjectMeta: metav1.ObjectMeta{Name: "system:aggregate-to-edit", Labels: map[string]string{"rbac.authorization.k8s.io/aggregate-to-edit": "true"}},
Rules: []rbac.PolicyRule{
rbac.NewRule(ReadWrite...).Groups(legacyGroup).Resources("pods", "pods/attach", "pods/proxy", "pods/exec", "pods/portforward").RuleOrDie(),
rbac.NewRule(ReadWrite...).Groups(legacyGroup).Resources("replicationcontrollers", "replicationcontrollers/scale", "serviceaccounts",
@@ -242,7 +266,7 @@ func ClusterRoles() []rbac.ClusterRole {
{
// a role for namespace level viewing. It grants Read-only access to non-escalating resources in
// a namespace.
- ObjectMeta: metav1.ObjectMeta{Name: "view"},
+ ObjectMeta: metav1.ObjectMeta{Name: "system:aggregate-to-view", Labels: map[string]string{"rbac.authorization.k8s.io/aggregate-to-view": "true"}},
Rules: []rbac.PolicyRule{
rbac.NewRule(Read...).Groups(legacyGroup).Resources("pods", "replicationcontrollers", "replicationcontrollers/scale", "serviceaccounts",
"services", "endpoints", "persistentvolumeclaims", "configmaps").RuleOrDie(),
@@ -444,3 +468,11 @@ func ClusterRoleBindings() []rbac.ClusterRoleBinding {
return rolebindings
}
+
+func ClusterRolesToAggregate() map[string]string {
+ return map[string]string{
+ "admin": "system:aggregate-to-admin",
+ "edit": "system:aggregate-to-edit",
+ "view": "system:aggregate-to-view",
+ }
+}
diff --git a/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/policy_test.go b/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/policy_test.go
index 47fd295c2a..830d92576f 100644
--- a/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/policy_test.go
+++ b/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/policy_test.go
@@ -31,9 +31,9 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/diff"
"k8s.io/apimachinery/pkg/util/sets"
- "k8s.io/kubernetes/pkg/api"
- _ "k8s.io/kubernetes/pkg/api/install"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ api "k8s.io/kubernetes/pkg/apis/core"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
"k8s.io/kubernetes/pkg/apis/rbac"
_ "k8s.io/kubernetes/pkg/apis/rbac/install"
rbacregistryvalidation "k8s.io/kubernetes/pkg/registry/rbac/validation"
@@ -53,11 +53,11 @@ func getSemanticRoles(roles []rbac.ClusterRole) semanticRoles {
for i := range roles {
role := roles[i]
switch role.Name {
- case "admin":
+ case "system:aggregate-to-admin":
ret.admin = &role
- case "edit":
+ case "system:aggregate-to-edit":
ret.edit = &role
- case "view":
+ case "system:aggregate-to-view":
ret.view = &role
}
}
@@ -319,8 +319,9 @@ func TestClusterRoleLabel(t *testing.T) {
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
- if got, want := accessor.GetLabels(), map[string]string{"kubernetes.io/bootstrapping": "rbac-defaults"}; !reflect.DeepEqual(got, want) {
- t.Errorf("ClusterRole: %s GetLabels() = %s, want %s", accessor.GetName(), got, want)
+
+ if accessor.GetLabels()["kubernetes.io/bootstrapping"] != "rbac-defaults" {
+ t.Errorf("ClusterRole: %s GetLabels() = %s, want %s", accessor.GetName(), accessor.GetLabels(), map[string]string{"kubernetes.io/bootstrapping": "rbac-defaults"})
}
}
diff --git a/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/testdata/cluster-roles.yaml b/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/testdata/cluster-roles.yaml
index bee0f1354e..7fe801931a 100644
--- a/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/testdata/cluster-roles.yaml
+++ b/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/testdata/cluster-roles.yaml
@@ -1,6 +1,10 @@
apiVersion: v1
items:
-- apiVersion: rbac.authorization.k8s.io/v1
+- aggregationRule:
+ clusterRoleSelectors:
+ - matchLabels:
+ rbac.authorization.k8s.io/aggregate-to-admin: "true"
+ apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
annotations:
@@ -9,6 +13,51 @@ items:
labels:
kubernetes.io/bootstrapping: rbac-defaults
name: admin
+ rules: null
+- apiVersion: rbac.authorization.k8s.io/v1
+ kind: ClusterRole
+ metadata:
+ annotations:
+ rbac.authorization.kubernetes.io/autoupdate: "true"
+ creationTimestamp: null
+ labels:
+ kubernetes.io/bootstrapping: rbac-defaults
+ name: cluster-admin
+ rules:
+ - apiGroups:
+ - '*'
+ resources:
+ - '*'
+ verbs:
+ - '*'
+ - nonResourceURLs:
+ - '*'
+ verbs:
+ - '*'
+- aggregationRule:
+ clusterRoleSelectors:
+ - matchLabels:
+ rbac.authorization.k8s.io/aggregate-to-edit: "true"
+ apiVersion: rbac.authorization.k8s.io/v1
+ kind: ClusterRole
+ metadata:
+ annotations:
+ rbac.authorization.kubernetes.io/autoupdate: "true"
+ creationTimestamp: null
+ labels:
+ kubernetes.io/bootstrapping: rbac-defaults
+ name: edit
+ rules: null
+- apiVersion: rbac.authorization.k8s.io/v1
+ kind: ClusterRole
+ metadata:
+ annotations:
+ rbac.authorization.kubernetes.io/autoupdate: "true"
+ creationTimestamp: null
+ labels:
+ kubernetes.io/bootstrapping: rbac-defaults
+ rbac.authorization.k8s.io/aggregate-to-admin: "true"
+ name: system:aggregate-to-admin
rules:
- apiGroups:
- ""
@@ -185,27 +234,8 @@ items:
creationTimestamp: null
labels:
kubernetes.io/bootstrapping: rbac-defaults
- name: cluster-admin
- rules:
- - apiGroups:
- - '*'
- resources:
- - '*'
- verbs:
- - '*'
- - nonResourceURLs:
- - '*'
- verbs:
- - '*'
-- apiVersion: rbac.authorization.k8s.io/v1
- kind: ClusterRole
- metadata:
- annotations:
- rbac.authorization.kubernetes.io/autoupdate: "true"
- creationTimestamp: null
- labels:
- kubernetes.io/bootstrapping: rbac-defaults
- name: edit
+ rbac.authorization.k8s.io/aggregate-to-edit: "true"
+ name: system:aggregate-to-edit
rules:
- apiGroups:
- ""
@@ -354,6 +384,108 @@ items:
- patch
- update
- watch
+- apiVersion: rbac.authorization.k8s.io/v1
+ kind: ClusterRole
+ metadata:
+ annotations:
+ rbac.authorization.kubernetes.io/autoupdate: "true"
+ creationTimestamp: null
+ labels:
+ kubernetes.io/bootstrapping: rbac-defaults
+ rbac.authorization.k8s.io/aggregate-to-view: "true"
+ name: system:aggregate-to-view
+ rules:
+ - apiGroups:
+ - ""
+ resources:
+ - configmaps
+ - endpoints
+ - persistentvolumeclaims
+ - pods
+ - replicationcontrollers
+ - replicationcontrollers/scale
+ - serviceaccounts
+ - services
+ verbs:
+ - get
+ - list
+ - watch
+ - apiGroups:
+ - ""
+ resources:
+ - bindings
+ - events
+ - limitranges
+ - namespaces/status
+ - pods/log
+ - pods/status
+ - replicationcontrollers/status
+ - resourcequotas
+ - resourcequotas/status
+ verbs:
+ - get
+ - list
+ - watch
+ - apiGroups:
+ - ""
+ resources:
+ - namespaces
+ verbs:
+ - get
+ - list
+ - watch
+ - apiGroups:
+ - apps
+ resources:
+ - daemonsets
+ - deployments
+ - deployments/scale
+ - replicasets
+ - replicasets/scale
+ - statefulsets
+ verbs:
+ - get
+ - list
+ - watch
+ - apiGroups:
+ - autoscaling
+ resources:
+ - horizontalpodautoscalers
+ verbs:
+ - get
+ - list
+ - watch
+ - apiGroups:
+ - batch
+ resources:
+ - cronjobs
+ - jobs
+ verbs:
+ - get
+ - list
+ - watch
+ - apiGroups:
+ - extensions
+ resources:
+ - daemonsets
+ - deployments
+ - deployments/scale
+ - ingresses
+ - replicasets
+ - replicasets/scale
+ - replicationcontrollers/scale
+ verbs:
+ - get
+ - list
+ - watch
+ - apiGroups:
+ - policy
+ resources:
+ - poddisruptionbudgets
+ verbs:
+ - get
+ - list
+ - watch
- apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
@@ -935,7 +1067,11 @@ items:
- create
- patch
- update
-- apiVersion: rbac.authorization.k8s.io/v1
+- aggregationRule:
+ clusterRoleSelectors:
+ - matchLabels:
+ rbac.authorization.k8s.io/aggregate-to-view: "true"
+ apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
annotations:
@@ -944,97 +1080,6 @@ items:
labels:
kubernetes.io/bootstrapping: rbac-defaults
name: view
- rules:
- - apiGroups:
- - ""
- resources:
- - configmaps
- - endpoints
- - persistentvolumeclaims
- - pods
- - replicationcontrollers
- - replicationcontrollers/scale
- - serviceaccounts
- - services
- verbs:
- - get
- - list
- - watch
- - apiGroups:
- - ""
- resources:
- - bindings
- - events
- - limitranges
- - namespaces/status
- - pods/log
- - pods/status
- - replicationcontrollers/status
- - resourcequotas
- - resourcequotas/status
- verbs:
- - get
- - list
- - watch
- - apiGroups:
- - ""
- resources:
- - namespaces
- verbs:
- - get
- - list
- - watch
- - apiGroups:
- - apps
- resources:
- - daemonsets
- - deployments
- - deployments/scale
- - replicasets
- - replicasets/scale
- - statefulsets
- verbs:
- - get
- - list
- - watch
- - apiGroups:
- - autoscaling
- resources:
- - horizontalpodautoscalers
- verbs:
- - get
- - list
- - watch
- - apiGroups:
- - batch
- resources:
- - cronjobs
- - jobs
- verbs:
- - get
- - list
- - watch
- - apiGroups:
- - extensions
- resources:
- - daemonsets
- - deployments
- - deployments/scale
- - ingresses
- - replicasets
- - replicasets/scale
- - replicationcontrollers/scale
- verbs:
- - get
- - list
- - watch
- - apiGroups:
- - policy
- resources:
- - poddisruptionbudgets
- verbs:
- - get
- - list
- - watch
+ rules: null
kind: List
metadata: {}
diff --git a/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/testdata/controller-role-bindings.yaml b/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/testdata/controller-role-bindings.yaml
index ddb59dbcef..ff5d47867b 100644
--- a/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/testdata/controller-role-bindings.yaml
+++ b/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/testdata/controller-role-bindings.yaml
@@ -34,6 +34,23 @@ items:
- kind: ServiceAccount
name: certificate-controller
namespace: kube-system
+- apiVersion: rbac.authorization.k8s.io/v1
+ kind: ClusterRoleBinding
+ metadata:
+ annotations:
+ rbac.authorization.kubernetes.io/autoupdate: "true"
+ creationTimestamp: null
+ labels:
+ kubernetes.io/bootstrapping: rbac-defaults
+ name: system:controller:clusterrole-aggregation-controller
+ roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: ClusterRole
+ name: system:controller:clusterrole-aggregation-controller
+ subjects:
+ - kind: ServiceAccount
+ name: clusterrole-aggregation-controller
+ namespace: kube-system
- apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
diff --git a/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/testdata/controller-roles.yaml b/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/testdata/controller-roles.yaml
index d01adab43c..0af7efbfa3 100644
--- a/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/testdata/controller-roles.yaml
+++ b/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/testdata/controller-roles.yaml
@@ -87,6 +87,26 @@ items:
- create
- patch
- update
+- apiVersion: rbac.authorization.k8s.io/v1
+ kind: ClusterRole
+ metadata:
+ annotations:
+ rbac.authorization.kubernetes.io/autoupdate: "true"
+ creationTimestamp: null
+ labels:
+ kubernetes.io/bootstrapping: rbac-defaults
+ name: system:controller:clusterrole-aggregation-controller
+ rules:
+ - apiGroups:
+ - '*'
+ resources:
+ - '*'
+ verbs:
+ - '*'
+ - nonResourceURLs:
+ - '*'
+ verbs:
+ - '*'
- apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
diff --git a/plugin/pkg/scheduler/algorithm/predicates/BUILD b/plugin/pkg/scheduler/algorithm/predicates/BUILD
index 17ff9deb90..8b5dbfbb3c 100644
--- a/plugin/pkg/scheduler/algorithm/predicates/BUILD
+++ b/plugin/pkg/scheduler/algorithm/predicates/BUILD
@@ -16,8 +16,8 @@ go_library(
],
importpath = "k8s.io/kubernetes/plugin/pkg/scheduler/algorithm/predicates",
deps = [
- "//pkg/api/v1/helper:go_default_library",
- "//pkg/api/v1/helper/qos:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
+ "//pkg/apis/core/v1/helper/qos:go_default_library",
"//pkg/cloudprovider/providers/aws:go_default_library",
"//pkg/features:go_default_library",
"//pkg/kubelet/apis:go_default_library",
@@ -49,7 +49,7 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/scheduler/algorithm/predicates",
library = ":go_default_library",
deps = [
- "//pkg/api/v1/helper:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
"//pkg/kubelet/apis:go_default_library",
"//plugin/pkg/scheduler/algorithm:go_default_library",
"//plugin/pkg/scheduler/schedulercache:go_default_library",
diff --git a/plugin/pkg/scheduler/algorithm/predicates/predicates.go b/plugin/pkg/scheduler/algorithm/predicates/predicates.go
index 355aa132f5..6d54e32a8b 100644
--- a/plugin/pkg/scheduler/algorithm/predicates/predicates.go
+++ b/plugin/pkg/scheduler/algorithm/predicates/predicates.go
@@ -31,8 +31,8 @@ import (
utilfeature "k8s.io/apiserver/pkg/util/feature"
corelisters "k8s.io/client-go/listers/core/v1"
"k8s.io/client-go/util/workqueue"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
- v1qos "k8s.io/kubernetes/pkg/api/v1/helper/qos"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
+ v1qos "k8s.io/kubernetes/pkg/apis/core/v1/helper/qos"
"k8s.io/kubernetes/pkg/cloudprovider/providers/aws"
"k8s.io/kubernetes/pkg/features"
kubeletapis "k8s.io/kubernetes/pkg/kubelet/apis"
diff --git a/plugin/pkg/scheduler/algorithm/predicates/predicates_test.go b/plugin/pkg/scheduler/algorithm/predicates/predicates_test.go
index 8eb2d41be6..bd02f92d93 100644
--- a/plugin/pkg/scheduler/algorithm/predicates/predicates_test.go
+++ b/plugin/pkg/scheduler/algorithm/predicates/predicates_test.go
@@ -26,7 +26,7 @@ import (
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
kubeletapis "k8s.io/kubernetes/pkg/kubelet/apis"
"k8s.io/kubernetes/plugin/pkg/scheduler/algorithm"
"k8s.io/kubernetes/plugin/pkg/scheduler/schedulercache"
diff --git a/plugin/pkg/scheduler/algorithm/priorities/BUILD b/plugin/pkg/scheduler/algorithm/priorities/BUILD
index 9e78e1dca3..1574059568 100644
--- a/plugin/pkg/scheduler/algorithm/priorities/BUILD
+++ b/plugin/pkg/scheduler/algorithm/priorities/BUILD
@@ -24,7 +24,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/plugin/pkg/scheduler/algorithm/priorities",
deps = [
- "//pkg/api/v1/helper:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
"//pkg/kubelet/apis:go_default_library",
"//pkg/util/node:go_default_library",
"//plugin/pkg/scheduler/algorithm:go_default_library",
diff --git a/plugin/pkg/scheduler/algorithm/priorities/interpod_affinity.go b/plugin/pkg/scheduler/algorithm/priorities/interpod_affinity.go
index 7abe732d45..ae168d9c76 100644
--- a/plugin/pkg/scheduler/algorithm/priorities/interpod_affinity.go
+++ b/plugin/pkg/scheduler/algorithm/priorities/interpod_affinity.go
@@ -37,14 +37,14 @@ type InterPodAffinity struct {
info predicates.NodeInfo
nodeLister algorithm.NodeLister
podLister algorithm.PodLister
- hardPodAffinityWeight int
+ hardPodAffinityWeight int32
}
func NewInterPodAffinityPriority(
info predicates.NodeInfo,
nodeLister algorithm.NodeLister,
podLister algorithm.PodLister,
- hardPodAffinityWeight int) algorithm.PriorityFunction {
+ hardPodAffinityWeight int32) algorithm.PriorityFunction {
interPodAffinity := &InterPodAffinity{
info: info,
nodeLister: nodeLister,
diff --git a/plugin/pkg/scheduler/algorithm/priorities/interpod_affinity_test.go b/plugin/pkg/scheduler/algorithm/priorities/interpod_affinity_test.go
index 7ccd963bcf..6dd3429927 100644
--- a/plugin/pkg/scheduler/algorithm/priorities/interpod_affinity_test.go
+++ b/plugin/pkg/scheduler/algorithm/priorities/interpod_affinity_test.go
@@ -561,7 +561,7 @@ func TestHardPodAffinitySymmetricWeight(t *testing.T) {
pod *v1.Pod
pods []*v1.Pod
nodes []*v1.Node
- hardPodAffinityWeight int
+ hardPodAffinityWeight int32
expectedList schedulerapi.HostPriorityList
test string
}{
diff --git a/plugin/pkg/scheduler/algorithm/priorities/metadata_test.go b/plugin/pkg/scheduler/algorithm/priorities/metadata_test.go
index b8fd653ba2..5cea6b6ce7 100644
--- a/plugin/pkg/scheduler/algorithm/priorities/metadata_test.go
+++ b/plugin/pkg/scheduler/algorithm/priorities/metadata_test.go
@@ -94,6 +94,24 @@ func TestPriorityMetadata(t *testing.T) {
Tolerations: tolerations,
},
}
+ podWithAffinityAndRequests := &v1.Pod{
+ Spec: v1.PodSpec{
+ Containers: []v1.Container{
+ {
+ Name: "container",
+ Image: "image",
+ ImagePullPolicy: "Always",
+ Resources: v1.ResourceRequirements{
+ Requests: v1.ResourceList{
+ v1.ResourceCPU: resource.MustParse("200m"),
+ v1.ResourceMemory: resource.MustParse("2000"),
+ },
+ },
+ },
+ },
+ Affinity: podAffinity,
+ },
+ }
tests := []struct {
pod *v1.Pod
test string
@@ -122,6 +140,15 @@ func TestPriorityMetadata(t *testing.T) {
},
test: "Produce a priorityMetadata with specified requests",
},
+ {
+ pod: podWithAffinityAndRequests,
+ expected: &priorityMetadata{
+ nonZeroRequest: specifiedReqs,
+ podTolerations: nil,
+ affinity: podAffinity,
+ },
+ test: "Produce a priorityMetadata with specified requests",
+ },
}
for _, test := range tests {
ptData := PriorityMetadata(test.pod, nil)
diff --git a/plugin/pkg/scheduler/algorithm/priorities/node_affinity.go b/plugin/pkg/scheduler/algorithm/priorities/node_affinity.go
index 1f62091042..6144955201 100644
--- a/plugin/pkg/scheduler/algorithm/priorities/node_affinity.go
+++ b/plugin/pkg/scheduler/algorithm/priorities/node_affinity.go
@@ -21,7 +21,7 @@ import (
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/labels"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
schedulerapi "k8s.io/kubernetes/plugin/pkg/scheduler/api"
"k8s.io/kubernetes/plugin/pkg/scheduler/schedulercache"
diff --git a/plugin/pkg/scheduler/algorithm/priorities/node_prefer_avoid_pods.go b/plugin/pkg/scheduler/algorithm/priorities/node_prefer_avoid_pods.go
index 985e323f46..c4311fb3ab 100644
--- a/plugin/pkg/scheduler/algorithm/priorities/node_prefer_avoid_pods.go
+++ b/plugin/pkg/scheduler/algorithm/priorities/node_prefer_avoid_pods.go
@@ -20,7 +20,7 @@ import (
"fmt"
"k8s.io/api/core/v1"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
priorityutil "k8s.io/kubernetes/plugin/pkg/scheduler/algorithm/priorities/util"
schedulerapi "k8s.io/kubernetes/plugin/pkg/scheduler/api"
"k8s.io/kubernetes/plugin/pkg/scheduler/schedulercache"
diff --git a/plugin/pkg/scheduler/algorithm/priorities/taint_toleration.go b/plugin/pkg/scheduler/algorithm/priorities/taint_toleration.go
index a017531f2f..8e30b02583 100644
--- a/plugin/pkg/scheduler/algorithm/priorities/taint_toleration.go
+++ b/plugin/pkg/scheduler/algorithm/priorities/taint_toleration.go
@@ -20,7 +20,7 @@ import (
"fmt"
"k8s.io/api/core/v1"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
schedulerapi "k8s.io/kubernetes/plugin/pkg/scheduler/api"
"k8s.io/kubernetes/plugin/pkg/scheduler/schedulercache"
diff --git a/plugin/pkg/scheduler/algorithmprovider/defaults/BUILD b/plugin/pkg/scheduler/algorithmprovider/defaults/BUILD
index cfa986a4ee..11bd8b9289 100644
--- a/plugin/pkg/scheduler/algorithmprovider/defaults/BUILD
+++ b/plugin/pkg/scheduler/algorithmprovider/defaults/BUILD
@@ -32,8 +32,8 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/scheduler/algorithmprovider/defaults",
library = ":go_default_library",
deps = [
- "//pkg/api/install:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//plugin/pkg/scheduler/api:go_default_library",
"//plugin/pkg/scheduler/api/latest:go_default_library",
"//plugin/pkg/scheduler/factory:go_default_library",
diff --git a/plugin/pkg/scheduler/algorithmprovider/defaults/compatibility_test.go b/plugin/pkg/scheduler/algorithmprovider/defaults/compatibility_test.go
index 8fe4a9d68c..71283193a3 100644
--- a/plugin/pkg/scheduler/algorithmprovider/defaults/compatibility_test.go
+++ b/plugin/pkg/scheduler/algorithmprovider/defaults/compatibility_test.go
@@ -29,8 +29,8 @@ import (
clientset "k8s.io/client-go/kubernetes"
restclient "k8s.io/client-go/rest"
utiltesting "k8s.io/client-go/util/testing"
- _ "k8s.io/kubernetes/pkg/api/install"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
schedulerapi "k8s.io/kubernetes/plugin/pkg/scheduler/api"
latestschedulerapi "k8s.io/kubernetes/plugin/pkg/scheduler/api/latest"
"k8s.io/kubernetes/plugin/pkg/scheduler/factory"
diff --git a/plugin/pkg/scheduler/api/BUILD b/plugin/pkg/scheduler/api/BUILD
index c1284a9e63..593cff9295 100644
--- a/plugin/pkg/scheduler/api/BUILD
+++ b/plugin/pkg/scheduler/api/BUILD
@@ -17,7 +17,6 @@ go_library(
deps = [
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
diff --git a/plugin/pkg/scheduler/api/doc.go b/plugin/pkg/scheduler/api/doc.go
index 184de2edf3..28c5075457 100644
--- a/plugin/pkg/scheduler/api/doc.go
+++ b/plugin/pkg/scheduler/api/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// Package api contains scheduler plugin API objects.
package api // import "k8s.io/kubernetes/plugin/pkg/scheduler/api"
diff --git a/plugin/pkg/scheduler/api/types.go b/plugin/pkg/scheduler/api/types.go
index 8f14027563..080fc386db 100644
--- a/plugin/pkg/scheduler/api/types.go
+++ b/plugin/pkg/scheduler/api/types.go
@@ -46,7 +46,7 @@ type Policy struct {
// RequiredDuringScheduling affinity is not symmetric, but there is an implicit PreferredDuringScheduling affinity rule
// corresponding to every RequiredDuringScheduling affinity rule.
// HardPodAffinitySymmetricWeight represents the weight of implicit PreferredDuringScheduling affinity rule, in the range 1-100.
- HardPodAffinitySymmetricWeight int
+ HardPodAffinitySymmetricWeight int32
}
type PredicatePolicy struct {
diff --git a/plugin/pkg/scheduler/api/v1/BUILD b/plugin/pkg/scheduler/api/v1/BUILD
index 66b8c2fc70..2516dc06b1 100644
--- a/plugin/pkg/scheduler/api/v1/BUILD
+++ b/plugin/pkg/scheduler/api/v1/BUILD
@@ -18,7 +18,6 @@ go_library(
"//plugin/pkg/scheduler/api:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
diff --git a/plugin/pkg/scheduler/api/v1/doc.go b/plugin/pkg/scheduler/api/v1/doc.go
index 49d3063b42..38679d991c 100644
--- a/plugin/pkg/scheduler/api/v1/doc.go
+++ b/plugin/pkg/scheduler/api/v1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// Package v1 contains scheduler plugin API objects.
package v1 // import "k8s.io/kubernetes/plugin/pkg/scheduler/api/v1"
diff --git a/plugin/pkg/scheduler/api/v1/zz_generated.deepcopy.go b/plugin/pkg/scheduler/api/v1/zz_generated.deepcopy.go
index 577a3c7f3e..0e23a656d0 100644
--- a/plugin/pkg/scheduler/api/v1/zz_generated.deepcopy.go
+++ b/plugin/pkg/scheduler/api/v1/zz_generated.deepcopy.go
@@ -22,85 +22,10 @@ package v1
import (
core_v1 "k8s.io/api/core/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
rest "k8s.io/client-go/rest"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExtenderArgs).DeepCopyInto(out.(*ExtenderArgs))
- return nil
- }, InType: reflect.TypeOf(&ExtenderArgs{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExtenderBindingArgs).DeepCopyInto(out.(*ExtenderBindingArgs))
- return nil
- }, InType: reflect.TypeOf(&ExtenderBindingArgs{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExtenderBindingResult).DeepCopyInto(out.(*ExtenderBindingResult))
- return nil
- }, InType: reflect.TypeOf(&ExtenderBindingResult{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExtenderConfig).DeepCopyInto(out.(*ExtenderConfig))
- return nil
- }, InType: reflect.TypeOf(&ExtenderConfig{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExtenderFilterResult).DeepCopyInto(out.(*ExtenderFilterResult))
- return nil
- }, InType: reflect.TypeOf(&ExtenderFilterResult{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*HostPriority).DeepCopyInto(out.(*HostPriority))
- return nil
- }, InType: reflect.TypeOf(&HostPriority{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*LabelPreference).DeepCopyInto(out.(*LabelPreference))
- return nil
- }, InType: reflect.TypeOf(&LabelPreference{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*LabelsPresence).DeepCopyInto(out.(*LabelsPresence))
- return nil
- }, InType: reflect.TypeOf(&LabelsPresence{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Policy).DeepCopyInto(out.(*Policy))
- return nil
- }, InType: reflect.TypeOf(&Policy{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PredicateArgument).DeepCopyInto(out.(*PredicateArgument))
- return nil
- }, InType: reflect.TypeOf(&PredicateArgument{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PredicatePolicy).DeepCopyInto(out.(*PredicatePolicy))
- return nil
- }, InType: reflect.TypeOf(&PredicatePolicy{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PriorityArgument).DeepCopyInto(out.(*PriorityArgument))
- return nil
- }, InType: reflect.TypeOf(&PriorityArgument{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PriorityPolicy).DeepCopyInto(out.(*PriorityPolicy))
- return nil
- }, InType: reflect.TypeOf(&PriorityPolicy{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ServiceAffinity).DeepCopyInto(out.(*ServiceAffinity))
- return nil
- }, InType: reflect.TypeOf(&ServiceAffinity{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ServiceAntiAffinity).DeepCopyInto(out.(*ServiceAntiAffinity))
- return nil
- }, InType: reflect.TypeOf(&ServiceAntiAffinity{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ExtenderArgs) DeepCopyInto(out *ExtenderArgs) {
*out = *in
diff --git a/plugin/pkg/scheduler/api/zz_generated.deepcopy.go b/plugin/pkg/scheduler/api/zz_generated.deepcopy.go
index b5288e26e5..df5e3e972e 100644
--- a/plugin/pkg/scheduler/api/zz_generated.deepcopy.go
+++ b/plugin/pkg/scheduler/api/zz_generated.deepcopy.go
@@ -22,85 +22,10 @@ package api
import (
v1 "k8s.io/api/core/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
rest "k8s.io/client-go/rest"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExtenderArgs).DeepCopyInto(out.(*ExtenderArgs))
- return nil
- }, InType: reflect.TypeOf(&ExtenderArgs{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExtenderBindingArgs).DeepCopyInto(out.(*ExtenderBindingArgs))
- return nil
- }, InType: reflect.TypeOf(&ExtenderBindingArgs{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExtenderBindingResult).DeepCopyInto(out.(*ExtenderBindingResult))
- return nil
- }, InType: reflect.TypeOf(&ExtenderBindingResult{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExtenderConfig).DeepCopyInto(out.(*ExtenderConfig))
- return nil
- }, InType: reflect.TypeOf(&ExtenderConfig{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExtenderFilterResult).DeepCopyInto(out.(*ExtenderFilterResult))
- return nil
- }, InType: reflect.TypeOf(&ExtenderFilterResult{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*HostPriority).DeepCopyInto(out.(*HostPriority))
- return nil
- }, InType: reflect.TypeOf(&HostPriority{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*LabelPreference).DeepCopyInto(out.(*LabelPreference))
- return nil
- }, InType: reflect.TypeOf(&LabelPreference{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*LabelsPresence).DeepCopyInto(out.(*LabelsPresence))
- return nil
- }, InType: reflect.TypeOf(&LabelsPresence{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Policy).DeepCopyInto(out.(*Policy))
- return nil
- }, InType: reflect.TypeOf(&Policy{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PredicateArgument).DeepCopyInto(out.(*PredicateArgument))
- return nil
- }, InType: reflect.TypeOf(&PredicateArgument{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PredicatePolicy).DeepCopyInto(out.(*PredicatePolicy))
- return nil
- }, InType: reflect.TypeOf(&PredicatePolicy{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PriorityArgument).DeepCopyInto(out.(*PriorityArgument))
- return nil
- }, InType: reflect.TypeOf(&PriorityArgument{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PriorityPolicy).DeepCopyInto(out.(*PriorityPolicy))
- return nil
- }, InType: reflect.TypeOf(&PriorityPolicy{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ServiceAffinity).DeepCopyInto(out.(*ServiceAffinity))
- return nil
- }, InType: reflect.TypeOf(&ServiceAffinity{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ServiceAntiAffinity).DeepCopyInto(out.(*ServiceAntiAffinity))
- return nil
- }, InType: reflect.TypeOf(&ServiceAntiAffinity{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ExtenderArgs) DeepCopyInto(out *ExtenderArgs) {
*out = *in
diff --git a/plugin/pkg/scheduler/factory/BUILD b/plugin/pkg/scheduler/factory/BUILD
index f17409bd11..62cdd123c7 100644
--- a/plugin/pkg/scheduler/factory/BUILD
+++ b/plugin/pkg/scheduler/factory/BUILD
@@ -14,8 +14,8 @@ go_library(
],
importpath = "k8s.io/kubernetes/plugin/pkg/scheduler/factory",
deps = [
- "//pkg/api/helper:go_default_library",
"//pkg/api/v1/pod:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
"//pkg/kubelet/apis:go_default_library",
"//plugin/pkg/scheduler:go_default_library",
"//plugin/pkg/scheduler/algorithm:go_default_library",
diff --git a/plugin/pkg/scheduler/factory/factory.go b/plugin/pkg/scheduler/factory/factory.go
index 67610deb52..3bd07c6480 100644
--- a/plugin/pkg/scheduler/factory/factory.go
+++ b/plugin/pkg/scheduler/factory/factory.go
@@ -47,8 +47,8 @@ import (
extensionslisters "k8s.io/client-go/listers/extensions/v1beta1"
policylisters "k8s.io/client-go/listers/policy/v1beta1"
"k8s.io/client-go/tools/cache"
- "k8s.io/kubernetes/pkg/api/helper"
podutil "k8s.io/kubernetes/pkg/api/v1/pod"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
kubeletapis "k8s.io/kubernetes/pkg/kubelet/apis"
"k8s.io/kubernetes/plugin/pkg/scheduler"
"k8s.io/kubernetes/plugin/pkg/scheduler/algorithm"
@@ -113,7 +113,7 @@ type configFactory struct {
// RequiredDuringScheduling affinity is not symmetric, but there is an implicit PreferredDuringScheduling affinity rule
// corresponding to every RequiredDuringScheduling affinity rule.
// HardPodAffinitySymmetricWeight represents the weight of implicit PreferredDuringScheduling affinity rule, in the range 0-100.
- hardPodAffinitySymmetricWeight int
+ hardPodAffinitySymmetricWeight int32
// Equivalence class cache
equivalencePodCache *core.EquivalenceCache
@@ -136,7 +136,7 @@ func NewConfigFactory(
statefulSetInformer appsinformers.StatefulSetInformer,
serviceInformer coreinformers.ServiceInformer,
pdbInformer policyinformers.PodDisruptionBudgetInformer,
- hardPodAffinitySymmetricWeight int,
+ hardPodAffinitySymmetricWeight int32,
enableEquivalenceClassCache bool,
) scheduler.Configurator {
stopEverything := make(chan struct{})
@@ -434,7 +434,7 @@ func (c *configFactory) GetNodeLister() corelisters.NodeLister {
return c.nodeLister
}
-func (c *configFactory) GetHardPodAffinitySymmetricWeight() int {
+func (c *configFactory) GetHardPodAffinitySymmetricWeight() int32 {
return c.hardPodAffinitySymmetricWeight
}
diff --git a/plugin/pkg/scheduler/factory/factory_test.go b/plugin/pkg/scheduler/factory/factory_test.go
index 66b87a686d..db73370ac0 100644
--- a/plugin/pkg/scheduler/factory/factory_test.go
+++ b/plugin/pkg/scheduler/factory/factory_test.go
@@ -408,7 +408,7 @@ func TestInvalidFactoryArgs(t *testing.T) {
client := clientset.NewForConfigOrDie(&restclient.Config{Host: server.URL, ContentConfig: restclient.ContentConfig{GroupVersion: &legacyscheme.Registry.GroupOrDie(v1.GroupName).GroupVersion}})
testCases := []struct {
- hardPodAffinitySymmetricWeight int
+ hardPodAffinitySymmetricWeight int32
expectErr string
}{
{
diff --git a/plugin/pkg/scheduler/factory/plugins.go b/plugin/pkg/scheduler/factory/plugins.go
index 9f5398c54b..7bd15adf63 100644
--- a/plugin/pkg/scheduler/factory/plugins.go
+++ b/plugin/pkg/scheduler/factory/plugins.go
@@ -43,7 +43,7 @@ type PluginFactoryArgs struct {
NodeInfo predicates.NodeInfo
PVInfo predicates.PersistentVolumeInfo
PVCInfo predicates.PersistentVolumeClaimInfo
- HardPodAffinitySymmetricWeight int
+ HardPodAffinitySymmetricWeight int32
}
// MetadataProducerFactory produces MetadataProducer from the given args.
diff --git a/plugin/pkg/scheduler/scheduler.go b/plugin/pkg/scheduler/scheduler.go
index df18fba450..2d9a44dc16 100644
--- a/plugin/pkg/scheduler/scheduler.go
+++ b/plugin/pkg/scheduler/scheduler.go
@@ -77,7 +77,7 @@ type Configurator interface {
GetPriorityMetadataProducer() (algorithm.MetadataProducer, error)
GetPredicateMetadataProducer() (algorithm.PredicateMetadataProducer, error)
GetPredicates(predicateKeys sets.String) (map[string]algorithm.FitPredicate, error)
- GetHardPodAffinitySymmetricWeight() int
+ GetHardPodAffinitySymmetricWeight() int32
GetSchedulerName() string
MakeDefaultErrorFunc(backoff *util.PodBackoff, podQueue core.SchedulingQueue) func(pod *v1.Pod, err error)
diff --git a/plugin/pkg/scheduler/schedulercache/BUILD b/plugin/pkg/scheduler/schedulercache/BUILD
index e75a417088..1764249481 100644
--- a/plugin/pkg/scheduler/schedulercache/BUILD
+++ b/plugin/pkg/scheduler/schedulercache/BUILD
@@ -16,7 +16,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/plugin/pkg/scheduler/schedulercache",
deps = [
- "//pkg/api/v1/helper:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
"//plugin/pkg/scheduler/algorithm/priorities/util:go_default_library",
"//plugin/pkg/scheduler/util:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
@@ -35,7 +35,7 @@ go_test(
importpath = "k8s.io/kubernetes/plugin/pkg/scheduler/schedulercache",
library = ":go_default_library",
deps = [
- "//pkg/api/v1/helper:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
"//plugin/pkg/scheduler/algorithm/priorities/util:go_default_library",
"//plugin/pkg/scheduler/util:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
diff --git a/plugin/pkg/scheduler/schedulercache/cache_test.go b/plugin/pkg/scheduler/schedulercache/cache_test.go
index 26608e42d8..c0ffc989ff 100644
--- a/plugin/pkg/scheduler/schedulercache/cache_test.go
+++ b/plugin/pkg/scheduler/schedulercache/cache_test.go
@@ -29,7 +29,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/util/intstr"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
priorityutil "k8s.io/kubernetes/plugin/pkg/scheduler/algorithm/priorities/util"
schedutil "k8s.io/kubernetes/plugin/pkg/scheduler/util"
)
diff --git a/plugin/pkg/scheduler/schedulercache/node_info.go b/plugin/pkg/scheduler/schedulercache/node_info.go
index 463e542f66..6f323bcd26 100644
--- a/plugin/pkg/scheduler/schedulercache/node_info.go
+++ b/plugin/pkg/scheduler/schedulercache/node_info.go
@@ -24,7 +24,7 @@ import (
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
clientcache "k8s.io/client-go/tools/cache"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
priorityutil "k8s.io/kubernetes/plugin/pkg/scheduler/algorithm/priorities/util"
"k8s.io/kubernetes/plugin/pkg/scheduler/util"
)
diff --git a/plugin/pkg/scheduler/testutil.go b/plugin/pkg/scheduler/testutil.go
index b5a01e99b3..7976353ed4 100644
--- a/plugin/pkg/scheduler/testutil.go
+++ b/plugin/pkg/scheduler/testutil.go
@@ -55,7 +55,7 @@ func (fc *FakeConfigurator) GetPredicates(predicateKeys sets.String) (map[string
}
// GetHardPodAffinitySymmetricWeight is not implemented yet.
-func (fc *FakeConfigurator) GetHardPodAffinitySymmetricWeight() int {
+func (fc *FakeConfigurator) GetHardPodAffinitySymmetricWeight() int32 {
panic("not implemented")
}
diff --git a/plugin/pkg/scheduler/util/BUILD b/plugin/pkg/scheduler/util/BUILD
index cd731819d6..9b6603cab1 100644
--- a/plugin/pkg/scheduler/util/BUILD
+++ b/plugin/pkg/scheduler/util/BUILD
@@ -33,9 +33,9 @@ go_library(
],
importpath = "k8s.io/kubernetes/plugin/pkg/scheduler/util",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/install:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/install:go_default_library",
"//pkg/apis/scheduling:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
diff --git a/plugin/pkg/scheduler/util/testutil.go b/plugin/pkg/scheduler/util/testutil.go
index e4a363f905..45ce2df112 100644
--- a/plugin/pkg/scheduler/util/testutil.go
+++ b/plugin/pkg/scheduler/util/testutil.go
@@ -25,10 +25,10 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ api "k8s.io/kubernetes/pkg/apis/core"
- _ "k8s.io/kubernetes/pkg/api/install"
+ _ "k8s.io/kubernetes/pkg/apis/core/install"
)
type TestGroup struct {
diff --git a/staging/BUILD b/staging/BUILD
index 356f6d566a..71c38a8995 100644
--- a/staging/BUILD
+++ b/staging/BUILD
@@ -85,6 +85,7 @@ filegroup(
"//staging/src/k8s.io/apimachinery/pkg/util/uuid:all-srcs",
"//staging/src/k8s.io/apimachinery/pkg/util/validation:all-srcs",
"//staging/src/k8s.io/apimachinery/pkg/util/wait:all-srcs",
+ "//staging/src/k8s.io/apimachinery/pkg/util/waitgroup:all-srcs",
"//staging/src/k8s.io/apimachinery/pkg/util/yaml:all-srcs",
"//staging/src/k8s.io/apimachinery/pkg/version:all-srcs",
"//staging/src/k8s.io/apimachinery/pkg/watch:all-srcs",
@@ -95,6 +96,7 @@ filegroup(
"//staging/src/k8s.io/apiserver/pkg/apis/apiserver:all-srcs",
"//staging/src/k8s.io/apiserver/pkg/apis/audit:all-srcs",
"//staging/src/k8s.io/apiserver/pkg/apis/example:all-srcs",
+ "//staging/src/k8s.io/apiserver/pkg/apis/example2:all-srcs",
"//staging/src/k8s.io/apiserver/pkg/audit:all-srcs",
"//staging/src/k8s.io/apiserver/pkg/authentication/authenticator:all-srcs",
"//staging/src/k8s.io/apiserver/pkg/authentication/authenticatorfactory:all-srcs",
diff --git a/staging/src/k8s.io/api/admission/v1alpha1/BUILD b/staging/src/k8s.io/api/admission/v1alpha1/BUILD
index 96125aa142..50cdb04e21 100644
--- a/staging/src/k8s.io/api/admission/v1alpha1/BUILD
+++ b/staging/src/k8s.io/api/admission/v1alpha1/BUILD
@@ -16,7 +16,6 @@ go_library(
"//vendor/github.com/gogo/protobuf/proto:go_default_library",
"//vendor/k8s.io/api/authentication/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/api/admission/v1alpha1/doc.go b/staging/src/k8s.io/api/admission/v1alpha1/doc.go
index 22c61d99d4..63e579c199 100644
--- a/staging/src/k8s.io/api/admission/v1alpha1/doc.go
+++ b/staging/src/k8s.io/api/admission/v1alpha1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:openapi-gen=false
// +groupName=admission.k8s.io
diff --git a/staging/src/k8s.io/api/admission/v1alpha1/zz_generated.deepcopy.go b/staging/src/k8s.io/api/admission/v1alpha1/zz_generated.deepcopy.go
index 667792aeb6..756655046e 100644
--- a/staging/src/k8s.io/api/admission/v1alpha1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/api/admission/v1alpha1/zz_generated.deepcopy.go
@@ -22,36 +22,9 @@ package v1alpha1
import (
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*AdmissionReview).DeepCopyInto(out.(*AdmissionReview))
- return nil
- }, InType: reflect.TypeOf(&AdmissionReview{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*AdmissionReviewSpec).DeepCopyInto(out.(*AdmissionReviewSpec))
- return nil
- }, InType: reflect.TypeOf(&AdmissionReviewSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*AdmissionReviewStatus).DeepCopyInto(out.(*AdmissionReviewStatus))
- return nil
- }, InType: reflect.TypeOf(&AdmissionReviewStatus{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *AdmissionReview) DeepCopyInto(out *AdmissionReview) {
*out = *in
diff --git a/staging/src/k8s.io/api/admissionregistration/v1alpha1/BUILD b/staging/src/k8s.io/api/admissionregistration/v1alpha1/BUILD
index b1601cf3d0..417eab39ff 100644
--- a/staging/src/k8s.io/api/admissionregistration/v1alpha1/BUILD
+++ b/staging/src/k8s.io/api/admissionregistration/v1alpha1/BUILD
@@ -19,7 +19,6 @@ go_library(
deps = [
"//vendor/github.com/gogo/protobuf/proto:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/api/admissionregistration/v1alpha1/doc.go b/staging/src/k8s.io/api/admissionregistration/v1alpha1/doc.go
index 49e0e0989d..8a5d1fbbb6 100644
--- a/staging/src/k8s.io/api/admissionregistration/v1alpha1/doc.go
+++ b/staging/src/k8s.io/api/admissionregistration/v1alpha1/doc.go
@@ -14,12 +14,12 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:openapi-gen=true
// Package v1alpha1 is the v1alpha1 version of the API.
// AdmissionConfiguration and AdmissionPluginConfiguration are legacy static admission plugin configuration
-// InitializerConfiguration and ExternalAdmissionHookConfiguration is for the
+// InitializerConfiguration and validatingWebhookConfiguration is for the
// new dynamic admission controller configuration.
// +groupName=admissionregistration.k8s.io
package v1alpha1 // import "k8s.io/api/admissionregistration/v1alpha1"
diff --git a/staging/src/k8s.io/api/admissionregistration/v1alpha1/generated.pb.go b/staging/src/k8s.io/api/admissionregistration/v1alpha1/generated.pb.go
index 4c66de146c..9daf708703 100644
--- a/staging/src/k8s.io/api/admissionregistration/v1alpha1/generated.pb.go
+++ b/staging/src/k8s.io/api/admissionregistration/v1alpha1/generated.pb.go
@@ -25,16 +25,18 @@ limitations under the License.
k8s.io/kubernetes/vendor/k8s.io/api/admissionregistration/v1alpha1/generated.proto
It has these top-level messages:
- AdmissionHookClientConfig
- ExternalAdmissionHook
- ExternalAdmissionHookConfiguration
- ExternalAdmissionHookConfigurationList
Initializer
InitializerConfiguration
InitializerConfigurationList
+ MutatingWebhookConfiguration
+ MutatingWebhookConfigurationList
Rule
RuleWithOperations
ServiceReference
+ ValidatingWebhookConfiguration
+ ValidatingWebhookConfigurationList
+ Webhook
+ WebhookClientConfig
*/
package v1alpha1
@@ -42,6 +44,8 @@ import proto "github.com/gogo/protobuf/proto"
import fmt "fmt"
import math "math"
+import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+
import strings "strings"
import reflect "reflect"
@@ -58,230 +62,80 @@ var _ = math.Inf
// proto package needs to be updated.
const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package
-func (m *AdmissionHookClientConfig) Reset() { *m = AdmissionHookClientConfig{} }
-func (*AdmissionHookClientConfig) ProtoMessage() {}
-func (*AdmissionHookClientConfig) Descriptor() ([]byte, []int) {
- return fileDescriptorGenerated, []int{0}
-}
-
-func (m *ExternalAdmissionHook) Reset() { *m = ExternalAdmissionHook{} }
-func (*ExternalAdmissionHook) ProtoMessage() {}
-func (*ExternalAdmissionHook) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} }
-
-func (m *ExternalAdmissionHookConfiguration) Reset() { *m = ExternalAdmissionHookConfiguration{} }
-func (*ExternalAdmissionHookConfiguration) ProtoMessage() {}
-func (*ExternalAdmissionHookConfiguration) Descriptor() ([]byte, []int) {
- return fileDescriptorGenerated, []int{2}
-}
-
-func (m *ExternalAdmissionHookConfigurationList) Reset() {
- *m = ExternalAdmissionHookConfigurationList{}
-}
-func (*ExternalAdmissionHookConfigurationList) ProtoMessage() {}
-func (*ExternalAdmissionHookConfigurationList) Descriptor() ([]byte, []int) {
- return fileDescriptorGenerated, []int{3}
-}
-
func (m *Initializer) Reset() { *m = Initializer{} }
func (*Initializer) ProtoMessage() {}
-func (*Initializer) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} }
+func (*Initializer) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} }
func (m *InitializerConfiguration) Reset() { *m = InitializerConfiguration{} }
func (*InitializerConfiguration) ProtoMessage() {}
func (*InitializerConfiguration) Descriptor() ([]byte, []int) {
- return fileDescriptorGenerated, []int{5}
+ return fileDescriptorGenerated, []int{1}
}
func (m *InitializerConfigurationList) Reset() { *m = InitializerConfigurationList{} }
func (*InitializerConfigurationList) ProtoMessage() {}
func (*InitializerConfigurationList) Descriptor() ([]byte, []int) {
- return fileDescriptorGenerated, []int{6}
+ return fileDescriptorGenerated, []int{2}
+}
+
+func (m *MutatingWebhookConfiguration) Reset() { *m = MutatingWebhookConfiguration{} }
+func (*MutatingWebhookConfiguration) ProtoMessage() {}
+func (*MutatingWebhookConfiguration) Descriptor() ([]byte, []int) {
+ return fileDescriptorGenerated, []int{3}
+}
+
+func (m *MutatingWebhookConfigurationList) Reset() { *m = MutatingWebhookConfigurationList{} }
+func (*MutatingWebhookConfigurationList) ProtoMessage() {}
+func (*MutatingWebhookConfigurationList) Descriptor() ([]byte, []int) {
+ return fileDescriptorGenerated, []int{4}
}
func (m *Rule) Reset() { *m = Rule{} }
func (*Rule) ProtoMessage() {}
-func (*Rule) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} }
+func (*Rule) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} }
func (m *RuleWithOperations) Reset() { *m = RuleWithOperations{} }
func (*RuleWithOperations) ProtoMessage() {}
-func (*RuleWithOperations) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} }
+func (*RuleWithOperations) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} }
func (m *ServiceReference) Reset() { *m = ServiceReference{} }
func (*ServiceReference) ProtoMessage() {}
-func (*ServiceReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{9} }
+func (*ServiceReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} }
+
+func (m *ValidatingWebhookConfiguration) Reset() { *m = ValidatingWebhookConfiguration{} }
+func (*ValidatingWebhookConfiguration) ProtoMessage() {}
+func (*ValidatingWebhookConfiguration) Descriptor() ([]byte, []int) {
+ return fileDescriptorGenerated, []int{8}
+}
+
+func (m *ValidatingWebhookConfigurationList) Reset() { *m = ValidatingWebhookConfigurationList{} }
+func (*ValidatingWebhookConfigurationList) ProtoMessage() {}
+func (*ValidatingWebhookConfigurationList) Descriptor() ([]byte, []int) {
+ return fileDescriptorGenerated, []int{9}
+}
+
+func (m *Webhook) Reset() { *m = Webhook{} }
+func (*Webhook) ProtoMessage() {}
+func (*Webhook) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{10} }
+
+func (m *WebhookClientConfig) Reset() { *m = WebhookClientConfig{} }
+func (*WebhookClientConfig) ProtoMessage() {}
+func (*WebhookClientConfig) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{11} }
func init() {
- proto.RegisterType((*AdmissionHookClientConfig)(nil), "k8s.io.api.admissionregistration.v1alpha1.AdmissionHookClientConfig")
- proto.RegisterType((*ExternalAdmissionHook)(nil), "k8s.io.api.admissionregistration.v1alpha1.ExternalAdmissionHook")
- proto.RegisterType((*ExternalAdmissionHookConfiguration)(nil), "k8s.io.api.admissionregistration.v1alpha1.ExternalAdmissionHookConfiguration")
- proto.RegisterType((*ExternalAdmissionHookConfigurationList)(nil), "k8s.io.api.admissionregistration.v1alpha1.ExternalAdmissionHookConfigurationList")
proto.RegisterType((*Initializer)(nil), "k8s.io.api.admissionregistration.v1alpha1.Initializer")
proto.RegisterType((*InitializerConfiguration)(nil), "k8s.io.api.admissionregistration.v1alpha1.InitializerConfiguration")
proto.RegisterType((*InitializerConfigurationList)(nil), "k8s.io.api.admissionregistration.v1alpha1.InitializerConfigurationList")
+ proto.RegisterType((*MutatingWebhookConfiguration)(nil), "k8s.io.api.admissionregistration.v1alpha1.MutatingWebhookConfiguration")
+ proto.RegisterType((*MutatingWebhookConfigurationList)(nil), "k8s.io.api.admissionregistration.v1alpha1.MutatingWebhookConfigurationList")
proto.RegisterType((*Rule)(nil), "k8s.io.api.admissionregistration.v1alpha1.Rule")
proto.RegisterType((*RuleWithOperations)(nil), "k8s.io.api.admissionregistration.v1alpha1.RuleWithOperations")
proto.RegisterType((*ServiceReference)(nil), "k8s.io.api.admissionregistration.v1alpha1.ServiceReference")
+ proto.RegisterType((*ValidatingWebhookConfiguration)(nil), "k8s.io.api.admissionregistration.v1alpha1.ValidatingWebhookConfiguration")
+ proto.RegisterType((*ValidatingWebhookConfigurationList)(nil), "k8s.io.api.admissionregistration.v1alpha1.ValidatingWebhookConfigurationList")
+ proto.RegisterType((*Webhook)(nil), "k8s.io.api.admissionregistration.v1alpha1.Webhook")
+ proto.RegisterType((*WebhookClientConfig)(nil), "k8s.io.api.admissionregistration.v1alpha1.WebhookClientConfig")
}
-func (m *AdmissionHookClientConfig) Marshal() (dAtA []byte, err error) {
- size := m.Size()
- dAtA = make([]byte, size)
- n, err := m.MarshalTo(dAtA)
- if err != nil {
- return nil, err
- }
- return dAtA[:n], nil
-}
-
-func (m *AdmissionHookClientConfig) MarshalTo(dAtA []byte) (int, error) {
- var i int
- _ = i
- var l int
- _ = l
- dAtA[i] = 0xa
- i++
- i = encodeVarintGenerated(dAtA, i, uint64(m.Service.Size()))
- n1, err := m.Service.MarshalTo(dAtA[i:])
- if err != nil {
- return 0, err
- }
- i += n1
- if m.CABundle != nil {
- dAtA[i] = 0x12
- i++
- i = encodeVarintGenerated(dAtA, i, uint64(len(m.CABundle)))
- i += copy(dAtA[i:], m.CABundle)
- }
- dAtA[i] = 0x1a
- i++
- i = encodeVarintGenerated(dAtA, i, uint64(len(m.URLPath)))
- i += copy(dAtA[i:], m.URLPath)
- return i, nil
-}
-
-func (m *ExternalAdmissionHook) Marshal() (dAtA []byte, err error) {
- size := m.Size()
- dAtA = make([]byte, size)
- n, err := m.MarshalTo(dAtA)
- if err != nil {
- return nil, err
- }
- return dAtA[:n], nil
-}
-
-func (m *ExternalAdmissionHook) MarshalTo(dAtA []byte) (int, error) {
- var i int
- _ = i
- var l int
- _ = l
- dAtA[i] = 0xa
- i++
- i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
- i += copy(dAtA[i:], m.Name)
- dAtA[i] = 0x12
- i++
- i = encodeVarintGenerated(dAtA, i, uint64(m.ClientConfig.Size()))
- n2, err := m.ClientConfig.MarshalTo(dAtA[i:])
- if err != nil {
- return 0, err
- }
- i += n2
- if len(m.Rules) > 0 {
- for _, msg := range m.Rules {
- dAtA[i] = 0x1a
- i++
- i = encodeVarintGenerated(dAtA, i, uint64(msg.Size()))
- n, err := msg.MarshalTo(dAtA[i:])
- if err != nil {
- return 0, err
- }
- i += n
- }
- }
- if m.FailurePolicy != nil {
- dAtA[i] = 0x22
- i++
- i = encodeVarintGenerated(dAtA, i, uint64(len(*m.FailurePolicy)))
- i += copy(dAtA[i:], *m.FailurePolicy)
- }
- return i, nil
-}
-
-func (m *ExternalAdmissionHookConfiguration) Marshal() (dAtA []byte, err error) {
- size := m.Size()
- dAtA = make([]byte, size)
- n, err := m.MarshalTo(dAtA)
- if err != nil {
- return nil, err
- }
- return dAtA[:n], nil
-}
-
-func (m *ExternalAdmissionHookConfiguration) MarshalTo(dAtA []byte) (int, error) {
- var i int
- _ = i
- var l int
- _ = l
- dAtA[i] = 0xa
- i++
- i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size()))
- n3, err := m.ObjectMeta.MarshalTo(dAtA[i:])
- if err != nil {
- return 0, err
- }
- i += n3
- if len(m.ExternalAdmissionHooks) > 0 {
- for _, msg := range m.ExternalAdmissionHooks {
- dAtA[i] = 0x12
- i++
- i = encodeVarintGenerated(dAtA, i, uint64(msg.Size()))
- n, err := msg.MarshalTo(dAtA[i:])
- if err != nil {
- return 0, err
- }
- i += n
- }
- }
- return i, nil
-}
-
-func (m *ExternalAdmissionHookConfigurationList) Marshal() (dAtA []byte, err error) {
- size := m.Size()
- dAtA = make([]byte, size)
- n, err := m.MarshalTo(dAtA)
- if err != nil {
- return nil, err
- }
- return dAtA[:n], nil
-}
-
-func (m *ExternalAdmissionHookConfigurationList) MarshalTo(dAtA []byte) (int, error) {
- var i int
- _ = i
- var l int
- _ = l
- dAtA[i] = 0xa
- i++
- i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size()))
- n4, err := m.ListMeta.MarshalTo(dAtA[i:])
- if err != nil {
- return 0, err
- }
- i += n4
- if len(m.Items) > 0 {
- for _, msg := range m.Items {
- dAtA[i] = 0x12
- i++
- i = encodeVarintGenerated(dAtA, i, uint64(msg.Size()))
- n, err := msg.MarshalTo(dAtA[i:])
- if err != nil {
- return 0, err
- }
- i += n
- }
- }
- return i, nil
-}
-
func (m *Initializer) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@@ -334,11 +188,11 @@ func (m *InitializerConfiguration) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0xa
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size()))
- n5, err := m.ObjectMeta.MarshalTo(dAtA[i:])
+ n1, err := m.ObjectMeta.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n5
+ i += n1
if len(m.Initializers) > 0 {
for _, msg := range m.Initializers {
dAtA[i] = 0x12
@@ -372,11 +226,87 @@ func (m *InitializerConfigurationList) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0xa
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size()))
- n6, err := m.ListMeta.MarshalTo(dAtA[i:])
+ n2, err := m.ListMeta.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n6
+ i += n2
+ if len(m.Items) > 0 {
+ for _, msg := range m.Items {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(msg.Size()))
+ n, err := msg.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n
+ }
+ }
+ return i, nil
+}
+
+func (m *MutatingWebhookConfiguration) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MutatingWebhookConfiguration) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size()))
+ n3, err := m.ObjectMeta.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n3
+ if len(m.Webhooks) > 0 {
+ for _, msg := range m.Webhooks {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(msg.Size()))
+ n, err := msg.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n
+ }
+ }
+ return i, nil
+}
+
+func (m *MutatingWebhookConfigurationList) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MutatingWebhookConfigurationList) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size()))
+ n4, err := m.ListMeta.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n4
if len(m.Items) > 0 {
for _, msg := range m.Items {
dAtA[i] = 0x12
@@ -488,11 +418,11 @@ func (m *RuleWithOperations) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0x12
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.Rule.Size()))
- n7, err := m.Rule.MarshalTo(dAtA[i:])
+ n5, err := m.Rule.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n7
+ i += n5
return i, nil
}
@@ -519,6 +449,186 @@ func (m *ServiceReference) MarshalTo(dAtA []byte) (int, error) {
i++
i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
i += copy(dAtA[i:], m.Name)
+ if m.Path != nil {
+ dAtA[i] = 0x1a
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(len(*m.Path)))
+ i += copy(dAtA[i:], *m.Path)
+ }
+ return i, nil
+}
+
+func (m *ValidatingWebhookConfiguration) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ValidatingWebhookConfiguration) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size()))
+ n6, err := m.ObjectMeta.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n6
+ if len(m.Webhooks) > 0 {
+ for _, msg := range m.Webhooks {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(msg.Size()))
+ n, err := msg.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n
+ }
+ }
+ return i, nil
+}
+
+func (m *ValidatingWebhookConfigurationList) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ValidatingWebhookConfigurationList) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size()))
+ n7, err := m.ListMeta.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n7
+ if len(m.Items) > 0 {
+ for _, msg := range m.Items {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(msg.Size()))
+ n, err := msg.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n
+ }
+ }
+ return i, nil
+}
+
+func (m *Webhook) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Webhook) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
+ i += copy(dAtA[i:], m.Name)
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(m.ClientConfig.Size()))
+ n8, err := m.ClientConfig.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n8
+ if len(m.Rules) > 0 {
+ for _, msg := range m.Rules {
+ dAtA[i] = 0x1a
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(msg.Size()))
+ n, err := msg.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n
+ }
+ }
+ if m.FailurePolicy != nil {
+ dAtA[i] = 0x22
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(len(*m.FailurePolicy)))
+ i += copy(dAtA[i:], *m.FailurePolicy)
+ }
+ if m.NamespaceSelector != nil {
+ dAtA[i] = 0x2a
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(m.NamespaceSelector.Size()))
+ n9, err := m.NamespaceSelector.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n9
+ }
+ return i, nil
+}
+
+func (m *WebhookClientConfig) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *WebhookClientConfig) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Service != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(m.Service.Size()))
+ n10, err := m.Service.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n10
+ }
+ if m.CABundle != nil {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(len(m.CABundle)))
+ i += copy(dAtA[i:], m.CABundle)
+ }
+ if m.URL != nil {
+ dAtA[i] = 0x1a
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(len(*m.URL)))
+ i += copy(dAtA[i:], *m.URL)
+ }
return i, nil
}
@@ -549,68 +659,6 @@ func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
dAtA[offset] = uint8(v)
return offset + 1
}
-func (m *AdmissionHookClientConfig) Size() (n int) {
- var l int
- _ = l
- l = m.Service.Size()
- n += 1 + l + sovGenerated(uint64(l))
- if m.CABundle != nil {
- l = len(m.CABundle)
- n += 1 + l + sovGenerated(uint64(l))
- }
- l = len(m.URLPath)
- n += 1 + l + sovGenerated(uint64(l))
- return n
-}
-
-func (m *ExternalAdmissionHook) Size() (n int) {
- var l int
- _ = l
- l = len(m.Name)
- n += 1 + l + sovGenerated(uint64(l))
- l = m.ClientConfig.Size()
- n += 1 + l + sovGenerated(uint64(l))
- if len(m.Rules) > 0 {
- for _, e := range m.Rules {
- l = e.Size()
- n += 1 + l + sovGenerated(uint64(l))
- }
- }
- if m.FailurePolicy != nil {
- l = len(*m.FailurePolicy)
- n += 1 + l + sovGenerated(uint64(l))
- }
- return n
-}
-
-func (m *ExternalAdmissionHookConfiguration) Size() (n int) {
- var l int
- _ = l
- l = m.ObjectMeta.Size()
- n += 1 + l + sovGenerated(uint64(l))
- if len(m.ExternalAdmissionHooks) > 0 {
- for _, e := range m.ExternalAdmissionHooks {
- l = e.Size()
- n += 1 + l + sovGenerated(uint64(l))
- }
- }
- return n
-}
-
-func (m *ExternalAdmissionHookConfigurationList) Size() (n int) {
- var l int
- _ = l
- l = m.ListMeta.Size()
- n += 1 + l + sovGenerated(uint64(l))
- if len(m.Items) > 0 {
- for _, e := range m.Items {
- l = e.Size()
- n += 1 + l + sovGenerated(uint64(l))
- }
- }
- return n
-}
-
func (m *Initializer) Size() (n int) {
var l int
_ = l
@@ -653,6 +701,34 @@ func (m *InitializerConfigurationList) Size() (n int) {
return n
}
+func (m *MutatingWebhookConfiguration) Size() (n int) {
+ var l int
+ _ = l
+ l = m.ObjectMeta.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ if len(m.Webhooks) > 0 {
+ for _, e := range m.Webhooks {
+ l = e.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ }
+ }
+ return n
+}
+
+func (m *MutatingWebhookConfigurationList) Size() (n int) {
+ var l int
+ _ = l
+ l = m.ListMeta.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ if len(m.Items) > 0 {
+ for _, e := range m.Items {
+ l = e.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ }
+ }
+ return n
+}
+
func (m *Rule) Size() (n int) {
var l int
_ = l
@@ -698,6 +774,80 @@ func (m *ServiceReference) Size() (n int) {
n += 1 + l + sovGenerated(uint64(l))
l = len(m.Name)
n += 1 + l + sovGenerated(uint64(l))
+ if m.Path != nil {
+ l = len(*m.Path)
+ n += 1 + l + sovGenerated(uint64(l))
+ }
+ return n
+}
+
+func (m *ValidatingWebhookConfiguration) Size() (n int) {
+ var l int
+ _ = l
+ l = m.ObjectMeta.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ if len(m.Webhooks) > 0 {
+ for _, e := range m.Webhooks {
+ l = e.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ }
+ }
+ return n
+}
+
+func (m *ValidatingWebhookConfigurationList) Size() (n int) {
+ var l int
+ _ = l
+ l = m.ListMeta.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ if len(m.Items) > 0 {
+ for _, e := range m.Items {
+ l = e.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ }
+ }
+ return n
+}
+
+func (m *Webhook) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Name)
+ n += 1 + l + sovGenerated(uint64(l))
+ l = m.ClientConfig.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ if len(m.Rules) > 0 {
+ for _, e := range m.Rules {
+ l = e.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ }
+ }
+ if m.FailurePolicy != nil {
+ l = len(*m.FailurePolicy)
+ n += 1 + l + sovGenerated(uint64(l))
+ }
+ if m.NamespaceSelector != nil {
+ l = m.NamespaceSelector.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ }
+ return n
+}
+
+func (m *WebhookClientConfig) Size() (n int) {
+ var l int
+ _ = l
+ if m.Service != nil {
+ l = m.Service.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ }
+ if m.CABundle != nil {
+ l = len(m.CABundle)
+ n += 1 + l + sovGenerated(uint64(l))
+ }
+ if m.URL != nil {
+ l = len(*m.URL)
+ n += 1 + l + sovGenerated(uint64(l))
+ }
return n
}
@@ -714,53 +864,6 @@ func sovGenerated(x uint64) (n int) {
func sozGenerated(x uint64) (n int) {
return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63))))
}
-func (this *AdmissionHookClientConfig) String() string {
- if this == nil {
- return "nil"
- }
- s := strings.Join([]string{`&AdmissionHookClientConfig{`,
- `Service:` + strings.Replace(strings.Replace(this.Service.String(), "ServiceReference", "ServiceReference", 1), `&`, ``, 1) + `,`,
- `CABundle:` + valueToStringGenerated(this.CABundle) + `,`,
- `URLPath:` + fmt.Sprintf("%v", this.URLPath) + `,`,
- `}`,
- }, "")
- return s
-}
-func (this *ExternalAdmissionHook) String() string {
- if this == nil {
- return "nil"
- }
- s := strings.Join([]string{`&ExternalAdmissionHook{`,
- `Name:` + fmt.Sprintf("%v", this.Name) + `,`,
- `ClientConfig:` + strings.Replace(strings.Replace(this.ClientConfig.String(), "AdmissionHookClientConfig", "AdmissionHookClientConfig", 1), `&`, ``, 1) + `,`,
- `Rules:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Rules), "RuleWithOperations", "RuleWithOperations", 1), `&`, ``, 1) + `,`,
- `FailurePolicy:` + valueToStringGenerated(this.FailurePolicy) + `,`,
- `}`,
- }, "")
- return s
-}
-func (this *ExternalAdmissionHookConfiguration) String() string {
- if this == nil {
- return "nil"
- }
- s := strings.Join([]string{`&ExternalAdmissionHookConfiguration{`,
- `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
- `ExternalAdmissionHooks:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ExternalAdmissionHooks), "ExternalAdmissionHook", "ExternalAdmissionHook", 1), `&`, ``, 1) + `,`,
- `}`,
- }, "")
- return s
-}
-func (this *ExternalAdmissionHookConfigurationList) String() string {
- if this == nil {
- return "nil"
- }
- s := strings.Join([]string{`&ExternalAdmissionHookConfigurationList{`,
- `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`,
- `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "ExternalAdmissionHookConfiguration", "ExternalAdmissionHookConfiguration", 1), `&`, ``, 1) + `,`,
- `}`,
- }, "")
- return s
-}
func (this *Initializer) String() string {
if this == nil {
return "nil"
@@ -794,6 +897,28 @@ func (this *InitializerConfigurationList) String() string {
}, "")
return s
}
+func (this *MutatingWebhookConfiguration) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&MutatingWebhookConfiguration{`,
+ `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
+ `Webhooks:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Webhooks), "Webhook", "Webhook", 1), `&`, ``, 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *MutatingWebhookConfigurationList) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&MutatingWebhookConfigurationList{`,
+ `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`,
+ `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "MutatingWebhookConfiguration", "MutatingWebhookConfiguration", 1), `&`, ``, 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
func (this *Rule) String() string {
if this == nil {
return "nil"
@@ -824,6 +949,55 @@ func (this *ServiceReference) String() string {
s := strings.Join([]string{`&ServiceReference{`,
`Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`,
`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
+ `Path:` + valueToStringGenerated(this.Path) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ValidatingWebhookConfiguration) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&ValidatingWebhookConfiguration{`,
+ `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
+ `Webhooks:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Webhooks), "Webhook", "Webhook", 1), `&`, ``, 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ValidatingWebhookConfigurationList) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&ValidatingWebhookConfigurationList{`,
+ `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`,
+ `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "ValidatingWebhookConfiguration", "ValidatingWebhookConfiguration", 1), `&`, ``, 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *Webhook) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&Webhook{`,
+ `Name:` + fmt.Sprintf("%v", this.Name) + `,`,
+ `ClientConfig:` + strings.Replace(strings.Replace(this.ClientConfig.String(), "WebhookClientConfig", "WebhookClientConfig", 1), `&`, ``, 1) + `,`,
+ `Rules:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Rules), "RuleWithOperations", "RuleWithOperations", 1), `&`, ``, 1) + `,`,
+ `FailurePolicy:` + valueToStringGenerated(this.FailurePolicy) + `,`,
+ `NamespaceSelector:` + strings.Replace(fmt.Sprintf("%v", this.NamespaceSelector), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *WebhookClientConfig) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&WebhookClientConfig{`,
+ `Service:` + strings.Replace(fmt.Sprintf("%v", this.Service), "ServiceReference", "ServiceReference", 1) + `,`,
+ `CABundle:` + valueToStringGenerated(this.CABundle) + `,`,
+ `URL:` + valueToStringGenerated(this.URL) + `,`,
`}`,
}, "")
return s
@@ -836,538 +1010,6 @@ func valueToStringGenerated(v interface{}) string {
pv := reflect.Indirect(rv).Interface()
return fmt.Sprintf("*%v", pv)
}
-func (m *AdmissionHookClientConfig) Unmarshal(dAtA []byte) error {
- l := len(dAtA)
- iNdEx := 0
- for iNdEx < l {
- preIndex := iNdEx
- var wire uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowGenerated
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- wire |= (uint64(b) & 0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- fieldNum := int32(wire >> 3)
- wireType := int(wire & 0x7)
- if wireType == 4 {
- return fmt.Errorf("proto: AdmissionHookClientConfig: wiretype end group for non-group")
- }
- if fieldNum <= 0 {
- return fmt.Errorf("proto: AdmissionHookClientConfig: illegal tag %d (wire type %d)", fieldNum, wire)
- }
- switch fieldNum {
- case 1:
- if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Service", wireType)
- }
- var msglen int
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowGenerated
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- msglen |= (int(b) & 0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- if msglen < 0 {
- return ErrInvalidLengthGenerated
- }
- postIndex := iNdEx + msglen
- if postIndex > l {
- return io.ErrUnexpectedEOF
- }
- if err := m.Service.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
- return err
- }
- iNdEx = postIndex
- case 2:
- if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field CABundle", wireType)
- }
- var byteLen int
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowGenerated
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- byteLen |= (int(b) & 0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- if byteLen < 0 {
- return ErrInvalidLengthGenerated
- }
- postIndex := iNdEx + byteLen
- if postIndex > l {
- return io.ErrUnexpectedEOF
- }
- m.CABundle = append(m.CABundle[:0], dAtA[iNdEx:postIndex]...)
- if m.CABundle == nil {
- m.CABundle = []byte{}
- }
- iNdEx = postIndex
- case 3:
- if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field URLPath", wireType)
- }
- var stringLen uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowGenerated
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- stringLen |= (uint64(b) & 0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- intStringLen := int(stringLen)
- if intStringLen < 0 {
- return ErrInvalidLengthGenerated
- }
- postIndex := iNdEx + intStringLen
- if postIndex > l {
- return io.ErrUnexpectedEOF
- }
- m.URLPath = string(dAtA[iNdEx:postIndex])
- iNdEx = postIndex
- default:
- iNdEx = preIndex
- skippy, err := skipGenerated(dAtA[iNdEx:])
- if err != nil {
- return err
- }
- if skippy < 0 {
- return ErrInvalidLengthGenerated
- }
- if (iNdEx + skippy) > l {
- return io.ErrUnexpectedEOF
- }
- iNdEx += skippy
- }
- }
-
- if iNdEx > l {
- return io.ErrUnexpectedEOF
- }
- return nil
-}
-func (m *ExternalAdmissionHook) Unmarshal(dAtA []byte) error {
- l := len(dAtA)
- iNdEx := 0
- for iNdEx < l {
- preIndex := iNdEx
- var wire uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowGenerated
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- wire |= (uint64(b) & 0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- fieldNum := int32(wire >> 3)
- wireType := int(wire & 0x7)
- if wireType == 4 {
- return fmt.Errorf("proto: ExternalAdmissionHook: wiretype end group for non-group")
- }
- if fieldNum <= 0 {
- return fmt.Errorf("proto: ExternalAdmissionHook: illegal tag %d (wire type %d)", fieldNum, wire)
- }
- switch fieldNum {
- case 1:
- if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
- }
- var stringLen uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowGenerated
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- stringLen |= (uint64(b) & 0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- intStringLen := int(stringLen)
- if intStringLen < 0 {
- return ErrInvalidLengthGenerated
- }
- postIndex := iNdEx + intStringLen
- if postIndex > l {
- return io.ErrUnexpectedEOF
- }
- m.Name = string(dAtA[iNdEx:postIndex])
- iNdEx = postIndex
- case 2:
- if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field ClientConfig", wireType)
- }
- var msglen int
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowGenerated
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- msglen |= (int(b) & 0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- if msglen < 0 {
- return ErrInvalidLengthGenerated
- }
- postIndex := iNdEx + msglen
- if postIndex > l {
- return io.ErrUnexpectedEOF
- }
- if err := m.ClientConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
- return err
- }
- iNdEx = postIndex
- case 3:
- if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Rules", wireType)
- }
- var msglen int
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowGenerated
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- msglen |= (int(b) & 0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- if msglen < 0 {
- return ErrInvalidLengthGenerated
- }
- postIndex := iNdEx + msglen
- if postIndex > l {
- return io.ErrUnexpectedEOF
- }
- m.Rules = append(m.Rules, RuleWithOperations{})
- if err := m.Rules[len(m.Rules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
- return err
- }
- iNdEx = postIndex
- case 4:
- if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field FailurePolicy", wireType)
- }
- var stringLen uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowGenerated
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- stringLen |= (uint64(b) & 0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- intStringLen := int(stringLen)
- if intStringLen < 0 {
- return ErrInvalidLengthGenerated
- }
- postIndex := iNdEx + intStringLen
- if postIndex > l {
- return io.ErrUnexpectedEOF
- }
- s := FailurePolicyType(dAtA[iNdEx:postIndex])
- m.FailurePolicy = &s
- iNdEx = postIndex
- default:
- iNdEx = preIndex
- skippy, err := skipGenerated(dAtA[iNdEx:])
- if err != nil {
- return err
- }
- if skippy < 0 {
- return ErrInvalidLengthGenerated
- }
- if (iNdEx + skippy) > l {
- return io.ErrUnexpectedEOF
- }
- iNdEx += skippy
- }
- }
-
- if iNdEx > l {
- return io.ErrUnexpectedEOF
- }
- return nil
-}
-func (m *ExternalAdmissionHookConfiguration) Unmarshal(dAtA []byte) error {
- l := len(dAtA)
- iNdEx := 0
- for iNdEx < l {
- preIndex := iNdEx
- var wire uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowGenerated
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- wire |= (uint64(b) & 0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- fieldNum := int32(wire >> 3)
- wireType := int(wire & 0x7)
- if wireType == 4 {
- return fmt.Errorf("proto: ExternalAdmissionHookConfiguration: wiretype end group for non-group")
- }
- if fieldNum <= 0 {
- return fmt.Errorf("proto: ExternalAdmissionHookConfiguration: illegal tag %d (wire type %d)", fieldNum, wire)
- }
- switch fieldNum {
- case 1:
- if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
- }
- var msglen int
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowGenerated
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- msglen |= (int(b) & 0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- if msglen < 0 {
- return ErrInvalidLengthGenerated
- }
- postIndex := iNdEx + msglen
- if postIndex > l {
- return io.ErrUnexpectedEOF
- }
- if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
- return err
- }
- iNdEx = postIndex
- case 2:
- if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field ExternalAdmissionHooks", wireType)
- }
- var msglen int
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowGenerated
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- msglen |= (int(b) & 0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- if msglen < 0 {
- return ErrInvalidLengthGenerated
- }
- postIndex := iNdEx + msglen
- if postIndex > l {
- return io.ErrUnexpectedEOF
- }
- m.ExternalAdmissionHooks = append(m.ExternalAdmissionHooks, ExternalAdmissionHook{})
- if err := m.ExternalAdmissionHooks[len(m.ExternalAdmissionHooks)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
- return err
- }
- iNdEx = postIndex
- default:
- iNdEx = preIndex
- skippy, err := skipGenerated(dAtA[iNdEx:])
- if err != nil {
- return err
- }
- if skippy < 0 {
- return ErrInvalidLengthGenerated
- }
- if (iNdEx + skippy) > l {
- return io.ErrUnexpectedEOF
- }
- iNdEx += skippy
- }
- }
-
- if iNdEx > l {
- return io.ErrUnexpectedEOF
- }
- return nil
-}
-func (m *ExternalAdmissionHookConfigurationList) Unmarshal(dAtA []byte) error {
- l := len(dAtA)
- iNdEx := 0
- for iNdEx < l {
- preIndex := iNdEx
- var wire uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowGenerated
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- wire |= (uint64(b) & 0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- fieldNum := int32(wire >> 3)
- wireType := int(wire & 0x7)
- if wireType == 4 {
- return fmt.Errorf("proto: ExternalAdmissionHookConfigurationList: wiretype end group for non-group")
- }
- if fieldNum <= 0 {
- return fmt.Errorf("proto: ExternalAdmissionHookConfigurationList: illegal tag %d (wire type %d)", fieldNum, wire)
- }
- switch fieldNum {
- case 1:
- if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
- }
- var msglen int
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowGenerated
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- msglen |= (int(b) & 0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- if msglen < 0 {
- return ErrInvalidLengthGenerated
- }
- postIndex := iNdEx + msglen
- if postIndex > l {
- return io.ErrUnexpectedEOF
- }
- if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
- return err
- }
- iNdEx = postIndex
- case 2:
- if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
- }
- var msglen int
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowGenerated
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- msglen |= (int(b) & 0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- if msglen < 0 {
- return ErrInvalidLengthGenerated
- }
- postIndex := iNdEx + msglen
- if postIndex > l {
- return io.ErrUnexpectedEOF
- }
- m.Items = append(m.Items, ExternalAdmissionHookConfiguration{})
- if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
- return err
- }
- iNdEx = postIndex
- default:
- iNdEx = preIndex
- skippy, err := skipGenerated(dAtA[iNdEx:])
- if err != nil {
- return err
- }
- if skippy < 0 {
- return ErrInvalidLengthGenerated
- }
- if (iNdEx + skippy) > l {
- return io.ErrUnexpectedEOF
- }
- iNdEx += skippy
- }
- }
-
- if iNdEx > l {
- return io.ErrUnexpectedEOF
- }
- return nil
-}
func (m *Initializer) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
@@ -1700,6 +1342,228 @@ func (m *InitializerConfigurationList) Unmarshal(dAtA []byte) error {
}
return nil
}
+func (m *MutatingWebhookConfiguration) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MutatingWebhookConfiguration: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MutatingWebhookConfiguration: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Webhooks", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Webhooks = append(m.Webhooks, Webhook{})
+ if err := m.Webhooks[len(m.Webhooks)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipGenerated(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MutatingWebhookConfigurationList) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MutatingWebhookConfigurationList: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MutatingWebhookConfigurationList: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Items = append(m.Items, MutatingWebhookConfiguration{})
+ if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipGenerated(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
func (m *Rule) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
@@ -2033,6 +1897,605 @@ func (m *ServiceReference) Unmarshal(dAtA []byte) error {
}
m.Name = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ s := string(dAtA[iNdEx:postIndex])
+ m.Path = &s
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipGenerated(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ValidatingWebhookConfiguration) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ValidatingWebhookConfiguration: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ValidatingWebhookConfiguration: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Webhooks", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Webhooks = append(m.Webhooks, Webhook{})
+ if err := m.Webhooks[len(m.Webhooks)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipGenerated(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ValidatingWebhookConfigurationList) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ValidatingWebhookConfigurationList: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ValidatingWebhookConfigurationList: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Items = append(m.Items, ValidatingWebhookConfiguration{})
+ if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipGenerated(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Webhook) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Webhook: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Webhook: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ClientConfig", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if err := m.ClientConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Rules", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Rules = append(m.Rules, RuleWithOperations{})
+ if err := m.Rules[len(m.Rules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field FailurePolicy", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ s := FailurePolicyType(dAtA[iNdEx:postIndex])
+ m.FailurePolicy = &s
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field NamespaceSelector", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.NamespaceSelector == nil {
+ m.NamespaceSelector = &k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector{}
+ }
+ if err := m.NamespaceSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipGenerated(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *WebhookClientConfig) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: WebhookClientConfig: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: WebhookClientConfig: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Service", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Service == nil {
+ m.Service = &ServiceReference{}
+ }
+ if err := m.Service.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CABundle", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.CABundle = append(m.CABundle[:0], dAtA[iNdEx:postIndex]...)
+ if m.CABundle == nil {
+ m.CABundle = []byte{}
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field URL", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ s := string(dAtA[iNdEx:postIndex])
+ m.URL = &s
+ iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipGenerated(dAtA[iNdEx:])
@@ -2164,61 +2627,68 @@ func init() {
}
var fileDescriptorGenerated = []byte{
- // 893 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0xcf, 0x8b, 0x23, 0x45,
- 0x14, 0x4e, 0x65, 0x32, 0x4c, 0x52, 0x49, 0xd8, 0xdd, 0x42, 0x97, 0x38, 0x48, 0x27, 0xf4, 0x61,
- 0xc9, 0x22, 0x76, 0x3b, 0xa3, 0x2c, 0x82, 0x88, 0x4e, 0x8f, 0xbf, 0x06, 0x66, 0x77, 0xc7, 0x72,
- 0x55, 0x10, 0x0f, 0x56, 0x3a, 0x2f, 0x49, 0x99, 0xfe, 0x45, 0x55, 0x75, 0x70, 0x3c, 0x88, 0x17,
- 0xef, 0x82, 0x17, 0xaf, 0xde, 0xfc, 0x53, 0xe6, 0xb8, 0xc7, 0x39, 0x05, 0xa7, 0x05, 0x2f, 0x82,
- 0x7f, 0xc0, 0x9c, 0xa4, 0x7f, 0xa5, 0x3b, 0x9b, 0x84, 0x9d, 0x28, 0xec, 0x2d, 0xf5, 0xbd, 0xfa,
- 0xde, 0xfb, 0xde, 0x97, 0xf7, 0xaa, 0x31, 0x9d, 0xbe, 0x2d, 0x0d, 0xee, 0x9b, 0xd3, 0x70, 0x00,
- 0xc2, 0x03, 0x05, 0xd2, 0x9c, 0x81, 0x37, 0xf4, 0x85, 0x99, 0x05, 0x58, 0xc0, 0x4d, 0x36, 0x74,
- 0xb9, 0x94, 0xdc, 0xf7, 0x04, 0x8c, 0xb9, 0x54, 0x82, 0x29, 0xee, 0x7b, 0xe6, 0xec, 0x80, 0x39,
- 0xc1, 0x84, 0x1d, 0x98, 0x63, 0xf0, 0x40, 0x30, 0x05, 0x43, 0x23, 0x10, 0xbe, 0xf2, 0xc9, 0xfd,
- 0x94, 0x6a, 0xb0, 0x80, 0x1b, 0x6b, 0xa9, 0x46, 0x4e, 0xdd, 0x7f, 0x7d, 0xcc, 0xd5, 0x24, 0x1c,
- 0x18, 0xb6, 0xef, 0x9a, 0x63, 0x7f, 0xec, 0x9b, 0x49, 0x86, 0x41, 0x38, 0x4a, 0x4e, 0xc9, 0x21,
- 0xf9, 0x95, 0x66, 0xde, 0x7f, 0xab, 0x10, 0xe5, 0x32, 0x7b, 0xc2, 0x3d, 0x10, 0xe7, 0x66, 0x30,
- 0x1d, 0xc7, 0x80, 0x34, 0x5d, 0x50, 0xcc, 0x9c, 0xad, 0xe8, 0xd9, 0x37, 0x37, 0xb1, 0x44, 0xe8,
- 0x29, 0xee, 0xc2, 0x0a, 0xe1, 0xc1, 0xf3, 0x08, 0xd2, 0x9e, 0x80, 0xcb, 0x56, 0x78, 0x6f, 0x6e,
- 0xe2, 0x85, 0x8a, 0x3b, 0x26, 0xf7, 0x94, 0x54, 0xe2, 0x59, 0x92, 0x7e, 0x89, 0xf0, 0x2b, 0x47,
- 0xb9, 0x4b, 0x9f, 0xf8, 0xfe, 0xf4, 0xd8, 0xe1, 0xe0, 0xa9, 0x63, 0xdf, 0x1b, 0xf1, 0x31, 0x19,
- 0xe1, 0x3d, 0x09, 0x62, 0xc6, 0x6d, 0xe8, 0xa0, 0x1e, 0xea, 0x37, 0x0f, 0xdf, 0x31, 0x6e, 0xec,
- 0xae, 0xf1, 0x59, 0xca, 0xa4, 0x30, 0x02, 0x01, 0x9e, 0x0d, 0xd6, 0xad, 0x8b, 0x79, 0xb7, 0x12,
- 0xcd, 0xbb, 0x7b, 0x79, 0x24, 0x4f, 0x4e, 0xfa, 0xb8, 0x6e, 0x33, 0x2b, 0xf4, 0x86, 0x0e, 0x74,
- 0xaa, 0x3d, 0xd4, 0x6f, 0x59, 0xad, 0x68, 0xde, 0xad, 0x1f, 0x1f, 0xa5, 0x18, 0x5d, 0x44, 0xc9,
- 0x7d, 0xbc, 0x17, 0x0a, 0xe7, 0x8c, 0xa9, 0x49, 0x67, 0xa7, 0x87, 0xfa, 0x8d, 0x22, 0xe9, 0xe7,
- 0xf4, 0x34, 0x86, 0x69, 0x1e, 0xd7, 0xff, 0xae, 0xe2, 0x97, 0x3f, 0xfc, 0x4e, 0x81, 0xf0, 0x98,
- 0xb3, 0xd4, 0x22, 0xe9, 0xe1, 0x9a, 0xc7, 0xdc, 0xb4, 0xa7, 0x86, 0xd5, 0xca, 0x32, 0xd4, 0x1e,
- 0x31, 0x17, 0x68, 0x12, 0x21, 0x3f, 0xe0, 0x96, 0x5d, 0x32, 0x22, 0x11, 0xd5, 0x3c, 0xfc, 0x60,
- 0x8b, 0xee, 0x37, 0x9a, 0x6a, 0xbd, 0x94, 0xd5, 0x6b, 0x95, 0x51, 0xba, 0x54, 0x8f, 0x0c, 0xf0,
- 0xae, 0x08, 0x1d, 0x90, 0x9d, 0x9d, 0xde, 0x4e, 0xbf, 0x79, 0xf8, 0xee, 0x16, 0x85, 0x69, 0xe8,
- 0xc0, 0x97, 0x5c, 0x4d, 0x1e, 0x07, 0x90, 0x86, 0xa4, 0xd5, 0xce, 0x2a, 0xee, 0xc6, 0x31, 0x49,
- 0xd3, 0xd4, 0xe4, 0x14, 0xb7, 0x47, 0x8c, 0x3b, 0xa1, 0x80, 0x33, 0xdf, 0xe1, 0xf6, 0x79, 0xa7,
- 0x96, 0xd8, 0x71, 0x2f, 0x9a, 0x77, 0xdb, 0x1f, 0x95, 0x03, 0xd7, 0xf3, 0xee, 0x9d, 0x25, 0xe0,
- 0xc9, 0x79, 0x00, 0x74, 0x99, 0xac, 0xff, 0x56, 0xc5, 0xfa, 0x5a, 0xb7, 0xd3, 0x8e, 0xc2, 0x54,
- 0x0b, 0xf9, 0x06, 0xd7, 0xe3, 0x45, 0x19, 0x32, 0xc5, 0xb2, 0x91, 0x7a, 0xa3, 0xd4, 0xdb, 0x62,
- 0x6e, 0x8d, 0x60, 0x3a, 0x8e, 0x01, 0x69, 0xc4, 0xb7, 0x8d, 0xd9, 0x81, 0xf1, 0x78, 0xf0, 0x2d,
- 0xd8, 0xea, 0x21, 0x28, 0x66, 0x91, 0xac, 0x1d, 0x5c, 0x60, 0x74, 0x91, 0x95, 0xfc, 0x8a, 0xf0,
- 0x5d, 0x58, 0x27, 0x44, 0x76, 0xaa, 0x89, 0x99, 0xef, 0x6f, 0x61, 0xe6, 0xda, 0x8e, 0x2c, 0x2d,
- 0x13, 0x70, 0x77, 0x6d, 0x58, 0xd2, 0x0d, 0xf5, 0xf5, 0x6b, 0x84, 0xef, 0x3d, 0xdf, 0xa3, 0x53,
- 0x2e, 0x15, 0xf9, 0x7a, 0xc5, 0x27, 0xe3, 0x66, 0x3e, 0xc5, 0xec, 0xc4, 0xa5, 0xdb, 0x99, 0xc8,
- 0x7a, 0x8e, 0x94, 0x3c, 0x12, 0x78, 0x97, 0x2b, 0x70, 0x73, 0x47, 0x1e, 0xfe, 0x5f, 0x47, 0x96,
- 0xf4, 0x17, 0xe3, 0x76, 0x12, 0xd7, 0xa0, 0x69, 0x29, 0xfd, 0x27, 0x84, 0x9b, 0x27, 0x1e, 0x57,
- 0x9c, 0x39, 0xfc, 0x7b, 0x10, 0x37, 0x58, 0xc2, 0x27, 0xf9, 0x12, 0xa4, 0x2a, 0xcd, 0x2d, 0x97,
- 0x60, 0xfd, 0xd8, 0xeb, 0xff, 0x20, 0xdc, 0x29, 0xe9, 0x78, 0xd1, 0xe3, 0x19, 0xe0, 0x16, 0x2f,
- 0xaa, 0xe7, 0xbd, 0x3d, 0xd8, 0xa2, 0xb7, 0x92, 0xf8, 0xe2, 0x2d, 0x29, 0x81, 0x92, 0x2e, 0x55,
- 0xd0, 0xff, 0x42, 0xf8, 0xd5, 0x4d, 0x0d, 0xbf, 0x80, 0x59, 0x9b, 0x2c, 0xcf, 0xda, 0xf1, 0x7f,
- 0xeb, 0xf4, 0x26, 0x13, 0xf6, 0x0b, 0xc2, 0xb5, 0xf8, 0xaf, 0x26, 0xaf, 0xe1, 0x06, 0x0b, 0xf8,
- 0xc7, 0xc2, 0x0f, 0x03, 0xd9, 0x41, 0xbd, 0x9d, 0x7e, 0xc3, 0x6a, 0x47, 0xf3, 0x6e, 0xe3, 0xe8,
- 0xec, 0x24, 0x05, 0x69, 0x11, 0x27, 0x07, 0xb8, 0xc9, 0x02, 0xfe, 0x05, 0x88, 0x58, 0x47, 0xaa,
- 0xb2, 0x61, 0xdd, 0x8a, 0xe6, 0xdd, 0xe6, 0xd1, 0xd9, 0x49, 0x0e, 0xd3, 0xf2, 0x9d, 0x38, 0xbf,
- 0x00, 0xe9, 0x87, 0xc2, 0xce, 0x5e, 0xe8, 0x2c, 0x3f, 0xcd, 0x41, 0x5a, 0xc4, 0xf5, 0xdf, 0x11,
- 0x26, 0xab, 0x6f, 0x32, 0x79, 0x0f, 0x63, 0x7f, 0x71, 0xca, 0x44, 0x76, 0x93, 0xa9, 0x59, 0xa0,
- 0xd7, 0xf3, 0x6e, 0x7b, 0x71, 0x4a, 0xde, 0xdc, 0x12, 0x85, 0x7c, 0x8a, 0x6b, 0xf1, 0x40, 0x67,
- 0x9f, 0xa6, 0xad, 0x97, 0x63, 0xb1, 0x70, 0xf1, 0x89, 0x26, 0xa9, 0x74, 0xc0, 0xb7, 0x9f, 0xfd,
- 0x68, 0x13, 0x13, 0x37, 0xe2, 0x65, 0x94, 0x01, 0xb3, 0xf3, 0x5d, 0xbd, 0x93, 0x51, 0x1b, 0x8f,
- 0xf2, 0x00, 0x2d, 0xee, 0x2c, 0xf6, 0xba, 0xba, 0x69, 0xaf, 0x2d, 0xe3, 0xe2, 0x4a, 0xab, 0x3c,
- 0xbd, 0xd2, 0x2a, 0x97, 0x57, 0x5a, 0xe5, 0xc7, 0x48, 0x43, 0x17, 0x91, 0x86, 0x9e, 0x46, 0x1a,
- 0xba, 0x8c, 0x34, 0xf4, 0x47, 0xa4, 0xa1, 0x9f, 0xff, 0xd4, 0x2a, 0x5f, 0xd5, 0x73, 0xbd, 0xff,
- 0x06, 0x00, 0x00, 0xff, 0xff, 0x01, 0xf7, 0xd5, 0xa0, 0x26, 0x0a, 0x00, 0x00,
+ // 1001 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x56, 0xcf, 0x6f, 0xe3, 0x44,
+ 0x14, 0xae, 0x9b, 0x54, 0x4d, 0x26, 0xa9, 0xd8, 0x1a, 0x90, 0x42, 0x55, 0xd9, 0x91, 0x0f, 0xa8,
+ 0x08, 0xad, 0x4d, 0xba, 0x68, 0x85, 0x84, 0x00, 0xd5, 0x95, 0x58, 0x45, 0x6a, 0xbb, 0x65, 0xb6,
+ 0xec, 0x4a, 0x88, 0x03, 0x13, 0xe7, 0x35, 0x19, 0xe2, 0xd8, 0xd6, 0xcc, 0x38, 0xb4, 0x9c, 0x90,
+ 0x10, 0x77, 0x24, 0xfe, 0x09, 0xfe, 0x0a, 0xce, 0x3d, 0x2e, 0x17, 0xd4, 0x93, 0x45, 0x8d, 0xc4,
+ 0x91, 0x03, 0xc7, 0x3d, 0xa1, 0xf1, 0x8f, 0xd8, 0x69, 0x9a, 0xd2, 0x70, 0xe8, 0x81, 0x5b, 0xe6,
+ 0x7b, 0xf3, 0x7d, 0xef, 0x7d, 0x33, 0xf3, 0x5e, 0x8c, 0xf0, 0xe8, 0x03, 0x6e, 0x52, 0xdf, 0x1a,
+ 0x85, 0x3d, 0x60, 0x1e, 0x08, 0xe0, 0xd6, 0x04, 0xbc, 0xbe, 0xcf, 0xac, 0x2c, 0x40, 0x02, 0x6a,
+ 0x91, 0xfe, 0x98, 0x72, 0x4e, 0x7d, 0x8f, 0xc1, 0x80, 0x72, 0xc1, 0x88, 0xa0, 0xbe, 0x67, 0x4d,
+ 0x3a, 0xc4, 0x0d, 0x86, 0xa4, 0x63, 0x0d, 0xc0, 0x03, 0x46, 0x04, 0xf4, 0xcd, 0x80, 0xf9, 0xc2,
+ 0x57, 0xdf, 0x49, 0xa9, 0x26, 0x09, 0xa8, 0x79, 0x23, 0xd5, 0xcc, 0xa9, 0x5b, 0x0f, 0x07, 0x54,
+ 0x0c, 0xc3, 0x9e, 0xe9, 0xf8, 0x63, 0x6b, 0xe0, 0x0f, 0x7c, 0x2b, 0x51, 0xe8, 0x85, 0xa7, 0xc9,
+ 0x2a, 0x59, 0x24, 0xbf, 0x52, 0xe5, 0x2d, 0xa3, 0x54, 0x94, 0xe3, 0x33, 0xb0, 0x26, 0x73, 0xd9,
+ 0xb7, 0x0e, 0x8b, 0x3d, 0x70, 0x26, 0xc0, 0x93, 0xc9, 0xf9, 0x43, 0x12, 0x50, 0x0e, 0x6c, 0x02,
+ 0xcc, 0x0a, 0x46, 0x03, 0x19, 0xe3, 0xb3, 0x1b, 0xac, 0x49, 0xa7, 0x07, 0x62, 0xde, 0xcc, 0xd6,
+ 0xfb, 0x85, 0xdc, 0x98, 0x38, 0x43, 0xea, 0x01, 0x3b, 0x2f, 0x34, 0xc6, 0x20, 0xc8, 0x4d, 0x45,
+ 0x58, 0x8b, 0x58, 0x2c, 0xf4, 0x04, 0x1d, 0xc3, 0x1c, 0xe1, 0xf1, 0xbf, 0x11, 0xb8, 0x33, 0x84,
+ 0x31, 0x99, 0xe3, 0x3d, 0x5a, 0xc4, 0x0b, 0x05, 0x75, 0x2d, 0xea, 0x09, 0x2e, 0xd8, 0x75, 0x92,
+ 0xf1, 0x83, 0x82, 0x1a, 0x5d, 0x8f, 0x0a, 0x4a, 0x5c, 0xfa, 0x2d, 0x30, 0xb5, 0x8d, 0xaa, 0x1e,
+ 0x19, 0x43, 0x4b, 0x69, 0x2b, 0x3b, 0x75, 0xbb, 0x79, 0x11, 0xe9, 0x2b, 0x71, 0xa4, 0x57, 0x8f,
+ 0xc8, 0x18, 0x70, 0x12, 0x51, 0x4f, 0xd0, 0x1a, 0x0b, 0x5d, 0xe0, 0xad, 0xd5, 0x76, 0x65, 0xa7,
+ 0xb1, 0x6b, 0x99, 0x77, 0xbe, 0x62, 0x13, 0x87, 0x2e, 0xd8, 0x1b, 0x99, 0xe6, 0x9a, 0x5c, 0x71,
+ 0x9c, 0x8a, 0x19, 0x7f, 0x29, 0xa8, 0x55, 0xaa, 0x63, 0xdf, 0xf7, 0x4e, 0xe9, 0x20, 0x4c, 0x05,
+ 0xd4, 0xaf, 0x50, 0x4d, 0x9e, 0x6e, 0x9f, 0x08, 0x92, 0x14, 0xd6, 0xd8, 0x7d, 0xaf, 0x94, 0x75,
+ 0x6a, 0xd6, 0x0c, 0x46, 0x03, 0x09, 0x70, 0x53, 0xee, 0x36, 0x27, 0x1d, 0xf3, 0x69, 0xef, 0x6b,
+ 0x70, 0xc4, 0x21, 0x08, 0x62, 0xab, 0x59, 0x5a, 0x54, 0x60, 0x78, 0xaa, 0xaa, 0x06, 0xa8, 0x49,
+ 0x8b, 0xec, 0xb9, 0xb7, 0xc7, 0x4b, 0x78, 0x2b, 0x15, 0x6f, 0xbf, 0x91, 0xe5, 0x6a, 0x96, 0x40,
+ 0x8e, 0x67, 0x32, 0x18, 0x7f, 0x2a, 0x68, 0x7b, 0x91, 0xe1, 0x03, 0xca, 0x85, 0xfa, 0xe5, 0x9c,
+ 0x69, 0xf3, 0x6e, 0xa6, 0x25, 0x3b, 0xb1, 0xfc, 0x20, 0x2b, 0xa3, 0x96, 0x23, 0x25, 0xc3, 0x43,
+ 0xb4, 0x46, 0x05, 0x8c, 0x73, 0xa7, 0xfb, 0xff, 0xcd, 0xe9, 0x4c, 0xd5, 0xc5, 0xcd, 0x76, 0xa5,
+ 0x32, 0x4e, 0x13, 0x18, 0xbf, 0x29, 0x68, 0xfb, 0x30, 0x14, 0x44, 0x50, 0x6f, 0xf0, 0x02, 0x7a,
+ 0x43, 0xdf, 0x1f, 0xdd, 0xf7, 0xed, 0x9e, 0xa0, 0x5a, 0x96, 0x39, 0xf7, 0xbb, 0xbb, 0x84, 0xdf,
+ 0x8c, 0x6a, 0x57, 0x65, 0x0e, 0x5c, 0xfb, 0x26, 0x53, 0x92, 0x4f, 0xb6, 0x7d, 0x9b, 0xb1, 0x7b,
+ 0xb8, 0x45, 0x77, 0xf6, 0x16, 0x9f, 0x2c, 0xe1, 0xea, 0xb6, 0xca, 0x17, 0xdc, 0xe4, 0x4f, 0x0a,
+ 0xaa, 0xca, 0xa6, 0x55, 0xdf, 0x45, 0x75, 0x12, 0xd0, 0x27, 0xcc, 0x0f, 0x03, 0xde, 0x52, 0xda,
+ 0x95, 0x9d, 0xba, 0xbd, 0x11, 0x47, 0x7a, 0x7d, 0xef, 0xb8, 0x9b, 0x82, 0xb8, 0x88, 0xab, 0x1d,
+ 0xd4, 0x20, 0x01, 0x7d, 0x0e, 0x2c, 0x19, 0xae, 0x49, 0xa5, 0x75, 0xfb, 0xb5, 0x38, 0xd2, 0x1b,
+ 0x7b, 0xc7, 0xdd, 0x1c, 0xc6, 0xe5, 0x3d, 0x52, 0x9f, 0x01, 0xf7, 0x43, 0xe6, 0x00, 0x6f, 0x55,
+ 0x0a, 0x7d, 0x9c, 0x83, 0xb8, 0x88, 0x1b, 0x3f, 0x2b, 0x48, 0x95, 0x55, 0xbd, 0xa0, 0x62, 0xf8,
+ 0x34, 0x80, 0xd4, 0x01, 0x57, 0x3f, 0x41, 0xc8, 0x9f, 0xae, 0xb2, 0x22, 0xf5, 0xe4, 0x85, 0x4c,
+ 0xd1, 0x57, 0x91, 0xbe, 0x31, 0x5d, 0x9d, 0x9c, 0x07, 0x80, 0x4b, 0x14, 0xf5, 0x33, 0x54, 0x95,
+ 0xa3, 0xa9, 0xb5, 0x9a, 0xdc, 0xda, 0xd2, 0x63, 0x6e, 0x3a, 0x3a, 0xe5, 0x0a, 0x27, 0x52, 0xc6,
+ 0xf7, 0x0a, 0x7a, 0xf0, 0x0c, 0xd8, 0x84, 0x3a, 0x80, 0xe1, 0x14, 0x18, 0x78, 0x0e, 0xa8, 0x16,
+ 0xaa, 0xcb, 0xb9, 0xca, 0x03, 0xe2, 0xe4, 0x63, 0x77, 0x33, 0xe3, 0xd6, 0x8f, 0xf2, 0x00, 0x2e,
+ 0xf6, 0x4c, 0x47, 0xf4, 0xea, 0xc2, 0x11, 0xbd, 0x8d, 0xaa, 0x01, 0x11, 0xc3, 0x56, 0x25, 0xd9,
+ 0x51, 0x93, 0xd1, 0x63, 0x22, 0x86, 0x38, 0x41, 0x8d, 0x4b, 0x05, 0x69, 0xcf, 0x89, 0x4b, 0xfb,
+ 0xff, 0xbf, 0x96, 0xfc, 0x5b, 0x41, 0xc6, 0xed, 0xd6, 0xee, 0xa1, 0x29, 0xbd, 0xd9, 0xa6, 0xec,
+ 0x2e, 0xe1, 0xeb, 0xf6, 0xda, 0x17, 0xb4, 0xe5, 0xaf, 0x15, 0xb4, 0x9e, 0x6d, 0xbf, 0xc3, 0xdf,
+ 0xf7, 0x19, 0x6a, 0x3a, 0x2e, 0x05, 0x4f, 0xa4, 0xd2, 0xd9, 0xf3, 0xfe, 0x78, 0xf9, 0xc3, 0xdf,
+ 0x2f, 0xa9, 0x14, 0xff, 0x78, 0x65, 0x14, 0xcf, 0x64, 0x52, 0x7b, 0xf9, 0x87, 0x43, 0x25, 0x39,
+ 0x97, 0x8f, 0x96, 0xec, 0xa8, 0xd9, 0xfe, 0xbe, 0xf9, 0x33, 0x42, 0x3d, 0x40, 0x1b, 0xa7, 0x84,
+ 0xba, 0x21, 0x83, 0x63, 0xdf, 0xa5, 0xce, 0x79, 0xab, 0x9a, 0x1c, 0xc4, 0xdb, 0x71, 0xa4, 0x6f,
+ 0x7c, 0x5a, 0x0e, 0xbc, 0x8a, 0xf4, 0xcd, 0x19, 0x20, 0xe9, 0xff, 0x59, 0xb2, 0x7a, 0x86, 0x36,
+ 0xa7, 0x6d, 0xf7, 0x0c, 0x5c, 0x70, 0x84, 0xcf, 0x5a, 0x6b, 0xc9, 0x81, 0x3d, 0xba, 0xe3, 0x83,
+ 0x21, 0x3d, 0x70, 0x73, 0xaa, 0xfd, 0x66, 0x1c, 0xe9, 0x9b, 0x47, 0xd7, 0x15, 0xf1, 0x7c, 0x12,
+ 0xe3, 0x17, 0x05, 0xbd, 0x7e, 0xc3, 0x39, 0xab, 0x3d, 0xb4, 0xce, 0xd3, 0x01, 0x92, 0x3d, 0xdc,
+ 0x0f, 0x97, 0x38, 0xc5, 0xeb, 0xa3, 0xc7, 0x6e, 0xc4, 0x91, 0xbe, 0x9e, 0xa3, 0xb9, 0xb0, 0xba,
+ 0x83, 0x6a, 0x0e, 0xb1, 0x43, 0xaf, 0x9f, 0x0d, 0xbf, 0xa6, 0xdd, 0x94, 0x2f, 0x7d, 0x7f, 0x2f,
+ 0xc5, 0xf0, 0x34, 0xaa, 0xbe, 0x85, 0x2a, 0x21, 0x73, 0xb3, 0x31, 0xb3, 0x1e, 0x47, 0x7a, 0xe5,
+ 0x73, 0x7c, 0x80, 0x25, 0x66, 0x9b, 0x17, 0x57, 0xda, 0xca, 0xcb, 0x2b, 0x6d, 0xe5, 0xf2, 0x4a,
+ 0x5b, 0xf9, 0x2e, 0xd6, 0x94, 0x8b, 0x58, 0x53, 0x5e, 0xc6, 0x9a, 0x72, 0x19, 0x6b, 0xca, 0xef,
+ 0xb1, 0xa6, 0xfc, 0xf8, 0x87, 0xb6, 0xf2, 0x45, 0x2d, 0xaf, 0xed, 0x9f, 0x00, 0x00, 0x00, 0xff,
+ 0xff, 0xca, 0x86, 0x75, 0x7d, 0x7d, 0x0c, 0x00, 0x00,
}
diff --git a/staging/src/k8s.io/api/admissionregistration/v1alpha1/generated.proto b/staging/src/k8s.io/api/admissionregistration/v1alpha1/generated.proto
index b5ad69cd78..d4b7aa9ae9 100644
--- a/staging/src/k8s.io/api/admissionregistration/v1alpha1/generated.proto
+++ b/staging/src/k8s.io/api/admissionregistration/v1alpha1/generated.proto
@@ -21,6 +21,8 @@ syntax = 'proto2';
package k8s.io.api.admissionregistration.v1alpha1;
+import "k8s.io/api/core/v1/generated.proto";
+import "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto";
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
@@ -29,72 +31,6 @@ import "k8s.io/apimachinery/pkg/util/intstr/generated.proto";
// Package-wide variables from generator "generated".
option go_package = "v1alpha1";
-// AdmissionHookClientConfig contains the information to make a TLS
-// connection with the webhook
-message AdmissionHookClientConfig {
- // Service is a reference to the service for this webhook. If there is only
- // one port open for the service, that port will be used. If there are multiple
- // ports open, port 443 will be used if it is open, otherwise it is an error.
- // Required
- optional ServiceReference service = 1;
-
- // URLPath is an optional field that specifies the URL path to use when posting the AdmissionReview object.
- optional string urlPath = 3;
-
- // CABundle is a PEM encoded CA bundle which will be used to validate webhook's server certificate.
- // Required
- optional bytes caBundle = 2;
-}
-
-// ExternalAdmissionHook describes an external admission webhook and the
-// resources and operations it applies to.
-message ExternalAdmissionHook {
- // The name of the external admission webhook.
- // Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where
- // "imagepolicy" is the name of the webhook, and kubernetes.io is the name
- // of the organization.
- // Required.
- optional string name = 1;
-
- // ClientConfig defines how to communicate with the hook.
- // Required
- optional AdmissionHookClientConfig clientConfig = 2;
-
- // Rules describes what operations on what resources/subresources the webhook cares about.
- // The webhook cares about an operation if it matches _any_ Rule.
- repeated RuleWithOperations rules = 3;
-
- // FailurePolicy defines how unrecognized errors from the admission endpoint are handled -
- // allowed values are Ignore or Fail. Defaults to Ignore.
- // +optional
- optional string failurePolicy = 4;
-}
-
-// ExternalAdmissionHookConfiguration describes the configuration of initializers.
-message ExternalAdmissionHookConfiguration {
- // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
-
- // ExternalAdmissionHooks is a list of external admission webhooks and the
- // affected resources and operations.
- // +optional
- // +patchMergeKey=name
- // +patchStrategy=merge
- repeated ExternalAdmissionHook externalAdmissionHooks = 2;
-}
-
-// ExternalAdmissionHookConfigurationList is a list of ExternalAdmissionHookConfiguration.
-message ExternalAdmissionHookConfigurationList {
- // Standard list metadata.
- // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
-
- // List of ExternalAdmissionHookConfiguration.
- repeated ExternalAdmissionHookConfiguration items = 2;
-}
-
// Initializer describes the name and the failure policy of an initializer, and
// what resources it applies to.
message Initializer {
@@ -141,6 +77,30 @@ message InitializerConfigurationList {
repeated InitializerConfiguration items = 2;
}
+// MutatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and may change the object.
+message MutatingWebhookConfiguration {
+ // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.
+ // +optional
+ optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
+
+ // Webhooks is a list of webhooks and the affected resources and operations.
+ // +optional
+ // +patchMergeKey=name
+ // +patchStrategy=merge
+ repeated Webhook Webhooks = 2;
+}
+
+// MutatingWebhookConfigurationList is a list of MutatingWebhookConfiguration.
+message MutatingWebhookConfigurationList {
+ // Standard list metadata.
+ // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
+ // +optional
+ optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
+
+ // List of MutatingWebhookConfiguration.
+ repeated MutatingWebhookConfiguration items = 2;
+}
+
// Rule is a tuple of APIGroups, APIVersion, and Resources.It is recommended
// to make sure that all the tuple expansions are valid.
message Rule {
@@ -188,12 +148,160 @@ message RuleWithOperations {
// ServiceReference holds a reference to Service.legacy.k8s.io
message ServiceReference {
- // Namespace is the namespace of the service
+ // `namespace` is the namespace of the service.
// Required
optional string namespace = 1;
- // Name is the name of the service
+ // `name` is the name of the service.
// Required
optional string name = 2;
+
+ // `path` is an optional URL path which will be sent in any request to
+ // this service.
+ // +optional
+ optional string path = 3;
+}
+
+// ValidatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and object without changing it.
+message ValidatingWebhookConfiguration {
+ // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.
+ // +optional
+ optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
+
+ // Webhooks is a list of webhooks and the affected resources and operations.
+ // +optional
+ // +patchMergeKey=name
+ // +patchStrategy=merge
+ repeated Webhook Webhooks = 2;
+}
+
+// ValidatingWebhookConfigurationList is a list of ValidatingWebhookConfiguration.
+message ValidatingWebhookConfigurationList {
+ // Standard list metadata.
+ // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
+ // +optional
+ optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
+
+ // List of ValidatingWebhookConfiguration.
+ repeated ValidatingWebhookConfiguration items = 2;
+}
+
+// Webhook describes an admission webhook and the resources and operations it applies to.
+message Webhook {
+ // The name of the admission webhook.
+ // Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where
+ // "imagepolicy" is the name of the webhook, and kubernetes.io is the name
+ // of the organization.
+ // Required.
+ optional string name = 1;
+
+ // ClientConfig defines how to communicate with the hook.
+ // Required
+ optional WebhookClientConfig clientConfig = 2;
+
+ // Rules describes what operations on what resources/subresources the webhook cares about.
+ // The webhook cares about an operation if it matches _any_ Rule.
+ repeated RuleWithOperations rules = 3;
+
+ // FailurePolicy defines how unrecognized errors from the admission endpoint are handled -
+ // allowed values are Ignore or Fail. Defaults to Ignore.
+ // +optional
+ optional string failurePolicy = 4;
+
+ // NamespaceSelector decides whether to run the webhook on an object based
+ // on whether the namespace for that object matches the selector. If the
+ // object itself is a namespace, the matching is performed on
+ // object.metadata.labels. If the object is other cluster scoped resource,
+ // it is not subjected to the webhook.
+ //
+ // For example, to run the webhook on any objects whose namespace is not
+ // associated with "runlevel" of "0" or "1"; you will set the selector as
+ // follows:
+ // "namespaceSelector": {
+ // "matchExpressions": [
+ // {
+ // "key": "runlevel",
+ // "operator": "NotIn",
+ // "values": [
+ // "0",
+ // "1"
+ // ]
+ // }
+ // ]
+ // }
+ //
+ // If instead you want to only run the webhook on any objects whose
+ // namespace is associated with the "environment" of "prod" or "staging";
+ // you will set the selector as follows:
+ // "namespaceSelector": {
+ // "matchExpressions": [
+ // {
+ // "key": "environment",
+ // "operator": "In",
+ // "values": [
+ // "prod",
+ // "staging"
+ // ]
+ // }
+ // ]
+ // }
+ //
+ // See
+ // https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
+ // for more examples of label selectors.
+ //
+ // Default to the empty LabelSelector, which matches everything.
+ // +optional
+ optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 5;
+}
+
+// WebhookClientConfig contains the information to make a TLS
+// connection with the webhook
+message WebhookClientConfig {
+ // `url` gives the location of the webhook, in standard URL form
+ // (`[scheme://]host:port/path`). Exactly one of `url` or `service`
+ // must be specified.
+ //
+ // The `host` should not refer to a service running in the cluster; use
+ // the `service` field instead. The host might be resolved via external
+ // DNS in some apiservers (e.g., `kube-apiserver` cannot resolve
+ // in-cluster DNS as that would be a layering violation). `host` may
+ // also be an IP address.
+ //
+ // Please note that using `localhost` or `127.0.0.1` as a `host` is
+ // risky unless you take great care to run this webhook on all hosts
+ // which run an apiserver which might need to make calls to this
+ // webhook. Such installs are likely to be non-portable, i.e., not easy
+ // to turn up in a new cluster.
+ //
+ // The scheme must be "https"; the URL must begin with "https://".
+ //
+ // A path is optional, and if present may be any string permissible in
+ // a URL. You may use the path to pass an arbitrary string to the
+ // webhook, for example, a cluster identifier.
+ //
+ // Attempting to use a user or basic auth e.g. "user:password@" is not
+ // allowed. Fragments ("#...") and query parameters ("?...") are not
+ // allowed, either.
+ //
+ // +optional
+ optional string url = 3;
+
+ // `service` is a reference to the service for this webhook. Either
+ // `service` or `url` must be specified.
+ //
+ // If the webhook is running within the cluster, then you should use `service`.
+ //
+ // If there is only one port open for the service, that port will be
+ // used. If there are multiple ports open, port 443 will be used if it
+ // is open, otherwise it is an error.
+ //
+ // +optional
+ optional ServiceReference service = 1;
+
+ // `caBundle` is a PEM encoded CA bundle which will be used to validate
+ // the webhook's server certificate.
+ // Required.
+ optional bytes caBundle = 2;
}
diff --git a/staging/src/k8s.io/api/admissionregistration/v1alpha1/register.go b/staging/src/k8s.io/api/admissionregistration/v1alpha1/register.go
index e178cf743e..1dd422483f 100644
--- a/staging/src/k8s.io/api/admissionregistration/v1alpha1/register.go
+++ b/staging/src/k8s.io/api/admissionregistration/v1alpha1/register.go
@@ -45,8 +45,10 @@ func addKnownTypes(scheme *runtime.Scheme) error {
scheme.AddKnownTypes(SchemeGroupVersion,
&InitializerConfiguration{},
&InitializerConfigurationList{},
- &ExternalAdmissionHookConfiguration{},
- &ExternalAdmissionHookConfigurationList{},
+ &ValidatingWebhookConfiguration{},
+ &ValidatingWebhookConfigurationList{},
+ &MutatingWebhookConfiguration{},
+ &MutatingWebhookConfigurationList{},
)
metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
return nil
diff --git a/staging/src/k8s.io/api/admissionregistration/v1alpha1/types.go b/staging/src/k8s.io/api/admissionregistration/v1alpha1/types.go
index 84f47b62f1..43770b3027 100644
--- a/staging/src/k8s.io/api/admissionregistration/v1alpha1/types.go
+++ b/staging/src/k8s.io/api/admissionregistration/v1alpha1/types.go
@@ -120,37 +120,65 @@ const (
// +genclient:nonNamespaced
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-// ExternalAdmissionHookConfiguration describes the configuration of initializers.
-type ExternalAdmissionHookConfiguration struct {
+// ValidatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and object without changing it.
+type ValidatingWebhookConfiguration struct {
metav1.TypeMeta `json:",inline"`
// Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.
// +optional
metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
- // ExternalAdmissionHooks is a list of external admission webhooks and the
- // affected resources and operations.
+ // Webhooks is a list of webhooks and the affected resources and operations.
// +optional
// +patchMergeKey=name
// +patchStrategy=merge
- ExternalAdmissionHooks []ExternalAdmissionHook `json:"externalAdmissionHooks,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,2,rep,name=externalAdmissionHooks"`
+ Webhooks []Webhook `json:"webhooks,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,2,rep,name=Webhooks"`
}
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-// ExternalAdmissionHookConfigurationList is a list of ExternalAdmissionHookConfiguration.
-type ExternalAdmissionHookConfigurationList struct {
+// ValidatingWebhookConfigurationList is a list of ValidatingWebhookConfiguration.
+type ValidatingWebhookConfigurationList struct {
metav1.TypeMeta `json:",inline"`
// Standard list metadata.
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
// +optional
metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
- // List of ExternalAdmissionHookConfiguration.
- Items []ExternalAdmissionHookConfiguration `json:"items" protobuf:"bytes,2,rep,name=items"`
+ // List of ValidatingWebhookConfiguration.
+ Items []ValidatingWebhookConfiguration `json:"items" protobuf:"bytes,2,rep,name=items"`
}
-// ExternalAdmissionHook describes an external admission webhook and the
-// resources and operations it applies to.
-type ExternalAdmissionHook struct {
- // The name of the external admission webhook.
+// +genclient
+// +genclient:nonNamespaced
+// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
+
+// MutatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and may change the object.
+type MutatingWebhookConfiguration struct {
+ metav1.TypeMeta `json:",inline"`
+ // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.
+ // +optional
+ metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
+ // Webhooks is a list of webhooks and the affected resources and operations.
+ // +optional
+ // +patchMergeKey=name
+ // +patchStrategy=merge
+ Webhooks []Webhook `json:"webhooks,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,2,rep,name=Webhooks"`
+}
+
+// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
+
+// MutatingWebhookConfigurationList is a list of MutatingWebhookConfiguration.
+type MutatingWebhookConfigurationList struct {
+ metav1.TypeMeta `json:",inline"`
+ // Standard list metadata.
+ // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
+ // +optional
+ metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
+ // List of MutatingWebhookConfiguration.
+ Items []MutatingWebhookConfiguration `json:"items" protobuf:"bytes,2,rep,name=items"`
+}
+
+// Webhook describes an admission webhook and the resources and operations it applies to.
+type Webhook struct {
+ // The name of the admission webhook.
// Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where
// "imagepolicy" is the name of the webhook, and kubernetes.io is the name
// of the organization.
@@ -159,7 +187,7 @@ type ExternalAdmissionHook struct {
// ClientConfig defines how to communicate with the hook.
// Required
- ClientConfig AdmissionHookClientConfig `json:"clientConfig" protobuf:"bytes,2,opt,name=clientConfig"`
+ ClientConfig WebhookClientConfig `json:"clientConfig" protobuf:"bytes,2,opt,name=clientConfig"`
// Rules describes what operations on what resources/subresources the webhook cares about.
// The webhook cares about an operation if it matches _any_ Rule.
@@ -169,6 +197,52 @@ type ExternalAdmissionHook struct {
// allowed values are Ignore or Fail. Defaults to Ignore.
// +optional
FailurePolicy *FailurePolicyType `json:"failurePolicy,omitempty" protobuf:"bytes,4,opt,name=failurePolicy,casttype=FailurePolicyType"`
+
+ // NamespaceSelector decides whether to run the webhook on an object based
+ // on whether the namespace for that object matches the selector. If the
+ // object itself is a namespace, the matching is performed on
+ // object.metadata.labels. If the object is other cluster scoped resource,
+ // it is not subjected to the webhook.
+ //
+ // For example, to run the webhook on any objects whose namespace is not
+ // associated with "runlevel" of "0" or "1"; you will set the selector as
+ // follows:
+ // "namespaceSelector": {
+ // "matchExpressions": [
+ // {
+ // "key": "runlevel",
+ // "operator": "NotIn",
+ // "values": [
+ // "0",
+ // "1"
+ // ]
+ // }
+ // ]
+ // }
+ //
+ // If instead you want to only run the webhook on any objects whose
+ // namespace is associated with the "environment" of "prod" or "staging";
+ // you will set the selector as follows:
+ // "namespaceSelector": {
+ // "matchExpressions": [
+ // {
+ // "key": "environment",
+ // "operator": "In",
+ // "values": [
+ // "prod",
+ // "staging"
+ // ]
+ // }
+ // ]
+ // }
+ //
+ // See
+ // https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
+ // for more examples of label selectors.
+ //
+ // Default to the empty LabelSelector, which matches everything.
+ // +optional
+ NamespaceSelector *metav1.LabelSelector `json:"namespaceSelector,omitempty" protobuf:"bytes,5,opt,name=namespaceSelector"`
}
// RuleWithOperations is a tuple of Operations and Resources. It is recommended to make
@@ -195,29 +269,67 @@ const (
Connect OperationType = "CONNECT"
)
-// AdmissionHookClientConfig contains the information to make a TLS
+// WebhookClientConfig contains the information to make a TLS
// connection with the webhook
-type AdmissionHookClientConfig struct {
- // Service is a reference to the service for this webhook. If there is only
- // one port open for the service, that port will be used. If there are multiple
- // ports open, port 443 will be used if it is open, otherwise it is an error.
- // Required
- Service ServiceReference `json:"service" protobuf:"bytes,1,opt,name=service"`
+type WebhookClientConfig struct {
+ // `url` gives the location of the webhook, in standard URL form
+ // (`[scheme://]host:port/path`). Exactly one of `url` or `service`
+ // must be specified.
+ //
+ // The `host` should not refer to a service running in the cluster; use
+ // the `service` field instead. The host might be resolved via external
+ // DNS in some apiservers (e.g., `kube-apiserver` cannot resolve
+ // in-cluster DNS as that would be a layering violation). `host` may
+ // also be an IP address.
+ //
+ // Please note that using `localhost` or `127.0.0.1` as a `host` is
+ // risky unless you take great care to run this webhook on all hosts
+ // which run an apiserver which might need to make calls to this
+ // webhook. Such installs are likely to be non-portable, i.e., not easy
+ // to turn up in a new cluster.
+ //
+ // The scheme must be "https"; the URL must begin with "https://".
+ //
+ // A path is optional, and if present may be any string permissible in
+ // a URL. You may use the path to pass an arbitrary string to the
+ // webhook, for example, a cluster identifier.
+ //
+ // Attempting to use a user or basic auth e.g. "user:password@" is not
+ // allowed. Fragments ("#...") and query parameters ("?...") are not
+ // allowed, either.
+ //
+ // +optional
+ URL *string `json:"url,omitempty" protobuf:"bytes,3,opt,name=url"`
- // URLPath is an optional field that specifies the URL path to use when posting the AdmissionReview object.
- URLPath string `json:"urlPath" protobuf:"bytes,3,opt,name=urlPath"`
+ // `service` is a reference to the service for this webhook. Either
+ // `service` or `url` must be specified.
+ //
+ // If the webhook is running within the cluster, then you should use `service`.
+ //
+ // If there is only one port open for the service, that port will be
+ // used. If there are multiple ports open, port 443 will be used if it
+ // is open, otherwise it is an error.
+ //
+ // +optional
+ Service *ServiceReference `json:"service" protobuf:"bytes,1,opt,name=service"`
- // CABundle is a PEM encoded CA bundle which will be used to validate webhook's server certificate.
- // Required
+ // `caBundle` is a PEM encoded CA bundle which will be used to validate
+ // the webhook's server certificate.
+ // Required.
CABundle []byte `json:"caBundle" protobuf:"bytes,2,opt,name=caBundle"`
}
// ServiceReference holds a reference to Service.legacy.k8s.io
type ServiceReference struct {
- // Namespace is the namespace of the service
+ // `namespace` is the namespace of the service.
// Required
Namespace string `json:"namespace" protobuf:"bytes,1,opt,name=namespace"`
- // Name is the name of the service
+ // `name` is the name of the service.
// Required
Name string `json:"name" protobuf:"bytes,2,opt,name=name"`
+
+ // `path` is an optional URL path which will be sent in any request to
+ // this service.
+ // +optional
+ Path *string `json:"path,omitempty" protobuf:"bytes,3,opt,name=path"`
}
diff --git a/staging/src/k8s.io/api/admissionregistration/v1alpha1/types_swagger_doc_generated.go b/staging/src/k8s.io/api/admissionregistration/v1alpha1/types_swagger_doc_generated.go
index 77a8a5197b..6f8defa996 100644
--- a/staging/src/k8s.io/api/admissionregistration/v1alpha1/types_swagger_doc_generated.go
+++ b/staging/src/k8s.io/api/admissionregistration/v1alpha1/types_swagger_doc_generated.go
@@ -27,49 +27,6 @@ package v1alpha1
// Those methods can be generated by using hack/update-generated-swagger-docs.sh
// AUTO-GENERATED FUNCTIONS START HERE
-var map_AdmissionHookClientConfig = map[string]string{
- "": "AdmissionHookClientConfig contains the information to make a TLS connection with the webhook",
- "service": "Service is a reference to the service for this webhook. If there is only one port open for the service, that port will be used. If there are multiple ports open, port 443 will be used if it is open, otherwise it is an error. Required",
- "urlPath": "URLPath is an optional field that specifies the URL path to use when posting the AdmissionReview object.",
- "caBundle": "CABundle is a PEM encoded CA bundle which will be used to validate webhook's server certificate. Required",
-}
-
-func (AdmissionHookClientConfig) SwaggerDoc() map[string]string {
- return map_AdmissionHookClientConfig
-}
-
-var map_ExternalAdmissionHook = map[string]string{
- "": "ExternalAdmissionHook describes an external admission webhook and the resources and operations it applies to.",
- "name": "The name of the external admission webhook. Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where \"imagepolicy\" is the name of the webhook, and kubernetes.io is the name of the organization. Required.",
- "clientConfig": "ClientConfig defines how to communicate with the hook. Required",
- "rules": "Rules describes what operations on what resources/subresources the webhook cares about. The webhook cares about an operation if it matches _any_ Rule.",
- "failurePolicy": "FailurePolicy defines how unrecognized errors from the admission endpoint are handled - allowed values are Ignore or Fail. Defaults to Ignore.",
-}
-
-func (ExternalAdmissionHook) SwaggerDoc() map[string]string {
- return map_ExternalAdmissionHook
-}
-
-var map_ExternalAdmissionHookConfiguration = map[string]string{
- "": "ExternalAdmissionHookConfiguration describes the configuration of initializers.",
- "metadata": "Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.",
- "externalAdmissionHooks": "ExternalAdmissionHooks is a list of external admission webhooks and the affected resources and operations.",
-}
-
-func (ExternalAdmissionHookConfiguration) SwaggerDoc() map[string]string {
- return map_ExternalAdmissionHookConfiguration
-}
-
-var map_ExternalAdmissionHookConfigurationList = map[string]string{
- "": "ExternalAdmissionHookConfigurationList is a list of ExternalAdmissionHookConfiguration.",
- "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds",
- "items": "List of ExternalAdmissionHookConfiguration.",
-}
-
-func (ExternalAdmissionHookConfigurationList) SwaggerDoc() map[string]string {
- return map_ExternalAdmissionHookConfigurationList
-}
-
var map_Initializer = map[string]string{
"": "Initializer describes the name and the failure policy of an initializer, and what resources it applies to.",
"name": "Name is the identifier of the initializer. It will be added to the object that needs to be initialized. Name should be fully qualified, e.g., alwayspullimages.kubernetes.io, where \"alwayspullimages\" is the name of the webhook, and kubernetes.io is the name of the organization. Required",
@@ -100,6 +57,26 @@ func (InitializerConfigurationList) SwaggerDoc() map[string]string {
return map_InitializerConfigurationList
}
+var map_MutatingWebhookConfiguration = map[string]string{
+ "": "MutatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and may change the object.",
+ "metadata": "Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.",
+ "webhooks": "Webhooks is a list of webhooks and the affected resources and operations.",
+}
+
+func (MutatingWebhookConfiguration) SwaggerDoc() map[string]string {
+ return map_MutatingWebhookConfiguration
+}
+
+var map_MutatingWebhookConfigurationList = map[string]string{
+ "": "MutatingWebhookConfigurationList is a list of MutatingWebhookConfiguration.",
+ "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds",
+ "items": "List of MutatingWebhookConfiguration.",
+}
+
+func (MutatingWebhookConfigurationList) SwaggerDoc() map[string]string {
+ return map_MutatingWebhookConfigurationList
+}
+
var map_Rule = map[string]string{
"": "Rule is a tuple of APIGroups, APIVersion, and Resources.It is recommended to make sure that all the tuple expansions are valid.",
"apiGroups": "APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required.",
@@ -122,12 +99,57 @@ func (RuleWithOperations) SwaggerDoc() map[string]string {
var map_ServiceReference = map[string]string{
"": "ServiceReference holds a reference to Service.legacy.k8s.io",
- "namespace": "Namespace is the namespace of the service Required",
- "name": "Name is the name of the service Required",
+ "namespace": "`namespace` is the namespace of the service. Required",
+ "name": "`name` is the name of the service. Required",
+ "path": "`path` is an optional URL path which will be sent in any request to this service.",
}
func (ServiceReference) SwaggerDoc() map[string]string {
return map_ServiceReference
}
+var map_ValidatingWebhookConfiguration = map[string]string{
+ "": "ValidatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and object without changing it.",
+ "metadata": "Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.",
+ "webhooks": "Webhooks is a list of webhooks and the affected resources and operations.",
+}
+
+func (ValidatingWebhookConfiguration) SwaggerDoc() map[string]string {
+ return map_ValidatingWebhookConfiguration
+}
+
+var map_ValidatingWebhookConfigurationList = map[string]string{
+ "": "ValidatingWebhookConfigurationList is a list of ValidatingWebhookConfiguration.",
+ "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds",
+ "items": "List of ValidatingWebhookConfiguration.",
+}
+
+func (ValidatingWebhookConfigurationList) SwaggerDoc() map[string]string {
+ return map_ValidatingWebhookConfigurationList
+}
+
+var map_Webhook = map[string]string{
+ "": "Webhook describes an admission webhook and the resources and operations it applies to.",
+ "name": "The name of the admission webhook. Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where \"imagepolicy\" is the name of the webhook, and kubernetes.io is the name of the organization. Required.",
+ "clientConfig": "ClientConfig defines how to communicate with the hook. Required",
+ "rules": "Rules describes what operations on what resources/subresources the webhook cares about. The webhook cares about an operation if it matches _any_ Rule.",
+ "failurePolicy": "FailurePolicy defines how unrecognized errors from the admission endpoint are handled - allowed values are Ignore or Fail. Defaults to Ignore.",
+ "namespaceSelector": "NamespaceSelector decides whether to run the webhook on an object based on whether the namespace for that object matches the selector. If the object itself is a namespace, the matching is performed on object.metadata.labels. If the object is other cluster scoped resource, it is not subjected to the webhook.\n\nFor example, to run the webhook on any objects whose namespace is not associated with \"runlevel\" of \"0\" or \"1\"; you will set the selector as follows: \"namespaceSelector\": {\n \"matchExpressions\": [\n {\n \"key\": \"runlevel\",\n \"operator\": \"NotIn\",\n \"values\": [\n \"0\",\n \"1\"\n ]\n }\n ]\n}\n\nIf instead you want to only run the webhook on any objects whose namespace is associated with the \"environment\" of \"prod\" or \"staging\"; you will set the selector as follows: \"namespaceSelector\": {\n \"matchExpressions\": [\n {\n \"key\": \"environment\",\n \"operator\": \"In\",\n \"values\": [\n \"prod\",\n \"staging\"\n ]\n }\n ]\n}\n\nSee https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for more examples of label selectors.\n\nDefault to the empty LabelSelector, which matches everything.",
+}
+
+func (Webhook) SwaggerDoc() map[string]string {
+ return map_Webhook
+}
+
+var map_WebhookClientConfig = map[string]string{
+ "": "WebhookClientConfig contains the information to make a TLS connection with the webhook",
+ "url": "`url` gives the location of the webhook, in standard URL form (`[scheme://]host:port/path`). Exactly one of `url` or `service` must be specified.\n\nThe `host` should not refer to a service running in the cluster; use the `service` field instead. The host might be resolved via external DNS in some apiservers (e.g., `kube-apiserver` cannot resolve in-cluster DNS as that would be a layering violation). `host` may also be an IP address.\n\nPlease note that using `localhost` or `127.0.0.1` as a `host` is risky unless you take great care to run this webhook on all hosts which run an apiserver which might need to make calls to this webhook. Such installs are likely to be non-portable, i.e., not easy to turn up in a new cluster.\n\nThe scheme must be \"https\"; the URL must begin with \"https://\".\n\nA path is optional, and if present may be any string permissible in a URL. You may use the path to pass an arbitrary string to the webhook, for example, a cluster identifier.\n\nAttempting to use a user or basic auth e.g. \"user:password@\" is not allowed. Fragments (\"#...\") and query parameters (\"?...\") are not allowed, either.",
+ "service": "`service` is a reference to the service for this webhook. Either `service` or `url` must be specified.\n\nIf the webhook is running within the cluster, then you should use `service`.\n\nIf there is only one port open for the service, that port will be used. If there are multiple ports open, port 443 will be used if it is open, otherwise it is an error.",
+ "caBundle": "`caBundle` is a PEM encoded CA bundle which will be used to validate the webhook's server certificate. Required.",
+}
+
+func (WebhookClientConfig) SwaggerDoc() map[string]string {
+ return map_WebhookClientConfig
+}
+
// AUTO-GENERATED FUNCTIONS END HERE
diff --git a/staging/src/k8s.io/api/admissionregistration/v1alpha1/zz_generated.deepcopy.go b/staging/src/k8s.io/api/admissionregistration/v1alpha1/zz_generated.deepcopy.go
index 118fed7503..d603a4204d 100644
--- a/staging/src/k8s.io/api/admissionregistration/v1alpha1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/api/admissionregistration/v1alpha1/zz_generated.deepcopy.go
@@ -21,187 +21,10 @@ limitations under the License.
package v1alpha1
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*AdmissionHookClientConfig).DeepCopyInto(out.(*AdmissionHookClientConfig))
- return nil
- }, InType: reflect.TypeOf(&AdmissionHookClientConfig{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExternalAdmissionHook).DeepCopyInto(out.(*ExternalAdmissionHook))
- return nil
- }, InType: reflect.TypeOf(&ExternalAdmissionHook{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExternalAdmissionHookConfiguration).DeepCopyInto(out.(*ExternalAdmissionHookConfiguration))
- return nil
- }, InType: reflect.TypeOf(&ExternalAdmissionHookConfiguration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExternalAdmissionHookConfigurationList).DeepCopyInto(out.(*ExternalAdmissionHookConfigurationList))
- return nil
- }, InType: reflect.TypeOf(&ExternalAdmissionHookConfigurationList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Initializer).DeepCopyInto(out.(*Initializer))
- return nil
- }, InType: reflect.TypeOf(&Initializer{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*InitializerConfiguration).DeepCopyInto(out.(*InitializerConfiguration))
- return nil
- }, InType: reflect.TypeOf(&InitializerConfiguration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*InitializerConfigurationList).DeepCopyInto(out.(*InitializerConfigurationList))
- return nil
- }, InType: reflect.TypeOf(&InitializerConfigurationList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Rule).DeepCopyInto(out.(*Rule))
- return nil
- }, InType: reflect.TypeOf(&Rule{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RuleWithOperations).DeepCopyInto(out.(*RuleWithOperations))
- return nil
- }, InType: reflect.TypeOf(&RuleWithOperations{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ServiceReference).DeepCopyInto(out.(*ServiceReference))
- return nil
- }, InType: reflect.TypeOf(&ServiceReference{})},
- )
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *AdmissionHookClientConfig) DeepCopyInto(out *AdmissionHookClientConfig) {
- *out = *in
- out.Service = in.Service
- if in.CABundle != nil {
- in, out := &in.CABundle, &out.CABundle
- *out = make([]byte, len(*in))
- copy(*out, *in)
- }
- return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AdmissionHookClientConfig.
-func (in *AdmissionHookClientConfig) DeepCopy() *AdmissionHookClientConfig {
- if in == nil {
- return nil
- }
- out := new(AdmissionHookClientConfig)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ExternalAdmissionHook) DeepCopyInto(out *ExternalAdmissionHook) {
- *out = *in
- in.ClientConfig.DeepCopyInto(&out.ClientConfig)
- if in.Rules != nil {
- in, out := &in.Rules, &out.Rules
- *out = make([]RuleWithOperations, len(*in))
- for i := range *in {
- (*in)[i].DeepCopyInto(&(*out)[i])
- }
- }
- if in.FailurePolicy != nil {
- in, out := &in.FailurePolicy, &out.FailurePolicy
- if *in == nil {
- *out = nil
- } else {
- *out = new(FailurePolicyType)
- **out = **in
- }
- }
- return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalAdmissionHook.
-func (in *ExternalAdmissionHook) DeepCopy() *ExternalAdmissionHook {
- if in == nil {
- return nil
- }
- out := new(ExternalAdmissionHook)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ExternalAdmissionHookConfiguration) DeepCopyInto(out *ExternalAdmissionHookConfiguration) {
- *out = *in
- out.TypeMeta = in.TypeMeta
- in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
- if in.ExternalAdmissionHooks != nil {
- in, out := &in.ExternalAdmissionHooks, &out.ExternalAdmissionHooks
- *out = make([]ExternalAdmissionHook, len(*in))
- for i := range *in {
- (*in)[i].DeepCopyInto(&(*out)[i])
- }
- }
- return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalAdmissionHookConfiguration.
-func (in *ExternalAdmissionHookConfiguration) DeepCopy() *ExternalAdmissionHookConfiguration {
- if in == nil {
- return nil
- }
- out := new(ExternalAdmissionHookConfiguration)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *ExternalAdmissionHookConfiguration) DeepCopyObject() runtime.Object {
- if c := in.DeepCopy(); c != nil {
- return c
- } else {
- return nil
- }
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ExternalAdmissionHookConfigurationList) DeepCopyInto(out *ExternalAdmissionHookConfigurationList) {
- *out = *in
- out.TypeMeta = in.TypeMeta
- out.ListMeta = in.ListMeta
- if in.Items != nil {
- in, out := &in.Items, &out.Items
- *out = make([]ExternalAdmissionHookConfiguration, len(*in))
- for i := range *in {
- (*in)[i].DeepCopyInto(&(*out)[i])
- }
- }
- return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalAdmissionHookConfigurationList.
-func (in *ExternalAdmissionHookConfigurationList) DeepCopy() *ExternalAdmissionHookConfigurationList {
- if in == nil {
- return nil
- }
- out := new(ExternalAdmissionHookConfigurationList)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *ExternalAdmissionHookConfigurationList) DeepCopyObject() runtime.Object {
- if c := in.DeepCopy(); c != nil {
- return c
- } else {
- return nil
- }
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Initializer) DeepCopyInto(out *Initializer) {
*out = *in
@@ -293,6 +116,74 @@ func (in *InitializerConfigurationList) DeepCopyObject() runtime.Object {
}
}
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *MutatingWebhookConfiguration) DeepCopyInto(out *MutatingWebhookConfiguration) {
+ *out = *in
+ out.TypeMeta = in.TypeMeta
+ in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
+ if in.Webhooks != nil {
+ in, out := &in.Webhooks, &out.Webhooks
+ *out = make([]Webhook, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MutatingWebhookConfiguration.
+func (in *MutatingWebhookConfiguration) DeepCopy() *MutatingWebhookConfiguration {
+ if in == nil {
+ return nil
+ }
+ out := new(MutatingWebhookConfiguration)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
+func (in *MutatingWebhookConfiguration) DeepCopyObject() runtime.Object {
+ if c := in.DeepCopy(); c != nil {
+ return c
+ } else {
+ return nil
+ }
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *MutatingWebhookConfigurationList) DeepCopyInto(out *MutatingWebhookConfigurationList) {
+ *out = *in
+ out.TypeMeta = in.TypeMeta
+ out.ListMeta = in.ListMeta
+ if in.Items != nil {
+ in, out := &in.Items, &out.Items
+ *out = make([]MutatingWebhookConfiguration, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MutatingWebhookConfigurationList.
+func (in *MutatingWebhookConfigurationList) DeepCopy() *MutatingWebhookConfigurationList {
+ if in == nil {
+ return nil
+ }
+ out := new(MutatingWebhookConfigurationList)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
+func (in *MutatingWebhookConfigurationList) DeepCopyObject() runtime.Object {
+ if c := in.DeepCopy(); c != nil {
+ return c
+ } else {
+ return nil
+ }
+}
+
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Rule) DeepCopyInto(out *Rule) {
*out = *in
@@ -349,6 +240,15 @@ func (in *RuleWithOperations) DeepCopy() *RuleWithOperations {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ServiceReference) DeepCopyInto(out *ServiceReference) {
*out = *in
+ if in.Path != nil {
+ in, out := &in.Path, &out.Path
+ if *in == nil {
+ *out = nil
+ } else {
+ *out = new(string)
+ **out = **in
+ }
+ }
return
}
@@ -361,3 +261,152 @@ func (in *ServiceReference) DeepCopy() *ServiceReference {
in.DeepCopyInto(out)
return out
}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ValidatingWebhookConfiguration) DeepCopyInto(out *ValidatingWebhookConfiguration) {
+ *out = *in
+ out.TypeMeta = in.TypeMeta
+ in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
+ if in.Webhooks != nil {
+ in, out := &in.Webhooks, &out.Webhooks
+ *out = make([]Webhook, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ValidatingWebhookConfiguration.
+func (in *ValidatingWebhookConfiguration) DeepCopy() *ValidatingWebhookConfiguration {
+ if in == nil {
+ return nil
+ }
+ out := new(ValidatingWebhookConfiguration)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
+func (in *ValidatingWebhookConfiguration) DeepCopyObject() runtime.Object {
+ if c := in.DeepCopy(); c != nil {
+ return c
+ } else {
+ return nil
+ }
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ValidatingWebhookConfigurationList) DeepCopyInto(out *ValidatingWebhookConfigurationList) {
+ *out = *in
+ out.TypeMeta = in.TypeMeta
+ out.ListMeta = in.ListMeta
+ if in.Items != nil {
+ in, out := &in.Items, &out.Items
+ *out = make([]ValidatingWebhookConfiguration, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ValidatingWebhookConfigurationList.
+func (in *ValidatingWebhookConfigurationList) DeepCopy() *ValidatingWebhookConfigurationList {
+ if in == nil {
+ return nil
+ }
+ out := new(ValidatingWebhookConfigurationList)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
+func (in *ValidatingWebhookConfigurationList) DeepCopyObject() runtime.Object {
+ if c := in.DeepCopy(); c != nil {
+ return c
+ } else {
+ return nil
+ }
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *Webhook) DeepCopyInto(out *Webhook) {
+ *out = *in
+ in.ClientConfig.DeepCopyInto(&out.ClientConfig)
+ if in.Rules != nil {
+ in, out := &in.Rules, &out.Rules
+ *out = make([]RuleWithOperations, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+ if in.FailurePolicy != nil {
+ in, out := &in.FailurePolicy, &out.FailurePolicy
+ if *in == nil {
+ *out = nil
+ } else {
+ *out = new(FailurePolicyType)
+ **out = **in
+ }
+ }
+ if in.NamespaceSelector != nil {
+ in, out := &in.NamespaceSelector, &out.NamespaceSelector
+ if *in == nil {
+ *out = nil
+ } else {
+ *out = new(v1.LabelSelector)
+ (*in).DeepCopyInto(*out)
+ }
+ }
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Webhook.
+func (in *Webhook) DeepCopy() *Webhook {
+ if in == nil {
+ return nil
+ }
+ out := new(Webhook)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *WebhookClientConfig) DeepCopyInto(out *WebhookClientConfig) {
+ *out = *in
+ if in.URL != nil {
+ in, out := &in.URL, &out.URL
+ if *in == nil {
+ *out = nil
+ } else {
+ *out = new(string)
+ **out = **in
+ }
+ }
+ if in.Service != nil {
+ in, out := &in.Service, &out.Service
+ if *in == nil {
+ *out = nil
+ } else {
+ *out = new(ServiceReference)
+ (*in).DeepCopyInto(*out)
+ }
+ }
+ if in.CABundle != nil {
+ in, out := &in.CABundle, &out.CABundle
+ *out = make([]byte, len(*in))
+ copy(*out, *in)
+ }
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WebhookClientConfig.
+func (in *WebhookClientConfig) DeepCopy() *WebhookClientConfig {
+ if in == nil {
+ return nil
+ }
+ out := new(WebhookClientConfig)
+ in.DeepCopyInto(out)
+ return out
+}
diff --git a/staging/src/k8s.io/api/apps/v1/BUILD b/staging/src/k8s.io/api/apps/v1/BUILD
index c51aabf5fb..7902387f59 100644
--- a/staging/src/k8s.io/api/apps/v1/BUILD
+++ b/staging/src/k8s.io/api/apps/v1/BUILD
@@ -16,7 +16,6 @@ go_library(
"//vendor/github.com/gogo/protobuf/proto:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
diff --git a/staging/src/k8s.io/api/apps/v1/doc.go b/staging/src/k8s.io/api/apps/v1/doc.go
index 62eb80cee3..1d66c22232 100644
--- a/staging/src/k8s.io/api/apps/v1/doc.go
+++ b/staging/src/k8s.io/api/apps/v1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:openapi-gen=true
package v1 // import "k8s.io/api/apps/v1"
diff --git a/staging/src/k8s.io/api/apps/v1/generated.pb.go b/staging/src/k8s.io/api/apps/v1/generated.pb.go
index 4aed0602a6..38e7415b72 100644
--- a/staging/src/k8s.io/api/apps/v1/generated.pb.go
+++ b/staging/src/k8s.io/api/apps/v1/generated.pb.go
@@ -48,6 +48,7 @@ limitations under the License.
RollingUpdateDeployment
RollingUpdateStatefulSetStrategy
StatefulSet
+ StatefulSetCondition
StatefulSetList
StatefulSetSpec
StatefulSetStatus
@@ -177,22 +178,26 @@ func (m *StatefulSet) Reset() { *m = StatefulSet{} }
func (*StatefulSet) ProtoMessage() {}
func (*StatefulSet) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{22} }
+func (m *StatefulSetCondition) Reset() { *m = StatefulSetCondition{} }
+func (*StatefulSetCondition) ProtoMessage() {}
+func (*StatefulSetCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{23} }
+
func (m *StatefulSetList) Reset() { *m = StatefulSetList{} }
func (*StatefulSetList) ProtoMessage() {}
-func (*StatefulSetList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{23} }
+func (*StatefulSetList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{24} }
func (m *StatefulSetSpec) Reset() { *m = StatefulSetSpec{} }
func (*StatefulSetSpec) ProtoMessage() {}
-func (*StatefulSetSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{24} }
+func (*StatefulSetSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{25} }
func (m *StatefulSetStatus) Reset() { *m = StatefulSetStatus{} }
func (*StatefulSetStatus) ProtoMessage() {}
-func (*StatefulSetStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{25} }
+func (*StatefulSetStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{26} }
func (m *StatefulSetUpdateStrategy) Reset() { *m = StatefulSetUpdateStrategy{} }
func (*StatefulSetUpdateStrategy) ProtoMessage() {}
func (*StatefulSetUpdateStrategy) Descriptor() ([]byte, []int) {
- return fileDescriptorGenerated, []int{26}
+ return fileDescriptorGenerated, []int{27}
}
func init() {
@@ -219,6 +224,7 @@ func init() {
proto.RegisterType((*RollingUpdateDeployment)(nil), "k8s.io.api.apps.v1.RollingUpdateDeployment")
proto.RegisterType((*RollingUpdateStatefulSetStrategy)(nil), "k8s.io.api.apps.v1.RollingUpdateStatefulSetStrategy")
proto.RegisterType((*StatefulSet)(nil), "k8s.io.api.apps.v1.StatefulSet")
+ proto.RegisterType((*StatefulSetCondition)(nil), "k8s.io.api.apps.v1.StatefulSetCondition")
proto.RegisterType((*StatefulSetList)(nil), "k8s.io.api.apps.v1.StatefulSetList")
proto.RegisterType((*StatefulSetSpec)(nil), "k8s.io.api.apps.v1.StatefulSetSpec")
proto.RegisterType((*StatefulSetStatus)(nil), "k8s.io.api.apps.v1.StatefulSetStatus")
@@ -1191,6 +1197,48 @@ func (m *StatefulSet) MarshalTo(dAtA []byte) (int, error) {
return i, nil
}
+func (m *StatefulSetCondition) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StatefulSetCondition) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type)))
+ i += copy(dAtA[i:], m.Type)
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Status)))
+ i += copy(dAtA[i:], m.Status)
+ dAtA[i] = 0x1a
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(m.LastTransitionTime.Size()))
+ n36, err := m.LastTransitionTime.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n36
+ dAtA[i] = 0x22
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason)))
+ i += copy(dAtA[i:], m.Reason)
+ dAtA[i] = 0x2a
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Message)))
+ i += copy(dAtA[i:], m.Message)
+ return i, nil
+}
+
func (m *StatefulSetList) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@@ -1209,11 +1257,11 @@ func (m *StatefulSetList) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0xa
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size()))
- n36, err := m.ListMeta.MarshalTo(dAtA[i:])
+ n37, err := m.ListMeta.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n36
+ i += n37
if len(m.Items) > 0 {
for _, msg := range m.Items {
dAtA[i] = 0x12
@@ -1253,20 +1301,20 @@ func (m *StatefulSetSpec) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0x12
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.Selector.Size()))
- n37, err := m.Selector.MarshalTo(dAtA[i:])
+ n38, err := m.Selector.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n37
+ i += n38
}
dAtA[i] = 0x1a
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.Template.Size()))
- n38, err := m.Template.MarshalTo(dAtA[i:])
+ n39, err := m.Template.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n38
+ i += n39
if len(m.VolumeClaimTemplates) > 0 {
for _, msg := range m.VolumeClaimTemplates {
dAtA[i] = 0x22
@@ -1290,11 +1338,11 @@ func (m *StatefulSetSpec) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0x3a
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.UpdateStrategy.Size()))
- n39, err := m.UpdateStrategy.MarshalTo(dAtA[i:])
+ n40, err := m.UpdateStrategy.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n39
+ i += n40
if m.RevisionHistoryLimit != nil {
dAtA[i] = 0x40
i++
@@ -1346,6 +1394,18 @@ func (m *StatefulSetStatus) MarshalTo(dAtA []byte) (int, error) {
i++
i = encodeVarintGenerated(dAtA, i, uint64(*m.CollisionCount))
}
+ if len(m.Conditions) > 0 {
+ for _, msg := range m.Conditions {
+ dAtA[i] = 0x52
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(msg.Size()))
+ n, err := msg.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n
+ }
+ }
return i, nil
}
@@ -1372,11 +1432,11 @@ func (m *StatefulSetUpdateStrategy) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0x12
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.RollingUpdate.Size()))
- n40, err := m.RollingUpdate.MarshalTo(dAtA[i:])
+ n41, err := m.RollingUpdate.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n40
+ i += n41
}
return i, nil
}
@@ -1750,6 +1810,22 @@ func (m *StatefulSet) Size() (n int) {
return n
}
+func (m *StatefulSetCondition) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Type)
+ n += 1 + l + sovGenerated(uint64(l))
+ l = len(m.Status)
+ n += 1 + l + sovGenerated(uint64(l))
+ l = m.LastTransitionTime.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ l = len(m.Reason)
+ n += 1 + l + sovGenerated(uint64(l))
+ l = len(m.Message)
+ n += 1 + l + sovGenerated(uint64(l))
+ return n
+}
+
func (m *StatefulSetList) Size() (n int) {
var l int
_ = l
@@ -1809,6 +1885,12 @@ func (m *StatefulSetStatus) Size() (n int) {
if m.CollisionCount != nil {
n += 1 + sovGenerated(uint64(*m.CollisionCount))
}
+ if len(m.Conditions) > 0 {
+ for _, e := range m.Conditions {
+ l = e.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ }
+ }
return n
}
@@ -2132,6 +2214,20 @@ func (this *StatefulSet) String() string {
}, "")
return s
}
+func (this *StatefulSetCondition) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&StatefulSetCondition{`,
+ `Type:` + fmt.Sprintf("%v", this.Type) + `,`,
+ `Status:` + fmt.Sprintf("%v", this.Status) + `,`,
+ `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`,
+ `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`,
+ `Message:` + fmt.Sprintf("%v", this.Message) + `,`,
+ `}`,
+ }, "")
+ return s
+}
func (this *StatefulSetList) String() string {
if this == nil {
return "nil"
@@ -2173,6 +2269,7 @@ func (this *StatefulSetStatus) String() string {
`CurrentRevision:` + fmt.Sprintf("%v", this.CurrentRevision) + `,`,
`UpdateRevision:` + fmt.Sprintf("%v", this.UpdateRevision) + `,`,
`CollisionCount:` + valueToStringGenerated(this.CollisionCount) + `,`,
+ `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "StatefulSetCondition", "StatefulSetCondition", 1), `&`, ``, 1) + `,`,
`}`,
}, "")
return s
@@ -5660,6 +5757,202 @@ func (m *StatefulSet) Unmarshal(dAtA []byte) error {
}
return nil
}
+func (m *StatefulSetCondition) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StatefulSetCondition: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StatefulSetCondition: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Type = StatefulSetConditionType(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Status = k8s_io_api_core_v1.ConditionStatus(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LastTransitionTime", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if err := m.LastTransitionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Reason = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Message = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipGenerated(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
func (m *StatefulSetList) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
@@ -6245,6 +6538,37 @@ func (m *StatefulSetStatus) Unmarshal(dAtA []byte) error {
}
}
m.CollisionCount = &v
+ case 10:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Conditions = append(m.Conditions, StatefulSetCondition{})
+ if err := m.Conditions[len(m.Conditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipGenerated(dAtA[iNdEx:])
@@ -6488,131 +6812,134 @@ func init() {
}
var fileDescriptorGenerated = []byte{
- // 2015 bytes of a gzipped FileDescriptorProto
+ // 2051 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcd, 0x6f, 0x24, 0x47,
- 0x1d, 0x75, 0xcf, 0x87, 0x3d, 0x2e, 0xc7, 0xf6, 0x6e, 0xd9, 0xd8, 0x93, 0x5d, 0x32, 0x5e, 0x1a,
- 0xd8, 0x78, 0xb3, 0xd9, 0x1e, 0xbc, 0xd9, 0x44, 0x28, 0x2b, 0x81, 0x3c, 0xe3, 0x10, 0x42, 0x3c,
- 0xb6, 0x29, 0xaf, 0xf7, 0xb0, 0x80, 0x44, 0xcd, 0x4c, 0xed, 0xb8, 0xe3, 0xfe, 0x52, 0x77, 0xf5,
- 0xb0, 0x23, 0x2e, 0x08, 0x09, 0x4e, 0x48, 0xf0, 0x9f, 0x20, 0x84, 0xe0, 0x86, 0x22, 0xc4, 0x65,
- 0x2f, 0x48, 0x11, 0x17, 0x72, 0xb2, 0xd8, 0xc9, 0x09, 0x71, 0xe6, 0x92, 0x0b, 0xa8, 0xaa, 0xab,
- 0xbf, 0xab, 0x3d, 0x63, 0x6f, 0xd6, 0x41, 0x11, 0x37, 0x4f, 0xd5, 0xfb, 0xbd, 0xfa, 0x55, 0xd7,
- 0xaf, 0xea, 0xbd, 0xea, 0x36, 0xb8, 0x7f, 0xf2, 0x4d, 0x4f, 0xd3, 0xed, 0xe6, 0x89, 0xdf, 0x25,
- 0xae, 0x45, 0x28, 0xf1, 0x9a, 0x43, 0x62, 0xf5, 0x6d, 0xb7, 0x29, 0x3a, 0xb0, 0xa3, 0x37, 0xb1,
- 0xe3, 0x78, 0xcd, 0xe1, 0x56, 0x73, 0x40, 0x2c, 0xe2, 0x62, 0x4a, 0xfa, 0x9a, 0xe3, 0xda, 0xd4,
- 0x86, 0x30, 0xc0, 0x68, 0xd8, 0xd1, 0x35, 0x86, 0xd1, 0x86, 0x5b, 0xd7, 0xee, 0x0c, 0x74, 0x7a,
- 0xec, 0x77, 0xb5, 0x9e, 0x6d, 0x36, 0x07, 0xf6, 0xc0, 0x6e, 0x72, 0x68, 0xd7, 0x7f, 0xcc, 0x7f,
- 0xf1, 0x1f, 0xfc, 0xaf, 0x80, 0xe2, 0x9a, 0x9a, 0x18, 0xa6, 0x67, 0xbb, 0x44, 0x32, 0xcc, 0xb5,
- 0x5b, 0x09, 0x8c, 0x63, 0x1b, 0x7a, 0x6f, 0xd4, 0x1c, 0x6e, 0x75, 0x09, 0xc5, 0x79, 0xe8, 0xbd,
- 0x18, 0x6a, 0xe2, 0xde, 0xb1, 0x6e, 0x11, 0x77, 0xd4, 0x74, 0x4e, 0x06, 0xac, 0xc1, 0x6b, 0x9a,
- 0x84, 0x62, 0xd9, 0x00, 0xcd, 0xa2, 0x28, 0xd7, 0xb7, 0xa8, 0x6e, 0x92, 0x5c, 0xc0, 0x5b, 0x93,
- 0x02, 0xbc, 0xde, 0x31, 0x31, 0x71, 0x2e, 0xee, 0x8d, 0xa2, 0x38, 0x9f, 0xea, 0x46, 0x53, 0xb7,
- 0xa8, 0x47, 0xdd, 0x6c, 0x90, 0xfa, 0x6f, 0x05, 0xc0, 0xb6, 0x6d, 0x51, 0xd7, 0x36, 0x0c, 0xe2,
- 0x22, 0x32, 0xd4, 0x3d, 0xdd, 0xb6, 0xe0, 0x8f, 0x41, 0x8d, 0xcd, 0xa7, 0x8f, 0x29, 0xae, 0x2b,
- 0x37, 0x94, 0xcd, 0x85, 0xbb, 0xdf, 0xd0, 0xe2, 0xf5, 0x88, 0xe8, 0x35, 0xe7, 0x64, 0xc0, 0x1a,
- 0x3c, 0x8d, 0xa1, 0xb5, 0xe1, 0x96, 0xb6, 0xdf, 0xfd, 0x80, 0xf4, 0x68, 0x87, 0x50, 0xdc, 0x82,
- 0x4f, 0x4f, 0x37, 0x66, 0xc6, 0xa7, 0x1b, 0x20, 0x6e, 0x43, 0x11, 0x2b, 0xdc, 0x07, 0x15, 0xce,
- 0x5e, 0xe2, 0xec, 0x77, 0x0a, 0xd9, 0xc5, 0xa4, 0x35, 0x84, 0x7f, 0xf2, 0xce, 0x13, 0x4a, 0x2c,
- 0x96, 0x5e, 0xeb, 0x25, 0x41, 0x5d, 0xd9, 0xc1, 0x14, 0x23, 0x4e, 0x04, 0x5f, 0x07, 0x35, 0x57,
- 0xa4, 0x5f, 0x2f, 0xdf, 0x50, 0x36, 0xcb, 0xad, 0x2b, 0x02, 0x55, 0x0b, 0xa7, 0x85, 0x22, 0x84,
- 0xfa, 0x17, 0x05, 0xac, 0xe5, 0xe7, 0xbd, 0xab, 0x7b, 0x14, 0xfe, 0x30, 0x37, 0x77, 0x6d, 0xba,
- 0xb9, 0xb3, 0x68, 0x3e, 0xf3, 0x68, 0xe0, 0xb0, 0x25, 0x31, 0xef, 0xf7, 0x41, 0x55, 0xa7, 0xc4,
- 0xf4, 0xea, 0xa5, 0x1b, 0xe5, 0xcd, 0x85, 0xbb, 0x37, 0xb5, 0x7c, 0x99, 0x6b, 0xf9, 0xc4, 0x5a,
- 0x8b, 0x82, 0xb2, 0xfa, 0x1e, 0x0b, 0x46, 0x01, 0x87, 0xfa, 0x1f, 0x05, 0xcc, 0xef, 0x60, 0x62,
- 0xda, 0xd6, 0x21, 0xa1, 0x97, 0xb0, 0x68, 0x6d, 0x50, 0xf1, 0x1c, 0xd2, 0x13, 0x8b, 0xf6, 0x15,
- 0x59, 0xee, 0x51, 0x3a, 0x87, 0x0e, 0xe9, 0xc5, 0x0b, 0xc5, 0x7e, 0x21, 0x1e, 0x0c, 0xdf, 0x07,
- 0xb3, 0x1e, 0xc5, 0xd4, 0xf7, 0xf8, 0x32, 0x2d, 0xdc, 0xfd, 0xea, 0xd9, 0x34, 0x1c, 0xda, 0x5a,
- 0x12, 0x44, 0xb3, 0xc1, 0x6f, 0x24, 0x28, 0xd4, 0x7f, 0x96, 0x00, 0x8c, 0xb0, 0x6d, 0xdb, 0xea,
- 0xeb, 0x94, 0xd5, 0xef, 0xdb, 0xa0, 0x42, 0x47, 0x0e, 0xe1, 0x8f, 0x61, 0xbe, 0x75, 0x33, 0xcc,
- 0xe2, 0xc1, 0xc8, 0x21, 0x9f, 0x9e, 0x6e, 0xac, 0xe5, 0x23, 0x58, 0x0f, 0xe2, 0x31, 0x70, 0x37,
- 0xca, 0xaf, 0xc4, 0xa3, 0xef, 0xa5, 0x87, 0xfe, 0xf4, 0x74, 0x43, 0x72, 0xae, 0x68, 0x11, 0x53,
- 0x3a, 0x41, 0x38, 0x04, 0xd0, 0xc0, 0x1e, 0x7d, 0xe0, 0x62, 0xcb, 0x0b, 0x46, 0xd2, 0x4d, 0x22,
- 0x66, 0xfe, 0xda, 0x74, 0xcb, 0xc3, 0x22, 0x5a, 0xd7, 0x44, 0x16, 0x70, 0x37, 0xc7, 0x86, 0x24,
- 0x23, 0xc0, 0x9b, 0x60, 0xd6, 0x25, 0xd8, 0xb3, 0xad, 0x7a, 0x85, 0xcf, 0x22, 0x7a, 0x80, 0x88,
- 0xb7, 0x22, 0xd1, 0x0b, 0x6f, 0x81, 0x39, 0x93, 0x78, 0x1e, 0x1e, 0x90, 0x7a, 0x95, 0x03, 0x97,
- 0x05, 0x70, 0xae, 0x13, 0x34, 0xa3, 0xb0, 0x5f, 0xfd, 0x9d, 0x02, 0x16, 0xa3, 0x27, 0x77, 0x09,
- 0x5b, 0xa5, 0x95, 0xde, 0x2a, 0xaf, 0x9c, 0x59, 0x27, 0x05, 0x3b, 0xe4, 0xc3, 0x72, 0x22, 0x67,
- 0x56, 0x84, 0xf0, 0x47, 0xa0, 0xe6, 0x11, 0x83, 0xf4, 0xa8, 0xed, 0x8a, 0x9c, 0xdf, 0x98, 0x32,
- 0x67, 0xdc, 0x25, 0xc6, 0xa1, 0x08, 0x6d, 0xbd, 0xc4, 0x92, 0x0e, 0x7f, 0xa1, 0x88, 0x12, 0x7e,
- 0x1f, 0xd4, 0x28, 0x31, 0x1d, 0x03, 0x53, 0x22, 0xb6, 0x49, 0xaa, 0xbe, 0x59, 0xb9, 0x30, 0xb2,
- 0x03, 0xbb, 0xff, 0x40, 0xc0, 0xf8, 0x46, 0x89, 0x9e, 0x43, 0xd8, 0x8a, 0x22, 0x1a, 0x78, 0x02,
- 0x96, 0x7c, 0xa7, 0xcf, 0x90, 0x94, 0x1d, 0xdd, 0x83, 0x91, 0x28, 0x9f, 0xdb, 0x67, 0x3e, 0x90,
- 0xa3, 0x54, 0x48, 0x6b, 0x4d, 0x0c, 0xb0, 0x94, 0x6e, 0x47, 0x19, 0x6a, 0xb8, 0x0d, 0x96, 0x4d,
- 0xdd, 0x42, 0x04, 0xf7, 0x47, 0x87, 0xa4, 0x67, 0x5b, 0x7d, 0x8f, 0x17, 0x50, 0xb5, 0xb5, 0x2e,
- 0x08, 0x96, 0x3b, 0xe9, 0x6e, 0x94, 0xc5, 0xc3, 0x5d, 0xb0, 0x1a, 0x9e, 0xb3, 0xdf, 0xd5, 0x3d,
- 0x6a, 0xbb, 0xa3, 0x5d, 0xdd, 0xd4, 0x69, 0x7d, 0x96, 0xf3, 0xd4, 0xc7, 0xa7, 0x1b, 0xab, 0x48,
- 0xd2, 0x8f, 0xa4, 0x51, 0xea, 0xaf, 0x66, 0xc1, 0x72, 0xe6, 0x34, 0x80, 0x0f, 0xc1, 0x5a, 0xcf,
- 0x77, 0x5d, 0x62, 0xd1, 0x3d, 0xdf, 0xec, 0x12, 0xf7, 0xb0, 0x77, 0x4c, 0xfa, 0xbe, 0x41, 0xfa,
- 0x7c, 0x45, 0xab, 0xad, 0x86, 0xc8, 0x75, 0xad, 0x2d, 0x45, 0xa1, 0x82, 0x68, 0xf8, 0x3d, 0x00,
- 0x2d, 0xde, 0xd4, 0xd1, 0x3d, 0x2f, 0xe2, 0x2c, 0x71, 0xce, 0x68, 0x03, 0xee, 0xe5, 0x10, 0x48,
- 0x12, 0xc5, 0x72, 0xec, 0x13, 0x4f, 0x77, 0x49, 0x3f, 0x9b, 0x63, 0x39, 0x9d, 0xe3, 0x8e, 0x14,
- 0x85, 0x0a, 0xa2, 0xe1, 0x9b, 0x60, 0x21, 0x18, 0x8d, 0x3f, 0x73, 0xb1, 0x38, 0x2b, 0x82, 0x6c,
- 0x61, 0x2f, 0xee, 0x42, 0x49, 0x1c, 0x9b, 0x9a, 0xdd, 0xf5, 0x88, 0x3b, 0x24, 0xfd, 0x77, 0x03,
- 0x0f, 0xc0, 0x84, 0xb2, 0xca, 0x85, 0x32, 0x9a, 0xda, 0x7e, 0x0e, 0x81, 0x24, 0x51, 0x6c, 0x6a,
- 0x41, 0xd5, 0xe4, 0xa6, 0x36, 0x9b, 0x9e, 0xda, 0x91, 0x14, 0x85, 0x0a, 0xa2, 0x59, 0xed, 0x05,
- 0x29, 0x6f, 0x0f, 0xb1, 0x6e, 0xe0, 0xae, 0x41, 0xea, 0x73, 0xe9, 0xda, 0xdb, 0x4b, 0x77, 0xa3,
- 0x2c, 0x1e, 0xbe, 0x0b, 0xae, 0x06, 0x4d, 0x47, 0x16, 0x8e, 0x48, 0x6a, 0x9c, 0xe4, 0x65, 0x41,
- 0x72, 0x75, 0x2f, 0x0b, 0x40, 0xf9, 0x18, 0xf8, 0x36, 0x58, 0xea, 0xd9, 0x86, 0xc1, 0xeb, 0xb1,
- 0x6d, 0xfb, 0x16, 0xad, 0xcf, 0x73, 0x16, 0xc8, 0xf6, 0x50, 0x3b, 0xd5, 0x83, 0x32, 0x48, 0xf8,
- 0x08, 0x80, 0x5e, 0x28, 0x07, 0x5e, 0x1d, 0x14, 0x0b, 0x7d, 0x5e, 0x87, 0x62, 0x01, 0x8e, 0x9a,
- 0x3c, 0x94, 0x60, 0x53, 0x3f, 0x54, 0xc0, 0x7a, 0xc1, 0x1e, 0x87, 0xdf, 0x4e, 0xa9, 0xde, 0xed,
- 0x8c, 0xea, 0x5d, 0x2f, 0x08, 0x4b, 0x48, 0x5f, 0x0f, 0x2c, 0x32, 0xdf, 0xa1, 0x5b, 0x83, 0x00,
- 0x22, 0x4e, 0xb0, 0xd7, 0x64, 0xb9, 0xa3, 0x24, 0x30, 0x3e, 0x86, 0xaf, 0x8e, 0x4f, 0x37, 0x16,
- 0x53, 0x7d, 0x28, 0xcd, 0xa9, 0xfe, 0xbc, 0x04, 0xc0, 0x0e, 0x71, 0x0c, 0x7b, 0x64, 0x12, 0xeb,
- 0x32, 0x5c, 0xcb, 0x4e, 0xca, 0xb5, 0xa8, 0xd2, 0x85, 0x88, 0xf2, 0x29, 0xb4, 0x2d, 0xbb, 0x19,
- 0xdb, 0xf2, 0xb5, 0x09, 0x3c, 0x67, 0xfb, 0x96, 0xbf, 0x97, 0xc1, 0x4a, 0x0c, 0x8e, 0x8d, 0xcb,
- 0xfd, 0xd4, 0x12, 0xbe, 0x9a, 0x59, 0xc2, 0x75, 0x49, 0xc8, 0x0b, 0x73, 0x2e, 0x9f, 0xbd, 0x83,
- 0x80, 0x1f, 0x80, 0x25, 0x66, 0x55, 0x82, 0x42, 0xe0, 0x46, 0x68, 0xf6, 0xdc, 0x46, 0x28, 0x12,
- 0xb2, 0xdd, 0x14, 0x13, 0xca, 0x30, 0x17, 0x18, 0xaf, 0xb9, 0x17, 0x6d, 0xbc, 0xd4, 0xdf, 0x2b,
- 0x60, 0x29, 0x5e, 0xa6, 0x4b, 0xb0, 0x49, 0xed, 0xb4, 0x4d, 0x6a, 0x9c, 0x5d, 0x97, 0x05, 0x3e,
- 0xe9, 0x6f, 0x95, 0x64, 0xd6, 0xdc, 0x28, 0x6d, 0xb2, 0x0b, 0x95, 0x63, 0xe8, 0x3d, 0xec, 0x09,
- 0x59, 0x7d, 0x29, 0xb8, 0x4c, 0x05, 0x6d, 0x28, 0xea, 0x4d, 0x59, 0xaa, 0xd2, 0x8b, 0xb5, 0x54,
- 0xe5, 0xcf, 0xc6, 0x52, 0x3d, 0x00, 0x35, 0x2f, 0x34, 0x53, 0x15, 0x4e, 0x79, 0x73, 0xd2, 0x76,
- 0x16, 0x3e, 0x2a, 0x62, 0x8d, 0x1c, 0x54, 0xc4, 0x24, 0xf3, 0x4e, 0xd5, 0xcf, 0xd3, 0x3b, 0xb1,
- 0x2d, 0xec, 0x60, 0xdf, 0x23, 0x7d, 0x5e, 0xf7, 0xb5, 0x78, 0x0b, 0x1f, 0xf0, 0x56, 0x24, 0x7a,
- 0xe1, 0x11, 0x58, 0x77, 0x5c, 0x7b, 0xe0, 0x12, 0xcf, 0xdb, 0x21, 0xb8, 0x6f, 0xe8, 0x16, 0x09,
- 0x27, 0x10, 0xa8, 0xde, 0xf5, 0xf1, 0xe9, 0xc6, 0xfa, 0x81, 0x1c, 0x82, 0x8a, 0x62, 0xd5, 0x3f,
- 0x55, 0xc0, 0x95, 0xec, 0x89, 0x58, 0x60, 0x44, 0x94, 0x0b, 0x19, 0x91, 0xd7, 0x13, 0x25, 0x1a,
- 0xb8, 0xb4, 0xc4, 0x9d, 0x3f, 0x57, 0xa6, 0xdb, 0x60, 0x59, 0x18, 0x8f, 0xb0, 0x53, 0x58, 0xb1,
- 0x68, 0x79, 0x8e, 0xd2, 0xdd, 0x28, 0x8b, 0x67, 0xf6, 0x22, 0x76, 0x0d, 0x21, 0x49, 0x25, 0x6d,
- 0x2f, 0xb6, 0xb3, 0x00, 0x94, 0x8f, 0x81, 0x1d, 0xb0, 0xe2, 0x5b, 0x79, 0xaa, 0xa0, 0x5c, 0xae,
- 0x0b, 0xaa, 0x95, 0xa3, 0x3c, 0x04, 0xc9, 0xe2, 0xe0, 0x0f, 0x52, 0x8e, 0x63, 0x96, 0x1f, 0x04,
- 0xaf, 0x9e, 0x5d, 0xd1, 0x53, 0x5b, 0x0e, 0x78, 0x1f, 0x2c, 0xba, 0xdc, 0x50, 0x86, 0x59, 0x06,
- 0xa6, 0xec, 0x4b, 0x22, 0x6c, 0x11, 0x25, 0x3b, 0x51, 0x1a, 0x2b, 0xf1, 0x51, 0xb5, 0x69, 0x7d,
- 0x94, 0xfa, 0x47, 0x05, 0xc0, 0xfc, 0x16, 0x9c, 0x78, 0xb9, 0xcf, 0x45, 0x24, 0x24, 0xb2, 0x2f,
- 0x77, 0x38, 0xb7, 0x27, 0x3b, 0x9c, 0xf8, 0x04, 0x9d, 0xce, 0xe2, 0x88, 0x27, 0x70, 0x39, 0x2f,
- 0x66, 0xa6, 0xb0, 0x38, 0x71, 0x3e, 0xcf, 0x67, 0x71, 0x12, 0x3c, 0x67, 0x5b, 0x9c, 0x7f, 0x95,
- 0xc0, 0x4a, 0x0c, 0x9e, 0xda, 0xe2, 0x48, 0x42, 0xfe, 0xff, 0x72, 0x66, 0xf2, 0xcb, 0x19, 0x66,
- 0x3b, 0xe2, 0x47, 0xf7, 0x3f, 0x62, 0x3b, 0xe2, 0x84, 0x0a, 0x6c, 0xc7, 0x6f, 0x4b, 0xc9, 0xac,
- 0xbf, 0xf0, 0xb6, 0xe3, 0xf9, 0x5f, 0xae, 0xa8, 0x7f, 0x2e, 0x83, 0x2b, 0xd9, 0x2d, 0x98, 0xd2,
- 0x41, 0x65, 0xa2, 0x0e, 0x1e, 0x80, 0xd5, 0xc7, 0xbe, 0x61, 0x8c, 0xf8, 0x63, 0x48, 0x88, 0x61,
- 0xa0, 0xa0, 0x5f, 0x16, 0x91, 0xab, 0xdf, 0x91, 0x60, 0x90, 0x34, 0xb2, 0x40, 0xd3, 0xcb, 0x17,
- 0xd2, 0xf4, 0x9c, 0xda, 0x54, 0xce, 0xa1, 0x36, 0x52, 0x7d, 0xae, 0x5e, 0x40, 0x9f, 0xa7, 0x16,
- 0x54, 0xc9, 0x71, 0x35, 0xf1, 0x0e, 0xff, 0x4b, 0x05, 0xac, 0xc9, 0xaf, 0xcf, 0xd0, 0x00, 0x4b,
- 0x26, 0x7e, 0x92, 0x7c, 0x79, 0x31, 0x49, 0x30, 0x7c, 0xaa, 0x1b, 0x5a, 0xf0, 0x75, 0x47, 0x7b,
- 0xcf, 0xa2, 0xfb, 0xee, 0x21, 0x75, 0x75, 0x6b, 0x10, 0x08, 0x6c, 0x27, 0xc5, 0x85, 0x32, 0xdc,
- 0xea, 0x27, 0x0a, 0x58, 0x2f, 0x50, 0xb9, 0xcb, 0xcd, 0x04, 0x3e, 0x02, 0x35, 0x13, 0x3f, 0x39,
- 0xf4, 0xdd, 0x41, 0x28, 0xc9, 0xe7, 0x1f, 0x87, 0x6f, 0xe4, 0x8e, 0x60, 0x41, 0x11, 0x9f, 0xba,
- 0x0f, 0x6e, 0xa4, 0x26, 0xc9, 0x36, 0x0d, 0x79, 0xec, 0x1b, 0x7c, 0xff, 0x08, 0x4f, 0x71, 0x1b,
- 0xcc, 0x3b, 0xd8, 0xa5, 0x7a, 0x64, 0x46, 0xab, 0xad, 0xc5, 0xf1, 0xe9, 0xc6, 0xfc, 0x41, 0xd8,
- 0x88, 0xe2, 0x7e, 0xf5, 0x17, 0x25, 0xb0, 0x90, 0x20, 0xb9, 0x04, 0x7d, 0x7f, 0x27, 0xa5, 0xef,
- 0xd2, 0x2f, 0x26, 0xc9, 0x59, 0x15, 0x09, 0x7c, 0x27, 0x23, 0xf0, 0x5f, 0x9f, 0x44, 0x74, 0xb6,
- 0xc2, 0xff, 0x41, 0x01, 0xcb, 0x09, 0xf4, 0x25, 0x88, 0xce, 0x4e, 0x5a, 0x74, 0x36, 0x26, 0xe4,
- 0x5f, 0xa0, 0x3a, 0x4f, 0xab, 0xa9, 0xbc, 0xbf, 0xf0, 0xb2, 0xf3, 0x53, 0xb0, 0x3a, 0xb4, 0x0d,
- 0xdf, 0x24, 0x6d, 0x03, 0xeb, 0x66, 0x08, 0x60, 0x27, 0x2b, 0x7b, 0x88, 0xb7, 0xa4, 0xf4, 0xc4,
- 0xf5, 0x74, 0x8f, 0x12, 0x8b, 0x3e, 0x8c, 0x23, 0x63, 0x6d, 0x78, 0x28, 0xa1, 0x43, 0xd2, 0x41,
- 0xe0, 0x9b, 0x60, 0x81, 0x9d, 0xf1, 0x7a, 0x8f, 0xec, 0x61, 0x33, 0xf4, 0x31, 0xd1, 0xfb, 0xea,
- 0xc3, 0xb8, 0x0b, 0x25, 0x71, 0xf0, 0x18, 0xac, 0x38, 0x76, 0xbf, 0x83, 0x2d, 0x3c, 0x20, 0xec,
- 0x3c, 0x3a, 0xe0, 0xdf, 0xe6, 0xf9, 0x3d, 0x78, 0xbe, 0xf5, 0x56, 0x78, 0x41, 0x3a, 0xc8, 0x43,
- 0x98, 0x87, 0x94, 0x34, 0x73, 0x0f, 0x29, 0xa3, 0x84, 0x66, 0xee, 0xf3, 0xca, 0x5c, 0xee, 0x9b,
- 0xb4, 0xac, 0xb8, 0x2e, 0xf8, 0x81, 0xa5, 0xe8, 0x86, 0x5f, 0xbb, 0xd0, 0xd7, 0x91, 0x5f, 0x57,
- 0xc0, 0xd5, 0xdc, 0x86, 0xfd, 0x1c, 0xef, 0xd8, 0x39, 0xf5, 0x2e, 0x9f, 0x43, 0xbd, 0xb7, 0xc1,
- 0xb2, 0xf8, 0x30, 0x93, 0x11, 0xff, 0xc8, 0x1e, 0xb5, 0xd3, 0xdd, 0x28, 0x8b, 0x97, 0xdd, 0xf1,
- 0xab, 0xe7, 0xbc, 0xe3, 0x27, 0xb3, 0x10, 0xff, 0x4f, 0x10, 0x54, 0x5d, 0x3e, 0x0b, 0xf1, 0x6f,
- 0x05, 0x59, 0x3c, 0xfc, 0x56, 0x58, 0x52, 0x11, 0xc3, 0x1c, 0x67, 0xc8, 0xd4, 0x48, 0x44, 0x90,
- 0x41, 0x3f, 0xcf, 0xc7, 0x07, 0xf5, 0xaf, 0x0a, 0x78, 0xb9, 0xb0, 0x4a, 0xe1, 0x76, 0xea, 0xf2,
- 0x75, 0x27, 0x73, 0xf9, 0x7a, 0xa5, 0x30, 0x30, 0x71, 0x05, 0x33, 0xe5, 0x57, 0xe8, 0x7b, 0x13,
- 0xaf, 0xd0, 0x12, 0xdd, 0x9d, 0x7c, 0x97, 0x6e, 0x6d, 0x3e, 0x7d, 0xd6, 0x98, 0xf9, 0xe8, 0x59,
- 0x63, 0xe6, 0xe3, 0x67, 0x8d, 0x99, 0x9f, 0x8d, 0x1b, 0xca, 0xd3, 0x71, 0x43, 0xf9, 0x68, 0xdc,
- 0x50, 0x3e, 0x1e, 0x37, 0x94, 0x7f, 0x8c, 0x1b, 0xca, 0x6f, 0x3e, 0x69, 0xcc, 0x3c, 0x2a, 0x0d,
- 0xb7, 0xfe, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x74, 0x8b, 0xc8, 0xc1, 0x6f, 0x24, 0x00, 0x00,
+ 0x1d, 0x75, 0xcf, 0x87, 0x3d, 0x2e, 0xaf, 0xed, 0xdd, 0xb2, 0xb1, 0x27, 0xbb, 0x64, 0x66, 0x19,
+ 0x60, 0xe3, 0xcd, 0x66, 0x7b, 0xf0, 0x66, 0x13, 0xa1, 0x2c, 0x02, 0x79, 0xc6, 0x21, 0x84, 0x78,
+ 0x6c, 0x53, 0x5e, 0xef, 0x61, 0x09, 0x12, 0x35, 0x33, 0xb5, 0xe3, 0x8e, 0xfb, 0x4b, 0xdd, 0xd5,
+ 0xc3, 0x8e, 0xb8, 0x20, 0x24, 0x38, 0x71, 0xe0, 0x3f, 0x41, 0x08, 0xc1, 0x0d, 0x45, 0x88, 0xcb,
+ 0x5e, 0x90, 0x22, 0x2e, 0xe4, 0x64, 0xb1, 0x93, 0x13, 0x42, 0x39, 0x72, 0xc9, 0x05, 0x54, 0xd5,
+ 0xd5, 0xdf, 0xd5, 0x9e, 0xb1, 0x37, 0xeb, 0xa0, 0x68, 0x6f, 0x9e, 0xaa, 0xf7, 0x7b, 0xfd, 0xab,
+ 0xaa, 0x5f, 0xd5, 0x7b, 0x5d, 0x6d, 0x70, 0xef, 0xf8, 0xdb, 0xae, 0xaa, 0x59, 0xcd, 0x63, 0xaf,
+ 0x4b, 0x1c, 0x93, 0x50, 0xe2, 0x36, 0x87, 0xc4, 0xec, 0x5b, 0x4e, 0x53, 0x74, 0x60, 0x5b, 0x6b,
+ 0x62, 0xdb, 0x76, 0x9b, 0xc3, 0xcd, 0xe6, 0x80, 0x98, 0xc4, 0xc1, 0x94, 0xf4, 0x55, 0xdb, 0xb1,
+ 0xa8, 0x05, 0xa1, 0x8f, 0x51, 0xb1, 0xad, 0xa9, 0x0c, 0xa3, 0x0e, 0x37, 0xaf, 0xde, 0x1e, 0x68,
+ 0xf4, 0xc8, 0xeb, 0xaa, 0x3d, 0xcb, 0x68, 0x0e, 0xac, 0x81, 0xd5, 0xe4, 0xd0, 0xae, 0xf7, 0x88,
+ 0xff, 0xe2, 0x3f, 0xf8, 0x5f, 0x3e, 0xc5, 0xd5, 0x46, 0xec, 0x31, 0x3d, 0xcb, 0x21, 0x92, 0xc7,
+ 0x5c, 0xbd, 0x19, 0xc3, 0xd8, 0x96, 0xae, 0xf5, 0x46, 0xcd, 0xe1, 0x66, 0x97, 0x50, 0x9c, 0x85,
+ 0xde, 0x8d, 0xa0, 0x06, 0xee, 0x1d, 0x69, 0x26, 0x71, 0x46, 0x4d, 0xfb, 0x78, 0xc0, 0x1a, 0xdc,
+ 0xa6, 0x41, 0x28, 0x96, 0x3d, 0xa0, 0x99, 0x17, 0xe5, 0x78, 0x26, 0xd5, 0x0c, 0x92, 0x09, 0x78,
+ 0x73, 0x52, 0x80, 0xdb, 0x3b, 0x22, 0x06, 0xce, 0xc4, 0xbd, 0x9e, 0x17, 0xe7, 0x51, 0x4d, 0x6f,
+ 0x6a, 0x26, 0x75, 0xa9, 0x93, 0x0e, 0x6a, 0xfc, 0x47, 0x01, 0xb0, 0x6d, 0x99, 0xd4, 0xb1, 0x74,
+ 0x9d, 0x38, 0x88, 0x0c, 0x35, 0x57, 0xb3, 0x4c, 0xf8, 0x53, 0x50, 0x61, 0xe3, 0xe9, 0x63, 0x8a,
+ 0xab, 0xca, 0x75, 0x65, 0x63, 0xe1, 0xce, 0xb7, 0xd4, 0x68, 0x3d, 0x42, 0x7a, 0xd5, 0x3e, 0x1e,
+ 0xb0, 0x06, 0x57, 0x65, 0x68, 0x75, 0xb8, 0xa9, 0xee, 0x75, 0x3f, 0x20, 0x3d, 0xda, 0x21, 0x14,
+ 0xb7, 0xe0, 0x93, 0x93, 0xfa, 0xcc, 0xf8, 0xa4, 0x0e, 0xa2, 0x36, 0x14, 0xb2, 0xc2, 0x3d, 0x50,
+ 0xe2, 0xec, 0x05, 0xce, 0x7e, 0x3b, 0x97, 0x5d, 0x0c, 0x5a, 0x45, 0xf8, 0x67, 0x6f, 0x3f, 0xa6,
+ 0xc4, 0x64, 0xe9, 0xb5, 0x2e, 0x09, 0xea, 0xd2, 0x36, 0xa6, 0x18, 0x71, 0x22, 0xf8, 0x1a, 0xa8,
+ 0x38, 0x22, 0xfd, 0x6a, 0xf1, 0xba, 0xb2, 0x51, 0x6c, 0x5d, 0x16, 0xa8, 0x4a, 0x30, 0x2c, 0x14,
+ 0x22, 0x1a, 0x7f, 0x55, 0xc0, 0x5a, 0x76, 0xdc, 0x3b, 0x9a, 0x4b, 0xe1, 0xfb, 0x99, 0xb1, 0xab,
+ 0xd3, 0x8d, 0x9d, 0x45, 0xf3, 0x91, 0x87, 0x0f, 0x0e, 0x5a, 0x62, 0xe3, 0x7e, 0x0f, 0x94, 0x35,
+ 0x4a, 0x0c, 0xb7, 0x5a, 0xb8, 0x5e, 0xdc, 0x58, 0xb8, 0x73, 0x43, 0xcd, 0x96, 0xb9, 0x9a, 0x4d,
+ 0xac, 0xb5, 0x28, 0x28, 0xcb, 0xef, 0xb2, 0x60, 0xe4, 0x73, 0x34, 0xfe, 0xab, 0x80, 0xf9, 0x6d,
+ 0x4c, 0x0c, 0xcb, 0x3c, 0x20, 0xf4, 0x02, 0x16, 0xad, 0x0d, 0x4a, 0xae, 0x4d, 0x7a, 0x62, 0xd1,
+ 0xbe, 0x26, 0xcb, 0x3d, 0x4c, 0xe7, 0xc0, 0x26, 0xbd, 0x68, 0xa1, 0xd8, 0x2f, 0xc4, 0x83, 0xe1,
+ 0x7b, 0x60, 0xd6, 0xa5, 0x98, 0x7a, 0x2e, 0x5f, 0xa6, 0x85, 0x3b, 0x5f, 0x3f, 0x9d, 0x86, 0x43,
+ 0x5b, 0x4b, 0x82, 0x68, 0xd6, 0xff, 0x8d, 0x04, 0x45, 0xe3, 0x5f, 0x05, 0x00, 0x43, 0x6c, 0xdb,
+ 0x32, 0xfb, 0x1a, 0x65, 0xf5, 0xfb, 0x16, 0x28, 0xd1, 0x91, 0x4d, 0xf8, 0x34, 0xcc, 0xb7, 0x6e,
+ 0x04, 0x59, 0xdc, 0x1f, 0xd9, 0xe4, 0xb3, 0x93, 0xfa, 0x5a, 0x36, 0x82, 0xf5, 0x20, 0x1e, 0x03,
+ 0x77, 0xc2, 0xfc, 0x0a, 0x3c, 0xfa, 0x6e, 0xf2, 0xd1, 0x9f, 0x9d, 0xd4, 0x25, 0xe7, 0x8a, 0x1a,
+ 0x32, 0x25, 0x13, 0x84, 0x43, 0x00, 0x75, 0xec, 0xd2, 0xfb, 0x0e, 0x36, 0x5d, 0xff, 0x49, 0x9a,
+ 0x41, 0xc4, 0xc8, 0x5f, 0x9d, 0x6e, 0x79, 0x58, 0x44, 0xeb, 0xaa, 0xc8, 0x02, 0xee, 0x64, 0xd8,
+ 0x90, 0xe4, 0x09, 0xf0, 0x06, 0x98, 0x75, 0x08, 0x76, 0x2d, 0xb3, 0x5a, 0xe2, 0xa3, 0x08, 0x27,
+ 0x10, 0xf1, 0x56, 0x24, 0x7a, 0xe1, 0x4d, 0x30, 0x67, 0x10, 0xd7, 0xc5, 0x03, 0x52, 0x2d, 0x73,
+ 0xe0, 0xb2, 0x00, 0xce, 0x75, 0xfc, 0x66, 0x14, 0xf4, 0x37, 0x7e, 0xaf, 0x80, 0xc5, 0x70, 0xe6,
+ 0x2e, 0x60, 0xab, 0xb4, 0x92, 0x5b, 0xe5, 0xe5, 0x53, 0xeb, 0x24, 0x67, 0x87, 0x7c, 0x58, 0x8c,
+ 0xe5, 0xcc, 0x8a, 0x10, 0xfe, 0x04, 0x54, 0x5c, 0xa2, 0x93, 0x1e, 0xb5, 0x1c, 0x91, 0xf3, 0xeb,
+ 0x53, 0xe6, 0x8c, 0xbb, 0x44, 0x3f, 0x10, 0xa1, 0xad, 0x4b, 0x2c, 0xe9, 0xe0, 0x17, 0x0a, 0x29,
+ 0xe1, 0x8f, 0x40, 0x85, 0x12, 0xc3, 0xd6, 0x31, 0x25, 0x62, 0x9b, 0x24, 0xea, 0x9b, 0x95, 0x0b,
+ 0x23, 0xdb, 0xb7, 0xfa, 0xf7, 0x05, 0x8c, 0x6f, 0x94, 0x70, 0x1e, 0x82, 0x56, 0x14, 0xd2, 0xc0,
+ 0x63, 0xb0, 0xe4, 0xd9, 0x7d, 0x86, 0xa4, 0xec, 0xe8, 0x1e, 0x8c, 0x44, 0xf9, 0xdc, 0x3a, 0x75,
+ 0x42, 0x0e, 0x13, 0x21, 0xad, 0x35, 0xf1, 0x80, 0xa5, 0x64, 0x3b, 0x4a, 0x51, 0xc3, 0x2d, 0xb0,
+ 0x6c, 0x68, 0x26, 0x22, 0xb8, 0x3f, 0x3a, 0x20, 0x3d, 0xcb, 0xec, 0xbb, 0xbc, 0x80, 0xca, 0xad,
+ 0x75, 0x41, 0xb0, 0xdc, 0x49, 0x76, 0xa3, 0x34, 0x1e, 0xee, 0x80, 0xd5, 0xe0, 0x9c, 0xfd, 0x81,
+ 0xe6, 0x52, 0xcb, 0x19, 0xed, 0x68, 0x86, 0x46, 0xab, 0xb3, 0x9c, 0xa7, 0x3a, 0x3e, 0xa9, 0xaf,
+ 0x22, 0x49, 0x3f, 0x92, 0x46, 0x35, 0x7e, 0x33, 0x0b, 0x96, 0x53, 0xa7, 0x01, 0x7c, 0x00, 0xd6,
+ 0x7a, 0x9e, 0xe3, 0x10, 0x93, 0xee, 0x7a, 0x46, 0x97, 0x38, 0x07, 0xbd, 0x23, 0xd2, 0xf7, 0x74,
+ 0xd2, 0xe7, 0x2b, 0x5a, 0x6e, 0xd5, 0x44, 0xae, 0x6b, 0x6d, 0x29, 0x0a, 0xe5, 0x44, 0xc3, 0x1f,
+ 0x02, 0x68, 0xf2, 0xa6, 0x8e, 0xe6, 0xba, 0x21, 0x67, 0x81, 0x73, 0x86, 0x1b, 0x70, 0x37, 0x83,
+ 0x40, 0x92, 0x28, 0x96, 0x63, 0x9f, 0xb8, 0x9a, 0x43, 0xfa, 0xe9, 0x1c, 0x8b, 0xc9, 0x1c, 0xb7,
+ 0xa5, 0x28, 0x94, 0x13, 0x0d, 0xdf, 0x00, 0x0b, 0xfe, 0xd3, 0xf8, 0x9c, 0x8b, 0xc5, 0x59, 0x11,
+ 0x64, 0x0b, 0xbb, 0x51, 0x17, 0x8a, 0xe3, 0xd8, 0xd0, 0xac, 0xae, 0x4b, 0x9c, 0x21, 0xe9, 0xbf,
+ 0xe3, 0x7b, 0x00, 0x26, 0x94, 0x65, 0x2e, 0x94, 0xe1, 0xd0, 0xf6, 0x32, 0x08, 0x24, 0x89, 0x62,
+ 0x43, 0xf3, 0xab, 0x26, 0x33, 0xb4, 0xd9, 0xe4, 0xd0, 0x0e, 0xa5, 0x28, 0x94, 0x13, 0xcd, 0x6a,
+ 0xcf, 0x4f, 0x79, 0x6b, 0x88, 0x35, 0x1d, 0x77, 0x75, 0x52, 0x9d, 0x4b, 0xd6, 0xde, 0x6e, 0xb2,
+ 0x1b, 0xa5, 0xf1, 0xf0, 0x1d, 0x70, 0xc5, 0x6f, 0x3a, 0x34, 0x71, 0x48, 0x52, 0xe1, 0x24, 0x2f,
+ 0x09, 0x92, 0x2b, 0xbb, 0x69, 0x00, 0xca, 0xc6, 0xc0, 0xb7, 0xc0, 0x52, 0xcf, 0xd2, 0x75, 0x5e,
+ 0x8f, 0x6d, 0xcb, 0x33, 0x69, 0x75, 0x9e, 0xb3, 0x40, 0xb6, 0x87, 0xda, 0x89, 0x1e, 0x94, 0x42,
+ 0xc2, 0x87, 0x00, 0xf4, 0x02, 0x39, 0x70, 0xab, 0x20, 0x5f, 0xe8, 0xb3, 0x3a, 0x14, 0x09, 0x70,
+ 0xd8, 0xe4, 0xa2, 0x18, 0x5b, 0xe3, 0x43, 0x05, 0xac, 0xe7, 0xec, 0x71, 0xf8, 0xbd, 0x84, 0xea,
+ 0xdd, 0x4a, 0xa9, 0xde, 0xb5, 0x9c, 0xb0, 0x98, 0xf4, 0xf5, 0xc0, 0x22, 0xf3, 0x1d, 0x9a, 0x39,
+ 0xf0, 0x21, 0xe2, 0x04, 0x7b, 0x55, 0x96, 0x3b, 0x8a, 0x03, 0xa3, 0x63, 0xf8, 0xca, 0xf8, 0xa4,
+ 0xbe, 0x98, 0xe8, 0x43, 0x49, 0xce, 0xc6, 0x2f, 0x0b, 0x00, 0x6c, 0x13, 0x5b, 0xb7, 0x46, 0x06,
+ 0x31, 0x2f, 0xc2, 0xb5, 0x6c, 0x27, 0x5c, 0x4b, 0x43, 0xba, 0x10, 0x61, 0x3e, 0xb9, 0xb6, 0x65,
+ 0x27, 0x65, 0x5b, 0xbe, 0x31, 0x81, 0xe7, 0x74, 0xdf, 0xf2, 0x8f, 0x22, 0x58, 0x89, 0xc0, 0x91,
+ 0x71, 0xb9, 0x97, 0x58, 0xc2, 0x57, 0x52, 0x4b, 0xb8, 0x2e, 0x09, 0x79, 0x6e, 0xce, 0xe5, 0xf3,
+ 0x77, 0x10, 0xf0, 0x03, 0xb0, 0xc4, 0xac, 0x8a, 0x5f, 0x08, 0xdc, 0x08, 0xcd, 0x9e, 0xd9, 0x08,
+ 0x85, 0x42, 0xb6, 0x93, 0x60, 0x42, 0x29, 0xe6, 0x1c, 0xe3, 0x35, 0xf7, 0xbc, 0x8d, 0x57, 0xe3,
+ 0x0f, 0x0a, 0x58, 0x8a, 0x96, 0xe9, 0x02, 0x6c, 0x52, 0x3b, 0x69, 0x93, 0x6a, 0xa7, 0xd7, 0x65,
+ 0x8e, 0x4f, 0xfa, 0x7b, 0x29, 0x9e, 0x35, 0x37, 0x4a, 0x1b, 0xec, 0x85, 0xca, 0xd6, 0xb5, 0x1e,
+ 0x76, 0x85, 0xac, 0x5e, 0xf2, 0x5f, 0xa6, 0xfc, 0x36, 0x14, 0xf6, 0x26, 0x2c, 0x55, 0xe1, 0xf9,
+ 0x5a, 0xaa, 0xe2, 0xe7, 0x63, 0xa9, 0xee, 0x83, 0x8a, 0x1b, 0x98, 0xa9, 0x12, 0xa7, 0xbc, 0x31,
+ 0x69, 0x3b, 0x0b, 0x1f, 0x15, 0xb2, 0x86, 0x0e, 0x2a, 0x64, 0x92, 0x79, 0xa7, 0xf2, 0x17, 0xe9,
+ 0x9d, 0xd8, 0x16, 0xb6, 0xb1, 0xe7, 0x92, 0x3e, 0xaf, 0xfb, 0x4a, 0xb4, 0x85, 0xf7, 0x79, 0x2b,
+ 0x12, 0xbd, 0xf0, 0x10, 0xac, 0xdb, 0x8e, 0x35, 0x70, 0x88, 0xeb, 0x6e, 0x13, 0xdc, 0xd7, 0x35,
+ 0x93, 0x04, 0x03, 0xf0, 0x55, 0xef, 0xda, 0xf8, 0xa4, 0xbe, 0xbe, 0x2f, 0x87, 0xa0, 0xbc, 0xd8,
+ 0xc6, 0x9f, 0x4b, 0xe0, 0x72, 0xfa, 0x44, 0xcc, 0x31, 0x22, 0xca, 0xb9, 0x8c, 0xc8, 0x6b, 0xb1,
+ 0x12, 0xf5, 0x5d, 0x5a, 0xec, 0x9d, 0x3f, 0x53, 0xa6, 0x5b, 0x60, 0x59, 0x18, 0x8f, 0xa0, 0x53,
+ 0x58, 0xb1, 0x70, 0x79, 0x0e, 0x93, 0xdd, 0x28, 0x8d, 0x67, 0xf6, 0x22, 0x72, 0x0d, 0x01, 0x49,
+ 0x29, 0x69, 0x2f, 0xb6, 0xd2, 0x00, 0x94, 0x8d, 0x81, 0x1d, 0xb0, 0xe2, 0x99, 0x59, 0x2a, 0xbf,
+ 0x5c, 0xae, 0x09, 0xaa, 0x95, 0xc3, 0x2c, 0x04, 0xc9, 0xe2, 0xe0, 0x8f, 0x13, 0x8e, 0x63, 0x96,
+ 0x1f, 0x04, 0xaf, 0x9c, 0x5e, 0xd1, 0x53, 0x5b, 0x0e, 0x78, 0x0f, 0x2c, 0x3a, 0xdc, 0x50, 0x06,
+ 0x59, 0xfa, 0xa6, 0xec, 0x2b, 0x22, 0x6c, 0x11, 0xc5, 0x3b, 0x51, 0x12, 0x2b, 0xf1, 0x51, 0x95,
+ 0x69, 0x7d, 0x54, 0xe3, 0x4f, 0x0a, 0x80, 0xd9, 0x2d, 0x38, 0xf1, 0xe5, 0x3e, 0x13, 0x11, 0x93,
+ 0xc8, 0xbe, 0xdc, 0xe1, 0xdc, 0x9a, 0xec, 0x70, 0xa2, 0x13, 0x74, 0x3a, 0x8b, 0x23, 0x66, 0xe0,
+ 0x62, 0x2e, 0x66, 0xa6, 0xb0, 0x38, 0x51, 0x3e, 0xcf, 0x66, 0x71, 0x62, 0x3c, 0xa7, 0x5b, 0x9c,
+ 0x7f, 0x17, 0xc0, 0x4a, 0x04, 0x9e, 0xda, 0xe2, 0x48, 0x42, 0x5e, 0x5c, 0xce, 0x4c, 0xbe, 0x9c,
+ 0x61, 0xb6, 0x23, 0x9a, 0xba, 0xff, 0x13, 0xdb, 0x11, 0x25, 0x94, 0x63, 0x3b, 0x7e, 0x57, 0x88,
+ 0x67, 0xfd, 0xa5, 0xb7, 0x1d, 0xcf, 0x7e, 0xb9, 0xd2, 0xf8, 0x4b, 0x11, 0x5c, 0x4e, 0x6f, 0xc1,
+ 0x84, 0x0e, 0x2a, 0x13, 0x75, 0x70, 0x1f, 0xac, 0x3e, 0xf2, 0x74, 0x7d, 0xc4, 0xa7, 0x21, 0x26,
+ 0x86, 0xbe, 0x82, 0x7e, 0x55, 0x44, 0xae, 0x7e, 0x5f, 0x82, 0x41, 0xd2, 0xc8, 0x1c, 0x4d, 0x2f,
+ 0x9e, 0x4b, 0xd3, 0x33, 0x6a, 0x53, 0x3a, 0x83, 0xda, 0x48, 0xf5, 0xb9, 0x7c, 0x0e, 0x7d, 0x9e,
+ 0x5a, 0x50, 0x25, 0xc7, 0xd5, 0xc4, 0x77, 0xf8, 0x5f, 0x2b, 0x60, 0x4d, 0xfe, 0xfa, 0x0c, 0x75,
+ 0xb0, 0x64, 0xe0, 0xc7, 0xf1, 0xcb, 0x8b, 0x49, 0x82, 0xe1, 0x51, 0x4d, 0x57, 0xfd, 0xaf, 0x3b,
+ 0xea, 0xbb, 0x26, 0xdd, 0x73, 0x0e, 0xa8, 0xa3, 0x99, 0x03, 0x5f, 0x60, 0x3b, 0x09, 0x2e, 0x94,
+ 0xe2, 0x6e, 0x7c, 0xa2, 0x80, 0xf5, 0x1c, 0x95, 0xbb, 0xd8, 0x4c, 0xe0, 0x43, 0x50, 0x31, 0xf0,
+ 0xe3, 0x03, 0xcf, 0x19, 0x04, 0x92, 0x7c, 0xf6, 0xe7, 0xf0, 0x8d, 0xdc, 0x11, 0x2c, 0x28, 0xe4,
+ 0x6b, 0xec, 0x81, 0xeb, 0x89, 0x41, 0xb2, 0x4d, 0x43, 0x1e, 0x79, 0x3a, 0xdf, 0x3f, 0xc2, 0x53,
+ 0xdc, 0x02, 0xf3, 0x36, 0x76, 0xa8, 0x16, 0x9a, 0xd1, 0x72, 0x6b, 0x71, 0x7c, 0x52, 0x9f, 0xdf,
+ 0x0f, 0x1a, 0x51, 0xd4, 0xdf, 0xf8, 0x55, 0x01, 0x2c, 0xc4, 0x48, 0x2e, 0x40, 0xdf, 0xdf, 0x4e,
+ 0xe8, 0xbb, 0xf4, 0x8b, 0x49, 0x7c, 0x54, 0x79, 0x02, 0xdf, 0x49, 0x09, 0xfc, 0x37, 0x27, 0x11,
+ 0x9d, 0xae, 0xf0, 0x9f, 0x16, 0xc0, 0x6a, 0x0c, 0x1d, 0x49, 0xfc, 0x77, 0x12, 0x12, 0xbf, 0x91,
+ 0x92, 0xf8, 0xaa, 0x2c, 0xe6, 0x85, 0xc6, 0x4f, 0xd6, 0xf8, 0x3f, 0x2a, 0x60, 0x39, 0x36, 0x77,
+ 0x17, 0x20, 0xf2, 0xdb, 0x49, 0x91, 0xaf, 0x4f, 0xa8, 0x97, 0x1c, 0x95, 0x7f, 0x52, 0x4e, 0xe4,
+ 0xfd, 0xa5, 0x97, 0xf9, 0x9f, 0x83, 0xd5, 0xa1, 0xa5, 0x7b, 0x06, 0x69, 0xeb, 0x58, 0x33, 0x02,
+ 0x00, 0x53, 0x32, 0x36, 0x89, 0x37, 0xa5, 0xf4, 0xc4, 0x71, 0x35, 0x97, 0x12, 0x93, 0x3e, 0x88,
+ 0x22, 0x23, 0x2d, 0x7e, 0x20, 0xa1, 0x43, 0xd2, 0x87, 0xc0, 0x37, 0xc0, 0x02, 0xd3, 0x54, 0xad,
+ 0x47, 0x76, 0xb1, 0x11, 0xd4, 0x54, 0xf8, 0x7d, 0xe0, 0x20, 0xea, 0x42, 0x71, 0x1c, 0x3c, 0x02,
+ 0x2b, 0xb6, 0xd5, 0xef, 0x60, 0x13, 0x0f, 0x08, 0x3b, 0xff, 0xf7, 0xf9, 0xff, 0x42, 0xf0, 0x7b,
+ 0x87, 0xf9, 0xd6, 0x9b, 0xc1, 0x0b, 0xe9, 0x7e, 0x16, 0xc2, 0x3c, 0xbb, 0xa4, 0x99, 0xef, 0x67,
+ 0x19, 0x25, 0x34, 0x32, 0x9f, 0xb3, 0xe6, 0x32, 0xff, 0x03, 0x20, 0x2b, 0xae, 0x73, 0x7e, 0xd0,
+ 0xca, 0xbb, 0x51, 0xa9, 0x9c, 0xeb, 0x6b, 0xd4, 0xa7, 0x25, 0x70, 0x25, 0x73, 0x40, 0x7e, 0x81,
+ 0x77, 0x1a, 0x19, 0xb7, 0x54, 0x3c, 0x83, 0x5b, 0xda, 0x02, 0xcb, 0xe2, 0x43, 0x58, 0xca, 0x6c,
+ 0x85, 0x76, 0xb4, 0x9d, 0xec, 0x46, 0x69, 0xbc, 0xec, 0x4e, 0xa5, 0x7c, 0xc6, 0x3b, 0x95, 0x78,
+ 0x16, 0xe2, 0xff, 0x37, 0xfc, 0xaa, 0xcb, 0x66, 0x21, 0xfe, 0x8d, 0x23, 0x8d, 0x87, 0xdf, 0x0d,
+ 0x4a, 0x2a, 0x64, 0x98, 0xe3, 0x0c, 0xa9, 0x1a, 0x09, 0x09, 0x52, 0xe8, 0x67, 0xfa, 0xd8, 0xf3,
+ 0xbe, 0xe4, 0x63, 0xcf, 0xc6, 0x84, 0x52, 0x9e, 0xde, 0x2a, 0xfe, 0x4d, 0x01, 0x2f, 0xe5, 0xee,
+ 0x01, 0xb8, 0x95, 0xd0, 0xd9, 0xdb, 0x29, 0x9d, 0x7d, 0x39, 0x37, 0x30, 0x26, 0xb6, 0x86, 0xfc,
+ 0x42, 0xe4, 0xee, 0xc4, 0x0b, 0x11, 0x89, 0x8b, 0x9a, 0x7c, 0x33, 0xd2, 0xda, 0x78, 0xf2, 0xb4,
+ 0x36, 0xf3, 0xd1, 0xd3, 0xda, 0xcc, 0xc7, 0x4f, 0x6b, 0x33, 0xbf, 0x18, 0xd7, 0x94, 0x27, 0xe3,
+ 0x9a, 0xf2, 0xd1, 0xb8, 0xa6, 0x7c, 0x3c, 0xae, 0x29, 0xff, 0x1c, 0xd7, 0x94, 0xdf, 0x7e, 0x52,
+ 0x9b, 0x79, 0x58, 0x18, 0x6e, 0xfe, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x70, 0x5f, 0xbf, 0x58, 0x3d,
+ 0x26, 0x00, 0x00,
}
diff --git a/staging/src/k8s.io/api/apps/v1/generated.proto b/staging/src/k8s.io/api/apps/v1/generated.proto
index 56bd99ecbd..0506644797 100644
--- a/staging/src/k8s.io/api/apps/v1/generated.proto
+++ b/staging/src/k8s.io/api/apps/v1/generated.proto
@@ -555,6 +555,27 @@ message StatefulSet {
optional StatefulSetStatus status = 3;
}
+// StatefulSetCondition describes the state of a statefulset at a certain point.
+message StatefulSetCondition {
+ // Type of statefulset condition.
+ optional string type = 1;
+
+ // Status of the condition, one of True, False, Unknown.
+ optional string status = 2;
+
+ // Last time the condition transitioned from one status to another.
+ // +optional
+ optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
+
+ // The reason for the condition's last transition.
+ // +optional
+ optional string reason = 4;
+
+ // A human readable message indicating details about the transition.
+ // +optional
+ optional string message = 5;
+}
+
// StatefulSetList is a collection of StatefulSets.
message StatefulSetList {
// +optional
@@ -659,6 +680,12 @@ message StatefulSetStatus {
// newest ControllerRevision.
// +optional
optional int32 collisionCount = 9;
+
+ // Represents the latest available observations of a statefulset's current state.
+ // +optional
+ // +patchMergeKey=type
+ // +patchStrategy=merge
+ repeated StatefulSetCondition conditions = 10;
}
// StatefulSetUpdateStrategy indicates the strategy that the StatefulSet
diff --git a/staging/src/k8s.io/api/apps/v1/types.go b/staging/src/k8s.io/api/apps/v1/types.go
index 4e5e25d3d0..95393460de 100644
--- a/staging/src/k8s.io/api/apps/v1/types.go
+++ b/staging/src/k8s.io/api/apps/v1/types.go
@@ -206,6 +206,31 @@ type StatefulSetStatus struct {
// newest ControllerRevision.
// +optional
CollisionCount *int32 `json:"collisionCount,omitempty" protobuf:"varint,9,opt,name=collisionCount"`
+
+ // Represents the latest available observations of a statefulset's current state.
+ // +optional
+ // +patchMergeKey=type
+ // +patchStrategy=merge
+ Conditions []StatefulSetCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,10,rep,name=conditions"`
+}
+
+type StatefulSetConditionType string
+
+// StatefulSetCondition describes the state of a statefulset at a certain point.
+type StatefulSetCondition struct {
+ // Type of statefulset condition.
+ Type StatefulSetConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=StatefulSetConditionType"`
+ // Status of the condition, one of True, False, Unknown.
+ Status v1.ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=k8s.io/api/core/v1.ConditionStatus"`
+ // Last time the condition transitioned from one status to another.
+ // +optional
+ LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,3,opt,name=lastTransitionTime"`
+ // The reason for the condition's last transition.
+ // +optional
+ Reason string `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"`
+ // A human readable message indicating details about the transition.
+ // +optional
+ Message string `json:"message,omitempty" protobuf:"bytes,5,opt,name=message"`
}
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
diff --git a/staging/src/k8s.io/api/apps/v1/types_swagger_doc_generated.go b/staging/src/k8s.io/api/apps/v1/types_swagger_doc_generated.go
index 313c1bf604..02180f8d20 100644
--- a/staging/src/k8s.io/api/apps/v1/types_swagger_doc_generated.go
+++ b/staging/src/k8s.io/api/apps/v1/types_swagger_doc_generated.go
@@ -298,6 +298,19 @@ func (StatefulSet) SwaggerDoc() map[string]string {
return map_StatefulSet
}
+var map_StatefulSetCondition = map[string]string{
+ "": "StatefulSetCondition describes the state of a statefulset at a certain point.",
+ "type": "Type of statefulset condition.",
+ "status": "Status of the condition, one of True, False, Unknown.",
+ "lastTransitionTime": "Last time the condition transitioned from one status to another.",
+ "reason": "The reason for the condition's last transition.",
+ "message": "A human readable message indicating details about the transition.",
+}
+
+func (StatefulSetCondition) SwaggerDoc() map[string]string {
+ return map_StatefulSetCondition
+}
+
var map_StatefulSetList = map[string]string{
"": "StatefulSetList is a collection of StatefulSets.",
}
@@ -332,6 +345,7 @@ var map_StatefulSetStatus = map[string]string{
"currentRevision": "currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas).",
"updateRevision": "updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas)",
"collisionCount": "collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.",
+ "conditions": "Represents the latest available observations of a statefulset's current state.",
}
func (StatefulSetStatus) SwaggerDoc() map[string]string {
diff --git a/staging/src/k8s.io/api/apps/v1/zz_generated.deepcopy.go b/staging/src/k8s.io/api/apps/v1/zz_generated.deepcopy.go
index 0f6ccdb4b4..c41db29815 100644
--- a/staging/src/k8s.io/api/apps/v1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/api/apps/v1/zz_generated.deepcopy.go
@@ -23,133 +23,10 @@ package v1
import (
core_v1 "k8s.io/api/core/v1"
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
intstr "k8s.io/apimachinery/pkg/util/intstr"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ControllerRevision).DeepCopyInto(out.(*ControllerRevision))
- return nil
- }, InType: reflect.TypeOf(&ControllerRevision{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ControllerRevisionList).DeepCopyInto(out.(*ControllerRevisionList))
- return nil
- }, InType: reflect.TypeOf(&ControllerRevisionList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DaemonSet).DeepCopyInto(out.(*DaemonSet))
- return nil
- }, InType: reflect.TypeOf(&DaemonSet{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DaemonSetCondition).DeepCopyInto(out.(*DaemonSetCondition))
- return nil
- }, InType: reflect.TypeOf(&DaemonSetCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DaemonSetList).DeepCopyInto(out.(*DaemonSetList))
- return nil
- }, InType: reflect.TypeOf(&DaemonSetList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DaemonSetSpec).DeepCopyInto(out.(*DaemonSetSpec))
- return nil
- }, InType: reflect.TypeOf(&DaemonSetSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DaemonSetStatus).DeepCopyInto(out.(*DaemonSetStatus))
- return nil
- }, InType: reflect.TypeOf(&DaemonSetStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DaemonSetUpdateStrategy).DeepCopyInto(out.(*DaemonSetUpdateStrategy))
- return nil
- }, InType: reflect.TypeOf(&DaemonSetUpdateStrategy{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Deployment).DeepCopyInto(out.(*Deployment))
- return nil
- }, InType: reflect.TypeOf(&Deployment{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DeploymentCondition).DeepCopyInto(out.(*DeploymentCondition))
- return nil
- }, InType: reflect.TypeOf(&DeploymentCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DeploymentList).DeepCopyInto(out.(*DeploymentList))
- return nil
- }, InType: reflect.TypeOf(&DeploymentList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DeploymentSpec).DeepCopyInto(out.(*DeploymentSpec))
- return nil
- }, InType: reflect.TypeOf(&DeploymentSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DeploymentStatus).DeepCopyInto(out.(*DeploymentStatus))
- return nil
- }, InType: reflect.TypeOf(&DeploymentStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DeploymentStrategy).DeepCopyInto(out.(*DeploymentStrategy))
- return nil
- }, InType: reflect.TypeOf(&DeploymentStrategy{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicaSet).DeepCopyInto(out.(*ReplicaSet))
- return nil
- }, InType: reflect.TypeOf(&ReplicaSet{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicaSetCondition).DeepCopyInto(out.(*ReplicaSetCondition))
- return nil
- }, InType: reflect.TypeOf(&ReplicaSetCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicaSetList).DeepCopyInto(out.(*ReplicaSetList))
- return nil
- }, InType: reflect.TypeOf(&ReplicaSetList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicaSetSpec).DeepCopyInto(out.(*ReplicaSetSpec))
- return nil
- }, InType: reflect.TypeOf(&ReplicaSetSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicaSetStatus).DeepCopyInto(out.(*ReplicaSetStatus))
- return nil
- }, InType: reflect.TypeOf(&ReplicaSetStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RollingUpdateDaemonSet).DeepCopyInto(out.(*RollingUpdateDaemonSet))
- return nil
- }, InType: reflect.TypeOf(&RollingUpdateDaemonSet{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RollingUpdateDeployment).DeepCopyInto(out.(*RollingUpdateDeployment))
- return nil
- }, InType: reflect.TypeOf(&RollingUpdateDeployment{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RollingUpdateStatefulSetStrategy).DeepCopyInto(out.(*RollingUpdateStatefulSetStrategy))
- return nil
- }, InType: reflect.TypeOf(&RollingUpdateStatefulSetStrategy{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StatefulSet).DeepCopyInto(out.(*StatefulSet))
- return nil
- }, InType: reflect.TypeOf(&StatefulSet{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StatefulSetList).DeepCopyInto(out.(*StatefulSetList))
- return nil
- }, InType: reflect.TypeOf(&StatefulSetList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StatefulSetSpec).DeepCopyInto(out.(*StatefulSetSpec))
- return nil
- }, InType: reflect.TypeOf(&StatefulSetSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StatefulSetStatus).DeepCopyInto(out.(*StatefulSetStatus))
- return nil
- }, InType: reflect.TypeOf(&StatefulSetStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StatefulSetUpdateStrategy).DeepCopyInto(out.(*StatefulSetUpdateStrategy))
- return nil
- }, InType: reflect.TypeOf(&StatefulSetUpdateStrategy{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ControllerRevision) DeepCopyInto(out *ControllerRevision) {
*out = *in
@@ -828,6 +705,23 @@ func (in *StatefulSet) DeepCopyObject() runtime.Object {
}
}
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *StatefulSetCondition) DeepCopyInto(out *StatefulSetCondition) {
+ *out = *in
+ in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime)
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StatefulSetCondition.
+func (in *StatefulSetCondition) DeepCopy() *StatefulSetCondition {
+ if in == nil {
+ return nil
+ }
+ out := new(StatefulSetCondition)
+ in.DeepCopyInto(out)
+ return out
+}
+
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *StatefulSetList) DeepCopyInto(out *StatefulSetList) {
*out = *in
@@ -926,6 +820,13 @@ func (in *StatefulSetStatus) DeepCopyInto(out *StatefulSetStatus) {
**out = **in
}
}
+ if in.Conditions != nil {
+ in, out := &in.Conditions, &out.Conditions
+ *out = make([]StatefulSetCondition, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
return
}
diff --git a/staging/src/k8s.io/api/apps/v1beta1/BUILD b/staging/src/k8s.io/api/apps/v1beta1/BUILD
index 212c7d3cea..f40a41e3e2 100644
--- a/staging/src/k8s.io/api/apps/v1beta1/BUILD
+++ b/staging/src/k8s.io/api/apps/v1beta1/BUILD
@@ -21,7 +21,6 @@ go_library(
"//vendor/github.com/gogo/protobuf/sortkeys:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
diff --git a/staging/src/k8s.io/api/apps/v1beta1/doc.go b/staging/src/k8s.io/api/apps/v1beta1/doc.go
index 158f0000c7..6047ed501d 100644
--- a/staging/src/k8s.io/api/apps/v1beta1/doc.go
+++ b/staging/src/k8s.io/api/apps/v1beta1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:openapi-gen=true
package v1beta1 // import "k8s.io/api/apps/v1beta1"
diff --git a/staging/src/k8s.io/api/apps/v1beta1/generated.pb.go b/staging/src/k8s.io/api/apps/v1beta1/generated.pb.go
index 6d5e1f7a1e..baee7a9750 100644
--- a/staging/src/k8s.io/api/apps/v1beta1/generated.pb.go
+++ b/staging/src/k8s.io/api/apps/v1beta1/generated.pb.go
@@ -41,6 +41,7 @@ limitations under the License.
ScaleSpec
ScaleStatus
StatefulSet
+ StatefulSetCondition
StatefulSetList
StatefulSetSpec
StatefulSetStatus
@@ -144,22 +145,26 @@ func (m *StatefulSet) Reset() { *m = StatefulSet{} }
func (*StatefulSet) ProtoMessage() {}
func (*StatefulSet) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{15} }
+func (m *StatefulSetCondition) Reset() { *m = StatefulSetCondition{} }
+func (*StatefulSetCondition) ProtoMessage() {}
+func (*StatefulSetCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{16} }
+
func (m *StatefulSetList) Reset() { *m = StatefulSetList{} }
func (*StatefulSetList) ProtoMessage() {}
-func (*StatefulSetList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{16} }
+func (*StatefulSetList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{17} }
func (m *StatefulSetSpec) Reset() { *m = StatefulSetSpec{} }
func (*StatefulSetSpec) ProtoMessage() {}
-func (*StatefulSetSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{17} }
+func (*StatefulSetSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{18} }
func (m *StatefulSetStatus) Reset() { *m = StatefulSetStatus{} }
func (*StatefulSetStatus) ProtoMessage() {}
-func (*StatefulSetStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{18} }
+func (*StatefulSetStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{19} }
func (m *StatefulSetUpdateStrategy) Reset() { *m = StatefulSetUpdateStrategy{} }
func (*StatefulSetUpdateStrategy) ProtoMessage() {}
func (*StatefulSetUpdateStrategy) Descriptor() ([]byte, []int) {
- return fileDescriptorGenerated, []int{19}
+ return fileDescriptorGenerated, []int{20}
}
func init() {
@@ -179,6 +184,7 @@ func init() {
proto.RegisterType((*ScaleSpec)(nil), "k8s.io.api.apps.v1beta1.ScaleSpec")
proto.RegisterType((*ScaleStatus)(nil), "k8s.io.api.apps.v1beta1.ScaleStatus")
proto.RegisterType((*StatefulSet)(nil), "k8s.io.api.apps.v1beta1.StatefulSet")
+ proto.RegisterType((*StatefulSetCondition)(nil), "k8s.io.api.apps.v1beta1.StatefulSetCondition")
proto.RegisterType((*StatefulSetList)(nil), "k8s.io.api.apps.v1beta1.StatefulSetList")
proto.RegisterType((*StatefulSetSpec)(nil), "k8s.io.api.apps.v1beta1.StatefulSetSpec")
proto.RegisterType((*StatefulSetStatus)(nil), "k8s.io.api.apps.v1beta1.StatefulSetStatus")
@@ -840,6 +846,48 @@ func (m *StatefulSet) MarshalTo(dAtA []byte) (int, error) {
return i, nil
}
+func (m *StatefulSetCondition) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StatefulSetCondition) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type)))
+ i += copy(dAtA[i:], m.Type)
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Status)))
+ i += copy(dAtA[i:], m.Status)
+ dAtA[i] = 0x1a
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(m.LastTransitionTime.Size()))
+ n24, err := m.LastTransitionTime.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n24
+ dAtA[i] = 0x22
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason)))
+ i += copy(dAtA[i:], m.Reason)
+ dAtA[i] = 0x2a
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Message)))
+ i += copy(dAtA[i:], m.Message)
+ return i, nil
+}
+
func (m *StatefulSetList) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@@ -858,11 +906,11 @@ func (m *StatefulSetList) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0xa
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size()))
- n24, err := m.ListMeta.MarshalTo(dAtA[i:])
+ n25, err := m.ListMeta.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n24
+ i += n25
if len(m.Items) > 0 {
for _, msg := range m.Items {
dAtA[i] = 0x12
@@ -902,20 +950,20 @@ func (m *StatefulSetSpec) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0x12
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.Selector.Size()))
- n25, err := m.Selector.MarshalTo(dAtA[i:])
+ n26, err := m.Selector.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n25
+ i += n26
}
dAtA[i] = 0x1a
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.Template.Size()))
- n26, err := m.Template.MarshalTo(dAtA[i:])
+ n27, err := m.Template.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n26
+ i += n27
if len(m.VolumeClaimTemplates) > 0 {
for _, msg := range m.VolumeClaimTemplates {
dAtA[i] = 0x22
@@ -939,11 +987,11 @@ func (m *StatefulSetSpec) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0x3a
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.UpdateStrategy.Size()))
- n27, err := m.UpdateStrategy.MarshalTo(dAtA[i:])
+ n28, err := m.UpdateStrategy.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n27
+ i += n28
if m.RevisionHistoryLimit != nil {
dAtA[i] = 0x40
i++
@@ -997,6 +1045,18 @@ func (m *StatefulSetStatus) MarshalTo(dAtA []byte) (int, error) {
i++
i = encodeVarintGenerated(dAtA, i, uint64(*m.CollisionCount))
}
+ if len(m.Conditions) > 0 {
+ for _, msg := range m.Conditions {
+ dAtA[i] = 0x52
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(msg.Size()))
+ n, err := msg.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n
+ }
+ }
return i, nil
}
@@ -1023,11 +1083,11 @@ func (m *StatefulSetUpdateStrategy) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0x12
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.RollingUpdate.Size()))
- n28, err := m.RollingUpdate.MarshalTo(dAtA[i:])
+ n29, err := m.RollingUpdate.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n28
+ i += n29
}
return i, nil
}
@@ -1286,6 +1346,22 @@ func (m *StatefulSet) Size() (n int) {
return n
}
+func (m *StatefulSetCondition) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Type)
+ n += 1 + l + sovGenerated(uint64(l))
+ l = len(m.Status)
+ n += 1 + l + sovGenerated(uint64(l))
+ l = m.LastTransitionTime.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ l = len(m.Reason)
+ n += 1 + l + sovGenerated(uint64(l))
+ l = len(m.Message)
+ n += 1 + l + sovGenerated(uint64(l))
+ return n
+}
+
func (m *StatefulSetList) Size() (n int) {
var l int
_ = l
@@ -1347,6 +1423,12 @@ func (m *StatefulSetStatus) Size() (n int) {
if m.CollisionCount != nil {
n += 1 + sovGenerated(uint64(*m.CollisionCount))
}
+ if len(m.Conditions) > 0 {
+ for _, e := range m.Conditions {
+ l = e.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ }
+ }
return n
}
@@ -1591,6 +1673,20 @@ func (this *StatefulSet) String() string {
}, "")
return s
}
+func (this *StatefulSetCondition) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&StatefulSetCondition{`,
+ `Type:` + fmt.Sprintf("%v", this.Type) + `,`,
+ `Status:` + fmt.Sprintf("%v", this.Status) + `,`,
+ `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`,
+ `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`,
+ `Message:` + fmt.Sprintf("%v", this.Message) + `,`,
+ `}`,
+ }, "")
+ return s
+}
func (this *StatefulSetList) String() string {
if this == nil {
return "nil"
@@ -1632,6 +1728,7 @@ func (this *StatefulSetStatus) String() string {
`CurrentRevision:` + fmt.Sprintf("%v", this.CurrentRevision) + `,`,
`UpdateRevision:` + fmt.Sprintf("%v", this.UpdateRevision) + `,`,
`CollisionCount:` + valueToStringGenerated(this.CollisionCount) + `,`,
+ `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "StatefulSetCondition", "StatefulSetCondition", 1), `&`, ``, 1) + `,`,
`}`,
}, "")
return s
@@ -4017,6 +4114,202 @@ func (m *StatefulSet) Unmarshal(dAtA []byte) error {
}
return nil
}
+func (m *StatefulSetCondition) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StatefulSetCondition: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StatefulSetCondition: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Type = StatefulSetConditionType(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Status = k8s_io_api_core_v1.ConditionStatus(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LastTransitionTime", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if err := m.LastTransitionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Reason = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Message = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipGenerated(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
func (m *StatefulSetList) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
@@ -4603,6 +4896,37 @@ func (m *StatefulSetStatus) Unmarshal(dAtA []byte) error {
}
}
m.CollisionCount = &v
+ case 10:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Conditions = append(m.Conditions, StatefulSetCondition{})
+ if err := m.Conditions[len(m.Conditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipGenerated(dAtA[iNdEx:])
@@ -4846,119 +5170,122 @@ func init() {
}
var fileDescriptorGenerated = []byte{
- // 1820 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x58, 0x4b, 0x6f, 0x1b, 0xc9,
- 0x11, 0xd6, 0x50, 0xa4, 0x44, 0xb6, 0x56, 0x94, 0xd5, 0x52, 0x24, 0xae, 0x36, 0xa1, 0x04, 0x66,
- 0xb1, 0x2b, 0xef, 0xae, 0x86, 0x6b, 0xd9, 0x31, 0xfc, 0x00, 0x8c, 0x88, 0x94, 0x63, 0xcb, 0x90,
- 0x22, 0xb9, 0x29, 0x39, 0x88, 0x93, 0x00, 0x6e, 0x0e, 0xdb, 0xd4, 0x58, 0xf3, 0xc2, 0x4c, 0x0f,
- 0x63, 0x22, 0x97, 0xdc, 0x13, 0xc0, 0x39, 0xe7, 0x57, 0xe4, 0x18, 0x24, 0xb7, 0x9c, 0x74, 0x09,
- 0x60, 0xe4, 0x12, 0x9f, 0x84, 0x98, 0xbe, 0xe6, 0x9a, 0x8b, 0x81, 0x00, 0x41, 0xf7, 0xf4, 0xbc,
- 0x67, 0x24, 0x2a, 0x40, 0x74, 0xc8, 0x8d, 0xd3, 0x55, 0xf5, 0x55, 0x75, 0x77, 0x75, 0xd5, 0x57,
- 0x04, 0x3f, 0x3c, 0xb9, 0xe3, 0xc8, 0xaa, 0xd9, 0x3c, 0x71, 0xbb, 0xc4, 0x36, 0x08, 0x25, 0x4e,
- 0x73, 0x40, 0x8c, 0x9e, 0x69, 0x37, 0x85, 0x00, 0x5b, 0x6a, 0x13, 0x5b, 0x96, 0xd3, 0x1c, 0xdc,
- 0xe8, 0x12, 0x8a, 0x6f, 0x34, 0xfb, 0xc4, 0x20, 0x36, 0xa6, 0xa4, 0x27, 0x5b, 0xb6, 0x49, 0x4d,
- 0xb8, 0xec, 0x29, 0xca, 0xd8, 0x52, 0x65, 0xa6, 0x28, 0x0b, 0xc5, 0x95, 0x8d, 0xbe, 0x4a, 0x8f,
- 0xdd, 0xae, 0xac, 0x98, 0x7a, 0xb3, 0x6f, 0xf6, 0xcd, 0x26, 0xd7, 0xef, 0xba, 0x2f, 0xf9, 0x17,
- 0xff, 0xe0, 0xbf, 0x3c, 0x9c, 0x95, 0x46, 0xc4, 0xa1, 0x62, 0xda, 0xa4, 0x39, 0x48, 0xf9, 0x5a,
- 0xb9, 0x1e, 0xd1, 0xb1, 0x4c, 0x4d, 0x55, 0x86, 0x79, 0x61, 0xad, 0xdc, 0x0a, 0x55, 0x75, 0xac,
- 0x1c, 0xab, 0x06, 0xb1, 0x87, 0x4d, 0xeb, 0xa4, 0xcf, 0x16, 0x9c, 0xa6, 0x4e, 0x28, 0xce, 0x72,
- 0xd0, 0xcc, 0xb3, 0xb2, 0x5d, 0x83, 0xaa, 0x3a, 0x49, 0x19, 0xdc, 0xbe, 0xc8, 0xc0, 0x51, 0x8e,
- 0x89, 0x8e, 0x53, 0x76, 0x37, 0xf3, 0xec, 0x5c, 0xaa, 0x6a, 0x4d, 0xd5, 0xa0, 0x0e, 0xb5, 0x93,
- 0x46, 0x8d, 0x7f, 0x49, 0x00, 0xb6, 0x4d, 0x83, 0xda, 0xa6, 0xa6, 0x11, 0x1b, 0x91, 0x81, 0xea,
- 0xa8, 0xa6, 0x01, 0x5f, 0x80, 0x32, 0xdb, 0x4f, 0x0f, 0x53, 0x5c, 0x93, 0xd6, 0xa4, 0xf5, 0x99,
- 0xcd, 0x6f, 0xe5, 0xf0, 0x52, 0x02, 0x78, 0xd9, 0x3a, 0xe9, 0xb3, 0x05, 0x47, 0x66, 0xda, 0xf2,
- 0xe0, 0x86, 0xbc, 0xdf, 0x7d, 0x45, 0x14, 0xba, 0x47, 0x28, 0x6e, 0xc1, 0xd3, 0xb3, 0xd5, 0x89,
- 0xd1, 0xd9, 0x2a, 0x08, 0xd7, 0x50, 0x80, 0x0a, 0xf7, 0x41, 0x91, 0xa3, 0x17, 0x38, 0xfa, 0x46,
- 0x2e, 0xba, 0xd8, 0xb4, 0x8c, 0xf0, 0x2f, 0x1f, 0xbe, 0xa6, 0xc4, 0x60, 0xe1, 0xb5, 0x3e, 0x11,
- 0xd0, 0xc5, 0x6d, 0x4c, 0x31, 0xe2, 0x40, 0xf0, 0x1b, 0x50, 0xb6, 0x45, 0xf8, 0xb5, 0xc9, 0x35,
- 0x69, 0x7d, 0xb2, 0x75, 0x4d, 0x68, 0x95, 0xfd, 0x6d, 0xa1, 0x40, 0xa3, 0x71, 0x2a, 0x81, 0xa5,
- 0xf4, 0xbe, 0x77, 0x55, 0x87, 0xc2, 0x9f, 0xa7, 0xf6, 0x2e, 0x8f, 0xb7, 0x77, 0x66, 0xcd, 0x77,
- 0x1e, 0x38, 0xf6, 0x57, 0x22, 0xfb, 0x3e, 0x00, 0x25, 0x95, 0x12, 0xdd, 0xa9, 0x15, 0xd6, 0x26,
- 0xd7, 0x67, 0x36, 0xbf, 0x96, 0x73, 0x72, 0x5d, 0x4e, 0x47, 0xd7, 0x9a, 0x15, 0xb8, 0xa5, 0x1d,
- 0x86, 0x80, 0x3c, 0xa0, 0xc6, 0x6f, 0x0b, 0x00, 0x6c, 0x13, 0x4b, 0x33, 0x87, 0x3a, 0x31, 0xe8,
- 0x15, 0x5c, 0xdd, 0x0e, 0x28, 0x3a, 0x16, 0x51, 0xc4, 0xd5, 0x7d, 0x99, 0xbb, 0x83, 0x30, 0xa8,
- 0x8e, 0x45, 0x94, 0xf0, 0xd2, 0xd8, 0x17, 0xe2, 0x10, 0xf0, 0x29, 0x98, 0x72, 0x28, 0xa6, 0xae,
- 0xc3, 0xaf, 0x6c, 0x66, 0xf3, 0xfa, 0x38, 0x60, 0xdc, 0xa0, 0x55, 0x15, 0x70, 0x53, 0xde, 0x37,
- 0x12, 0x40, 0x8d, 0xbf, 0x4f, 0x82, 0x85, 0x50, 0xb9, 0x6d, 0x1a, 0x3d, 0x95, 0xb2, 0x94, 0xbe,
- 0x0f, 0x8a, 0x74, 0x68, 0x11, 0x7e, 0x26, 0x95, 0xd6, 0x97, 0x7e, 0x30, 0x87, 0x43, 0x8b, 0x7c,
- 0x3c, 0x5b, 0x5d, 0xce, 0x30, 0x61, 0x22, 0xc4, 0x8d, 0xe0, 0x6e, 0x10, 0x67, 0x81, 0x9b, 0xdf,
- 0x8a, 0x3b, 0xff, 0x78, 0xb6, 0x9a, 0x51, 0x6b, 0xe4, 0x00, 0x29, 0x1e, 0x22, 0xfc, 0x02, 0x4c,
- 0xd9, 0x04, 0x3b, 0xa6, 0x51, 0x2b, 0x72, 0xb4, 0x60, 0x2b, 0x88, 0xaf, 0x22, 0x21, 0x85, 0xd7,
- 0xc1, 0xb4, 0x4e, 0x1c, 0x07, 0xf7, 0x49, 0xad, 0xc4, 0x15, 0xe7, 0x84, 0xe2, 0xf4, 0x9e, 0xb7,
- 0x8c, 0x7c, 0x39, 0x7c, 0x05, 0xaa, 0x1a, 0x76, 0xe8, 0x91, 0xd5, 0xc3, 0x94, 0x1c, 0xaa, 0x3a,
- 0xa9, 0x4d, 0xf1, 0x03, 0xfd, 0x6a, 0xbc, 0xbb, 0x67, 0x16, 0xad, 0x25, 0x81, 0x5e, 0xdd, 0x8d,
- 0x21, 0xa1, 0x04, 0x32, 0x1c, 0x00, 0xc8, 0x56, 0x0e, 0x6d, 0x6c, 0x38, 0xde, 0x41, 0x31, 0x7f,
- 0xd3, 0x97, 0xf6, 0xb7, 0x22, 0xfc, 0xc1, 0xdd, 0x14, 0x1a, 0xca, 0xf0, 0xd0, 0xf8, 0xa3, 0x04,
- 0xaa, 0xe1, 0x35, 0x5d, 0xc1, 0x5b, 0x7d, 0x1c, 0x7f, 0xab, 0xdf, 0x1f, 0x23, 0x39, 0x73, 0xde,
- 0xe8, 0x3f, 0x0b, 0x00, 0x86, 0x4a, 0xc8, 0xd4, 0xb4, 0x2e, 0x56, 0x4e, 0xe0, 0x1a, 0x28, 0x1a,
- 0x58, 0xf7, 0x73, 0x32, 0x78, 0x20, 0x3f, 0xc6, 0x3a, 0x41, 0x5c, 0x02, 0xdf, 0x48, 0x00, 0xba,
- 0xfc, 0xe8, 0x7b, 0x5b, 0x86, 0x61, 0x52, 0xcc, 0x4e, 0xc3, 0x0f, 0xa8, 0x3d, 0x46, 0x40, 0xbe,
- 0x2f, 0xf9, 0x28, 0x85, 0xf2, 0xd0, 0xa0, 0xf6, 0x30, 0xbc, 0x85, 0xb4, 0x02, 0xca, 0x70, 0x0d,
- 0x7f, 0x06, 0x80, 0x2d, 0x30, 0x0f, 0x4d, 0xf1, 0x6c, 0xf3, 0x6b, 0x80, 0xef, 0xbe, 0x6d, 0x1a,
- 0x2f, 0xd5, 0x7e, 0x58, 0x58, 0x50, 0x00, 0x81, 0x22, 0x70, 0x2b, 0x0f, 0xc1, 0x72, 0x4e, 0x9c,
- 0xf0, 0x1a, 0x98, 0x3c, 0x21, 0x43, 0xef, 0xa8, 0x10, 0xfb, 0x09, 0x17, 0x41, 0x69, 0x80, 0x35,
- 0x97, 0x78, 0x6f, 0x12, 0x79, 0x1f, 0xf7, 0x0a, 0x77, 0xa4, 0xc6, 0x1f, 0x4a, 0xd1, 0x4c, 0x61,
- 0xf5, 0x06, 0xae, 0xb3, 0xf6, 0x60, 0x69, 0xaa, 0x82, 0x1d, 0x8e, 0x51, 0x6a, 0x7d, 0xe2, 0xb5,
- 0x06, 0x6f, 0x0d, 0x05, 0x52, 0xf8, 0x0b, 0x50, 0x76, 0x88, 0x46, 0x14, 0x6a, 0xda, 0xa2, 0xc4,
- 0xdd, 0x1c, 0x33, 0xa7, 0x70, 0x97, 0x68, 0x1d, 0x61, 0xea, 0xc1, 0xfb, 0x5f, 0x28, 0x80, 0x84,
- 0x4f, 0x41, 0x99, 0x12, 0xdd, 0xd2, 0x30, 0x25, 0xe2, 0xf4, 0x62, 0x79, 0xc5, 0x6a, 0x07, 0x03,
- 0x3b, 0x30, 0x7b, 0x87, 0x42, 0x8d, 0x57, 0xcf, 0x20, 0x4f, 0xfd, 0x55, 0x14, 0xc0, 0xc0, 0x9f,
- 0x82, 0xb2, 0x43, 0x59, 0x57, 0xef, 0x0f, 0x79, 0x45, 0x39, 0xaf, 0xad, 0x44, 0xeb, 0xa8, 0x67,
- 0x12, 0x42, 0xfb, 0x2b, 0x28, 0x80, 0x83, 0x5b, 0x60, 0x4e, 0x57, 0x0d, 0x44, 0x70, 0x6f, 0xd8,
- 0x21, 0x8a, 0x69, 0xf4, 0x1c, 0x5e, 0x8a, 0x4a, 0xad, 0x65, 0x61, 0x34, 0xb7, 0x17, 0x17, 0xa3,
- 0xa4, 0x3e, 0xdc, 0x05, 0x8b, 0x7e, 0xdb, 0x7d, 0xac, 0x3a, 0xd4, 0xb4, 0x87, 0xbb, 0xaa, 0xae,
- 0x52, 0x5e, 0xa0, 0x4a, 0xad, 0xda, 0xe8, 0x6c, 0x75, 0x11, 0x65, 0xc8, 0x51, 0xa6, 0x15, 0xab,
- 0x9d, 0x16, 0x76, 0x1d, 0xd2, 0xe3, 0x05, 0xa7, 0x1c, 0xd6, 0xce, 0x03, 0xbe, 0x8a, 0x84, 0x14,
- 0xfe, 0x24, 0x96, 0xa6, 0xe5, 0xcb, 0xa5, 0x69, 0x35, 0x3f, 0x45, 0xe1, 0x11, 0x58, 0xb6, 0x6c,
- 0xb3, 0x6f, 0x13, 0xc7, 0xd9, 0x26, 0xb8, 0xa7, 0xa9, 0x06, 0xf1, 0x4f, 0xa6, 0xc2, 0x77, 0xf4,
- 0xd9, 0xe8, 0x6c, 0x75, 0xf9, 0x20, 0x5b, 0x05, 0xe5, 0xd9, 0x36, 0xfe, 0x52, 0x04, 0xd7, 0x92,
- 0x3d, 0x0e, 0x3e, 0x01, 0xd0, 0xec, 0x3a, 0xc4, 0x1e, 0x90, 0xde, 0x23, 0x8f, 0xb8, 0x31, 0x76,
- 0x23, 0x71, 0x76, 0x13, 0xbc, 0xdb, 0xfd, 0x94, 0x06, 0xca, 0xb0, 0xf2, 0xf8, 0x91, 0x78, 0x00,
- 0x05, 0x1e, 0x68, 0x84, 0x1f, 0xa5, 0x1e, 0xc1, 0x16, 0x98, 0x13, 0x6f, 0xdf, 0x17, 0xf2, 0x64,
- 0x8d, 0xdc, 0xfb, 0x51, 0x5c, 0x8c, 0x92, 0xfa, 0xf0, 0x11, 0x98, 0xc7, 0x03, 0xac, 0x6a, 0xb8,
- 0xab, 0x91, 0x00, 0xa4, 0xc8, 0x41, 0x3e, 0x15, 0x20, 0xf3, 0x5b, 0x49, 0x05, 0x94, 0xb6, 0x81,
- 0x7b, 0x60, 0xc1, 0x35, 0xd2, 0x50, 0x5e, 0x1e, 0x7e, 0x26, 0xa0, 0x16, 0x8e, 0xd2, 0x2a, 0x28,
- 0xcb, 0x0e, 0xbe, 0x00, 0x40, 0xf1, 0x1b, 0xb3, 0x53, 0x9b, 0xe2, 0x95, 0xf4, 0x9b, 0x31, 0xde,
- 0x4b, 0xd0, 0xcd, 0xc3, 0x2a, 0x16, 0x2c, 0x39, 0x28, 0x82, 0x09, 0xef, 0x83, 0x59, 0x9b, 0xbd,
- 0x80, 0x20, 0xd4, 0x69, 0x1e, 0xea, 0x77, 0x84, 0xd9, 0x2c, 0x8a, 0x0a, 0x51, 0x5c, 0x17, 0xde,
- 0x03, 0x55, 0xc5, 0xd4, 0x34, 0x9e, 0xf9, 0x6d, 0xd3, 0x35, 0x28, 0x4f, 0xde, 0x52, 0x0b, 0xb2,
- 0xce, 0xdc, 0x8e, 0x49, 0x50, 0x42, 0xb3, 0xf1, 0x67, 0x29, 0xda, 0x66, 0xfc, 0xe7, 0x0c, 0xef,
- 0xc5, 0xa8, 0xcf, 0x17, 0x09, 0xea, 0xb3, 0x94, 0xb6, 0x88, 0x30, 0x1f, 0x15, 0xcc, 0xb2, 0xe4,
- 0x57, 0x8d, 0xbe, 0x77, 0xe1, 0xa2, 0x24, 0x7e, 0x7b, 0xee, 0x53, 0x0a, 0xb4, 0x23, 0x8d, 0x71,
- 0x9e, 0xef, 0x3c, 0x2a, 0x44, 0x71, 0xe4, 0xc6, 0x03, 0x50, 0x8d, 0xbf, 0xc3, 0x18, 0xa7, 0x97,
- 0x2e, 0xe4, 0xf4, 0x1f, 0x24, 0xb0, 0x9c, 0xe3, 0x1d, 0x6a, 0xa0, 0xaa, 0xe3, 0xd7, 0x91, 0x1c,
- 0xb9, 0x90, 0x1b, 0xb3, 0xa9, 0x49, 0xf6, 0xa6, 0x26, 0x79, 0xc7, 0xa0, 0xfb, 0x76, 0x87, 0xda,
- 0xaa, 0xd1, 0xf7, 0xee, 0x61, 0x2f, 0x86, 0x85, 0x12, 0xd8, 0xf0, 0x39, 0x28, 0xeb, 0xf8, 0x75,
- 0xc7, 0xb5, 0xfb, 0x59, 0xe7, 0x35, 0x9e, 0x1f, 0xde, 0x3f, 0xf6, 0x04, 0x0a, 0x0a, 0xf0, 0x1a,
- 0xfb, 0x60, 0x2d, 0xb6, 0x49, 0x56, 0x2a, 0xc8, 0x4b, 0x57, 0xeb, 0x90, 0xf0, 0xc2, 0xbf, 0x06,
- 0x15, 0x0b, 0xdb, 0x54, 0x0d, 0xca, 0x45, 0xa9, 0x35, 0x3b, 0x3a, 0x5b, 0xad, 0x1c, 0xf8, 0x8b,
- 0x28, 0x94, 0x37, 0xfe, 0x2d, 0x81, 0x52, 0x47, 0xc1, 0x1a, 0xb9, 0x82, 0xd1, 0x61, 0x3b, 0x36,
- 0x3a, 0x34, 0x72, 0x93, 0x88, 0xc7, 0x93, 0x3b, 0x35, 0xec, 0x26, 0xa6, 0x86, 0xcf, 0x2f, 0xc0,
- 0x39, 0x7f, 0x60, 0xb8, 0x0b, 0x2a, 0x81, 0xbb, 0x58, 0x95, 0x94, 0x2e, 0xaa, 0x92, 0x8d, 0xdf,
- 0x17, 0xc0, 0x4c, 0xc4, 0xc5, 0xe5, 0xac, 0xd9, 0x71, 0x47, 0x88, 0x06, 0x2b, 0x43, 0x9b, 0xe3,
- 0x6c, 0x44, 0xf6, 0x49, 0x85, 0xc7, 0xdf, 0xc2, 0xee, 0x9d, 0xe6, 0x1a, 0x0f, 0x40, 0x95, 0x62,
- 0xbb, 0x4f, 0xa8, 0x2f, 0xe3, 0x07, 0x56, 0x09, 0x99, 0xfe, 0x61, 0x4c, 0x8a, 0x12, 0xda, 0x2b,
- 0xf7, 0xc1, 0x6c, 0xcc, 0xd9, 0xa5, 0x48, 0xd8, 0x1b, 0x76, 0x38, 0x61, 0x72, 0x5e, 0x41, 0x76,
- 0x3d, 0x89, 0x65, 0xd7, 0x7a, 0xfe, 0x61, 0x46, 0x9e, 0x4c, 0x5e, 0x8e, 0xa1, 0x44, 0x8e, 0x7d,
- 0x35, 0x16, 0xda, 0xf9, 0x99, 0xf6, 0x27, 0x09, 0xcc, 0x45, 0xb4, 0xaf, 0x60, 0x82, 0xd9, 0x89,
- 0x4f, 0x30, 0x9f, 0x8f, 0xb3, 0x89, 0x9c, 0x11, 0xe6, 0xaf, 0xa5, 0x58, 0xf0, 0xff, 0xf7, 0xa4,
- 0xfa, 0x57, 0x60, 0x71, 0x60, 0x6a, 0xae, 0x4e, 0xda, 0x1a, 0x56, 0x75, 0x5f, 0x81, 0x31, 0x98,
- 0xc9, 0xe4, 0x1f, 0x15, 0x01, 0x3c, 0xb1, 0x1d, 0xd5, 0xa1, 0xc4, 0xa0, 0xcf, 0x42, 0xcb, 0xd6,
- 0x77, 0x85, 0x93, 0xc5, 0x67, 0x19, 0x70, 0x28, 0xd3, 0x09, 0xfc, 0x01, 0x98, 0x61, 0x04, 0x4e,
- 0x55, 0x08, 0x9b, 0x05, 0xc5, 0xf4, 0xbf, 0x20, 0x80, 0x66, 0x3a, 0xa1, 0x08, 0x45, 0xf5, 0xe0,
- 0x31, 0x58, 0xb0, 0xcc, 0xde, 0x1e, 0x36, 0x70, 0x9f, 0xb0, 0xb6, 0x77, 0xc0, 0xff, 0xd0, 0xe4,
- 0x4c, 0xbb, 0xd2, 0xba, 0xed, 0x33, 0xa5, 0x83, 0xb4, 0xca, 0x47, 0x46, 0x59, 0xd3, 0xcb, 0x9c,
- 0x07, 0x64, 0x41, 0x42, 0x1b, 0x54, 0x5d, 0xd1, 0x7e, 0xc4, 0xe0, 0xe1, 0xcd, 0xff, 0x9b, 0xe3,
- 0x64, 0xd8, 0x51, 0xcc, 0x32, 0xac, 0x46, 0xf1, 0x75, 0x94, 0xf0, 0x90, 0x3b, 0x48, 0x94, 0xff,
- 0x9b, 0x41, 0xa2, 0xf1, 0x9b, 0x22, 0x98, 0x4f, 0x3d, 0x5d, 0xf8, 0xa3, 0x73, 0x18, 0xf7, 0xd2,
- 0xff, 0x8c, 0x6d, 0xa7, 0x08, 0xe3, 0xe4, 0x25, 0x08, 0xe3, 0x16, 0x98, 0x53, 0x5c, 0xdb, 0x66,
- 0xb3, 0x7e, 0x9c, 0x65, 0x07, 0x54, 0xbd, 0x1d, 0x17, 0xa3, 0xa4, 0x7e, 0x16, 0xdb, 0x2f, 0x5d,
- 0x92, 0xed, 0x47, 0xa3, 0x10, 0x8c, 0xcd, 0x4b, 0xbb, 0x74, 0x14, 0x82, 0xb8, 0x25, 0xf5, 0x59,
- 0xb7, 0xf2, 0x50, 0x03, 0x84, 0xe9, 0x78, 0xb7, 0x3a, 0x8a, 0x49, 0x51, 0x42, 0x3b, 0x83, 0x39,
- 0x57, 0xc6, 0x66, 0xce, 0x7f, 0x93, 0xc0, 0xa7, 0xb9, 0x19, 0x0a, 0xb7, 0x62, 0x04, 0x7a, 0x23,
- 0x41, 0xa0, 0xbf, 0x97, 0x6b, 0x18, 0xe1, 0xd1, 0x76, 0x36, 0x8f, 0xbe, 0x3b, 0x1e, 0x8f, 0xce,
- 0x20, 0x79, 0x17, 0x13, 0xea, 0xd6, 0xc6, 0xe9, 0xfb, 0xfa, 0xc4, 0xdb, 0xf7, 0xf5, 0x89, 0x77,
- 0xef, 0xeb, 0x13, 0xbf, 0x1e, 0xd5, 0xa5, 0xd3, 0x51, 0x5d, 0x7a, 0x3b, 0xaa, 0x4b, 0xef, 0x46,
- 0x75, 0xe9, 0x1f, 0xa3, 0xba, 0xf4, 0xbb, 0x0f, 0xf5, 0x89, 0xe7, 0xd3, 0xc2, 0xe3, 0x7f, 0x02,
- 0x00, 0x00, 0xff, 0xff, 0x3a, 0x2e, 0x29, 0xcd, 0xb9, 0x19, 0x00, 0x00,
+ // 1871 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x58, 0x4f, 0x6f, 0x1b, 0xc7,
+ 0x15, 0xd7, 0x52, 0xa4, 0x44, 0x3d, 0x45, 0x94, 0x3d, 0x52, 0x2d, 0x46, 0x69, 0x29, 0x61, 0x1b,
+ 0x24, 0x72, 0x12, 0x2d, 0x63, 0x25, 0x0d, 0x12, 0xbb, 0x08, 0x2a, 0xca, 0x6e, 0xe2, 0x40, 0xaa,
+ 0x94, 0xa1, 0x94, 0xa2, 0x69, 0x0b, 0x64, 0xb8, 0x1c, 0xd3, 0x1b, 0xed, 0x3f, 0xec, 0x0e, 0x59,
+ 0x13, 0xbd, 0xf4, 0x03, 0x14, 0x48, 0xcf, 0xfd, 0x14, 0x3d, 0x16, 0xed, 0xad, 0x27, 0x5f, 0x0a,
+ 0x04, 0xbd, 0x34, 0x27, 0xa1, 0xa6, 0xaf, 0x6d, 0x6f, 0xbd, 0x18, 0x28, 0x50, 0xcc, 0xec, 0xec,
+ 0xff, 0x5d, 0x89, 0x2a, 0x20, 0x1d, 0x72, 0xe3, 0xce, 0x7b, 0xef, 0xf7, 0xde, 0xcc, 0xbc, 0xf7,
+ 0xe6, 0xfd, 0x08, 0x3f, 0x3a, 0x7d, 0xdf, 0xd7, 0x0c, 0xa7, 0x7d, 0x3a, 0xec, 0x51, 0xcf, 0xa6,
+ 0x8c, 0xfa, 0xed, 0x11, 0xb5, 0xfb, 0x8e, 0xd7, 0x96, 0x02, 0xe2, 0x1a, 0x6d, 0xe2, 0xba, 0x7e,
+ 0x7b, 0x74, 0xa7, 0x47, 0x19, 0xb9, 0xd3, 0x1e, 0x50, 0x9b, 0x7a, 0x84, 0xd1, 0xbe, 0xe6, 0x7a,
+ 0x0e, 0x73, 0xd0, 0x5a, 0xa0, 0xa8, 0x11, 0xd7, 0xd0, 0xb8, 0xa2, 0x26, 0x15, 0xd7, 0xb7, 0x07,
+ 0x06, 0x7b, 0x3c, 0xec, 0x69, 0xba, 0x63, 0xb5, 0x07, 0xce, 0xc0, 0x69, 0x0b, 0xfd, 0xde, 0xf0,
+ 0x91, 0xf8, 0x12, 0x1f, 0xe2, 0x57, 0x80, 0xb3, 0xae, 0x26, 0x1c, 0xea, 0x8e, 0x47, 0xdb, 0xa3,
+ 0x9c, 0xaf, 0xf5, 0xdb, 0x09, 0x1d, 0xd7, 0x31, 0x0d, 0x7d, 0x5c, 0x16, 0xd6, 0xfa, 0xbb, 0xb1,
+ 0xaa, 0x45, 0xf4, 0xc7, 0x86, 0x4d, 0xbd, 0x71, 0xdb, 0x3d, 0x1d, 0xf0, 0x05, 0xbf, 0x6d, 0x51,
+ 0x46, 0x8a, 0x1c, 0xb4, 0xcb, 0xac, 0xbc, 0xa1, 0xcd, 0x0c, 0x8b, 0xe6, 0x0c, 0xde, 0xbb, 0xc8,
+ 0xc0, 0xd7, 0x1f, 0x53, 0x8b, 0xe4, 0xec, 0xde, 0x29, 0xb3, 0x1b, 0x32, 0xc3, 0x6c, 0x1b, 0x36,
+ 0xf3, 0x99, 0x97, 0x35, 0x52, 0xff, 0xa3, 0x00, 0xda, 0x73, 0x6c, 0xe6, 0x39, 0xa6, 0x49, 0x3d,
+ 0x4c, 0x47, 0x86, 0x6f, 0x38, 0x36, 0xfa, 0x02, 0xea, 0x7c, 0x3f, 0x7d, 0xc2, 0x48, 0x53, 0xd9,
+ 0x54, 0xb6, 0x16, 0x77, 0xde, 0xd6, 0xe2, 0x4b, 0x89, 0xe0, 0x35, 0xf7, 0x74, 0xc0, 0x17, 0x7c,
+ 0x8d, 0x6b, 0x6b, 0xa3, 0x3b, 0xda, 0x61, 0xef, 0x4b, 0xaa, 0xb3, 0x03, 0xca, 0x48, 0x07, 0x3d,
+ 0x3d, 0xdb, 0x98, 0x99, 0x9c, 0x6d, 0x40, 0xbc, 0x86, 0x23, 0x54, 0x74, 0x08, 0x55, 0x81, 0x5e,
+ 0x11, 0xe8, 0xdb, 0xa5, 0xe8, 0x72, 0xd3, 0x1a, 0x26, 0xbf, 0x7a, 0xf0, 0x84, 0x51, 0x9b, 0x87,
+ 0xd7, 0x79, 0x49, 0x42, 0x57, 0xef, 0x13, 0x46, 0xb0, 0x00, 0x42, 0x6f, 0x41, 0xdd, 0x93, 0xe1,
+ 0x37, 0x67, 0x37, 0x95, 0xad, 0xd9, 0xce, 0x0d, 0xa9, 0x55, 0x0f, 0xb7, 0x85, 0x23, 0x0d, 0xf5,
+ 0xa9, 0x02, 0xb7, 0xf2, 0xfb, 0xde, 0x37, 0x7c, 0x86, 0x7e, 0x91, 0xdb, 0xbb, 0x36, 0xdd, 0xde,
+ 0xb9, 0xb5, 0xd8, 0x79, 0xe4, 0x38, 0x5c, 0x49, 0xec, 0xfb, 0x08, 0x6a, 0x06, 0xa3, 0x96, 0xdf,
+ 0xac, 0x6c, 0xce, 0x6e, 0x2d, 0xee, 0xbc, 0xa9, 0x95, 0xe4, 0xba, 0x96, 0x8f, 0xae, 0xb3, 0x24,
+ 0x71, 0x6b, 0x0f, 0x39, 0x02, 0x0e, 0x80, 0xd4, 0xdf, 0x56, 0x00, 0xee, 0x53, 0xd7, 0x74, 0xc6,
+ 0x16, 0xb5, 0xd9, 0x35, 0x5c, 0xdd, 0x43, 0xa8, 0xfa, 0x2e, 0xd5, 0xe5, 0xd5, 0xbd, 0x5e, 0xba,
+ 0x83, 0x38, 0xa8, 0xae, 0x4b, 0xf5, 0xf8, 0xd2, 0xf8, 0x17, 0x16, 0x10, 0xe8, 0x53, 0x98, 0xf3,
+ 0x19, 0x61, 0x43, 0x5f, 0x5c, 0xd9, 0xe2, 0xce, 0xed, 0x69, 0xc0, 0x84, 0x41, 0xa7, 0x21, 0xe1,
+ 0xe6, 0x82, 0x6f, 0x2c, 0x81, 0xd4, 0xbf, 0xcf, 0xc2, 0x4a, 0xac, 0xbc, 0xe7, 0xd8, 0x7d, 0x83,
+ 0xf1, 0x94, 0xbe, 0x07, 0x55, 0x36, 0x76, 0xa9, 0x38, 0x93, 0x85, 0xce, 0xeb, 0x61, 0x30, 0xc7,
+ 0x63, 0x97, 0xbe, 0x38, 0xdb, 0x58, 0x2b, 0x30, 0xe1, 0x22, 0x2c, 0x8c, 0xd0, 0x7e, 0x14, 0x67,
+ 0x45, 0x98, 0xbf, 0x9b, 0x76, 0xfe, 0xe2, 0x6c, 0xa3, 0xa0, 0xd7, 0x68, 0x11, 0x52, 0x3a, 0x44,
+ 0xf4, 0x1a, 0xcc, 0x79, 0x94, 0xf8, 0x8e, 0xdd, 0xac, 0x0a, 0xb4, 0x68, 0x2b, 0x58, 0xac, 0x62,
+ 0x29, 0x45, 0xb7, 0x61, 0xde, 0xa2, 0xbe, 0x4f, 0x06, 0xb4, 0x59, 0x13, 0x8a, 0xcb, 0x52, 0x71,
+ 0xfe, 0x20, 0x58, 0xc6, 0xa1, 0x1c, 0x7d, 0x09, 0x0d, 0x93, 0xf8, 0xec, 0xc4, 0xed, 0x13, 0x46,
+ 0x8f, 0x0d, 0x8b, 0x36, 0xe7, 0xc4, 0x81, 0xbe, 0x31, 0xdd, 0xdd, 0x73, 0x8b, 0xce, 0x2d, 0x89,
+ 0xde, 0xd8, 0x4f, 0x21, 0xe1, 0x0c, 0x32, 0x1a, 0x01, 0xe2, 0x2b, 0xc7, 0x1e, 0xb1, 0xfd, 0xe0,
+ 0xa0, 0xb8, 0xbf, 0xf9, 0x4b, 0xfb, 0x5b, 0x97, 0xfe, 0xd0, 0x7e, 0x0e, 0x0d, 0x17, 0x78, 0x50,
+ 0xff, 0xa8, 0x40, 0x23, 0xbe, 0xa6, 0x6b, 0xa8, 0xd5, 0x8f, 0xd3, 0xb5, 0xfa, 0xfd, 0x29, 0x92,
+ 0xb3, 0xa4, 0x46, 0xff, 0x59, 0x01, 0x14, 0x2b, 0x61, 0xc7, 0x34, 0x7b, 0x44, 0x3f, 0x45, 0x9b,
+ 0x50, 0xb5, 0x89, 0x15, 0xe6, 0x64, 0x54, 0x20, 0x3f, 0x21, 0x16, 0xc5, 0x42, 0x82, 0xbe, 0x52,
+ 0x00, 0x0d, 0xc5, 0xd1, 0xf7, 0x77, 0x6d, 0xdb, 0x61, 0x84, 0x9f, 0x46, 0x18, 0xd0, 0xde, 0x14,
+ 0x01, 0x85, 0xbe, 0xb4, 0x93, 0x1c, 0xca, 0x03, 0x9b, 0x79, 0xe3, 0xf8, 0x16, 0xf2, 0x0a, 0xb8,
+ 0xc0, 0x35, 0xfa, 0x39, 0x80, 0x27, 0x31, 0x8f, 0x1d, 0x59, 0xb6, 0xe5, 0x3d, 0x20, 0x74, 0xbf,
+ 0xe7, 0xd8, 0x8f, 0x8c, 0x41, 0xdc, 0x58, 0x70, 0x04, 0x81, 0x13, 0x70, 0xeb, 0x0f, 0x60, 0xad,
+ 0x24, 0x4e, 0x74, 0x03, 0x66, 0x4f, 0xe9, 0x38, 0x38, 0x2a, 0xcc, 0x7f, 0xa2, 0x55, 0xa8, 0x8d,
+ 0x88, 0x39, 0xa4, 0x41, 0x4d, 0xe2, 0xe0, 0xe3, 0x6e, 0xe5, 0x7d, 0x45, 0xfd, 0x43, 0x2d, 0x99,
+ 0x29, 0xbc, 0xdf, 0xa0, 0x2d, 0xfe, 0x3c, 0xb8, 0xa6, 0xa1, 0x13, 0x5f, 0x60, 0xd4, 0x3a, 0x2f,
+ 0x05, 0x4f, 0x43, 0xb0, 0x86, 0x23, 0x29, 0xfa, 0x25, 0xd4, 0x7d, 0x6a, 0x52, 0x9d, 0x39, 0x9e,
+ 0x6c, 0x71, 0xef, 0x4c, 0x99, 0x53, 0xa4, 0x47, 0xcd, 0xae, 0x34, 0x0d, 0xe0, 0xc3, 0x2f, 0x1c,
+ 0x41, 0xa2, 0x4f, 0xa1, 0xce, 0xa8, 0xe5, 0x9a, 0x84, 0x51, 0x79, 0x7a, 0xa9, 0xbc, 0xe2, 0xbd,
+ 0x83, 0x83, 0x1d, 0x39, 0xfd, 0x63, 0xa9, 0x26, 0xba, 0x67, 0x94, 0xa7, 0xe1, 0x2a, 0x8e, 0x60,
+ 0xd0, 0xcf, 0xa0, 0xee, 0x33, 0xfe, 0xaa, 0x0f, 0xc6, 0xa2, 0xa3, 0x9c, 0xf7, 0xac, 0x24, 0xfb,
+ 0x68, 0x60, 0x12, 0x43, 0x87, 0x2b, 0x38, 0x82, 0x43, 0xbb, 0xb0, 0x6c, 0x19, 0x36, 0xa6, 0xa4,
+ 0x3f, 0xee, 0x52, 0xdd, 0xb1, 0xfb, 0xbe, 0x68, 0x45, 0xb5, 0xce, 0x9a, 0x34, 0x5a, 0x3e, 0x48,
+ 0x8b, 0x71, 0x56, 0x1f, 0xed, 0xc3, 0x6a, 0xf8, 0xec, 0x7e, 0x6c, 0xf8, 0xcc, 0xf1, 0xc6, 0xfb,
+ 0x86, 0x65, 0x30, 0xd1, 0xa0, 0x6a, 0x9d, 0xe6, 0xe4, 0x6c, 0x63, 0x15, 0x17, 0xc8, 0x71, 0xa1,
+ 0x15, 0xef, 0x9d, 0x2e, 0x19, 0xfa, 0xb4, 0x2f, 0x1a, 0x4e, 0x3d, 0xee, 0x9d, 0x47, 0x62, 0x15,
+ 0x4b, 0x29, 0xfa, 0x69, 0x2a, 0x4d, 0xeb, 0x97, 0x4b, 0xd3, 0x46, 0x79, 0x8a, 0xa2, 0x13, 0x58,
+ 0x73, 0x3d, 0x67, 0xe0, 0x51, 0xdf, 0xbf, 0x4f, 0x49, 0xdf, 0x34, 0x6c, 0x1a, 0x9e, 0xcc, 0x82,
+ 0xd8, 0xd1, 0x2b, 0x93, 0xb3, 0x8d, 0xb5, 0xa3, 0x62, 0x15, 0x5c, 0x66, 0xab, 0xfe, 0xa5, 0x0a,
+ 0x37, 0xb2, 0x6f, 0x1c, 0xfa, 0x04, 0x90, 0xd3, 0xf3, 0xa9, 0x37, 0xa2, 0xfd, 0x8f, 0x82, 0xc1,
+ 0x8d, 0x4f, 0x37, 0x8a, 0x98, 0x6e, 0xa2, 0xba, 0x3d, 0xcc, 0x69, 0xe0, 0x02, 0xab, 0x60, 0x3e,
+ 0x92, 0x05, 0x50, 0x11, 0x81, 0x26, 0xe6, 0xa3, 0x5c, 0x11, 0xec, 0xc2, 0xb2, 0xac, 0xfd, 0x50,
+ 0x28, 0x92, 0x35, 0x71, 0xef, 0x27, 0x69, 0x31, 0xce, 0xea, 0xa3, 0x8f, 0xe0, 0x26, 0x19, 0x11,
+ 0xc3, 0x24, 0x3d, 0x93, 0x46, 0x20, 0x55, 0x01, 0xf2, 0xb2, 0x04, 0xb9, 0xb9, 0x9b, 0x55, 0xc0,
+ 0x79, 0x1b, 0x74, 0x00, 0x2b, 0x43, 0x3b, 0x0f, 0x15, 0xe4, 0xe1, 0x2b, 0x12, 0x6a, 0xe5, 0x24,
+ 0xaf, 0x82, 0x8b, 0xec, 0xd0, 0x17, 0x00, 0x7a, 0xf8, 0x30, 0xfb, 0xcd, 0x39, 0xd1, 0x49, 0xdf,
+ 0x9a, 0xa2, 0x5e, 0xa2, 0xd7, 0x3c, 0xee, 0x62, 0xd1, 0x92, 0x8f, 0x13, 0x98, 0xe8, 0x1e, 0x2c,
+ 0x79, 0xbc, 0x02, 0xa2, 0x50, 0xe7, 0x45, 0xa8, 0xdf, 0x91, 0x66, 0x4b, 0x38, 0x29, 0xc4, 0x69,
+ 0x5d, 0x74, 0x17, 0x1a, 0xba, 0x63, 0x9a, 0x22, 0xf3, 0xf7, 0x9c, 0xa1, 0xcd, 0x44, 0xf2, 0xd6,
+ 0x3a, 0x88, 0xbf, 0xcc, 0x7b, 0x29, 0x09, 0xce, 0x68, 0xaa, 0x7f, 0x56, 0x92, 0xcf, 0x4c, 0x58,
+ 0xce, 0xe8, 0x6e, 0x6a, 0xf4, 0x79, 0x2d, 0x33, 0xfa, 0xdc, 0xca, 0x5b, 0x24, 0x26, 0x1f, 0x03,
+ 0x96, 0x78, 0xf2, 0x1b, 0xf6, 0x20, 0xb8, 0x70, 0xd9, 0x12, 0xdf, 0x3e, 0xb7, 0x94, 0x22, 0xed,
+ 0xc4, 0xc3, 0x78, 0x53, 0xec, 0x3c, 0x29, 0xc4, 0x69, 0x64, 0xf5, 0x43, 0x68, 0xa4, 0xeb, 0x30,
+ 0x35, 0xd3, 0x2b, 0x17, 0xce, 0xf4, 0xcf, 0x15, 0x58, 0x2b, 0xf1, 0x8e, 0x4c, 0x68, 0x58, 0xe4,
+ 0x49, 0x22, 0x47, 0x2e, 0x9c, 0x8d, 0x39, 0x6b, 0xd2, 0x02, 0xd6, 0xa4, 0x3d, 0xb4, 0xd9, 0xa1,
+ 0xd7, 0x65, 0x9e, 0x61, 0x0f, 0x82, 0x7b, 0x38, 0x48, 0x61, 0xe1, 0x0c, 0x36, 0xfa, 0x1c, 0xea,
+ 0x16, 0x79, 0xd2, 0x1d, 0x7a, 0x83, 0xa2, 0xf3, 0x9a, 0xce, 0x8f, 0x78, 0x3f, 0x0e, 0x24, 0x0a,
+ 0x8e, 0xf0, 0xd4, 0x43, 0xd8, 0x4c, 0x6d, 0x92, 0xb7, 0x0a, 0xfa, 0x68, 0x68, 0x76, 0x69, 0x7c,
+ 0xe1, 0x6f, 0xc2, 0x82, 0x4b, 0x3c, 0x66, 0x44, 0xed, 0xa2, 0xd6, 0x59, 0x9a, 0x9c, 0x6d, 0x2c,
+ 0x1c, 0x85, 0x8b, 0x38, 0x96, 0xab, 0xff, 0x55, 0xa0, 0xd6, 0xd5, 0x89, 0x49, 0xaf, 0x81, 0x3a,
+ 0xdc, 0x4f, 0x51, 0x07, 0xb5, 0x34, 0x89, 0x44, 0x3c, 0xa5, 0xac, 0x61, 0x3f, 0xc3, 0x1a, 0x5e,
+ 0xbd, 0x00, 0xe7, 0x7c, 0xc2, 0xf0, 0x01, 0x2c, 0x44, 0xee, 0x52, 0x5d, 0x52, 0xb9, 0xa8, 0x4b,
+ 0xaa, 0xbf, 0xaf, 0xc0, 0x62, 0xc2, 0xc5, 0xe5, 0xac, 0xf9, 0x71, 0x27, 0x06, 0x0d, 0xde, 0x86,
+ 0x76, 0xa6, 0xd9, 0x88, 0x16, 0x0e, 0x15, 0xc1, 0xfc, 0x16, 0xbf, 0xde, 0xf9, 0x59, 0xe3, 0x43,
+ 0x68, 0x30, 0xe2, 0x0d, 0x28, 0x0b, 0x65, 0xe2, 0xc0, 0x16, 0xe2, 0x49, 0xff, 0x38, 0x25, 0xc5,
+ 0x19, 0xed, 0xf5, 0x7b, 0xb0, 0x94, 0x72, 0x76, 0xa9, 0x21, 0xec, 0x2b, 0x7e, 0x38, 0x71, 0x72,
+ 0x5e, 0x43, 0x76, 0x7d, 0x92, 0xca, 0xae, 0xad, 0xf2, 0xc3, 0x4c, 0x94, 0x4c, 0x59, 0x8e, 0xe1,
+ 0x4c, 0x8e, 0xbd, 0x31, 0x15, 0xda, 0xf9, 0x99, 0xf6, 0xaf, 0x0a, 0xac, 0x26, 0xb4, 0x63, 0x6e,
+ 0xfa, 0xc3, 0x54, 0x83, 0xde, 0xca, 0x34, 0xe8, 0x66, 0x91, 0xcd, 0x95, 0x91, 0xd3, 0x62, 0x76,
+ 0x37, 0x7b, 0xd5, 0xec, 0xee, 0x0a, 0x48, 0xb1, 0xfa, 0x27, 0x05, 0x96, 0x13, 0x67, 0x77, 0x0d,
+ 0x8c, 0xf1, 0x61, 0x9a, 0x31, 0xbe, 0x3a, 0x4d, 0xd2, 0x94, 0x50, 0xc6, 0xbf, 0xd6, 0x52, 0xc1,
+ 0x7f, 0xeb, 0x49, 0xcc, 0xaf, 0x61, 0x75, 0xe4, 0x98, 0x43, 0x8b, 0xee, 0x99, 0xc4, 0xb0, 0x42,
+ 0x05, 0x3e, 0x31, 0xce, 0x66, 0xff, 0x18, 0x8a, 0xe0, 0xa9, 0xe7, 0x1b, 0x3e, 0xa3, 0x36, 0xfb,
+ 0x2c, 0xb6, 0xec, 0x7c, 0x57, 0x3a, 0x59, 0xfd, 0xac, 0x00, 0x0e, 0x17, 0x3a, 0x41, 0x3f, 0x80,
+ 0x45, 0x3e, 0x30, 0x1b, 0x3a, 0xe5, 0xdc, 0x5b, 0x26, 0xd6, 0x8a, 0x04, 0x5a, 0xec, 0xc6, 0x22,
+ 0x9c, 0xd4, 0x43, 0x8f, 0x61, 0xc5, 0x75, 0xfa, 0x07, 0xc4, 0x26, 0x03, 0xca, 0xc7, 0x8c, 0x23,
+ 0xf1, 0x07, 0xb2, 0x60, 0x36, 0x0b, 0x9d, 0xf7, 0xc2, 0xc9, 0xf4, 0x28, 0xaf, 0xf2, 0x82, 0x53,
+ 0x84, 0xfc, 0xb2, 0x28, 0xea, 0x22, 0x48, 0xe4, 0x41, 0x63, 0x28, 0x9f, 0x7b, 0x49, 0xf4, 0x82,
+ 0xff, 0x5b, 0x76, 0xa6, 0xc9, 0xb0, 0x93, 0x94, 0x65, 0xdc, 0xfd, 0xd3, 0xeb, 0x38, 0xe3, 0xa1,
+ 0x94, 0xb8, 0xd5, 0xff, 0x1f, 0xe2, 0xa6, 0xfe, 0xbb, 0x0a, 0x37, 0x73, 0xad, 0x12, 0xfd, 0xf8,
+ 0x1c, 0x86, 0x73, 0xeb, 0xca, 0xd8, 0x4d, 0x6e, 0x40, 0x9f, 0xbd, 0xc4, 0x80, 0xbe, 0x0b, 0xcb,
+ 0xfa, 0xd0, 0xf3, 0xa8, 0xcd, 0x32, 0xac, 0x26, 0xa2, 0x46, 0x7b, 0x69, 0x31, 0xce, 0xea, 0x17,
+ 0xb1, 0xab, 0xda, 0x25, 0xd9, 0x55, 0x32, 0x0a, 0x39, 0x21, 0x07, 0x69, 0x97, 0x8f, 0x42, 0x0e,
+ 0xca, 0x59, 0x7d, 0x3e, 0x1d, 0x04, 0xa8, 0x11, 0xc2, 0x7c, 0x7a, 0x3a, 0x38, 0x49, 0x49, 0x71,
+ 0x46, 0xbb, 0x80, 0xa9, 0x2c, 0x4c, 0xcb, 0x54, 0x10, 0x49, 0x91, 0x30, 0x10, 0x35, 0xbe, 0x3d,
+ 0x4d, 0x2e, 0x4f, 0xcd, 0xc2, 0xd4, 0xbf, 0x29, 0xf0, 0x72, 0x69, 0x11, 0xa0, 0xdd, 0xd4, 0x93,
+ 0xbb, 0x9d, 0x79, 0x72, 0xbf, 0x57, 0x6a, 0x98, 0x78, 0x77, 0xbd, 0x62, 0x6a, 0xf4, 0xc1, 0x74,
+ 0xd4, 0xa8, 0x60, 0x6e, 0xbf, 0x98, 0x23, 0x75, 0xb6, 0x9f, 0x3e, 0x6b, 0xcd, 0x7c, 0xfd, 0xac,
+ 0x35, 0xf3, 0xcd, 0xb3, 0xd6, 0xcc, 0x6f, 0x26, 0x2d, 0xe5, 0xe9, 0xa4, 0xa5, 0x7c, 0x3d, 0x69,
+ 0x29, 0xdf, 0x4c, 0x5a, 0xca, 0x3f, 0x26, 0x2d, 0xe5, 0x77, 0xcf, 0x5b, 0x33, 0x9f, 0xcf, 0x4b,
+ 0x8f, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x9d, 0x5d, 0x9e, 0x04, 0x8c, 0x1b, 0x00, 0x00,
}
diff --git a/staging/src/k8s.io/api/apps/v1beta1/generated.proto b/staging/src/k8s.io/api/apps/v1beta1/generated.proto
index dcb034dfbd..68397a026b 100644
--- a/staging/src/k8s.io/api/apps/v1beta1/generated.proto
+++ b/staging/src/k8s.io/api/apps/v1beta1/generated.proto
@@ -338,6 +338,27 @@ message StatefulSet {
optional StatefulSetStatus status = 3;
}
+// StatefulSetCondition describes the state of a statefulset at a certain point.
+message StatefulSetCondition {
+ // Type of statefulset condition.
+ optional string type = 1;
+
+ // Status of the condition, one of True, False, Unknown.
+ optional string status = 2;
+
+ // Last time the condition transitioned from one status to another.
+ // +optional
+ optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
+
+ // The reason for the condition's last transition.
+ // +optional
+ optional string reason = 4;
+
+ // A human readable message indicating details about the transition.
+ // +optional
+ optional string message = 5;
+}
+
// StatefulSetList is a collection of StatefulSets.
message StatefulSetList {
// +optional
@@ -442,6 +463,12 @@ message StatefulSetStatus {
// newest ControllerRevision.
// +optional
optional int32 collisionCount = 9;
+
+ // Represents the latest available observations of a statefulset's current state.
+ // +optional
+ // +patchMergeKey=type
+ // +patchStrategy=merge
+ repeated StatefulSetCondition conditions = 10;
}
// StatefulSetUpdateStrategy indicates the strategy that the StatefulSet
diff --git a/staging/src/k8s.io/api/apps/v1beta1/types.go b/staging/src/k8s.io/api/apps/v1beta1/types.go
index 63d1c725d8..ca30191d47 100644
--- a/staging/src/k8s.io/api/apps/v1beta1/types.go
+++ b/staging/src/k8s.io/api/apps/v1beta1/types.go
@@ -247,6 +247,31 @@ type StatefulSetStatus struct {
// newest ControllerRevision.
// +optional
CollisionCount *int32 `json:"collisionCount,omitempty" protobuf:"varint,9,opt,name=collisionCount"`
+
+ // Represents the latest available observations of a statefulset's current state.
+ // +optional
+ // +patchMergeKey=type
+ // +patchStrategy=merge
+ Conditions []StatefulSetCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,10,rep,name=conditions"`
+}
+
+type StatefulSetConditionType string
+
+// StatefulSetCondition describes the state of a statefulset at a certain point.
+type StatefulSetCondition struct {
+ // Type of statefulset condition.
+ Type StatefulSetConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=StatefulSetConditionType"`
+ // Status of the condition, one of True, False, Unknown.
+ Status v1.ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=k8s.io/api/core/v1.ConditionStatus"`
+ // Last time the condition transitioned from one status to another.
+ // +optional
+ LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,3,opt,name=lastTransitionTime"`
+ // The reason for the condition's last transition.
+ // +optional
+ Reason string `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"`
+ // A human readable message indicating details about the transition.
+ // +optional
+ Message string `json:"message,omitempty" protobuf:"bytes,5,opt,name=message"`
}
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
diff --git a/staging/src/k8s.io/api/apps/v1beta1/types_swagger_doc_generated.go b/staging/src/k8s.io/api/apps/v1beta1/types_swagger_doc_generated.go
index 72d5e69ce0..d12baf39f5 100644
--- a/staging/src/k8s.io/api/apps/v1beta1/types_swagger_doc_generated.go
+++ b/staging/src/k8s.io/api/apps/v1beta1/types_swagger_doc_generated.go
@@ -206,6 +206,19 @@ func (StatefulSet) SwaggerDoc() map[string]string {
return map_StatefulSet
}
+var map_StatefulSetCondition = map[string]string{
+ "": "StatefulSetCondition describes the state of a statefulset at a certain point.",
+ "type": "Type of statefulset condition.",
+ "status": "Status of the condition, one of True, False, Unknown.",
+ "lastTransitionTime": "Last time the condition transitioned from one status to another.",
+ "reason": "The reason for the condition's last transition.",
+ "message": "A human readable message indicating details about the transition.",
+}
+
+func (StatefulSetCondition) SwaggerDoc() map[string]string {
+ return map_StatefulSetCondition
+}
+
var map_StatefulSetList = map[string]string{
"": "StatefulSetList is a collection of StatefulSets.",
}
@@ -240,6 +253,7 @@ var map_StatefulSetStatus = map[string]string{
"currentRevision": "currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas).",
"updateRevision": "updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas)",
"collisionCount": "collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.",
+ "conditions": "Represents the latest available observations of a statefulset's current state.",
}
func (StatefulSetStatus) SwaggerDoc() map[string]string {
diff --git a/staging/src/k8s.io/api/apps/v1beta1/zz_generated.deepcopy.go b/staging/src/k8s.io/api/apps/v1beta1/zz_generated.deepcopy.go
index 2f046b0205..cad744ce0b 100644
--- a/staging/src/k8s.io/api/apps/v1beta1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/api/apps/v1beta1/zz_generated.deepcopy.go
@@ -23,105 +23,10 @@ package v1beta1
import (
core_v1 "k8s.io/api/core/v1"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
intstr "k8s.io/apimachinery/pkg/util/intstr"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ControllerRevision).DeepCopyInto(out.(*ControllerRevision))
- return nil
- }, InType: reflect.TypeOf(&ControllerRevision{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ControllerRevisionList).DeepCopyInto(out.(*ControllerRevisionList))
- return nil
- }, InType: reflect.TypeOf(&ControllerRevisionList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Deployment).DeepCopyInto(out.(*Deployment))
- return nil
- }, InType: reflect.TypeOf(&Deployment{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DeploymentCondition).DeepCopyInto(out.(*DeploymentCondition))
- return nil
- }, InType: reflect.TypeOf(&DeploymentCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DeploymentList).DeepCopyInto(out.(*DeploymentList))
- return nil
- }, InType: reflect.TypeOf(&DeploymentList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DeploymentRollback).DeepCopyInto(out.(*DeploymentRollback))
- return nil
- }, InType: reflect.TypeOf(&DeploymentRollback{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DeploymentSpec).DeepCopyInto(out.(*DeploymentSpec))
- return nil
- }, InType: reflect.TypeOf(&DeploymentSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DeploymentStatus).DeepCopyInto(out.(*DeploymentStatus))
- return nil
- }, InType: reflect.TypeOf(&DeploymentStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DeploymentStrategy).DeepCopyInto(out.(*DeploymentStrategy))
- return nil
- }, InType: reflect.TypeOf(&DeploymentStrategy{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RollbackConfig).DeepCopyInto(out.(*RollbackConfig))
- return nil
- }, InType: reflect.TypeOf(&RollbackConfig{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RollingUpdateDeployment).DeepCopyInto(out.(*RollingUpdateDeployment))
- return nil
- }, InType: reflect.TypeOf(&RollingUpdateDeployment{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RollingUpdateStatefulSetStrategy).DeepCopyInto(out.(*RollingUpdateStatefulSetStrategy))
- return nil
- }, InType: reflect.TypeOf(&RollingUpdateStatefulSetStrategy{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Scale).DeepCopyInto(out.(*Scale))
- return nil
- }, InType: reflect.TypeOf(&Scale{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ScaleSpec).DeepCopyInto(out.(*ScaleSpec))
- return nil
- }, InType: reflect.TypeOf(&ScaleSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ScaleStatus).DeepCopyInto(out.(*ScaleStatus))
- return nil
- }, InType: reflect.TypeOf(&ScaleStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StatefulSet).DeepCopyInto(out.(*StatefulSet))
- return nil
- }, InType: reflect.TypeOf(&StatefulSet{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StatefulSetList).DeepCopyInto(out.(*StatefulSetList))
- return nil
- }, InType: reflect.TypeOf(&StatefulSetList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StatefulSetSpec).DeepCopyInto(out.(*StatefulSetSpec))
- return nil
- }, InType: reflect.TypeOf(&StatefulSetSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StatefulSetStatus).DeepCopyInto(out.(*StatefulSetStatus))
- return nil
- }, InType: reflect.TypeOf(&StatefulSetStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StatefulSetUpdateStrategy).DeepCopyInto(out.(*StatefulSetUpdateStrategy))
- return nil
- }, InType: reflect.TypeOf(&StatefulSetUpdateStrategy{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ControllerRevision) DeepCopyInto(out *ControllerRevision) {
*out = *in
@@ -591,6 +496,23 @@ func (in *StatefulSet) DeepCopyObject() runtime.Object {
}
}
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *StatefulSetCondition) DeepCopyInto(out *StatefulSetCondition) {
+ *out = *in
+ in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime)
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StatefulSetCondition.
+func (in *StatefulSetCondition) DeepCopy() *StatefulSetCondition {
+ if in == nil {
+ return nil
+ }
+ out := new(StatefulSetCondition)
+ in.DeepCopyInto(out)
+ return out
+}
+
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *StatefulSetList) DeepCopyInto(out *StatefulSetList) {
*out = *in
@@ -698,6 +620,13 @@ func (in *StatefulSetStatus) DeepCopyInto(out *StatefulSetStatus) {
**out = **in
}
}
+ if in.Conditions != nil {
+ in, out := &in.Conditions, &out.Conditions
+ *out = make([]StatefulSetCondition, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
return
}
diff --git a/staging/src/k8s.io/api/apps/v1beta2/BUILD b/staging/src/k8s.io/api/apps/v1beta2/BUILD
index bd5dbadf85..c13a6ff578 100644
--- a/staging/src/k8s.io/api/apps/v1beta2/BUILD
+++ b/staging/src/k8s.io/api/apps/v1beta2/BUILD
@@ -21,7 +21,6 @@ go_library(
"//vendor/github.com/gogo/protobuf/sortkeys:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
diff --git a/staging/src/k8s.io/api/apps/v1beta2/doc.go b/staging/src/k8s.io/api/apps/v1beta2/doc.go
index dafca1201c..e93e164e10 100644
--- a/staging/src/k8s.io/api/apps/v1beta2/doc.go
+++ b/staging/src/k8s.io/api/apps/v1beta2/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:openapi-gen=true
package v1beta2 // import "k8s.io/api/apps/v1beta2"
diff --git a/staging/src/k8s.io/api/apps/v1beta2/generated.pb.go b/staging/src/k8s.io/api/apps/v1beta2/generated.pb.go
index f9d07e315c..2572ab0813 100644
--- a/staging/src/k8s.io/api/apps/v1beta2/generated.pb.go
+++ b/staging/src/k8s.io/api/apps/v1beta2/generated.pb.go
@@ -51,6 +51,7 @@ limitations under the License.
ScaleSpec
ScaleStatus
StatefulSet
+ StatefulSetCondition
StatefulSetList
StatefulSetSpec
StatefulSetStatus
@@ -194,22 +195,26 @@ func (m *StatefulSet) Reset() { *m = StatefulSet{} }
func (*StatefulSet) ProtoMessage() {}
func (*StatefulSet) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{25} }
+func (m *StatefulSetCondition) Reset() { *m = StatefulSetCondition{} }
+func (*StatefulSetCondition) ProtoMessage() {}
+func (*StatefulSetCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{26} }
+
func (m *StatefulSetList) Reset() { *m = StatefulSetList{} }
func (*StatefulSetList) ProtoMessage() {}
-func (*StatefulSetList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{26} }
+func (*StatefulSetList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{27} }
func (m *StatefulSetSpec) Reset() { *m = StatefulSetSpec{} }
func (*StatefulSetSpec) ProtoMessage() {}
-func (*StatefulSetSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{27} }
+func (*StatefulSetSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{28} }
func (m *StatefulSetStatus) Reset() { *m = StatefulSetStatus{} }
func (*StatefulSetStatus) ProtoMessage() {}
-func (*StatefulSetStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{28} }
+func (*StatefulSetStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{29} }
func (m *StatefulSetUpdateStrategy) Reset() { *m = StatefulSetUpdateStrategy{} }
func (*StatefulSetUpdateStrategy) ProtoMessage() {}
func (*StatefulSetUpdateStrategy) Descriptor() ([]byte, []int) {
- return fileDescriptorGenerated, []int{29}
+ return fileDescriptorGenerated, []int{30}
}
func init() {
@@ -239,6 +244,7 @@ func init() {
proto.RegisterType((*ScaleSpec)(nil), "k8s.io.api.apps.v1beta2.ScaleSpec")
proto.RegisterType((*ScaleStatus)(nil), "k8s.io.api.apps.v1beta2.ScaleStatus")
proto.RegisterType((*StatefulSet)(nil), "k8s.io.api.apps.v1beta2.StatefulSet")
+ proto.RegisterType((*StatefulSetCondition)(nil), "k8s.io.api.apps.v1beta2.StatefulSetCondition")
proto.RegisterType((*StatefulSetList)(nil), "k8s.io.api.apps.v1beta2.StatefulSetList")
proto.RegisterType((*StatefulSetSpec)(nil), "k8s.io.api.apps.v1beta2.StatefulSetSpec")
proto.RegisterType((*StatefulSetStatus)(nil), "k8s.io.api.apps.v1beta2.StatefulSetStatus")
@@ -1321,6 +1327,48 @@ func (m *StatefulSet) MarshalTo(dAtA []byte) (int, error) {
return i, nil
}
+func (m *StatefulSetCondition) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StatefulSetCondition) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type)))
+ i += copy(dAtA[i:], m.Type)
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Status)))
+ i += copy(dAtA[i:], m.Status)
+ dAtA[i] = 0x1a
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(m.LastTransitionTime.Size()))
+ n39, err := m.LastTransitionTime.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n39
+ dAtA[i] = 0x22
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason)))
+ i += copy(dAtA[i:], m.Reason)
+ dAtA[i] = 0x2a
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Message)))
+ i += copy(dAtA[i:], m.Message)
+ return i, nil
+}
+
func (m *StatefulSetList) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@@ -1339,11 +1387,11 @@ func (m *StatefulSetList) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0xa
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size()))
- n39, err := m.ListMeta.MarshalTo(dAtA[i:])
+ n40, err := m.ListMeta.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n39
+ i += n40
if len(m.Items) > 0 {
for _, msg := range m.Items {
dAtA[i] = 0x12
@@ -1383,20 +1431,20 @@ func (m *StatefulSetSpec) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0x12
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.Selector.Size()))
- n40, err := m.Selector.MarshalTo(dAtA[i:])
+ n41, err := m.Selector.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n40
+ i += n41
}
dAtA[i] = 0x1a
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.Template.Size()))
- n41, err := m.Template.MarshalTo(dAtA[i:])
+ n42, err := m.Template.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n41
+ i += n42
if len(m.VolumeClaimTemplates) > 0 {
for _, msg := range m.VolumeClaimTemplates {
dAtA[i] = 0x22
@@ -1420,11 +1468,11 @@ func (m *StatefulSetSpec) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0x3a
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.UpdateStrategy.Size()))
- n42, err := m.UpdateStrategy.MarshalTo(dAtA[i:])
+ n43, err := m.UpdateStrategy.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n42
+ i += n43
if m.RevisionHistoryLimit != nil {
dAtA[i] = 0x40
i++
@@ -1476,6 +1524,18 @@ func (m *StatefulSetStatus) MarshalTo(dAtA []byte) (int, error) {
i++
i = encodeVarintGenerated(dAtA, i, uint64(*m.CollisionCount))
}
+ if len(m.Conditions) > 0 {
+ for _, msg := range m.Conditions {
+ dAtA[i] = 0x52
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(msg.Size()))
+ n, err := msg.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n
+ }
+ }
return i, nil
}
@@ -1502,11 +1562,11 @@ func (m *StatefulSetUpdateStrategy) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0x12
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.RollingUpdate.Size()))
- n43, err := m.RollingUpdate.MarshalTo(dAtA[i:])
+ n44, err := m.RollingUpdate.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n43
+ i += n44
}
return i, nil
}
@@ -1916,6 +1976,22 @@ func (m *StatefulSet) Size() (n int) {
return n
}
+func (m *StatefulSetCondition) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Type)
+ n += 1 + l + sovGenerated(uint64(l))
+ l = len(m.Status)
+ n += 1 + l + sovGenerated(uint64(l))
+ l = m.LastTransitionTime.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ l = len(m.Reason)
+ n += 1 + l + sovGenerated(uint64(l))
+ l = len(m.Message)
+ n += 1 + l + sovGenerated(uint64(l))
+ return n
+}
+
func (m *StatefulSetList) Size() (n int) {
var l int
_ = l
@@ -1975,6 +2051,12 @@ func (m *StatefulSetStatus) Size() (n int) {
if m.CollisionCount != nil {
n += 1 + sovGenerated(uint64(*m.CollisionCount))
}
+ if len(m.Conditions) > 0 {
+ for _, e := range m.Conditions {
+ l = e.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ }
+ }
return n
}
@@ -2342,6 +2424,20 @@ func (this *StatefulSet) String() string {
}, "")
return s
}
+func (this *StatefulSetCondition) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&StatefulSetCondition{`,
+ `Type:` + fmt.Sprintf("%v", this.Type) + `,`,
+ `Status:` + fmt.Sprintf("%v", this.Status) + `,`,
+ `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`,
+ `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`,
+ `Message:` + fmt.Sprintf("%v", this.Message) + `,`,
+ `}`,
+ }, "")
+ return s
+}
func (this *StatefulSetList) String() string {
if this == nil {
return "nil"
@@ -2383,6 +2479,7 @@ func (this *StatefulSetStatus) String() string {
`CurrentRevision:` + fmt.Sprintf("%v", this.CurrentRevision) + `,`,
`UpdateRevision:` + fmt.Sprintf("%v", this.UpdateRevision) + `,`,
`CollisionCount:` + valueToStringGenerated(this.CollisionCount) + `,`,
+ `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "StatefulSetCondition", "StatefulSetCondition", 1), `&`, ``, 1) + `,`,
`}`,
}, "")
return s
@@ -6293,6 +6390,202 @@ func (m *StatefulSet) Unmarshal(dAtA []byte) error {
}
return nil
}
+func (m *StatefulSetCondition) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StatefulSetCondition: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StatefulSetCondition: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Type = StatefulSetConditionType(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Status = k8s_io_api_core_v1.ConditionStatus(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LastTransitionTime", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if err := m.LastTransitionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Reason = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Message = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipGenerated(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
func (m *StatefulSetList) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
@@ -6878,6 +7171,37 @@ func (m *StatefulSetStatus) Unmarshal(dAtA []byte) error {
}
}
m.CollisionCount = &v
+ case 10:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Conditions = append(m.Conditions, StatefulSetCondition{})
+ if err := m.Conditions[len(m.Conditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipGenerated(dAtA[iNdEx:])
@@ -7121,140 +7445,142 @@ func init() {
}
var fileDescriptorGenerated = []byte{
- // 2150 bytes of a gzipped FileDescriptorProto
+ // 2186 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcb, 0x6f, 0x1c, 0xb7,
- 0x19, 0xd7, 0xec, 0x43, 0x5a, 0x51, 0x96, 0x64, 0x53, 0xaa, 0xb4, 0x91, 0xdb, 0x95, 0x31, 0x09,
- 0x1c, 0x39, 0xb6, 0x77, 0x6d, 0xe5, 0x81, 0xc4, 0x06, 0xda, 0x6a, 0xa5, 0xd4, 0x76, 0xa0, 0x57,
+ 0x19, 0xf7, 0xec, 0x43, 0x5a, 0x51, 0x96, 0x64, 0x53, 0xaa, 0xb4, 0x91, 0xdb, 0x95, 0xb1, 0x09,
+ 0x1c, 0x39, 0xb6, 0x66, 0x6d, 0xe5, 0x81, 0xc4, 0x2e, 0xda, 0x6a, 0xa5, 0xd4, 0x76, 0xa0, 0x57,
0x28, 0xcb, 0x40, 0x83, 0x16, 0x35, 0xb5, 0x4b, 0xaf, 0x26, 0x9a, 0x17, 0x66, 0x38, 0x5b, 0x2f,
- 0x7a, 0xe9, 0xa9, 0x40, 0x81, 0x02, 0x69, 0xaf, 0xfd, 0x27, 0x7a, 0x2b, 0x8a, 0xf6, 0x56, 0x04,
- 0x85, 0x2f, 0x05, 0x82, 0x5e, 0x92, 0x93, 0x50, 0x6f, 0x4e, 0x45, 0xcf, 0xbd, 0x04, 0x28, 0x50,
- 0x90, 0xc3, 0x79, 0x70, 0x1e, 0xde, 0x91, 0x62, 0x2b, 0x85, 0x91, 0x9b, 0x96, 0xfc, 0x7d, 0x3f,
- 0x7e, 0x1f, 0xf9, 0x91, 0xdf, 0x8f, 0x1c, 0x81, 0x1f, 0x1e, 0xbd, 0xeb, 0x36, 0x35, 0xab, 0x75,
- 0xe4, 0x1d, 0x10, 0xc7, 0x24, 0x94, 0xb8, 0xad, 0x3e, 0x31, 0xbb, 0x96, 0xd3, 0x12, 0x1d, 0xd8,
- 0xd6, 0x5a, 0xd8, 0xb6, 0xdd, 0x56, 0xff, 0xe6, 0x01, 0xa1, 0x78, 0xb5, 0xd5, 0x23, 0x26, 0x71,
- 0x30, 0x25, 0xdd, 0xa6, 0xed, 0x58, 0xd4, 0x82, 0x8b, 0x3e, 0xb0, 0x89, 0x6d, 0xad, 0xc9, 0x80,
- 0x4d, 0x01, 0x5c, 0xba, 0xde, 0xd3, 0xe8, 0xa1, 0x77, 0xd0, 0xec, 0x58, 0x46, 0xab, 0x67, 0xf5,
- 0xac, 0x16, 0xc7, 0x1f, 0x78, 0x8f, 0xf8, 0x2f, 0xfe, 0x83, 0xff, 0xe5, 0xf3, 0x2c, 0xa9, 0xb1,
- 0x01, 0x3b, 0x96, 0x43, 0x5a, 0xfd, 0x9b, 0xc9, 0xb1, 0x96, 0xae, 0xc4, 0x30, 0xb6, 0xa5, 0x6b,
- 0x9d, 0x81, 0x70, 0x2b, 0x0d, 0x7d, 0x2b, 0x82, 0x1a, 0xb8, 0x73, 0xa8, 0x99, 0xc4, 0x19, 0xb4,
- 0xec, 0xa3, 0x1e, 0x6b, 0x70, 0x5b, 0x06, 0xa1, 0x38, 0x6b, 0x80, 0x56, 0x9e, 0x95, 0xe3, 0x99,
- 0x54, 0x33, 0x48, 0xca, 0xe0, 0x9d, 0x51, 0x06, 0x6e, 0xe7, 0x90, 0x18, 0x38, 0x65, 0xf7, 0x66,
- 0x9e, 0x9d, 0x47, 0x35, 0xbd, 0xa5, 0x99, 0xd4, 0xa5, 0x4e, 0xd2, 0x48, 0xfd, 0x8f, 0x02, 0xe0,
- 0xba, 0x65, 0x52, 0xc7, 0xd2, 0x75, 0xe2, 0x20, 0xd2, 0xd7, 0x5c, 0xcd, 0x32, 0xe1, 0x43, 0x50,
- 0x63, 0xf1, 0x74, 0x31, 0xc5, 0x75, 0xe5, 0x92, 0xb2, 0x32, 0xb5, 0x7a, 0xa3, 0x19, 0x2d, 0x4a,
- 0x48, 0xdf, 0xb4, 0x8f, 0x7a, 0xac, 0xc1, 0x6d, 0x32, 0x74, 0xb3, 0x7f, 0xb3, 0xb9, 0x73, 0xf0,
- 0x31, 0xe9, 0xd0, 0x2d, 0x42, 0x71, 0x1b, 0x3e, 0x39, 0x5e, 0x1e, 0x1b, 0x1e, 0x2f, 0x83, 0xa8,
- 0x0d, 0x85, 0xac, 0x70, 0x07, 0x54, 0x38, 0x7b, 0x89, 0xb3, 0x5f, 0xcf, 0x65, 0x17, 0x41, 0x37,
- 0x11, 0xfe, 0xf9, 0xfb, 0x8f, 0x29, 0x31, 0x99, 0x7b, 0xed, 0x73, 0x82, 0xba, 0xb2, 0x81, 0x29,
- 0x46, 0x9c, 0x08, 0x5e, 0x03, 0x35, 0x47, 0xb8, 0x5f, 0x2f, 0x5f, 0x52, 0x56, 0xca, 0xed, 0xf3,
- 0x02, 0x55, 0x0b, 0xc2, 0x42, 0x21, 0x42, 0x7d, 0xa2, 0x80, 0x85, 0x74, 0xdc, 0x9b, 0x9a, 0x4b,
- 0xe1, 0x4f, 0x52, 0xb1, 0x37, 0x8b, 0xc5, 0xce, 0xac, 0x79, 0xe4, 0xe1, 0xc0, 0x41, 0x4b, 0x2c,
- 0xee, 0x5d, 0x50, 0xd5, 0x28, 0x31, 0xdc, 0x7a, 0xe9, 0x52, 0x79, 0x65, 0x6a, 0xf5, 0x6a, 0x33,
- 0x27, 0xd7, 0x9b, 0x69, 0xef, 0xda, 0xd3, 0x82, 0xb7, 0x7a, 0x8f, 0x31, 0x20, 0x9f, 0x48, 0xfd,
- 0x75, 0x09, 0x4c, 0x6e, 0x60, 0x62, 0x58, 0xe6, 0x1e, 0xa1, 0x67, 0xb0, 0x72, 0x77, 0x41, 0xc5,
- 0xb5, 0x49, 0x47, 0xac, 0xdc, 0xe5, 0xdc, 0x00, 0x42, 0x9f, 0xf6, 0x6c, 0xd2, 0x89, 0x96, 0x8c,
- 0xfd, 0x42, 0x9c, 0x01, 0xee, 0x82, 0x71, 0x97, 0x62, 0xea, 0xb9, 0x7c, 0xc1, 0xa6, 0x56, 0x57,
- 0x0a, 0x70, 0x71, 0x7c, 0x7b, 0x46, 0xb0, 0x8d, 0xfb, 0xbf, 0x91, 0xe0, 0x51, 0xff, 0x55, 0x02,
- 0x30, 0xc4, 0xae, 0x5b, 0x66, 0x57, 0xa3, 0x2c, 0x9d, 0x6f, 0x81, 0x0a, 0x1d, 0xd8, 0x84, 0x4f,
- 0xc8, 0x64, 0xfb, 0x72, 0xe0, 0xca, 0xfd, 0x81, 0x4d, 0xbe, 0x3a, 0x5e, 0x5e, 0x48, 0x5b, 0xb0,
- 0x1e, 0xc4, 0x6d, 0xe0, 0x66, 0xe8, 0x64, 0x89, 0x5b, 0xbf, 0x25, 0x0f, 0xfd, 0xd5, 0xf1, 0x72,
- 0xc6, 0x31, 0xd3, 0x0c, 0x99, 0x64, 0x07, 0x61, 0x1f, 0x40, 0x1d, 0xbb, 0xf4, 0xbe, 0x83, 0x4d,
- 0xd7, 0x1f, 0x49, 0x33, 0x88, 0x08, 0xff, 0x8d, 0x62, 0x0b, 0xc5, 0x2c, 0xda, 0x4b, 0xc2, 0x0b,
- 0xb8, 0x99, 0x62, 0x43, 0x19, 0x23, 0xc0, 0xcb, 0x60, 0xdc, 0x21, 0xd8, 0xb5, 0xcc, 0x7a, 0x85,
- 0x47, 0x11, 0x4e, 0x20, 0xe2, 0xad, 0x48, 0xf4, 0xc2, 0x2b, 0x60, 0xc2, 0x20, 0xae, 0x8b, 0x7b,
- 0xa4, 0x5e, 0xe5, 0xc0, 0x59, 0x01, 0x9c, 0xd8, 0xf2, 0x9b, 0x51, 0xd0, 0xaf, 0xfe, 0x51, 0x01,
- 0xd3, 0xe1, 0xcc, 0x9d, 0xc1, 0xce, 0xb9, 0x23, 0xef, 0x1c, 0x75, 0x74, 0xb2, 0xe4, 0x6c, 0x98,
- 0x4f, 0xcb, 0x31, 0xc7, 0x59, 0x3a, 0xc2, 0x9f, 0x82, 0x9a, 0x4b, 0x74, 0xd2, 0xa1, 0x96, 0x23,
- 0x1c, 0x7f, 0xb3, 0xa0, 0xe3, 0xf8, 0x80, 0xe8, 0x7b, 0xc2, 0xb4, 0x7d, 0x8e, 0x79, 0x1e, 0xfc,
- 0x42, 0x21, 0x25, 0xfc, 0x10, 0xd4, 0x28, 0x31, 0x6c, 0x1d, 0x53, 0x22, 0x76, 0xcd, 0xab, 0x71,
- 0xe7, 0x59, 0xce, 0x30, 0xb2, 0x5d, 0xab, 0x7b, 0x5f, 0xc0, 0xf8, 0x96, 0x09, 0x27, 0x23, 0x68,
- 0x45, 0x21, 0x0d, 0xb4, 0xc1, 0x8c, 0x67, 0x77, 0x19, 0x92, 0xb2, 0xe3, 0xbc, 0x37, 0x10, 0x39,
- 0x74, 0x63, 0xf4, 0xac, 0xec, 0x4b, 0x76, 0xed, 0x05, 0x31, 0xca, 0x8c, 0xdc, 0x8e, 0x12, 0xfc,
- 0x70, 0x0d, 0xcc, 0x1a, 0x9a, 0x89, 0x08, 0xee, 0x0e, 0xf6, 0x48, 0xc7, 0x32, 0xbb, 0x2e, 0x4f,
- 0xa5, 0x6a, 0x7b, 0x51, 0x10, 0xcc, 0x6e, 0xc9, 0xdd, 0x28, 0x89, 0x87, 0x9b, 0x60, 0x3e, 0x38,
- 0x80, 0xef, 0x6a, 0x2e, 0xb5, 0x9c, 0xc1, 0xa6, 0x66, 0x68, 0xb4, 0x3e, 0xce, 0x79, 0xea, 0xc3,
- 0xe3, 0xe5, 0x79, 0x94, 0xd1, 0x8f, 0x32, 0xad, 0xd4, 0xdf, 0x8d, 0x83, 0xd9, 0xc4, 0xb9, 0x00,
- 0x1f, 0x80, 0x85, 0x8e, 0xe7, 0x38, 0xc4, 0xa4, 0xdb, 0x9e, 0x71, 0x40, 0x9c, 0xbd, 0xce, 0x21,
- 0xe9, 0x7a, 0x3a, 0xe9, 0xf2, 0x65, 0xad, 0xb6, 0x1b, 0xc2, 0xd7, 0x85, 0xf5, 0x4c, 0x14, 0xca,
- 0xb1, 0x86, 0x1f, 0x00, 0x68, 0xf2, 0xa6, 0x2d, 0xcd, 0x75, 0x43, 0xce, 0x12, 0xe7, 0x0c, 0xb7,
- 0xe2, 0x76, 0x0a, 0x81, 0x32, 0xac, 0x98, 0x8f, 0x5d, 0xe2, 0x6a, 0x0e, 0xe9, 0x26, 0x7d, 0x2c,
- 0xcb, 0x3e, 0x6e, 0x64, 0xa2, 0x50, 0x8e, 0x35, 0x7c, 0x1b, 0x4c, 0xf9, 0xa3, 0xf1, 0x39, 0x17,
- 0x8b, 0x33, 0x27, 0xc8, 0xa6, 0xb6, 0xa3, 0x2e, 0x14, 0xc7, 0xb1, 0xd0, 0xac, 0x03, 0x97, 0x38,
- 0x7d, 0xd2, 0xbd, 0xe3, 0x8b, 0x03, 0x56, 0x41, 0xab, 0xbc, 0x82, 0x86, 0xa1, 0xed, 0xa4, 0x10,
- 0x28, 0xc3, 0x8a, 0x85, 0xe6, 0x67, 0x4d, 0x2a, 0xb4, 0x71, 0x39, 0xb4, 0xfd, 0x4c, 0x14, 0xca,
- 0xb1, 0x66, 0xb9, 0xe7, 0xbb, 0xbc, 0xd6, 0xc7, 0x9a, 0x8e, 0x0f, 0x74, 0x52, 0x9f, 0x90, 0x73,
- 0x6f, 0x5b, 0xee, 0x46, 0x49, 0x3c, 0xbc, 0x03, 0x2e, 0xf8, 0x4d, 0xfb, 0x26, 0x0e, 0x49, 0x6a,
- 0x9c, 0xe4, 0x15, 0x41, 0x72, 0x61, 0x3b, 0x09, 0x40, 0x69, 0x1b, 0x78, 0x0b, 0xcc, 0x74, 0x2c,
- 0x5d, 0xe7, 0xf9, 0xb8, 0x6e, 0x79, 0x26, 0xad, 0x4f, 0x72, 0x16, 0xc8, 0xf6, 0xd0, 0xba, 0xd4,
- 0x83, 0x12, 0x48, 0xf8, 0x33, 0x00, 0x3a, 0x41, 0x61, 0x70, 0xeb, 0x60, 0x84, 0x02, 0x48, 0x97,
- 0xa5, 0xa8, 0x32, 0x87, 0x4d, 0x2e, 0x8a, 0x51, 0xaa, 0x9f, 0x2a, 0x60, 0x31, 0x67, 0xa3, 0xc3,
- 0x1f, 0x48, 0x45, 0xf0, 0x6a, 0xa2, 0x08, 0x5e, 0xcc, 0x31, 0x8b, 0x55, 0xc2, 0x43, 0x30, 0xcd,
- 0x04, 0x89, 0x66, 0xf6, 0x7c, 0x88, 0x38, 0xcb, 0x5a, 0xb9, 0x01, 0xa0, 0x38, 0x3a, 0x3a, 0x95,
- 0x2f, 0x0c, 0x8f, 0x97, 0xa7, 0xa5, 0x3e, 0x24, 0x13, 0xab, 0xbf, 0x29, 0x01, 0xb0, 0x41, 0x6c,
- 0xdd, 0x1a, 0x18, 0xc4, 0x3c, 0x0b, 0x4d, 0x73, 0x4f, 0xd2, 0x34, 0xaf, 0xe7, 0x2f, 0x49, 0xe8,
- 0x54, 0xae, 0xa8, 0xf9, 0x30, 0x21, 0x6a, 0xae, 0x14, 0x21, 0x7b, 0xb6, 0xaa, 0xf9, 0xbc, 0x0c,
- 0xe6, 0x22, 0x70, 0x24, 0x6b, 0x6e, 0x4b, 0x2b, 0xfa, 0x7a, 0x62, 0x45, 0x17, 0x33, 0x4c, 0x5e,
- 0x98, 0xae, 0x79, 0xfe, 0xfa, 0x02, 0x7e, 0x0c, 0x66, 0x98, 0x90, 0xf1, 0x53, 0x82, 0xcb, 0xa4,
- 0xf1, 0x13, 0xcb, 0xa4, 0xb0, 0xb8, 0x6d, 0x4a, 0x4c, 0x28, 0xc1, 0x9c, 0x23, 0xcb, 0x26, 0x5e,
- 0xb4, 0x2c, 0x53, 0xff, 0xa4, 0x80, 0x99, 0x68, 0x99, 0xce, 0x40, 0x44, 0xdd, 0x95, 0x45, 0xd4,
- 0xab, 0x05, 0x92, 0x33, 0x47, 0x45, 0x7d, 0x5e, 0x89, 0xbb, 0xce, 0x65, 0xd4, 0x0a, 0xbb, 0x82,
- 0xd9, 0xba, 0xd6, 0xc1, 0xae, 0xa8, 0xb7, 0xe7, 0xfc, 0xeb, 0x97, 0xdf, 0x86, 0xc2, 0x5e, 0x49,
- 0x70, 0x95, 0x5e, 0xac, 0xe0, 0x2a, 0x3f, 0x1f, 0xc1, 0xf5, 0x63, 0x50, 0x73, 0x03, 0xa9, 0x55,
- 0xe1, 0x94, 0x57, 0x0b, 0x6d, 0x6c, 0xa1, 0xb2, 0x42, 0xea, 0x50, 0x5f, 0x85, 0x74, 0x59, 0xca,
- 0xaa, 0xfa, 0x4d, 0x2a, 0x2b, 0xb6, 0x99, 0x6d, 0xec, 0xb9, 0xa4, 0xcb, 0x77, 0x40, 0x2d, 0xda,
- 0xcc, 0xbb, 0xbc, 0x15, 0x89, 0x5e, 0xb8, 0x0f, 0x16, 0x6d, 0xc7, 0xea, 0x39, 0xc4, 0x75, 0x37,
- 0x08, 0xee, 0xea, 0x9a, 0x49, 0x82, 0x00, 0xfc, 0x9a, 0x78, 0x71, 0x78, 0xbc, 0xbc, 0xb8, 0x9b,
- 0x0d, 0x41, 0x79, 0xb6, 0xea, 0x5f, 0x2b, 0xe0, 0x7c, 0xf2, 0x6c, 0xcc, 0x91, 0x29, 0xca, 0xa9,
- 0x64, 0xca, 0xb5, 0x58, 0x9e, 0xfa, 0x1a, 0x2e, 0xf6, 0x54, 0x90, 0xca, 0xd5, 0x35, 0x30, 0x2b,
- 0x64, 0x49, 0xd0, 0x29, 0x84, 0x5a, 0xb8, 0x3c, 0xfb, 0x72, 0x37, 0x4a, 0xe2, 0x99, 0xf8, 0x88,
- 0x34, 0x45, 0x40, 0x52, 0x91, 0xc5, 0xc7, 0x5a, 0x12, 0x80, 0xd2, 0x36, 0x70, 0x0b, 0xcc, 0x79,
- 0x66, 0x9a, 0xca, 0x4f, 0x97, 0x8b, 0x82, 0x6a, 0x6e, 0x3f, 0x0d, 0x41, 0x59, 0x76, 0xf0, 0xa1,
- 0xa4, 0x47, 0xc6, 0xf9, 0x91, 0x70, 0xad, 0x40, 0x5a, 0x17, 0x16, 0x24, 0xf0, 0x36, 0x98, 0x76,
- 0xb8, 0xe6, 0x0c, 0x5c, 0xf5, 0x75, 0xdb, 0x77, 0x84, 0xd9, 0x34, 0x8a, 0x77, 0x22, 0x19, 0x9b,
- 0x21, 0xb5, 0x6a, 0x45, 0xa5, 0x96, 0xfa, 0x17, 0x05, 0xc0, 0xf4, 0x3e, 0x1c, 0xf9, 0x12, 0x90,
- 0xb2, 0x88, 0x55, 0x4c, 0x2d, 0x5b, 0xff, 0xdc, 0x28, 0xa8, 0x7f, 0xa2, 0x03, 0xb5, 0x98, 0x00,
- 0x12, 0xd3, 0x70, 0x36, 0x8f, 0x3a, 0x45, 0x05, 0x50, 0xe4, 0xd4, 0x73, 0x10, 0x40, 0x31, 0xb2,
- 0x67, 0x0b, 0xa0, 0x7f, 0x97, 0xc0, 0x5c, 0x04, 0x2e, 0x2c, 0x80, 0x32, 0x4c, 0xbe, 0x7d, 0xd8,
- 0x19, 0xfd, 0xb0, 0xc3, 0x44, 0x49, 0x34, 0x75, 0xff, 0x4f, 0xa2, 0x24, 0xf2, 0x2a, 0x47, 0x94,
- 0xfc, 0xa1, 0x14, 0x77, 0xfd, 0xa5, 0x17, 0x25, 0x5f, 0xff, 0x4d, 0x46, 0xfd, 0x5b, 0x19, 0x9c,
- 0x4f, 0xee, 0x43, 0xa9, 0x40, 0x2a, 0x23, 0x0b, 0xe4, 0x2e, 0x98, 0x7f, 0xe4, 0xe9, 0xfa, 0x80,
- 0x4f, 0x43, 0xac, 0x4a, 0xfa, 0xa5, 0xf5, 0xbb, 0xc2, 0x72, 0xfe, 0x47, 0x19, 0x18, 0x94, 0x69,
- 0x99, 0x53, 0xec, 0xcb, 0xa7, 0x2a, 0xf6, 0xa9, 0x0a, 0x54, 0x39, 0x41, 0x05, 0xca, 0x2c, 0xdc,
- 0xd5, 0x53, 0x14, 0xee, 0x93, 0x55, 0xda, 0x8c, 0x83, 0x6b, 0xe4, 0xd5, 0xff, 0x57, 0x0a, 0x58,
- 0xc8, 0xbe, 0x70, 0x43, 0x1d, 0xcc, 0x18, 0xf8, 0x71, 0xfc, 0xe1, 0x63, 0x54, 0x11, 0xf1, 0xa8,
- 0xa6, 0x37, 0xfd, 0x4f, 0x46, 0xcd, 0x7b, 0x26, 0xdd, 0x71, 0xf6, 0xa8, 0xa3, 0x99, 0x3d, 0xbf,
- 0xf2, 0x6e, 0x49, 0x5c, 0x28, 0xc1, 0xad, 0x7e, 0xa9, 0x80, 0xc5, 0x9c, 0xca, 0x77, 0xb6, 0x9e,
- 0xc0, 0x8f, 0x40, 0xcd, 0xc0, 0x8f, 0xf7, 0x3c, 0xa7, 0x97, 0x55, 0xab, 0x8b, 0x8d, 0xc3, 0x77,
- 0xf3, 0x96, 0x60, 0x41, 0x21, 0x9f, 0xba, 0x03, 0x2e, 0x49, 0x41, 0xb2, 0x9d, 0x43, 0x1e, 0x79,
- 0x3a, 0xdf, 0x44, 0x42, 0x6c, 0x5c, 0x05, 0x93, 0x36, 0x76, 0xa8, 0x16, 0x4a, 0xd5, 0x6a, 0x7b,
- 0x7a, 0x78, 0xbc, 0x3c, 0xb9, 0x1b, 0x34, 0xa2, 0xa8, 0x5f, 0xfd, 0xaf, 0x02, 0xaa, 0x7b, 0x1d,
- 0xac, 0x93, 0x33, 0xa8, 0xf6, 0x1b, 0x52, 0xb5, 0xcf, 0x7f, 0x49, 0xe7, 0xfe, 0xe4, 0x16, 0xfa,
- 0xcd, 0x44, 0xa1, 0x7f, 0x6d, 0x04, 0xcf, 0xb3, 0x6b, 0xfc, 0x7b, 0x60, 0x32, 0x1c, 0xee, 0x64,
- 0x07, 0x90, 0xfa, 0xfb, 0x12, 0x98, 0x8a, 0x0d, 0x71, 0xc2, 0xe3, 0xeb, 0xa1, 0x74, 0xec, 0xb3,
- 0x8d, 0xb9, 0x5a, 0x24, 0x90, 0x66, 0x70, 0xc4, 0xbf, 0x6f, 0x52, 0x27, 0x7e, 0xc1, 0x4b, 0x9f,
- 0xfc, 0xdf, 0x07, 0x33, 0x14, 0x3b, 0x3d, 0x42, 0x83, 0x3e, 0x3e, 0x61, 0x93, 0xd1, 0xeb, 0xc4,
- 0x7d, 0xa9, 0x17, 0x25, 0xd0, 0x4b, 0xb7, 0xc1, 0xb4, 0x34, 0x18, 0x3c, 0x0f, 0xca, 0x47, 0x64,
- 0xe0, 0xcb, 0x1e, 0xc4, 0xfe, 0x84, 0xf3, 0xa0, 0xda, 0xc7, 0xba, 0xe7, 0xe7, 0xf9, 0x24, 0xf2,
- 0x7f, 0xdc, 0x2a, 0xbd, 0xab, 0xa8, 0x9f, 0xb0, 0xc9, 0x89, 0x92, 0xf3, 0x0c, 0xb2, 0xeb, 0x03,
- 0x29, 0xbb, 0xf2, 0x3f, 0xea, 0xc5, 0xb7, 0x4c, 0x5e, 0x8e, 0xa1, 0x44, 0x8e, 0xbd, 0x51, 0x88,
- 0xed, 0xd9, 0x99, 0xf6, 0x67, 0x05, 0xcc, 0xc6, 0xd0, 0x67, 0x20, 0x70, 0xee, 0xc9, 0x02, 0xe7,
- 0xb5, 0x22, 0x41, 0xe4, 0x28, 0x9c, 0xbf, 0x57, 0x25, 0xe7, 0x5f, 0x7a, 0x89, 0xf3, 0x0b, 0x30,
- 0xdf, 0xb7, 0x74, 0xcf, 0x20, 0xeb, 0x3a, 0xd6, 0x8c, 0x00, 0xc0, 0xaa, 0x78, 0x39, 0x79, 0xb7,
- 0x08, 0xe9, 0x89, 0xe3, 0x6a, 0x2e, 0x25, 0x26, 0x7d, 0x10, 0x59, 0x46, 0x3a, 0xe4, 0x41, 0x06,
- 0x1d, 0xca, 0x1c, 0x04, 0xbe, 0x0d, 0xa6, 0x98, 0x9e, 0xd0, 0x3a, 0x64, 0x1b, 0x1b, 0x81, 0x70,
- 0x0e, 0x3f, 0xa9, 0xec, 0x45, 0x5d, 0x28, 0x8e, 0x83, 0x87, 0x60, 0xce, 0xb6, 0xba, 0x5b, 0xd8,
- 0xc4, 0x3d, 0xc2, 0xca, 0xde, 0x2e, 0xff, 0xbf, 0x12, 0xfe, 0x18, 0x33, 0xd9, 0x7e, 0x27, 0xb8,
- 0xa5, 0xef, 0xa6, 0x21, 0xec, 0xd2, 0x92, 0xd1, 0xcc, 0x2f, 0x2d, 0x59, 0x94, 0xd0, 0x49, 0x7d,
- 0x06, 0xf4, 0xdf, 0x2c, 0x57, 0x8b, 0x64, 0xd8, 0x29, 0x3f, 0x04, 0xe6, 0xbd, 0x35, 0xd5, 0x4e,
- 0xf5, 0x15, 0xef, 0x93, 0x0a, 0xb8, 0x90, 0xda, 0xba, 0xdf, 0xe0, 0x6b, 0x4f, 0x4a, 0x2e, 0x96,
- 0x4f, 0x20, 0x17, 0xd7, 0xc0, 0xac, 0xf8, 0x80, 0x98, 0x50, 0x9b, 0xa1, 0x1e, 0x5f, 0x97, 0xbb,
- 0x51, 0x12, 0x9f, 0xf5, 0xda, 0x54, 0x3d, 0xe1, 0x6b, 0x53, 0xdc, 0x0b, 0xf1, 0x0f, 0x31, 0x7e,
- 0xea, 0xa5, 0xbd, 0x10, 0xff, 0x17, 0x93, 0xc4, 0xb3, 0x8a, 0xe5, 0xb3, 0x86, 0x0c, 0x13, 0x72,
- 0xc5, 0xda, 0x97, 0x7a, 0x51, 0x02, 0xfd, 0x75, 0x3e, 0x92, 0xa9, 0xff, 0x50, 0xc0, 0x2b, 0xb9,
- 0x59, 0x0a, 0xd7, 0xa4, 0x2b, 0xff, 0xf5, 0xc4, 0x95, 0xff, 0x7b, 0xb9, 0x86, 0xb1, 0x8b, 0xbf,
- 0x93, 0xfd, 0x8e, 0xf3, 0x5e, 0xb1, 0x77, 0x9c, 0x0c, 0xa1, 0x37, 0xfa, 0x41, 0xa7, 0x7d, 0xfd,
- 0xc9, 0xd3, 0xc6, 0xd8, 0x67, 0x4f, 0x1b, 0x63, 0x5f, 0x3c, 0x6d, 0x8c, 0xfd, 0x72, 0xd8, 0x50,
- 0x9e, 0x0c, 0x1b, 0xca, 0x67, 0xc3, 0x86, 0xf2, 0xc5, 0xb0, 0xa1, 0xfc, 0x73, 0xd8, 0x50, 0x7e,
- 0xfb, 0x65, 0x63, 0xec, 0xa3, 0x09, 0x31, 0xe2, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x53, 0x1d,
- 0xeb, 0xb0, 0x44, 0x27, 0x00, 0x00,
+ 0x7a, 0xe9, 0xa9, 0x40, 0x81, 0x02, 0x6d, 0xaf, 0xfd, 0x27, 0x7a, 0x2b, 0x8a, 0xf6, 0x56, 0x04,
+ 0x85, 0x2f, 0x05, 0x82, 0x5e, 0x92, 0x93, 0x50, 0x6f, 0x4e, 0x45, 0xd1, 0x4b, 0x81, 0x5e, 0x02,
+ 0x14, 0x28, 0xc8, 0xe1, 0x3c, 0x38, 0x0f, 0xef, 0x48, 0xb1, 0x95, 0x22, 0xc8, 0x6d, 0x87, 0xfc,
+ 0x7d, 0x3f, 0x7e, 0x24, 0xbf, 0x8f, 0xdf, 0x6f, 0x38, 0x0b, 0xbe, 0x77, 0xf4, 0xb6, 0xab, 0x6a,
+ 0x56, 0xeb, 0xc8, 0x3b, 0x20, 0x8e, 0x49, 0x28, 0x71, 0x5b, 0x7d, 0x62, 0x76, 0x2d, 0xa7, 0x25,
+ 0x3a, 0xb0, 0xad, 0xb5, 0xb0, 0x6d, 0xbb, 0xad, 0xfe, 0xcd, 0x03, 0x42, 0xf1, 0x6a, 0xab, 0x47,
+ 0x4c, 0xe2, 0x60, 0x4a, 0xba, 0xaa, 0xed, 0x58, 0xd4, 0x82, 0x0b, 0x3e, 0x50, 0xc5, 0xb6, 0xa6,
+ 0x32, 0xa0, 0x2a, 0x80, 0x8b, 0x2b, 0x3d, 0x8d, 0x1e, 0x7a, 0x07, 0x6a, 0xc7, 0x32, 0x5a, 0x3d,
+ 0xab, 0x67, 0xb5, 0x38, 0xfe, 0xc0, 0x7b, 0xc4, 0x9f, 0xf8, 0x03, 0xff, 0xe5, 0xf3, 0x2c, 0x36,
+ 0x63, 0x03, 0x76, 0x2c, 0x87, 0xb4, 0xfa, 0x37, 0x93, 0x63, 0x2d, 0x5e, 0x8d, 0x61, 0x6c, 0x4b,
+ 0xd7, 0x3a, 0x03, 0xe1, 0x56, 0x1a, 0xfa, 0x46, 0x04, 0x35, 0x70, 0xe7, 0x50, 0x33, 0x89, 0x33,
+ 0x68, 0xd9, 0x47, 0x3d, 0xd6, 0xe0, 0xb6, 0x0c, 0x42, 0x71, 0xd6, 0x00, 0xad, 0x3c, 0x2b, 0xc7,
+ 0x33, 0xa9, 0x66, 0x90, 0x94, 0xc1, 0x5b, 0xa3, 0x0c, 0xdc, 0xce, 0x21, 0x31, 0x70, 0xca, 0xee,
+ 0xf5, 0x3c, 0x3b, 0x8f, 0x6a, 0x7a, 0x4b, 0x33, 0xa9, 0x4b, 0x9d, 0xa4, 0x51, 0xf3, 0x3f, 0x0a,
+ 0x80, 0xeb, 0x96, 0x49, 0x1d, 0x4b, 0xd7, 0x89, 0x83, 0x48, 0x5f, 0x73, 0x35, 0xcb, 0x84, 0x0f,
+ 0x41, 0x8d, 0xcd, 0xa7, 0x8b, 0x29, 0xae, 0x2b, 0x97, 0x95, 0xe5, 0xc9, 0xd5, 0x1b, 0x6a, 0xb4,
+ 0x29, 0x21, 0xbd, 0x6a, 0x1f, 0xf5, 0x58, 0x83, 0xab, 0x32, 0xb4, 0xda, 0xbf, 0xa9, 0xee, 0x1c,
+ 0x7c, 0x48, 0x3a, 0x74, 0x8b, 0x50, 0xdc, 0x86, 0x4f, 0x8e, 0x97, 0xce, 0x0d, 0x8f, 0x97, 0x40,
+ 0xd4, 0x86, 0x42, 0x56, 0xb8, 0x03, 0x2a, 0x9c, 0xbd, 0xc4, 0xd9, 0x57, 0x72, 0xd9, 0xc5, 0xa4,
+ 0x55, 0x84, 0x7f, 0xf2, 0xee, 0x63, 0x4a, 0x4c, 0xe6, 0x5e, 0xfb, 0xbc, 0xa0, 0xae, 0x6c, 0x60,
+ 0x8a, 0x11, 0x27, 0x82, 0xd7, 0x41, 0xcd, 0x11, 0xee, 0xd7, 0xcb, 0x97, 0x95, 0xe5, 0x72, 0xfb,
+ 0x82, 0x40, 0xd5, 0x82, 0x69, 0xa1, 0x10, 0xd1, 0x7c, 0xa2, 0x80, 0xf9, 0xf4, 0xbc, 0x37, 0x35,
+ 0x97, 0xc2, 0x1f, 0xa6, 0xe6, 0xae, 0x16, 0x9b, 0x3b, 0xb3, 0xe6, 0x33, 0x0f, 0x07, 0x0e, 0x5a,
+ 0x62, 0xf3, 0xde, 0x05, 0x55, 0x8d, 0x12, 0xc3, 0xad, 0x97, 0x2e, 0x97, 0x97, 0x27, 0x57, 0xaf,
+ 0xa9, 0x39, 0xb1, 0xae, 0xa6, 0xbd, 0x6b, 0x4f, 0x09, 0xde, 0xea, 0x3d, 0xc6, 0x80, 0x7c, 0xa2,
+ 0xe6, 0x2f, 0x4a, 0x60, 0x62, 0x03, 0x13, 0xc3, 0x32, 0xf7, 0x08, 0x3d, 0x83, 0x9d, 0xbb, 0x0b,
+ 0x2a, 0xae, 0x4d, 0x3a, 0x62, 0xe7, 0xae, 0xe4, 0x4e, 0x20, 0xf4, 0x69, 0xcf, 0x26, 0x9d, 0x68,
+ 0xcb, 0xd8, 0x13, 0xe2, 0x0c, 0x70, 0x17, 0x8c, 0xb9, 0x14, 0x53, 0xcf, 0xe5, 0x1b, 0x36, 0xb9,
+ 0xba, 0x5c, 0x80, 0x8b, 0xe3, 0xdb, 0xd3, 0x82, 0x6d, 0xcc, 0x7f, 0x46, 0x82, 0xa7, 0xf9, 0x8f,
+ 0x12, 0x80, 0x21, 0x76, 0xdd, 0x32, 0xbb, 0x1a, 0x65, 0xe1, 0x7c, 0x0b, 0x54, 0xe8, 0xc0, 0x26,
+ 0x7c, 0x41, 0x26, 0xda, 0x57, 0x02, 0x57, 0xee, 0x0f, 0x6c, 0xf2, 0xf9, 0xf1, 0xd2, 0x7c, 0xda,
+ 0x82, 0xf5, 0x20, 0x6e, 0x03, 0x37, 0x43, 0x27, 0x4b, 0xdc, 0xfa, 0x0d, 0x79, 0xe8, 0xcf, 0x8f,
+ 0x97, 0x32, 0x8e, 0x19, 0x35, 0x64, 0x92, 0x1d, 0x84, 0x7d, 0x00, 0x75, 0xec, 0xd2, 0xfb, 0x0e,
+ 0x36, 0x5d, 0x7f, 0x24, 0xcd, 0x20, 0x62, 0xfa, 0xaf, 0x15, 0xdb, 0x28, 0x66, 0xd1, 0x5e, 0x14,
+ 0x5e, 0xc0, 0xcd, 0x14, 0x1b, 0xca, 0x18, 0x01, 0x5e, 0x01, 0x63, 0x0e, 0xc1, 0xae, 0x65, 0xd6,
+ 0x2b, 0x7c, 0x16, 0xe1, 0x02, 0x22, 0xde, 0x8a, 0x44, 0x2f, 0xbc, 0x0a, 0xc6, 0x0d, 0xe2, 0xba,
+ 0xb8, 0x47, 0xea, 0x55, 0x0e, 0x9c, 0x11, 0xc0, 0xf1, 0x2d, 0xbf, 0x19, 0x05, 0xfd, 0xcd, 0xdf,
+ 0x2b, 0x60, 0x2a, 0x5c, 0xb9, 0x33, 0xc8, 0x9c, 0x3b, 0x72, 0xe6, 0x34, 0x47, 0x07, 0x4b, 0x4e,
+ 0xc2, 0x7c, 0x54, 0x8e, 0x39, 0xce, 0xc2, 0x11, 0xfe, 0x08, 0xd4, 0x5c, 0xa2, 0x93, 0x0e, 0xb5,
+ 0x1c, 0xe1, 0xf8, 0xeb, 0x05, 0x1d, 0xc7, 0x07, 0x44, 0xdf, 0x13, 0xa6, 0xed, 0xf3, 0xcc, 0xf3,
+ 0xe0, 0x09, 0x85, 0x94, 0xf0, 0x7d, 0x50, 0xa3, 0xc4, 0xb0, 0x75, 0x4c, 0x89, 0xc8, 0x9a, 0x97,
+ 0xe3, 0xce, 0xb3, 0x98, 0x61, 0x64, 0xbb, 0x56, 0xf7, 0xbe, 0x80, 0xf1, 0x94, 0x09, 0x17, 0x23,
+ 0x68, 0x45, 0x21, 0x0d, 0xb4, 0xc1, 0xb4, 0x67, 0x77, 0x19, 0x92, 0xb2, 0xe3, 0xbc, 0x37, 0x10,
+ 0x31, 0x74, 0x63, 0xf4, 0xaa, 0xec, 0x4b, 0x76, 0xed, 0x79, 0x31, 0xca, 0xb4, 0xdc, 0x8e, 0x12,
+ 0xfc, 0x70, 0x0d, 0xcc, 0x18, 0x9a, 0x89, 0x08, 0xee, 0x0e, 0xf6, 0x48, 0xc7, 0x32, 0xbb, 0x2e,
+ 0x0f, 0xa5, 0x6a, 0x7b, 0x41, 0x10, 0xcc, 0x6c, 0xc9, 0xdd, 0x28, 0x89, 0x87, 0x9b, 0x60, 0x2e,
+ 0x38, 0x80, 0xef, 0x6a, 0x2e, 0xb5, 0x9c, 0xc1, 0xa6, 0x66, 0x68, 0xb4, 0x3e, 0xc6, 0x79, 0xea,
+ 0xc3, 0xe3, 0xa5, 0x39, 0x94, 0xd1, 0x8f, 0x32, 0xad, 0x9a, 0xbf, 0x19, 0x03, 0x33, 0x89, 0x73,
+ 0x01, 0x3e, 0x00, 0xf3, 0x1d, 0xcf, 0x71, 0x88, 0x49, 0xb7, 0x3d, 0xe3, 0x80, 0x38, 0x7b, 0x9d,
+ 0x43, 0xd2, 0xf5, 0x74, 0xd2, 0xe5, 0xdb, 0x5a, 0x6d, 0x37, 0x84, 0xaf, 0xf3, 0xeb, 0x99, 0x28,
+ 0x94, 0x63, 0x0d, 0xdf, 0x03, 0xd0, 0xe4, 0x4d, 0x5b, 0x9a, 0xeb, 0x86, 0x9c, 0x25, 0xce, 0x19,
+ 0xa6, 0xe2, 0x76, 0x0a, 0x81, 0x32, 0xac, 0x98, 0x8f, 0x5d, 0xe2, 0x6a, 0x0e, 0xe9, 0x26, 0x7d,
+ 0x2c, 0xcb, 0x3e, 0x6e, 0x64, 0xa2, 0x50, 0x8e, 0x35, 0x7c, 0x13, 0x4c, 0xfa, 0xa3, 0xf1, 0x35,
+ 0x17, 0x9b, 0x33, 0x2b, 0xc8, 0x26, 0xb7, 0xa3, 0x2e, 0x14, 0xc7, 0xb1, 0xa9, 0x59, 0x07, 0x2e,
+ 0x71, 0xfa, 0xa4, 0x7b, 0xc7, 0x17, 0x07, 0xac, 0x82, 0x56, 0x79, 0x05, 0x0d, 0xa7, 0xb6, 0x93,
+ 0x42, 0xa0, 0x0c, 0x2b, 0x36, 0x35, 0x3f, 0x6a, 0x52, 0x53, 0x1b, 0x93, 0xa7, 0xb6, 0x9f, 0x89,
+ 0x42, 0x39, 0xd6, 0x2c, 0xf6, 0x7c, 0x97, 0xd7, 0xfa, 0x58, 0xd3, 0xf1, 0x81, 0x4e, 0xea, 0xe3,
+ 0x72, 0xec, 0x6d, 0xcb, 0xdd, 0x28, 0x89, 0x87, 0x77, 0xc0, 0x45, 0xbf, 0x69, 0xdf, 0xc4, 0x21,
+ 0x49, 0x8d, 0x93, 0xbc, 0x24, 0x48, 0x2e, 0x6e, 0x27, 0x01, 0x28, 0x6d, 0x03, 0x6f, 0x81, 0xe9,
+ 0x8e, 0xa5, 0xeb, 0x3c, 0x1e, 0xd7, 0x2d, 0xcf, 0xa4, 0xf5, 0x09, 0xce, 0x02, 0x59, 0x0e, 0xad,
+ 0x4b, 0x3d, 0x28, 0x81, 0x84, 0x3f, 0x06, 0xa0, 0x13, 0x14, 0x06, 0xb7, 0x0e, 0x46, 0x28, 0x80,
+ 0x74, 0x59, 0x8a, 0x2a, 0x73, 0xd8, 0xe4, 0xa2, 0x18, 0x65, 0xf3, 0x23, 0x05, 0x2c, 0xe4, 0x24,
+ 0x3a, 0xfc, 0xae, 0x54, 0x04, 0xaf, 0x25, 0x8a, 0xe0, 0xa5, 0x1c, 0xb3, 0x58, 0x25, 0x3c, 0x04,
+ 0x53, 0x4c, 0x90, 0x68, 0x66, 0xcf, 0x87, 0x88, 0xb3, 0xac, 0x95, 0x3b, 0x01, 0x14, 0x47, 0x47,
+ 0xa7, 0xf2, 0xc5, 0xe1, 0xf1, 0xd2, 0x94, 0xd4, 0x87, 0x64, 0xe2, 0xe6, 0x2f, 0x4b, 0x00, 0x6c,
+ 0x10, 0x5b, 0xb7, 0x06, 0x06, 0x31, 0xcf, 0x42, 0xd3, 0xdc, 0x93, 0x34, 0xcd, 0xab, 0xf9, 0x5b,
+ 0x12, 0x3a, 0x95, 0x2b, 0x6a, 0xde, 0x4f, 0x88, 0x9a, 0xab, 0x45, 0xc8, 0x9e, 0xad, 0x6a, 0x3e,
+ 0x29, 0x83, 0xd9, 0x08, 0x1c, 0xc9, 0x9a, 0xdb, 0xd2, 0x8e, 0xbe, 0x9a, 0xd8, 0xd1, 0x85, 0x0c,
+ 0x93, 0x17, 0xa6, 0x6b, 0x9e, 0xbf, 0xbe, 0x80, 0x1f, 0x82, 0x69, 0x26, 0x64, 0xfc, 0x90, 0xe0,
+ 0x32, 0x69, 0xec, 0xc4, 0x32, 0x29, 0x2c, 0x6e, 0x9b, 0x12, 0x13, 0x4a, 0x30, 0xe7, 0xc8, 0xb2,
+ 0xf1, 0x17, 0x2d, 0xcb, 0x9a, 0x7f, 0x50, 0xc0, 0x74, 0xb4, 0x4d, 0x67, 0x20, 0xa2, 0xee, 0xca,
+ 0x22, 0xea, 0xe5, 0x02, 0xc1, 0x99, 0xa3, 0xa2, 0x3e, 0xa9, 0xc4, 0x5d, 0xe7, 0x32, 0x6a, 0x99,
+ 0xbd, 0x82, 0xd9, 0xba, 0xd6, 0xc1, 0xae, 0xa8, 0xb7, 0xe7, 0xfd, 0xd7, 0x2f, 0xbf, 0x0d, 0x85,
+ 0xbd, 0x92, 0xe0, 0x2a, 0xbd, 0x58, 0xc1, 0x55, 0x7e, 0x3e, 0x82, 0xeb, 0x07, 0xa0, 0xe6, 0x06,
+ 0x52, 0xab, 0xc2, 0x29, 0xaf, 0x15, 0x4a, 0x6c, 0xa1, 0xb2, 0x42, 0xea, 0x50, 0x5f, 0x85, 0x74,
+ 0x59, 0xca, 0xaa, 0xfa, 0x65, 0x2a, 0x2b, 0x96, 0xcc, 0x36, 0xf6, 0x5c, 0xd2, 0xe5, 0x19, 0x50,
+ 0x8b, 0x92, 0x79, 0x97, 0xb7, 0x22, 0xd1, 0x0b, 0xf7, 0xc1, 0x82, 0xed, 0x58, 0x3d, 0x87, 0xb8,
+ 0xee, 0x06, 0xc1, 0x5d, 0x5d, 0x33, 0x49, 0x30, 0x01, 0xbf, 0x26, 0x5e, 0x1a, 0x1e, 0x2f, 0x2d,
+ 0xec, 0x66, 0x43, 0x50, 0x9e, 0x6d, 0xf3, 0xcf, 0x15, 0x70, 0x21, 0x79, 0x36, 0xe6, 0xc8, 0x14,
+ 0xe5, 0x54, 0x32, 0xe5, 0x7a, 0x2c, 0x4e, 0x7d, 0x0d, 0x17, 0xbb, 0x2a, 0x48, 0xc5, 0xea, 0x1a,
+ 0x98, 0x11, 0xb2, 0x24, 0xe8, 0x14, 0x42, 0x2d, 0xdc, 0x9e, 0x7d, 0xb9, 0x1b, 0x25, 0xf1, 0x4c,
+ 0x7c, 0x44, 0x9a, 0x22, 0x20, 0xa9, 0xc8, 0xe2, 0x63, 0x2d, 0x09, 0x40, 0x69, 0x1b, 0xb8, 0x05,
+ 0x66, 0x3d, 0x33, 0x4d, 0xe5, 0x87, 0xcb, 0x25, 0x41, 0x35, 0xbb, 0x9f, 0x86, 0xa0, 0x2c, 0x3b,
+ 0xf8, 0x50, 0xd2, 0x23, 0x63, 0xfc, 0x48, 0xb8, 0x5e, 0x20, 0xac, 0x0b, 0x0b, 0x12, 0x78, 0x1b,
+ 0x4c, 0x39, 0x5c, 0x73, 0x06, 0xae, 0xfa, 0xba, 0xed, 0x1b, 0xc2, 0x6c, 0x0a, 0xc5, 0x3b, 0x91,
+ 0x8c, 0xcd, 0x90, 0x5a, 0xb5, 0xa2, 0x52, 0xab, 0xf9, 0x27, 0x05, 0xc0, 0x74, 0x1e, 0x8e, 0xbc,
+ 0x09, 0x48, 0x59, 0xc4, 0x2a, 0xa6, 0x96, 0xad, 0x7f, 0x6e, 0x14, 0xd4, 0x3f, 0xd1, 0x81, 0x5a,
+ 0x4c, 0x00, 0x89, 0x65, 0x38, 0x9b, 0x4b, 0x9d, 0xa2, 0x02, 0x28, 0x72, 0xea, 0x39, 0x08, 0xa0,
+ 0x18, 0xd9, 0xb3, 0x05, 0xd0, 0x3f, 0x4b, 0x60, 0x36, 0x02, 0x17, 0x16, 0x40, 0x19, 0x26, 0x5f,
+ 0x5f, 0xec, 0x8c, 0xbe, 0xd8, 0x61, 0xa2, 0x24, 0x5a, 0xba, 0xff, 0x27, 0x51, 0x12, 0x79, 0x95,
+ 0x23, 0x4a, 0x7e, 0x57, 0x8a, 0xbb, 0xfe, 0x95, 0x17, 0x25, 0x5f, 0xfc, 0x4e, 0xa6, 0xf9, 0x97,
+ 0x32, 0xb8, 0x90, 0xcc, 0x43, 0xa9, 0x40, 0x2a, 0x23, 0x0b, 0xe4, 0x2e, 0x98, 0x7b, 0xe4, 0xe9,
+ 0xfa, 0x80, 0x2f, 0x43, 0xac, 0x4a, 0xfa, 0xa5, 0xf5, 0x9b, 0xc2, 0x72, 0xee, 0xfb, 0x19, 0x18,
+ 0x94, 0x69, 0x99, 0x53, 0xec, 0xcb, 0xa7, 0x2a, 0xf6, 0xa9, 0x0a, 0x54, 0x39, 0x41, 0x05, 0xca,
+ 0x2c, 0xdc, 0xd5, 0x53, 0x14, 0xee, 0x93, 0x55, 0xda, 0x8c, 0x83, 0x6b, 0xe4, 0xab, 0xff, 0xcf,
+ 0x15, 0x30, 0x9f, 0xfd, 0xc2, 0x0d, 0x75, 0x30, 0x6d, 0xe0, 0xc7, 0xf1, 0x8b, 0x8f, 0x51, 0x45,
+ 0xc4, 0xa3, 0x9a, 0xae, 0xfa, 0x9f, 0x8c, 0xd4, 0x7b, 0x26, 0xdd, 0x71, 0xf6, 0xa8, 0xa3, 0x99,
+ 0x3d, 0xbf, 0xf2, 0x6e, 0x49, 0x5c, 0x28, 0xc1, 0xdd, 0xfc, 0x4c, 0x01, 0x0b, 0x39, 0x95, 0xef,
+ 0x6c, 0x3d, 0x81, 0x1f, 0x80, 0x9a, 0x81, 0x1f, 0xef, 0x79, 0x4e, 0x2f, 0xab, 0x56, 0x17, 0x1b,
+ 0x87, 0x67, 0xf3, 0x96, 0x60, 0x41, 0x21, 0x5f, 0x73, 0x07, 0x5c, 0x96, 0x26, 0xc9, 0x32, 0x87,
+ 0x3c, 0xf2, 0x74, 0x9e, 0x44, 0x42, 0x6c, 0x5c, 0x03, 0x13, 0x36, 0x76, 0xa8, 0x16, 0x4a, 0xd5,
+ 0x6a, 0x7b, 0x6a, 0x78, 0xbc, 0x34, 0xb1, 0x1b, 0x34, 0xa2, 0xa8, 0xbf, 0xf9, 0x5f, 0x05, 0x54,
+ 0xf7, 0x3a, 0x58, 0x27, 0x67, 0x50, 0xed, 0x37, 0xa4, 0x6a, 0x9f, 0x7f, 0x93, 0xce, 0xfd, 0xc9,
+ 0x2d, 0xf4, 0x9b, 0x89, 0x42, 0xff, 0xca, 0x08, 0x9e, 0x67, 0xd7, 0xf8, 0x77, 0xc0, 0x44, 0x38,
+ 0xdc, 0xc9, 0x0e, 0xa0, 0xe6, 0x6f, 0x4b, 0x60, 0x32, 0x36, 0xc4, 0x09, 0x8f, 0xaf, 0x87, 0xd2,
+ 0xb1, 0xcf, 0x12, 0x73, 0xb5, 0xc8, 0x44, 0xd4, 0xe0, 0x88, 0x7f, 0xd7, 0xa4, 0x4e, 0xfc, 0x05,
+ 0x2f, 0x7d, 0xf2, 0x7f, 0x07, 0x4c, 0x53, 0xec, 0xf4, 0x08, 0x0d, 0xfa, 0xf8, 0x82, 0x4d, 0x44,
+ 0xb7, 0x13, 0xf7, 0xa5, 0x5e, 0x94, 0x40, 0x2f, 0xde, 0x06, 0x53, 0xd2, 0x60, 0xf0, 0x02, 0x28,
+ 0x1f, 0x91, 0x81, 0x2f, 0x7b, 0x10, 0xfb, 0x09, 0xe7, 0x40, 0xb5, 0x8f, 0x75, 0xcf, 0x8f, 0xf3,
+ 0x09, 0xe4, 0x3f, 0xdc, 0x2a, 0xbd, 0xad, 0x34, 0x7f, 0xc5, 0x16, 0x27, 0x0a, 0xce, 0x33, 0x88,
+ 0xae, 0xf7, 0xa4, 0xe8, 0xca, 0xff, 0xa8, 0x17, 0x4f, 0x99, 0xbc, 0x18, 0x43, 0x89, 0x18, 0x7b,
+ 0xad, 0x10, 0xdb, 0xb3, 0x23, 0xed, 0x5f, 0x25, 0x30, 0x17, 0x43, 0x47, 0x72, 0xf2, 0xdb, 0x92,
+ 0x9c, 0x5c, 0x4e, 0xc8, 0xc9, 0x7a, 0x96, 0xcd, 0xd7, 0x7a, 0x72, 0xb4, 0x9e, 0xfc, 0xa3, 0x02,
+ 0x66, 0x62, 0x6b, 0x77, 0x06, 0x82, 0xf2, 0x9e, 0x2c, 0x28, 0x5f, 0x29, 0x12, 0x34, 0x39, 0x8a,
+ 0xf2, 0xaf, 0x55, 0xc9, 0xf9, 0xaf, 0xbc, 0xa4, 0xfc, 0x29, 0x98, 0xeb, 0x5b, 0xba, 0x67, 0x90,
+ 0x75, 0x1d, 0x6b, 0x46, 0x00, 0x60, 0xaa, 0xa9, 0x9c, 0x7c, 0x97, 0x0b, 0xe9, 0x89, 0xe3, 0x6a,
+ 0x2e, 0x25, 0x26, 0x7d, 0x10, 0x59, 0x46, 0xba, 0xef, 0x41, 0x06, 0x1d, 0xca, 0x1c, 0x04, 0xbe,
+ 0x09, 0x26, 0x99, 0x7e, 0xd3, 0x3a, 0x64, 0x1b, 0x1b, 0x41, 0x60, 0x85, 0x9f, 0xb0, 0xf6, 0xa2,
+ 0x2e, 0x14, 0xc7, 0xc1, 0x43, 0x30, 0x6b, 0x5b, 0xdd, 0x2d, 0x6c, 0xe2, 0x1e, 0x61, 0x32, 0x63,
+ 0x97, 0xff, 0x8f, 0x87, 0x5f, 0x7e, 0x4d, 0xb4, 0xdf, 0x0a, 0x6e, 0x45, 0x76, 0xd3, 0x10, 0xf6,
+ 0x92, 0x98, 0xd1, 0xcc, 0x93, 0x3a, 0x8b, 0x12, 0x3a, 0xa9, 0xcf, 0xae, 0xfe, 0x1d, 0xf1, 0x6a,
+ 0x91, 0x08, 0x3b, 0xe5, 0x87, 0xd7, 0xbc, 0xbb, 0xbd, 0xda, 0xa9, 0xbe, 0x9a, 0xfe, 0xbb, 0x02,
+ 0x2e, 0xa6, 0x8e, 0xca, 0x2f, 0xf1, 0x76, 0x2d, 0x25, 0xcf, 0xcb, 0x27, 0x90, 0xe7, 0x6b, 0x60,
+ 0x46, 0x7c, 0xb0, 0x4d, 0xa8, 0xfb, 0xf0, 0xfd, 0x67, 0x5d, 0xee, 0x46, 0x49, 0x7c, 0xd6, 0xed,
+ 0x5e, 0xf5, 0x84, 0xb7, 0x7b, 0x71, 0x2f, 0xc4, 0x1f, 0x90, 0xfc, 0xd0, 0x4b, 0x7b, 0x21, 0xfe,
+ 0x87, 0x94, 0xc4, 0x33, 0x85, 0xe0, 0xb3, 0x86, 0x0c, 0xe3, 0xb2, 0x42, 0xd8, 0x97, 0x7a, 0x51,
+ 0x02, 0xfd, 0x85, 0x3e, 0x4a, 0xe2, 0x8c, 0x8f, 0x92, 0x2b, 0x45, 0xe2, 0xb9, 0xf8, 0xbb, 0xc9,
+ 0xdf, 0x14, 0xf0, 0x52, 0x6e, 0x22, 0xc0, 0x35, 0xa9, 0xec, 0xae, 0x24, 0xca, 0xee, 0xb7, 0x72,
+ 0x0d, 0x63, 0xb5, 0xd7, 0xc9, 0xbe, 0x9a, 0x7b, 0xa7, 0xd8, 0xd5, 0x5c, 0x86, 0x76, 0x1f, 0x7d,
+ 0x47, 0xd7, 0x5e, 0x79, 0xf2, 0xb4, 0x71, 0xee, 0xe3, 0xa7, 0x8d, 0x73, 0x9f, 0x3e, 0x6d, 0x9c,
+ 0xfb, 0xd9, 0xb0, 0xa1, 0x3c, 0x19, 0x36, 0x94, 0x8f, 0x87, 0x0d, 0xe5, 0xd3, 0x61, 0x43, 0xf9,
+ 0xfb, 0xb0, 0xa1, 0xfc, 0xfa, 0xb3, 0xc6, 0xb9, 0x0f, 0xc6, 0xc5, 0x88, 0xff, 0x0b, 0x00, 0x00,
+ 0xff, 0xff, 0xe4, 0x8f, 0x6a, 0x57, 0x17, 0x29, 0x00, 0x00,
}
diff --git a/staging/src/k8s.io/api/apps/v1beta2/generated.proto b/staging/src/k8s.io/api/apps/v1beta2/generated.proto
index 6bb0e4f1a9..6e4d1d85e0 100644
--- a/staging/src/k8s.io/api/apps/v1beta2/generated.proto
+++ b/staging/src/k8s.io/api/apps/v1beta2/generated.proto
@@ -596,6 +596,27 @@ message StatefulSet {
optional StatefulSetStatus status = 3;
}
+// StatefulSetCondition describes the state of a statefulset at a certain point.
+message StatefulSetCondition {
+ // Type of statefulset condition.
+ optional string type = 1;
+
+ // Status of the condition, one of True, False, Unknown.
+ optional string status = 2;
+
+ // Last time the condition transitioned from one status to another.
+ // +optional
+ optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
+
+ // The reason for the condition's last transition.
+ // +optional
+ optional string reason = 4;
+
+ // A human readable message indicating details about the transition.
+ // +optional
+ optional string message = 5;
+}
+
// StatefulSetList is a collection of StatefulSets.
message StatefulSetList {
// +optional
@@ -700,6 +721,12 @@ message StatefulSetStatus {
// newest ControllerRevision.
// +optional
optional int32 collisionCount = 9;
+
+ // Represents the latest available observations of a statefulset's current state.
+ // +optional
+ // +patchMergeKey=type
+ // +patchStrategy=merge
+ repeated StatefulSetCondition conditions = 10;
}
// StatefulSetUpdateStrategy indicates the strategy that the StatefulSet
diff --git a/staging/src/k8s.io/api/apps/v1beta2/types.go b/staging/src/k8s.io/api/apps/v1beta2/types.go
index e45884eaca..aaeed4e4d7 100644
--- a/staging/src/k8s.io/api/apps/v1beta2/types.go
+++ b/staging/src/k8s.io/api/apps/v1beta2/types.go
@@ -254,6 +254,31 @@ type StatefulSetStatus struct {
// newest ControllerRevision.
// +optional
CollisionCount *int32 `json:"collisionCount,omitempty" protobuf:"varint,9,opt,name=collisionCount"`
+
+ // Represents the latest available observations of a statefulset's current state.
+ // +optional
+ // +patchMergeKey=type
+ // +patchStrategy=merge
+ Conditions []StatefulSetCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,10,rep,name=conditions"`
+}
+
+type StatefulSetConditionType string
+
+// StatefulSetCondition describes the state of a statefulset at a certain point.
+type StatefulSetCondition struct {
+ // Type of statefulset condition.
+ Type StatefulSetConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=StatefulSetConditionType"`
+ // Status of the condition, one of True, False, Unknown.
+ Status v1.ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=k8s.io/api/core/v1.ConditionStatus"`
+ // Last time the condition transitioned from one status to another.
+ // +optional
+ LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,3,opt,name=lastTransitionTime"`
+ // The reason for the condition's last transition.
+ // +optional
+ Reason string `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"`
+ // A human readable message indicating details about the transition.
+ // +optional
+ Message string `json:"message,omitempty" protobuf:"bytes,5,opt,name=message"`
}
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
diff --git a/staging/src/k8s.io/api/apps/v1beta2/types_swagger_doc_generated.go b/staging/src/k8s.io/api/apps/v1beta2/types_swagger_doc_generated.go
index aea9d46df0..ae49422681 100644
--- a/staging/src/k8s.io/api/apps/v1beta2/types_swagger_doc_generated.go
+++ b/staging/src/k8s.io/api/apps/v1beta2/types_swagger_doc_generated.go
@@ -329,6 +329,19 @@ func (StatefulSet) SwaggerDoc() map[string]string {
return map_StatefulSet
}
+var map_StatefulSetCondition = map[string]string{
+ "": "StatefulSetCondition describes the state of a statefulset at a certain point.",
+ "type": "Type of statefulset condition.",
+ "status": "Status of the condition, one of True, False, Unknown.",
+ "lastTransitionTime": "Last time the condition transitioned from one status to another.",
+ "reason": "The reason for the condition's last transition.",
+ "message": "A human readable message indicating details about the transition.",
+}
+
+func (StatefulSetCondition) SwaggerDoc() map[string]string {
+ return map_StatefulSetCondition
+}
+
var map_StatefulSetList = map[string]string{
"": "StatefulSetList is a collection of StatefulSets.",
}
@@ -363,6 +376,7 @@ var map_StatefulSetStatus = map[string]string{
"currentRevision": "currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas).",
"updateRevision": "updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas)",
"collisionCount": "collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.",
+ "conditions": "Represents the latest available observations of a statefulset's current state.",
}
func (StatefulSetStatus) SwaggerDoc() map[string]string {
diff --git a/staging/src/k8s.io/api/apps/v1beta2/zz_generated.deepcopy.go b/staging/src/k8s.io/api/apps/v1beta2/zz_generated.deepcopy.go
index 2150301552..d25c869bb7 100644
--- a/staging/src/k8s.io/api/apps/v1beta2/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/api/apps/v1beta2/zz_generated.deepcopy.go
@@ -23,145 +23,10 @@ package v1beta2
import (
core_v1 "k8s.io/api/core/v1"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
intstr "k8s.io/apimachinery/pkg/util/intstr"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ControllerRevision).DeepCopyInto(out.(*ControllerRevision))
- return nil
- }, InType: reflect.TypeOf(&ControllerRevision{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ControllerRevisionList).DeepCopyInto(out.(*ControllerRevisionList))
- return nil
- }, InType: reflect.TypeOf(&ControllerRevisionList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DaemonSet).DeepCopyInto(out.(*DaemonSet))
- return nil
- }, InType: reflect.TypeOf(&DaemonSet{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DaemonSetCondition).DeepCopyInto(out.(*DaemonSetCondition))
- return nil
- }, InType: reflect.TypeOf(&DaemonSetCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DaemonSetList).DeepCopyInto(out.(*DaemonSetList))
- return nil
- }, InType: reflect.TypeOf(&DaemonSetList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DaemonSetSpec).DeepCopyInto(out.(*DaemonSetSpec))
- return nil
- }, InType: reflect.TypeOf(&DaemonSetSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DaemonSetStatus).DeepCopyInto(out.(*DaemonSetStatus))
- return nil
- }, InType: reflect.TypeOf(&DaemonSetStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DaemonSetUpdateStrategy).DeepCopyInto(out.(*DaemonSetUpdateStrategy))
- return nil
- }, InType: reflect.TypeOf(&DaemonSetUpdateStrategy{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Deployment).DeepCopyInto(out.(*Deployment))
- return nil
- }, InType: reflect.TypeOf(&Deployment{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DeploymentCondition).DeepCopyInto(out.(*DeploymentCondition))
- return nil
- }, InType: reflect.TypeOf(&DeploymentCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DeploymentList).DeepCopyInto(out.(*DeploymentList))
- return nil
- }, InType: reflect.TypeOf(&DeploymentList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DeploymentSpec).DeepCopyInto(out.(*DeploymentSpec))
- return nil
- }, InType: reflect.TypeOf(&DeploymentSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DeploymentStatus).DeepCopyInto(out.(*DeploymentStatus))
- return nil
- }, InType: reflect.TypeOf(&DeploymentStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DeploymentStrategy).DeepCopyInto(out.(*DeploymentStrategy))
- return nil
- }, InType: reflect.TypeOf(&DeploymentStrategy{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicaSet).DeepCopyInto(out.(*ReplicaSet))
- return nil
- }, InType: reflect.TypeOf(&ReplicaSet{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicaSetCondition).DeepCopyInto(out.(*ReplicaSetCondition))
- return nil
- }, InType: reflect.TypeOf(&ReplicaSetCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicaSetList).DeepCopyInto(out.(*ReplicaSetList))
- return nil
- }, InType: reflect.TypeOf(&ReplicaSetList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicaSetSpec).DeepCopyInto(out.(*ReplicaSetSpec))
- return nil
- }, InType: reflect.TypeOf(&ReplicaSetSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicaSetStatus).DeepCopyInto(out.(*ReplicaSetStatus))
- return nil
- }, InType: reflect.TypeOf(&ReplicaSetStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RollingUpdateDaemonSet).DeepCopyInto(out.(*RollingUpdateDaemonSet))
- return nil
- }, InType: reflect.TypeOf(&RollingUpdateDaemonSet{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RollingUpdateDeployment).DeepCopyInto(out.(*RollingUpdateDeployment))
- return nil
- }, InType: reflect.TypeOf(&RollingUpdateDeployment{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RollingUpdateStatefulSetStrategy).DeepCopyInto(out.(*RollingUpdateStatefulSetStrategy))
- return nil
- }, InType: reflect.TypeOf(&RollingUpdateStatefulSetStrategy{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Scale).DeepCopyInto(out.(*Scale))
- return nil
- }, InType: reflect.TypeOf(&Scale{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ScaleSpec).DeepCopyInto(out.(*ScaleSpec))
- return nil
- }, InType: reflect.TypeOf(&ScaleSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ScaleStatus).DeepCopyInto(out.(*ScaleStatus))
- return nil
- }, InType: reflect.TypeOf(&ScaleStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StatefulSet).DeepCopyInto(out.(*StatefulSet))
- return nil
- }, InType: reflect.TypeOf(&StatefulSet{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StatefulSetList).DeepCopyInto(out.(*StatefulSetList))
- return nil
- }, InType: reflect.TypeOf(&StatefulSetList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StatefulSetSpec).DeepCopyInto(out.(*StatefulSetSpec))
- return nil
- }, InType: reflect.TypeOf(&StatefulSetSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StatefulSetStatus).DeepCopyInto(out.(*StatefulSetStatus))
- return nil
- }, InType: reflect.TypeOf(&StatefulSetStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StatefulSetUpdateStrategy).DeepCopyInto(out.(*StatefulSetUpdateStrategy))
- return nil
- }, InType: reflect.TypeOf(&StatefulSetUpdateStrategy{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ControllerRevision) DeepCopyInto(out *ControllerRevision) {
*out = *in
@@ -908,6 +773,23 @@ func (in *StatefulSet) DeepCopyObject() runtime.Object {
}
}
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *StatefulSetCondition) DeepCopyInto(out *StatefulSetCondition) {
+ *out = *in
+ in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime)
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StatefulSetCondition.
+func (in *StatefulSetCondition) DeepCopy() *StatefulSetCondition {
+ if in == nil {
+ return nil
+ }
+ out := new(StatefulSetCondition)
+ in.DeepCopyInto(out)
+ return out
+}
+
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *StatefulSetList) DeepCopyInto(out *StatefulSetList) {
*out = *in
@@ -1006,6 +888,13 @@ func (in *StatefulSetStatus) DeepCopyInto(out *StatefulSetStatus) {
**out = **in
}
}
+ if in.Conditions != nil {
+ in, out := &in.Conditions, &out.Conditions
+ *out = make([]StatefulSetCondition, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
return
}
diff --git a/staging/src/k8s.io/api/authentication/v1/BUILD b/staging/src/k8s.io/api/authentication/v1/BUILD
index 3a378d34e6..f2e2b1a989 100644
--- a/staging/src/k8s.io/api/authentication/v1/BUILD
+++ b/staging/src/k8s.io/api/authentication/v1/BUILD
@@ -20,7 +20,6 @@ go_library(
"//vendor/github.com/gogo/protobuf/proto:go_default_library",
"//vendor/github.com/gogo/protobuf/sortkeys:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/api/authentication/v1/doc.go b/staging/src/k8s.io/api/authentication/v1/doc.go
index 15b117a4c9..2d2ed2ee82 100644
--- a/staging/src/k8s.io/api/authentication/v1/doc.go
+++ b/staging/src/k8s.io/api/authentication/v1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +groupName=authentication.k8s.io
// +k8s:openapi-gen=true
package v1 // import "k8s.io/api/authentication/v1"
diff --git a/staging/src/k8s.io/api/authentication/v1/zz_generated.deepcopy.go b/staging/src/k8s.io/api/authentication/v1/zz_generated.deepcopy.go
index c1717c1cd8..243de7590f 100644
--- a/staging/src/k8s.io/api/authentication/v1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/api/authentication/v1/zz_generated.deepcopy.go
@@ -21,40 +21,9 @@ limitations under the License.
package v1
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TokenReview).DeepCopyInto(out.(*TokenReview))
- return nil
- }, InType: reflect.TypeOf(&TokenReview{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TokenReviewSpec).DeepCopyInto(out.(*TokenReviewSpec))
- return nil
- }, InType: reflect.TypeOf(&TokenReviewSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TokenReviewStatus).DeepCopyInto(out.(*TokenReviewStatus))
- return nil
- }, InType: reflect.TypeOf(&TokenReviewStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*UserInfo).DeepCopyInto(out.(*UserInfo))
- return nil
- }, InType: reflect.TypeOf(&UserInfo{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TokenReview) DeepCopyInto(out *TokenReview) {
*out = *in
diff --git a/staging/src/k8s.io/api/authentication/v1beta1/BUILD b/staging/src/k8s.io/api/authentication/v1beta1/BUILD
index b02c3602aa..998d793fef 100644
--- a/staging/src/k8s.io/api/authentication/v1beta1/BUILD
+++ b/staging/src/k8s.io/api/authentication/v1beta1/BUILD
@@ -20,7 +20,6 @@ go_library(
"//vendor/github.com/gogo/protobuf/proto:go_default_library",
"//vendor/github.com/gogo/protobuf/sortkeys:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/api/authentication/v1beta1/doc.go b/staging/src/k8s.io/api/authentication/v1beta1/doc.go
index 065cfbd995..e0de315d40 100644
--- a/staging/src/k8s.io/api/authentication/v1beta1/doc.go
+++ b/staging/src/k8s.io/api/authentication/v1beta1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +groupName=authentication.k8s.io
// +k8s:openapi-gen=true
package v1beta1 // import "k8s.io/api/authentication/v1beta1"
diff --git a/staging/src/k8s.io/api/authentication/v1beta1/zz_generated.deepcopy.go b/staging/src/k8s.io/api/authentication/v1beta1/zz_generated.deepcopy.go
index 1b94ececa1..aa8d2ef3ad 100644
--- a/staging/src/k8s.io/api/authentication/v1beta1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/api/authentication/v1beta1/zz_generated.deepcopy.go
@@ -21,40 +21,9 @@ limitations under the License.
package v1beta1
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TokenReview).DeepCopyInto(out.(*TokenReview))
- return nil
- }, InType: reflect.TypeOf(&TokenReview{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TokenReviewSpec).DeepCopyInto(out.(*TokenReviewSpec))
- return nil
- }, InType: reflect.TypeOf(&TokenReviewSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TokenReviewStatus).DeepCopyInto(out.(*TokenReviewStatus))
- return nil
- }, InType: reflect.TypeOf(&TokenReviewStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*UserInfo).DeepCopyInto(out.(*UserInfo))
- return nil
- }, InType: reflect.TypeOf(&UserInfo{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TokenReview) DeepCopyInto(out *TokenReview) {
*out = *in
diff --git a/staging/src/k8s.io/api/authorization/v1/BUILD b/staging/src/k8s.io/api/authorization/v1/BUILD
index 6bb16adcb0..af9e74a635 100644
--- a/staging/src/k8s.io/api/authorization/v1/BUILD
+++ b/staging/src/k8s.io/api/authorization/v1/BUILD
@@ -20,7 +20,6 @@ go_library(
"//vendor/github.com/gogo/protobuf/proto:go_default_library",
"//vendor/github.com/gogo/protobuf/sortkeys:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/api/authorization/v1/doc.go b/staging/src/k8s.io/api/authorization/v1/doc.go
index b02e09caea..c06b798df8 100644
--- a/staging/src/k8s.io/api/authorization/v1/doc.go
+++ b/staging/src/k8s.io/api/authorization/v1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:openapi-gen=true
// +groupName=authorization.k8s.io
diff --git a/staging/src/k8s.io/api/authorization/v1/zz_generated.deepcopy.go b/staging/src/k8s.io/api/authorization/v1/zz_generated.deepcopy.go
index 916974ffcf..a415b2b1d6 100644
--- a/staging/src/k8s.io/api/authorization/v1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/api/authorization/v1/zz_generated.deepcopy.go
@@ -21,76 +21,9 @@ limitations under the License.
package v1
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*LocalSubjectAccessReview).DeepCopyInto(out.(*LocalSubjectAccessReview))
- return nil
- }, InType: reflect.TypeOf(&LocalSubjectAccessReview{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NonResourceAttributes).DeepCopyInto(out.(*NonResourceAttributes))
- return nil
- }, InType: reflect.TypeOf(&NonResourceAttributes{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NonResourceRule).DeepCopyInto(out.(*NonResourceRule))
- return nil
- }, InType: reflect.TypeOf(&NonResourceRule{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ResourceAttributes).DeepCopyInto(out.(*ResourceAttributes))
- return nil
- }, InType: reflect.TypeOf(&ResourceAttributes{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ResourceRule).DeepCopyInto(out.(*ResourceRule))
- return nil
- }, InType: reflect.TypeOf(&ResourceRule{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SelfSubjectAccessReview).DeepCopyInto(out.(*SelfSubjectAccessReview))
- return nil
- }, InType: reflect.TypeOf(&SelfSubjectAccessReview{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SelfSubjectAccessReviewSpec).DeepCopyInto(out.(*SelfSubjectAccessReviewSpec))
- return nil
- }, InType: reflect.TypeOf(&SelfSubjectAccessReviewSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SelfSubjectRulesReview).DeepCopyInto(out.(*SelfSubjectRulesReview))
- return nil
- }, InType: reflect.TypeOf(&SelfSubjectRulesReview{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SelfSubjectRulesReviewSpec).DeepCopyInto(out.(*SelfSubjectRulesReviewSpec))
- return nil
- }, InType: reflect.TypeOf(&SelfSubjectRulesReviewSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SubjectAccessReview).DeepCopyInto(out.(*SubjectAccessReview))
- return nil
- }, InType: reflect.TypeOf(&SubjectAccessReview{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SubjectAccessReviewSpec).DeepCopyInto(out.(*SubjectAccessReviewSpec))
- return nil
- }, InType: reflect.TypeOf(&SubjectAccessReviewSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SubjectAccessReviewStatus).DeepCopyInto(out.(*SubjectAccessReviewStatus))
- return nil
- }, InType: reflect.TypeOf(&SubjectAccessReviewStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SubjectRulesReviewStatus).DeepCopyInto(out.(*SubjectRulesReviewStatus))
- return nil
- }, InType: reflect.TypeOf(&SubjectRulesReviewStatus{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *LocalSubjectAccessReview) DeepCopyInto(out *LocalSubjectAccessReview) {
*out = *in
diff --git a/staging/src/k8s.io/api/authorization/v1beta1/BUILD b/staging/src/k8s.io/api/authorization/v1beta1/BUILD
index 9391dcc585..06c953f2a9 100644
--- a/staging/src/k8s.io/api/authorization/v1beta1/BUILD
+++ b/staging/src/k8s.io/api/authorization/v1beta1/BUILD
@@ -20,7 +20,6 @@ go_library(
"//vendor/github.com/gogo/protobuf/proto:go_default_library",
"//vendor/github.com/gogo/protobuf/sortkeys:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/api/authorization/v1beta1/doc.go b/staging/src/k8s.io/api/authorization/v1beta1/doc.go
index 6809b811e7..ea4f802e28 100644
--- a/staging/src/k8s.io/api/authorization/v1beta1/doc.go
+++ b/staging/src/k8s.io/api/authorization/v1beta1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:openapi-gen=true
// +groupName=authorization.k8s.io
diff --git a/staging/src/k8s.io/api/authorization/v1beta1/zz_generated.deepcopy.go b/staging/src/k8s.io/api/authorization/v1beta1/zz_generated.deepcopy.go
index aeb77ddbc8..fcb0067a38 100644
--- a/staging/src/k8s.io/api/authorization/v1beta1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/api/authorization/v1beta1/zz_generated.deepcopy.go
@@ -21,76 +21,9 @@ limitations under the License.
package v1beta1
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*LocalSubjectAccessReview).DeepCopyInto(out.(*LocalSubjectAccessReview))
- return nil
- }, InType: reflect.TypeOf(&LocalSubjectAccessReview{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NonResourceAttributes).DeepCopyInto(out.(*NonResourceAttributes))
- return nil
- }, InType: reflect.TypeOf(&NonResourceAttributes{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NonResourceRule).DeepCopyInto(out.(*NonResourceRule))
- return nil
- }, InType: reflect.TypeOf(&NonResourceRule{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ResourceAttributes).DeepCopyInto(out.(*ResourceAttributes))
- return nil
- }, InType: reflect.TypeOf(&ResourceAttributes{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ResourceRule).DeepCopyInto(out.(*ResourceRule))
- return nil
- }, InType: reflect.TypeOf(&ResourceRule{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SelfSubjectAccessReview).DeepCopyInto(out.(*SelfSubjectAccessReview))
- return nil
- }, InType: reflect.TypeOf(&SelfSubjectAccessReview{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SelfSubjectAccessReviewSpec).DeepCopyInto(out.(*SelfSubjectAccessReviewSpec))
- return nil
- }, InType: reflect.TypeOf(&SelfSubjectAccessReviewSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SelfSubjectRulesReview).DeepCopyInto(out.(*SelfSubjectRulesReview))
- return nil
- }, InType: reflect.TypeOf(&SelfSubjectRulesReview{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SelfSubjectRulesReviewSpec).DeepCopyInto(out.(*SelfSubjectRulesReviewSpec))
- return nil
- }, InType: reflect.TypeOf(&SelfSubjectRulesReviewSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SubjectAccessReview).DeepCopyInto(out.(*SubjectAccessReview))
- return nil
- }, InType: reflect.TypeOf(&SubjectAccessReview{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SubjectAccessReviewSpec).DeepCopyInto(out.(*SubjectAccessReviewSpec))
- return nil
- }, InType: reflect.TypeOf(&SubjectAccessReviewSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SubjectAccessReviewStatus).DeepCopyInto(out.(*SubjectAccessReviewStatus))
- return nil
- }, InType: reflect.TypeOf(&SubjectAccessReviewStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SubjectRulesReviewStatus).DeepCopyInto(out.(*SubjectRulesReviewStatus))
- return nil
- }, InType: reflect.TypeOf(&SubjectRulesReviewStatus{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *LocalSubjectAccessReview) DeepCopyInto(out *LocalSubjectAccessReview) {
*out = *in
diff --git a/staging/src/k8s.io/api/autoscaling/v1/BUILD b/staging/src/k8s.io/api/autoscaling/v1/BUILD
index 22c95c806c..ccf587be09 100644
--- a/staging/src/k8s.io/api/autoscaling/v1/BUILD
+++ b/staging/src/k8s.io/api/autoscaling/v1/BUILD
@@ -21,7 +21,6 @@ go_library(
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/api/autoscaling/v1/doc.go b/staging/src/k8s.io/api/autoscaling/v1/doc.go
index 1689adb5cb..9c3be845f0 100644
--- a/staging/src/k8s.io/api/autoscaling/v1/doc.go
+++ b/staging/src/k8s.io/api/autoscaling/v1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:openapi-gen=true
package v1 // import "k8s.io/api/autoscaling/v1"
diff --git a/staging/src/k8s.io/api/autoscaling/v1/zz_generated.deepcopy.go b/staging/src/k8s.io/api/autoscaling/v1/zz_generated.deepcopy.go
index 20848f20c8..de4e6daa38 100644
--- a/staging/src/k8s.io/api/autoscaling/v1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/api/autoscaling/v1/zz_generated.deepcopy.go
@@ -23,92 +23,9 @@ package v1
import (
resource "k8s.io/apimachinery/pkg/api/resource"
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CrossVersionObjectReference).DeepCopyInto(out.(*CrossVersionObjectReference))
- return nil
- }, InType: reflect.TypeOf(&CrossVersionObjectReference{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*HorizontalPodAutoscaler).DeepCopyInto(out.(*HorizontalPodAutoscaler))
- return nil
- }, InType: reflect.TypeOf(&HorizontalPodAutoscaler{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*HorizontalPodAutoscalerCondition).DeepCopyInto(out.(*HorizontalPodAutoscalerCondition))
- return nil
- }, InType: reflect.TypeOf(&HorizontalPodAutoscalerCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*HorizontalPodAutoscalerList).DeepCopyInto(out.(*HorizontalPodAutoscalerList))
- return nil
- }, InType: reflect.TypeOf(&HorizontalPodAutoscalerList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*HorizontalPodAutoscalerSpec).DeepCopyInto(out.(*HorizontalPodAutoscalerSpec))
- return nil
- }, InType: reflect.TypeOf(&HorizontalPodAutoscalerSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*HorizontalPodAutoscalerStatus).DeepCopyInto(out.(*HorizontalPodAutoscalerStatus))
- return nil
- }, InType: reflect.TypeOf(&HorizontalPodAutoscalerStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*MetricSpec).DeepCopyInto(out.(*MetricSpec))
- return nil
- }, InType: reflect.TypeOf(&MetricSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*MetricStatus).DeepCopyInto(out.(*MetricStatus))
- return nil
- }, InType: reflect.TypeOf(&MetricStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ObjectMetricSource).DeepCopyInto(out.(*ObjectMetricSource))
- return nil
- }, InType: reflect.TypeOf(&ObjectMetricSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ObjectMetricStatus).DeepCopyInto(out.(*ObjectMetricStatus))
- return nil
- }, InType: reflect.TypeOf(&ObjectMetricStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodsMetricSource).DeepCopyInto(out.(*PodsMetricSource))
- return nil
- }, InType: reflect.TypeOf(&PodsMetricSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodsMetricStatus).DeepCopyInto(out.(*PodsMetricStatus))
- return nil
- }, InType: reflect.TypeOf(&PodsMetricStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ResourceMetricSource).DeepCopyInto(out.(*ResourceMetricSource))
- return nil
- }, InType: reflect.TypeOf(&ResourceMetricSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ResourceMetricStatus).DeepCopyInto(out.(*ResourceMetricStatus))
- return nil
- }, InType: reflect.TypeOf(&ResourceMetricStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Scale).DeepCopyInto(out.(*Scale))
- return nil
- }, InType: reflect.TypeOf(&Scale{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ScaleSpec).DeepCopyInto(out.(*ScaleSpec))
- return nil
- }, InType: reflect.TypeOf(&ScaleSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ScaleStatus).DeepCopyInto(out.(*ScaleStatus))
- return nil
- }, InType: reflect.TypeOf(&ScaleStatus{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *CrossVersionObjectReference) DeepCopyInto(out *CrossVersionObjectReference) {
*out = *in
diff --git a/staging/src/k8s.io/api/autoscaling/v2beta1/BUILD b/staging/src/k8s.io/api/autoscaling/v2beta1/BUILD
index ea811df6ae..32fc333eb5 100644
--- a/staging/src/k8s.io/api/autoscaling/v2beta1/BUILD
+++ b/staging/src/k8s.io/api/autoscaling/v2beta1/BUILD
@@ -21,7 +21,6 @@ go_library(
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/api/autoscaling/v2beta1/doc.go b/staging/src/k8s.io/api/autoscaling/v2beta1/doc.go
index 689f369bfe..da9789e5cb 100644
--- a/staging/src/k8s.io/api/autoscaling/v2beta1/doc.go
+++ b/staging/src/k8s.io/api/autoscaling/v2beta1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:openapi-gen=true
package v2beta1 // import "k8s.io/api/autoscaling/v2beta1"
diff --git a/staging/src/k8s.io/api/autoscaling/v2beta1/zz_generated.deepcopy.go b/staging/src/k8s.io/api/autoscaling/v2beta1/zz_generated.deepcopy.go
index b538e5b40c..0bb3dd30c6 100644
--- a/staging/src/k8s.io/api/autoscaling/v2beta1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/api/autoscaling/v2beta1/zz_generated.deepcopy.go
@@ -23,80 +23,9 @@ package v2beta1
import (
resource "k8s.io/apimachinery/pkg/api/resource"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CrossVersionObjectReference).DeepCopyInto(out.(*CrossVersionObjectReference))
- return nil
- }, InType: reflect.TypeOf(&CrossVersionObjectReference{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*HorizontalPodAutoscaler).DeepCopyInto(out.(*HorizontalPodAutoscaler))
- return nil
- }, InType: reflect.TypeOf(&HorizontalPodAutoscaler{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*HorizontalPodAutoscalerCondition).DeepCopyInto(out.(*HorizontalPodAutoscalerCondition))
- return nil
- }, InType: reflect.TypeOf(&HorizontalPodAutoscalerCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*HorizontalPodAutoscalerList).DeepCopyInto(out.(*HorizontalPodAutoscalerList))
- return nil
- }, InType: reflect.TypeOf(&HorizontalPodAutoscalerList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*HorizontalPodAutoscalerSpec).DeepCopyInto(out.(*HorizontalPodAutoscalerSpec))
- return nil
- }, InType: reflect.TypeOf(&HorizontalPodAutoscalerSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*HorizontalPodAutoscalerStatus).DeepCopyInto(out.(*HorizontalPodAutoscalerStatus))
- return nil
- }, InType: reflect.TypeOf(&HorizontalPodAutoscalerStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*MetricSpec).DeepCopyInto(out.(*MetricSpec))
- return nil
- }, InType: reflect.TypeOf(&MetricSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*MetricStatus).DeepCopyInto(out.(*MetricStatus))
- return nil
- }, InType: reflect.TypeOf(&MetricStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ObjectMetricSource).DeepCopyInto(out.(*ObjectMetricSource))
- return nil
- }, InType: reflect.TypeOf(&ObjectMetricSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ObjectMetricStatus).DeepCopyInto(out.(*ObjectMetricStatus))
- return nil
- }, InType: reflect.TypeOf(&ObjectMetricStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodsMetricSource).DeepCopyInto(out.(*PodsMetricSource))
- return nil
- }, InType: reflect.TypeOf(&PodsMetricSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodsMetricStatus).DeepCopyInto(out.(*PodsMetricStatus))
- return nil
- }, InType: reflect.TypeOf(&PodsMetricStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ResourceMetricSource).DeepCopyInto(out.(*ResourceMetricSource))
- return nil
- }, InType: reflect.TypeOf(&ResourceMetricSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ResourceMetricStatus).DeepCopyInto(out.(*ResourceMetricStatus))
- return nil
- }, InType: reflect.TypeOf(&ResourceMetricStatus{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *CrossVersionObjectReference) DeepCopyInto(out *CrossVersionObjectReference) {
*out = *in
diff --git a/staging/src/k8s.io/api/batch/v1/BUILD b/staging/src/k8s.io/api/batch/v1/BUILD
index 246a99cfa6..a7ca7a2326 100644
--- a/staging/src/k8s.io/api/batch/v1/BUILD
+++ b/staging/src/k8s.io/api/batch/v1/BUILD
@@ -20,7 +20,6 @@ go_library(
"//vendor/github.com/gogo/protobuf/proto:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/api/batch/v1/doc.go b/staging/src/k8s.io/api/batch/v1/doc.go
index 52a1d9039b..04491807f2 100644
--- a/staging/src/k8s.io/api/batch/v1/doc.go
+++ b/staging/src/k8s.io/api/batch/v1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:openapi-gen=true
package v1 // import "k8s.io/api/batch/v1"
diff --git a/staging/src/k8s.io/api/batch/v1/zz_generated.deepcopy.go b/staging/src/k8s.io/api/batch/v1/zz_generated.deepcopy.go
index 8738bd5d2c..fa9ff4f96c 100644
--- a/staging/src/k8s.io/api/batch/v1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/api/batch/v1/zz_generated.deepcopy.go
@@ -22,44 +22,9 @@ package v1
import (
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Job).DeepCopyInto(out.(*Job))
- return nil
- }, InType: reflect.TypeOf(&Job{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*JobCondition).DeepCopyInto(out.(*JobCondition))
- return nil
- }, InType: reflect.TypeOf(&JobCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*JobList).DeepCopyInto(out.(*JobList))
- return nil
- }, InType: reflect.TypeOf(&JobList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*JobSpec).DeepCopyInto(out.(*JobSpec))
- return nil
- }, InType: reflect.TypeOf(&JobSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*JobStatus).DeepCopyInto(out.(*JobStatus))
- return nil
- }, InType: reflect.TypeOf(&JobStatus{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Job) DeepCopyInto(out *Job) {
*out = *in
diff --git a/staging/src/k8s.io/api/batch/v1beta1/BUILD b/staging/src/k8s.io/api/batch/v1beta1/BUILD
index 9983638885..3f0197b9c6 100644
--- a/staging/src/k8s.io/api/batch/v1beta1/BUILD
+++ b/staging/src/k8s.io/api/batch/v1beta1/BUILD
@@ -21,7 +21,6 @@ go_library(
"//vendor/k8s.io/api/batch/v1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/api/batch/v1beta1/doc.go b/staging/src/k8s.io/api/batch/v1beta1/doc.go
index 653ebe0403..43020ed05c 100644
--- a/staging/src/k8s.io/api/batch/v1beta1/doc.go
+++ b/staging/src/k8s.io/api/batch/v1beta1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:openapi-gen=true
package v1beta1 // import "k8s.io/api/batch/v1beta1"
diff --git a/staging/src/k8s.io/api/batch/v1beta1/zz_generated.deepcopy.go b/staging/src/k8s.io/api/batch/v1beta1/zz_generated.deepcopy.go
index c730ca982e..0f8562f8f4 100644
--- a/staging/src/k8s.io/api/batch/v1beta1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/api/batch/v1beta1/zz_generated.deepcopy.go
@@ -23,48 +23,9 @@ package v1beta1
import (
v1 "k8s.io/api/core/v1"
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CronJob).DeepCopyInto(out.(*CronJob))
- return nil
- }, InType: reflect.TypeOf(&CronJob{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CronJobList).DeepCopyInto(out.(*CronJobList))
- return nil
- }, InType: reflect.TypeOf(&CronJobList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CronJobSpec).DeepCopyInto(out.(*CronJobSpec))
- return nil
- }, InType: reflect.TypeOf(&CronJobSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CronJobStatus).DeepCopyInto(out.(*CronJobStatus))
- return nil
- }, InType: reflect.TypeOf(&CronJobStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*JobTemplate).DeepCopyInto(out.(*JobTemplate))
- return nil
- }, InType: reflect.TypeOf(&JobTemplate{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*JobTemplateSpec).DeepCopyInto(out.(*JobTemplateSpec))
- return nil
- }, InType: reflect.TypeOf(&JobTemplateSpec{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *CronJob) DeepCopyInto(out *CronJob) {
*out = *in
diff --git a/staging/src/k8s.io/api/batch/v2alpha1/BUILD b/staging/src/k8s.io/api/batch/v2alpha1/BUILD
index 6c468eaa49..0fc0ab57ac 100644
--- a/staging/src/k8s.io/api/batch/v2alpha1/BUILD
+++ b/staging/src/k8s.io/api/batch/v2alpha1/BUILD
@@ -21,7 +21,6 @@ go_library(
"//vendor/k8s.io/api/batch/v1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/api/batch/v2alpha1/doc.go b/staging/src/k8s.io/api/batch/v2alpha1/doc.go
index 288275d6ea..f4ed01ad84 100644
--- a/staging/src/k8s.io/api/batch/v2alpha1/doc.go
+++ b/staging/src/k8s.io/api/batch/v2alpha1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:openapi-gen=true
package v2alpha1 // import "k8s.io/api/batch/v2alpha1"
diff --git a/staging/src/k8s.io/api/batch/v2alpha1/zz_generated.deepcopy.go b/staging/src/k8s.io/api/batch/v2alpha1/zz_generated.deepcopy.go
index b572f9ca3a..5474235d19 100644
--- a/staging/src/k8s.io/api/batch/v2alpha1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/api/batch/v2alpha1/zz_generated.deepcopy.go
@@ -23,48 +23,9 @@ package v2alpha1
import (
v1 "k8s.io/api/core/v1"
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CronJob).DeepCopyInto(out.(*CronJob))
- return nil
- }, InType: reflect.TypeOf(&CronJob{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CronJobList).DeepCopyInto(out.(*CronJobList))
- return nil
- }, InType: reflect.TypeOf(&CronJobList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CronJobSpec).DeepCopyInto(out.(*CronJobSpec))
- return nil
- }, InType: reflect.TypeOf(&CronJobSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CronJobStatus).DeepCopyInto(out.(*CronJobStatus))
- return nil
- }, InType: reflect.TypeOf(&CronJobStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*JobTemplate).DeepCopyInto(out.(*JobTemplate))
- return nil
- }, InType: reflect.TypeOf(&JobTemplate{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*JobTemplateSpec).DeepCopyInto(out.(*JobTemplateSpec))
- return nil
- }, InType: reflect.TypeOf(&JobTemplateSpec{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *CronJob) DeepCopyInto(out *CronJob) {
*out = *in
diff --git a/staging/src/k8s.io/api/certificates/v1beta1/BUILD b/staging/src/k8s.io/api/certificates/v1beta1/BUILD
index 95378e3ff3..4c94dd0648 100644
--- a/staging/src/k8s.io/api/certificates/v1beta1/BUILD
+++ b/staging/src/k8s.io/api/certificates/v1beta1/BUILD
@@ -20,7 +20,6 @@ go_library(
"//vendor/github.com/gogo/protobuf/proto:go_default_library",
"//vendor/github.com/gogo/protobuf/sortkeys:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/api/certificates/v1beta1/doc.go b/staging/src/k8s.io/api/certificates/v1beta1/doc.go
index d98ee7c3d7..fb23aadb0e 100644
--- a/staging/src/k8s.io/api/certificates/v1beta1/doc.go
+++ b/staging/src/k8s.io/api/certificates/v1beta1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:openapi-gen=true
// +groupName=certificates.k8s.io
diff --git a/staging/src/k8s.io/api/certificates/v1beta1/zz_generated.deepcopy.go b/staging/src/k8s.io/api/certificates/v1beta1/zz_generated.deepcopy.go
index 6ecc131181..de0715db62 100644
--- a/staging/src/k8s.io/api/certificates/v1beta1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/api/certificates/v1beta1/zz_generated.deepcopy.go
@@ -21,44 +21,9 @@ limitations under the License.
package v1beta1
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CertificateSigningRequest).DeepCopyInto(out.(*CertificateSigningRequest))
- return nil
- }, InType: reflect.TypeOf(&CertificateSigningRequest{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CertificateSigningRequestCondition).DeepCopyInto(out.(*CertificateSigningRequestCondition))
- return nil
- }, InType: reflect.TypeOf(&CertificateSigningRequestCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CertificateSigningRequestList).DeepCopyInto(out.(*CertificateSigningRequestList))
- return nil
- }, InType: reflect.TypeOf(&CertificateSigningRequestList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CertificateSigningRequestSpec).DeepCopyInto(out.(*CertificateSigningRequestSpec))
- return nil
- }, InType: reflect.TypeOf(&CertificateSigningRequestSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CertificateSigningRequestStatus).DeepCopyInto(out.(*CertificateSigningRequestStatus))
- return nil
- }, InType: reflect.TypeOf(&CertificateSigningRequestStatus{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *CertificateSigningRequest) DeepCopyInto(out *CertificateSigningRequest) {
*out = *in
diff --git a/staging/src/k8s.io/api/core/v1/BUILD b/staging/src/k8s.io/api/core/v1/BUILD
index da0d5bf6a2..2ffdd34530 100644
--- a/staging/src/k8s.io/api/core/v1/BUILD
+++ b/staging/src/k8s.io/api/core/v1/BUILD
@@ -38,7 +38,6 @@ go_library(
"//vendor/github.com/gogo/protobuf/sortkeys:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
diff --git a/staging/src/k8s.io/api/core/v1/doc.go b/staging/src/k8s.io/api/core/v1/doc.go
index a31af9ea49..96994c6245 100644
--- a/staging/src/k8s.io/api/core/v1/doc.go
+++ b/staging/src/k8s.io/api/core/v1/doc.go
@@ -15,7 +15,7 @@ limitations under the License.
*/
// +k8s:openapi-gen=true
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// Package v1 is the v1 version of the core API.
package v1 // import "k8s.io/api/core/v1"
diff --git a/staging/src/k8s.io/api/core/v1/generated.proto b/staging/src/k8s.io/api/core/v1/generated.proto
index 00e64a37e4..e9c513a8ce 100644
--- a/staging/src/k8s.io/api/core/v1/generated.proto
+++ b/staging/src/k8s.io/api/core/v1/generated.proto
@@ -2493,10 +2493,7 @@ message PodAffinityTerm {
// the labelSelector in the specified namespaces, where co-located is defined as running on a node
// whose value of the label with key topologyKey matches that of any node on which any of the
// selected pods is running.
- // For PreferredDuringScheduling pod anti-affinity, empty topologyKey is interpreted as "all topologies"
- // ("all topologies" here means all the topologyKeys indicated by scheduler command-line argument --failure-domains);
- // for affinity and for RequiredDuringScheduling pod anti-affinity, empty topologyKey is not allowed.
- // +optional
+ // Empty topologyKey is not allowed.
optional string topologyKey = 3;
}
diff --git a/staging/src/k8s.io/api/core/v1/types.go b/staging/src/k8s.io/api/core/v1/types.go
index 76755b91b1..c5ad91e67d 100644
--- a/staging/src/k8s.io/api/core/v1/types.go
+++ b/staging/src/k8s.io/api/core/v1/types.go
@@ -2486,11 +2486,8 @@ type PodAffinityTerm struct {
// the labelSelector in the specified namespaces, where co-located is defined as running on a node
// whose value of the label with key topologyKey matches that of any node on which any of the
// selected pods is running.
- // For PreferredDuringScheduling pod anti-affinity, empty topologyKey is interpreted as "all topologies"
- // ("all topologies" here means all the topologyKeys indicated by scheduler command-line argument --failure-domains);
- // for affinity and for RequiredDuringScheduling pod anti-affinity, empty topologyKey is not allowed.
- // +optional
- TopologyKey string `json:"topologyKey,omitempty" protobuf:"bytes,3,opt,name=topologyKey"`
+ // Empty topologyKey is not allowed.
+ TopologyKey string `json:"topologyKey" protobuf:"bytes,3,opt,name=topologyKey"`
}
// Node affinity is a group of node affinity scheduling rules.
@@ -4927,7 +4924,7 @@ const (
// corresponding to every RequiredDuringScheduling affinity rule.
// When the --hard-pod-affinity-weight scheduler flag is not specified,
// DefaultHardPodAffinityWeight defines the weight of the implicit PreferredDuringScheduling affinity rule.
- DefaultHardPodAffinitySymmetricWeight int = 1
+ DefaultHardPodAffinitySymmetricWeight int32 = 1
)
// Sysctl defines a kernel parameter to be set
diff --git a/staging/src/k8s.io/api/core/v1/types_swagger_doc_generated.go b/staging/src/k8s.io/api/core/v1/types_swagger_doc_generated.go
index 0de3e2d51a..ef037c922c 100644
--- a/staging/src/k8s.io/api/core/v1/types_swagger_doc_generated.go
+++ b/staging/src/k8s.io/api/core/v1/types_swagger_doc_generated.go
@@ -1278,7 +1278,7 @@ var map_PodAffinityTerm = map[string]string{
"": "Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running",
"labelSelector": "A label query over a set of resources, in this case pods.",
"namespaces": "namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means \"this pod's namespace\"",
- "topologyKey": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. For PreferredDuringScheduling pod anti-affinity, empty topologyKey is interpreted as \"all topologies\" (\"all topologies\" here means all the topologyKeys indicated by scheduler command-line argument --failure-domains); for affinity and for RequiredDuringScheduling pod anti-affinity, empty topologyKey is not allowed.",
+ "topologyKey": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.",
}
func (PodAffinityTerm) SwaggerDoc() map[string]string {
diff --git a/staging/src/k8s.io/api/core/v1/zz_generated.deepcopy.go b/staging/src/k8s.io/api/core/v1/zz_generated.deepcopy.go
index 8263ba0cc8..9c8e002f94 100644
--- a/staging/src/k8s.io/api/core/v1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/api/core/v1/zz_generated.deepcopy.go
@@ -23,745 +23,10 @@ package v1
import (
resource "k8s.io/apimachinery/pkg/api/resource"
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
types "k8s.io/apimachinery/pkg/types"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*AWSElasticBlockStoreVolumeSource).DeepCopyInto(out.(*AWSElasticBlockStoreVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&AWSElasticBlockStoreVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Affinity).DeepCopyInto(out.(*Affinity))
- return nil
- }, InType: reflect.TypeOf(&Affinity{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*AttachedVolume).DeepCopyInto(out.(*AttachedVolume))
- return nil
- }, InType: reflect.TypeOf(&AttachedVolume{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*AvoidPods).DeepCopyInto(out.(*AvoidPods))
- return nil
- }, InType: reflect.TypeOf(&AvoidPods{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*AzureDiskVolumeSource).DeepCopyInto(out.(*AzureDiskVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&AzureDiskVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*AzureFilePersistentVolumeSource).DeepCopyInto(out.(*AzureFilePersistentVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&AzureFilePersistentVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*AzureFileVolumeSource).DeepCopyInto(out.(*AzureFileVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&AzureFileVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Binding).DeepCopyInto(out.(*Binding))
- return nil
- }, InType: reflect.TypeOf(&Binding{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Capabilities).DeepCopyInto(out.(*Capabilities))
- return nil
- }, InType: reflect.TypeOf(&Capabilities{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CephFSPersistentVolumeSource).DeepCopyInto(out.(*CephFSPersistentVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&CephFSPersistentVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CephFSVolumeSource).DeepCopyInto(out.(*CephFSVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&CephFSVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CinderVolumeSource).DeepCopyInto(out.(*CinderVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&CinderVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ClientIPConfig).DeepCopyInto(out.(*ClientIPConfig))
- return nil
- }, InType: reflect.TypeOf(&ClientIPConfig{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ComponentCondition).DeepCopyInto(out.(*ComponentCondition))
- return nil
- }, InType: reflect.TypeOf(&ComponentCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ComponentStatus).DeepCopyInto(out.(*ComponentStatus))
- return nil
- }, InType: reflect.TypeOf(&ComponentStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ComponentStatusList).DeepCopyInto(out.(*ComponentStatusList))
- return nil
- }, InType: reflect.TypeOf(&ComponentStatusList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ConfigMap).DeepCopyInto(out.(*ConfigMap))
- return nil
- }, InType: reflect.TypeOf(&ConfigMap{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ConfigMapEnvSource).DeepCopyInto(out.(*ConfigMapEnvSource))
- return nil
- }, InType: reflect.TypeOf(&ConfigMapEnvSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ConfigMapKeySelector).DeepCopyInto(out.(*ConfigMapKeySelector))
- return nil
- }, InType: reflect.TypeOf(&ConfigMapKeySelector{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ConfigMapList).DeepCopyInto(out.(*ConfigMapList))
- return nil
- }, InType: reflect.TypeOf(&ConfigMapList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ConfigMapProjection).DeepCopyInto(out.(*ConfigMapProjection))
- return nil
- }, InType: reflect.TypeOf(&ConfigMapProjection{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ConfigMapVolumeSource).DeepCopyInto(out.(*ConfigMapVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&ConfigMapVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Container).DeepCopyInto(out.(*Container))
- return nil
- }, InType: reflect.TypeOf(&Container{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ContainerImage).DeepCopyInto(out.(*ContainerImage))
- return nil
- }, InType: reflect.TypeOf(&ContainerImage{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ContainerPort).DeepCopyInto(out.(*ContainerPort))
- return nil
- }, InType: reflect.TypeOf(&ContainerPort{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ContainerState).DeepCopyInto(out.(*ContainerState))
- return nil
- }, InType: reflect.TypeOf(&ContainerState{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ContainerStateRunning).DeepCopyInto(out.(*ContainerStateRunning))
- return nil
- }, InType: reflect.TypeOf(&ContainerStateRunning{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ContainerStateTerminated).DeepCopyInto(out.(*ContainerStateTerminated))
- return nil
- }, InType: reflect.TypeOf(&ContainerStateTerminated{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ContainerStateWaiting).DeepCopyInto(out.(*ContainerStateWaiting))
- return nil
- }, InType: reflect.TypeOf(&ContainerStateWaiting{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ContainerStatus).DeepCopyInto(out.(*ContainerStatus))
- return nil
- }, InType: reflect.TypeOf(&ContainerStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DaemonEndpoint).DeepCopyInto(out.(*DaemonEndpoint))
- return nil
- }, InType: reflect.TypeOf(&DaemonEndpoint{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DeleteOptions).DeepCopyInto(out.(*DeleteOptions))
- return nil
- }, InType: reflect.TypeOf(&DeleteOptions{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DownwardAPIProjection).DeepCopyInto(out.(*DownwardAPIProjection))
- return nil
- }, InType: reflect.TypeOf(&DownwardAPIProjection{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DownwardAPIVolumeFile).DeepCopyInto(out.(*DownwardAPIVolumeFile))
- return nil
- }, InType: reflect.TypeOf(&DownwardAPIVolumeFile{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DownwardAPIVolumeSource).DeepCopyInto(out.(*DownwardAPIVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&DownwardAPIVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*EmptyDirVolumeSource).DeepCopyInto(out.(*EmptyDirVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&EmptyDirVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*EndpointAddress).DeepCopyInto(out.(*EndpointAddress))
- return nil
- }, InType: reflect.TypeOf(&EndpointAddress{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*EndpointPort).DeepCopyInto(out.(*EndpointPort))
- return nil
- }, InType: reflect.TypeOf(&EndpointPort{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*EndpointSubset).DeepCopyInto(out.(*EndpointSubset))
- return nil
- }, InType: reflect.TypeOf(&EndpointSubset{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Endpoints).DeepCopyInto(out.(*Endpoints))
- return nil
- }, InType: reflect.TypeOf(&Endpoints{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*EndpointsList).DeepCopyInto(out.(*EndpointsList))
- return nil
- }, InType: reflect.TypeOf(&EndpointsList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*EnvFromSource).DeepCopyInto(out.(*EnvFromSource))
- return nil
- }, InType: reflect.TypeOf(&EnvFromSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*EnvVar).DeepCopyInto(out.(*EnvVar))
- return nil
- }, InType: reflect.TypeOf(&EnvVar{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*EnvVarSource).DeepCopyInto(out.(*EnvVarSource))
- return nil
- }, InType: reflect.TypeOf(&EnvVarSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Event).DeepCopyInto(out.(*Event))
- return nil
- }, InType: reflect.TypeOf(&Event{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*EventList).DeepCopyInto(out.(*EventList))
- return nil
- }, InType: reflect.TypeOf(&EventList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*EventSource).DeepCopyInto(out.(*EventSource))
- return nil
- }, InType: reflect.TypeOf(&EventSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExecAction).DeepCopyInto(out.(*ExecAction))
- return nil
- }, InType: reflect.TypeOf(&ExecAction{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*FCVolumeSource).DeepCopyInto(out.(*FCVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&FCVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*FlexVolumeSource).DeepCopyInto(out.(*FlexVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&FlexVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*FlockerVolumeSource).DeepCopyInto(out.(*FlockerVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&FlockerVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*GCEPersistentDiskVolumeSource).DeepCopyInto(out.(*GCEPersistentDiskVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&GCEPersistentDiskVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*GitRepoVolumeSource).DeepCopyInto(out.(*GitRepoVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&GitRepoVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*GlusterfsVolumeSource).DeepCopyInto(out.(*GlusterfsVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&GlusterfsVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*HTTPGetAction).DeepCopyInto(out.(*HTTPGetAction))
- return nil
- }, InType: reflect.TypeOf(&HTTPGetAction{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*HTTPHeader).DeepCopyInto(out.(*HTTPHeader))
- return nil
- }, InType: reflect.TypeOf(&HTTPHeader{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Handler).DeepCopyInto(out.(*Handler))
- return nil
- }, InType: reflect.TypeOf(&Handler{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*HostAlias).DeepCopyInto(out.(*HostAlias))
- return nil
- }, InType: reflect.TypeOf(&HostAlias{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*HostPathVolumeSource).DeepCopyInto(out.(*HostPathVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&HostPathVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ISCSIVolumeSource).DeepCopyInto(out.(*ISCSIVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&ISCSIVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*KeyToPath).DeepCopyInto(out.(*KeyToPath))
- return nil
- }, InType: reflect.TypeOf(&KeyToPath{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Lifecycle).DeepCopyInto(out.(*Lifecycle))
- return nil
- }, InType: reflect.TypeOf(&Lifecycle{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*LimitRange).DeepCopyInto(out.(*LimitRange))
- return nil
- }, InType: reflect.TypeOf(&LimitRange{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*LimitRangeItem).DeepCopyInto(out.(*LimitRangeItem))
- return nil
- }, InType: reflect.TypeOf(&LimitRangeItem{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*LimitRangeList).DeepCopyInto(out.(*LimitRangeList))
- return nil
- }, InType: reflect.TypeOf(&LimitRangeList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*LimitRangeSpec).DeepCopyInto(out.(*LimitRangeSpec))
- return nil
- }, InType: reflect.TypeOf(&LimitRangeSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*List).DeepCopyInto(out.(*List))
- return nil
- }, InType: reflect.TypeOf(&List{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ListOptions).DeepCopyInto(out.(*ListOptions))
- return nil
- }, InType: reflect.TypeOf(&ListOptions{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*LoadBalancerIngress).DeepCopyInto(out.(*LoadBalancerIngress))
- return nil
- }, InType: reflect.TypeOf(&LoadBalancerIngress{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*LoadBalancerStatus).DeepCopyInto(out.(*LoadBalancerStatus))
- return nil
- }, InType: reflect.TypeOf(&LoadBalancerStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*LocalObjectReference).DeepCopyInto(out.(*LocalObjectReference))
- return nil
- }, InType: reflect.TypeOf(&LocalObjectReference{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*LocalVolumeSource).DeepCopyInto(out.(*LocalVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&LocalVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NFSVolumeSource).DeepCopyInto(out.(*NFSVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&NFSVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Namespace).DeepCopyInto(out.(*Namespace))
- return nil
- }, InType: reflect.TypeOf(&Namespace{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NamespaceList).DeepCopyInto(out.(*NamespaceList))
- return nil
- }, InType: reflect.TypeOf(&NamespaceList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NamespaceSpec).DeepCopyInto(out.(*NamespaceSpec))
- return nil
- }, InType: reflect.TypeOf(&NamespaceSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NamespaceStatus).DeepCopyInto(out.(*NamespaceStatus))
- return nil
- }, InType: reflect.TypeOf(&NamespaceStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Node).DeepCopyInto(out.(*Node))
- return nil
- }, InType: reflect.TypeOf(&Node{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeAddress).DeepCopyInto(out.(*NodeAddress))
- return nil
- }, InType: reflect.TypeOf(&NodeAddress{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeAffinity).DeepCopyInto(out.(*NodeAffinity))
- return nil
- }, InType: reflect.TypeOf(&NodeAffinity{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeCondition).DeepCopyInto(out.(*NodeCondition))
- return nil
- }, InType: reflect.TypeOf(&NodeCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeConfigSource).DeepCopyInto(out.(*NodeConfigSource))
- return nil
- }, InType: reflect.TypeOf(&NodeConfigSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeDaemonEndpoints).DeepCopyInto(out.(*NodeDaemonEndpoints))
- return nil
- }, InType: reflect.TypeOf(&NodeDaemonEndpoints{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeList).DeepCopyInto(out.(*NodeList))
- return nil
- }, InType: reflect.TypeOf(&NodeList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeProxyOptions).DeepCopyInto(out.(*NodeProxyOptions))
- return nil
- }, InType: reflect.TypeOf(&NodeProxyOptions{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeResources).DeepCopyInto(out.(*NodeResources))
- return nil
- }, InType: reflect.TypeOf(&NodeResources{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeSelector).DeepCopyInto(out.(*NodeSelector))
- return nil
- }, InType: reflect.TypeOf(&NodeSelector{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeSelectorRequirement).DeepCopyInto(out.(*NodeSelectorRequirement))
- return nil
- }, InType: reflect.TypeOf(&NodeSelectorRequirement{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeSelectorTerm).DeepCopyInto(out.(*NodeSelectorTerm))
- return nil
- }, InType: reflect.TypeOf(&NodeSelectorTerm{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeSpec).DeepCopyInto(out.(*NodeSpec))
- return nil
- }, InType: reflect.TypeOf(&NodeSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeStatus).DeepCopyInto(out.(*NodeStatus))
- return nil
- }, InType: reflect.TypeOf(&NodeStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeSystemInfo).DeepCopyInto(out.(*NodeSystemInfo))
- return nil
- }, InType: reflect.TypeOf(&NodeSystemInfo{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ObjectFieldSelector).DeepCopyInto(out.(*ObjectFieldSelector))
- return nil
- }, InType: reflect.TypeOf(&ObjectFieldSelector{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ObjectMeta).DeepCopyInto(out.(*ObjectMeta))
- return nil
- }, InType: reflect.TypeOf(&ObjectMeta{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ObjectReference).DeepCopyInto(out.(*ObjectReference))
- return nil
- }, InType: reflect.TypeOf(&ObjectReference{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PersistentVolume).DeepCopyInto(out.(*PersistentVolume))
- return nil
- }, InType: reflect.TypeOf(&PersistentVolume{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PersistentVolumeClaim).DeepCopyInto(out.(*PersistentVolumeClaim))
- return nil
- }, InType: reflect.TypeOf(&PersistentVolumeClaim{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PersistentVolumeClaimCondition).DeepCopyInto(out.(*PersistentVolumeClaimCondition))
- return nil
- }, InType: reflect.TypeOf(&PersistentVolumeClaimCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PersistentVolumeClaimList).DeepCopyInto(out.(*PersistentVolumeClaimList))
- return nil
- }, InType: reflect.TypeOf(&PersistentVolumeClaimList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PersistentVolumeClaimSpec).DeepCopyInto(out.(*PersistentVolumeClaimSpec))
- return nil
- }, InType: reflect.TypeOf(&PersistentVolumeClaimSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PersistentVolumeClaimStatus).DeepCopyInto(out.(*PersistentVolumeClaimStatus))
- return nil
- }, InType: reflect.TypeOf(&PersistentVolumeClaimStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PersistentVolumeClaimVolumeSource).DeepCopyInto(out.(*PersistentVolumeClaimVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&PersistentVolumeClaimVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PersistentVolumeList).DeepCopyInto(out.(*PersistentVolumeList))
- return nil
- }, InType: reflect.TypeOf(&PersistentVolumeList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PersistentVolumeSource).DeepCopyInto(out.(*PersistentVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&PersistentVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PersistentVolumeSpec).DeepCopyInto(out.(*PersistentVolumeSpec))
- return nil
- }, InType: reflect.TypeOf(&PersistentVolumeSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PersistentVolumeStatus).DeepCopyInto(out.(*PersistentVolumeStatus))
- return nil
- }, InType: reflect.TypeOf(&PersistentVolumeStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PhotonPersistentDiskVolumeSource).DeepCopyInto(out.(*PhotonPersistentDiskVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&PhotonPersistentDiskVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Pod).DeepCopyInto(out.(*Pod))
- return nil
- }, InType: reflect.TypeOf(&Pod{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodAffinity).DeepCopyInto(out.(*PodAffinity))
- return nil
- }, InType: reflect.TypeOf(&PodAffinity{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodAffinityTerm).DeepCopyInto(out.(*PodAffinityTerm))
- return nil
- }, InType: reflect.TypeOf(&PodAffinityTerm{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodAntiAffinity).DeepCopyInto(out.(*PodAntiAffinity))
- return nil
- }, InType: reflect.TypeOf(&PodAntiAffinity{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodAttachOptions).DeepCopyInto(out.(*PodAttachOptions))
- return nil
- }, InType: reflect.TypeOf(&PodAttachOptions{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodCondition).DeepCopyInto(out.(*PodCondition))
- return nil
- }, InType: reflect.TypeOf(&PodCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodExecOptions).DeepCopyInto(out.(*PodExecOptions))
- return nil
- }, InType: reflect.TypeOf(&PodExecOptions{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodList).DeepCopyInto(out.(*PodList))
- return nil
- }, InType: reflect.TypeOf(&PodList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodLogOptions).DeepCopyInto(out.(*PodLogOptions))
- return nil
- }, InType: reflect.TypeOf(&PodLogOptions{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodPortForwardOptions).DeepCopyInto(out.(*PodPortForwardOptions))
- return nil
- }, InType: reflect.TypeOf(&PodPortForwardOptions{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodProxyOptions).DeepCopyInto(out.(*PodProxyOptions))
- return nil
- }, InType: reflect.TypeOf(&PodProxyOptions{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodSecurityContext).DeepCopyInto(out.(*PodSecurityContext))
- return nil
- }, InType: reflect.TypeOf(&PodSecurityContext{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodSignature).DeepCopyInto(out.(*PodSignature))
- return nil
- }, InType: reflect.TypeOf(&PodSignature{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodSpec).DeepCopyInto(out.(*PodSpec))
- return nil
- }, InType: reflect.TypeOf(&PodSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodStatus).DeepCopyInto(out.(*PodStatus))
- return nil
- }, InType: reflect.TypeOf(&PodStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodStatusResult).DeepCopyInto(out.(*PodStatusResult))
- return nil
- }, InType: reflect.TypeOf(&PodStatusResult{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodTemplate).DeepCopyInto(out.(*PodTemplate))
- return nil
- }, InType: reflect.TypeOf(&PodTemplate{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodTemplateList).DeepCopyInto(out.(*PodTemplateList))
- return nil
- }, InType: reflect.TypeOf(&PodTemplateList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodTemplateSpec).DeepCopyInto(out.(*PodTemplateSpec))
- return nil
- }, InType: reflect.TypeOf(&PodTemplateSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PortworxVolumeSource).DeepCopyInto(out.(*PortworxVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&PortworxVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Preconditions).DeepCopyInto(out.(*Preconditions))
- return nil
- }, InType: reflect.TypeOf(&Preconditions{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PreferAvoidPodsEntry).DeepCopyInto(out.(*PreferAvoidPodsEntry))
- return nil
- }, InType: reflect.TypeOf(&PreferAvoidPodsEntry{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PreferredSchedulingTerm).DeepCopyInto(out.(*PreferredSchedulingTerm))
- return nil
- }, InType: reflect.TypeOf(&PreferredSchedulingTerm{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Probe).DeepCopyInto(out.(*Probe))
- return nil
- }, InType: reflect.TypeOf(&Probe{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ProjectedVolumeSource).DeepCopyInto(out.(*ProjectedVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&ProjectedVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*QuobyteVolumeSource).DeepCopyInto(out.(*QuobyteVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&QuobyteVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RBDPersistentVolumeSource).DeepCopyInto(out.(*RBDPersistentVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&RBDPersistentVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RBDVolumeSource).DeepCopyInto(out.(*RBDVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&RBDVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RangeAllocation).DeepCopyInto(out.(*RangeAllocation))
- return nil
- }, InType: reflect.TypeOf(&RangeAllocation{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicationController).DeepCopyInto(out.(*ReplicationController))
- return nil
- }, InType: reflect.TypeOf(&ReplicationController{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicationControllerCondition).DeepCopyInto(out.(*ReplicationControllerCondition))
- return nil
- }, InType: reflect.TypeOf(&ReplicationControllerCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicationControllerList).DeepCopyInto(out.(*ReplicationControllerList))
- return nil
- }, InType: reflect.TypeOf(&ReplicationControllerList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicationControllerSpec).DeepCopyInto(out.(*ReplicationControllerSpec))
- return nil
- }, InType: reflect.TypeOf(&ReplicationControllerSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicationControllerStatus).DeepCopyInto(out.(*ReplicationControllerStatus))
- return nil
- }, InType: reflect.TypeOf(&ReplicationControllerStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ResourceFieldSelector).DeepCopyInto(out.(*ResourceFieldSelector))
- return nil
- }, InType: reflect.TypeOf(&ResourceFieldSelector{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ResourceQuota).DeepCopyInto(out.(*ResourceQuota))
- return nil
- }, InType: reflect.TypeOf(&ResourceQuota{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ResourceQuotaList).DeepCopyInto(out.(*ResourceQuotaList))
- return nil
- }, InType: reflect.TypeOf(&ResourceQuotaList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ResourceQuotaSpec).DeepCopyInto(out.(*ResourceQuotaSpec))
- return nil
- }, InType: reflect.TypeOf(&ResourceQuotaSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ResourceQuotaStatus).DeepCopyInto(out.(*ResourceQuotaStatus))
- return nil
- }, InType: reflect.TypeOf(&ResourceQuotaStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ResourceRequirements).DeepCopyInto(out.(*ResourceRequirements))
- return nil
- }, InType: reflect.TypeOf(&ResourceRequirements{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SELinuxOptions).DeepCopyInto(out.(*SELinuxOptions))
- return nil
- }, InType: reflect.TypeOf(&SELinuxOptions{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ScaleIOPersistentVolumeSource).DeepCopyInto(out.(*ScaleIOPersistentVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&ScaleIOPersistentVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ScaleIOVolumeSource).DeepCopyInto(out.(*ScaleIOVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&ScaleIOVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Secret).DeepCopyInto(out.(*Secret))
- return nil
- }, InType: reflect.TypeOf(&Secret{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SecretEnvSource).DeepCopyInto(out.(*SecretEnvSource))
- return nil
- }, InType: reflect.TypeOf(&SecretEnvSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SecretKeySelector).DeepCopyInto(out.(*SecretKeySelector))
- return nil
- }, InType: reflect.TypeOf(&SecretKeySelector{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SecretList).DeepCopyInto(out.(*SecretList))
- return nil
- }, InType: reflect.TypeOf(&SecretList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SecretProjection).DeepCopyInto(out.(*SecretProjection))
- return nil
- }, InType: reflect.TypeOf(&SecretProjection{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SecretReference).DeepCopyInto(out.(*SecretReference))
- return nil
- }, InType: reflect.TypeOf(&SecretReference{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SecretVolumeSource).DeepCopyInto(out.(*SecretVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&SecretVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SecurityContext).DeepCopyInto(out.(*SecurityContext))
- return nil
- }, InType: reflect.TypeOf(&SecurityContext{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SerializedReference).DeepCopyInto(out.(*SerializedReference))
- return nil
- }, InType: reflect.TypeOf(&SerializedReference{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Service).DeepCopyInto(out.(*Service))
- return nil
- }, InType: reflect.TypeOf(&Service{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ServiceAccount).DeepCopyInto(out.(*ServiceAccount))
- return nil
- }, InType: reflect.TypeOf(&ServiceAccount{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ServiceAccountList).DeepCopyInto(out.(*ServiceAccountList))
- return nil
- }, InType: reflect.TypeOf(&ServiceAccountList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ServiceList).DeepCopyInto(out.(*ServiceList))
- return nil
- }, InType: reflect.TypeOf(&ServiceList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ServicePort).DeepCopyInto(out.(*ServicePort))
- return nil
- }, InType: reflect.TypeOf(&ServicePort{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ServiceProxyOptions).DeepCopyInto(out.(*ServiceProxyOptions))
- return nil
- }, InType: reflect.TypeOf(&ServiceProxyOptions{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ServiceSpec).DeepCopyInto(out.(*ServiceSpec))
- return nil
- }, InType: reflect.TypeOf(&ServiceSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ServiceStatus).DeepCopyInto(out.(*ServiceStatus))
- return nil
- }, InType: reflect.TypeOf(&ServiceStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SessionAffinityConfig).DeepCopyInto(out.(*SessionAffinityConfig))
- return nil
- }, InType: reflect.TypeOf(&SessionAffinityConfig{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StorageOSPersistentVolumeSource).DeepCopyInto(out.(*StorageOSPersistentVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&StorageOSPersistentVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StorageOSVolumeSource).DeepCopyInto(out.(*StorageOSVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&StorageOSVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Sysctl).DeepCopyInto(out.(*Sysctl))
- return nil
- }, InType: reflect.TypeOf(&Sysctl{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TCPSocketAction).DeepCopyInto(out.(*TCPSocketAction))
- return nil
- }, InType: reflect.TypeOf(&TCPSocketAction{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Taint).DeepCopyInto(out.(*Taint))
- return nil
- }, InType: reflect.TypeOf(&Taint{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Toleration).DeepCopyInto(out.(*Toleration))
- return nil
- }, InType: reflect.TypeOf(&Toleration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Volume).DeepCopyInto(out.(*Volume))
- return nil
- }, InType: reflect.TypeOf(&Volume{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*VolumeMount).DeepCopyInto(out.(*VolumeMount))
- return nil
- }, InType: reflect.TypeOf(&VolumeMount{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*VolumeProjection).DeepCopyInto(out.(*VolumeProjection))
- return nil
- }, InType: reflect.TypeOf(&VolumeProjection{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*VolumeSource).DeepCopyInto(out.(*VolumeSource))
- return nil
- }, InType: reflect.TypeOf(&VolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*VsphereVirtualDiskVolumeSource).DeepCopyInto(out.(*VsphereVirtualDiskVolumeSource))
- return nil
- }, InType: reflect.TypeOf(&VsphereVirtualDiskVolumeSource{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*WeightedPodAffinityTerm).DeepCopyInto(out.(*WeightedPodAffinityTerm))
- return nil
- }, InType: reflect.TypeOf(&WeightedPodAffinityTerm{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *AWSElasticBlockStoreVolumeSource) DeepCopyInto(out *AWSElasticBlockStoreVolumeSource) {
*out = *in
diff --git a/staging/src/k8s.io/api/extensions/v1beta1/BUILD b/staging/src/k8s.io/api/extensions/v1beta1/BUILD
index 4018732695..360ad999c9 100644
--- a/staging/src/k8s.io/api/extensions/v1beta1/BUILD
+++ b/staging/src/k8s.io/api/extensions/v1beta1/BUILD
@@ -23,7 +23,6 @@ go_library(
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
diff --git a/staging/src/k8s.io/api/extensions/v1beta1/doc.go b/staging/src/k8s.io/api/extensions/v1beta1/doc.go
index ac174dd278..8ce18304be 100644
--- a/staging/src/k8s.io/api/extensions/v1beta1/doc.go
+++ b/staging/src/k8s.io/api/extensions/v1beta1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:openapi-gen=true
package v1beta1 // import "k8s.io/api/extensions/v1beta1"
diff --git a/staging/src/k8s.io/api/extensions/v1beta1/generated.proto b/staging/src/k8s.io/api/extensions/v1beta1/generated.proto
index c5414616ae..f6898bce64 100644
--- a/staging/src/k8s.io/api/extensions/v1beta1/generated.proto
+++ b/staging/src/k8s.io/api/extensions/v1beta1/generated.proto
@@ -772,8 +772,9 @@ message PodSecurityPolicySpec {
optional bool privileged = 1;
// DefaultAddCapabilities is the default set of capabilities that will be added to the container
- // unless the pod spec specifically drops the capability. You may not list a capabiility in both
- // DefaultAddCapabilities and RequiredDropCapabilities.
+ // unless the pod spec specifically drops the capability. You may not list a capability in both
+ // DefaultAddCapabilities and RequiredDropCapabilities. Capabilities added here are implicitly
+ // allowed, and need not be included in the AllowedCapabilities list.
// +optional
repeated string defaultAddCapabilities = 2;
diff --git a/staging/src/k8s.io/api/extensions/v1beta1/types.go b/staging/src/k8s.io/api/extensions/v1beta1/types.go
index 6e666b205b..d4ca1832ca 100644
--- a/staging/src/k8s.io/api/extensions/v1beta1/types.go
+++ b/staging/src/k8s.io/api/extensions/v1beta1/types.go
@@ -882,8 +882,9 @@ type PodSecurityPolicySpec struct {
// +optional
Privileged bool `json:"privileged,omitempty" protobuf:"varint,1,opt,name=privileged"`
// DefaultAddCapabilities is the default set of capabilities that will be added to the container
- // unless the pod spec specifically drops the capability. You may not list a capabiility in both
- // DefaultAddCapabilities and RequiredDropCapabilities.
+ // unless the pod spec specifically drops the capability. You may not list a capability in both
+ // DefaultAddCapabilities and RequiredDropCapabilities. Capabilities added here are implicitly
+ // allowed, and need not be included in the AllowedCapabilities list.
// +optional
DefaultAddCapabilities []v1.Capability `json:"defaultAddCapabilities,omitempty" protobuf:"bytes,2,rep,name=defaultAddCapabilities,casttype=k8s.io/api/core/v1.Capability"`
// RequiredDropCapabilities are the capabilities that will be dropped from the container. These
diff --git a/staging/src/k8s.io/api/extensions/v1beta1/types_swagger_doc_generated.go b/staging/src/k8s.io/api/extensions/v1beta1/types_swagger_doc_generated.go
index 20f529d871..b98d117952 100644
--- a/staging/src/k8s.io/api/extensions/v1beta1/types_swagger_doc_generated.go
+++ b/staging/src/k8s.io/api/extensions/v1beta1/types_swagger_doc_generated.go
@@ -449,7 +449,7 @@ func (PodSecurityPolicyList) SwaggerDoc() map[string]string {
var map_PodSecurityPolicySpec = map[string]string{
"": "Pod Security Policy Spec defines the policy enforced.",
"privileged": "privileged determines if a pod can request to be run as privileged.",
- "defaultAddCapabilities": "DefaultAddCapabilities is the default set of capabilities that will be added to the container unless the pod spec specifically drops the capability. You may not list a capabiility in both DefaultAddCapabilities and RequiredDropCapabilities.",
+ "defaultAddCapabilities": "DefaultAddCapabilities is the default set of capabilities that will be added to the container unless the pod spec specifically drops the capability. You may not list a capability in both DefaultAddCapabilities and RequiredDropCapabilities. Capabilities added here are implicitly allowed, and need not be included in the AllowedCapabilities list.",
"requiredDropCapabilities": "RequiredDropCapabilities are the capabilities that will be dropped from the container. These are required to be dropped and cannot be added.",
"allowedCapabilities": "AllowedCapabilities is a list of capabilities that can be requested to add to the container. Capabilities in this field may be added at the pod author's discretion. You must not list a capability in both AllowedCapabilities and RequiredDropCapabilities.",
"volumes": "volumes is a white list of allowed volume plugins. Empty indicates that all plugins may be used.",
diff --git a/staging/src/k8s.io/api/extensions/v1beta1/zz_generated.deepcopy.go b/staging/src/k8s.io/api/extensions/v1beta1/zz_generated.deepcopy.go
index 2d09a0d5e2..0cc661defd 100644
--- a/staging/src/k8s.io/api/extensions/v1beta1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/api/extensions/v1beta1/zz_generated.deepcopy.go
@@ -23,253 +23,10 @@ package v1beta1
import (
core_v1 "k8s.io/api/core/v1"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
intstr "k8s.io/apimachinery/pkg/util/intstr"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*AllowedHostPath).DeepCopyInto(out.(*AllowedHostPath))
- return nil
- }, InType: reflect.TypeOf(&AllowedHostPath{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CustomMetricCurrentStatus).DeepCopyInto(out.(*CustomMetricCurrentStatus))
- return nil
- }, InType: reflect.TypeOf(&CustomMetricCurrentStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CustomMetricCurrentStatusList).DeepCopyInto(out.(*CustomMetricCurrentStatusList))
- return nil
- }, InType: reflect.TypeOf(&CustomMetricCurrentStatusList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CustomMetricTarget).DeepCopyInto(out.(*CustomMetricTarget))
- return nil
- }, InType: reflect.TypeOf(&CustomMetricTarget{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CustomMetricTargetList).DeepCopyInto(out.(*CustomMetricTargetList))
- return nil
- }, InType: reflect.TypeOf(&CustomMetricTargetList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DaemonSet).DeepCopyInto(out.(*DaemonSet))
- return nil
- }, InType: reflect.TypeOf(&DaemonSet{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DaemonSetCondition).DeepCopyInto(out.(*DaemonSetCondition))
- return nil
- }, InType: reflect.TypeOf(&DaemonSetCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DaemonSetList).DeepCopyInto(out.(*DaemonSetList))
- return nil
- }, InType: reflect.TypeOf(&DaemonSetList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DaemonSetSpec).DeepCopyInto(out.(*DaemonSetSpec))
- return nil
- }, InType: reflect.TypeOf(&DaemonSetSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DaemonSetStatus).DeepCopyInto(out.(*DaemonSetStatus))
- return nil
- }, InType: reflect.TypeOf(&DaemonSetStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DaemonSetUpdateStrategy).DeepCopyInto(out.(*DaemonSetUpdateStrategy))
- return nil
- }, InType: reflect.TypeOf(&DaemonSetUpdateStrategy{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Deployment).DeepCopyInto(out.(*Deployment))
- return nil
- }, InType: reflect.TypeOf(&Deployment{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DeploymentCondition).DeepCopyInto(out.(*DeploymentCondition))
- return nil
- }, InType: reflect.TypeOf(&DeploymentCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DeploymentList).DeepCopyInto(out.(*DeploymentList))
- return nil
- }, InType: reflect.TypeOf(&DeploymentList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DeploymentRollback).DeepCopyInto(out.(*DeploymentRollback))
- return nil
- }, InType: reflect.TypeOf(&DeploymentRollback{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DeploymentSpec).DeepCopyInto(out.(*DeploymentSpec))
- return nil
- }, InType: reflect.TypeOf(&DeploymentSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DeploymentStatus).DeepCopyInto(out.(*DeploymentStatus))
- return nil
- }, InType: reflect.TypeOf(&DeploymentStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DeploymentStrategy).DeepCopyInto(out.(*DeploymentStrategy))
- return nil
- }, InType: reflect.TypeOf(&DeploymentStrategy{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*FSGroupStrategyOptions).DeepCopyInto(out.(*FSGroupStrategyOptions))
- return nil
- }, InType: reflect.TypeOf(&FSGroupStrategyOptions{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*HTTPIngressPath).DeepCopyInto(out.(*HTTPIngressPath))
- return nil
- }, InType: reflect.TypeOf(&HTTPIngressPath{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*HTTPIngressRuleValue).DeepCopyInto(out.(*HTTPIngressRuleValue))
- return nil
- }, InType: reflect.TypeOf(&HTTPIngressRuleValue{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*HostPortRange).DeepCopyInto(out.(*HostPortRange))
- return nil
- }, InType: reflect.TypeOf(&HostPortRange{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*IDRange).DeepCopyInto(out.(*IDRange))
- return nil
- }, InType: reflect.TypeOf(&IDRange{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*IPBlock).DeepCopyInto(out.(*IPBlock))
- return nil
- }, InType: reflect.TypeOf(&IPBlock{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Ingress).DeepCopyInto(out.(*Ingress))
- return nil
- }, InType: reflect.TypeOf(&Ingress{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*IngressBackend).DeepCopyInto(out.(*IngressBackend))
- return nil
- }, InType: reflect.TypeOf(&IngressBackend{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*IngressList).DeepCopyInto(out.(*IngressList))
- return nil
- }, InType: reflect.TypeOf(&IngressList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*IngressRule).DeepCopyInto(out.(*IngressRule))
- return nil
- }, InType: reflect.TypeOf(&IngressRule{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*IngressRuleValue).DeepCopyInto(out.(*IngressRuleValue))
- return nil
- }, InType: reflect.TypeOf(&IngressRuleValue{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*IngressSpec).DeepCopyInto(out.(*IngressSpec))
- return nil
- }, InType: reflect.TypeOf(&IngressSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*IngressStatus).DeepCopyInto(out.(*IngressStatus))
- return nil
- }, InType: reflect.TypeOf(&IngressStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*IngressTLS).DeepCopyInto(out.(*IngressTLS))
- return nil
- }, InType: reflect.TypeOf(&IngressTLS{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NetworkPolicy).DeepCopyInto(out.(*NetworkPolicy))
- return nil
- }, InType: reflect.TypeOf(&NetworkPolicy{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NetworkPolicyEgressRule).DeepCopyInto(out.(*NetworkPolicyEgressRule))
- return nil
- }, InType: reflect.TypeOf(&NetworkPolicyEgressRule{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NetworkPolicyIngressRule).DeepCopyInto(out.(*NetworkPolicyIngressRule))
- return nil
- }, InType: reflect.TypeOf(&NetworkPolicyIngressRule{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NetworkPolicyList).DeepCopyInto(out.(*NetworkPolicyList))
- return nil
- }, InType: reflect.TypeOf(&NetworkPolicyList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NetworkPolicyPeer).DeepCopyInto(out.(*NetworkPolicyPeer))
- return nil
- }, InType: reflect.TypeOf(&NetworkPolicyPeer{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NetworkPolicyPort).DeepCopyInto(out.(*NetworkPolicyPort))
- return nil
- }, InType: reflect.TypeOf(&NetworkPolicyPort{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NetworkPolicySpec).DeepCopyInto(out.(*NetworkPolicySpec))
- return nil
- }, InType: reflect.TypeOf(&NetworkPolicySpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodSecurityPolicy).DeepCopyInto(out.(*PodSecurityPolicy))
- return nil
- }, InType: reflect.TypeOf(&PodSecurityPolicy{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodSecurityPolicyList).DeepCopyInto(out.(*PodSecurityPolicyList))
- return nil
- }, InType: reflect.TypeOf(&PodSecurityPolicyList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodSecurityPolicySpec).DeepCopyInto(out.(*PodSecurityPolicySpec))
- return nil
- }, InType: reflect.TypeOf(&PodSecurityPolicySpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicaSet).DeepCopyInto(out.(*ReplicaSet))
- return nil
- }, InType: reflect.TypeOf(&ReplicaSet{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicaSetCondition).DeepCopyInto(out.(*ReplicaSetCondition))
- return nil
- }, InType: reflect.TypeOf(&ReplicaSetCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicaSetList).DeepCopyInto(out.(*ReplicaSetList))
- return nil
- }, InType: reflect.TypeOf(&ReplicaSetList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicaSetSpec).DeepCopyInto(out.(*ReplicaSetSpec))
- return nil
- }, InType: reflect.TypeOf(&ReplicaSetSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicaSetStatus).DeepCopyInto(out.(*ReplicaSetStatus))
- return nil
- }, InType: reflect.TypeOf(&ReplicaSetStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ReplicationControllerDummy).DeepCopyInto(out.(*ReplicationControllerDummy))
- return nil
- }, InType: reflect.TypeOf(&ReplicationControllerDummy{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RollbackConfig).DeepCopyInto(out.(*RollbackConfig))
- return nil
- }, InType: reflect.TypeOf(&RollbackConfig{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RollingUpdateDaemonSet).DeepCopyInto(out.(*RollingUpdateDaemonSet))
- return nil
- }, InType: reflect.TypeOf(&RollingUpdateDaemonSet{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RollingUpdateDeployment).DeepCopyInto(out.(*RollingUpdateDeployment))
- return nil
- }, InType: reflect.TypeOf(&RollingUpdateDeployment{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RunAsUserStrategyOptions).DeepCopyInto(out.(*RunAsUserStrategyOptions))
- return nil
- }, InType: reflect.TypeOf(&RunAsUserStrategyOptions{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SELinuxStrategyOptions).DeepCopyInto(out.(*SELinuxStrategyOptions))
- return nil
- }, InType: reflect.TypeOf(&SELinuxStrategyOptions{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Scale).DeepCopyInto(out.(*Scale))
- return nil
- }, InType: reflect.TypeOf(&Scale{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ScaleSpec).DeepCopyInto(out.(*ScaleSpec))
- return nil
- }, InType: reflect.TypeOf(&ScaleSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ScaleStatus).DeepCopyInto(out.(*ScaleStatus))
- return nil
- }, InType: reflect.TypeOf(&ScaleStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SupplementalGroupsStrategyOptions).DeepCopyInto(out.(*SupplementalGroupsStrategyOptions))
- return nil
- }, InType: reflect.TypeOf(&SupplementalGroupsStrategyOptions{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *AllowedHostPath) DeepCopyInto(out *AllowedHostPath) {
*out = *in
diff --git a/staging/src/k8s.io/api/imagepolicy/v1alpha1/BUILD b/staging/src/k8s.io/api/imagepolicy/v1alpha1/BUILD
index ccdb4c7b8e..455205f7ad 100644
--- a/staging/src/k8s.io/api/imagepolicy/v1alpha1/BUILD
+++ b/staging/src/k8s.io/api/imagepolicy/v1alpha1/BUILD
@@ -20,7 +20,6 @@ go_library(
"//vendor/github.com/gogo/protobuf/proto:go_default_library",
"//vendor/github.com/gogo/protobuf/sortkeys:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/api/imagepolicy/v1alpha1/doc.go b/staging/src/k8s.io/api/imagepolicy/v1alpha1/doc.go
index 3f6a01e534..3b4840ad64 100644
--- a/staging/src/k8s.io/api/imagepolicy/v1alpha1/doc.go
+++ b/staging/src/k8s.io/api/imagepolicy/v1alpha1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:openapi-gen=true
// +groupName=imagepolicy.k8s.io
diff --git a/staging/src/k8s.io/api/imagepolicy/v1alpha1/zz_generated.deepcopy.go b/staging/src/k8s.io/api/imagepolicy/v1alpha1/zz_generated.deepcopy.go
index 95b204e0eb..21fcd39e41 100644
--- a/staging/src/k8s.io/api/imagepolicy/v1alpha1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/api/imagepolicy/v1alpha1/zz_generated.deepcopy.go
@@ -21,40 +21,9 @@ limitations under the License.
package v1alpha1
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ImageReview).DeepCopyInto(out.(*ImageReview))
- return nil
- }, InType: reflect.TypeOf(&ImageReview{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ImageReviewContainerSpec).DeepCopyInto(out.(*ImageReviewContainerSpec))
- return nil
- }, InType: reflect.TypeOf(&ImageReviewContainerSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ImageReviewSpec).DeepCopyInto(out.(*ImageReviewSpec))
- return nil
- }, InType: reflect.TypeOf(&ImageReviewSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ImageReviewStatus).DeepCopyInto(out.(*ImageReviewStatus))
- return nil
- }, InType: reflect.TypeOf(&ImageReviewStatus{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ImageReview) DeepCopyInto(out *ImageReview) {
*out = *in
diff --git a/staging/src/k8s.io/api/networking/v1/BUILD b/staging/src/k8s.io/api/networking/v1/BUILD
index ba6ce8a1f4..beb3afcaf7 100644
--- a/staging/src/k8s.io/api/networking/v1/BUILD
+++ b/staging/src/k8s.io/api/networking/v1/BUILD
@@ -20,7 +20,6 @@ go_library(
"//vendor/github.com/gogo/protobuf/proto:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
diff --git a/staging/src/k8s.io/api/networking/v1/doc.go b/staging/src/k8s.io/api/networking/v1/doc.go
index 8bcc30b07f..ef9ae2ae4c 100644
--- a/staging/src/k8s.io/api/networking/v1/doc.go
+++ b/staging/src/k8s.io/api/networking/v1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:openapi-gen=true
// +groupName=networking.k8s.io
package v1 // import "k8s.io/api/networking/v1"
diff --git a/staging/src/k8s.io/api/networking/v1/zz_generated.deepcopy.go b/staging/src/k8s.io/api/networking/v1/zz_generated.deepcopy.go
index 0e6709667d..955e74344e 100644
--- a/staging/src/k8s.io/api/networking/v1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/api/networking/v1/zz_generated.deepcopy.go
@@ -23,57 +23,10 @@ package v1
import (
core_v1 "k8s.io/api/core/v1"
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
intstr "k8s.io/apimachinery/pkg/util/intstr"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*IPBlock).DeepCopyInto(out.(*IPBlock))
- return nil
- }, InType: reflect.TypeOf(&IPBlock{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NetworkPolicy).DeepCopyInto(out.(*NetworkPolicy))
- return nil
- }, InType: reflect.TypeOf(&NetworkPolicy{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NetworkPolicyEgressRule).DeepCopyInto(out.(*NetworkPolicyEgressRule))
- return nil
- }, InType: reflect.TypeOf(&NetworkPolicyEgressRule{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NetworkPolicyIngressRule).DeepCopyInto(out.(*NetworkPolicyIngressRule))
- return nil
- }, InType: reflect.TypeOf(&NetworkPolicyIngressRule{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NetworkPolicyList).DeepCopyInto(out.(*NetworkPolicyList))
- return nil
- }, InType: reflect.TypeOf(&NetworkPolicyList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NetworkPolicyPeer).DeepCopyInto(out.(*NetworkPolicyPeer))
- return nil
- }, InType: reflect.TypeOf(&NetworkPolicyPeer{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NetworkPolicyPort).DeepCopyInto(out.(*NetworkPolicyPort))
- return nil
- }, InType: reflect.TypeOf(&NetworkPolicyPort{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NetworkPolicySpec).DeepCopyInto(out.(*NetworkPolicySpec))
- return nil
- }, InType: reflect.TypeOf(&NetworkPolicySpec{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *IPBlock) DeepCopyInto(out *IPBlock) {
*out = *in
diff --git a/staging/src/k8s.io/api/policy/v1beta1/BUILD b/staging/src/k8s.io/api/policy/v1beta1/BUILD
index 1a9e7ba4ee..6e4a07deb6 100644
--- a/staging/src/k8s.io/api/policy/v1beta1/BUILD
+++ b/staging/src/k8s.io/api/policy/v1beta1/BUILD
@@ -20,7 +20,6 @@ go_library(
"//vendor/github.com/gogo/protobuf/proto:go_default_library",
"//vendor/github.com/gogo/protobuf/sortkeys:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
diff --git a/staging/src/k8s.io/api/policy/v1beta1/doc.go b/staging/src/k8s.io/api/policy/v1beta1/doc.go
index 1e9f4974da..9c456f9237 100644
--- a/staging/src/k8s.io/api/policy/v1beta1/doc.go
+++ b/staging/src/k8s.io/api/policy/v1beta1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// Package policy is for any kind of policy object. Suitable examples, even if
// they aren't all here, are PodDisruptionBudget, PodSecurityPolicy,
diff --git a/staging/src/k8s.io/api/policy/v1beta1/zz_generated.deepcopy.go b/staging/src/k8s.io/api/policy/v1beta1/zz_generated.deepcopy.go
index 93c201e2dd..70872f0981 100644
--- a/staging/src/k8s.io/api/policy/v1beta1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/api/policy/v1beta1/zz_generated.deepcopy.go
@@ -22,45 +22,10 @@ package v1beta1
import (
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
intstr "k8s.io/apimachinery/pkg/util/intstr"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Eviction).DeepCopyInto(out.(*Eviction))
- return nil
- }, InType: reflect.TypeOf(&Eviction{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodDisruptionBudget).DeepCopyInto(out.(*PodDisruptionBudget))
- return nil
- }, InType: reflect.TypeOf(&PodDisruptionBudget{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodDisruptionBudgetList).DeepCopyInto(out.(*PodDisruptionBudgetList))
- return nil
- }, InType: reflect.TypeOf(&PodDisruptionBudgetList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodDisruptionBudgetSpec).DeepCopyInto(out.(*PodDisruptionBudgetSpec))
- return nil
- }, InType: reflect.TypeOf(&PodDisruptionBudgetSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodDisruptionBudgetStatus).DeepCopyInto(out.(*PodDisruptionBudgetStatus))
- return nil
- }, InType: reflect.TypeOf(&PodDisruptionBudgetStatus{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Eviction) DeepCopyInto(out *Eviction) {
*out = *in
diff --git a/staging/src/k8s.io/api/rbac/v1/BUILD b/staging/src/k8s.io/api/rbac/v1/BUILD
index 5a686d7ca1..539afb7ae8 100644
--- a/staging/src/k8s.io/api/rbac/v1/BUILD
+++ b/staging/src/k8s.io/api/rbac/v1/BUILD
@@ -19,7 +19,6 @@ go_library(
deps = [
"//vendor/github.com/gogo/protobuf/proto:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/api/rbac/v1/doc.go b/staging/src/k8s.io/api/rbac/v1/doc.go
index 737261a097..28ceb269b4 100644
--- a/staging/src/k8s.io/api/rbac/v1/doc.go
+++ b/staging/src/k8s.io/api/rbac/v1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:openapi-gen=true
// +groupName=rbac.authorization.k8s.io
diff --git a/staging/src/k8s.io/api/rbac/v1/generated.pb.go b/staging/src/k8s.io/api/rbac/v1/generated.pb.go
index 1285ac1942..1530d379c0 100644
--- a/staging/src/k8s.io/api/rbac/v1/generated.pb.go
+++ b/staging/src/k8s.io/api/rbac/v1/generated.pb.go
@@ -25,6 +25,7 @@ limitations under the License.
k8s.io/kubernetes/vendor/k8s.io/api/rbac/v1/generated.proto
It has these top-level messages:
+ AggregationRule
ClusterRole
ClusterRoleBinding
ClusterRoleBindingList
@@ -43,6 +44,8 @@ import proto "github.com/gogo/protobuf/proto"
import fmt "fmt"
import math "math"
+import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+
import strings "strings"
import reflect "reflect"
@@ -59,51 +62,56 @@ var _ = math.Inf
// proto package needs to be updated.
const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package
+func (m *AggregationRule) Reset() { *m = AggregationRule{} }
+func (*AggregationRule) ProtoMessage() {}
+func (*AggregationRule) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} }
+
func (m *ClusterRole) Reset() { *m = ClusterRole{} }
func (*ClusterRole) ProtoMessage() {}
-func (*ClusterRole) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} }
+func (*ClusterRole) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} }
func (m *ClusterRoleBinding) Reset() { *m = ClusterRoleBinding{} }
func (*ClusterRoleBinding) ProtoMessage() {}
-func (*ClusterRoleBinding) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} }
+func (*ClusterRoleBinding) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} }
func (m *ClusterRoleBindingList) Reset() { *m = ClusterRoleBindingList{} }
func (*ClusterRoleBindingList) ProtoMessage() {}
-func (*ClusterRoleBindingList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} }
+func (*ClusterRoleBindingList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} }
func (m *ClusterRoleList) Reset() { *m = ClusterRoleList{} }
func (*ClusterRoleList) ProtoMessage() {}
-func (*ClusterRoleList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} }
+func (*ClusterRoleList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} }
func (m *PolicyRule) Reset() { *m = PolicyRule{} }
func (*PolicyRule) ProtoMessage() {}
-func (*PolicyRule) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} }
+func (*PolicyRule) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} }
func (m *Role) Reset() { *m = Role{} }
func (*Role) ProtoMessage() {}
-func (*Role) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} }
+func (*Role) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} }
func (m *RoleBinding) Reset() { *m = RoleBinding{} }
func (*RoleBinding) ProtoMessage() {}
-func (*RoleBinding) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} }
+func (*RoleBinding) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} }
func (m *RoleBindingList) Reset() { *m = RoleBindingList{} }
func (*RoleBindingList) ProtoMessage() {}
-func (*RoleBindingList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} }
+func (*RoleBindingList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} }
func (m *RoleList) Reset() { *m = RoleList{} }
func (*RoleList) ProtoMessage() {}
-func (*RoleList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} }
+func (*RoleList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{9} }
func (m *RoleRef) Reset() { *m = RoleRef{} }
func (*RoleRef) ProtoMessage() {}
-func (*RoleRef) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{9} }
+func (*RoleRef) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{10} }
func (m *Subject) Reset() { *m = Subject{} }
func (*Subject) ProtoMessage() {}
-func (*Subject) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{10} }
+func (*Subject) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{11} }
func init() {
+ proto.RegisterType((*AggregationRule)(nil), "k8s.io.api.rbac.v1.AggregationRule")
proto.RegisterType((*ClusterRole)(nil), "k8s.io.api.rbac.v1.ClusterRole")
proto.RegisterType((*ClusterRoleBinding)(nil), "k8s.io.api.rbac.v1.ClusterRoleBinding")
proto.RegisterType((*ClusterRoleBindingList)(nil), "k8s.io.api.rbac.v1.ClusterRoleBindingList")
@@ -116,6 +124,36 @@ func init() {
proto.RegisterType((*RoleRef)(nil), "k8s.io.api.rbac.v1.RoleRef")
proto.RegisterType((*Subject)(nil), "k8s.io.api.rbac.v1.Subject")
}
+func (m *AggregationRule) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *AggregationRule) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.ClusterRoleSelectors) > 0 {
+ for _, msg := range m.ClusterRoleSelectors {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(msg.Size()))
+ n, err := msg.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n
+ }
+ }
+ return i, nil
+}
+
func (m *ClusterRole) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@@ -151,6 +189,16 @@ func (m *ClusterRole) MarshalTo(dAtA []byte) (int, error) {
i += n
}
}
+ if m.AggregationRule != nil {
+ dAtA[i] = 0x1a
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(m.AggregationRule.Size()))
+ n2, err := m.AggregationRule.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n2
+ }
return i, nil
}
@@ -172,11 +220,11 @@ func (m *ClusterRoleBinding) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0xa
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size()))
- n2, err := m.ObjectMeta.MarshalTo(dAtA[i:])
+ n3, err := m.ObjectMeta.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n2
+ i += n3
if len(m.Subjects) > 0 {
for _, msg := range m.Subjects {
dAtA[i] = 0x12
@@ -192,11 +240,11 @@ func (m *ClusterRoleBinding) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0x1a
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.RoleRef.Size()))
- n3, err := m.RoleRef.MarshalTo(dAtA[i:])
+ n4, err := m.RoleRef.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n3
+ i += n4
return i, nil
}
@@ -218,11 +266,11 @@ func (m *ClusterRoleBindingList) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0xa
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size()))
- n4, err := m.ListMeta.MarshalTo(dAtA[i:])
+ n5, err := m.ListMeta.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n4
+ i += n5
if len(m.Items) > 0 {
for _, msg := range m.Items {
dAtA[i] = 0x12
@@ -256,11 +304,11 @@ func (m *ClusterRoleList) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0xa
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size()))
- n5, err := m.ListMeta.MarshalTo(dAtA[i:])
+ n6, err := m.ListMeta.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n5
+ i += n6
if len(m.Items) > 0 {
for _, msg := range m.Items {
dAtA[i] = 0x12
@@ -387,11 +435,11 @@ func (m *Role) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0xa
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size()))
- n6, err := m.ObjectMeta.MarshalTo(dAtA[i:])
+ n7, err := m.ObjectMeta.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n6
+ i += n7
if len(m.Rules) > 0 {
for _, msg := range m.Rules {
dAtA[i] = 0x12
@@ -425,11 +473,11 @@ func (m *RoleBinding) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0xa
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size()))
- n7, err := m.ObjectMeta.MarshalTo(dAtA[i:])
+ n8, err := m.ObjectMeta.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n7
+ i += n8
if len(m.Subjects) > 0 {
for _, msg := range m.Subjects {
dAtA[i] = 0x12
@@ -445,11 +493,11 @@ func (m *RoleBinding) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0x1a
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.RoleRef.Size()))
- n8, err := m.RoleRef.MarshalTo(dAtA[i:])
+ n9, err := m.RoleRef.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n8
+ i += n9
return i, nil
}
@@ -471,11 +519,11 @@ func (m *RoleBindingList) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0xa
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size()))
- n9, err := m.ListMeta.MarshalTo(dAtA[i:])
+ n10, err := m.ListMeta.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n9
+ i += n10
if len(m.Items) > 0 {
for _, msg := range m.Items {
dAtA[i] = 0x12
@@ -509,11 +557,11 @@ func (m *RoleList) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0xa
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size()))
- n10, err := m.ListMeta.MarshalTo(dAtA[i:])
+ n11, err := m.ListMeta.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n10
+ i += n11
if len(m.Items) > 0 {
for _, msg := range m.Items {
dAtA[i] = 0x12
@@ -620,6 +668,18 @@ func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
dAtA[offset] = uint8(v)
return offset + 1
}
+func (m *AggregationRule) Size() (n int) {
+ var l int
+ _ = l
+ if len(m.ClusterRoleSelectors) > 0 {
+ for _, e := range m.ClusterRoleSelectors {
+ l = e.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ }
+ }
+ return n
+}
+
func (m *ClusterRole) Size() (n int) {
var l int
_ = l
@@ -631,6 +691,10 @@ func (m *ClusterRole) Size() (n int) {
n += 1 + l + sovGenerated(uint64(l))
}
}
+ if m.AggregationRule != nil {
+ l = m.AggregationRule.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ }
return n
}
@@ -811,6 +875,16 @@ func sovGenerated(x uint64) (n int) {
func sozGenerated(x uint64) (n int) {
return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63))))
}
+func (this *AggregationRule) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&AggregationRule{`,
+ `ClusterRoleSelectors:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ClusterRoleSelectors), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1), `&`, ``, 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
func (this *ClusterRole) String() string {
if this == nil {
return "nil"
@@ -818,6 +892,7 @@ func (this *ClusterRole) String() string {
s := strings.Join([]string{`&ClusterRole{`,
`ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
`Rules:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Rules), "PolicyRule", "PolicyRule", 1), `&`, ``, 1) + `,`,
+ `AggregationRule:` + strings.Replace(fmt.Sprintf("%v", this.AggregationRule), "AggregationRule", "AggregationRule", 1) + `,`,
`}`,
}, "")
return s
@@ -948,6 +1023,87 @@ func valueToStringGenerated(v interface{}) string {
pv := reflect.Indirect(rv).Interface()
return fmt.Sprintf("*%v", pv)
}
+func (m *AggregationRule) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: AggregationRule: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: AggregationRule: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ClusterRoleSelectors", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ClusterRoleSelectors = append(m.ClusterRoleSelectors, k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector{})
+ if err := m.ClusterRoleSelectors[len(m.ClusterRoleSelectors)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipGenerated(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
func (m *ClusterRole) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
@@ -1038,6 +1194,39 @@ func (m *ClusterRole) Unmarshal(dAtA []byte) error {
return err
}
iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field AggregationRule", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.AggregationRule == nil {
+ m.AggregationRule = &AggregationRule{}
+ }
+ if err := m.AggregationRule.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipGenerated(dAtA[iNdEx:])
@@ -2504,52 +2693,57 @@ func init() {
}
var fileDescriptorGenerated = []byte{
- // 743 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x94, 0x4f, 0x6b, 0x13, 0x4f,
- 0x18, 0xc7, 0x33, 0xf9, 0x43, 0xb3, 0x93, 0x5f, 0xc8, 0xaf, 0x2b, 0xc8, 0x52, 0x61, 0x13, 0x72,
- 0x90, 0x80, 0xba, 0x6b, 0xaa, 0xa8, 0x20, 0x3d, 0xb8, 0x15, 0xa5, 0xb4, 0xd6, 0x32, 0xa2, 0x07,
- 0xf1, 0xe0, 0x66, 0x33, 0x4d, 0xc7, 0x64, 0xff, 0x30, 0x33, 0x1b, 0x28, 0x5e, 0xc4, 0x9b, 0x37,
- 0xdf, 0x85, 0x17, 0xbd, 0xe9, 0x2b, 0xf0, 0xd2, 0x63, 0x8f, 0x3d, 0x05, 0xbb, 0xbe, 0x10, 0x65,
- 0x66, 0x77, 0xb3, 0x49, 0x93, 0xd8, 0x9e, 0x02, 0xe2, 0x29, 0x99, 0xe7, 0xf9, 0x7c, 0x9f, 0xf9,
- 0xce, 0xb3, 0x33, 0x0f, 0xbc, 0xdf, 0xbf, 0xc7, 0x0c, 0xe2, 0x9b, 0xfd, 0xb0, 0x83, 0xa9, 0x87,
- 0x39, 0x66, 0xe6, 0x10, 0x7b, 0x5d, 0x9f, 0x9a, 0x49, 0xc2, 0x0e, 0x88, 0x49, 0x3b, 0xb6, 0x63,
- 0x0e, 0xdb, 0x66, 0x0f, 0x7b, 0x98, 0xda, 0x1c, 0x77, 0x8d, 0x80, 0xfa, 0xdc, 0x57, 0xd5, 0x98,
- 0x31, 0xec, 0x80, 0x18, 0x82, 0x31, 0x86, 0xed, 0xb5, 0x1b, 0x3d, 0xc2, 0x0f, 0xc2, 0x8e, 0xe1,
- 0xf8, 0xae, 0xd9, 0xf3, 0x7b, 0xbe, 0x29, 0xd1, 0x4e, 0xb8, 0x2f, 0x57, 0x72, 0x21, 0xff, 0xc5,
- 0x25, 0xd6, 0x6e, 0x67, 0xdb, 0xb8, 0xb6, 0x73, 0x40, 0x3c, 0x4c, 0x0f, 0xcd, 0xa0, 0xdf, 0x13,
- 0x01, 0x66, 0xba, 0x98, 0xdb, 0x73, 0x36, 0x5e, 0x33, 0x17, 0xa9, 0x68, 0xe8, 0x71, 0xe2, 0xe2,
- 0x19, 0xc1, 0x9d, 0xf3, 0x04, 0xcc, 0x39, 0xc0, 0xae, 0x3d, 0xa3, 0xbb, 0xb5, 0x48, 0x17, 0x72,
- 0x32, 0x30, 0x89, 0xc7, 0x19, 0xa7, 0x67, 0x45, 0xcd, 0xaf, 0x00, 0x56, 0x36, 0x07, 0x21, 0xe3,
- 0x98, 0x22, 0x7f, 0x80, 0xd5, 0xd7, 0xb0, 0x2c, 0x0e, 0xd2, 0xb5, 0xb9, 0xad, 0x81, 0x06, 0x68,
- 0x55, 0xd6, 0x6f, 0x1a, 0x59, 0xe7, 0xc6, 0x75, 0x8d, 0xa0, 0xdf, 0x13, 0x01, 0x66, 0x08, 0xda,
- 0x18, 0xb6, 0x8d, 0xa7, 0x9d, 0x37, 0xd8, 0xe1, 0x4f, 0x30, 0xb7, 0x2d, 0xf5, 0x68, 0x54, 0xcf,
- 0x45, 0xa3, 0x3a, 0xcc, 0x62, 0x68, 0x5c, 0x55, 0xdd, 0x84, 0x25, 0x1a, 0x0e, 0x30, 0xd3, 0xf2,
- 0x8d, 0x42, 0xab, 0xb2, 0xae, 0x1b, 0xb3, 0x1f, 0xc6, 0xd8, 0xf3, 0x07, 0xc4, 0x39, 0x44, 0xe1,
- 0x00, 0x5b, 0xd5, 0xa4, 0x58, 0x49, 0xac, 0x18, 0x8a, 0xb5, 0xcd, 0x0f, 0x79, 0xa8, 0x4e, 0xd8,
- 0xb6, 0x88, 0xd7, 0x25, 0x5e, 0x6f, 0x09, 0xee, 0xb7, 0x60, 0x99, 0x85, 0x32, 0x91, 0x1e, 0xe0,
- 0xca, 0xbc, 0x03, 0x3c, 0x8b, 0x19, 0xeb, 0xff, 0xa4, 0x58, 0x39, 0x09, 0x30, 0x34, 0x96, 0xab,
- 0x8f, 0xe0, 0x0a, 0xf5, 0x07, 0x18, 0xe1, 0x7d, 0xad, 0x20, 0xbd, 0xce, 0xad, 0x84, 0x62, 0xc4,
- 0xaa, 0x25, 0x95, 0x56, 0x92, 0x00, 0x4a, 0xc5, 0xcd, 0xef, 0x00, 0x5e, 0x9e, 0xed, 0xc5, 0x0e,
- 0x61, 0x5c, 0x7d, 0x35, 0xd3, 0x0f, 0xe3, 0x62, 0xfd, 0x10, 0x6a, 0xd9, 0x8d, 0xf1, 0x01, 0xd2,
- 0xc8, 0x44, 0x2f, 0xb6, 0x61, 0x89, 0x70, 0xec, 0xa6, 0x8d, 0xb8, 0x3a, 0xcf, 0xfe, 0xac, 0xb1,
- 0xec, 0x8b, 0x6e, 0x09, 0x31, 0x8a, 0x6b, 0x34, 0xbf, 0x01, 0x58, 0x9b, 0x80, 0x97, 0x60, 0xff,
- 0xe1, 0xb4, 0xfd, 0xfa, 0x79, 0xf6, 0xe7, 0xfb, 0xfe, 0x05, 0x20, 0xcc, 0xae, 0xab, 0x5a, 0x87,
- 0xa5, 0x21, 0xa6, 0x1d, 0xa6, 0x81, 0x46, 0xa1, 0xa5, 0x58, 0x8a, 0xe0, 0x5f, 0x88, 0x00, 0x8a,
- 0xe3, 0xea, 0x35, 0xa8, 0xd8, 0x01, 0x79, 0x4c, 0xfd, 0x30, 0x88, 0x77, 0x56, 0xac, 0x6a, 0x34,
- 0xaa, 0x2b, 0x0f, 0xf6, 0xb6, 0xe2, 0x20, 0xca, 0xf2, 0x02, 0xa6, 0x98, 0xf9, 0x21, 0x75, 0x30,
- 0xd3, 0x0a, 0x19, 0x8c, 0xd2, 0x20, 0xca, 0xf2, 0xea, 0x5d, 0x58, 0x4d, 0x17, 0xbb, 0xb6, 0x8b,
- 0x99, 0x56, 0x94, 0x82, 0xd5, 0x68, 0x54, 0xaf, 0xa2, 0xc9, 0x04, 0x9a, 0xe6, 0xd4, 0x0d, 0x58,
- 0xf3, 0x7c, 0x2f, 0x45, 0x9e, 0xa3, 0x1d, 0xa6, 0x95, 0xa4, 0xf4, 0x52, 0x34, 0xaa, 0xd7, 0x76,
- 0xa7, 0x53, 0xe8, 0x2c, 0xdb, 0xfc, 0x02, 0x60, 0xf1, 0x6f, 0x9a, 0x1d, 0xef, 0xf3, 0xb0, 0xf2,
- 0xcf, 0x0f, 0x0d, 0xf1, 0xdc, 0x96, 0x3b, 0x2d, 0x2e, 0xf2, 0xdc, 0xce, 0x1f, 0x13, 0x9f, 0x00,
- 0x2c, 0x2f, 0x69, 0x3e, 0x6c, 0x4c, 0x1b, 0xd6, 0x16, 0x1a, 0x9e, 0xef, 0xf4, 0x2d, 0x4c, 0xbb,
- 0xae, 0x5e, 0x87, 0xe5, 0xf4, 0x4d, 0x4b, 0x9f, 0x4a, 0xb6, 0x6f, 0xfa, 0xec, 0xd1, 0x98, 0x50,
- 0x1b, 0xb0, 0xd8, 0x27, 0x5e, 0x57, 0xcb, 0x4b, 0xf2, 0xbf, 0x84, 0x2c, 0x6e, 0x13, 0xaf, 0x8b,
- 0x64, 0x46, 0x10, 0x9e, 0xed, 0x62, 0x79, 0x03, 0x26, 0x08, 0xf1, 0x9a, 0x91, 0xcc, 0x34, 0x3f,
- 0x03, 0xb8, 0x92, 0xdc, 0x9e, 0x71, 0x3d, 0xb0, 0xb0, 0xde, 0xa4, 0xbf, 0xfc, 0x45, 0xfc, 0xfd,
- 0x79, 0x77, 0xd5, 0x84, 0x8a, 0xf8, 0x65, 0x81, 0xed, 0x60, 0xad, 0x28, 0xb1, 0xd5, 0x04, 0x53,
- 0x76, 0xd3, 0x04, 0xca, 0x18, 0xab, 0x75, 0x74, 0xaa, 0xe7, 0x8e, 0x4f, 0xf5, 0xdc, 0xc9, 0xa9,
- 0x9e, 0x7b, 0x17, 0xe9, 0xe0, 0x28, 0xd2, 0xc1, 0x71, 0xa4, 0x83, 0x93, 0x48, 0x07, 0x3f, 0x22,
- 0x1d, 0x7c, 0xfc, 0xa9, 0xe7, 0x5e, 0xe6, 0x87, 0xed, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x66,
- 0x92, 0x08, 0x1d, 0x04, 0x0a, 0x00, 0x00,
+ // 827 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x55, 0xcf, 0x8b, 0x23, 0x45,
+ 0x18, 0x4d, 0x65, 0x12, 0x26, 0x5d, 0x31, 0xc4, 0x2d, 0x17, 0x69, 0xa2, 0x74, 0x86, 0x16, 0x24,
+ 0xa0, 0x76, 0x9b, 0x5d, 0x51, 0x41, 0xf6, 0xb0, 0xbd, 0xa2, 0x0c, 0x3b, 0x8e, 0x4b, 0x2d, 0x7a,
+ 0x10, 0x0f, 0x56, 0x77, 0x6a, 0x3b, 0x65, 0xfa, 0x17, 0x55, 0xd5, 0x81, 0xc5, 0x8b, 0x08, 0x1e,
+ 0xbc, 0x79, 0xd4, 0xbf, 0xc0, 0x8b, 0x1e, 0xfd, 0x0b, 0xbc, 0xcc, 0x71, 0x8f, 0x7b, 0x0a, 0x4e,
+ 0xfb, 0x87, 0x28, 0xfd, 0x2b, 0x9d, 0xa4, 0x3b, 0x4e, 0x4e, 0x01, 0xf1, 0x34, 0x53, 0xdf, 0xf7,
+ 0xde, 0xfb, 0x5e, 0xbf, 0xa9, 0xaf, 0x06, 0x7e, 0xb0, 0x78, 0x5f, 0x18, 0x2c, 0x34, 0x17, 0xb1,
+ 0x4d, 0x79, 0x40, 0x25, 0x15, 0xe6, 0x92, 0x06, 0xb3, 0x90, 0x9b, 0x45, 0x83, 0x44, 0xcc, 0xe4,
+ 0x36, 0x71, 0xcc, 0xe5, 0xd4, 0x74, 0x69, 0x40, 0x39, 0x91, 0x74, 0x66, 0x44, 0x3c, 0x94, 0x21,
+ 0x42, 0x39, 0xc6, 0x20, 0x11, 0x33, 0x52, 0x8c, 0xb1, 0x9c, 0x8e, 0xde, 0x72, 0x99, 0x9c, 0xc7,
+ 0xb6, 0xe1, 0x84, 0xbe, 0xe9, 0x86, 0x6e, 0x68, 0x66, 0x50, 0x3b, 0x7e, 0x92, 0x9d, 0xb2, 0x43,
+ 0xf6, 0x5b, 0x2e, 0x31, 0x9a, 0xd4, 0xc7, 0x10, 0x2f, 0x9a, 0x93, 0xda, 0xb0, 0xd1, 0x3b, 0x15,
+ 0xd2, 0x27, 0xce, 0x9c, 0x05, 0x94, 0x3f, 0x35, 0xa3, 0x85, 0x9b, 0x16, 0x84, 0xe9, 0x53, 0x49,
+ 0x1a, 0x2c, 0x8e, 0xcc, 0x7d, 0x2c, 0x1e, 0x07, 0x92, 0xf9, 0xb4, 0x46, 0x78, 0xf7, 0x26, 0x82,
+ 0x70, 0xe6, 0xd4, 0x27, 0x35, 0xde, 0xdd, 0x7d, 0xbc, 0x58, 0x32, 0xcf, 0x64, 0x81, 0x14, 0x92,
+ 0xef, 0x92, 0xf4, 0x9f, 0x01, 0x1c, 0xde, 0x77, 0x5d, 0x4e, 0x5d, 0x22, 0x59, 0x18, 0xe0, 0xd8,
+ 0xa3, 0xe8, 0x7b, 0x00, 0x6f, 0x3b, 0x5e, 0x2c, 0x24, 0xe5, 0x38, 0xf4, 0xe8, 0x63, 0xea, 0x51,
+ 0x47, 0x86, 0x5c, 0xa8, 0xe0, 0xec, 0x64, 0xd2, 0xbf, 0x73, 0xd7, 0xa8, 0x42, 0x5f, 0x0f, 0x32,
+ 0xa2, 0x85, 0x9b, 0x16, 0x84, 0x91, 0xe6, 0x60, 0x2c, 0xa7, 0xc6, 0x05, 0xb1, 0xa9, 0x57, 0x72,
+ 0xad, 0x57, 0xaf, 0x56, 0xe3, 0x56, 0xb2, 0x1a, 0xdf, 0x7e, 0xd0, 0x20, 0x8c, 0x1b, 0xc7, 0xe9,
+ 0x3f, 0xb5, 0x61, 0x7f, 0x03, 0x8e, 0xbe, 0x82, 0xbd, 0x54, 0x7c, 0x46, 0x24, 0x51, 0xc1, 0x19,
+ 0x98, 0xf4, 0xef, 0xbc, 0x7d, 0x98, 0x95, 0x4f, 0xed, 0xaf, 0xa9, 0x23, 0x3f, 0xa1, 0x92, 0x58,
+ 0xa8, 0xf0, 0x01, 0xab, 0x1a, 0x5e, 0xab, 0xa2, 0x07, 0xb0, 0xcb, 0x63, 0x8f, 0x0a, 0xb5, 0x9d,
+ 0x7d, 0xa9, 0x66, 0xd4, 0xaf, 0x97, 0xf1, 0x28, 0xf4, 0x98, 0xf3, 0x34, 0x0d, 0xca, 0x1a, 0x14,
+ 0x62, 0xdd, 0xf4, 0x24, 0x70, 0xce, 0x45, 0x36, 0x1c, 0x92, 0xed, 0x44, 0xd5, 0x93, 0xcc, 0xed,
+ 0x6b, 0x4d, 0x72, 0x3b, 0xe1, 0x5b, 0x2f, 0x25, 0xab, 0xf1, 0xee, 0x5f, 0x04, 0xef, 0x0a, 0xea,
+ 0x3f, 0xb4, 0x21, 0xda, 0x88, 0xc6, 0x62, 0xc1, 0x8c, 0x05, 0xee, 0x11, 0x12, 0x3a, 0x87, 0x3d,
+ 0x11, 0x67, 0x8d, 0x32, 0xa4, 0x57, 0x9a, 0xbe, 0xea, 0x71, 0x8e, 0xb1, 0x5e, 0x2c, 0xc4, 0x7a,
+ 0x45, 0x41, 0xe0, 0x35, 0x1d, 0x7d, 0x04, 0x4f, 0x79, 0xe8, 0x51, 0x4c, 0x9f, 0x14, 0xf9, 0x34,
+ 0x2a, 0xe1, 0x1c, 0x62, 0x0d, 0x0b, 0xa5, 0xd3, 0xa2, 0x80, 0x4b, 0xb2, 0xfe, 0x07, 0x80, 0x2f,
+ 0xd7, 0xb3, 0xb8, 0x60, 0x42, 0xa2, 0x2f, 0x6b, 0x79, 0x18, 0x07, 0x5e, 0x5e, 0x26, 0xf2, 0x34,
+ 0xd6, 0x1f, 0x50, 0x56, 0x36, 0xb2, 0x78, 0x08, 0xbb, 0x4c, 0x52, 0xbf, 0x0c, 0xe2, 0xf5, 0x26,
+ 0xfb, 0x75, 0x63, 0xd5, 0xad, 0x39, 0x4f, 0xc9, 0x38, 0xd7, 0xd0, 0x7f, 0x07, 0x70, 0xb8, 0x01,
+ 0x3e, 0x82, 0xfd, 0x0f, 0xb7, 0xed, 0x8f, 0x6f, 0xb2, 0xdf, 0xec, 0xfb, 0x6f, 0x00, 0x61, 0xb5,
+ 0x12, 0x68, 0x0c, 0xbb, 0x4b, 0xca, 0xed, 0xfc, 0xad, 0x50, 0x2c, 0x25, 0xc5, 0x7f, 0x9e, 0x16,
+ 0x70, 0x5e, 0x47, 0x6f, 0x40, 0x85, 0x44, 0xec, 0x63, 0x1e, 0xc6, 0x51, 0x3e, 0x59, 0xb1, 0x06,
+ 0xc9, 0x6a, 0xac, 0xdc, 0x7f, 0x74, 0x9e, 0x17, 0x71, 0xd5, 0x4f, 0xc1, 0x9c, 0x8a, 0x30, 0xe6,
+ 0x0e, 0x15, 0xea, 0x49, 0x05, 0xc6, 0x65, 0x11, 0x57, 0x7d, 0xf4, 0x1e, 0x1c, 0x94, 0x87, 0x4b,
+ 0xe2, 0x53, 0xa1, 0x76, 0x32, 0xc2, 0xad, 0x64, 0x35, 0x1e, 0xe0, 0xcd, 0x06, 0xde, 0xc6, 0xa1,
+ 0x7b, 0x70, 0x18, 0x84, 0x41, 0x09, 0xf9, 0x0c, 0x5f, 0x08, 0xb5, 0x9b, 0x51, 0xb3, 0x5d, 0xbc,
+ 0xdc, 0x6e, 0xe1, 0x5d, 0xac, 0xfe, 0x1b, 0x80, 0x9d, 0xff, 0xd0, 0xfb, 0xa4, 0x7f, 0xd7, 0x86,
+ 0xfd, 0xff, 0xfd, 0xa3, 0x91, 0xae, 0xdb, 0x71, 0x5f, 0x8b, 0x43, 0xd6, 0xed, 0xe6, 0x67, 0xe2,
+ 0x17, 0x00, 0x7b, 0x47, 0x7a, 0x1f, 0xee, 0x6d, 0x1b, 0x56, 0xf7, 0x1a, 0x6e, 0x76, 0xfa, 0x0d,
+ 0x2c, 0x53, 0x47, 0x6f, 0xc2, 0x5e, 0xb9, 0xd3, 0x99, 0x4f, 0xa5, 0x9a, 0x5b, 0xae, 0x3d, 0x5e,
+ 0x23, 0xd0, 0x19, 0xec, 0x2c, 0x58, 0x30, 0x53, 0xdb, 0x19, 0xf2, 0x85, 0x02, 0xd9, 0x79, 0xc8,
+ 0x82, 0x19, 0xce, 0x3a, 0x29, 0x22, 0x20, 0x7e, 0xfe, 0x6f, 0x75, 0x03, 0x91, 0x6e, 0x33, 0xce,
+ 0x3a, 0xfa, 0xaf, 0x00, 0x9e, 0x16, 0xb7, 0x67, 0xad, 0x07, 0xf6, 0xea, 0x6d, 0xfa, 0x6b, 0x1f,
+ 0xe2, 0xef, 0xdf, 0xa7, 0x23, 0x13, 0x2a, 0xe9, 0x4f, 0x11, 0x11, 0x87, 0xaa, 0x9d, 0x0c, 0x76,
+ 0xab, 0x80, 0x29, 0x97, 0x65, 0x03, 0x57, 0x18, 0x6b, 0x72, 0x75, 0xad, 0xb5, 0x9e, 0x5d, 0x6b,
+ 0xad, 0xe7, 0xd7, 0x5a, 0xeb, 0xdb, 0x44, 0x03, 0x57, 0x89, 0x06, 0x9e, 0x25, 0x1a, 0x78, 0x9e,
+ 0x68, 0xe0, 0xcf, 0x44, 0x03, 0x3f, 0xfe, 0xa5, 0xb5, 0xbe, 0x68, 0x2f, 0xa7, 0xff, 0x04, 0x00,
+ 0x00, 0xff, 0xff, 0x32, 0xe3, 0x23, 0xf8, 0x2e, 0x0b, 0x00, 0x00,
}
diff --git a/staging/src/k8s.io/api/rbac/v1/generated.proto b/staging/src/k8s.io/api/rbac/v1/generated.proto
index 29aa3d5eeb..6edb2779a6 100644
--- a/staging/src/k8s.io/api/rbac/v1/generated.proto
+++ b/staging/src/k8s.io/api/rbac/v1/generated.proto
@@ -21,6 +21,7 @@ syntax = 'proto2';
package k8s.io.api.rbac.v1;
+import "k8s.io/api/rbac/v1alpha1/generated.proto";
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
@@ -29,6 +30,14 @@ import "k8s.io/apimachinery/pkg/util/intstr/generated.proto";
// Package-wide variables from generator "generated".
option go_package = "v1";
+// AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole
+message AggregationRule {
+ // ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules.
+ // If any of the selectors match, then the ClusterRole's permissions will be added
+ // +optional
+ repeated k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector clusterRoleSelectors = 1;
+}
+
// ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.
message ClusterRole {
// Standard object's metadata.
@@ -37,6 +46,12 @@ message ClusterRole {
// Rules holds all the PolicyRules for this ClusterRole
repeated PolicyRule rules = 2;
+
+ // AggregationRule is an optional field that describes how to build the Rules for this ClusterRole.
+ // If AggregationRule is set, then the Rules are controller managed and direct changes to Rules will be
+ // stomped by the controller.
+ // +optional
+ optional AggregationRule aggregationRule = 3;
}
// ClusterRoleBinding references a ClusterRole, but not contain it. It can reference a ClusterRole in the global namespace,
diff --git a/staging/src/k8s.io/api/rbac/v1/types.go b/staging/src/k8s.io/api/rbac/v1/types.go
index 8dbd1a8b89..91990548bc 100644
--- a/staging/src/k8s.io/api/rbac/v1/types.go
+++ b/staging/src/k8s.io/api/rbac/v1/types.go
@@ -170,6 +170,20 @@ type ClusterRole struct {
// Rules holds all the PolicyRules for this ClusterRole
Rules []PolicyRule `json:"rules" protobuf:"bytes,2,rep,name=rules"`
+
+ // AggregationRule is an optional field that describes how to build the Rules for this ClusterRole.
+ // If AggregationRule is set, then the Rules are controller managed and direct changes to Rules will be
+ // stomped by the controller.
+ // +optional
+ AggregationRule *AggregationRule `json:"aggregationRule,omitempty" protobuf:"bytes,3,opt,name=aggregationRule"`
+}
+
+// AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole
+type AggregationRule struct {
+ // ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules.
+ // If any of the selectors match, then the ClusterRole's permissions will be added
+ // +optional
+ ClusterRoleSelectors []metav1.LabelSelector `json:"clusterRoleSelectors,omitempty" protobuf:"bytes,1,rep,name=clusterRoleSelectors"`
}
// +genclient
diff --git a/staging/src/k8s.io/api/rbac/v1/types_swagger_doc_generated.go b/staging/src/k8s.io/api/rbac/v1/types_swagger_doc_generated.go
index 7770d4085b..280ae5a82f 100644
--- a/staging/src/k8s.io/api/rbac/v1/types_swagger_doc_generated.go
+++ b/staging/src/k8s.io/api/rbac/v1/types_swagger_doc_generated.go
@@ -27,10 +27,20 @@ package v1
// Those methods can be generated by using hack/update-generated-swagger-docs.sh
// AUTO-GENERATED FUNCTIONS START HERE
+var map_AggregationRule = map[string]string{
+ "": "AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole",
+ "clusterRoleSelectors": "ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added",
+}
+
+func (AggregationRule) SwaggerDoc() map[string]string {
+ return map_AggregationRule
+}
+
var map_ClusterRole = map[string]string{
- "": "ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.",
- "metadata": "Standard object's metadata.",
- "rules": "Rules holds all the PolicyRules for this ClusterRole",
+ "": "ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.",
+ "metadata": "Standard object's metadata.",
+ "rules": "Rules holds all the PolicyRules for this ClusterRole",
+ "aggregationRule": "AggregationRule is an optional field that describes how to build the Rules for this ClusterRole. If AggregationRule is set, then the Rules are controller managed and direct changes to Rules will be stomped by the controller.",
}
func (ClusterRole) SwaggerDoc() map[string]string {
diff --git a/staging/src/k8s.io/api/rbac/v1/zz_generated.deepcopy.go b/staging/src/k8s.io/api/rbac/v1/zz_generated.deepcopy.go
index 7ffc81869d..e1aab58145 100644
--- a/staging/src/k8s.io/api/rbac/v1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/api/rbac/v1/zz_generated.deepcopy.go
@@ -21,66 +21,31 @@ limitations under the License.
package v1
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
+ meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *AggregationRule) DeepCopyInto(out *AggregationRule) {
+ *out = *in
+ if in.ClusterRoleSelectors != nil {
+ in, out := &in.ClusterRoleSelectors, &out.ClusterRoleSelectors
+ *out = make([]meta_v1.LabelSelector, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+ return
}
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ClusterRole).DeepCopyInto(out.(*ClusterRole))
- return nil
- }, InType: reflect.TypeOf(&ClusterRole{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ClusterRoleBinding).DeepCopyInto(out.(*ClusterRoleBinding))
- return nil
- }, InType: reflect.TypeOf(&ClusterRoleBinding{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ClusterRoleBindingList).DeepCopyInto(out.(*ClusterRoleBindingList))
- return nil
- }, InType: reflect.TypeOf(&ClusterRoleBindingList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ClusterRoleList).DeepCopyInto(out.(*ClusterRoleList))
- return nil
- }, InType: reflect.TypeOf(&ClusterRoleList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PolicyRule).DeepCopyInto(out.(*PolicyRule))
- return nil
- }, InType: reflect.TypeOf(&PolicyRule{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Role).DeepCopyInto(out.(*Role))
- return nil
- }, InType: reflect.TypeOf(&Role{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RoleBinding).DeepCopyInto(out.(*RoleBinding))
- return nil
- }, InType: reflect.TypeOf(&RoleBinding{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RoleBindingList).DeepCopyInto(out.(*RoleBindingList))
- return nil
- }, InType: reflect.TypeOf(&RoleBindingList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RoleList).DeepCopyInto(out.(*RoleList))
- return nil
- }, InType: reflect.TypeOf(&RoleList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RoleRef).DeepCopyInto(out.(*RoleRef))
- return nil
- }, InType: reflect.TypeOf(&RoleRef{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Subject).DeepCopyInto(out.(*Subject))
- return nil
- }, InType: reflect.TypeOf(&Subject{})},
- )
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AggregationRule.
+func (in *AggregationRule) DeepCopy() *AggregationRule {
+ if in == nil {
+ return nil
+ }
+ out := new(AggregationRule)
+ in.DeepCopyInto(out)
+ return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
@@ -95,6 +60,15 @@ func (in *ClusterRole) DeepCopyInto(out *ClusterRole) {
(*in)[i].DeepCopyInto(&(*out)[i])
}
}
+ if in.AggregationRule != nil {
+ in, out := &in.AggregationRule, &out.AggregationRule
+ if *in == nil {
+ *out = nil
+ } else {
+ *out = new(AggregationRule)
+ (*in).DeepCopyInto(*out)
+ }
+ }
return
}
diff --git a/staging/src/k8s.io/api/rbac/v1alpha1/BUILD b/staging/src/k8s.io/api/rbac/v1alpha1/BUILD
index cd79422863..68d7cdfbb1 100644
--- a/staging/src/k8s.io/api/rbac/v1alpha1/BUILD
+++ b/staging/src/k8s.io/api/rbac/v1alpha1/BUILD
@@ -19,7 +19,6 @@ go_library(
deps = [
"//vendor/github.com/gogo/protobuf/proto:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/api/rbac/v1alpha1/doc.go b/staging/src/k8s.io/api/rbac/v1alpha1/doc.go
index 619b47bf25..5236a477f0 100644
--- a/staging/src/k8s.io/api/rbac/v1alpha1/doc.go
+++ b/staging/src/k8s.io/api/rbac/v1alpha1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:openapi-gen=true
// +groupName=rbac.authorization.k8s.io
diff --git a/staging/src/k8s.io/api/rbac/v1alpha1/generated.pb.go b/staging/src/k8s.io/api/rbac/v1alpha1/generated.pb.go
index 31e68aeeda..c66cadd95b 100644
--- a/staging/src/k8s.io/api/rbac/v1alpha1/generated.pb.go
+++ b/staging/src/k8s.io/api/rbac/v1alpha1/generated.pb.go
@@ -25,6 +25,7 @@ limitations under the License.
k8s.io/kubernetes/vendor/k8s.io/api/rbac/v1alpha1/generated.proto
It has these top-level messages:
+ AggregationRule
ClusterRole
ClusterRoleBinding
ClusterRoleBindingList
@@ -43,6 +44,8 @@ import proto "github.com/gogo/protobuf/proto"
import fmt "fmt"
import math "math"
+import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+
import strings "strings"
import reflect "reflect"
@@ -59,51 +62,56 @@ var _ = math.Inf
// proto package needs to be updated.
const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package
+func (m *AggregationRule) Reset() { *m = AggregationRule{} }
+func (*AggregationRule) ProtoMessage() {}
+func (*AggregationRule) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} }
+
func (m *ClusterRole) Reset() { *m = ClusterRole{} }
func (*ClusterRole) ProtoMessage() {}
-func (*ClusterRole) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} }
+func (*ClusterRole) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} }
func (m *ClusterRoleBinding) Reset() { *m = ClusterRoleBinding{} }
func (*ClusterRoleBinding) ProtoMessage() {}
-func (*ClusterRoleBinding) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} }
+func (*ClusterRoleBinding) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} }
func (m *ClusterRoleBindingList) Reset() { *m = ClusterRoleBindingList{} }
func (*ClusterRoleBindingList) ProtoMessage() {}
-func (*ClusterRoleBindingList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} }
+func (*ClusterRoleBindingList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} }
func (m *ClusterRoleList) Reset() { *m = ClusterRoleList{} }
func (*ClusterRoleList) ProtoMessage() {}
-func (*ClusterRoleList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} }
+func (*ClusterRoleList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} }
func (m *PolicyRule) Reset() { *m = PolicyRule{} }
func (*PolicyRule) ProtoMessage() {}
-func (*PolicyRule) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} }
+func (*PolicyRule) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} }
func (m *Role) Reset() { *m = Role{} }
func (*Role) ProtoMessage() {}
-func (*Role) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} }
+func (*Role) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} }
func (m *RoleBinding) Reset() { *m = RoleBinding{} }
func (*RoleBinding) ProtoMessage() {}
-func (*RoleBinding) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} }
+func (*RoleBinding) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} }
func (m *RoleBindingList) Reset() { *m = RoleBindingList{} }
func (*RoleBindingList) ProtoMessage() {}
-func (*RoleBindingList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} }
+func (*RoleBindingList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} }
func (m *RoleList) Reset() { *m = RoleList{} }
func (*RoleList) ProtoMessage() {}
-func (*RoleList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} }
+func (*RoleList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{9} }
func (m *RoleRef) Reset() { *m = RoleRef{} }
func (*RoleRef) ProtoMessage() {}
-func (*RoleRef) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{9} }
+func (*RoleRef) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{10} }
func (m *Subject) Reset() { *m = Subject{} }
func (*Subject) ProtoMessage() {}
-func (*Subject) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{10} }
+func (*Subject) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{11} }
func init() {
+ proto.RegisterType((*AggregationRule)(nil), "k8s.io.api.rbac.v1alpha1.AggregationRule")
proto.RegisterType((*ClusterRole)(nil), "k8s.io.api.rbac.v1alpha1.ClusterRole")
proto.RegisterType((*ClusterRoleBinding)(nil), "k8s.io.api.rbac.v1alpha1.ClusterRoleBinding")
proto.RegisterType((*ClusterRoleBindingList)(nil), "k8s.io.api.rbac.v1alpha1.ClusterRoleBindingList")
@@ -116,6 +124,36 @@ func init() {
proto.RegisterType((*RoleRef)(nil), "k8s.io.api.rbac.v1alpha1.RoleRef")
proto.RegisterType((*Subject)(nil), "k8s.io.api.rbac.v1alpha1.Subject")
}
+func (m *AggregationRule) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *AggregationRule) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.ClusterRoleSelectors) > 0 {
+ for _, msg := range m.ClusterRoleSelectors {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(msg.Size()))
+ n, err := msg.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n
+ }
+ }
+ return i, nil
+}
+
func (m *ClusterRole) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@@ -151,6 +189,16 @@ func (m *ClusterRole) MarshalTo(dAtA []byte) (int, error) {
i += n
}
}
+ if m.AggregationRule != nil {
+ dAtA[i] = 0x1a
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(m.AggregationRule.Size()))
+ n2, err := m.AggregationRule.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n2
+ }
return i, nil
}
@@ -172,11 +220,11 @@ func (m *ClusterRoleBinding) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0xa
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size()))
- n2, err := m.ObjectMeta.MarshalTo(dAtA[i:])
+ n3, err := m.ObjectMeta.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n2
+ i += n3
if len(m.Subjects) > 0 {
for _, msg := range m.Subjects {
dAtA[i] = 0x12
@@ -192,11 +240,11 @@ func (m *ClusterRoleBinding) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0x1a
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.RoleRef.Size()))
- n3, err := m.RoleRef.MarshalTo(dAtA[i:])
+ n4, err := m.RoleRef.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n3
+ i += n4
return i, nil
}
@@ -218,11 +266,11 @@ func (m *ClusterRoleBindingList) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0xa
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size()))
- n4, err := m.ListMeta.MarshalTo(dAtA[i:])
+ n5, err := m.ListMeta.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n4
+ i += n5
if len(m.Items) > 0 {
for _, msg := range m.Items {
dAtA[i] = 0x12
@@ -256,11 +304,11 @@ func (m *ClusterRoleList) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0xa
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size()))
- n5, err := m.ListMeta.MarshalTo(dAtA[i:])
+ n6, err := m.ListMeta.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n5
+ i += n6
if len(m.Items) > 0 {
for _, msg := range m.Items {
dAtA[i] = 0x12
@@ -387,11 +435,11 @@ func (m *Role) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0xa
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size()))
- n6, err := m.ObjectMeta.MarshalTo(dAtA[i:])
+ n7, err := m.ObjectMeta.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n6
+ i += n7
if len(m.Rules) > 0 {
for _, msg := range m.Rules {
dAtA[i] = 0x12
@@ -425,11 +473,11 @@ func (m *RoleBinding) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0xa
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size()))
- n7, err := m.ObjectMeta.MarshalTo(dAtA[i:])
+ n8, err := m.ObjectMeta.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n7
+ i += n8
if len(m.Subjects) > 0 {
for _, msg := range m.Subjects {
dAtA[i] = 0x12
@@ -445,11 +493,11 @@ func (m *RoleBinding) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0x1a
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.RoleRef.Size()))
- n8, err := m.RoleRef.MarshalTo(dAtA[i:])
+ n9, err := m.RoleRef.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n8
+ i += n9
return i, nil
}
@@ -471,11 +519,11 @@ func (m *RoleBindingList) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0xa
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size()))
- n9, err := m.ListMeta.MarshalTo(dAtA[i:])
+ n10, err := m.ListMeta.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n9
+ i += n10
if len(m.Items) > 0 {
for _, msg := range m.Items {
dAtA[i] = 0x12
@@ -509,11 +557,11 @@ func (m *RoleList) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0xa
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size()))
- n10, err := m.ListMeta.MarshalTo(dAtA[i:])
+ n11, err := m.ListMeta.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n10
+ i += n11
if len(m.Items) > 0 {
for _, msg := range m.Items {
dAtA[i] = 0x12
@@ -620,6 +668,18 @@ func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
dAtA[offset] = uint8(v)
return offset + 1
}
+func (m *AggregationRule) Size() (n int) {
+ var l int
+ _ = l
+ if len(m.ClusterRoleSelectors) > 0 {
+ for _, e := range m.ClusterRoleSelectors {
+ l = e.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ }
+ }
+ return n
+}
+
func (m *ClusterRole) Size() (n int) {
var l int
_ = l
@@ -631,6 +691,10 @@ func (m *ClusterRole) Size() (n int) {
n += 1 + l + sovGenerated(uint64(l))
}
}
+ if m.AggregationRule != nil {
+ l = m.AggregationRule.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ }
return n
}
@@ -811,6 +875,16 @@ func sovGenerated(x uint64) (n int) {
func sozGenerated(x uint64) (n int) {
return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63))))
}
+func (this *AggregationRule) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&AggregationRule{`,
+ `ClusterRoleSelectors:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ClusterRoleSelectors), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1), `&`, ``, 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
func (this *ClusterRole) String() string {
if this == nil {
return "nil"
@@ -818,6 +892,7 @@ func (this *ClusterRole) String() string {
s := strings.Join([]string{`&ClusterRole{`,
`ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
`Rules:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Rules), "PolicyRule", "PolicyRule", 1), `&`, ``, 1) + `,`,
+ `AggregationRule:` + strings.Replace(fmt.Sprintf("%v", this.AggregationRule), "AggregationRule", "AggregationRule", 1) + `,`,
`}`,
}, "")
return s
@@ -948,6 +1023,87 @@ func valueToStringGenerated(v interface{}) string {
pv := reflect.Indirect(rv).Interface()
return fmt.Sprintf("*%v", pv)
}
+func (m *AggregationRule) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: AggregationRule: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: AggregationRule: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ClusterRoleSelectors", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ClusterRoleSelectors = append(m.ClusterRoleSelectors, k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector{})
+ if err := m.ClusterRoleSelectors[len(m.ClusterRoleSelectors)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipGenerated(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
func (m *ClusterRole) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
@@ -1038,6 +1194,39 @@ func (m *ClusterRole) Unmarshal(dAtA []byte) error {
return err
}
iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field AggregationRule", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.AggregationRule == nil {
+ m.AggregationRule = &AggregationRule{}
+ }
+ if err := m.AggregationRule.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipGenerated(dAtA[iNdEx:])
@@ -2504,53 +2693,58 @@ func init() {
}
var fileDescriptorGenerated = []byte{
- // 766 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x94, 0xcd, 0x6e, 0xd3, 0x40,
- 0x10, 0xc7, 0xb3, 0xf9, 0xa0, 0xc9, 0x86, 0x28, 0xd4, 0x48, 0xc8, 0xea, 0xc1, 0x09, 0x11, 0x48,
- 0x95, 0x28, 0x36, 0x2d, 0x08, 0xb8, 0x70, 0x68, 0x7a, 0x40, 0x81, 0xd2, 0x96, 0x45, 0xf4, 0x80,
- 0x38, 0xb0, 0x71, 0xb6, 0xc9, 0x12, 0x7f, 0x69, 0xd7, 0x8e, 0x54, 0x71, 0xe1, 0x09, 0x10, 0x17,
- 0x1e, 0x83, 0x0b, 0xdc, 0xe0, 0x05, 0xca, 0xad, 0xc7, 0x9e, 0x22, 0x6a, 0x1e, 0x04, 0xb4, 0x6b,
- 0x3b, 0x4e, 0x9a, 0x86, 0xf4, 0x14, 0x09, 0x89, 0x93, 0xbd, 0x33, 0xbf, 0xf9, 0xef, 0xcc, 0xec,
- 0xee, 0xc0, 0xcd, 0xfe, 0x43, 0xae, 0x53, 0xd7, 0xe8, 0x07, 0x6d, 0xc2, 0x1c, 0xe2, 0x13, 0x6e,
- 0x0c, 0x88, 0xd3, 0x71, 0x99, 0x11, 0x3b, 0xb0, 0x47, 0x0d, 0xd6, 0xc6, 0xa6, 0x31, 0x58, 0xc7,
- 0x96, 0xd7, 0xc3, 0xeb, 0x46, 0x97, 0x38, 0x84, 0x61, 0x9f, 0x74, 0x74, 0x8f, 0xb9, 0xbe, 0xab,
- 0xa8, 0x11, 0xa9, 0x63, 0x8f, 0xea, 0x82, 0xd4, 0x13, 0x72, 0xe5, 0x76, 0x97, 0xfa, 0xbd, 0xa0,
- 0xad, 0x9b, 0xae, 0x6d, 0x74, 0xdd, 0xae, 0x6b, 0xc8, 0x80, 0x76, 0x70, 0x20, 0x57, 0x72, 0x21,
- 0xff, 0x22, 0xa1, 0x95, 0x7b, 0xe9, 0x96, 0x36, 0x36, 0x7b, 0xd4, 0x21, 0xec, 0xd0, 0xf0, 0xfa,
- 0x5d, 0x61, 0xe0, 0x86, 0x4d, 0x7c, 0x6c, 0x0c, 0xa6, 0xb6, 0x5f, 0x31, 0x66, 0x45, 0xb1, 0xc0,
- 0xf1, 0xa9, 0x4d, 0xa6, 0x02, 0xee, 0xcf, 0x0b, 0xe0, 0x66, 0x8f, 0xd8, 0x78, 0x2a, 0xee, 0xee,
- 0xac, 0xb8, 0xc0, 0xa7, 0x96, 0x41, 0x1d, 0x9f, 0xfb, 0xec, 0x6c, 0x50, 0xe3, 0x1b, 0x80, 0xe5,
- 0x2d, 0x2b, 0xe0, 0x3e, 0x61, 0xc8, 0xb5, 0x88, 0xf2, 0x06, 0x16, 0x45, 0x21, 0x1d, 0xec, 0x63,
- 0x15, 0xd4, 0xc1, 0x6a, 0x79, 0xe3, 0x8e, 0x9e, 0xf6, 0x6f, 0xa4, 0xab, 0x7b, 0xfd, 0xae, 0x30,
- 0x70, 0x5d, 0xd0, 0xfa, 0x60, 0x5d, 0xdf, 0x6d, 0xbf, 0x25, 0xa6, 0xff, 0x8c, 0xf8, 0xb8, 0xa9,
- 0x1c, 0x0d, 0x6b, 0x99, 0x70, 0x58, 0x83, 0xa9, 0x0d, 0x8d, 0x54, 0x95, 0x16, 0x2c, 0xb0, 0xc0,
- 0x22, 0x5c, 0xcd, 0xd6, 0x73, 0xab, 0xe5, 0x8d, 0x1b, 0xfa, 0xac, 0xe3, 0xd1, 0xf7, 0x5c, 0x8b,
- 0x9a, 0x87, 0x28, 0xb0, 0x48, 0xb3, 0x12, 0x4b, 0x16, 0xc4, 0x8a, 0xa3, 0x48, 0xa1, 0xf1, 0x29,
- 0x0b, 0x95, 0xb1, 0xe4, 0x9b, 0xd4, 0xe9, 0x50, 0xa7, 0xbb, 0x80, 0x1a, 0x76, 0x61, 0x91, 0x07,
- 0xd2, 0x91, 0x94, 0x71, 0x7d, 0x76, 0x19, 0x2f, 0x22, 0xb2, 0x79, 0x25, 0x96, 0x2c, 0xc6, 0x06,
- 0x8e, 0x46, 0x22, 0xca, 0x36, 0x5c, 0x62, 0xae, 0x45, 0x10, 0x39, 0x50, 0x73, 0x32, 0xe3, 0xbf,
- 0xe8, 0xa1, 0x08, 0x6c, 0x56, 0x63, 0xbd, 0xa5, 0xd8, 0x80, 0x12, 0x89, 0xc6, 0x0f, 0x00, 0xaf,
- 0x4d, 0xf7, 0x65, 0x9b, 0x72, 0x5f, 0x79, 0x3d, 0xd5, 0x1b, 0xfd, 0x62, 0xbd, 0x11, 0xd1, 0xb2,
- 0x33, 0xa3, 0x32, 0x12, 0xcb, 0x58, 0x5f, 0x9e, 0xc3, 0x02, 0xf5, 0x89, 0x9d, 0x34, 0x65, 0x6d,
- 0x76, 0x11, 0xd3, 0xe9, 0xa5, 0x67, 0xdc, 0x12, 0x12, 0x28, 0x52, 0x6a, 0x7c, 0x07, 0xb0, 0x3a,
- 0x06, 0x2f, 0xa0, 0x88, 0x27, 0x93, 0x45, 0xdc, 0xbc, 0x58, 0x11, 0xe7, 0x67, 0xff, 0x1b, 0x40,
- 0x98, 0x5e, 0x63, 0xa5, 0x06, 0x0b, 0x03, 0xc2, 0xda, 0x5c, 0x05, 0xf5, 0xdc, 0x6a, 0xa9, 0x59,
- 0x12, 0xfc, 0xbe, 0x30, 0xa0, 0xc8, 0xae, 0xdc, 0x82, 0x25, 0xec, 0xd1, 0xc7, 0xcc, 0x0d, 0x3c,
- 0xae, 0xe6, 0x24, 0x54, 0x09, 0x87, 0xb5, 0xd2, 0xe6, 0x5e, 0x2b, 0x32, 0xa2, 0xd4, 0x2f, 0x60,
- 0x46, 0xb8, 0x1b, 0x30, 0x93, 0x70, 0x35, 0x9f, 0xc2, 0x28, 0x31, 0xa2, 0xd4, 0xaf, 0x3c, 0x80,
- 0x95, 0x64, 0xb1, 0x83, 0x6d, 0xc2, 0xd5, 0x82, 0x0c, 0x58, 0x0e, 0x87, 0xb5, 0x0a, 0x1a, 0x77,
- 0xa0, 0x49, 0x4e, 0x79, 0x04, 0xab, 0x8e, 0xeb, 0x24, 0xc8, 0x4b, 0xb4, 0xcd, 0xd5, 0x4b, 0x32,
- 0xf4, 0x6a, 0x38, 0xac, 0x55, 0x77, 0x26, 0x5d, 0xe8, 0x2c, 0xdb, 0xf8, 0x0a, 0x60, 0xfe, 0xdf,
- 0x9b, 0x2c, 0x1f, 0xb2, 0xb0, 0xfc, 0x7f, 0xa4, 0x8c, 0x8d, 0x14, 0xf1, 0x0c, 0x17, 0x3b, 0x4b,
- 0x2e, 0xfe, 0x0c, 0xe7, 0x0f, 0x91, 0xcf, 0x00, 0x16, 0x17, 0x34, 0x3d, 0xb6, 0x26, 0xd3, 0xd6,
- 0xe6, 0xa4, 0x7d, 0x7e, 0xbe, 0xef, 0x60, 0x72, 0x02, 0xca, 0x1a, 0x2c, 0x26, 0x2f, 0x5e, 0x66,
- 0x5b, 0x4a, 0x77, 0x4f, 0x86, 0x02, 0x1a, 0x11, 0x4a, 0x1d, 0xe6, 0xfb, 0xd4, 0xe9, 0xa8, 0x59,
- 0x49, 0x5e, 0x8e, 0xc9, 0xfc, 0x53, 0xea, 0x74, 0x90, 0xf4, 0x08, 0xc2, 0xc1, 0x36, 0x91, 0x77,
- 0x62, 0x8c, 0x10, 0x6f, 0x1d, 0x49, 0x4f, 0xe3, 0x0b, 0x80, 0x4b, 0xf1, 0x7d, 0x1a, 0xe9, 0x81,
- 0x99, 0x7a, 0x1b, 0x10, 0x62, 0x8f, 0xee, 0x13, 0xc6, 0xa9, 0xeb, 0xc4, 0xfb, 0x8e, 0x6e, 0xfa,
- 0xe6, 0x5e, 0x2b, 0xf6, 0xa0, 0x31, 0x6a, 0x7e, 0x0e, 0x8a, 0x01, 0x4b, 0xe2, 0xcb, 0x3d, 0x6c,
- 0x12, 0x35, 0x2f, 0xb1, 0xe5, 0x18, 0x2b, 0xed, 0x24, 0x0e, 0x94, 0x32, 0x4d, 0xfd, 0xe8, 0x54,
- 0xcb, 0x1c, 0x9f, 0x6a, 0x99, 0x93, 0x53, 0x2d, 0xf3, 0x3e, 0xd4, 0xc0, 0x51, 0xa8, 0x81, 0xe3,
- 0x50, 0x03, 0x27, 0xa1, 0x06, 0x7e, 0x86, 0x1a, 0xf8, 0xf8, 0x4b, 0xcb, 0xbc, 0x2a, 0x26, 0xcd,
- 0xff, 0x13, 0x00, 0x00, 0xff, 0xff, 0x1d, 0x38, 0x05, 0x46, 0x58, 0x0a, 0x00, 0x00,
+ // 844 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x55, 0xbf, 0x8f, 0xe3, 0x44,
+ 0x14, 0xce, 0x64, 0x13, 0x36, 0x99, 0x65, 0x15, 0x6e, 0x38, 0x21, 0x6b, 0x85, 0x9c, 0xc5, 0x02,
+ 0xe9, 0x10, 0x87, 0xcd, 0xee, 0x21, 0xa0, 0xa1, 0x58, 0x5f, 0x81, 0x16, 0x96, 0xbd, 0x65, 0x4e,
+ 0x5c, 0x81, 0x28, 0x98, 0x38, 0x73, 0xce, 0x10, 0xdb, 0x63, 0xcd, 0x8c, 0x23, 0x9d, 0x68, 0x68,
+ 0x68, 0x11, 0x0d, 0x05, 0x3d, 0x2d, 0x0d, 0x94, 0xfc, 0x03, 0x4b, 0x77, 0xe5, 0x56, 0x11, 0x6b,
+ 0xfe, 0x10, 0x90, 0xc7, 0x76, 0xec, 0xfc, 0x22, 0xa9, 0x22, 0x21, 0x51, 0x25, 0xf3, 0xde, 0xf7,
+ 0xbe, 0xf7, 0xde, 0x37, 0xf3, 0x9e, 0xe1, 0xd9, 0xf8, 0x03, 0x69, 0x33, 0xee, 0x8c, 0x93, 0x01,
+ 0x15, 0x11, 0x55, 0x54, 0x3a, 0x13, 0x1a, 0x0d, 0xb9, 0x70, 0x0a, 0x07, 0x89, 0x99, 0x23, 0x06,
+ 0xc4, 0x73, 0x26, 0x27, 0x24, 0x88, 0x47, 0xe4, 0xc4, 0xf1, 0x69, 0x44, 0x05, 0x51, 0x74, 0x68,
+ 0xc7, 0x82, 0x2b, 0x8e, 0x8c, 0x1c, 0x69, 0x93, 0x98, 0xd9, 0x19, 0xd2, 0x2e, 0x91, 0x47, 0x6f,
+ 0xfb, 0x4c, 0x8d, 0x92, 0x81, 0xed, 0xf1, 0xd0, 0xf1, 0xb9, 0xcf, 0x1d, 0x1d, 0x30, 0x48, 0x9e,
+ 0xea, 0x93, 0x3e, 0xe8, 0x7f, 0x39, 0xd1, 0xd1, 0xbb, 0x55, 0xca, 0x90, 0x78, 0x23, 0x16, 0x51,
+ 0xf1, 0xcc, 0x89, 0xc7, 0x7e, 0x66, 0x90, 0x4e, 0x48, 0x15, 0x71, 0x26, 0x4b, 0xe9, 0x8f, 0x9c,
+ 0x75, 0x51, 0x22, 0x89, 0x14, 0x0b, 0xe9, 0x52, 0xc0, 0x7b, 0x9b, 0x02, 0xa4, 0x37, 0xa2, 0x21,
+ 0x59, 0x8a, 0x7b, 0xb0, 0x2e, 0x2e, 0x51, 0x2c, 0x70, 0x58, 0xa4, 0xa4, 0x12, 0x8b, 0x41, 0xd6,
+ 0x4f, 0x00, 0xf6, 0xce, 0x7c, 0x5f, 0x50, 0x9f, 0x28, 0xc6, 0x23, 0x9c, 0x04, 0x14, 0x7d, 0x07,
+ 0xe0, 0x5d, 0x2f, 0x48, 0xa4, 0xa2, 0x02, 0xf3, 0x80, 0x3e, 0xa6, 0x01, 0xf5, 0x14, 0x17, 0xd2,
+ 0x00, 0xc7, 0x7b, 0xf7, 0x0e, 0x4e, 0x1f, 0xd8, 0x95, 0xa0, 0xb3, 0x44, 0x76, 0x3c, 0xf6, 0x33,
+ 0x83, 0xb4, 0x33, 0x1d, 0xec, 0xc9, 0x89, 0x7d, 0x41, 0x06, 0x34, 0x28, 0x63, 0xdd, 0x57, 0xaf,
+ 0xa7, 0xfd, 0x46, 0x3a, 0xed, 0xdf, 0x7d, 0xb8, 0x82, 0x18, 0xaf, 0x4c, 0x67, 0xfd, 0xdc, 0x84,
+ 0x07, 0x35, 0x38, 0xfa, 0x0a, 0x76, 0x32, 0xf2, 0x21, 0x51, 0xc4, 0x00, 0xc7, 0xe0, 0xde, 0xc1,
+ 0xe9, 0x3b, 0xdb, 0x95, 0xf2, 0x68, 0xf0, 0x35, 0xf5, 0xd4, 0xa7, 0x54, 0x11, 0x17, 0x15, 0x75,
+ 0xc0, 0xca, 0x86, 0x67, 0xac, 0xe8, 0x1c, 0xb6, 0x45, 0x12, 0x50, 0x69, 0x34, 0x75, 0xa7, 0xaf,
+ 0xdb, 0xeb, 0x9e, 0x8e, 0x7d, 0xc5, 0x03, 0xe6, 0x3d, 0xcb, 0xe4, 0x72, 0x0f, 0x0b, 0xca, 0x76,
+ 0x76, 0x92, 0x38, 0x67, 0x40, 0x23, 0xd8, 0x23, 0xf3, 0xba, 0x1a, 0x7b, 0xba, 0xe6, 0x37, 0xd7,
+ 0x93, 0x2e, 0x5c, 0x84, 0xfb, 0x72, 0x3a, 0xed, 0x2f, 0xde, 0x0e, 0x5e, 0xa4, 0xb5, 0x7e, 0x6c,
+ 0x42, 0x54, 0x93, 0xc9, 0x65, 0xd1, 0x90, 0x45, 0xfe, 0x0e, 0xd4, 0x7a, 0x04, 0x3b, 0x32, 0xd1,
+ 0x8e, 0x52, 0xb0, 0xd7, 0xd6, 0xf7, 0xf6, 0x38, 0x47, 0xba, 0x2f, 0x15, 0x94, 0x9d, 0xc2, 0x20,
+ 0xf1, 0x8c, 0x04, 0x5d, 0xc0, 0x7d, 0xc1, 0x03, 0x8a, 0xe9, 0xd3, 0x42, 0xab, 0x7f, 0xe1, 0xc3,
+ 0x39, 0xd0, 0xed, 0x15, 0x7c, 0xfb, 0x85, 0x01, 0x97, 0x14, 0xd6, 0x1f, 0x00, 0xbe, 0xb2, 0xac,
+ 0xcb, 0x05, 0x93, 0x0a, 0x7d, 0xb9, 0xa4, 0x8d, 0xbd, 0xe5, 0xa3, 0x66, 0x32, 0x57, 0x66, 0xd6,
+ 0x46, 0x69, 0xa9, 0xe9, 0xf2, 0x19, 0x6c, 0x33, 0x45, 0xc3, 0x52, 0x94, 0xfb, 0xeb, 0x9b, 0x58,
+ 0x2e, 0xaf, 0x7a, 0x4d, 0xe7, 0x19, 0x05, 0xce, 0x99, 0xac, 0xdf, 0x01, 0xec, 0xd5, 0xc0, 0x3b,
+ 0x68, 0xe2, 0xe3, 0xf9, 0x26, 0xde, 0xd8, 0xae, 0x89, 0xd5, 0xd5, 0xff, 0x0d, 0x20, 0xac, 0x06,
+ 0x06, 0xf5, 0x61, 0x7b, 0x42, 0xc5, 0x20, 0xdf, 0x27, 0x5d, 0xb7, 0x9b, 0xe1, 0x9f, 0x64, 0x06,
+ 0x9c, 0xdb, 0xd1, 0x5b, 0xb0, 0x4b, 0x62, 0xf6, 0x91, 0xe0, 0x49, 0x2c, 0x8d, 0x3d, 0x0d, 0x3a,
+ 0x4c, 0xa7, 0xfd, 0xee, 0xd9, 0xd5, 0x79, 0x6e, 0xc4, 0x95, 0x3f, 0x03, 0x0b, 0x2a, 0x79, 0x22,
+ 0x3c, 0x2a, 0x8d, 0x56, 0x05, 0xc6, 0xa5, 0x11, 0x57, 0x7e, 0xf4, 0x3e, 0x3c, 0x2c, 0x0f, 0x97,
+ 0x24, 0xa4, 0xd2, 0x68, 0xeb, 0x80, 0x3b, 0xe9, 0xb4, 0x7f, 0x88, 0xeb, 0x0e, 0x3c, 0x8f, 0x43,
+ 0x1f, 0xc2, 0x5e, 0xc4, 0xa3, 0x12, 0xf2, 0x39, 0xbe, 0x90, 0xc6, 0x0b, 0x3a, 0x54, 0xcf, 0xe8,
+ 0xe5, 0xbc, 0x0b, 0x2f, 0x62, 0xad, 0xdf, 0x00, 0x6c, 0xfd, 0xe7, 0x76, 0x98, 0xf5, 0x7d, 0x13,
+ 0x1e, 0xfc, 0xbf, 0x52, 0x6a, 0x2b, 0x25, 0x1b, 0xc3, 0xdd, 0xee, 0x92, 0xed, 0xc7, 0x70, 0xf3,
+ 0x12, 0xf9, 0x05, 0xc0, 0xce, 0x8e, 0xb6, 0xc7, 0xc3, 0xf9, 0xb2, 0xcd, 0x0d, 0x65, 0xaf, 0xae,
+ 0xf7, 0x1b, 0x58, 0xde, 0x00, 0xba, 0x0f, 0x3b, 0xe5, 0xc4, 0xeb, 0x6a, 0xbb, 0x55, 0xf6, 0x72,
+ 0x29, 0xe0, 0x19, 0x02, 0x1d, 0xc3, 0xd6, 0x98, 0x45, 0x43, 0xa3, 0xa9, 0x91, 0x2f, 0x16, 0xc8,
+ 0xd6, 0x27, 0x2c, 0x1a, 0x62, 0xed, 0xc9, 0x10, 0x11, 0x09, 0xf3, 0x4f, 0x72, 0x0d, 0x91, 0xcd,
+ 0x3a, 0xd6, 0x1e, 0xeb, 0x57, 0x00, 0xf7, 0x8b, 0xf7, 0x34, 0xe3, 0x03, 0x6b, 0xf9, 0x4e, 0x21,
+ 0x24, 0x31, 0x7b, 0x42, 0x85, 0x64, 0x3c, 0x2a, 0xf2, 0xce, 0x5e, 0xfa, 0xd9, 0xd5, 0x79, 0xe1,
+ 0xc1, 0x35, 0xd4, 0xe6, 0x1a, 0x90, 0x03, 0xbb, 0xd9, 0xaf, 0x8c, 0x89, 0x47, 0x8d, 0x96, 0x86,
+ 0xdd, 0x29, 0x60, 0xdd, 0xcb, 0xd2, 0x81, 0x2b, 0x8c, 0x6b, 0x5f, 0xdf, 0x9a, 0x8d, 0xe7, 0xb7,
+ 0x66, 0xe3, 0xe6, 0xd6, 0x6c, 0x7c, 0x9b, 0x9a, 0xe0, 0x3a, 0x35, 0xc1, 0xf3, 0xd4, 0x04, 0x37,
+ 0xa9, 0x09, 0xfe, 0x4c, 0x4d, 0xf0, 0xc3, 0x5f, 0x66, 0xe3, 0x8b, 0x4e, 0x29, 0xfe, 0x3f, 0x01,
+ 0x00, 0x00, 0xff, 0xff, 0xeb, 0xcc, 0xe2, 0x61, 0x5e, 0x0b, 0x00, 0x00,
}
diff --git a/staging/src/k8s.io/api/rbac/v1alpha1/generated.proto b/staging/src/k8s.io/api/rbac/v1alpha1/generated.proto
index 89f45b28e7..28a4ae3d01 100644
--- a/staging/src/k8s.io/api/rbac/v1alpha1/generated.proto
+++ b/staging/src/k8s.io/api/rbac/v1alpha1/generated.proto
@@ -29,6 +29,14 @@ import "k8s.io/apimachinery/pkg/util/intstr/generated.proto";
// Package-wide variables from generator "generated".
option go_package = "v1alpha1";
+// AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole
+message AggregationRule {
+ // ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules.
+ // If any of the selectors match, then the ClusterRole's permissions will be added
+ // +optional
+ repeated k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector clusterRoleSelectors = 1;
+}
+
// ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.
message ClusterRole {
// Standard object's metadata.
@@ -37,6 +45,12 @@ message ClusterRole {
// Rules holds all the PolicyRules for this ClusterRole
repeated PolicyRule rules = 2;
+
+ // AggregationRule is an optional field that describes how to build the Rules for this ClusterRole.
+ // If AggregationRule is set, then the Rules are controller managed and direct changes to Rules will be
+ // stomped by the controller.
+ // +optional
+ optional AggregationRule aggregationRule = 3;
}
// ClusterRoleBinding references a ClusterRole, but not contain it. It can reference a ClusterRole in the global namespace,
diff --git a/staging/src/k8s.io/api/rbac/v1alpha1/types.go b/staging/src/k8s.io/api/rbac/v1alpha1/types.go
index 06fa6ce8e8..843d998ec9 100644
--- a/staging/src/k8s.io/api/rbac/v1alpha1/types.go
+++ b/staging/src/k8s.io/api/rbac/v1alpha1/types.go
@@ -172,6 +172,20 @@ type ClusterRole struct {
// Rules holds all the PolicyRules for this ClusterRole
Rules []PolicyRule `json:"rules" protobuf:"bytes,2,rep,name=rules"`
+
+ // AggregationRule is an optional field that describes how to build the Rules for this ClusterRole.
+ // If AggregationRule is set, then the Rules are controller managed and direct changes to Rules will be
+ // stomped by the controller.
+ // +optional
+ AggregationRule *AggregationRule `json:"aggregationRule,omitempty" protobuf:"bytes,3,opt,name=aggregationRule"`
+}
+
+// AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole
+type AggregationRule struct {
+ // ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules.
+ // If any of the selectors match, then the ClusterRole's permissions will be added
+ // +optional
+ ClusterRoleSelectors []metav1.LabelSelector `json:"clusterRoleSelectors,omitempty" protobuf:"bytes,1,rep,name=clusterRoleSelectors"`
}
// +genclient
diff --git a/staging/src/k8s.io/api/rbac/v1alpha1/types_swagger_doc_generated.go b/staging/src/k8s.io/api/rbac/v1alpha1/types_swagger_doc_generated.go
index d58a722af1..e56cd0f101 100644
--- a/staging/src/k8s.io/api/rbac/v1alpha1/types_swagger_doc_generated.go
+++ b/staging/src/k8s.io/api/rbac/v1alpha1/types_swagger_doc_generated.go
@@ -27,10 +27,20 @@ package v1alpha1
// Those methods can be generated by using hack/update-generated-swagger-docs.sh
// AUTO-GENERATED FUNCTIONS START HERE
+var map_AggregationRule = map[string]string{
+ "": "AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole",
+ "clusterRoleSelectors": "ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added",
+}
+
+func (AggregationRule) SwaggerDoc() map[string]string {
+ return map_AggregationRule
+}
+
var map_ClusterRole = map[string]string{
- "": "ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.",
- "metadata": "Standard object's metadata.",
- "rules": "Rules holds all the PolicyRules for this ClusterRole",
+ "": "ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.",
+ "metadata": "Standard object's metadata.",
+ "rules": "Rules holds all the PolicyRules for this ClusterRole",
+ "aggregationRule": "AggregationRule is an optional field that describes how to build the Rules for this ClusterRole. If AggregationRule is set, then the Rules are controller managed and direct changes to Rules will be stomped by the controller.",
}
func (ClusterRole) SwaggerDoc() map[string]string {
diff --git a/staging/src/k8s.io/api/rbac/v1alpha1/zz_generated.deepcopy.go b/staging/src/k8s.io/api/rbac/v1alpha1/zz_generated.deepcopy.go
index e4cab83253..abbb994fda 100644
--- a/staging/src/k8s.io/api/rbac/v1alpha1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/api/rbac/v1alpha1/zz_generated.deepcopy.go
@@ -21,66 +21,31 @@ limitations under the License.
package v1alpha1
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *AggregationRule) DeepCopyInto(out *AggregationRule) {
+ *out = *in
+ if in.ClusterRoleSelectors != nil {
+ in, out := &in.ClusterRoleSelectors, &out.ClusterRoleSelectors
+ *out = make([]v1.LabelSelector, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+ return
}
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ClusterRole).DeepCopyInto(out.(*ClusterRole))
- return nil
- }, InType: reflect.TypeOf(&ClusterRole{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ClusterRoleBinding).DeepCopyInto(out.(*ClusterRoleBinding))
- return nil
- }, InType: reflect.TypeOf(&ClusterRoleBinding{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ClusterRoleBindingList).DeepCopyInto(out.(*ClusterRoleBindingList))
- return nil
- }, InType: reflect.TypeOf(&ClusterRoleBindingList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ClusterRoleList).DeepCopyInto(out.(*ClusterRoleList))
- return nil
- }, InType: reflect.TypeOf(&ClusterRoleList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PolicyRule).DeepCopyInto(out.(*PolicyRule))
- return nil
- }, InType: reflect.TypeOf(&PolicyRule{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Role).DeepCopyInto(out.(*Role))
- return nil
- }, InType: reflect.TypeOf(&Role{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RoleBinding).DeepCopyInto(out.(*RoleBinding))
- return nil
- }, InType: reflect.TypeOf(&RoleBinding{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RoleBindingList).DeepCopyInto(out.(*RoleBindingList))
- return nil
- }, InType: reflect.TypeOf(&RoleBindingList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RoleList).DeepCopyInto(out.(*RoleList))
- return nil
- }, InType: reflect.TypeOf(&RoleList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RoleRef).DeepCopyInto(out.(*RoleRef))
- return nil
- }, InType: reflect.TypeOf(&RoleRef{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Subject).DeepCopyInto(out.(*Subject))
- return nil
- }, InType: reflect.TypeOf(&Subject{})},
- )
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AggregationRule.
+func (in *AggregationRule) DeepCopy() *AggregationRule {
+ if in == nil {
+ return nil
+ }
+ out := new(AggregationRule)
+ in.DeepCopyInto(out)
+ return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
@@ -95,6 +60,15 @@ func (in *ClusterRole) DeepCopyInto(out *ClusterRole) {
(*in)[i].DeepCopyInto(&(*out)[i])
}
}
+ if in.AggregationRule != nil {
+ in, out := &in.AggregationRule, &out.AggregationRule
+ if *in == nil {
+ *out = nil
+ } else {
+ *out = new(AggregationRule)
+ (*in).DeepCopyInto(*out)
+ }
+ }
return
}
diff --git a/staging/src/k8s.io/api/rbac/v1beta1/BUILD b/staging/src/k8s.io/api/rbac/v1beta1/BUILD
index 3d0fcbd6a4..c9aa763f41 100644
--- a/staging/src/k8s.io/api/rbac/v1beta1/BUILD
+++ b/staging/src/k8s.io/api/rbac/v1beta1/BUILD
@@ -19,7 +19,6 @@ go_library(
deps = [
"//vendor/github.com/gogo/protobuf/proto:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/api/rbac/v1beta1/doc.go b/staging/src/k8s.io/api/rbac/v1beta1/doc.go
index bb7d47df99..4b77c9c6b8 100644
--- a/staging/src/k8s.io/api/rbac/v1beta1/doc.go
+++ b/staging/src/k8s.io/api/rbac/v1beta1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:openapi-gen=true
// +groupName=rbac.authorization.k8s.io
diff --git a/staging/src/k8s.io/api/rbac/v1beta1/generated.pb.go b/staging/src/k8s.io/api/rbac/v1beta1/generated.pb.go
index 9cb4935c02..8cb2c4bec6 100644
--- a/staging/src/k8s.io/api/rbac/v1beta1/generated.pb.go
+++ b/staging/src/k8s.io/api/rbac/v1beta1/generated.pb.go
@@ -25,6 +25,7 @@ limitations under the License.
k8s.io/kubernetes/vendor/k8s.io/api/rbac/v1beta1/generated.proto
It has these top-level messages:
+ AggregationRule
ClusterRole
ClusterRoleBinding
ClusterRoleBindingList
@@ -43,6 +44,8 @@ import proto "github.com/gogo/protobuf/proto"
import fmt "fmt"
import math "math"
+import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+
import strings "strings"
import reflect "reflect"
@@ -59,51 +62,56 @@ var _ = math.Inf
// proto package needs to be updated.
const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package
+func (m *AggregationRule) Reset() { *m = AggregationRule{} }
+func (*AggregationRule) ProtoMessage() {}
+func (*AggregationRule) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} }
+
func (m *ClusterRole) Reset() { *m = ClusterRole{} }
func (*ClusterRole) ProtoMessage() {}
-func (*ClusterRole) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} }
+func (*ClusterRole) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} }
func (m *ClusterRoleBinding) Reset() { *m = ClusterRoleBinding{} }
func (*ClusterRoleBinding) ProtoMessage() {}
-func (*ClusterRoleBinding) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} }
+func (*ClusterRoleBinding) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} }
func (m *ClusterRoleBindingList) Reset() { *m = ClusterRoleBindingList{} }
func (*ClusterRoleBindingList) ProtoMessage() {}
-func (*ClusterRoleBindingList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} }
+func (*ClusterRoleBindingList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} }
func (m *ClusterRoleList) Reset() { *m = ClusterRoleList{} }
func (*ClusterRoleList) ProtoMessage() {}
-func (*ClusterRoleList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} }
+func (*ClusterRoleList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} }
func (m *PolicyRule) Reset() { *m = PolicyRule{} }
func (*PolicyRule) ProtoMessage() {}
-func (*PolicyRule) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} }
+func (*PolicyRule) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} }
func (m *Role) Reset() { *m = Role{} }
func (*Role) ProtoMessage() {}
-func (*Role) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} }
+func (*Role) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} }
func (m *RoleBinding) Reset() { *m = RoleBinding{} }
func (*RoleBinding) ProtoMessage() {}
-func (*RoleBinding) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} }
+func (*RoleBinding) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} }
func (m *RoleBindingList) Reset() { *m = RoleBindingList{} }
func (*RoleBindingList) ProtoMessage() {}
-func (*RoleBindingList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} }
+func (*RoleBindingList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} }
func (m *RoleList) Reset() { *m = RoleList{} }
func (*RoleList) ProtoMessage() {}
-func (*RoleList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} }
+func (*RoleList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{9} }
func (m *RoleRef) Reset() { *m = RoleRef{} }
func (*RoleRef) ProtoMessage() {}
-func (*RoleRef) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{9} }
+func (*RoleRef) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{10} }
func (m *Subject) Reset() { *m = Subject{} }
func (*Subject) ProtoMessage() {}
-func (*Subject) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{10} }
+func (*Subject) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{11} }
func init() {
+ proto.RegisterType((*AggregationRule)(nil), "k8s.io.api.rbac.v1beta1.AggregationRule")
proto.RegisterType((*ClusterRole)(nil), "k8s.io.api.rbac.v1beta1.ClusterRole")
proto.RegisterType((*ClusterRoleBinding)(nil), "k8s.io.api.rbac.v1beta1.ClusterRoleBinding")
proto.RegisterType((*ClusterRoleBindingList)(nil), "k8s.io.api.rbac.v1beta1.ClusterRoleBindingList")
@@ -116,6 +124,36 @@ func init() {
proto.RegisterType((*RoleRef)(nil), "k8s.io.api.rbac.v1beta1.RoleRef")
proto.RegisterType((*Subject)(nil), "k8s.io.api.rbac.v1beta1.Subject")
}
+func (m *AggregationRule) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *AggregationRule) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.ClusterRoleSelectors) > 0 {
+ for _, msg := range m.ClusterRoleSelectors {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(msg.Size()))
+ n, err := msg.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n
+ }
+ }
+ return i, nil
+}
+
func (m *ClusterRole) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@@ -151,6 +189,16 @@ func (m *ClusterRole) MarshalTo(dAtA []byte) (int, error) {
i += n
}
}
+ if m.AggregationRule != nil {
+ dAtA[i] = 0x1a
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(m.AggregationRule.Size()))
+ n2, err := m.AggregationRule.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n2
+ }
return i, nil
}
@@ -172,11 +220,11 @@ func (m *ClusterRoleBinding) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0xa
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size()))
- n2, err := m.ObjectMeta.MarshalTo(dAtA[i:])
+ n3, err := m.ObjectMeta.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n2
+ i += n3
if len(m.Subjects) > 0 {
for _, msg := range m.Subjects {
dAtA[i] = 0x12
@@ -192,11 +240,11 @@ func (m *ClusterRoleBinding) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0x1a
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.RoleRef.Size()))
- n3, err := m.RoleRef.MarshalTo(dAtA[i:])
+ n4, err := m.RoleRef.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n3
+ i += n4
return i, nil
}
@@ -218,11 +266,11 @@ func (m *ClusterRoleBindingList) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0xa
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size()))
- n4, err := m.ListMeta.MarshalTo(dAtA[i:])
+ n5, err := m.ListMeta.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n4
+ i += n5
if len(m.Items) > 0 {
for _, msg := range m.Items {
dAtA[i] = 0x12
@@ -256,11 +304,11 @@ func (m *ClusterRoleList) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0xa
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size()))
- n5, err := m.ListMeta.MarshalTo(dAtA[i:])
+ n6, err := m.ListMeta.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n5
+ i += n6
if len(m.Items) > 0 {
for _, msg := range m.Items {
dAtA[i] = 0x12
@@ -387,11 +435,11 @@ func (m *Role) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0xa
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size()))
- n6, err := m.ObjectMeta.MarshalTo(dAtA[i:])
+ n7, err := m.ObjectMeta.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n6
+ i += n7
if len(m.Rules) > 0 {
for _, msg := range m.Rules {
dAtA[i] = 0x12
@@ -425,11 +473,11 @@ func (m *RoleBinding) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0xa
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size()))
- n7, err := m.ObjectMeta.MarshalTo(dAtA[i:])
+ n8, err := m.ObjectMeta.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n7
+ i += n8
if len(m.Subjects) > 0 {
for _, msg := range m.Subjects {
dAtA[i] = 0x12
@@ -445,11 +493,11 @@ func (m *RoleBinding) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0x1a
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.RoleRef.Size()))
- n8, err := m.RoleRef.MarshalTo(dAtA[i:])
+ n9, err := m.RoleRef.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n8
+ i += n9
return i, nil
}
@@ -471,11 +519,11 @@ func (m *RoleBindingList) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0xa
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size()))
- n9, err := m.ListMeta.MarshalTo(dAtA[i:])
+ n10, err := m.ListMeta.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n9
+ i += n10
if len(m.Items) > 0 {
for _, msg := range m.Items {
dAtA[i] = 0x12
@@ -509,11 +557,11 @@ func (m *RoleList) MarshalTo(dAtA []byte) (int, error) {
dAtA[i] = 0xa
i++
i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size()))
- n10, err := m.ListMeta.MarshalTo(dAtA[i:])
+ n11, err := m.ListMeta.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
- i += n10
+ i += n11
if len(m.Items) > 0 {
for _, msg := range m.Items {
dAtA[i] = 0x12
@@ -620,6 +668,18 @@ func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
dAtA[offset] = uint8(v)
return offset + 1
}
+func (m *AggregationRule) Size() (n int) {
+ var l int
+ _ = l
+ if len(m.ClusterRoleSelectors) > 0 {
+ for _, e := range m.ClusterRoleSelectors {
+ l = e.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ }
+ }
+ return n
+}
+
func (m *ClusterRole) Size() (n int) {
var l int
_ = l
@@ -631,6 +691,10 @@ func (m *ClusterRole) Size() (n int) {
n += 1 + l + sovGenerated(uint64(l))
}
}
+ if m.AggregationRule != nil {
+ l = m.AggregationRule.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ }
return n
}
@@ -811,6 +875,16 @@ func sovGenerated(x uint64) (n int) {
func sozGenerated(x uint64) (n int) {
return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63))))
}
+func (this *AggregationRule) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&AggregationRule{`,
+ `ClusterRoleSelectors:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ClusterRoleSelectors), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1), `&`, ``, 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
func (this *ClusterRole) String() string {
if this == nil {
return "nil"
@@ -818,6 +892,7 @@ func (this *ClusterRole) String() string {
s := strings.Join([]string{`&ClusterRole{`,
`ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
`Rules:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Rules), "PolicyRule", "PolicyRule", 1), `&`, ``, 1) + `,`,
+ `AggregationRule:` + strings.Replace(fmt.Sprintf("%v", this.AggregationRule), "AggregationRule", "AggregationRule", 1) + `,`,
`}`,
}, "")
return s
@@ -948,6 +1023,87 @@ func valueToStringGenerated(v interface{}) string {
pv := reflect.Indirect(rv).Interface()
return fmt.Sprintf("*%v", pv)
}
+func (m *AggregationRule) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: AggregationRule: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: AggregationRule: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ClusterRoleSelectors", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ClusterRoleSelectors = append(m.ClusterRoleSelectors, k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector{})
+ if err := m.ClusterRoleSelectors[len(m.ClusterRoleSelectors)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipGenerated(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
func (m *ClusterRole) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
@@ -1038,6 +1194,39 @@ func (m *ClusterRole) Unmarshal(dAtA []byte) error {
return err
}
iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field AggregationRule", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.AggregationRule == nil {
+ m.AggregationRule = &AggregationRule{}
+ }
+ if err := m.AggregationRule.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipGenerated(dAtA[iNdEx:])
@@ -2504,52 +2693,58 @@ func init() {
}
var fileDescriptorGenerated = []byte{
- // 751 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x94, 0xcd, 0x6e, 0xd3, 0x4a,
- 0x14, 0xc7, 0xe3, 0x7c, 0x28, 0xf1, 0xe4, 0x46, 0xb9, 0xf5, 0x95, 0xee, 0xb5, 0x2a, 0x5d, 0x27,
- 0x0a, 0x2c, 0x2a, 0x95, 0xda, 0xb4, 0x20, 0x60, 0x83, 0x04, 0x66, 0x01, 0x55, 0x4b, 0xa8, 0x06,
- 0xc1, 0x02, 0xb1, 0x60, 0xe2, 0x4c, 0xd3, 0x21, 0xf1, 0x87, 0x66, 0xc6, 0x91, 0x2a, 0x36, 0x3c,
- 0x00, 0x0b, 0x24, 0x5e, 0x83, 0x15, 0x3b, 0x78, 0x82, 0x2c, 0xbb, 0xec, 0x2a, 0xa2, 0xe6, 0x41,
- 0x40, 0x33, 0xb6, 0xe3, 0xa4, 0x69, 0xda, 0xac, 0x22, 0x21, 0xb1, 0x4a, 0xe6, 0x9c, 0xdf, 0xf9,
- 0x9f, 0x0f, 0xcf, 0x1c, 0xf0, 0xa0, 0x7f, 0x8f, 0x99, 0xc4, 0xb7, 0xfa, 0x61, 0x07, 0x53, 0x0f,
- 0x73, 0xcc, 0xac, 0x21, 0xf6, 0xba, 0x3e, 0xb5, 0x12, 0x07, 0x0a, 0x88, 0x45, 0x3b, 0xc8, 0xb1,
- 0x86, 0xdb, 0x1d, 0xcc, 0xd1, 0xb6, 0xd5, 0xc3, 0x1e, 0xa6, 0x88, 0xe3, 0xae, 0x19, 0x50, 0x9f,
- 0xfb, 0xda, 0x7f, 0x31, 0x68, 0xa2, 0x80, 0x98, 0x02, 0x34, 0x13, 0x70, 0x7d, 0xab, 0x47, 0xf8,
- 0x51, 0xd8, 0x31, 0x1d, 0xdf, 0xb5, 0x7a, 0x7e, 0xcf, 0xb7, 0x24, 0xdf, 0x09, 0x0f, 0xe5, 0x49,
- 0x1e, 0xe4, 0xbf, 0x58, 0x67, 0xfd, 0x76, 0x96, 0xd0, 0x45, 0xce, 0x11, 0xf1, 0x30, 0x3d, 0xb6,
- 0x82, 0x7e, 0x4f, 0x18, 0x98, 0xe5, 0x62, 0x8e, 0xac, 0xe1, 0x5c, 0xf6, 0x75, 0x6b, 0x51, 0x14,
- 0x0d, 0x3d, 0x4e, 0x5c, 0x3c, 0x17, 0x70, 0xe7, 0xaa, 0x00, 0xe6, 0x1c, 0x61, 0x17, 0xcd, 0xc5,
- 0xdd, 0x5a, 0x14, 0x17, 0x72, 0x32, 0xb0, 0x88, 0xc7, 0x19, 0xa7, 0xe7, 0x83, 0x5a, 0x5f, 0x15,
- 0x50, 0x7d, 0x34, 0x08, 0x19, 0xc7, 0x14, 0xfa, 0x03, 0xac, 0xbd, 0x01, 0x15, 0xd1, 0x48, 0x17,
- 0x71, 0xa4, 0x2b, 0x4d, 0x65, 0xa3, 0xba, 0x73, 0xd3, 0xcc, 0xc6, 0x37, 0xd1, 0x35, 0x83, 0x7e,
- 0x4f, 0x18, 0x98, 0x29, 0x68, 0x73, 0xb8, 0x6d, 0x3e, 0xeb, 0xbc, 0xc5, 0x0e, 0x7f, 0x8a, 0x39,
- 0xb2, 0xb5, 0xd1, 0xb8, 0x91, 0x8b, 0xc6, 0x0d, 0x90, 0xd9, 0xe0, 0x44, 0x55, 0x7b, 0x02, 0x4a,
- 0x34, 0x1c, 0x60, 0xa6, 0xe7, 0x9b, 0x85, 0x8d, 0xea, 0xce, 0x35, 0x73, 0xc1, 0xd7, 0x31, 0x0f,
- 0xfc, 0x01, 0x71, 0x8e, 0x61, 0x38, 0xc0, 0x76, 0x2d, 0x51, 0x2c, 0x89, 0x13, 0x83, 0xb1, 0x40,
- 0xeb, 0x53, 0x1e, 0x68, 0x53, 0xb5, 0xdb, 0xc4, 0xeb, 0x12, 0xaf, 0xb7, 0x82, 0x16, 0xda, 0xa0,
- 0xc2, 0x42, 0xe9, 0x48, 0xbb, 0x68, 0x2e, 0xec, 0xe2, 0x79, 0x0c, 0xda, 0x7f, 0x27, 0x8a, 0x95,
- 0xc4, 0xc0, 0xe0, 0x44, 0x43, 0xdb, 0x03, 0x65, 0xea, 0x0f, 0x30, 0xc4, 0x87, 0x7a, 0x41, 0x16,
- 0xbc, 0x58, 0x0e, 0xc6, 0x9c, 0x5d, 0x4f, 0xe4, 0xca, 0x89, 0x01, 0xa6, 0x0a, 0xad, 0x91, 0x02,
- 0xfe, 0x9d, 0x9f, 0xca, 0x3e, 0x61, 0x5c, 0x7b, 0x3d, 0x37, 0x19, 0x73, 0xb9, 0xc9, 0x88, 0x68,
- 0x39, 0x97, 0x49, 0x17, 0xa9, 0x65, 0x6a, 0x2a, 0x07, 0xa0, 0x44, 0x38, 0x76, 0xd3, 0x91, 0x6c,
- 0x2e, 0xec, 0x61, 0xbe, 0xba, 0xec, 0x03, 0xef, 0x0a, 0x05, 0x18, 0x0b, 0xb5, 0xbe, 0x29, 0xa0,
- 0x3e, 0x05, 0xaf, 0xa0, 0x87, 0xdd, 0xd9, 0x1e, 0xae, 0x2f, 0xd5, 0xc3, 0xc5, 0xc5, 0xff, 0x54,
- 0x00, 0xc8, 0xae, 0xb0, 0xd6, 0x00, 0xa5, 0x21, 0xa6, 0x1d, 0xa6, 0x2b, 0xcd, 0xc2, 0x86, 0x6a,
- 0xab, 0x82, 0x7f, 0x29, 0x0c, 0x30, 0xb6, 0x6b, 0x9b, 0x40, 0x45, 0x01, 0x79, 0x4c, 0xfd, 0x30,
- 0x88, 0xd3, 0xab, 0x76, 0x2d, 0x1a, 0x37, 0xd4, 0x87, 0x07, 0xbb, 0xb1, 0x11, 0x66, 0x7e, 0x01,
- 0x53, 0xcc, 0xfc, 0x90, 0x3a, 0x98, 0xe9, 0x85, 0x0c, 0x86, 0xa9, 0x11, 0x66, 0x7e, 0xed, 0x2e,
- 0xa8, 0xa5, 0x87, 0x36, 0x72, 0x31, 0xd3, 0x8b, 0x32, 0x60, 0x2d, 0x1a, 0x37, 0x6a, 0x70, 0xda,
- 0x01, 0x67, 0x39, 0xed, 0x3e, 0xa8, 0x7b, 0xbe, 0x97, 0x22, 0x2f, 0xe0, 0x3e, 0xd3, 0x4b, 0x32,
- 0xf4, 0x9f, 0x68, 0xdc, 0xa8, 0xb7, 0x67, 0x5d, 0xf0, 0x3c, 0xdb, 0xfa, 0xa2, 0x80, 0xe2, 0x6f,
- 0xb7, 0x54, 0x3e, 0xe4, 0x41, 0xf5, 0xcf, 0x36, 0x99, 0x6c, 0x13, 0xf1, 0x04, 0x57, 0xbb, 0x46,
- 0x96, 0x7e, 0x82, 0x57, 0xef, 0x8f, 0xcf, 0x0a, 0xa8, 0xac, 0x68, 0x71, 0xd8, 0xb3, 0x55, 0xff,
- 0x7f, 0x79, 0xd5, 0x17, 0x97, 0xfb, 0x0e, 0xa4, 0xf3, 0xd7, 0x6e, 0x80, 0x4a, 0xfa, 0xd8, 0x65,
- 0xb1, 0x6a, 0x96, 0x3c, 0xdd, 0x07, 0x70, 0x42, 0x68, 0x4d, 0x50, 0xec, 0x13, 0xaf, 0xab, 0xe7,
- 0x25, 0xf9, 0x57, 0x42, 0x16, 0xf7, 0x88, 0xd7, 0x85, 0xd2, 0x23, 0x08, 0x0f, 0xb9, 0x58, 0x5e,
- 0x88, 0x29, 0x42, 0x3c, 0x73, 0x28, 0x3d, 0x62, 0x56, 0xe5, 0xe4, 0x32, 0x4d, 0xf4, 0x94, 0x85,
- 0x7a, 0xd3, 0xf5, 0xe5, 0x97, 0xa9, 0xef, 0xf2, 0xec, 0x9a, 0x05, 0x54, 0xf1, 0xcb, 0x02, 0xe4,
- 0x60, 0xbd, 0x28, 0xb1, 0xb5, 0x04, 0x53, 0xdb, 0xa9, 0x03, 0x66, 0x8c, 0xbd, 0x35, 0x3a, 0x33,
- 0x72, 0x27, 0x67, 0x46, 0xee, 0xf4, 0xcc, 0xc8, 0xbd, 0x8f, 0x0c, 0x65, 0x14, 0x19, 0xca, 0x49,
- 0x64, 0x28, 0xa7, 0x91, 0xa1, 0x7c, 0x8f, 0x0c, 0xe5, 0xe3, 0x0f, 0x23, 0xf7, 0xaa, 0x9c, 0x4c,
- 0xfd, 0x57, 0x00, 0x00, 0x00, 0xff, 0xff, 0x74, 0x24, 0x6a, 0xfa, 0x45, 0x0a, 0x00, 0x00,
+ // 833 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x55, 0xbf, 0x8f, 0xe3, 0x44,
+ 0x14, 0xce, 0x64, 0x13, 0x6d, 0x3c, 0xcb, 0x2a, 0xdc, 0x70, 0x02, 0x6b, 0x05, 0xce, 0x2a, 0x50,
+ 0x44, 0x3a, 0xce, 0x66, 0xef, 0x10, 0xd0, 0x20, 0x71, 0xa6, 0x80, 0xd5, 0x2d, 0x61, 0x35, 0x27,
+ 0x28, 0x10, 0x05, 0x63, 0x67, 0xce, 0x19, 0xe2, 0x5f, 0x9a, 0x19, 0x47, 0x3a, 0xd1, 0xd0, 0xd0,
+ 0x51, 0x20, 0x51, 0xd1, 0x52, 0x53, 0x51, 0xf2, 0x17, 0xa4, 0xbc, 0xf2, 0xaa, 0x88, 0x35, 0x7f,
+ 0x08, 0x68, 0xfc, 0x23, 0x4e, 0xe2, 0xf8, 0x2e, 0x55, 0x24, 0xa4, 0xab, 0x76, 0xe7, 0xbd, 0xef,
+ 0x7d, 0xef, 0x7b, 0x9f, 0x67, 0x5e, 0xe0, 0x27, 0xb3, 0x8f, 0x84, 0xc9, 0x22, 0x6b, 0x96, 0x38,
+ 0x94, 0x87, 0x54, 0x52, 0x61, 0xcd, 0x69, 0x38, 0x89, 0xb8, 0x55, 0x24, 0x48, 0xcc, 0x2c, 0xee,
+ 0x10, 0xd7, 0x9a, 0x5f, 0x38, 0x54, 0x92, 0x0b, 0xcb, 0xa3, 0x21, 0xe5, 0x44, 0xd2, 0x89, 0x19,
+ 0xf3, 0x48, 0x46, 0xe8, 0x8d, 0x1c, 0x68, 0x92, 0x98, 0x99, 0x0a, 0x68, 0x16, 0xc0, 0xb3, 0xbb,
+ 0x1e, 0x93, 0xd3, 0xc4, 0x31, 0xdd, 0x28, 0xb0, 0xbc, 0xc8, 0x8b, 0xac, 0x0c, 0xef, 0x24, 0x8f,
+ 0xb3, 0x53, 0x76, 0xc8, 0xfe, 0xcb, 0x79, 0xce, 0x46, 0xf5, 0x86, 0xc4, 0x8f, 0xa7, 0xf5, 0x8e,
+ 0x67, 0xef, 0x57, 0xc8, 0x80, 0xb8, 0x53, 0x16, 0x52, 0xfe, 0xc4, 0x8a, 0x67, 0x9e, 0x0a, 0x08,
+ 0x2b, 0xa0, 0x92, 0x58, 0xf3, 0x7a, 0x95, 0xd5, 0x54, 0xc5, 0x93, 0x50, 0xb2, 0x80, 0xd6, 0x0a,
+ 0x3e, 0x78, 0x51, 0x81, 0x70, 0xa7, 0x34, 0x20, 0xb5, 0xba, 0xfb, 0x4d, 0x75, 0x89, 0x64, 0xbe,
+ 0xc5, 0x42, 0x29, 0x24, 0xdf, 0x2e, 0x1a, 0xfe, 0x06, 0x60, 0xff, 0x81, 0xe7, 0x71, 0xea, 0x11,
+ 0xc9, 0xa2, 0x10, 0x27, 0x3e, 0x45, 0x3f, 0x01, 0x78, 0xdb, 0xf5, 0x13, 0x21, 0x29, 0xc7, 0x91,
+ 0x4f, 0x1f, 0x51, 0x9f, 0xba, 0x32, 0xe2, 0x42, 0x07, 0xe7, 0x47, 0xa3, 0x93, 0x7b, 0xf7, 0xcd,
+ 0xca, 0xf9, 0x55, 0x23, 0x33, 0x9e, 0x79, 0x2a, 0x20, 0x4c, 0xe5, 0x83, 0x39, 0xbf, 0x30, 0xaf,
+ 0x88, 0x43, 0xfd, 0xb2, 0xd6, 0x7e, 0x73, 0xb1, 0x1c, 0xb4, 0xd2, 0xe5, 0xe0, 0xf6, 0xa7, 0x3b,
+ 0x88, 0xf1, 0xce, 0x76, 0xc3, 0xdf, 0xdb, 0xf0, 0x64, 0x0d, 0x8e, 0xbe, 0x83, 0x3d, 0x45, 0x3e,
+ 0x21, 0x92, 0xe8, 0xe0, 0x1c, 0x8c, 0x4e, 0xee, 0xbd, 0xb7, 0x9f, 0x94, 0x2f, 0x9d, 0xef, 0xa9,
+ 0x2b, 0xbf, 0xa0, 0x92, 0xd8, 0xa8, 0xd0, 0x01, 0xab, 0x18, 0x5e, 0xb1, 0xa2, 0xcf, 0x61, 0x97,
+ 0x27, 0x3e, 0x15, 0x7a, 0x3b, 0x9b, 0xf4, 0x6d, 0xb3, 0xe1, 0x8e, 0x99, 0xd7, 0x91, 0xcf, 0xdc,
+ 0x27, 0xca, 0x2d, 0xfb, 0xb4, 0x60, 0xec, 0xaa, 0x93, 0xc0, 0x39, 0x01, 0xf2, 0x60, 0x9f, 0x6c,
+ 0xda, 0xaa, 0x1f, 0x65, 0x92, 0x47, 0x8d, 0x9c, 0x5b, 0x9f, 0xc1, 0x7e, 0x2d, 0x5d, 0x0e, 0xb6,
+ 0xbf, 0x0d, 0xde, 0x66, 0x1d, 0xfe, 0xda, 0x86, 0x68, 0xcd, 0x24, 0x9b, 0x85, 0x13, 0x16, 0x7a,
+ 0x07, 0xf0, 0x6a, 0x0c, 0x7b, 0x22, 0xc9, 0x12, 0xa5, 0x5d, 0xe7, 0x8d, 0xa3, 0x3d, 0xca, 0x81,
+ 0xf6, 0xab, 0x05, 0x63, 0xaf, 0x08, 0x08, 0xbc, 0xe2, 0x40, 0x0f, 0xe1, 0x31, 0x8f, 0x7c, 0x8a,
+ 0xe9, 0xe3, 0xc2, 0xa9, 0x66, 0x3a, 0x9c, 0xe3, 0xec, 0x7e, 0x41, 0x77, 0x5c, 0x04, 0x70, 0xc9,
+ 0x30, 0x5c, 0x00, 0xf8, 0x7a, 0xdd, 0x95, 0x2b, 0x26, 0x24, 0xfa, 0xb6, 0xe6, 0x8c, 0xb9, 0xe7,
+ 0x85, 0x66, 0x22, 0xf7, 0x65, 0x35, 0x45, 0x19, 0x59, 0x73, 0xe5, 0x1a, 0x76, 0x99, 0xa4, 0x41,
+ 0x69, 0xc9, 0x9d, 0xc6, 0x19, 0xea, 0xea, 0xaa, 0x9b, 0x74, 0xa9, 0x18, 0x70, 0x4e, 0x34, 0xfc,
+ 0x0b, 0xc0, 0xfe, 0x1a, 0xf8, 0x00, 0x33, 0x5c, 0x6e, 0xce, 0xf0, 0xce, 0x5e, 0x33, 0xec, 0x16,
+ 0xff, 0x2f, 0x80, 0xb0, 0x7a, 0x2b, 0x68, 0x00, 0xbb, 0x73, 0xca, 0x9d, 0x7c, 0x93, 0x68, 0xb6,
+ 0xa6, 0xf0, 0x5f, 0xab, 0x00, 0xce, 0xe3, 0xe8, 0x0e, 0xd4, 0x48, 0xcc, 0x3e, 0xe3, 0x51, 0x12,
+ 0xe7, 0xed, 0x35, 0xfb, 0x34, 0x5d, 0x0e, 0xb4, 0x07, 0xd7, 0x97, 0x79, 0x10, 0x57, 0x79, 0x05,
+ 0xe6, 0x54, 0x44, 0x09, 0x77, 0xa9, 0xd0, 0x8f, 0x2a, 0x30, 0x2e, 0x83, 0xb8, 0xca, 0xa3, 0x0f,
+ 0xe1, 0x69, 0x79, 0x18, 0x93, 0x80, 0x0a, 0xbd, 0x93, 0x15, 0xdc, 0x4a, 0x97, 0x83, 0x53, 0xbc,
+ 0x9e, 0xc0, 0x9b, 0x38, 0xf4, 0x31, 0xec, 0x87, 0x51, 0x58, 0x42, 0xbe, 0xc2, 0x57, 0x42, 0xef,
+ 0x66, 0xa5, 0xd9, 0xfb, 0x1c, 0x6f, 0xa6, 0xf0, 0x36, 0x76, 0xf8, 0x27, 0x80, 0x9d, 0xff, 0xdb,
+ 0xf6, 0x1a, 0xfe, 0xdc, 0x86, 0x27, 0x2f, 0xb7, 0xc9, 0x6a, 0x9b, 0xa8, 0x27, 0x78, 0xd8, 0x35,
+ 0xb2, 0xf7, 0x13, 0x7c, 0xf1, 0xfe, 0xf8, 0x03, 0xc0, 0xde, 0x81, 0x16, 0x87, 0xbd, 0xa9, 0xfa,
+ 0xad, 0xe7, 0xab, 0xde, 0x2d, 0xf7, 0x07, 0x58, 0xfa, 0x8f, 0xde, 0x85, 0xbd, 0xf2, 0xb1, 0x67,
+ 0x62, 0xb5, 0xaa, 0x79, 0xb9, 0x0f, 0xf0, 0x0a, 0x81, 0xce, 0x61, 0x67, 0xc6, 0xc2, 0x89, 0xde,
+ 0xce, 0x90, 0xaf, 0x14, 0xc8, 0xce, 0x43, 0x16, 0x4e, 0x70, 0x96, 0x51, 0x88, 0x90, 0x04, 0xf9,
+ 0x0f, 0xf1, 0x1a, 0x42, 0x3d, 0x73, 0x9c, 0x65, 0x94, 0x57, 0xc7, 0xc5, 0x65, 0x5a, 0xf1, 0x81,
+ 0x46, 0xbe, 0x75, 0x7d, 0xed, 0x7d, 0xf4, 0x3d, 0xbf, 0x3b, 0xb2, 0xa0, 0xa6, 0xfe, 0x8a, 0x98,
+ 0xb8, 0x54, 0xef, 0x64, 0xb0, 0x5b, 0x05, 0x4c, 0x1b, 0x97, 0x09, 0x5c, 0x61, 0xec, 0xbb, 0x8b,
+ 0x1b, 0xa3, 0xf5, 0xf4, 0xc6, 0x68, 0x3d, 0xbb, 0x31, 0x5a, 0x3f, 0xa6, 0x06, 0x58, 0xa4, 0x06,
+ 0x78, 0x9a, 0x1a, 0xe0, 0x59, 0x6a, 0x80, 0xbf, 0x53, 0x03, 0xfc, 0xf2, 0x8f, 0xd1, 0xfa, 0xe6,
+ 0xb8, 0x70, 0xfd, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd1, 0x99, 0xaf, 0xff, 0x74, 0x0b, 0x00,
+ 0x00,
}
diff --git a/staging/src/k8s.io/api/rbac/v1beta1/generated.proto b/staging/src/k8s.io/api/rbac/v1beta1/generated.proto
index fa4418771e..975de1096b 100644
--- a/staging/src/k8s.io/api/rbac/v1beta1/generated.proto
+++ b/staging/src/k8s.io/api/rbac/v1beta1/generated.proto
@@ -21,6 +21,7 @@ syntax = 'proto2';
package k8s.io.api.rbac.v1beta1;
+import "k8s.io/api/rbac/v1alpha1/generated.proto";
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
@@ -29,6 +30,14 @@ import "k8s.io/apimachinery/pkg/util/intstr/generated.proto";
// Package-wide variables from generator "generated".
option go_package = "v1beta1";
+// AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole
+message AggregationRule {
+ // ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules.
+ // If any of the selectors match, then the ClusterRole's permissions will be added
+ // +optional
+ repeated k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector clusterRoleSelectors = 1;
+}
+
// ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.
message ClusterRole {
// Standard object's metadata.
@@ -37,6 +46,12 @@ message ClusterRole {
// Rules holds all the PolicyRules for this ClusterRole
repeated PolicyRule rules = 2;
+
+ // AggregationRule is an optional field that describes how to build the Rules for this ClusterRole.
+ // If AggregationRule is set, then the Rules are controller managed and direct changes to Rules will be
+ // stomped by the controller.
+ // +optional
+ optional AggregationRule aggregationRule = 3;
}
// ClusterRoleBinding references a ClusterRole, but not contain it. It can reference a ClusterRole in the global namespace,
diff --git a/staging/src/k8s.io/api/rbac/v1beta1/types.go b/staging/src/k8s.io/api/rbac/v1beta1/types.go
index ee3964a3c0..091fc1dc95 100644
--- a/staging/src/k8s.io/api/rbac/v1beta1/types.go
+++ b/staging/src/k8s.io/api/rbac/v1beta1/types.go
@@ -171,6 +171,19 @@ type ClusterRole struct {
// Rules holds all the PolicyRules for this ClusterRole
Rules []PolicyRule `json:"rules" protobuf:"bytes,2,rep,name=rules"`
+ // AggregationRule is an optional field that describes how to build the Rules for this ClusterRole.
+ // If AggregationRule is set, then the Rules are controller managed and direct changes to Rules will be
+ // stomped by the controller.
+ // +optional
+ AggregationRule *AggregationRule `json:"aggregationRule,omitempty" protobuf:"bytes,3,opt,name=aggregationRule"`
+}
+
+// AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole
+type AggregationRule struct {
+ // ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules.
+ // If any of the selectors match, then the ClusterRole's permissions will be added
+ // +optional
+ ClusterRoleSelectors []metav1.LabelSelector `json:"clusterRoleSelectors,omitempty" protobuf:"bytes,1,rep,name=clusterRoleSelectors"`
}
// +genclient
diff --git a/staging/src/k8s.io/api/rbac/v1beta1/types_swagger_doc_generated.go b/staging/src/k8s.io/api/rbac/v1beta1/types_swagger_doc_generated.go
index 16a265c5a9..6180d6d43e 100644
--- a/staging/src/k8s.io/api/rbac/v1beta1/types_swagger_doc_generated.go
+++ b/staging/src/k8s.io/api/rbac/v1beta1/types_swagger_doc_generated.go
@@ -27,10 +27,20 @@ package v1beta1
// Those methods can be generated by using hack/update-generated-swagger-docs.sh
// AUTO-GENERATED FUNCTIONS START HERE
+var map_AggregationRule = map[string]string{
+ "": "AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole",
+ "clusterRoleSelectors": "ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added",
+}
+
+func (AggregationRule) SwaggerDoc() map[string]string {
+ return map_AggregationRule
+}
+
var map_ClusterRole = map[string]string{
- "": "ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.",
- "metadata": "Standard object's metadata.",
- "rules": "Rules holds all the PolicyRules for this ClusterRole",
+ "": "ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.",
+ "metadata": "Standard object's metadata.",
+ "rules": "Rules holds all the PolicyRules for this ClusterRole",
+ "aggregationRule": "AggregationRule is an optional field that describes how to build the Rules for this ClusterRole. If AggregationRule is set, then the Rules are controller managed and direct changes to Rules will be stomped by the controller.",
}
func (ClusterRole) SwaggerDoc() map[string]string {
diff --git a/staging/src/k8s.io/api/rbac/v1beta1/zz_generated.deepcopy.go b/staging/src/k8s.io/api/rbac/v1beta1/zz_generated.deepcopy.go
index 922727646f..ac23895615 100644
--- a/staging/src/k8s.io/api/rbac/v1beta1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/api/rbac/v1beta1/zz_generated.deepcopy.go
@@ -21,66 +21,31 @@ limitations under the License.
package v1beta1
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *AggregationRule) DeepCopyInto(out *AggregationRule) {
+ *out = *in
+ if in.ClusterRoleSelectors != nil {
+ in, out := &in.ClusterRoleSelectors, &out.ClusterRoleSelectors
+ *out = make([]v1.LabelSelector, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+ return
}
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ClusterRole).DeepCopyInto(out.(*ClusterRole))
- return nil
- }, InType: reflect.TypeOf(&ClusterRole{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ClusterRoleBinding).DeepCopyInto(out.(*ClusterRoleBinding))
- return nil
- }, InType: reflect.TypeOf(&ClusterRoleBinding{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ClusterRoleBindingList).DeepCopyInto(out.(*ClusterRoleBindingList))
- return nil
- }, InType: reflect.TypeOf(&ClusterRoleBindingList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ClusterRoleList).DeepCopyInto(out.(*ClusterRoleList))
- return nil
- }, InType: reflect.TypeOf(&ClusterRoleList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PolicyRule).DeepCopyInto(out.(*PolicyRule))
- return nil
- }, InType: reflect.TypeOf(&PolicyRule{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Role).DeepCopyInto(out.(*Role))
- return nil
- }, InType: reflect.TypeOf(&Role{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RoleBinding).DeepCopyInto(out.(*RoleBinding))
- return nil
- }, InType: reflect.TypeOf(&RoleBinding{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RoleBindingList).DeepCopyInto(out.(*RoleBindingList))
- return nil
- }, InType: reflect.TypeOf(&RoleBindingList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RoleList).DeepCopyInto(out.(*RoleList))
- return nil
- }, InType: reflect.TypeOf(&RoleList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RoleRef).DeepCopyInto(out.(*RoleRef))
- return nil
- }, InType: reflect.TypeOf(&RoleRef{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Subject).DeepCopyInto(out.(*Subject))
- return nil
- }, InType: reflect.TypeOf(&Subject{})},
- )
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AggregationRule.
+func (in *AggregationRule) DeepCopy() *AggregationRule {
+ if in == nil {
+ return nil
+ }
+ out := new(AggregationRule)
+ in.DeepCopyInto(out)
+ return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
@@ -95,6 +60,15 @@ func (in *ClusterRole) DeepCopyInto(out *ClusterRole) {
(*in)[i].DeepCopyInto(&(*out)[i])
}
}
+ if in.AggregationRule != nil {
+ in, out := &in.AggregationRule, &out.AggregationRule
+ if *in == nil {
+ *out = nil
+ } else {
+ *out = new(AggregationRule)
+ (*in).DeepCopyInto(*out)
+ }
+ }
return
}
diff --git a/staging/src/k8s.io/api/scheduling/v1alpha1/BUILD b/staging/src/k8s.io/api/scheduling/v1alpha1/BUILD
index e7a95040f6..c8c1976647 100644
--- a/staging/src/k8s.io/api/scheduling/v1alpha1/BUILD
+++ b/staging/src/k8s.io/api/scheduling/v1alpha1/BUILD
@@ -19,7 +19,6 @@ go_library(
deps = [
"//vendor/github.com/gogo/protobuf/proto:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/api/scheduling/v1alpha1/doc.go b/staging/src/k8s.io/api/scheduling/v1alpha1/doc.go
index bf9015986c..e10d07ff74 100644
--- a/staging/src/k8s.io/api/scheduling/v1alpha1/doc.go
+++ b/staging/src/k8s.io/api/scheduling/v1alpha1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:openapi-gen=true
// +groupName=scheduling.k8s.io
diff --git a/staging/src/k8s.io/api/scheduling/v1alpha1/zz_generated.deepcopy.go b/staging/src/k8s.io/api/scheduling/v1alpha1/zz_generated.deepcopy.go
index a3ae5c0ff9..fad4db662d 100644
--- a/staging/src/k8s.io/api/scheduling/v1alpha1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/api/scheduling/v1alpha1/zz_generated.deepcopy.go
@@ -21,32 +21,9 @@ limitations under the License.
package v1alpha1
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PriorityClass).DeepCopyInto(out.(*PriorityClass))
- return nil
- }, InType: reflect.TypeOf(&PriorityClass{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PriorityClassList).DeepCopyInto(out.(*PriorityClassList))
- return nil
- }, InType: reflect.TypeOf(&PriorityClassList{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PriorityClass) DeepCopyInto(out *PriorityClass) {
*out = *in
diff --git a/staging/src/k8s.io/api/settings/v1alpha1/BUILD b/staging/src/k8s.io/api/settings/v1alpha1/BUILD
index 1474fc9c65..d7457427df 100644
--- a/staging/src/k8s.io/api/settings/v1alpha1/BUILD
+++ b/staging/src/k8s.io/api/settings/v1alpha1/BUILD
@@ -20,7 +20,6 @@ go_library(
"//vendor/github.com/gogo/protobuf/proto:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/api/settings/v1alpha1/doc.go b/staging/src/k8s.io/api/settings/v1alpha1/doc.go
index ae1bfb9122..05a62c569e 100644
--- a/staging/src/k8s.io/api/settings/v1alpha1/doc.go
+++ b/staging/src/k8s.io/api/settings/v1alpha1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:openapi-gen=true
// +groupName=settings.k8s.io
diff --git a/staging/src/k8s.io/api/settings/v1alpha1/zz_generated.deepcopy.go b/staging/src/k8s.io/api/settings/v1alpha1/zz_generated.deepcopy.go
index 07e6ab72d0..2c925622b7 100644
--- a/staging/src/k8s.io/api/settings/v1alpha1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/api/settings/v1alpha1/zz_generated.deepcopy.go
@@ -22,36 +22,9 @@ package v1alpha1
import (
v1 "k8s.io/api/core/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodPreset).DeepCopyInto(out.(*PodPreset))
- return nil
- }, InType: reflect.TypeOf(&PodPreset{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodPresetList).DeepCopyInto(out.(*PodPresetList))
- return nil
- }, InType: reflect.TypeOf(&PodPresetList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodPresetSpec).DeepCopyInto(out.(*PodPresetSpec))
- return nil
- }, InType: reflect.TypeOf(&PodPresetSpec{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PodPreset) DeepCopyInto(out *PodPreset) {
*out = *in
diff --git a/staging/src/k8s.io/api/storage/v1/BUILD b/staging/src/k8s.io/api/storage/v1/BUILD
index 2e2a0f0427..50a09f0eba 100644
--- a/staging/src/k8s.io/api/storage/v1/BUILD
+++ b/staging/src/k8s.io/api/storage/v1/BUILD
@@ -17,7 +17,6 @@ go_library(
"//vendor/github.com/gogo/protobuf/sortkeys:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/api/storage/v1/doc.go b/staging/src/k8s.io/api/storage/v1/doc.go
index 0672c58e14..8f4a4045c4 100644
--- a/staging/src/k8s.io/api/storage/v1/doc.go
+++ b/staging/src/k8s.io/api/storage/v1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +groupName=storage.k8s.io
// +k8s:openapi-gen=true
package v1
diff --git a/staging/src/k8s.io/api/storage/v1/zz_generated.deepcopy.go b/staging/src/k8s.io/api/storage/v1/zz_generated.deepcopy.go
index 50c707abb9..2fef3d9d48 100644
--- a/staging/src/k8s.io/api/storage/v1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/api/storage/v1/zz_generated.deepcopy.go
@@ -22,32 +22,9 @@ package v1
import (
core_v1 "k8s.io/api/core/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StorageClass).DeepCopyInto(out.(*StorageClass))
- return nil
- }, InType: reflect.TypeOf(&StorageClass{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StorageClassList).DeepCopyInto(out.(*StorageClassList))
- return nil
- }, InType: reflect.TypeOf(&StorageClassList{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *StorageClass) DeepCopyInto(out *StorageClass) {
*out = *in
diff --git a/staging/src/k8s.io/api/storage/v1beta1/BUILD b/staging/src/k8s.io/api/storage/v1beta1/BUILD
index 4ea13789fe..e659e9de01 100644
--- a/staging/src/k8s.io/api/storage/v1beta1/BUILD
+++ b/staging/src/k8s.io/api/storage/v1beta1/BUILD
@@ -17,7 +17,6 @@ go_library(
"//vendor/github.com/gogo/protobuf/sortkeys:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/api/storage/v1beta1/doc.go b/staging/src/k8s.io/api/storage/v1beta1/doc.go
index 6137d7a4c2..8957a4cf24 100644
--- a/staging/src/k8s.io/api/storage/v1beta1/doc.go
+++ b/staging/src/k8s.io/api/storage/v1beta1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +groupName=storage.k8s.io
// +k8s:openapi-gen=true
package v1beta1 // import "k8s.io/api/storage/v1beta1"
diff --git a/staging/src/k8s.io/api/storage/v1beta1/zz_generated.deepcopy.go b/staging/src/k8s.io/api/storage/v1beta1/zz_generated.deepcopy.go
index bf1f91a67d..7341812600 100644
--- a/staging/src/k8s.io/api/storage/v1beta1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/api/storage/v1beta1/zz_generated.deepcopy.go
@@ -22,32 +22,9 @@ package v1beta1
import (
v1 "k8s.io/api/core/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StorageClass).DeepCopyInto(out.(*StorageClass))
- return nil
- }, InType: reflect.TypeOf(&StorageClass{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StorageClassList).DeepCopyInto(out.(*StorageClassList))
- return nil
- }, InType: reflect.TypeOf(&StorageClassList{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *StorageClass) DeepCopyInto(out *StorageClass) {
*out = *in
diff --git a/staging/src/k8s.io/apiextensions-apiserver/Godeps/Godeps.json b/staging/src/k8s.io/apiextensions-apiserver/Godeps/Godeps.json
index 0a9d82a04c..d235d3aa14 100644
--- a/staging/src/k8s.io/apiextensions-apiserver/Godeps/Godeps.json
+++ b/staging/src/k8s.io/apiextensions-apiserver/Godeps/Godeps.json
@@ -826,6 +826,10 @@
"ImportPath": "k8s.io/apimachinery/pkg/util/wait",
"Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
+ {
+ "ImportPath": "k8s.io/apimachinery/pkg/util/waitgroup",
+ "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ },
{
"ImportPath": "k8s.io/apimachinery/pkg/util/yaml",
"Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
diff --git a/staging/src/k8s.io/apiextensions-apiserver/examples/client-go/pkg/apis/cr/v1/BUILD b/staging/src/k8s.io/apiextensions-apiserver/examples/client-go/pkg/apis/cr/v1/BUILD
index 614c7ecd1b..0379da4b1a 100644
--- a/staging/src/k8s.io/apiextensions-apiserver/examples/client-go/pkg/apis/cr/v1/BUILD
+++ b/staging/src/k8s.io/apiextensions-apiserver/examples/client-go/pkg/apis/cr/v1/BUILD
@@ -17,7 +17,6 @@ go_library(
deps = [
"//vendor/k8s.io/apiextensions-apiserver/examples/client-go/pkg/apis/cr:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/apiextensions-apiserver/examples/client-go/pkg/apis/cr/v1/doc.go b/staging/src/k8s.io/apiextensions-apiserver/examples/client-go/pkg/apis/cr/v1/doc.go
index 97e36b1831..73d79a45d5 100644
--- a/staging/src/k8s.io/apiextensions-apiserver/examples/client-go/pkg/apis/cr/v1/doc.go
+++ b/staging/src/k8s.io/apiextensions-apiserver/examples/client-go/pkg/apis/cr/v1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// Package v1 is the v1 version of the API.
// +groupName=cr.example.apiextensions.k8s.io
diff --git a/staging/src/k8s.io/apiextensions-apiserver/examples/client-go/pkg/apis/cr/v1/zz_generated.deepcopy.go b/staging/src/k8s.io/apiextensions-apiserver/examples/client-go/pkg/apis/cr/v1/zz_generated.deepcopy.go
index e285b37811..fe626ef90d 100644
--- a/staging/src/k8s.io/apiextensions-apiserver/examples/client-go/pkg/apis/cr/v1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/apiextensions-apiserver/examples/client-go/pkg/apis/cr/v1/zz_generated.deepcopy.go
@@ -21,40 +21,9 @@ limitations under the License.
package v1
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Example).DeepCopyInto(out.(*Example))
- return nil
- }, InType: reflect.TypeOf(&Example{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExampleList).DeepCopyInto(out.(*ExampleList))
- return nil
- }, InType: reflect.TypeOf(&ExampleList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExampleSpec).DeepCopyInto(out.(*ExampleSpec))
- return nil
- }, InType: reflect.TypeOf(&ExampleSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExampleStatus).DeepCopyInto(out.(*ExampleStatus))
- return nil
- }, InType: reflect.TypeOf(&ExampleStatus{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Example) DeepCopyInto(out *Example) {
*out = *in
diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/BUILD b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/BUILD
index 3dc0a063a9..303d94b938 100644
--- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/BUILD
+++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/BUILD
@@ -20,7 +20,6 @@ go_library(
importpath = "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions",
deps = [
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/doc.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/doc.go
index d3b8f8db4a..0517ec6a84 100644
--- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/doc.go
+++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// Package apiextensions is the internal version of the API.
// +groupName=apiextensions.k8s.io
diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/doc.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/doc.go
index 67af169a13..50ab2b54c6 100644
--- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/doc.go
+++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:conversion-gen=k8s.io/apiextensions-apiserver/pkg/apis/apiextensions
// +k8s:defaulter-gen=TypeMeta
diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.deepcopy.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.deepcopy.go
index 6f97eb6db6..697f87417f 100644
--- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.deepcopy.go
@@ -21,76 +21,9 @@ limitations under the License.
package v1beta1
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CustomResourceDefinition).DeepCopyInto(out.(*CustomResourceDefinition))
- return nil
- }, InType: reflect.TypeOf(&CustomResourceDefinition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CustomResourceDefinitionCondition).DeepCopyInto(out.(*CustomResourceDefinitionCondition))
- return nil
- }, InType: reflect.TypeOf(&CustomResourceDefinitionCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CustomResourceDefinitionList).DeepCopyInto(out.(*CustomResourceDefinitionList))
- return nil
- }, InType: reflect.TypeOf(&CustomResourceDefinitionList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CustomResourceDefinitionNames).DeepCopyInto(out.(*CustomResourceDefinitionNames))
- return nil
- }, InType: reflect.TypeOf(&CustomResourceDefinitionNames{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CustomResourceDefinitionSpec).DeepCopyInto(out.(*CustomResourceDefinitionSpec))
- return nil
- }, InType: reflect.TypeOf(&CustomResourceDefinitionSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CustomResourceDefinitionStatus).DeepCopyInto(out.(*CustomResourceDefinitionStatus))
- return nil
- }, InType: reflect.TypeOf(&CustomResourceDefinitionStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CustomResourceValidation).DeepCopyInto(out.(*CustomResourceValidation))
- return nil
- }, InType: reflect.TypeOf(&CustomResourceValidation{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExternalDocumentation).DeepCopyInto(out.(*ExternalDocumentation))
- return nil
- }, InType: reflect.TypeOf(&ExternalDocumentation{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*JSON).DeepCopyInto(out.(*JSON))
- return nil
- }, InType: reflect.TypeOf(&JSON{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*JSONSchemaProps).DeepCopyInto(out.(*JSONSchemaProps))
- return nil
- }, InType: reflect.TypeOf(&JSONSchemaProps{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*JSONSchemaPropsOrArray).DeepCopyInto(out.(*JSONSchemaPropsOrArray))
- return nil
- }, InType: reflect.TypeOf(&JSONSchemaPropsOrArray{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*JSONSchemaPropsOrBool).DeepCopyInto(out.(*JSONSchemaPropsOrBool))
- return nil
- }, InType: reflect.TypeOf(&JSONSchemaPropsOrBool{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*JSONSchemaPropsOrStringArray).DeepCopyInto(out.(*JSONSchemaPropsOrStringArray))
- return nil
- }, InType: reflect.TypeOf(&JSONSchemaPropsOrStringArray{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *CustomResourceDefinition) DeepCopyInto(out *CustomResourceDefinition) {
*out = *in
diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/zz_generated.deepcopy.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/zz_generated.deepcopy.go
index ae6f2d79f8..f7d57c22e8 100644
--- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/zz_generated.deepcopy.go
@@ -21,72 +21,9 @@ limitations under the License.
package apiextensions
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CustomResourceDefinition).DeepCopyInto(out.(*CustomResourceDefinition))
- return nil
- }, InType: reflect.TypeOf(&CustomResourceDefinition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CustomResourceDefinitionCondition).DeepCopyInto(out.(*CustomResourceDefinitionCondition))
- return nil
- }, InType: reflect.TypeOf(&CustomResourceDefinitionCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CustomResourceDefinitionList).DeepCopyInto(out.(*CustomResourceDefinitionList))
- return nil
- }, InType: reflect.TypeOf(&CustomResourceDefinitionList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CustomResourceDefinitionNames).DeepCopyInto(out.(*CustomResourceDefinitionNames))
- return nil
- }, InType: reflect.TypeOf(&CustomResourceDefinitionNames{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CustomResourceDefinitionSpec).DeepCopyInto(out.(*CustomResourceDefinitionSpec))
- return nil
- }, InType: reflect.TypeOf(&CustomResourceDefinitionSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CustomResourceDefinitionStatus).DeepCopyInto(out.(*CustomResourceDefinitionStatus))
- return nil
- }, InType: reflect.TypeOf(&CustomResourceDefinitionStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CustomResourceValidation).DeepCopyInto(out.(*CustomResourceValidation))
- return nil
- }, InType: reflect.TypeOf(&CustomResourceValidation{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExternalDocumentation).DeepCopyInto(out.(*ExternalDocumentation))
- return nil
- }, InType: reflect.TypeOf(&ExternalDocumentation{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*JSONSchemaProps).DeepCopyInto(out.(*JSONSchemaProps))
- return nil
- }, InType: reflect.TypeOf(&JSONSchemaProps{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*JSONSchemaPropsOrArray).DeepCopyInto(out.(*JSONSchemaPropsOrArray))
- return nil
- }, InType: reflect.TypeOf(&JSONSchemaPropsOrArray{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*JSONSchemaPropsOrBool).DeepCopyInto(out.(*JSONSchemaPropsOrBool))
- return nil
- }, InType: reflect.TypeOf(&JSONSchemaPropsOrBool{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*JSONSchemaPropsOrStringArray).DeepCopyInto(out.(*JSONSchemaPropsOrStringArray))
- return nil
- }, InType: reflect.TypeOf(&JSONSchemaPropsOrStringArray{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *CustomResourceDefinition) DeepCopyInto(out *CustomResourceDefinition) {
*out = *in
diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_handler.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_handler.go
index 4470684447..773a065772 100644
--- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_handler.go
+++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_handler.go
@@ -309,7 +309,6 @@ func (r *crdHandler) getServingInfoFor(crd *apiextensions.CustomResourceDefiniti
&metav1.GetOptions{},
&metav1.DeleteOptions{},
)
- parameterScheme.AddGeneratedDeepCopyFuncs(metav1.GetGeneratedDeepCopyFuncs()...)
parameterCodec := runtime.NewParameterCodec(parameterScheme)
kind := schema.GroupVersionKind{Group: crd.Spec.Group, Version: crd.Spec.Version, Kind: crd.Status.AcceptedNames.Kind}
diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/BUILD b/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/BUILD
index b0625ed616..57f38ce259 100644
--- a/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/BUILD
+++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/BUILD
@@ -17,6 +17,7 @@ go_library(
"//vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset:go_default_library",
"//vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions:go_default_library",
"//vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/internalinterfaces:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/interface.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/interface.go
index de7f6e34e6..e1ad6afcc0 100644
--- a/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/interface.go
+++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// V1beta1 returns a new v1beta1.Interface.
func (g *group) V1beta1() v1beta1.Interface {
- return v1beta1.New(g.SharedInformerFactory)
+ return v1beta1.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1beta1/customresourcedefinition.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1beta1/customresourcedefinition.go
index e28ec5db66..cc86c42e95 100644
--- a/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1beta1/customresourcedefinition.go
+++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1beta1/customresourcedefinition.go
@@ -38,19 +38,33 @@ type CustomResourceDefinitionInformer interface {
}
type customResourceDefinitionInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewCustomResourceDefinitionInformer constructs a new informer for CustomResourceDefinition type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewCustomResourceDefinitionInformer(client clientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredCustomResourceDefinitionInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredCustomResourceDefinitionInformer constructs a new informer for CustomResourceDefinition type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredCustomResourceDefinitionInformer(client clientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.ApiextensionsV1beta1().CustomResourceDefinitions().List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.ApiextensionsV1beta1().CustomResourceDefinitions().Watch(options)
},
},
@@ -60,12 +74,12 @@ func NewCustomResourceDefinitionInformer(client clientset.Interface, resyncPerio
)
}
-func defaultCustomResourceDefinitionInformer(client clientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewCustomResourceDefinitionInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *customResourceDefinitionInformer) defaultInformer(client clientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredCustomResourceDefinitionInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *customResourceDefinitionInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&apiextensions_v1beta1.CustomResourceDefinition{}, defaultCustomResourceDefinitionInformer)
+ return f.factory.InformerFor(&apiextensions_v1beta1.CustomResourceDefinition{}, f.defaultInformer)
}
func (f *customResourceDefinitionInformer) Lister() v1beta1.CustomResourceDefinitionLister {
diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1beta1/interface.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1beta1/interface.go
index cada14028b..2a58270265 100644
--- a/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1beta1/interface.go
+++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1beta1/interface.go
@@ -29,15 +29,17 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// CustomResourceDefinitions returns a CustomResourceDefinitionInformer.
func (v *version) CustomResourceDefinitions() CustomResourceDefinitionInformer {
- return &customResourceDefinitionInformer{factory: v.SharedInformerFactory}
+ return &customResourceDefinitionInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/factory.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/factory.go
index 0f94a664d9..fbaa2c65d3 100644
--- a/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/factory.go
+++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/factory.go
@@ -22,6 +22,7 @@ import (
clientset "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
apiextensions "k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions"
internalinterfaces "k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/internalinterfaces"
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
schema "k8s.io/apimachinery/pkg/runtime/schema"
cache "k8s.io/client-go/tools/cache"
@@ -31,9 +32,11 @@ import (
)
type sharedInformerFactory struct {
- client clientset.Interface
- lock sync.Mutex
- defaultResync time.Duration
+ client clientset.Interface
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ lock sync.Mutex
+ defaultResync time.Duration
informers map[reflect.Type]cache.SharedIndexInformer
// startedInformers is used for tracking which informers have been started.
@@ -43,8 +46,17 @@ type sharedInformerFactory struct {
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory
func NewSharedInformerFactory(client clientset.Interface, defaultResync time.Duration) SharedInformerFactory {
+ return NewFilteredSharedInformerFactory(client, defaultResync, v1.NamespaceAll, nil)
+}
+
+// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
+// Listers obtained via this SharedInformerFactory will be subject to the same filters
+// as specified here.
+func NewFilteredSharedInformerFactory(client clientset.Interface, defaultResync time.Duration, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerFactory {
return &sharedInformerFactory{
client: client,
+ namespace: namespace,
+ tweakListOptions: tweakListOptions,
defaultResync: defaultResync,
informers: make(map[reflect.Type]cache.SharedIndexInformer),
startedInformers: make(map[reflect.Type]bool),
@@ -114,5 +126,5 @@ type SharedInformerFactory interface {
}
func (f *sharedInformerFactory) Apiextensions() apiextensions.Interface {
- return apiextensions.New(f)
+ return apiextensions.New(f, f.namespace, f.tweakListOptions)
}
diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/internalinterfaces/BUILD b/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/internalinterfaces/BUILD
index 4b56af2b31..56bb1f8d80 100644
--- a/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/internalinterfaces/BUILD
+++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/internalinterfaces/BUILD
@@ -11,6 +11,7 @@ go_library(
importpath = "k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/internalinterfaces",
deps = [
"//vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
],
diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/internalinterfaces/factory_interfaces.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/internalinterfaces/factory_interfaces.go
index 6f7b0a8106..80b53e7725 100644
--- a/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/internalinterfaces/factory_interfaces.go
+++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/internalinterfaces/factory_interfaces.go
@@ -20,6 +20,7 @@ package internalinterfaces
import (
clientset "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
cache "k8s.io/client-go/tools/cache"
time "time"
@@ -32,3 +33,5 @@ type SharedInformerFactory interface {
Start(stopCh <-chan struct{})
InformerFor(obj runtime.Object, newFunc NewInformerFunc) cache.SharedIndexInformer
}
+
+type TweakListOptionsFunc func(*v1.ListOptions)
diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/BUILD b/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/BUILD
index ed5eed5a0e..ec24afd538 100644
--- a/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/BUILD
+++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/BUILD
@@ -17,6 +17,7 @@ go_library(
"//vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset:go_default_library",
"//vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions:go_default_library",
"//vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/internalinterfaces:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions/interface.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions/interface.go
index 8137e94b71..e422eb4404 100644
--- a/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions/interface.go
+++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// InternalVersion returns a new internalversion.Interface.
func (g *group) InternalVersion() internalversion.Interface {
- return internalversion.New(g.SharedInformerFactory)
+ return internalversion.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions/internalversion/customresourcedefinition.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions/internalversion/customresourcedefinition.go
index 4c14fd1119..20c8631259 100644
--- a/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions/internalversion/customresourcedefinition.go
+++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions/internalversion/customresourcedefinition.go
@@ -38,19 +38,33 @@ type CustomResourceDefinitionInformer interface {
}
type customResourceDefinitionInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewCustomResourceDefinitionInformer constructs a new informer for CustomResourceDefinition type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewCustomResourceDefinitionInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredCustomResourceDefinitionInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredCustomResourceDefinitionInformer constructs a new informer for CustomResourceDefinition type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredCustomResourceDefinitionInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Apiextensions().CustomResourceDefinitions().List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Apiextensions().CustomResourceDefinitions().Watch(options)
},
},
@@ -60,12 +74,12 @@ func NewCustomResourceDefinitionInformer(client internalclientset.Interface, res
)
}
-func defaultCustomResourceDefinitionInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewCustomResourceDefinitionInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *customResourceDefinitionInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredCustomResourceDefinitionInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *customResourceDefinitionInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&apiextensions.CustomResourceDefinition{}, defaultCustomResourceDefinitionInformer)
+ return f.factory.InformerFor(&apiextensions.CustomResourceDefinition{}, f.defaultInformer)
}
func (f *customResourceDefinitionInformer) Lister() internalversion.CustomResourceDefinitionLister {
diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions/internalversion/interface.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions/internalversion/interface.go
index e9ba1c90a2..4183e973d4 100644
--- a/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions/internalversion/interface.go
+++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions/internalversion/interface.go
@@ -29,15 +29,17 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// CustomResourceDefinitions returns a CustomResourceDefinitionInformer.
func (v *version) CustomResourceDefinitions() CustomResourceDefinitionInformer {
- return &customResourceDefinitionInformer{factory: v.SharedInformerFactory}
+ return &customResourceDefinitionInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/factory.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/factory.go
index fc5fda9fc4..ee83d6dfc8 100644
--- a/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/factory.go
+++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/factory.go
@@ -22,6 +22,7 @@ import (
internalclientset "k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset"
apiextensions "k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions"
internalinterfaces "k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/internalinterfaces"
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
schema "k8s.io/apimachinery/pkg/runtime/schema"
cache "k8s.io/client-go/tools/cache"
@@ -31,9 +32,11 @@ import (
)
type sharedInformerFactory struct {
- client internalclientset.Interface
- lock sync.Mutex
- defaultResync time.Duration
+ client internalclientset.Interface
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ lock sync.Mutex
+ defaultResync time.Duration
informers map[reflect.Type]cache.SharedIndexInformer
// startedInformers is used for tracking which informers have been started.
@@ -43,8 +46,17 @@ type sharedInformerFactory struct {
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory
func NewSharedInformerFactory(client internalclientset.Interface, defaultResync time.Duration) SharedInformerFactory {
+ return NewFilteredSharedInformerFactory(client, defaultResync, v1.NamespaceAll, nil)
+}
+
+// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
+// Listers obtained via this SharedInformerFactory will be subject to the same filters
+// as specified here.
+func NewFilteredSharedInformerFactory(client internalclientset.Interface, defaultResync time.Duration, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerFactory {
return &sharedInformerFactory{
client: client,
+ namespace: namespace,
+ tweakListOptions: tweakListOptions,
defaultResync: defaultResync,
informers: make(map[reflect.Type]cache.SharedIndexInformer),
startedInformers: make(map[reflect.Type]bool),
@@ -114,5 +126,5 @@ type SharedInformerFactory interface {
}
func (f *sharedInformerFactory) Apiextensions() apiextensions.Interface {
- return apiextensions.New(f)
+ return apiextensions.New(f, f.namespace, f.tweakListOptions)
}
diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/internalinterfaces/BUILD b/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/internalinterfaces/BUILD
index 9235b4b64d..398d1f2f8e 100644
--- a/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/internalinterfaces/BUILD
+++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/internalinterfaces/BUILD
@@ -11,6 +11,7 @@ go_library(
importpath = "k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/internalinterfaces",
deps = [
"//vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
],
diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/internalinterfaces/factory_interfaces.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/internalinterfaces/factory_interfaces.go
index 395b69ff89..e93f43f500 100644
--- a/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/internalinterfaces/factory_interfaces.go
+++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/internalinterfaces/factory_interfaces.go
@@ -20,6 +20,7 @@ package internalinterfaces
import (
internalclientset "k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset"
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
cache "k8s.io/client-go/tools/cache"
time "time"
@@ -32,3 +33,5 @@ type SharedInformerFactory interface {
Start(stopCh <-chan struct{})
InformerFor(obj runtime.Object, newFunc NewInformerFunc) cache.SharedIndexInformer
}
+
+type TweakListOptionsFunc func(*v1.ListOptions)
diff --git a/staging/src/k8s.io/apiextensions-apiserver/test/integration/testserver/resources.go b/staging/src/k8s.io/apiextensions-apiserver/test/integration/testserver/resources.go
index d2d739de9b..562281f4c9 100644
--- a/staging/src/k8s.io/apiextensions-apiserver/test/integration/testserver/resources.go
+++ b/staging/src/k8s.io/apiextensions-apiserver/test/integration/testserver/resources.go
@@ -146,7 +146,11 @@ func NewCurletInstance(namespace, name string) *unstructured.Unstructured {
}
}
-func CreateNewCustomResourceDefinition(crd *apiextensionsv1beta1.CustomResourceDefinition, apiExtensionsClient clientset.Interface, clientPool dynamic.ClientPool) (dynamic.Interface, error) {
+// CreateNewCustomResourceDefinitionWatchUnsafe creates the CRD and makes sure
+// the apiextension apiserver has installed the CRD. But it's not safe to watch
+// the created CR. Please call CreateNewCustomResourceDefinition if you need to
+// watch the CR.
+func CreateNewCustomResourceDefinitionWatchUnsafe(crd *apiextensionsv1beta1.CustomResourceDefinition, apiExtensionsClient clientset.Interface, clientPool dynamic.ClientPool) (dynamic.Interface, error) {
_, err := apiExtensionsClient.Apiextensions().CustomResourceDefinitions().Create(crd)
if err != nil {
return nil, err
@@ -169,7 +173,11 @@ func CreateNewCustomResourceDefinition(crd *apiextensionsv1beta1.CustomResourceD
return nil, err
}
- dynamicClient, err := clientPool.ClientForGroupVersionResource(schema.GroupVersionResource{Group: crd.Spec.Group, Version: crd.Spec.Version, Resource: crd.Spec.Names.Plural})
+ return clientPool.ClientForGroupVersionResource(schema.GroupVersionResource{Group: crd.Spec.Group, Version: crd.Spec.Version, Resource: crd.Spec.Names.Plural})
+}
+
+func CreateNewCustomResourceDefinition(crd *apiextensionsv1beta1.CustomResourceDefinition, apiExtensionsClient clientset.Interface, clientPool dynamic.ClientPool) (dynamic.Interface, error) {
+ dynamicClient, err := CreateNewCustomResourceDefinitionWatchUnsafe(crd, apiExtensionsClient, clientPool)
if err != nil {
return nil, err
}
diff --git a/staging/src/k8s.io/apimachinery/pkg/api/resource/BUILD b/staging/src/k8s.io/apimachinery/pkg/api/resource/BUILD
index 5b88754630..1fb88704e3 100644
--- a/staging/src/k8s.io/apimachinery/pkg/api/resource/BUILD
+++ b/staging/src/k8s.io/apimachinery/pkg/api/resource/BUILD
@@ -42,7 +42,6 @@ go_library(
"//vendor/github.com/gogo/protobuf/proto:go_default_library",
"//vendor/github.com/spf13/pflag:go_default_library",
"//vendor/gopkg.in/inf.v0:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/kube-openapi/pkg/common:go_default_library",
],
)
diff --git a/staging/src/k8s.io/apimachinery/pkg/api/resource/zz_generated.deepcopy.go b/staging/src/k8s.io/apimachinery/pkg/api/resource/zz_generated.deepcopy.go
index 118dfca07e..eb49f81994 100644
--- a/staging/src/k8s.io/apimachinery/pkg/api/resource/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/apimachinery/pkg/api/resource/zz_generated.deepcopy.go
@@ -20,23 +20,6 @@ limitations under the License.
package resource
-import (
- conversion "k8s.io/apimachinery/pkg/conversion"
- reflect "reflect"
-)
-
-// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc {
- return []conversion.GeneratedDeepCopyFunc{
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Quantity).DeepCopyInto(out.(*Quantity))
- return nil
- }, InType: reflect.TypeOf(&Quantity{})},
- }
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Quantity) DeepCopyInto(out *Quantity) {
*out = in.DeepCopy()
diff --git a/staging/src/k8s.io/apimachinery/pkg/apis/meta/internalversion/zz_generated.deepcopy.go b/staging/src/k8s.io/apimachinery/pkg/apis/meta/internalversion/zz_generated.deepcopy.go
index f13ff9fc50..deaf5309d6 100644
--- a/staging/src/k8s.io/apimachinery/pkg/apis/meta/internalversion/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/apimachinery/pkg/apis/meta/internalversion/zz_generated.deepcopy.go
@@ -21,27 +21,9 @@ limitations under the License.
package internalversion
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc {
- return []conversion.GeneratedDeepCopyFunc{
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*List).DeepCopyInto(out.(*List))
- return nil
- }, InType: reflect.TypeOf(&List{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ListOptions).DeepCopyInto(out.(*ListOptions))
- return nil
- }, InType: reflect.TypeOf(&ListOptions{})},
- }
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *List) DeepCopyInto(out *List) {
*out = *in
diff --git a/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/register.go b/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/register.go
index 6e449a436a..b300d37015 100644
--- a/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/register.go
+++ b/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/register.go
@@ -70,7 +70,6 @@ func AddToGroupVersion(scheme *runtime.Scheme, groupVersion schema.GroupVersion)
)
// register manually. This usually goes through the SchemeBuilder, which we cannot use here.
- scheme.AddGeneratedDeepCopyFuncs(GetGeneratedDeepCopyFuncs()...)
AddConversionFuncs(scheme)
RegisterDefaults(scheme)
}
@@ -90,6 +89,5 @@ func init() {
)
// register manually. This usually goes through the SchemeBuilder, which we cannot use here.
- scheme.AddGeneratedDeepCopyFuncs(GetGeneratedDeepCopyFuncs()...)
RegisterDefaults(scheme)
}
diff --git a/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/BUILD b/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/BUILD
index a568081c18..870ef7b906 100644
--- a/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/BUILD
+++ b/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/BUILD
@@ -32,7 +32,6 @@ go_library(
importpath = "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured",
deps = [
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/conversion/unstructured:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
diff --git a/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/zz_generated.deepcopy.go b/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/zz_generated.deepcopy.go
index 248acf989b..8f6a17bf6a 100644
--- a/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/zz_generated.deepcopy.go
@@ -21,27 +21,9 @@ limitations under the License.
package unstructured
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc {
- return []conversion.GeneratedDeepCopyFunc{
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Unstructured).DeepCopyInto(out.(*Unstructured))
- return nil
- }, InType: reflect.TypeOf(&Unstructured{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*UnstructuredList).DeepCopyInto(out.(*UnstructuredList))
- return nil
- }, InType: reflect.TypeOf(&UnstructuredList{})},
- }
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Unstructured) DeepCopyInto(out *Unstructured) {
clone := in.DeepCopy()
diff --git a/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.deepcopy.go b/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.deepcopy.go
index c73e777b50..ed45855021 100644
--- a/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.deepcopy.go
@@ -21,164 +21,10 @@ limitations under the License.
package v1
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
types "k8s.io/apimachinery/pkg/types"
- reflect "reflect"
)
-// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc {
- return []conversion.GeneratedDeepCopyFunc{
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*APIGroup).DeepCopyInto(out.(*APIGroup))
- return nil
- }, InType: reflect.TypeOf(&APIGroup{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*APIGroupList).DeepCopyInto(out.(*APIGroupList))
- return nil
- }, InType: reflect.TypeOf(&APIGroupList{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*APIResource).DeepCopyInto(out.(*APIResource))
- return nil
- }, InType: reflect.TypeOf(&APIResource{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*APIResourceList).DeepCopyInto(out.(*APIResourceList))
- return nil
- }, InType: reflect.TypeOf(&APIResourceList{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*APIVersions).DeepCopyInto(out.(*APIVersions))
- return nil
- }, InType: reflect.TypeOf(&APIVersions{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*DeleteOptions).DeepCopyInto(out.(*DeleteOptions))
- return nil
- }, InType: reflect.TypeOf(&DeleteOptions{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Duration).DeepCopyInto(out.(*Duration))
- return nil
- }, InType: reflect.TypeOf(&Duration{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExportOptions).DeepCopyInto(out.(*ExportOptions))
- return nil
- }, InType: reflect.TypeOf(&ExportOptions{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*GetOptions).DeepCopyInto(out.(*GetOptions))
- return nil
- }, InType: reflect.TypeOf(&GetOptions{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*GroupKind).DeepCopyInto(out.(*GroupKind))
- return nil
- }, InType: reflect.TypeOf(&GroupKind{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*GroupResource).DeepCopyInto(out.(*GroupResource))
- return nil
- }, InType: reflect.TypeOf(&GroupResource{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*GroupVersion).DeepCopyInto(out.(*GroupVersion))
- return nil
- }, InType: reflect.TypeOf(&GroupVersion{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*GroupVersionForDiscovery).DeepCopyInto(out.(*GroupVersionForDiscovery))
- return nil
- }, InType: reflect.TypeOf(&GroupVersionForDiscovery{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*GroupVersionKind).DeepCopyInto(out.(*GroupVersionKind))
- return nil
- }, InType: reflect.TypeOf(&GroupVersionKind{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*GroupVersionResource).DeepCopyInto(out.(*GroupVersionResource))
- return nil
- }, InType: reflect.TypeOf(&GroupVersionResource{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Initializer).DeepCopyInto(out.(*Initializer))
- return nil
- }, InType: reflect.TypeOf(&Initializer{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Initializers).DeepCopyInto(out.(*Initializers))
- return nil
- }, InType: reflect.TypeOf(&Initializers{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*InternalEvent).DeepCopyInto(out.(*InternalEvent))
- return nil
- }, InType: reflect.TypeOf(&InternalEvent{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*LabelSelector).DeepCopyInto(out.(*LabelSelector))
- return nil
- }, InType: reflect.TypeOf(&LabelSelector{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*LabelSelectorRequirement).DeepCopyInto(out.(*LabelSelectorRequirement))
- return nil
- }, InType: reflect.TypeOf(&LabelSelectorRequirement{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*List).DeepCopyInto(out.(*List))
- return nil
- }, InType: reflect.TypeOf(&List{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ListMeta).DeepCopyInto(out.(*ListMeta))
- return nil
- }, InType: reflect.TypeOf(&ListMeta{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ListOptions).DeepCopyInto(out.(*ListOptions))
- return nil
- }, InType: reflect.TypeOf(&ListOptions{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*MicroTime).DeepCopyInto(out.(*MicroTime))
- return nil
- }, InType: reflect.TypeOf(&MicroTime{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ObjectMeta).DeepCopyInto(out.(*ObjectMeta))
- return nil
- }, InType: reflect.TypeOf(&ObjectMeta{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*OwnerReference).DeepCopyInto(out.(*OwnerReference))
- return nil
- }, InType: reflect.TypeOf(&OwnerReference{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Patch).DeepCopyInto(out.(*Patch))
- return nil
- }, InType: reflect.TypeOf(&Patch{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Preconditions).DeepCopyInto(out.(*Preconditions))
- return nil
- }, InType: reflect.TypeOf(&Preconditions{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RootPaths).DeepCopyInto(out.(*RootPaths))
- return nil
- }, InType: reflect.TypeOf(&RootPaths{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ServerAddressByClientCIDR).DeepCopyInto(out.(*ServerAddressByClientCIDR))
- return nil
- }, InType: reflect.TypeOf(&ServerAddressByClientCIDR{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Status).DeepCopyInto(out.(*Status))
- return nil
- }, InType: reflect.TypeOf(&Status{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StatusCause).DeepCopyInto(out.(*StatusCause))
- return nil
- }, InType: reflect.TypeOf(&StatusCause{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*StatusDetails).DeepCopyInto(out.(*StatusDetails))
- return nil
- }, InType: reflect.TypeOf(&StatusDetails{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Time).DeepCopyInto(out.(*Time))
- return nil
- }, InType: reflect.TypeOf(&Time{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Timestamp).DeepCopyInto(out.(*Timestamp))
- return nil
- }, InType: reflect.TypeOf(&Timestamp{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*WatchEvent).DeepCopyInto(out.(*WatchEvent))
- return nil
- }, InType: reflect.TypeOf(&WatchEvent{})},
- }
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *APIGroup) DeepCopyInto(out *APIGroup) {
*out = *in
diff --git a/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/zz_generated.deepcopy.go b/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/zz_generated.deepcopy.go
index 043456cdb1..4ae545d911 100644
--- a/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/zz_generated.deepcopy.go
@@ -21,47 +21,9 @@ limitations under the License.
package v1alpha1
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc {
- return []conversion.GeneratedDeepCopyFunc{
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PartialObjectMetadata).DeepCopyInto(out.(*PartialObjectMetadata))
- return nil
- }, InType: reflect.TypeOf(&PartialObjectMetadata{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PartialObjectMetadataList).DeepCopyInto(out.(*PartialObjectMetadataList))
- return nil
- }, InType: reflect.TypeOf(&PartialObjectMetadataList{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Table).DeepCopyInto(out.(*Table))
- return nil
- }, InType: reflect.TypeOf(&Table{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TableColumnDefinition).DeepCopyInto(out.(*TableColumnDefinition))
- return nil
- }, InType: reflect.TypeOf(&TableColumnDefinition{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TableOptions).DeepCopyInto(out.(*TableOptions))
- return nil
- }, InType: reflect.TypeOf(&TableOptions{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TableRow).DeepCopyInto(out.(*TableRow))
- return nil
- }, InType: reflect.TypeOf(&TableRow{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TableRowCondition).DeepCopyInto(out.(*TableRowCondition))
- return nil
- }, InType: reflect.TypeOf(&TableRowCondition{})},
- }
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PartialObjectMetadata) DeepCopyInto(out *PartialObjectMetadata) {
*out = *in
diff --git a/staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/BUILD b/staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/BUILD
index 1f2b043a30..817a0e6ad4 100644
--- a/staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/BUILD
+++ b/staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/BUILD
@@ -16,7 +16,6 @@ go_library(
importpath = "k8s.io/apimachinery/pkg/apis/testapigroup",
deps = [
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/doc.go b/staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/doc.go
index f8c455eecb..419d0cb465 100644
--- a/staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/doc.go
+++ b/staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +groupName=testapigroup.apimachinery.k8s.io
//
// package testapigroup contains an testapigroup API used to demonstrate how to create api groups. Moreover, this is
diff --git a/staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/v1/doc.go b/staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/v1/doc.go
index 9f935b3d4b..732d203813 100644
--- a/staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/v1/doc.go
+++ b/staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/v1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:conversion-gen=k8s.io/apimachinery/pkg/apis/testapigroup
// +k8s:openapi-gen=false
// +k8s:defaulter-gen=TypeMeta
diff --git a/staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/v1/zz_generated.deepcopy.go b/staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/v1/zz_generated.deepcopy.go
index 82e8dbfe76..42e689f636 100644
--- a/staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/v1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/v1/zz_generated.deepcopy.go
@@ -22,44 +22,9 @@ package v1
import (
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Carp).DeepCopyInto(out.(*Carp))
- return nil
- }, InType: reflect.TypeOf(&Carp{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CarpCondition).DeepCopyInto(out.(*CarpCondition))
- return nil
- }, InType: reflect.TypeOf(&CarpCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CarpList).DeepCopyInto(out.(*CarpList))
- return nil
- }, InType: reflect.TypeOf(&CarpList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CarpSpec).DeepCopyInto(out.(*CarpSpec))
- return nil
- }, InType: reflect.TypeOf(&CarpSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CarpStatus).DeepCopyInto(out.(*CarpStatus))
- return nil
- }, InType: reflect.TypeOf(&CarpStatus{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Carp) DeepCopyInto(out *Carp) {
*out = *in
diff --git a/staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/zz_generated.deepcopy.go b/staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/zz_generated.deepcopy.go
index a2d6b83b6d..43452928ac 100644
--- a/staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/zz_generated.deepcopy.go
@@ -22,44 +22,9 @@ package testapigroup
import (
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Carp).DeepCopyInto(out.(*Carp))
- return nil
- }, InType: reflect.TypeOf(&Carp{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CarpCondition).DeepCopyInto(out.(*CarpCondition))
- return nil
- }, InType: reflect.TypeOf(&CarpCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CarpList).DeepCopyInto(out.(*CarpList))
- return nil
- }, InType: reflect.TypeOf(&CarpList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CarpSpec).DeepCopyInto(out.(*CarpSpec))
- return nil
- }, InType: reflect.TypeOf(&CarpSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*CarpStatus).DeepCopyInto(out.(*CarpStatus))
- return nil
- }, InType: reflect.TypeOf(&CarpStatus{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Carp) DeepCopyInto(out *Carp) {
*out = *in
diff --git a/staging/src/k8s.io/apimachinery/pkg/conversion/BUILD b/staging/src/k8s.io/apimachinery/pkg/conversion/BUILD
index 7e100d4fa4..72add7598f 100644
--- a/staging/src/k8s.io/apimachinery/pkg/conversion/BUILD
+++ b/staging/src/k8s.io/apimachinery/pkg/conversion/BUILD
@@ -10,7 +10,6 @@ go_test(
name = "go_default_test",
srcs = [
"converter_test.go",
- "deep_copy_test.go",
"helper_test.go",
],
importpath = "k8s.io/apimachinery/pkg/conversion",
@@ -25,7 +24,6 @@ go_test(
go_library(
name = "go_default_library",
srcs = [
- "cloner.go",
"converter.go",
"deep_equal.go",
"doc.go",
diff --git a/staging/src/k8s.io/apimachinery/pkg/conversion/cloner.go b/staging/src/k8s.io/apimachinery/pkg/conversion/cloner.go
deleted file mode 100644
index c5dec1f31e..0000000000
--- a/staging/src/k8s.io/apimachinery/pkg/conversion/cloner.go
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
-Copyright 2014 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 conversion
-
-import (
- "fmt"
- "reflect"
-)
-
-// Cloner knows how to copy one type to another.
-type Cloner struct {
- // Map from the type to a function which can do the deep copy.
- deepCopyFuncs map[reflect.Type]reflect.Value
- generatedDeepCopyFuncs map[reflect.Type]func(in interface{}, out interface{}, c *Cloner) error
-}
-
-// NewCloner creates a new Cloner object.
-func NewCloner() *Cloner {
- c := &Cloner{
- deepCopyFuncs: map[reflect.Type]reflect.Value{},
- generatedDeepCopyFuncs: map[reflect.Type]func(in interface{}, out interface{}, c *Cloner) error{},
- }
- if err := c.RegisterDeepCopyFunc(byteSliceDeepCopy); err != nil {
- // If one of the deep-copy functions is malformed, detect it immediately.
- panic(err)
- }
- return c
-}
-
-// Prevent recursing into every byte...
-func byteSliceDeepCopy(in *[]byte, out *[]byte, c *Cloner) error {
- if *in != nil {
- *out = make([]byte, len(*in))
- copy(*out, *in)
- } else {
- *out = nil
- }
- return nil
-}
-
-// Verifies whether a deep-copy function has a correct signature.
-func verifyDeepCopyFunctionSignature(ft reflect.Type) error {
- if ft.Kind() != reflect.Func {
- return fmt.Errorf("expected func, got: %v", ft)
- }
- if ft.NumIn() != 3 {
- return fmt.Errorf("expected three 'in' params, got %v", ft)
- }
- if ft.NumOut() != 1 {
- return fmt.Errorf("expected one 'out' param, got %v", ft)
- }
- if ft.In(0).Kind() != reflect.Ptr {
- return fmt.Errorf("expected pointer arg for 'in' param 0, got: %v", ft)
- }
- if ft.In(1) != ft.In(0) {
- return fmt.Errorf("expected 'in' param 0 the same as param 1, got: %v", ft)
- }
- var forClonerType Cloner
- if expected := reflect.TypeOf(&forClonerType); ft.In(2) != expected {
- return fmt.Errorf("expected '%v' arg for 'in' param 2, got: '%v'", expected, ft.In(2))
- }
- var forErrorType error
- // This convolution is necessary, otherwise TypeOf picks up on the fact
- // that forErrorType is nil
- errorType := reflect.TypeOf(&forErrorType).Elem()
- if ft.Out(0) != errorType {
- return fmt.Errorf("expected error return, got: %v", ft)
- }
- return nil
-}
-
-// RegisterGeneratedDeepCopyFunc registers a copying func with the Cloner.
-// deepCopyFunc must take three parameters: a type input, a pointer to a
-// type output, and a pointer to Cloner. It should return an error.
-//
-// Example:
-// c.RegisterGeneratedDeepCopyFunc(
-// func(in Pod, out *Pod, c *Cloner) error {
-// // deep copy logic...
-// return nil
-// })
-func (c *Cloner) RegisterDeepCopyFunc(deepCopyFunc interface{}) error {
- fv := reflect.ValueOf(deepCopyFunc)
- ft := fv.Type()
- if err := verifyDeepCopyFunctionSignature(ft); err != nil {
- return err
- }
- c.deepCopyFuncs[ft.In(0)] = fv
- return nil
-}
-
-// GeneratedDeepCopyFunc bundles an untyped generated deep-copy function of a type
-// with a reflection type object used as a key to lookup the deep-copy function.
-type GeneratedDeepCopyFunc struct {
- Fn func(in interface{}, out interface{}, c *Cloner) error
- InType reflect.Type
-}
-
-// Similar to RegisterDeepCopyFunc, but registers deep copy function that were
-// automatically generated.
-func (c *Cloner) RegisterGeneratedDeepCopyFunc(fn GeneratedDeepCopyFunc) error {
- c.generatedDeepCopyFuncs[fn.InType] = fn.Fn
- return nil
-}
-
-// DeepCopy will perform a deep copy of a given object.
-func (c *Cloner) DeepCopy(in interface{}) (interface{}, error) {
- // Can be invalid if we run DeepCopy(X) where X is a nil interface type.
- // For example, we get an invalid value when someone tries to deep-copy
- // a nil labels.Selector.
- // This does not occur if X is nil and is a pointer to a concrete type.
- if in == nil {
- return nil, nil
- }
- inValue := reflect.ValueOf(in)
- outValue, err := c.deepCopy(inValue)
- if err != nil {
- return nil, err
- }
- return outValue.Interface(), nil
-}
-
-func (c *Cloner) deepCopy(src reflect.Value) (reflect.Value, error) {
- inType := src.Type()
-
- switch src.Kind() {
- case reflect.Interface, reflect.Ptr, reflect.Map, reflect.Slice:
- if src.IsNil() {
- return src, nil
- }
- }
-
- if fv, ok := c.deepCopyFuncs[inType]; ok {
- return c.customDeepCopy(src, fv)
- }
- if fv, ok := c.generatedDeepCopyFuncs[inType]; ok {
- var outValue reflect.Value
- outValue = reflect.New(inType.Elem())
- err := fv(src.Interface(), outValue.Interface(), c)
- return outValue, err
- }
- return c.defaultDeepCopy(src)
-}
-
-func (c *Cloner) customDeepCopy(src, fv reflect.Value) (reflect.Value, error) {
- outValue := reflect.New(src.Type().Elem())
- args := []reflect.Value{src, outValue, reflect.ValueOf(c)}
- result := fv.Call(args)[0].Interface()
- // This convolution is necessary because nil interfaces won't convert
- // to error.
- if result == nil {
- return outValue, nil
- }
- return outValue, result.(error)
-}
-
-func (c *Cloner) defaultDeepCopy(src reflect.Value) (reflect.Value, error) {
- switch src.Kind() {
- case reflect.Chan, reflect.Func, reflect.UnsafePointer, reflect.Uintptr:
- return src, fmt.Errorf("cannot deep copy kind: %s", src.Kind())
- case reflect.Array:
- dst := reflect.New(src.Type())
- for i := 0; i < src.Len(); i++ {
- copyVal, err := c.deepCopy(src.Index(i))
- if err != nil {
- return src, err
- }
- dst.Elem().Index(i).Set(copyVal)
- }
- return dst.Elem(), nil
- case reflect.Interface:
- if src.IsNil() {
- return src, nil
- }
- return c.deepCopy(src.Elem())
- case reflect.Map:
- if src.IsNil() {
- return src, nil
- }
- dst := reflect.MakeMap(src.Type())
- for _, k := range src.MapKeys() {
- copyVal, err := c.deepCopy(src.MapIndex(k))
- if err != nil {
- return src, err
- }
- dst.SetMapIndex(k, copyVal)
- }
- return dst, nil
- case reflect.Ptr:
- if src.IsNil() {
- return src, nil
- }
- dst := reflect.New(src.Type().Elem())
- copyVal, err := c.deepCopy(src.Elem())
- if err != nil {
- return src, err
- }
- dst.Elem().Set(copyVal)
- return dst, nil
- case reflect.Slice:
- if src.IsNil() {
- return src, nil
- }
- dst := reflect.MakeSlice(src.Type(), 0, src.Len())
- for i := 0; i < src.Len(); i++ {
- copyVal, err := c.deepCopy(src.Index(i))
- if err != nil {
- return src, err
- }
- dst = reflect.Append(dst, copyVal)
- }
- return dst, nil
- case reflect.Struct:
- dst := reflect.New(src.Type())
- for i := 0; i < src.NumField(); i++ {
- if !dst.Elem().Field(i).CanSet() {
- // Can't set private fields. At this point, the
- // best we can do is a shallow copy. For
- // example, time.Time is a value type with
- // private members that can be shallow copied.
- return src, nil
- }
- copyVal, err := c.deepCopy(src.Field(i))
- if err != nil {
- return src, err
- }
- dst.Elem().Field(i).Set(copyVal)
- }
- return dst.Elem(), nil
-
- default:
- // Value types like numbers, booleans, and strings.
- return src, nil
- }
-}
diff --git a/staging/src/k8s.io/apimachinery/pkg/conversion/deep_copy_test.go b/staging/src/k8s.io/apimachinery/pkg/conversion/deep_copy_test.go
deleted file mode 100644
index fdef856f29..0000000000
--- a/staging/src/k8s.io/apimachinery/pkg/conversion/deep_copy_test.go
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
-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 conversion
-
-import (
- "math/rand"
- "reflect"
- "testing"
-
- "github.com/google/gofuzz"
-)
-
-func TestDeepCopy(t *testing.T) {
- semantic := EqualitiesOrDie()
- f := fuzz.New().NilChance(.5).NumElements(0, 100)
- table := []interface{}{
- map[string]string{},
- int(5),
- "hello world",
- struct {
- A, B, C struct {
- D map[string]int
- }
- X []int
- Y []byte
- }{},
- }
- for _, obj := range table {
- obj2, err := NewCloner().DeepCopy(obj)
- if err != nil {
- t.Errorf("Error: couldn't copy %#v", obj)
- continue
- }
- if e, a := obj, obj2; !semantic.DeepEqual(e, a) {
- t.Errorf("expected %#v\ngot %#v", e, a)
- }
-
- obj3 := reflect.New(reflect.TypeOf(obj)).Interface()
- f.Fuzz(obj3)
- obj4, err := NewCloner().DeepCopy(obj3)
- if err != nil {
- t.Errorf("Error: couldn't copy %#v", obj)
- continue
- }
- if e, a := obj3, obj4; !semantic.DeepEqual(e, a) {
- t.Errorf("expected %#v\ngot %#v", e, a)
- }
- f.Fuzz(obj3)
- }
-}
-
-func copyOrDie(t *testing.T, in interface{}) interface{} {
- out, err := NewCloner().DeepCopy(in)
- if err != nil {
- t.Fatalf("DeepCopy failed: %#q: %v", in, err)
- }
- return out
-}
-
-func TestDeepCopySliceSeparate(t *testing.T) {
- x := []int{5}
- y := copyOrDie(t, x).([]int)
- x[0] = 3
- if y[0] == 3 {
- t.Errorf("deep copy wasn't deep: %#q %#q", x, y)
- }
-}
-
-func TestDeepCopyArraySeparate(t *testing.T) {
- x := [1]int{5}
- y := copyOrDie(t, x).([1]int)
- x[0] = 3
- if y[0] == 3 {
- t.Errorf("deep copy wasn't deep: %#q %#q", x, y)
- }
-}
-
-func TestDeepCopyMapSeparate(t *testing.T) {
- x := map[string]int{"foo": 5}
- y := copyOrDie(t, x).(map[string]int)
- x["foo"] = 3
- if y["foo"] == 3 {
- t.Errorf("deep copy wasn't deep: %#q %#q", x, y)
- }
-}
-
-func TestDeepCopyPointerSeparate(t *testing.T) {
- z := 5
- x := &z
- y := copyOrDie(t, x).(*int)
- *x = 3
- if *y == 3 {
- t.Errorf("deep copy wasn't deep: %#q %#q", x, y)
- }
-}
-
-func TestDeepCopyStruct(t *testing.T) {
- type Foo struct {
- A int
- }
- type Bar struct {
- Foo
- F *Foo
- }
- a := &Bar{Foo{1}, &Foo{2}}
- b := copyOrDie(t, a).(*Bar)
- a.A = 3
- a.F.A = 4
-
- if b.A != 1 || b.F.A != 2 {
- t.Errorf("deep copy wasn't deep: %#v, %#v", a, b)
- }
-}
-
-var result interface{}
-
-func BenchmarkDeepCopy(b *testing.B) {
- table := []interface{}{
- map[string]string{},
- int(5),
- "hello world",
- struct {
- A, B, C struct {
- D map[string]int
- }
- X []int
- Y []byte
- }{},
- }
-
- f := fuzz.New().RandSource(rand.NewSource(1)).NilChance(.5).NumElements(0, 100)
- for i := range table {
- out := table[i]
- obj := reflect.New(reflect.TypeOf(out)).Interface()
- f.Fuzz(obj)
- table[i] = obj
- }
-
- b.ResetTimer()
- var r interface{}
- for i := 0; i < b.N; i++ {
- for j := range table {
- r, _ = NewCloner().DeepCopy(table[j])
- }
- }
- result = r
-}
diff --git a/staging/src/k8s.io/apimachinery/pkg/labels/BUILD b/staging/src/k8s.io/apimachinery/pkg/labels/BUILD
index 3612719d3b..fba6648e00 100644
--- a/staging/src/k8s.io/apimachinery/pkg/labels/BUILD
+++ b/staging/src/k8s.io/apimachinery/pkg/labels/BUILD
@@ -31,7 +31,6 @@ go_library(
importpath = "k8s.io/apimachinery/pkg/labels",
deps = [
"//vendor/github.com/golang/glog:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/selection:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library",
diff --git a/staging/src/k8s.io/apimachinery/pkg/labels/zz_generated.deepcopy.go b/staging/src/k8s.io/apimachinery/pkg/labels/zz_generated.deepcopy.go
index 80ba3fb751..823ef32a34 100644
--- a/staging/src/k8s.io/apimachinery/pkg/labels/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/apimachinery/pkg/labels/zz_generated.deepcopy.go
@@ -20,23 +20,6 @@ limitations under the License.
package labels
-import (
- conversion "k8s.io/apimachinery/pkg/conversion"
- reflect "reflect"
-)
-
-// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc {
- return []conversion.GeneratedDeepCopyFunc{
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Requirement).DeepCopyInto(out.(*Requirement))
- return nil
- }, InType: reflect.TypeOf(&Requirement{})},
- }
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Requirement) DeepCopyInto(out *Requirement) {
*out = *in
diff --git a/staging/src/k8s.io/apimachinery/pkg/runtime/error.go b/staging/src/k8s.io/apimachinery/pkg/runtime/error.go
index 21a3557077..86b24840f0 100644
--- a/staging/src/k8s.io/apimachinery/pkg/runtime/error.go
+++ b/staging/src/k8s.io/apimachinery/pkg/runtime/error.go
@@ -94,8 +94,6 @@ type missingVersionErr struct {
data string
}
-// IsMissingVersion returns true if the error indicates that the provided object
-// is missing a 'Version' field.
func NewMissingVersionErr(data string) error {
return &missingVersionErr{data}
}
@@ -104,6 +102,8 @@ func (k *missingVersionErr) Error() string {
return fmt.Sprintf("Object 'apiVersion' is missing in '%s'", k.data)
}
+// IsMissingVersion returns true if the error indicates that the provided object
+// is missing a 'Version' field.
func IsMissingVersion(err error) bool {
if err == nil {
return false
diff --git a/staging/src/k8s.io/apimachinery/pkg/runtime/scheme.go b/staging/src/k8s.io/apimachinery/pkg/runtime/scheme.go
index c597fcf99f..3be721ca9f 100644
--- a/staging/src/k8s.io/apimachinery/pkg/runtime/scheme.go
+++ b/staging/src/k8s.io/apimachinery/pkg/runtime/scheme.go
@@ -68,10 +68,6 @@ type Scheme struct {
// converter stores all registered conversion functions. It also has
// default coverting behavior.
converter *conversion.Converter
-
- // cloner stores all registered copy functions. It also has default
- // deep copy behavior.
- cloner *conversion.Cloner
}
// Function to convert a field selector to internal representation.
@@ -80,11 +76,10 @@ type FieldLabelConversionFunc func(label, value string) (internalLabel, internal
// NewScheme creates a new Scheme. This scheme is pluggable by default.
func NewScheme() *Scheme {
s := &Scheme{
- gvkToType: map[schema.GroupVersionKind]reflect.Type{},
- typeToGVK: map[reflect.Type][]schema.GroupVersionKind{},
- unversionedTypes: map[reflect.Type]schema.GroupVersionKind{},
- unversionedKinds: map[string]reflect.Type{},
- cloner: conversion.NewCloner(),
+ gvkToType: map[schema.GroupVersionKind]reflect.Type{},
+ typeToGVK: map[reflect.Type][]schema.GroupVersionKind{},
+ unversionedTypes: map[reflect.Type]schema.GroupVersionKind{},
+ unversionedKinds: map[string]reflect.Type{},
fieldLabelConversionFuncs: map[string]map[string]FieldLabelConversionFunc{},
defaulterFuncs: map[reflect.Type]func(interface{}){},
}
@@ -354,29 +349,6 @@ func (s *Scheme) AddGeneratedConversionFuncs(conversionFuncs ...interface{}) err
return nil
}
-// AddDeepCopyFuncs adds a function to the list of deep-copy functions.
-// For the expected format of deep-copy function, see the comment for
-// Copier.RegisterDeepCopyFunction.
-func (s *Scheme) AddDeepCopyFuncs(deepCopyFuncs ...interface{}) error {
- for _, f := range deepCopyFuncs {
- if err := s.cloner.RegisterDeepCopyFunc(f); err != nil {
- return err
- }
- }
- return nil
-}
-
-// Similar to AddDeepCopyFuncs, but registers deep-copy functions that were
-// automatically generated.
-func (s *Scheme) AddGeneratedDeepCopyFuncs(deepCopyFuncs ...conversion.GeneratedDeepCopyFunc) error {
- for _, fn := range deepCopyFuncs {
- if err := s.cloner.RegisterGeneratedDeepCopyFunc(fn); err != nil {
- return err
- }
- }
- return nil
-}
-
// AddFieldLabelConversionFunc adds a conversion function to convert field selectors
// of the given kind from the given version to internal version representation.
func (s *Scheme) AddFieldLabelConversionFunc(version, kind string, conversionFunc FieldLabelConversionFunc) error {
diff --git a/staging/src/k8s.io/apimachinery/pkg/runtime/serializer/testing/BUILD b/staging/src/k8s.io/apimachinery/pkg/runtime/serializer/testing/BUILD
index fce9bea295..fbc00c7ca4 100644
--- a/staging/src/k8s.io/apimachinery/pkg/runtime/serializer/testing/BUILD
+++ b/staging/src/k8s.io/apimachinery/pkg/runtime/serializer/testing/BUILD
@@ -14,7 +14,6 @@ go_library(
],
importpath = "k8s.io/apimachinery/pkg/runtime/serializer/testing",
deps = [
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/apimachinery/pkg/runtime/serializer/testing/zz_generated.deepcopy.go b/staging/src/k8s.io/apimachinery/pkg/runtime/serializer/testing/zz_generated.deepcopy.go
index 2a71e4b5f1..1385a8c569 100644
--- a/staging/src/k8s.io/apimachinery/pkg/runtime/serializer/testing/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/apimachinery/pkg/runtime/serializer/testing/zz_generated.deepcopy.go
@@ -21,39 +21,9 @@ limitations under the License.
package testing
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc {
- return []conversion.GeneratedDeepCopyFunc{
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExternalInternalSame).DeepCopyInto(out.(*ExternalInternalSame))
- return nil
- }, InType: reflect.TypeOf(&ExternalInternalSame{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExternalTestType1).DeepCopyInto(out.(*ExternalTestType1))
- return nil
- }, InType: reflect.TypeOf(&ExternalTestType1{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExternalTestType2).DeepCopyInto(out.(*ExternalTestType2))
- return nil
- }, InType: reflect.TypeOf(&ExternalTestType2{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TestType1).DeepCopyInto(out.(*TestType1))
- return nil
- }, InType: reflect.TypeOf(&TestType1{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TestType2).DeepCopyInto(out.(*TestType2))
- return nil
- }, InType: reflect.TypeOf(&TestType2{})},
- }
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ExternalInternalSame) DeepCopyInto(out *ExternalInternalSame) {
*out = *in
diff --git a/staging/src/k8s.io/apimachinery/pkg/runtime/testing/BUILD b/staging/src/k8s.io/apimachinery/pkg/runtime/testing/BUILD
index f3fbe2e9aa..a03585c862 100644
--- a/staging/src/k8s.io/apimachinery/pkg/runtime/testing/BUILD
+++ b/staging/src/k8s.io/apimachinery/pkg/runtime/testing/BUILD
@@ -14,7 +14,6 @@ go_library(
],
importpath = "k8s.io/apimachinery/pkg/runtime/testing",
deps = [
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/apimachinery/pkg/runtime/testing/zz_generated.deepcopy.go b/staging/src/k8s.io/apimachinery/pkg/runtime/testing/zz_generated.deepcopy.go
index 8cacbc8b42..569903b51e 100644
--- a/staging/src/k8s.io/apimachinery/pkg/runtime/testing/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/apimachinery/pkg/runtime/testing/zz_generated.deepcopy.go
@@ -21,103 +21,9 @@ limitations under the License.
package testing
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc {
- return []conversion.GeneratedDeepCopyFunc{
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*EmbeddedTest).DeepCopyInto(out.(*EmbeddedTest))
- return nil
- }, InType: reflect.TypeOf(&EmbeddedTest{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*EmbeddedTestExternal).DeepCopyInto(out.(*EmbeddedTestExternal))
- return nil
- }, InType: reflect.TypeOf(&EmbeddedTestExternal{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExtensionA).DeepCopyInto(out.(*ExtensionA))
- return nil
- }, InType: reflect.TypeOf(&ExtensionA{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExtensionB).DeepCopyInto(out.(*ExtensionB))
- return nil
- }, InType: reflect.TypeOf(&ExtensionB{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExternalComplex).DeepCopyInto(out.(*ExternalComplex))
- return nil
- }, InType: reflect.TypeOf(&ExternalComplex{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExternalExtensionType).DeepCopyInto(out.(*ExternalExtensionType))
- return nil
- }, InType: reflect.TypeOf(&ExternalExtensionType{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExternalInternalSame).DeepCopyInto(out.(*ExternalInternalSame))
- return nil
- }, InType: reflect.TypeOf(&ExternalInternalSame{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExternalOptionalExtensionType).DeepCopyInto(out.(*ExternalOptionalExtensionType))
- return nil
- }, InType: reflect.TypeOf(&ExternalOptionalExtensionType{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExternalSimple).DeepCopyInto(out.(*ExternalSimple))
- return nil
- }, InType: reflect.TypeOf(&ExternalSimple{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExternalTestType1).DeepCopyInto(out.(*ExternalTestType1))
- return nil
- }, InType: reflect.TypeOf(&ExternalTestType1{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ExternalTestType2).DeepCopyInto(out.(*ExternalTestType2))
- return nil
- }, InType: reflect.TypeOf(&ExternalTestType2{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*InternalComplex).DeepCopyInto(out.(*InternalComplex))
- return nil
- }, InType: reflect.TypeOf(&InternalComplex{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*InternalExtensionType).DeepCopyInto(out.(*InternalExtensionType))
- return nil
- }, InType: reflect.TypeOf(&InternalExtensionType{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*InternalOptionalExtensionType).DeepCopyInto(out.(*InternalOptionalExtensionType))
- return nil
- }, InType: reflect.TypeOf(&InternalOptionalExtensionType{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*InternalSimple).DeepCopyInto(out.(*InternalSimple))
- return nil
- }, InType: reflect.TypeOf(&InternalSimple{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ObjectTest).DeepCopyInto(out.(*ObjectTest))
- return nil
- }, InType: reflect.TypeOf(&ObjectTest{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ObjectTestExternal).DeepCopyInto(out.(*ObjectTestExternal))
- return nil
- }, InType: reflect.TypeOf(&ObjectTestExternal{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TestType1).DeepCopyInto(out.(*TestType1))
- return nil
- }, InType: reflect.TypeOf(&TestType1{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TestType2).DeepCopyInto(out.(*TestType2))
- return nil
- }, InType: reflect.TypeOf(&TestType2{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*UnknownType).DeepCopyInto(out.(*UnknownType))
- return nil
- }, InType: reflect.TypeOf(&UnknownType{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*UnversionedType).DeepCopyInto(out.(*UnversionedType))
- return nil
- }, InType: reflect.TypeOf(&UnversionedType{})},
- }
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *EmbeddedTest) DeepCopyInto(out *EmbeddedTest) {
*out = *in
diff --git a/staging/src/k8s.io/apimachinery/pkg/runtime/zz_generated.deepcopy.go b/staging/src/k8s.io/apimachinery/pkg/runtime/zz_generated.deepcopy.go
index d347461ac6..929c67a9d1 100644
--- a/staging/src/k8s.io/apimachinery/pkg/runtime/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/apimachinery/pkg/runtime/zz_generated.deepcopy.go
@@ -20,31 +20,6 @@ limitations under the License.
package runtime
-import (
- conversion "k8s.io/apimachinery/pkg/conversion"
- reflect "reflect"
-)
-
-// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc {
- return []conversion.GeneratedDeepCopyFunc{
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*RawExtension).DeepCopyInto(out.(*RawExtension))
- return nil
- }, InType: reflect.TypeOf(&RawExtension{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Unknown).DeepCopyInto(out.(*Unknown))
- return nil
- }, InType: reflect.TypeOf(&Unknown{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*VersionedObjects).DeepCopyInto(out.(*VersionedObjects))
- return nil
- }, InType: reflect.TypeOf(&VersionedObjects{})},
- }
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *RawExtension) DeepCopyInto(out *RawExtension) {
*out = *in
diff --git a/staging/src/k8s.io/apimachinery/pkg/test/BUILD b/staging/src/k8s.io/apimachinery/pkg/test/BUILD
index 314f8c9d6d..4af395d3ce 100644
--- a/staging/src/k8s.io/apimachinery/pkg/test/BUILD
+++ b/staging/src/k8s.io/apimachinery/pkg/test/BUILD
@@ -46,7 +46,6 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/testapigroup:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
diff --git a/staging/src/k8s.io/apimachinery/pkg/test/zz_generated.deepcopy.go b/staging/src/k8s.io/apimachinery/pkg/test/zz_generated.deepcopy.go
index c258ff7dd7..30cf84983b 100644
--- a/staging/src/k8s.io/apimachinery/pkg/test/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/apimachinery/pkg/test/zz_generated.deepcopy.go
@@ -21,27 +21,9 @@ limitations under the License.
package test
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc {
- return []conversion.GeneratedDeepCopyFunc{
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*List).DeepCopyInto(out.(*List))
- return nil
- }, InType: reflect.TypeOf(&List{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ListV1).DeepCopyInto(out.(*ListV1))
- return nil
- }, InType: reflect.TypeOf(&ListV1{})},
- }
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *List) DeepCopyInto(out *List) {
*out = *in
diff --git a/staging/src/k8s.io/apimachinery/pkg/util/waitgroup/BUILD b/staging/src/k8s.io/apimachinery/pkg/util/waitgroup/BUILD
new file mode 100644
index 0000000000..a35c520103
--- /dev/null
+++ b/staging/src/k8s.io/apimachinery/pkg/util/waitgroup/BUILD
@@ -0,0 +1,32 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
+
+go_library(
+ name = "go_default_library",
+ srcs = [
+ "doc.go",
+ "waitgroup.go",
+ ],
+ importpath = "k8s.io/apimachinery/pkg/util/waitgroup",
+ visibility = ["//visibility:public"],
+)
+
+go_test(
+ name = "go_default_test",
+ srcs = ["waitgroup_test.go"],
+ importpath = "k8s.io/apimachinery/pkg/util/waitgroup",
+ library = ":go_default_library",
+)
+
+filegroup(
+ name = "package-srcs",
+ srcs = glob(["**"]),
+ tags = ["automanaged"],
+ visibility = ["//visibility:private"],
+)
+
+filegroup(
+ name = "all-srcs",
+ srcs = [":package-srcs"],
+ tags = ["automanaged"],
+ visibility = ["//visibility:public"],
+)
diff --git a/staging/src/k8s.io/apimachinery/pkg/util/waitgroup/doc.go b/staging/src/k8s.io/apimachinery/pkg/util/waitgroup/doc.go
new file mode 100644
index 0000000000..a6f29cd7c4
--- /dev/null
+++ b/staging/src/k8s.io/apimachinery/pkg/util/waitgroup/doc.go
@@ -0,0 +1,19 @@
+/*
+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 waitgroup implements SafeWaitGroup wrap of sync.WaitGroup.
+// Add with positive delta when waiting will fail, to prevent sync.WaitGroup race issue.
+package waitgroup // import "k8s.io/apimachinery/pkg/util/waitgroup"
diff --git a/staging/src/k8s.io/apimachinery/pkg/util/waitgroup/waitgroup.go b/staging/src/k8s.io/apimachinery/pkg/util/waitgroup/waitgroup.go
new file mode 100644
index 0000000000..488f563407
--- /dev/null
+++ b/staging/src/k8s.io/apimachinery/pkg/util/waitgroup/waitgroup.go
@@ -0,0 +1,57 @@
+/*
+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 waitgroup
+
+import (
+ "fmt"
+ "sync"
+)
+
+// SafeWaitGroup must not be copied after first use.
+type SafeWaitGroup struct {
+ wg sync.WaitGroup
+ mu sync.RWMutex
+ // wait indicate whether Wait is called, if true,
+ // then any Add with positive delta will return error.
+ wait bool
+}
+
+// Add adds delta, which may be negative, similar to sync.WaitGroup.
+// If Add with a positive delta happens after Wait, it will return error,
+// which prevent unsafe Add.
+func (wg *SafeWaitGroup) Add(delta int) error {
+ wg.mu.RLock()
+ defer wg.mu.RUnlock()
+ if wg.wait && delta > 0 {
+ return fmt.Errorf("add with postive delta after Wait is forbidden")
+ }
+ wg.wg.Add(delta)
+ return nil
+}
+
+// Done decrements the WaitGroup counter.
+func (wg *SafeWaitGroup) Done() {
+ wg.wg.Done()
+}
+
+// Wait blocks until the WaitGroup counter is zero.
+func (wg *SafeWaitGroup) Wait() {
+ wg.mu.Lock()
+ wg.wait = true
+ wg.mu.Unlock()
+ wg.wg.Wait()
+}
diff --git a/staging/src/k8s.io/apimachinery/pkg/util/waitgroup/waitgroup_test.go b/staging/src/k8s.io/apimachinery/pkg/util/waitgroup/waitgroup_test.go
new file mode 100644
index 0000000000..b5b7557b85
--- /dev/null
+++ b/staging/src/k8s.io/apimachinery/pkg/util/waitgroup/waitgroup_test.go
@@ -0,0 +1,60 @@
+/*
+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 waitgroup test cases reference golang sync.WaitGroup https://golang.org/src/sync/waitgroup_test.go.
+package waitgroup
+
+import (
+ "testing"
+)
+
+func TestWaitGroup(t *testing.T) {
+ wg1 := &SafeWaitGroup{}
+ wg2 := &SafeWaitGroup{}
+ n := 16
+ wg1.Add(n)
+ wg2.Add(n)
+ exited := make(chan bool, n)
+ for i := 0; i != n; i++ {
+ go func(i int) {
+ wg1.Done()
+ wg2.Wait()
+ exited <- true
+ }(i)
+ }
+ wg1.Wait()
+ for i := 0; i != n; i++ {
+ select {
+ case <-exited:
+ t.Fatal("SafeWaitGroup released group too soon")
+ default:
+ }
+ wg2.Done()
+ }
+ for i := 0; i != n; i++ {
+ <-exited // Will block if barrier fails to unlock someone.
+ }
+}
+
+func TestWaitGroupAddFail(t *testing.T) {
+ wg := &SafeWaitGroup{}
+ wg.Add(1)
+ wg.Done()
+ wg.Wait()
+ if err := wg.Add(1); err == nil {
+ t.Errorf("Should return error when add positive after Wait")
+ }
+}
diff --git a/staging/src/k8s.io/apimachinery/pkg/watch/BUILD b/staging/src/k8s.io/apimachinery/pkg/watch/BUILD
index da068f70d4..3e850d2dda 100644
--- a/staging/src/k8s.io/apimachinery/pkg/watch/BUILD
+++ b/staging/src/k8s.io/apimachinery/pkg/watch/BUILD
@@ -20,7 +20,6 @@ go_library(
importpath = "k8s.io/apimachinery/pkg/watch",
deps = [
"//vendor/github.com/golang/glog:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library",
diff --git a/staging/src/k8s.io/apimachinery/pkg/watch/zz_generated.deepcopy.go b/staging/src/k8s.io/apimachinery/pkg/watch/zz_generated.deepcopy.go
index 322923d4a0..ab590e1353 100644
--- a/staging/src/k8s.io/apimachinery/pkg/watch/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/apimachinery/pkg/watch/zz_generated.deepcopy.go
@@ -20,23 +20,6 @@ limitations under the License.
package watch
-import (
- conversion "k8s.io/apimachinery/pkg/conversion"
- reflect "reflect"
-)
-
-// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc {
- return []conversion.GeneratedDeepCopyFunc{
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Event).DeepCopyInto(out.(*Event))
- return nil
- }, InType: reflect.TypeOf(&Event{})},
- }
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Event) DeepCopyInto(out *Event) {
*out = *in
diff --git a/staging/src/k8s.io/apiserver/Godeps/Godeps.json b/staging/src/k8s.io/apiserver/Godeps/Godeps.json
index 958a270bc0..90a1cb3fb2 100644
--- a/staging/src/k8s.io/apiserver/Godeps/Godeps.json
+++ b/staging/src/k8s.io/apiserver/Godeps/Godeps.json
@@ -1078,6 +1078,10 @@
"ImportPath": "k8s.io/apimachinery/pkg/util/wait",
"Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
+ {
+ "ImportPath": "k8s.io/apimachinery/pkg/util/waitgroup",
+ "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ },
{
"ImportPath": "k8s.io/apimachinery/pkg/util/yaml",
"Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
diff --git a/staging/src/k8s.io/apiserver/pkg/admission/configuration/BUILD b/staging/src/k8s.io/apiserver/pkg/admission/configuration/BUILD
index d2cb75d9f9..5d1242a414 100644
--- a/staging/src/k8s.io/apiserver/pkg/admission/configuration/BUILD
+++ b/staging/src/k8s.io/apiserver/pkg/admission/configuration/BUILD
@@ -10,8 +10,9 @@ go_test(
name = "go_default_test",
srcs = [
"configuration_manager_test.go",
- "external_admission_hook_manager_test.go",
"initializer_manager_test.go",
+ "mutating_webhook_manager_test.go",
+ "validating_webhook_manager_test.go",
],
importpath = "k8s.io/apiserver/pkg/admission/configuration",
library = ":go_default_library",
@@ -29,8 +30,9 @@ go_library(
name = "go_default_library",
srcs = [
"configuration_manager.go",
- "external_admission_hook_manager.go",
"initializer_manager.go",
+ "mutating_webhook_manager.go",
+ "validating_webhook_manager.go",
],
importpath = "k8s.io/apiserver/pkg/admission/configuration",
deps = [
diff --git a/staging/src/k8s.io/apiserver/pkg/admission/configuration/external_admission_hook_manager.go b/staging/src/k8s.io/apiserver/pkg/admission/configuration/external_admission_hook_manager.go
deleted file mode 100644
index 024f5fae0b..0000000000
--- a/staging/src/k8s.io/apiserver/pkg/admission/configuration/external_admission_hook_manager.go
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
-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 configuration
-
-import (
- "fmt"
- "reflect"
-
- "github.com/golang/glog"
-
- "k8s.io/api/admissionregistration/v1alpha1"
- "k8s.io/apimachinery/pkg/api/errors"
- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/apimachinery/pkg/runtime"
-)
-
-type ExternalAdmissionHookConfigurationLister interface {
- List(opts metav1.ListOptions) (*v1alpha1.ExternalAdmissionHookConfigurationList, error)
-}
-
-type ExternalAdmissionHookConfigurationManager struct {
- *poller
-}
-
-func NewExternalAdmissionHookConfigurationManager(c ExternalAdmissionHookConfigurationLister) *ExternalAdmissionHookConfigurationManager {
- getFn := func() (runtime.Object, error) {
- list, err := c.List(metav1.ListOptions{})
- if err != nil {
- if errors.IsNotFound(err) || errors.IsForbidden(err) {
- glog.V(5).Infof("ExternalAdmissionHookConfiguration are disabled due to an error: %v", err)
- return nil, ErrDisabled
- }
- return nil, err
- }
- return mergeExternalAdmissionHookConfigurations(list), nil
- }
-
- return &ExternalAdmissionHookConfigurationManager{
- newPoller(getFn),
- }
-}
-
-// ExternalAdmissionHooks returns the merged ExternalAdmissionHookConfiguration.
-func (im *ExternalAdmissionHookConfigurationManager) ExternalAdmissionHooks() (*v1alpha1.ExternalAdmissionHookConfiguration, error) {
- configuration, err := im.poller.configuration()
- if err != nil {
- return nil, err
- }
- externalAdmissionHookConfiguration, ok := configuration.(*v1alpha1.ExternalAdmissionHookConfiguration)
- if !ok {
- return nil, fmt.Errorf("expected type %v, got type %v", reflect.TypeOf(externalAdmissionHookConfiguration), reflect.TypeOf(configuration))
- }
- return externalAdmissionHookConfiguration, nil
-}
-
-func (im *ExternalAdmissionHookConfigurationManager) Run(stopCh <-chan struct{}) {
- im.poller.Run(stopCh)
-}
-
-func mergeExternalAdmissionHookConfigurations(
- list *v1alpha1.ExternalAdmissionHookConfigurationList,
-) *v1alpha1.ExternalAdmissionHookConfiguration {
- configurations := list.Items
- var ret v1alpha1.ExternalAdmissionHookConfiguration
- for _, c := range configurations {
- ret.ExternalAdmissionHooks = append(ret.ExternalAdmissionHooks, c.ExternalAdmissionHooks...)
- }
- return &ret
-}
diff --git a/staging/src/k8s.io/apiserver/pkg/admission/configuration/mutating_webhook_manager.go b/staging/src/k8s.io/apiserver/pkg/admission/configuration/mutating_webhook_manager.go
new file mode 100644
index 0000000000..0f5b7bd91c
--- /dev/null
+++ b/staging/src/k8s.io/apiserver/pkg/admission/configuration/mutating_webhook_manager.go
@@ -0,0 +1,101 @@
+/*
+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 configuration
+
+import (
+ "fmt"
+ "reflect"
+ "sort"
+
+ "github.com/golang/glog"
+
+ "k8s.io/api/admissionregistration/v1alpha1"
+ "k8s.io/apimachinery/pkg/api/errors"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apimachinery/pkg/runtime"
+)
+
+type MutatingWebhookConfigurationLister interface {
+ List(opts metav1.ListOptions) (*v1alpha1.MutatingWebhookConfigurationList, error)
+}
+
+// MutatingWebhookConfigurationManager collects the mutating webhook objects so that they can be called.
+type MutatingWebhookConfigurationManager struct {
+ *poller
+}
+
+func NewMutatingWebhookConfigurationManager(c MutatingWebhookConfigurationLister) *MutatingWebhookConfigurationManager {
+ getFn := func() (runtime.Object, error) {
+ list, err := c.List(metav1.ListOptions{})
+ if err != nil {
+ if errors.IsNotFound(err) || errors.IsForbidden(err) {
+ glog.V(5).Infof("MutatingWebhookConfiguration are disabled due to an error: %v", err)
+ return nil, ErrDisabled
+ }
+ return nil, err
+ }
+ return mergeMutatingWebhookConfigurations(list), nil
+ }
+
+ return &MutatingWebhookConfigurationManager{
+ newPoller(getFn),
+ }
+}
+
+// Webhooks returns the merged MutatingWebhookConfiguration.
+func (im *MutatingWebhookConfigurationManager) Webhooks() (*v1alpha1.MutatingWebhookConfiguration, error) {
+ configuration, err := im.poller.configuration()
+ if err != nil {
+ return nil, err
+ }
+ mutatingWebhookConfiguration, ok := configuration.(*v1alpha1.MutatingWebhookConfiguration)
+ if !ok {
+ return nil, fmt.Errorf("expected type %v, got type %v", reflect.TypeOf(mutatingWebhookConfiguration), reflect.TypeOf(configuration))
+ }
+ return mutatingWebhookConfiguration, nil
+}
+
+func (im *MutatingWebhookConfigurationManager) Run(stopCh <-chan struct{}) {
+ im.poller.Run(stopCh)
+}
+
+func mergeMutatingWebhookConfigurations(
+ list *v1alpha1.MutatingWebhookConfigurationList,
+) *v1alpha1.MutatingWebhookConfiguration {
+ configurations := append([]v1alpha1.MutatingWebhookConfiguration{}, list.Items...)
+ var ret v1alpha1.MutatingWebhookConfiguration
+ // The internal order of webhooks for each configuration is provided by the user
+ // but configurations themselves can be in any order. As we are going to run these
+ // webhooks in serial, they are sorted here to have a deterministic order.
+ sort.Sort(byName(configurations))
+ for _, c := range configurations {
+ ret.Webhooks = append(ret.Webhooks, c.Webhooks...)
+ }
+ return &ret
+}
+
+// byName sorts MutatingWebhookConfiguration by name. These objects are all in
+// cluster namespace (aka no namespace) thus they all have unique names.
+type byName []v1alpha1.MutatingWebhookConfiguration
+
+func (x byName) Len() int { return len(x) }
+
+func (x byName) Swap(i, j int) { x[i], x[j] = x[j], x[i] }
+
+func (x byName) Less(i, j int) bool {
+ return x[i].ObjectMeta.Name < x[j].ObjectMeta.Name
+}
diff --git a/staging/src/k8s.io/apiserver/pkg/admission/configuration/mutating_webhook_manager_test.go b/staging/src/k8s.io/apiserver/pkg/admission/configuration/mutating_webhook_manager_test.go
new file mode 100644
index 0000000000..1cbf2d0d13
--- /dev/null
+++ b/staging/src/k8s.io/apiserver/pkg/admission/configuration/mutating_webhook_manager_test.go
@@ -0,0 +1,40 @@
+/*
+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 configuration
+
+import (
+ "testing"
+
+ "k8s.io/api/admissionregistration/v1alpha1"
+ "k8s.io/apimachinery/pkg/api/errors"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apimachinery/pkg/runtime/schema"
+)
+
+type disabledMutatingWebhookConfigLister struct{}
+
+func (l *disabledMutatingWebhookConfigLister) List(options metav1.ListOptions) (*v1alpha1.MutatingWebhookConfigurationList, error) {
+ return nil, errors.NewNotFound(schema.GroupResource{Group: "admissionregistration", Resource: "MutatingWebhookConfigurations"}, "")
+}
+func TestMutatingWebhookConfigDisabled(t *testing.T) {
+ manager := NewMutatingWebhookConfigurationManager(&disabledMutatingWebhookConfigLister{})
+ manager.sync()
+ _, err := manager.Webhooks()
+ if err.Error() != ErrDisabled.Error() {
+ t.Errorf("expected %v, got %v", ErrDisabled, err)
+ }
+}
diff --git a/staging/src/k8s.io/apiserver/pkg/admission/configuration/validating_webhook_manager.go b/staging/src/k8s.io/apiserver/pkg/admission/configuration/validating_webhook_manager.go
new file mode 100644
index 0000000000..e3287ce4e5
--- /dev/null
+++ b/staging/src/k8s.io/apiserver/pkg/admission/configuration/validating_webhook_manager.go
@@ -0,0 +1,84 @@
+/*
+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 configuration
+
+import (
+ "fmt"
+ "reflect"
+
+ "github.com/golang/glog"
+
+ "k8s.io/api/admissionregistration/v1alpha1"
+ "k8s.io/apimachinery/pkg/api/errors"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apimachinery/pkg/runtime"
+)
+
+type ValidatingWebhookConfigurationLister interface {
+ List(opts metav1.ListOptions) (*v1alpha1.ValidatingWebhookConfigurationList, error)
+}
+
+// ValidatingWebhookConfigurationManager collects the validating webhook objects so that they can be called.
+type ValidatingWebhookConfigurationManager struct {
+ *poller
+}
+
+func NewValidatingWebhookConfigurationManager(c ValidatingWebhookConfigurationLister) *ValidatingWebhookConfigurationManager {
+ getFn := func() (runtime.Object, error) {
+ list, err := c.List(metav1.ListOptions{})
+ if err != nil {
+ if errors.IsNotFound(err) || errors.IsForbidden(err) {
+ glog.V(5).Infof("ValidatingWebhookConfiguration are disabled due to an error: %v", err)
+ return nil, ErrDisabled
+ }
+ return nil, err
+ }
+ return mergeValidatingWebhookConfigurations(list), nil
+ }
+
+ return &ValidatingWebhookConfigurationManager{
+ newPoller(getFn),
+ }
+}
+
+// Webhooks returns the merged ValidatingWebhookConfiguration.
+func (im *ValidatingWebhookConfigurationManager) Webhooks() (*v1alpha1.ValidatingWebhookConfiguration, error) {
+ configuration, err := im.poller.configuration()
+ if err != nil {
+ return nil, err
+ }
+ validatingWebhookConfiguration, ok := configuration.(*v1alpha1.ValidatingWebhookConfiguration)
+ if !ok {
+ return nil, fmt.Errorf("expected type %v, got type %v", reflect.TypeOf(validatingWebhookConfiguration), reflect.TypeOf(configuration))
+ }
+ return validatingWebhookConfiguration, nil
+}
+
+func (im *ValidatingWebhookConfigurationManager) Run(stopCh <-chan struct{}) {
+ im.poller.Run(stopCh)
+}
+
+func mergeValidatingWebhookConfigurations(
+ list *v1alpha1.ValidatingWebhookConfigurationList,
+) *v1alpha1.ValidatingWebhookConfiguration {
+ configurations := list.Items
+ var ret v1alpha1.ValidatingWebhookConfiguration
+ for _, c := range configurations {
+ ret.Webhooks = append(ret.Webhooks, c.Webhooks...)
+ }
+ return &ret
+}
diff --git a/staging/src/k8s.io/apiserver/pkg/admission/configuration/external_admission_hook_manager_test.go b/staging/src/k8s.io/apiserver/pkg/admission/configuration/validating_webhook_manager_test.go
similarity index 72%
rename from staging/src/k8s.io/apiserver/pkg/admission/configuration/external_admission_hook_manager_test.go
rename to staging/src/k8s.io/apiserver/pkg/admission/configuration/validating_webhook_manager_test.go
index 1b849b1d26..9467471500 100644
--- a/staging/src/k8s.io/apiserver/pkg/admission/configuration/external_admission_hook_manager_test.go
+++ b/staging/src/k8s.io/apiserver/pkg/admission/configuration/validating_webhook_manager_test.go
@@ -25,15 +25,15 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema"
)
-type disabledWebhookConfigLister struct{}
+type disabledValidatingWebhookConfigLister struct{}
-func (l *disabledWebhookConfigLister) List(options metav1.ListOptions) (*v1alpha1.ExternalAdmissionHookConfigurationList, error) {
- return nil, errors.NewNotFound(schema.GroupResource{Group: "admissionregistration", Resource: "externalAdmissionHookConfigurations"}, "")
+func (l *disabledValidatingWebhookConfigLister) List(options metav1.ListOptions) (*v1alpha1.ValidatingWebhookConfigurationList, error) {
+ return nil, errors.NewNotFound(schema.GroupResource{Group: "admissionregistration", Resource: "ValidatingWebhookConfigurations"}, "")
}
func TestWebhookConfigDisabled(t *testing.T) {
- manager := NewExternalAdmissionHookConfigurationManager(&disabledWebhookConfigLister{})
+ manager := NewValidatingWebhookConfigurationManager(&disabledValidatingWebhookConfigLister{})
manager.sync()
- _, err := manager.ExternalAdmissionHooks()
+ _, err := manager.Webhooks()
if err.Error() != ErrDisabled.Error() {
t.Errorf("expected %v, got %v", ErrDisabled, err)
}
diff --git a/staging/src/k8s.io/apiserver/pkg/admission/initializer/initializer.go b/staging/src/k8s.io/apiserver/pkg/admission/initializer/initializer.go
index 9ee990a3a2..abe764bb94 100644
--- a/staging/src/k8s.io/apiserver/pkg/admission/initializer/initializer.go
+++ b/staging/src/k8s.io/apiserver/pkg/admission/initializer/initializer.go
@@ -38,13 +38,13 @@ func New(
extInformers informers.SharedInformerFactory,
authz authorizer.Authorizer,
scheme *runtime.Scheme,
-) (pluginInitializer, error) {
+) pluginInitializer {
return pluginInitializer{
externalClient: extClientset,
externalInformers: extInformers,
authorizer: authz,
scheme: scheme,
- }, nil
+ }
}
// Initialize checks the initialization interfaces implemented by a plugin
diff --git a/staging/src/k8s.io/apiserver/pkg/admission/initializer/initializer_test.go b/staging/src/k8s.io/apiserver/pkg/admission/initializer/initializer_test.go
index 43153b91c0..c2d6ea234a 100644
--- a/staging/src/k8s.io/apiserver/pkg/admission/initializer/initializer_test.go
+++ b/staging/src/k8s.io/apiserver/pkg/admission/initializer/initializer_test.go
@@ -33,10 +33,7 @@ import (
// the WantsScheme interface is implemented by a plugin.
func TestWantsScheme(t *testing.T) {
scheme := runtime.NewScheme()
- target, err := initializer.New(nil, nil, nil, scheme)
- if err != nil {
- t.Fatal(err)
- }
+ target := initializer.New(nil, nil, nil, scheme)
wantSchemeAdmission := &WantSchemeAdmission{}
target.Initialize(wantSchemeAdmission)
if wantSchemeAdmission.scheme != scheme {
@@ -47,10 +44,7 @@ func TestWantsScheme(t *testing.T) {
// TestWantsAuthorizer ensures that the authorizer is injected
// when the WantsAuthorizer interface is implemented by a plugin.
func TestWantsAuthorizer(t *testing.T) {
- target, err := initializer.New(nil, nil, &TestAuthorizer{}, nil)
- if err != nil {
- t.Fatal(err)
- }
+ target := initializer.New(nil, nil, &TestAuthorizer{}, nil)
wantAuthorizerAdmission := &WantAuthorizerAdmission{}
target.Initialize(wantAuthorizerAdmission)
if wantAuthorizerAdmission.auth == nil {
@@ -62,10 +56,7 @@ func TestWantsAuthorizer(t *testing.T) {
// when the WantsExternalKubeClientSet interface is implemented by a plugin.
func TestWantsExternalKubeClientSet(t *testing.T) {
cs := &fake.Clientset{}
- target, err := initializer.New(cs, nil, &TestAuthorizer{}, nil)
- if err != nil {
- t.Fatal(err)
- }
+ target := initializer.New(cs, nil, &TestAuthorizer{}, nil)
wantExternalKubeClientSet := &WantExternalKubeClientSet{}
target.Initialize(wantExternalKubeClientSet)
if wantExternalKubeClientSet.cs != cs {
@@ -78,10 +69,7 @@ func TestWantsExternalKubeClientSet(t *testing.T) {
func TestWantsExternalKubeInformerFactory(t *testing.T) {
cs := &fake.Clientset{}
sf := informers.NewSharedInformerFactory(cs, time.Duration(1)*time.Second)
- target, err := initializer.New(cs, sf, &TestAuthorizer{}, nil)
- if err != nil {
- t.Fatal(err)
- }
+ target := initializer.New(cs, sf, &TestAuthorizer{}, nil)
wantExternalKubeInformerFactory := &WantExternalKubeInformerFactory{}
target.Initialize(wantExternalKubeInformerFactory)
if wantExternalKubeInformerFactory.sf != sf {
diff --git a/staging/src/k8s.io/apiserver/pkg/admission/plugin/namespace/lifecycle/admission_test.go b/staging/src/k8s.io/apiserver/pkg/admission/plugin/namespace/lifecycle/admission_test.go
index 3c2c74e4d4..3eca3b67f2 100644
--- a/staging/src/k8s.io/apiserver/pkg/admission/plugin/namespace/lifecycle/admission_test.go
+++ b/staging/src/k8s.io/apiserver/pkg/admission/plugin/namespace/lifecycle/admission_test.go
@@ -48,10 +48,7 @@ func newHandlerForTestWithClock(c clientset.Interface, cacheClock clock.Clock) (
if err != nil {
return nil, f, err
}
- pluginInitializer, err := kubeadmission.New(c, f, nil, nil)
- if err != nil {
- return handler, f, err
- }
+ pluginInitializer := kubeadmission.New(c, f, nil, nil)
pluginInitializer.Initialize(handler)
err = admission.ValidateInitialization(handler)
return handler, f, err
diff --git a/staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/BUILD b/staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/BUILD
index a0ec3b0554..792c23bb79 100644
--- a/staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/BUILD
+++ b/staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/BUILD
@@ -15,12 +15,16 @@ go_library(
visibility = ["//visibility:public"],
deps = [
"//vendor/github.com/golang/glog:go_default_library",
+ "//vendor/github.com/hashicorp/golang-lru:go_default_library",
"//vendor/k8s.io/api/admission/v1alpha1:go_default_library",
"//vendor/k8s.io/api/admissionregistration/v1alpha1:go_default_library",
"//vendor/k8s.io/api/authentication/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
@@ -28,7 +32,9 @@ go_library(
"//vendor/k8s.io/apiserver/pkg/admission:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission/configuration:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission/initializer:go_default_library",
+ "//vendor/k8s.io/client-go/informers:go_default_library",
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
+ "//vendor/k8s.io/client-go/listers/core/v1:go_default_library",
"//vendor/k8s.io/client-go/rest:go_default_library",
"//vendor/k8s.io/client-go/tools/clientcmd:go_default_library",
"//vendor/k8s.io/client-go/tools/clientcmd/api:go_default_library",
@@ -41,6 +47,7 @@ go_test(
"admission_test.go",
"authentication_test.go",
"certs_test.go",
+ "conversion_test.go",
"rules_test.go",
"serviceresolver_test.go",
],
@@ -53,10 +60,15 @@ go_test(
"//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission:go_default_library",
+ "//vendor/k8s.io/apiserver/pkg/apis/example:go_default_library",
+ "//vendor/k8s.io/apiserver/pkg/apis/example/v1:go_default_library",
+ "//vendor/k8s.io/apiserver/pkg/apis/example2/v1:go_default_library",
"//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library",
"//vendor/k8s.io/client-go/rest:go_default_library",
"//vendor/k8s.io/client-go/tools/clientcmd/api:go_default_library",
diff --git a/staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/admission.go b/staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/admission.go
index ab12ba8962..737009068c 100644
--- a/staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/admission.go
+++ b/staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/admission.go
@@ -19,19 +19,25 @@ package webhook
import (
"context"
+ "encoding/json"
+ "errors"
"fmt"
"io"
+ "net"
"net/url"
- "path"
"sync"
"github.com/golang/glog"
+ lru "github.com/hashicorp/golang-lru"
admissionv1alpha1 "k8s.io/api/admission/v1alpha1"
"k8s.io/api/admissionregistration/v1alpha1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
+ "k8s.io/apimachinery/pkg/api/meta"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime"
+ "k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/runtime/serializer"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/apimachinery/pkg/util/wait"
@@ -39,13 +45,20 @@ import (
"k8s.io/apiserver/pkg/admission"
"k8s.io/apiserver/pkg/admission/configuration"
genericadmissioninit "k8s.io/apiserver/pkg/admission/initializer"
+ "k8s.io/client-go/informers"
clientset "k8s.io/client-go/kubernetes"
+ corelisters "k8s.io/client-go/listers/core/v1"
"k8s.io/client-go/rest"
)
const (
// Name of admission plug-in
- PluginName = "GenericAdmissionWebhook"
+ PluginName = "GenericAdmissionWebhook"
+ defaultCacheSize = 200
+)
+
+var (
+ ErrNeedServiceOrURL = errors.New("webhook configuration must have either service or URL")
)
type ErrCallingWebhook struct {
@@ -75,7 +88,7 @@ func Register(plugins *admission.Plugins) {
// WebhookSource can list dynamic webhook plugins.
type WebhookSource interface {
Run(stopCh <-chan struct{})
- ExternalAdmissionHooks() (*v1alpha1.ExternalAdmissionHookConfiguration, error)
+ Webhooks() (*v1alpha1.ValidatingWebhookConfiguration, error)
}
// NewGenericAdmissionWebhook returns a generic admission webhook plugin.
@@ -96,6 +109,11 @@ func NewGenericAdmissionWebhook(configFile io.Reader) (*GenericAdmissionWebhook,
return nil, err
}
+ cache, err := lru.New(defaultCacheSize)
+ if err != nil {
+ return nil, err
+ }
+
return &GenericAdmissionWebhook{
Handler: admission.NewHandler(
admission.Connect,
@@ -105,6 +123,7 @@ func NewGenericAdmissionWebhook(configFile io.Reader) (*GenericAdmissionWebhook,
),
authInfoResolver: authInfoResolver,
serviceResolver: defaultServiceResolver{},
+ cache: cache,
}, nil
}
@@ -114,8 +133,13 @@ type GenericAdmissionWebhook struct {
hookSource WebhookSource
serviceResolver ServiceResolver
negotiatedSerializer runtime.NegotiatedSerializer
+ namespaceLister corelisters.NamespaceLister
+ client clientset.Interface
+ convertor runtime.ObjectConvertor
+ creator runtime.ObjectCreater
authInfoResolver AuthenticationInfoResolver
+ cache *lru.Cache
}
// serviceResolver knows how to convert a service reference into an actual location.
@@ -148,12 +172,22 @@ func (a *GenericAdmissionWebhook) SetScheme(scheme *runtime.Scheme) {
a.negotiatedSerializer = serializer.NegotiatedSerializerWrapper(runtime.SerializerInfo{
Serializer: serializer.NewCodecFactory(scheme).LegacyCodec(admissionv1alpha1.SchemeGroupVersion),
})
+ a.convertor = scheme
+ a.creator = scheme
}
}
// WantsExternalKubeClientSet defines a function which sets external ClientSet for admission plugins that need it
func (a *GenericAdmissionWebhook) SetExternalKubeClientSet(client clientset.Interface) {
- a.hookSource = configuration.NewExternalAdmissionHookConfigurationManager(client.AdmissionregistrationV1alpha1().ExternalAdmissionHookConfigurations())
+ a.client = client
+ a.hookSource = configuration.NewValidatingWebhookConfigurationManager(client.AdmissionregistrationV1alpha1().ValidatingWebhookConfigurations())
+}
+
+// SetExternalKubeInformerFactory implements the WantsExternalKubeInformerFactory interface.
+func (a *GenericAdmissionWebhook) SetExternalKubeInformerFactory(f informers.SharedInformerFactory) {
+ namespaceInformer := f.Core().V1().Namespaces()
+ a.namespaceLister = namespaceInformer.Lister()
+ a.SetReadyFunc(namespaceInformer.Informer().HasSynced)
}
// ValidateInitialization implements the InitializationValidator interface.
@@ -164,46 +198,115 @@ func (a *GenericAdmissionWebhook) ValidateInitialization() error {
if a.negotiatedSerializer == nil {
return fmt.Errorf("the GenericAdmissionWebhook admission plugin requires a runtime.Scheme to be provided to derive a serializer")
}
+ if a.namespaceLister == nil {
+ return fmt.Errorf("the GenericAdmissionWebhook admission plugin requires a namespaceLister")
+ }
go a.hookSource.Run(wait.NeverStop)
return nil
}
-func (a *GenericAdmissionWebhook) loadConfiguration(attr admission.Attributes) (*v1alpha1.ExternalAdmissionHookConfiguration, error) {
- hookConfig, err := a.hookSource.ExternalAdmissionHooks()
- // if ExternalAdmissionHook configuration is disabled, fail open
+func (a *GenericAdmissionWebhook) loadConfiguration(attr admission.Attributes) (*v1alpha1.ValidatingWebhookConfiguration, error) {
+ hookConfig, err := a.hookSource.Webhooks()
+ // if Webhook configuration is disabled, fail open
if err == configuration.ErrDisabled {
- return &v1alpha1.ExternalAdmissionHookConfiguration{}, nil
+ return &v1alpha1.ValidatingWebhookConfiguration{}, nil
}
if err != nil {
e := apierrors.NewServerTimeout(attr.GetResource().GroupResource(), string(attr.GetOperation()), 1)
- e.ErrStatus.Message = fmt.Sprintf("Unable to refresh the ExternalAdmissionHook configuration: %v", err)
+ e.ErrStatus.Message = fmt.Sprintf("Unable to refresh the Webhook configuration: %v", err)
e.ErrStatus.Reason = "LoadingConfiguration"
e.ErrStatus.Details.Causes = append(e.ErrStatus.Details.Causes, metav1.StatusCause{
- Type: "ExternalAdmissionHookConfigurationFailure",
- Message: "An error has occurred while refreshing the externalAdmissionHook configuration, no resources can be created/updated/deleted/connected until a refresh succeeds.",
+ Type: "ValidatingWebhookConfigurationFailure",
+ Message: "An error has occurred while refreshing the ValidatingWebhook configuration, no resources can be created/updated/deleted/connected until a refresh succeeds.",
})
return nil, e
}
return hookConfig, nil
}
+type versionedAttributes struct {
+ admission.Attributes
+ oldObject runtime.Object
+ object runtime.Object
+}
+
+func (v versionedAttributes) GetObject() runtime.Object {
+ return v.object
+}
+
+func (v versionedAttributes) GetOldObject() runtime.Object {
+ return v.oldObject
+}
+
+func (a *GenericAdmissionWebhook) convertToGVK(obj runtime.Object, gvk schema.GroupVersionKind) (runtime.Object, error) {
+ // Unlike other resources, custom resources do not have internal version, so
+ // if obj is a custom resource, it should not need conversion.
+ if obj.GetObjectKind().GroupVersionKind() == gvk {
+ return obj, nil
+ }
+ out, err := a.creator.New(gvk)
+ if err != nil {
+ return nil, err
+ }
+ err = a.convertor.Convert(obj, out, nil)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
// Admit makes an admission decision based on the request attributes.
func (a *GenericAdmissionWebhook) Admit(attr admission.Attributes) error {
hookConfig, err := a.loadConfiguration(attr)
if err != nil {
return err
}
- hooks := hookConfig.ExternalAdmissionHooks
+ hooks := hookConfig.Webhooks
ctx := context.TODO()
- errCh := make(chan error, len(hooks))
- wg := sync.WaitGroup{}
- wg.Add(len(hooks))
+ var relevantHooks []*v1alpha1.Webhook
for i := range hooks {
- go func(hook *v1alpha1.ExternalAdmissionHook) {
+ call, err := a.shouldCallHook(&hooks[i], attr)
+ if err != nil {
+ return err
+ }
+ if call {
+ relevantHooks = append(relevantHooks, &hooks[i])
+ }
+ }
+
+ if len(relevantHooks) == 0 {
+ // no matching hooks
+ return nil
+ }
+
+ // convert the object to the external version before sending it to the webhook
+ versionedAttr := versionedAttributes{
+ Attributes: attr,
+ }
+ if oldObj := attr.GetOldObject(); oldObj != nil {
+ out, err := a.convertToGVK(oldObj, attr.GetKind())
+ if err != nil {
+ return apierrors.NewInternalError(err)
+ }
+ versionedAttr.oldObject = out
+ }
+ if obj := attr.GetObject(); obj != nil {
+ out, err := a.convertToGVK(obj, attr.GetKind())
+ if err != nil {
+ return apierrors.NewInternalError(err)
+ }
+ versionedAttr.object = out
+ }
+
+ wg := sync.WaitGroup{}
+ errCh := make(chan error, len(relevantHooks))
+ wg.Add(len(relevantHooks))
+ for i := range relevantHooks {
+ go func(hook *v1alpha1.Webhook) {
defer wg.Done()
- err := a.callHook(ctx, hook, attr)
+ err := a.callHook(ctx, hook, versionedAttr)
if err == nil {
return
}
@@ -224,7 +327,7 @@ func (a *GenericAdmissionWebhook) Admit(attr admission.Attributes) error {
glog.Warningf("rejected by webhook %q: %#v", hook.Name, err)
errCh <- err
- }(&hooks[i])
+ }(relevantHooks[i])
}
wg.Wait()
close(errCh)
@@ -245,8 +348,74 @@ func (a *GenericAdmissionWebhook) Admit(attr admission.Attributes) error {
return errs[0]
}
-func (a *GenericAdmissionWebhook) callHook(ctx context.Context, h *v1alpha1.ExternalAdmissionHook, attr admission.Attributes) error {
- matches := false
+func (a *GenericAdmissionWebhook) getNamespaceLabels(attr admission.Attributes) (map[string]string, error) {
+ // If the request itself is creating or updating a namespace, then get the
+ // labels from attr.Object, because namespaceLister doesn't have the latest
+ // namespace yet.
+ //
+ // However, if the request is deleting a namespace, then get the label from
+ // the namespace in the namespaceLister, because a delete request is not
+ // going to change the object, and attr.Object will be a DeleteOptions
+ // rather than a namespace object.
+ if attr.GetResource().Resource == "namespaces" &&
+ len(attr.GetSubresource()) == 0 &&
+ (attr.GetOperation() == admission.Create || attr.GetOperation() == admission.Update) {
+ accessor, err := meta.Accessor(attr.GetObject())
+ if err != nil {
+ return nil, err
+ }
+ return accessor.GetLabels(), nil
+ }
+
+ namespaceName := attr.GetNamespace()
+ namespace, err := a.namespaceLister.Get(namespaceName)
+ if err != nil && !apierrors.IsNotFound(err) {
+ return nil, err
+ }
+ if apierrors.IsNotFound(err) {
+ // in case of latency in our caches, make a call direct to storage to verify that it truly exists or not
+ namespace, err = a.client.Core().Namespaces().Get(namespaceName, metav1.GetOptions{})
+ if err != nil {
+ return nil, err
+ }
+ }
+ return namespace.Labels, nil
+}
+
+// whether the request is exempted by the webhook because of the
+// namespaceSelector of the webhook.
+func (a *GenericAdmissionWebhook) exemptedByNamespaceSelector(h *v1alpha1.Webhook, attr admission.Attributes) (bool, *apierrors.StatusError) {
+ namespaceName := attr.GetNamespace()
+ if len(namespaceName) == 0 && attr.GetResource().Resource != "namespaces" {
+ // If the request is about a cluster scoped resource, and it is not a
+ // namespace, it is exempted from all webhooks for now.
+ // TODO: figure out a way selective exempt cluster scoped resources.
+ // Also update the comment in types.go
+ return true, nil
+ }
+ namespaceLabels, err := a.getNamespaceLabels(attr)
+ // this means the namespace is not found, for backwards compatibility,
+ // return a 404
+ if apierrors.IsNotFound(err) {
+ status, ok := err.(apierrors.APIStatus)
+ if !ok {
+ return false, apierrors.NewInternalError(err)
+ }
+ return false, &apierrors.StatusError{status.Status()}
+ }
+ if err != nil {
+ return false, apierrors.NewInternalError(err)
+ }
+ // TODO: adding an LRU cache to cache the translation
+ selector, err := metav1.LabelSelectorAsSelector(h.NamespaceSelector)
+ if err != nil {
+ return false, apierrors.NewInternalError(err)
+ }
+ return !selector.Matches(labels.Set(namespaceLabels)), nil
+}
+
+func (a *GenericAdmissionWebhook) shouldCallHook(h *v1alpha1.Webhook, attr admission.Attributes) (bool, *apierrors.StatusError) {
+ var matches bool
for _, r := range h.Rules {
m := RuleMatcher{Rule: r, Attr: attr}
if m.Matches() {
@@ -255,9 +424,17 @@ func (a *GenericAdmissionWebhook) callHook(ctx context.Context, h *v1alpha1.Exte
}
}
if !matches {
- return nil
+ return false, nil
}
+ excluded, err := a.exemptedByNamespaceSelector(h, attr)
+ if err != nil {
+ return false, err
+ }
+ return !excluded, nil
+}
+
+func (a *GenericAdmissionWebhook) callHook(ctx context.Context, h *v1alpha1.Webhook, attr admission.Attributes) error {
// Make the webhook request
request := createAdmissionReview(attr)
client, err := a.hookClient(h)
@@ -299,24 +476,75 @@ func toStatusErr(name string, result *metav1.Status) *apierrors.StatusError {
}
}
-func (a *GenericAdmissionWebhook) hookClient(h *v1alpha1.ExternalAdmissionHook) (*rest.RESTClient, error) {
- serverName := h.ClientConfig.Service.Name + "." + h.ClientConfig.Service.Namespace + ".svc"
- u, err := a.serviceResolver.ResolveEndpoint(h.ClientConfig.Service.Namespace, h.ClientConfig.Service.Name)
+func (a *GenericAdmissionWebhook) hookClient(h *v1alpha1.Webhook) (*rest.RESTClient, error) {
+ cacheKey, err := json.Marshal(h.ClientConfig)
+ if err != nil {
+ return nil, err
+ }
+ if client, ok := a.cache.Get(string(cacheKey)); ok {
+ return client.(*rest.RESTClient), nil
+ }
+
+ complete := func(cfg *rest.Config) (*rest.RESTClient, error) {
+ cfg.TLSClientConfig.CAData = h.ClientConfig.CABundle
+ cfg.ContentConfig.NegotiatedSerializer = a.negotiatedSerializer
+ cfg.ContentConfig.ContentType = runtime.ContentTypeJSON
+ client, err := rest.UnversionedRESTClientFor(cfg)
+ if err == nil {
+ a.cache.Add(string(cacheKey), client)
+ }
+ return client, err
+ }
+
+ if svc := h.ClientConfig.Service; svc != nil {
+ serverName := svc.Name + "." + svc.Namespace + ".svc"
+ restConfig, err := a.authInfoResolver.ClientConfigFor(serverName)
+ if err != nil {
+ return nil, err
+ }
+ cfg := rest.CopyConfig(restConfig)
+ host := serverName + ":443"
+ cfg.Host = "https://" + host
+ if svc.Path != nil {
+ cfg.APIPath = *svc.Path
+ }
+ cfg.TLSClientConfig.ServerName = serverName
+
+ delegateDialer := cfg.Dial
+ if delegateDialer == nil {
+ delegateDialer = net.Dial
+ }
+ cfg.Dial = func(network, addr string) (net.Conn, error) {
+ if addr == host {
+ u, err := a.serviceResolver.ResolveEndpoint(svc.Namespace, svc.Name)
+ if err != nil {
+ return nil, err
+ }
+ addr = u.Host
+ }
+ return delegateDialer(network, addr)
+ }
+
+ return complete(cfg)
+ }
+
+ if h.ClientConfig.URL == nil {
+ return nil, &ErrCallingWebhook{WebhookName: h.Name, Reason: ErrNeedServiceOrURL}
+ }
+
+ u, err := url.Parse(*h.ClientConfig.URL)
+ if err != nil {
+ return nil, &ErrCallingWebhook{WebhookName: h.Name, Reason: fmt.Errorf("Unparsable URL: %v", err)}
+ }
+
+ restConfig, err := a.authInfoResolver.ClientConfigFor(u.Host)
if err != nil {
return nil, err
}
- // TODO: cache these instead of constructing one each time
- restConfig, err := a.authInfoResolver.ClientConfigFor(serverName)
- if err != nil {
- return nil, err
- }
cfg := rest.CopyConfig(restConfig)
cfg.Host = u.Host
- cfg.APIPath = path.Join(u.Path, h.ClientConfig.URLPath)
- cfg.TLSClientConfig.ServerName = serverName
- cfg.TLSClientConfig.CAData = h.ClientConfig.CABundle
- cfg.ContentConfig.NegotiatedSerializer = a.negotiatedSerializer
- cfg.ContentConfig.ContentType = runtime.ContentTypeJSON
- return rest.UnversionedRESTClientFor(cfg)
+ cfg.APIPath = u.Path
+
+ return complete(cfg)
}
diff --git a/staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/admission_test.go b/staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/admission_test.go
index 5124cb3a09..d16c3605fa 100644
--- a/staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/admission_test.go
+++ b/staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/admission_test.go
@@ -24,30 +24,40 @@ import (
"net/http"
"net/http/httptest"
"net/url"
+ "reflect"
"strings"
+ "sync/atomic"
"testing"
"k8s.io/api/admission/v1alpha1"
registrationv1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
- api "k8s.io/api/core/v1"
+ corev1 "k8s.io/api/core/v1"
+ "k8s.io/apimachinery/pkg/api/errors"
apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime"
+ "k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apiserver/pkg/admission"
"k8s.io/apiserver/pkg/authentication/user"
"k8s.io/client-go/rest"
)
type fakeHookSource struct {
- hooks []registrationv1alpha1.ExternalAdmissionHook
+ hooks []registrationv1alpha1.Webhook
err error
}
-func (f *fakeHookSource) ExternalAdmissionHooks() (*registrationv1alpha1.ExternalAdmissionHookConfiguration, error) {
+func (f *fakeHookSource) Webhooks() (*registrationv1alpha1.ValidatingWebhookConfiguration, error) {
if f.err != nil {
return nil, f.err
}
- return ®istrationv1alpha1.ExternalAdmissionHookConfiguration{ExternalAdmissionHooks: f.hooks}, nil
+ for i, h := range f.hooks {
+ if h.NamespaceSelector == nil {
+ f.hooks[i].NamespaceSelector = &metav1.LabelSelector{}
+ }
+ }
+ return ®istrationv1alpha1.ValidatingWebhookConfiguration{Webhooks: f.hooks}, nil
}
func (f *fakeHookSource) Run(stopCh <-chan struct{}) {}
@@ -64,25 +74,55 @@ func (f fakeServiceResolver) ResolveEndpoint(namespace, name string) (*url.URL,
return &u, nil
}
+type fakeNamespaceLister struct {
+ namespaces map[string]*corev1.Namespace
+}
+
+func (f fakeNamespaceLister) List(selector labels.Selector) (ret []*corev1.Namespace, err error) {
+ return nil, nil
+}
+func (f fakeNamespaceLister) Get(name string) (*corev1.Namespace, error) {
+ ns, ok := f.namespaces[name]
+ if ok {
+ return ns, nil
+ }
+ return nil, errors.NewNotFound(corev1.Resource("namespaces"), name)
+}
+
+// ccfgSVC returns a client config using the service reference mechanism.
+func ccfgSVC(urlPath string) registrationv1alpha1.WebhookClientConfig {
+ return registrationv1alpha1.WebhookClientConfig{
+ Service: ®istrationv1alpha1.ServiceReference{
+ Name: "webhook-test",
+ Namespace: "default",
+ Path: &urlPath,
+ },
+ CABundle: caCert,
+ }
+}
+
+type urlConfigGenerator struct {
+ baseURL *url.URL
+}
+
+// ccfgURL returns a client config using the URL mechanism.
+func (c urlConfigGenerator) ccfgURL(urlPath string) registrationv1alpha1.WebhookClientConfig {
+ u2 := *c.baseURL
+ u2.Path = urlPath
+ urlString := u2.String()
+ return registrationv1alpha1.WebhookClientConfig{
+ URL: &urlString,
+ CABundle: caCert,
+ }
+}
+
// TestAdmit tests that GenericAdmissionWebhook#Admit works as expected
func TestAdmit(t *testing.T) {
scheme := runtime.NewScheme()
v1alpha1.AddToScheme(scheme)
- api.AddToScheme(scheme)
+ corev1.AddToScheme(scheme)
- // Create the test webhook server
- sCert, err := tls.X509KeyPair(serverCert, serverKey)
- if err != nil {
- t.Fatal(err)
- }
- rootCAs := x509.NewCertPool()
- rootCAs.AppendCertsFromPEM(caCert)
- testServer := httptest.NewUnstartedServer(http.HandlerFunc(webhookHandler))
- testServer.TLS = &tls.Config{
- Certificates: []tls.Certificate{sCert},
- ClientCAs: rootCAs,
- ClientAuth: tls.RequireAndVerifyClientCert,
- }
+ testServer := newTestServer(t)
testServer.StartTLS()
defer testServer.Close()
serverURL, err := url.ParseRequestURI(testServer.URL)
@@ -93,21 +133,25 @@ func TestAdmit(t *testing.T) {
if err != nil {
t.Fatal(err)
}
- wh.authInfoResolver = &fakeAuthenticationInfoResolver{
- restConfig: &rest.Config{
- TLSClientConfig: rest.TLSClientConfig{
- CAData: caCert,
- CertData: clientCert,
- KeyData: clientKey,
+ wh.authInfoResolver = newFakeAuthenticationInfoResolver()
+ wh.serviceResolver = fakeServiceResolver{base: *serverURL}
+ wh.SetScheme(scheme)
+ namespace := "webhook-test"
+ wh.namespaceLister = fakeNamespaceLister{map[string]*corev1.Namespace{
+ namespace: {
+ ObjectMeta: metav1.ObjectMeta{
+ Labels: map[string]string{
+ "runlevel": "0",
+ },
},
},
+ },
}
// Set up a test object for the call
- kind := api.SchemeGroupVersion.WithKind("Pod")
+ kind := corev1.SchemeGroupVersion.WithKind("Pod")
name := "my-pod"
- namespace := "webhook-test"
- object := api.Pod{
+ object := corev1.Pod{
ObjectMeta: metav1.ObjectMeta{
Labels: map[string]string{
"pod.name": name,
@@ -120,33 +164,25 @@ func TestAdmit(t *testing.T) {
Kind: "Pod",
},
}
- oldObject := api.Pod{
+ oldObject := corev1.Pod{
ObjectMeta: metav1.ObjectMeta{Name: name, Namespace: namespace},
}
operation := admission.Update
- resource := api.Resource("pods").WithVersion("v1")
+ resource := corev1.Resource("pods").WithVersion("v1")
subResource := ""
userInfo := user.DefaultInfo{
Name: "webhook-test",
UID: "webhook-test",
}
+ ccfgURL := urlConfigGenerator{serverURL}.ccfgURL
+
type test struct {
hookSource fakeHookSource
path string
expectAllow bool
errorContains string
}
- ccfg := func(urlPath string) registrationv1alpha1.AdmissionHookClientConfig {
- return registrationv1alpha1.AdmissionHookClientConfig{
- Service: registrationv1alpha1.ServiceReference{
- Name: "webhook-test",
- Namespace: "default",
- },
- URLPath: urlPath,
- CABundle: caCert,
- }
- }
matchEverythingRules := []registrationv1alpha1.RuleWithOperations{{
Operations: []registrationv1alpha1.OperationType{registrationv1alpha1.OperationAll},
@@ -163,9 +199,9 @@ func TestAdmit(t *testing.T) {
table := map[string]test{
"no match": {
hookSource: fakeHookSource{
- hooks: []registrationv1alpha1.ExternalAdmissionHook{{
+ hooks: []registrationv1alpha1.Webhook{{
Name: "nomatch",
- ClientConfig: ccfg("disallow"),
+ ClientConfig: ccfgSVC("disallow"),
Rules: []registrationv1alpha1.RuleWithOperations{{
Operations: []registrationv1alpha1.OperationType{registrationv1alpha1.Create},
}},
@@ -175,9 +211,9 @@ func TestAdmit(t *testing.T) {
},
"match & allow": {
hookSource: fakeHookSource{
- hooks: []registrationv1alpha1.ExternalAdmissionHook{{
+ hooks: []registrationv1alpha1.Webhook{{
Name: "allow",
- ClientConfig: ccfg("allow"),
+ ClientConfig: ccfgSVC("allow"),
Rules: matchEverythingRules,
}},
},
@@ -185,9 +221,9 @@ func TestAdmit(t *testing.T) {
},
"match & disallow": {
hookSource: fakeHookSource{
- hooks: []registrationv1alpha1.ExternalAdmissionHook{{
+ hooks: []registrationv1alpha1.Webhook{{
Name: "disallow",
- ClientConfig: ccfg("disallow"),
+ ClientConfig: ccfgSVC("disallow"),
Rules: matchEverythingRules,
}},
},
@@ -195,29 +231,63 @@ func TestAdmit(t *testing.T) {
},
"match & disallow ii": {
hookSource: fakeHookSource{
- hooks: []registrationv1alpha1.ExternalAdmissionHook{{
+ hooks: []registrationv1alpha1.Webhook{{
Name: "disallowReason",
- ClientConfig: ccfg("disallowReason"),
+ ClientConfig: ccfgSVC("disallowReason"),
Rules: matchEverythingRules,
}},
},
errorContains: "you shall not pass",
},
+ "match & disallow & but allowed because namespaceSelector exempt the namespace": {
+ hookSource: fakeHookSource{
+ hooks: []registrationv1alpha1.Webhook{{
+ Name: "disallow",
+ ClientConfig: ccfgSVC("disallow"),
+ Rules: newMatchEverythingRules(),
+ NamespaceSelector: &metav1.LabelSelector{
+ MatchExpressions: []metav1.LabelSelectorRequirement{{
+ Key: "runlevel",
+ Values: []string{"1"},
+ Operator: metav1.LabelSelectorOpIn,
+ }},
+ },
+ }},
+ },
+ expectAllow: true,
+ },
+ "match & disallow & but allowed because namespaceSelector exempt the namespace ii": {
+ hookSource: fakeHookSource{
+ hooks: []registrationv1alpha1.Webhook{{
+ Name: "disallow",
+ ClientConfig: ccfgSVC("disallow"),
+ Rules: newMatchEverythingRules(),
+ NamespaceSelector: &metav1.LabelSelector{
+ MatchExpressions: []metav1.LabelSelectorRequirement{{
+ Key: "runlevel",
+ Values: []string{"0"},
+ Operator: metav1.LabelSelectorOpNotIn,
+ }},
+ },
+ }},
+ },
+ expectAllow: true,
+ },
"match & fail (but allow because fail open)": {
hookSource: fakeHookSource{
- hooks: []registrationv1alpha1.ExternalAdmissionHook{{
+ hooks: []registrationv1alpha1.Webhook{{
Name: "internalErr A",
- ClientConfig: ccfg("internalErr"),
+ ClientConfig: ccfgSVC("internalErr"),
Rules: matchEverythingRules,
FailurePolicy: &policyIgnore,
}, {
Name: "internalErr B",
- ClientConfig: ccfg("internalErr"),
+ ClientConfig: ccfgSVC("internalErr"),
Rules: matchEverythingRules,
FailurePolicy: &policyIgnore,
}, {
Name: "internalErr C",
- ClientConfig: ccfg("internalErr"),
+ ClientConfig: ccfgSVC("internalErr"),
Rules: matchEverythingRules,
FailurePolicy: &policyIgnore,
}},
@@ -226,17 +296,17 @@ func TestAdmit(t *testing.T) {
},
"match & fail (but disallow because fail closed on nil)": {
hookSource: fakeHookSource{
- hooks: []registrationv1alpha1.ExternalAdmissionHook{{
+ hooks: []registrationv1alpha1.Webhook{{
Name: "internalErr A",
- ClientConfig: ccfg("internalErr"),
+ ClientConfig: ccfgSVC("internalErr"),
Rules: matchEverythingRules,
}, {
Name: "internalErr B",
- ClientConfig: ccfg("internalErr"),
+ ClientConfig: ccfgSVC("internalErr"),
Rules: matchEverythingRules,
}, {
Name: "internalErr C",
- ClientConfig: ccfg("internalErr"),
+ ClientConfig: ccfgSVC("internalErr"),
Rules: matchEverythingRules,
}},
},
@@ -244,33 +314,55 @@ func TestAdmit(t *testing.T) {
},
"match & fail (but fail because fail closed)": {
hookSource: fakeHookSource{
- hooks: []registrationv1alpha1.ExternalAdmissionHook{{
+ hooks: []registrationv1alpha1.Webhook{{
Name: "internalErr A",
- ClientConfig: ccfg("internalErr"),
+ ClientConfig: ccfgSVC("internalErr"),
Rules: matchEverythingRules,
FailurePolicy: &policyFail,
}, {
Name: "internalErr B",
- ClientConfig: ccfg("internalErr"),
+ ClientConfig: ccfgSVC("internalErr"),
Rules: matchEverythingRules,
FailurePolicy: &policyFail,
}, {
Name: "internalErr C",
- ClientConfig: ccfg("internalErr"),
+ ClientConfig: ccfgSVC("internalErr"),
Rules: matchEverythingRules,
FailurePolicy: &policyFail,
}},
},
expectAllow: false,
},
+ "match & allow (url)": {
+ hookSource: fakeHookSource{
+ hooks: []registrationv1alpha1.Webhook{{
+ Name: "allow",
+ ClientConfig: ccfgURL("allow"),
+ Rules: matchEverythingRules,
+ }},
+ },
+ expectAllow: true,
+ },
+ "match & disallow (url)": {
+ hookSource: fakeHookSource{
+ hooks: []registrationv1alpha1.Webhook{{
+ Name: "disallow",
+ ClientConfig: ccfgURL("disallow"),
+ Rules: matchEverythingRules,
+ }},
+ },
+ errorContains: "without explanation",
+ },
+ // No need to test everything with the url case, since only the
+ // connection is different.
}
for name, tt := range table {
+ if !strings.Contains(name, "no match") {
+ continue
+ }
t.Run(name, func(t *testing.T) {
wh.hookSource = &tt.hookSource
- wh.serviceResolver = fakeServiceResolver{base: *serverURL}
- wh.SetScheme(scheme)
-
err = wh.Admit(admission.NewAttributesRecord(&object, &oldObject, kind, namespace, name, resource, subResource, operation, &userInfo))
if tt.expectAllow != (err == nil) {
t.Errorf("expected allowed=%v, but got err=%v", tt.expectAllow, err)
@@ -288,6 +380,181 @@ func TestAdmit(t *testing.T) {
}
}
+// TestAdmitCachedClient tests that GenericAdmissionWebhook#Admit should cache restClient
+func TestAdmitCachedClient(t *testing.T) {
+ scheme := runtime.NewScheme()
+ v1alpha1.AddToScheme(scheme)
+ corev1.AddToScheme(scheme)
+
+ testServer := newTestServer(t)
+ testServer.StartTLS()
+ defer testServer.Close()
+ serverURL, err := url.ParseRequestURI(testServer.URL)
+ if err != nil {
+ t.Fatalf("this should never happen? %v", err)
+ }
+ wh, err := NewGenericAdmissionWebhook(nil)
+ if err != nil {
+ t.Fatal(err)
+ }
+ wh.authInfoResolver = newFakeAuthenticationInfoResolver()
+ wh.serviceResolver = fakeServiceResolver{base: *serverURL}
+ wh.SetScheme(scheme)
+ namespace := "webhook-test"
+ wh.namespaceLister = fakeNamespaceLister{map[string]*corev1.Namespace{
+ namespace: {
+ ObjectMeta: metav1.ObjectMeta{
+ Labels: map[string]string{
+ "runlevel": "0",
+ },
+ },
+ },
+ },
+ }
+
+ // Set up a test object for the call
+ kind := corev1.SchemeGroupVersion.WithKind("Pod")
+ name := "my-pod"
+ object := corev1.Pod{
+ ObjectMeta: metav1.ObjectMeta{
+ Labels: map[string]string{
+ "pod.name": name,
+ },
+ Name: name,
+ Namespace: namespace,
+ },
+ TypeMeta: metav1.TypeMeta{
+ APIVersion: "v1",
+ Kind: "Pod",
+ },
+ }
+ oldObject := corev1.Pod{
+ ObjectMeta: metav1.ObjectMeta{Name: name, Namespace: namespace},
+ }
+ operation := admission.Update
+ resource := corev1.Resource("pods").WithVersion("v1")
+ subResource := ""
+ userInfo := user.DefaultInfo{
+ Name: "webhook-test",
+ UID: "webhook-test",
+ }
+ ccfgURL := urlConfigGenerator{serverURL}.ccfgURL
+
+ type test struct {
+ name string
+ hookSource fakeHookSource
+ expectAllow bool
+ expectCache bool
+ }
+
+ policyIgnore := registrationv1alpha1.Ignore
+ cases := []test{
+ {
+ name: "cache 1",
+ hookSource: fakeHookSource{
+ hooks: []registrationv1alpha1.Webhook{{
+ Name: "cache1",
+ ClientConfig: ccfgSVC("allow"),
+ Rules: newMatchEverythingRules(),
+ FailurePolicy: &policyIgnore,
+ }},
+ },
+ expectAllow: true,
+ expectCache: true,
+ },
+ {
+ name: "cache 2",
+ hookSource: fakeHookSource{
+ hooks: []registrationv1alpha1.Webhook{{
+ Name: "cache2",
+ ClientConfig: ccfgSVC("internalErr"),
+ Rules: newMatchEverythingRules(),
+ FailurePolicy: &policyIgnore,
+ }},
+ },
+ expectAllow: true,
+ expectCache: true,
+ },
+ {
+ name: "cache 3",
+ hookSource: fakeHookSource{
+ hooks: []registrationv1alpha1.Webhook{{
+ Name: "cache3",
+ ClientConfig: ccfgSVC("allow"),
+ Rules: newMatchEverythingRules(),
+ FailurePolicy: &policyIgnore,
+ }},
+ },
+ expectAllow: true,
+ expectCache: false,
+ },
+ {
+ name: "cache 4",
+ hookSource: fakeHookSource{
+ hooks: []registrationv1alpha1.Webhook{{
+ Name: "cache4",
+ ClientConfig: ccfgURL("allow"),
+ Rules: newMatchEverythingRules(),
+ FailurePolicy: &policyIgnore,
+ }},
+ },
+ expectAllow: true,
+ expectCache: true,
+ },
+ {
+ name: "cache 5",
+ hookSource: fakeHookSource{
+ hooks: []registrationv1alpha1.Webhook{{
+ Name: "cache5",
+ ClientConfig: ccfgURL("allow"),
+ Rules: newMatchEverythingRules(),
+ FailurePolicy: &policyIgnore,
+ }},
+ },
+ expectAllow: true,
+ expectCache: false,
+ },
+ }
+
+ for _, testcase := range cases {
+ t.Run(testcase.name, func(t *testing.T) {
+ wh.hookSource = &testcase.hookSource
+ wh.authInfoResolver.(*fakeAuthenticationInfoResolver).cachedCount = 0
+
+ err = wh.Admit(admission.NewAttributesRecord(&object, &oldObject, kind, namespace, testcase.name, resource, subResource, operation, &userInfo))
+ if testcase.expectAllow != (err == nil) {
+ t.Errorf("expected allowed=%v, but got err=%v", testcase.expectAllow, err)
+ }
+
+ if testcase.expectCache && wh.authInfoResolver.(*fakeAuthenticationInfoResolver).cachedCount != 1 {
+ t.Errorf("expected cacheclient, but got none")
+ }
+
+ if !testcase.expectCache && wh.authInfoResolver.(*fakeAuthenticationInfoResolver).cachedCount != 0 {
+ t.Errorf("expected not cacheclient, but got cache")
+ }
+ })
+ }
+
+}
+
+func newTestServer(t *testing.T) *httptest.Server {
+ // Create the test webhook server
+ sCert, err := tls.X509KeyPair(serverCert, serverKey)
+ if err != nil {
+ t.Fatal(err)
+ }
+ rootCAs := x509.NewCertPool()
+ rootCAs.AppendCertsFromPEM(caCert)
+ testServer := httptest.NewUnstartedServer(http.HandlerFunc(webhookHandler))
+ testServer.TLS = &tls.Config{
+ Certificates: []tls.Certificate{sCert},
+ ClientCAs: rootCAs,
+ ClientAuth: tls.RequireAndVerifyClientCert,
+ }
+ return testServer
+}
+
func webhookHandler(w http.ResponseWriter, r *http.Request) {
fmt.Printf("got req: %v\n", r.URL.Path)
switch r.URL.Path {
@@ -330,11 +597,25 @@ func webhookHandler(w http.ResponseWriter, r *http.Request) {
}
}
+func newFakeAuthenticationInfoResolver() *fakeAuthenticationInfoResolver {
+ return &fakeAuthenticationInfoResolver{
+ restConfig: &rest.Config{
+ TLSClientConfig: rest.TLSClientConfig{
+ CAData: caCert,
+ CertData: clientCert,
+ KeyData: clientKey,
+ },
+ },
+ }
+}
+
type fakeAuthenticationInfoResolver struct {
- restConfig *rest.Config
+ restConfig *rest.Config
+ cachedCount int32
}
func (c *fakeAuthenticationInfoResolver) ClientConfigFor(server string) (*rest.Config, error) {
+ atomic.AddInt32(&c.cachedCount, 1)
return c.restConfig, nil
}
@@ -386,3 +667,100 @@ func TestToStatusErr(t *testing.T) {
}
}
}
+
+func newMatchEverythingRules() []registrationv1alpha1.RuleWithOperations {
+ return []registrationv1alpha1.RuleWithOperations{{
+ Operations: []registrationv1alpha1.OperationType{registrationv1alpha1.OperationAll},
+ Rule: registrationv1alpha1.Rule{
+ APIGroups: []string{"*"},
+ APIVersions: []string{"*"},
+ Resources: []string{"*/*"},
+ },
+ }}
+}
+
+func TestGetNamespaceLabels(t *testing.T) {
+ namespace1Labels := map[string]string{
+ "runlevel": "1",
+ }
+ namespace1 := corev1.Namespace{
+ ObjectMeta: metav1.ObjectMeta{
+ Name: "1",
+ Labels: namespace1Labels,
+ },
+ }
+ namespace2Labels := map[string]string{
+ "runlevel": "2",
+ }
+ namespace2 := corev1.Namespace{
+ ObjectMeta: metav1.ObjectMeta{
+ Name: "2",
+ Labels: namespace2Labels,
+ },
+ }
+ namespaceLister := fakeNamespaceLister{map[string]*corev1.Namespace{
+ "1": &namespace1,
+ },
+ }
+
+ tests := []struct {
+ name string
+ attr admission.Attributes
+ expectedLabels map[string]string
+ }{
+ {
+ name: "request is for creating namespace, the labels should be from the object itself",
+ attr: admission.NewAttributesRecord(&namespace2, nil, schema.GroupVersionKind{}, "", namespace2.Name, schema.GroupVersionResource{Resource: "namespaces"}, "", admission.Create, nil),
+ expectedLabels: namespace2Labels,
+ },
+ {
+ name: "request is for updating namespace, the labels should be from the new object",
+ attr: admission.NewAttributesRecord(&namespace2, nil, schema.GroupVersionKind{}, namespace2.Name, namespace2.Name, schema.GroupVersionResource{Resource: "namespaces"}, "", admission.Update, nil),
+ expectedLabels: namespace2Labels,
+ },
+ {
+ name: "request is for deleting namespace, the labels should be from the cache",
+ attr: admission.NewAttributesRecord(&namespace2, nil, schema.GroupVersionKind{}, namespace1.Name, namespace1.Name, schema.GroupVersionResource{Resource: "namespaces"}, "", admission.Delete, nil),
+ expectedLabels: namespace1Labels,
+ },
+ {
+ name: "request is for namespace/finalizer",
+ attr: admission.NewAttributesRecord(nil, nil, schema.GroupVersionKind{}, namespace1.Name, "mock-name", schema.GroupVersionResource{Resource: "namespaces"}, "finalizers", admission.Create, nil),
+ expectedLabels: namespace1Labels,
+ },
+ {
+ name: "request is for pod",
+ attr: admission.NewAttributesRecord(nil, nil, schema.GroupVersionKind{}, namespace1.Name, "mock-name", schema.GroupVersionResource{Resource: "pods"}, "", admission.Create, nil),
+ expectedLabels: namespace1Labels,
+ },
+ }
+ wh, err := NewGenericAdmissionWebhook(nil)
+ if err != nil {
+ t.Fatal(err)
+ }
+ wh.namespaceLister = namespaceLister
+ for _, tt := range tests {
+ actualLabels, err := wh.getNamespaceLabels(tt.attr)
+ if err != nil {
+ t.Error(err)
+ }
+ if !reflect.DeepEqual(actualLabels, tt.expectedLabels) {
+ t.Errorf("expected labels to be %#v, got %#v", tt.expectedLabels, actualLabels)
+ }
+ }
+}
+
+func TestExemptClusterScopedResource(t *testing.T) {
+ hook := ®istrationv1alpha1.Webhook{
+ NamespaceSelector: &metav1.LabelSelector{},
+ }
+ attr := admission.NewAttributesRecord(nil, nil, schema.GroupVersionKind{}, "", "mock-name", schema.GroupVersionResource{Version: "v1", Resource: "nodes"}, "", admission.Create, nil)
+ g := GenericAdmissionWebhook{}
+ exempted, err := g.exemptedByNamespaceSelector(hook, attr)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if !exempted {
+ t.Errorf("cluster scoped resources (but not a namespace) should be exempted from all webhooks")
+ }
+}
diff --git a/staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/authentication.go b/staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/authentication.go
index 02b63d058c..4047965828 100644
--- a/staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/authentication.go
+++ b/staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/authentication.go
@@ -17,12 +17,11 @@ limitations under the License.
package webhook
import (
+ "fmt"
"io/ioutil"
"strings"
"time"
- "fmt"
-
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
diff --git a/staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/conversion_test.go b/staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/conversion_test.go
new file mode 100644
index 0000000000..684745fd97
--- /dev/null
+++ b/staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/conversion_test.go
@@ -0,0 +1,135 @@
+/*
+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 webhook
+
+import (
+ "reflect"
+ "testing"
+
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
+ "k8s.io/apimachinery/pkg/runtime"
+ "k8s.io/apimachinery/pkg/runtime/schema"
+ "k8s.io/apiserver/pkg/apis/example"
+ examplev1 "k8s.io/apiserver/pkg/apis/example/v1"
+ example2v1 "k8s.io/apiserver/pkg/apis/example2/v1"
+)
+
+func initiateScheme() *runtime.Scheme {
+ s := runtime.NewScheme()
+ example.AddToScheme(s)
+ examplev1.AddToScheme(s)
+ example2v1.AddToScheme(s)
+ return s
+}
+
+func TestConvertToGVK(t *testing.T) {
+ scheme := initiateScheme()
+ w := GenericAdmissionWebhook{
+ convertor: scheme,
+ creator: scheme,
+ }
+ table := map[string]struct {
+ obj runtime.Object
+ gvk schema.GroupVersionKind
+ expectedObj runtime.Object
+ }{
+ "convert example#Pod to example/v1#Pod": {
+ obj: &example.Pod{
+ ObjectMeta: metav1.ObjectMeta{
+ Name: "pod1",
+ Labels: map[string]string{
+ "key": "value",
+ },
+ },
+ Spec: example.PodSpec{
+ RestartPolicy: example.RestartPolicy("never"),
+ },
+ },
+ gvk: examplev1.SchemeGroupVersion.WithKind("Pod"),
+ expectedObj: &examplev1.Pod{
+ ObjectMeta: metav1.ObjectMeta{
+ Name: "pod1",
+ Labels: map[string]string{
+ "key": "value",
+ },
+ },
+ Spec: examplev1.PodSpec{
+ RestartPolicy: examplev1.RestartPolicy("never"),
+ },
+ },
+ },
+ "convert example#replicaset to example2/v1#replicaset": {
+ obj: &example.ReplicaSet{
+ ObjectMeta: metav1.ObjectMeta{
+ Name: "rs1",
+ Labels: map[string]string{
+ "key": "value",
+ },
+ },
+ Spec: example.ReplicaSetSpec{
+ Replicas: 1,
+ },
+ },
+ gvk: example2v1.SchemeGroupVersion.WithKind("ReplicaSet"),
+ expectedObj: &example2v1.ReplicaSet{
+ ObjectMeta: metav1.ObjectMeta{
+ Name: "rs1",
+ Labels: map[string]string{
+ "key": "value",
+ },
+ },
+ Spec: example2v1.ReplicaSetSpec{
+ Replicas: func() *int32 { var i int32; i = 1; return &i }(),
+ },
+ },
+ },
+ "no conversion for Unstructured object whose gvk matches the desired gvk": {
+ obj: &unstructured.Unstructured{
+ Object: map[string]interface{}{
+ "apiVersion": "mygroup.k8s.io/v1",
+ "kind": "Flunder",
+ "data": map[string]interface{}{
+ "Key": "Value",
+ },
+ },
+ },
+ gvk: schema.GroupVersionKind{Group: "mygroup.k8s.io", Version: "v1", Kind: "Flunder"},
+ expectedObj: &unstructured.Unstructured{
+ Object: map[string]interface{}{
+ "apiVersion": "mygroup.k8s.io/v1",
+ "kind": "Flunder",
+ "data": map[string]interface{}{
+ "Key": "Value",
+ },
+ },
+ },
+ },
+ }
+
+ for name, test := range table {
+ t.Run(name, func(t *testing.T) {
+ actual, err := w.convertToGVK(test.obj, test.gvk)
+ if err != nil {
+ t.Error(err)
+ }
+ if !reflect.DeepEqual(actual, test.expectedObj) {
+ t.Errorf("\nexpected:\n%#v\ngot:\n %#v\n", test.expectedObj, actual)
+ }
+ })
+ }
+}
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/apiserver/BUILD b/staging/src/k8s.io/apiserver/pkg/apis/apiserver/BUILD
index aa4c3606f5..d8956d72be 100644
--- a/staging/src/k8s.io/apiserver/pkg/apis/apiserver/BUILD
+++ b/staging/src/k8s.io/apiserver/pkg/apis/apiserver/BUILD
@@ -16,7 +16,6 @@ go_library(
importpath = "k8s.io/apiserver/pkg/apis/apiserver",
deps = [
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/apiserver/doc.go b/staging/src/k8s.io/apiserver/pkg/apis/apiserver/doc.go
index 46880d5cb7..a89863a35f 100644
--- a/staging/src/k8s.io/apiserver/pkg/apis/apiserver/doc.go
+++ b/staging/src/k8s.io/apiserver/pkg/apis/apiserver/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// Package apiserver is the internal version of the API.
// +groupName=apiserver.k8s.io
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1/doc.go b/staging/src/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1/doc.go
index 10cc03cfed..7dd031a793 100644
--- a/staging/src/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1/doc.go
+++ b/staging/src/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:conversion-gen=k8s.io/apiserver/pkg/apis/apiserver
// +k8s:defaulter-gen=TypeMeta
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1/zz_generated.deepcopy.go b/staging/src/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1/zz_generated.deepcopy.go
index 35164ce77d..ba634e485c 100644
--- a/staging/src/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1/zz_generated.deepcopy.go
@@ -21,32 +21,9 @@ limitations under the License.
package v1alpha1
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*AdmissionConfiguration).DeepCopyInto(out.(*AdmissionConfiguration))
- return nil
- }, InType: reflect.TypeOf(&AdmissionConfiguration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*AdmissionPluginConfiguration).DeepCopyInto(out.(*AdmissionPluginConfiguration))
- return nil
- }, InType: reflect.TypeOf(&AdmissionPluginConfiguration{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *AdmissionConfiguration) DeepCopyInto(out *AdmissionConfiguration) {
*out = *in
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/apiserver/zz_generated.deepcopy.go b/staging/src/k8s.io/apiserver/pkg/apis/apiserver/zz_generated.deepcopy.go
index b455115d81..5a67e612df 100644
--- a/staging/src/k8s.io/apiserver/pkg/apis/apiserver/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/apiserver/pkg/apis/apiserver/zz_generated.deepcopy.go
@@ -21,32 +21,9 @@ limitations under the License.
package apiserver
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*AdmissionConfiguration).DeepCopyInto(out.(*AdmissionConfiguration))
- return nil
- }, InType: reflect.TypeOf(&AdmissionConfiguration{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*AdmissionPluginConfiguration).DeepCopyInto(out.(*AdmissionPluginConfiguration))
- return nil
- }, InType: reflect.TypeOf(&AdmissionPluginConfiguration{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *AdmissionConfiguration) DeepCopyInto(out *AdmissionConfiguration) {
*out = *in
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/audit/BUILD b/staging/src/k8s.io/apiserver/pkg/apis/audit/BUILD
index fc5d519776..2388d79f8c 100644
--- a/staging/src/k8s.io/apiserver/pkg/apis/audit/BUILD
+++ b/staging/src/k8s.io/apiserver/pkg/apis/audit/BUILD
@@ -17,7 +17,6 @@ go_library(
importpath = "k8s.io/apiserver/pkg/apis/audit",
deps = [
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/audit/register.go b/staging/src/k8s.io/apiserver/pkg/apis/audit/register.go
index e14b82c1b1..9abf739ae0 100644
--- a/staging/src/k8s.io/apiserver/pkg/apis/audit/register.go
+++ b/staging/src/k8s.io/apiserver/pkg/apis/audit/register.go
@@ -49,6 +49,5 @@ func addKnownTypes(scheme *runtime.Scheme) error {
&Policy{},
&PolicyList{},
)
- scheme.AddGeneratedDeepCopyFuncs(GetGeneratedDeepCopyFuncs()...)
return nil
}
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/audit/v1alpha1/doc.go b/staging/src/k8s.io/apiserver/pkg/apis/audit/v1alpha1/doc.go
index b7020f207b..27cc4c5ea5 100644
--- a/staging/src/k8s.io/apiserver/pkg/apis/audit/v1alpha1/doc.go
+++ b/staging/src/k8s.io/apiserver/pkg/apis/audit/v1alpha1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:conversion-gen=k8s.io/apiserver/pkg/apis/audit
// +k8s:openapi-gen=true
// +k8s:defaulter-gen=TypeMeta
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/audit/v1alpha1/zz_generated.deepcopy.go b/staging/src/k8s.io/apiserver/pkg/apis/audit/v1alpha1/zz_generated.deepcopy.go
index 5bc4218ecb..88c7b8e39f 100644
--- a/staging/src/k8s.io/apiserver/pkg/apis/audit/v1alpha1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/apiserver/pkg/apis/audit/v1alpha1/zz_generated.deepcopy.go
@@ -23,52 +23,9 @@ package v1alpha1
import (
v1 "k8s.io/api/authentication/v1"
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Event).DeepCopyInto(out.(*Event))
- return nil
- }, InType: reflect.TypeOf(&Event{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*EventList).DeepCopyInto(out.(*EventList))
- return nil
- }, InType: reflect.TypeOf(&EventList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*GroupResources).DeepCopyInto(out.(*GroupResources))
- return nil
- }, InType: reflect.TypeOf(&GroupResources{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ObjectReference).DeepCopyInto(out.(*ObjectReference))
- return nil
- }, InType: reflect.TypeOf(&ObjectReference{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Policy).DeepCopyInto(out.(*Policy))
- return nil
- }, InType: reflect.TypeOf(&Policy{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PolicyList).DeepCopyInto(out.(*PolicyList))
- return nil
- }, InType: reflect.TypeOf(&PolicyList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PolicyRule).DeepCopyInto(out.(*PolicyRule))
- return nil
- }, InType: reflect.TypeOf(&PolicyRule{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Event) DeepCopyInto(out *Event) {
*out = *in
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/audit/v1beta1/doc.go b/staging/src/k8s.io/apiserver/pkg/apis/audit/v1beta1/doc.go
index 226d9263a8..3881472586 100644
--- a/staging/src/k8s.io/apiserver/pkg/apis/audit/v1beta1/doc.go
+++ b/staging/src/k8s.io/apiserver/pkg/apis/audit/v1beta1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:conversion-gen=k8s.io/apiserver/pkg/apis/audit
// +k8s:openapi-gen=true
// +k8s:defaulter-gen=TypeMeta
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/audit/v1beta1/zz_generated.deepcopy.go b/staging/src/k8s.io/apiserver/pkg/apis/audit/v1beta1/zz_generated.deepcopy.go
index 8b1014a7fd..d00753cec5 100644
--- a/staging/src/k8s.io/apiserver/pkg/apis/audit/v1beta1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/apiserver/pkg/apis/audit/v1beta1/zz_generated.deepcopy.go
@@ -23,52 +23,9 @@ package v1beta1
import (
v1 "k8s.io/api/authentication/v1"
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Event).DeepCopyInto(out.(*Event))
- return nil
- }, InType: reflect.TypeOf(&Event{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*EventList).DeepCopyInto(out.(*EventList))
- return nil
- }, InType: reflect.TypeOf(&EventList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*GroupResources).DeepCopyInto(out.(*GroupResources))
- return nil
- }, InType: reflect.TypeOf(&GroupResources{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ObjectReference).DeepCopyInto(out.(*ObjectReference))
- return nil
- }, InType: reflect.TypeOf(&ObjectReference{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Policy).DeepCopyInto(out.(*Policy))
- return nil
- }, InType: reflect.TypeOf(&Policy{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PolicyList).DeepCopyInto(out.(*PolicyList))
- return nil
- }, InType: reflect.TypeOf(&PolicyList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PolicyRule).DeepCopyInto(out.(*PolicyRule))
- return nil
- }, InType: reflect.TypeOf(&PolicyRule{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Event) DeepCopyInto(out *Event) {
*out = *in
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/audit/zz_generated.deepcopy.go b/staging/src/k8s.io/apiserver/pkg/apis/audit/zz_generated.deepcopy.go
index 62b1f23d71..4a276ddb5b 100644
--- a/staging/src/k8s.io/apiserver/pkg/apis/audit/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/apiserver/pkg/apis/audit/zz_generated.deepcopy.go
@@ -22,51 +22,9 @@ package audit
import (
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc {
- return []conversion.GeneratedDeepCopyFunc{
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Event).DeepCopyInto(out.(*Event))
- return nil
- }, InType: reflect.TypeOf(&Event{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*EventList).DeepCopyInto(out.(*EventList))
- return nil
- }, InType: reflect.TypeOf(&EventList{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*GroupResources).DeepCopyInto(out.(*GroupResources))
- return nil
- }, InType: reflect.TypeOf(&GroupResources{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ObjectReference).DeepCopyInto(out.(*ObjectReference))
- return nil
- }, InType: reflect.TypeOf(&ObjectReference{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Policy).DeepCopyInto(out.(*Policy))
- return nil
- }, InType: reflect.TypeOf(&Policy{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PolicyList).DeepCopyInto(out.(*PolicyList))
- return nil
- }, InType: reflect.TypeOf(&PolicyList{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PolicyRule).DeepCopyInto(out.(*PolicyRule))
- return nil
- }, InType: reflect.TypeOf(&PolicyRule{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*UserInfo).DeepCopyInto(out.(*UserInfo))
- return nil
- }, InType: reflect.TypeOf(&UserInfo{})},
- }
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Event) DeepCopyInto(out *Event) {
*out = *in
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/example/BUILD b/staging/src/k8s.io/apiserver/pkg/apis/example/BUILD
index ddc12bc71b..3bd547f02b 100644
--- a/staging/src/k8s.io/apiserver/pkg/apis/example/BUILD
+++ b/staging/src/k8s.io/apiserver/pkg/apis/example/BUILD
@@ -16,7 +16,6 @@ go_library(
importpath = "k8s.io/apiserver/pkg/apis/example",
deps = [
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/example/doc.go b/staging/src/k8s.io/apiserver/pkg/apis/example/doc.go
index cb410d443b..2676eee819 100644
--- a/staging/src/k8s.io/apiserver/pkg/apis/example/doc.go
+++ b/staging/src/k8s.io/apiserver/pkg/apis/example/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +groupName=example.k8s.io
//
// package example contains an example API used to demonstrate how to create api groups. Moreover, this is
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/example/install/install.go b/staging/src/k8s.io/apiserver/pkg/apis/example/install/install.go
index e44a29e5a9..5352108e78 100644
--- a/staging/src/k8s.io/apiserver/pkg/apis/example/install/install.go
+++ b/staging/src/k8s.io/apiserver/pkg/apis/example/install/install.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// Package install installs the certificates API group, making it available as
+// Package install installs the example API group, making it available as
// an option to all of the API encoding/decoding machinery.
package install
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/example/register.go b/staging/src/k8s.io/apiserver/pkg/apis/example/register.go
index adaced616c..d25456b0c5 100644
--- a/staging/src/k8s.io/apiserver/pkg/apis/example/register.go
+++ b/staging/src/k8s.io/apiserver/pkg/apis/example/register.go
@@ -46,6 +46,7 @@ func Resource(resource string) schema.GroupResource {
func addKnownTypes(scheme *runtime.Scheme) error {
scheme.AddKnownTypes(SchemeGroupVersion,
&Pod{},
+ &ReplicaSet{},
)
return nil
}
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/example/types.go b/staging/src/k8s.io/apiserver/pkg/apis/example/types.go
index 6dd3e21724..243c1c0330 100644
--- a/staging/src/k8s.io/apiserver/pkg/apis/example/types.go
+++ b/staging/src/k8s.io/apiserver/pkg/apis/example/types.go
@@ -136,3 +136,35 @@ type PodList struct {
Items []Pod
}
+
+// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
+
+// ReplicaSet ensures that a specified number of pod replicas are running at any given time.
+type ReplicaSet struct {
+ metav1.TypeMeta
+ // +optional
+ metav1.ObjectMeta
+
+ // Spec defines the desired behavior of this ReplicaSet.
+ // +optional
+ Spec ReplicaSetSpec
+
+ // Status is the current status of this ReplicaSet. This data may be
+ // out of date by some window of time.
+ // +optional
+ Status ReplicaSetStatus
+}
+
+// ReplicaSetSpec is the specification of a ReplicaSet.
+// As the internal representation of a ReplicaSet, it must have
+// a Template set.
+type ReplicaSetSpec struct {
+ // Replicas is the number of desired replicas.
+ Replicas int32
+}
+
+// ReplicaSetStatus represents the current status of a ReplicaSet.
+type ReplicaSetStatus struct {
+ // Replicas is the number of actual replicas.
+ Replicas int32
+}
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/example/v1/doc.go b/staging/src/k8s.io/apiserver/pkg/apis/example/v1/doc.go
index 819ae5ef7a..4b22d37fb2 100644
--- a/staging/src/k8s.io/apiserver/pkg/apis/example/v1/doc.go
+++ b/staging/src/k8s.io/apiserver/pkg/apis/example/v1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:conversion-gen=k8s.io/apiserver/pkg/apis/example
// +k8s:openapi-gen=false
// +k8s:defaulter-gen=TypeMeta
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/example/v1/zz_generated.deepcopy.go b/staging/src/k8s.io/apiserver/pkg/apis/example/v1/zz_generated.deepcopy.go
index 2187f876ed..e3b7b26fc9 100644
--- a/staging/src/k8s.io/apiserver/pkg/apis/example/v1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/apiserver/pkg/apis/example/v1/zz_generated.deepcopy.go
@@ -22,44 +22,9 @@ package v1
import (
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Pod).DeepCopyInto(out.(*Pod))
- return nil
- }, InType: reflect.TypeOf(&Pod{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodCondition).DeepCopyInto(out.(*PodCondition))
- return nil
- }, InType: reflect.TypeOf(&PodCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodList).DeepCopyInto(out.(*PodList))
- return nil
- }, InType: reflect.TypeOf(&PodList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodSpec).DeepCopyInto(out.(*PodSpec))
- return nil
- }, InType: reflect.TypeOf(&PodSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodStatus).DeepCopyInto(out.(*PodStatus))
- return nil
- }, InType: reflect.TypeOf(&PodStatus{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Pod) DeepCopyInto(out *Pod) {
*out = *in
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/example/zz_generated.deepcopy.go b/staging/src/k8s.io/apiserver/pkg/apis/example/zz_generated.deepcopy.go
index 02ba7f8c23..7d9cf5f2db 100644
--- a/staging/src/k8s.io/apiserver/pkg/apis/example/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/apiserver/pkg/apis/example/zz_generated.deepcopy.go
@@ -22,44 +22,9 @@ package example
import (
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Pod).DeepCopyInto(out.(*Pod))
- return nil
- }, InType: reflect.TypeOf(&Pod{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodCondition).DeepCopyInto(out.(*PodCondition))
- return nil
- }, InType: reflect.TypeOf(&PodCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodList).DeepCopyInto(out.(*PodList))
- return nil
- }, InType: reflect.TypeOf(&PodList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodSpec).DeepCopyInto(out.(*PodSpec))
- return nil
- }, InType: reflect.TypeOf(&PodSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodStatus).DeepCopyInto(out.(*PodStatus))
- return nil
- }, InType: reflect.TypeOf(&PodStatus{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Pod) DeepCopyInto(out *Pod) {
*out = *in
@@ -213,3 +178,64 @@ func (in *PodStatus) DeepCopy() *PodStatus {
in.DeepCopyInto(out)
return out
}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ReplicaSet) DeepCopyInto(out *ReplicaSet) {
+ *out = *in
+ out.TypeMeta = in.TypeMeta
+ in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
+ out.Spec = in.Spec
+ out.Status = in.Status
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicaSet.
+func (in *ReplicaSet) DeepCopy() *ReplicaSet {
+ if in == nil {
+ return nil
+ }
+ out := new(ReplicaSet)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
+func (in *ReplicaSet) DeepCopyObject() runtime.Object {
+ if c := in.DeepCopy(); c != nil {
+ return c
+ } else {
+ return nil
+ }
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ReplicaSetSpec) DeepCopyInto(out *ReplicaSetSpec) {
+ *out = *in
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicaSetSpec.
+func (in *ReplicaSetSpec) DeepCopy() *ReplicaSetSpec {
+ if in == nil {
+ return nil
+ }
+ out := new(ReplicaSetSpec)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ReplicaSetStatus) DeepCopyInto(out *ReplicaSetStatus) {
+ *out = *in
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicaSetStatus.
+func (in *ReplicaSetStatus) DeepCopy() *ReplicaSetStatus {
+ if in == nil {
+ return nil
+ }
+ out := new(ReplicaSetStatus)
+ in.DeepCopyInto(out)
+ return out
+}
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/example2/BUILD b/staging/src/k8s.io/apiserver/pkg/apis/example2/BUILD
new file mode 100644
index 0000000000..d0948caf75
--- /dev/null
+++ b/staging/src/k8s.io/apiserver/pkg/apis/example2/BUILD
@@ -0,0 +1,38 @@
+package(default_visibility = ["//visibility:public"])
+
+load(
+ "@io_bazel_rules_go//go:def.bzl",
+ "go_library",
+)
+
+go_library(
+ name = "go_default_library",
+ srcs = [
+ "doc.go",
+ "register.go",
+ "zz_generated.deepcopy.go",
+ ],
+ importpath = "k8s.io/apiserver/pkg/apis/example2",
+ deps = [
+ "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
+ "//vendor/k8s.io/apiserver/pkg/apis/example:go_default_library",
+ ],
+)
+
+filegroup(
+ name = "package-srcs",
+ srcs = glob(["**"]),
+ tags = ["automanaged"],
+ visibility = ["//visibility:private"],
+)
+
+filegroup(
+ name = "all-srcs",
+ srcs = [
+ ":package-srcs",
+ "//staging/src/k8s.io/apiserver/pkg/apis/example2/install:all-srcs",
+ "//staging/src/k8s.io/apiserver/pkg/apis/example2/v1:all-srcs",
+ ],
+ tags = ["automanaged"],
+)
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/example2/doc.go b/staging/src/k8s.io/apiserver/pkg/apis/example2/doc.go
new file mode 100644
index 0000000000..ae0ecc109e
--- /dev/null
+++ b/staging/src/k8s.io/apiserver/pkg/apis/example2/doc.go
@@ -0,0 +1,24 @@
+/*
+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.
+*/
+
+// +k8s:deepcopy-gen=package
+// +groupName=example2.k8s.io
+//
+// package example2 contains an example API whose internal version is defined in
+// another group ("example"). This happens if a type is moved to a different
+// group. It's not recommended to move types across groups, though Kubernetes
+// have a few cases due to historical reasons. This package is for tests.
+package example2 // import "k8s.io/apiserver/pkg/apis/example2"
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/example2/install/BUILD b/staging/src/k8s.io/apiserver/pkg/apis/example2/install/BUILD
new file mode 100644
index 0000000000..30d67d3136
--- /dev/null
+++ b/staging/src/k8s.io/apiserver/pkg/apis/example2/install/BUILD
@@ -0,0 +1,45 @@
+package(default_visibility = ["//visibility:public"])
+
+load(
+ "@io_bazel_rules_go//go:def.bzl",
+ "go_library",
+ "go_test",
+)
+
+go_library(
+ name = "go_default_library",
+ srcs = ["install.go"],
+ importpath = "k8s.io/apiserver/pkg/apis/example2/install",
+ deps = [
+ "//vendor/k8s.io/apimachinery/pkg/apimachinery/announced:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/apimachinery/registered:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
+ "//vendor/k8s.io/apiserver/pkg/apis/example:go_default_library",
+ "//vendor/k8s.io/apiserver/pkg/apis/example2:go_default_library",
+ "//vendor/k8s.io/apiserver/pkg/apis/example2/v1:go_default_library",
+ ],
+)
+
+go_test(
+ name = "go_default_test",
+ srcs = ["roundtrip_test.go"],
+ importpath = "k8s.io/apiserver/pkg/apis/example2/install",
+ library = ":go_default_library",
+ deps = [
+ "//vendor/k8s.io/apimachinery/pkg/api/testing/roundtrip:go_default_library",
+ "//vendor/k8s.io/apiserver/pkg/apis/example/fuzzer:go_default_library",
+ ],
+)
+
+filegroup(
+ name = "package-srcs",
+ srcs = glob(["**"]),
+ tags = ["automanaged"],
+ visibility = ["//visibility:private"],
+)
+
+filegroup(
+ name = "all-srcs",
+ srcs = [":package-srcs"],
+ tags = ["automanaged"],
+)
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/example2/install/install.go b/staging/src/k8s.io/apiserver/pkg/apis/example2/install/install.go
new file mode 100644
index 0000000000..8980ecbefd
--- /dev/null
+++ b/staging/src/k8s.io/apiserver/pkg/apis/example2/install/install.go
@@ -0,0 +1,44 @@
+/*
+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 install installs the example2 API group, making it available as
+// an option to all of the API encoding/decoding machinery.
+package install
+
+import (
+ "k8s.io/apimachinery/pkg/apimachinery/announced"
+ "k8s.io/apimachinery/pkg/apimachinery/registered"
+ "k8s.io/apimachinery/pkg/runtime"
+ "k8s.io/apiserver/pkg/apis/example"
+ "k8s.io/apiserver/pkg/apis/example2"
+ example2v1 "k8s.io/apiserver/pkg/apis/example2/v1"
+)
+
+// Install registers the API group and adds types to a scheme
+func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
+ if err := announced.NewGroupMetaFactory(
+ &announced.GroupMetaFactoryArgs{
+ GroupName: example2.GroupName,
+ VersionPreferenceOrder: []string{example2v1.SchemeGroupVersion.Version},
+ AddInternalObjectsToScheme: example.AddToScheme,
+ },
+ announced.VersionToSchemeFunc{
+ example2v1.SchemeGroupVersion.Version: example2v1.AddToScheme,
+ },
+ ).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
+ panic(err)
+ }
+}
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/example2/install/roundtrip_test.go b/staging/src/k8s.io/apiserver/pkg/apis/example2/install/roundtrip_test.go
new file mode 100644
index 0000000000..7f8d4e82a6
--- /dev/null
+++ b/staging/src/k8s.io/apiserver/pkg/apis/example2/install/roundtrip_test.go
@@ -0,0 +1,28 @@
+/*
+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 install
+
+import (
+ "testing"
+
+ "k8s.io/apimachinery/pkg/api/testing/roundtrip"
+ examplefuzzer "k8s.io/apiserver/pkg/apis/example/fuzzer"
+)
+
+func TestRoundTrip(t *testing.T) {
+ roundtrip.RoundTripTestForAPIGroup(t, Install, examplefuzzer.Funcs)
+}
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/example2/register.go b/staging/src/k8s.io/apiserver/pkg/apis/example2/register.go
new file mode 100644
index 0000000000..c9b2fd79af
--- /dev/null
+++ b/staging/src/k8s.io/apiserver/pkg/apis/example2/register.go
@@ -0,0 +1,52 @@
+/*
+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 example2
+
+import (
+ "k8s.io/apimachinery/pkg/runtime"
+ "k8s.io/apimachinery/pkg/runtime/schema"
+ "k8s.io/apiserver/pkg/apis/example"
+)
+
+var (
+ SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes)
+ AddToScheme = SchemeBuilder.AddToScheme
+)
+
+// GroupName is the group name use in this package
+const GroupName = "example2.apiserver.k8s.io"
+
+// SchemeGroupVersion is group version used to register these objects
+var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal}
+
+// Kind takes an unqualified kind and returns a Group qualified GroupKind
+func Kind(kind string) schema.GroupKind {
+ return SchemeGroupVersion.WithKind(kind).GroupKind()
+}
+
+// Resource takes an unqualified resource and returns a Group qualified GroupResource
+func Resource(resource string) schema.GroupResource {
+ return SchemeGroupVersion.WithResource(resource).GroupResource()
+}
+
+// Adds the list of known types to the given scheme.
+func addKnownTypes(scheme *runtime.Scheme) error {
+ scheme.AddKnownTypes(SchemeGroupVersion,
+ &example.ReplicaSet{},
+ )
+ return nil
+}
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/BUILD b/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/BUILD
new file mode 100644
index 0000000000..92280a1a1c
--- /dev/null
+++ b/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/BUILD
@@ -0,0 +1,50 @@
+package(default_visibility = ["//visibility:public"])
+
+load(
+ "@io_bazel_rules_go//go:def.bzl",
+ "go_library",
+)
+
+go_library(
+ name = "go_default_library",
+ srcs = [
+ "conversion.go",
+ "defaults.go",
+ "doc.go",
+ "generated.pb.go",
+ "register.go",
+ "types.go",
+ "types_swagger_doc_generated.go",
+ "zz_generated.conversion.go",
+ "zz_generated.deepcopy.go",
+ "zz_generated.defaults.go",
+ ],
+ importpath = "k8s.io/apiserver/pkg/apis/example2/v1",
+ deps = [
+ "//vendor/github.com/gogo/protobuf/proto:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
+ "//vendor/k8s.io/apiserver/pkg/apis/example:go_default_library",
+ ],
+)
+
+filegroup(
+ name = "package-srcs",
+ srcs = glob(["**"]),
+ tags = ["automanaged"],
+ visibility = ["//visibility:private"],
+)
+
+filegroup(
+ name = "all-srcs",
+ srcs = [":package-srcs"],
+ tags = ["automanaged"],
+)
+
+filegroup(
+ name = "go_default_library_protos",
+ srcs = ["generated.proto"],
+ visibility = ["//visibility:public"],
+)
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/conversion.go b/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/conversion.go
new file mode 100644
index 0000000000..21abdefd5d
--- /dev/null
+++ b/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/conversion.go
@@ -0,0 +1,51 @@
+/*
+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 v1
+
+import (
+ conversion "k8s.io/apimachinery/pkg/conversion"
+ "k8s.io/apimachinery/pkg/runtime"
+ example "k8s.io/apiserver/pkg/apis/example"
+)
+
+func addConversionFuncs(scheme *runtime.Scheme) error {
+ // Add non-generated conversion functions to handle the *int32 -> int32
+ // conversion. A pointer is useful in the versioned type so we can default
+ // it, but a plain int32 is more convenient in the internal type. These
+ // functions are the same as the autogenerated ones in every other way.
+ err := scheme.AddConversionFuncs(
+ Convert_example_ReplicaSetSpec_To_v1_ReplicaSetSpec,
+ Convert_v1_ReplicaSetSpec_To_example_ReplicaSetSpec,
+ )
+ if err != nil {
+ return err
+ }
+ return nil
+}
+
+func Convert_example_ReplicaSetSpec_To_v1_ReplicaSetSpec(in *example.ReplicaSetSpec, out *ReplicaSetSpec, s conversion.Scope) error {
+ out.Replicas = new(int32)
+ *out.Replicas = int32(in.Replicas)
+ return nil
+}
+
+func Convert_v1_ReplicaSetSpec_To_example_ReplicaSetSpec(in *ReplicaSetSpec, out *example.ReplicaSetSpec, s conversion.Scope) error {
+ if in.Replicas != nil {
+ out.Replicas = *in.Replicas
+ }
+ return nil
+}
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/defaults.go b/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/defaults.go
new file mode 100644
index 0000000000..436ccde296
--- /dev/null
+++ b/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/defaults.go
@@ -0,0 +1,26 @@
+/*
+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 v1
+
+import (
+ "k8s.io/apimachinery/pkg/runtime"
+)
+
+func addDefaultingFuncs(scheme *runtime.Scheme) error {
+ // return RegisterDefaults(scheme)
+ return nil
+}
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/doc.go b/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/doc.go
new file mode 100644
index 0000000000..5784d44f39
--- /dev/null
+++ b/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/doc.go
@@ -0,0 +1,24 @@
+/*
+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.
+*/
+
+// +k8s:deepcopy-gen=package
+// +k8s:conversion-gen=k8s.io/apiserver/pkg/apis/example2
+// +k8s:conversion-gen=k8s.io/apiserver/pkg/apis/example
+// +k8s:openapi-gen=false
+// +k8s:defaulter-gen=TypeMeta
+
+// +groupName=example2.apiserver.k8s.io
+package v1 // import "k8s.io/apiserver/pkg/apis/example2/v1"
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/generated.pb.go b/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/generated.pb.go
new file mode 100644
index 0000000000..c65d6f1da2
--- /dev/null
+++ b/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/generated.pb.go
@@ -0,0 +1,682 @@
+/*
+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.
+*/
+
+// Code generated by protoc-gen-gogo.
+// source: k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/apis/example2/v1/generated.proto
+// DO NOT EDIT!
+
+/*
+ Package v1 is a generated protocol buffer package.
+
+ It is generated from these files:
+ k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/apis/example2/v1/generated.proto
+
+ It has these top-level messages:
+ ReplicaSet
+ ReplicaSetSpec
+ ReplicaSetStatus
+*/
+package v1
+
+import proto "github.com/gogo/protobuf/proto"
+import fmt "fmt"
+import math "math"
+
+import strings "strings"
+import reflect "reflect"
+
+import io "io"
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package
+
+func (m *ReplicaSet) Reset() { *m = ReplicaSet{} }
+func (*ReplicaSet) ProtoMessage() {}
+func (*ReplicaSet) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} }
+
+func (m *ReplicaSetSpec) Reset() { *m = ReplicaSetSpec{} }
+func (*ReplicaSetSpec) ProtoMessage() {}
+func (*ReplicaSetSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} }
+
+func (m *ReplicaSetStatus) Reset() { *m = ReplicaSetStatus{} }
+func (*ReplicaSetStatus) ProtoMessage() {}
+func (*ReplicaSetStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} }
+
+func init() {
+ proto.RegisterType((*ReplicaSet)(nil), "k8s.io.apiserver.pkg.apis.example2.v1.ReplicaSet")
+ proto.RegisterType((*ReplicaSetSpec)(nil), "k8s.io.apiserver.pkg.apis.example2.v1.ReplicaSetSpec")
+ proto.RegisterType((*ReplicaSetStatus)(nil), "k8s.io.apiserver.pkg.apis.example2.v1.ReplicaSetStatus")
+}
+func (m *ReplicaSet) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ReplicaSet) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size()))
+ n1, err := m.ObjectMeta.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n1
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size()))
+ n2, err := m.Spec.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n2
+ dAtA[i] = 0x1a
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size()))
+ n3, err := m.Status.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n3
+ return i, nil
+}
+
+func (m *ReplicaSetSpec) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ReplicaSetSpec) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Replicas != nil {
+ dAtA[i] = 0x8
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(*m.Replicas))
+ }
+ return i, nil
+}
+
+func (m *ReplicaSetStatus) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ReplicaSetStatus) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ dAtA[i] = 0x8
+ i++
+ i = encodeVarintGenerated(dAtA, i, uint64(m.Replicas))
+ return i, nil
+}
+
+func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int {
+ dAtA[offset] = uint8(v)
+ dAtA[offset+1] = uint8(v >> 8)
+ dAtA[offset+2] = uint8(v >> 16)
+ dAtA[offset+3] = uint8(v >> 24)
+ dAtA[offset+4] = uint8(v >> 32)
+ dAtA[offset+5] = uint8(v >> 40)
+ dAtA[offset+6] = uint8(v >> 48)
+ dAtA[offset+7] = uint8(v >> 56)
+ return offset + 8
+}
+func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int {
+ dAtA[offset] = uint8(v)
+ dAtA[offset+1] = uint8(v >> 8)
+ dAtA[offset+2] = uint8(v >> 16)
+ dAtA[offset+3] = uint8(v >> 24)
+ return offset + 4
+}
+func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
+ for v >= 1<<7 {
+ dAtA[offset] = uint8(v&0x7f | 0x80)
+ v >>= 7
+ offset++
+ }
+ dAtA[offset] = uint8(v)
+ return offset + 1
+}
+func (m *ReplicaSet) Size() (n int) {
+ var l int
+ _ = l
+ l = m.ObjectMeta.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ l = m.Spec.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ l = m.Status.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ return n
+}
+
+func (m *ReplicaSetSpec) Size() (n int) {
+ var l int
+ _ = l
+ if m.Replicas != nil {
+ n += 1 + sovGenerated(uint64(*m.Replicas))
+ }
+ return n
+}
+
+func (m *ReplicaSetStatus) Size() (n int) {
+ var l int
+ _ = l
+ n += 1 + sovGenerated(uint64(m.Replicas))
+ return n
+}
+
+func sovGenerated(x uint64) (n int) {
+ for {
+ n++
+ x >>= 7
+ if x == 0 {
+ break
+ }
+ }
+ return n
+}
+func sozGenerated(x uint64) (n int) {
+ return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63))))
+}
+func (this *ReplicaSet) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&ReplicaSet{`,
+ `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
+ `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ReplicaSetSpec", "ReplicaSetSpec", 1), `&`, ``, 1) + `,`,
+ `Status:` + strings.Replace(strings.Replace(this.Status.String(), "ReplicaSetStatus", "ReplicaSetStatus", 1), `&`, ``, 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ReplicaSetSpec) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&ReplicaSetSpec{`,
+ `Replicas:` + valueToStringGenerated(this.Replicas) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ReplicaSetStatus) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&ReplicaSetStatus{`,
+ `Replicas:` + fmt.Sprintf("%v", this.Replicas) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func valueToStringGenerated(v interface{}) string {
+ rv := reflect.ValueOf(v)
+ if rv.IsNil() {
+ return "nil"
+ }
+ pv := reflect.Indirect(rv).Interface()
+ return fmt.Sprintf("*%v", pv)
+}
+func (m *ReplicaSet) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ReplicaSet: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ReplicaSet: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipGenerated(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ReplicaSetSpec) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ReplicaSetSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ReplicaSetSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType)
+ }
+ var v int32
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= (int32(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Replicas = &v
+ default:
+ iNdEx = preIndex
+ skippy, err := skipGenerated(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ReplicaSetStatus) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ReplicaSetStatus: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ReplicaSetStatus: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType)
+ }
+ m.Replicas = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Replicas |= (int32(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipGenerated(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func skipGenerated(dAtA []byte) (n int, err error) {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ wireType := int(wire & 0x7)
+ switch wireType {
+ case 0:
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ iNdEx++
+ if dAtA[iNdEx-1] < 0x80 {
+ break
+ }
+ }
+ return iNdEx, nil
+ case 1:
+ iNdEx += 8
+ return iNdEx, nil
+ case 2:
+ var length int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ length |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ iNdEx += length
+ if length < 0 {
+ return 0, ErrInvalidLengthGenerated
+ }
+ return iNdEx, nil
+ case 3:
+ for {
+ var innerWire uint64
+ var start int = iNdEx
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ innerWire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ innerWireType := int(innerWire & 0x7)
+ if innerWireType == 4 {
+ break
+ }
+ next, err := skipGenerated(dAtA[start:])
+ if err != nil {
+ return 0, err
+ }
+ iNdEx = start + next
+ }
+ return iNdEx, nil
+ case 4:
+ return iNdEx, nil
+ case 5:
+ iNdEx += 4
+ return iNdEx, nil
+ default:
+ return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
+ }
+ }
+ panic("unreachable")
+}
+
+var (
+ ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling")
+ ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow")
+)
+
+func init() {
+ proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/apis/example2/v1/generated.proto", fileDescriptorGenerated)
+}
+
+var fileDescriptorGenerated = []byte{
+ // 421 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x91, 0xcf, 0x8e, 0xd3, 0x30,
+ 0x10, 0x87, 0x93, 0xb2, 0xac, 0x2a, 0xb3, 0x5a, 0xad, 0x72, 0xaa, 0x7a, 0x70, 0x51, 0x24, 0xa4,
+ 0x1e, 0xc0, 0x26, 0xcb, 0x5f, 0x71, 0x42, 0xb9, 0x03, 0x52, 0xf6, 0x80, 0xc4, 0x05, 0x1c, 0x77,
+ 0x48, 0x4d, 0x9a, 0xd8, 0xb2, 0x9d, 0x08, 0x6e, 0x3c, 0x02, 0x8f, 0xc1, 0xa3, 0xf4, 0xb8, 0xc7,
+ 0x3d, 0x55, 0x34, 0xbc, 0x08, 0xaa, 0x13, 0x12, 0xb1, 0xed, 0x0a, 0xb8, 0xe5, 0x67, 0xcf, 0xf7,
+ 0xcd, 0x64, 0x8c, 0x5e, 0xe7, 0xcf, 0x0d, 0x11, 0x92, 0xe6, 0x55, 0x0a, 0xba, 0x04, 0x0b, 0x86,
+ 0xd6, 0x50, 0x2e, 0xa4, 0xa6, 0xdd, 0x05, 0x53, 0xc2, 0x80, 0xae, 0x41, 0x53, 0x95, 0x67, 0x2e,
+ 0x51, 0xf8, 0xcc, 0x0a, 0xb5, 0x82, 0x73, 0x5a, 0x47, 0x34, 0x83, 0x12, 0x34, 0xb3, 0xb0, 0x20,
+ 0x4a, 0x4b, 0x2b, 0x83, 0x7b, 0x2d, 0x46, 0x7a, 0x8c, 0xa8, 0x3c, 0x73, 0x89, 0xfc, 0xc6, 0x48,
+ 0x1d, 0x4d, 0x1f, 0x64, 0xc2, 0x2e, 0xab, 0x94, 0x70, 0x59, 0xd0, 0x4c, 0x66, 0x92, 0x3a, 0x3a,
+ 0xad, 0x3e, 0xba, 0xe4, 0x82, 0xfb, 0x6a, 0xad, 0xd3, 0x70, 0x18, 0x86, 0x72, 0xa9, 0xe1, 0x40,
+ 0xe7, 0xe9, 0xe3, 0xa1, 0xa6, 0x60, 0x7c, 0x29, 0x4a, 0xd0, 0x5f, 0x86, 0x99, 0x0b, 0xb0, 0xec,
+ 0x10, 0x45, 0x6f, 0xa2, 0x74, 0x55, 0x5a, 0x51, 0xc0, 0x1e, 0xf0, 0xf4, 0x6f, 0x80, 0xe1, 0x4b,
+ 0x28, 0xd8, 0x1e, 0xf7, 0xe8, 0x26, 0xae, 0xb2, 0x62, 0x45, 0x45, 0x69, 0x8d, 0xd5, 0xd7, 0xa1,
+ 0xf0, 0xfb, 0x08, 0xa1, 0x04, 0xd4, 0x4a, 0x70, 0x76, 0x01, 0x36, 0xf8, 0x80, 0xc6, 0xbb, 0xff,
+ 0x58, 0x30, 0xcb, 0x26, 0xfe, 0x5d, 0x7f, 0x7e, 0xe7, 0xfc, 0x21, 0x19, 0xf6, 0xdd, 0x6b, 0x87,
+ 0x95, 0xef, 0xaa, 0x49, 0x1d, 0x91, 0x37, 0xe9, 0x27, 0xe0, 0xf6, 0x15, 0x58, 0x16, 0x07, 0xeb,
+ 0xcd, 0xcc, 0x6b, 0x36, 0x33, 0x34, 0x9c, 0x25, 0xbd, 0x35, 0x78, 0x8b, 0x8e, 0x8c, 0x02, 0x3e,
+ 0x19, 0x39, 0xfb, 0x13, 0xf2, 0x4f, 0xaf, 0x49, 0x86, 0x11, 0x2f, 0x14, 0xf0, 0xf8, 0xa4, 0x6b,
+ 0x71, 0xb4, 0x4b, 0x89, 0x13, 0x06, 0xef, 0xd1, 0xb1, 0xb1, 0xcc, 0x56, 0x66, 0x72, 0xcb, 0xa9,
+ 0x9f, 0xfd, 0xbf, 0xda, 0xe1, 0xf1, 0x69, 0x27, 0x3f, 0x6e, 0x73, 0xd2, 0x69, 0xc3, 0x17, 0xe8,
+ 0xf4, 0xcf, 0x31, 0x82, 0x39, 0x1a, 0xeb, 0xf6, 0xc4, 0xb8, 0x6d, 0xdd, 0x8e, 0x4f, 0x9a, 0xcd,
+ 0x6c, 0xdc, 0x55, 0x99, 0xa4, 0xbf, 0x0d, 0x5f, 0xa2, 0xb3, 0xeb, 0x7d, 0x82, 0xfb, 0x7b, 0xf4,
+ 0x59, 0xd7, 0xf9, 0x80, 0x21, 0x9e, 0xaf, 0xb7, 0xd8, 0xbb, 0xdc, 0x62, 0xef, 0x6a, 0x8b, 0xbd,
+ 0xaf, 0x0d, 0xf6, 0xd7, 0x0d, 0xf6, 0x2f, 0x1b, 0xec, 0x5f, 0x35, 0xd8, 0xff, 0xd1, 0x60, 0xff,
+ 0xdb, 0x4f, 0xec, 0xbd, 0x1b, 0xd5, 0xd1, 0xaf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x69, 0x4a, 0x84,
+ 0xe4, 0x71, 0x03, 0x00, 0x00,
+}
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/generated.proto b/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/generated.proto
new file mode 100644
index 0000000000..d362291870
--- /dev/null
+++ b/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/generated.proto
@@ -0,0 +1,71 @@
+/*
+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.
+*/
+
+
+// This file was autogenerated by go-to-protobuf. Do not edit it manually!
+
+syntax = 'proto2';
+
+package k8s.io.apiserver.pkg.apis.example2.v1;
+
+import "k8s.io/api/core/v1/generated.proto";
+import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
+import "k8s.io/apimachinery/pkg/runtime/generated.proto";
+import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
+import "k8s.io/apimachinery/pkg/util/intstr/generated.proto";
+
+// Package-wide variables from generator "generated".
+option go_package = "v1";
+
+// ReplicaSet ensures that a specified number of pod replicas are running at any given time.
+message ReplicaSet {
+ // If the Labels of a ReplicaSet are empty, they are defaulted to
+ // be the same as the Pod(s) that the ReplicaSet manages.
+ // Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
+ // +optional
+ optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
+
+ // Spec defines the specification of the desired behavior of the ReplicaSet.
+ // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
+ // +optional
+ optional ReplicaSetSpec spec = 2;
+
+ // Status is the most recently observed status of the ReplicaSet.
+ // This data may be out of date by some window of time.
+ // Populated by the system.
+ // Read-only.
+ // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
+ // +optional
+ optional ReplicaSetStatus status = 3;
+}
+
+// ReplicaSetSpec is the specification of a ReplicaSet.
+message ReplicaSetSpec {
+ // Replicas is the number of desired replicas.
+ // This is a pointer to distinguish between explicit zero and unspecified.
+ // Defaults to 1.
+ // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller
+ // +optional
+ optional int32 replicas = 1;
+}
+
+// ReplicaSetStatus represents the current status of a ReplicaSet.
+message ReplicaSetStatus {
+ // Replicas is the most recently oberved number of replicas.
+ // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller
+ optional int32 replicas = 1;
+}
+
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/register.go b/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/register.go
new file mode 100644
index 0000000000..1cb0f5eb8d
--- /dev/null
+++ b/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/register.go
@@ -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 v1
+
+import (
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apimachinery/pkg/runtime"
+ "k8s.io/apimachinery/pkg/runtime/schema"
+)
+
+// GroupName is the group name use in this package
+const GroupName = "example2.apiserver.k8s.io"
+
+// SchemeGroupVersion is group version used to register these objects
+var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1"}
+
+// Kind takes an unqualified kind and returns a Group qualified GroupKind
+func Kind(kind string) schema.GroupKind {
+ return SchemeGroupVersion.WithKind(kind).GroupKind()
+}
+
+// Resource takes an unqualified resource and returns a Group qualified GroupResource
+func Resource(resource string) schema.GroupResource {
+ return SchemeGroupVersion.WithResource(resource).GroupResource()
+}
+
+var (
+ // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api.
+ // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes.
+ SchemeBuilder runtime.SchemeBuilder
+ localSchemeBuilder = &SchemeBuilder
+ AddToScheme = localSchemeBuilder.AddToScheme
+)
+
+func init() {
+ // We only register manually written functions here. The registration of the
+ // generated functions takes place in the generated files. The separation
+ // makes the code compile even when the generated files are missing.
+ localSchemeBuilder.Register(addKnownTypes, addConversionFuncs, addDefaultingFuncs)
+}
+
+// Adds the list of known types to the given scheme.
+func addKnownTypes(scheme *runtime.Scheme) error {
+ scheme.AddKnownTypes(SchemeGroupVersion,
+ &ReplicaSet{},
+ )
+ metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
+ return nil
+}
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/types.go b/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/types.go
new file mode 100644
index 0000000000..e6e6fb00c1
--- /dev/null
+++ b/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/types.go
@@ -0,0 +1,64 @@
+/*
+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 v1
+
+import (
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+)
+
+// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
+
+// ReplicaSet ensures that a specified number of pod replicas are running at any given time.
+type ReplicaSet struct {
+ metav1.TypeMeta `json:",inline"`
+
+ // If the Labels of a ReplicaSet are empty, they are defaulted to
+ // be the same as the Pod(s) that the ReplicaSet manages.
+ // Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
+ // +optional
+ metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
+
+ // Spec defines the specification of the desired behavior of the ReplicaSet.
+ // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
+ // +optional
+ Spec ReplicaSetSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
+
+ // Status is the most recently observed status of the ReplicaSet.
+ // This data may be out of date by some window of time.
+ // Populated by the system.
+ // Read-only.
+ // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
+ // +optional
+ Status ReplicaSetStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
+}
+
+// ReplicaSetSpec is the specification of a ReplicaSet.
+type ReplicaSetSpec struct {
+ // Replicas is the number of desired replicas.
+ // This is a pointer to distinguish between explicit zero and unspecified.
+ // Defaults to 1.
+ // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller
+ // +optional
+ Replicas *int32 `json:"replicas,omitempty" protobuf:"varint,1,opt,name=replicas"`
+}
+
+// ReplicaSetStatus represents the current status of a ReplicaSet.
+type ReplicaSetStatus struct {
+ // Replicas is the most recently oberved number of replicas.
+ // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller
+ Replicas int32 `json:"replicas" protobuf:"varint,1,opt,name=replicas"`
+}
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/types_swagger_doc_generated.go b/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/types_swagger_doc_generated.go
new file mode 100644
index 0000000000..c7be42d5a1
--- /dev/null
+++ b/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/types_swagger_doc_generated.go
@@ -0,0 +1,17 @@
+/*
+Copyright 2016 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 v1
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/zz_generated.conversion.go b/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/zz_generated.conversion.go
new file mode 100644
index 0000000000..609ebef2c2
--- /dev/null
+++ b/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/zz_generated.conversion.go
@@ -0,0 +1,111 @@
+// +build !ignore_autogenerated
+
+/*
+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.
+*/
+
+// This file was autogenerated by conversion-gen. Do not edit it manually!
+
+package v1
+
+import (
+ meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ conversion "k8s.io/apimachinery/pkg/conversion"
+ runtime "k8s.io/apimachinery/pkg/runtime"
+ example "k8s.io/apiserver/pkg/apis/example"
+)
+
+func init() {
+ localSchemeBuilder.Register(RegisterConversions)
+}
+
+// RegisterConversions adds conversion functions to the given scheme.
+// Public to allow building arbitrary schemes.
+func RegisterConversions(scheme *runtime.Scheme) error {
+ return scheme.AddGeneratedConversionFuncs(
+ Convert_v1_ReplicaSet_To_example_ReplicaSet,
+ Convert_example_ReplicaSet_To_v1_ReplicaSet,
+ Convert_v1_ReplicaSetSpec_To_example_ReplicaSetSpec,
+ Convert_example_ReplicaSetSpec_To_v1_ReplicaSetSpec,
+ Convert_v1_ReplicaSetStatus_To_example_ReplicaSetStatus,
+ Convert_example_ReplicaSetStatus_To_v1_ReplicaSetStatus,
+ )
+}
+
+func autoConvert_v1_ReplicaSet_To_example_ReplicaSet(in *ReplicaSet, out *example.ReplicaSet, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ if err := Convert_v1_ReplicaSetSpec_To_example_ReplicaSetSpec(&in.Spec, &out.Spec, s); err != nil {
+ return err
+ }
+ if err := Convert_v1_ReplicaSetStatus_To_example_ReplicaSetStatus(&in.Status, &out.Status, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_v1_ReplicaSet_To_example_ReplicaSet is an autogenerated conversion function.
+func Convert_v1_ReplicaSet_To_example_ReplicaSet(in *ReplicaSet, out *example.ReplicaSet, s conversion.Scope) error {
+ return autoConvert_v1_ReplicaSet_To_example_ReplicaSet(in, out, s)
+}
+
+func autoConvert_example_ReplicaSet_To_v1_ReplicaSet(in *example.ReplicaSet, out *ReplicaSet, s conversion.Scope) error {
+ out.ObjectMeta = in.ObjectMeta
+ if err := Convert_example_ReplicaSetSpec_To_v1_ReplicaSetSpec(&in.Spec, &out.Spec, s); err != nil {
+ return err
+ }
+ if err := Convert_example_ReplicaSetStatus_To_v1_ReplicaSetStatus(&in.Status, &out.Status, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Convert_example_ReplicaSet_To_v1_ReplicaSet is an autogenerated conversion function.
+func Convert_example_ReplicaSet_To_v1_ReplicaSet(in *example.ReplicaSet, out *ReplicaSet, s conversion.Scope) error {
+ return autoConvert_example_ReplicaSet_To_v1_ReplicaSet(in, out, s)
+}
+
+func autoConvert_v1_ReplicaSetSpec_To_example_ReplicaSetSpec(in *ReplicaSetSpec, out *example.ReplicaSetSpec, s conversion.Scope) error {
+ if err := meta_v1.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+func autoConvert_example_ReplicaSetSpec_To_v1_ReplicaSetSpec(in *example.ReplicaSetSpec, out *ReplicaSetSpec, s conversion.Scope) error {
+ if err := meta_v1.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil {
+ return err
+ }
+ return nil
+}
+
+func autoConvert_v1_ReplicaSetStatus_To_example_ReplicaSetStatus(in *ReplicaSetStatus, out *example.ReplicaSetStatus, s conversion.Scope) error {
+ out.Replicas = in.Replicas
+ return nil
+}
+
+// Convert_v1_ReplicaSetStatus_To_example_ReplicaSetStatus is an autogenerated conversion function.
+func Convert_v1_ReplicaSetStatus_To_example_ReplicaSetStatus(in *ReplicaSetStatus, out *example.ReplicaSetStatus, s conversion.Scope) error {
+ return autoConvert_v1_ReplicaSetStatus_To_example_ReplicaSetStatus(in, out, s)
+}
+
+func autoConvert_example_ReplicaSetStatus_To_v1_ReplicaSetStatus(in *example.ReplicaSetStatus, out *ReplicaSetStatus, s conversion.Scope) error {
+ out.Replicas = in.Replicas
+ return nil
+}
+
+// Convert_example_ReplicaSetStatus_To_v1_ReplicaSetStatus is an autogenerated conversion function.
+func Convert_example_ReplicaSetStatus_To_v1_ReplicaSetStatus(in *example.ReplicaSetStatus, out *ReplicaSetStatus, s conversion.Scope) error {
+ return autoConvert_example_ReplicaSetStatus_To_v1_ReplicaSetStatus(in, out, s)
+}
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/zz_generated.deepcopy.go b/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/zz_generated.deepcopy.go
new file mode 100644
index 0000000000..0208e85669
--- /dev/null
+++ b/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/zz_generated.deepcopy.go
@@ -0,0 +1,95 @@
+// +build !ignore_autogenerated
+
+/*
+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.
+*/
+
+// This file was autogenerated by deepcopy-gen. Do not edit it manually!
+
+package v1
+
+import (
+ runtime "k8s.io/apimachinery/pkg/runtime"
+)
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ReplicaSet) DeepCopyInto(out *ReplicaSet) {
+ *out = *in
+ out.TypeMeta = in.TypeMeta
+ in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
+ in.Spec.DeepCopyInto(&out.Spec)
+ out.Status = in.Status
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicaSet.
+func (in *ReplicaSet) DeepCopy() *ReplicaSet {
+ if in == nil {
+ return nil
+ }
+ out := new(ReplicaSet)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
+func (in *ReplicaSet) DeepCopyObject() runtime.Object {
+ if c := in.DeepCopy(); c != nil {
+ return c
+ } else {
+ return nil
+ }
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ReplicaSetSpec) DeepCopyInto(out *ReplicaSetSpec) {
+ *out = *in
+ if in.Replicas != nil {
+ in, out := &in.Replicas, &out.Replicas
+ if *in == nil {
+ *out = nil
+ } else {
+ *out = new(int32)
+ **out = **in
+ }
+ }
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicaSetSpec.
+func (in *ReplicaSetSpec) DeepCopy() *ReplicaSetSpec {
+ if in == nil {
+ return nil
+ }
+ out := new(ReplicaSetSpec)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ReplicaSetStatus) DeepCopyInto(out *ReplicaSetStatus) {
+ *out = *in
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicaSetStatus.
+func (in *ReplicaSetStatus) DeepCopy() *ReplicaSetStatus {
+ if in == nil {
+ return nil
+ }
+ out := new(ReplicaSetStatus)
+ in.DeepCopyInto(out)
+ return out
+}
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/zz_generated.defaults.go b/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/zz_generated.defaults.go
new file mode 100644
index 0000000000..6df448eb9f
--- /dev/null
+++ b/staging/src/k8s.io/apiserver/pkg/apis/example2/v1/zz_generated.defaults.go
@@ -0,0 +1,32 @@
+// +build !ignore_autogenerated
+
+/*
+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.
+*/
+
+// This file was autogenerated by defaulter-gen. Do not edit it manually!
+
+package v1
+
+import (
+ runtime "k8s.io/apimachinery/pkg/runtime"
+)
+
+// RegisterDefaults adds defaulters functions to the given scheme.
+// Public to allow building arbitrary schemes.
+// All generated defaulters are covering - they call all nested defaulters.
+func RegisterDefaults(scheme *runtime.Scheme) error {
+ return nil
+}
diff --git a/staging/src/k8s.io/apiserver/pkg/apis/example2/zz_generated.deepcopy.go b/staging/src/k8s.io/apiserver/pkg/apis/example2/zz_generated.deepcopy.go
new file mode 100644
index 0000000000..f100811697
--- /dev/null
+++ b/staging/src/k8s.io/apiserver/pkg/apis/example2/zz_generated.deepcopy.go
@@ -0,0 +1,21 @@
+// +build !ignore_autogenerated
+
+/*
+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.
+*/
+
+// This file was autogenerated by deepcopy-gen. Do not edit it manually!
+
+package example2
diff --git a/staging/src/k8s.io/apiserver/pkg/authorization/authorizerfactory/BUILD b/staging/src/k8s.io/apiserver/pkg/authorization/authorizerfactory/BUILD
index 6a4764ced5..7fff4c90a3 100644
--- a/staging/src/k8s.io/apiserver/pkg/authorization/authorizerfactory/BUILD
+++ b/staging/src/k8s.io/apiserver/pkg/authorization/authorizerfactory/BUILD
@@ -8,7 +8,7 @@ load(
go_test(
name = "go_default_test",
- srcs = ["authz_test.go"],
+ srcs = ["builtin_test.go"],
importpath = "k8s.io/apiserver/pkg/authorization/authorizerfactory",
library = ":go_default_library",
deps = [
diff --git a/staging/src/k8s.io/apiserver/pkg/authorization/authorizerfactory/builtin.go b/staging/src/k8s.io/apiserver/pkg/authorization/authorizerfactory/builtin.go
index 6f67d87b89..fc36bc0bc9 100644
--- a/staging/src/k8s.io/apiserver/pkg/authorization/authorizerfactory/builtin.go
+++ b/staging/src/k8s.io/apiserver/pkg/authorization/authorizerfactory/builtin.go
@@ -68,19 +68,6 @@ func NewAlwaysDenyAuthorizer() *alwaysDenyAuthorizer {
return new(alwaysDenyAuthorizer)
}
-// alwaysFailAuthorizer is an implementation of authorizer.Attributes
-// which always says no to an authorization request.
-// It is useful in unit tests to force an operation to fail with error.
-type alwaysFailAuthorizer struct{}
-
-func (alwaysFailAuthorizer) Authorize(a authorizer.Attributes) (authorized authorizer.Decision, reason string, err error) {
- return authorizer.DecisionNoOpinion, "", errors.New("Authorization failure.")
-}
-
-func NewAlwaysFailAuthorizer() authorizer.Authorizer {
- return new(alwaysFailAuthorizer)
-}
-
type privilegedGroupAuthorizer struct {
groups []string
}
diff --git a/staging/src/k8s.io/apiserver/pkg/authorization/authorizerfactory/authz_test.go b/staging/src/k8s.io/apiserver/pkg/authorization/authorizerfactory/builtin_test.go
similarity index 86%
rename from staging/src/k8s.io/apiserver/pkg/authorization/authorizerfactory/authz_test.go
rename to staging/src/k8s.io/apiserver/pkg/authorization/authorizerfactory/builtin_test.go
index d1de3eba70..4e22b551fa 100644
--- a/staging/src/k8s.io/apiserver/pkg/authorization/authorizerfactory/authz_test.go
+++ b/staging/src/k8s.io/apiserver/pkg/authorization/authorizerfactory/builtin_test.go
@@ -23,8 +23,6 @@ import (
"k8s.io/apiserver/pkg/authorization/authorizer"
)
-// NewAlwaysAllowAuthorizer must return a struct which implements authorizer.Authorizer
-// and always return nil.
func TestNewAlwaysAllowAuthorizer(t *testing.T) {
aaa := NewAlwaysAllowAuthorizer()
if decision, _, _ := aaa.Authorize(nil); decision != authorizer.DecisionAllow {
@@ -32,8 +30,6 @@ func TestNewAlwaysAllowAuthorizer(t *testing.T) {
}
}
-// NewAlwaysDenyAuthorizer must return a struct which implements authorizer.Authorizer
-// and always return an error as everything is forbidden.
func TestNewAlwaysDenyAuthorizer(t *testing.T) {
ada := NewAlwaysDenyAuthorizer()
if decision, _, _ := ada.Authorize(nil); decision == authorizer.DecisionAllow {
diff --git a/staging/src/k8s.io/apiserver/pkg/endpoints/openapi/testing/BUILD b/staging/src/k8s.io/apiserver/pkg/endpoints/openapi/testing/BUILD
index 37fd04b31e..ec675c1c13 100644
--- a/staging/src/k8s.io/apiserver/pkg/endpoints/openapi/testing/BUILD
+++ b/staging/src/k8s.io/apiserver/pkg/endpoints/openapi/testing/BUILD
@@ -13,7 +13,6 @@ go_library(
],
importpath = "k8s.io/apiserver/pkg/endpoints/openapi/testing",
deps = [
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/apiserver/pkg/endpoints/openapi/testing/zz_generated.deepcopy.go b/staging/src/k8s.io/apiserver/pkg/endpoints/openapi/testing/zz_generated.deepcopy.go
index 79318002ea..b454e1b677 100644
--- a/staging/src/k8s.io/apiserver/pkg/endpoints/openapi/testing/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/apiserver/pkg/endpoints/openapi/testing/zz_generated.deepcopy.go
@@ -21,23 +21,9 @@ limitations under the License.
package testing
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc {
- return []conversion.GeneratedDeepCopyFunc{
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TestType).DeepCopyInto(out.(*TestType))
- return nil
- }, InType: reflect.TypeOf(&TestType{})},
- }
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TestType) DeepCopyInto(out *TestType) {
*out = *in
diff --git a/staging/src/k8s.io/apiserver/pkg/endpoints/testing/BUILD b/staging/src/k8s.io/apiserver/pkg/endpoints/testing/BUILD
index 312e5e9fde..8cf3995698 100644
--- a/staging/src/k8s.io/apiserver/pkg/endpoints/testing/BUILD
+++ b/staging/src/k8s.io/apiserver/pkg/endpoints/testing/BUILD
@@ -15,7 +15,6 @@ go_library(
importpath = "k8s.io/apiserver/pkg/endpoints/testing",
deps = [
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
],
)
diff --git a/staging/src/k8s.io/apiserver/pkg/endpoints/testing/zz_generated.deepcopy.go b/staging/src/k8s.io/apiserver/pkg/endpoints/testing/zz_generated.deepcopy.go
index 29aff7e2d7..2bc8d7d2f2 100644
--- a/staging/src/k8s.io/apiserver/pkg/endpoints/testing/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/apiserver/pkg/endpoints/testing/zz_generated.deepcopy.go
@@ -21,39 +21,9 @@ limitations under the License.
package testing
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc {
- return []conversion.GeneratedDeepCopyFunc{
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Simple).DeepCopyInto(out.(*Simple))
- return nil
- }, InType: reflect.TypeOf(&Simple{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SimpleGetOptions).DeepCopyInto(out.(*SimpleGetOptions))
- return nil
- }, InType: reflect.TypeOf(&SimpleGetOptions{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SimpleList).DeepCopyInto(out.(*SimpleList))
- return nil
- }, InType: reflect.TypeOf(&SimpleList{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SimpleRoot).DeepCopyInto(out.(*SimpleRoot))
- return nil
- }, InType: reflect.TypeOf(&SimpleRoot{})},
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*SimpleXGSubresource).DeepCopyInto(out.(*SimpleXGSubresource))
- return nil
- }, InType: reflect.TypeOf(&SimpleXGSubresource{})},
- }
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Simple) DeepCopyInto(out *Simple) {
*out = *in
diff --git a/staging/src/k8s.io/apiserver/pkg/registry/rest/BUILD b/staging/src/k8s.io/apiserver/pkg/registry/rest/BUILD
index a9481dce30..e662a4ee7d 100644
--- a/staging/src/k8s.io/apiserver/pkg/registry/rest/BUILD
+++ b/staging/src/k8s.io/apiserver/pkg/registry/rest/BUILD
@@ -43,7 +43,6 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/uuid:go_default_library",
diff --git a/staging/src/k8s.io/apiserver/pkg/registry/rest/zz_generated.deepcopy.go b/staging/src/k8s.io/apiserver/pkg/registry/rest/zz_generated.deepcopy.go
index fbc6c05585..fd5212b3f3 100644
--- a/staging/src/k8s.io/apiserver/pkg/registry/rest/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/apiserver/pkg/registry/rest/zz_generated.deepcopy.go
@@ -21,23 +21,9 @@ limitations under the License.
package rest
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc {
- return []conversion.GeneratedDeepCopyFunc{
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ConnectRequest).DeepCopyInto(out.(*ConnectRequest))
- return nil
- }, InType: reflect.TypeOf(&ConnectRequest{})},
- }
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ConnectRequest) DeepCopyInto(out *ConnectRequest) {
*out = *in
diff --git a/staging/src/k8s.io/apiserver/pkg/server/BUILD b/staging/src/k8s.io/apiserver/pkg/server/BUILD
index 3d56d3a266..68c2d54080 100644
--- a/staging/src/k8s.io/apiserver/pkg/server/BUILD
+++ b/staging/src/k8s.io/apiserver/pkg/server/BUILD
@@ -30,8 +30,10 @@ go_test(
"//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library",
"//vendor/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library",
"//vendor/k8s.io/apiserver/pkg/endpoints/discovery:go_default_library",
+ "//vendor/k8s.io/apiserver/pkg/endpoints/filters:go_default_library",
"//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
"//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library",
+ "//vendor/k8s.io/apiserver/pkg/server/filters:go_default_library",
"//vendor/k8s.io/apiserver/pkg/server/healthz:go_default_library",
"//vendor/k8s.io/apiserver/pkg/storage/etcd/testing:go_default_library",
"//vendor/k8s.io/client-go/informers:go_default_library",
@@ -81,6 +83,7 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/util/waitgroup:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/version:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission/plugin/initialization:go_default_library",
diff --git a/staging/src/k8s.io/apiserver/pkg/server/config.go b/staging/src/k8s.io/apiserver/pkg/server/config.go
index e1c81c7d4a..ac1317889e 100644
--- a/staging/src/k8s.io/apiserver/pkg/server/config.go
+++ b/staging/src/k8s.io/apiserver/pkg/server/config.go
@@ -36,6 +36,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/serializer"
"k8s.io/apimachinery/pkg/util/sets"
+ utilwaitgroup "k8s.io/apimachinery/pkg/util/waitgroup"
"k8s.io/apimachinery/pkg/version"
"k8s.io/apiserver/pkg/admission"
"k8s.io/apiserver/pkg/audit"
@@ -128,6 +129,8 @@ type Config struct {
// BuildHandlerChainFunc allows you to build custom handler chains by decorating the apiHandler.
BuildHandlerChainFunc func(apiHandler http.Handler, c *Config) (secure http.Handler)
+ // HandlerChainWaitGroup allows you to wait for all chain handlers exit after the server shutdown.
+ HandlerChainWaitGroup *utilwaitgroup.SafeWaitGroup
// DiscoveryAddresses is used to build the IPs pass to discovery. If nil, the ExternalAddress is
// always reported
DiscoveryAddresses discovery.Addresses
@@ -236,6 +239,7 @@ func NewConfig(codecs serializer.CodecFactory) *Config {
ReadWritePort: 443,
RequestContextMapper: apirequest.NewRequestContextMapper(),
BuildHandlerChainFunc: DefaultBuildHandlerChain,
+ HandlerChainWaitGroup: new(utilwaitgroup.SafeWaitGroup),
LegacyAPIGroupPrefixes: sets.NewString(DefaultLegacyAPIPrefix),
DisabledPostStartHooks: sets.NewString(),
HealthzChecks: []healthz.HealthzChecker{healthz.PingHealthz},
@@ -446,8 +450,10 @@ func (c completedConfig) New(name string, delegationTarget DelegationTarget) (*G
Serializer: c.Serializer,
AuditBackend: c.AuditBackend,
delegationTarget: delegationTarget,
+ HandlerChainWaitGroup: c.HandlerChainWaitGroup,
minRequestTimeout: time.Duration(c.MinRequestTimeout) * time.Second,
+ ShutdownTimeout: c.RequestTimeout,
SecureServingInfo: c.SecureServingInfo,
ExternalAddress: c.ExternalAddress,
@@ -488,6 +494,7 @@ func (c completedConfig) New(name string, delegationTarget DelegationTarget) (*G
return nil, err
}
}
+
for _, delegateCheck := range delegationTarget.HealthzChecks() {
skip := false
for _, existingCheck := range c.HealthzChecks {
@@ -535,6 +542,7 @@ func DefaultBuildHandlerChain(apiHandler http.Handler, c *Config) http.Handler {
handler = genericapifilters.WithAuthentication(handler, c.RequestContextMapper, c.Authenticator, failedHandler)
handler = genericfilters.WithCORS(handler, c.CorsAllowedOriginList, nil, nil, nil, "true")
handler = genericfilters.WithTimeoutForNonLongRunningRequests(handler, c.RequestContextMapper, c.LongRunningFunc, c.RequestTimeout)
+ handler = genericfilters.WithWaitGroup(handler, c.RequestContextMapper, c.LongRunningFunc, c.HandlerChainWaitGroup)
handler = genericapifilters.WithRequestInfo(handler, c.RequestInfoResolver, c.RequestContextMapper)
handler = apirequest.WithRequestContext(handler, c.RequestContextMapper)
handler = genericfilters.WithPanicRecovery(handler)
diff --git a/staging/src/k8s.io/apiserver/pkg/server/filters/BUILD b/staging/src/k8s.io/apiserver/pkg/server/filters/BUILD
index a7e94dca6d..bf72edc372 100644
--- a/staging/src/k8s.io/apiserver/pkg/server/filters/BUILD
+++ b/staging/src/k8s.io/apiserver/pkg/server/filters/BUILD
@@ -37,6 +37,7 @@ go_library(
"longrunning.go",
"maxinflight.go",
"timeout.go",
+ "waitgroup.go",
"wrap.go",
],
importpath = "k8s.io/apiserver/pkg/server/filters",
@@ -46,6 +47,7 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/util/waitgroup:go_default_library",
"//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library",
"//vendor/k8s.io/apiserver/pkg/endpoints/metrics:go_default_library",
"//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
diff --git a/staging/src/k8s.io/apiserver/pkg/server/filters/waitgroup.go b/staging/src/k8s.io/apiserver/pkg/server/filters/waitgroup.go
new file mode 100644
index 0000000000..be73a2c9d9
--- /dev/null
+++ b/staging/src/k8s.io/apiserver/pkg/server/filters/waitgroup.go
@@ -0,0 +1,53 @@
+/*
+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 filters
+
+import (
+ "net/http"
+
+ utilwaitgroup "k8s.io/apimachinery/pkg/util/waitgroup"
+ apirequest "k8s.io/apiserver/pkg/endpoints/request"
+)
+
+// WithWaitGroup adds all non long-running requests to wait group, which is used for graceful shutdown.
+func WithWaitGroup(handler http.Handler, requestContextMapper apirequest.RequestContextMapper, longRunning apirequest.LongRunningRequestCheck, wg *utilwaitgroup.SafeWaitGroup) http.Handler {
+ return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
+ ctx, ok := requestContextMapper.Get(req)
+ if !ok {
+ // if this happens, the handler chain isn't setup correctly because there is no context mapper
+ handler.ServeHTTP(w, req)
+ return
+ }
+
+ requestInfo, ok := apirequest.RequestInfoFrom(ctx)
+ if !ok {
+ // if this happens, the handler chain isn't setup correctly because there is no request info
+ handler.ServeHTTP(w, req)
+ return
+ }
+
+ if !longRunning(req, requestInfo) {
+ if err := wg.Add(1); err != nil {
+ http.Error(w, "Apisever is shutting down.", http.StatusInternalServerError)
+ return
+ }
+ defer wg.Done()
+ }
+
+ handler.ServeHTTP(w, req)
+ })
+}
diff --git a/staging/src/k8s.io/apiserver/pkg/server/genericapiserver.go b/staging/src/k8s.io/apiserver/pkg/server/genericapiserver.go
index 3109bb3566..c824719fe8 100644
--- a/staging/src/k8s.io/apiserver/pkg/server/genericapiserver.go
+++ b/staging/src/k8s.io/apiserver/pkg/server/genericapiserver.go
@@ -34,6 +34,7 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/runtime/serializer"
"k8s.io/apimachinery/pkg/util/sets"
+ utilwaitgroup "k8s.io/apimachinery/pkg/util/waitgroup"
"k8s.io/apiserver/pkg/admission"
"k8s.io/apiserver/pkg/audit"
genericapi "k8s.io/apiserver/pkg/endpoints"
@@ -83,6 +84,10 @@ type GenericAPIServer struct {
// minRequestTimeout is how short the request timeout can be. This is used to build the RESTHandler
minRequestTimeout time.Duration
+ // ShutdownTimeout is the timeout used for server shutdown. This specifies the timeout before server
+ // gracefully shutdown returns.
+ ShutdownTimeout time.Duration
+
// legacyAPIGroupPrefixes is used to set up URL parsing for authorization and for validating requests
// to InstallLegacyAPIGroup
legacyAPIGroupPrefixes sets.String
@@ -146,6 +151,9 @@ type GenericAPIServer struct {
// delegationTarget is the next delegate in the chain or nil
delegationTarget DelegationTarget
+
+ // HandlerChainWaitGroup allows you to wait for all chain handlers finish after the server shutdown.
+ HandlerChainWaitGroup *utilwaitgroup.SafeWaitGroup
}
// DelegationTarget is an interface which allows for composition of API servers with top level handling that works
@@ -275,16 +283,28 @@ func (s preparedGenericAPIServer) Run(stopCh <-chan struct{}) error {
<-stopCh
- return s.RunPreShutdownHooks()
+ err = s.RunPreShutdownHooks()
+ if err != nil {
+ return err
+ }
+
+ // Wait for all requests to finish, which are bounded by the RequestTimeout variable.
+ s.HandlerChainWaitGroup.Wait()
+
+ return nil
}
// NonBlockingRun spawns the secure http server. An error is
// returned if the secure port cannot be listened on.
func (s preparedGenericAPIServer) NonBlockingRun(stopCh <-chan struct{}) error {
+ // Use an stop channel to allow graceful shutdown without dropping audit events
+ // after http server shutdown.
+ auditStopCh := make(chan struct{})
+
// Start the audit backend before any request comes in. This means we must call Backend.Run
// before http server start serving. Otherwise the Backend.ProcessEvents call might block.
if s.AuditBackend != nil {
- if err := s.AuditBackend.Run(stopCh); err != nil {
+ if err := s.AuditBackend.Run(auditStopCh); err != nil {
return fmt.Errorf("failed to run the audit backend: %v", err)
}
}
@@ -305,6 +325,8 @@ func (s preparedGenericAPIServer) NonBlockingRun(stopCh <-chan struct{}) error {
go func() {
<-stopCh
close(internalStopCh)
+ s.HandlerChainWaitGroup.Wait()
+ close(auditStopCh)
}()
s.RunPostStartHooks(stopCh)
diff --git a/staging/src/k8s.io/apiserver/pkg/server/genericapiserver_test.go b/staging/src/k8s.io/apiserver/pkg/server/genericapiserver_test.go
index 16fee408c7..64bfa7b232 100644
--- a/staging/src/k8s.io/apiserver/pkg/server/genericapiserver_test.go
+++ b/staging/src/k8s.io/apiserver/pkg/server/genericapiserver_test.go
@@ -25,6 +25,8 @@ import (
"net/http"
"net/http/httptest"
goruntime "runtime"
+ "strconv"
+ "sync"
"testing"
"time"
@@ -44,8 +46,11 @@ import (
"k8s.io/apiserver/pkg/authentication/user"
"k8s.io/apiserver/pkg/authorization/authorizer"
"k8s.io/apiserver/pkg/endpoints/discovery"
+ genericapifilters "k8s.io/apiserver/pkg/endpoints/filters"
+ apirequest "k8s.io/apiserver/pkg/endpoints/request"
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/registry/rest"
+ genericfilters "k8s.io/apiserver/pkg/server/filters"
etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing"
"k8s.io/client-go/informers"
"k8s.io/client-go/kubernetes/fake"
@@ -509,3 +514,75 @@ func fakeVersion() version.Info {
Platform: fmt.Sprintf("%s/%s", goruntime.GOOS, goruntime.GOARCH),
}
}
+
+// TestGracefulShutdown verifies server shutdown after request handler finish.
+func TestGracefulShutdown(t *testing.T) {
+ etcdserver, config, _ := setUp(t)
+ defer etcdserver.Terminate(t)
+
+ var graceShutdown bool
+ wg := sync.WaitGroup{}
+ wg.Add(1)
+
+ config.BuildHandlerChainFunc = func(apiHandler http.Handler, c *Config) http.Handler {
+ handler := genericfilters.WithWaitGroup(apiHandler, c.RequestContextMapper, c.LongRunningFunc, c.HandlerChainWaitGroup)
+ handler = genericapifilters.WithRequestInfo(handler, c.RequestInfoResolver, c.RequestContextMapper)
+ handler = apirequest.WithRequestContext(handler, c.RequestContextMapper)
+ return handler
+ }
+
+ handler := http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
+ wg.Done()
+ time.Sleep(2 * time.Second)
+ w.WriteHeader(http.StatusOK)
+ graceShutdown = true
+ })
+
+ s, err := config.Complete(nil).New("test", EmptyDelegate)
+ if err != nil {
+ t.Fatalf("Error in bringing up the server: %v", err)
+ }
+
+ s.Handler.NonGoRestfulMux.Handle("/test", handler)
+
+ insecureServer := &http.Server{
+ Addr: "0.0.0.0:0",
+ Handler: s.Handler,
+ }
+ stopCh := make(chan struct{})
+ serverPort, err := RunServer(insecureServer, "tcp", 10*time.Second, stopCh)
+ if err != nil {
+ t.Errorf("RunServer err: %v", err)
+ }
+
+ graceCh := make(chan struct{})
+ // mock a client request
+ go func() {
+ resp, err := http.Get("http://127.0.0.1:" + strconv.Itoa(serverPort) + "/test")
+ if err != nil {
+ t.Errorf("Unexpected http error: %v", err)
+ }
+ if resp.StatusCode != http.StatusOK {
+ t.Errorf("Unexpected http status code: %v", resp.StatusCode)
+ }
+ close(graceCh)
+ }()
+
+ // close stopCh after request sent to server to guarantee request handler is running.
+ wg.Wait()
+ close(stopCh)
+ // wait for wait group handler finish
+ s.HandlerChainWaitGroup.Wait()
+
+ // check server all handlers finished.
+ if !graceShutdown {
+ t.Errorf("server shutdown not gracefully.")
+ }
+ // check client to make sure receive response.
+ select {
+ case <-graceCh:
+ t.Logf("server shutdown gracefully.")
+ case <-time.After(30 * time.Second):
+ t.Errorf("Timed out waiting for response.")
+ }
+}
diff --git a/staging/src/k8s.io/apiserver/pkg/server/options/admission.go b/staging/src/k8s.io/apiserver/pkg/server/options/admission.go
index 601a26d23a..b769d855fa 100644
--- a/staging/src/k8s.io/apiserver/pkg/server/options/admission.go
+++ b/staging/src/k8s.io/apiserver/pkg/server/options/admission.go
@@ -99,10 +99,7 @@ func (a *AdmissionOptions) ApplyTo(
if err != nil {
return err
}
- genericInitializer, err := initializer.New(clientset, informers, c.Authorizer, scheme)
- if err != nil {
- return err
- }
+ genericInitializer := initializer.New(clientset, informers, c.Authorizer, scheme)
initializersChain := admission.PluginInitializers{}
pluginInitializers = append(pluginInitializers, genericInitializer)
initializersChain = append(initializersChain, pluginInitializers...)
diff --git a/staging/src/k8s.io/apiserver/pkg/server/serve.go b/staging/src/k8s.io/apiserver/pkg/server/serve.go
index 90f4078c75..f7d9f90230 100644
--- a/staging/src/k8s.io/apiserver/pkg/server/serve.go
+++ b/staging/src/k8s.io/apiserver/pkg/server/serve.go
@@ -17,6 +17,7 @@ limitations under the License.
package server
import (
+ "context"
"crypto/tls"
"crypto/x509"
"fmt"
@@ -84,13 +85,13 @@ func (s *GenericAPIServer) serveSecurely(stopCh <-chan struct{}) error {
glog.Infof("Serving securely on %s", s.SecureServingInfo.BindAddress)
var err error
- s.effectiveSecurePort, err = RunServer(secureServer, s.SecureServingInfo.BindNetwork, stopCh)
+ s.effectiveSecurePort, err = RunServer(secureServer, s.SecureServingInfo.BindNetwork, s.ShutdownTimeout, stopCh)
return err
}
// RunServer listens on the given port, then spawns a go-routine continuously serving
// until the stopCh is closed. The port is returned. This function does not block.
-func RunServer(server *http.Server, network string, stopCh <-chan struct{}) (int, error) {
+func RunServer(server *http.Server, network string, shutDownTimeout time.Duration, stopCh <-chan struct{}) (int, error) {
if len(server.Addr) == 0 {
return 0, errors.New("address cannot be empty")
}
@@ -111,10 +112,12 @@ func RunServer(server *http.Server, network string, stopCh <-chan struct{}) (int
return 0, fmt.Errorf("invalid listen address: %q", ln.Addr().String())
}
- // Stop the server by closing the listener
+ // Shutdown server gracefully.
go func() {
<-stopCh
- ln.Close()
+ ctx, cancel := context.WithTimeout(context.Background(), shutDownTimeout)
+ server.Shutdown(ctx)
+ cancel()
}()
go func() {
diff --git a/staging/src/k8s.io/apiserver/pkg/storage/testing/BUILD b/staging/src/k8s.io/apiserver/pkg/storage/testing/BUILD
index 2c9e706387..37c0195ec5 100644
--- a/staging/src/k8s.io/apiserver/pkg/storage/testing/BUILD
+++ b/staging/src/k8s.io/apiserver/pkg/storage/testing/BUILD
@@ -18,7 +18,6 @@ go_library(
"//vendor/golang.org/x/net/context:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apiserver/pkg/storage:go_default_library",
],
diff --git a/staging/src/k8s.io/apiserver/pkg/storage/testing/zz_generated.deepcopy.go b/staging/src/k8s.io/apiserver/pkg/storage/testing/zz_generated.deepcopy.go
index fb187dfad2..bbd0846f42 100644
--- a/staging/src/k8s.io/apiserver/pkg/storage/testing/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/apiserver/pkg/storage/testing/zz_generated.deepcopy.go
@@ -21,23 +21,9 @@ limitations under the License.
package testing
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc {
- return []conversion.GeneratedDeepCopyFunc{
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TestResource).DeepCopyInto(out.(*TestResource))
- return nil
- }, InType: reflect.TypeOf(&TestResource{})},
- }
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TestResource) DeepCopyInto(out *TestResource) {
*out = *in
diff --git a/staging/src/k8s.io/client-go/informers/BUILD b/staging/src/k8s.io/client-go/informers/BUILD
index 3acb23e216..16e853a1fd 100644
--- a/staging/src/k8s.io/client-go/informers/BUILD
+++ b/staging/src/k8s.io/client-go/informers/BUILD
@@ -34,6 +34,7 @@ go_library(
"//vendor/k8s.io/api/settings/v1alpha1:go_default_library",
"//vendor/k8s.io/api/storage/v1:go_default_library",
"//vendor/k8s.io/api/storage/v1beta1:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/client-go/informers/admissionregistration:go_default_library",
diff --git a/staging/src/k8s.io/client-go/informers/admissionregistration/interface.go b/staging/src/k8s.io/client-go/informers/admissionregistration/interface.go
index 19099ba022..995ed217ed 100644
--- a/staging/src/k8s.io/client-go/informers/admissionregistration/interface.go
+++ b/staging/src/k8s.io/client-go/informers/admissionregistration/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// V1alpha1 returns a new v1alpha1.Interface.
func (g *group) V1alpha1() v1alpha1.Interface {
- return v1alpha1.New(g.SharedInformerFactory)
+ return v1alpha1.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/staging/src/k8s.io/client-go/informers/admissionregistration/v1alpha1/BUILD b/staging/src/k8s.io/client-go/informers/admissionregistration/v1alpha1/BUILD
index 8684c3e6e3..4419a62450 100644
--- a/staging/src/k8s.io/client-go/informers/admissionregistration/v1alpha1/BUILD
+++ b/staging/src/k8s.io/client-go/informers/admissionregistration/v1alpha1/BUILD
@@ -8,9 +8,10 @@ load(
go_library(
name = "go_default_library",
srcs = [
- "externaladmissionhookconfiguration.go",
"initializerconfiguration.go",
"interface.go",
+ "mutatingwebhookconfiguration.go",
+ "validatingwebhookconfiguration.go",
],
importpath = "k8s.io/client-go/informers/admissionregistration/v1alpha1",
deps = [
diff --git a/staging/src/k8s.io/client-go/informers/admissionregistration/v1alpha1/externaladmissionhookconfiguration.go b/staging/src/k8s.io/client-go/informers/admissionregistration/v1alpha1/externaladmissionhookconfiguration.go
deleted file mode 100644
index cdc03d9933..0000000000
--- a/staging/src/k8s.io/client-go/informers/admissionregistration/v1alpha1/externaladmissionhookconfiguration.go
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
-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.
-*/
-
-// This file was automatically generated by informer-gen
-
-package v1alpha1
-
-import (
- admissionregistration_v1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
- v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- runtime "k8s.io/apimachinery/pkg/runtime"
- watch "k8s.io/apimachinery/pkg/watch"
- internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
- kubernetes "k8s.io/client-go/kubernetes"
- v1alpha1 "k8s.io/client-go/listers/admissionregistration/v1alpha1"
- cache "k8s.io/client-go/tools/cache"
- time "time"
-)
-
-// ExternalAdmissionHookConfigurationInformer provides access to a shared informer and lister for
-// ExternalAdmissionHookConfigurations.
-type ExternalAdmissionHookConfigurationInformer interface {
- Informer() cache.SharedIndexInformer
- Lister() v1alpha1.ExternalAdmissionHookConfigurationLister
-}
-
-type externalAdmissionHookConfigurationInformer struct {
- factory internalinterfaces.SharedInformerFactory
-}
-
-// NewExternalAdmissionHookConfigurationInformer constructs a new informer for ExternalAdmissionHookConfiguration type.
-// Always prefer using an informer factory to get a shared informer instead of getting an independent
-// one. This reduces memory footprint and number of connections to the server.
-func NewExternalAdmissionHookConfigurationInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
- return cache.NewSharedIndexInformer(
- &cache.ListWatch{
- ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
- return client.AdmissionregistrationV1alpha1().ExternalAdmissionHookConfigurations().List(options)
- },
- WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
- return client.AdmissionregistrationV1alpha1().ExternalAdmissionHookConfigurations().Watch(options)
- },
- },
- &admissionregistration_v1alpha1.ExternalAdmissionHookConfiguration{},
- resyncPeriod,
- indexers,
- )
-}
-
-func defaultExternalAdmissionHookConfigurationInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewExternalAdmissionHookConfigurationInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
-}
-
-func (f *externalAdmissionHookConfigurationInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&admissionregistration_v1alpha1.ExternalAdmissionHookConfiguration{}, defaultExternalAdmissionHookConfigurationInformer)
-}
-
-func (f *externalAdmissionHookConfigurationInformer) Lister() v1alpha1.ExternalAdmissionHookConfigurationLister {
- return v1alpha1.NewExternalAdmissionHookConfigurationLister(f.Informer().GetIndexer())
-}
diff --git a/staging/src/k8s.io/client-go/informers/admissionregistration/v1alpha1/initializerconfiguration.go b/staging/src/k8s.io/client-go/informers/admissionregistration/v1alpha1/initializerconfiguration.go
index 90e0078fc0..0f55c737f5 100644
--- a/staging/src/k8s.io/client-go/informers/admissionregistration/v1alpha1/initializerconfiguration.go
+++ b/staging/src/k8s.io/client-go/informers/admissionregistration/v1alpha1/initializerconfiguration.go
@@ -38,19 +38,33 @@ type InitializerConfigurationInformer interface {
}
type initializerConfigurationInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewInitializerConfigurationInformer constructs a new informer for InitializerConfiguration type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewInitializerConfigurationInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredInitializerConfigurationInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredInitializerConfigurationInformer constructs a new informer for InitializerConfiguration type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredInitializerConfigurationInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AdmissionregistrationV1alpha1().InitializerConfigurations().List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AdmissionregistrationV1alpha1().InitializerConfigurations().Watch(options)
},
},
@@ -60,12 +74,12 @@ func NewInitializerConfigurationInformer(client kubernetes.Interface, resyncPeri
)
}
-func defaultInitializerConfigurationInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewInitializerConfigurationInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *initializerConfigurationInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredInitializerConfigurationInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *initializerConfigurationInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&admissionregistration_v1alpha1.InitializerConfiguration{}, defaultInitializerConfigurationInformer)
+ return f.factory.InformerFor(&admissionregistration_v1alpha1.InitializerConfiguration{}, f.defaultInformer)
}
func (f *initializerConfigurationInformer) Lister() v1alpha1.InitializerConfigurationLister {
diff --git a/staging/src/k8s.io/client-go/informers/admissionregistration/v1alpha1/interface.go b/staging/src/k8s.io/client-go/informers/admissionregistration/v1alpha1/interface.go
index 33ff70766c..cab109f73b 100644
--- a/staging/src/k8s.io/client-go/informers/admissionregistration/v1alpha1/interface.go
+++ b/staging/src/k8s.io/client-go/informers/admissionregistration/v1alpha1/interface.go
@@ -24,27 +24,36 @@ import (
// Interface provides access to all the informers in this group version.
type Interface interface {
- // ExternalAdmissionHookConfigurations returns a ExternalAdmissionHookConfigurationInformer.
- ExternalAdmissionHookConfigurations() ExternalAdmissionHookConfigurationInformer
// InitializerConfigurations returns a InitializerConfigurationInformer.
InitializerConfigurations() InitializerConfigurationInformer
+ // MutatingWebhookConfigurations returns a MutatingWebhookConfigurationInformer.
+ MutatingWebhookConfigurations() MutatingWebhookConfigurationInformer
+ // ValidatingWebhookConfigurations returns a ValidatingWebhookConfigurationInformer.
+ ValidatingWebhookConfigurations() ValidatingWebhookConfigurationInformer
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
-}
-
-// ExternalAdmissionHookConfigurations returns a ExternalAdmissionHookConfigurationInformer.
-func (v *version) ExternalAdmissionHookConfigurations() ExternalAdmissionHookConfigurationInformer {
- return &externalAdmissionHookConfigurationInformer{factory: v.SharedInformerFactory}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// InitializerConfigurations returns a InitializerConfigurationInformer.
func (v *version) InitializerConfigurations() InitializerConfigurationInformer {
- return &initializerConfigurationInformer{factory: v.SharedInformerFactory}
+ return &initializerConfigurationInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
+}
+
+// MutatingWebhookConfigurations returns a MutatingWebhookConfigurationInformer.
+func (v *version) MutatingWebhookConfigurations() MutatingWebhookConfigurationInformer {
+ return &mutatingWebhookConfigurationInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
+}
+
+// ValidatingWebhookConfigurations returns a ValidatingWebhookConfigurationInformer.
+func (v *version) ValidatingWebhookConfigurations() ValidatingWebhookConfigurationInformer {
+ return &validatingWebhookConfigurationInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
diff --git a/staging/src/k8s.io/client-go/informers/admissionregistration/v1alpha1/mutatingwebhookconfiguration.go b/staging/src/k8s.io/client-go/informers/admissionregistration/v1alpha1/mutatingwebhookconfiguration.go
new file mode 100644
index 0000000000..6f407779a5
--- /dev/null
+++ b/staging/src/k8s.io/client-go/informers/admissionregistration/v1alpha1/mutatingwebhookconfiguration.go
@@ -0,0 +1,87 @@
+/*
+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.
+*/
+
+// This file was automatically generated by informer-gen
+
+package v1alpha1
+
+import (
+ admissionregistration_v1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ runtime "k8s.io/apimachinery/pkg/runtime"
+ watch "k8s.io/apimachinery/pkg/watch"
+ internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
+ kubernetes "k8s.io/client-go/kubernetes"
+ v1alpha1 "k8s.io/client-go/listers/admissionregistration/v1alpha1"
+ cache "k8s.io/client-go/tools/cache"
+ time "time"
+)
+
+// MutatingWebhookConfigurationInformer provides access to a shared informer and lister for
+// MutatingWebhookConfigurations.
+type MutatingWebhookConfigurationInformer interface {
+ Informer() cache.SharedIndexInformer
+ Lister() v1alpha1.MutatingWebhookConfigurationLister
+}
+
+type mutatingWebhookConfigurationInformer struct {
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+}
+
+// NewMutatingWebhookConfigurationInformer constructs a new informer for MutatingWebhookConfiguration type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewMutatingWebhookConfigurationInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredMutatingWebhookConfigurationInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredMutatingWebhookConfigurationInformer constructs a new informer for MutatingWebhookConfiguration type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredMutatingWebhookConfigurationInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
+ return cache.NewSharedIndexInformer(
+ &cache.ListWatch{
+ ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
+ return client.AdmissionregistrationV1alpha1().MutatingWebhookConfigurations().List(options)
+ },
+ WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
+ return client.AdmissionregistrationV1alpha1().MutatingWebhookConfigurations().Watch(options)
+ },
+ },
+ &admissionregistration_v1alpha1.MutatingWebhookConfiguration{},
+ resyncPeriod,
+ indexers,
+ )
+}
+
+func (f *mutatingWebhookConfigurationInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredMutatingWebhookConfigurationInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
+}
+
+func (f *mutatingWebhookConfigurationInformer) Informer() cache.SharedIndexInformer {
+ return f.factory.InformerFor(&admissionregistration_v1alpha1.MutatingWebhookConfiguration{}, f.defaultInformer)
+}
+
+func (f *mutatingWebhookConfigurationInformer) Lister() v1alpha1.MutatingWebhookConfigurationLister {
+ return v1alpha1.NewMutatingWebhookConfigurationLister(f.Informer().GetIndexer())
+}
diff --git a/staging/src/k8s.io/client-go/informers/admissionregistration/v1alpha1/validatingwebhookconfiguration.go b/staging/src/k8s.io/client-go/informers/admissionregistration/v1alpha1/validatingwebhookconfiguration.go
new file mode 100644
index 0000000000..2a2172eedc
--- /dev/null
+++ b/staging/src/k8s.io/client-go/informers/admissionregistration/v1alpha1/validatingwebhookconfiguration.go
@@ -0,0 +1,87 @@
+/*
+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.
+*/
+
+// This file was automatically generated by informer-gen
+
+package v1alpha1
+
+import (
+ admissionregistration_v1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ runtime "k8s.io/apimachinery/pkg/runtime"
+ watch "k8s.io/apimachinery/pkg/watch"
+ internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
+ kubernetes "k8s.io/client-go/kubernetes"
+ v1alpha1 "k8s.io/client-go/listers/admissionregistration/v1alpha1"
+ cache "k8s.io/client-go/tools/cache"
+ time "time"
+)
+
+// ValidatingWebhookConfigurationInformer provides access to a shared informer and lister for
+// ValidatingWebhookConfigurations.
+type ValidatingWebhookConfigurationInformer interface {
+ Informer() cache.SharedIndexInformer
+ Lister() v1alpha1.ValidatingWebhookConfigurationLister
+}
+
+type validatingWebhookConfigurationInformer struct {
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+}
+
+// NewValidatingWebhookConfigurationInformer constructs a new informer for ValidatingWebhookConfiguration type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewValidatingWebhookConfigurationInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredValidatingWebhookConfigurationInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredValidatingWebhookConfigurationInformer constructs a new informer for ValidatingWebhookConfiguration type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredValidatingWebhookConfigurationInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
+ return cache.NewSharedIndexInformer(
+ &cache.ListWatch{
+ ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
+ return client.AdmissionregistrationV1alpha1().ValidatingWebhookConfigurations().List(options)
+ },
+ WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
+ return client.AdmissionregistrationV1alpha1().ValidatingWebhookConfigurations().Watch(options)
+ },
+ },
+ &admissionregistration_v1alpha1.ValidatingWebhookConfiguration{},
+ resyncPeriod,
+ indexers,
+ )
+}
+
+func (f *validatingWebhookConfigurationInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredValidatingWebhookConfigurationInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
+}
+
+func (f *validatingWebhookConfigurationInformer) Informer() cache.SharedIndexInformer {
+ return f.factory.InformerFor(&admissionregistration_v1alpha1.ValidatingWebhookConfiguration{}, f.defaultInformer)
+}
+
+func (f *validatingWebhookConfigurationInformer) Lister() v1alpha1.ValidatingWebhookConfigurationLister {
+ return v1alpha1.NewValidatingWebhookConfigurationLister(f.Informer().GetIndexer())
+}
diff --git a/staging/src/k8s.io/client-go/informers/apps/interface.go b/staging/src/k8s.io/client-go/informers/apps/interface.go
index 9344787ce6..fdd32de0f3 100644
--- a/staging/src/k8s.io/client-go/informers/apps/interface.go
+++ b/staging/src/k8s.io/client-go/informers/apps/interface.go
@@ -36,25 +36,27 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// V1 returns a new v1.Interface.
func (g *group) V1() v1.Interface {
- return v1.New(g.SharedInformerFactory)
+ return v1.New(g.factory, g.namespace, g.tweakListOptions)
}
// V1beta1 returns a new v1beta1.Interface.
func (g *group) V1beta1() v1beta1.Interface {
- return v1beta1.New(g.SharedInformerFactory)
+ return v1beta1.New(g.factory, g.namespace, g.tweakListOptions)
}
// V1beta2 returns a new v1beta2.Interface.
func (g *group) V1beta2() v1beta2.Interface {
- return v1beta2.New(g.SharedInformerFactory)
+ return v1beta2.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/staging/src/k8s.io/client-go/informers/apps/v1/controllerrevision.go b/staging/src/k8s.io/client-go/informers/apps/v1/controllerrevision.go
index eb71c17b73..a69be9c70f 100644
--- a/staging/src/k8s.io/client-go/informers/apps/v1/controllerrevision.go
+++ b/staging/src/k8s.io/client-go/informers/apps/v1/controllerrevision.go
@@ -38,19 +38,34 @@ type ControllerRevisionInformer interface {
}
type controllerRevisionInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewControllerRevisionInformer constructs a new informer for ControllerRevision type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewControllerRevisionInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredControllerRevisionInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredControllerRevisionInformer constructs a new informer for ControllerRevision type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredControllerRevisionInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AppsV1().ControllerRevisions(namespace).List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AppsV1().ControllerRevisions(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewControllerRevisionInformer(client kubernetes.Interface, namespace string
)
}
-func defaultControllerRevisionInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewControllerRevisionInformer(client, meta_v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *controllerRevisionInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredControllerRevisionInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *controllerRevisionInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&apps_v1.ControllerRevision{}, defaultControllerRevisionInformer)
+ return f.factory.InformerFor(&apps_v1.ControllerRevision{}, f.defaultInformer)
}
func (f *controllerRevisionInformer) Lister() v1.ControllerRevisionLister {
diff --git a/staging/src/k8s.io/client-go/informers/apps/v1/daemonset.go b/staging/src/k8s.io/client-go/informers/apps/v1/daemonset.go
index 6dad76a096..1c7abf7d09 100644
--- a/staging/src/k8s.io/client-go/informers/apps/v1/daemonset.go
+++ b/staging/src/k8s.io/client-go/informers/apps/v1/daemonset.go
@@ -38,19 +38,34 @@ type DaemonSetInformer interface {
}
type daemonSetInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewDaemonSetInformer constructs a new informer for DaemonSet type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewDaemonSetInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredDaemonSetInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredDaemonSetInformer constructs a new informer for DaemonSet type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredDaemonSetInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AppsV1().DaemonSets(namespace).List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AppsV1().DaemonSets(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewDaemonSetInformer(client kubernetes.Interface, namespace string, resyncP
)
}
-func defaultDaemonSetInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewDaemonSetInformer(client, meta_v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *daemonSetInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredDaemonSetInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *daemonSetInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&apps_v1.DaemonSet{}, defaultDaemonSetInformer)
+ return f.factory.InformerFor(&apps_v1.DaemonSet{}, f.defaultInformer)
}
func (f *daemonSetInformer) Lister() v1.DaemonSetLister {
diff --git a/staging/src/k8s.io/client-go/informers/apps/v1/deployment.go b/staging/src/k8s.io/client-go/informers/apps/v1/deployment.go
index 886585ff92..9f6beed6e0 100644
--- a/staging/src/k8s.io/client-go/informers/apps/v1/deployment.go
+++ b/staging/src/k8s.io/client-go/informers/apps/v1/deployment.go
@@ -38,19 +38,34 @@ type DeploymentInformer interface {
}
type deploymentInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewDeploymentInformer constructs a new informer for Deployment type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewDeploymentInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredDeploymentInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredDeploymentInformer constructs a new informer for Deployment type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredDeploymentInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AppsV1().Deployments(namespace).List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AppsV1().Deployments(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewDeploymentInformer(client kubernetes.Interface, namespace string, resync
)
}
-func defaultDeploymentInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewDeploymentInformer(client, meta_v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *deploymentInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredDeploymentInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *deploymentInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&apps_v1.Deployment{}, defaultDeploymentInformer)
+ return f.factory.InformerFor(&apps_v1.Deployment{}, f.defaultInformer)
}
func (f *deploymentInformer) Lister() v1.DeploymentLister {
diff --git a/staging/src/k8s.io/client-go/informers/apps/v1/interface.go b/staging/src/k8s.io/client-go/informers/apps/v1/interface.go
index 09f069025b..6145fd6ccd 100644
--- a/staging/src/k8s.io/client-go/informers/apps/v1/interface.go
+++ b/staging/src/k8s.io/client-go/informers/apps/v1/interface.go
@@ -37,35 +37,37 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// ControllerRevisions returns a ControllerRevisionInformer.
func (v *version) ControllerRevisions() ControllerRevisionInformer {
- return &controllerRevisionInformer{factory: v.SharedInformerFactory}
+ return &controllerRevisionInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// DaemonSets returns a DaemonSetInformer.
func (v *version) DaemonSets() DaemonSetInformer {
- return &daemonSetInformer{factory: v.SharedInformerFactory}
+ return &daemonSetInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// Deployments returns a DeploymentInformer.
func (v *version) Deployments() DeploymentInformer {
- return &deploymentInformer{factory: v.SharedInformerFactory}
+ return &deploymentInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// ReplicaSets returns a ReplicaSetInformer.
func (v *version) ReplicaSets() ReplicaSetInformer {
- return &replicaSetInformer{factory: v.SharedInformerFactory}
+ return &replicaSetInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// StatefulSets returns a StatefulSetInformer.
func (v *version) StatefulSets() StatefulSetInformer {
- return &statefulSetInformer{factory: v.SharedInformerFactory}
+ return &statefulSetInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/staging/src/k8s.io/client-go/informers/apps/v1/replicaset.go b/staging/src/k8s.io/client-go/informers/apps/v1/replicaset.go
index 89497ecd33..1ac50607f2 100644
--- a/staging/src/k8s.io/client-go/informers/apps/v1/replicaset.go
+++ b/staging/src/k8s.io/client-go/informers/apps/v1/replicaset.go
@@ -38,19 +38,34 @@ type ReplicaSetInformer interface {
}
type replicaSetInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewReplicaSetInformer constructs a new informer for ReplicaSet type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewReplicaSetInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredReplicaSetInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredReplicaSetInformer constructs a new informer for ReplicaSet type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredReplicaSetInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AppsV1().ReplicaSets(namespace).List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AppsV1().ReplicaSets(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewReplicaSetInformer(client kubernetes.Interface, namespace string, resync
)
}
-func defaultReplicaSetInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewReplicaSetInformer(client, meta_v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *replicaSetInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredReplicaSetInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *replicaSetInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&apps_v1.ReplicaSet{}, defaultReplicaSetInformer)
+ return f.factory.InformerFor(&apps_v1.ReplicaSet{}, f.defaultInformer)
}
func (f *replicaSetInformer) Lister() v1.ReplicaSetLister {
diff --git a/staging/src/k8s.io/client-go/informers/apps/v1/statefulset.go b/staging/src/k8s.io/client-go/informers/apps/v1/statefulset.go
index be189070c9..535790df97 100644
--- a/staging/src/k8s.io/client-go/informers/apps/v1/statefulset.go
+++ b/staging/src/k8s.io/client-go/informers/apps/v1/statefulset.go
@@ -38,19 +38,34 @@ type StatefulSetInformer interface {
}
type statefulSetInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewStatefulSetInformer constructs a new informer for StatefulSet type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewStatefulSetInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredStatefulSetInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredStatefulSetInformer constructs a new informer for StatefulSet type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredStatefulSetInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AppsV1().StatefulSets(namespace).List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AppsV1().StatefulSets(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewStatefulSetInformer(client kubernetes.Interface, namespace string, resyn
)
}
-func defaultStatefulSetInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewStatefulSetInformer(client, meta_v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *statefulSetInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredStatefulSetInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *statefulSetInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&apps_v1.StatefulSet{}, defaultStatefulSetInformer)
+ return f.factory.InformerFor(&apps_v1.StatefulSet{}, f.defaultInformer)
}
func (f *statefulSetInformer) Lister() v1.StatefulSetLister {
diff --git a/staging/src/k8s.io/client-go/informers/apps/v1beta1/controllerrevision.go b/staging/src/k8s.io/client-go/informers/apps/v1beta1/controllerrevision.go
index 1a433f84ef..1e2de416bc 100644
--- a/staging/src/k8s.io/client-go/informers/apps/v1beta1/controllerrevision.go
+++ b/staging/src/k8s.io/client-go/informers/apps/v1beta1/controllerrevision.go
@@ -38,19 +38,34 @@ type ControllerRevisionInformer interface {
}
type controllerRevisionInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewControllerRevisionInformer constructs a new informer for ControllerRevision type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewControllerRevisionInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredControllerRevisionInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredControllerRevisionInformer constructs a new informer for ControllerRevision type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredControllerRevisionInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AppsV1beta1().ControllerRevisions(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AppsV1beta1().ControllerRevisions(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewControllerRevisionInformer(client kubernetes.Interface, namespace string
)
}
-func defaultControllerRevisionInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewControllerRevisionInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *controllerRevisionInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredControllerRevisionInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *controllerRevisionInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&apps_v1beta1.ControllerRevision{}, defaultControllerRevisionInformer)
+ return f.factory.InformerFor(&apps_v1beta1.ControllerRevision{}, f.defaultInformer)
}
func (f *controllerRevisionInformer) Lister() v1beta1.ControllerRevisionLister {
diff --git a/staging/src/k8s.io/client-go/informers/apps/v1beta1/deployment.go b/staging/src/k8s.io/client-go/informers/apps/v1beta1/deployment.go
index d77f3b3c26..4d2dea575a 100644
--- a/staging/src/k8s.io/client-go/informers/apps/v1beta1/deployment.go
+++ b/staging/src/k8s.io/client-go/informers/apps/v1beta1/deployment.go
@@ -38,19 +38,34 @@ type DeploymentInformer interface {
}
type deploymentInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewDeploymentInformer constructs a new informer for Deployment type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewDeploymentInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredDeploymentInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredDeploymentInformer constructs a new informer for Deployment type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredDeploymentInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AppsV1beta1().Deployments(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AppsV1beta1().Deployments(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewDeploymentInformer(client kubernetes.Interface, namespace string, resync
)
}
-func defaultDeploymentInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewDeploymentInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *deploymentInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredDeploymentInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *deploymentInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&apps_v1beta1.Deployment{}, defaultDeploymentInformer)
+ return f.factory.InformerFor(&apps_v1beta1.Deployment{}, f.defaultInformer)
}
func (f *deploymentInformer) Lister() v1beta1.DeploymentLister {
diff --git a/staging/src/k8s.io/client-go/informers/apps/v1beta1/interface.go b/staging/src/k8s.io/client-go/informers/apps/v1beta1/interface.go
index 11f55faad9..3a51a1f5b4 100644
--- a/staging/src/k8s.io/client-go/informers/apps/v1beta1/interface.go
+++ b/staging/src/k8s.io/client-go/informers/apps/v1beta1/interface.go
@@ -33,25 +33,27 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// ControllerRevisions returns a ControllerRevisionInformer.
func (v *version) ControllerRevisions() ControllerRevisionInformer {
- return &controllerRevisionInformer{factory: v.SharedInformerFactory}
+ return &controllerRevisionInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// Deployments returns a DeploymentInformer.
func (v *version) Deployments() DeploymentInformer {
- return &deploymentInformer{factory: v.SharedInformerFactory}
+ return &deploymentInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// StatefulSets returns a StatefulSetInformer.
func (v *version) StatefulSets() StatefulSetInformer {
- return &statefulSetInformer{factory: v.SharedInformerFactory}
+ return &statefulSetInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/staging/src/k8s.io/client-go/informers/apps/v1beta1/statefulset.go b/staging/src/k8s.io/client-go/informers/apps/v1beta1/statefulset.go
index 3bd8af7d73..779ae2c60d 100644
--- a/staging/src/k8s.io/client-go/informers/apps/v1beta1/statefulset.go
+++ b/staging/src/k8s.io/client-go/informers/apps/v1beta1/statefulset.go
@@ -38,19 +38,34 @@ type StatefulSetInformer interface {
}
type statefulSetInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewStatefulSetInformer constructs a new informer for StatefulSet type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewStatefulSetInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredStatefulSetInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredStatefulSetInformer constructs a new informer for StatefulSet type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredStatefulSetInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AppsV1beta1().StatefulSets(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AppsV1beta1().StatefulSets(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewStatefulSetInformer(client kubernetes.Interface, namespace string, resyn
)
}
-func defaultStatefulSetInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewStatefulSetInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *statefulSetInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredStatefulSetInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *statefulSetInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&apps_v1beta1.StatefulSet{}, defaultStatefulSetInformer)
+ return f.factory.InformerFor(&apps_v1beta1.StatefulSet{}, f.defaultInformer)
}
func (f *statefulSetInformer) Lister() v1beta1.StatefulSetLister {
diff --git a/staging/src/k8s.io/client-go/informers/apps/v1beta2/controllerrevision.go b/staging/src/k8s.io/client-go/informers/apps/v1beta2/controllerrevision.go
index ba1be506be..a7d55ab4c6 100644
--- a/staging/src/k8s.io/client-go/informers/apps/v1beta2/controllerrevision.go
+++ b/staging/src/k8s.io/client-go/informers/apps/v1beta2/controllerrevision.go
@@ -38,19 +38,34 @@ type ControllerRevisionInformer interface {
}
type controllerRevisionInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewControllerRevisionInformer constructs a new informer for ControllerRevision type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewControllerRevisionInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredControllerRevisionInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredControllerRevisionInformer constructs a new informer for ControllerRevision type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredControllerRevisionInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AppsV1beta2().ControllerRevisions(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AppsV1beta2().ControllerRevisions(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewControllerRevisionInformer(client kubernetes.Interface, namespace string
)
}
-func defaultControllerRevisionInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewControllerRevisionInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *controllerRevisionInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredControllerRevisionInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *controllerRevisionInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&apps_v1beta2.ControllerRevision{}, defaultControllerRevisionInformer)
+ return f.factory.InformerFor(&apps_v1beta2.ControllerRevision{}, f.defaultInformer)
}
func (f *controllerRevisionInformer) Lister() v1beta2.ControllerRevisionLister {
diff --git a/staging/src/k8s.io/client-go/informers/apps/v1beta2/daemonset.go b/staging/src/k8s.io/client-go/informers/apps/v1beta2/daemonset.go
index 5c440f239a..5d3288026e 100644
--- a/staging/src/k8s.io/client-go/informers/apps/v1beta2/daemonset.go
+++ b/staging/src/k8s.io/client-go/informers/apps/v1beta2/daemonset.go
@@ -38,19 +38,34 @@ type DaemonSetInformer interface {
}
type daemonSetInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewDaemonSetInformer constructs a new informer for DaemonSet type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewDaemonSetInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredDaemonSetInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredDaemonSetInformer constructs a new informer for DaemonSet type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredDaemonSetInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AppsV1beta2().DaemonSets(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AppsV1beta2().DaemonSets(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewDaemonSetInformer(client kubernetes.Interface, namespace string, resyncP
)
}
-func defaultDaemonSetInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewDaemonSetInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *daemonSetInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredDaemonSetInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *daemonSetInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&apps_v1beta2.DaemonSet{}, defaultDaemonSetInformer)
+ return f.factory.InformerFor(&apps_v1beta2.DaemonSet{}, f.defaultInformer)
}
func (f *daemonSetInformer) Lister() v1beta2.DaemonSetLister {
diff --git a/staging/src/k8s.io/client-go/informers/apps/v1beta2/deployment.go b/staging/src/k8s.io/client-go/informers/apps/v1beta2/deployment.go
index 031bcddd23..6b6cd60352 100644
--- a/staging/src/k8s.io/client-go/informers/apps/v1beta2/deployment.go
+++ b/staging/src/k8s.io/client-go/informers/apps/v1beta2/deployment.go
@@ -38,19 +38,34 @@ type DeploymentInformer interface {
}
type deploymentInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewDeploymentInformer constructs a new informer for Deployment type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewDeploymentInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredDeploymentInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredDeploymentInformer constructs a new informer for Deployment type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredDeploymentInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AppsV1beta2().Deployments(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AppsV1beta2().Deployments(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewDeploymentInformer(client kubernetes.Interface, namespace string, resync
)
}
-func defaultDeploymentInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewDeploymentInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *deploymentInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredDeploymentInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *deploymentInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&apps_v1beta2.Deployment{}, defaultDeploymentInformer)
+ return f.factory.InformerFor(&apps_v1beta2.Deployment{}, f.defaultInformer)
}
func (f *deploymentInformer) Lister() v1beta2.DeploymentLister {
diff --git a/staging/src/k8s.io/client-go/informers/apps/v1beta2/interface.go b/staging/src/k8s.io/client-go/informers/apps/v1beta2/interface.go
index 3f12f50325..59a6e73d4a 100644
--- a/staging/src/k8s.io/client-go/informers/apps/v1beta2/interface.go
+++ b/staging/src/k8s.io/client-go/informers/apps/v1beta2/interface.go
@@ -37,35 +37,37 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// ControllerRevisions returns a ControllerRevisionInformer.
func (v *version) ControllerRevisions() ControllerRevisionInformer {
- return &controllerRevisionInformer{factory: v.SharedInformerFactory}
+ return &controllerRevisionInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// DaemonSets returns a DaemonSetInformer.
func (v *version) DaemonSets() DaemonSetInformer {
- return &daemonSetInformer{factory: v.SharedInformerFactory}
+ return &daemonSetInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// Deployments returns a DeploymentInformer.
func (v *version) Deployments() DeploymentInformer {
- return &deploymentInformer{factory: v.SharedInformerFactory}
+ return &deploymentInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// ReplicaSets returns a ReplicaSetInformer.
func (v *version) ReplicaSets() ReplicaSetInformer {
- return &replicaSetInformer{factory: v.SharedInformerFactory}
+ return &replicaSetInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// StatefulSets returns a StatefulSetInformer.
func (v *version) StatefulSets() StatefulSetInformer {
- return &statefulSetInformer{factory: v.SharedInformerFactory}
+ return &statefulSetInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/staging/src/k8s.io/client-go/informers/apps/v1beta2/replicaset.go b/staging/src/k8s.io/client-go/informers/apps/v1beta2/replicaset.go
index 1eec8e8c99..988a3e4fbb 100644
--- a/staging/src/k8s.io/client-go/informers/apps/v1beta2/replicaset.go
+++ b/staging/src/k8s.io/client-go/informers/apps/v1beta2/replicaset.go
@@ -38,19 +38,34 @@ type ReplicaSetInformer interface {
}
type replicaSetInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewReplicaSetInformer constructs a new informer for ReplicaSet type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewReplicaSetInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredReplicaSetInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredReplicaSetInformer constructs a new informer for ReplicaSet type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredReplicaSetInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AppsV1beta2().ReplicaSets(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AppsV1beta2().ReplicaSets(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewReplicaSetInformer(client kubernetes.Interface, namespace string, resync
)
}
-func defaultReplicaSetInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewReplicaSetInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *replicaSetInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredReplicaSetInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *replicaSetInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&apps_v1beta2.ReplicaSet{}, defaultReplicaSetInformer)
+ return f.factory.InformerFor(&apps_v1beta2.ReplicaSet{}, f.defaultInformer)
}
func (f *replicaSetInformer) Lister() v1beta2.ReplicaSetLister {
diff --git a/staging/src/k8s.io/client-go/informers/apps/v1beta2/statefulset.go b/staging/src/k8s.io/client-go/informers/apps/v1beta2/statefulset.go
index 004e6b8ecf..dff9c24083 100644
--- a/staging/src/k8s.io/client-go/informers/apps/v1beta2/statefulset.go
+++ b/staging/src/k8s.io/client-go/informers/apps/v1beta2/statefulset.go
@@ -38,19 +38,34 @@ type StatefulSetInformer interface {
}
type statefulSetInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewStatefulSetInformer constructs a new informer for StatefulSet type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewStatefulSetInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredStatefulSetInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredStatefulSetInformer constructs a new informer for StatefulSet type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredStatefulSetInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AppsV1beta2().StatefulSets(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AppsV1beta2().StatefulSets(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewStatefulSetInformer(client kubernetes.Interface, namespace string, resyn
)
}
-func defaultStatefulSetInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewStatefulSetInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *statefulSetInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredStatefulSetInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *statefulSetInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&apps_v1beta2.StatefulSet{}, defaultStatefulSetInformer)
+ return f.factory.InformerFor(&apps_v1beta2.StatefulSet{}, f.defaultInformer)
}
func (f *statefulSetInformer) Lister() v1beta2.StatefulSetLister {
diff --git a/staging/src/k8s.io/client-go/informers/autoscaling/interface.go b/staging/src/k8s.io/client-go/informers/autoscaling/interface.go
index 520c0be3cc..63a5c0ccda 100644
--- a/staging/src/k8s.io/client-go/informers/autoscaling/interface.go
+++ b/staging/src/k8s.io/client-go/informers/autoscaling/interface.go
@@ -33,20 +33,22 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// V1 returns a new v1.Interface.
func (g *group) V1() v1.Interface {
- return v1.New(g.SharedInformerFactory)
+ return v1.New(g.factory, g.namespace, g.tweakListOptions)
}
// V2beta1 returns a new v2beta1.Interface.
func (g *group) V2beta1() v2beta1.Interface {
- return v2beta1.New(g.SharedInformerFactory)
+ return v2beta1.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/staging/src/k8s.io/client-go/informers/autoscaling/v1/horizontalpodautoscaler.go b/staging/src/k8s.io/client-go/informers/autoscaling/v1/horizontalpodautoscaler.go
index d1f8cae617..7d875e7356 100644
--- a/staging/src/k8s.io/client-go/informers/autoscaling/v1/horizontalpodautoscaler.go
+++ b/staging/src/k8s.io/client-go/informers/autoscaling/v1/horizontalpodautoscaler.go
@@ -38,19 +38,34 @@ type HorizontalPodAutoscalerInformer interface {
}
type horizontalPodAutoscalerInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewHorizontalPodAutoscalerInformer constructs a new informer for HorizontalPodAutoscaler type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewHorizontalPodAutoscalerInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredHorizontalPodAutoscalerInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredHorizontalPodAutoscalerInformer constructs a new informer for HorizontalPodAutoscaler type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredHorizontalPodAutoscalerInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AutoscalingV1().HorizontalPodAutoscalers(namespace).List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AutoscalingV1().HorizontalPodAutoscalers(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewHorizontalPodAutoscalerInformer(client kubernetes.Interface, namespace s
)
}
-func defaultHorizontalPodAutoscalerInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewHorizontalPodAutoscalerInformer(client, meta_v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *horizontalPodAutoscalerInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredHorizontalPodAutoscalerInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *horizontalPodAutoscalerInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&autoscaling_v1.HorizontalPodAutoscaler{}, defaultHorizontalPodAutoscalerInformer)
+ return f.factory.InformerFor(&autoscaling_v1.HorizontalPodAutoscaler{}, f.defaultInformer)
}
func (f *horizontalPodAutoscalerInformer) Lister() v1.HorizontalPodAutoscalerLister {
diff --git a/staging/src/k8s.io/client-go/informers/autoscaling/v1/interface.go b/staging/src/k8s.io/client-go/informers/autoscaling/v1/interface.go
index 45f4bb35a8..5ba9070120 100644
--- a/staging/src/k8s.io/client-go/informers/autoscaling/v1/interface.go
+++ b/staging/src/k8s.io/client-go/informers/autoscaling/v1/interface.go
@@ -29,15 +29,17 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// HorizontalPodAutoscalers returns a HorizontalPodAutoscalerInformer.
func (v *version) HorizontalPodAutoscalers() HorizontalPodAutoscalerInformer {
- return &horizontalPodAutoscalerInformer{factory: v.SharedInformerFactory}
+ return &horizontalPodAutoscalerInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/staging/src/k8s.io/client-go/informers/autoscaling/v2beta1/horizontalpodautoscaler.go b/staging/src/k8s.io/client-go/informers/autoscaling/v2beta1/horizontalpodautoscaler.go
index 9291b80507..9865f8e133 100644
--- a/staging/src/k8s.io/client-go/informers/autoscaling/v2beta1/horizontalpodautoscaler.go
+++ b/staging/src/k8s.io/client-go/informers/autoscaling/v2beta1/horizontalpodautoscaler.go
@@ -38,19 +38,34 @@ type HorizontalPodAutoscalerInformer interface {
}
type horizontalPodAutoscalerInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewHorizontalPodAutoscalerInformer constructs a new informer for HorizontalPodAutoscaler type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewHorizontalPodAutoscalerInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredHorizontalPodAutoscalerInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredHorizontalPodAutoscalerInformer constructs a new informer for HorizontalPodAutoscaler type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredHorizontalPodAutoscalerInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AutoscalingV2beta1().HorizontalPodAutoscalers(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.AutoscalingV2beta1().HorizontalPodAutoscalers(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewHorizontalPodAutoscalerInformer(client kubernetes.Interface, namespace s
)
}
-func defaultHorizontalPodAutoscalerInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewHorizontalPodAutoscalerInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *horizontalPodAutoscalerInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredHorizontalPodAutoscalerInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *horizontalPodAutoscalerInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&autoscaling_v2beta1.HorizontalPodAutoscaler{}, defaultHorizontalPodAutoscalerInformer)
+ return f.factory.InformerFor(&autoscaling_v2beta1.HorizontalPodAutoscaler{}, f.defaultInformer)
}
func (f *horizontalPodAutoscalerInformer) Lister() v2beta1.HorizontalPodAutoscalerLister {
diff --git a/staging/src/k8s.io/client-go/informers/autoscaling/v2beta1/interface.go b/staging/src/k8s.io/client-go/informers/autoscaling/v2beta1/interface.go
index 4733291b6a..4c9ea84999 100644
--- a/staging/src/k8s.io/client-go/informers/autoscaling/v2beta1/interface.go
+++ b/staging/src/k8s.io/client-go/informers/autoscaling/v2beta1/interface.go
@@ -29,15 +29,17 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// HorizontalPodAutoscalers returns a HorizontalPodAutoscalerInformer.
func (v *version) HorizontalPodAutoscalers() HorizontalPodAutoscalerInformer {
- return &horizontalPodAutoscalerInformer{factory: v.SharedInformerFactory}
+ return &horizontalPodAutoscalerInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/staging/src/k8s.io/client-go/informers/batch/interface.go b/staging/src/k8s.io/client-go/informers/batch/interface.go
index 159e75665c..bbaec79648 100644
--- a/staging/src/k8s.io/client-go/informers/batch/interface.go
+++ b/staging/src/k8s.io/client-go/informers/batch/interface.go
@@ -36,25 +36,27 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// V1 returns a new v1.Interface.
func (g *group) V1() v1.Interface {
- return v1.New(g.SharedInformerFactory)
+ return v1.New(g.factory, g.namespace, g.tweakListOptions)
}
// V1beta1 returns a new v1beta1.Interface.
func (g *group) V1beta1() v1beta1.Interface {
- return v1beta1.New(g.SharedInformerFactory)
+ return v1beta1.New(g.factory, g.namespace, g.tweakListOptions)
}
// V2alpha1 returns a new v2alpha1.Interface.
func (g *group) V2alpha1() v2alpha1.Interface {
- return v2alpha1.New(g.SharedInformerFactory)
+ return v2alpha1.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/staging/src/k8s.io/client-go/informers/batch/v1/interface.go b/staging/src/k8s.io/client-go/informers/batch/v1/interface.go
index d4d7d56f62..41c08ea2d9 100644
--- a/staging/src/k8s.io/client-go/informers/batch/v1/interface.go
+++ b/staging/src/k8s.io/client-go/informers/batch/v1/interface.go
@@ -29,15 +29,17 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// Jobs returns a JobInformer.
func (v *version) Jobs() JobInformer {
- return &jobInformer{factory: v.SharedInformerFactory}
+ return &jobInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/staging/src/k8s.io/client-go/informers/batch/v1/job.go b/staging/src/k8s.io/client-go/informers/batch/v1/job.go
index a5a35680aa..8a2e5f0d8b 100644
--- a/staging/src/k8s.io/client-go/informers/batch/v1/job.go
+++ b/staging/src/k8s.io/client-go/informers/batch/v1/job.go
@@ -38,19 +38,34 @@ type JobInformer interface {
}
type jobInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewJobInformer constructs a new informer for Job type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewJobInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredJobInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredJobInformer constructs a new informer for Job type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredJobInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.BatchV1().Jobs(namespace).List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.BatchV1().Jobs(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewJobInformer(client kubernetes.Interface, namespace string, resyncPeriod
)
}
-func defaultJobInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewJobInformer(client, meta_v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *jobInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredJobInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *jobInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&batch_v1.Job{}, defaultJobInformer)
+ return f.factory.InformerFor(&batch_v1.Job{}, f.defaultInformer)
}
func (f *jobInformer) Lister() v1.JobLister {
diff --git a/staging/src/k8s.io/client-go/informers/batch/v1beta1/cronjob.go b/staging/src/k8s.io/client-go/informers/batch/v1beta1/cronjob.go
index 11bf035d34..4edfd4153d 100644
--- a/staging/src/k8s.io/client-go/informers/batch/v1beta1/cronjob.go
+++ b/staging/src/k8s.io/client-go/informers/batch/v1beta1/cronjob.go
@@ -38,19 +38,34 @@ type CronJobInformer interface {
}
type cronJobInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewCronJobInformer constructs a new informer for CronJob type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewCronJobInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredCronJobInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredCronJobInformer constructs a new informer for CronJob type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredCronJobInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.BatchV1beta1().CronJobs(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.BatchV1beta1().CronJobs(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewCronJobInformer(client kubernetes.Interface, namespace string, resyncPer
)
}
-func defaultCronJobInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewCronJobInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *cronJobInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredCronJobInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *cronJobInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&batch_v1beta1.CronJob{}, defaultCronJobInformer)
+ return f.factory.InformerFor(&batch_v1beta1.CronJob{}, f.defaultInformer)
}
func (f *cronJobInformer) Lister() v1beta1.CronJobLister {
diff --git a/staging/src/k8s.io/client-go/informers/batch/v1beta1/interface.go b/staging/src/k8s.io/client-go/informers/batch/v1beta1/interface.go
index 10b2f9f659..0ba1935dc6 100644
--- a/staging/src/k8s.io/client-go/informers/batch/v1beta1/interface.go
+++ b/staging/src/k8s.io/client-go/informers/batch/v1beta1/interface.go
@@ -29,15 +29,17 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// CronJobs returns a CronJobInformer.
func (v *version) CronJobs() CronJobInformer {
- return &cronJobInformer{factory: v.SharedInformerFactory}
+ return &cronJobInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/staging/src/k8s.io/client-go/informers/batch/v2alpha1/cronjob.go b/staging/src/k8s.io/client-go/informers/batch/v2alpha1/cronjob.go
index 26ce57e5b7..03a6e6f883 100644
--- a/staging/src/k8s.io/client-go/informers/batch/v2alpha1/cronjob.go
+++ b/staging/src/k8s.io/client-go/informers/batch/v2alpha1/cronjob.go
@@ -38,19 +38,34 @@ type CronJobInformer interface {
}
type cronJobInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewCronJobInformer constructs a new informer for CronJob type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewCronJobInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredCronJobInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredCronJobInformer constructs a new informer for CronJob type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredCronJobInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.BatchV2alpha1().CronJobs(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.BatchV2alpha1().CronJobs(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewCronJobInformer(client kubernetes.Interface, namespace string, resyncPer
)
}
-func defaultCronJobInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewCronJobInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *cronJobInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredCronJobInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *cronJobInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&batch_v2alpha1.CronJob{}, defaultCronJobInformer)
+ return f.factory.InformerFor(&batch_v2alpha1.CronJob{}, f.defaultInformer)
}
func (f *cronJobInformer) Lister() v2alpha1.CronJobLister {
diff --git a/staging/src/k8s.io/client-go/informers/batch/v2alpha1/interface.go b/staging/src/k8s.io/client-go/informers/batch/v2alpha1/interface.go
index 261330bf08..39b6f33f05 100644
--- a/staging/src/k8s.io/client-go/informers/batch/v2alpha1/interface.go
+++ b/staging/src/k8s.io/client-go/informers/batch/v2alpha1/interface.go
@@ -29,15 +29,17 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// CronJobs returns a CronJobInformer.
func (v *version) CronJobs() CronJobInformer {
- return &cronJobInformer{factory: v.SharedInformerFactory}
+ return &cronJobInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/staging/src/k8s.io/client-go/informers/certificates/interface.go b/staging/src/k8s.io/client-go/informers/certificates/interface.go
index 4d9f8ea504..1eefe47973 100644
--- a/staging/src/k8s.io/client-go/informers/certificates/interface.go
+++ b/staging/src/k8s.io/client-go/informers/certificates/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// V1beta1 returns a new v1beta1.Interface.
func (g *group) V1beta1() v1beta1.Interface {
- return v1beta1.New(g.SharedInformerFactory)
+ return v1beta1.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/staging/src/k8s.io/client-go/informers/certificates/v1beta1/certificatesigningrequest.go b/staging/src/k8s.io/client-go/informers/certificates/v1beta1/certificatesigningrequest.go
index 3d949742d8..44aac5c724 100644
--- a/staging/src/k8s.io/client-go/informers/certificates/v1beta1/certificatesigningrequest.go
+++ b/staging/src/k8s.io/client-go/informers/certificates/v1beta1/certificatesigningrequest.go
@@ -38,19 +38,33 @@ type CertificateSigningRequestInformer interface {
}
type certificateSigningRequestInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewCertificateSigningRequestInformer constructs a new informer for CertificateSigningRequest type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewCertificateSigningRequestInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredCertificateSigningRequestInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredCertificateSigningRequestInformer constructs a new informer for CertificateSigningRequest type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredCertificateSigningRequestInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CertificatesV1beta1().CertificateSigningRequests().List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CertificatesV1beta1().CertificateSigningRequests().Watch(options)
},
},
@@ -60,12 +74,12 @@ func NewCertificateSigningRequestInformer(client kubernetes.Interface, resyncPer
)
}
-func defaultCertificateSigningRequestInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewCertificateSigningRequestInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *certificateSigningRequestInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredCertificateSigningRequestInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *certificateSigningRequestInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&certificates_v1beta1.CertificateSigningRequest{}, defaultCertificateSigningRequestInformer)
+ return f.factory.InformerFor(&certificates_v1beta1.CertificateSigningRequest{}, f.defaultInformer)
}
func (f *certificateSigningRequestInformer) Lister() v1beta1.CertificateSigningRequestLister {
diff --git a/staging/src/k8s.io/client-go/informers/certificates/v1beta1/interface.go b/staging/src/k8s.io/client-go/informers/certificates/v1beta1/interface.go
index 8facec1276..8578023c78 100644
--- a/staging/src/k8s.io/client-go/informers/certificates/v1beta1/interface.go
+++ b/staging/src/k8s.io/client-go/informers/certificates/v1beta1/interface.go
@@ -29,15 +29,17 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// CertificateSigningRequests returns a CertificateSigningRequestInformer.
func (v *version) CertificateSigningRequests() CertificateSigningRequestInformer {
- return &certificateSigningRequestInformer{factory: v.SharedInformerFactory}
+ return &certificateSigningRequestInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
diff --git a/staging/src/k8s.io/client-go/informers/core/interface.go b/staging/src/k8s.io/client-go/informers/core/interface.go
index f90c24851a..7fc2a5cd5f 100644
--- a/staging/src/k8s.io/client-go/informers/core/interface.go
+++ b/staging/src/k8s.io/client-go/informers/core/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// V1 returns a new v1.Interface.
func (g *group) V1() v1.Interface {
- return v1.New(g.SharedInformerFactory)
+ return v1.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/staging/src/k8s.io/client-go/informers/core/v1/componentstatus.go b/staging/src/k8s.io/client-go/informers/core/v1/componentstatus.go
index f07f9120be..77b17fd3ee 100644
--- a/staging/src/k8s.io/client-go/informers/core/v1/componentstatus.go
+++ b/staging/src/k8s.io/client-go/informers/core/v1/componentstatus.go
@@ -38,19 +38,33 @@ type ComponentStatusInformer interface {
}
type componentStatusInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewComponentStatusInformer constructs a new informer for ComponentStatus type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewComponentStatusInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredComponentStatusInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredComponentStatusInformer constructs a new informer for ComponentStatus type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredComponentStatusInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().ComponentStatuses().List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().ComponentStatuses().Watch(options)
},
},
@@ -60,12 +74,12 @@ func NewComponentStatusInformer(client kubernetes.Interface, resyncPeriod time.D
)
}
-func defaultComponentStatusInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewComponentStatusInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *componentStatusInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredComponentStatusInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *componentStatusInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&core_v1.ComponentStatus{}, defaultComponentStatusInformer)
+ return f.factory.InformerFor(&core_v1.ComponentStatus{}, f.defaultInformer)
}
func (f *componentStatusInformer) Lister() v1.ComponentStatusLister {
diff --git a/staging/src/k8s.io/client-go/informers/core/v1/configmap.go b/staging/src/k8s.io/client-go/informers/core/v1/configmap.go
index 7a14f1db40..ed0f4c2d92 100644
--- a/staging/src/k8s.io/client-go/informers/core/v1/configmap.go
+++ b/staging/src/k8s.io/client-go/informers/core/v1/configmap.go
@@ -38,19 +38,34 @@ type ConfigMapInformer interface {
}
type configMapInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewConfigMapInformer constructs a new informer for ConfigMap type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewConfigMapInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredConfigMapInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredConfigMapInformer constructs a new informer for ConfigMap type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredConfigMapInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().ConfigMaps(namespace).List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().ConfigMaps(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewConfigMapInformer(client kubernetes.Interface, namespace string, resyncP
)
}
-func defaultConfigMapInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewConfigMapInformer(client, meta_v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *configMapInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredConfigMapInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *configMapInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&core_v1.ConfigMap{}, defaultConfigMapInformer)
+ return f.factory.InformerFor(&core_v1.ConfigMap{}, f.defaultInformer)
}
func (f *configMapInformer) Lister() v1.ConfigMapLister {
diff --git a/staging/src/k8s.io/client-go/informers/core/v1/endpoints.go b/staging/src/k8s.io/client-go/informers/core/v1/endpoints.go
index 248aedfee5..8a7228bafb 100644
--- a/staging/src/k8s.io/client-go/informers/core/v1/endpoints.go
+++ b/staging/src/k8s.io/client-go/informers/core/v1/endpoints.go
@@ -38,19 +38,34 @@ type EndpointsInformer interface {
}
type endpointsInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewEndpointsInformer constructs a new informer for Endpoints type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewEndpointsInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredEndpointsInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredEndpointsInformer constructs a new informer for Endpoints type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredEndpointsInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().Endpoints(namespace).List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().Endpoints(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewEndpointsInformer(client kubernetes.Interface, namespace string, resyncP
)
}
-func defaultEndpointsInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewEndpointsInformer(client, meta_v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *endpointsInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredEndpointsInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *endpointsInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&core_v1.Endpoints{}, defaultEndpointsInformer)
+ return f.factory.InformerFor(&core_v1.Endpoints{}, f.defaultInformer)
}
func (f *endpointsInformer) Lister() v1.EndpointsLister {
diff --git a/staging/src/k8s.io/client-go/informers/core/v1/event.go b/staging/src/k8s.io/client-go/informers/core/v1/event.go
index 0751775c3e..23f5ead665 100644
--- a/staging/src/k8s.io/client-go/informers/core/v1/event.go
+++ b/staging/src/k8s.io/client-go/informers/core/v1/event.go
@@ -38,19 +38,34 @@ type EventInformer interface {
}
type eventInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewEventInformer constructs a new informer for Event type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewEventInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredEventInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredEventInformer constructs a new informer for Event type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredEventInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().Events(namespace).List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().Events(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewEventInformer(client kubernetes.Interface, namespace string, resyncPerio
)
}
-func defaultEventInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewEventInformer(client, meta_v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *eventInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredEventInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *eventInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&core_v1.Event{}, defaultEventInformer)
+ return f.factory.InformerFor(&core_v1.Event{}, f.defaultInformer)
}
func (f *eventInformer) Lister() v1.EventLister {
diff --git a/staging/src/k8s.io/client-go/informers/core/v1/interface.go b/staging/src/k8s.io/client-go/informers/core/v1/interface.go
index 5f2ff96b2c..e560b12f80 100644
--- a/staging/src/k8s.io/client-go/informers/core/v1/interface.go
+++ b/staging/src/k8s.io/client-go/informers/core/v1/interface.go
@@ -59,90 +59,92 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// ComponentStatuses returns a ComponentStatusInformer.
func (v *version) ComponentStatuses() ComponentStatusInformer {
- return &componentStatusInformer{factory: v.SharedInformerFactory}
+ return &componentStatusInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
// ConfigMaps returns a ConfigMapInformer.
func (v *version) ConfigMaps() ConfigMapInformer {
- return &configMapInformer{factory: v.SharedInformerFactory}
+ return &configMapInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// Endpoints returns a EndpointsInformer.
func (v *version) Endpoints() EndpointsInformer {
- return &endpointsInformer{factory: v.SharedInformerFactory}
+ return &endpointsInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// Events returns a EventInformer.
func (v *version) Events() EventInformer {
- return &eventInformer{factory: v.SharedInformerFactory}
+ return &eventInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// LimitRanges returns a LimitRangeInformer.
func (v *version) LimitRanges() LimitRangeInformer {
- return &limitRangeInformer{factory: v.SharedInformerFactory}
+ return &limitRangeInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// Namespaces returns a NamespaceInformer.
func (v *version) Namespaces() NamespaceInformer {
- return &namespaceInformer{factory: v.SharedInformerFactory}
+ return &namespaceInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
// Nodes returns a NodeInformer.
func (v *version) Nodes() NodeInformer {
- return &nodeInformer{factory: v.SharedInformerFactory}
+ return &nodeInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
// PersistentVolumes returns a PersistentVolumeInformer.
func (v *version) PersistentVolumes() PersistentVolumeInformer {
- return &persistentVolumeInformer{factory: v.SharedInformerFactory}
+ return &persistentVolumeInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
// PersistentVolumeClaims returns a PersistentVolumeClaimInformer.
func (v *version) PersistentVolumeClaims() PersistentVolumeClaimInformer {
- return &persistentVolumeClaimInformer{factory: v.SharedInformerFactory}
+ return &persistentVolumeClaimInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// Pods returns a PodInformer.
func (v *version) Pods() PodInformer {
- return &podInformer{factory: v.SharedInformerFactory}
+ return &podInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// PodTemplates returns a PodTemplateInformer.
func (v *version) PodTemplates() PodTemplateInformer {
- return &podTemplateInformer{factory: v.SharedInformerFactory}
+ return &podTemplateInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// ReplicationControllers returns a ReplicationControllerInformer.
func (v *version) ReplicationControllers() ReplicationControllerInformer {
- return &replicationControllerInformer{factory: v.SharedInformerFactory}
+ return &replicationControllerInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// ResourceQuotas returns a ResourceQuotaInformer.
func (v *version) ResourceQuotas() ResourceQuotaInformer {
- return &resourceQuotaInformer{factory: v.SharedInformerFactory}
+ return &resourceQuotaInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// Secrets returns a SecretInformer.
func (v *version) Secrets() SecretInformer {
- return &secretInformer{factory: v.SharedInformerFactory}
+ return &secretInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// Services returns a ServiceInformer.
func (v *version) Services() ServiceInformer {
- return &serviceInformer{factory: v.SharedInformerFactory}
+ return &serviceInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// ServiceAccounts returns a ServiceAccountInformer.
func (v *version) ServiceAccounts() ServiceAccountInformer {
- return &serviceAccountInformer{factory: v.SharedInformerFactory}
+ return &serviceAccountInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/staging/src/k8s.io/client-go/informers/core/v1/limitrange.go b/staging/src/k8s.io/client-go/informers/core/v1/limitrange.go
index 77ffbb6dc1..9588b94021 100644
--- a/staging/src/k8s.io/client-go/informers/core/v1/limitrange.go
+++ b/staging/src/k8s.io/client-go/informers/core/v1/limitrange.go
@@ -38,19 +38,34 @@ type LimitRangeInformer interface {
}
type limitRangeInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewLimitRangeInformer constructs a new informer for LimitRange type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewLimitRangeInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredLimitRangeInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredLimitRangeInformer constructs a new informer for LimitRange type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredLimitRangeInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().LimitRanges(namespace).List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().LimitRanges(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewLimitRangeInformer(client kubernetes.Interface, namespace string, resync
)
}
-func defaultLimitRangeInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewLimitRangeInformer(client, meta_v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *limitRangeInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredLimitRangeInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *limitRangeInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&core_v1.LimitRange{}, defaultLimitRangeInformer)
+ return f.factory.InformerFor(&core_v1.LimitRange{}, f.defaultInformer)
}
func (f *limitRangeInformer) Lister() v1.LimitRangeLister {
diff --git a/staging/src/k8s.io/client-go/informers/core/v1/namespace.go b/staging/src/k8s.io/client-go/informers/core/v1/namespace.go
index e37dccfda5..eb841b157b 100644
--- a/staging/src/k8s.io/client-go/informers/core/v1/namespace.go
+++ b/staging/src/k8s.io/client-go/informers/core/v1/namespace.go
@@ -38,19 +38,33 @@ type NamespaceInformer interface {
}
type namespaceInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewNamespaceInformer constructs a new informer for Namespace type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewNamespaceInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredNamespaceInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredNamespaceInformer constructs a new informer for Namespace type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredNamespaceInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().Namespaces().List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().Namespaces().Watch(options)
},
},
@@ -60,12 +74,12 @@ func NewNamespaceInformer(client kubernetes.Interface, resyncPeriod time.Duratio
)
}
-func defaultNamespaceInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewNamespaceInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *namespaceInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredNamespaceInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *namespaceInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&core_v1.Namespace{}, defaultNamespaceInformer)
+ return f.factory.InformerFor(&core_v1.Namespace{}, f.defaultInformer)
}
func (f *namespaceInformer) Lister() v1.NamespaceLister {
diff --git a/staging/src/k8s.io/client-go/informers/core/v1/node.go b/staging/src/k8s.io/client-go/informers/core/v1/node.go
index 9cd065b22c..3c70e52b03 100644
--- a/staging/src/k8s.io/client-go/informers/core/v1/node.go
+++ b/staging/src/k8s.io/client-go/informers/core/v1/node.go
@@ -38,19 +38,33 @@ type NodeInformer interface {
}
type nodeInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewNodeInformer constructs a new informer for Node type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewNodeInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredNodeInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredNodeInformer constructs a new informer for Node type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredNodeInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().Nodes().List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().Nodes().Watch(options)
},
},
@@ -60,12 +74,12 @@ func NewNodeInformer(client kubernetes.Interface, resyncPeriod time.Duration, in
)
}
-func defaultNodeInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewNodeInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *nodeInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredNodeInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *nodeInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&core_v1.Node{}, defaultNodeInformer)
+ return f.factory.InformerFor(&core_v1.Node{}, f.defaultInformer)
}
func (f *nodeInformer) Lister() v1.NodeLister {
diff --git a/staging/src/k8s.io/client-go/informers/core/v1/persistentvolume.go b/staging/src/k8s.io/client-go/informers/core/v1/persistentvolume.go
index c41e22f374..e944560f79 100644
--- a/staging/src/k8s.io/client-go/informers/core/v1/persistentvolume.go
+++ b/staging/src/k8s.io/client-go/informers/core/v1/persistentvolume.go
@@ -38,19 +38,33 @@ type PersistentVolumeInformer interface {
}
type persistentVolumeInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewPersistentVolumeInformer constructs a new informer for PersistentVolume type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewPersistentVolumeInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredPersistentVolumeInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredPersistentVolumeInformer constructs a new informer for PersistentVolume type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredPersistentVolumeInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().PersistentVolumes().List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().PersistentVolumes().Watch(options)
},
},
@@ -60,12 +74,12 @@ func NewPersistentVolumeInformer(client kubernetes.Interface, resyncPeriod time.
)
}
-func defaultPersistentVolumeInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewPersistentVolumeInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *persistentVolumeInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredPersistentVolumeInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *persistentVolumeInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&core_v1.PersistentVolume{}, defaultPersistentVolumeInformer)
+ return f.factory.InformerFor(&core_v1.PersistentVolume{}, f.defaultInformer)
}
func (f *persistentVolumeInformer) Lister() v1.PersistentVolumeLister {
diff --git a/staging/src/k8s.io/client-go/informers/core/v1/persistentvolumeclaim.go b/staging/src/k8s.io/client-go/informers/core/v1/persistentvolumeclaim.go
index 2d0364caa8..136884d4c9 100644
--- a/staging/src/k8s.io/client-go/informers/core/v1/persistentvolumeclaim.go
+++ b/staging/src/k8s.io/client-go/informers/core/v1/persistentvolumeclaim.go
@@ -38,19 +38,34 @@ type PersistentVolumeClaimInformer interface {
}
type persistentVolumeClaimInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewPersistentVolumeClaimInformer constructs a new informer for PersistentVolumeClaim type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewPersistentVolumeClaimInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredPersistentVolumeClaimInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredPersistentVolumeClaimInformer constructs a new informer for PersistentVolumeClaim type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredPersistentVolumeClaimInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().PersistentVolumeClaims(namespace).List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().PersistentVolumeClaims(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewPersistentVolumeClaimInformer(client kubernetes.Interface, namespace str
)
}
-func defaultPersistentVolumeClaimInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewPersistentVolumeClaimInformer(client, meta_v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *persistentVolumeClaimInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredPersistentVolumeClaimInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *persistentVolumeClaimInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&core_v1.PersistentVolumeClaim{}, defaultPersistentVolumeClaimInformer)
+ return f.factory.InformerFor(&core_v1.PersistentVolumeClaim{}, f.defaultInformer)
}
func (f *persistentVolumeClaimInformer) Lister() v1.PersistentVolumeClaimLister {
diff --git a/staging/src/k8s.io/client-go/informers/core/v1/pod.go b/staging/src/k8s.io/client-go/informers/core/v1/pod.go
index d926fbd0f8..b972082902 100644
--- a/staging/src/k8s.io/client-go/informers/core/v1/pod.go
+++ b/staging/src/k8s.io/client-go/informers/core/v1/pod.go
@@ -38,19 +38,34 @@ type PodInformer interface {
}
type podInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewPodInformer constructs a new informer for Pod type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewPodInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredPodInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredPodInformer constructs a new informer for Pod type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredPodInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().Pods(namespace).List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().Pods(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewPodInformer(client kubernetes.Interface, namespace string, resyncPeriod
)
}
-func defaultPodInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewPodInformer(client, meta_v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *podInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredPodInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *podInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&core_v1.Pod{}, defaultPodInformer)
+ return f.factory.InformerFor(&core_v1.Pod{}, f.defaultInformer)
}
func (f *podInformer) Lister() v1.PodLister {
diff --git a/staging/src/k8s.io/client-go/informers/core/v1/podtemplate.go b/staging/src/k8s.io/client-go/informers/core/v1/podtemplate.go
index b61f8667bc..c05753850c 100644
--- a/staging/src/k8s.io/client-go/informers/core/v1/podtemplate.go
+++ b/staging/src/k8s.io/client-go/informers/core/v1/podtemplate.go
@@ -38,19 +38,34 @@ type PodTemplateInformer interface {
}
type podTemplateInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewPodTemplateInformer constructs a new informer for PodTemplate type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewPodTemplateInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredPodTemplateInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredPodTemplateInformer constructs a new informer for PodTemplate type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredPodTemplateInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().PodTemplates(namespace).List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().PodTemplates(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewPodTemplateInformer(client kubernetes.Interface, namespace string, resyn
)
}
-func defaultPodTemplateInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewPodTemplateInformer(client, meta_v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *podTemplateInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredPodTemplateInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *podTemplateInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&core_v1.PodTemplate{}, defaultPodTemplateInformer)
+ return f.factory.InformerFor(&core_v1.PodTemplate{}, f.defaultInformer)
}
func (f *podTemplateInformer) Lister() v1.PodTemplateLister {
diff --git a/staging/src/k8s.io/client-go/informers/core/v1/replicationcontroller.go b/staging/src/k8s.io/client-go/informers/core/v1/replicationcontroller.go
index f305994cc5..e04cd14699 100644
--- a/staging/src/k8s.io/client-go/informers/core/v1/replicationcontroller.go
+++ b/staging/src/k8s.io/client-go/informers/core/v1/replicationcontroller.go
@@ -38,19 +38,34 @@ type ReplicationControllerInformer interface {
}
type replicationControllerInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewReplicationControllerInformer constructs a new informer for ReplicationController type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewReplicationControllerInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredReplicationControllerInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredReplicationControllerInformer constructs a new informer for ReplicationController type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredReplicationControllerInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().ReplicationControllers(namespace).List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().ReplicationControllers(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewReplicationControllerInformer(client kubernetes.Interface, namespace str
)
}
-func defaultReplicationControllerInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewReplicationControllerInformer(client, meta_v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *replicationControllerInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredReplicationControllerInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *replicationControllerInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&core_v1.ReplicationController{}, defaultReplicationControllerInformer)
+ return f.factory.InformerFor(&core_v1.ReplicationController{}, f.defaultInformer)
}
func (f *replicationControllerInformer) Lister() v1.ReplicationControllerLister {
diff --git a/staging/src/k8s.io/client-go/informers/core/v1/resourcequota.go b/staging/src/k8s.io/client-go/informers/core/v1/resourcequota.go
index ac69106c8e..3ef4f4c12c 100644
--- a/staging/src/k8s.io/client-go/informers/core/v1/resourcequota.go
+++ b/staging/src/k8s.io/client-go/informers/core/v1/resourcequota.go
@@ -38,19 +38,34 @@ type ResourceQuotaInformer interface {
}
type resourceQuotaInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewResourceQuotaInformer constructs a new informer for ResourceQuota type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewResourceQuotaInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredResourceQuotaInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredResourceQuotaInformer constructs a new informer for ResourceQuota type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredResourceQuotaInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().ResourceQuotas(namespace).List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().ResourceQuotas(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewResourceQuotaInformer(client kubernetes.Interface, namespace string, res
)
}
-func defaultResourceQuotaInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewResourceQuotaInformer(client, meta_v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *resourceQuotaInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredResourceQuotaInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *resourceQuotaInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&core_v1.ResourceQuota{}, defaultResourceQuotaInformer)
+ return f.factory.InformerFor(&core_v1.ResourceQuota{}, f.defaultInformer)
}
func (f *resourceQuotaInformer) Lister() v1.ResourceQuotaLister {
diff --git a/staging/src/k8s.io/client-go/informers/core/v1/secret.go b/staging/src/k8s.io/client-go/informers/core/v1/secret.go
index 0c7464bc88..7bc6395a44 100644
--- a/staging/src/k8s.io/client-go/informers/core/v1/secret.go
+++ b/staging/src/k8s.io/client-go/informers/core/v1/secret.go
@@ -38,19 +38,34 @@ type SecretInformer interface {
}
type secretInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewSecretInformer constructs a new informer for Secret type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewSecretInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredSecretInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredSecretInformer constructs a new informer for Secret type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredSecretInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().Secrets(namespace).List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().Secrets(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewSecretInformer(client kubernetes.Interface, namespace string, resyncPeri
)
}
-func defaultSecretInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewSecretInformer(client, meta_v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *secretInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredSecretInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *secretInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&core_v1.Secret{}, defaultSecretInformer)
+ return f.factory.InformerFor(&core_v1.Secret{}, f.defaultInformer)
}
func (f *secretInformer) Lister() v1.SecretLister {
diff --git a/staging/src/k8s.io/client-go/informers/core/v1/service.go b/staging/src/k8s.io/client-go/informers/core/v1/service.go
index bba8ab9dc4..d1b5ed02f9 100644
--- a/staging/src/k8s.io/client-go/informers/core/v1/service.go
+++ b/staging/src/k8s.io/client-go/informers/core/v1/service.go
@@ -38,19 +38,34 @@ type ServiceInformer interface {
}
type serviceInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewServiceInformer constructs a new informer for Service type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewServiceInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredServiceInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredServiceInformer constructs a new informer for Service type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredServiceInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().Services(namespace).List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().Services(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewServiceInformer(client kubernetes.Interface, namespace string, resyncPer
)
}
-func defaultServiceInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewServiceInformer(client, meta_v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *serviceInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredServiceInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *serviceInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&core_v1.Service{}, defaultServiceInformer)
+ return f.factory.InformerFor(&core_v1.Service{}, f.defaultInformer)
}
func (f *serviceInformer) Lister() v1.ServiceLister {
diff --git a/staging/src/k8s.io/client-go/informers/core/v1/serviceaccount.go b/staging/src/k8s.io/client-go/informers/core/v1/serviceaccount.go
index d41667bb29..fb9c50aa35 100644
--- a/staging/src/k8s.io/client-go/informers/core/v1/serviceaccount.go
+++ b/staging/src/k8s.io/client-go/informers/core/v1/serviceaccount.go
@@ -38,19 +38,34 @@ type ServiceAccountInformer interface {
}
type serviceAccountInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewServiceAccountInformer constructs a new informer for ServiceAccount type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewServiceAccountInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredServiceAccountInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredServiceAccountInformer constructs a new informer for ServiceAccount type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredServiceAccountInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().ServiceAccounts(namespace).List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.CoreV1().ServiceAccounts(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewServiceAccountInformer(client kubernetes.Interface, namespace string, re
)
}
-func defaultServiceAccountInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewServiceAccountInformer(client, meta_v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *serviceAccountInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredServiceAccountInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *serviceAccountInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&core_v1.ServiceAccount{}, defaultServiceAccountInformer)
+ return f.factory.InformerFor(&core_v1.ServiceAccount{}, f.defaultInformer)
}
func (f *serviceAccountInformer) Lister() v1.ServiceAccountLister {
diff --git a/staging/src/k8s.io/client-go/informers/extensions/interface.go b/staging/src/k8s.io/client-go/informers/extensions/interface.go
index 009a89b945..a6bfc3b44d 100644
--- a/staging/src/k8s.io/client-go/informers/extensions/interface.go
+++ b/staging/src/k8s.io/client-go/informers/extensions/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// V1beta1 returns a new v1beta1.Interface.
func (g *group) V1beta1() v1beta1.Interface {
- return v1beta1.New(g.SharedInformerFactory)
+ return v1beta1.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/staging/src/k8s.io/client-go/informers/extensions/v1beta1/daemonset.go b/staging/src/k8s.io/client-go/informers/extensions/v1beta1/daemonset.go
index e203ea6f20..c64b14c3da 100644
--- a/staging/src/k8s.io/client-go/informers/extensions/v1beta1/daemonset.go
+++ b/staging/src/k8s.io/client-go/informers/extensions/v1beta1/daemonset.go
@@ -38,19 +38,34 @@ type DaemonSetInformer interface {
}
type daemonSetInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewDaemonSetInformer constructs a new informer for DaemonSet type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewDaemonSetInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredDaemonSetInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredDaemonSetInformer constructs a new informer for DaemonSet type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredDaemonSetInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.ExtensionsV1beta1().DaemonSets(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.ExtensionsV1beta1().DaemonSets(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewDaemonSetInformer(client kubernetes.Interface, namespace string, resyncP
)
}
-func defaultDaemonSetInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewDaemonSetInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *daemonSetInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredDaemonSetInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *daemonSetInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&extensions_v1beta1.DaemonSet{}, defaultDaemonSetInformer)
+ return f.factory.InformerFor(&extensions_v1beta1.DaemonSet{}, f.defaultInformer)
}
func (f *daemonSetInformer) Lister() v1beta1.DaemonSetLister {
diff --git a/staging/src/k8s.io/client-go/informers/extensions/v1beta1/deployment.go b/staging/src/k8s.io/client-go/informers/extensions/v1beta1/deployment.go
index 4d20f8abe2..4bcfc5c252 100644
--- a/staging/src/k8s.io/client-go/informers/extensions/v1beta1/deployment.go
+++ b/staging/src/k8s.io/client-go/informers/extensions/v1beta1/deployment.go
@@ -38,19 +38,34 @@ type DeploymentInformer interface {
}
type deploymentInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewDeploymentInformer constructs a new informer for Deployment type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewDeploymentInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredDeploymentInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredDeploymentInformer constructs a new informer for Deployment type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredDeploymentInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.ExtensionsV1beta1().Deployments(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.ExtensionsV1beta1().Deployments(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewDeploymentInformer(client kubernetes.Interface, namespace string, resync
)
}
-func defaultDeploymentInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewDeploymentInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *deploymentInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredDeploymentInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *deploymentInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&extensions_v1beta1.Deployment{}, defaultDeploymentInformer)
+ return f.factory.InformerFor(&extensions_v1beta1.Deployment{}, f.defaultInformer)
}
func (f *deploymentInformer) Lister() v1beta1.DeploymentLister {
diff --git a/staging/src/k8s.io/client-go/informers/extensions/v1beta1/ingress.go b/staging/src/k8s.io/client-go/informers/extensions/v1beta1/ingress.go
index 9280ffe379..22dac92b9c 100644
--- a/staging/src/k8s.io/client-go/informers/extensions/v1beta1/ingress.go
+++ b/staging/src/k8s.io/client-go/informers/extensions/v1beta1/ingress.go
@@ -38,19 +38,34 @@ type IngressInformer interface {
}
type ingressInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewIngressInformer constructs a new informer for Ingress type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewIngressInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredIngressInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredIngressInformer constructs a new informer for Ingress type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredIngressInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.ExtensionsV1beta1().Ingresses(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.ExtensionsV1beta1().Ingresses(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewIngressInformer(client kubernetes.Interface, namespace string, resyncPer
)
}
-func defaultIngressInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewIngressInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *ingressInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredIngressInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *ingressInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&extensions_v1beta1.Ingress{}, defaultIngressInformer)
+ return f.factory.InformerFor(&extensions_v1beta1.Ingress{}, f.defaultInformer)
}
func (f *ingressInformer) Lister() v1beta1.IngressLister {
diff --git a/staging/src/k8s.io/client-go/informers/extensions/v1beta1/interface.go b/staging/src/k8s.io/client-go/informers/extensions/v1beta1/interface.go
index e80512902c..ce060e0d90 100644
--- a/staging/src/k8s.io/client-go/informers/extensions/v1beta1/interface.go
+++ b/staging/src/k8s.io/client-go/informers/extensions/v1beta1/interface.go
@@ -37,35 +37,37 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// DaemonSets returns a DaemonSetInformer.
func (v *version) DaemonSets() DaemonSetInformer {
- return &daemonSetInformer{factory: v.SharedInformerFactory}
+ return &daemonSetInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// Deployments returns a DeploymentInformer.
func (v *version) Deployments() DeploymentInformer {
- return &deploymentInformer{factory: v.SharedInformerFactory}
+ return &deploymentInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// Ingresses returns a IngressInformer.
func (v *version) Ingresses() IngressInformer {
- return &ingressInformer{factory: v.SharedInformerFactory}
+ return &ingressInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// PodSecurityPolicies returns a PodSecurityPolicyInformer.
func (v *version) PodSecurityPolicies() PodSecurityPolicyInformer {
- return &podSecurityPolicyInformer{factory: v.SharedInformerFactory}
+ return &podSecurityPolicyInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
// ReplicaSets returns a ReplicaSetInformer.
func (v *version) ReplicaSets() ReplicaSetInformer {
- return &replicaSetInformer{factory: v.SharedInformerFactory}
+ return &replicaSetInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/staging/src/k8s.io/client-go/informers/extensions/v1beta1/podsecuritypolicy.go b/staging/src/k8s.io/client-go/informers/extensions/v1beta1/podsecuritypolicy.go
index 59336b0e46..18ef2735b5 100644
--- a/staging/src/k8s.io/client-go/informers/extensions/v1beta1/podsecuritypolicy.go
+++ b/staging/src/k8s.io/client-go/informers/extensions/v1beta1/podsecuritypolicy.go
@@ -38,19 +38,33 @@ type PodSecurityPolicyInformer interface {
}
type podSecurityPolicyInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewPodSecurityPolicyInformer constructs a new informer for PodSecurityPolicy type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewPodSecurityPolicyInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredPodSecurityPolicyInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredPodSecurityPolicyInformer constructs a new informer for PodSecurityPolicy type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredPodSecurityPolicyInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.ExtensionsV1beta1().PodSecurityPolicies().List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.ExtensionsV1beta1().PodSecurityPolicies().Watch(options)
},
},
@@ -60,12 +74,12 @@ func NewPodSecurityPolicyInformer(client kubernetes.Interface, resyncPeriod time
)
}
-func defaultPodSecurityPolicyInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewPodSecurityPolicyInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *podSecurityPolicyInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredPodSecurityPolicyInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *podSecurityPolicyInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&extensions_v1beta1.PodSecurityPolicy{}, defaultPodSecurityPolicyInformer)
+ return f.factory.InformerFor(&extensions_v1beta1.PodSecurityPolicy{}, f.defaultInformer)
}
func (f *podSecurityPolicyInformer) Lister() v1beta1.PodSecurityPolicyLister {
diff --git a/staging/src/k8s.io/client-go/informers/extensions/v1beta1/replicaset.go b/staging/src/k8s.io/client-go/informers/extensions/v1beta1/replicaset.go
index 8d1af81199..856cb30bab 100644
--- a/staging/src/k8s.io/client-go/informers/extensions/v1beta1/replicaset.go
+++ b/staging/src/k8s.io/client-go/informers/extensions/v1beta1/replicaset.go
@@ -38,19 +38,34 @@ type ReplicaSetInformer interface {
}
type replicaSetInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewReplicaSetInformer constructs a new informer for ReplicaSet type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewReplicaSetInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredReplicaSetInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredReplicaSetInformer constructs a new informer for ReplicaSet type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredReplicaSetInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.ExtensionsV1beta1().ReplicaSets(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.ExtensionsV1beta1().ReplicaSets(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewReplicaSetInformer(client kubernetes.Interface, namespace string, resync
)
}
-func defaultReplicaSetInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewReplicaSetInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *replicaSetInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredReplicaSetInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *replicaSetInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&extensions_v1beta1.ReplicaSet{}, defaultReplicaSetInformer)
+ return f.factory.InformerFor(&extensions_v1beta1.ReplicaSet{}, f.defaultInformer)
}
func (f *replicaSetInformer) Lister() v1beta1.ReplicaSetLister {
diff --git a/staging/src/k8s.io/client-go/informers/factory.go b/staging/src/k8s.io/client-go/informers/factory.go
index c28c7bc41b..89ef77bad0 100644
--- a/staging/src/k8s.io/client-go/informers/factory.go
+++ b/staging/src/k8s.io/client-go/informers/factory.go
@@ -19,6 +19,7 @@ limitations under the License.
package informers
import (
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
schema "k8s.io/apimachinery/pkg/runtime/schema"
admissionregistration "k8s.io/client-go/informers/admissionregistration"
@@ -43,9 +44,11 @@ import (
)
type sharedInformerFactory struct {
- client kubernetes.Interface
- lock sync.Mutex
- defaultResync time.Duration
+ client kubernetes.Interface
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ lock sync.Mutex
+ defaultResync time.Duration
informers map[reflect.Type]cache.SharedIndexInformer
// startedInformers is used for tracking which informers have been started.
@@ -55,8 +58,17 @@ type sharedInformerFactory struct {
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory
func NewSharedInformerFactory(client kubernetes.Interface, defaultResync time.Duration) SharedInformerFactory {
+ return NewFilteredSharedInformerFactory(client, defaultResync, v1.NamespaceAll, nil)
+}
+
+// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
+// Listers obtained via this SharedInformerFactory will be subject to the same filters
+// as specified here.
+func NewFilteredSharedInformerFactory(client kubernetes.Interface, defaultResync time.Duration, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerFactory {
return &sharedInformerFactory{
client: client,
+ namespace: namespace,
+ tweakListOptions: tweakListOptions,
defaultResync: defaultResync,
informers: make(map[reflect.Type]cache.SharedIndexInformer),
startedInformers: make(map[reflect.Type]bool),
@@ -138,53 +150,53 @@ type SharedInformerFactory interface {
}
func (f *sharedInformerFactory) Admissionregistration() admissionregistration.Interface {
- return admissionregistration.New(f)
+ return admissionregistration.New(f, f.namespace, f.tweakListOptions)
}
func (f *sharedInformerFactory) Apps() apps.Interface {
- return apps.New(f)
+ return apps.New(f, f.namespace, f.tweakListOptions)
}
func (f *sharedInformerFactory) Autoscaling() autoscaling.Interface {
- return autoscaling.New(f)
+ return autoscaling.New(f, f.namespace, f.tweakListOptions)
}
func (f *sharedInformerFactory) Batch() batch.Interface {
- return batch.New(f)
+ return batch.New(f, f.namespace, f.tweakListOptions)
}
func (f *sharedInformerFactory) Certificates() certificates.Interface {
- return certificates.New(f)
+ return certificates.New(f, f.namespace, f.tweakListOptions)
}
func (f *sharedInformerFactory) Core() core.Interface {
- return core.New(f)
+ return core.New(f, f.namespace, f.tweakListOptions)
}
func (f *sharedInformerFactory) Extensions() extensions.Interface {
- return extensions.New(f)
+ return extensions.New(f, f.namespace, f.tweakListOptions)
}
func (f *sharedInformerFactory) Networking() networking.Interface {
- return networking.New(f)
+ return networking.New(f, f.namespace, f.tweakListOptions)
}
func (f *sharedInformerFactory) Policy() policy.Interface {
- return policy.New(f)
+ return policy.New(f, f.namespace, f.tweakListOptions)
}
func (f *sharedInformerFactory) Rbac() rbac.Interface {
- return rbac.New(f)
+ return rbac.New(f, f.namespace, f.tweakListOptions)
}
func (f *sharedInformerFactory) Scheduling() scheduling.Interface {
- return scheduling.New(f)
+ return scheduling.New(f, f.namespace, f.tweakListOptions)
}
func (f *sharedInformerFactory) Settings() settings.Interface {
- return settings.New(f)
+ return settings.New(f, f.namespace, f.tweakListOptions)
}
func (f *sharedInformerFactory) Storage() storage.Interface {
- return storage.New(f)
+ return storage.New(f, f.namespace, f.tweakListOptions)
}
diff --git a/staging/src/k8s.io/client-go/informers/generic.go b/staging/src/k8s.io/client-go/informers/generic.go
index f8ef310be2..936910ada0 100644
--- a/staging/src/k8s.io/client-go/informers/generic.go
+++ b/staging/src/k8s.io/client-go/informers/generic.go
@@ -72,10 +72,12 @@ func (f *genericInformer) Lister() cache.GenericLister {
func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource) (GenericInformer, error) {
switch resource {
// Group=admissionregistration.k8s.io, Version=v1alpha1
- case v1alpha1.SchemeGroupVersion.WithResource("externaladmissionhookconfigurations"):
- return &genericInformer{resource: resource.GroupResource(), informer: f.Admissionregistration().V1alpha1().ExternalAdmissionHookConfigurations().Informer()}, nil
case v1alpha1.SchemeGroupVersion.WithResource("initializerconfigurations"):
return &genericInformer{resource: resource.GroupResource(), informer: f.Admissionregistration().V1alpha1().InitializerConfigurations().Informer()}, nil
+ case v1alpha1.SchemeGroupVersion.WithResource("mutatingwebhookconfigurations"):
+ return &genericInformer{resource: resource.GroupResource(), informer: f.Admissionregistration().V1alpha1().MutatingWebhookConfigurations().Informer()}, nil
+ case v1alpha1.SchemeGroupVersion.WithResource("validatingwebhookconfigurations"):
+ return &genericInformer{resource: resource.GroupResource(), informer: f.Admissionregistration().V1alpha1().ValidatingWebhookConfigurations().Informer()}, nil
// Group=apps, Version=v1
case v1.SchemeGroupVersion.WithResource("controllerrevisions"):
diff --git a/staging/src/k8s.io/client-go/informers/internalinterfaces/BUILD b/staging/src/k8s.io/client-go/informers/internalinterfaces/BUILD
index 7cfc5c32c1..5b20c78f76 100644
--- a/staging/src/k8s.io/client-go/informers/internalinterfaces/BUILD
+++ b/staging/src/k8s.io/client-go/informers/internalinterfaces/BUILD
@@ -10,6 +10,7 @@ go_library(
srcs = ["factory_interfaces.go"],
importpath = "k8s.io/client-go/informers/internalinterfaces",
deps = [
+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
diff --git a/staging/src/k8s.io/client-go/informers/internalinterfaces/factory_interfaces.go b/staging/src/k8s.io/client-go/informers/internalinterfaces/factory_interfaces.go
index bfe354a593..61155f7404 100644
--- a/staging/src/k8s.io/client-go/informers/internalinterfaces/factory_interfaces.go
+++ b/staging/src/k8s.io/client-go/informers/internalinterfaces/factory_interfaces.go
@@ -19,6 +19,7 @@ limitations under the License.
package internalinterfaces
import (
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
kubernetes "k8s.io/client-go/kubernetes"
cache "k8s.io/client-go/tools/cache"
@@ -32,3 +33,5 @@ type SharedInformerFactory interface {
Start(stopCh <-chan struct{})
InformerFor(obj runtime.Object, newFunc NewInformerFunc) cache.SharedIndexInformer
}
+
+type TweakListOptionsFunc func(*v1.ListOptions)
diff --git a/staging/src/k8s.io/client-go/informers/networking/interface.go b/staging/src/k8s.io/client-go/informers/networking/interface.go
index a5df58b041..79e0d0c151 100644
--- a/staging/src/k8s.io/client-go/informers/networking/interface.go
+++ b/staging/src/k8s.io/client-go/informers/networking/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// V1 returns a new v1.Interface.
func (g *group) V1() v1.Interface {
- return v1.New(g.SharedInformerFactory)
+ return v1.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/staging/src/k8s.io/client-go/informers/networking/v1/interface.go b/staging/src/k8s.io/client-go/informers/networking/v1/interface.go
index 2ae314a5a5..980a7be993 100644
--- a/staging/src/k8s.io/client-go/informers/networking/v1/interface.go
+++ b/staging/src/k8s.io/client-go/informers/networking/v1/interface.go
@@ -29,15 +29,17 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// NetworkPolicies returns a NetworkPolicyInformer.
func (v *version) NetworkPolicies() NetworkPolicyInformer {
- return &networkPolicyInformer{factory: v.SharedInformerFactory}
+ return &networkPolicyInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/staging/src/k8s.io/client-go/informers/networking/v1/networkpolicy.go b/staging/src/k8s.io/client-go/informers/networking/v1/networkpolicy.go
index d85384596a..b712ba0305 100644
--- a/staging/src/k8s.io/client-go/informers/networking/v1/networkpolicy.go
+++ b/staging/src/k8s.io/client-go/informers/networking/v1/networkpolicy.go
@@ -38,19 +38,34 @@ type NetworkPolicyInformer interface {
}
type networkPolicyInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewNetworkPolicyInformer constructs a new informer for NetworkPolicy type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewNetworkPolicyInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredNetworkPolicyInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredNetworkPolicyInformer constructs a new informer for NetworkPolicy type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredNetworkPolicyInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.NetworkingV1().NetworkPolicies(namespace).List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.NetworkingV1().NetworkPolicies(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewNetworkPolicyInformer(client kubernetes.Interface, namespace string, res
)
}
-func defaultNetworkPolicyInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewNetworkPolicyInformer(client, meta_v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *networkPolicyInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredNetworkPolicyInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *networkPolicyInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&networking_v1.NetworkPolicy{}, defaultNetworkPolicyInformer)
+ return f.factory.InformerFor(&networking_v1.NetworkPolicy{}, f.defaultInformer)
}
func (f *networkPolicyInformer) Lister() v1.NetworkPolicyLister {
diff --git a/staging/src/k8s.io/client-go/informers/policy/interface.go b/staging/src/k8s.io/client-go/informers/policy/interface.go
index c03b9bfd7b..f893c3d5b9 100644
--- a/staging/src/k8s.io/client-go/informers/policy/interface.go
+++ b/staging/src/k8s.io/client-go/informers/policy/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// V1beta1 returns a new v1beta1.Interface.
func (g *group) V1beta1() v1beta1.Interface {
- return v1beta1.New(g.SharedInformerFactory)
+ return v1beta1.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/staging/src/k8s.io/client-go/informers/policy/v1beta1/interface.go b/staging/src/k8s.io/client-go/informers/policy/v1beta1/interface.go
index 39b1abbedd..f235ee1d0c 100644
--- a/staging/src/k8s.io/client-go/informers/policy/v1beta1/interface.go
+++ b/staging/src/k8s.io/client-go/informers/policy/v1beta1/interface.go
@@ -29,15 +29,17 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// PodDisruptionBudgets returns a PodDisruptionBudgetInformer.
func (v *version) PodDisruptionBudgets() PodDisruptionBudgetInformer {
- return &podDisruptionBudgetInformer{factory: v.SharedInformerFactory}
+ return &podDisruptionBudgetInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/staging/src/k8s.io/client-go/informers/policy/v1beta1/poddisruptionbudget.go b/staging/src/k8s.io/client-go/informers/policy/v1beta1/poddisruptionbudget.go
index b10ec42f34..ba0da35b1e 100644
--- a/staging/src/k8s.io/client-go/informers/policy/v1beta1/poddisruptionbudget.go
+++ b/staging/src/k8s.io/client-go/informers/policy/v1beta1/poddisruptionbudget.go
@@ -38,19 +38,34 @@ type PodDisruptionBudgetInformer interface {
}
type podDisruptionBudgetInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewPodDisruptionBudgetInformer constructs a new informer for PodDisruptionBudget type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewPodDisruptionBudgetInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredPodDisruptionBudgetInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredPodDisruptionBudgetInformer constructs a new informer for PodDisruptionBudget type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredPodDisruptionBudgetInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.PolicyV1beta1().PodDisruptionBudgets(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.PolicyV1beta1().PodDisruptionBudgets(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewPodDisruptionBudgetInformer(client kubernetes.Interface, namespace strin
)
}
-func defaultPodDisruptionBudgetInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewPodDisruptionBudgetInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *podDisruptionBudgetInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredPodDisruptionBudgetInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *podDisruptionBudgetInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&policy_v1beta1.PodDisruptionBudget{}, defaultPodDisruptionBudgetInformer)
+ return f.factory.InformerFor(&policy_v1beta1.PodDisruptionBudget{}, f.defaultInformer)
}
func (f *podDisruptionBudgetInformer) Lister() v1beta1.PodDisruptionBudgetLister {
diff --git a/staging/src/k8s.io/client-go/informers/rbac/interface.go b/staging/src/k8s.io/client-go/informers/rbac/interface.go
index dfa6fcb4c8..df7adfcd3c 100644
--- a/staging/src/k8s.io/client-go/informers/rbac/interface.go
+++ b/staging/src/k8s.io/client-go/informers/rbac/interface.go
@@ -36,25 +36,27 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// V1 returns a new v1.Interface.
func (g *group) V1() v1.Interface {
- return v1.New(g.SharedInformerFactory)
+ return v1.New(g.factory, g.namespace, g.tweakListOptions)
}
// V1alpha1 returns a new v1alpha1.Interface.
func (g *group) V1alpha1() v1alpha1.Interface {
- return v1alpha1.New(g.SharedInformerFactory)
+ return v1alpha1.New(g.factory, g.namespace, g.tweakListOptions)
}
// V1beta1 returns a new v1beta1.Interface.
func (g *group) V1beta1() v1beta1.Interface {
- return v1beta1.New(g.SharedInformerFactory)
+ return v1beta1.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/staging/src/k8s.io/client-go/informers/rbac/v1/clusterrole.go b/staging/src/k8s.io/client-go/informers/rbac/v1/clusterrole.go
index 1d1f934042..ac75abbc8c 100644
--- a/staging/src/k8s.io/client-go/informers/rbac/v1/clusterrole.go
+++ b/staging/src/k8s.io/client-go/informers/rbac/v1/clusterrole.go
@@ -38,19 +38,33 @@ type ClusterRoleInformer interface {
}
type clusterRoleInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewClusterRoleInformer constructs a new informer for ClusterRole type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewClusterRoleInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredClusterRoleInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredClusterRoleInformer constructs a new informer for ClusterRole type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredClusterRoleInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.RbacV1().ClusterRoles().List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.RbacV1().ClusterRoles().Watch(options)
},
},
@@ -60,12 +74,12 @@ func NewClusterRoleInformer(client kubernetes.Interface, resyncPeriod time.Durat
)
}
-func defaultClusterRoleInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewClusterRoleInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *clusterRoleInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredClusterRoleInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *clusterRoleInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&rbac_v1.ClusterRole{}, defaultClusterRoleInformer)
+ return f.factory.InformerFor(&rbac_v1.ClusterRole{}, f.defaultInformer)
}
func (f *clusterRoleInformer) Lister() v1.ClusterRoleLister {
diff --git a/staging/src/k8s.io/client-go/informers/rbac/v1/clusterrolebinding.go b/staging/src/k8s.io/client-go/informers/rbac/v1/clusterrolebinding.go
index 1c8cdda896..a3c73e586c 100644
--- a/staging/src/k8s.io/client-go/informers/rbac/v1/clusterrolebinding.go
+++ b/staging/src/k8s.io/client-go/informers/rbac/v1/clusterrolebinding.go
@@ -38,19 +38,33 @@ type ClusterRoleBindingInformer interface {
}
type clusterRoleBindingInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewClusterRoleBindingInformer constructs a new informer for ClusterRoleBinding type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewClusterRoleBindingInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredClusterRoleBindingInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredClusterRoleBindingInformer constructs a new informer for ClusterRoleBinding type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredClusterRoleBindingInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.RbacV1().ClusterRoleBindings().List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.RbacV1().ClusterRoleBindings().Watch(options)
},
},
@@ -60,12 +74,12 @@ func NewClusterRoleBindingInformer(client kubernetes.Interface, resyncPeriod tim
)
}
-func defaultClusterRoleBindingInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewClusterRoleBindingInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *clusterRoleBindingInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredClusterRoleBindingInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *clusterRoleBindingInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&rbac_v1.ClusterRoleBinding{}, defaultClusterRoleBindingInformer)
+ return f.factory.InformerFor(&rbac_v1.ClusterRoleBinding{}, f.defaultInformer)
}
func (f *clusterRoleBindingInformer) Lister() v1.ClusterRoleBindingLister {
diff --git a/staging/src/k8s.io/client-go/informers/rbac/v1/interface.go b/staging/src/k8s.io/client-go/informers/rbac/v1/interface.go
index 38900ef1e2..1e46b039bd 100644
--- a/staging/src/k8s.io/client-go/informers/rbac/v1/interface.go
+++ b/staging/src/k8s.io/client-go/informers/rbac/v1/interface.go
@@ -35,30 +35,32 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// ClusterRoles returns a ClusterRoleInformer.
func (v *version) ClusterRoles() ClusterRoleInformer {
- return &clusterRoleInformer{factory: v.SharedInformerFactory}
+ return &clusterRoleInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
// ClusterRoleBindings returns a ClusterRoleBindingInformer.
func (v *version) ClusterRoleBindings() ClusterRoleBindingInformer {
- return &clusterRoleBindingInformer{factory: v.SharedInformerFactory}
+ return &clusterRoleBindingInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
// Roles returns a RoleInformer.
func (v *version) Roles() RoleInformer {
- return &roleInformer{factory: v.SharedInformerFactory}
+ return &roleInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// RoleBindings returns a RoleBindingInformer.
func (v *version) RoleBindings() RoleBindingInformer {
- return &roleBindingInformer{factory: v.SharedInformerFactory}
+ return &roleBindingInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/staging/src/k8s.io/client-go/informers/rbac/v1/role.go b/staging/src/k8s.io/client-go/informers/rbac/v1/role.go
index 79f33eabc3..fb1de46145 100644
--- a/staging/src/k8s.io/client-go/informers/rbac/v1/role.go
+++ b/staging/src/k8s.io/client-go/informers/rbac/v1/role.go
@@ -38,19 +38,34 @@ type RoleInformer interface {
}
type roleInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewRoleInformer constructs a new informer for Role type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewRoleInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredRoleInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredRoleInformer constructs a new informer for Role type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredRoleInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.RbacV1().Roles(namespace).List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.RbacV1().Roles(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewRoleInformer(client kubernetes.Interface, namespace string, resyncPeriod
)
}
-func defaultRoleInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewRoleInformer(client, meta_v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *roleInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredRoleInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *roleInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&rbac_v1.Role{}, defaultRoleInformer)
+ return f.factory.InformerFor(&rbac_v1.Role{}, f.defaultInformer)
}
func (f *roleInformer) Lister() v1.RoleLister {
diff --git a/staging/src/k8s.io/client-go/informers/rbac/v1/rolebinding.go b/staging/src/k8s.io/client-go/informers/rbac/v1/rolebinding.go
index 71548e1a37..78c78fa1ac 100644
--- a/staging/src/k8s.io/client-go/informers/rbac/v1/rolebinding.go
+++ b/staging/src/k8s.io/client-go/informers/rbac/v1/rolebinding.go
@@ -38,19 +38,34 @@ type RoleBindingInformer interface {
}
type roleBindingInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewRoleBindingInformer constructs a new informer for RoleBinding type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewRoleBindingInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredRoleBindingInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredRoleBindingInformer constructs a new informer for RoleBinding type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredRoleBindingInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.RbacV1().RoleBindings(namespace).List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.RbacV1().RoleBindings(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewRoleBindingInformer(client kubernetes.Interface, namespace string, resyn
)
}
-func defaultRoleBindingInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewRoleBindingInformer(client, meta_v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *roleBindingInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredRoleBindingInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *roleBindingInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&rbac_v1.RoleBinding{}, defaultRoleBindingInformer)
+ return f.factory.InformerFor(&rbac_v1.RoleBinding{}, f.defaultInformer)
}
func (f *roleBindingInformer) Lister() v1.RoleBindingLister {
diff --git a/staging/src/k8s.io/client-go/informers/rbac/v1alpha1/clusterrole.go b/staging/src/k8s.io/client-go/informers/rbac/v1alpha1/clusterrole.go
index 435bec5a2b..ec257965b7 100644
--- a/staging/src/k8s.io/client-go/informers/rbac/v1alpha1/clusterrole.go
+++ b/staging/src/k8s.io/client-go/informers/rbac/v1alpha1/clusterrole.go
@@ -38,19 +38,33 @@ type ClusterRoleInformer interface {
}
type clusterRoleInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewClusterRoleInformer constructs a new informer for ClusterRole type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewClusterRoleInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredClusterRoleInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredClusterRoleInformer constructs a new informer for ClusterRole type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredClusterRoleInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.RbacV1alpha1().ClusterRoles().List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.RbacV1alpha1().ClusterRoles().Watch(options)
},
},
@@ -60,12 +74,12 @@ func NewClusterRoleInformer(client kubernetes.Interface, resyncPeriod time.Durat
)
}
-func defaultClusterRoleInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewClusterRoleInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *clusterRoleInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredClusterRoleInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *clusterRoleInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&rbac_v1alpha1.ClusterRole{}, defaultClusterRoleInformer)
+ return f.factory.InformerFor(&rbac_v1alpha1.ClusterRole{}, f.defaultInformer)
}
func (f *clusterRoleInformer) Lister() v1alpha1.ClusterRoleLister {
diff --git a/staging/src/k8s.io/client-go/informers/rbac/v1alpha1/clusterrolebinding.go b/staging/src/k8s.io/client-go/informers/rbac/v1alpha1/clusterrolebinding.go
index 167a188708..a2d0c39607 100644
--- a/staging/src/k8s.io/client-go/informers/rbac/v1alpha1/clusterrolebinding.go
+++ b/staging/src/k8s.io/client-go/informers/rbac/v1alpha1/clusterrolebinding.go
@@ -38,19 +38,33 @@ type ClusterRoleBindingInformer interface {
}
type clusterRoleBindingInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewClusterRoleBindingInformer constructs a new informer for ClusterRoleBinding type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewClusterRoleBindingInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredClusterRoleBindingInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredClusterRoleBindingInformer constructs a new informer for ClusterRoleBinding type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredClusterRoleBindingInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.RbacV1alpha1().ClusterRoleBindings().List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.RbacV1alpha1().ClusterRoleBindings().Watch(options)
},
},
@@ -60,12 +74,12 @@ func NewClusterRoleBindingInformer(client kubernetes.Interface, resyncPeriod tim
)
}
-func defaultClusterRoleBindingInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewClusterRoleBindingInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *clusterRoleBindingInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredClusterRoleBindingInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *clusterRoleBindingInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&rbac_v1alpha1.ClusterRoleBinding{}, defaultClusterRoleBindingInformer)
+ return f.factory.InformerFor(&rbac_v1alpha1.ClusterRoleBinding{}, f.defaultInformer)
}
func (f *clusterRoleBindingInformer) Lister() v1alpha1.ClusterRoleBindingLister {
diff --git a/staging/src/k8s.io/client-go/informers/rbac/v1alpha1/interface.go b/staging/src/k8s.io/client-go/informers/rbac/v1alpha1/interface.go
index 4c84b9a54c..586283d4a2 100644
--- a/staging/src/k8s.io/client-go/informers/rbac/v1alpha1/interface.go
+++ b/staging/src/k8s.io/client-go/informers/rbac/v1alpha1/interface.go
@@ -35,30 +35,32 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// ClusterRoles returns a ClusterRoleInformer.
func (v *version) ClusterRoles() ClusterRoleInformer {
- return &clusterRoleInformer{factory: v.SharedInformerFactory}
+ return &clusterRoleInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
// ClusterRoleBindings returns a ClusterRoleBindingInformer.
func (v *version) ClusterRoleBindings() ClusterRoleBindingInformer {
- return &clusterRoleBindingInformer{factory: v.SharedInformerFactory}
+ return &clusterRoleBindingInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
// Roles returns a RoleInformer.
func (v *version) Roles() RoleInformer {
- return &roleInformer{factory: v.SharedInformerFactory}
+ return &roleInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// RoleBindings returns a RoleBindingInformer.
func (v *version) RoleBindings() RoleBindingInformer {
- return &roleBindingInformer{factory: v.SharedInformerFactory}
+ return &roleBindingInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/staging/src/k8s.io/client-go/informers/rbac/v1alpha1/role.go b/staging/src/k8s.io/client-go/informers/rbac/v1alpha1/role.go
index 81ef493a2f..4564b33616 100644
--- a/staging/src/k8s.io/client-go/informers/rbac/v1alpha1/role.go
+++ b/staging/src/k8s.io/client-go/informers/rbac/v1alpha1/role.go
@@ -38,19 +38,34 @@ type RoleInformer interface {
}
type roleInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewRoleInformer constructs a new informer for Role type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewRoleInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredRoleInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredRoleInformer constructs a new informer for Role type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredRoleInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.RbacV1alpha1().Roles(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.RbacV1alpha1().Roles(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewRoleInformer(client kubernetes.Interface, namespace string, resyncPeriod
)
}
-func defaultRoleInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewRoleInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *roleInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredRoleInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *roleInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&rbac_v1alpha1.Role{}, defaultRoleInformer)
+ return f.factory.InformerFor(&rbac_v1alpha1.Role{}, f.defaultInformer)
}
func (f *roleInformer) Lister() v1alpha1.RoleLister {
diff --git a/staging/src/k8s.io/client-go/informers/rbac/v1alpha1/rolebinding.go b/staging/src/k8s.io/client-go/informers/rbac/v1alpha1/rolebinding.go
index bfc896578d..556f966a86 100644
--- a/staging/src/k8s.io/client-go/informers/rbac/v1alpha1/rolebinding.go
+++ b/staging/src/k8s.io/client-go/informers/rbac/v1alpha1/rolebinding.go
@@ -38,19 +38,34 @@ type RoleBindingInformer interface {
}
type roleBindingInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewRoleBindingInformer constructs a new informer for RoleBinding type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewRoleBindingInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredRoleBindingInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredRoleBindingInformer constructs a new informer for RoleBinding type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredRoleBindingInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.RbacV1alpha1().RoleBindings(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.RbacV1alpha1().RoleBindings(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewRoleBindingInformer(client kubernetes.Interface, namespace string, resyn
)
}
-func defaultRoleBindingInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewRoleBindingInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *roleBindingInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredRoleBindingInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *roleBindingInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&rbac_v1alpha1.RoleBinding{}, defaultRoleBindingInformer)
+ return f.factory.InformerFor(&rbac_v1alpha1.RoleBinding{}, f.defaultInformer)
}
func (f *roleBindingInformer) Lister() v1alpha1.RoleBindingLister {
diff --git a/staging/src/k8s.io/client-go/informers/rbac/v1beta1/clusterrole.go b/staging/src/k8s.io/client-go/informers/rbac/v1beta1/clusterrole.go
index 9798b9b25f..821746b90d 100644
--- a/staging/src/k8s.io/client-go/informers/rbac/v1beta1/clusterrole.go
+++ b/staging/src/k8s.io/client-go/informers/rbac/v1beta1/clusterrole.go
@@ -38,19 +38,33 @@ type ClusterRoleInformer interface {
}
type clusterRoleInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewClusterRoleInformer constructs a new informer for ClusterRole type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewClusterRoleInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredClusterRoleInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredClusterRoleInformer constructs a new informer for ClusterRole type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredClusterRoleInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.RbacV1beta1().ClusterRoles().List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.RbacV1beta1().ClusterRoles().Watch(options)
},
},
@@ -60,12 +74,12 @@ func NewClusterRoleInformer(client kubernetes.Interface, resyncPeriod time.Durat
)
}
-func defaultClusterRoleInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewClusterRoleInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *clusterRoleInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredClusterRoleInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *clusterRoleInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&rbac_v1beta1.ClusterRole{}, defaultClusterRoleInformer)
+ return f.factory.InformerFor(&rbac_v1beta1.ClusterRole{}, f.defaultInformer)
}
func (f *clusterRoleInformer) Lister() v1beta1.ClusterRoleLister {
diff --git a/staging/src/k8s.io/client-go/informers/rbac/v1beta1/clusterrolebinding.go b/staging/src/k8s.io/client-go/informers/rbac/v1beta1/clusterrolebinding.go
index 52370de1f9..c517ac4561 100644
--- a/staging/src/k8s.io/client-go/informers/rbac/v1beta1/clusterrolebinding.go
+++ b/staging/src/k8s.io/client-go/informers/rbac/v1beta1/clusterrolebinding.go
@@ -38,19 +38,33 @@ type ClusterRoleBindingInformer interface {
}
type clusterRoleBindingInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewClusterRoleBindingInformer constructs a new informer for ClusterRoleBinding type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewClusterRoleBindingInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredClusterRoleBindingInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredClusterRoleBindingInformer constructs a new informer for ClusterRoleBinding type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredClusterRoleBindingInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.RbacV1beta1().ClusterRoleBindings().List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.RbacV1beta1().ClusterRoleBindings().Watch(options)
},
},
@@ -60,12 +74,12 @@ func NewClusterRoleBindingInformer(client kubernetes.Interface, resyncPeriod tim
)
}
-func defaultClusterRoleBindingInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewClusterRoleBindingInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *clusterRoleBindingInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredClusterRoleBindingInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *clusterRoleBindingInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&rbac_v1beta1.ClusterRoleBinding{}, defaultClusterRoleBindingInformer)
+ return f.factory.InformerFor(&rbac_v1beta1.ClusterRoleBinding{}, f.defaultInformer)
}
func (f *clusterRoleBindingInformer) Lister() v1beta1.ClusterRoleBindingLister {
diff --git a/staging/src/k8s.io/client-go/informers/rbac/v1beta1/interface.go b/staging/src/k8s.io/client-go/informers/rbac/v1beta1/interface.go
index f8d082a3f4..9d375d947c 100644
--- a/staging/src/k8s.io/client-go/informers/rbac/v1beta1/interface.go
+++ b/staging/src/k8s.io/client-go/informers/rbac/v1beta1/interface.go
@@ -35,30 +35,32 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// ClusterRoles returns a ClusterRoleInformer.
func (v *version) ClusterRoles() ClusterRoleInformer {
- return &clusterRoleInformer{factory: v.SharedInformerFactory}
+ return &clusterRoleInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
// ClusterRoleBindings returns a ClusterRoleBindingInformer.
func (v *version) ClusterRoleBindings() ClusterRoleBindingInformer {
- return &clusterRoleBindingInformer{factory: v.SharedInformerFactory}
+ return &clusterRoleBindingInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
// Roles returns a RoleInformer.
func (v *version) Roles() RoleInformer {
- return &roleInformer{factory: v.SharedInformerFactory}
+ return &roleInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// RoleBindings returns a RoleBindingInformer.
func (v *version) RoleBindings() RoleBindingInformer {
- return &roleBindingInformer{factory: v.SharedInformerFactory}
+ return &roleBindingInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/staging/src/k8s.io/client-go/informers/rbac/v1beta1/role.go b/staging/src/k8s.io/client-go/informers/rbac/v1beta1/role.go
index 7fcf97f25c..0f13d3aaf6 100644
--- a/staging/src/k8s.io/client-go/informers/rbac/v1beta1/role.go
+++ b/staging/src/k8s.io/client-go/informers/rbac/v1beta1/role.go
@@ -38,19 +38,34 @@ type RoleInformer interface {
}
type roleInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewRoleInformer constructs a new informer for Role type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewRoleInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredRoleInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredRoleInformer constructs a new informer for Role type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredRoleInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.RbacV1beta1().Roles(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.RbacV1beta1().Roles(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewRoleInformer(client kubernetes.Interface, namespace string, resyncPeriod
)
}
-func defaultRoleInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewRoleInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *roleInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredRoleInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *roleInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&rbac_v1beta1.Role{}, defaultRoleInformer)
+ return f.factory.InformerFor(&rbac_v1beta1.Role{}, f.defaultInformer)
}
func (f *roleInformer) Lister() v1beta1.RoleLister {
diff --git a/staging/src/k8s.io/client-go/informers/rbac/v1beta1/rolebinding.go b/staging/src/k8s.io/client-go/informers/rbac/v1beta1/rolebinding.go
index d6e93bec66..c951d97d50 100644
--- a/staging/src/k8s.io/client-go/informers/rbac/v1beta1/rolebinding.go
+++ b/staging/src/k8s.io/client-go/informers/rbac/v1beta1/rolebinding.go
@@ -38,19 +38,34 @@ type RoleBindingInformer interface {
}
type roleBindingInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewRoleBindingInformer constructs a new informer for RoleBinding type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewRoleBindingInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredRoleBindingInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredRoleBindingInformer constructs a new informer for RoleBinding type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredRoleBindingInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.RbacV1beta1().RoleBindings(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.RbacV1beta1().RoleBindings(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewRoleBindingInformer(client kubernetes.Interface, namespace string, resyn
)
}
-func defaultRoleBindingInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewRoleBindingInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *roleBindingInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredRoleBindingInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *roleBindingInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&rbac_v1beta1.RoleBinding{}, defaultRoleBindingInformer)
+ return f.factory.InformerFor(&rbac_v1beta1.RoleBinding{}, f.defaultInformer)
}
func (f *roleBindingInformer) Lister() v1beta1.RoleBindingLister {
diff --git a/staging/src/k8s.io/client-go/informers/scheduling/interface.go b/staging/src/k8s.io/client-go/informers/scheduling/interface.go
index df6a93eb1f..60b63e8e5c 100644
--- a/staging/src/k8s.io/client-go/informers/scheduling/interface.go
+++ b/staging/src/k8s.io/client-go/informers/scheduling/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// V1alpha1 returns a new v1alpha1.Interface.
func (g *group) V1alpha1() v1alpha1.Interface {
- return v1alpha1.New(g.SharedInformerFactory)
+ return v1alpha1.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/staging/src/k8s.io/client-go/informers/scheduling/v1alpha1/interface.go b/staging/src/k8s.io/client-go/informers/scheduling/v1alpha1/interface.go
index a97d5f477c..1cceef7b25 100644
--- a/staging/src/k8s.io/client-go/informers/scheduling/v1alpha1/interface.go
+++ b/staging/src/k8s.io/client-go/informers/scheduling/v1alpha1/interface.go
@@ -29,15 +29,17 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// PriorityClasses returns a PriorityClassInformer.
func (v *version) PriorityClasses() PriorityClassInformer {
- return &priorityClassInformer{factory: v.SharedInformerFactory}
+ return &priorityClassInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
diff --git a/staging/src/k8s.io/client-go/informers/scheduling/v1alpha1/priorityclass.go b/staging/src/k8s.io/client-go/informers/scheduling/v1alpha1/priorityclass.go
index 9b1361c065..5c90f43df0 100644
--- a/staging/src/k8s.io/client-go/informers/scheduling/v1alpha1/priorityclass.go
+++ b/staging/src/k8s.io/client-go/informers/scheduling/v1alpha1/priorityclass.go
@@ -38,19 +38,33 @@ type PriorityClassInformer interface {
}
type priorityClassInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewPriorityClassInformer constructs a new informer for PriorityClass type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewPriorityClassInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredPriorityClassInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredPriorityClassInformer constructs a new informer for PriorityClass type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredPriorityClassInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.SchedulingV1alpha1().PriorityClasses().List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.SchedulingV1alpha1().PriorityClasses().Watch(options)
},
},
@@ -60,12 +74,12 @@ func NewPriorityClassInformer(client kubernetes.Interface, resyncPeriod time.Dur
)
}
-func defaultPriorityClassInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewPriorityClassInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *priorityClassInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredPriorityClassInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *priorityClassInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&scheduling_v1alpha1.PriorityClass{}, defaultPriorityClassInformer)
+ return f.factory.InformerFor(&scheduling_v1alpha1.PriorityClass{}, f.defaultInformer)
}
func (f *priorityClassInformer) Lister() v1alpha1.PriorityClassLister {
diff --git a/staging/src/k8s.io/client-go/informers/settings/interface.go b/staging/src/k8s.io/client-go/informers/settings/interface.go
index 00d051eac6..53bc662170 100644
--- a/staging/src/k8s.io/client-go/informers/settings/interface.go
+++ b/staging/src/k8s.io/client-go/informers/settings/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// V1alpha1 returns a new v1alpha1.Interface.
func (g *group) V1alpha1() v1alpha1.Interface {
- return v1alpha1.New(g.SharedInformerFactory)
+ return v1alpha1.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/staging/src/k8s.io/client-go/informers/settings/v1alpha1/interface.go b/staging/src/k8s.io/client-go/informers/settings/v1alpha1/interface.go
index 58114f6e20..39007ebe25 100644
--- a/staging/src/k8s.io/client-go/informers/settings/v1alpha1/interface.go
+++ b/staging/src/k8s.io/client-go/informers/settings/v1alpha1/interface.go
@@ -29,15 +29,17 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// PodPresets returns a PodPresetInformer.
func (v *version) PodPresets() PodPresetInformer {
- return &podPresetInformer{factory: v.SharedInformerFactory}
+ return &podPresetInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/staging/src/k8s.io/client-go/informers/settings/v1alpha1/podpreset.go b/staging/src/k8s.io/client-go/informers/settings/v1alpha1/podpreset.go
index 226cec527b..2e630c73d0 100644
--- a/staging/src/k8s.io/client-go/informers/settings/v1alpha1/podpreset.go
+++ b/staging/src/k8s.io/client-go/informers/settings/v1alpha1/podpreset.go
@@ -38,19 +38,34 @@ type PodPresetInformer interface {
}
type podPresetInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewPodPresetInformer constructs a new informer for PodPreset type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewPodPresetInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredPodPresetInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredPodPresetInformer constructs a new informer for PodPreset type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredPodPresetInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.SettingsV1alpha1().PodPresets(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.SettingsV1alpha1().PodPresets(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewPodPresetInformer(client kubernetes.Interface, namespace string, resyncP
)
}
-func defaultPodPresetInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewPodPresetInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *podPresetInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredPodPresetInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *podPresetInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&settings_v1alpha1.PodPreset{}, defaultPodPresetInformer)
+ return f.factory.InformerFor(&settings_v1alpha1.PodPreset{}, f.defaultInformer)
}
func (f *podPresetInformer) Lister() v1alpha1.PodPresetLister {
diff --git a/staging/src/k8s.io/client-go/informers/storage/interface.go b/staging/src/k8s.io/client-go/informers/storage/interface.go
index 7f3a69eb29..caeb888487 100644
--- a/staging/src/k8s.io/client-go/informers/storage/interface.go
+++ b/staging/src/k8s.io/client-go/informers/storage/interface.go
@@ -33,20 +33,22 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// V1 returns a new v1.Interface.
func (g *group) V1() v1.Interface {
- return v1.New(g.SharedInformerFactory)
+ return v1.New(g.factory, g.namespace, g.tweakListOptions)
}
// V1beta1 returns a new v1beta1.Interface.
func (g *group) V1beta1() v1beta1.Interface {
- return v1beta1.New(g.SharedInformerFactory)
+ return v1beta1.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/staging/src/k8s.io/client-go/informers/storage/v1/interface.go b/staging/src/k8s.io/client-go/informers/storage/v1/interface.go
index 642d4c494d..fadb1a0739 100644
--- a/staging/src/k8s.io/client-go/informers/storage/v1/interface.go
+++ b/staging/src/k8s.io/client-go/informers/storage/v1/interface.go
@@ -29,15 +29,17 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// StorageClasses returns a StorageClassInformer.
func (v *version) StorageClasses() StorageClassInformer {
- return &storageClassInformer{factory: v.SharedInformerFactory}
+ return &storageClassInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
diff --git a/staging/src/k8s.io/client-go/informers/storage/v1/storageclass.go b/staging/src/k8s.io/client-go/informers/storage/v1/storageclass.go
index 397474c31f..341549f0fb 100644
--- a/staging/src/k8s.io/client-go/informers/storage/v1/storageclass.go
+++ b/staging/src/k8s.io/client-go/informers/storage/v1/storageclass.go
@@ -38,19 +38,33 @@ type StorageClassInformer interface {
}
type storageClassInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewStorageClassInformer constructs a new informer for StorageClass type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewStorageClassInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredStorageClassInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredStorageClassInformer constructs a new informer for StorageClass type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredStorageClassInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.StorageV1().StorageClasses().List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.StorageV1().StorageClasses().Watch(options)
},
},
@@ -60,12 +74,12 @@ func NewStorageClassInformer(client kubernetes.Interface, resyncPeriod time.Dura
)
}
-func defaultStorageClassInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewStorageClassInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *storageClassInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredStorageClassInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *storageClassInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&storage_v1.StorageClass{}, defaultStorageClassInformer)
+ return f.factory.InformerFor(&storage_v1.StorageClass{}, f.defaultInformer)
}
func (f *storageClassInformer) Lister() v1.StorageClassLister {
diff --git a/staging/src/k8s.io/client-go/informers/storage/v1beta1/interface.go b/staging/src/k8s.io/client-go/informers/storage/v1beta1/interface.go
index 49e139f631..7fa1abf5f6 100644
--- a/staging/src/k8s.io/client-go/informers/storage/v1beta1/interface.go
+++ b/staging/src/k8s.io/client-go/informers/storage/v1beta1/interface.go
@@ -29,15 +29,17 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// StorageClasses returns a StorageClassInformer.
func (v *version) StorageClasses() StorageClassInformer {
- return &storageClassInformer{factory: v.SharedInformerFactory}
+ return &storageClassInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
diff --git a/staging/src/k8s.io/client-go/informers/storage/v1beta1/storageclass.go b/staging/src/k8s.io/client-go/informers/storage/v1beta1/storageclass.go
index 404e0a164d..3e96b28200 100644
--- a/staging/src/k8s.io/client-go/informers/storage/v1beta1/storageclass.go
+++ b/staging/src/k8s.io/client-go/informers/storage/v1beta1/storageclass.go
@@ -38,19 +38,33 @@ type StorageClassInformer interface {
}
type storageClassInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewStorageClassInformer constructs a new informer for StorageClass type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewStorageClassInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredStorageClassInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredStorageClassInformer constructs a new informer for StorageClass type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredStorageClassInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.StorageV1beta1().StorageClasses().List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.StorageV1beta1().StorageClasses().Watch(options)
},
},
@@ -60,12 +74,12 @@ func NewStorageClassInformer(client kubernetes.Interface, resyncPeriod time.Dura
)
}
-func defaultStorageClassInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewStorageClassInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *storageClassInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredStorageClassInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *storageClassInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&storage_v1beta1.StorageClass{}, defaultStorageClassInformer)
+ return f.factory.InformerFor(&storage_v1beta1.StorageClass{}, f.defaultInformer)
}
func (f *storageClassInformer) Lister() v1beta1.StorageClassLister {
diff --git a/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/BUILD b/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/BUILD
index 2b27133640..2ea025f92b 100644
--- a/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/BUILD
+++ b/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/BUILD
@@ -10,9 +10,10 @@ go_library(
srcs = [
"admissionregistration_client.go",
"doc.go",
- "externaladmissionhookconfiguration.go",
"generated_expansion.go",
"initializerconfiguration.go",
+ "mutatingwebhookconfiguration.go",
+ "validatingwebhookconfiguration.go",
],
importpath = "k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1",
deps = [
diff --git a/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/admissionregistration_client.go b/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/admissionregistration_client.go
index 95d5339197..2abd80f89f 100644
--- a/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/admissionregistration_client.go
+++ b/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/admissionregistration_client.go
@@ -25,8 +25,9 @@ import (
type AdmissionregistrationV1alpha1Interface interface {
RESTClient() rest.Interface
- ExternalAdmissionHookConfigurationsGetter
InitializerConfigurationsGetter
+ MutatingWebhookConfigurationsGetter
+ ValidatingWebhookConfigurationsGetter
}
// AdmissionregistrationV1alpha1Client is used to interact with features provided by the admissionregistration.k8s.io group.
@@ -34,14 +35,18 @@ type AdmissionregistrationV1alpha1Client struct {
restClient rest.Interface
}
-func (c *AdmissionregistrationV1alpha1Client) ExternalAdmissionHookConfigurations() ExternalAdmissionHookConfigurationInterface {
- return newExternalAdmissionHookConfigurations(c)
-}
-
func (c *AdmissionregistrationV1alpha1Client) InitializerConfigurations() InitializerConfigurationInterface {
return newInitializerConfigurations(c)
}
+func (c *AdmissionregistrationV1alpha1Client) MutatingWebhookConfigurations() MutatingWebhookConfigurationInterface {
+ return newMutatingWebhookConfigurations(c)
+}
+
+func (c *AdmissionregistrationV1alpha1Client) ValidatingWebhookConfigurations() ValidatingWebhookConfigurationInterface {
+ return newValidatingWebhookConfigurations(c)
+}
+
// NewForConfig creates a new AdmissionregistrationV1alpha1Client for the given config.
func NewForConfig(c *rest.Config) (*AdmissionregistrationV1alpha1Client, error) {
config := *c
diff --git a/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/externaladmissionhookconfiguration.go b/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/externaladmissionhookconfiguration.go
deleted file mode 100644
index 1ddc6eb48c..0000000000
--- a/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/externaladmissionhookconfiguration.go
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
-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 v1alpha1
-
-import (
- v1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
- v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- types "k8s.io/apimachinery/pkg/types"
- watch "k8s.io/apimachinery/pkg/watch"
- scheme "k8s.io/client-go/kubernetes/scheme"
- rest "k8s.io/client-go/rest"
-)
-
-// ExternalAdmissionHookConfigurationsGetter has a method to return a ExternalAdmissionHookConfigurationInterface.
-// A group's client should implement this interface.
-type ExternalAdmissionHookConfigurationsGetter interface {
- ExternalAdmissionHookConfigurations() ExternalAdmissionHookConfigurationInterface
-}
-
-// ExternalAdmissionHookConfigurationInterface has methods to work with ExternalAdmissionHookConfiguration resources.
-type ExternalAdmissionHookConfigurationInterface interface {
- Create(*v1alpha1.ExternalAdmissionHookConfiguration) (*v1alpha1.ExternalAdmissionHookConfiguration, error)
- Update(*v1alpha1.ExternalAdmissionHookConfiguration) (*v1alpha1.ExternalAdmissionHookConfiguration, error)
- Delete(name string, options *v1.DeleteOptions) error
- DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error
- Get(name string, options v1.GetOptions) (*v1alpha1.ExternalAdmissionHookConfiguration, error)
- List(opts v1.ListOptions) (*v1alpha1.ExternalAdmissionHookConfigurationList, error)
- Watch(opts v1.ListOptions) (watch.Interface, error)
- Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.ExternalAdmissionHookConfiguration, err error)
- ExternalAdmissionHookConfigurationExpansion
-}
-
-// externalAdmissionHookConfigurations implements ExternalAdmissionHookConfigurationInterface
-type externalAdmissionHookConfigurations struct {
- client rest.Interface
-}
-
-// newExternalAdmissionHookConfigurations returns a ExternalAdmissionHookConfigurations
-func newExternalAdmissionHookConfigurations(c *AdmissionregistrationV1alpha1Client) *externalAdmissionHookConfigurations {
- return &externalAdmissionHookConfigurations{
- client: c.RESTClient(),
- }
-}
-
-// Get takes name of the externalAdmissionHookConfiguration, and returns the corresponding externalAdmissionHookConfiguration object, and an error if there is any.
-func (c *externalAdmissionHookConfigurations) Get(name string, options v1.GetOptions) (result *v1alpha1.ExternalAdmissionHookConfiguration, err error) {
- result = &v1alpha1.ExternalAdmissionHookConfiguration{}
- err = c.client.Get().
- Resource("externaladmissionhookconfigurations").
- Name(name).
- VersionedParams(&options, scheme.ParameterCodec).
- Do().
- Into(result)
- return
-}
-
-// List takes label and field selectors, and returns the list of ExternalAdmissionHookConfigurations that match those selectors.
-func (c *externalAdmissionHookConfigurations) List(opts v1.ListOptions) (result *v1alpha1.ExternalAdmissionHookConfigurationList, err error) {
- result = &v1alpha1.ExternalAdmissionHookConfigurationList{}
- err = c.client.Get().
- Resource("externaladmissionhookconfigurations").
- VersionedParams(&opts, scheme.ParameterCodec).
- Do().
- Into(result)
- return
-}
-
-// Watch returns a watch.Interface that watches the requested externalAdmissionHookConfigurations.
-func (c *externalAdmissionHookConfigurations) Watch(opts v1.ListOptions) (watch.Interface, error) {
- opts.Watch = true
- return c.client.Get().
- Resource("externaladmissionhookconfigurations").
- VersionedParams(&opts, scheme.ParameterCodec).
- Watch()
-}
-
-// Create takes the representation of a externalAdmissionHookConfiguration and creates it. Returns the server's representation of the externalAdmissionHookConfiguration, and an error, if there is any.
-func (c *externalAdmissionHookConfigurations) Create(externalAdmissionHookConfiguration *v1alpha1.ExternalAdmissionHookConfiguration) (result *v1alpha1.ExternalAdmissionHookConfiguration, err error) {
- result = &v1alpha1.ExternalAdmissionHookConfiguration{}
- err = c.client.Post().
- Resource("externaladmissionhookconfigurations").
- Body(externalAdmissionHookConfiguration).
- Do().
- Into(result)
- return
-}
-
-// Update takes the representation of a externalAdmissionHookConfiguration and updates it. Returns the server's representation of the externalAdmissionHookConfiguration, and an error, if there is any.
-func (c *externalAdmissionHookConfigurations) Update(externalAdmissionHookConfiguration *v1alpha1.ExternalAdmissionHookConfiguration) (result *v1alpha1.ExternalAdmissionHookConfiguration, err error) {
- result = &v1alpha1.ExternalAdmissionHookConfiguration{}
- err = c.client.Put().
- Resource("externaladmissionhookconfigurations").
- Name(externalAdmissionHookConfiguration.Name).
- Body(externalAdmissionHookConfiguration).
- Do().
- Into(result)
- return
-}
-
-// Delete takes name of the externalAdmissionHookConfiguration and deletes it. Returns an error if one occurs.
-func (c *externalAdmissionHookConfigurations) Delete(name string, options *v1.DeleteOptions) error {
- return c.client.Delete().
- Resource("externaladmissionhookconfigurations").
- Name(name).
- Body(options).
- Do().
- Error()
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *externalAdmissionHookConfigurations) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
- return c.client.Delete().
- Resource("externaladmissionhookconfigurations").
- VersionedParams(&listOptions, scheme.ParameterCodec).
- Body(options).
- Do().
- Error()
-}
-
-// Patch applies the patch and returns the patched externalAdmissionHookConfiguration.
-func (c *externalAdmissionHookConfigurations) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.ExternalAdmissionHookConfiguration, err error) {
- result = &v1alpha1.ExternalAdmissionHookConfiguration{}
- err = c.client.Patch(pt).
- Resource("externaladmissionhookconfigurations").
- SubResource(subresources...).
- Name(name).
- Body(data).
- Do().
- Into(result)
- return
-}
diff --git a/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/BUILD b/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/BUILD
index a567ec24ec..c21cf77a0d 100644
--- a/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/BUILD
+++ b/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/BUILD
@@ -10,8 +10,9 @@ go_library(
srcs = [
"doc.go",
"fake_admissionregistration_client.go",
- "fake_externaladmissionhookconfiguration.go",
"fake_initializerconfiguration.go",
+ "fake_mutatingwebhookconfiguration.go",
+ "fake_validatingwebhookconfiguration.go",
],
importpath = "k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake",
deps = [
diff --git a/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_admissionregistration_client.go b/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_admissionregistration_client.go
index 8c370a9f70..9c0dd8b874 100644
--- a/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_admissionregistration_client.go
+++ b/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_admissionregistration_client.go
@@ -26,14 +26,18 @@ type FakeAdmissionregistrationV1alpha1 struct {
*testing.Fake
}
-func (c *FakeAdmissionregistrationV1alpha1) ExternalAdmissionHookConfigurations() v1alpha1.ExternalAdmissionHookConfigurationInterface {
- return &FakeExternalAdmissionHookConfigurations{c}
-}
-
func (c *FakeAdmissionregistrationV1alpha1) InitializerConfigurations() v1alpha1.InitializerConfigurationInterface {
return &FakeInitializerConfigurations{c}
}
+func (c *FakeAdmissionregistrationV1alpha1) MutatingWebhookConfigurations() v1alpha1.MutatingWebhookConfigurationInterface {
+ return &FakeMutatingWebhookConfigurations{c}
+}
+
+func (c *FakeAdmissionregistrationV1alpha1) ValidatingWebhookConfigurations() v1alpha1.ValidatingWebhookConfigurationInterface {
+ return &FakeValidatingWebhookConfigurations{c}
+}
+
// RESTClient returns a RESTClient that is used to communicate
// with API server by this client implementation.
func (c *FakeAdmissionregistrationV1alpha1) RESTClient() rest.Interface {
diff --git a/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_externaladmissionhookconfiguration.go b/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_externaladmissionhookconfiguration.go
deleted file mode 100644
index a0143db3b7..0000000000
--- a/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_externaladmissionhookconfiguration.go
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
-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 fake
-
-import (
- v1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
- v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- labels "k8s.io/apimachinery/pkg/labels"
- schema "k8s.io/apimachinery/pkg/runtime/schema"
- types "k8s.io/apimachinery/pkg/types"
- watch "k8s.io/apimachinery/pkg/watch"
- testing "k8s.io/client-go/testing"
-)
-
-// FakeExternalAdmissionHookConfigurations implements ExternalAdmissionHookConfigurationInterface
-type FakeExternalAdmissionHookConfigurations struct {
- Fake *FakeAdmissionregistrationV1alpha1
-}
-
-var externaladmissionhookconfigurationsResource = schema.GroupVersionResource{Group: "admissionregistration.k8s.io", Version: "v1alpha1", Resource: "externaladmissionhookconfigurations"}
-
-var externaladmissionhookconfigurationsKind = schema.GroupVersionKind{Group: "admissionregistration.k8s.io", Version: "v1alpha1", Kind: "ExternalAdmissionHookConfiguration"}
-
-// Get takes name of the externalAdmissionHookConfiguration, and returns the corresponding externalAdmissionHookConfiguration object, and an error if there is any.
-func (c *FakeExternalAdmissionHookConfigurations) Get(name string, options v1.GetOptions) (result *v1alpha1.ExternalAdmissionHookConfiguration, err error) {
- obj, err := c.Fake.
- Invokes(testing.NewRootGetAction(externaladmissionhookconfigurationsResource, name), &v1alpha1.ExternalAdmissionHookConfiguration{})
- if obj == nil {
- return nil, err
- }
- return obj.(*v1alpha1.ExternalAdmissionHookConfiguration), err
-}
-
-// List takes label and field selectors, and returns the list of ExternalAdmissionHookConfigurations that match those selectors.
-func (c *FakeExternalAdmissionHookConfigurations) List(opts v1.ListOptions) (result *v1alpha1.ExternalAdmissionHookConfigurationList, err error) {
- obj, err := c.Fake.
- Invokes(testing.NewRootListAction(externaladmissionhookconfigurationsResource, externaladmissionhookconfigurationsKind, opts), &v1alpha1.ExternalAdmissionHookConfigurationList{})
- if obj == nil {
- return nil, err
- }
-
- label, _, _ := testing.ExtractFromListOptions(opts)
- if label == nil {
- label = labels.Everything()
- }
- list := &v1alpha1.ExternalAdmissionHookConfigurationList{}
- for _, item := range obj.(*v1alpha1.ExternalAdmissionHookConfigurationList).Items {
- if label.Matches(labels.Set(item.Labels)) {
- list.Items = append(list.Items, item)
- }
- }
- return list, err
-}
-
-// Watch returns a watch.Interface that watches the requested externalAdmissionHookConfigurations.
-func (c *FakeExternalAdmissionHookConfigurations) Watch(opts v1.ListOptions) (watch.Interface, error) {
- return c.Fake.
- InvokesWatch(testing.NewRootWatchAction(externaladmissionhookconfigurationsResource, opts))
-}
-
-// Create takes the representation of a externalAdmissionHookConfiguration and creates it. Returns the server's representation of the externalAdmissionHookConfiguration, and an error, if there is any.
-func (c *FakeExternalAdmissionHookConfigurations) Create(externalAdmissionHookConfiguration *v1alpha1.ExternalAdmissionHookConfiguration) (result *v1alpha1.ExternalAdmissionHookConfiguration, err error) {
- obj, err := c.Fake.
- Invokes(testing.NewRootCreateAction(externaladmissionhookconfigurationsResource, externalAdmissionHookConfiguration), &v1alpha1.ExternalAdmissionHookConfiguration{})
- if obj == nil {
- return nil, err
- }
- return obj.(*v1alpha1.ExternalAdmissionHookConfiguration), err
-}
-
-// Update takes the representation of a externalAdmissionHookConfiguration and updates it. Returns the server's representation of the externalAdmissionHookConfiguration, and an error, if there is any.
-func (c *FakeExternalAdmissionHookConfigurations) Update(externalAdmissionHookConfiguration *v1alpha1.ExternalAdmissionHookConfiguration) (result *v1alpha1.ExternalAdmissionHookConfiguration, err error) {
- obj, err := c.Fake.
- Invokes(testing.NewRootUpdateAction(externaladmissionhookconfigurationsResource, externalAdmissionHookConfiguration), &v1alpha1.ExternalAdmissionHookConfiguration{})
- if obj == nil {
- return nil, err
- }
- return obj.(*v1alpha1.ExternalAdmissionHookConfiguration), err
-}
-
-// Delete takes name of the externalAdmissionHookConfiguration and deletes it. Returns an error if one occurs.
-func (c *FakeExternalAdmissionHookConfigurations) Delete(name string, options *v1.DeleteOptions) error {
- _, err := c.Fake.
- Invokes(testing.NewRootDeleteAction(externaladmissionhookconfigurationsResource, name), &v1alpha1.ExternalAdmissionHookConfiguration{})
- return err
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *FakeExternalAdmissionHookConfigurations) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
- action := testing.NewRootDeleteCollectionAction(externaladmissionhookconfigurationsResource, listOptions)
-
- _, err := c.Fake.Invokes(action, &v1alpha1.ExternalAdmissionHookConfigurationList{})
- return err
-}
-
-// Patch applies the patch and returns the patched externalAdmissionHookConfiguration.
-func (c *FakeExternalAdmissionHookConfigurations) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.ExternalAdmissionHookConfiguration, err error) {
- obj, err := c.Fake.
- Invokes(testing.NewRootPatchSubresourceAction(externaladmissionhookconfigurationsResource, name, data, subresources...), &v1alpha1.ExternalAdmissionHookConfiguration{})
- if obj == nil {
- return nil, err
- }
- return obj.(*v1alpha1.ExternalAdmissionHookConfiguration), err
-}
diff --git a/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_mutatingwebhookconfiguration.go b/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_mutatingwebhookconfiguration.go
new file mode 100644
index 0000000000..94c8df1386
--- /dev/null
+++ b/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_mutatingwebhookconfiguration.go
@@ -0,0 +1,118 @@
+/*
+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 fake
+
+import (
+ v1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ labels "k8s.io/apimachinery/pkg/labels"
+ schema "k8s.io/apimachinery/pkg/runtime/schema"
+ types "k8s.io/apimachinery/pkg/types"
+ watch "k8s.io/apimachinery/pkg/watch"
+ testing "k8s.io/client-go/testing"
+)
+
+// FakeMutatingWebhookConfigurations implements MutatingWebhookConfigurationInterface
+type FakeMutatingWebhookConfigurations struct {
+ Fake *FakeAdmissionregistrationV1alpha1
+}
+
+var mutatingwebhookconfigurationsResource = schema.GroupVersionResource{Group: "admissionregistration.k8s.io", Version: "v1alpha1", Resource: "mutatingwebhookconfigurations"}
+
+var mutatingwebhookconfigurationsKind = schema.GroupVersionKind{Group: "admissionregistration.k8s.io", Version: "v1alpha1", Kind: "MutatingWebhookConfiguration"}
+
+// Get takes name of the mutatingWebhookConfiguration, and returns the corresponding mutatingWebhookConfiguration object, and an error if there is any.
+func (c *FakeMutatingWebhookConfigurations) Get(name string, options v1.GetOptions) (result *v1alpha1.MutatingWebhookConfiguration, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewRootGetAction(mutatingwebhookconfigurationsResource, name), &v1alpha1.MutatingWebhookConfiguration{})
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*v1alpha1.MutatingWebhookConfiguration), err
+}
+
+// List takes label and field selectors, and returns the list of MutatingWebhookConfigurations that match those selectors.
+func (c *FakeMutatingWebhookConfigurations) List(opts v1.ListOptions) (result *v1alpha1.MutatingWebhookConfigurationList, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewRootListAction(mutatingwebhookconfigurationsResource, mutatingwebhookconfigurationsKind, opts), &v1alpha1.MutatingWebhookConfigurationList{})
+ if obj == nil {
+ return nil, err
+ }
+
+ label, _, _ := testing.ExtractFromListOptions(opts)
+ if label == nil {
+ label = labels.Everything()
+ }
+ list := &v1alpha1.MutatingWebhookConfigurationList{}
+ for _, item := range obj.(*v1alpha1.MutatingWebhookConfigurationList).Items {
+ if label.Matches(labels.Set(item.Labels)) {
+ list.Items = append(list.Items, item)
+ }
+ }
+ return list, err
+}
+
+// Watch returns a watch.Interface that watches the requested mutatingWebhookConfigurations.
+func (c *FakeMutatingWebhookConfigurations) Watch(opts v1.ListOptions) (watch.Interface, error) {
+ return c.Fake.
+ InvokesWatch(testing.NewRootWatchAction(mutatingwebhookconfigurationsResource, opts))
+}
+
+// Create takes the representation of a mutatingWebhookConfiguration and creates it. Returns the server's representation of the mutatingWebhookConfiguration, and an error, if there is any.
+func (c *FakeMutatingWebhookConfigurations) Create(mutatingWebhookConfiguration *v1alpha1.MutatingWebhookConfiguration) (result *v1alpha1.MutatingWebhookConfiguration, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewRootCreateAction(mutatingwebhookconfigurationsResource, mutatingWebhookConfiguration), &v1alpha1.MutatingWebhookConfiguration{})
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*v1alpha1.MutatingWebhookConfiguration), err
+}
+
+// Update takes the representation of a mutatingWebhookConfiguration and updates it. Returns the server's representation of the mutatingWebhookConfiguration, and an error, if there is any.
+func (c *FakeMutatingWebhookConfigurations) Update(mutatingWebhookConfiguration *v1alpha1.MutatingWebhookConfiguration) (result *v1alpha1.MutatingWebhookConfiguration, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewRootUpdateAction(mutatingwebhookconfigurationsResource, mutatingWebhookConfiguration), &v1alpha1.MutatingWebhookConfiguration{})
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*v1alpha1.MutatingWebhookConfiguration), err
+}
+
+// Delete takes name of the mutatingWebhookConfiguration and deletes it. Returns an error if one occurs.
+func (c *FakeMutatingWebhookConfigurations) Delete(name string, options *v1.DeleteOptions) error {
+ _, err := c.Fake.
+ Invokes(testing.NewRootDeleteAction(mutatingwebhookconfigurationsResource, name), &v1alpha1.MutatingWebhookConfiguration{})
+ return err
+}
+
+// DeleteCollection deletes a collection of objects.
+func (c *FakeMutatingWebhookConfigurations) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
+ action := testing.NewRootDeleteCollectionAction(mutatingwebhookconfigurationsResource, listOptions)
+
+ _, err := c.Fake.Invokes(action, &v1alpha1.MutatingWebhookConfigurationList{})
+ return err
+}
+
+// Patch applies the patch and returns the patched mutatingWebhookConfiguration.
+func (c *FakeMutatingWebhookConfigurations) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.MutatingWebhookConfiguration, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewRootPatchSubresourceAction(mutatingwebhookconfigurationsResource, name, data, subresources...), &v1alpha1.MutatingWebhookConfiguration{})
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*v1alpha1.MutatingWebhookConfiguration), err
+}
diff --git a/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_validatingwebhookconfiguration.go b/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_validatingwebhookconfiguration.go
new file mode 100644
index 0000000000..f3067525ea
--- /dev/null
+++ b/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_validatingwebhookconfiguration.go
@@ -0,0 +1,118 @@
+/*
+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 fake
+
+import (
+ v1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ labels "k8s.io/apimachinery/pkg/labels"
+ schema "k8s.io/apimachinery/pkg/runtime/schema"
+ types "k8s.io/apimachinery/pkg/types"
+ watch "k8s.io/apimachinery/pkg/watch"
+ testing "k8s.io/client-go/testing"
+)
+
+// FakeValidatingWebhookConfigurations implements ValidatingWebhookConfigurationInterface
+type FakeValidatingWebhookConfigurations struct {
+ Fake *FakeAdmissionregistrationV1alpha1
+}
+
+var validatingwebhookconfigurationsResource = schema.GroupVersionResource{Group: "admissionregistration.k8s.io", Version: "v1alpha1", Resource: "validatingwebhookconfigurations"}
+
+var validatingwebhookconfigurationsKind = schema.GroupVersionKind{Group: "admissionregistration.k8s.io", Version: "v1alpha1", Kind: "ValidatingWebhookConfiguration"}
+
+// Get takes name of the validatingWebhookConfiguration, and returns the corresponding validatingWebhookConfiguration object, and an error if there is any.
+func (c *FakeValidatingWebhookConfigurations) Get(name string, options v1.GetOptions) (result *v1alpha1.ValidatingWebhookConfiguration, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewRootGetAction(validatingwebhookconfigurationsResource, name), &v1alpha1.ValidatingWebhookConfiguration{})
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*v1alpha1.ValidatingWebhookConfiguration), err
+}
+
+// List takes label and field selectors, and returns the list of ValidatingWebhookConfigurations that match those selectors.
+func (c *FakeValidatingWebhookConfigurations) List(opts v1.ListOptions) (result *v1alpha1.ValidatingWebhookConfigurationList, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewRootListAction(validatingwebhookconfigurationsResource, validatingwebhookconfigurationsKind, opts), &v1alpha1.ValidatingWebhookConfigurationList{})
+ if obj == nil {
+ return nil, err
+ }
+
+ label, _, _ := testing.ExtractFromListOptions(opts)
+ if label == nil {
+ label = labels.Everything()
+ }
+ list := &v1alpha1.ValidatingWebhookConfigurationList{}
+ for _, item := range obj.(*v1alpha1.ValidatingWebhookConfigurationList).Items {
+ if label.Matches(labels.Set(item.Labels)) {
+ list.Items = append(list.Items, item)
+ }
+ }
+ return list, err
+}
+
+// Watch returns a watch.Interface that watches the requested validatingWebhookConfigurations.
+func (c *FakeValidatingWebhookConfigurations) Watch(opts v1.ListOptions) (watch.Interface, error) {
+ return c.Fake.
+ InvokesWatch(testing.NewRootWatchAction(validatingwebhookconfigurationsResource, opts))
+}
+
+// Create takes the representation of a validatingWebhookConfiguration and creates it. Returns the server's representation of the validatingWebhookConfiguration, and an error, if there is any.
+func (c *FakeValidatingWebhookConfigurations) Create(validatingWebhookConfiguration *v1alpha1.ValidatingWebhookConfiguration) (result *v1alpha1.ValidatingWebhookConfiguration, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewRootCreateAction(validatingwebhookconfigurationsResource, validatingWebhookConfiguration), &v1alpha1.ValidatingWebhookConfiguration{})
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*v1alpha1.ValidatingWebhookConfiguration), err
+}
+
+// Update takes the representation of a validatingWebhookConfiguration and updates it. Returns the server's representation of the validatingWebhookConfiguration, and an error, if there is any.
+func (c *FakeValidatingWebhookConfigurations) Update(validatingWebhookConfiguration *v1alpha1.ValidatingWebhookConfiguration) (result *v1alpha1.ValidatingWebhookConfiguration, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewRootUpdateAction(validatingwebhookconfigurationsResource, validatingWebhookConfiguration), &v1alpha1.ValidatingWebhookConfiguration{})
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*v1alpha1.ValidatingWebhookConfiguration), err
+}
+
+// Delete takes name of the validatingWebhookConfiguration and deletes it. Returns an error if one occurs.
+func (c *FakeValidatingWebhookConfigurations) Delete(name string, options *v1.DeleteOptions) error {
+ _, err := c.Fake.
+ Invokes(testing.NewRootDeleteAction(validatingwebhookconfigurationsResource, name), &v1alpha1.ValidatingWebhookConfiguration{})
+ return err
+}
+
+// DeleteCollection deletes a collection of objects.
+func (c *FakeValidatingWebhookConfigurations) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
+ action := testing.NewRootDeleteCollectionAction(validatingwebhookconfigurationsResource, listOptions)
+
+ _, err := c.Fake.Invokes(action, &v1alpha1.ValidatingWebhookConfigurationList{})
+ return err
+}
+
+// Patch applies the patch and returns the patched validatingWebhookConfiguration.
+func (c *FakeValidatingWebhookConfigurations) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.ValidatingWebhookConfiguration, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewRootPatchSubresourceAction(validatingwebhookconfigurationsResource, name, data, subresources...), &v1alpha1.ValidatingWebhookConfiguration{})
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*v1alpha1.ValidatingWebhookConfiguration), err
+}
diff --git a/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/generated_expansion.go b/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/generated_expansion.go
index eef439ab47..17f7326c2c 100644
--- a/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/generated_expansion.go
+++ b/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/generated_expansion.go
@@ -16,6 +16,8 @@ limitations under the License.
package v1alpha1
-type ExternalAdmissionHookConfigurationExpansion interface{}
-
type InitializerConfigurationExpansion interface{}
+
+type MutatingWebhookConfigurationExpansion interface{}
+
+type ValidatingWebhookConfigurationExpansion interface{}
diff --git a/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/mutatingwebhookconfiguration.go b/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/mutatingwebhookconfiguration.go
new file mode 100644
index 0000000000..3d645b9039
--- /dev/null
+++ b/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/mutatingwebhookconfiguration.go
@@ -0,0 +1,145 @@
+/*
+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 v1alpha1
+
+import (
+ v1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ types "k8s.io/apimachinery/pkg/types"
+ watch "k8s.io/apimachinery/pkg/watch"
+ scheme "k8s.io/client-go/kubernetes/scheme"
+ rest "k8s.io/client-go/rest"
+)
+
+// MutatingWebhookConfigurationsGetter has a method to return a MutatingWebhookConfigurationInterface.
+// A group's client should implement this interface.
+type MutatingWebhookConfigurationsGetter interface {
+ MutatingWebhookConfigurations() MutatingWebhookConfigurationInterface
+}
+
+// MutatingWebhookConfigurationInterface has methods to work with MutatingWebhookConfiguration resources.
+type MutatingWebhookConfigurationInterface interface {
+ Create(*v1alpha1.MutatingWebhookConfiguration) (*v1alpha1.MutatingWebhookConfiguration, error)
+ Update(*v1alpha1.MutatingWebhookConfiguration) (*v1alpha1.MutatingWebhookConfiguration, error)
+ Delete(name string, options *v1.DeleteOptions) error
+ DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error
+ Get(name string, options v1.GetOptions) (*v1alpha1.MutatingWebhookConfiguration, error)
+ List(opts v1.ListOptions) (*v1alpha1.MutatingWebhookConfigurationList, error)
+ Watch(opts v1.ListOptions) (watch.Interface, error)
+ Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.MutatingWebhookConfiguration, err error)
+ MutatingWebhookConfigurationExpansion
+}
+
+// mutatingWebhookConfigurations implements MutatingWebhookConfigurationInterface
+type mutatingWebhookConfigurations struct {
+ client rest.Interface
+}
+
+// newMutatingWebhookConfigurations returns a MutatingWebhookConfigurations
+func newMutatingWebhookConfigurations(c *AdmissionregistrationV1alpha1Client) *mutatingWebhookConfigurations {
+ return &mutatingWebhookConfigurations{
+ client: c.RESTClient(),
+ }
+}
+
+// Get takes name of the mutatingWebhookConfiguration, and returns the corresponding mutatingWebhookConfiguration object, and an error if there is any.
+func (c *mutatingWebhookConfigurations) Get(name string, options v1.GetOptions) (result *v1alpha1.MutatingWebhookConfiguration, err error) {
+ result = &v1alpha1.MutatingWebhookConfiguration{}
+ err = c.client.Get().
+ Resource("mutatingwebhookconfigurations").
+ Name(name).
+ VersionedParams(&options, scheme.ParameterCodec).
+ Do().
+ Into(result)
+ return
+}
+
+// List takes label and field selectors, and returns the list of MutatingWebhookConfigurations that match those selectors.
+func (c *mutatingWebhookConfigurations) List(opts v1.ListOptions) (result *v1alpha1.MutatingWebhookConfigurationList, err error) {
+ result = &v1alpha1.MutatingWebhookConfigurationList{}
+ err = c.client.Get().
+ Resource("mutatingwebhookconfigurations").
+ VersionedParams(&opts, scheme.ParameterCodec).
+ Do().
+ Into(result)
+ return
+}
+
+// Watch returns a watch.Interface that watches the requested mutatingWebhookConfigurations.
+func (c *mutatingWebhookConfigurations) Watch(opts v1.ListOptions) (watch.Interface, error) {
+ opts.Watch = true
+ return c.client.Get().
+ Resource("mutatingwebhookconfigurations").
+ VersionedParams(&opts, scheme.ParameterCodec).
+ Watch()
+}
+
+// Create takes the representation of a mutatingWebhookConfiguration and creates it. Returns the server's representation of the mutatingWebhookConfiguration, and an error, if there is any.
+func (c *mutatingWebhookConfigurations) Create(mutatingWebhookConfiguration *v1alpha1.MutatingWebhookConfiguration) (result *v1alpha1.MutatingWebhookConfiguration, err error) {
+ result = &v1alpha1.MutatingWebhookConfiguration{}
+ err = c.client.Post().
+ Resource("mutatingwebhookconfigurations").
+ Body(mutatingWebhookConfiguration).
+ Do().
+ Into(result)
+ return
+}
+
+// Update takes the representation of a mutatingWebhookConfiguration and updates it. Returns the server's representation of the mutatingWebhookConfiguration, and an error, if there is any.
+func (c *mutatingWebhookConfigurations) Update(mutatingWebhookConfiguration *v1alpha1.MutatingWebhookConfiguration) (result *v1alpha1.MutatingWebhookConfiguration, err error) {
+ result = &v1alpha1.MutatingWebhookConfiguration{}
+ err = c.client.Put().
+ Resource("mutatingwebhookconfigurations").
+ Name(mutatingWebhookConfiguration.Name).
+ Body(mutatingWebhookConfiguration).
+ Do().
+ Into(result)
+ return
+}
+
+// Delete takes name of the mutatingWebhookConfiguration and deletes it. Returns an error if one occurs.
+func (c *mutatingWebhookConfigurations) Delete(name string, options *v1.DeleteOptions) error {
+ return c.client.Delete().
+ Resource("mutatingwebhookconfigurations").
+ Name(name).
+ Body(options).
+ Do().
+ Error()
+}
+
+// DeleteCollection deletes a collection of objects.
+func (c *mutatingWebhookConfigurations) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
+ return c.client.Delete().
+ Resource("mutatingwebhookconfigurations").
+ VersionedParams(&listOptions, scheme.ParameterCodec).
+ Body(options).
+ Do().
+ Error()
+}
+
+// Patch applies the patch and returns the patched mutatingWebhookConfiguration.
+func (c *mutatingWebhookConfigurations) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.MutatingWebhookConfiguration, err error) {
+ result = &v1alpha1.MutatingWebhookConfiguration{}
+ err = c.client.Patch(pt).
+ Resource("mutatingwebhookconfigurations").
+ SubResource(subresources...).
+ Name(name).
+ Body(data).
+ Do().
+ Into(result)
+ return
+}
diff --git a/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/validatingwebhookconfiguration.go b/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/validatingwebhookconfiguration.go
new file mode 100644
index 0000000000..99096b7512
--- /dev/null
+++ b/staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/validatingwebhookconfiguration.go
@@ -0,0 +1,145 @@
+/*
+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 v1alpha1
+
+import (
+ v1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ types "k8s.io/apimachinery/pkg/types"
+ watch "k8s.io/apimachinery/pkg/watch"
+ scheme "k8s.io/client-go/kubernetes/scheme"
+ rest "k8s.io/client-go/rest"
+)
+
+// ValidatingWebhookConfigurationsGetter has a method to return a ValidatingWebhookConfigurationInterface.
+// A group's client should implement this interface.
+type ValidatingWebhookConfigurationsGetter interface {
+ ValidatingWebhookConfigurations() ValidatingWebhookConfigurationInterface
+}
+
+// ValidatingWebhookConfigurationInterface has methods to work with ValidatingWebhookConfiguration resources.
+type ValidatingWebhookConfigurationInterface interface {
+ Create(*v1alpha1.ValidatingWebhookConfiguration) (*v1alpha1.ValidatingWebhookConfiguration, error)
+ Update(*v1alpha1.ValidatingWebhookConfiguration) (*v1alpha1.ValidatingWebhookConfiguration, error)
+ Delete(name string, options *v1.DeleteOptions) error
+ DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error
+ Get(name string, options v1.GetOptions) (*v1alpha1.ValidatingWebhookConfiguration, error)
+ List(opts v1.ListOptions) (*v1alpha1.ValidatingWebhookConfigurationList, error)
+ Watch(opts v1.ListOptions) (watch.Interface, error)
+ Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.ValidatingWebhookConfiguration, err error)
+ ValidatingWebhookConfigurationExpansion
+}
+
+// validatingWebhookConfigurations implements ValidatingWebhookConfigurationInterface
+type validatingWebhookConfigurations struct {
+ client rest.Interface
+}
+
+// newValidatingWebhookConfigurations returns a ValidatingWebhookConfigurations
+func newValidatingWebhookConfigurations(c *AdmissionregistrationV1alpha1Client) *validatingWebhookConfigurations {
+ return &validatingWebhookConfigurations{
+ client: c.RESTClient(),
+ }
+}
+
+// Get takes name of the validatingWebhookConfiguration, and returns the corresponding validatingWebhookConfiguration object, and an error if there is any.
+func (c *validatingWebhookConfigurations) Get(name string, options v1.GetOptions) (result *v1alpha1.ValidatingWebhookConfiguration, err error) {
+ result = &v1alpha1.ValidatingWebhookConfiguration{}
+ err = c.client.Get().
+ Resource("validatingwebhookconfigurations").
+ Name(name).
+ VersionedParams(&options, scheme.ParameterCodec).
+ Do().
+ Into(result)
+ return
+}
+
+// List takes label and field selectors, and returns the list of ValidatingWebhookConfigurations that match those selectors.
+func (c *validatingWebhookConfigurations) List(opts v1.ListOptions) (result *v1alpha1.ValidatingWebhookConfigurationList, err error) {
+ result = &v1alpha1.ValidatingWebhookConfigurationList{}
+ err = c.client.Get().
+ Resource("validatingwebhookconfigurations").
+ VersionedParams(&opts, scheme.ParameterCodec).
+ Do().
+ Into(result)
+ return
+}
+
+// Watch returns a watch.Interface that watches the requested validatingWebhookConfigurations.
+func (c *validatingWebhookConfigurations) Watch(opts v1.ListOptions) (watch.Interface, error) {
+ opts.Watch = true
+ return c.client.Get().
+ Resource("validatingwebhookconfigurations").
+ VersionedParams(&opts, scheme.ParameterCodec).
+ Watch()
+}
+
+// Create takes the representation of a validatingWebhookConfiguration and creates it. Returns the server's representation of the validatingWebhookConfiguration, and an error, if there is any.
+func (c *validatingWebhookConfigurations) Create(validatingWebhookConfiguration *v1alpha1.ValidatingWebhookConfiguration) (result *v1alpha1.ValidatingWebhookConfiguration, err error) {
+ result = &v1alpha1.ValidatingWebhookConfiguration{}
+ err = c.client.Post().
+ Resource("validatingwebhookconfigurations").
+ Body(validatingWebhookConfiguration).
+ Do().
+ Into(result)
+ return
+}
+
+// Update takes the representation of a validatingWebhookConfiguration and updates it. Returns the server's representation of the validatingWebhookConfiguration, and an error, if there is any.
+func (c *validatingWebhookConfigurations) Update(validatingWebhookConfiguration *v1alpha1.ValidatingWebhookConfiguration) (result *v1alpha1.ValidatingWebhookConfiguration, err error) {
+ result = &v1alpha1.ValidatingWebhookConfiguration{}
+ err = c.client.Put().
+ Resource("validatingwebhookconfigurations").
+ Name(validatingWebhookConfiguration.Name).
+ Body(validatingWebhookConfiguration).
+ Do().
+ Into(result)
+ return
+}
+
+// Delete takes name of the validatingWebhookConfiguration and deletes it. Returns an error if one occurs.
+func (c *validatingWebhookConfigurations) Delete(name string, options *v1.DeleteOptions) error {
+ return c.client.Delete().
+ Resource("validatingwebhookconfigurations").
+ Name(name).
+ Body(options).
+ Do().
+ Error()
+}
+
+// DeleteCollection deletes a collection of objects.
+func (c *validatingWebhookConfigurations) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
+ return c.client.Delete().
+ Resource("validatingwebhookconfigurations").
+ VersionedParams(&listOptions, scheme.ParameterCodec).
+ Body(options).
+ Do().
+ Error()
+}
+
+// Patch applies the patch and returns the patched validatingWebhookConfiguration.
+func (c *validatingWebhookConfigurations) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.ValidatingWebhookConfiguration, err error) {
+ result = &v1alpha1.ValidatingWebhookConfiguration{}
+ err = c.client.Patch(pt).
+ Resource("validatingwebhookconfigurations").
+ SubResource(subresources...).
+ Name(name).
+ Body(data).
+ Do().
+ Into(result)
+ return
+}
diff --git a/staging/src/k8s.io/client-go/listers/admissionregistration/v1alpha1/BUILD b/staging/src/k8s.io/client-go/listers/admissionregistration/v1alpha1/BUILD
index 1322950313..387deca86c 100644
--- a/staging/src/k8s.io/client-go/listers/admissionregistration/v1alpha1/BUILD
+++ b/staging/src/k8s.io/client-go/listers/admissionregistration/v1alpha1/BUILD
@@ -9,8 +9,9 @@ go_library(
name = "go_default_library",
srcs = [
"expansion_generated.go",
- "externaladmissionhookconfiguration.go",
"initializerconfiguration.go",
+ "mutatingwebhookconfiguration.go",
+ "validatingwebhookconfiguration.go",
],
importpath = "k8s.io/client-go/listers/admissionregistration/v1alpha1",
deps = [
diff --git a/staging/src/k8s.io/client-go/listers/admissionregistration/v1alpha1/expansion_generated.go b/staging/src/k8s.io/client-go/listers/admissionregistration/v1alpha1/expansion_generated.go
index 5d9f14708f..a0d51f1cfb 100644
--- a/staging/src/k8s.io/client-go/listers/admissionregistration/v1alpha1/expansion_generated.go
+++ b/staging/src/k8s.io/client-go/listers/admissionregistration/v1alpha1/expansion_generated.go
@@ -18,10 +18,14 @@ limitations under the License.
package v1alpha1
-// ExternalAdmissionHookConfigurationListerExpansion allows custom methods to be added to
-// ExternalAdmissionHookConfigurationLister.
-type ExternalAdmissionHookConfigurationListerExpansion interface{}
-
// InitializerConfigurationListerExpansion allows custom methods to be added to
// InitializerConfigurationLister.
type InitializerConfigurationListerExpansion interface{}
+
+// MutatingWebhookConfigurationListerExpansion allows custom methods to be added to
+// MutatingWebhookConfigurationLister.
+type MutatingWebhookConfigurationListerExpansion interface{}
+
+// ValidatingWebhookConfigurationListerExpansion allows custom methods to be added to
+// ValidatingWebhookConfigurationLister.
+type ValidatingWebhookConfigurationListerExpansion interface{}
diff --git a/staging/src/k8s.io/client-go/listers/admissionregistration/v1alpha1/externaladmissionhookconfiguration.go b/staging/src/k8s.io/client-go/listers/admissionregistration/v1alpha1/externaladmissionhookconfiguration.go
deleted file mode 100644
index 490fc4155e..0000000000
--- a/staging/src/k8s.io/client-go/listers/admissionregistration/v1alpha1/externaladmissionhookconfiguration.go
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
-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.
-*/
-
-// This file was automatically generated by lister-gen
-
-package v1alpha1
-
-import (
- v1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
- "k8s.io/apimachinery/pkg/api/errors"
- "k8s.io/apimachinery/pkg/labels"
- "k8s.io/client-go/tools/cache"
-)
-
-// ExternalAdmissionHookConfigurationLister helps list ExternalAdmissionHookConfigurations.
-type ExternalAdmissionHookConfigurationLister interface {
- // List lists all ExternalAdmissionHookConfigurations in the indexer.
- List(selector labels.Selector) (ret []*v1alpha1.ExternalAdmissionHookConfiguration, err error)
- // Get retrieves the ExternalAdmissionHookConfiguration from the index for a given name.
- Get(name string) (*v1alpha1.ExternalAdmissionHookConfiguration, error)
- ExternalAdmissionHookConfigurationListerExpansion
-}
-
-// externalAdmissionHookConfigurationLister implements the ExternalAdmissionHookConfigurationLister interface.
-type externalAdmissionHookConfigurationLister struct {
- indexer cache.Indexer
-}
-
-// NewExternalAdmissionHookConfigurationLister returns a new ExternalAdmissionHookConfigurationLister.
-func NewExternalAdmissionHookConfigurationLister(indexer cache.Indexer) ExternalAdmissionHookConfigurationLister {
- return &externalAdmissionHookConfigurationLister{indexer: indexer}
-}
-
-// List lists all ExternalAdmissionHookConfigurations in the indexer.
-func (s *externalAdmissionHookConfigurationLister) List(selector labels.Selector) (ret []*v1alpha1.ExternalAdmissionHookConfiguration, err error) {
- err = cache.ListAll(s.indexer, selector, func(m interface{}) {
- ret = append(ret, m.(*v1alpha1.ExternalAdmissionHookConfiguration))
- })
- return ret, err
-}
-
-// Get retrieves the ExternalAdmissionHookConfiguration from the index for a given name.
-func (s *externalAdmissionHookConfigurationLister) Get(name string) (*v1alpha1.ExternalAdmissionHookConfiguration, error) {
- obj, exists, err := s.indexer.GetByKey(name)
- if err != nil {
- return nil, err
- }
- if !exists {
- return nil, errors.NewNotFound(v1alpha1.Resource("externaladmissionhookconfiguration"), name)
- }
- return obj.(*v1alpha1.ExternalAdmissionHookConfiguration), nil
-}
diff --git a/staging/src/k8s.io/client-go/listers/admissionregistration/v1alpha1/mutatingwebhookconfiguration.go b/staging/src/k8s.io/client-go/listers/admissionregistration/v1alpha1/mutatingwebhookconfiguration.go
new file mode 100644
index 0000000000..99ccc30967
--- /dev/null
+++ b/staging/src/k8s.io/client-go/listers/admissionregistration/v1alpha1/mutatingwebhookconfiguration.go
@@ -0,0 +1,65 @@
+/*
+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.
+*/
+
+// This file was automatically generated by lister-gen
+
+package v1alpha1
+
+import (
+ v1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
+ "k8s.io/apimachinery/pkg/api/errors"
+ "k8s.io/apimachinery/pkg/labels"
+ "k8s.io/client-go/tools/cache"
+)
+
+// MutatingWebhookConfigurationLister helps list MutatingWebhookConfigurations.
+type MutatingWebhookConfigurationLister interface {
+ // List lists all MutatingWebhookConfigurations in the indexer.
+ List(selector labels.Selector) (ret []*v1alpha1.MutatingWebhookConfiguration, err error)
+ // Get retrieves the MutatingWebhookConfiguration from the index for a given name.
+ Get(name string) (*v1alpha1.MutatingWebhookConfiguration, error)
+ MutatingWebhookConfigurationListerExpansion
+}
+
+// mutatingWebhookConfigurationLister implements the MutatingWebhookConfigurationLister interface.
+type mutatingWebhookConfigurationLister struct {
+ indexer cache.Indexer
+}
+
+// NewMutatingWebhookConfigurationLister returns a new MutatingWebhookConfigurationLister.
+func NewMutatingWebhookConfigurationLister(indexer cache.Indexer) MutatingWebhookConfigurationLister {
+ return &mutatingWebhookConfigurationLister{indexer: indexer}
+}
+
+// List lists all MutatingWebhookConfigurations in the indexer.
+func (s *mutatingWebhookConfigurationLister) List(selector labels.Selector) (ret []*v1alpha1.MutatingWebhookConfiguration, err error) {
+ err = cache.ListAll(s.indexer, selector, func(m interface{}) {
+ ret = append(ret, m.(*v1alpha1.MutatingWebhookConfiguration))
+ })
+ return ret, err
+}
+
+// Get retrieves the MutatingWebhookConfiguration from the index for a given name.
+func (s *mutatingWebhookConfigurationLister) Get(name string) (*v1alpha1.MutatingWebhookConfiguration, error) {
+ obj, exists, err := s.indexer.GetByKey(name)
+ if err != nil {
+ return nil, err
+ }
+ if !exists {
+ return nil, errors.NewNotFound(v1alpha1.Resource("mutatingwebhookconfiguration"), name)
+ }
+ return obj.(*v1alpha1.MutatingWebhookConfiguration), nil
+}
diff --git a/staging/src/k8s.io/client-go/listers/admissionregistration/v1alpha1/validatingwebhookconfiguration.go b/staging/src/k8s.io/client-go/listers/admissionregistration/v1alpha1/validatingwebhookconfiguration.go
new file mode 100644
index 0000000000..5a57c2e5a8
--- /dev/null
+++ b/staging/src/k8s.io/client-go/listers/admissionregistration/v1alpha1/validatingwebhookconfiguration.go
@@ -0,0 +1,65 @@
+/*
+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.
+*/
+
+// This file was automatically generated by lister-gen
+
+package v1alpha1
+
+import (
+ v1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
+ "k8s.io/apimachinery/pkg/api/errors"
+ "k8s.io/apimachinery/pkg/labels"
+ "k8s.io/client-go/tools/cache"
+)
+
+// ValidatingWebhookConfigurationLister helps list ValidatingWebhookConfigurations.
+type ValidatingWebhookConfigurationLister interface {
+ // List lists all ValidatingWebhookConfigurations in the indexer.
+ List(selector labels.Selector) (ret []*v1alpha1.ValidatingWebhookConfiguration, err error)
+ // Get retrieves the ValidatingWebhookConfiguration from the index for a given name.
+ Get(name string) (*v1alpha1.ValidatingWebhookConfiguration, error)
+ ValidatingWebhookConfigurationListerExpansion
+}
+
+// validatingWebhookConfigurationLister implements the ValidatingWebhookConfigurationLister interface.
+type validatingWebhookConfigurationLister struct {
+ indexer cache.Indexer
+}
+
+// NewValidatingWebhookConfigurationLister returns a new ValidatingWebhookConfigurationLister.
+func NewValidatingWebhookConfigurationLister(indexer cache.Indexer) ValidatingWebhookConfigurationLister {
+ return &validatingWebhookConfigurationLister{indexer: indexer}
+}
+
+// List lists all ValidatingWebhookConfigurations in the indexer.
+func (s *validatingWebhookConfigurationLister) List(selector labels.Selector) (ret []*v1alpha1.ValidatingWebhookConfiguration, err error) {
+ err = cache.ListAll(s.indexer, selector, func(m interface{}) {
+ ret = append(ret, m.(*v1alpha1.ValidatingWebhookConfiguration))
+ })
+ return ret, err
+}
+
+// Get retrieves the ValidatingWebhookConfiguration from the index for a given name.
+func (s *validatingWebhookConfigurationLister) Get(name string) (*v1alpha1.ValidatingWebhookConfiguration, error) {
+ obj, exists, err := s.indexer.GetByKey(name)
+ if err != nil {
+ return nil, err
+ }
+ if !exists {
+ return nil, errors.NewNotFound(v1alpha1.Resource("validatingwebhookconfiguration"), name)
+ }
+ return obj.(*v1alpha1.ValidatingWebhookConfiguration), nil
+}
diff --git a/staging/src/k8s.io/client-go/pkg/version/base.go b/staging/src/k8s.io/client-go/pkg/version/base.go
index c377705fe8..7ab0ed3a7c 100644
--- a/staging/src/k8s.io/client-go/pkg/version/base.go
+++ b/staging/src/k8s.io/client-go/pkg/version/base.go
@@ -51,9 +51,13 @@ var (
// semantic version is a git hash, but the version itself is no
// longer the direct output of "git describe", but a slight
// translation to be semver compliant.
+
+ // NOTE: The $Format strings are replaced during 'git archive' thanks to the
+ // companion .gitattributes file containing 'export-subst' in this same
+ // directory. See also https://git-scm.com/docs/gitattributes
gitVersion string = "v0.0.0-master+$Format:%h$"
- gitCommit string = "$Format:%H$" // sha1 from git, output of $(git rev-parse HEAD)
- gitTreeState string = "not a git tree" // state of git tree, either "clean" or "dirty"
+ gitCommit string = "$Format:%H$" // sha1 from git, output of $(git rev-parse HEAD)
+ gitTreeState string = "" // state of git tree, either "clean" or "dirty"
buildDate string = "1970-01-01T00:00:00Z" // build date in ISO8601 format, output of $(date -u +'%Y-%m-%dT%H:%M:%SZ')
)
diff --git a/staging/src/k8s.io/client-go/rest/BUILD b/staging/src/k8s.io/client-go/rest/BUILD
index d3d730fff6..44958631da 100644
--- a/staging/src/k8s.io/client-go/rest/BUILD
+++ b/staging/src/k8s.io/client-go/rest/BUILD
@@ -65,7 +65,6 @@ go_library(
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming:go_default_library",
diff --git a/staging/src/k8s.io/client-go/rest/zz_generated.deepcopy.go b/staging/src/k8s.io/client-go/rest/zz_generated.deepcopy.go
index 1632e1efe3..59050fc491 100644
--- a/staging/src/k8s.io/client-go/rest/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/client-go/rest/zz_generated.deepcopy.go
@@ -20,23 +20,6 @@ limitations under the License.
package rest
-import (
- conversion "k8s.io/apimachinery/pkg/conversion"
- reflect "reflect"
-)
-
-// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc {
- return []conversion.GeneratedDeepCopyFunc{
- {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TLSClientConfig).DeepCopyInto(out.(*TLSClientConfig))
- return nil
- }, InType: reflect.TypeOf(&TLSClientConfig{})},
- }
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TLSClientConfig) DeepCopyInto(out *TLSClientConfig) {
*out = *in
diff --git a/staging/src/k8s.io/client-go/scale/scheme/BUILD b/staging/src/k8s.io/client-go/scale/scheme/BUILD
index 8537aeb6ff..74bd976a1f 100644
--- a/staging/src/k8s.io/client-go/scale/scheme/BUILD
+++ b/staging/src/k8s.io/client-go/scale/scheme/BUILD
@@ -13,7 +13,6 @@ go_library(
deps = [
"//vendor/k8s.io/api/autoscaling/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/client-go/scale/scheme/doc.go b/staging/src/k8s.io/client-go/scale/scheme/doc.go
index 8a050ce47b..0203d6d5a2 100644
--- a/staging/src/k8s.io/client-go/scale/scheme/doc.go
+++ b/staging/src/k8s.io/client-go/scale/scheme/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// Package scheme contains a runtime.Scheme to be used for serializing
// and deserializing different versions of Scale, and for converting
diff --git a/staging/src/k8s.io/client-go/scale/scheme/zz_generated.deepcopy.go b/staging/src/k8s.io/client-go/scale/scheme/zz_generated.deepcopy.go
index ec9f5f95ed..19b6795835 100644
--- a/staging/src/k8s.io/client-go/scale/scheme/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/client-go/scale/scheme/zz_generated.deepcopy.go
@@ -22,36 +22,9 @@ package scheme
import (
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Scale).DeepCopyInto(out.(*Scale))
- return nil
- }, InType: reflect.TypeOf(&Scale{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ScaleSpec).DeepCopyInto(out.(*ScaleSpec))
- return nil
- }, InType: reflect.TypeOf(&ScaleSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ScaleStatus).DeepCopyInto(out.(*ScaleStatus))
- return nil
- }, InType: reflect.TypeOf(&ScaleStatus{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Scale) DeepCopyInto(out *Scale) {
*out = *in
diff --git a/staging/src/k8s.io/client-go/tools/clientcmd/api/BUILD b/staging/src/k8s.io/client-go/tools/clientcmd/api/BUILD
index ea77ceabdb..d46f4e28fb 100644
--- a/staging/src/k8s.io/client-go/tools/clientcmd/api/BUILD
+++ b/staging/src/k8s.io/client-go/tools/clientcmd/api/BUILD
@@ -28,7 +28,6 @@ go_library(
],
importpath = "k8s.io/client-go/tools/clientcmd/api",
deps = [
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/client-go/tools/clientcmd/api/doc.go b/staging/src/k8s.io/client-go/tools/clientcmd/api/doc.go
index 93a891e954..0a081871ac 100644
--- a/staging/src/k8s.io/client-go/tools/clientcmd/api/doc.go
+++ b/staging/src/k8s.io/client-go/tools/clientcmd/api/doc.go
@@ -14,5 +14,5 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
package api
diff --git a/staging/src/k8s.io/client-go/tools/clientcmd/api/v1/doc.go b/staging/src/k8s.io/client-go/tools/clientcmd/api/v1/doc.go
index c8ede58a34..9750cf73ac 100644
--- a/staging/src/k8s.io/client-go/tools/clientcmd/api/v1/doc.go
+++ b/staging/src/k8s.io/client-go/tools/clientcmd/api/v1/doc.go
@@ -14,5 +14,5 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
package v1
diff --git a/staging/src/k8s.io/client-go/tools/clientcmd/api/v1/zz_generated.deepcopy.go b/staging/src/k8s.io/client-go/tools/clientcmd/api/v1/zz_generated.deepcopy.go
index b123a9fbe2..8d634671b0 100644
--- a/staging/src/k8s.io/client-go/tools/clientcmd/api/v1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/client-go/tools/clientcmd/api/v1/zz_generated.deepcopy.go
@@ -21,64 +21,9 @@ limitations under the License.
package v1
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*AuthInfo).DeepCopyInto(out.(*AuthInfo))
- return nil
- }, InType: reflect.TypeOf(&AuthInfo{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*AuthProviderConfig).DeepCopyInto(out.(*AuthProviderConfig))
- return nil
- }, InType: reflect.TypeOf(&AuthProviderConfig{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Cluster).DeepCopyInto(out.(*Cluster))
- return nil
- }, InType: reflect.TypeOf(&Cluster{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Config).DeepCopyInto(out.(*Config))
- return nil
- }, InType: reflect.TypeOf(&Config{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Context).DeepCopyInto(out.(*Context))
- return nil
- }, InType: reflect.TypeOf(&Context{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NamedAuthInfo).DeepCopyInto(out.(*NamedAuthInfo))
- return nil
- }, InType: reflect.TypeOf(&NamedAuthInfo{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NamedCluster).DeepCopyInto(out.(*NamedCluster))
- return nil
- }, InType: reflect.TypeOf(&NamedCluster{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NamedContext).DeepCopyInto(out.(*NamedContext))
- return nil
- }, InType: reflect.TypeOf(&NamedContext{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NamedExtension).DeepCopyInto(out.(*NamedExtension))
- return nil
- }, InType: reflect.TypeOf(&NamedExtension{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Preferences).DeepCopyInto(out.(*Preferences))
- return nil
- }, InType: reflect.TypeOf(&Preferences{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *AuthInfo) DeepCopyInto(out *AuthInfo) {
*out = *in
diff --git a/staging/src/k8s.io/client-go/tools/clientcmd/api/zz_generated.deepcopy.go b/staging/src/k8s.io/client-go/tools/clientcmd/api/zz_generated.deepcopy.go
index b787f0ddf8..51668f05bb 100644
--- a/staging/src/k8s.io/client-go/tools/clientcmd/api/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/client-go/tools/clientcmd/api/zz_generated.deepcopy.go
@@ -21,48 +21,9 @@ limitations under the License.
package api
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*AuthInfo).DeepCopyInto(out.(*AuthInfo))
- return nil
- }, InType: reflect.TypeOf(&AuthInfo{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*AuthProviderConfig).DeepCopyInto(out.(*AuthProviderConfig))
- return nil
- }, InType: reflect.TypeOf(&AuthProviderConfig{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Cluster).DeepCopyInto(out.(*Cluster))
- return nil
- }, InType: reflect.TypeOf(&Cluster{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Config).DeepCopyInto(out.(*Config))
- return nil
- }, InType: reflect.TypeOf(&Config{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Context).DeepCopyInto(out.(*Context))
- return nil
- }, InType: reflect.TypeOf(&Context{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Preferences).DeepCopyInto(out.(*Preferences))
- return nil
- }, InType: reflect.TypeOf(&Preferences{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *AuthInfo) DeepCopyInto(out *AuthInfo) {
*out = *in
diff --git a/staging/src/k8s.io/code-generator/Godeps/Godeps.json b/staging/src/k8s.io/code-generator/Godeps/Godeps.json
index a1e7bf327f..239636cbe3 100644
--- a/staging/src/k8s.io/code-generator/Godeps/Godeps.json
+++ b/staging/src/k8s.io/code-generator/Godeps/Godeps.json
@@ -212,43 +212,43 @@
},
{
"ImportPath": "k8s.io/gengo/args",
- "Rev": "70ad626ed2d7a483d89d2c4c56364d60b48ee8fc"
+ "Rev": "b58fc7edb82e0c6ffc9b8aef61813c7261b785d4"
},
{
"ImportPath": "k8s.io/gengo/examples/deepcopy-gen/generators",
- "Rev": "70ad626ed2d7a483d89d2c4c56364d60b48ee8fc"
+ "Rev": "b58fc7edb82e0c6ffc9b8aef61813c7261b785d4"
},
{
"ImportPath": "k8s.io/gengo/examples/defaulter-gen/generators",
- "Rev": "70ad626ed2d7a483d89d2c4c56364d60b48ee8fc"
+ "Rev": "b58fc7edb82e0c6ffc9b8aef61813c7261b785d4"
},
{
"ImportPath": "k8s.io/gengo/examples/import-boss/generators",
- "Rev": "70ad626ed2d7a483d89d2c4c56364d60b48ee8fc"
+ "Rev": "b58fc7edb82e0c6ffc9b8aef61813c7261b785d4"
},
{
"ImportPath": "k8s.io/gengo/examples/set-gen/generators",
- "Rev": "70ad626ed2d7a483d89d2c4c56364d60b48ee8fc"
+ "Rev": "b58fc7edb82e0c6ffc9b8aef61813c7261b785d4"
},
{
"ImportPath": "k8s.io/gengo/examples/set-gen/sets",
- "Rev": "70ad626ed2d7a483d89d2c4c56364d60b48ee8fc"
+ "Rev": "b58fc7edb82e0c6ffc9b8aef61813c7261b785d4"
},
{
"ImportPath": "k8s.io/gengo/generator",
- "Rev": "70ad626ed2d7a483d89d2c4c56364d60b48ee8fc"
+ "Rev": "b58fc7edb82e0c6ffc9b8aef61813c7261b785d4"
},
{
"ImportPath": "k8s.io/gengo/namer",
- "Rev": "70ad626ed2d7a483d89d2c4c56364d60b48ee8fc"
+ "Rev": "b58fc7edb82e0c6ffc9b8aef61813c7261b785d4"
},
{
"ImportPath": "k8s.io/gengo/parser",
- "Rev": "70ad626ed2d7a483d89d2c4c56364d60b48ee8fc"
+ "Rev": "b58fc7edb82e0c6ffc9b8aef61813c7261b785d4"
},
{
"ImportPath": "k8s.io/gengo/types",
- "Rev": "70ad626ed2d7a483d89d2c4c56364d60b48ee8fc"
+ "Rev": "b58fc7edb82e0c6ffc9b8aef61813c7261b785d4"
},
{
"ImportPath": "k8s.io/kube-openapi/pkg/common",
diff --git a/staging/src/k8s.io/code-generator/_examples/apiserver/apis/example/doc.go b/staging/src/k8s.io/code-generator/_examples/apiserver/apis/example/doc.go
index 4f75bbc964..b221d7eb49 100644
--- a/staging/src/k8s.io/code-generator/_examples/apiserver/apis/example/doc.go
+++ b/staging/src/k8s.io/code-generator/_examples/apiserver/apis/example/doc.go
@@ -14,6 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +groupName=example.apiserver.code-generator.k8s.io
package example // import "k8s.io/code-generator/_examples/apiserver/apis/example"
diff --git a/staging/src/k8s.io/code-generator/_examples/apiserver/apis/example/v1/doc.go b/staging/src/k8s.io/code-generator/_examples/apiserver/apis/example/v1/doc.go
index a93041949e..242d3904dd 100644
--- a/staging/src/k8s.io/code-generator/_examples/apiserver/apis/example/v1/doc.go
+++ b/staging/src/k8s.io/code-generator/_examples/apiserver/apis/example/v1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:conversion-gen=k8s.io/code-generator/_examples/apiserver/apis/example
// +groupName=example.apiserver.code-generator.k8s.io
package v1
diff --git a/staging/src/k8s.io/code-generator/_examples/apiserver/apis/example/v1/zz_generated.deepcopy.go b/staging/src/k8s.io/code-generator/_examples/apiserver/apis/example/v1/zz_generated.deepcopy.go
index da6ba5e952..35ebeb2374 100644
--- a/staging/src/k8s.io/code-generator/_examples/apiserver/apis/example/v1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/code-generator/_examples/apiserver/apis/example/v1/zz_generated.deepcopy.go
@@ -21,36 +21,9 @@ limitations under the License.
package v1
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TestType).DeepCopyInto(out.(*TestType))
- return nil
- }, InType: reflect.TypeOf(&TestType{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TestTypeList).DeepCopyInto(out.(*TestTypeList))
- return nil
- }, InType: reflect.TypeOf(&TestTypeList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TestTypeStatus).DeepCopyInto(out.(*TestTypeStatus))
- return nil
- }, InType: reflect.TypeOf(&TestTypeStatus{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TestType) DeepCopyInto(out *TestType) {
*out = *in
diff --git a/staging/src/k8s.io/code-generator/_examples/apiserver/apis/example/zz_generated.deepcopy.go b/staging/src/k8s.io/code-generator/_examples/apiserver/apis/example/zz_generated.deepcopy.go
index 7a43d92ba8..c1a8a02791 100644
--- a/staging/src/k8s.io/code-generator/_examples/apiserver/apis/example/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/code-generator/_examples/apiserver/apis/example/zz_generated.deepcopy.go
@@ -21,36 +21,9 @@ limitations under the License.
package example
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TestType).DeepCopyInto(out.(*TestType))
- return nil
- }, InType: reflect.TypeOf(&TestType{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TestTypeList).DeepCopyInto(out.(*TestTypeList))
- return nil
- }, InType: reflect.TypeOf(&TestTypeList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TestTypeStatus).DeepCopyInto(out.(*TestTypeStatus))
- return nil
- }, InType: reflect.TypeOf(&TestTypeStatus{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TestType) DeepCopyInto(out *TestType) {
*out = *in
diff --git a/staging/src/k8s.io/code-generator/_examples/apiserver/informers/externalversions/example/interface.go b/staging/src/k8s.io/code-generator/_examples/apiserver/informers/externalversions/example/interface.go
index 2d0d7b3187..74626cd1e1 100644
--- a/staging/src/k8s.io/code-generator/_examples/apiserver/informers/externalversions/example/interface.go
+++ b/staging/src/k8s.io/code-generator/_examples/apiserver/informers/externalversions/example/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// V1 returns a new v1.Interface.
func (g *group) V1() v1.Interface {
- return v1.New(g.SharedInformerFactory)
+ return v1.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/staging/src/k8s.io/code-generator/_examples/apiserver/informers/externalversions/example/v1/interface.go b/staging/src/k8s.io/code-generator/_examples/apiserver/informers/externalversions/example/v1/interface.go
index 2ebac67fc1..613797aea2 100644
--- a/staging/src/k8s.io/code-generator/_examples/apiserver/informers/externalversions/example/v1/interface.go
+++ b/staging/src/k8s.io/code-generator/_examples/apiserver/informers/externalversions/example/v1/interface.go
@@ -29,15 +29,17 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// TestTypes returns a TestTypeInformer.
func (v *version) TestTypes() TestTypeInformer {
- return &testTypeInformer{factory: v.SharedInformerFactory}
+ return &testTypeInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/staging/src/k8s.io/code-generator/_examples/apiserver/informers/externalversions/example/v1/testtype.go b/staging/src/k8s.io/code-generator/_examples/apiserver/informers/externalversions/example/v1/testtype.go
index 55782d81b1..e6c7fca347 100644
--- a/staging/src/k8s.io/code-generator/_examples/apiserver/informers/externalversions/example/v1/testtype.go
+++ b/staging/src/k8s.io/code-generator/_examples/apiserver/informers/externalversions/example/v1/testtype.go
@@ -38,19 +38,34 @@ type TestTypeInformer interface {
}
type testTypeInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewTestTypeInformer constructs a new informer for TestType type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTestTypeInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredTestTypeInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredTestTypeInformer constructs a new informer for TestType type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredTestTypeInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.ExampleV1().TestTypes(namespace).List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.ExampleV1().TestTypes(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewTestTypeInformer(client versioned.Interface, namespace string, resyncPer
)
}
-func defaultTestTypeInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewTestTypeInformer(client, meta_v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *testTypeInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredTestTypeInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *testTypeInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&example_v1.TestType{}, defaultTestTypeInformer)
+ return f.factory.InformerFor(&example_v1.TestType{}, f.defaultInformer)
}
func (f *testTypeInformer) Lister() v1.TestTypeLister {
diff --git a/staging/src/k8s.io/code-generator/_examples/apiserver/informers/externalversions/factory.go b/staging/src/k8s.io/code-generator/_examples/apiserver/informers/externalversions/factory.go
index cfa88f8eac..9ff5564581 100644
--- a/staging/src/k8s.io/code-generator/_examples/apiserver/informers/externalversions/factory.go
+++ b/staging/src/k8s.io/code-generator/_examples/apiserver/informers/externalversions/factory.go
@@ -19,6 +19,7 @@ limitations under the License.
package externalversions
import (
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
schema "k8s.io/apimachinery/pkg/runtime/schema"
cache "k8s.io/client-go/tools/cache"
@@ -31,9 +32,11 @@ import (
)
type sharedInformerFactory struct {
- client versioned.Interface
- lock sync.Mutex
- defaultResync time.Duration
+ client versioned.Interface
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ lock sync.Mutex
+ defaultResync time.Duration
informers map[reflect.Type]cache.SharedIndexInformer
// startedInformers is used for tracking which informers have been started.
@@ -43,8 +46,17 @@ type sharedInformerFactory struct {
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory
func NewSharedInformerFactory(client versioned.Interface, defaultResync time.Duration) SharedInformerFactory {
+ return NewFilteredSharedInformerFactory(client, defaultResync, v1.NamespaceAll, nil)
+}
+
+// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
+// Listers obtained via this SharedInformerFactory will be subject to the same filters
+// as specified here.
+func NewFilteredSharedInformerFactory(client versioned.Interface, defaultResync time.Duration, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerFactory {
return &sharedInformerFactory{
client: client,
+ namespace: namespace,
+ tweakListOptions: tweakListOptions,
defaultResync: defaultResync,
informers: make(map[reflect.Type]cache.SharedIndexInformer),
startedInformers: make(map[reflect.Type]bool),
@@ -114,5 +126,5 @@ type SharedInformerFactory interface {
}
func (f *sharedInformerFactory) Example() example.Interface {
- return example.New(f)
+ return example.New(f, f.namespace, f.tweakListOptions)
}
diff --git a/staging/src/k8s.io/code-generator/_examples/apiserver/informers/externalversions/internalinterfaces/factory_interfaces.go b/staging/src/k8s.io/code-generator/_examples/apiserver/informers/externalversions/internalinterfaces/factory_interfaces.go
index 32b2fdd836..dd26ca972d 100644
--- a/staging/src/k8s.io/code-generator/_examples/apiserver/informers/externalversions/internalinterfaces/factory_interfaces.go
+++ b/staging/src/k8s.io/code-generator/_examples/apiserver/informers/externalversions/internalinterfaces/factory_interfaces.go
@@ -19,6 +19,7 @@ limitations under the License.
package internalinterfaces
import (
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
cache "k8s.io/client-go/tools/cache"
versioned "k8s.io/code-generator/_examples/apiserver/clientset/versioned"
@@ -32,3 +33,5 @@ type SharedInformerFactory interface {
Start(stopCh <-chan struct{})
InformerFor(obj runtime.Object, newFunc NewInformerFunc) cache.SharedIndexInformer
}
+
+type TweakListOptionsFunc func(*v1.ListOptions)
diff --git a/staging/src/k8s.io/code-generator/_examples/apiserver/informers/internalversion/example/interface.go b/staging/src/k8s.io/code-generator/_examples/apiserver/informers/internalversion/example/interface.go
index 5fd9bf09ad..646527b5a0 100644
--- a/staging/src/k8s.io/code-generator/_examples/apiserver/informers/internalversion/example/interface.go
+++ b/staging/src/k8s.io/code-generator/_examples/apiserver/informers/internalversion/example/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// InternalVersion returns a new internalversion.Interface.
func (g *group) InternalVersion() internalversion.Interface {
- return internalversion.New(g.SharedInformerFactory)
+ return internalversion.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/staging/src/k8s.io/code-generator/_examples/apiserver/informers/internalversion/example/internalversion/interface.go b/staging/src/k8s.io/code-generator/_examples/apiserver/informers/internalversion/example/internalversion/interface.go
index 44aefe0067..5fb90301ba 100644
--- a/staging/src/k8s.io/code-generator/_examples/apiserver/informers/internalversion/example/internalversion/interface.go
+++ b/staging/src/k8s.io/code-generator/_examples/apiserver/informers/internalversion/example/internalversion/interface.go
@@ -29,15 +29,17 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// TestTypes returns a TestTypeInformer.
func (v *version) TestTypes() TestTypeInformer {
- return &testTypeInformer{factory: v.SharedInformerFactory}
+ return &testTypeInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/staging/src/k8s.io/code-generator/_examples/apiserver/informers/internalversion/example/internalversion/testtype.go b/staging/src/k8s.io/code-generator/_examples/apiserver/informers/internalversion/example/internalversion/testtype.go
index 7480db526a..c25308cf8a 100644
--- a/staging/src/k8s.io/code-generator/_examples/apiserver/informers/internalversion/example/internalversion/testtype.go
+++ b/staging/src/k8s.io/code-generator/_examples/apiserver/informers/internalversion/example/internalversion/testtype.go
@@ -38,19 +38,34 @@ type TestTypeInformer interface {
}
type testTypeInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewTestTypeInformer constructs a new informer for TestType type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTestTypeInformer(client clientset_internalversion.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredTestTypeInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredTestTypeInformer constructs a new informer for TestType type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredTestTypeInformer(client clientset_internalversion.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Example().TestTypes(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Example().TestTypes(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewTestTypeInformer(client clientset_internalversion.Interface, namespace s
)
}
-func defaultTestTypeInformer(client clientset_internalversion.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewTestTypeInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *testTypeInformer) defaultInformer(client clientset_internalversion.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredTestTypeInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *testTypeInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&example.TestType{}, defaultTestTypeInformer)
+ return f.factory.InformerFor(&example.TestType{}, f.defaultInformer)
}
func (f *testTypeInformer) Lister() internalversion.TestTypeLister {
diff --git a/staging/src/k8s.io/code-generator/_examples/apiserver/informers/internalversion/factory.go b/staging/src/k8s.io/code-generator/_examples/apiserver/informers/internalversion/factory.go
index f3dc2bc5a7..3f1aab3d69 100644
--- a/staging/src/k8s.io/code-generator/_examples/apiserver/informers/internalversion/factory.go
+++ b/staging/src/k8s.io/code-generator/_examples/apiserver/informers/internalversion/factory.go
@@ -19,6 +19,7 @@ limitations under the License.
package internalversion
import (
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
schema "k8s.io/apimachinery/pkg/runtime/schema"
cache "k8s.io/client-go/tools/cache"
@@ -31,9 +32,11 @@ import (
)
type sharedInformerFactory struct {
- client internalversion.Interface
- lock sync.Mutex
- defaultResync time.Duration
+ client internalversion.Interface
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ lock sync.Mutex
+ defaultResync time.Duration
informers map[reflect.Type]cache.SharedIndexInformer
// startedInformers is used for tracking which informers have been started.
@@ -43,8 +46,17 @@ type sharedInformerFactory struct {
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory
func NewSharedInformerFactory(client internalversion.Interface, defaultResync time.Duration) SharedInformerFactory {
+ return NewFilteredSharedInformerFactory(client, defaultResync, v1.NamespaceAll, nil)
+}
+
+// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
+// Listers obtained via this SharedInformerFactory will be subject to the same filters
+// as specified here.
+func NewFilteredSharedInformerFactory(client internalversion.Interface, defaultResync time.Duration, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerFactory {
return &sharedInformerFactory{
client: client,
+ namespace: namespace,
+ tweakListOptions: tweakListOptions,
defaultResync: defaultResync,
informers: make(map[reflect.Type]cache.SharedIndexInformer),
startedInformers: make(map[reflect.Type]bool),
@@ -114,5 +126,5 @@ type SharedInformerFactory interface {
}
func (f *sharedInformerFactory) Example() example.Interface {
- return example.New(f)
+ return example.New(f, f.namespace, f.tweakListOptions)
}
diff --git a/staging/src/k8s.io/code-generator/_examples/apiserver/informers/internalversion/internalinterfaces/factory_interfaces.go b/staging/src/k8s.io/code-generator/_examples/apiserver/informers/internalversion/internalinterfaces/factory_interfaces.go
index 8548eed616..52c5ba4696 100644
--- a/staging/src/k8s.io/code-generator/_examples/apiserver/informers/internalversion/internalinterfaces/factory_interfaces.go
+++ b/staging/src/k8s.io/code-generator/_examples/apiserver/informers/internalversion/internalinterfaces/factory_interfaces.go
@@ -19,6 +19,7 @@ limitations under the License.
package internalinterfaces
import (
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
cache "k8s.io/client-go/tools/cache"
internalversion "k8s.io/code-generator/_examples/apiserver/clientset/internalversion"
@@ -32,3 +33,5 @@ type SharedInformerFactory interface {
Start(stopCh <-chan struct{})
InformerFor(obj runtime.Object, newFunc NewInformerFunc) cache.SharedIndexInformer
}
+
+type TweakListOptionsFunc func(*v1.ListOptions)
diff --git a/staging/src/k8s.io/code-generator/_examples/crd/apis/example/v1/doc.go b/staging/src/k8s.io/code-generator/_examples/crd/apis/example/v1/doc.go
index 53695eb999..08f1279fb8 100644
--- a/staging/src/k8s.io/code-generator/_examples/crd/apis/example/v1/doc.go
+++ b/staging/src/k8s.io/code-generator/_examples/crd/apis/example/v1/doc.go
@@ -14,6 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +groupName=example.crd.code-generator.k8s.io
package v1
diff --git a/staging/src/k8s.io/code-generator/_examples/crd/apis/example/v1/zz_generated.deepcopy.go b/staging/src/k8s.io/code-generator/_examples/crd/apis/example/v1/zz_generated.deepcopy.go
index da6ba5e952..35ebeb2374 100644
--- a/staging/src/k8s.io/code-generator/_examples/crd/apis/example/v1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/code-generator/_examples/crd/apis/example/v1/zz_generated.deepcopy.go
@@ -21,36 +21,9 @@ limitations under the License.
package v1
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TestType).DeepCopyInto(out.(*TestType))
- return nil
- }, InType: reflect.TypeOf(&TestType{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TestTypeList).DeepCopyInto(out.(*TestTypeList))
- return nil
- }, InType: reflect.TypeOf(&TestTypeList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TestTypeStatus).DeepCopyInto(out.(*TestTypeStatus))
- return nil
- }, InType: reflect.TypeOf(&TestTypeStatus{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TestType) DeepCopyInto(out *TestType) {
*out = *in
diff --git a/staging/src/k8s.io/code-generator/_examples/crd/apis/example2/v1/doc.go b/staging/src/k8s.io/code-generator/_examples/crd/apis/example2/v1/doc.go
index aeff774c49..b5a662c199 100644
--- a/staging/src/k8s.io/code-generator/_examples/crd/apis/example2/v1/doc.go
+++ b/staging/src/k8s.io/code-generator/_examples/crd/apis/example2/v1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +groupName=example.test2.crd.code-generator.k8s.io
// +groupGoName=SecondExample
package v1
diff --git a/staging/src/k8s.io/code-generator/_examples/crd/apis/example2/v1/zz_generated.deepcopy.go b/staging/src/k8s.io/code-generator/_examples/crd/apis/example2/v1/zz_generated.deepcopy.go
index da6ba5e952..35ebeb2374 100644
--- a/staging/src/k8s.io/code-generator/_examples/crd/apis/example2/v1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/code-generator/_examples/crd/apis/example2/v1/zz_generated.deepcopy.go
@@ -21,36 +21,9 @@ limitations under the License.
package v1
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TestType).DeepCopyInto(out.(*TestType))
- return nil
- }, InType: reflect.TypeOf(&TestType{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TestTypeList).DeepCopyInto(out.(*TestTypeList))
- return nil
- }, InType: reflect.TypeOf(&TestTypeList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*TestTypeStatus).DeepCopyInto(out.(*TestTypeStatus))
- return nil
- }, InType: reflect.TypeOf(&TestTypeStatus{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TestType) DeepCopyInto(out *TestType) {
*out = *in
diff --git a/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/example/interface.go b/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/example/interface.go
index 71c8802cd1..26d9165d27 100644
--- a/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/example/interface.go
+++ b/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/example/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// V1 returns a new v1.Interface.
func (g *group) V1() v1.Interface {
- return v1.New(g.SharedInformerFactory)
+ return v1.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/example/v1/interface.go b/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/example/v1/interface.go
index 39bc0bccf3..ff4e55ec92 100644
--- a/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/example/v1/interface.go
+++ b/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/example/v1/interface.go
@@ -29,15 +29,17 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// TestTypes returns a TestTypeInformer.
func (v *version) TestTypes() TestTypeInformer {
- return &testTypeInformer{factory: v.SharedInformerFactory}
+ return &testTypeInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/example/v1/testtype.go b/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/example/v1/testtype.go
index a745adadb9..e8e305df7e 100644
--- a/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/example/v1/testtype.go
+++ b/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/example/v1/testtype.go
@@ -38,19 +38,34 @@ type TestTypeInformer interface {
}
type testTypeInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewTestTypeInformer constructs a new informer for TestType type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTestTypeInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredTestTypeInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredTestTypeInformer constructs a new informer for TestType type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredTestTypeInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.ExampleV1().TestTypes(namespace).List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.ExampleV1().TestTypes(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewTestTypeInformer(client versioned.Interface, namespace string, resyncPer
)
}
-func defaultTestTypeInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewTestTypeInformer(client, meta_v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *testTypeInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredTestTypeInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *testTypeInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&example_v1.TestType{}, defaultTestTypeInformer)
+ return f.factory.InformerFor(&example_v1.TestType{}, f.defaultInformer)
}
func (f *testTypeInformer) Lister() v1.TestTypeLister {
diff --git a/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/example2/interface.go b/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/example2/interface.go
index 8b349db7ab..eeace7105d 100644
--- a/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/example2/interface.go
+++ b/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/example2/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// V1 returns a new v1.Interface.
func (g *group) V1() v1.Interface {
- return v1.New(g.SharedInformerFactory)
+ return v1.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/example2/v1/interface.go b/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/example2/v1/interface.go
index 39bc0bccf3..ff4e55ec92 100644
--- a/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/example2/v1/interface.go
+++ b/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/example2/v1/interface.go
@@ -29,15 +29,17 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// TestTypes returns a TestTypeInformer.
func (v *version) TestTypes() TestTypeInformer {
- return &testTypeInformer{factory: v.SharedInformerFactory}
+ return &testTypeInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/example2/v1/testtype.go b/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/example2/v1/testtype.go
index dc4c430c83..11ca2b9b2b 100644
--- a/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/example2/v1/testtype.go
+++ b/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/example2/v1/testtype.go
@@ -38,19 +38,34 @@ type TestTypeInformer interface {
}
type testTypeInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewTestTypeInformer constructs a new informer for TestType type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTestTypeInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredTestTypeInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredTestTypeInformer constructs a new informer for TestType type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredTestTypeInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.SecondExampleV1().TestTypes(namespace).List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.SecondExampleV1().TestTypes(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewTestTypeInformer(client versioned.Interface, namespace string, resyncPer
)
}
-func defaultTestTypeInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewTestTypeInformer(client, meta_v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *testTypeInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredTestTypeInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *testTypeInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&example2_v1.TestType{}, defaultTestTypeInformer)
+ return f.factory.InformerFor(&example2_v1.TestType{}, f.defaultInformer)
}
func (f *testTypeInformer) Lister() v1.TestTypeLister {
diff --git a/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/factory.go b/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/factory.go
index 36a747ada7..ff06d7c32a 100644
--- a/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/factory.go
+++ b/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/factory.go
@@ -19,6 +19,7 @@ limitations under the License.
package externalversions
import (
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
schema "k8s.io/apimachinery/pkg/runtime/schema"
cache "k8s.io/client-go/tools/cache"
@@ -32,9 +33,11 @@ import (
)
type sharedInformerFactory struct {
- client versioned.Interface
- lock sync.Mutex
- defaultResync time.Duration
+ client versioned.Interface
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ lock sync.Mutex
+ defaultResync time.Duration
informers map[reflect.Type]cache.SharedIndexInformer
// startedInformers is used for tracking which informers have been started.
@@ -44,8 +47,17 @@ type sharedInformerFactory struct {
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory
func NewSharedInformerFactory(client versioned.Interface, defaultResync time.Duration) SharedInformerFactory {
+ return NewFilteredSharedInformerFactory(client, defaultResync, v1.NamespaceAll, nil)
+}
+
+// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
+// Listers obtained via this SharedInformerFactory will be subject to the same filters
+// as specified here.
+func NewFilteredSharedInformerFactory(client versioned.Interface, defaultResync time.Duration, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerFactory {
return &sharedInformerFactory{
client: client,
+ namespace: namespace,
+ tweakListOptions: tweakListOptions,
defaultResync: defaultResync,
informers: make(map[reflect.Type]cache.SharedIndexInformer),
startedInformers: make(map[reflect.Type]bool),
@@ -116,9 +128,9 @@ type SharedInformerFactory interface {
}
func (f *sharedInformerFactory) Example() example.Interface {
- return example.New(f)
+ return example.New(f, f.namespace, f.tweakListOptions)
}
func (f *sharedInformerFactory) SecondExample() example2.Interface {
- return example2.New(f)
+ return example2.New(f, f.namespace, f.tweakListOptions)
}
diff --git a/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/internalinterfaces/factory_interfaces.go b/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/internalinterfaces/factory_interfaces.go
index 8a94fce37b..18b364af98 100644
--- a/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/internalinterfaces/factory_interfaces.go
+++ b/staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/internalinterfaces/factory_interfaces.go
@@ -19,6 +19,7 @@ limitations under the License.
package internalinterfaces
import (
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
cache "k8s.io/client-go/tools/cache"
versioned "k8s.io/code-generator/_examples/crd/clientset/versioned"
@@ -32,3 +33,5 @@ type SharedInformerFactory interface {
Start(stopCh <-chan struct{})
InformerFor(obj runtime.Object, newFunc NewInformerFunc) cache.SharedIndexInformer
}
+
+type TweakListOptionsFunc func(*v1.ListOptions)
diff --git a/staging/src/k8s.io/code-generator/cmd/client-gen/args/args.go b/staging/src/k8s.io/code-generator/cmd/client-gen/args/args.go
index 898a9adf3f..fee31d90dc 100644
--- a/staging/src/k8s.io/code-generator/cmd/client-gen/args/args.go
+++ b/staging/src/k8s.io/code-generator/cmd/client-gen/args/args.go
@@ -53,26 +53,8 @@ type CustomArgs struct {
FakeClient bool
}
-var defaultInput = []string{
- "api/",
- "admissionregistration/",
- "authentication/",
- "authorization/",
- "autoscaling/",
- "batch/",
- "certificates/",
- "extensions/",
- "rbac/",
- "storage/",
- "apps/",
- "policy/",
- "scheduling/",
- "settings/",
- "networking/",
-}
-
func (ca *CustomArgs) AddFlags(fs *pflag.FlagSet) {
- pflag.Var(NewGVPackagesValue(&ca.GroupVersionToInputPath, &ca.Groups, defaultInput), "input", "group/versions that client-gen will generate clients for. At most one version per group is allowed. Specified in the format \"group1/version1,group2/version2...\".")
+ pflag.Var(NewGVPackagesValue(&ca.GroupVersionToInputPath, &ca.Groups, nil), "input", "group/versions that client-gen will generate clients for. At most one version per group is allowed. Specified in the format \"group1/version1,group2/version2...\".")
pflag.Var(NewGVTypesValue(&ca.IncludedTypesOverrides, []string{}), "included-types-overrides", "list of group/version/type for which client should be generated. By default, client is generated for all types which have genclient in types.go. This overrides that. For each groupVersion in this list, only the types mentioned here will be included. The default check of genclient will be used for other group versions.")
pflag.StringVar(&ca.InputBasePath, "input-base", "k8s.io/kubernetes/pkg/apis", "base path to look for the api group.")
pflag.StringVarP(&ca.ClientsetName, "clientset-name", "n", "internalclientset", "the name of the generated clientset package.")
diff --git a/staging/src/k8s.io/code-generator/cmd/client-gen/args/gvpackages.go b/staging/src/k8s.io/code-generator/cmd/client-gen/args/gvpackages.go
index 52d0176be7..4ffdd32ed1 100644
--- a/staging/src/k8s.io/code-generator/cmd/client-gen/args/gvpackages.go
+++ b/staging/src/k8s.io/code-generator/cmd/client-gen/args/gvpackages.go
@@ -152,7 +152,7 @@ func parsePathGroupVersion(pgvString string) (gvPath string, gvString string) {
func groupVersionPath(gvPath string, group string, version string) (path string) {
// special case for the core group
if group == "api" {
- path = filepath.Join("../api", version)
+ path = filepath.Join("core", version)
} else {
path = filepath.Join(gvPath, group, version)
}
diff --git a/staging/src/k8s.io/code-generator/cmd/client-gen/args/gvpackages_test.go b/staging/src/k8s.io/code-generator/cmd/client-gen/args/gvpackages_test.go
index 66142ba1e8..1a88dbf32a 100644
--- a/staging/src/k8s.io/code-generator/cmd/client-gen/args/gvpackages_test.go
+++ b/staging/src/k8s.io/code-generator/cmd/client-gen/args/gvpackages_test.go
@@ -70,8 +70,8 @@ func TestGVPackageFlag(t *testing.T) {
{
args: []string{"api/v1", "api"},
expected: map[types.GroupVersion]string{
- {Group: "api", Version: "v1"}: "../api/v1",
- {Group: "api", Version: ""}: "../api",
+ {Group: "api", Version: "v1"}: "core/v1",
+ {Group: "api", Version: ""}: "core",
},
expectedGroups: []types.GroupVersions{
{PackageName: "core", Group: types.Group("api"), Versions: []types.Version{types.Version("v1"), types.Version("")}},
diff --git a/staging/src/k8s.io/code-generator/cmd/deepcopy-gen/main.go b/staging/src/k8s.io/code-generator/cmd/deepcopy-gen/main.go
index b045acaf84..75cd29b2e7 100644
--- a/staging/src/k8s.io/code-generator/cmd/deepcopy-gen/main.go
+++ b/staging/src/k8s.io/code-generator/cmd/deepcopy-gen/main.go
@@ -30,11 +30,6 @@ limitations under the License.
// one file, of the form:
// // +k8s:deepcopy-gen=package
//
-// Packages can request that the generated DeepCopy functions be registered
-// with an `init()` function call to `Scheme.AddGeneratedDeepCopyFuncs()` by
-// changing the tag to:
-// // +k8s:deepcopy-gen=package,register
-//
// DeepCopy functions can be generated for individual types, rather than the
// entire package by specifying a comment on the type definion of the form:
// // +k8s:deepcopy-gen=true
diff --git a/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/factory.go b/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/factory.go
index 593f53349a..2a91aaa9e3 100644
--- a/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/factory.go
+++ b/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/factory.go
@@ -74,19 +74,21 @@ func (g *factoryGenerator) GenerateType(c *generator.Context, t *types.Type, w i
gvNewFuncs[groupPkgName] = c.Universe.Function(types.Name{Package: path.Join(g.outputPackage, groupPkgName), Name: "New"})
}
m := map[string]interface{}{
- "cacheSharedIndexInformer": c.Universe.Type(cacheSharedIndexInformer),
- "groupVersions": g.groupVersions,
- "gvInterfaces": gvInterfaces,
- "gvNewFuncs": gvNewFuncs,
- "gvGoNames": g.gvGoNames,
- "interfacesNewInformerFunc": c.Universe.Type(types.Name{Package: g.internalInterfacesPackage, Name: "NewInformerFunc"}),
- "informerFactoryInterface": c.Universe.Type(types.Name{Package: g.internalInterfacesPackage, Name: "SharedInformerFactory"}),
- "clientSetInterface": c.Universe.Type(types.Name{Package: g.clientSetPackage, Name: "Interface"}),
- "reflectType": c.Universe.Type(reflectType),
- "runtimeObject": c.Universe.Type(runtimeObject),
- "schemaGroupVersionResource": c.Universe.Type(schemaGroupVersionResource),
- "syncMutex": c.Universe.Type(syncMutex),
- "timeDuration": c.Universe.Type(timeDuration),
+ "cacheSharedIndexInformer": c.Universe.Type(cacheSharedIndexInformer),
+ "groupVersions": g.groupVersions,
+ "gvInterfaces": gvInterfaces,
+ "gvNewFuncs": gvNewFuncs,
+ "gvGoNames": g.gvGoNames,
+ "interfacesNewInformerFunc": c.Universe.Type(types.Name{Package: g.internalInterfacesPackage, Name: "NewInformerFunc"}),
+ "interfacesTweakListOptionsFunc": c.Universe.Type(types.Name{Package: g.internalInterfacesPackage, Name: "TweakListOptionsFunc"}),
+ "informerFactoryInterface": c.Universe.Type(types.Name{Package: g.internalInterfacesPackage, Name: "SharedInformerFactory"}),
+ "clientSetInterface": c.Universe.Type(types.Name{Package: g.clientSetPackage, Name: "Interface"}),
+ "reflectType": c.Universe.Type(reflectType),
+ "runtimeObject": c.Universe.Type(runtimeObject),
+ "schemaGroupVersionResource": c.Universe.Type(schemaGroupVersionResource),
+ "syncMutex": c.Universe.Type(syncMutex),
+ "timeDuration": c.Universe.Type(timeDuration),
+ "namespaceAll": c.Universe.Type(metav1NamespaceAll),
}
sw.Do(sharedInformerFactoryStruct, m)
@@ -98,6 +100,8 @@ func (g *factoryGenerator) GenerateType(c *generator.Context, t *types.Type, w i
var sharedInformerFactoryStruct = `
type sharedInformerFactory struct {
client {{.clientSetInterface|raw}}
+ namespace string
+ tweakListOptions {{.interfacesTweakListOptionsFunc|raw}}
lock {{.syncMutex|raw}}
defaultResync {{.timeDuration|raw}}
@@ -109,8 +113,17 @@ type sharedInformerFactory struct {
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory
func NewSharedInformerFactory(client {{.clientSetInterface|raw}}, defaultResync {{.timeDuration|raw}}) SharedInformerFactory {
+ return NewFilteredSharedInformerFactory(client, defaultResync, {{.namespaceAll|raw}}, nil)
+}
+
+// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
+// Listers obtained via this SharedInformerFactory will be subject to the same filters
+// as specified here.
+func NewFilteredSharedInformerFactory(client {{.clientSetInterface|raw}}, defaultResync {{.timeDuration|raw}}, namespace string, tweakListOptions {{.interfacesTweakListOptionsFunc|raw}}) SharedInformerFactory {
return &sharedInformerFactory{
- client: client,
+ client: client,
+ namespace: namespace,
+ tweakListOptions: tweakListOptions,
defaultResync: defaultResync,
informers: make(map[{{.reflectType|raw}}]{{.cacheSharedIndexInformer|raw}}),
startedInformers: make(map[{{.reflectType|raw}}]bool),
@@ -189,7 +202,7 @@ type SharedInformerFactory interface {
{{$gvGoNames := .gvGoNames}}
{{range $groupPkgName, $group := .groupVersions}}
func (f *sharedInformerFactory) {{index $gvGoNames $groupPkgName}}() {{index $gvInterfaces $groupPkgName|raw}} {
- return {{index $gvNewFuncs $groupPkgName|raw}}(f)
+ return {{index $gvNewFuncs $groupPkgName|raw}}(f, f.namespace, f.tweakListOptions)
}
{{end}}
`
diff --git a/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/factoryinterface.go b/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/factoryinterface.go
index 011fea20b3..c781804387 100644
--- a/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/factoryinterface.go
+++ b/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/factoryinterface.go
@@ -67,6 +67,7 @@ func (g *factoryInterfaceGenerator) GenerateType(c *generator.Context, t *types.
"clientSetPackage": c.Universe.Type(types.Name{Package: g.clientSetPackage, Name: "Interface"}),
"runtimeObject": c.Universe.Type(runtimeObject),
"timeDuration": c.Universe.Type(timeDuration),
+ "v1ListOptions": c.Universe.Type(v1ListOptions),
}
sw.Do(externalSharedInformerFactoryInterface, m)
@@ -82,4 +83,6 @@ type SharedInformerFactory interface {
Start(stopCh <-chan struct{})
InformerFor(obj {{.runtimeObject|raw}}, newFunc NewInformerFunc) {{.cacheSharedIndexInformer|raw}}
}
+
+type TweakListOptionsFunc func(*{{.v1ListOptions|raw}})
`
diff --git a/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/groupinterface.go b/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/groupinterface.go
index bc6468ea57..253b79f377 100644
--- a/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/groupinterface.go
+++ b/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/groupinterface.go
@@ -79,6 +79,7 @@ func (g *groupInterfaceGenerator) GenerateType(c *generator.Context, t *types.Ty
})
}
m := map[string]interface{}{
+ "interfacesTweakListOptionsFunc": c.Universe.Type(types.Name{Package: g.internalInterfacesPackage, Name: "TweakListOptionsFunc"}),
"interfacesSharedInformerFactory": c.Universe.Type(types.Name{Package: g.internalInterfacesPackage, Name: "SharedInformerFactory"}),
"versions": versions,
}
@@ -98,18 +99,20 @@ type Interface interface {
}
type group struct {
- $.interfacesSharedInformerFactory|raw$
+ factory $.interfacesSharedInformerFactory|raw$
+ namespace string
+ tweakListOptions $.interfacesTweakListOptionsFunc|raw$
}
// New returns a new Interface.
-func New(f $.interfacesSharedInformerFactory|raw$) Interface {
- return &group{f}
+func New(f $.interfacesSharedInformerFactory|raw$, namespace string, tweakListOptions $.interfacesTweakListOptionsFunc|raw$) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
$range .versions$
// $.Name$ returns a new $.Interface|raw$.
func (g *group) $.Name$() $.Interface|raw$ {
- return $.New|raw$(g.SharedInformerFactory)
+ return $.New|raw$(g.factory, g.namespace, g.tweakListOptions)
}
$end$
`
diff --git a/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/informer.go b/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/informer.go
index 57c4c63fbf..22b09fd502 100644
--- a/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/informer.go
+++ b/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/informer.go
@@ -88,6 +88,7 @@ func (g *informerGenerator) GenerateType(c *generator.Context, t *types.Type, w
"clientSetInterface": clientSetInterface,
"group": namer.IC(g.groupGoName),
"informerFor": informerFor,
+ "interfacesTweakListOptionsFunc": c.Universe.Type(types.Name{Package: g.internalInterfacesPackage, Name: "TweakListOptionsFunc"}),
"interfacesSharedInformerFactory": c.Universe.Type(types.Name{Package: g.internalInterfacesPackage, Name: "SharedInformerFactory"}),
"listOptions": c.Universe.Type(listOptions),
"lister": c.Universe.Type(types.Name{Package: listerPackage, Name: t.Name.Name + "Lister"}),
@@ -105,6 +106,7 @@ func (g *informerGenerator) GenerateType(c *generator.Context, t *types.Type, w
sw.Do(typeInformerInterface, m)
sw.Do(typeInformerStruct, m)
sw.Do(typeInformerPublicConstructor, m)
+ sw.Do(typeFilteredInformerPublicConstructor, m)
sw.Do(typeInformerConstructor, m)
sw.Do(typeInformerInformer, m)
sw.Do(typeInformerLister, m)
@@ -124,6 +126,8 @@ type $.type|public$Informer interface {
var typeInformerStruct = `
type $.type|private$Informer struct {
factory $.interfacesSharedInformerFactory|raw$
+ tweakListOptions $.interfacesTweakListOptionsFunc|raw$
+ $if .namespaced$namespace string$end$
}
`
@@ -132,12 +136,27 @@ var typeInformerPublicConstructor = `
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func New$.type|public$Informer(client $.clientSetInterface|raw$$if .namespaced$, namespace string$end$, resyncPeriod $.timeDuration|raw$, indexers $.cacheIndexers|raw$) $.cacheSharedIndexInformer|raw$ {
+ return NewFiltered$.type|public$Informer(client$if .namespaced$, namespace$end$, resyncPeriod, indexers, nil)
+}
+`
+
+var typeFilteredInformerPublicConstructor = `
+// NewFiltered$.type|public$Informer constructs a new informer for $.type|public$ type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFiltered$.type|public$Informer(client $.clientSetInterface|raw$$if .namespaced$, namespace string$end$, resyncPeriod $.timeDuration|raw$, indexers $.cacheIndexers|raw$, tweakListOptions $.interfacesTweakListOptionsFunc|raw$) $.cacheSharedIndexInformer|raw$ {
return $.cacheNewSharedIndexInformer|raw$(
&$.cacheListWatch|raw${
ListFunc: func(options $.v1ListOptions|raw$) ($.runtimeObject|raw$, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.$.group$$.version$().$.type|publicPlural$($if .namespaced$namespace$end$).List(options)
},
WatchFunc: func(options $.v1ListOptions|raw$) ($.watchInterface|raw$, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.$.group$$.version$().$.type|publicPlural$($if .namespaced$namespace$end$).Watch(options)
},
},
@@ -149,14 +168,14 @@ func New$.type|public$Informer(client $.clientSetInterface|raw$$if .namespaced$,
`
var typeInformerConstructor = `
-func default$.type|public$Informer(client $.clientSetInterface|raw$, resyncPeriod $.timeDuration|raw$) $.cacheSharedIndexInformer|raw$ {
- return New$.type|public$Informer(client, $if .namespaced$$.namespaceAll|raw$, $end$resyncPeriod, $.cacheIndexers|raw${$.cacheNamespaceIndex|raw$: $.cacheMetaNamespaceIndexFunc|raw$})
+func (f *$.type|private$Informer) defaultInformer(client $.clientSetInterface|raw$, resyncPeriod $.timeDuration|raw$) $.cacheSharedIndexInformer|raw$ {
+ return NewFiltered$.type|public$Informer(client$if .namespaced$, f.namespace$end$, resyncPeriod, $.cacheIndexers|raw${$.cacheNamespaceIndex|raw$: $.cacheMetaNamespaceIndexFunc|raw$}, f.tweakListOptions)
}
`
var typeInformerInformer = `
func (f *$.type|private$Informer) Informer() $.cacheSharedIndexInformer|raw$ {
- return f.factory.$.informerFor$(&$.type|raw${}, default$.type|public$Informer)
+ return f.factory.$.informerFor$(&$.type|raw${}, f.defaultInformer)
}
`
diff --git a/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/types.go b/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/types.go
index 5a58dc5138..ecefb078cb 100644
--- a/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/types.go
+++ b/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/types.go
@@ -19,7 +19,7 @@ package generators
import "k8s.io/gengo/types"
var (
- apiScheme = types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "Scheme"}
+ apiScheme = types.Name{Package: "k8s.io/kubernetes/pkg/api/legacyscheme", Name: "Scheme"}
cacheGenericLister = types.Name{Package: "k8s.io/client-go/tools/cache", Name: "GenericLister"}
cacheIndexers = types.Name{Package: "k8s.io/client-go/tools/cache", Name: "Indexers"}
cacheListWatch = types.Name{Package: "k8s.io/client-go/tools/cache", Name: "ListWatch"}
@@ -28,7 +28,7 @@ var (
cacheNewGenericLister = types.Name{Package: "k8s.io/client-go/tools/cache", Name: "NewGenericLister"}
cacheNewSharedIndexInformer = types.Name{Package: "k8s.io/client-go/tools/cache", Name: "NewSharedIndexInformer"}
cacheSharedIndexInformer = types.Name{Package: "k8s.io/client-go/tools/cache", Name: "SharedIndexInformer"}
- listOptions = types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "ListOptions"}
+ listOptions = types.Name{Package: "k8s.io/kubernetes/pkg/apis/core", Name: "ListOptions"}
reflectType = types.Name{Package: "reflect", Name: "Type"}
runtimeObject = types.Name{Package: "k8s.io/apimachinery/pkg/runtime", Name: "Object"}
schemaGroupResource = types.Name{Package: "k8s.io/apimachinery/pkg/runtime/schema", Name: "GroupResource"}
diff --git a/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/versioninterface.go b/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/versioninterface.go
index 23f7286f0f..1cd27d5cdd 100644
--- a/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/versioninterface.go
+++ b/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/versioninterface.go
@@ -22,6 +22,8 @@ import (
"k8s.io/gengo/generator"
"k8s.io/gengo/namer"
"k8s.io/gengo/types"
+
+ "k8s.io/code-generator/cmd/client-gen/generators/util"
)
// versionInterfaceGenerator generates the per-version interface file.
@@ -59,11 +61,21 @@ func (g *versionInterfaceGenerator) GenerateType(c *generator.Context, t *types.
sw := generator.NewSnippetWriter(w, c, "$", "$")
m := map[string]interface{}{
+ "interfacesTweakListOptionsFunc": c.Universe.Type(types.Name{Package: g.internalInterfacesPackage, Name: "TweakListOptionsFunc"}),
"interfacesSharedInformerFactory": c.Universe.Type(types.Name{Package: g.internalInterfacesPackage, Name: "SharedInformerFactory"}),
"types": g.types,
}
sw.Do(versionTemplate, m)
+ for _, typeDef := range g.types {
+ tags, err := util.ParseClientGenTags(typeDef.SecondClosestCommentLines)
+ if err != nil {
+ return err
+ }
+ m["namespaced"] = !tags.NonNamespaced
+ m["type"] = typeDef
+ sw.Do(versionFuncTemplate, m)
+ }
return sw.Error()
}
@@ -78,18 +90,20 @@ type Interface interface {
}
type version struct {
- $.interfacesSharedInformerFactory|raw$
+ factory $.interfacesSharedInformerFactory|raw$
+ namespace string
+ tweakListOptions $.interfacesTweakListOptionsFunc|raw$
}
// New returns a new Interface.
-func New(f $.interfacesSharedInformerFactory|raw$) Interface {
- return &version{f}
+func New(f $.interfacesSharedInformerFactory|raw$, namespace string, tweakListOptions $.interfacesTweakListOptionsFunc|raw$) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
+}
+`
+
+var versionFuncTemplate = `
+// $.type|publicPlural$ returns a $.type|public$Informer.
+func (v *version) $.type|publicPlural$() $.type|public$Informer {
+ return &$.type|private$Informer{factory: v.factory$if .namespaced$, namespace: v.namespace$end$, tweakListOptions: v.tweakListOptions}
}
-
-$range .types$
-// $.|publicPlural$ returns a $.|public$Informer.
-func (v *version) $.|publicPlural$() $.|public$Informer {
- return &$.|private$Informer{factory: v.SharedInformerFactory}
-}
-$end$
`
diff --git a/staging/src/k8s.io/kube-aggregator/Godeps/Godeps.json b/staging/src/k8s.io/kube-aggregator/Godeps/Godeps.json
index 9c3b3a5090..b15737ea7d 100644
--- a/staging/src/k8s.io/kube-aggregator/Godeps/Godeps.json
+++ b/staging/src/k8s.io/kube-aggregator/Godeps/Godeps.json
@@ -794,6 +794,10 @@
"ImportPath": "k8s.io/apimachinery/pkg/util/wait",
"Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
+ {
+ "ImportPath": "k8s.io/apimachinery/pkg/util/waitgroup",
+ "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ },
{
"ImportPath": "k8s.io/apimachinery/pkg/util/yaml",
"Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
diff --git a/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/BUILD b/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/BUILD
index 190f07b980..6fa710dab9 100644
--- a/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/BUILD
+++ b/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/BUILD
@@ -17,7 +17,6 @@ go_library(
importpath = "k8s.io/kube-aggregator/pkg/apis/apiregistration",
deps = [
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/doc.go b/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/doc.go
index c090f16021..def606a7e5 100644
--- a/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/doc.go
+++ b/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// Package api is the internal version of the API.
// +groupName=apiregistration.k8s.io
diff --git a/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1/doc.go b/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1/doc.go
index 594192ffd1..d5de2002bb 100644
--- a/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1/doc.go
+++ b/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:conversion-gen=k8s.io/kube-aggregator/pkg/apis/apiregistration
// +k8s:openapi-gen=true
diff --git a/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1/zz_generated.deepcopy.go b/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1/zz_generated.deepcopy.go
index 653220a9a4..dd64fbd211 100644
--- a/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1/zz_generated.deepcopy.go
@@ -21,48 +21,9 @@ limitations under the License.
package v1beta1
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*APIService).DeepCopyInto(out.(*APIService))
- return nil
- }, InType: reflect.TypeOf(&APIService{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*APIServiceCondition).DeepCopyInto(out.(*APIServiceCondition))
- return nil
- }, InType: reflect.TypeOf(&APIServiceCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*APIServiceList).DeepCopyInto(out.(*APIServiceList))
- return nil
- }, InType: reflect.TypeOf(&APIServiceList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*APIServiceSpec).DeepCopyInto(out.(*APIServiceSpec))
- return nil
- }, InType: reflect.TypeOf(&APIServiceSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*APIServiceStatus).DeepCopyInto(out.(*APIServiceStatus))
- return nil
- }, InType: reflect.TypeOf(&APIServiceStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ServiceReference).DeepCopyInto(out.(*ServiceReference))
- return nil
- }, InType: reflect.TypeOf(&ServiceReference{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *APIService) DeepCopyInto(out *APIService) {
*out = *in
diff --git a/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/zz_generated.deepcopy.go b/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/zz_generated.deepcopy.go
index 30958a6d67..ee9db9426e 100644
--- a/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/zz_generated.deepcopy.go
@@ -21,48 +21,9 @@ limitations under the License.
package apiregistration
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*APIService).DeepCopyInto(out.(*APIService))
- return nil
- }, InType: reflect.TypeOf(&APIService{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*APIServiceCondition).DeepCopyInto(out.(*APIServiceCondition))
- return nil
- }, InType: reflect.TypeOf(&APIServiceCondition{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*APIServiceList).DeepCopyInto(out.(*APIServiceList))
- return nil
- }, InType: reflect.TypeOf(&APIServiceList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*APIServiceSpec).DeepCopyInto(out.(*APIServiceSpec))
- return nil
- }, InType: reflect.TypeOf(&APIServiceSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*APIServiceStatus).DeepCopyInto(out.(*APIServiceStatus))
- return nil
- }, InType: reflect.TypeOf(&APIServiceStatus{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ServiceReference).DeepCopyInto(out.(*ServiceReference))
- return nil
- }, InType: reflect.TypeOf(&ServiceReference{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *APIService) DeepCopyInto(out *APIService) {
*out = *in
diff --git a/staging/src/k8s.io/kube-aggregator/pkg/apiserver/apiserver.go b/staging/src/k8s.io/kube-aggregator/pkg/apiserver/apiserver.go
index 5ed0e037b8..f9188609ea 100644
--- a/staging/src/k8s.io/kube-aggregator/pkg/apiserver/apiserver.go
+++ b/staging/src/k8s.io/kube-aggregator/pkg/apiserver/apiserver.go
@@ -221,7 +221,8 @@ func (c completedConfig) NewWithDelegate(delegationTarget genericapiserver.Deleg
return nil
})
s.GenericAPIServer.AddPostStartHook("apiservice-status-available-controller", func(context genericapiserver.PostStartHookContext) error {
- go availableController.Run(context.StopCh)
+ // if we end up blocking for long periods of time, we may need to increase threadiness.
+ go availableController.Run(5, context.StopCh)
return nil
})
diff --git a/staging/src/k8s.io/kube-aggregator/pkg/client/informers/externalversions/BUILD b/staging/src/k8s.io/kube-aggregator/pkg/client/informers/externalversions/BUILD
index c68b6cf7c9..30255265fd 100644
--- a/staging/src/k8s.io/kube-aggregator/pkg/client/informers/externalversions/BUILD
+++ b/staging/src/k8s.io/kube-aggregator/pkg/client/informers/externalversions/BUILD
@@ -13,6 +13,7 @@ go_library(
],
importpath = "k8s.io/kube-aggregator/pkg/client/informers/externalversions",
deps = [
+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
diff --git a/staging/src/k8s.io/kube-aggregator/pkg/client/informers/externalversions/apiregistration/interface.go b/staging/src/k8s.io/kube-aggregator/pkg/client/informers/externalversions/apiregistration/interface.go
index 43e20281fd..c0af56d358 100644
--- a/staging/src/k8s.io/kube-aggregator/pkg/client/informers/externalversions/apiregistration/interface.go
+++ b/staging/src/k8s.io/kube-aggregator/pkg/client/informers/externalversions/apiregistration/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// V1beta1 returns a new v1beta1.Interface.
func (g *group) V1beta1() v1beta1.Interface {
- return v1beta1.New(g.SharedInformerFactory)
+ return v1beta1.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/staging/src/k8s.io/kube-aggregator/pkg/client/informers/externalversions/apiregistration/v1beta1/apiservice.go b/staging/src/k8s.io/kube-aggregator/pkg/client/informers/externalversions/apiregistration/v1beta1/apiservice.go
index 82c63a38e2..291fdc536b 100644
--- a/staging/src/k8s.io/kube-aggregator/pkg/client/informers/externalversions/apiregistration/v1beta1/apiservice.go
+++ b/staging/src/k8s.io/kube-aggregator/pkg/client/informers/externalversions/apiregistration/v1beta1/apiservice.go
@@ -38,19 +38,33 @@ type APIServiceInformer interface {
}
type aPIServiceInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewAPIServiceInformer constructs a new informer for APIService type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewAPIServiceInformer(client clientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredAPIServiceInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredAPIServiceInformer constructs a new informer for APIService type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredAPIServiceInformer(client clientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.ApiregistrationV1beta1().APIServices().List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.ApiregistrationV1beta1().APIServices().Watch(options)
},
},
@@ -60,12 +74,12 @@ func NewAPIServiceInformer(client clientset.Interface, resyncPeriod time.Duratio
)
}
-func defaultAPIServiceInformer(client clientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewAPIServiceInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *aPIServiceInformer) defaultInformer(client clientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredAPIServiceInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *aPIServiceInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&apiregistration_v1beta1.APIService{}, defaultAPIServiceInformer)
+ return f.factory.InformerFor(&apiregistration_v1beta1.APIService{}, f.defaultInformer)
}
func (f *aPIServiceInformer) Lister() v1beta1.APIServiceLister {
diff --git a/staging/src/k8s.io/kube-aggregator/pkg/client/informers/externalversions/apiregistration/v1beta1/interface.go b/staging/src/k8s.io/kube-aggregator/pkg/client/informers/externalversions/apiregistration/v1beta1/interface.go
index 3613714944..b89a77964e 100644
--- a/staging/src/k8s.io/kube-aggregator/pkg/client/informers/externalversions/apiregistration/v1beta1/interface.go
+++ b/staging/src/k8s.io/kube-aggregator/pkg/client/informers/externalversions/apiregistration/v1beta1/interface.go
@@ -29,15 +29,17 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// APIServices returns a APIServiceInformer.
func (v *version) APIServices() APIServiceInformer {
- return &aPIServiceInformer{factory: v.SharedInformerFactory}
+ return &aPIServiceInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
diff --git a/staging/src/k8s.io/kube-aggregator/pkg/client/informers/externalversions/factory.go b/staging/src/k8s.io/kube-aggregator/pkg/client/informers/externalversions/factory.go
index 96358d9f10..1510069797 100644
--- a/staging/src/k8s.io/kube-aggregator/pkg/client/informers/externalversions/factory.go
+++ b/staging/src/k8s.io/kube-aggregator/pkg/client/informers/externalversions/factory.go
@@ -19,6 +19,7 @@ limitations under the License.
package externalversions
import (
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
schema "k8s.io/apimachinery/pkg/runtime/schema"
cache "k8s.io/client-go/tools/cache"
@@ -31,9 +32,11 @@ import (
)
type sharedInformerFactory struct {
- client clientset.Interface
- lock sync.Mutex
- defaultResync time.Duration
+ client clientset.Interface
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ lock sync.Mutex
+ defaultResync time.Duration
informers map[reflect.Type]cache.SharedIndexInformer
// startedInformers is used for tracking which informers have been started.
@@ -43,8 +46,17 @@ type sharedInformerFactory struct {
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory
func NewSharedInformerFactory(client clientset.Interface, defaultResync time.Duration) SharedInformerFactory {
+ return NewFilteredSharedInformerFactory(client, defaultResync, v1.NamespaceAll, nil)
+}
+
+// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
+// Listers obtained via this SharedInformerFactory will be subject to the same filters
+// as specified here.
+func NewFilteredSharedInformerFactory(client clientset.Interface, defaultResync time.Duration, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerFactory {
return &sharedInformerFactory{
client: client,
+ namespace: namespace,
+ tweakListOptions: tweakListOptions,
defaultResync: defaultResync,
informers: make(map[reflect.Type]cache.SharedIndexInformer),
startedInformers: make(map[reflect.Type]bool),
@@ -114,5 +126,5 @@ type SharedInformerFactory interface {
}
func (f *sharedInformerFactory) Apiregistration() apiregistration.Interface {
- return apiregistration.New(f)
+ return apiregistration.New(f, f.namespace, f.tweakListOptions)
}
diff --git a/staging/src/k8s.io/kube-aggregator/pkg/client/informers/externalversions/internalinterfaces/BUILD b/staging/src/k8s.io/kube-aggregator/pkg/client/informers/externalversions/internalinterfaces/BUILD
index c82030c440..be0d4d3306 100644
--- a/staging/src/k8s.io/kube-aggregator/pkg/client/informers/externalversions/internalinterfaces/BUILD
+++ b/staging/src/k8s.io/kube-aggregator/pkg/client/informers/externalversions/internalinterfaces/BUILD
@@ -10,6 +10,7 @@ go_library(
srcs = ["factory_interfaces.go"],
importpath = "k8s.io/kube-aggregator/pkg/client/informers/externalversions/internalinterfaces",
deps = [
+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
"//vendor/k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset:go_default_library",
diff --git a/staging/src/k8s.io/kube-aggregator/pkg/client/informers/externalversions/internalinterfaces/factory_interfaces.go b/staging/src/k8s.io/kube-aggregator/pkg/client/informers/externalversions/internalinterfaces/factory_interfaces.go
index 5b83ed72ab..6697055503 100644
--- a/staging/src/k8s.io/kube-aggregator/pkg/client/informers/externalversions/internalinterfaces/factory_interfaces.go
+++ b/staging/src/k8s.io/kube-aggregator/pkg/client/informers/externalversions/internalinterfaces/factory_interfaces.go
@@ -19,6 +19,7 @@ limitations under the License.
package internalinterfaces
import (
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
cache "k8s.io/client-go/tools/cache"
clientset "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset"
@@ -32,3 +33,5 @@ type SharedInformerFactory interface {
Start(stopCh <-chan struct{})
InformerFor(obj runtime.Object, newFunc NewInformerFunc) cache.SharedIndexInformer
}
+
+type TweakListOptionsFunc func(*v1.ListOptions)
diff --git a/staging/src/k8s.io/kube-aggregator/pkg/client/informers/internalversion/BUILD b/staging/src/k8s.io/kube-aggregator/pkg/client/informers/internalversion/BUILD
index e2fa5d7525..6ac03efea3 100644
--- a/staging/src/k8s.io/kube-aggregator/pkg/client/informers/internalversion/BUILD
+++ b/staging/src/k8s.io/kube-aggregator/pkg/client/informers/internalversion/BUILD
@@ -13,6 +13,7 @@ go_library(
],
importpath = "k8s.io/kube-aggregator/pkg/client/informers/internalversion",
deps = [
+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
diff --git a/staging/src/k8s.io/kube-aggregator/pkg/client/informers/internalversion/apiregistration/interface.go b/staging/src/k8s.io/kube-aggregator/pkg/client/informers/internalversion/apiregistration/interface.go
index daa61f6fba..9d5c0dda9c 100644
--- a/staging/src/k8s.io/kube-aggregator/pkg/client/informers/internalversion/apiregistration/interface.go
+++ b/staging/src/k8s.io/kube-aggregator/pkg/client/informers/internalversion/apiregistration/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// InternalVersion returns a new internalversion.Interface.
func (g *group) InternalVersion() internalversion.Interface {
- return internalversion.New(g.SharedInformerFactory)
+ return internalversion.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/staging/src/k8s.io/kube-aggregator/pkg/client/informers/internalversion/apiregistration/internalversion/apiservice.go b/staging/src/k8s.io/kube-aggregator/pkg/client/informers/internalversion/apiregistration/internalversion/apiservice.go
index a6afb6a0b1..f0e0cfdebc 100644
--- a/staging/src/k8s.io/kube-aggregator/pkg/client/informers/internalversion/apiregistration/internalversion/apiservice.go
+++ b/staging/src/k8s.io/kube-aggregator/pkg/client/informers/internalversion/apiregistration/internalversion/apiservice.go
@@ -38,19 +38,33 @@ type APIServiceInformer interface {
}
type aPIServiceInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewAPIServiceInformer constructs a new informer for APIService type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewAPIServiceInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredAPIServiceInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredAPIServiceInformer constructs a new informer for APIService type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredAPIServiceInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Apiregistration().APIServices().List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Apiregistration().APIServices().Watch(options)
},
},
@@ -60,12 +74,12 @@ func NewAPIServiceInformer(client internalclientset.Interface, resyncPeriod time
)
}
-func defaultAPIServiceInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewAPIServiceInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *aPIServiceInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredAPIServiceInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *aPIServiceInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&apiregistration.APIService{}, defaultAPIServiceInformer)
+ return f.factory.InformerFor(&apiregistration.APIService{}, f.defaultInformer)
}
func (f *aPIServiceInformer) Lister() internalversion.APIServiceLister {
diff --git a/staging/src/k8s.io/kube-aggregator/pkg/client/informers/internalversion/apiregistration/internalversion/interface.go b/staging/src/k8s.io/kube-aggregator/pkg/client/informers/internalversion/apiregistration/internalversion/interface.go
index b5ee434578..a1d6f9da5e 100644
--- a/staging/src/k8s.io/kube-aggregator/pkg/client/informers/internalversion/apiregistration/internalversion/interface.go
+++ b/staging/src/k8s.io/kube-aggregator/pkg/client/informers/internalversion/apiregistration/internalversion/interface.go
@@ -29,15 +29,17 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// APIServices returns a APIServiceInformer.
func (v *version) APIServices() APIServiceInformer {
- return &aPIServiceInformer{factory: v.SharedInformerFactory}
+ return &aPIServiceInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
diff --git a/staging/src/k8s.io/kube-aggregator/pkg/client/informers/internalversion/factory.go b/staging/src/k8s.io/kube-aggregator/pkg/client/informers/internalversion/factory.go
index b59cb1f55f..141c95f35f 100644
--- a/staging/src/k8s.io/kube-aggregator/pkg/client/informers/internalversion/factory.go
+++ b/staging/src/k8s.io/kube-aggregator/pkg/client/informers/internalversion/factory.go
@@ -19,6 +19,7 @@ limitations under the License.
package internalversion
import (
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
schema "k8s.io/apimachinery/pkg/runtime/schema"
cache "k8s.io/client-go/tools/cache"
@@ -31,9 +32,11 @@ import (
)
type sharedInformerFactory struct {
- client internalclientset.Interface
- lock sync.Mutex
- defaultResync time.Duration
+ client internalclientset.Interface
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ lock sync.Mutex
+ defaultResync time.Duration
informers map[reflect.Type]cache.SharedIndexInformer
// startedInformers is used for tracking which informers have been started.
@@ -43,8 +46,17 @@ type sharedInformerFactory struct {
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory
func NewSharedInformerFactory(client internalclientset.Interface, defaultResync time.Duration) SharedInformerFactory {
+ return NewFilteredSharedInformerFactory(client, defaultResync, v1.NamespaceAll, nil)
+}
+
+// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
+// Listers obtained via this SharedInformerFactory will be subject to the same filters
+// as specified here.
+func NewFilteredSharedInformerFactory(client internalclientset.Interface, defaultResync time.Duration, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerFactory {
return &sharedInformerFactory{
client: client,
+ namespace: namespace,
+ tweakListOptions: tweakListOptions,
defaultResync: defaultResync,
informers: make(map[reflect.Type]cache.SharedIndexInformer),
startedInformers: make(map[reflect.Type]bool),
@@ -114,5 +126,5 @@ type SharedInformerFactory interface {
}
func (f *sharedInformerFactory) Apiregistration() apiregistration.Interface {
- return apiregistration.New(f)
+ return apiregistration.New(f, f.namespace, f.tweakListOptions)
}
diff --git a/staging/src/k8s.io/kube-aggregator/pkg/client/informers/internalversion/internalinterfaces/BUILD b/staging/src/k8s.io/kube-aggregator/pkg/client/informers/internalversion/internalinterfaces/BUILD
index 2badfa48e0..93102c5273 100644
--- a/staging/src/k8s.io/kube-aggregator/pkg/client/informers/internalversion/internalinterfaces/BUILD
+++ b/staging/src/k8s.io/kube-aggregator/pkg/client/informers/internalversion/internalinterfaces/BUILD
@@ -10,6 +10,7 @@ go_library(
srcs = ["factory_interfaces.go"],
importpath = "k8s.io/kube-aggregator/pkg/client/informers/internalversion/internalinterfaces",
deps = [
+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
"//vendor/k8s.io/kube-aggregator/pkg/client/clientset_generated/internalclientset:go_default_library",
diff --git a/staging/src/k8s.io/kube-aggregator/pkg/client/informers/internalversion/internalinterfaces/factory_interfaces.go b/staging/src/k8s.io/kube-aggregator/pkg/client/informers/internalversion/internalinterfaces/factory_interfaces.go
index b07867e1ce..9cbdb8008e 100644
--- a/staging/src/k8s.io/kube-aggregator/pkg/client/informers/internalversion/internalinterfaces/factory_interfaces.go
+++ b/staging/src/k8s.io/kube-aggregator/pkg/client/informers/internalversion/internalinterfaces/factory_interfaces.go
@@ -19,6 +19,7 @@ limitations under the License.
package internalinterfaces
import (
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
cache "k8s.io/client-go/tools/cache"
internalclientset "k8s.io/kube-aggregator/pkg/client/clientset_generated/internalclientset"
@@ -32,3 +33,5 @@ type SharedInformerFactory interface {
Start(stopCh <-chan struct{})
InformerFor(obj runtime.Object, newFunc NewInformerFunc) cache.SharedIndexInformer
}
+
+type TweakListOptionsFunc func(*v1.ListOptions)
diff --git a/staging/src/k8s.io/kube-aggregator/pkg/controllers/status/available_controller.go b/staging/src/k8s.io/kube-aggregator/pkg/controllers/status/available_controller.go
index 76c566f683..a9bbe08a1f 100644
--- a/staging/src/k8s.io/kube-aggregator/pkg/controllers/status/available_controller.go
+++ b/staging/src/k8s.io/kube-aggregator/pkg/controllers/status/available_controller.go
@@ -62,7 +62,7 @@ type AvailableConditionController struct {
endpointsLister v1listers.EndpointsLister
endpointsSynced cache.InformerSynced
- proxyTransport *http.Transport
+ discoveryClient *http.Client
serviceResolver ServiceResolver
// To allow injection for testing.
@@ -87,16 +87,35 @@ func NewAvailableConditionController(
servicesSynced: serviceInformer.Informer().HasSynced,
endpointsLister: endpointsInformer.Lister(),
endpointsSynced: endpointsInformer.Informer().HasSynced,
- proxyTransport: proxyTransport,
serviceResolver: serviceResolver,
queue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "AvailableConditionController"),
}
- apiServiceInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
- AddFunc: c.addAPIService,
- UpdateFunc: c.updateAPIService,
- DeleteFunc: c.deleteAPIService,
- })
+ // construct an http client that will ignore TLS verification (if someone owns the network and messes with your status
+ // that's not so bad) and sets a very short timeout.
+ discoveryClient := &http.Client{
+ Transport: &http.Transport{
+ TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
+ },
+ // the request should happen quickly.
+ Timeout: 5 * time.Second,
+ }
+ if proxyTransport != nil {
+ discoveryClient.Transport = proxyTransport
+ }
+ c.discoveryClient = discoveryClient
+
+ // resync on this one because it is low cardinality and rechecking the actual discovery
+ // allows us to detect health in a more timely fashion when network connectivity to
+ // nodes is snipped, but the network still attempts to route there. See
+ // https://github.com/openshift/origin/issues/17159#issuecomment-341798063
+ apiServiceInformer.Informer().AddEventHandlerWithResyncPeriod(
+ cache.ResourceEventHandlerFuncs{
+ AddFunc: c.addAPIService,
+ UpdateFunc: c.updateAPIService,
+ DeleteFunc: c.deleteAPIService,
+ },
+ 30*time.Second)
serviceInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
AddFunc: c.addService,
@@ -195,22 +214,10 @@ func (c *AvailableConditionController) sync(key string) error {
if err != nil {
return err
}
- // construct an http client that will ignore TLS verification (if someone owns the network and messes with your status
- // that's not so bad) and sets a very short timeout.
- httpClient := &http.Client{
- Transport: &http.Transport{
- TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
- },
- // the request should happen quickly.
- Timeout: 5 * time.Second,
- }
- if c.proxyTransport != nil {
- httpClient.Transport = c.proxyTransport
- }
errCh := make(chan error)
go func() {
- resp, err := httpClient.Get(discoveryURL.String())
+ resp, err := c.discoveryClient.Get(discoveryURL.String())
if resp != nil {
resp.Body.Close()
}
@@ -248,7 +255,7 @@ func (c *AvailableConditionController) sync(key string) error {
return err
}
-func (c *AvailableConditionController) Run(stopCh <-chan struct{}) {
+func (c *AvailableConditionController) Run(threadiness int, stopCh <-chan struct{}) {
defer utilruntime.HandleCrash()
defer c.queue.ShutDown()
@@ -259,9 +266,9 @@ func (c *AvailableConditionController) Run(stopCh <-chan struct{}) {
return
}
- // only start one worker thread since its a slow moving API and the aggregation server adding bits
- // aren't threadsafe
- go wait.Until(c.runWorker, time.Second, stopCh)
+ for i := 0; i < threadiness; i++ {
+ go wait.Until(c.runWorker, time.Second, stopCh)
+ }
<-stopCh
}
diff --git a/staging/src/k8s.io/metrics/pkg/apis/custom_metrics/BUILD b/staging/src/k8s.io/metrics/pkg/apis/custom_metrics/BUILD
index b15913ae6d..93225be653 100644
--- a/staging/src/k8s.io/metrics/pkg/apis/custom_metrics/BUILD
+++ b/staging/src/k8s.io/metrics/pkg/apis/custom_metrics/BUILD
@@ -17,7 +17,6 @@ go_library(
deps = [
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
diff --git a/staging/src/k8s.io/metrics/pkg/apis/custom_metrics/doc.go b/staging/src/k8s.io/metrics/pkg/apis/custom_metrics/doc.go
index 083943d1c7..73997cac16 100644
--- a/staging/src/k8s.io/metrics/pkg/apis/custom_metrics/doc.go
+++ b/staging/src/k8s.io/metrics/pkg/apis/custom_metrics/doc.go
@@ -14,6 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +groupName=custom.metrics.k8s.io
package custom_metrics
diff --git a/staging/src/k8s.io/metrics/pkg/apis/custom_metrics/v1beta1/doc.go b/staging/src/k8s.io/metrics/pkg/apis/custom_metrics/v1beta1/doc.go
index b20dfa7971..57c08a2162 100644
--- a/staging/src/k8s.io/metrics/pkg/apis/custom_metrics/v1beta1/doc.go
+++ b/staging/src/k8s.io/metrics/pkg/apis/custom_metrics/v1beta1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:conversion-gen=k8s.io/metrics/pkg/apis/custom_metrics
// +k8s:openapi-gen=true
diff --git a/staging/src/k8s.io/metrics/pkg/apis/custom_metrics/v1beta1/zz_generated.deepcopy.go b/staging/src/k8s.io/metrics/pkg/apis/custom_metrics/v1beta1/zz_generated.deepcopy.go
index 5b78005256..615905874c 100644
--- a/staging/src/k8s.io/metrics/pkg/apis/custom_metrics/v1beta1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/metrics/pkg/apis/custom_metrics/v1beta1/zz_generated.deepcopy.go
@@ -21,32 +21,9 @@ limitations under the License.
package v1beta1
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*MetricValue).DeepCopyInto(out.(*MetricValue))
- return nil
- }, InType: reflect.TypeOf(&MetricValue{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*MetricValueList).DeepCopyInto(out.(*MetricValueList))
- return nil
- }, InType: reflect.TypeOf(&MetricValueList{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *MetricValue) DeepCopyInto(out *MetricValue) {
*out = *in
diff --git a/staging/src/k8s.io/metrics/pkg/apis/custom_metrics/zz_generated.deepcopy.go b/staging/src/k8s.io/metrics/pkg/apis/custom_metrics/zz_generated.deepcopy.go
index c61d3c4c89..546411634f 100644
--- a/staging/src/k8s.io/metrics/pkg/apis/custom_metrics/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/metrics/pkg/apis/custom_metrics/zz_generated.deepcopy.go
@@ -21,36 +21,9 @@ limitations under the License.
package custom_metrics
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*MetricValue).DeepCopyInto(out.(*MetricValue))
- return nil
- }, InType: reflect.TypeOf(&MetricValue{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*MetricValueList).DeepCopyInto(out.(*MetricValueList))
- return nil
- }, InType: reflect.TypeOf(&MetricValueList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ObjectReference).DeepCopyInto(out.(*ObjectReference))
- return nil
- }, InType: reflect.TypeOf(&ObjectReference{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *MetricValue) DeepCopyInto(out *MetricValue) {
*out = *in
diff --git a/staging/src/k8s.io/metrics/pkg/apis/metrics/BUILD b/staging/src/k8s.io/metrics/pkg/apis/metrics/BUILD
index e4c580d711..0b36e9d33d 100644
--- a/staging/src/k8s.io/metrics/pkg/apis/metrics/BUILD
+++ b/staging/src/k8s.io/metrics/pkg/apis/metrics/BUILD
@@ -17,7 +17,6 @@ go_library(
deps = [
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/metrics/pkg/apis/metrics/doc.go b/staging/src/k8s.io/metrics/pkg/apis/metrics/doc.go
index 548724f38d..9437a13f8a 100644
--- a/staging/src/k8s.io/metrics/pkg/apis/metrics/doc.go
+++ b/staging/src/k8s.io/metrics/pkg/apis/metrics/doc.go
@@ -14,6 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +groupName=metrics.k8s.io
package metrics
diff --git a/staging/src/k8s.io/metrics/pkg/apis/metrics/v1alpha1/doc.go b/staging/src/k8s.io/metrics/pkg/apis/metrics/v1alpha1/doc.go
index 76c2b9a7db..f870a997b3 100644
--- a/staging/src/k8s.io/metrics/pkg/apis/metrics/v1alpha1/doc.go
+++ b/staging/src/k8s.io/metrics/pkg/apis/metrics/v1alpha1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:conversion-gen=k8s.io/metrics/pkg/apis/metrics
// +k8s:openapi-gen=true
diff --git a/staging/src/k8s.io/metrics/pkg/apis/metrics/v1alpha1/zz_generated.deepcopy.go b/staging/src/k8s.io/metrics/pkg/apis/metrics/v1alpha1/zz_generated.deepcopy.go
index e4223daa49..d15c9ce8e4 100644
--- a/staging/src/k8s.io/metrics/pkg/apis/metrics/v1alpha1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/metrics/pkg/apis/metrics/v1alpha1/zz_generated.deepcopy.go
@@ -22,44 +22,9 @@ package v1alpha1
import (
v1 "k8s.io/api/core/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ContainerMetrics).DeepCopyInto(out.(*ContainerMetrics))
- return nil
- }, InType: reflect.TypeOf(&ContainerMetrics{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeMetrics).DeepCopyInto(out.(*NodeMetrics))
- return nil
- }, InType: reflect.TypeOf(&NodeMetrics{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeMetricsList).DeepCopyInto(out.(*NodeMetricsList))
- return nil
- }, InType: reflect.TypeOf(&NodeMetricsList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodMetrics).DeepCopyInto(out.(*PodMetrics))
- return nil
- }, InType: reflect.TypeOf(&PodMetrics{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodMetricsList).DeepCopyInto(out.(*PodMetricsList))
- return nil
- }, InType: reflect.TypeOf(&PodMetricsList{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ContainerMetrics) DeepCopyInto(out *ContainerMetrics) {
*out = *in
diff --git a/staging/src/k8s.io/metrics/pkg/apis/metrics/v1beta1/doc.go b/staging/src/k8s.io/metrics/pkg/apis/metrics/v1beta1/doc.go
index ec9ac583b0..2f93e6aa8b 100644
--- a/staging/src/k8s.io/metrics/pkg/apis/metrics/v1beta1/doc.go
+++ b/staging/src/k8s.io/metrics/pkg/apis/metrics/v1beta1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:conversion-gen=k8s.io/metrics/pkg/apis/metrics
// +k8s:openapi-gen=true
diff --git a/staging/src/k8s.io/metrics/pkg/apis/metrics/v1beta1/zz_generated.deepcopy.go b/staging/src/k8s.io/metrics/pkg/apis/metrics/v1beta1/zz_generated.deepcopy.go
index 3f67eeff20..2a0571a902 100644
--- a/staging/src/k8s.io/metrics/pkg/apis/metrics/v1beta1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/metrics/pkg/apis/metrics/v1beta1/zz_generated.deepcopy.go
@@ -22,44 +22,9 @@ package v1beta1
import (
v1 "k8s.io/api/core/v1"
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ContainerMetrics).DeepCopyInto(out.(*ContainerMetrics))
- return nil
- }, InType: reflect.TypeOf(&ContainerMetrics{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeMetrics).DeepCopyInto(out.(*NodeMetrics))
- return nil
- }, InType: reflect.TypeOf(&NodeMetrics{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeMetricsList).DeepCopyInto(out.(*NodeMetricsList))
- return nil
- }, InType: reflect.TypeOf(&NodeMetricsList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodMetrics).DeepCopyInto(out.(*PodMetrics))
- return nil
- }, InType: reflect.TypeOf(&PodMetrics{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodMetricsList).DeepCopyInto(out.(*PodMetricsList))
- return nil
- }, InType: reflect.TypeOf(&PodMetricsList{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ContainerMetrics) DeepCopyInto(out *ContainerMetrics) {
*out = *in
diff --git a/staging/src/k8s.io/metrics/pkg/apis/metrics/zz_generated.deepcopy.go b/staging/src/k8s.io/metrics/pkg/apis/metrics/zz_generated.deepcopy.go
index 88b5d0a88a..d551298c2d 100644
--- a/staging/src/k8s.io/metrics/pkg/apis/metrics/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/metrics/pkg/apis/metrics/zz_generated.deepcopy.go
@@ -21,44 +21,9 @@ limitations under the License.
package metrics
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*ContainerMetrics).DeepCopyInto(out.(*ContainerMetrics))
- return nil
- }, InType: reflect.TypeOf(&ContainerMetrics{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeMetrics).DeepCopyInto(out.(*NodeMetrics))
- return nil
- }, InType: reflect.TypeOf(&NodeMetrics{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*NodeMetricsList).DeepCopyInto(out.(*NodeMetricsList))
- return nil
- }, InType: reflect.TypeOf(&NodeMetricsList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodMetrics).DeepCopyInto(out.(*PodMetrics))
- return nil
- }, InType: reflect.TypeOf(&PodMetrics{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*PodMetricsList).DeepCopyInto(out.(*PodMetricsList))
- return nil
- }, InType: reflect.TypeOf(&PodMetricsList{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ContainerMetrics) DeepCopyInto(out *ContainerMetrics) {
*out = *in
diff --git a/staging/src/k8s.io/sample-apiserver/Godeps/Godeps.json b/staging/src/k8s.io/sample-apiserver/Godeps/Godeps.json
index 4f502b9288..c610fbbaf3 100644
--- a/staging/src/k8s.io/sample-apiserver/Godeps/Godeps.json
+++ b/staging/src/k8s.io/sample-apiserver/Godeps/Godeps.json
@@ -790,6 +790,10 @@
"ImportPath": "k8s.io/apimachinery/pkg/util/wait",
"Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
+ {
+ "ImportPath": "k8s.io/apimachinery/pkg/util/waitgroup",
+ "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ },
{
"ImportPath": "k8s.io/apimachinery/pkg/util/yaml",
"Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
diff --git a/staging/src/k8s.io/sample-apiserver/pkg/apis/wardle/BUILD b/staging/src/k8s.io/sample-apiserver/pkg/apis/wardle/BUILD
index ce03411706..22a0a18ed3 100644
--- a/staging/src/k8s.io/sample-apiserver/pkg/apis/wardle/BUILD
+++ b/staging/src/k8s.io/sample-apiserver/pkg/apis/wardle/BUILD
@@ -16,7 +16,6 @@ go_library(
importpath = "k8s.io/sample-apiserver/pkg/apis/wardle",
deps = [
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
diff --git a/staging/src/k8s.io/sample-apiserver/pkg/apis/wardle/doc.go b/staging/src/k8s.io/sample-apiserver/pkg/apis/wardle/doc.go
index bb99a18fb8..782c51d19c 100644
--- a/staging/src/k8s.io/sample-apiserver/pkg/apis/wardle/doc.go
+++ b/staging/src/k8s.io/sample-apiserver/pkg/apis/wardle/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// Package api is the internal version of the API.
// +groupName=wardle.k8s.io
diff --git a/staging/src/k8s.io/sample-apiserver/pkg/apis/wardle/v1alpha1/doc.go b/staging/src/k8s.io/sample-apiserver/pkg/apis/wardle/v1alpha1/doc.go
index 06c174cf11..077120851e 100644
--- a/staging/src/k8s.io/sample-apiserver/pkg/apis/wardle/v1alpha1/doc.go
+++ b/staging/src/k8s.io/sample-apiserver/pkg/apis/wardle/v1alpha1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// +k8s:conversion-gen=k8s.io/sample-apiserver/pkg/apis/wardle
// Package v1alpha1 is the v1alpha1 version of the API.
diff --git a/staging/src/k8s.io/sample-apiserver/pkg/apis/wardle/v1alpha1/zz_generated.deepcopy.go b/staging/src/k8s.io/sample-apiserver/pkg/apis/wardle/v1alpha1/zz_generated.deepcopy.go
index 049f5ef93e..7be1df5b7b 100644
--- a/staging/src/k8s.io/sample-apiserver/pkg/apis/wardle/v1alpha1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/sample-apiserver/pkg/apis/wardle/v1alpha1/zz_generated.deepcopy.go
@@ -21,48 +21,9 @@ limitations under the License.
package v1alpha1
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Fischer).DeepCopyInto(out.(*Fischer))
- return nil
- }, InType: reflect.TypeOf(&Fischer{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*FischerList).DeepCopyInto(out.(*FischerList))
- return nil
- }, InType: reflect.TypeOf(&FischerList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Flunder).DeepCopyInto(out.(*Flunder))
- return nil
- }, InType: reflect.TypeOf(&Flunder{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*FlunderList).DeepCopyInto(out.(*FlunderList))
- return nil
- }, InType: reflect.TypeOf(&FlunderList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*FlunderSpec).DeepCopyInto(out.(*FlunderSpec))
- return nil
- }, InType: reflect.TypeOf(&FlunderSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*FlunderStatus).DeepCopyInto(out.(*FlunderStatus))
- return nil
- }, InType: reflect.TypeOf(&FlunderStatus{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Fischer) DeepCopyInto(out *Fischer) {
*out = *in
diff --git a/staging/src/k8s.io/sample-apiserver/pkg/apis/wardle/zz_generated.deepcopy.go b/staging/src/k8s.io/sample-apiserver/pkg/apis/wardle/zz_generated.deepcopy.go
index 25e9f0b4ad..a9cfabd34d 100644
--- a/staging/src/k8s.io/sample-apiserver/pkg/apis/wardle/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/sample-apiserver/pkg/apis/wardle/zz_generated.deepcopy.go
@@ -21,48 +21,9 @@ limitations under the License.
package wardle
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Fischer).DeepCopyInto(out.(*Fischer))
- return nil
- }, InType: reflect.TypeOf(&Fischer{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*FischerList).DeepCopyInto(out.(*FischerList))
- return nil
- }, InType: reflect.TypeOf(&FischerList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Flunder).DeepCopyInto(out.(*Flunder))
- return nil
- }, InType: reflect.TypeOf(&Flunder{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*FlunderList).DeepCopyInto(out.(*FlunderList))
- return nil
- }, InType: reflect.TypeOf(&FlunderList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*FlunderSpec).DeepCopyInto(out.(*FlunderSpec))
- return nil
- }, InType: reflect.TypeOf(&FlunderSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*FlunderStatus).DeepCopyInto(out.(*FlunderStatus))
- return nil
- }, InType: reflect.TypeOf(&FlunderStatus{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Fischer) DeepCopyInto(out *Fischer) {
*out = *in
diff --git a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/BUILD b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/BUILD
index 1dbd7ad856..6f5750e8a6 100644
--- a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/BUILD
+++ b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/BUILD
@@ -9,6 +9,7 @@ go_library(
importpath = "k8s.io/sample-apiserver/pkg/client/informers/externalversions",
visibility = ["//visibility:public"],
deps = [
+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
diff --git a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/factory.go b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/factory.go
index 63e9ad8d22..1db54b25ec 100644
--- a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/factory.go
+++ b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/factory.go
@@ -19,6 +19,7 @@ limitations under the License.
package externalversions
import (
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
schema "k8s.io/apimachinery/pkg/runtime/schema"
cache "k8s.io/client-go/tools/cache"
@@ -31,9 +32,11 @@ import (
)
type sharedInformerFactory struct {
- client versioned.Interface
- lock sync.Mutex
- defaultResync time.Duration
+ client versioned.Interface
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ lock sync.Mutex
+ defaultResync time.Duration
informers map[reflect.Type]cache.SharedIndexInformer
// startedInformers is used for tracking which informers have been started.
@@ -43,8 +46,17 @@ type sharedInformerFactory struct {
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory
func NewSharedInformerFactory(client versioned.Interface, defaultResync time.Duration) SharedInformerFactory {
+ return NewFilteredSharedInformerFactory(client, defaultResync, v1.NamespaceAll, nil)
+}
+
+// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
+// Listers obtained via this SharedInformerFactory will be subject to the same filters
+// as specified here.
+func NewFilteredSharedInformerFactory(client versioned.Interface, defaultResync time.Duration, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerFactory {
return &sharedInformerFactory{
client: client,
+ namespace: namespace,
+ tweakListOptions: tweakListOptions,
defaultResync: defaultResync,
informers: make(map[reflect.Type]cache.SharedIndexInformer),
startedInformers: make(map[reflect.Type]bool),
@@ -114,5 +126,5 @@ type SharedInformerFactory interface {
}
func (f *sharedInformerFactory) Wardle() wardle.Interface {
- return wardle.New(f)
+ return wardle.New(f, f.namespace, f.tweakListOptions)
}
diff --git a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/internalinterfaces/BUILD b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/internalinterfaces/BUILD
index 1ea2c30963..8391860be0 100644
--- a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/internalinterfaces/BUILD
+++ b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/internalinterfaces/BUILD
@@ -6,6 +6,7 @@ go_library(
importpath = "k8s.io/sample-apiserver/pkg/client/informers/externalversions/internalinterfaces",
visibility = ["//visibility:public"],
deps = [
+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
"//vendor/k8s.io/sample-apiserver/pkg/client/clientset/versioned:go_default_library",
diff --git a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/internalinterfaces/factory_interfaces.go b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/internalinterfaces/factory_interfaces.go
index 9e5ba42902..b1ccf0b184 100644
--- a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/internalinterfaces/factory_interfaces.go
+++ b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/internalinterfaces/factory_interfaces.go
@@ -19,6 +19,7 @@ limitations under the License.
package internalinterfaces
import (
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
cache "k8s.io/client-go/tools/cache"
versioned "k8s.io/sample-apiserver/pkg/client/clientset/versioned"
@@ -32,3 +33,5 @@ type SharedInformerFactory interface {
Start(stopCh <-chan struct{})
InformerFor(obj runtime.Object, newFunc NewInformerFunc) cache.SharedIndexInformer
}
+
+type TweakListOptionsFunc func(*v1.ListOptions)
diff --git a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/wardle/interface.go b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/wardle/interface.go
index 394dc0d410..818e02ee18 100644
--- a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/wardle/interface.go
+++ b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/wardle/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// V1alpha1 returns a new v1alpha1.Interface.
func (g *group) V1alpha1() v1alpha1.Interface {
- return v1alpha1.New(g.SharedInformerFactory)
+ return v1alpha1.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/wardle/v1alpha1/fischer.go b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/wardle/v1alpha1/fischer.go
index 96de788274..bea7a84175 100644
--- a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/wardle/v1alpha1/fischer.go
+++ b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/wardle/v1alpha1/fischer.go
@@ -38,19 +38,33 @@ type FischerInformer interface {
}
type fischerInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewFischerInformer constructs a new informer for Fischer type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewFischerInformer(client versioned.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredFischerInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredFischerInformer constructs a new informer for Fischer type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredFischerInformer(client versioned.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.WardleV1alpha1().Fischers().List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.WardleV1alpha1().Fischers().Watch(options)
},
},
@@ -60,12 +74,12 @@ func NewFischerInformer(client versioned.Interface, resyncPeriod time.Duration,
)
}
-func defaultFischerInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewFischerInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *fischerInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredFischerInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *fischerInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&wardle_v1alpha1.Fischer{}, defaultFischerInformer)
+ return f.factory.InformerFor(&wardle_v1alpha1.Fischer{}, f.defaultInformer)
}
func (f *fischerInformer) Lister() v1alpha1.FischerLister {
diff --git a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/wardle/v1alpha1/flunder.go b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/wardle/v1alpha1/flunder.go
index 4a2546971f..99949638fd 100644
--- a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/wardle/v1alpha1/flunder.go
+++ b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/wardle/v1alpha1/flunder.go
@@ -38,19 +38,34 @@ type FlunderInformer interface {
}
type flunderInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewFlunderInformer constructs a new informer for Flunder type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewFlunderInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredFlunderInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredFlunderInformer constructs a new informer for Flunder type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredFlunderInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.WardleV1alpha1().Flunders(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.WardleV1alpha1().Flunders(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewFlunderInformer(client versioned.Interface, namespace string, resyncPeri
)
}
-func defaultFlunderInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewFlunderInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *flunderInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredFlunderInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *flunderInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&wardle_v1alpha1.Flunder{}, defaultFlunderInformer)
+ return f.factory.InformerFor(&wardle_v1alpha1.Flunder{}, f.defaultInformer)
}
func (f *flunderInformer) Lister() v1alpha1.FlunderLister {
diff --git a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/wardle/v1alpha1/interface.go b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/wardle/v1alpha1/interface.go
index 0feeac0209..11e117b07a 100644
--- a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/wardle/v1alpha1/interface.go
+++ b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/wardle/v1alpha1/interface.go
@@ -31,20 +31,22 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// Fischers returns a FischerInformer.
func (v *version) Fischers() FischerInformer {
- return &fischerInformer{factory: v.SharedInformerFactory}
+ return &fischerInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
// Flunders returns a FlunderInformer.
func (v *version) Flunders() FlunderInformer {
- return &flunderInformer{factory: v.SharedInformerFactory}
+ return &flunderInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/BUILD b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/BUILD
index fcdefcc1b4..3c74948669 100644
--- a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/BUILD
+++ b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/BUILD
@@ -9,6 +9,7 @@ go_library(
importpath = "k8s.io/sample-apiserver/pkg/client/informers/internalversion",
visibility = ["//visibility:public"],
deps = [
+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
diff --git a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/factory.go b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/factory.go
index f791d74906..f8ded4cb71 100644
--- a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/factory.go
+++ b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/factory.go
@@ -19,6 +19,7 @@ limitations under the License.
package internalversion
import (
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
schema "k8s.io/apimachinery/pkg/runtime/schema"
cache "k8s.io/client-go/tools/cache"
@@ -31,9 +32,11 @@ import (
)
type sharedInformerFactory struct {
- client internalversion.Interface
- lock sync.Mutex
- defaultResync time.Duration
+ client internalversion.Interface
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ lock sync.Mutex
+ defaultResync time.Duration
informers map[reflect.Type]cache.SharedIndexInformer
// startedInformers is used for tracking which informers have been started.
@@ -43,8 +46,17 @@ type sharedInformerFactory struct {
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory
func NewSharedInformerFactory(client internalversion.Interface, defaultResync time.Duration) SharedInformerFactory {
+ return NewFilteredSharedInformerFactory(client, defaultResync, v1.NamespaceAll, nil)
+}
+
+// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
+// Listers obtained via this SharedInformerFactory will be subject to the same filters
+// as specified here.
+func NewFilteredSharedInformerFactory(client internalversion.Interface, defaultResync time.Duration, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerFactory {
return &sharedInformerFactory{
client: client,
+ namespace: namespace,
+ tweakListOptions: tweakListOptions,
defaultResync: defaultResync,
informers: make(map[reflect.Type]cache.SharedIndexInformer),
startedInformers: make(map[reflect.Type]bool),
@@ -114,5 +126,5 @@ type SharedInformerFactory interface {
}
func (f *sharedInformerFactory) Wardle() wardle.Interface {
- return wardle.New(f)
+ return wardle.New(f, f.namespace, f.tweakListOptions)
}
diff --git a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/internalinterfaces/BUILD b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/internalinterfaces/BUILD
index 8cbf12bb31..e19ca37764 100644
--- a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/internalinterfaces/BUILD
+++ b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/internalinterfaces/BUILD
@@ -6,6 +6,7 @@ go_library(
importpath = "k8s.io/sample-apiserver/pkg/client/informers/internalversion/internalinterfaces",
visibility = ["//visibility:public"],
deps = [
+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
"//vendor/k8s.io/sample-apiserver/pkg/client/clientset/internalversion:go_default_library",
diff --git a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/internalinterfaces/factory_interfaces.go b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/internalinterfaces/factory_interfaces.go
index 2be840a72a..249e618b3e 100644
--- a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/internalinterfaces/factory_interfaces.go
+++ b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/internalinterfaces/factory_interfaces.go
@@ -19,6 +19,7 @@ limitations under the License.
package internalinterfaces
import (
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
cache "k8s.io/client-go/tools/cache"
internalversion "k8s.io/sample-apiserver/pkg/client/clientset/internalversion"
@@ -32,3 +33,5 @@ type SharedInformerFactory interface {
Start(stopCh <-chan struct{})
InformerFor(obj runtime.Object, newFunc NewInformerFunc) cache.SharedIndexInformer
}
+
+type TweakListOptionsFunc func(*v1.ListOptions)
diff --git a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/wardle/interface.go b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/wardle/interface.go
index d65212aff7..331860b4b5 100644
--- a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/wardle/interface.go
+++ b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/wardle/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// InternalVersion returns a new internalversion.Interface.
func (g *group) InternalVersion() internalversion.Interface {
- return internalversion.New(g.SharedInformerFactory)
+ return internalversion.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/wardle/internalversion/fischer.go b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/wardle/internalversion/fischer.go
index 13a4af1cb9..7610775857 100644
--- a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/wardle/internalversion/fischer.go
+++ b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/wardle/internalversion/fischer.go
@@ -38,19 +38,33 @@ type FischerInformer interface {
}
type fischerInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// NewFischerInformer constructs a new informer for Fischer type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewFischerInformer(client clientset_internalversion.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredFischerInformer(client, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredFischerInformer constructs a new informer for Fischer type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredFischerInformer(client clientset_internalversion.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Wardle().Fischers().List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Wardle().Fischers().Watch(options)
},
},
@@ -60,12 +74,12 @@ func NewFischerInformer(client clientset_internalversion.Interface, resyncPeriod
)
}
-func defaultFischerInformer(client clientset_internalversion.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewFischerInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *fischerInformer) defaultInformer(client clientset_internalversion.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredFischerInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *fischerInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&wardle.Fischer{}, defaultFischerInformer)
+ return f.factory.InformerFor(&wardle.Fischer{}, f.defaultInformer)
}
func (f *fischerInformer) Lister() internalversion.FischerLister {
diff --git a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/wardle/internalversion/flunder.go b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/wardle/internalversion/flunder.go
index bbabc38113..fe6324b779 100644
--- a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/wardle/internalversion/flunder.go
+++ b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/wardle/internalversion/flunder.go
@@ -38,19 +38,34 @@ type FlunderInformer interface {
}
type flunderInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewFlunderInformer constructs a new informer for Flunder type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewFlunderInformer(client clientset_internalversion.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredFlunderInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredFlunderInformer constructs a new informer for Flunder type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredFlunderInformer(client clientset_internalversion.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Wardle().Flunders(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.Wardle().Flunders(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewFlunderInformer(client clientset_internalversion.Interface, namespace st
)
}
-func defaultFlunderInformer(client clientset_internalversion.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewFlunderInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *flunderInformer) defaultInformer(client clientset_internalversion.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredFlunderInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *flunderInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&wardle.Flunder{}, defaultFlunderInformer)
+ return f.factory.InformerFor(&wardle.Flunder{}, f.defaultInformer)
}
func (f *flunderInformer) Lister() internalversion.FlunderLister {
diff --git a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/wardle/internalversion/interface.go b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/wardle/internalversion/interface.go
index 25de414f0a..bb986f03ed 100644
--- a/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/wardle/internalversion/interface.go
+++ b/staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/wardle/internalversion/interface.go
@@ -31,20 +31,22 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// Fischers returns a FischerInformer.
func (v *version) Fischers() FischerInformer {
- return &fischerInformer{factory: v.SharedInformerFactory}
+ return &fischerInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
}
// Flunders returns a FlunderInformer.
func (v *version) Flunders() FlunderInformer {
- return &flunderInformer{factory: v.SharedInformerFactory}
+ return &flunderInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/staging/src/k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1/BUILD b/staging/src/k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1/BUILD
index adc455441a..e69cb323b0 100644
--- a/staging/src/k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1/BUILD
+++ b/staging/src/k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1/BUILD
@@ -12,7 +12,6 @@ go_library(
visibility = ["//visibility:public"],
deps = [
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
- "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/sample-controller/pkg/apis/samplecontroller:go_default_library",
diff --git a/staging/src/k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1/doc.go b/staging/src/k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1/doc.go
index bf65b19df2..b445526984 100644
--- a/staging/src/k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1/doc.go
+++ b/staging/src/k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1/doc.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-// +k8s:deepcopy-gen=package,register
+// +k8s:deepcopy-gen=package
// Package v1alpha1 is the v1alpha1 version of the API.
// +groupName=samplecontroller.k8s.io
diff --git a/staging/src/k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1/zz_generated.deepcopy.go b/staging/src/k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1/zz_generated.deepcopy.go
index ca85b4011a..1022261f54 100644
--- a/staging/src/k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1/zz_generated.deepcopy.go
+++ b/staging/src/k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1/zz_generated.deepcopy.go
@@ -21,40 +21,9 @@ limitations under the License.
package v1alpha1
import (
- conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
- reflect "reflect"
)
-func init() {
- SchemeBuilder.Register(RegisterDeepCopies)
-}
-
-// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
-// to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
-func RegisterDeepCopies(scheme *runtime.Scheme) error {
- return scheme.AddGeneratedDeepCopyFuncs(
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*Foo).DeepCopyInto(out.(*Foo))
- return nil
- }, InType: reflect.TypeOf(&Foo{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*FooList).DeepCopyInto(out.(*FooList))
- return nil
- }, InType: reflect.TypeOf(&FooList{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*FooSpec).DeepCopyInto(out.(*FooSpec))
- return nil
- }, InType: reflect.TypeOf(&FooSpec{})},
- conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
- in.(*FooStatus).DeepCopyInto(out.(*FooStatus))
- return nil
- }, InType: reflect.TypeOf(&FooStatus{})},
- )
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Foo) DeepCopyInto(out *Foo) {
*out = *in
diff --git a/staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/BUILD b/staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/BUILD
index d87ae00e25..2fd617e381 100644
--- a/staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/BUILD
+++ b/staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/BUILD
@@ -9,6 +9,7 @@ go_library(
importpath = "k8s.io/sample-controller/pkg/client/informers/externalversions",
visibility = ["//visibility:public"],
deps = [
+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
diff --git a/staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/factory.go b/staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/factory.go
index 50f8326f57..64cb979356 100644
--- a/staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/factory.go
+++ b/staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/factory.go
@@ -19,6 +19,7 @@ limitations under the License.
package externalversions
import (
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
schema "k8s.io/apimachinery/pkg/runtime/schema"
cache "k8s.io/client-go/tools/cache"
@@ -31,9 +32,11 @@ import (
)
type sharedInformerFactory struct {
- client versioned.Interface
- lock sync.Mutex
- defaultResync time.Duration
+ client versioned.Interface
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ lock sync.Mutex
+ defaultResync time.Duration
informers map[reflect.Type]cache.SharedIndexInformer
// startedInformers is used for tracking which informers have been started.
@@ -43,8 +46,17 @@ type sharedInformerFactory struct {
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory
func NewSharedInformerFactory(client versioned.Interface, defaultResync time.Duration) SharedInformerFactory {
+ return NewFilteredSharedInformerFactory(client, defaultResync, v1.NamespaceAll, nil)
+}
+
+// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
+// Listers obtained via this SharedInformerFactory will be subject to the same filters
+// as specified here.
+func NewFilteredSharedInformerFactory(client versioned.Interface, defaultResync time.Duration, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerFactory {
return &sharedInformerFactory{
client: client,
+ namespace: namespace,
+ tweakListOptions: tweakListOptions,
defaultResync: defaultResync,
informers: make(map[reflect.Type]cache.SharedIndexInformer),
startedInformers: make(map[reflect.Type]bool),
@@ -114,5 +126,5 @@ type SharedInformerFactory interface {
}
func (f *sharedInformerFactory) Samplecontroller() samplecontroller.Interface {
- return samplecontroller.New(f)
+ return samplecontroller.New(f, f.namespace, f.tweakListOptions)
}
diff --git a/staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/internalinterfaces/BUILD b/staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/internalinterfaces/BUILD
index 41b1ecae7c..e923a07f95 100644
--- a/staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/internalinterfaces/BUILD
+++ b/staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/internalinterfaces/BUILD
@@ -6,6 +6,7 @@ go_library(
importpath = "k8s.io/sample-controller/pkg/client/informers/externalversions/internalinterfaces",
visibility = ["//visibility:public"],
deps = [
+ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
"//vendor/k8s.io/sample-controller/pkg/client/clientset/versioned:go_default_library",
diff --git a/staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/internalinterfaces/factory_interfaces.go b/staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/internalinterfaces/factory_interfaces.go
index e246b3f5c4..294c902a3a 100644
--- a/staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/internalinterfaces/factory_interfaces.go
+++ b/staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/internalinterfaces/factory_interfaces.go
@@ -19,6 +19,7 @@ limitations under the License.
package internalinterfaces
import (
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
cache "k8s.io/client-go/tools/cache"
versioned "k8s.io/sample-controller/pkg/client/clientset/versioned"
@@ -32,3 +33,5 @@ type SharedInformerFactory interface {
Start(stopCh <-chan struct{})
InformerFor(obj runtime.Object, newFunc NewInformerFunc) cache.SharedIndexInformer
}
+
+type TweakListOptionsFunc func(*v1.ListOptions)
diff --git a/staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/samplecontroller/interface.go b/staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/samplecontroller/interface.go
index a9d41a3e7d..e5e7d464a6 100644
--- a/staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/samplecontroller/interface.go
+++ b/staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/samplecontroller/interface.go
@@ -30,15 +30,17 @@ type Interface interface {
}
type group struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &group{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// V1alpha1 returns a new v1alpha1.Interface.
func (g *group) V1alpha1() v1alpha1.Interface {
- return v1alpha1.New(g.SharedInformerFactory)
+ return v1alpha1.New(g.factory, g.namespace, g.tweakListOptions)
}
diff --git a/staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/samplecontroller/v1alpha1/foo.go b/staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/samplecontroller/v1alpha1/foo.go
index 97207c879c..90bd8ff4ad 100644
--- a/staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/samplecontroller/v1alpha1/foo.go
+++ b/staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/samplecontroller/v1alpha1/foo.go
@@ -38,19 +38,34 @@ type FooInformer interface {
}
type fooInformer struct {
- factory internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
}
// NewFooInformer constructs a new informer for Foo type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewFooInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredFooInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredFooInformer constructs a new informer for Foo type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredFooInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.SamplecontrollerV1alpha1().Foos(namespace).List(options)
},
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
return client.SamplecontrollerV1alpha1().Foos(namespace).Watch(options)
},
},
@@ -60,12 +75,12 @@ func NewFooInformer(client versioned.Interface, namespace string, resyncPeriod t
)
}
-func defaultFooInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
- return NewFooInformer(client, v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
+func (f *fooInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredFooInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
}
func (f *fooInformer) Informer() cache.SharedIndexInformer {
- return f.factory.InformerFor(&samplecontroller_v1alpha1.Foo{}, defaultFooInformer)
+ return f.factory.InformerFor(&samplecontroller_v1alpha1.Foo{}, f.defaultInformer)
}
func (f *fooInformer) Lister() v1alpha1.FooLister {
diff --git a/staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/samplecontroller/v1alpha1/interface.go b/staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/samplecontroller/v1alpha1/interface.go
index 1d159b5df5..cea72010a7 100644
--- a/staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/samplecontroller/v1alpha1/interface.go
+++ b/staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/samplecontroller/v1alpha1/interface.go
@@ -29,15 +29,17 @@ type Interface interface {
}
type version struct {
- internalinterfaces.SharedInformerFactory
+ factory internalinterfaces.SharedInformerFactory
+ namespace string
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
}
// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory) Interface {
- return &version{f}
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+ return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// Foos returns a FooInformer.
func (v *version) Foos() FooInformer {
- return &fooInformer{factory: v.SharedInformerFactory}
+ return &fooInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
diff --git a/test/conformance/README.md b/test/conformance/README.md
new file mode 100644
index 0000000000..e086b89280
--- /dev/null
+++ b/test/conformance/README.md
@@ -0,0 +1,15 @@
+This directory contains the regression test for controlling the list of all
+conformance tests.
+
+If you add or remove a conformance test, this test will fail and you will need
+to update the golden list of tests stored in `testdata/`. Changes to that file
+require review by sig-architecture.
+
+To update the list, run
+
+```console
+$ bazel build //test/conformance:list_conformance_tests
+$ cp bazel-genfiles/test/conformance/conformance.txt test/conformance/testdata
+```
+
+Add the changed file to your PR, then send for review.
diff --git a/test/conformance/conformance_test.sh b/test/conformance/conformance_test.sh
index b0e5eb1cd8..04113c09b6 100755
--- a/test/conformance/conformance_test.sh
+++ b/test/conformance/conformance_test.sh
@@ -21,5 +21,9 @@
set -o errexit
-diff -u test/conformance/testdata/conformance.txt test/conformance/conformance.txt
-echo PASS
+if diff -u test/conformance/testdata/conformance.txt test/conformance/conformance.txt; then
+ echo PASS
+ exit 0
+fi
+echo 'See instructions in test/conformance/README.md'
+exit 1
diff --git a/test/conformance/testdata/OWNERS b/test/conformance/testdata/OWNERS
index ff12a8f545..309935c356 100644
--- a/test/conformance/testdata/OWNERS
+++ b/test/conformance/testdata/OWNERS
@@ -1,6 +1,8 @@
# To be owned by sig-architecture.
# TODO(mml): Exclude parent owners once
# https://github.com/kubernetes/test-infra/issues/5197 is implemented.
+options:
+ - no_parent_owners: true
reviewers:
- bgrant0607
- smarterclayton
diff --git a/test/e2e/apimachinery/BUILD b/test/e2e/apimachinery/BUILD
index fb03124778..2dacec44df 100644
--- a/test/e2e/apimachinery/BUILD
+++ b/test/e2e/apimachinery/BUILD
@@ -23,8 +23,8 @@ go_library(
],
importpath = "k8s.io/kubernetes/test/e2e/apimachinery",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/v1/pod:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/rbac:go_default_library",
"//pkg/printers:go_default_library",
"//pkg/util/version:go_default_library",
@@ -60,6 +60,7 @@ go_library(
"//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library",
"//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library",
"//vendor/k8s.io/client-go/discovery:go_default_library",
+ "//vendor/k8s.io/client-go/dynamic:go_default_library",
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
"//vendor/k8s.io/client-go/util/cert:go_default_library",
"//vendor/k8s.io/client-go/util/retry:go_default_library",
diff --git a/test/e2e/apimachinery/custom_resource_definition.go b/test/e2e/apimachinery/custom_resource_definition.go
index b9bf37fe40..a7c963a232 100644
--- a/test/e2e/apimachinery/custom_resource_definition.go
+++ b/test/e2e/apimachinery/custom_resource_definition.go
@@ -33,6 +33,11 @@ var _ = SIGDescribe("CustomResourceDefinition resources", func() {
f := framework.NewDefaultFramework("custom-resource-definition")
Context("Simple CustomResourceDefinition", func() {
+ /*
+ Testname: crd-creation-test
+ Description: Create a random Custom Resource Definition and make sure
+ the API returns success.
+ */
framework.ConformanceIt("creating/deleting custom resource definition objects works ", func() {
framework.SkipUnlessServerVersionGTE(crdVersion, f.ClientSet.Discovery())
diff --git a/test/e2e/apimachinery/garbage_collector.go b/test/e2e/apimachinery/garbage_collector.go
index ac1a8bb88c..25960cdb3a 100644
--- a/test/e2e/apimachinery/garbage_collector.go
+++ b/test/e2e/apimachinery/garbage_collector.go
@@ -35,7 +35,7 @@ import (
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apiserver/pkg/storage/names"
clientset "k8s.io/client-go/kubernetes"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/test/e2e/framework"
"k8s.io/kubernetes/test/e2e/framework/metrics"
diff --git a/test/e2e/apimachinery/webhook.go b/test/e2e/apimachinery/webhook.go
index 3f17210c0c..1e4e3f3490 100644
--- a/test/e2e/apimachinery/webhook.go
+++ b/test/e2e/apimachinery/webhook.go
@@ -17,6 +17,7 @@ limitations under the License.
package apimachinery
import (
+ "fmt"
"strings"
"time"
@@ -24,9 +25,17 @@ import (
"k8s.io/api/core/v1"
extensions "k8s.io/api/extensions/v1beta1"
rbacv1beta1 "k8s.io/api/rbac/v1beta1"
+ apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
+ crdclientset "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
+ "k8s.io/apiextensions-apiserver/test/integration/testserver"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
+ "k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/intstr"
+ "k8s.io/apimachinery/pkg/util/wait"
+ "k8s.io/client-go/dynamic"
+ clientset "k8s.io/client-go/kubernetes"
utilversion "k8s.io/kubernetes/pkg/util/version"
"k8s.io/kubernetes/test/e2e/framework"
@@ -36,11 +45,22 @@ import (
)
const (
- secretName = "sample-webhook-secret"
- deploymentName = "sample-webhook-deployment"
- serviceName = "e2e-test-webhook"
- roleBindingName = "webhook-auth-reader"
- webhookConfigName = "e2e-test-webhook-config"
+ secretName = "sample-webhook-secret"
+ deploymentName = "sample-webhook-deployment"
+ serviceName = "e2e-test-webhook"
+ roleBindingName = "webhook-auth-reader"
+ webhookConfigName = "e2e-test-webhook-config"
+ skipNamespaceLabelKey = "skip-webhook-admission"
+ skipNamespaceLabelValue = "yes"
+ skippedNamespaceName = "exempted-namesapce"
+ disallowedPodName = "disallowed-pod"
+ disallowedConfigMapName = "disallowed-configmap"
+ allowedConfigMapName = "allowed-configmap"
+ crdName = "e2e-test-webhook-crd"
+ crdKind = "E2e-test-webhook-crd"
+ crdWebhookConfigName = "e2e-test-webhook-config-crd"
+ crdAPIGroup = "webhook-crd-test.k8s.io"
+ crdAPIVersion = "v1"
)
var serverWebhookVersion = utilversion.MustParseSemantic("v1.8.0")
@@ -51,12 +71,12 @@ var _ = SIGDescribe("AdmissionWebhook", func() {
cleanWebhookTest(f)
})
- It("Should be able to deny pod creation", func() {
+ It("Should be able to deny pod and configmap creation", func() {
// Make sure the relevant provider supports admission webhook
framework.SkipUnlessServerVersionGTE(serverWebhookVersion, f.ClientSet.Discovery())
- framework.SkipUnlessProviderIs("gce", "gke")
+ framework.SkipUnlessProviderIs("gce", "gke", "local")
- _, err := f.ClientSet.AdmissionregistrationV1alpha1().ExternalAdmissionHookConfigurations().List(metav1.ListOptions{})
+ _, err := f.ClientSet.AdmissionregistrationV1alpha1().ValidatingWebhookConfigurations().List(metav1.ListOptions{})
if errors.IsNotFound(err) {
framework.Skipf("dynamic configuration of webhooks requires the alpha admissionregistration.k8s.io group to be enabled")
}
@@ -68,10 +88,29 @@ var _ = SIGDescribe("AdmissionWebhook", func() {
// Note that in 1.9 we will have backwards incompatible change to
// admission webhooks, so the image will be updated to 1.9 sometime in
// the development 1.9 cycle.
- deployWebhookAndService(f, "gcr.io/kubernetes-e2e-test-images/k8s-sample-admission-webhook-amd64:1.8v1", context)
+ deployWebhookAndService(f, "gcr.io/kubernetes-e2e-test-images/k8s-sample-admission-webhook-amd64:1.8v3", context)
registerWebhook(f, context)
testWebhook(f)
})
+
+ It("Should be able to deny custom resource creation", func() {
+ // Make sure the relevant provider supports admission webhook
+ framework.SkipUnlessServerVersionGTE(serverWebhookVersion, f.ClientSet.Discovery())
+ framework.SkipUnlessProviderIs("gce", "gke", "local")
+ _, err := f.ClientSet.AdmissionregistrationV1alpha1().ValidatingWebhookConfigurations().List(metav1.ListOptions{})
+ if errors.IsNotFound(err) {
+ framework.Skipf("dynamic configuration of webhooks requires the alpha admissionregistration.k8s.io group to be enabled")
+ }
+ By("Setting up server cert")
+ namespaceName := f.Namespace.Name
+ context := setupServerCert(namespaceName, serviceName)
+ createAuthReaderRoleBinding(f, namespaceName)
+ deployWebhookAndService(f, "gcr.io/kubernetes-e2e-test-images/k8s-sample-admission-webhook-amd64:1.8v3", context)
+ crdCleanup, dynamicClient := createCRD(f)
+ defer crdCleanup()
+ registerWebhookForCRD(f, context)
+ testCRDWebhook(f, dynamicClient)
+ })
})
func createAuthReaderRoleBinding(f *framework.Framework, namespace string) {
@@ -99,12 +138,15 @@ func createAuthReaderRoleBinding(f *framework.Framework, namespace string) {
},
},
})
- framework.ExpectNoError(err, "creating role binding %s:webhook to access configMap", namespace)
+ if err != nil && errors.IsAlreadyExists(err) {
+ framework.Logf("role binding %s already exists", roleBindingName)
+ } else {
+ framework.ExpectNoError(err, "creating role binding %s:webhook to access configMap", namespace)
+ }
}
func deployWebhookAndService(f *framework.Framework, image string, context *certContext) {
By("Deploying the webhook pod")
-
client := f.ClientSet
// Creating the secret that contains the webhook's cert.
@@ -212,18 +254,20 @@ func deployWebhookAndService(f *framework.Framework, image string, context *cert
framework.ExpectNoError(err, "waiting for service %s/%s have %d endpoint", namespace, serviceName, 1)
}
+func strPtr(s string) *string { return &s }
+
func registerWebhook(f *framework.Framework, context *certContext) {
client := f.ClientSet
By("Registering the webhook via the AdmissionRegistration API")
namespace := f.Namespace.Name
- _, err := client.AdmissionregistrationV1alpha1().ExternalAdmissionHookConfigurations().Create(&v1alpha1.ExternalAdmissionHookConfiguration{
+ _, err := client.AdmissionregistrationV1alpha1().ValidatingWebhookConfigurations().Create(&v1alpha1.ValidatingWebhookConfiguration{
ObjectMeta: metav1.ObjectMeta{
Name: webhookConfigName,
},
- ExternalAdmissionHooks: []v1alpha1.ExternalAdmissionHook{
+ Webhooks: []v1alpha1.Webhook{
{
- Name: "e2e-test-webhook.k8s.io",
+ Name: "deny-unwanted-pod-container-name-and-label.k8s.io",
Rules: []v1alpha1.RuleWithOperations{{
Operations: []v1alpha1.OperationType{v1alpha1.Create},
Rule: v1alpha1.Rule{
@@ -232,10 +276,40 @@ func registerWebhook(f *framework.Framework, context *certContext) {
Resources: []string{"pods"},
},
}},
- ClientConfig: v1alpha1.AdmissionHookClientConfig{
- Service: v1alpha1.ServiceReference{
+ ClientConfig: v1alpha1.WebhookClientConfig{
+ Service: &v1alpha1.ServiceReference{
Namespace: namespace,
Name: serviceName,
+ Path: strPtr("/pods"),
+ },
+ CABundle: context.signingCert,
+ },
+ },
+ {
+ Name: "deny-unwanted-configmap-data.k8s.io",
+ Rules: []v1alpha1.RuleWithOperations{{
+ Operations: []v1alpha1.OperationType{v1alpha1.Create, v1alpha1.Update},
+ Rule: v1alpha1.Rule{
+ APIGroups: []string{""},
+ APIVersions: []string{"v1"},
+ Resources: []string{"configmaps"},
+ },
+ }},
+ // The webhook skips the namespace that has label "skip-webhook-admission":"yes"
+ NamespaceSelector: &metav1.LabelSelector{
+ MatchExpressions: []metav1.LabelSelectorRequirement{
+ {
+ Key: skipNamespaceLabelKey,
+ Operator: metav1.LabelSelectorOpNotIn,
+ Values: []string{skipNamespaceLabelValue},
+ },
+ },
+ },
+ ClientConfig: v1alpha1.WebhookClientConfig{
+ Service: &v1alpha1.ServiceReference{
+ Namespace: namespace,
+ Name: serviceName,
+ Path: strPtr("/configmaps"),
},
CABundle: context.signingCert,
},
@@ -245,7 +319,7 @@ func registerWebhook(f *framework.Framework, context *certContext) {
framework.ExpectNoError(err, "registering webhook config %s with namespace %s", webhookConfigName, namespace)
// The webhook configuration is honored in 1s.
- time.Sleep(2 * time.Second)
+ time.Sleep(10 * time.Second)
}
func testWebhook(f *framework.Framework) {
@@ -255,21 +329,89 @@ func testWebhook(f *framework.Framework) {
pod := nonCompliantPod(f)
_, err := client.CoreV1().Pods(f.Namespace.Name).Create(pod)
Expect(err).NotTo(BeNil())
- expectedErrMsg := "the pod contains unwanted container name"
+ expectedErrMsg1 := "the pod contains unwanted container name"
+ if !strings.Contains(err.Error(), expectedErrMsg1) {
+ framework.Failf("expect error contains %q, got %q", expectedErrMsg1, err.Error())
+ }
+ expectedErrMsg2 := "the pod contains unwanted label"
+ if !strings.Contains(err.Error(), expectedErrMsg2) {
+ framework.Failf("expect error contains %q, got %q", expectedErrMsg2, err.Error())
+ }
+
+ By("create a configmap that should be denied by the webhook")
+ // Creating the configmap, the request should be rejected
+ configmap := nonCompliantConfigMap(f)
+ _, err = client.CoreV1().ConfigMaps(f.Namespace.Name).Create(configmap)
+ Expect(err).NotTo(BeNil())
+ expectedErrMsg := "the configmap contains unwanted key and value"
if !strings.Contains(err.Error(), expectedErrMsg) {
framework.Failf("expect error contains %q, got %q", expectedErrMsg, err.Error())
}
- // TODO: Test if webhook can detect pod with non-compliant metadata.
- // Currently metadata is lost because webhook uses the external version of
- // the objects, and the apiserver sends the internal objects.
+
+ By("create a configmap that should be admitted by the webhook")
+ // Creating the configmap, the request should be admitted
+ configmap = &v1.ConfigMap{
+ ObjectMeta: metav1.ObjectMeta{
+ Name: allowedConfigMapName,
+ },
+ Data: map[string]string{
+ "admit": "this",
+ },
+ }
+ _, err = client.CoreV1().ConfigMaps(f.Namespace.Name).Create(configmap)
+ Expect(err).NotTo(HaveOccurred())
+
+ By("update (PUT) the admitted configmap to a non-compliant one should be rejected by the webhook")
+ toNonCompliantFn := func(cm *v1.ConfigMap) {
+ if cm.Data == nil {
+ cm.Data = map[string]string{}
+ }
+ cm.Data["webhook-e2e-test"] = "webhook-disallow"
+ }
+ _, err = updateConfigMap(client, f.Namespace.Name, allowedConfigMapName, toNonCompliantFn)
+ Expect(err).NotTo(BeNil())
+ if !strings.Contains(err.Error(), expectedErrMsg) {
+ framework.Failf("expect error contains %q, got %q", expectedErrMsg, err.Error())
+ }
+
+ By("update (PATCH) the admitted configmap to a non-compliant one should be rejected by the webhook")
+ patch := nonCompliantConfigMapPatch()
+ _, err = client.CoreV1().ConfigMaps(f.Namespace.Name).Patch(allowedConfigMapName, types.StrategicMergePatchType, []byte(patch))
+ Expect(err).NotTo(BeNil())
+ if !strings.Contains(err.Error(), expectedErrMsg) {
+ framework.Failf("expect error contains %q, got %q", expectedErrMsg, err.Error())
+ }
+
+ By("create a namespace that bypass the webhook")
+ err = wait.Poll(100*time.Millisecond, 30*time.Second, func() (bool, error) {
+ _, err2 := client.CoreV1().Namespaces().Create(&v1.Namespace{ObjectMeta: metav1.ObjectMeta{
+ Name: skippedNamespaceName,
+ Labels: map[string]string{
+ skipNamespaceLabelKey: skipNamespaceLabelValue,
+ },
+ }})
+ if err2 != nil {
+ if strings.HasPrefix(err2.Error(), "object is being deleted:") {
+ return false, nil
+ }
+ return false, err2
+ }
+ return true, nil
+ })
+ framework.ExpectNoError(err, "creating namespace %q", skippedNamespaceName)
+
+ By("create a configmap that violates the webhook policy but is in a whitelisted namespace")
+ configmap = nonCompliantConfigMap(f)
+ _, err = client.CoreV1().ConfigMaps(skippedNamespaceName).Create(configmap)
+ Expect(err).To(BeNil())
}
func nonCompliantPod(f *framework.Framework) *v1.Pod {
return &v1.Pod{
ObjectMeta: metav1.ObjectMeta{
- Name: "disallowed-pod",
+ Name: disallowedPodName,
Labels: map[string]string{
- "webhook-e2e-test": "disallow",
+ "webhook-e2e-test": "webhook-disallow",
},
},
Spec: v1.PodSpec{
@@ -283,12 +425,163 @@ func nonCompliantPod(f *framework.Framework) *v1.Pod {
}
}
+func nonCompliantConfigMap(f *framework.Framework) *v1.ConfigMap {
+ return &v1.ConfigMap{
+ ObjectMeta: metav1.ObjectMeta{
+ Name: disallowedConfigMapName,
+ },
+ Data: map[string]string{
+ "webhook-e2e-test": "webhook-disallow",
+ },
+ }
+}
+
+func nonCompliantConfigMapPatch() string {
+ return fmt.Sprint(`{"data":{"webhook-e2e-test":"webhook-disallow"}}`)
+}
+
+type updateConfigMapFn func(cm *v1.ConfigMap)
+
+func updateConfigMap(c clientset.Interface, ns, name string, update updateConfigMapFn) (*v1.ConfigMap, error) {
+ var cm *v1.ConfigMap
+ pollErr := wait.PollImmediate(2*time.Second, 1*time.Minute, func() (bool, error) {
+ var err error
+ if cm, err = c.CoreV1().ConfigMaps(ns).Get(name, metav1.GetOptions{}); err != nil {
+ return false, err
+ }
+ update(cm)
+ if cm, err = c.CoreV1().ConfigMaps(ns).Update(cm); err == nil {
+ return true, nil
+ }
+ // Only retry update on conflict
+ if !errors.IsConflict(err) {
+ return false, err
+ }
+ return false, nil
+ })
+ return cm, pollErr
+}
+
func cleanWebhookTest(f *framework.Framework) {
client := f.ClientSet
- _ = client.AdmissionregistrationV1alpha1().ExternalAdmissionHookConfigurations().Delete(webhookConfigName, nil)
+ _ = client.AdmissionregistrationV1alpha1().ValidatingWebhookConfigurations().Delete(webhookConfigName, nil)
+ _ = client.AdmissionregistrationV1alpha1().ValidatingWebhookConfigurations().Delete(crdWebhookConfigName, nil)
namespaceName := f.Namespace.Name
_ = client.CoreV1().Services(namespaceName).Delete(serviceName, nil)
_ = client.ExtensionsV1beta1().Deployments(namespaceName).Delete(deploymentName, nil)
_ = client.CoreV1().Secrets(namespaceName).Delete(secretName, nil)
_ = client.RbacV1beta1().RoleBindings("kube-system").Delete(roleBindingName, nil)
+ _ = client.CoreV1().ConfigMaps(skippedNamespaceName).Delete(disallowedConfigMapName, nil)
+ _ = client.CoreV1().Namespaces().Delete(skippedNamespaceName, nil)
+}
+
+// newCRDForAdmissionWebhookTest generates a CRD
+func newCRDForAdmissionWebhookTest() *apiextensionsv1beta1.CustomResourceDefinition {
+ return &apiextensionsv1beta1.CustomResourceDefinition{
+ ObjectMeta: metav1.ObjectMeta{Name: crdName + "s." + crdAPIGroup},
+ Spec: apiextensionsv1beta1.CustomResourceDefinitionSpec{
+ Group: crdAPIGroup,
+ Version: crdAPIVersion,
+ Names: apiextensionsv1beta1.CustomResourceDefinitionNames{
+ Plural: crdName + "s",
+ Singular: crdName,
+ Kind: crdKind,
+ ListKind: crdName + "List",
+ },
+ Scope: apiextensionsv1beta1.NamespaceScoped,
+ },
+ }
+}
+
+func createCRD(f *framework.Framework) (func(), dynamic.ResourceInterface) {
+ config, err := framework.LoadConfig()
+ if err != nil {
+ framework.Failf("failed to load config: %v", err)
+ }
+
+ apiExtensionClient, err := crdclientset.NewForConfig(config)
+ if err != nil {
+ framework.Failf("failed to initialize apiExtensionClient: %v", err)
+ }
+
+ crd := newCRDForAdmissionWebhookTest()
+
+ //create CRD and waits for the resource to be recognized and available.
+ dynamicClient, err := testserver.CreateNewCustomResourceDefinitionWatchUnsafe(crd, apiExtensionClient, f.ClientPool)
+ if err != nil {
+ framework.Failf("failed to create CustomResourceDefinition: %v", err)
+ }
+
+ resourceClient := dynamicClient.Resource(&metav1.APIResource{
+ Name: crd.Spec.Names.Plural,
+ Namespaced: true,
+ }, f.Namespace.Name)
+
+ return func() {
+ err = testserver.DeleteCustomResourceDefinition(crd, apiExtensionClient)
+ if err != nil {
+ framework.Failf("failed to delete CustomResourceDefinition: %v", err)
+ }
+ }, resourceClient
+}
+
+func registerWebhookForCRD(f *framework.Framework, context *certContext) {
+ client := f.ClientSet
+ By("Registering the crd webhook via the AdmissionRegistration API")
+
+ namespace := f.Namespace.Name
+ _, err := client.AdmissionregistrationV1alpha1().ValidatingWebhookConfigurations().Create(&v1alpha1.ValidatingWebhookConfiguration{
+ ObjectMeta: metav1.ObjectMeta{
+ Name: crdWebhookConfigName,
+ },
+ Webhooks: []v1alpha1.Webhook{
+ {
+ Name: "deny-unwanted-crd-data.k8s.io",
+ Rules: []v1alpha1.RuleWithOperations{{
+ Operations: []v1alpha1.OperationType{v1alpha1.Create},
+ Rule: v1alpha1.Rule{
+ APIGroups: []string{crdAPIGroup},
+ APIVersions: []string{crdAPIVersion},
+ Resources: []string{crdName + "s"},
+ },
+ }},
+ ClientConfig: v1alpha1.WebhookClientConfig{
+ Service: &v1alpha1.ServiceReference{
+ Namespace: namespace,
+ Name: serviceName,
+ Path: strPtr("/crd"),
+ },
+ CABundle: context.signingCert,
+ },
+ },
+ },
+ })
+ framework.ExpectNoError(err, "registering crd webhook config %s with namespace %s", webhookConfigName, namespace)
+
+ // The webhook configuration is honored in 1s.
+ time.Sleep(10 * time.Second)
+}
+
+func testCRDWebhook(f *framework.Framework, crdClient dynamic.ResourceInterface) {
+ By("Creating a custom resource that should be denied by the webhook")
+ crd := newCRDForAdmissionWebhookTest()
+ crInstance := &unstructured.Unstructured{
+ Object: map[string]interface{}{
+ "kind": crd.Spec.Names.Kind,
+ "apiVersion": crd.Spec.Group + "/" + crd.Spec.Version,
+ "metadata": map[string]interface{}{
+ "name": "cr-instance-1",
+ "namespace": f.Namespace.Name,
+ },
+ "data": map[string]interface{}{
+ "webhook-e2e-test": "webhook-disallow",
+ },
+ },
+ }
+ _, err := crdClient.Create(crInstance)
+ Expect(err).NotTo(BeNil())
+ expectedErrMsg := "the custom resource contains unwanted data"
+ if !strings.Contains(err.Error(), expectedErrMsg) {
+ framework.Failf("expect error contains %q, got %q", expectedErrMsg, err.Error())
+ }
}
diff --git a/test/e2e/apps/BUILD b/test/e2e/apps/BUILD
index c25d2f18ad..6b0cca1d2d 100644
--- a/test/e2e/apps/BUILD
+++ b/test/e2e/apps/BUILD
@@ -23,10 +23,10 @@ go_library(
],
importpath = "k8s.io/kubernetes/test/e2e/apps",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/v1/pod:go_default_library",
"//pkg/apis/batch:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/controller:go_default_library",
diff --git a/test/e2e/apps/network_partition.go b/test/e2e/apps/network_partition.go
index 26e3443e06..4c1360a45a 100644
--- a/test/e2e/apps/network_partition.go
+++ b/test/e2e/apps/network_partition.go
@@ -32,7 +32,7 @@ import (
"k8s.io/api/core/v1"
clientset "k8s.io/client-go/kubernetes"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
nodepkg "k8s.io/kubernetes/pkg/controller/node"
"k8s.io/kubernetes/test/e2e/common"
"k8s.io/kubernetes/test/e2e/framework"
diff --git a/test/e2e/autoscaling/BUILD b/test/e2e/autoscaling/BUILD
index 8718b08fee..ef75e7d9a6 100644
--- a/test/e2e/autoscaling/BUILD
+++ b/test/e2e/autoscaling/BUILD
@@ -18,7 +18,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/test/e2e/autoscaling",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//test/e2e/common:go_default_library",
"//test/e2e/framework:go_default_library",
"//test/e2e/instrumentation/monitoring:go_default_library",
@@ -32,6 +32,7 @@ go_library(
"//vendor/k8s.io/api/autoscaling/v2beta1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/api/policy/v1beta1:go_default_library",
+ "//vendor/k8s.io/api/scheduling/v1alpha1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
diff --git a/test/e2e/autoscaling/cluster_size_autoscaling.go b/test/e2e/autoscaling/cluster_size_autoscaling.go
index 5cfa975f34..039b4f05da 100644
--- a/test/e2e/autoscaling/cluster_size_autoscaling.go
+++ b/test/e2e/autoscaling/cluster_size_autoscaling.go
@@ -30,6 +30,7 @@ import (
"k8s.io/api/core/v1"
policy "k8s.io/api/policy/v1beta1"
+ "k8s.io/api/scheduling/v1alpha1"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/fields"
@@ -40,7 +41,7 @@ import (
"k8s.io/apimachinery/pkg/util/uuid"
"k8s.io/apimachinery/pkg/util/wait"
clientset "k8s.io/client-go/kubernetes"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/test/e2e/framework"
"k8s.io/kubernetes/test/e2e/scheduling"
testutils "k8s.io/kubernetes/test/utils"
@@ -76,6 +77,9 @@ const (
caNoScaleUpStatus = "NoActivity"
caOngoingScaleUpStatus = "InProgress"
timestampFormat = "2006-01-02 15:04:05 -0700 MST"
+
+ expendablePriorityClassName = "expendable-priority"
+ highPriorityClassName = "high-priority"
)
var _ = SIGDescribe("Cluster size autoscaling [Slow]", func() {
@@ -860,6 +864,63 @@ var _ = SIGDescribe("Cluster size autoscaling [Slow]", func() {
By("Check if NAP group was created")
Expect(getNAPNodePoolsNumber()).Should(Equal(1))
})
+
+ It("shouldn't scale up when expendable pod is created [Feature:ClusterSizeAutoscalingScaleUp]", func() {
+ defer createPriorityClasses(f)()
+ // Create nodesCountAfterResize+1 pods allocating 0.7 allocatable on present nodes. One more node will have to be created.
+ cleanupFunc := ReserveMemoryWithPriority(f, "memory-reservation", nodeCount+1, int(float64(nodeCount+1)*float64(0.7)*float64(memAllocatableMb)), false, time.Second, expendablePriorityClassName)
+ defer cleanupFunc()
+ By(fmt.Sprintf("Waiting for scale up hoping it won't happen, sleep for %s", scaleUpTimeout.String()))
+ time.Sleep(scaleUpTimeout)
+ // Verify that cluster size is not changed
+ framework.ExpectNoError(WaitForClusterSizeFunc(f.ClientSet,
+ func(size int) bool { return size == nodeCount }, time.Second))
+ })
+
+ It("should scale up when non expendable pod is created [Feature:ClusterSizeAutoscalingScaleUp]", func() {
+ defer createPriorityClasses(f)()
+ // Create nodesCountAfterResize+1 pods allocating 0.7 allocatable on present nodes. One more node will have to be created.
+ cleanupFunc := ReserveMemoryWithPriority(f, "memory-reservation", nodeCount+1, int(float64(nodeCount+1)*float64(0.7)*float64(memAllocatableMb)), true, scaleUpTimeout, highPriorityClassName)
+ defer cleanupFunc()
+ // Verify that cluster size is not changed
+ framework.ExpectNoError(WaitForClusterSizeFunc(f.ClientSet,
+ func(size int) bool { return size > nodeCount }, time.Second))
+ })
+
+ It("shouldn't scale up when expendable pod is preempted [Feature:ClusterSizeAutoscalingScaleUp]", func() {
+ defer createPriorityClasses(f)()
+ // Create nodesCountAfterResize pods allocating 0.7 allocatable on present nodes - one pod per node.
+ cleanupFunc1 := ReserveMemoryWithPriority(f, "memory-reservation1", nodeCount, int(float64(nodeCount)*float64(0.7)*float64(memAllocatableMb)), true, defaultTimeout, expendablePriorityClassName)
+ defer cleanupFunc1()
+ // Create nodesCountAfterResize pods allocating 0.7 allocatable on present nodes - one pod per node. Pods created here should preempt pods created above.
+ cleanupFunc2 := ReserveMemoryWithPriority(f, "memory-reservation2", nodeCount, int(float64(nodeCount)*float64(0.7)*float64(memAllocatableMb)), true, defaultTimeout, highPriorityClassName)
+ defer cleanupFunc2()
+ framework.ExpectNoError(WaitForClusterSizeFunc(f.ClientSet,
+ func(size int) bool { return size == nodeCount }, time.Second))
+ })
+
+ It("should scale down when expendable pod is running [Feature:ClusterSizeAutoscalingScaleDown]", func() {
+ defer createPriorityClasses(f)()
+ increasedSize := manuallyIncreaseClusterSize(f, originalSizes)
+ // Create increasedSize pods allocating 0.7 allocatable on present nodes - one pod per node.
+ cleanupFunc := ReserveMemoryWithPriority(f, "memory-reservation", increasedSize, int(float64(increasedSize)*float64(0.7)*float64(memAllocatableMb)), true, scaleUpTimeout, expendablePriorityClassName)
+ defer cleanupFunc()
+ By("Waiting for scale down")
+ framework.ExpectNoError(WaitForClusterSizeFunc(f.ClientSet,
+ func(size int) bool { return size == nodeCount }, scaleDownTimeout))
+ })
+
+ It("shouldn't scale down when non expendable pod is running [Feature:ClusterSizeAutoscalingScaleDown]", func() {
+ defer createPriorityClasses(f)()
+ increasedSize := manuallyIncreaseClusterSize(f, originalSizes)
+ // Create increasedSize pods allocating 0.7 allocatable on present nodes - one pod per node.
+ cleanupFunc := ReserveMemoryWithPriority(f, "memory-reservation", increasedSize, int(float64(increasedSize)*float64(0.7)*float64(memAllocatableMb)), true, scaleUpTimeout, highPriorityClassName)
+ defer cleanupFunc()
+ By(fmt.Sprintf("Waiting for scale down hoping it won't happen, sleep for %s", scaleDownTimeout.String()))
+ time.Sleep(scaleDownTimeout)
+ framework.ExpectNoError(WaitForClusterSizeFunc(f.ClientSet,
+ func(size int) bool { return size == increasedSize }, time.Second))
+ })
})
func execCmd(args ...string) *exec.Cmd {
@@ -1221,21 +1282,20 @@ func doPut(url, content string) (string, error) {
return strBody, nil
}
-// ReserveMemoryWithSelector creates a replication controller with pods with node selector that, in summation,
-// request the specified amount of memory.
-func ReserveMemoryWithSelector(f *framework.Framework, id string, replicas, megabytes int, expectRunning bool, timeout time.Duration, selector map[string]string) func() error {
+func reserveMemory(f *framework.Framework, id string, replicas, megabytes int, expectRunning bool, timeout time.Duration, selector map[string]string, priorityClassName string) func() error {
By(fmt.Sprintf("Running RC which reserves %v MB of memory", megabytes))
request := int64(1024 * 1024 * megabytes / replicas)
config := &testutils.RCConfig{
- Client: f.ClientSet,
- InternalClient: f.InternalClientset,
- Name: id,
- Namespace: f.Namespace.Name,
- Timeout: timeout,
- Image: framework.GetPauseImageName(f.ClientSet),
- Replicas: replicas,
- MemRequest: request,
- NodeSelector: selector,
+ Client: f.ClientSet,
+ InternalClient: f.InternalClientset,
+ Name: id,
+ Namespace: f.Namespace.Name,
+ Timeout: timeout,
+ Image: framework.GetPauseImageName(f.ClientSet),
+ Replicas: replicas,
+ MemRequest: request,
+ NodeSelector: selector,
+ PriorityClassName: priorityClassName,
}
for start := time.Now(); time.Since(start) < rcCreationRetryTimeout; time.Sleep(rcCreationRetryDelay) {
err := framework.RunRC(*config)
@@ -1254,10 +1314,22 @@ func ReserveMemoryWithSelector(f *framework.Framework, id string, replicas, mega
return nil
}
+// ReserveMemoryWithPriority creates a replication controller with pods with priority that, in summation,
+// request the specified amount of memory.
+func ReserveMemoryWithPriority(f *framework.Framework, id string, replicas, megabytes int, expectRunning bool, timeout time.Duration, priorityClassName string) func() error {
+ return reserveMemory(f, id, replicas, megabytes, expectRunning, timeout, nil, priorityClassName)
+}
+
+// ReserveMemoryWithSelector creates a replication controller with pods with node selector that, in summation,
+// request the specified amount of memory.
+func ReserveMemoryWithSelector(f *framework.Framework, id string, replicas, megabytes int, expectRunning bool, timeout time.Duration, selector map[string]string) func() error {
+ return reserveMemory(f, id, replicas, megabytes, expectRunning, timeout, selector, "")
+}
+
// ReserveMemory creates a replication controller with pods that, in summation,
// request the specified amount of memory.
func ReserveMemory(f *framework.Framework, id string, replicas, megabytes int, expectRunning bool, timeout time.Duration) func() error {
- return ReserveMemoryWithSelector(f, id, replicas, megabytes, expectRunning, timeout, nil)
+ return reserveMemory(f, id, replicas, megabytes, expectRunning, timeout, nil, "")
}
// WaitForClusterSizeFunc waits until the cluster size matches the given function.
@@ -1830,3 +1902,20 @@ func addKubeSystemPdbs(f *framework.Framework) (func(), error) {
}
return cleanup, nil
}
+
+func createPriorityClasses(f *framework.Framework) func() {
+ priorityClasses := map[string]int32{
+ expendablePriorityClassName: -15,
+ highPriorityClassName: 1000,
+ }
+ for className, priority := range priorityClasses {
+ _, err := f.ClientSet.SchedulingV1alpha1().PriorityClasses().Create(&v1alpha1.PriorityClass{ObjectMeta: metav1.ObjectMeta{Name: className}, Value: priority})
+ Expect(err == nil || errors.IsAlreadyExists(err)).To(Equal(true))
+ }
+
+ return func() {
+ for className := range priorityClasses {
+ f.ClientSet.SchedulingV1alpha1().PriorityClasses().Delete(className, nil)
+ }
+ }
+}
diff --git a/test/e2e/common/BUILD b/test/e2e/common/BUILD
index dcaa4d77cc..bf9d362595 100644
--- a/test/e2e/common/BUILD
+++ b/test/e2e/common/BUILD
@@ -34,10 +34,10 @@ go_library(
],
importpath = "k8s.io/kubernetes/test/e2e/common",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/testapi:go_default_library",
- "//pkg/api/v1/helper:go_default_library",
"//pkg/api/v1/pod:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/conditions:go_default_library",
"//pkg/kubelet:go_default_library",
diff --git a/test/e2e/common/autoscaling_utils.go b/test/e2e/common/autoscaling_utils.go
index 78f744711c..3efbf8d33d 100644
--- a/test/e2e/common/autoscaling_utils.go
+++ b/test/e2e/common/autoscaling_utils.go
@@ -30,7 +30,7 @@ import (
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/apimachinery/pkg/util/wait"
clientset "k8s.io/client-go/kubernetes"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/test/e2e/framework"
testutils "k8s.io/kubernetes/test/utils"
diff --git a/test/e2e/common/configmap.go b/test/e2e/common/configmap.go
index 03cefaab9a..54bae8aaad 100644
--- a/test/e2e/common/configmap.go
+++ b/test/e2e/common/configmap.go
@@ -29,6 +29,11 @@ import (
var _ = Describe("[sig-api-machinery] ConfigMap", func() {
f := framework.NewDefaultFramework("configmap")
+ /*
+ Testname: configmap-in-env-field
+ Description: Make sure config map value can be used as an environment
+ variable in the container (on container.env field)
+ */
framework.ConformanceIt("should be consumable via environment variable ", func() {
name := "configmap-test-" + string(uuid.NewUUID())
configMap := newConfigMap(f, name)
@@ -72,6 +77,11 @@ var _ = Describe("[sig-api-machinery] ConfigMap", func() {
})
})
+ /*
+ Testname: configmap-envfrom-field
+ Description: Make sure config map value can be used as an source for
+ environment variables in the container (on container.envFrom field)
+ */
framework.ConformanceIt("should be consumable via the environment ", func() {
name := "configmap-test-" + string(uuid.NewUUID())
configMap := newEnvFromConfigMap(f, name)
diff --git a/test/e2e/common/configmap_volume.go b/test/e2e/common/configmap_volume.go
index 82ccc4ecd4..8989819cb0 100644
--- a/test/e2e/common/configmap_volume.go
+++ b/test/e2e/common/configmap_volume.go
@@ -32,10 +32,20 @@ import (
var _ = Describe("[sig-storage] ConfigMap", func() {
f := framework.NewDefaultFramework("configmap")
+ /*
+ Testname: configmap-nomap-simple
+ Description: Make sure config map without mappings works by mounting it
+ to a volume with a custom path (mapping) on the pod with no other settings.
+ */
framework.ConformanceIt("should be consumable from pods in volume ", func() {
doConfigMapE2EWithoutMappings(f, 0, 0, nil)
})
+ /*
+ Testname: configmap-nomap-default-mode
+ Description: Make sure config map without mappings works by mounting it
+ to a volume with a custom path (mapping) on the pod with defaultMode set
+ */
framework.ConformanceIt("should be consumable from pods in volume with defaultMode set ", func() {
defaultMode := int32(0400)
doConfigMapE2EWithoutMappings(f, 0, 0, &defaultMode)
@@ -46,6 +56,11 @@ var _ = Describe("[sig-storage] ConfigMap", func() {
doConfigMapE2EWithoutMappings(f, 1000, 1001, &defaultMode)
})
+ /*
+ Testname: configmap-nomap-user
+ Description: Make sure config map without mappings works by mounting it
+ to a volume with a custom path (mapping) on the pod as non-root.
+ */
framework.ConformanceIt("should be consumable from pods in volume as non-root ", func() {
doConfigMapE2EWithoutMappings(f, 1000, 0, nil)
})
@@ -54,15 +69,30 @@ var _ = Describe("[sig-storage] ConfigMap", func() {
doConfigMapE2EWithoutMappings(f, 1000, 1001, nil)
})
+ /*
+ Testname: configmap-simple-mapped
+ Description: Make sure config map works by mounting it to a volume with
+ a custom path (mapping) on the pod with no other settings and make sure
+ the pod actually consumes it.
+ */
framework.ConformanceIt("should be consumable from pods in volume with mappings ", func() {
doConfigMapE2EWithMappings(f, 0, 0, nil)
})
+ /*
+ Testname: configmap-with-item-mode-mapped
+ Description: Make sure config map works with an item mode (e.g. 0400)
+ for the config map item.
+ */
framework.ConformanceIt("should be consumable from pods in volume with mappings and Item mode set", func() {
mode := int32(0400)
doConfigMapE2EWithMappings(f, 0, 0, &mode)
})
+ /*
+ Testname: configmap-simple-user-mapped
+ Description: Make sure config map works when it is mounted as non-root.
+ */
framework.ConformanceIt("should be consumable from pods in volume with mappings as non-root ", func() {
doConfigMapE2EWithMappings(f, 1000, 0, nil)
})
@@ -71,6 +101,11 @@ var _ = Describe("[sig-storage] ConfigMap", func() {
doConfigMapE2EWithMappings(f, 1000, 1001, nil)
})
+ /*
+ Testname: configmap-update-test
+ Description: Make sure update operation is working on config map and
+ the result is observed on volumes mounted in containers.
+ */
framework.ConformanceIt("updates should be reflected in volume ", func() {
podLogTimeout := framework.GetPodSecretUpdateTimeout(f.ClientSet)
containerTimeoutArg := fmt.Sprintf("--retry_time=%v", int(podLogTimeout.Seconds()))
@@ -149,6 +184,11 @@ var _ = Describe("[sig-storage] ConfigMap", func() {
Eventually(pollLogs, podLogTimeout, framework.Poll).Should(ContainSubstring("value-2"))
})
+ /*
+ Testname: configmap-CUD-test
+ Description: Make sure Create, Update, Delete operations are all working
+ on config map and the result is observed on volumes mounted in containers.
+ */
framework.ConformanceIt("optional updates should be reflected in volume ", func() {
podLogTimeout := framework.GetPodSecretUpdateTimeout(f.ClientSet)
containerTimeoutArg := fmt.Sprintf("--retry_time=%v", int(podLogTimeout.Seconds()))
@@ -327,6 +367,11 @@ var _ = Describe("[sig-storage] ConfigMap", func() {
Eventually(pollDeleteLogs, podLogTimeout, framework.Poll).Should(ContainSubstring("Error reading file /etc/configmap-volumes/delete/data-1"))
})
+ /*
+ Testname: configmap-multiple-volumes
+ Description: Make sure config map works when it mounted as two different
+ volumes on the same node.
+ */
framework.ConformanceIt("should be consumable in multiple volumes in the same pod ", func() {
var (
name = "configmap-test-volume-" + string(uuid.NewUUID())
diff --git a/test/e2e/common/docker_containers.go b/test/e2e/common/docker_containers.go
index dea3be317f..734e02fa8c 100644
--- a/test/e2e/common/docker_containers.go
+++ b/test/e2e/common/docker_containers.go
@@ -27,12 +27,24 @@ import (
var _ = framework.KubeDescribe("Docker Containers", func() {
f := framework.NewDefaultFramework("containers")
+ /*
+ Testname: container-without-command-args
+ Description: When a Pod is created neither 'command' nor 'args' are
+ provided for a Container, ensure that the docker image's default
+ command and args are used.
+ */
framework.ConformanceIt("should use the image defaults if command and args are blank ", func() {
f.TestContainerOutput("use defaults", entrypointTestPod(), 0, []string{
"[/ep default arguments]",
})
})
+ /*
+ Testname: container-with-args
+ Description: When a Pod is created and 'args' are provided for a
+ Container, ensure that they take precedent to the docker image's
+ default arguments, but that the default command is used.
+ */
framework.ConformanceIt("should be able to override the image's default arguments (docker cmd) ", func() {
pod := entrypointTestPod()
pod.Spec.Containers[0].Args = []string{"override", "arguments"}
@@ -44,6 +56,12 @@ var _ = framework.KubeDescribe("Docker Containers", func() {
// Note: when you override the entrypoint, the image's arguments (docker cmd)
// are ignored.
+ /*
+ Testname: container-with-command
+ Description: When a Pod is created and 'command' is provided for a
+ Container, ensure that it takes precedent to the docker image's default
+ command.
+ */
framework.ConformanceIt("should be able to override the image's default commmand (docker entrypoint) ", func() {
pod := entrypointTestPod()
pod.Spec.Containers[0].Command = []string{"/ep-2"}
@@ -53,6 +71,12 @@ var _ = framework.KubeDescribe("Docker Containers", func() {
})
})
+ /*
+ Testname: container-with-command-args
+ Description: When a Pod is created and 'command' and 'args' are
+ provided for a Container, ensure that they take precedent to the docker
+ image's default command and arguments.
+ */
framework.ConformanceIt("should be able to override the image's default command and arguments ", func() {
pod := entrypointTestPod()
pod.Spec.Containers[0].Command = []string{"/ep-2"}
diff --git a/test/e2e/common/downward_api.go b/test/e2e/common/downward_api.go
index a46ca1be63..4b4b76a366 100644
--- a/test/e2e/common/downward_api.go
+++ b/test/e2e/common/downward_api.go
@@ -37,6 +37,11 @@ var (
var _ = Describe("[sig-api-machinery] Downward API", func() {
f := framework.NewDefaultFramework("downward-api")
+ /*
+ Testname: downwardapi-env-name-namespace
+ Description: Ensure that downward API can provide pod's name and
+ namespaces as environment variables.
+ */
framework.ConformanceIt("should provide pod name and namespace as env vars ", func() {
podName := "downward-api-" + string(uuid.NewUUID())
env := []v1.EnvVar{
@@ -68,6 +73,11 @@ var _ = Describe("[sig-api-machinery] Downward API", func() {
testDownwardAPI(f, podName, env, expectations)
})
+ /*
+ Testname: downwardapi-env-pod-ip
+ Description: Ensure that downward API can provide an IP address for
+ pod as an environment variable.
+ */
framework.ConformanceIt("should provide pod IP as an env var ", func() {
podName := "downward-api-" + string(uuid.NewUUID())
env := []v1.EnvVar{
@@ -89,6 +99,11 @@ var _ = Describe("[sig-api-machinery] Downward API", func() {
testDownwardAPI(f, podName, env, expectations)
})
+ /*
+ Testname: downwardapi-env-host-ip
+ Description: Ensure that downward API can provide an IP address for
+ host node as an environment variable.
+ */
framework.ConformanceIt("should provide host IP as an env var ", func() {
framework.SkipUnlessServerVersionGTE(hostIPVersion, f.ClientSet.Discovery())
podName := "downward-api-" + string(uuid.NewUUID())
@@ -111,6 +126,11 @@ var _ = Describe("[sig-api-machinery] Downward API", func() {
testDownwardAPI(f, podName, env, expectations)
})
+ /*
+ Testname: downwardapi-env-limits-requests
+ Description: Ensure that downward API can provide CPU/memory limit
+ and CPU/memory request as environment variables.
+ */
framework.ConformanceIt("should provide container's limits.cpu/memory and requests.cpu/memory as env vars ", func() {
podName := "downward-api-" + string(uuid.NewUUID())
env := []v1.EnvVar{
@@ -157,6 +177,12 @@ var _ = Describe("[sig-api-machinery] Downward API", func() {
testDownwardAPI(f, podName, env, expectations)
})
+ /*
+ Testname: downwardapi-env-default-allocatable
+ Description: Ensure that downward API can provide default node
+ allocatable values for CPU and memory as environment variables if CPU
+ and memory limits are not specified for a container.
+ */
framework.ConformanceIt("should provide default limits.cpu/memory from node allocatable ", func() {
podName := "downward-api-" + string(uuid.NewUUID())
env := []v1.EnvVar{
@@ -202,6 +228,11 @@ var _ = Describe("[sig-api-machinery] Downward API", func() {
testDownwardAPIUsingPod(f, pod, env, expectations)
})
+ /*
+ Testname: downwardapi-env-pod-uid
+ Description: Ensure that downward API can provide pod UID as an
+ environment variable.
+ */
framework.ConformanceIt("should provide pod UID as env vars ", func() {
framework.SkipUnlessServerVersionGTE(podUIDVersion, f.ClientSet.Discovery())
podName := "downward-api-" + string(uuid.NewUUID())
diff --git a/test/e2e/common/downwardapi_volume.go b/test/e2e/common/downwardapi_volume.go
index b5a0299e20..cd0855d45a 100644
--- a/test/e2e/common/downwardapi_volume.go
+++ b/test/e2e/common/downwardapi_volume.go
@@ -39,6 +39,11 @@ var _ = Describe("[sig-storage] Downward API volume", func() {
podClient = f.PodClient()
})
+ /*
+ Testname: downwardapi-volume-podname
+ Description: Ensure that downward API can provide pod's name through
+ DownwardAPIVolumeFiles.
+ */
framework.ConformanceIt("should provide podname only ", func() {
podName := "downwardapi-volume-" + string(uuid.NewUUID())
pod := downwardAPIVolumePodForSimpleTest(podName, "/etc/podname")
@@ -48,6 +53,11 @@ var _ = Describe("[sig-storage] Downward API volume", func() {
})
})
+ /*
+ Testname: downwardapi-volume-set-default-mode
+ Description: Ensure that downward API can set default file premission
+ mode for DownwardAPIVolumeFiles if no mode is specified.
+ */
framework.ConformanceIt("should set DefaultMode on files ", func() {
podName := "downwardapi-volume-" + string(uuid.NewUUID())
defaultMode := int32(0400)
@@ -58,6 +68,11 @@ var _ = Describe("[sig-storage] Downward API volume", func() {
})
})
+ /*
+ Testname: downwardapi-volume-set-mode
+ Description: Ensure that downward API can set file premission mode for
+ DownwardAPIVolumeFiles.
+ */
framework.ConformanceIt("should set mode on item file ", func() {
podName := "downwardapi-volume-" + string(uuid.NewUUID())
mode := int32(0400)
@@ -97,6 +112,11 @@ var _ = Describe("[sig-storage] Downward API volume", func() {
})
})
+ /*
+ Testname: downwardapi-volume-update-label
+ Description: Ensure that downward API updates labels in
+ DownwardAPIVolumeFiles when pod's labels get modified.
+ */
framework.ConformanceIt("should update labels on modification ", func() {
labels := map[string]string{}
labels["key1"] = "value1"
@@ -124,6 +144,11 @@ var _ = Describe("[sig-storage] Downward API volume", func() {
podLogTimeout, framework.Poll).Should(ContainSubstring("key3=\"value3\"\n"))
})
+ /*
+ Testname: downwardapi-volume-update-annotation
+ Description: Ensure that downward API updates annotations in
+ DownwardAPIVolumeFiles when pod's annotations get modified.
+ */
framework.ConformanceIt("should update annotations on modification ", func() {
annotations := map[string]string{}
annotations["builder"] = "bar"
@@ -153,6 +178,11 @@ var _ = Describe("[sig-storage] Downward API volume", func() {
podLogTimeout, framework.Poll).Should(ContainSubstring("builder=\"foo\"\n"))
})
+ /*
+ Testname: downwardapi-volume-cpu-limit
+ Description: Ensure that downward API can provide container's CPU limit
+ through DownwardAPIVolumeFiles.
+ */
framework.ConformanceIt("should provide container's cpu limit ", func() {
podName := "downwardapi-volume-" + string(uuid.NewUUID())
pod := downwardAPIVolumeForContainerResources(podName, "/etc/cpu_limit")
@@ -162,6 +192,11 @@ var _ = Describe("[sig-storage] Downward API volume", func() {
})
})
+ /*
+ Testname: downwardapi-volume-memory-limit
+ Description: Ensure that downward API can provide container's memory
+ limit through DownwardAPIVolumeFiles.
+ */
framework.ConformanceIt("should provide container's memory limit ", func() {
podName := "downwardapi-volume-" + string(uuid.NewUUID())
pod := downwardAPIVolumeForContainerResources(podName, "/etc/memory_limit")
@@ -171,6 +206,11 @@ var _ = Describe("[sig-storage] Downward API volume", func() {
})
})
+ /*
+ Testname: downwardapi-volume-cpu-request
+ Description: Ensure that downward API can provide container's CPU
+ request through DownwardAPIVolumeFiles.
+ */
framework.ConformanceIt("should provide container's cpu request ", func() {
podName := "downwardapi-volume-" + string(uuid.NewUUID())
pod := downwardAPIVolumeForContainerResources(podName, "/etc/cpu_request")
@@ -180,6 +220,11 @@ var _ = Describe("[sig-storage] Downward API volume", func() {
})
})
+ /*
+ Testname: downwardapi-volume-memory-request
+ Description: Ensure that downward API can provide container's memory
+ request through DownwardAPIVolumeFiles.
+ */
framework.ConformanceIt("should provide container's memory request ", func() {
podName := "downwardapi-volume-" + string(uuid.NewUUID())
pod := downwardAPIVolumeForContainerResources(podName, "/etc/memory_request")
@@ -189,6 +234,12 @@ var _ = Describe("[sig-storage] Downward API volume", func() {
})
})
+ /*
+ Testname: downwardapi-volume-default-cpu
+ Description: Ensure that downward API can provide default node
+ allocatable value for CPU through DownwardAPIVolumeFiles if CPU
+ limit is not specified for a container.
+ */
framework.ConformanceIt("should provide node allocatable (cpu) as default cpu limit if the limit is not set ", func() {
podName := "downwardapi-volume-" + string(uuid.NewUUID())
pod := downwardAPIVolumeForDefaultContainerResources(podName, "/etc/cpu_limit")
@@ -196,6 +247,12 @@ var _ = Describe("[sig-storage] Downward API volume", func() {
f.TestContainerOutputRegexp("downward API volume plugin", pod, 0, []string{"[1-9]"})
})
+ /*
+ Testname: downwardapi-volume-default-memory
+ Description: Ensure that downward API can provide default node
+ allocatable value for memory through DownwardAPIVolumeFiles if memory
+ limit is not specified for a container.
+ */
framework.ConformanceIt("should provide node allocatable (memory) as default memory limit if the limit is not set ", func() {
podName := "downwardapi-volume-" + string(uuid.NewUUID())
pod := downwardAPIVolumeForDefaultContainerResources(podName, "/etc/memory_limit")
diff --git a/test/e2e/common/empty_dir.go b/test/e2e/common/empty_dir.go
index 2f881d616b..bc6ad4b6cc 100644
--- a/test/e2e/common/empty_dir.go
+++ b/test/e2e/common/empty_dir.go
@@ -67,58 +67,141 @@ var _ = Describe("[sig-storage] EmptyDir volumes", func() {
})
})
+ /*
+ Testname: volume-emptydir-mode-tmpfs
+ Description: For a Pod created with an 'emptyDir' Volume with 'medium'
+ of 'Memory', ensure the volume has 0777 unix file permissions and tmpfs
+ mount type.
+ */
framework.ConformanceIt("volume on tmpfs should have the correct mode", func() {
doTestVolumeMode(f, testImageRootUid, v1.StorageMediumMemory)
})
+ /*
+ Testname: volume-emptydir-root-0644-tmpfs
+ Description: For a Pod created with an 'emptyDir' Volume with 'medium'
+ of 'Memory', ensure a root owned file with 0644 unix file permissions
+ is created correctly, has tmpfs mount type, and enforces the permissions.
+ */
framework.ConformanceIt("should support (root,0644,tmpfs)", func() {
doTest0644(f, testImageRootUid, v1.StorageMediumMemory)
})
+ /*
+ Testname: volume-emptydir-root-0666-tmpfs
+ Description: For a Pod created with an 'emptyDir' Volume with 'medium'
+ of 'Memory', ensure a root owned file with 0666 unix file permissions
+ is created correctly, has tmpfs mount type, and enforces the permissions.
+ */
framework.ConformanceIt("should support (root,0666,tmpfs)", func() {
doTest0666(f, testImageRootUid, v1.StorageMediumMemory)
})
+ /*
+ Testname: volume-emptydir-root-0777-tmpfs
+ Description: For a Pod created with an 'emptyDir' Volume with 'medium'
+ of 'Memory', ensure a root owned file with 0777 unix file permissions
+ is created correctly, has tmpfs mount type, and enforces the permissions.
+ */
framework.ConformanceIt("should support (root,0777,tmpfs)", func() {
doTest0777(f, testImageRootUid, v1.StorageMediumMemory)
})
+ /*
+ Testname: volume-emptydir-user-0644-tmpfs
+ Description: For a Pod created with an 'emptyDir' Volume with 'medium'
+ of 'Memory', ensure a user owned file with 0644 unix file permissions
+ is created correctly, has tmpfs mount type, and enforces the permissions.
+ */
framework.ConformanceIt("should support (non-root,0644,tmpfs)", func() {
doTest0644(f, testImageNonRootUid, v1.StorageMediumMemory)
})
+ /*
+ Testname: volume-emptydir-user-0666-tmpfs
+ Description: For a Pod created with an 'emptyDir' Volume with 'medium'
+ of 'Memory', ensure a user owned file with 0666 unix file permissions
+ is created correctly, has tmpfs mount type, and enforces the permissions.
+ */
framework.ConformanceIt("should support (non-root,0666,tmpfs)", func() {
doTest0666(f, testImageNonRootUid, v1.StorageMediumMemory)
})
+ /*
+ Testname: volume-emptydir-user-0777-tmpfs
+ Description: For a Pod created with an 'emptyDir' Volume with 'medium'
+ of 'Memory', ensure a user owned file with 0777 unix file permissions
+ is created correctly, has tmpfs mount type, and enforces the permissions.
+ */
framework.ConformanceIt("should support (non-root,0777,tmpfs)", func() {
doTest0777(f, testImageNonRootUid, v1.StorageMediumMemory)
})
+ /*
+ Testname: volume-emptydir-mode
+ Description: For a Pod created with an 'emptyDir' Volume, ensure the
+ volume has 0777 unix file permissions.
+ */
framework.ConformanceIt("volume on default medium should have the correct mode", func() {
doTestVolumeMode(f, testImageRootUid, v1.StorageMediumDefault)
})
+ /*
+ Testname: volume-emptydir-root-0644
+ Description: For a Pod created with an 'emptyDir' Volume, ensure a
+ root owned file with 0644 unix file permissions is created and enforced
+ correctly.
+ */
framework.ConformanceIt("should support (root,0644,default)", func() {
doTest0644(f, testImageRootUid, v1.StorageMediumDefault)
})
+ /*
+ Testname: volume-emptydir-root-0666
+ Description: For a Pod created with an 'emptyDir' Volume, ensure a
+ root owned file with 0666 unix file permissions is created and enforced
+ correctly.
+ */
framework.ConformanceIt("should support (root,0666,default)", func() {
doTest0666(f, testImageRootUid, v1.StorageMediumDefault)
})
+ /*
+ Testname: volume-emptydir-root-0777
+ Description: For a Pod created with an 'emptyDir' Volume, ensure a
+ root owned file with 0777 unix file permissions is created and enforced
+ correctly.
+ */
framework.ConformanceIt("should support (root,0777,default)", func() {
doTest0777(f, testImageRootUid, v1.StorageMediumDefault)
})
+ /*
+ Testname: volume-emptydir-user-0644
+ Description: For a Pod created with an 'emptyDir' Volume, ensure a
+ user owned file with 0644 unix file permissions is created and enforced
+ correctly.
+ */
framework.ConformanceIt("should support (non-root,0644,default)", func() {
doTest0644(f, testImageNonRootUid, v1.StorageMediumDefault)
})
+ /*
+ Testname: volume-emptydir-user-0666
+ Description: For a Pod created with an 'emptyDir' Volume, ensure a
+ user owned file with 0666 unix file permissions is created and enforced
+ correctly.
+ */
framework.ConformanceIt("should support (non-root,0666,default)", func() {
doTest0666(f, testImageNonRootUid, v1.StorageMediumDefault)
})
+ /*
+ Testname: volume-emptydir-user-0777
+ Description: For a Pod created with an 'emptyDir' Volume, ensure a
+ user owned file with 0777 unix file permissions is created and enforced
+ correctly.
+ */
framework.ConformanceIt("should support (non-root,0777,default)", func() {
doTest0777(f, testImageNonRootUid, v1.StorageMediumDefault)
})
diff --git a/test/e2e/common/host_path.go b/test/e2e/common/host_path.go
index 9f1f644f27..bb144027dc 100644
--- a/test/e2e/common/host_path.go
+++ b/test/e2e/common/host_path.go
@@ -40,6 +40,12 @@ var _ = Describe("[sig-storage] HostPath", func() {
_ = os.Remove("/tmp/test-file")
})
+ /*
+ Testname: volume-hostpath-mode
+ Description: For a Pod created with a 'HostPath' Volume, ensure the
+ volume is a directory with 0777 unix file permissions and that is has
+ the sticky bit (mode flag t) set.
+ */
framework.ConformanceIt("should give a volume the correct mode", func() {
source := &v1.HostPathVolumeSource{
Path: "/tmp",
diff --git a/test/e2e/common/kubelet_etc_hosts.go b/test/e2e/common/kubelet_etc_hosts.go
index 0f4fdac897..9443886527 100644
--- a/test/e2e/common/kubelet_etc_hosts.go
+++ b/test/e2e/common/kubelet_etc_hosts.go
@@ -48,6 +48,11 @@ var _ = framework.KubeDescribe("KubeletManagedEtcHosts", func() {
f: f,
}
+ /*
+ Testname: kubelet-managed-etc-hosts
+ Description: Make sure Kubelet correctly manages /etc/hosts and mounts
+ it into the container.
+ */
framework.ConformanceIt("should test kubelet managed /etc/hosts file ", func() {
By("Setting up the test")
config.setup()
diff --git a/test/e2e/common/sysctl.go b/test/e2e/common/sysctl.go
index 1d112f0797..aa05d109ad 100644
--- a/test/e2e/common/sysctl.go
+++ b/test/e2e/common/sysctl.go
@@ -20,7 +20,7 @@ import (
"k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/uuid"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
"k8s.io/kubernetes/pkg/kubelet/sysctl"
"k8s.io/kubernetes/test/e2e/framework"
diff --git a/test/e2e/examples.go b/test/e2e/examples.go
index b9261bf57d..7e377e203e 100644
--- a/test/e2e/examples.go
+++ b/test/e2e/examples.go
@@ -194,7 +194,7 @@ var _ = framework.KubeDescribe("[Feature:Example]", func() {
forEachPod(selectorKey, selectorValue, func(pod v1.Pod) {
_, maErr := framework.LookForStringInLog(f.Namespace.Name, pod.Name, "spark-master", "Starting Spark master at", serverStartTimeout)
if maErr != nil {
- framework.Failf("Didn't find target string. error:", maErr)
+ framework.Failf("Didn't find target string. error: %v", maErr)
}
})
}
diff --git a/test/e2e/framework/BUILD b/test/e2e/framework/BUILD
index ac6f876895..66bab803c1 100644
--- a/test/e2e/framework/BUILD
+++ b/test/e2e/framework/BUILD
@@ -41,13 +41,13 @@ go_library(
],
importpath = "k8s.io/kubernetes/test/e2e/framework",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
- "//pkg/api/v1/helper:go_default_library",
"//pkg/api/v1/pod:go_default_library",
"//pkg/apis/apps:go_default_library",
"//pkg/apis/batch:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/conditions:go_default_library",
@@ -161,6 +161,7 @@ filegroup(
":package-srcs",
"//test/e2e/framework/ginkgowrapper:all-srcs",
"//test/e2e/framework/metrics:all-srcs",
+ "//test/e2e/framework/timer:all-srcs",
],
tags = ["automanaged"],
)
diff --git a/test/e2e/framework/framework.go b/test/e2e/framework/framework.go
index 7d6661b4cb..d75bfb93f1 100644
--- a/test/e2e/framework/framework.go
+++ b/test/e2e/framework/framework.go
@@ -203,13 +203,15 @@ func (f *Framework) BeforeEach() {
if TestContext.GatherKubeSystemResourceUsageData != "false" && TestContext.GatherKubeSystemResourceUsageData != "none" {
var err error
f.gatherer, err = NewResourceUsageGatherer(f.ClientSet, ResourceGathererOptions{
- inKubemark: ProviderIs("kubemark"),
- masterOnly: TestContext.GatherKubeSystemResourceUsageData == "master",
- })
+ InKubemark: ProviderIs("kubemark"),
+ MasterOnly: TestContext.GatherKubeSystemResourceUsageData == "master",
+ ResourceDataGatheringPeriod: 60 * time.Second,
+ ProbeDuration: 5 * time.Second,
+ }, nil)
if err != nil {
Logf("Error while creating NewResourceUsageGatherer: %v", err)
} else {
- go f.gatherer.startGatheringData()
+ go f.gatherer.StartGatheringData()
}
}
@@ -319,7 +321,7 @@ func (f *Framework) AfterEach() {
if TestContext.GatherKubeSystemResourceUsageData != "false" && TestContext.GatherKubeSystemResourceUsageData != "none" && f.gatherer != nil {
By("Collecting resource usage data")
- summary, resourceViolationError := f.gatherer.stopAndSummarize([]int{90, 99, 100}, f.AddonResourceConstraints)
+ summary, resourceViolationError := f.gatherer.StopAndSummarize([]int{90, 99, 100}, f.AddonResourceConstraints)
defer ExpectNoError(resourceViolationError)
f.TestSummaries = append(f.TestSummaries, summary)
}
diff --git a/test/e2e/framework/metrics/BUILD b/test/e2e/framework/metrics/BUILD
index a87a7c6e86..83c93700ad 100644
--- a/test/e2e/framework/metrics/BUILD
+++ b/test/e2e/framework/metrics/BUILD
@@ -18,7 +18,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/test/e2e/framework/metrics",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/master/ports:go_default_library",
"//pkg/util/system:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
diff --git a/test/e2e/framework/metrics/metrics_grabber.go b/test/e2e/framework/metrics/metrics_grabber.go
index 116be3f999..806ceb5599 100644
--- a/test/e2e/framework/metrics/metrics_grabber.go
+++ b/test/e2e/framework/metrics/metrics_grabber.go
@@ -23,7 +23,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/fields"
clientset "k8s.io/client-go/kubernetes"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/master/ports"
"k8s.io/kubernetes/pkg/util/system"
diff --git a/test/e2e/framework/pv_util.go b/test/e2e/framework/pv_util.go
index 563dc57979..92c91a70cb 100644
--- a/test/e2e/framework/pv_util.go
+++ b/test/e2e/framework/pv_util.go
@@ -36,7 +36,7 @@ import (
"k8s.io/apimachinery/pkg/util/uuid"
clientset "k8s.io/client-go/kubernetes"
"k8s.io/kubernetes/pkg/api/testapi"
- "k8s.io/kubernetes/pkg/api/v1/helper"
+ "k8s.io/kubernetes/pkg/apis/core/v1/helper"
awscloud "k8s.io/kubernetes/pkg/cloudprovider/providers/aws"
gcecloud "k8s.io/kubernetes/pkg/cloudprovider/providers/gce"
"k8s.io/kubernetes/pkg/volume/util/volumehelper"
diff --git a/test/e2e/framework/rc_util.go b/test/e2e/framework/rc_util.go
index b3b20b0f80..d0d1982b53 100644
--- a/test/e2e/framework/rc_util.go
+++ b/test/e2e/framework/rc_util.go
@@ -28,8 +28,8 @@ import (
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/util/wait"
clientset "k8s.io/client-go/kubernetes"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testapi"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
testutils "k8s.io/kubernetes/test/utils"
)
diff --git a/test/e2e/framework/resource_usage_gatherer.go b/test/e2e/framework/resource_usage_gatherer.go
index 6ed5ff2bff..6284bd17f6 100644
--- a/test/e2e/framework/resource_usage_gatherer.go
+++ b/test/e2e/framework/resource_usage_gatherer.go
@@ -27,17 +27,13 @@ import (
"text/tabwriter"
"time"
+ "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
clientset "k8s.io/client-go/kubernetes"
"k8s.io/kubernetes/pkg/util/system"
)
-const (
- resourceDataGatheringPeriod = 60 * time.Second
- probeDuration = 15 * time.Second
-)
-
type ResourceConstraint struct {
CPUConstraint float64
MemoryConstraint uint64
@@ -131,14 +127,16 @@ func leftMergeData(left, right map[int]ResourceUsagePerContainer) map[int]Resour
}
type resourceGatherWorker struct {
- c clientset.Interface
- nodeName string
- wg *sync.WaitGroup
- containerIDs []string
- stopCh chan struct{}
- dataSeries []ResourceUsagePerContainer
- finished bool
- inKubemark bool
+ c clientset.Interface
+ nodeName string
+ wg *sync.WaitGroup
+ containerIDs []string
+ stopCh chan struct{}
+ dataSeries []ResourceUsagePerContainer
+ finished bool
+ inKubemark bool
+ resourceDataGatheringPeriod time.Duration
+ probeDuration time.Duration
}
func (w *resourceGatherWorker) singleProbe() {
@@ -156,13 +154,14 @@ func (w *resourceGatherWorker) singleProbe() {
}
}
} else {
- nodeUsage, err := getOneTimeResourceUsageOnNode(w.c, w.nodeName, probeDuration, func() []string { return w.containerIDs })
+ nodeUsage, err := getOneTimeResourceUsageOnNode(w.c, w.nodeName, w.probeDuration, func() []string { return w.containerIDs })
if err != nil {
Logf("Error while reading data from %v: %v", w.nodeName, err)
return
}
for k, v := range nodeUsage {
data[k] = v
+ Logf("Get container %v usage on node %v. CPUUsageInCores: %v, MemoryUsageInBytes: %v, MemoryWorkingSetInBytes: %v", k, w.nodeName, v.CPUUsageInCores, v.MemoryUsageInBytes, v.MemoryWorkingSetInBytes)
}
}
w.dataSeries = append(w.dataSeries, data)
@@ -178,7 +177,7 @@ func (w *resourceGatherWorker) gather(initialSleep time.Duration) {
w.singleProbe()
for {
select {
- case <-time.After(resourceDataGatheringPeriod):
+ case <-time.After(w.resourceDataGatheringPeriod):
w.singleProbe()
case <-w.stopCh:
return
@@ -189,19 +188,6 @@ func (w *resourceGatherWorker) gather(initialSleep time.Duration) {
}
}
-func (g *containerResourceGatherer) getKubeSystemContainersResourceUsage(c clientset.Interface) {
- if len(g.workers) == 0 {
- return
- }
- delayPeriod := resourceDataGatheringPeriod / time.Duration(len(g.workers))
- delay := time.Duration(0)
- for i := range g.workers {
- go g.workers[i].gather(delay)
- delay += delayPeriod
- }
- g.workerWg.Wait()
-}
-
type containerResourceGatherer struct {
client clientset.Interface
stopCh chan struct{}
@@ -212,11 +198,13 @@ type containerResourceGatherer struct {
}
type ResourceGathererOptions struct {
- inKubemark bool
- masterOnly bool
+ InKubemark bool
+ MasterOnly bool
+ ResourceDataGatheringPeriod time.Duration
+ ProbeDuration time.Duration
}
-func NewResourceUsageGatherer(c clientset.Interface, options ResourceGathererOptions) (*containerResourceGatherer, error) {
+func NewResourceUsageGatherer(c clientset.Interface, options ResourceGathererOptions, pods *v1.PodList) (*containerResourceGatherer, error) {
g := containerResourceGatherer{
client: c,
stopCh: make(chan struct{}),
@@ -224,7 +212,7 @@ func NewResourceUsageGatherer(c clientset.Interface, options ResourceGathererOpt
options: options,
}
- if options.inKubemark {
+ if options.InKubemark {
g.workerWg.Add(1)
g.workers = append(g.workers, resourceGatherWorker{
inKubemark: true,
@@ -233,12 +221,19 @@ func NewResourceUsageGatherer(c clientset.Interface, options ResourceGathererOpt
finished: false,
})
} else {
- pods, err := c.CoreV1().Pods("kube-system").List(metav1.ListOptions{})
- if err != nil {
- Logf("Error while listing Pods: %v", err)
- return nil, err
+ // Tracks kube-system pods if no valid PodList is passed in.
+ var err error
+ if pods == nil {
+ pods, err = c.CoreV1().Pods("kube-system").List(metav1.ListOptions{})
+ if err != nil {
+ Logf("Error while listing Pods: %v", err)
+ return nil, err
+ }
}
for _, pod := range pods.Items {
+ for _, container := range pod.Status.InitContainerStatuses {
+ g.containerIDs = append(g.containerIDs, container.Name)
+ }
for _, container := range pod.Status.ContainerStatuses {
g.containerIDs = append(g.containerIDs, container.Name)
}
@@ -250,18 +245,20 @@ func NewResourceUsageGatherer(c clientset.Interface, options ResourceGathererOpt
}
for _, node := range nodeList.Items {
- if !options.masterOnly || system.IsMasterNode(node.Name) {
+ if !options.MasterOnly || system.IsMasterNode(node.Name) {
g.workerWg.Add(1)
g.workers = append(g.workers, resourceGatherWorker{
- c: c,
- nodeName: node.Name,
- wg: &g.workerWg,
- containerIDs: g.containerIDs,
- stopCh: g.stopCh,
- finished: false,
- inKubemark: false,
+ c: c,
+ nodeName: node.Name,
+ wg: &g.workerWg,
+ containerIDs: g.containerIDs,
+ stopCh: g.stopCh,
+ finished: false,
+ inKubemark: false,
+ resourceDataGatheringPeriod: options.ResourceDataGatheringPeriod,
+ probeDuration: options.ProbeDuration,
})
- if options.masterOnly {
+ if options.MasterOnly {
break
}
}
@@ -270,12 +267,26 @@ func NewResourceUsageGatherer(c clientset.Interface, options ResourceGathererOpt
return &g, nil
}
-// startGatheringData blocks until stopAndSummarize is called.
-func (g *containerResourceGatherer) startGatheringData() {
- g.getKubeSystemContainersResourceUsage(g.client)
+// StartGatheringData starts a stat gathering worker blocks for each node to track,
+// and blocks until StopAndSummarize is called.
+func (g *containerResourceGatherer) StartGatheringData() {
+ if len(g.workers) == 0 {
+ return
+ }
+ delayPeriod := g.options.ResourceDataGatheringPeriod / time.Duration(len(g.workers))
+ delay := time.Duration(0)
+ for i := range g.workers {
+ go g.workers[i].gather(delay)
+ delay += delayPeriod
+ }
+ g.workerWg.Wait()
}
-func (g *containerResourceGatherer) stopAndSummarize(percentiles []int, constraints map[string]ResourceConstraint) (*ResourceUsageSummary, error) {
+// StopAndSummarize stops stat gathering workers, processes the collected stats,
+// generates resource summary for the passed-in percentiles, and returns the summary.
+// It returns an error if the resource usage at any percentile is beyond the
+// specified resource constraints.
+func (g *containerResourceGatherer) StopAndSummarize(percentiles []int, constraints map[string]ResourceConstraint) (*ResourceUsageSummary, error) {
close(g.stopCh)
Logf("Closed stop channel. Waiting for %v workers", len(g.workers))
finished := make(chan struct{})
diff --git a/test/e2e/framework/service_util.go b/test/e2e/framework/service_util.go
index d9c675b1ff..cfb3ebdf27 100644
--- a/test/e2e/framework/service_util.go
+++ b/test/e2e/framework/service_util.go
@@ -37,7 +37,7 @@ import (
"k8s.io/apimachinery/pkg/util/wait"
clientset "k8s.io/client-go/kubernetes"
"k8s.io/client-go/util/retry"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
azurecloud "k8s.io/kubernetes/pkg/cloudprovider/providers/azure"
gcecloud "k8s.io/kubernetes/pkg/cloudprovider/providers/gce"
diff --git a/test/e2e/framework/test_context.go b/test/e2e/framework/test_context.go
index d70c2015e5..54e261abff 100644
--- a/test/e2e/framework/test_context.go
+++ b/test/e2e/framework/test_context.go
@@ -65,6 +65,9 @@ type TestContextType struct {
GCEUpgradeScript string
ContainerRuntime string
ContainerRuntimeEndpoint string
+ // SystemdServices are comma separated list of systemd services the test framework
+ // will dump logs for.
+ SystemdServices string
ImageServiceEndpoint string
MasterOSDistro string
NodeOSDistro string
@@ -102,6 +105,8 @@ type TestContextType struct {
FeatureGates string
// Node e2e specific test context
NodeTestContextType
+ // Monitoring solution that is used in current cluster.
+ ClusterMonitoringMode string
// Indicates what path the kubernetes-anywhere is installed on
KubernetesAnywherePath string
@@ -199,6 +204,7 @@ func RegisterCommonFlags() {
flag.StringVar(&TestContext.Viper, "viper-config", "e2e", "The name of the viper config i.e. 'e2e' will read values from 'e2e.json' locally. All e2e parameters are meant to be configurable by viper.")
flag.StringVar(&TestContext.ContainerRuntime, "container-runtime", "docker", "The container runtime of cluster VM instances (docker/rkt/remote).")
flag.StringVar(&TestContext.ContainerRuntimeEndpoint, "container-runtime-endpoint", "", "The container runtime endpoint of cluster VM instances.")
+ flag.StringVar(&TestContext.SystemdServices, "systemd-services", "docker", "The comma separated list of systemd services the framework will dump logs for.")
flag.StringVar(&TestContext.ImageServiceEndpoint, "image-service-endpoint", "", "The image service endpoint of cluster VM instances.")
flag.StringVar(&TestContext.DockershimCheckpointDir, "dockershim-checkpoint-dir", "/var/lib/dockershim/sandbox", "The directory for dockershim to store sandbox checkpoints.")
flag.StringVar(&TestContext.KubernetesAnywherePath, "kubernetes-anywhere-path", "/workspace/kubernetes-anywhere", "Which directory kubernetes-anywhere is installed to.")
@@ -221,6 +227,7 @@ func RegisterClusterFlags() {
flag.StringVar(&TestContext.Prefix, "prefix", "e2e", "A prefix to be added to cloud resources created during testing.")
flag.StringVar(&TestContext.MasterOSDistro, "master-os-distro", "debian", "The OS distribution of cluster master (debian, trusty, or coreos).")
flag.StringVar(&TestContext.NodeOSDistro, "node-os-distro", "debian", "The OS distribution of cluster VM instances (debian, trusty, or coreos).")
+ flag.StringVar(&TestContext.ClusterMonitoringMode, "cluster-monitoring-mode", "influxdb", "The monitoring solution that is used in the cluster.")
// TODO: Flags per provider? Rename gce-project/gce-zone?
cloudConfig := &TestContext.CloudConfig
diff --git a/test/e2e/framework/timer/BUILD b/test/e2e/framework/timer/BUILD
new file mode 100644
index 0000000000..afdc516b97
--- /dev/null
+++ b/test/e2e/framework/timer/BUILD
@@ -0,0 +1,34 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
+
+go_library(
+ name = "go_default_library",
+ srcs = ["timer.go"],
+ importpath = "k8s.io/kubernetes/test/e2e/framework/timer",
+ visibility = ["//visibility:public"],
+ deps = [
+ "//test/e2e/framework:go_default_library",
+ "//test/e2e/perftype:go_default_library",
+ ],
+)
+
+go_test(
+ name = "go_default_test",
+ srcs = ["timer_test.go"],
+ importpath = "k8s.io/kubernetes/test/e2e/framework/timer",
+ library = ":go_default_library",
+ deps = ["//vendor/github.com/onsi/gomega:go_default_library"],
+)
+
+filegroup(
+ name = "package-srcs",
+ srcs = glob(["**"]),
+ tags = ["automanaged"],
+ visibility = ["//visibility:private"],
+)
+
+filegroup(
+ name = "all-srcs",
+ srcs = [":package-srcs"],
+ tags = ["automanaged"],
+ visibility = ["//visibility:public"],
+)
diff --git a/test/e2e/framework/timer/timer.go b/test/e2e/framework/timer/timer.go
new file mode 100644
index 0000000000..37769cb344
--- /dev/null
+++ b/test/e2e/framework/timer/timer.go
@@ -0,0 +1,126 @@
+/*
+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 timer
+
+import (
+ "time"
+
+ "bytes"
+ "fmt"
+
+ "k8s.io/kubernetes/test/e2e/framework"
+ "k8s.io/kubernetes/test/e2e/perftype"
+ "sync"
+)
+
+var now = time.Now
+
+// Represents a phase of a test. Phases can overlap.
+type Phase struct {
+ sequenceNumber int
+ name string
+ startTime time.Time
+ endTime time.Time
+}
+
+func (phase *Phase) ended() bool {
+ return !phase.endTime.IsZero()
+}
+
+// End marks the phase as ended, unless it had already been ended before.
+func (phase *Phase) End() {
+ if !phase.ended() {
+ phase.endTime = now()
+ }
+}
+
+func (phase *Phase) label() string {
+ return fmt.Sprintf("%03d-%s", phase.sequenceNumber, phase.name)
+}
+
+func (phase *Phase) duration() time.Duration {
+ endTime := phase.endTime
+ if !phase.ended() {
+ endTime = now()
+ }
+ return endTime.Sub(phase.startTime)
+}
+
+func (phase *Phase) humanReadable() string {
+ if phase.ended() {
+ return fmt.Sprintf("Phase %s: %v\n", phase.label(), phase.duration())
+ } else {
+ return fmt.Sprintf("Phase %s: %v so far\n", phase.label(), phase.duration())
+ }
+}
+
+// A TestPhaseTimer groups phases and provides a way to export their measurements as JSON or human-readable text.
+// It is safe to use concurrently.
+type TestPhaseTimer struct {
+ lock sync.Mutex
+ phases []*Phase
+}
+
+// NewTestPhaseTimer creates a new TestPhaseTimer.
+func NewTestPhaseTimer() *TestPhaseTimer {
+ return &TestPhaseTimer{}
+}
+
+// StartPhase starts a new phase.
+// sequenceNumber is an integer prepended to phaseName in the output, such that lexicographic sorting
+// of phases in perfdash reconstructs the order of execution. Unfortunately it needs to be
+// provided manually, since a simple incrementing counter would have the effect that inserting
+// a new phase would renumber subsequent phases, breaking the continuity of historical records.
+func (timer *TestPhaseTimer) StartPhase(sequenceNumber int, phaseName string) *Phase {
+ timer.lock.Lock()
+ defer timer.lock.Unlock()
+ newPhase := &Phase{sequenceNumber: sequenceNumber, name: phaseName, startTime: now()}
+ timer.phases = append(timer.phases, newPhase)
+ return newPhase
+}
+
+func (timer *TestPhaseTimer) SummaryKind() string {
+ return "TestPhaseTimer"
+}
+
+func (timer *TestPhaseTimer) PrintHumanReadable() string {
+ buf := bytes.Buffer{}
+ timer.lock.Lock()
+ defer timer.lock.Unlock()
+ for _, phase := range timer.phases {
+ buf.WriteString(phase.humanReadable())
+ }
+ return buf.String()
+}
+
+func (timer *TestPhaseTimer) PrintJSON() string {
+ data := perftype.PerfData{
+ Version: "v1",
+ DataItems: []perftype.DataItem{{
+ Unit: "s",
+ Labels: map[string]string{"test": "phases"},
+ Data: make(map[string]float64)}}}
+ timer.lock.Lock()
+ defer timer.lock.Unlock()
+ for _, phase := range timer.phases {
+ data.DataItems[0].Data[phase.label()] = phase.duration().Seconds()
+ if !phase.ended() {
+ data.DataItems[0].Labels["ended"] = "false"
+ }
+ }
+ return framework.PrettyPrintJSON(data)
+}
diff --git a/test/e2e/framework/timer/timer_test.go b/test/e2e/framework/timer/timer_test.go
new file mode 100644
index 0000000000..d3dd13c9e9
--- /dev/null
+++ b/test/e2e/framework/timer/timer_test.go
@@ -0,0 +1,92 @@
+/*
+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 timer
+
+import (
+ "testing"
+ "time"
+
+ . "github.com/onsi/gomega"
+)
+
+var currentTime time.Time
+
+func init() {
+ setCurrentTimeSinceEpoch(0)
+ now = func() time.Time { return currentTime }
+}
+
+func setCurrentTimeSinceEpoch(duration time.Duration) {
+ currentTime = time.Unix(0, duration.Nanoseconds())
+}
+
+func testUsageWithDefer(timer *TestPhaseTimer) {
+ defer timer.StartPhase(33, "two").End()
+ setCurrentTimeSinceEpoch(6*time.Second + 500*time.Millisecond)
+}
+
+func TestTimer(t *testing.T) {
+ RegisterTestingT(t)
+
+ timer := NewTestPhaseTimer()
+ setCurrentTimeSinceEpoch(1 * time.Second)
+ phaseOne := timer.StartPhase(1, "one")
+ setCurrentTimeSinceEpoch(3 * time.Second)
+ testUsageWithDefer(timer)
+
+ Expect(timer.PrintJSON()).To(MatchJSON(`{
+ "version": "v1",
+ "dataItems": [
+ {
+ "data": {
+ "001-one": 5.5,
+ "033-two": 3.5
+ },
+ "unit": "s",
+ "labels": {
+ "test": "phases",
+ "ended": "false"
+ }
+ }
+ ]
+ }`))
+ Expect(timer.PrintHumanReadable()).To(Equal(`Phase 001-one: 5.5s so far
+Phase 033-two: 3.5s
+`))
+
+ setCurrentTimeSinceEpoch(7*time.Second + 500*time.Millisecond)
+ phaseOne.End()
+
+ Expect(timer.PrintJSON()).To(MatchJSON(`{
+ "version": "v1",
+ "dataItems": [
+ {
+ "data": {
+ "001-one": 6.5,
+ "033-two": 3.5
+ },
+ "unit": "s",
+ "labels": {
+ "test": "phases"
+ }
+ }
+ ]
+ }`))
+ Expect(timer.PrintHumanReadable()).To(Equal(`Phase 001-one: 6.5s
+Phase 033-two: 3.5s
+`))
+}
diff --git a/test/e2e/framework/util.go b/test/e2e/framework/util.go
index f3f86b81d1..bddeeeb363 100644
--- a/test/e2e/framework/util.go
+++ b/test/e2e/framework/util.go
@@ -75,12 +75,12 @@ import (
utilfeature "k8s.io/apiserver/pkg/util/feature"
clientset "k8s.io/client-go/kubernetes"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
podutil "k8s.io/kubernetes/pkg/api/v1/pod"
appsinternal "k8s.io/kubernetes/pkg/apis/apps"
batchinternal "k8s.io/kubernetes/pkg/apis/batch"
+ api "k8s.io/kubernetes/pkg/apis/core"
extensionsinternal "k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/pkg/client/conditions"
@@ -331,6 +331,12 @@ func SkipUnlessProviderIs(supportedProviders ...string) {
}
}
+func SkipUnlessClusterMonitoringModeIs(supportedMonitoring ...string) {
+ if !ClusterMonitoringModeIs(supportedMonitoring...) {
+ Skipf("Only next monitoring modes are supported %v (not %s)", supportedMonitoring, TestContext.ClusterMonitoringMode)
+ }
+}
+
func SkipUnlessMasterOSDistroIs(supportedMasterOsDistros ...string) {
if !MasterOSDistroIs(supportedMasterOsDistros...) {
Skipf("Only supported for master OS distro %v (not %s)", supportedMasterOsDistros, TestContext.MasterOSDistro)
@@ -378,6 +384,15 @@ func ProviderIs(providers ...string) bool {
return false
}
+func ClusterMonitoringModeIs(monitoringModes ...string) bool {
+ for _, mode := range monitoringModes {
+ if strings.ToLower(mode) == strings.ToLower(TestContext.ClusterMonitoringMode) {
+ return true
+ }
+ }
+ return false
+}
+
func MasterOSDistroIs(supportedMasterOsDistros ...string) bool {
for _, distro := range supportedMasterOsDistros {
if strings.ToLower(distro) == strings.ToLower(TestContext.MasterOSDistro) {
@@ -2714,6 +2729,19 @@ func WaitForControlledPodsRunning(c clientset.Interface, ns, name string, kind s
return nil
}
+// Wait up to PodListTimeout for getting pods of the specified controller name and return them.
+func WaitForControlledPods(c clientset.Interface, ns, name string, kind schema.GroupKind) (pods *v1.PodList, err error) {
+ rtObject, err := getRuntimeObjectForKind(c, kind, ns, name)
+ if err != nil {
+ return nil, err
+ }
+ selector, err := getSelectorFromRuntimeObject(rtObject)
+ if err != nil {
+ return nil, err
+ }
+ return WaitForPodsWithLabel(c, ns, selector)
+}
+
// Returns true if all the specified pods are scheduled, else returns false.
func podsWithLabelScheduled(c clientset.Interface, ns string, label labels.Selector) (bool, error) {
PodStore := testutil.NewPodStore(c, ns, label, fields.Everything())
@@ -4545,6 +4573,7 @@ func CoreDump(dir string) {
Logf("Dumping logs locally to: %s", dir)
cmd = exec.Command(path.Join(TestContext.RepoRoot, "cluster", "log-dump", "log-dump.sh"), dir)
}
+ cmd.Env = append(os.Environ(), fmt.Sprintf("SYSTEMD_SERVICES=%s", parseSystemdServices(TestContext.SystemdServices)))
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
if err := cmd.Run(); err != nil {
@@ -4552,6 +4581,11 @@ func CoreDump(dir string) {
}
}
+// parseSystemdServices converts services separator from comma to space.
+func parseSystemdServices(services string) string {
+ return strings.TrimSpace(strings.Replace(services, ",", " ", -1))
+}
+
func UpdatePodWithRetries(client clientset.Interface, ns, name string, update func(*v1.Pod)) (*v1.Pod, error) {
for i := 0; i < 3; i++ {
pod, err := client.CoreV1().Pods(ns).Get(name, metav1.GetOptions{})
diff --git a/test/e2e/instrumentation/logging/elasticsearch/BUILD b/test/e2e/instrumentation/logging/elasticsearch/BUILD
index 3ae5714974..bb267b1fc8 100644
--- a/test/e2e/instrumentation/logging/elasticsearch/BUILD
+++ b/test/e2e/instrumentation/logging/elasticsearch/BUILD
@@ -14,7 +14,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/test/e2e/instrumentation/logging/elasticsearch",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//test/e2e/framework:go_default_library",
"//test/e2e/instrumentation/common:go_default_library",
"//test/e2e/instrumentation/logging/utils:go_default_library",
diff --git a/test/e2e/instrumentation/logging/elasticsearch/utils.go b/test/e2e/instrumentation/logging/elasticsearch/utils.go
index 8c06c0cc04..dd1ca884f4 100644
--- a/test/e2e/instrumentation/logging/elasticsearch/utils.go
+++ b/test/e2e/instrumentation/logging/elasticsearch/utils.go
@@ -24,7 +24,7 @@ import (
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/fields"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/test/e2e/framework"
"k8s.io/kubernetes/test/e2e/instrumentation/logging/utils"
)
diff --git a/test/e2e/instrumentation/logging/utils/BUILD b/test/e2e/instrumentation/logging/utils/BUILD
index 21edf06430..c965ff43b5 100644
--- a/test/e2e/instrumentation/logging/utils/BUILD
+++ b/test/e2e/instrumentation/logging/utils/BUILD
@@ -17,7 +17,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/test/e2e/instrumentation/logging/utils",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//test/e2e/framework:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
diff --git a/test/e2e/instrumentation/logging/utils/logging_agent.go b/test/e2e/instrumentation/logging/utils/logging_agent.go
index e2452091b8..cf5a98c0ce 100644
--- a/test/e2e/instrumentation/logging/utils/logging_agent.go
+++ b/test/e2e/instrumentation/logging/utils/logging_agent.go
@@ -23,7 +23,7 @@ import (
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/client-go/util/integer"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/test/e2e/framework"
)
diff --git a/test/e2e/instrumentation/monitoring/BUILD b/test/e2e/instrumentation/monitoring/BUILD
index 0e529a46c5..4a0523411c 100644
--- a/test/e2e/instrumentation/monitoring/BUILD
+++ b/test/e2e/instrumentation/monitoring/BUILD
@@ -28,6 +28,7 @@ go_library(
"//vendor/google.golang.org/api/monitoring/v3:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/api/extensions/v1beta1:go_default_library",
+ "//vendor/k8s.io/api/rbac/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
diff --git a/test/e2e/instrumentation/monitoring/custom_metrics_deployments.go b/test/e2e/instrumentation/monitoring/custom_metrics_deployments.go
index 60af16178c..2adae0d4b6 100644
--- a/test/e2e/instrumentation/monitoring/custom_metrics_deployments.go
+++ b/test/e2e/instrumentation/monitoring/custom_metrics_deployments.go
@@ -21,6 +21,7 @@ import (
gcm "google.golang.org/api/monitoring/v3"
corev1 "k8s.io/api/core/v1"
extensions "k8s.io/api/extensions/v1beta1"
+ rbac "k8s.io/api/rbac/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kubernetes/test/e2e/framework"
)
@@ -30,6 +31,25 @@ var (
UnusedMetricName = "unused-metric"
CustomMetricValue = int64(448)
UnusedMetricValue = int64(446)
+ // HPAPermissions is a ClusterRoleBinding that grants unauthenticated user permissions granted for
+ // HPA for testing purposes, i.e. it should grant permission to read custom metrics.
+ HPAPermissions = &rbac.ClusterRoleBinding{
+ ObjectMeta: metav1.ObjectMeta{
+ Name: "custom-metrics-reader",
+ },
+ RoleRef: rbac.RoleRef{
+ APIGroup: "rbac.authorization.k8s.io",
+ Kind: "ClusterRole",
+ Name: "system:controller:horizontal-pod-autoscaler",
+ },
+ Subjects: []rbac.Subject{
+ {
+ APIGroup: "rbac.authorization.k8s.io",
+ Kind: "Group",
+ Name: "system:unauthenticated",
+ },
+ },
+ }
)
// StackdriverExporterDeployment is a Deployment of simple application that exports a metric of
diff --git a/test/e2e/instrumentation/monitoring/custom_metrics_stackdriver.go b/test/e2e/instrumentation/monitoring/custom_metrics_stackdriver.go
index a739df480d..cdf2c127fe 100644
--- a/test/e2e/instrumentation/monitoring/custom_metrics_stackdriver.go
+++ b/test/e2e/instrumentation/monitoring/custom_metrics_stackdriver.go
@@ -104,6 +104,9 @@ func testAdapter(f *framework.Framework, kubeClient clientset.Interface, customM
}
defer CleanupAdapter()
+ _, err = kubeClient.Rbac().ClusterRoleBindings().Create(HPAPermissions)
+ defer kubeClient.Rbac().ClusterRoleBindings().Delete("custom-metrics-reader", &metav1.DeleteOptions{})
+
// Run application that exports the metric
err = createSDExporterPods(f, kubeClient)
if err != nil {
diff --git a/test/e2e/instrumentation/monitoring/influxdb.go b/test/e2e/instrumentation/monitoring/influxdb.go
index 0dc27036dd..f73a3b757e 100644
--- a/test/e2e/instrumentation/monitoring/influxdb.go
+++ b/test/e2e/instrumentation/monitoring/influxdb.go
@@ -39,6 +39,7 @@ var _ = instrumentation.SIGDescribe("Monitoring", func() {
BeforeEach(func() {
framework.SkipUnlessProviderIs("gce")
+ framework.SkipUnlessClusterMonitoringModeIs("influxdb")
})
It("should verify monitoring pods and all cluster nodes are available on influxdb using heapster.", func() {
diff --git a/test/e2e/lifecycle/BUILD b/test/e2e/lifecycle/BUILD
index 938b36aa65..2a004bd756 100644
--- a/test/e2e/lifecycle/BUILD
+++ b/test/e2e/lifecycle/BUILD
@@ -18,7 +18,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/test/e2e/lifecycle",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/kubelet/pod:go_default_library",
"//pkg/util/version:go_default_library",
"//test/e2e/chaosmonkey:go_default_library",
diff --git a/test/e2e/lifecycle/reboot.go b/test/e2e/lifecycle/reboot.go
index b246ab0fa6..04cabdde82 100644
--- a/test/e2e/lifecycle/reboot.go
+++ b/test/e2e/lifecycle/reboot.go
@@ -28,7 +28,7 @@ import (
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/util/sets"
clientset "k8s.io/client-go/kubernetes"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/test/e2e/framework"
testutils "k8s.io/kubernetes/test/utils"
diff --git a/test/e2e/network/BUILD b/test/e2e/network/BUILD
index 449106762a..32d440f9d7 100644
--- a/test/e2e/network/BUILD
+++ b/test/e2e/network/BUILD
@@ -30,8 +30,8 @@ go_library(
],
importpath = "k8s.io/kubernetes/test/e2e/network",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/testapi:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/cloudprovider:go_default_library",
"//pkg/cloudprovider/providers/gce:go_default_library",
diff --git a/test/e2e/network/dns.go b/test/e2e/network/dns.go
index cc82b2cf30..556d472082 100644
--- a/test/e2e/network/dns.go
+++ b/test/e2e/network/dns.go
@@ -269,6 +269,10 @@ func reverseArray(arr []string) []string {
var _ = SIGDescribe("DNS", func() {
f := framework.NewDefaultFramework("dns")
+ /*
+ Testname: dns-for-clusters
+ Description: Make sure that DNS can resolve the names of clusters.
+ */
framework.ConformanceIt("should provide DNS for the cluster ", func() {
// All the names we need to be able to resolve.
// TODO: Spin up a separate test service and test that dns works for that service.
@@ -295,6 +299,10 @@ var _ = SIGDescribe("DNS", func() {
validateDNSResults(f, pod, append(wheezyFileNames, jessieFileNames...))
})
+ /*
+ Testname: dns-for-services
+ Description: Make sure that DNS can resolve the names of services.
+ */
framework.ConformanceIt("should provide DNS for services ", func() {
// Create a test headless service.
By("Creating a test headless service")
diff --git a/test/e2e/network/example_cluster_dns.go b/test/e2e/network/example_cluster_dns.go
index 8c510c2f3e..edf6297692 100644
--- a/test/e2e/network/example_cluster_dns.go
+++ b/test/e2e/network/example_cluster_dns.go
@@ -28,7 +28,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
clientset "k8s.io/client-go/kubernetes"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/test/e2e/framework"
. "github.com/onsi/ginkgo"
diff --git a/test/e2e/network/service.go b/test/e2e/network/service.go
index 657131df75..5bf65d1a80 100644
--- a/test/e2e/network/service.go
+++ b/test/e2e/network/service.go
@@ -484,6 +484,11 @@ var _ = SIGDescribe("Services", func() {
It("should be able to change the type and ports of a service [Slow]", func() {
// requires cloud load-balancer support
framework.SkipUnlessProviderIs("gce", "gke", "aws")
+ if framework.ProviderIs("gke", "gce") {
+ // Skipping this test for too large clusters due to issue #52495.
+ // TODO(MrHohn): Get rid of this when gce-side load-balancer improvements are done.
+ framework.SkipUnlessNodeCountIsAtMost(framework.GCPMaxInstancesInInstanceGroup)
+ }
loadBalancerSupportsUDP := !framework.ProviderIs("aws")
@@ -803,6 +808,53 @@ var _ = SIGDescribe("Services", func() {
}
})
+ It("should be able to update NodePorts with two same port numbers but different protocols", func() {
+ serviceName := "nodeport-update-service"
+ ns := f.Namespace.Name
+ jig := framework.NewServiceTestJig(cs, serviceName)
+
+ By("creating a TCP service " + serviceName + " with type=ClusterIP in namespace " + ns)
+ tcpService := jig.CreateTCPServiceOrFail(ns, nil)
+ defer func() {
+ framework.Logf("Cleaning up the updating NodePorts test service")
+ err := cs.Core().Services(ns).Delete(serviceName, nil)
+ Expect(err).NotTo(HaveOccurred())
+ }()
+ jig.SanityCheckService(tcpService, v1.ServiceTypeClusterIP)
+ svcPort := int(tcpService.Spec.Ports[0].Port)
+ framework.Logf("service port TCP: %d", svcPort)
+
+ // Change the services to NodePort and add a UDP port.
+
+ By("changing the TCP service to type=NodePort and add a UDP port")
+ newService := jig.UpdateServiceOrFail(ns, tcpService.Name, func(s *v1.Service) {
+ s.Spec.Type = v1.ServiceTypeNodePort
+ s.Spec.Ports = []v1.ServicePort{
+ {
+ Name: "tcp-port",
+ Port: 80,
+ Protocol: v1.ProtocolTCP,
+ },
+ {
+ Name: "udp-port",
+ Port: 80,
+ Protocol: v1.ProtocolUDP,
+ },
+ }
+ })
+ jig.SanityCheckService(newService, v1.ServiceTypeNodePort)
+ if len(newService.Spec.Ports) != 2 {
+ framework.Failf("new service should have two Ports")
+ }
+ for _, port := range newService.Spec.Ports {
+ if port.NodePort == 0 {
+ framework.Failf("new service failed to allocate NodePort for Port %s", port.Name)
+ }
+
+ framework.Logf("new service allocates NodePort %d for Port %s", port.NodePort, port.Name)
+ }
+ })
+
It("should be able to change the type from ExternalName to ClusterIP", func() {
serviceName := "externalname-service"
ns := f.Namespace.Name
diff --git a/test/e2e/network/serviceloadbalancers.go b/test/e2e/network/serviceloadbalancers.go
index 743b753512..8f252b0711 100644
--- a/test/e2e/network/serviceloadbalancers.go
+++ b/test/e2e/network/serviceloadbalancers.go
@@ -26,7 +26,7 @@ import (
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/util/wait"
clientset "k8s.io/client-go/kubernetes"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/test/e2e/framework"
"k8s.io/kubernetes/test/e2e/manifest"
diff --git a/test/e2e/network/util_iperf.go b/test/e2e/network/util_iperf.go
index f33d1888f4..4b462defab 100644
--- a/test/e2e/network/util_iperf.go
+++ b/test/e2e/network/util_iperf.go
@@ -69,6 +69,7 @@ func (i *IPerfResults) ToTSV() string {
// NewIPerf parses an IPerf CSV output line into an IPerfResult.
func NewIPerf(csvLine string) *IPerfResult {
+ csvLine = strings.Trim(csvLine, "\n")
slice := StrSlice(strings.Split(csvLine, ","))
if len(slice) != 9 {
framework.Failf("Incorrect fields in the output: %v (%v out of 9)", slice, len(slice))
diff --git a/test/e2e/scalability/BUILD b/test/e2e/scalability/BUILD
index decb9a2b9a..34dff1f866 100644
--- a/test/e2e/scalability/BUILD
+++ b/test/e2e/scalability/BUILD
@@ -15,11 +15,12 @@ go_library(
],
importpath = "k8s.io/kubernetes/test/e2e/scalability",
deps = [
- "//pkg/api:go_default_library",
"//pkg/apis/batch:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//test/e2e/framework:go_default_library",
+ "//test/e2e/framework/timer:go_default_library",
"//test/utils:go_default_library",
"//vendor/github.com/onsi/ginkgo:go_default_library",
"//vendor/github.com/onsi/gomega:go_default_library",
diff --git a/test/e2e/scalability/density.go b/test/e2e/scalability/density.go
index 3f906d88bd..f4b9c0b882 100644
--- a/test/e2e/scalability/density.go
+++ b/test/e2e/scalability/density.go
@@ -39,11 +39,12 @@ import (
clientset "k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/util/workqueue"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/batch"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/test/e2e/framework"
+ "k8s.io/kubernetes/test/e2e/framework/timer"
testutils "k8s.io/kubernetes/test/utils"
. "github.com/onsi/ginkgo"
@@ -76,6 +77,54 @@ type DensityTestConfig struct {
DaemonConfigs []*testutils.DaemonConfig
}
+func (dtc *DensityTestConfig) runSecretConfigs(testPhase *timer.Phase) {
+ defer testPhase.End()
+ for _, sc := range dtc.SecretConfigs {
+ sc.Run()
+ }
+}
+
+func (dtc *DensityTestConfig) runConfigMapConfigs(testPhase *timer.Phase) {
+ defer testPhase.End()
+ for _, cmc := range dtc.ConfigMapConfigs {
+ cmc.Run()
+ }
+}
+
+func (dtc *DensityTestConfig) runDaemonConfigs(testPhase *timer.Phase) {
+ defer testPhase.End()
+ for _, dc := range dtc.DaemonConfigs {
+ dc.Run()
+ }
+}
+
+func (dtc *DensityTestConfig) deleteSecrets(testPhase *timer.Phase) {
+ defer testPhase.End()
+ for i := range dtc.SecretConfigs {
+ dtc.SecretConfigs[i].Stop()
+ }
+}
+
+func (dtc *DensityTestConfig) deleteConfigMaps(testPhase *timer.Phase) {
+ defer testPhase.End()
+ for i := range dtc.ConfigMapConfigs {
+ dtc.ConfigMapConfigs[i].Stop()
+ }
+}
+
+func (dtc *DensityTestConfig) deleteDaemonSets(numberOfClients int, testPhase *timer.Phase) {
+ defer testPhase.End()
+ for i := range dtc.DaemonConfigs {
+ framework.ExpectNoError(framework.DeleteResourceAndPods(
+ dtc.ClientSets[i%numberOfClients],
+ dtc.InternalClientsets[i%numberOfClients],
+ extensions.Kind("DaemonSet"),
+ dtc.DaemonConfigs[i].Namespace,
+ dtc.DaemonConfigs[i].Name,
+ ))
+ }
+}
+
func density30AddonResourceVerifier(numNodes int) map[string]framework.ResourceConstraint {
var apiserverMem uint64
var controllerMem uint64
@@ -196,20 +245,16 @@ func logPodStartupStatus(c clientset.Interface, expectedPods int, observedLabels
// runDensityTest will perform a density test and return the time it took for
// all pods to start
-func runDensityTest(dtc DensityTestConfig) time.Duration {
+func runDensityTest(dtc DensityTestConfig, testPhaseDurations *timer.TestPhaseTimer) time.Duration {
defer GinkgoRecover()
// Create all secrets, configmaps and daemons.
- for i := range dtc.SecretConfigs {
- dtc.SecretConfigs[i].Run()
- }
- for i := range dtc.ConfigMapConfigs {
- dtc.ConfigMapConfigs[i].Run()
- }
- for i := range dtc.DaemonConfigs {
- dtc.DaemonConfigs[i].Run()
- }
+ dtc.runSecretConfigs(testPhaseDurations.StartPhase(250, "secrets creation"))
+ dtc.runConfigMapConfigs(testPhaseDurations.StartPhase(260, "configmaps creation"))
+ dtc.runDaemonConfigs(testPhaseDurations.StartPhase(270, "daemonsets creation"))
+ replicationCtrlStartupPhase := testPhaseDurations.StartPhase(300, "saturation pods creation")
+ defer replicationCtrlStartupPhase.End()
// Start all replication controllers.
startTime := time.Now()
wg := sync.WaitGroup{}
@@ -231,7 +276,10 @@ func runDensityTest(dtc DensityTestConfig) time.Duration {
close(logStopCh)
framework.Logf("E2E startup time for %d pods: %v", dtc.PodCount, startupTime)
framework.Logf("Throughput (pods/s) during cluster saturation phase: %v", float32(dtc.PodCount)/float32(startupTime/time.Second))
+ replicationCtrlStartupPhase.End()
+ printPodAllocationPhase := testPhaseDurations.StartPhase(400, "printing pod allocation")
+ defer printPodAllocationPhase.End()
// Print some data about Pod to Node allocation
By("Printing Pod to Node allocation data")
podList, err := dtc.ClientSets[0].CoreV1().Pods(metav1.NamespaceAll).List(metav1.ListOptions{})
@@ -253,11 +301,14 @@ func runDensityTest(dtc DensityTestConfig) time.Duration {
for _, node := range nodeNames {
framework.Logf("%v: %v pause pods, system pods: %v", node, pausePodAllocation[node], systemPodAllocation[node])
}
+ defer printPodAllocationPhase.End()
return startupTime
}
-func cleanupDensityTest(dtc DensityTestConfig) {
+func cleanupDensityTest(dtc DensityTestConfig, testPhaseDurations *timer.TestPhaseTimer) {
defer GinkgoRecover()
+ podCleanupPhase := testPhaseDurations.StartPhase(900, "latency pods deletion")
+ defer podCleanupPhase.End()
By("Deleting created Collections")
numberOfClients := len(dtc.ClientSets)
// We explicitly delete all pods to have API calls necessary for deletion accounted in metrics.
@@ -275,23 +326,11 @@ func cleanupDensityTest(dtc DensityTestConfig) {
framework.ExpectNoError(err)
}
}
+ podCleanupPhase.End()
- // Delete all secrets, configmaps and daemons.
- for i := range dtc.SecretConfigs {
- dtc.SecretConfigs[i].Stop()
- }
- for i := range dtc.ConfigMapConfigs {
- dtc.ConfigMapConfigs[i].Stop()
- }
- for i := range dtc.DaemonConfigs {
- framework.ExpectNoError(framework.DeleteResourceAndPods(
- dtc.ClientSets[i%numberOfClients],
- dtc.InternalClientsets[i%numberOfClients],
- extensions.Kind("DaemonSet"),
- dtc.DaemonConfigs[i].Namespace,
- dtc.DaemonConfigs[i].Name,
- ))
- }
+ dtc.deleteSecrets(testPhaseDurations.StartPhase(910, "secrets deletion"))
+ dtc.deleteConfigMaps(testPhaseDurations.StartPhase(920, "configmaps deletion"))
+ dtc.deleteDaemonSets(numberOfClients, testPhaseDurations.StartPhase(930, "daemonsets deletion"))
}
// This test suite can take a long time to run, and can affect or be affected by other tests.
@@ -316,6 +355,7 @@ var _ = SIGDescribe("Density", func() {
testCaseBaseName := "density"
missingMeasurements := 0
+ var testPhaseDurations *timer.TestPhaseTimer
// Gathers data prior to framework namespace teardown
AfterEach(func() {
@@ -349,6 +389,7 @@ var _ = SIGDescribe("Density", func() {
if err == nil {
summaries = append(summaries, latency)
}
+ summaries = append(summaries, testPhaseDurations)
framework.PrintSummaries(summaries, testCaseBaseName)
@@ -368,6 +409,7 @@ var _ = SIGDescribe("Density", func() {
BeforeEach(func() {
c = f.ClientSet
ns = f.Namespace.Name
+ testPhaseDurations = timer.NewTestPhaseTimer()
masters, nodes = framework.GetMasterAndWorkerNodesOrDie(c)
nodeCount = len(nodes.Items)
@@ -454,6 +496,8 @@ var _ = SIGDescribe("Density", func() {
)
itArg := testArg
It(name, func() {
+ nodePrepPhase := testPhaseDurations.StartPhase(100, "node preparation")
+ defer nodePrepPhase.End()
nodePreparer := framework.NewE2ETestNodePreparer(
f.ClientSet,
[]testutils.CountToStrategy{{Count: nodeCount, Strategy: &testutils.TrivialNodePrepareStrategy{}}},
@@ -469,10 +513,11 @@ var _ = SIGDescribe("Density", func() {
fileHndl, err := os.Create(fmt.Sprintf(framework.TestContext.OutputDir+"/%s/pod_states.csv", uuid))
framework.ExpectNoError(err)
defer fileHndl.Close()
+ nodePrepPhase.End()
// nodeCountPerNamespace and CreateNamespaces are defined in load.go
numberOfCollections := (nodeCount + nodeCountPerNamespace - 1) / nodeCountPerNamespace
- namespaces, err := CreateNamespaces(f, numberOfCollections, fmt.Sprintf("density-%v", testArg.podsPerNode))
+ namespaces, err := CreateNamespaces(f, numberOfCollections, fmt.Sprintf("density-%v", testArg.podsPerNode), testPhaseDurations.StartPhase(200, "namespace creation"))
framework.ExpectNoError(err)
configs := make([]testutils.RunObjectConfig, numberOfCollections)
@@ -567,7 +612,7 @@ var _ = SIGDescribe("Density", func() {
LogFunc: framework.Logf,
})
}
- e2eStartupTime = runDensityTest(dConfig)
+ e2eStartupTime = runDensityTest(dConfig, testPhaseDurations)
if itArg.runLatencyTest {
By("Scheduling additional Pods to measure startup latencies")
@@ -650,6 +695,8 @@ var _ = SIGDescribe("Density", func() {
}
// Create some additional pods with throughput ~5 pods/sec.
+ latencyPodStartupPhase := testPhaseDurations.StartPhase(800, "latency pods creation")
+ defer latencyPodStartupPhase.End()
var wg sync.WaitGroup
wg.Add(nodeCount)
// Explicitly set requests here.
@@ -673,7 +720,10 @@ var _ = SIGDescribe("Density", func() {
time.Sleep(200 * time.Millisecond)
}
wg.Wait()
+ latencyPodStartupPhase.End()
+ latencyMeasurementPhase := testPhaseDurations.StartPhase(810, "pod startup latencies measurement")
+ defer latencyMeasurementPhase.End()
By("Waiting for all Pods begin observed by the watch...")
waitTimeout := 10 * time.Minute
for start := time.Now(); len(watchTimes) < nodeCount; time.Sleep(10 * time.Second) {
@@ -769,17 +819,20 @@ var _ = SIGDescribe("Density", func() {
framework.ExpectNoError(framework.VerifyPodStartupLatency(podStartupLatency))
framework.LogSuspiciousLatency(startupLag, e2eLag, nodeCount, c)
+ latencyMeasurementPhase.End()
By("Removing additional replication controllers")
+ podDeletionPhase := testPhaseDurations.StartPhase(820, "latency pods deletion")
+ defer podDeletionPhase.End()
deleteRC := func(i int) {
defer GinkgoRecover()
name := additionalPodsPrefix + "-" + strconv.Itoa(i+1)
framework.ExpectNoError(framework.DeleteRCAndWaitForGC(c, rcNameToNsMap[name], name))
}
workqueue.Parallelize(25, nodeCount, deleteRC)
+ podDeletionPhase.End()
}
-
- cleanupDensityTest(dConfig)
+ cleanupDensityTest(dConfig, testPhaseDurations)
})
}
})
diff --git a/test/e2e/scalability/empty.go b/test/e2e/scalability/empty.go
index cd620587c8..94987ec0c3 100644
--- a/test/e2e/scalability/empty.go
+++ b/test/e2e/scalability/empty.go
@@ -20,7 +20,7 @@ import (
"time"
"k8s.io/api/core/v1"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/test/e2e/framework"
. "github.com/onsi/ginkgo"
diff --git a/test/e2e/scalability/load.go b/test/e2e/scalability/load.go
index 9cd5bd19df..c696de4272 100644
--- a/test/e2e/scalability/load.go
+++ b/test/e2e/scalability/load.go
@@ -38,11 +38,12 @@ import (
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/transport"
"k8s.io/client-go/util/workqueue"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/batch"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/test/e2e/framework"
+ "k8s.io/kubernetes/test/e2e/framework/timer"
testutils "k8s.io/kubernetes/test/utils"
. "github.com/onsi/ginkgo"
@@ -88,6 +89,7 @@ var _ = SIGDescribe("Load capacity", func() {
var configMapConfigs []*testutils.ConfigMapConfig
testCaseBaseName := "load"
+ var testPhaseDurations *timer.TestPhaseTimer
// Gathers metrics before teardown
// TODO add flag that allows to skip cleanup on failure
@@ -96,8 +98,9 @@ var _ = SIGDescribe("Load capacity", func() {
highLatencyRequests, metrics, err := framework.HighLatencyRequests(clientset, nodeCount)
framework.ExpectNoError(err)
if err == nil {
- summaries := make([]framework.TestDataSummary, 0, 1)
+ summaries := make([]framework.TestDataSummary, 0, 2)
summaries = append(summaries, metrics)
+ summaries = append(summaries, testPhaseDurations)
framework.PrintSummaries(summaries, testCaseBaseName)
Expect(highLatencyRequests).NotTo(BeNumerically(">", 0), "There should be no high-latency requests")
}
@@ -123,6 +126,7 @@ var _ = SIGDescribe("Load capacity", func() {
f.NamespaceDeletionTimeout = time.Hour
BeforeEach(func() {
+ testPhaseDurations = timer.NewTestPhaseTimer()
clientset = f.ClientSet
ns = f.Namespace.Name
@@ -187,12 +191,14 @@ var _ = SIGDescribe("Load capacity", func() {
It(name, func() {
// Create a number of namespaces.
namespaceCount := (nodeCount + nodeCountPerNamespace - 1) / nodeCountPerNamespace
- namespaces, err := CreateNamespaces(f, namespaceCount, fmt.Sprintf("load-%v-nodepods", itArg.podsPerNode))
+ namespaces, err := CreateNamespaces(f, namespaceCount, fmt.Sprintf("load-%v-nodepods", itArg.podsPerNode), testPhaseDurations.StartPhase(110, "namespace creation"))
framework.ExpectNoError(err)
totalPods := (itArg.podsPerNode - itArg.daemonsPerNode) * nodeCount
configs, secretConfigs, configMapConfigs = generateConfigs(totalPods, itArg.image, itArg.command, namespaces, itArg.kind, itArg.secretsPerPod, itArg.configMapsPerPod)
+ serviceCreationPhase := testPhaseDurations.StartPhase(120, "services creation")
+ defer serviceCreationPhase.End()
if itArg.services {
framework.Logf("Creating services")
services := generateServicesForConfigs(configs)
@@ -204,6 +210,8 @@ var _ = SIGDescribe("Load capacity", func() {
workqueue.Parallelize(serviceOperationsParallelism, len(services), createService)
framework.Logf("%v Services created.", len(services))
defer func(services []*v1.Service) {
+ serviceCleanupPhase := testPhaseDurations.StartPhase(800, "services deletion")
+ defer serviceCleanupPhase.End()
framework.Logf("Starting to delete services...")
deleteService := func(i int) {
defer GinkgoRecover()
@@ -216,17 +224,26 @@ var _ = SIGDescribe("Load capacity", func() {
} else {
framework.Logf("Skipping service creation")
}
+ serviceCreationPhase.End()
// Create all secrets.
+ secretsCreationPhase := testPhaseDurations.StartPhase(130, "secrets creation")
+ defer secretsCreationPhase.End()
for i := range secretConfigs {
secretConfigs[i].Run()
defer secretConfigs[i].Stop()
}
+ secretsCreationPhase.End()
// Create all configmaps.
+ configMapsCreationPhase := testPhaseDurations.StartPhase(140, "configmaps creation")
+ defer configMapsCreationPhase.End()
for i := range configMapConfigs {
configMapConfigs[i].Run()
defer configMapConfigs[i].Stop()
}
- // StartDeamon if needed
+ configMapsCreationPhase.End()
+ // StartDaemon if needed
+ daemonSetCreationPhase := testPhaseDurations.StartPhase(150, "daemonsets creation")
+ defer daemonSetCreationPhase.End()
for i := 0; i < itArg.daemonsPerNode; i++ {
daemonName := fmt.Sprintf("load-daemon-%v", i)
daemonConfig := &testutils.DaemonConfig{
@@ -246,6 +263,7 @@ var _ = SIGDescribe("Load capacity", func() {
))
}(daemonConfig)
}
+ daemonSetCreationPhase.End()
// Simulate lifetime of RC:
// * create with initial size
@@ -262,9 +280,10 @@ var _ = SIGDescribe("Load capacity", func() {
// to make it possible to create/schedule them in the meantime.
// Currently we assume pods/second average throughput.
// We may want to revisit it in the future.
- framework.Logf("Starting to create ReplicationControllers...")
+ framework.Logf("Starting to create %v objects...", itArg.kind)
creatingTime := time.Duration(totalPods/throughput) * time.Second
- createAllResources(configs, creatingTime)
+
+ createAllResources(configs, creatingTime, testPhaseDurations.StartPhase(200, "load pods creation"))
By("============================================================================")
// We would like to spread scaling replication controllers over time
@@ -272,20 +291,20 @@ var _ = SIGDescribe("Load capacity", func() {
// Currently we assume that pods/second average throughput.
// The expected number of created/deleted pods is less than totalPods/3.
scalingTime := time.Duration(totalPods/(3*throughput)) * time.Second
- framework.Logf("Starting to scale ReplicationControllers first time...")
- scaleAllResources(configs, scalingTime)
+ framework.Logf("Starting to scale %v objects first time...", itArg.kind)
+ scaleAllResources(configs, scalingTime, testPhaseDurations.StartPhase(300, "scaling first time"))
By("============================================================================")
- framework.Logf("Starting to scale ReplicationControllers second time...")
- scaleAllResources(configs, scalingTime)
+ framework.Logf("Starting to scale %v objects second time...", itArg.kind)
+ scaleAllResources(configs, scalingTime, testPhaseDurations.StartPhase(400, "scaling second time"))
By("============================================================================")
// Cleanup all created replication controllers.
// Currently we assume pods/second average deletion throughput.
// We may want to revisit it in the future.
deletingTime := time.Duration(totalPods/throughput) * time.Second
- framework.Logf("Starting to delete ReplicationControllers...")
- deleteAllResources(configs, deletingTime)
+ framework.Logf("Starting to delete %v objects...", itArg.kind)
+ deleteAllResources(configs, deletingTime, testPhaseDurations.StartPhase(500, "load pods deletion"))
})
}
})
@@ -534,7 +553,8 @@ func retryWithExponentialBackOff(initialDuration time.Duration, fn wait.Conditio
return wait.ExponentialBackoff(backoff, fn)
}
-func createAllResources(configs []testutils.RunObjectConfig, creatingTime time.Duration) {
+func createAllResources(configs []testutils.RunObjectConfig, creatingTime time.Duration, testPhase *timer.Phase) {
+ defer testPhase.End()
var wg sync.WaitGroup
wg.Add(len(configs))
for _, config := range configs {
@@ -551,7 +571,8 @@ func createResource(wg *sync.WaitGroup, config testutils.RunObjectConfig, creati
framework.ExpectNoError(config.Run(), fmt.Sprintf("creating %v %s", config.GetKind(), config.GetName()))
}
-func scaleAllResources(configs []testutils.RunObjectConfig, scalingTime time.Duration) {
+func scaleAllResources(configs []testutils.RunObjectConfig, scalingTime time.Duration, testPhase *timer.Phase) {
+ defer testPhase.End()
var wg sync.WaitGroup
wg.Add(len(configs))
for _, config := range configs {
@@ -592,7 +613,8 @@ func scaleResource(wg *sync.WaitGroup, config testutils.RunObjectConfig, scaling
framework.ExpectNoError(err)
}
-func deleteAllResources(configs []testutils.RunObjectConfig, deletingTime time.Duration) {
+func deleteAllResources(configs []testutils.RunObjectConfig, deletingTime time.Duration, testPhase *timer.Phase) {
+ defer testPhase.End()
var wg sync.WaitGroup
wg.Add(len(configs))
for _, config := range configs {
@@ -617,7 +639,8 @@ func deleteResource(wg *sync.WaitGroup, config testutils.RunObjectConfig, deleti
}
}
-func CreateNamespaces(f *framework.Framework, namespaceCount int, namePrefix string) ([]*v1.Namespace, error) {
+func CreateNamespaces(f *framework.Framework, namespaceCount int, namePrefix string, testPhase *timer.Phase) ([]*v1.Namespace, error) {
+ defer testPhase.End()
namespaces := []*v1.Namespace{}
for i := 1; i <= namespaceCount; i++ {
namespace, err := f.CreateNamespace(fmt.Sprintf("%v-%d", namePrefix, i), nil)
diff --git a/test/e2e/scheduling/BUILD b/test/e2e/scheduling/BUILD
index d9f07fac23..84e68a08b4 100644
--- a/test/e2e/scheduling/BUILD
+++ b/test/e2e/scheduling/BUILD
@@ -23,9 +23,10 @@ go_library(
],
importpath = "k8s.io/kubernetes/test/e2e/scheduling",
deps = [
- "//pkg/api:go_default_library",
- "//pkg/api/v1/helper:go_default_library",
"//pkg/api/v1/pod:go_default_library",
+ "//pkg/apis/core:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
+ "//pkg/apis/extensions:go_default_library",
"//pkg/quota/evaluator/core:go_default_library",
"//pkg/util/system:go_default_library",
"//pkg/util/version:go_default_library",
diff --git a/test/e2e/scheduling/equivalence_cache_predicates.go b/test/e2e/scheduling/equivalence_cache_predicates.go
index 9b03bae798..79aaf5d9d8 100644
--- a/test/e2e/scheduling/equivalence_cache_predicates.go
+++ b/test/e2e/scheduling/equivalence_cache_predicates.go
@@ -25,7 +25,7 @@ import (
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/uuid"
clientset "k8s.io/client-go/kubernetes"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/test/e2e/framework"
testutils "k8s.io/kubernetes/test/utils"
diff --git a/test/e2e/scheduling/nvidia-gpus.go b/test/e2e/scheduling/nvidia-gpus.go
index 526aecaa46..5deeea25f7 100644
--- a/test/e2e/scheduling/nvidia-gpus.go
+++ b/test/e2e/scheduling/nvidia-gpus.go
@@ -24,6 +24,7 @@ import (
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/uuid"
+ extensionsinternal "k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/test/e2e/framework"
imageutils "k8s.io/kubernetes/test/utils/image"
@@ -171,20 +172,28 @@ func testNvidiaGPUsOnCOS(f *framework.Framework) {
podCreationFunc = makeCudaAdditionTestPod
}
- // GPU drivers might have already been installed.
- if !areGPUsAvailableOnAllSchedulableNodes(f) {
- // Install Nvidia Drivers.
- ds, err := framework.DsFromManifest(dsYamlUrl)
- Expect(err).NotTo(HaveOccurred())
- ds.Namespace = f.Namespace.Name
- _, err = f.ClientSet.ExtensionsV1beta1().DaemonSets(f.Namespace.Name).Create(ds)
- framework.ExpectNoError(err, "failed to create daemonset")
- framework.Logf("Successfully created daemonset to install Nvidia drivers. Waiting for drivers to be installed and GPUs to be available in Node Capacity...")
- // Wait for Nvidia GPUs to be available on nodes
- Eventually(func() bool {
- return areGPUsAvailableOnAllSchedulableNodes(f)
- }, driverInstallTimeout, time.Second).Should(BeTrue())
- }
+ // Creates the DaemonSet that installs Nvidia Drivers.
+ // The DaemonSet also runs nvidia device plugin for device plugin test.
+ ds, err := framework.DsFromManifest(dsYamlUrl)
+ Expect(err).NotTo(HaveOccurred())
+ ds.Namespace = f.Namespace.Name
+ _, err = f.ClientSet.ExtensionsV1beta1().DaemonSets(f.Namespace.Name).Create(ds)
+ framework.ExpectNoError(err, "failed to create daemonset")
+ framework.Logf("Successfully created daemonset to install Nvidia drivers.")
+
+ pods, err := framework.WaitForControlledPods(f.ClientSet, ds.Namespace, ds.Name, extensionsinternal.Kind("DaemonSet"))
+ framework.ExpectNoError(err, "getting pods controlled by the daemonset")
+ framework.Logf("Starting ResourceUsageGather for the created DaemonSet pods.")
+ rsgather, err := framework.NewResourceUsageGatherer(f.ClientSet, framework.ResourceGathererOptions{false, false, 2 * time.Second, 2 * time.Second}, pods)
+ framework.ExpectNoError(err, "creating ResourceUsageGather for the daemonset pods")
+ go rsgather.StartGatheringData()
+
+ // Wait for Nvidia GPUs to be available on nodes
+ framework.Logf("Waiting for drivers to be installed and GPUs to be available in Node Capacity...")
+ Eventually(func() bool {
+ return areGPUsAvailableOnAllSchedulableNodes(f)
+ }, driverInstallTimeout, time.Second).Should(BeTrue())
+
framework.Logf("Creating as many pods as there are Nvidia GPUs and have the pods run a CUDA app")
podList := []*v1.Pod{}
for i := int64(0); i < getGPUsAvailable(f); i++ {
@@ -195,6 +204,13 @@ func testNvidiaGPUsOnCOS(f *framework.Framework) {
for _, po := range podList {
f.PodClient().WaitForSuccess(po.Name, 5*time.Minute)
}
+
+ framework.Logf("Stopping ResourceUsageGather")
+ constraints := make(map[string]framework.ResourceConstraint)
+ // For now, just gets summary. Can pass valid constraints in the future.
+ summary, err := rsgather.StopAndSummarize([]int{50, 90, 100}, constraints)
+ f.TestSummaries = append(f.TestSummaries, summary)
+ framework.ExpectNoError(err, "getting resource usage summary")
}
var _ = SIGDescribe("[Feature:GPU]", func() {
diff --git a/test/e2e/scheduling/opaque_resource.go b/test/e2e/scheduling/opaque_resource.go
index 0e5e0e5de7..7185a130de 100644
--- a/test/e2e/scheduling/opaque_resource.go
+++ b/test/e2e/scheduling/opaque_resource.go
@@ -24,7 +24,7 @@ import (
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
"k8s.io/kubernetes/pkg/util/system"
"k8s.io/kubernetes/test/e2e/common"
"k8s.io/kubernetes/test/e2e/framework"
diff --git a/test/e2e/storage/BUILD b/test/e2e/storage/BUILD
index 8533a2788f..86eafe075d 100644
--- a/test/e2e/storage/BUILD
+++ b/test/e2e/storage/BUILD
@@ -34,13 +34,14 @@ go_library(
"vsphere_volume_fstype.go",
"vsphere_volume_master_restart.go",
"vsphere_volume_ops_storm.go",
+ "vsphere_volume_perf.go",
"vsphere_volume_placement.go",
"vsphere_volume_vsan_policy.go",
],
importpath = "k8s.io/kubernetes/test/e2e/storage",
deps = [
"//pkg/api/testapi:go_default_library",
- "//pkg/api/v1/helper:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
"//pkg/apis/storage/v1/util:go_default_library",
"//pkg/cloudprovider/providers/vsphere:go_default_library",
"//pkg/cloudprovider/providers/vsphere/vclib:go_default_library",
diff --git a/test/e2e/storage/volume_provisioning.go b/test/e2e/storage/volume_provisioning.go
index 093b584efd..306df4933d 100644
--- a/test/e2e/storage/volume_provisioning.go
+++ b/test/e2e/storage/volume_provisioning.go
@@ -41,7 +41,7 @@ import (
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apiserver/pkg/authentication/serviceaccount"
clientset "k8s.io/client-go/kubernetes"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
storageutil "k8s.io/kubernetes/pkg/apis/storage/v1/util"
kubeletapis "k8s.io/kubernetes/pkg/kubelet/apis"
"k8s.io/kubernetes/test/e2e/framework"
diff --git a/test/e2e/storage/vsphere_volume_perf.go b/test/e2e/storage/vsphere_volume_perf.go
new file mode 100644
index 0000000000..06bcaa83c6
--- /dev/null
+++ b/test/e2e/storage/vsphere_volume_perf.go
@@ -0,0 +1,255 @@
+/*
+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 storage
+
+import (
+ "fmt"
+ "os"
+ "strconv"
+ "time"
+
+ . "github.com/onsi/ginkgo"
+ . "github.com/onsi/gomega"
+ "k8s.io/api/core/v1"
+ storageV1 "k8s.io/api/storage/v1"
+ "k8s.io/apimachinery/pkg/types"
+ clientset "k8s.io/client-go/kubernetes"
+ "k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere"
+ "k8s.io/kubernetes/test/e2e/framework"
+)
+
+/* This test calculates latency numbers for volume lifecycle operations
+1. Create 4 type of storage classes
+2. Read the total number of volumes to be created and volumes per pod
+3. Create total PVCs (number of volumes)
+4. Create Pods with attached volumes per pod
+5. Verify access to the volumes
+6. Delete pods and wait for volumes to detach
+7. Delete the PVCs
+*/
+const (
+ SCSIUnitsAvailablePerNode = 55
+ CreateOp = "CreateOp"
+ AttachOp = "AttachOp"
+ DetachOp = "DetachOp"
+ DeleteOp = "DeleteOp"
+)
+
+var _ = SIGDescribe("vcp-performance [Feature:vsphere]", func() {
+ f := framework.NewDefaultFramework("vcp-performance")
+
+ var (
+ client clientset.Interface
+ namespace string
+ nodeSelectorList []*NodeSelector
+ volumeCount int
+ volumesPerPod int
+ iterations int
+ policyName string
+ datastoreName string
+ )
+
+ BeforeEach(func() {
+ var err error
+ framework.SkipUnlessProviderIs("vsphere")
+ client = f.ClientSet
+ namespace = f.Namespace.Name
+
+ // Read the environment variables
+ volumeCountStr := os.Getenv("VCP_PERF_VOLUME_COUNT")
+ Expect(volumeCountStr).NotTo(BeEmpty(), "ENV VCP_PERF_VOLUME_COUNT is not set")
+ volumeCount, err = strconv.Atoi(volumeCountStr)
+ Expect(err).NotTo(HaveOccurred(), "Error Parsing VCP_PERF_VOLUME_COUNT")
+
+ volumesPerPodStr := os.Getenv("VCP_PERF_VOLUME_PER_POD")
+ Expect(volumesPerPodStr).NotTo(BeEmpty(), "ENV VCP_PERF_VOLUME_PER_POD is not set")
+ volumesPerPod, err = strconv.Atoi(volumesPerPodStr)
+ Expect(err).NotTo(HaveOccurred(), "Error Parsing VCP_PERF_VOLUME_PER_POD")
+
+ iterationsStr := os.Getenv("VCP_PERF_ITERATIONS")
+ Expect(iterationsStr).NotTo(BeEmpty(), "ENV VCP_PERF_ITERATIONS is not set")
+ iterations, err = strconv.Atoi(iterationsStr)
+ Expect(err).NotTo(HaveOccurred(), "Error Parsing VCP_PERF_ITERATIONS")
+
+ policyName = os.Getenv("VSPHERE_SPBM_GOLD_POLICY")
+ datastoreName = os.Getenv("VSPHERE_DATASTORE")
+ Expect(policyName).NotTo(BeEmpty(), "ENV VSPHERE_SPBM_GOLD_POLICY is not set")
+ Expect(datastoreName).NotTo(BeEmpty(), "ENV VSPHERE_DATASTORE is not set")
+
+ nodes := framework.GetReadySchedulableNodesOrDie(client)
+ Expect(len(nodes.Items)).To(BeNumerically(">=", 1), "Requires at least %d nodes (not %d)", 2, len(nodes.Items))
+
+ msg := fmt.Sprintf("Cannot attach %d volumes to %d nodes. Maximum volumes that can be attached on %d nodes is %d", volumeCount, len(nodes.Items), len(nodes.Items), SCSIUnitsAvailablePerNode*len(nodes.Items))
+ Expect(volumeCount).To(BeNumerically("<=", SCSIUnitsAvailablePerNode*len(nodes.Items)), msg)
+
+ msg = fmt.Sprintf("Cannot attach %d volumes per pod. Maximum volumes that can be attached per pod is %d", volumesPerPod, SCSIUnitsAvailablePerNode)
+ Expect(volumesPerPod).To(BeNumerically("<=", SCSIUnitsAvailablePerNode), msg)
+
+ nodeSelectorList = createNodeLabels(client, namespace, nodes)
+ })
+
+ It("vcp performance tests", func() {
+ scList := getTestStorageClasses(client, policyName, datastoreName)
+ defer func(scList []*storageV1.StorageClass) {
+ for _, sc := range scList {
+ client.StorageV1().StorageClasses().Delete(sc.Name, nil)
+ }
+ }(scList)
+
+ sumLatency := make(map[string]float64)
+ for i := 0; i < iterations; i++ {
+ latency := invokeVolumeLifeCyclePerformance(f, client, namespace, scList, volumesPerPod, volumeCount, nodeSelectorList)
+ for key, val := range latency {
+ sumLatency[key] += val
+ }
+ }
+
+ iterations64 := float64(iterations)
+ framework.Logf("Average latency for below operations")
+ framework.Logf("Creating %d PVCs and waiting for bound phase: %v seconds", volumeCount, sumLatency[CreateOp]/iterations64)
+ framework.Logf("Creating %v Pod: %v seconds", volumeCount/volumesPerPod, sumLatency[AttachOp]/iterations64)
+ framework.Logf("Deleting %v Pod and waiting for disk to be detached: %v seconds", volumeCount/volumesPerPod, sumLatency[DetachOp]/iterations64)
+ framework.Logf("Deleting %v PVCs: %v seconds", volumeCount, sumLatency[DeleteOp]/iterations64)
+
+ })
+})
+
+func getTestStorageClasses(client clientset.Interface, policyName, datastoreName string) []*storageV1.StorageClass {
+ const (
+ storageclass1 = "sc-default"
+ storageclass2 = "sc-vsan"
+ storageclass3 = "sc-spbm"
+ storageclass4 = "sc-user-specified-ds"
+ )
+ scNames := []string{storageclass1, storageclass2, storageclass3, storageclass4}
+ scArrays := make([]*storageV1.StorageClass, len(scNames))
+ for index, scname := range scNames {
+ // Create vSphere Storage Class
+ By(fmt.Sprintf("Creating Storage Class : %v", scname))
+ var sc *storageV1.StorageClass
+ var err error
+ switch scname {
+ case storageclass1:
+ sc, err = client.StorageV1().StorageClasses().Create(getVSphereStorageClassSpec(storageclass1, nil))
+ case storageclass2:
+ var scVSanParameters map[string]string
+ scVSanParameters = make(map[string]string)
+ scVSanParameters[Policy_HostFailuresToTolerate] = "1"
+ sc, err = client.StorageV1().StorageClasses().Create(getVSphereStorageClassSpec(storageclass2, scVSanParameters))
+ case storageclass3:
+ var scSPBMPolicyParameters map[string]string
+ scSPBMPolicyParameters = make(map[string]string)
+ scSPBMPolicyParameters[SpbmStoragePolicy] = policyName
+ sc, err = client.StorageV1().StorageClasses().Create(getVSphereStorageClassSpec(storageclass3, scSPBMPolicyParameters))
+ case storageclass4:
+ var scWithDSParameters map[string]string
+ scWithDSParameters = make(map[string]string)
+ scWithDSParameters[Datastore] = datastoreName
+ scWithDatastoreSpec := getVSphereStorageClassSpec(storageclass4, scWithDSParameters)
+ sc, err = client.StorageV1().StorageClasses().Create(scWithDatastoreSpec)
+ }
+ Expect(sc).NotTo(BeNil())
+ Expect(err).NotTo(HaveOccurred())
+ scArrays[index] = sc
+ }
+ return scArrays
+}
+
+// invokeVolumeLifeCyclePerformance peforms full volume life cycle management and records latency for each operation
+func invokeVolumeLifeCyclePerformance(f *framework.Framework, client clientset.Interface, namespace string, sc []*storageV1.StorageClass, volumesPerPod int, volumeCount int, nodeSelectorList []*NodeSelector) (latency map[string]float64) {
+ var (
+ totalpvclaims [][]*v1.PersistentVolumeClaim
+ totalpvs [][]*v1.PersistentVolume
+ totalpods []*v1.Pod
+ )
+ nodeVolumeMap := make(map[types.NodeName][]string)
+ latency = make(map[string]float64)
+ numPods := volumeCount / volumesPerPod
+
+ By(fmt.Sprintf("Creating %d PVCs", volumeCount))
+ start := time.Now()
+ for i := 0; i < numPods; i++ {
+ var pvclaims []*v1.PersistentVolumeClaim
+ for j := 0; j < volumesPerPod; j++ {
+ currsc := sc[((i*numPods)+j)%len(sc)]
+ pvclaim, err := framework.CreatePVC(client, namespace, getVSphereClaimSpecWithStorageClassAnnotation(namespace, "2Gi", currsc))
+ Expect(err).NotTo(HaveOccurred())
+ pvclaims = append(pvclaims, pvclaim)
+ }
+ totalpvclaims = append(totalpvclaims, pvclaims)
+ }
+ for _, pvclaims := range totalpvclaims {
+ persistentvolumes, err := framework.WaitForPVClaimBoundPhase(client, pvclaims, framework.ClaimProvisionTimeout)
+ Expect(err).NotTo(HaveOccurred())
+ totalpvs = append(totalpvs, persistentvolumes)
+ }
+ elapsed := time.Since(start)
+ latency[CreateOp] = elapsed.Seconds()
+
+ By("Creating pod to attach PVs to the node")
+ start = time.Now()
+ for i, pvclaims := range totalpvclaims {
+ nodeSelector := nodeSelectorList[i%len(nodeSelectorList)]
+ pod, err := framework.CreatePod(client, namespace, map[string]string{nodeSelector.labelKey: nodeSelector.labelValue}, pvclaims, false, "")
+ Expect(err).NotTo(HaveOccurred())
+ totalpods = append(totalpods, pod)
+
+ defer framework.DeletePodWithWait(f, client, pod)
+ }
+ elapsed = time.Since(start)
+ latency[AttachOp] = elapsed.Seconds()
+
+ // Verify access to the volumes
+ vsp, err := vsphere.GetVSphere()
+ Expect(err).NotTo(HaveOccurred())
+
+ for i, pod := range totalpods {
+ verifyVSphereVolumesAccessible(pod, totalpvs[i], vsp)
+ }
+
+ By("Deleting pods")
+ start = time.Now()
+ for _, pod := range totalpods {
+ err = framework.DeletePodWithWait(f, client, pod)
+ Expect(err).NotTo(HaveOccurred())
+ }
+ elapsed = time.Since(start)
+ latency[DetachOp] = elapsed.Seconds()
+
+ for i, pod := range totalpods {
+ for _, pv := range totalpvs[i] {
+ nodeName := types.NodeName(pod.Spec.NodeName)
+ nodeVolumeMap[nodeName] = append(nodeVolumeMap[nodeName], pv.Spec.VsphereVolume.VolumePath)
+ }
+ }
+
+ err = waitForVSphereDisksToDetach(vsp, nodeVolumeMap)
+ Expect(err).NotTo(HaveOccurred())
+
+ By("Deleting the PVCs")
+ start = time.Now()
+ for _, pvclaims := range totalpvclaims {
+ for _, pvc := range pvclaims {
+ err = framework.DeletePersistentVolumeClaim(client, pvc.Name, namespace)
+ Expect(err).NotTo(HaveOccurred())
+ }
+ }
+ elapsed = time.Since(start)
+ latency[DeleteOp] = elapsed.Seconds()
+
+ return latency
+}
diff --git a/test/e2e/upgrades/BUILD b/test/e2e/upgrades/BUILD
index c25f08d132..fecb075d19 100644
--- a/test/e2e/upgrades/BUILD
+++ b/test/e2e/upgrades/BUILD
@@ -23,7 +23,7 @@ go_library(
],
importpath = "k8s.io/kubernetes/test/e2e/upgrades",
deps = [
- "//pkg/api/v1/helper:go_default_library",
+ "//pkg/apis/core/v1/helper:go_default_library",
"//pkg/kubelet/sysctl:go_default_library",
"//pkg/util/version:go_default_library",
"//test/e2e/common:go_default_library",
diff --git a/test/e2e/upgrades/sysctl.go b/test/e2e/upgrades/sysctl.go
index a8334322ec..1b9a0a71a7 100644
--- a/test/e2e/upgrades/sysctl.go
+++ b/test/e2e/upgrades/sysctl.go
@@ -26,7 +26,7 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/uuid"
- v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
+ v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
"k8s.io/kubernetes/pkg/kubelet/sysctl"
"k8s.io/kubernetes/test/e2e/framework"
diff --git a/test/e2e_node/BUILD b/test/e2e_node/BUILD
index 8dc1903291..8e440ac8a3 100644
--- a/test/e2e_node/BUILD
+++ b/test/e2e_node/BUILD
@@ -114,8 +114,8 @@ go_test(
library = ":go_default_library",
tags = ["e2e"],
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/v1/node:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/features:go_default_library",
"//pkg/kubelet:go_default_library",
"//pkg/kubelet/apis/kubeletconfig:go_default_library",
diff --git a/test/e2e_node/critical_pod_test.go b/test/e2e_node/critical_pod_test.go
index 31b6e5b49f..ea89136c18 100644
--- a/test/e2e_node/critical_pod_test.go
+++ b/test/e2e_node/critical_pod_test.go
@@ -22,7 +22,7 @@ import (
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- kubeapi "k8s.io/kubernetes/pkg/api"
+ kubeapi "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/features"
"k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig"
kubelettypes "k8s.io/kubernetes/pkg/kubelet/types"
diff --git a/test/e2e_node/docker_test.go b/test/e2e_node/docker_test.go
index d8ecc68a1a..dd08d609dd 100644
--- a/test/e2e_node/docker_test.go
+++ b/test/e2e_node/docker_test.go
@@ -24,6 +24,7 @@ import (
"k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kubernetes/test/e2e/framework"
+ imageutils "k8s.io/kubernetes/test/utils/image"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
@@ -100,7 +101,7 @@ var _ = framework.KubeDescribe("Docker features [Feature:Docker]", func() {
Spec: v1.PodSpec{
Containers: []v1.Container{{
Name: containerName,
- Image: "gcr.io/google_containers/nginx-slim:0.7",
+ Image: imageutils.GetE2EImage(imageutils.NginxSlim),
}},
},
})
diff --git a/test/e2e_node/garbage_collector_test.go b/test/e2e_node/garbage_collector_test.go
index 4303842ebf..dd4578ef03 100644
--- a/test/e2e_node/garbage_collector_test.go
+++ b/test/e2e_node/garbage_collector_test.go
@@ -249,7 +249,13 @@ func containerGCTest(f *framework.Framework, test testRun) {
func dockerContainerGCTest(f *framework.Framework, test testRun) {
var runtime libdocker.Interface
BeforeEach(func() {
- runtime = libdocker.ConnectToDockerOrDie(defaultDockerEndpoint, defaultRuntimeRequestTimeoutDuration, defaultImagePullProgressDeadline)
+ runtime = libdocker.ConnectToDockerOrDie(
+ defaultDockerEndpoint,
+ defaultRuntimeRequestTimeoutDuration,
+ defaultImagePullProgressDeadline,
+ false,
+ false,
+ )
})
for _, pod := range test.testPods {
// Initialize the getContainerNames function to use the libdocker api
diff --git a/test/images/pets/peer-finder/BASEIMAGE b/test/images/pets/peer-finder/BASEIMAGE
index 40fc100e7a..425fce2600 100644
--- a/test/images/pets/peer-finder/BASEIMAGE
+++ b/test/images/pets/peer-finder/BASEIMAGE
@@ -1,4 +1,4 @@
-amd64=gcr.io/google-containers/debian-base-amd64:0.2
-arm=gcr.io/google-containers/debian-base-arm:0.2
-arm64=gcr.io/google-containers/debian-base-arm64:0.2
-ppc64le=gcr.io/google-containers/debian-base-ppc64le:0.2
+amd64=gcr.io/google-containers/debian-base-amd64:0.3
+arm=gcr.io/google-containers/debian-base-arm:0.3
+arm64=gcr.io/google-containers/debian-base-arm64:0.3
+ppc64le=gcr.io/google-containers/debian-base-ppc64le:0.3
diff --git a/test/images/pets/peer-finder/VERSION b/test/images/pets/peer-finder/VERSION
index d3827e75a5..9459d4ba2a 100644
--- a/test/images/pets/peer-finder/VERSION
+++ b/test/images/pets/peer-finder/VERSION
@@ -1 +1 @@
-1.0
+1.1
diff --git a/test/images/pets/redis-installer/BASEIMAGE b/test/images/pets/redis-installer/BASEIMAGE
index 40fc100e7a..425fce2600 100644
--- a/test/images/pets/redis-installer/BASEIMAGE
+++ b/test/images/pets/redis-installer/BASEIMAGE
@@ -1,4 +1,4 @@
-amd64=gcr.io/google-containers/debian-base-amd64:0.2
-arm=gcr.io/google-containers/debian-base-arm:0.2
-arm64=gcr.io/google-containers/debian-base-arm64:0.2
-ppc64le=gcr.io/google-containers/debian-base-ppc64le:0.2
+amd64=gcr.io/google-containers/debian-base-amd64:0.3
+arm=gcr.io/google-containers/debian-base-arm:0.3
+arm64=gcr.io/google-containers/debian-base-arm64:0.3
+ppc64le=gcr.io/google-containers/debian-base-ppc64le:0.3
diff --git a/test/images/pets/redis-installer/VERSION b/test/images/pets/redis-installer/VERSION
index d3827e75a5..9459d4ba2a 100644
--- a/test/images/pets/redis-installer/VERSION
+++ b/test/images/pets/redis-installer/VERSION
@@ -1 +1 @@
-1.0
+1.1
diff --git a/test/images/pets/zookeeper-installer/BASEIMAGE b/test/images/pets/zookeeper-installer/BASEIMAGE
index 40fc100e7a..425fce2600 100644
--- a/test/images/pets/zookeeper-installer/BASEIMAGE
+++ b/test/images/pets/zookeeper-installer/BASEIMAGE
@@ -1,4 +1,4 @@
-amd64=gcr.io/google-containers/debian-base-amd64:0.2
-arm=gcr.io/google-containers/debian-base-arm:0.2
-arm64=gcr.io/google-containers/debian-base-arm64:0.2
-ppc64le=gcr.io/google-containers/debian-base-ppc64le:0.2
+amd64=gcr.io/google-containers/debian-base-amd64:0.3
+arm=gcr.io/google-containers/debian-base-arm:0.3
+arm64=gcr.io/google-containers/debian-base-arm64:0.3
+ppc64le=gcr.io/google-containers/debian-base-ppc64le:0.3
diff --git a/test/images/pets/zookeeper-installer/VERSION b/test/images/pets/zookeeper-installer/VERSION
index d3827e75a5..9459d4ba2a 100644
--- a/test/images/pets/zookeeper-installer/VERSION
+++ b/test/images/pets/zookeeper-installer/VERSION
@@ -1 +1 @@
-1.0
+1.1
diff --git a/test/images/resource-consumer/BASEIMAGE b/test/images/resource-consumer/BASEIMAGE
index 40fc100e7a..425fce2600 100644
--- a/test/images/resource-consumer/BASEIMAGE
+++ b/test/images/resource-consumer/BASEIMAGE
@@ -1,4 +1,4 @@
-amd64=gcr.io/google-containers/debian-base-amd64:0.2
-arm=gcr.io/google-containers/debian-base-arm:0.2
-arm64=gcr.io/google-containers/debian-base-arm64:0.2
-ppc64le=gcr.io/google-containers/debian-base-ppc64le:0.2
+amd64=gcr.io/google-containers/debian-base-amd64:0.3
+arm=gcr.io/google-containers/debian-base-arm:0.3
+arm64=gcr.io/google-containers/debian-base-arm64:0.3
+ppc64le=gcr.io/google-containers/debian-base-ppc64le:0.3
diff --git a/test/images/resource-consumer/VERSION b/test/images/resource-consumer/VERSION
index 5625e59da8..7e32cd5698 100644
--- a/test/images/resource-consumer/VERSION
+++ b/test/images/resource-consumer/VERSION
@@ -1 +1 @@
-1.2
+1.3
diff --git a/test/images/webhook/BUILD b/test/images/webhook/BUILD
index 00067234a8..c174d676ae 100644
--- a/test/images/webhook/BUILD
+++ b/test/images/webhook/BUILD
@@ -5,14 +5,18 @@ go_library(
srcs = [
"config.go",
"main.go",
+ "scheme.go",
],
importpath = "k8s.io/kubernetes/test/images/webhook",
visibility = ["//visibility:private"],
deps = [
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/k8s.io/api/admission/v1alpha1:go_default_library",
+ "//vendor/k8s.io/api/admissionregistration/v1alpha1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
+ "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
"//vendor/k8s.io/client-go/rest:go_default_library",
],
diff --git a/test/images/webhook/Makefile b/test/images/webhook/Makefile
index 7f706cbaf1..d3e3bb66d7 100644
--- a/test/images/webhook/Makefile
+++ b/test/images/webhook/Makefile
@@ -14,6 +14,7 @@
build:
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o webhook .
- docker build --no-cache -t gcr.io/kubernetes-e2e-test-images/k8s-sample-admission-webhook-amd64:1.8v1 .
+ docker build --no-cache -t gcr.io/kubernetes-e2e-test-images/k8s-sample-admission-webhook-amd64:1.8v3 .
+ rm -rf webhook
push:
- gcloud docker --push gcr.io/kubernetes-e2e-test-images/k8s-sample-admission-webhook-amd64:1.8v1 .
+ gcloud docker -- push gcr.io/kubernetes-e2e-test-images/k8s-sample-admission-webhook-amd64:1.8v3
diff --git a/test/images/webhook/main.go b/test/images/webhook/main.go
index f6e6500e5f..a9ea58eb74 100644
--- a/test/images/webhook/main.go
+++ b/test/images/webhook/main.go
@@ -19,13 +19,14 @@ package main
import (
"encoding/json"
"flag"
+ "fmt"
"io/ioutil"
"net/http"
"strings"
"github.com/golang/glog"
"k8s.io/api/admission/v1alpha1"
- "k8s.io/api/core/v1"
+ corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
@@ -43,50 +44,112 @@ func (c *Config) addFlags() {
"File containing the default x509 private key matching --tls-cert-file.")
}
-// only allow pods to pull images from specific registry.
-func admit(data []byte) *v1alpha1.AdmissionReviewStatus {
- ar := v1alpha1.AdmissionReview{}
- if err := json.Unmarshal(data, &ar); err != nil {
- glog.Error(err)
- return nil
+func toAdmissionReviewStatus(err error) *v1alpha1.AdmissionReviewStatus {
+ return &v1alpha1.AdmissionReviewStatus{
+ Result: &metav1.Status{
+ Message: err.Error(),
+ },
}
+}
+
+// only allow pods to pull images from specific registry.
+func admitPods(ar v1alpha1.AdmissionReview) *v1alpha1.AdmissionReviewStatus {
+ glog.V(2).Info("admitting pods")
podResource := metav1.GroupVersionResource{Group: "", Version: "v1", Resource: "pods"}
if ar.Spec.Resource != podResource {
- glog.Errorf("expect resource to be %s", podResource)
- return nil
+ err := fmt.Errorf("expect resource to be %s", podResource)
+ glog.Error(err)
+ return toAdmissionReviewStatus(err)
}
raw := ar.Spec.Object.Raw
- pod := v1.Pod{}
- if err := json.Unmarshal(raw, &pod); err != nil {
+ pod := corev1.Pod{}
+ deserializer := codecs.UniversalDeserializer()
+ if _, _, err := deserializer.Decode(raw, nil, &pod); err != nil {
glog.Error(err)
- return nil
+ return toAdmissionReviewStatus(err)
}
reviewStatus := v1alpha1.AdmissionReviewStatus{}
reviewStatus.Allowed = true
- // Note: the apiserver encodes the api.Pod. Decoding it as a v1.Pod will
- // lose the metadata. So the following check on labels will not work
- // until we let the apiserver encodes the versioned object.
+
+ var msg string
for k, v := range pod.Labels {
if k == "webhook-e2e-test" && v == "webhook-disallow" {
reviewStatus.Allowed = false
- reviewStatus.Result = &metav1.Status{
- Reason: "the pod contains unwanted label",
- }
+ msg = msg + "the pod contains unwanted label; "
}
}
for _, container := range pod.Spec.Containers {
if strings.Contains(container.Name, "webhook-disallow") {
+ reviewStatus.Allowed = false
+ msg = msg + "the pod contains unwanted container name; "
+ }
+ }
+ if !reviewStatus.Allowed {
+ reviewStatus.Result = &metav1.Status{Message: strings.TrimSpace(msg)}
+ }
+ return &reviewStatus
+}
+
+// deny configmaps with specific key-value pair.
+func admitConfigMaps(ar v1alpha1.AdmissionReview) *v1alpha1.AdmissionReviewStatus {
+ glog.V(2).Info("admitting configmaps")
+ configMapResource := metav1.GroupVersionResource{Group: "", Version: "v1", Resource: "configmaps"}
+ if ar.Spec.Resource != configMapResource {
+ glog.Errorf("expect resource to be %s", configMapResource)
+ return nil
+ }
+
+ raw := ar.Spec.Object.Raw
+ configmap := corev1.ConfigMap{}
+ deserializer := codecs.UniversalDeserializer()
+ if _, _, err := deserializer.Decode(raw, nil, &configmap); err != nil {
+ glog.Error(err)
+ return toAdmissionReviewStatus(err)
+ }
+ reviewStatus := v1alpha1.AdmissionReviewStatus{}
+ reviewStatus.Allowed = true
+ for k, v := range configmap.Data {
+ if k == "webhook-e2e-test" && v == "webhook-disallow" {
reviewStatus.Allowed = false
reviewStatus.Result = &metav1.Status{
- Message: "the pod contains unwanted container name",
+ Reason: "the configmap contains unwanted key and value",
}
}
}
return &reviewStatus
}
-func serve(w http.ResponseWriter, r *http.Request) {
+func admitCRD(ar v1alpha1.AdmissionReview) *v1alpha1.AdmissionReviewStatus {
+ glog.V(2).Info("admitting crd")
+ cr := struct {
+ metav1.ObjectMeta
+ Data map[string]string
+ }{}
+
+ raw := ar.Spec.Object.Raw
+ err := json.Unmarshal(raw, &cr)
+ if err != nil {
+ glog.Error(err)
+ return toAdmissionReviewStatus(err)
+ }
+
+ reviewStatus := v1alpha1.AdmissionReviewStatus{}
+ reviewStatus.Allowed = true
+ for k, v := range cr.Data {
+ if k == "webhook-e2e-test" && v == "webhook-disallow" {
+ reviewStatus.Allowed = false
+ reviewStatus.Result = &metav1.Status{
+ Reason: "the custom resource contains unwanted data",
+ }
+ }
+ }
+ return &reviewStatus
+}
+
+type admitFunc func(v1alpha1.AdmissionReview) *v1alpha1.AdmissionReviewStatus
+
+func serve(w http.ResponseWriter, r *http.Request, admit admitFunc) {
var body []byte
if r.Body != nil {
if data, err := ioutil.ReadAll(r.Body); err == nil {
@@ -101,9 +164,18 @@ func serve(w http.ResponseWriter, r *http.Request) {
return
}
- reviewStatus := admit(body)
- ar := v1alpha1.AdmissionReview{
- Status: *reviewStatus,
+ var reviewStatus *v1alpha1.AdmissionReviewStatus
+ ar := v1alpha1.AdmissionReview{}
+ deserializer := codecs.UniversalDeserializer()
+ if _, _, err := deserializer.Decode(body, nil, &ar); err != nil {
+ glog.Error(err)
+ reviewStatus = toAdmissionReviewStatus(err)
+ } else {
+ reviewStatus = admit(ar)
+ }
+
+ if reviewStatus != nil {
+ ar.Status = *reviewStatus
}
resp, err := json.Marshal(ar)
@@ -115,12 +187,26 @@ func serve(w http.ResponseWriter, r *http.Request) {
}
}
+func servePods(w http.ResponseWriter, r *http.Request) {
+ serve(w, r, admitPods)
+}
+
+func serveConfigmaps(w http.ResponseWriter, r *http.Request) {
+ serve(w, r, admitConfigMaps)
+}
+
+func serveCRD(w http.ResponseWriter, r *http.Request) {
+ serve(w, r, admitCRD)
+}
+
func main() {
var config Config
config.addFlags()
flag.Parse()
- http.HandleFunc("/", serve)
+ http.HandleFunc("/pods", servePods)
+ http.HandleFunc("/configmaps", serveConfigmaps)
+ http.HandleFunc("/crd", serveCRD)
clientset := getClient()
server := &http.Server{
Addr: ":443",
diff --git a/test/images/webhook/scheme.go b/test/images/webhook/scheme.go
new file mode 100644
index 0000000000..6827b137d7
--- /dev/null
+++ b/test/images/webhook/scheme.go
@@ -0,0 +1,36 @@
+/*
+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 main
+
+import (
+ admissionregistrationv1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
+ corev1 "k8s.io/api/core/v1"
+ "k8s.io/apimachinery/pkg/runtime"
+ "k8s.io/apimachinery/pkg/runtime/serializer"
+)
+
+var scheme = runtime.NewScheme()
+var codecs = serializer.NewCodecFactory(scheme)
+
+func init() {
+ addToScheme(scheme)
+}
+
+func addToScheme(scheme *runtime.Scheme) {
+ corev1.AddToScheme(scheme)
+ admissionregistrationv1alpha1.AddToScheme(scheme)
+}
diff --git a/test/integration/apiserver/BUILD b/test/integration/apiserver/BUILD
index a0710bef2b..4d333d80e9 100644
--- a/test/integration/apiserver/BUILD
+++ b/test/integration/apiserver/BUILD
@@ -19,8 +19,8 @@ go_test(
"integration",
],
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/testapi:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//test/integration/framework:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/github.com/pborman/uuid:go_default_library",
diff --git a/test/integration/apiserver/apiserver_test.go b/test/integration/apiserver/apiserver_test.go
index 5fc84d0ab7..c876961758 100644
--- a/test/integration/apiserver/apiserver_test.go
+++ b/test/integration/apiserver/apiserver_test.go
@@ -37,8 +37,8 @@ import (
clientset "k8s.io/client-go/kubernetes"
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/tools/pager"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testapi"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/test/integration/framework"
)
diff --git a/test/integration/auth/BUILD b/test/integration/auth/BUILD
index 62c090793d..c91ff5fd66 100644
--- a/test/integration/auth/BUILD
+++ b/test/integration/auth/BUILD
@@ -19,11 +19,11 @@ go_test(
importpath = "k8s.io/kubernetes/test/integration/auth",
tags = ["integration"],
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/apis/authorization:go_default_library",
"//pkg/apis/autoscaling:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/apis/policy:go_default_library",
"//pkg/apis/rbac:go_default_library",
diff --git a/test/integration/auth/accessreview_test.go b/test/integration/auth/accessreview_test.go
index 3924fd61c8..c5e1fbe32d 100644
--- a/test/integration/auth/accessreview_test.go
+++ b/test/integration/auth/accessreview_test.go
@@ -27,9 +27,9 @@ import (
"k8s.io/apiserver/pkg/authentication/user"
"k8s.io/apiserver/pkg/authorization/authorizer"
restclient "k8s.io/client-go/rest"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testapi"
authorizationapi "k8s.io/kubernetes/pkg/apis/authorization"
+ api "k8s.io/kubernetes/pkg/apis/core"
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/plugin/pkg/admission/admit"
"k8s.io/kubernetes/test/integration/framework"
diff --git a/test/integration/auth/auth_test.go b/test/integration/auth/auth_test.go
index d28d54e34c..41c53e3bf2 100644
--- a/test/integration/auth/auth_test.go
+++ b/test/integration/auth/auth_test.go
@@ -46,9 +46,9 @@ import (
"k8s.io/apiserver/plugin/pkg/authenticator/token/tokentest"
"k8s.io/apiserver/plugin/pkg/authenticator/token/webhook"
"k8s.io/client-go/tools/clientcmd/api/v1"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/apis/autoscaling"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/auth/authorizer/abac"
"k8s.io/kubernetes/plugin/pkg/admission/admit"
diff --git a/test/integration/auth/bootstraptoken_test.go b/test/integration/auth/bootstraptoken_test.go
index ab62aff815..213e15ebda 100644
--- a/test/integration/auth/bootstraptoken_test.go
+++ b/test/integration/auth/bootstraptoken_test.go
@@ -27,7 +27,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apiserver/pkg/authentication/request/bearertoken"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
bootstrapapi "k8s.io/kubernetes/pkg/bootstrap/api"
"k8s.io/kubernetes/plugin/pkg/admission/admit"
"k8s.io/kubernetes/plugin/pkg/auth/authenticator/token/bootstrap"
diff --git a/test/integration/auth/node_test.go b/test/integration/auth/node_test.go
index 7bcb693c30..4fab825765 100644
--- a/test/integration/auth/node_test.go
+++ b/test/integration/auth/node_test.go
@@ -31,8 +31,8 @@ import (
"k8s.io/apiserver/pkg/authentication/token/tokenfile"
"k8s.io/apiserver/pkg/authentication/user"
restclient "k8s.io/client-go/rest"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/policy"
"k8s.io/kubernetes/pkg/auth/nodeidentifier"
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
diff --git a/test/integration/auth/rbac_test.go b/test/integration/auth/rbac_test.go
index 13f179d902..600eb5a4a2 100644
--- a/test/integration/auth/rbac_test.go
+++ b/test/integration/auth/rbac_test.go
@@ -38,9 +38,9 @@ import (
"k8s.io/apiserver/pkg/registry/generic"
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/transport"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
+ api "k8s.io/kubernetes/pkg/apis/core"
rbacapi "k8s.io/kubernetes/pkg/apis/rbac"
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/pkg/master"
diff --git a/test/integration/defaulttolerationseconds/BUILD b/test/integration/defaulttolerationseconds/BUILD
index a40f3bff97..febfcd318e 100644
--- a/test/integration/defaulttolerationseconds/BUILD
+++ b/test/integration/defaulttolerationseconds/BUILD
@@ -18,8 +18,8 @@ go_test(
"integration",
],
deps = [
- "//pkg/api/helper:go_default_library",
"//pkg/api/testapi:go_default_library",
+ "//pkg/apis/core/helper:go_default_library",
"//plugin/pkg/admission/defaulttolerationseconds:go_default_library",
"//plugin/pkg/scheduler/algorithm:go_default_library",
"//test/integration/framework:go_default_library",
diff --git a/test/integration/defaulttolerationseconds/defaulttolerationseconds_test.go b/test/integration/defaulttolerationseconds/defaulttolerationseconds_test.go
index 528f464cca..29832a9da6 100644
--- a/test/integration/defaulttolerationseconds/defaulttolerationseconds_test.go
+++ b/test/integration/defaulttolerationseconds/defaulttolerationseconds_test.go
@@ -23,8 +23,8 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
clientset "k8s.io/client-go/kubernetes"
restclient "k8s.io/client-go/rest"
- "k8s.io/kubernetes/pkg/api/helper"
"k8s.io/kubernetes/pkg/api/testapi"
+ "k8s.io/kubernetes/pkg/apis/core/helper"
"k8s.io/kubernetes/plugin/pkg/admission/defaulttolerationseconds"
"k8s.io/kubernetes/plugin/pkg/scheduler/algorithm"
"k8s.io/kubernetes/test/integration/framework"
diff --git a/test/integration/etcd/BUILD b/test/integration/etcd/BUILD
index b0acd0bef9..7f75f7189e 100644
--- a/test/integration/etcd/BUILD
+++ b/test/integration/etcd/BUILD
@@ -20,8 +20,8 @@ go_test(
deps = [
"//cmd/kube-apiserver/app:go_default_library",
"//cmd/kube-apiserver/app/options:go_default_library",
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/kubectl/cmd/util:go_default_library",
"//pkg/master:go_default_library",
"//test/integration/framework:go_default_library",
diff --git a/test/integration/etcd/etcd_storage_path_test.go b/test/integration/etcd/etcd_storage_path_test.go
index 6ff9dfa4b6..95f865568d 100644
--- a/test/integration/etcd/etcd_storage_path_test.go
+++ b/test/integration/etcd/etcd_storage_path_test.go
@@ -49,8 +49,8 @@ import (
"k8s.io/client-go/util/flowcontrol"
"k8s.io/kubernetes/cmd/kube-apiserver/app"
"k8s.io/kubernetes/cmd/kube-apiserver/app/options"
- kapi "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
+ kapi "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/test/integration/framework"
@@ -381,9 +381,13 @@ var etcdStorageData = map[schema.GroupVersionResource]struct {
stub: `{"metadata":{"name":"ic1"},"initializers":[{"name":"initializer.k8s.io","rules":[{"apiGroups":["group"],"apiVersions":["version"],"resources":["resource"]}],"failurePolicy":"Ignore"}]}`,
expectedEtcdPath: "/registry/initializerconfigurations/ic1",
},
- gvr("admissionregistration.k8s.io", "v1alpha1", "externaladmissionhookconfigurations"): {
- stub: `{"metadata":{"name":"hook1","creationTimestamp":null},"externalAdmissionHooks":[{"name":"externaladmissionhook.k8s.io","clientConfig":{"service":{"namespace":"","name":""},"caBundle":null},"rules":[{"operations":["CREATE"],"apiGroups":["group"],"apiVersions":["version"],"resources":["resource"]}],"failurePolicy":"Ignore"}]}`,
- expectedEtcdPath: "/registry/externaladmissionhookconfigurations/hook1",
+ gvr("admissionregistration.k8s.io", "v1alpha1", "validatingwebhookconfigurations"): {
+ stub: `{"metadata":{"name":"hook1","creationTimestamp":null},"webhooks":[{"name":"externaladmissionhook.k8s.io","clientConfig":{"service":{"namespace":"ns","name":"n"},"caBundle":null},"rules":[{"operations":["CREATE"],"apiGroups":["group"],"apiVersions":["version"],"resources":["resource"]}],"failurePolicy":"Ignore"}]}`,
+ expectedEtcdPath: "/registry/validatingwebhookconfigurations/hook1",
+ },
+ gvr("admissionregistration.k8s.io", "v1alpha1", "mutatingwebhookconfigurations"): {
+ stub: `{"metadata":{"name":"hook1","creationTimestamp":null},"webhooks":[{"name":"externaladmissionhook.k8s.io","clientConfig":{"service":{"namespace":"ns","name":"n"},"caBundle":null},"rules":[{"operations":["CREATE"],"apiGroups":["group"],"apiVersions":["version"],"resources":["resource"]}],"failurePolicy":"Ignore"}]}`,
+ expectedEtcdPath: "/registry/mutatingwebhookconfigurations/hook1",
},
// --
diff --git a/test/integration/framework/BUILD b/test/integration/framework/BUILD
index 433f119f71..ebae0736c3 100644
--- a/test/integration/framework/BUILD
+++ b/test/integration/framework/BUILD
@@ -19,10 +19,10 @@ go_library(
],
importpath = "k8s.io/kubernetes/test/integration/framework",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/apis/batch:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/policy/v1alpha1:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/controller:go_default_library",
diff --git a/test/integration/framework/master_utils.go b/test/integration/framework/master_utils.go
index 7c78798824..5df7f32c39 100644
--- a/test/integration/framework/master_utils.go
+++ b/test/integration/framework/master_utils.go
@@ -60,10 +60,10 @@ import (
extclient "k8s.io/client-go/kubernetes"
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/tools/record"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/apis/batch"
+ api "k8s.io/kubernetes/pkg/apis/core"
policy "k8s.io/kubernetes/pkg/apis/policy/v1alpha1"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/pkg/controller"
diff --git a/test/integration/master/BUILD b/test/integration/master/BUILD
index 64eeff8968..b981702afb 100644
--- a/test/integration/master/BUILD
+++ b/test/integration/master/BUILD
@@ -15,8 +15,8 @@ go_test(
importpath = "k8s.io/kubernetes/test/integration/master",
tags = ["integration"],
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/testapi:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/master:go_default_library",
"//test/integration:go_default_library",
diff --git a/test/integration/master/master_test.go b/test/integration/master/master_test.go
index 61294e746d..d00f8766b2 100644
--- a/test/integration/master/master_test.go
+++ b/test/integration/master/master_test.go
@@ -43,8 +43,8 @@ import (
"k8s.io/apiserver/plugin/pkg/authenticator/token/tokentest"
clienttypedv1 "k8s.io/client-go/kubernetes/typed/core/v1"
restclient "k8s.io/client-go/rest"
- "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testapi"
+ api "k8s.io/kubernetes/pkg/apis/core"
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/pkg/master"
"k8s.io/kubernetes/test/integration"
diff --git a/test/integration/scale/scale_test.go b/test/integration/scale/scale_test.go
index c08c1575fe..8e6f30c44c 100644
--- a/test/integration/scale/scale_test.go
+++ b/test/integration/scale/scale_test.go
@@ -68,9 +68,9 @@ func TestScaleSubresources(t *testing.T) {
makeGVR("apps", "v1beta2", "replicasets/scale"): makeGVK("apps", "v1beta2", "Scale"),
makeGVR("apps", "v1beta2", "statefulsets/scale"): makeGVK("apps", "v1beta2", "Scale"),
- // makeGVR("apps", "v1", "deployments/scale"): makeGVK("autoscaling", "v1", "Scale"),
- // makeGVR("apps", "v1", "replicasets/scale"): makeGVK("autoscaling", "v1", "Scale"),
- // makeGVR("apps", "v1", "statefulsets/scale"): makeGVK("autoscaling", "v1", "Scale"),
+ makeGVR("apps", "v1", "deployments/scale"): makeGVK("autoscaling", "v1", "Scale"),
+ makeGVR("apps", "v1", "replicasets/scale"): makeGVK("autoscaling", "v1", "Scale"),
+ makeGVR("apps", "v1", "statefulsets/scale"): makeGVK("autoscaling", "v1", "Scale"),
}
autoscalingGVK := schema.GroupVersionKind{Group: "autoscaling", Version: "v1", Kind: "Scale"}
diff --git a/test/integration/volume/persistent_volumes_test.go b/test/integration/volume/persistent_volumes_test.go
index 2a1860a67d..aaa409d336 100644
--- a/test/integration/volume/persistent_volumes_test.go
+++ b/test/integration/volume/persistent_volumes_test.go
@@ -494,7 +494,7 @@ func TestPersistentVolumeMultiPVs(t *testing.T) {
pvs := make([]*v1.PersistentVolume, maxPVs)
for i := 0; i < maxPVs; i++ {
// This PV will be claimed, released, and deleted
- pvs[i] = createPV("pv-"+strconv.Itoa(i), "/tmp/foo"+strconv.Itoa(i), strconv.Itoa(i)+"G",
+ pvs[i] = createPV("pv-"+strconv.Itoa(i), "/tmp/foo"+strconv.Itoa(i), strconv.Itoa(i+1)+"G",
[]v1.PersistentVolumeAccessMode{v1.ReadWriteOnce}, v1.PersistentVolumeReclaimRetain)
}
diff --git a/test/soak/cauldron/BUILD b/test/soak/cauldron/BUILD
index 364de937e7..2c82694ae3 100644
--- a/test/soak/cauldron/BUILD
+++ b/test/soak/cauldron/BUILD
@@ -17,7 +17,7 @@ go_library(
srcs = ["cauldron.go"],
importpath = "k8s.io/kubernetes/test/soak/cauldron",
deps = [
- "//pkg/api:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//test/e2e/framework:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
diff --git a/test/soak/cauldron/cauldron.go b/test/soak/cauldron/cauldron.go
index e07512f78f..e2459629b3 100644
--- a/test/soak/cauldron/cauldron.go
+++ b/test/soak/cauldron/cauldron.go
@@ -34,7 +34,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/intstr"
restclient "k8s.io/client-go/rest"
- "k8s.io/kubernetes/pkg/api"
+ api "k8s.io/kubernetes/pkg/apis/core"
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/test/e2e/framework"
)
diff --git a/test/utils/BUILD b/test/utils/BUILD
index 47f6361eb7..a2e6045933 100644
--- a/test/utils/BUILD
+++ b/test/utils/BUILD
@@ -18,9 +18,9 @@ go_library(
],
importpath = "k8s.io/kubernetes/test/utils",
deps = [
- "//pkg/api:go_default_library",
"//pkg/api/v1/pod:go_default_library",
"//pkg/apis/batch:go_default_library",
+ "//pkg/apis/core:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/controller/deployment/util:go_default_library",
diff --git a/test/utils/image/manifest.go b/test/utils/image/manifest.go
index 1d03dea5ec..d7c88eff49 100644
--- a/test/utils/image/manifest.go
+++ b/test/utils/image/manifest.go
@@ -77,7 +77,7 @@ var (
Porter = ImageConfig{e2eRegistry, "porter", "1.0"}
PortForwardTester = ImageConfig{e2eRegistry, "port-forward-tester", "1.0"}
Redis = ImageConfig{e2eRegistry, "redis", "1.0"}
- ResourceConsumer = ImageConfig{e2eRegistry, "resource-consumer", "1.1"}
+ ResourceConsumer = ImageConfig{e2eRegistry, "resource-consumer", "1.3"}
ResourceController = ImageConfig{e2eRegistry, "resource-consumer/controller", "1.0"}
ServeHostname = ImageConfig{e2eRegistry, "serve-hostname", "1.0"}
TestWebserver = ImageConfig{e2eRegistry, "test-webserver", "1.0"}
diff --git a/test/utils/runners.go b/test/utils/runners.go
index 5d498633be..2eaf28e48e 100644
--- a/test/utils/runners.go
+++ b/test/utils/runners.go
@@ -39,8 +39,8 @@ import (
"k8s.io/apimachinery/pkg/util/wait"
clientset "k8s.io/client-go/kubernetes"
"k8s.io/client-go/util/workqueue"
- "k8s.io/kubernetes/pkg/api"
batchinternal "k8s.io/kubernetes/pkg/apis/batch"
+ api "k8s.io/kubernetes/pkg/apis/core"
extensionsinternal "k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
@@ -112,23 +112,24 @@ type RunObjectConfig interface {
}
type RCConfig struct {
- Affinity *v1.Affinity
- Client clientset.Interface
- InternalClient internalclientset.Interface
- Image string
- Command []string
- Name string
- Namespace string
- PollInterval time.Duration
- Timeout time.Duration
- PodStatusFile *os.File
- Replicas int
- CpuRequest int64 // millicores
- CpuLimit int64 // millicores
- MemRequest int64 // bytes
- MemLimit int64 // bytes
- ReadinessProbe *v1.Probe
- DNSPolicy *v1.DNSPolicy
+ Affinity *v1.Affinity
+ Client clientset.Interface
+ InternalClient internalclientset.Interface
+ Image string
+ Command []string
+ Name string
+ Namespace string
+ PollInterval time.Duration
+ Timeout time.Duration
+ PodStatusFile *os.File
+ Replicas int
+ CpuRequest int64 // millicores
+ CpuLimit int64 // millicores
+ MemRequest int64 // bytes
+ MemLimit int64 // bytes
+ ReadinessProbe *v1.Probe
+ DNSPolicy *v1.DNSPolicy
+ PriorityClassName string
// Env vars, set the same for every pod.
Env map[string]string
@@ -539,6 +540,7 @@ func (config *RCConfig) create() error {
DNSPolicy: *config.DNSPolicy,
NodeSelector: config.NodeSelector,
TerminationGracePeriodSeconds: &one,
+ PriorityClassName: config.PriorityClassName,
},
},
},
@@ -615,6 +617,9 @@ func (config *RCConfig) applyTo(template *v1.PodTemplateSpec) {
if len(config.VolumeMounts) > 0 {
template.Spec.Containers[0].VolumeMounts = config.VolumeMounts
}
+ if config.PriorityClassName != "" {
+ template.Spec.PriorityClassName = config.PriorityClassName
+ }
}
type RCStartupStatus struct {
diff --git a/third_party/forked/golang/expansion/BUILD b/third_party/forked/golang/expansion/BUILD
index 20641a43c3..41a2e08cc6 100644
--- a/third_party/forked/golang/expansion/BUILD
+++ b/third_party/forked/golang/expansion/BUILD
@@ -19,7 +19,7 @@ go_test(
srcs = ["expand_test.go"],
importpath = "k8s.io/kubernetes/third_party/forked/golang/expansion",
library = ":go_default_library",
- deps = ["//pkg/api:go_default_library"],
+ deps = ["//pkg/apis/core:go_default_library"],
)
filegroup(
diff --git a/third_party/forked/golang/expansion/expand_test.go b/third_party/forked/golang/expansion/expand_test.go
index f5a628b17b..948c36ffe6 100644
--- a/third_party/forked/golang/expansion/expand_test.go
+++ b/third_party/forked/golang/expansion/expand_test.go
@@ -2,8 +2,7 @@ package expansion
import (
"testing"
-
- "k8s.io/kubernetes/pkg/api"
+api "k8s.io/kubernetes/pkg/apis/core"
)
func TestMapReference(t *testing.T) {
diff --git a/translations/kubectl/de_DE/LC_MESSAGES/k8s.po b/translations/kubectl/de_DE/LC_MESSAGES/k8s.po
index 4a3f724496..6dc6590528 100644
--- a/translations/kubectl/de_DE/LC_MESSAGES/k8s.po
+++ b/translations/kubectl/de_DE/LC_MESSAGES/k8s.po
@@ -154,8 +154,8 @@ msgstr ""
msgid ""
"\n"
"\t\t# Auto scale a deployment \"foo\", with the number of pods between 2 and "
-"10, target CPU utilization specified so a default autoscaling policy will be "
-"used:\n"
+"10, no target CPU utilization specified so a default autoscaling policy will "
+"be used:\n"
"\t\tkubectl autoscale deployment foo --min=2 --max=10\n"
"\n"
"\t\t# Auto scale a replication controller \"foo\", with the number of pods "
diff --git a/translations/kubectl/default/LC_MESSAGES/k8s.po b/translations/kubectl/default/LC_MESSAGES/k8s.po
index 6d80e41167..4049c95bc6 100644
--- a/translations/kubectl/default/LC_MESSAGES/k8s.po
+++ b/translations/kubectl/default/LC_MESSAGES/k8s.po
@@ -152,8 +152,8 @@ msgstr ""
msgid ""
"\n"
"\t\t# Auto scale a deployment \"foo\", with the number of pods between 2 and "
-"10, target CPU utilization specified so a default autoscaling policy will be "
-"used:\n"
+"10, no target CPU utilization specified so a default autoscaling policy will "
+"be used:\n"
"\t\tkubectl autoscale deployment foo --min=2 --max=10\n"
"\n"
"\t\t# Auto scale a replication controller \"foo\", with the number of pods "
@@ -162,8 +162,8 @@ msgid ""
msgstr ""
"\n"
"\t\t# Auto scale a deployment \"foo\", with the number of pods between 2 and "
-"10, target CPU utilization specified so a default autoscaling policy will be "
-"used:\n"
+"10, no target CPU utilization specified so a default autoscaling policy will "
+"be used:\n"
"\t\tkubectl autoscale deployment foo --min=2 --max=10\n"
"\n"
"\t\t# Auto scale a replication controller \"foo\", with the number of pods "
diff --git a/translations/kubectl/en_US/LC_MESSAGES/k8s.po b/translations/kubectl/en_US/LC_MESSAGES/k8s.po
index 3dad3733f3..6706d6255a 100644
--- a/translations/kubectl/en_US/LC_MESSAGES/k8s.po
+++ b/translations/kubectl/en_US/LC_MESSAGES/k8s.po
@@ -152,8 +152,8 @@ msgstr ""
msgid ""
"\n"
"\t\t# Auto scale a deployment \"foo\", with the number of pods between 2 and "
-"10, target CPU utilization specified so a default autoscaling policy will be "
-"used:\n"
+"10, no target CPU utilization specified so a default autoscaling policy will "
+"be used:\n"
"\t\tkubectl autoscale deployment foo --min=2 --max=10\n"
"\n"
"\t\t# Auto scale a replication controller \"foo\", with the number of pods "
@@ -162,8 +162,8 @@ msgid ""
msgstr ""
"\n"
"\t\t# Auto scale a deployment \"foo\", with the number of pods between 2 and "
-"10, target CPU utilization specified so a default autoscaling policy will be "
-"used:\n"
+"10, no target CPU utilization specified so a default autoscaling policy will "
+"be used:\n"
"\t\tkubectl autoscale deployment foo --min=2 --max=10\n"
"\n"
"\t\t# Auto scale a replication controller \"foo\", with the number of pods "
diff --git a/translations/kubectl/it_IT/LC_MESSAGES/k8s.po b/translations/kubectl/it_IT/LC_MESSAGES/k8s.po
index 7beeacb1f9..452b483cad 100644
--- a/translations/kubectl/it_IT/LC_MESSAGES/k8s.po
+++ b/translations/kubectl/it_IT/LC_MESSAGES/k8s.po
@@ -153,8 +153,8 @@ msgstr ""
msgid ""
"\n"
"\t\t# Auto scale a deployment \"foo\", with the number of pods between 2 and "
-"10, target CPU utilization specified so a default autoscaling policy will be "
-"used:\n"
+"10, no target CPU utilization specified so a default autoscaling policy will "
+"be used:\n"
"\t\tkubectl autoscale deployment foo --min=2 --max=10\n"
"\n"
"\t\t# Auto scale a replication controller \"foo\", with the number of pods "
diff --git a/translations/kubectl/template.pot b/translations/kubectl/template.pot
index 2a6eea3e12..86e4bad67f 100644
--- a/translations/kubectl/template.pot
+++ b/translations/kubectl/template.pot
@@ -98,8 +98,8 @@ msgstr ""
msgid ""
"\n"
"\t\t# Auto scale a deployment \"foo\", with the number of pods between 2 and "
-"10, target CPU utilization specified so a default autoscaling policy will be "
-"used:\n"
+"10, no target CPU utilization specified so a default autoscaling policy will "
+"be used:\n"
"\t\tkubectl autoscale deployment foo --min=2 --max=10\n"
"\n"
"\t\t# Auto scale a replication controller \"foo\", with the number of pods "
diff --git a/vendor/k8s.io/gengo/examples/deepcopy-gen/generators/deepcopy.go b/vendor/k8s.io/gengo/examples/deepcopy-gen/generators/deepcopy.go
index 68ae5215c5..b132e772a1 100644
--- a/vendor/k8s.io/gengo/examples/deepcopy-gen/generators/deepcopy.go
+++ b/vendor/k8s.io/gengo/examples/deepcopy-gen/generators/deepcopy.go
@@ -369,60 +369,7 @@ func argsFromType(ts ...*types.Type) generator.Args {
}
func (g *genDeepCopy) Init(c *generator.Context, w io.Writer) error {
- glog.V(5).Infof("Registering types in pkg %q", g.targetPackage)
-
- // the legacy restration will go away when the cloner is removed from Kubernetes, replaced
- // with static function calls to the DeepCopy methods.
- return g.legacyRegistration(c, w)
-}
-
-func (g *genDeepCopy) legacyRegistration(c *generator.Context, w io.Writer) error {
- conversionPackagePath := "k8s.io/apimachinery/pkg/conversion"
- runtimePackagePath := "k8s.io/apimachinery/pkg/runtime"
-
- cloner := c.Universe.Type(types.Name{Package: conversionPackagePath, Name: "Cloner"})
- g.imports.AddType(cloner)
- if !g.registerTypes {
- sw := generator.NewSnippetWriter(w, c, "$", "$")
- sw.Do("// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them.\n", nil)
- sw.Do("//\n", nil)
- sw.Do("// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.\n", nil)
- sw.Do("func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc{\n", nil)
- sw.Do("return []conversion.GeneratedDeepCopyFunc{\n", nil)
- for _, t := range g.typesForInit {
- args := argsFromType(t).
- With("typeof", c.Universe.Package("reflect").Function("TypeOf"))
- sw.Do("{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {in.(*$.type|raw$).DeepCopyInto(out.(*$.type|raw$)); return nil}, InType: $.typeof|raw$(&$.type|raw${})},\n", args)
- }
- sw.Do("}\n", nil)
- sw.Do("}\n\n", nil)
- return sw.Error()
- }
-
- sw := generator.NewSnippetWriter(w, c, "$", "$")
- sw.Do("func init() {\n", nil)
- sw.Do("SchemeBuilder.Register(RegisterDeepCopies)\n", nil)
- sw.Do("}\n\n", nil)
-
- scheme := c.Universe.Type(types.Name{Package: runtimePackagePath, Name: "Scheme"})
- schemePtr := &types.Type{
- Kind: types.Pointer,
- Elem: scheme,
- }
- sw.Do("// RegisterDeepCopies adds deep-copy functions to the given scheme. Public\n", nil)
- sw.Do("// to allow building arbitrary schemes.\n", nil)
- sw.Do("//\n", nil)
- sw.Do("// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.\n", nil)
- sw.Do("func RegisterDeepCopies(scheme $.|raw$) error {\n", schemePtr)
- sw.Do("return scheme.AddGeneratedDeepCopyFuncs(\n", nil)
- for _, t := range g.typesForInit {
- args := argsFromType(t).
- With("typeof", c.Universe.Package("reflect").Function("TypeOf"))
- sw.Do("conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {in.(*$.type|raw$).DeepCopyInto(out.(*$.type|raw$)); return nil}, InType: $.typeof|raw$(&$.type|raw${})},\n", args)
- }
- sw.Do(")\n", nil)
- sw.Do("}\n\n", nil)
- return sw.Error()
+ return nil
}
func (g *genDeepCopy) needsGeneration(t *types.Type) bool {
diff --git a/vendor/k8s.io/gengo/examples/set-gen/generators/sets.go b/vendor/k8s.io/gengo/examples/set-gen/generators/sets.go
index 8b4e72fa40..c570b0c0a4 100644
--- a/vendor/k8s.io/gengo/examples/set-gen/generators/sets.go
+++ b/vendor/k8s.io/gengo/examples/set-gen/generators/sets.go
@@ -189,7 +189,7 @@ type Empty struct{}
var setCode = `// sets.$.type|public$ is a set of $.type|raw$s, implemented via map[$.type|raw$]struct{} for minimal memory consumption.
type $.type|public$ map[$.type|raw$]Empty
-// New creates a $.type|public$ from a list of values.
+// New$.type|public$ creates a $.type|public$ from a list of values.
func New$.type|public$(items ...$.type|raw$) $.type|public$ {
ss := $.type|public${}
ss.Insert(items...)
diff --git a/vendor/k8s.io/gengo/examples/set-gen/sets/byte.go b/vendor/k8s.io/gengo/examples/set-gen/sets/byte.go
index a460e4b1f5..60144d181b 100644
--- a/vendor/k8s.io/gengo/examples/set-gen/sets/byte.go
+++ b/vendor/k8s.io/gengo/examples/set-gen/sets/byte.go
@@ -26,7 +26,7 @@ import (
// sets.Byte is a set of bytes, implemented via map[byte]struct{} for minimal memory consumption.
type Byte map[byte]Empty
-// New creates a Byte from a list of values.
+// NewByte creates a Byte from a list of values.
func NewByte(items ...byte) Byte {
ss := Byte{}
ss.Insert(items...)
diff --git a/vendor/k8s.io/gengo/examples/set-gen/sets/int.go b/vendor/k8s.io/gengo/examples/set-gen/sets/int.go
index 0614e9fb00..2b155e4e1c 100644
--- a/vendor/k8s.io/gengo/examples/set-gen/sets/int.go
+++ b/vendor/k8s.io/gengo/examples/set-gen/sets/int.go
@@ -26,7 +26,7 @@ import (
// sets.Int is a set of ints, implemented via map[int]struct{} for minimal memory consumption.
type Int map[int]Empty
-// New creates a Int from a list of values.
+// NewInt creates a Int from a list of values.
func NewInt(items ...int) Int {
ss := Int{}
ss.Insert(items...)
diff --git a/vendor/k8s.io/gengo/examples/set-gen/sets/int64.go b/vendor/k8s.io/gengo/examples/set-gen/sets/int64.go
index 82e1ba7821..0137bca2bb 100644
--- a/vendor/k8s.io/gengo/examples/set-gen/sets/int64.go
+++ b/vendor/k8s.io/gengo/examples/set-gen/sets/int64.go
@@ -26,7 +26,7 @@ import (
// sets.Int64 is a set of int64s, implemented via map[int64]struct{} for minimal memory consumption.
type Int64 map[int64]Empty
-// New creates a Int64 from a list of values.
+// NewInt64 creates a Int64 from a list of values.
func NewInt64(items ...int64) Int64 {
ss := Int64{}
ss.Insert(items...)
diff --git a/vendor/k8s.io/gengo/examples/set-gen/sets/string.go b/vendor/k8s.io/gengo/examples/set-gen/sets/string.go
index baef7a6a2b..ec72eea251 100644
--- a/vendor/k8s.io/gengo/examples/set-gen/sets/string.go
+++ b/vendor/k8s.io/gengo/examples/set-gen/sets/string.go
@@ -26,7 +26,7 @@ import (
// sets.String is a set of strings, implemented via map[string]struct{} for minimal memory consumption.
type String map[string]Empty
-// New creates a String from a list of values.
+// NewString creates a String from a list of values.
func NewString(items ...string) String {
ss := String{}
ss.Insert(items...)