mirror of https://github.com/k3s-io/k3s
Remove all traces of federation
parent
7c6f17296c
commit
adc338d330
|
@ -7,4 +7,3 @@ test/test_owners.csv merge=union
|
||||||
**/generated.proto -diff
|
**/generated.proto -diff
|
||||||
**/types_swagger_doc_generated.go -diff
|
**/types_swagger_doc_generated.go -diff
|
||||||
docs/api-reference/** -diff
|
docs/api-reference/** -diff
|
||||||
federation/docs/api-reference/** -diff
|
|
||||||
|
|
|
@ -74546,11 +74546,6 @@
|
||||||
"kind": "DeleteOptions",
|
"kind": "DeleteOptions",
|
||||||
"version": "v1beta1"
|
"version": "v1beta1"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"group": "federation",
|
|
||||||
"kind": "DeleteOptions",
|
|
||||||
"version": "v1beta1"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"group": "imagepolicy.k8s.io",
|
"group": "imagepolicy.k8s.io",
|
||||||
"kind": "DeleteOptions",
|
"kind": "DeleteOptions",
|
||||||
|
@ -75065,11 +75060,6 @@
|
||||||
"kind": "WatchEvent",
|
"kind": "WatchEvent",
|
||||||
"version": "v1beta1"
|
"version": "v1beta1"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"group": "federation",
|
|
||||||
"kind": "WatchEvent",
|
|
||||||
"version": "v1beta1"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"group": "imagepolicy.k8s.io",
|
"group": "imagepolicy.k8s.io",
|
||||||
"kind": "WatchEvent",
|
"kind": "WatchEvent",
|
||||||
|
|
|
@ -103,7 +103,6 @@ release_filegroup(
|
||||||
name = "client-targets",
|
name = "client-targets",
|
||||||
srcs = [
|
srcs = [
|
||||||
"//cmd/kubectl",
|
"//cmd/kubectl",
|
||||||
"//federation/cmd/kubefed",
|
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -143,7 +142,6 @@ filegroup(
|
||||||
"//cmd/genyaml",
|
"//cmd/genyaml",
|
||||||
"//cmd/kubemark", # TODO: server platforms only
|
"//cmd/kubemark", # TODO: server platforms only
|
||||||
"//cmd/linkcheck",
|
"//cmd/linkcheck",
|
||||||
"//federation/cmd/genfeddocs",
|
|
||||||
"//test/e2e:e2e.test",
|
"//test/e2e:e2e.test",
|
||||||
"//test/e2e_node:e2e_node.test", # TODO: server platforms only
|
"//test/e2e_node:e2e_node.test", # TODO: server platforms only
|
||||||
"//vendor/github.com/onsi/ginkgo/ginkgo",
|
"//vendor/github.com/onsi/ginkgo/ginkgo",
|
||||||
|
@ -154,9 +152,7 @@ filegroup(
|
||||||
filegroup(
|
filegroup(
|
||||||
name = "test-portable-targets",
|
name = "test-portable-targets",
|
||||||
srcs = [
|
srcs = [
|
||||||
"//federation/develop:all-srcs",
|
|
||||||
"//hack:e2e.go",
|
"//hack:e2e.go",
|
||||||
"//hack:federated-ginkgo-e2e.sh",
|
|
||||||
"//hack:get-build.sh",
|
"//hack:get-build.sh",
|
||||||
"//hack:ginkgo-e2e.sh",
|
"//hack:ginkgo-e2e.sh",
|
||||||
"//hack/e2e-internal:all-srcs",
|
"//hack/e2e-internal:all-srcs",
|
||||||
|
|
|
@ -503,11 +503,6 @@ EOF
|
||||||
mkdir -p "${release_stage}/third_party"
|
mkdir -p "${release_stage}/third_party"
|
||||||
cp -R "${KUBE_ROOT}/third_party/htpasswd" "${release_stage}/third_party/htpasswd"
|
cp -R "${KUBE_ROOT}/third_party/htpasswd" "${release_stage}/third_party/htpasswd"
|
||||||
|
|
||||||
# Include only federation/cluster and federation/deploy
|
|
||||||
mkdir "${release_stage}/federation"
|
|
||||||
cp -R "${KUBE_ROOT}/federation/cluster" "${release_stage}/federation/"
|
|
||||||
cp -R "${KUBE_ROOT}/federation/deploy" "${release_stage}/federation/"
|
|
||||||
|
|
||||||
# Include hack/lib as a dependency for the cluster/ scripts
|
# Include hack/lib as a dependency for the cluster/ scripts
|
||||||
mkdir -p "${release_stage}/hack"
|
mkdir -p "${release_stage}/hack"
|
||||||
cp -R "${KUBE_ROOT}/hack/lib" "${release_stage}/hack/"
|
cp -R "${KUBE_ROOT}/hack/lib" "${release_stage}/hack/"
|
||||||
|
|
|
@ -193,7 +193,6 @@ pkg_tar(
|
||||||
strip_prefix = "//",
|
strip_prefix = "//",
|
||||||
deps = [
|
deps = [
|
||||||
":_full_server",
|
":_full_server",
|
||||||
"//federation:release",
|
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -63,7 +63,6 @@ filegroup(
|
||||||
"//cmd:all-srcs",
|
"//cmd:all-srcs",
|
||||||
"//docs:all-srcs",
|
"//docs:all-srcs",
|
||||||
"//examples:all-srcs",
|
"//examples:all-srcs",
|
||||||
"//federation:all-srcs",
|
|
||||||
"//hack:all-srcs",
|
"//hack:all-srcs",
|
||||||
"//pkg:all-srcs",
|
"//pkg:all-srcs",
|
||||||
"//plugin:all-srcs",
|
"//plugin:all-srcs",
|
||||||
|
|
|
@ -291,7 +291,6 @@ else
|
||||||
test-cmd: generated_files
|
test-cmd: generated_files
|
||||||
hack/make-rules/test-kubeadm-cmd.sh
|
hack/make-rules/test-kubeadm-cmd.sh
|
||||||
hack/make-rules/test-cmd.sh
|
hack/make-rules/test-cmd.sh
|
||||||
hack/make-rules/test-federation-cmd.sh
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
define CLEAN_HELP_INFO
|
define CLEAN_HELP_INFO
|
||||||
|
@ -482,21 +481,6 @@ $(notdir $(abspath $(wildcard plugin/cmd/*/))): generated_files
|
||||||
hack/make-rules/build.sh plugin/cmd/$@
|
hack/make-rules/build.sh plugin/cmd/$@
|
||||||
endif
|
endif
|
||||||
|
|
||||||
define FED_CMD_HELP_INFO
|
|
||||||
# Add rules for all directories in federation/cmd/
|
|
||||||
#
|
|
||||||
# Example:
|
|
||||||
# make federation-apiserver federation-controller-manager
|
|
||||||
endef
|
|
||||||
.PHONY: $(notdir $(abspath $(wildcard federation/cmd/*/)))
|
|
||||||
ifeq ($(PRINT_HELP),y)
|
|
||||||
$(notdir $(abspath $(wildcard federation/cmd/*/))):
|
|
||||||
@echo "$$FED_CMD_HELP_INFO"
|
|
||||||
else
|
|
||||||
$(notdir $(abspath $(wildcard federation/cmd/*/))): generated_files
|
|
||||||
hack/make-rules/build.sh federation/cmd/$@
|
|
||||||
endif
|
|
||||||
|
|
||||||
define GENERATED_FILES_HELP_INFO
|
define GENERATED_FILES_HELP_INFO
|
||||||
# Produce auto-generated files needed for the build.
|
# Produce auto-generated files needed for the build.
|
||||||
#
|
#
|
||||||
|
|
|
@ -50,18 +50,6 @@ package_group(
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
package_group(
|
|
||||||
name = "FEDERATION_BAD",
|
|
||||||
packages = [
|
|
||||||
"//federation/cmd/genfeddocs",
|
|
||||||
"//federation/cmd/kubefed/app",
|
|
||||||
"//federation/pkg/kubefed",
|
|
||||||
"//federation/pkg/kubefed/init",
|
|
||||||
"//federation/pkg/kubefed/testing",
|
|
||||||
"//federation/pkg/kubefed/util",
|
|
||||||
],
|
|
||||||
)
|
|
||||||
|
|
||||||
package_group(
|
package_group(
|
||||||
name = "cluster",
|
name = "cluster",
|
||||||
packages = [
|
packages = [
|
||||||
|
@ -93,7 +81,6 @@ package_group(
|
||||||
package_group(
|
package_group(
|
||||||
name = "pkg_kubectl_CONSUMERS_BAD",
|
name = "pkg_kubectl_CONSUMERS_BAD",
|
||||||
includes = [
|
includes = [
|
||||||
":FEDERATION_BAD",
|
|
||||||
":KUBEADM_BAD",
|
":KUBEADM_BAD",
|
||||||
],
|
],
|
||||||
packages = [
|
packages = [
|
||||||
|
@ -125,9 +112,6 @@ package_group(
|
||||||
|
|
||||||
package_group(
|
package_group(
|
||||||
name = "pkg_kubectl_cmd_CONSUMERS_BAD",
|
name = "pkg_kubectl_cmd_CONSUMERS_BAD",
|
||||||
includes = [
|
|
||||||
":FEDERATION_BAD",
|
|
||||||
],
|
|
||||||
packages = [
|
packages = [
|
||||||
"//cmd/clicheck",
|
"//cmd/clicheck",
|
||||||
"//cmd/hyperkube",
|
"//cmd/hyperkube",
|
||||||
|
@ -178,19 +162,11 @@ package_group(
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
package_group(
|
|
||||||
name = "pkg_kubectl_cmd_templates_CONSUMERS_BAD",
|
|
||||||
packages = [
|
|
||||||
"//federation/pkg/kubefed/init",
|
|
||||||
],
|
|
||||||
)
|
|
||||||
|
|
||||||
package_group(
|
package_group(
|
||||||
name = "pkg_kubectl_cmd_templates_CONSUMERS",
|
name = "pkg_kubectl_cmd_templates_CONSUMERS",
|
||||||
includes = [
|
includes = [
|
||||||
":COMMON_generators",
|
":COMMON_generators",
|
||||||
":COMMON_testing",
|
":COMMON_testing",
|
||||||
":FEDERATION_BAD",
|
|
||||||
],
|
],
|
||||||
packages = [
|
packages = [
|
||||||
"//cmd/kubectl",
|
"//cmd/kubectl",
|
||||||
|
@ -213,19 +189,8 @@ package_group(
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
package_group(
|
|
||||||
name = "pkg_kubectl_cmd_testing_CONSUMERS_BAD",
|
|
||||||
packages = [
|
|
||||||
"//federation/pkg/kubefed",
|
|
||||||
"//federation/pkg/kubefed/init",
|
|
||||||
],
|
|
||||||
)
|
|
||||||
|
|
||||||
package_group(
|
package_group(
|
||||||
name = "pkg_kubectl_cmd_testing_CONSUMERS",
|
name = "pkg_kubectl_cmd_testing_CONSUMERS",
|
||||||
includes = [
|
|
||||||
":pkg_kubectl_cmd_testing_CONSUMERS_BAD",
|
|
||||||
],
|
|
||||||
packages = [
|
packages = [
|
||||||
"//pkg/kubectl/cmd",
|
"//pkg/kubectl/cmd",
|
||||||
"//pkg/kubectl/cmd/auth",
|
"//pkg/kubectl/cmd/auth",
|
||||||
|
@ -236,7 +201,6 @@ package_group(
|
||||||
package_group(
|
package_group(
|
||||||
name = "pkg_kubectl_cmd_util_CONSUMERS_BAD",
|
name = "pkg_kubectl_cmd_util_CONSUMERS_BAD",
|
||||||
includes = [
|
includes = [
|
||||||
":FEDERATION_BAD",
|
|
||||||
":KUBEADM_BAD",
|
":KUBEADM_BAD",
|
||||||
],
|
],
|
||||||
packages = [
|
packages = [
|
||||||
|
@ -293,9 +257,6 @@ package_group(
|
||||||
|
|
||||||
package_group(
|
package_group(
|
||||||
name = "pkg_kubectl_metricsutil_CONSUMERS_BAD",
|
name = "pkg_kubectl_metricsutil_CONSUMERS_BAD",
|
||||||
includes = [
|
|
||||||
":FEDERATION_BAD",
|
|
||||||
],
|
|
||||||
packages = [
|
packages = [
|
||||||
"//cmd/clicheck",
|
"//cmd/clicheck",
|
||||||
"//cmd/hyperkube",
|
"//cmd/hyperkube",
|
||||||
|
@ -316,19 +277,11 @@ package_group(
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
package_group(
|
|
||||||
name = "pkg_kubectl_resource_CONSUMERS_BAD",
|
|
||||||
packages = [
|
|
||||||
"//federation/pkg/kubefed",
|
|
||||||
],
|
|
||||||
)
|
|
||||||
|
|
||||||
package_group(
|
package_group(
|
||||||
name = "pkg_kubectl_resource_CONSUMERS",
|
name = "pkg_kubectl_resource_CONSUMERS",
|
||||||
includes = [
|
includes = [
|
||||||
":COMMON_generators",
|
":COMMON_generators",
|
||||||
":COMMON_testing",
|
":COMMON_testing",
|
||||||
":pkg_kubectl_resource_CONSUMERS_BAD",
|
|
||||||
],
|
],
|
||||||
packages = [
|
packages = [
|
||||||
"//cmd/kubectl",
|
"//cmd/kubectl",
|
||||||
|
|
|
@ -34,7 +34,7 @@ generally inhibit progress.
|
||||||
one can specify the following visibility rule in any `BUILD` rule:
|
one can specify the following visibility rule in any `BUILD` rule:
|
||||||
```
|
```
|
||||||
visibility = [ "//build/visible_to:database_CONSUMERS" ],
|
visibility = [ "//build/visible_to:database_CONSUMERS" ],
|
||||||
```
|
```
|
||||||
|
|
||||||
* A visibility rule takes a list of package groups as its
|
* A visibility rule takes a list of package groups as its
|
||||||
argument - or one of the pre-defined groups
|
argument - or one of the pre-defined groups
|
||||||
|
@ -59,7 +59,7 @@ generally inhibit progress.
|
||||||
* One set of `OWNERS` to manage visibility.
|
* One set of `OWNERS` to manage visibility.
|
||||||
|
|
||||||
The alternative is to use special [package literals] directly
|
The alternative is to use special [package literals] directly
|
||||||
in visibility rules, e.g.
|
in visibility rules, e.g.
|
||||||
|
|
||||||
```
|
```
|
||||||
visibility = [
|
visibility = [
|
||||||
|
@ -114,7 +114,7 @@ visibility = ["//visible_to:client_foo,//visible_to:server_foo"],
|
||||||
#### Quickly check for visibility violations
|
#### Quickly check for visibility violations
|
||||||
```
|
```
|
||||||
bazel build --check_visibility --nobuild \
|
bazel build --check_visibility --nobuild \
|
||||||
//cmd/... //pkg/... //federation/... //plugin/... \
|
//cmd/... //pkg/... //plugin/... \
|
||||||
//third_party/... //examples/... //test/... //vendor/k8s.io/...
|
//third_party/... //examples/... //test/... //vendor/k8s.io/...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -179,6 +179,6 @@ bazel query --nohost_deps --noimplicit_deps \
|
||||||
bazel query "somepath(cmd/kubectl:kubectl, pkg/util/parsers:go_default_library)"
|
bazel query "somepath(cmd/kubectl:kubectl, pkg/util/parsers:go_default_library)"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[package literals]: https://bazel.build/versions/master/docs/be/common-definitions.html#common.visibility
|
[package literals]: https://bazel.build/versions/master/docs/be/common-definitions.html#common.visibility
|
||||||
|
|
|
@ -160,20 +160,6 @@ function clear-kubeconfig() {
|
||||||
echo "Cleared config for ${CONTEXT} from ${KUBECONFIG}"
|
echo "Cleared config for ${CONTEXT} from ${KUBECONFIG}"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Creates a kubeconfig file with the credentials for only the current-context
|
|
||||||
# cluster. This is used by federation to create secrets in test setup.
|
|
||||||
function create-kubeconfig-for-federation() {
|
|
||||||
if [[ "${FEDERATION:-}" == "true" ]]; then
|
|
||||||
echo "creating kubeconfig for federation secret"
|
|
||||||
local kubectl="${KUBE_ROOT}/cluster/kubectl.sh"
|
|
||||||
local cc=$("${kubectl}" config view -o jsonpath='{.current-context}')
|
|
||||||
KUBECONFIG_DIR=$(dirname ${KUBECONFIG:-$DEFAULT_KUBECONFIG})
|
|
||||||
KUBECONFIG_PATH="${KUBECONFIG_DIR}/federation/kubernetes-apiserver/${cc}"
|
|
||||||
mkdir -p "${KUBECONFIG_PATH}"
|
|
||||||
"${kubectl}" config view --minify --flatten > "${KUBECONFIG_PATH}/kubeconfig"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function tear_down_alive_resources() {
|
function tear_down_alive_resources() {
|
||||||
local kubectl="${KUBE_ROOT}/cluster/kubectl.sh"
|
local kubectl="${KUBE_ROOT}/cluster/kubectl.sh"
|
||||||
"${kubectl}" delete deployments --all || true
|
"${kubectl}" delete deployments --all || true
|
||||||
|
@ -946,17 +932,6 @@ AUTOSCALER_EXPANDER_CONFIG: $(yaml-quote ${AUTOSCALER_EXPANDER_CONFIG})
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Federation specific environment variables.
|
|
||||||
if [[ -n "${FEDERATION:-}" ]]; then
|
|
||||||
cat >>$file <<EOF
|
|
||||||
FEDERATION: $(yaml-quote ${FEDERATION})
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
if [ -n "${FEDERATION_NAME:-}" ]; then
|
|
||||||
cat >>$file <<EOF
|
|
||||||
FEDERATION_NAME: $(yaml-quote ${FEDERATION_NAME})
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
if [ -n "${DNS_ZONE_NAME:-}" ]; then
|
if [ -n "${DNS_ZONE_NAME:-}" ]; then
|
||||||
cat >>$file <<EOF
|
cat >>$file <<EOF
|
||||||
DNS_ZONE_NAME: $(yaml-quote ${DNS_ZONE_NAME})
|
DNS_ZONE_NAME: $(yaml-quote ${DNS_ZONE_NAME})
|
||||||
|
|
|
@ -95,11 +95,7 @@ function get-cluster-ip-range {
|
||||||
if [[ "${NUM_NODES}" -gt 4000 ]]; then
|
if [[ "${NUM_NODES}" -gt 4000 ]]; then
|
||||||
suggested_range="10.64.0.0/11"
|
suggested_range="10.64.0.0/11"
|
||||||
fi
|
fi
|
||||||
echo "${suggested_range}"
|
echo "${suggested_range}"
|
||||||
}
|
}
|
||||||
|
|
||||||
if [[ "${FEDERATION:-}" == true ]]; then
|
NODE_SCOPES="${NODE_SCOPES:-monitoring,logging-write,storage-ro}"
|
||||||
NODE_SCOPES="${NODE_SCOPES:-monitoring,logging-write,storage-ro,https://www.googleapis.com/auth/ndev.clouddns.readwrite}"
|
|
||||||
else
|
|
||||||
NODE_SCOPES="${NODE_SCOPES:-monitoring,logging-write,storage-ro}"
|
|
||||||
fi
|
|
||||||
|
|
|
@ -103,11 +103,7 @@ MASTER_IP_RANGE="${MASTER_IP_RANGE:-10.246.0.0/24}"
|
||||||
# It is the primary range in the subnet and is the range used for node instance IPs.
|
# It is the primary range in the subnet and is the range used for node instance IPs.
|
||||||
NODE_IP_RANGE="$(get-node-ip-range)"
|
NODE_IP_RANGE="$(get-node-ip-range)"
|
||||||
|
|
||||||
if [[ "${FEDERATION:-}" == true ]]; then
|
NODE_SCOPES="${NODE_SCOPES:-monitoring,logging-write,storage-ro}"
|
||||||
NODE_SCOPES="${NODE_SCOPES:-monitoring,logging-write,storage-ro,https://www.googleapis.com/auth/ndev.clouddns.readwrite}"
|
|
||||||
else
|
|
||||||
NODE_SCOPES="${NODE_SCOPES:-monitoring,logging-write,storage-ro}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Extra docker options for nodes.
|
# Extra docker options for nodes.
|
||||||
EXTRA_DOCKER_OPTS="${EXTRA_DOCKER_OPTS:-}"
|
EXTRA_DOCKER_OPTS="${EXTRA_DOCKER_OPTS:-}"
|
||||||
|
|
|
@ -1506,8 +1506,6 @@ function check-cluster() {
|
||||||
|
|
||||||
# Update the user's kubeconfig to include credentials for this apiserver.
|
# Update the user's kubeconfig to include credentials for this apiserver.
|
||||||
create-kubeconfig
|
create-kubeconfig
|
||||||
|
|
||||||
create-kubeconfig-for-federation
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# ensures KUBECONFIG is set
|
# ensures KUBECONFIG is set
|
||||||
|
|
|
@ -11,16 +11,12 @@ docker_build(
|
||||||
for path in [
|
for path in [
|
||||||
"/apiserver",
|
"/apiserver",
|
||||||
"/controller-manager",
|
"/controller-manager",
|
||||||
"/federation-apiserver",
|
|
||||||
"/federation-controller-manager",
|
|
||||||
"/kubectl",
|
"/kubectl",
|
||||||
"/kubelet",
|
"/kubelet",
|
||||||
"/proxy",
|
"/proxy",
|
||||||
"/scheduler",
|
"/scheduler",
|
||||||
"/usr/local/bin/kube-apiserver",
|
"/usr/local/bin/kube-apiserver",
|
||||||
"/usr/local/bin/kube-controller-manager",
|
"/usr/local/bin/kube-controller-manager",
|
||||||
"/usr/local/bin/federation-apiserver",
|
|
||||||
"/usr/local/bin/federation-controller-manager",
|
|
||||||
"/usr/local/bin/kubectl",
|
"/usr/local/bin/kubectl",
|
||||||
"/usr/local/bin/kubelet",
|
"/usr/local/bin/kubelet",
|
||||||
"/usr/local/bin/kube-proxy",
|
"/usr/local/bin/kube-proxy",
|
||||||
|
|
|
@ -22,8 +22,6 @@ FROM BASEIMAGE
|
||||||
# RUN /hyperkube --make-symlinks
|
# RUN /hyperkube --make-symlinks
|
||||||
RUN ln -s /hyperkube /apiserver \
|
RUN ln -s /hyperkube /apiserver \
|
||||||
&& ln -s /hyperkube /controller-manager \
|
&& ln -s /hyperkube /controller-manager \
|
||||||
&& ln -s /hyperkube /federation-apiserver \
|
|
||||||
&& ln -s /hyperkube /federation-controller-manager \
|
|
||||||
&& ln -s /hyperkube /kubectl \
|
&& ln -s /hyperkube /kubectl \
|
||||||
&& ln -s /hyperkube /kubelet \
|
&& ln -s /hyperkube /kubelet \
|
||||||
&& ln -s /hyperkube /proxy \
|
&& ln -s /hyperkube /proxy \
|
||||||
|
@ -31,8 +29,6 @@ RUN ln -s /hyperkube /apiserver \
|
||||||
&& ln -s /hyperkube /aggerator \
|
&& ln -s /hyperkube /aggerator \
|
||||||
&& ln -s /hyperkube /usr/local/bin/kube-apiserver \
|
&& ln -s /hyperkube /usr/local/bin/kube-apiserver \
|
||||||
&& ln -s /hyperkube /usr/local/bin/kube-controller-manager \
|
&& ln -s /hyperkube /usr/local/bin/kube-controller-manager \
|
||||||
&& ln -s /hyperkube /usr/local/bin/federation-apiserver \
|
|
||||||
&& ln -s /hyperkube /usr/local/bin/federation-controller-manager \
|
|
||||||
&& ln -s /hyperkube /usr/local/bin/kubectl \
|
&& ln -s /hyperkube /usr/local/bin/kubectl \
|
||||||
&& ln -s /hyperkube /usr/local/bin/kubelet \
|
&& ln -s /hyperkube /usr/local/bin/kubelet \
|
||||||
&& ln -s /hyperkube /usr/local/bin/kube-proxy \
|
&& ln -s /hyperkube /usr/local/bin/kube-proxy \
|
||||||
|
|
|
@ -38,59 +38,3 @@ PROVIDER_UTILS="${KUBE_ROOT}/cluster/${KUBERNETES_PROVIDER}/util.sh"
|
||||||
if [ -f ${PROVIDER_UTILS} ]; then
|
if [ -f ${PROVIDER_UTILS} ]; then
|
||||||
source "${PROVIDER_UTILS}"
|
source "${PROVIDER_UTILS}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Federation utils
|
|
||||||
|
|
||||||
# Sets the kubeconfig context value for the current cluster.
|
|
||||||
# Args:
|
|
||||||
# $1: zone (required)
|
|
||||||
#
|
|
||||||
# Vars set:
|
|
||||||
# CLUSTER_CONTEXT
|
|
||||||
function kubeconfig-federation-context() {
|
|
||||||
if [[ -z "${1:-}" ]]; then
|
|
||||||
echo "zone parameter is required"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
CLUSTER_CONTEXT="federation-e2e-${KUBERNETES_PROVIDER}-${1}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Should NOT be called within the global scope, unless setting the desired global zone vars
|
|
||||||
# This function is currently NOT USED in the global scope
|
|
||||||
function set-federation-zone-vars {
|
|
||||||
zone="$1"
|
|
||||||
kubeconfig-federation-context "${zone}"
|
|
||||||
export OVERRIDE_CONTEXT="${CLUSTER_CONTEXT}"
|
|
||||||
echo "Setting zone vars to: $OVERRIDE_CONTEXT"
|
|
||||||
if [[ "$KUBERNETES_PROVIDER" == "gce" ]];then
|
|
||||||
# This needs a revamp, but for now e2e zone name is used as the unique
|
|
||||||
# cluster identifier in our e2e tests and we will continue to use that
|
|
||||||
# pattern.
|
|
||||||
export CLUSTER_NAME="${zone}"
|
|
||||||
|
|
||||||
export KUBE_GCE_ZONE="${zone}"
|
|
||||||
# gcloud has a 61 character limit, and for firewall rules this
|
|
||||||
# prefix gets appended to itself, with some extra information
|
|
||||||
# need tot keep it short
|
|
||||||
export KUBE_GCE_INSTANCE_PREFIX="${USER}-${zone}"
|
|
||||||
|
|
||||||
elif [[ "$KUBERNETES_PROVIDER" == "gke" ]];then
|
|
||||||
|
|
||||||
export CLUSTER_NAME="${USER}-${zone}"
|
|
||||||
|
|
||||||
elif [[ "$KUBERNETES_PROVIDER" == "aws" ]];then
|
|
||||||
|
|
||||||
export KUBE_AWS_ZONE="$zone"
|
|
||||||
export KUBE_AWS_INSTANCE_PREFIX="${USER}-${zone}"
|
|
||||||
|
|
||||||
# WARNING: This is hack
|
|
||||||
# After KUBE_AWS_INSTANCE_PREFIX is changed,
|
|
||||||
# we need to make sure the config-xxx.sh file is
|
|
||||||
# re-sourced so the change propogates to dependent computed values
|
|
||||||
# (eg: MASTER_SG_NAME, NODE_SG_NAME, etc)
|
|
||||||
source "${KUBE_ROOT}/cluster/aws/util.sh"
|
|
||||||
else
|
|
||||||
echo "Provider \"${KUBERNETES_PROVIDER}\" is not supported"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
|
@ -296,8 +296,6 @@ function kube-up {
|
||||||
|
|
||||||
# Update the user's kubeconfig to include credentials for this apiserver.
|
# Update the user's kubeconfig to include credentials for this apiserver.
|
||||||
create-kubeconfig
|
create-kubeconfig
|
||||||
|
|
||||||
create-kubeconfig-for-federation
|
|
||||||
)
|
)
|
||||||
|
|
||||||
verify-cluster
|
verify-cluster
|
||||||
|
|
|
@ -30,8 +30,6 @@ go_test(
|
||||||
go_library(
|
go_library(
|
||||||
name = "go_default_library",
|
name = "go_default_library",
|
||||||
srcs = [
|
srcs = [
|
||||||
"federation-apiserver.go",
|
|
||||||
"federation-controller-manager.go",
|
|
||||||
"hyperkube.go",
|
"hyperkube.go",
|
||||||
"kube-aggregator.go",
|
"kube-aggregator.go",
|
||||||
"kube-apiserver.go",
|
"kube-apiserver.go",
|
||||||
|
@ -52,10 +50,6 @@ go_library(
|
||||||
"//cmd/kube-proxy/app:go_default_library",
|
"//cmd/kube-proxy/app:go_default_library",
|
||||||
"//cmd/kubelet/app:go_default_library",
|
"//cmd/kubelet/app:go_default_library",
|
||||||
"//cmd/kubelet/app/options:go_default_library",
|
"//cmd/kubelet/app/options:go_default_library",
|
||||||
"//federation/cmd/federation-apiserver/app:go_default_library",
|
|
||||||
"//federation/cmd/federation-apiserver/app/options:go_default_library",
|
|
||||||
"//federation/cmd/federation-controller-manager/app:go_default_library",
|
|
||||||
"//federation/cmd/federation-controller-manager/app/options:go_default_library",
|
|
||||||
"//pkg/client/metrics/prometheus:go_default_library",
|
"//pkg/client/metrics/prometheus:go_default_library",
|
||||||
"//pkg/kubectl/cmd:go_default_library",
|
"//pkg/kubectl/cmd:go_default_library",
|
||||||
"//pkg/kubectl/cmd/util:go_default_library",
|
"//pkg/kubectl/cmd/util:go_default_library",
|
||||||
|
|
|
@ -1,39 +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 main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"k8s.io/kubernetes/federation/cmd/federation-apiserver/app"
|
|
||||||
"k8s.io/kubernetes/federation/cmd/federation-apiserver/app/options"
|
|
||||||
)
|
|
||||||
|
|
||||||
// NewFederationAPIServer creates a new hyperkube Server object that includes the
|
|
||||||
// description and flags.
|
|
||||||
func NewFederationAPIServer() *Server {
|
|
||||||
s := options.NewServerRunOptions()
|
|
||||||
|
|
||||||
hks := Server{
|
|
||||||
SimpleUsage: "federation-apiserver",
|
|
||||||
Long: "The API entrypoint for the federation control plane",
|
|
||||||
Run: func(_ *Server, args []string, stopCh <-chan struct{}) error {
|
|
||||||
return app.Run(s, stopCh)
|
|
||||||
},
|
|
||||||
RespectsStopCh: true,
|
|
||||||
}
|
|
||||||
s.AddFlags(hks.Flags())
|
|
||||||
return &hks
|
|
||||||
}
|
|
|
@ -1,38 +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 main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"k8s.io/kubernetes/federation/cmd/federation-controller-manager/app"
|
|
||||||
"k8s.io/kubernetes/federation/cmd/federation-controller-manager/app/options"
|
|
||||||
)
|
|
||||||
|
|
||||||
// NewFederationCMServer creates a new hyperkube Server object that includes the
|
|
||||||
// description and flags.
|
|
||||||
func NewFederationCMServer() *Server {
|
|
||||||
s := options.NewCMServer()
|
|
||||||
|
|
||||||
hks := Server{
|
|
||||||
SimpleUsage: "federation-controller-manager",
|
|
||||||
Long: "Controller manager for federation control plane. Manages federation service endpoints and controllers",
|
|
||||||
Run: func(_ *Server, args []string, stopCh <-chan struct{}) error {
|
|
||||||
return app.Run(s)
|
|
||||||
},
|
|
||||||
}
|
|
||||||
s.AddFlags(hks.Flags())
|
|
||||||
return &hks
|
|
||||||
}
|
|
|
@ -46,9 +46,5 @@ func main() {
|
||||||
hk.AddServer(NewKubeProxy())
|
hk.AddServer(NewKubeProxy())
|
||||||
hk.AddServer(NewKubeAggregator())
|
hk.AddServer(NewKubeAggregator())
|
||||||
|
|
||||||
//Federation servers
|
|
||||||
hk.AddServer(NewFederationAPIServer())
|
|
||||||
hk.AddServer(NewFederationCMServer())
|
|
||||||
|
|
||||||
hk.RunToExit(os.Args)
|
hk.RunToExit(os.Args)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,17 +1,9 @@
|
||||||
docs/.generated_docs
|
docs/.generated_docs
|
||||||
docs/admin/cloud-controller-manager.md
|
docs/admin/cloud-controller-manager.md
|
||||||
docs/admin/federation-apiserver.md
|
|
||||||
docs/admin/federation-controller-manager.md
|
|
||||||
docs/admin/kube-apiserver.md
|
docs/admin/kube-apiserver.md
|
||||||
docs/admin/kube-controller-manager.md
|
docs/admin/kube-controller-manager.md
|
||||||
docs/admin/kube-proxy.md
|
docs/admin/kube-proxy.md
|
||||||
docs/admin/kube-scheduler.md
|
docs/admin/kube-scheduler.md
|
||||||
docs/admin/kubefed.md
|
|
||||||
docs/admin/kubefed_init.md
|
|
||||||
docs/admin/kubefed_join.md
|
|
||||||
docs/admin/kubefed_options.md
|
|
||||||
docs/admin/kubefed_unjoin.md
|
|
||||||
docs/admin/kubefed_version.md
|
|
||||||
docs/admin/kubelet.md
|
docs/admin/kubelet.md
|
||||||
docs/man/man1/cloud-controller-manager.1
|
docs/man/man1/cloud-controller-manager.1
|
||||||
docs/man/man1/kube-apiserver.1
|
docs/man/man1/kube-apiserver.1
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
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.
|
|
|
@ -11,55 +11,6 @@ cmd/kubelet/app
|
||||||
cmd/kubelet/app/options
|
cmd/kubelet/app/options
|
||||||
cmd/kubemark
|
cmd/kubemark
|
||||||
examples/guestbook-go
|
examples/guestbook-go
|
||||||
federation/apis/core
|
|
||||||
federation/apis/core/v1
|
|
||||||
federation/apis/federation
|
|
||||||
federation/apis/federation/v1beta1
|
|
||||||
federation/apis/federation/validation
|
|
||||||
federation/client/cache
|
|
||||||
federation/cmd/federation-apiserver/app
|
|
||||||
federation/cmd/federation-apiserver/app/options
|
|
||||||
federation/cmd/federation-controller-manager/app
|
|
||||||
federation/cmd/federation-controller-manager/app/options
|
|
||||||
federation/cmd/kubefed/app
|
|
||||||
federation/pkg/dnsprovider
|
|
||||||
federation/pkg/dnsprovider/providers/aws/route53
|
|
||||||
federation/pkg/dnsprovider/providers/aws/route53/stubs
|
|
||||||
federation/pkg/dnsprovider/providers/coredns
|
|
||||||
federation/pkg/dnsprovider/providers/coredns/stubs
|
|
||||||
federation/pkg/dnsprovider/providers/google/clouddns
|
|
||||||
federation/pkg/dnsprovider/providers/google/clouddns/internal
|
|
||||||
federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces
|
|
||||||
federation/pkg/dnsprovider/providers/google/clouddns/internal/stubs
|
|
||||||
federation/pkg/dnsprovider/rrstype
|
|
||||||
federation/pkg/dnsprovider/tests
|
|
||||||
federation/pkg/federatedtypes
|
|
||||||
federation/pkg/federatedtypes/crudtester
|
|
||||||
federation/pkg/federation-controller
|
|
||||||
federation/pkg/federation-controller/cluster
|
|
||||||
federation/pkg/federation-controller/ingress
|
|
||||||
federation/pkg/federation-controller/service
|
|
||||||
federation/pkg/federation-controller/service/dns
|
|
||||||
federation/pkg/federation-controller/service/ingress
|
|
||||||
federation/pkg/federation-controller/sync
|
|
||||||
federation/pkg/federation-controller/util
|
|
||||||
federation/pkg/federation-controller/util/clusterselector
|
|
||||||
federation/pkg/federation-controller/util/deletionhelper
|
|
||||||
federation/pkg/federation-controller/util/eventsink
|
|
||||||
federation/pkg/federation-controller/util/finalizers
|
|
||||||
federation/pkg/federation-controller/util/planner
|
|
||||||
federation/pkg/federation-controller/util/podanalyzer
|
|
||||||
federation/pkg/federation-controller/util/test
|
|
||||||
federation/pkg/kubefed
|
|
||||||
federation/pkg/kubefed/init
|
|
||||||
federation/pkg/kubefed/testing
|
|
||||||
federation/pkg/kubefed/util
|
|
||||||
federation/registry/cluster
|
|
||||||
federation/registry/cluster/etcd
|
|
||||||
federation/test/e2e
|
|
||||||
federation/test/e2e/framework
|
|
||||||
federation/test/e2e/upgrades
|
|
||||||
federation/test/integration/framework
|
|
||||||
pkg/api
|
pkg/api
|
||||||
pkg/api/endpoints
|
pkg/api/endpoints
|
||||||
pkg/api/helper
|
pkg/api/helper
|
||||||
|
|
|
@ -29,16 +29,4 @@ source "${KUBE_ROOT}/cluster/kube-util.sh"
|
||||||
|
|
||||||
prepare-e2e
|
prepare-e2e
|
||||||
|
|
||||||
if [[ "${FEDERATION:-}" == "true" ]]; then
|
test-teardown
|
||||||
source "${KUBE_ROOT}/federation/cluster/common.sh"
|
|
||||||
|
|
||||||
for zone in ${E2E_ZONES};do
|
|
||||||
# bring down an e2e cluster
|
|
||||||
(
|
|
||||||
set-federation-zone-vars "$zone"
|
|
||||||
test-teardown
|
|
||||||
)
|
|
||||||
done
|
|
||||||
else
|
|
||||||
test-teardown
|
|
||||||
fi
|
|
||||||
|
|
|
@ -29,19 +29,4 @@ source "${KUBE_ROOT}/cluster/kube-util.sh"
|
||||||
|
|
||||||
prepare-e2e
|
prepare-e2e
|
||||||
|
|
||||||
if [[ "${FEDERATION:-}" == "true" ]];then
|
${KUBECTL} version
|
||||||
FEDERATION_NAMESPACE=${FEDERATION_NAMESPACE:-federation-system}
|
|
||||||
#TODO(colhom): the last cluster that was created in the loop above is the current context.
|
|
||||||
# Hence, it will be the cluster that hosts the federated components.
|
|
||||||
# In the future, we will want to loop through the all the federated contexts,
|
|
||||||
# select each one and call federated-up
|
|
||||||
for zone in ${E2E_ZONES};do
|
|
||||||
(
|
|
||||||
set-federation-zone-vars "$zone"
|
|
||||||
printf "\n\tChecking version for $OVERRIDE_CONTEXT\n"
|
|
||||||
${KUBECTL} --context="$OVERRIDE_CONTEXT" version
|
|
||||||
)
|
|
||||||
done
|
|
||||||
else
|
|
||||||
${KUBECTL} version
|
|
||||||
fi
|
|
||||||
|
|
|
@ -29,16 +29,4 @@ source "${KUBE_ROOT}/cluster/kube-util.sh"
|
||||||
|
|
||||||
prepare-e2e
|
prepare-e2e
|
||||||
|
|
||||||
if [[ "${FEDERATION:-}" == "true" ]]; then
|
test-setup
|
||||||
cur_ip_octet2=180
|
|
||||||
for zone in ${E2E_ZONES};do
|
|
||||||
(
|
|
||||||
export CLUSTER_IP_RANGE="10.${cur_ip_octet2}.0.0/16"
|
|
||||||
set-federation-zone-vars "$zone"
|
|
||||||
test-setup
|
|
||||||
)
|
|
||||||
cur_ip_octet2="$((cur_ip_octet2 + 1))"
|
|
||||||
done
|
|
||||||
else
|
|
||||||
test-setup
|
|
||||||
fi
|
|
||||||
|
|
|
@ -1,34 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
set -o errexit
|
|
||||||
set -o nounset
|
|
||||||
set -o pipefail
|
|
||||||
|
|
||||||
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/..
|
|
||||||
|
|
||||||
source "${KUBE_ROOT}/cluster/kube-util.sh"
|
|
||||||
source "${KUBE_ROOT}/federation/cluster/common.sh"
|
|
||||||
|
|
||||||
: "${FEDERATION_HOST_CLUSTER_ZONE?Must set FEDERATION_HOST_CLUSTER_ZONE env var}"
|
|
||||||
|
|
||||||
(
|
|
||||||
set-federation-zone-vars "${FEDERATION_HOST_CLUSTER_ZONE}"
|
|
||||||
# Export FEDERATION_KUBE_CONTEXT to ensure that it is available to
|
|
||||||
# ginkgo-e2e.sh and is thus passed on to the federation tests.
|
|
||||||
export FEDERATION_KUBE_CONTEXT
|
|
||||||
"${KUBE_ROOT}/hack/ginkgo-e2e.sh" $@
|
|
||||||
)
|
|
|
@ -32,7 +32,6 @@ BINS=(
|
||||||
cmd/genkubedocs
|
cmd/genkubedocs
|
||||||
cmd/genman
|
cmd/genman
|
||||||
cmd/genyaml
|
cmd/genyaml
|
||||||
federation/cmd/genfeddocs
|
|
||||||
)
|
)
|
||||||
make -C "${KUBE_ROOT}" WHAT="${BINS[*]}"
|
make -C "${KUBE_ROOT}" WHAT="${BINS[*]}"
|
||||||
|
|
||||||
|
|
|
@ -148,7 +148,6 @@ export PATH=$(dirname "${e2e_test}"):"${PATH}"
|
||||||
--network="${KUBE_GCE_NETWORK:-${KUBE_GKE_NETWORK:-e2e}}" \
|
--network="${KUBE_GCE_NETWORK:-${KUBE_GKE_NETWORK:-e2e}}" \
|
||||||
--node-tag="${NODE_TAG:-}" \
|
--node-tag="${NODE_TAG:-}" \
|
||||||
--master-tag="${MASTER_TAG:-}" \
|
--master-tag="${MASTER_TAG:-}" \
|
||||||
--federated-kube-context="${FEDERATION_KUBE_CONTEXT:-e2e-federation}" \
|
|
||||||
${KUBE_CONTAINER_RUNTIME:+"--container-runtime=${KUBE_CONTAINER_RUNTIME}"} \
|
${KUBE_CONTAINER_RUNTIME:+"--container-runtime=${KUBE_CONTAINER_RUNTIME}"} \
|
||||||
${MASTER_OS_DISTRIBUTION:+"--master-os-distro=${MASTER_OS_DISTRIBUTION}"} \
|
${MASTER_OS_DISTRIBUTION:+"--master-os-distro=${MASTER_OS_DISTRIBUTION}"} \
|
||||||
${NODE_OS_DISTRIBUTION:+"--node-os-distro=${NODE_OS_DISTRIBUTION}"} \
|
${NODE_OS_DISTRIBUTION:+"--node-os-distro=${NODE_OS_DISTRIBUTION}"} \
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
set -o errexit
|
|
||||||
set -o nounset
|
|
||||||
set -o pipefail
|
|
||||||
set -o xtrace
|
|
||||||
|
|
||||||
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/../..
|
|
||||||
|
|
||||||
make -C "${KUBE_ROOT}/federation/" build
|
|
||||||
make -C "${KUBE_ROOT}/federation/" push
|
|
|
@ -35,8 +35,6 @@ export PATH=$PATH:/usr/local/go/bin
|
||||||
# Skip gcloud update checking
|
# Skip gcloud update checking
|
||||||
export CLOUDSDK_COMPONENT_MANAGER_DISABLE_UPDATE_CHECK=true
|
export CLOUDSDK_COMPONENT_MANAGER_DISABLE_UPDATE_CHECK=true
|
||||||
|
|
||||||
# FEDERATION?
|
|
||||||
: ${FEDERATION:="false"}
|
|
||||||
: ${KUBE_RELEASE_RUN_TESTS:="n"}
|
: ${KUBE_RELEASE_RUN_TESTS:="n"}
|
||||||
export KUBE_RELEASE_RUN_TESTS
|
export KUBE_RELEASE_RUN_TESTS
|
||||||
|
|
||||||
|
@ -67,10 +65,9 @@ else
|
||||||
|
|
||||||
[[ -n "${KUBE_GCS_RELEASE_BUCKET-}" ]] \
|
[[ -n "${KUBE_GCS_RELEASE_BUCKET-}" ]] \
|
||||||
&& bucket_flag="--bucket=${KUBE_GCS_RELEASE_BUCKET-}"
|
&& bucket_flag="--bucket=${KUBE_GCS_RELEASE_BUCKET-}"
|
||||||
${FEDERATION} && federation_flag="--federation"
|
|
||||||
[[ -n "${KUBE_GCS_RELEASE_SUFFIX-}" ]] \
|
[[ -n "${KUBE_GCS_RELEASE_SUFFIX-}" ]] \
|
||||||
&& gcs_suffix_flag="--gcs-suffix=${KUBE_GCS_RELEASE_SUFFIX-}"
|
&& gcs_suffix_flag="--gcs-suffix=${KUBE_GCS_RELEASE_SUFFIX-}"
|
||||||
${push_build} ${bucket_flag-} ${federation_flag-} ${gcs_suffix_flag-} \
|
${push_build} ${bucket_flag-} ${gcs_suffix_flag-} \
|
||||||
--nomock --verbose --ci
|
--nomock --verbose --ci
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -125,7 +125,6 @@ fi
|
||||||
# If you update this list, please also update build/BUILD.
|
# If you update this list, please also update build/BUILD.
|
||||||
readonly KUBE_CLIENT_TARGETS=(
|
readonly KUBE_CLIENT_TARGETS=(
|
||||||
cmd/kubectl
|
cmd/kubectl
|
||||||
federation/cmd/kubefed
|
|
||||||
)
|
)
|
||||||
readonly KUBE_CLIENT_BINARIES=("${KUBE_CLIENT_TARGETS[@]##*/}")
|
readonly KUBE_CLIENT_BINARIES=("${KUBE_CLIENT_TARGETS[@]##*/}")
|
||||||
readonly KUBE_CLIENT_BINARIES_WIN=("${KUBE_CLIENT_BINARIES[@]/%/.exe}")
|
readonly KUBE_CLIENT_BINARIES_WIN=("${KUBE_CLIENT_BINARIES[@]/%/.exe}")
|
||||||
|
@ -140,7 +139,6 @@ kube::golang::test_targets() {
|
||||||
cmd/genyaml
|
cmd/genyaml
|
||||||
cmd/genswaggertypedocs
|
cmd/genswaggertypedocs
|
||||||
cmd/linkcheck
|
cmd/linkcheck
|
||||||
federation/cmd/genfeddocs
|
|
||||||
vendor/github.com/onsi/ginkgo/ginkgo
|
vendor/github.com/onsi/ginkgo/ginkgo
|
||||||
test/e2e/e2e.test
|
test/e2e/e2e.test
|
||||||
)
|
)
|
||||||
|
@ -153,12 +151,10 @@ readonly KUBE_TEST_BINARIES_WIN=("${KUBE_TEST_BINARIES[@]/%/.exe}")
|
||||||
readonly KUBE_TEST_PORTABLE=(
|
readonly KUBE_TEST_PORTABLE=(
|
||||||
test/e2e/testing-manifests
|
test/e2e/testing-manifests
|
||||||
test/kubemark
|
test/kubemark
|
||||||
federation/develop
|
|
||||||
hack/e2e.go
|
hack/e2e.go
|
||||||
hack/e2e-internal
|
hack/e2e-internal
|
||||||
hack/get-build.sh
|
hack/get-build.sh
|
||||||
hack/ginkgo-e2e.sh
|
hack/ginkgo-e2e.sh
|
||||||
hack/federated-ginkgo-e2e.sh
|
|
||||||
hack/lib
|
hack/lib
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -184,13 +184,6 @@ kube::util::gen-docs() {
|
||||||
"${genkubedocs}" "${dest}/docs/admin/" "kube-scheduler"
|
"${genkubedocs}" "${dest}/docs/admin/" "kube-scheduler"
|
||||||
"${genkubedocs}" "${dest}/docs/admin/" "kubelet"
|
"${genkubedocs}" "${dest}/docs/admin/" "kubelet"
|
||||||
|
|
||||||
# We don't really need federation-apiserver and federation-controller-manager
|
|
||||||
# binaries to generate the docs. We just pass their names to decide which docs
|
|
||||||
# to generate. The actual binary for running federation is hyperkube.
|
|
||||||
"${genfeddocs}" "${dest}/docs/admin/" "federation-apiserver"
|
|
||||||
"${genfeddocs}" "${dest}/docs/admin/" "federation-controller-manager"
|
|
||||||
"${genfeddocs}" "${dest}/docs/admin/" "kubefed"
|
|
||||||
|
|
||||||
mkdir -p "${dest}/docs/man/man1/"
|
mkdir -p "${dest}/docs/man/man1/"
|
||||||
"${genman}" "${dest}/docs/man/man1/" "kube-apiserver"
|
"${genman}" "${dest}/docs/man/man1/" "kube-apiserver"
|
||||||
"${genman}" "${dest}/docs/man/man1/" "kube-controller-manager"
|
"${genman}" "${dest}/docs/man/man1/" "kube-controller-manager"
|
||||||
|
@ -275,9 +268,6 @@ kube::util::group-version-to-pkg-path() {
|
||||||
__internal)
|
__internal)
|
||||||
echo "pkg/api"
|
echo "pkg/api"
|
||||||
;;
|
;;
|
||||||
federation/v1beta1)
|
|
||||||
echo "federation/apis/federation/v1beta1"
|
|
||||||
;;
|
|
||||||
meta/v1)
|
meta/v1)
|
||||||
echo "vendor/k8s.io/apimachinery/pkg/apis/meta/v1"
|
echo "vendor/k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -33,15 +33,6 @@ sh_binary(
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
sh_binary(
|
|
||||||
name = "test-federation-cmd",
|
|
||||||
srcs = ["test-federation-cmd.sh"],
|
|
||||||
deps = [
|
|
||||||
":test-cmd-util",
|
|
||||||
"//hack/lib",
|
|
||||||
],
|
|
||||||
)
|
|
||||||
|
|
||||||
sh_binary(
|
sh_binary(
|
||||||
name = "test-integration",
|
name = "test-integration",
|
||||||
srcs = ["test-cmd.sh"],
|
srcs = ["test-cmd.sh"],
|
||||||
|
|
|
@ -25,10 +25,8 @@ KUBE_ROOT=$(dirname "${BASH_SOURCE}")/../..
|
||||||
ALL_TARGETS=$(make -C "${KUBE_ROOT}" PRINT_HELP=y -rpn | sed -n -e '/^$/ { n ; /^[^ .#][^ ]*:/ { s/:.*$// ; p ; } ; }' | sort)
|
ALL_TARGETS=$(make -C "${KUBE_ROOT}" PRINT_HELP=y -rpn | sed -n -e '/^$/ { n ; /^[^ .#][^ ]*:/ { s/:.*$// ; p ; } ; }' | sort)
|
||||||
CMD_TARGETS=$(ls -l "${KUBE_ROOT}/cmd" |awk '/^d/ {print $NF}')
|
CMD_TARGETS=$(ls -l "${KUBE_ROOT}/cmd" |awk '/^d/ {print $NF}')
|
||||||
PLUGIN_CMD_TARGETS=$(ls -l "${KUBE_ROOT}/plugin/cmd" |awk '/^d/ {print $NF}')
|
PLUGIN_CMD_TARGETS=$(ls -l "${KUBE_ROOT}/plugin/cmd" |awk '/^d/ {print $NF}')
|
||||||
FED_CMD_TARGETS=$(ls -l "${KUBE_ROOT}/federation/cmd" |awk '/^d/ {print $NF}')
|
|
||||||
CMD_FLAG=false
|
CMD_FLAG=false
|
||||||
PLUGIN_CMD_FLAG=false
|
PLUGIN_CMD_FLAG=false
|
||||||
FED_CMD_FLAG=false
|
|
||||||
|
|
||||||
echo "--------------------------------------------------------------------------------"
|
echo "--------------------------------------------------------------------------------"
|
||||||
for tar in $ALL_TARGETS; do
|
for tar in $ALL_TARGETS; do
|
||||||
|
@ -62,21 +60,6 @@ for tar in $ALL_TARGETS; do
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
for fedcmdtar in $FED_CMD_TARGETS; do
|
|
||||||
if [ $tar = $fedcmdtar ]; then
|
|
||||||
if [ $FED_CMD_FLAG = true ]; then
|
|
||||||
continue 2;
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -e "${red}${FED_CMD_TARGETS}${reset}"
|
|
||||||
make -C "${KUBE_ROOT}" $tar PRINT_HELP=y
|
|
||||||
echo "---------------------------------------------------------------------------------"
|
|
||||||
|
|
||||||
FED_CMD_FLAG=true
|
|
||||||
continue 2
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
echo -e "${red}${tar}${reset}"
|
echo -e "${red}${tar}${reset}"
|
||||||
make -C "${KUBE_ROOT}" $tar PRINT_HELP=y
|
make -C "${KUBE_ROOT}" $tar PRINT_HELP=y
|
||||||
echo "---------------------------------------------------------------------------------"
|
echo "---------------------------------------------------------------------------------"
|
||||||
|
|
|
@ -4587,8 +4587,6 @@ runTests() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if kube::test::if_supports_resource "${pods}" ; then
|
if kube::test::if_supports_resource "${pods}" ; then
|
||||||
# TODO: Move apply tests to run on rs instead of pods so that they can be
|
|
||||||
# run for federation apiserver as well.
|
|
||||||
record_command run_kubectl_apply_tests
|
record_command run_kubectl_apply_tests
|
||||||
record_command run_kubectl_run_tests
|
record_command run_kubectl_run_tests
|
||||||
record_command run_kubectl_create_filter_tests
|
record_command run_kubectl_create_filter_tests
|
||||||
|
@ -4603,8 +4601,6 @@ runTests() {
|
||||||
###############
|
###############
|
||||||
|
|
||||||
if kube::test::if_supports_resource "${pods}" ; then
|
if kube::test::if_supports_resource "${pods}" ; then
|
||||||
# TODO: Move get tests to run on rs instead of pods so that they can be
|
|
||||||
# run for federation apiserver as well.
|
|
||||||
record_command run_kubectl_get_tests
|
record_command run_kubectl_get_tests
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -4621,8 +4617,6 @@ runTests() {
|
||||||
##################
|
##################
|
||||||
|
|
||||||
if kube::test::if_supports_resource "${pods}" ; then
|
if kube::test::if_supports_resource "${pods}" ; then
|
||||||
# TODO: Move request timeout tests to run on rs instead of pods so that they
|
|
||||||
# can be run for federation apiserver as well.
|
|
||||||
record_command run_kubectl_request_timeout_tests
|
record_command run_kubectl_request_timeout_tests
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -1,91 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
# This command checks that the built commands can function together for
|
|
||||||
# simple scenarios. It does not require Docker.
|
|
||||||
|
|
||||||
set -o errexit
|
|
||||||
set -o nounset
|
|
||||||
set -o pipefail
|
|
||||||
|
|
||||||
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/../..
|
|
||||||
source "${KUBE_ROOT}/hack/lib/init.sh"
|
|
||||||
source "${KUBE_ROOT}/hack/lib/test.sh"
|
|
||||||
source "${KUBE_ROOT}/hack/make-rules/test-cmd-util.sh"
|
|
||||||
|
|
||||||
function run_federation_apiserver() {
|
|
||||||
kube::log::status "Building federation-apiserver"
|
|
||||||
make -C "${KUBE_ROOT}" WHAT="federation/cmd/federation-apiserver"
|
|
||||||
|
|
||||||
# Start federation-apiserver
|
|
||||||
kube::log::status "Starting federation-apiserver"
|
|
||||||
|
|
||||||
# Admission Controllers to invoke prior to persisting objects in cluster
|
|
||||||
ADMISSION_CONTROL="NamespaceLifecycle"
|
|
||||||
|
|
||||||
"${KUBE_OUTPUT_HOSTBIN}/federation-apiserver" \
|
|
||||||
--insecure-port="${API_PORT}" \
|
|
||||||
--secure-port="${SECURE_API_PORT}" \
|
|
||||||
--admission-control="${ADMISSION_CONTROL}" \
|
|
||||||
--etcd-servers="http://${ETCD_HOST}:${ETCD_PORT}" \
|
|
||||||
--storage-media-type="${KUBE_TEST_API_STORAGE_TYPE-}" \
|
|
||||||
--cert-dir="${TMPDIR:-/tmp/}" \
|
|
||||||
--token-auth-file=hack/testdata/auth-tokens.csv 1>&2 &
|
|
||||||
APISERVER_PID=$!
|
|
||||||
|
|
||||||
kube::util::wait_for_url "http://127.0.0.1:${API_PORT}/healthz" "apiserver"
|
|
||||||
}
|
|
||||||
|
|
||||||
function run_federation_controller_manager() {
|
|
||||||
kube::log::status "Building federation-controller-manager"
|
|
||||||
make -C "${KUBE_ROOT}" WHAT="federation/cmd/federation-controller-manager"
|
|
||||||
|
|
||||||
# Create a kubeconfig for federation apiserver.
|
|
||||||
local kubeconfig="${KUBE_TEMP}/kubeconfig"
|
|
||||||
touch "${kubeconfig}"
|
|
||||||
kubectl config set-cluster "apiserver" --server="http://127.0.0.1:${API_PORT}" --insecure-skip-tls-verify=true --kubeconfig="${kubeconfig}"
|
|
||||||
kubectl config set-context "context" --cluster="apiserver" --kubeconfig="${kubeconfig}"
|
|
||||||
kubectl config use-context "context" --kubeconfig="${kubeconfig}"
|
|
||||||
|
|
||||||
# Start controller manager
|
|
||||||
kube::log::status "Starting federation-controller-manager"
|
|
||||||
"${KUBE_OUTPUT_HOSTBIN}/federation-controller-manager" \
|
|
||||||
--port="${CTLRMGR_PORT}" \
|
|
||||||
--kubeconfig="${kubeconfig}" \
|
|
||||||
--kube-api-content-type="${KUBE_TEST_API_TYPE-}" \
|
|
||||||
--controllers="service-dns=false" \
|
|
||||||
--master="127.0.0.1:${API_PORT}" 1>&2 &
|
|
||||||
CTLRMGR_PID=$!
|
|
||||||
|
|
||||||
kube::util::wait_for_url "http://127.0.0.1:${CTLRMGR_PORT}/healthz" "controller-manager"
|
|
||||||
}
|
|
||||||
|
|
||||||
kube::log::status "Running kubectl tests for federation-apiserver"
|
|
||||||
|
|
||||||
setup
|
|
||||||
run_federation_apiserver
|
|
||||||
run_federation_controller_manager
|
|
||||||
# TODO: Fix for replicasets and deployments.
|
|
||||||
SUPPORTED_RESOURCES=("configmaps" "daemonsets" "events" "ingress" "namespaces" "services" "secrets")
|
|
||||||
# Set wait for deletion to true for federation apiserver since resources are
|
|
||||||
# deleted asynchronously.
|
|
||||||
# This is a temporary workaround until https://github.com/kubernetes/kubernetes/issues/42594 is fixed.
|
|
||||||
WAIT_FOR_DELETION="true"
|
|
||||||
# WARNING: Do not wrap this call in a subshell to capture output, e.g. output=$(runTests)
|
|
||||||
# Doing so will suppress errexit behavior inside runTests
|
|
||||||
runTests
|
|
||||||
|
|
||||||
kube::log::status "TESTS PASSED"
|
|
|
@ -49,9 +49,6 @@ kube::test::find_integration_test_dirs() {
|
||||||
find vendor/k8s.io/apiextensions-apiserver/test/integration/ -name '*_test.go' -print0 \
|
find vendor/k8s.io/apiextensions-apiserver/test/integration/ -name '*_test.go' -print0 \
|
||||||
| xargs -0n1 dirname | sed "s|^|${KUBE_GO_PACKAGE}/|" \
|
| xargs -0n1 dirname | sed "s|^|${KUBE_GO_PACKAGE}/|" \
|
||||||
| LC_ALL=C sort -u
|
| LC_ALL=C sort -u
|
||||||
find federation/test/integration/ -name '*_test.go' -print0 \
|
|
||||||
| xargs -0n1 dirname | sed "s|^|${KUBE_GO_PACKAGE}/|" \
|
|
||||||
| LC_ALL=C sort -u
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -61,7 +61,6 @@ kube::test::find_dirs() {
|
||||||
-o -path './third_party/*' \
|
-o -path './third_party/*' \
|
||||||
-o -path './staging/*' \
|
-o -path './staging/*' \
|
||||||
-o -path './vendor/*' \
|
-o -path './vendor/*' \
|
||||||
-o -path './federation/test/*' \
|
|
||||||
\) -prune \
|
\) -prune \
|
||||||
\) -name '*_test.go' -print0 | xargs -0n1 dirname | sed "s|^\./|${KUBE_GO_PACKAGE}/|" | LC_ALL=C sort -u
|
\) -name '*_test.go' -print0 | xargs -0n1 dirname | sed "s|^\./|${KUBE_GO_PACKAGE}/|" | LC_ALL=C sort -u
|
||||||
|
|
||||||
|
@ -113,7 +112,7 @@ KUBE_GOVERALLS_BIN=${KUBE_GOVERALLS_BIN:-}
|
||||||
# "v1,compute/v1alpha1,experimental/v1alpha2;v1,compute/v2,experimental/v1alpha3"
|
# "v1,compute/v1alpha1,experimental/v1alpha2;v1,compute/v2,experimental/v1alpha3"
|
||||||
# FIXME: due to current implementation of a test client (see: pkg/api/testapi/testapi.go)
|
# FIXME: due to current implementation of a test client (see: pkg/api/testapi/testapi.go)
|
||||||
# ONLY the last version is tested in each group.
|
# ONLY the last version is tested in each group.
|
||||||
ALL_VERSIONS_CSV=$(IFS=',';echo "${KUBE_AVAILABLE_GROUP_VERSIONS[*]// /,}";IFS=$),federation/v1beta1
|
ALL_VERSIONS_CSV=$(IFS=',';echo "${KUBE_AVAILABLE_GROUP_VERSIONS[*]// /,}";IFS=$)
|
||||||
KUBE_TEST_API_VERSIONS="${KUBE_TEST_API_VERSIONS:-${ALL_VERSIONS_CSV}}"
|
KUBE_TEST_API_VERSIONS="${KUBE_TEST_API_VERSIONS:-${ALL_VERSIONS_CSV}}"
|
||||||
# once we have multiple group supports
|
# once we have multiple group supports
|
||||||
# Create a junit-style XML test report in this directory if set.
|
# Create a junit-style XML test report in this directory if set.
|
||||||
|
|
|
@ -63,10 +63,6 @@ BASH_TARGETS="
|
||||||
update-swagger-spec
|
update-swagger-spec
|
||||||
update-openapi-spec
|
update-openapi-spec
|
||||||
update-api-reference-docs
|
update-api-reference-docs
|
||||||
update-federation-openapi-spec
|
|
||||||
update-federation-swagger-spec
|
|
||||||
update-federation-generated-swagger-docs
|
|
||||||
update-federation-api-reference-docs
|
|
||||||
update-staging-godeps
|
update-staging-godeps
|
||||||
update-bazel"
|
update-bazel"
|
||||||
|
|
||||||
|
|
|
@ -61,14 +61,12 @@ GV_DIRS_CSV=$(IFS=',';echo "${GV_DIRS[*]// /,}";IFS=$)
|
||||||
# update- and verify- scripts.
|
# update- and verify- scripts.
|
||||||
${clientgen} "$@"
|
${clientgen} "$@"
|
||||||
${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}" "$@"
|
${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}" "$@"
|
||||||
# Clientgen for federation clientset.
|
|
||||||
${clientgen} --clientset-name=federation_clientset --clientset-path=k8s.io/kubernetes/federation/client/clientset_generated --input-base="k8s.io/kubernetes/vendor/k8s.io/api" --input="../../../federation/apis/federation/v1beta1","core/v1","extensions/v1beta1","batch/v1","autoscaling/v1" --included-types-overrides="core/v1/Service,core/v1/Namespace,extensions/v1beta1/ReplicaSet,core/v1/Secret,extensions/v1beta1/Ingress,extensions/v1beta1/Deployment,extensions/v1beta1/DaemonSet,core/v1/ConfigMap,core/v1/Event,batch/v1/Job,autoscaling/v1/HorizontalPodAutoscaler" "$@"
|
|
||||||
|
|
||||||
listergen_internal_apis=(
|
listergen_internal_apis=(
|
||||||
pkg/api
|
pkg/api
|
||||||
$(
|
$(
|
||||||
cd ${KUBE_ROOT}
|
cd ${KUBE_ROOT}
|
||||||
find pkg/apis -maxdepth 2 -name types.go | xargs -n1 dirname | sort
|
find pkg/apis -maxdepth 2 -name types.go | xargs -n1 dirname | sort
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
listergen_internal_apis=(${listergen_internal_apis[@]/#/k8s.io/kubernetes/})
|
listergen_internal_apis=(${listergen_internal_apis[@]/#/k8s.io/kubernetes/})
|
||||||
|
@ -89,7 +87,7 @@ informergen_internal_apis=(
|
||||||
pkg/api
|
pkg/api
|
||||||
$(
|
$(
|
||||||
cd ${KUBE_ROOT}
|
cd ${KUBE_ROOT}
|
||||||
find pkg/apis -maxdepth 2 -name types.go | xargs -n1 dirname | sort
|
find pkg/apis -maxdepth 2 -name types.go | xargs -n1 dirname | sort
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
informergen_internal_apis=(${informergen_internal_apis[@]/#/k8s.io/kubernetes/})
|
informergen_internal_apis=(${informergen_internal_apis[@]/#/k8s.io/kubernetes/})
|
||||||
|
|
|
@ -1,50 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
# Generates updated api-reference docs from the latest swagger spec for
|
|
||||||
# federation apiserver. The docs are generated at federation/docs/api-reference
|
|
||||||
# Usage: ./update-federation-api-reference-docs.sh <absolute output path>
|
|
||||||
|
|
||||||
set -o errexit
|
|
||||||
set -o nounset
|
|
||||||
set -o pipefail
|
|
||||||
|
|
||||||
echo "Note: This assumes that swagger spec has been updated. Please run hack/update-federation-swagger-spec.sh to ensure that."
|
|
||||||
|
|
||||||
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/..
|
|
||||||
source "${KUBE_ROOT}/hack/lib/init.sh"
|
|
||||||
source "${KUBE_ROOT}/hack/lib/swagger.sh"
|
|
||||||
kube::golang::setup_env
|
|
||||||
|
|
||||||
REPO_DIR=${REPO_DIR:-"${KUBE_ROOT}"}
|
|
||||||
DEFAULT_OUTPUT="${REPO_DIR}/federation/docs/api-reference"
|
|
||||||
OUTPUT=${1:-${DEFAULT_OUTPUT}}
|
|
||||||
|
|
||||||
SWAGGER_SPEC_PATH="${REPO_DIR}/federation/apis/swagger-spec"
|
|
||||||
|
|
||||||
GROUP_VERSIONS=("federation/v1beta1" "v1" "extensions/v1beta1")
|
|
||||||
GV_DIRS=()
|
|
||||||
for gv in "${GROUP_VERSIONS[@]}"; do
|
|
||||||
if [[ ${gv} == "federation/v1beta1" ]]; then
|
|
||||||
GV_DIRS+=("${REPO_DIR}/$(kube::util::group-version-to-pkg-path "${gv}")")
|
|
||||||
else
|
|
||||||
GV_DIRS+=("${REPO_DIR}/$(kube::util::group-version-to-pkg-path "${gv}")")
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
GROUP_VERSIONS="${GROUP_VERSIONS[@]}" GV_DIRS="${GV_DIRS[@]}" kube::swagger::gen_api_ref_docs "${SWAGGER_SPEC_PATH}" "${OUTPUT}"
|
|
||||||
|
|
||||||
# ex: ts=2 sw=2 et filetype=sh
|
|
|
@ -1,43 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
# Generates `types_swagger_doc_generated.go` files for federation API group
|
|
||||||
# versions. That file contains functions on API structs that return the comments
|
|
||||||
# that should be surfaced for the corresponding API type in our API docs.
|
|
||||||
|
|
||||||
set -o errexit
|
|
||||||
set -o nounset
|
|
||||||
set -o pipefail
|
|
||||||
|
|
||||||
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/..
|
|
||||||
source "${KUBE_ROOT}/hack/lib/init.sh"
|
|
||||||
source "${KUBE_ROOT}/hack/lib/swagger.sh"
|
|
||||||
|
|
||||||
kube::golang::setup_env
|
|
||||||
|
|
||||||
GROUP_VERSIONS=(federation/v1beta1)
|
|
||||||
GV_DIRS=()
|
|
||||||
for gv in "${GROUP_VERSIONS[@]}"; do
|
|
||||||
GV_DIRS+=("$(kube::util::group-version-to-pkg-path "${gv}")")
|
|
||||||
done
|
|
||||||
|
|
||||||
# To avoid compile errors, remove the currently existing files.
|
|
||||||
for gv_dir in "${GV_DIRS[@]}"; do
|
|
||||||
rm -f "${gv_dir}/types_swagger_doc_generated.go"
|
|
||||||
done
|
|
||||||
for i in "${!GROUP_VERSIONS[@]}"; do
|
|
||||||
kube::swagger::gen_types_swagger_doc "${GROUP_VERSIONS[i]}" "${GV_DIRS[i]}"
|
|
||||||
done
|
|
|
@ -1,74 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
# Script to fetch latest openapi spec from federation-apiserver
|
|
||||||
# Puts the updated spec at federation/apis/openapi-spec/
|
|
||||||
|
|
||||||
set -o errexit
|
|
||||||
set -o nounset
|
|
||||||
set -o pipefail
|
|
||||||
|
|
||||||
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/..
|
|
||||||
OPENAPI_ROOT_DIR="${KUBE_ROOT}/federation/apis/openapi-spec"
|
|
||||||
source "${KUBE_ROOT}/hack/lib/init.sh"
|
|
||||||
|
|
||||||
kube::golang::setup_env
|
|
||||||
|
|
||||||
make -C "${KUBE_ROOT}" WHAT="cmd/hyperkube"
|
|
||||||
|
|
||||||
function cleanup()
|
|
||||||
{
|
|
||||||
[[ -n "${APISERVER_PID-}" ]] && kill ${APISERVER_PID} 1>&2 2>/dev/null
|
|
||||||
|
|
||||||
kube::etcd::cleanup
|
|
||||||
|
|
||||||
kube::log::status "Clean up complete"
|
|
||||||
}
|
|
||||||
|
|
||||||
trap cleanup EXIT SIGINT
|
|
||||||
|
|
||||||
kube::golang::setup_env
|
|
||||||
|
|
||||||
TMP_DIR=$(mktemp -d /tmp/update-federation-openapi-spec.XXXX)
|
|
||||||
ETCD_HOST=${ETCD_HOST:-127.0.0.1}
|
|
||||||
ETCD_PORT=${ETCD_PORT:-2379}
|
|
||||||
API_PORT=${API_PORT:-8050}
|
|
||||||
API_HOST=${API_HOST:-127.0.0.1}
|
|
||||||
|
|
||||||
kube::etcd::start
|
|
||||||
|
|
||||||
echo "dummy_token,admin,admin" > $TMP_DIR/tokenauth.csv
|
|
||||||
|
|
||||||
# Start federation-apiserver
|
|
||||||
kube::log::status "Starting federation-apiserver"
|
|
||||||
"${KUBE_OUTPUT_HOSTBIN}/hyperkube" federation-apiserver \
|
|
||||||
--insecure-bind-address="${API_HOST}" \
|
|
||||||
--bind-address="${API_HOST}" \
|
|
||||||
--insecure-port="${API_PORT}" \
|
|
||||||
--etcd-servers="http://${ETCD_HOST}:${ETCD_PORT}" \
|
|
||||||
--advertise-address="10.10.10.10" \
|
|
||||||
--cert-dir="${TMP_DIR}/certs" \
|
|
||||||
--token-auth-file=$TMP_DIR/tokenauth.csv >/tmp/openapi-federation-api-server.log 2>&1 &
|
|
||||||
APISERVER_PID=$!
|
|
||||||
kube::util::wait_for_url "${API_HOST}:${API_PORT}/healthz" "apiserver: "
|
|
||||||
|
|
||||||
kube::log::status "Updating " ${OPENAPI_ROOT_DIR}
|
|
||||||
|
|
||||||
curl -w "\n" -fs "${API_HOST}:${API_PORT}/swagger.json" > "${OPENAPI_ROOT_DIR}/swagger.json"
|
|
||||||
|
|
||||||
kube::log::status "SUCCESS"
|
|
||||||
|
|
||||||
# ex: ts=2 sw=2 et filetype=sh
|
|
|
@ -1,83 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
# Script to fetch latest swagger spec from federation-apiserver
|
|
||||||
# Puts the updated spec at federation/apis/swagger-spec/
|
|
||||||
|
|
||||||
set -o errexit
|
|
||||||
set -o nounset
|
|
||||||
set -o pipefail
|
|
||||||
|
|
||||||
cat << __EOF__
|
|
||||||
Note: This assumes that the 'types_swagger_doc_generated.go' file has been
|
|
||||||
updated for all API group versions. If you are unsure, please run
|
|
||||||
hack/update-generated-swagger-docs.sh and
|
|
||||||
hack/update-federation-generated-swagger-docs.sh first.
|
|
||||||
__EOF__
|
|
||||||
|
|
||||||
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/..
|
|
||||||
SWAGGER_ROOT_DIR="${KUBE_ROOT}/federation/apis/swagger-spec"
|
|
||||||
source "${KUBE_ROOT}/hack/lib/init.sh"
|
|
||||||
|
|
||||||
kube::golang::setup_env
|
|
||||||
|
|
||||||
make -C "${KUBE_ROOT}" WHAT="cmd/hyperkube"
|
|
||||||
|
|
||||||
function cleanup()
|
|
||||||
{
|
|
||||||
[[ -n ${APISERVER_PID-} ]] && kill ${APISERVER_PID} 1>&2 2>/dev/null
|
|
||||||
|
|
||||||
kube::etcd::cleanup
|
|
||||||
|
|
||||||
kube::log::status "Clean up complete"
|
|
||||||
}
|
|
||||||
|
|
||||||
trap cleanup EXIT SIGINT
|
|
||||||
|
|
||||||
kube::golang::setup_env
|
|
||||||
|
|
||||||
TMP_DIR=$(mktemp -d /tmp/update-federation-swagger-spec.XXXX)
|
|
||||||
ETCD_HOST=${ETCD_HOST:-127.0.0.1}
|
|
||||||
ETCD_PORT=${ETCD_PORT:-2379}
|
|
||||||
API_PORT=${API_PORT:-8050}
|
|
||||||
API_HOST=${API_HOST:-127.0.0.1}
|
|
||||||
|
|
||||||
kube::etcd::start
|
|
||||||
|
|
||||||
# Start federation-apiserver
|
|
||||||
kube::log::status "Starting federation-apiserver"
|
|
||||||
"${KUBE_OUTPUT_HOSTBIN}/hyperkube" federation-apiserver \
|
|
||||||
--insecure-bind-address="${API_HOST}" \
|
|
||||||
--bind-address="${API_HOST}" \
|
|
||||||
--insecure-port="${API_PORT}" \
|
|
||||||
--etcd-servers="http://${ETCD_HOST}:${ETCD_PORT}" \
|
|
||||||
--advertise-address="10.10.10.10" \
|
|
||||||
--cert-dir="${TMP_DIR}/certs" >/tmp/swagger-federation-api-server.log 2>&1 &
|
|
||||||
APISERVER_PID=$!
|
|
||||||
|
|
||||||
kube::util::wait_for_url "${API_HOST}:${API_PORT}/" "apiserver: "
|
|
||||||
|
|
||||||
SWAGGER_API_PATH="${API_HOST}:${API_PORT}/swaggerapi/"
|
|
||||||
DEFAULT_GROUP_VERSIONS="v1 extensions/v1beta1 federation/v1beta1"
|
|
||||||
VERSIONS=${VERSIONS:-$DEFAULT_GROUP_VERSIONS}
|
|
||||||
|
|
||||||
kube::log::status "Updating " ${SWAGGER_ROOT_DIR}
|
|
||||||
|
|
||||||
SWAGGER_API_PATH="${SWAGGER_API_PATH}" SWAGGER_ROOT_DIR="${SWAGGER_ROOT_DIR}" VERSIONS="${VERSIONS}" kube::util::fetch-swagger-spec
|
|
||||||
|
|
||||||
kube::log::status "SUCCESS"
|
|
||||||
|
|
||||||
# ex: ts=2 sw=2 et filetype=sh
|
|
|
@ -32,7 +32,6 @@ BINS=(
|
||||||
cmd/genkubedocs
|
cmd/genkubedocs
|
||||||
cmd/genman
|
cmd/genman
|
||||||
cmd/genyaml
|
cmd/genyaml
|
||||||
federation/cmd/genfeddocs
|
|
||||||
)
|
)
|
||||||
make -C "${KUBE_ROOT}" WHAT="${BINS[*]}"
|
make -C "${KUBE_ROOT}" WHAT="${BINS[*]}"
|
||||||
|
|
||||||
|
|
|
@ -72,7 +72,6 @@ PACKAGES=(
|
||||||
k8s.io/api/admissionregistration/v1alpha1
|
k8s.io/api/admissionregistration/v1alpha1
|
||||||
k8s.io/api/admission/v1alpha1
|
k8s.io/api/admission/v1alpha1
|
||||||
k8s.io/api/networking/v1
|
k8s.io/api/networking/v1
|
||||||
k8s.io/kubernetes/federation/apis/federation/v1beta1
|
|
||||||
k8s.io/metrics/pkg/apis/metrics/v1alpha1
|
k8s.io/metrics/pkg/apis/metrics/v1alpha1
|
||||||
k8s.io/metrics/pkg/apis/metrics/v1beta1
|
k8s.io/metrics/pkg/apis/metrics/v1beta1
|
||||||
k8s.io/metrics/pkg/apis/custom_metrics/v1beta1
|
k8s.io/metrics/pkg/apis/custom_metrics/v1beta1
|
||||||
|
|
|
@ -14,9 +14,10 @@
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
# Generates `types_swagger_doc_generated.go` files for federation API group
|
# Generates `types_swagger_doc_generated.go` files for API group
|
||||||
# versions. That file contains functions on API structs that return the comments
|
# versions. That file contains functions on API structs that return
|
||||||
# that should be surfaced for the corresponding API type in our API docs.
|
# the comments that should be surfaced for the corresponding API type
|
||||||
|
# in our API docs.
|
||||||
|
|
||||||
set -o errexit
|
set -o errexit
|
||||||
set -o nounset
|
set -o nounset
|
||||||
|
|
|
@ -1,48 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
# Verifies that api reference docs are up to date.
|
|
||||||
|
|
||||||
set -o errexit
|
|
||||||
set -o nounset
|
|
||||||
set -o pipefail
|
|
||||||
|
|
||||||
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/..
|
|
||||||
source "${KUBE_ROOT}/hack/lib/init.sh"
|
|
||||||
|
|
||||||
kube::golang::setup_env
|
|
||||||
|
|
||||||
API_REFERENCE_DOCS_ROOT="${KUBE_ROOT}/federation/docs/api-reference"
|
|
||||||
OUTPUT_DIR="${KUBE_ROOT}/_tmp_federation/api-reference"
|
|
||||||
mkdir -p ${OUTPUT_DIR}
|
|
||||||
TMP_ROOT="${KUBE_ROOT}/_tmp_federation"
|
|
||||||
trap "rm -rf ${TMP_ROOT}" EXIT SIGINT
|
|
||||||
|
|
||||||
# Generate API reference docs in tmp.
|
|
||||||
"./hack/update-federation-api-reference-docs.sh" "${OUTPUT_DIR}"
|
|
||||||
|
|
||||||
echo "diffing ${API_REFERENCE_DOCS_ROOT} against freshly generated docs"
|
|
||||||
ret=0
|
|
||||||
diff -NauprB -I 'Last update' --exclude=*.md "${API_REFERENCE_DOCS_ROOT}" "${OUTPUT_DIR}" || ret=$?
|
|
||||||
if [[ $ret -eq 0 ]]
|
|
||||||
then
|
|
||||||
echo "${API_REFERENCE_DOCS_ROOT} up to date."
|
|
||||||
else
|
|
||||||
echo "${API_REFERENCE_DOCS_ROOT} is out of date. Please run hack/update-federation-api-reference-docs.sh"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# ex: ts=2 sw=2 et filetype=sh
|
|
|
@ -1,66 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
set -o errexit
|
|
||||||
set -o nounset
|
|
||||||
set -o pipefail
|
|
||||||
|
|
||||||
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/..
|
|
||||||
source "${KUBE_ROOT}/hack/lib/init.sh"
|
|
||||||
|
|
||||||
kube::golang::setup_env
|
|
||||||
|
|
||||||
make -C "${KUBE_ROOT}" WHAT=cmd/genswaggertypedocs
|
|
||||||
|
|
||||||
# Find binary
|
|
||||||
genswaggertypedocs=$(kube::util::find-binary "genswaggertypedocs")
|
|
||||||
|
|
||||||
if [[ ! -x "$genswaggertypedocs" ]]; then
|
|
||||||
{
|
|
||||||
echo "It looks as if you don't have a compiled genswaggertypedocs binary"
|
|
||||||
echo
|
|
||||||
echo "If you are running from a clone of the git repo, please run"
|
|
||||||
echo "'make WHAT=cmd/genswaggertypedocs'."
|
|
||||||
} >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
DIFFROOT="${KUBE_ROOT}/federation"
|
|
||||||
TMP_DIFFROOT="${KUBE_ROOT}/_tmp/federation"
|
|
||||||
_tmp="${KUBE_ROOT}/_tmp_federation"
|
|
||||||
|
|
||||||
cleanup() {
|
|
||||||
rm -rf "${_tmp}"
|
|
||||||
}
|
|
||||||
trap "cleanup" EXIT SIGINT
|
|
||||||
|
|
||||||
cleanup
|
|
||||||
|
|
||||||
mkdir -p "${TMP_DIFFROOT}"
|
|
||||||
cp -a "${DIFFROOT}"/* "${TMP_DIFFROOT}/"
|
|
||||||
|
|
||||||
"${KUBE_ROOT}/hack/update-federation-generated-swagger-docs.sh"
|
|
||||||
echo "diffing ${DIFFROOT} against freshly generated swagger type documentation"
|
|
||||||
ret=0
|
|
||||||
diff -Naupr -I 'Auto generated by' "${DIFFROOT}" "${TMP_DIFFROOT}" || ret=$?
|
|
||||||
cp -a "${TMP_DIFFROOT}"/* "${DIFFROOT}/"
|
|
||||||
if [[ $ret -eq 0 ]]
|
|
||||||
then
|
|
||||||
echo "${DIFFROOT} up to date."
|
|
||||||
else
|
|
||||||
echo "${DIFFROOT} is out of date. Please run hack/update-federation-generated-swagger-docs.sh"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
|
@ -1,47 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
set -o errexit
|
|
||||||
set -o nounset
|
|
||||||
set -o pipefail
|
|
||||||
|
|
||||||
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/..
|
|
||||||
source "${KUBE_ROOT}/hack/lib/init.sh"
|
|
||||||
|
|
||||||
kube::golang::setup_env
|
|
||||||
|
|
||||||
SPECROOT="${KUBE_ROOT}/federation/apis/openapi-spec"
|
|
||||||
TMP_SPECROOT="${KUBE_ROOT}/_tmp_federation/openapi-spec"
|
|
||||||
_tmp="${KUBE_ROOT}/_tmp_federation"
|
|
||||||
|
|
||||||
mkdir -p "${_tmp}"
|
|
||||||
cp -a "${SPECROOT}" "${TMP_SPECROOT}"
|
|
||||||
trap "cp -a ${TMP_SPECROOT} ${SPECROOT}/..; rm -rf ${_tmp}" EXIT SIGINT
|
|
||||||
rm ${SPECROOT}/*
|
|
||||||
|
|
||||||
"${KUBE_ROOT}/hack/update-federation-openapi-spec.sh"
|
|
||||||
echo "diffing ${SPECROOT} against freshly generated federation openapi spec"
|
|
||||||
ret=0
|
|
||||||
diff -Naupr -I 'Auto generated by' "${SPECROOT}" "${TMP_SPECROOT}" || ret=$?
|
|
||||||
if [[ $ret -eq 0 ]]
|
|
||||||
then
|
|
||||||
echo "${SPECROOT} up to date."
|
|
||||||
else
|
|
||||||
echo "${SPECROOT} is out of date. Please run hack/update-federation-openapi-spec.sh"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# ex: ts=2 sw=2 et filetype=sh
|
|
|
@ -1,51 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
set -o errexit
|
|
||||||
set -o nounset
|
|
||||||
set -o pipefail
|
|
||||||
|
|
||||||
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/..
|
|
||||||
source "${KUBE_ROOT}/hack/lib/init.sh"
|
|
||||||
|
|
||||||
kube::golang::setup_env
|
|
||||||
|
|
||||||
make -C "${KUBE_ROOT}" WHAT=federation/cmd/federation-apiserver
|
|
||||||
|
|
||||||
apiserver=$(kube::util::find-binary "federation-apiserver")
|
|
||||||
|
|
||||||
SPECROOT="${KUBE_ROOT}/federation/apis/swagger-spec"
|
|
||||||
TMP_SPECROOT="${KUBE_ROOT}/_tmp_federation/swagger-spec"
|
|
||||||
_tmp="${KUBE_ROOT}/_tmp_federation"
|
|
||||||
|
|
||||||
mkdir -p "${_tmp}"
|
|
||||||
trap "rm -rf ${_tmp}" EXIT SIGINT
|
|
||||||
cp -a "${SPECROOT}" "${TMP_SPECROOT}"
|
|
||||||
|
|
||||||
"${KUBE_ROOT}/hack/update-federation-swagger-spec.sh"
|
|
||||||
echo "diffing ${SPECROOT} against freshly generated federation swagger spec"
|
|
||||||
ret=0
|
|
||||||
diff -Naupr -I 'Auto generated by' "${SPECROOT}" "${TMP_SPECROOT}" || ret=$?
|
|
||||||
cp -a ${TMP_SPECROOT} "${KUBE_ROOT}/federation/apis"
|
|
||||||
if [[ $ret -eq 0 ]]
|
|
||||||
then
|
|
||||||
echo "${SPECROOT} up to date."
|
|
||||||
else
|
|
||||||
echo "${SPECROOT} is out of date. Please run hack/update-federation-swagger-spec.sh"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# ex: ts=2 sw=2 et filetype=sh
|
|
|
@ -28,7 +28,6 @@ BINS=(
|
||||||
cmd/genkubedocs
|
cmd/genkubedocs
|
||||||
cmd/genman
|
cmd/genman
|
||||||
cmd/genyaml
|
cmd/genyaml
|
||||||
federation/cmd/genfeddocs
|
|
||||||
)
|
)
|
||||||
make -C "${KUBE_ROOT}" WHAT="${BINS[*]}"
|
make -C "${KUBE_ROOT}" WHAT="${BINS[*]}"
|
||||||
|
|
||||||
|
|
|
@ -11,8 +11,6 @@ go_library(
|
||||||
srcs = ["testapi.go"],
|
srcs = ["testapi.go"],
|
||||||
importpath = "k8s.io/kubernetes/pkg/api/testapi",
|
importpath = "k8s.io/kubernetes/pkg/api/testapi",
|
||||||
deps = [
|
deps = [
|
||||||
"//federation/apis/federation:go_default_library",
|
|
||||||
"//federation/apis/federation/install:go_default_library",
|
|
||||||
"//pkg/api:go_default_library",
|
"//pkg/api:go_default_library",
|
||||||
"//pkg/api/install:go_default_library",
|
"//pkg/api/install:go_default_library",
|
||||||
"//pkg/api/legacyscheme:go_default_library",
|
"//pkg/api/legacyscheme:go_default_library",
|
||||||
|
|
|
@ -34,7 +34,6 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
"k8s.io/apimachinery/pkg/runtime/serializer/recognizer"
|
"k8s.io/apimachinery/pkg/runtime/serializer/recognizer"
|
||||||
"k8s.io/kubernetes/federation/apis/federation"
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
||||||
"k8s.io/kubernetes/pkg/apis/admission"
|
"k8s.io/kubernetes/pkg/apis/admission"
|
||||||
|
@ -53,7 +52,6 @@ import (
|
||||||
"k8s.io/kubernetes/pkg/apis/settings"
|
"k8s.io/kubernetes/pkg/apis/settings"
|
||||||
"k8s.io/kubernetes/pkg/apis/storage"
|
"k8s.io/kubernetes/pkg/apis/storage"
|
||||||
|
|
||||||
_ "k8s.io/kubernetes/federation/apis/federation/install"
|
|
||||||
_ "k8s.io/kubernetes/pkg/api/install"
|
_ "k8s.io/kubernetes/pkg/api/install"
|
||||||
_ "k8s.io/kubernetes/pkg/apis/admission/install"
|
_ "k8s.io/kubernetes/pkg/apis/admission/install"
|
||||||
_ "k8s.io/kubernetes/pkg/apis/admissionregistration/install"
|
_ "k8s.io/kubernetes/pkg/apis/admissionregistration/install"
|
||||||
|
@ -83,7 +81,6 @@ var (
|
||||||
Extensions TestGroup
|
Extensions TestGroup
|
||||||
Apps TestGroup
|
Apps TestGroup
|
||||||
Policy TestGroup
|
Policy TestGroup
|
||||||
Federation TestGroup
|
|
||||||
Rbac TestGroup
|
Rbac TestGroup
|
||||||
Certificates TestGroup
|
Certificates TestGroup
|
||||||
Scheduling TestGroup
|
Scheduling TestGroup
|
||||||
|
@ -227,15 +224,6 @@ func init() {
|
||||||
externalTypes: legacyscheme.Scheme.KnownTypes(externalGroupVersion),
|
externalTypes: legacyscheme.Scheme.KnownTypes(externalGroupVersion),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if _, ok := Groups[federation.GroupName]; !ok {
|
|
||||||
externalGroupVersion := schema.GroupVersion{Group: federation.GroupName, Version: legacyscheme.Registry.GroupOrDie(federation.GroupName).GroupVersion.Version}
|
|
||||||
Groups[federation.GroupName] = TestGroup{
|
|
||||||
externalGroupVersion: externalGroupVersion,
|
|
||||||
internalGroupVersion: federation.SchemeGroupVersion,
|
|
||||||
internalTypes: legacyscheme.Scheme.KnownTypes(federation.SchemeGroupVersion),
|
|
||||||
externalTypes: legacyscheme.Scheme.KnownTypes(externalGroupVersion),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if _, ok := Groups[rbac.GroupName]; !ok {
|
if _, ok := Groups[rbac.GroupName]; !ok {
|
||||||
externalGroupVersion := schema.GroupVersion{Group: rbac.GroupName, Version: legacyscheme.Registry.GroupOrDie(rbac.GroupName).GroupVersion.Version}
|
externalGroupVersion := schema.GroupVersion{Group: rbac.GroupName, Version: legacyscheme.Registry.GroupOrDie(rbac.GroupName).GroupVersion.Version}
|
||||||
Groups[rbac.GroupName] = TestGroup{
|
Groups[rbac.GroupName] = TestGroup{
|
||||||
|
@ -334,7 +322,6 @@ func init() {
|
||||||
Policy = Groups[policy.GroupName]
|
Policy = Groups[policy.GroupName]
|
||||||
Certificates = Groups[certificates.GroupName]
|
Certificates = Groups[certificates.GroupName]
|
||||||
Extensions = Groups[extensions.GroupName]
|
Extensions = Groups[extensions.GroupName]
|
||||||
Federation = Groups[federation.GroupName]
|
|
||||||
Rbac = Groups[rbac.GroupName]
|
Rbac = Groups[rbac.GroupName]
|
||||||
Scheduling = Groups[scheduling.GroupName]
|
Scheduling = Groups[scheduling.GroupName]
|
||||||
Settings = Groups[settings.GroupName]
|
Settings = Groups[settings.GroupName]
|
||||||
|
|
|
@ -11,7 +11,6 @@ openapi_library(
|
||||||
srcs = ["doc.go"],
|
srcs = ["doc.go"],
|
||||||
go_prefix = openapi_go_prefix,
|
go_prefix = openapi_go_prefix,
|
||||||
openapi_targets = [
|
openapi_targets = [
|
||||||
"federation/apis/federation/v1beta1",
|
|
||||||
"pkg/apis/abac/v0",
|
"pkg/apis/abac/v0",
|
||||||
"pkg/apis/abac/v1beta1",
|
"pkg/apis/abac/v1beta1",
|
||||||
"pkg/apis/componentconfig/v1alpha1",
|
"pkg/apis/componentconfig/v1alpha1",
|
||||||
|
|
|
@ -210,7 +210,6 @@ __custom_func() {
|
||||||
* certificatesigningrequests (aka 'csr')
|
* certificatesigningrequests (aka 'csr')
|
||||||
* clusterrolebindings
|
* clusterrolebindings
|
||||||
* clusterroles
|
* clusterroles
|
||||||
* clusters (valid only for federation apiservers)
|
|
||||||
* componentstatuses (aka 'cs')
|
* componentstatuses (aka 'cs')
|
||||||
* configmaps (aka 'cm')
|
* configmaps (aka 'cm')
|
||||||
* controllerrevisions
|
* controllerrevisions
|
||||||
|
|
|
@ -14,7 +14,6 @@ go_library(
|
||||||
"//build/visible_to:pkg_kubectl_cmd_testing_CONSUMERS",
|
"//build/visible_to:pkg_kubectl_cmd_testing_CONSUMERS",
|
||||||
],
|
],
|
||||||
deps = [
|
deps = [
|
||||||
"//federation/client/clientset_generated/federation_clientset:go_default_library",
|
|
||||||
"//pkg/api:go_default_library",
|
"//pkg/api:go_default_library",
|
||||||
"//pkg/api/legacyscheme:go_default_library",
|
"//pkg/api/legacyscheme:go_default_library",
|
||||||
"//pkg/api/testapi:go_default_library",
|
"//pkg/api/testapi:go_default_library",
|
||||||
|
|
|
@ -35,7 +35,6 @@ import (
|
||||||
"k8s.io/client-go/kubernetes"
|
"k8s.io/client-go/kubernetes"
|
||||||
restclient "k8s.io/client-go/rest"
|
restclient "k8s.io/client-go/rest"
|
||||||
"k8s.io/client-go/rest/fake"
|
"k8s.io/client-go/rest/fake"
|
||||||
fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
||||||
"k8s.io/kubernetes/pkg/api/testapi"
|
"k8s.io/kubernetes/pkg/api/testapi"
|
||||||
|
@ -331,12 +330,6 @@ func (f *FakeFactory) ClientForMapping(mapping *meta.RESTMapping) (resource.REST
|
||||||
return f.tf.Client, f.tf.Err
|
return f.tf.Client, f.tf.Err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *FakeFactory) FederationClientSetForVersion(version *schema.GroupVersion) (fedclientset.Interface, error) {
|
|
||||||
return nil, nil
|
|
||||||
}
|
|
||||||
func (f *FakeFactory) FederationClientForVersion(version *schema.GroupVersion) (*restclient.RESTClient, error) {
|
|
||||||
return nil, nil
|
|
||||||
}
|
|
||||||
func (f *FakeFactory) ClientSetForVersion(requiredVersion *schema.GroupVersion) (internalclientset.Interface, error) {
|
func (f *FakeFactory) ClientSetForVersion(requiredVersion *schema.GroupVersion) (internalclientset.Interface, error) {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,8 +22,6 @@ go_library(
|
||||||
"//build/visible_to:pkg_kubectl_cmd_util_CONSUMERS",
|
"//build/visible_to:pkg_kubectl_cmd_util_CONSUMERS",
|
||||||
],
|
],
|
||||||
deps = [
|
deps = [
|
||||||
"//federation/apis/federation:go_default_library",
|
|
||||||
"//federation/client/clientset_generated/federation_clientset:go_default_library",
|
|
||||||
"//pkg/api:go_default_library",
|
"//pkg/api:go_default_library",
|
||||||
"//pkg/api/legacyscheme:go_default_library",
|
"//pkg/api/legacyscheme:go_default_library",
|
||||||
"//pkg/api/v1:go_default_library",
|
"//pkg/api/v1:go_default_library",
|
||||||
|
|
|
@ -24,7 +24,6 @@ import (
|
||||||
"k8s.io/client-go/kubernetes"
|
"k8s.io/client-go/kubernetes"
|
||||||
restclient "k8s.io/client-go/rest"
|
restclient "k8s.io/client-go/rest"
|
||||||
"k8s.io/client-go/tools/clientcmd"
|
"k8s.io/client-go/tools/clientcmd"
|
||||||
fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
|
||||||
oldclient "k8s.io/kubernetes/pkg/client/unversioned"
|
oldclient "k8s.io/kubernetes/pkg/client/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/version"
|
"k8s.io/kubernetes/pkg/version"
|
||||||
|
@ -34,7 +33,6 @@ func NewClientCache(loader clientcmd.ClientConfig, discoveryClientFactory Discov
|
||||||
return &ClientCache{
|
return &ClientCache{
|
||||||
clientsets: make(map[schema.GroupVersion]internalclientset.Interface),
|
clientsets: make(map[schema.GroupVersion]internalclientset.Interface),
|
||||||
configs: make(map[schema.GroupVersion]*restclient.Config),
|
configs: make(map[schema.GroupVersion]*restclient.Config),
|
||||||
fedClientSets: make(map[schema.GroupVersion]fedclientset.Interface),
|
|
||||||
loader: loader,
|
loader: loader,
|
||||||
discoveryClientFactory: discoveryClientFactory,
|
discoveryClientFactory: discoveryClientFactory,
|
||||||
}
|
}
|
||||||
|
@ -43,10 +41,9 @@ func NewClientCache(loader clientcmd.ClientConfig, discoveryClientFactory Discov
|
||||||
// ClientCache caches previously loaded clients for reuse, and ensures MatchServerVersion
|
// ClientCache caches previously loaded clients for reuse, and ensures MatchServerVersion
|
||||||
// is invoked only once
|
// is invoked only once
|
||||||
type ClientCache struct {
|
type ClientCache struct {
|
||||||
loader clientcmd.ClientConfig
|
loader clientcmd.ClientConfig
|
||||||
clientsets map[schema.GroupVersion]internalclientset.Interface
|
clientsets map[schema.GroupVersion]internalclientset.Interface
|
||||||
fedClientSets map[schema.GroupVersion]fedclientset.Interface
|
configs map[schema.GroupVersion]*restclient.Config
|
||||||
configs map[schema.GroupVersion]*restclient.Config
|
|
||||||
|
|
||||||
// noVersionConfig provides a cached config for the case of no required version specified
|
// noVersionConfig provides a cached config for the case of no required version specified
|
||||||
noVersionConfig *restclient.Config
|
noVersionConfig *restclient.Config
|
||||||
|
@ -211,51 +208,3 @@ func (c *ClientCache) ClientSetForVersion(requiredVersion *schema.GroupVersion)
|
||||||
|
|
||||||
return clientset, nil
|
return clientset, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *ClientCache) FederationClientSetForVersion(version *schema.GroupVersion) (fedclientset.Interface, error) {
|
|
||||||
c.lock.Lock()
|
|
||||||
defer c.lock.Unlock()
|
|
||||||
|
|
||||||
return c.federationClientSetForVersion(version)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *ClientCache) federationClientSetForVersion(version *schema.GroupVersion) (fedclientset.Interface, error) {
|
|
||||||
if version != nil {
|
|
||||||
if clientSet, found := c.fedClientSets[*version]; found {
|
|
||||||
return clientSet, nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
config, err := c.clientConfigForVersion(version)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: support multi versions of client with clientset
|
|
||||||
clientSet, err := fedclientset.NewForConfig(config)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
c.fedClientSets[*config.GroupVersion] = clientSet
|
|
||||||
|
|
||||||
if version != nil {
|
|
||||||
configCopy := *config
|
|
||||||
clientSet, err := fedclientset.NewForConfig(&configCopy)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
c.fedClientSets[*version] = clientSet
|
|
||||||
}
|
|
||||||
|
|
||||||
return clientSet, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *ClientCache) FederationClientForVersion(version *schema.GroupVersion) (*restclient.RESTClient, error) {
|
|
||||||
c.lock.Lock()
|
|
||||||
defer c.lock.Unlock()
|
|
||||||
|
|
||||||
fedClientSet, err := c.federationClientSetForVersion(version)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return fedClientSet.Federation().RESTClient().(*restclient.RESTClient), nil
|
|
||||||
}
|
|
||||||
|
|
|
@ -37,7 +37,6 @@ import (
|
||||||
"k8s.io/client-go/kubernetes"
|
"k8s.io/client-go/kubernetes"
|
||||||
restclient "k8s.io/client-go/rest"
|
restclient "k8s.io/client-go/rest"
|
||||||
"k8s.io/client-go/tools/clientcmd"
|
"k8s.io/client-go/tools/clientcmd"
|
||||||
fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
apiv1 "k8s.io/kubernetes/pkg/api/v1"
|
apiv1 "k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
|
||||||
|
@ -103,11 +102,6 @@ type ClientAccessFactory interface {
|
||||||
// just directions to the server. People use this to build RESTMappers on top of
|
// just directions to the server. People use this to build RESTMappers on top of
|
||||||
BareClientConfig() (*restclient.Config, error)
|
BareClientConfig() (*restclient.Config, error)
|
||||||
|
|
||||||
// TODO this should probably be removed and collapsed into whatever we want to use long term
|
|
||||||
// probably returning a restclient for a version and leaving contruction up to someone else
|
|
||||||
FederationClientSetForVersion(version *schema.GroupVersion) (fedclientset.Interface, error)
|
|
||||||
// TODO remove this should be rolled into restclient with the right version
|
|
||||||
FederationClientForVersion(version *schema.GroupVersion) (*restclient.RESTClient, error)
|
|
||||||
// TODO remove. This should be rolled into `ClientSet`
|
// TODO remove. This should be rolled into `ClientSet`
|
||||||
ClientSetForVersion(requiredVersion *schema.GroupVersion) (internalclientset.Interface, error)
|
ClientSetForVersion(requiredVersion *schema.GroupVersion) (internalclientset.Interface, error)
|
||||||
// TODO remove. This should be rolled into `ClientConfig`
|
// TODO remove. This should be rolled into `ClientConfig`
|
||||||
|
|
|
@ -45,7 +45,6 @@ import (
|
||||||
restclient "k8s.io/client-go/rest"
|
restclient "k8s.io/client-go/rest"
|
||||||
"k8s.io/client-go/tools/clientcmd"
|
"k8s.io/client-go/tools/clientcmd"
|
||||||
"k8s.io/client-go/util/homedir"
|
"k8s.io/client-go/util/homedir"
|
||||||
fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
||||||
"k8s.io/kubernetes/pkg/apis/apps"
|
"k8s.io/kubernetes/pkg/apis/apps"
|
||||||
|
@ -213,14 +212,6 @@ func (f *ring0Factory) RESTClient() (*restclient.RESTClient, error) {
|
||||||
return restclient.RESTClientFor(clientConfig)
|
return restclient.RESTClientFor(clientConfig)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *ring0Factory) FederationClientSetForVersion(version *schema.GroupVersion) (fedclientset.Interface, error) {
|
|
||||||
return f.clientCache.FederationClientSetForVersion(version)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *ring0Factory) FederationClientForVersion(version *schema.GroupVersion) (*restclient.RESTClient, error) {
|
|
||||||
return f.clientCache.FederationClientForVersion(version)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *ring0Factory) Decoder(toInternal bool) runtime.Decoder {
|
func (f *ring0Factory) Decoder(toInternal bool) runtime.Decoder {
|
||||||
var decoder runtime.Decoder
|
var decoder runtime.Decoder
|
||||||
if toInternal {
|
if toInternal {
|
||||||
|
|
|
@ -35,7 +35,6 @@ import (
|
||||||
"k8s.io/client-go/discovery"
|
"k8s.io/client-go/discovery"
|
||||||
"k8s.io/client-go/dynamic"
|
"k8s.io/client-go/dynamic"
|
||||||
restclient "k8s.io/client-go/rest"
|
restclient "k8s.io/client-go/rest"
|
||||||
"k8s.io/kubernetes/federation/apis/federation"
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
||||||
"k8s.io/kubernetes/pkg/apis/apps"
|
"k8s.io/kubernetes/pkg/apis/apps"
|
||||||
|
@ -143,9 +142,6 @@ func (f *ring1Factory) ClientForMapping(mapping *meta.RESTMapping) (resource.RES
|
||||||
}
|
}
|
||||||
gvk := mapping.GroupVersionKind
|
gvk := mapping.GroupVersionKind
|
||||||
switch gvk.Group {
|
switch gvk.Group {
|
||||||
case federation.GroupName:
|
|
||||||
mappingVersion := mapping.GroupVersionKind.GroupVersion()
|
|
||||||
return f.clientAccessFactory.FederationClientForVersion(&mappingVersion)
|
|
||||||
case api.GroupName:
|
case api.GroupName:
|
||||||
cfg.APIPath = "/api"
|
cfg.APIPath = "/api"
|
||||||
default:
|
default:
|
||||||
|
@ -176,15 +172,6 @@ func (f *ring1Factory) UnstructuredClientForMapping(mapping *meta.RESTMapping) (
|
||||||
|
|
||||||
func (f *ring1Factory) Describer(mapping *meta.RESTMapping) (printers.Describer, error) {
|
func (f *ring1Factory) Describer(mapping *meta.RESTMapping) (printers.Describer, error) {
|
||||||
mappingVersion := mapping.GroupVersionKind.GroupVersion()
|
mappingVersion := mapping.GroupVersionKind.GroupVersion()
|
||||||
if mapping.GroupVersionKind.Group == federation.GroupName {
|
|
||||||
fedClientSet, err := f.clientAccessFactory.FederationClientSetForVersion(&mappingVersion)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
if mapping.GroupVersionKind.Kind == "Cluster" {
|
|
||||||
return &printersinternal.ClusterDescriber{Interface: fedClientSet}, nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
clientset, err := f.clientAccessFactory.ClientSetForVersion(&mappingVersion)
|
clientset, err := f.clientAccessFactory.ClientSetForVersion(&mappingVersion)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -179,10 +179,3 @@ var LegacyCategoryExpander CategoryExpander = SimpleCategoryExpander{
|
||||||
"all": legacyUserResources,
|
"all": legacyUserResources,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
// LegacyFederationCategoryExpander is the old hardcoded expansion for federation
|
|
||||||
var LegacyFederationCategoryExpander CategoryExpander = SimpleCategoryExpander{
|
|
||||||
Expansions: map[string][]schema.GroupResource{
|
|
||||||
"all": {{Group: "", Resource: "services"}},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
|
@ -41,12 +41,11 @@ func TestGroupVersions(t *testing.T) {
|
||||||
"batch",
|
"batch",
|
||||||
"componentconfig",
|
"componentconfig",
|
||||||
"extensions",
|
"extensions",
|
||||||
"federation",
|
|
||||||
"policy",
|
"policy",
|
||||||
)
|
)
|
||||||
|
|
||||||
// No new groups should be added to the legacyUnsuffixedGroups exclusion list
|
// No new groups should be added to the legacyUnsuffixedGroups exclusion list
|
||||||
if len(legacyUnsuffixedGroups) != 8 {
|
if len(legacyUnsuffixedGroups) != 7 {
|
||||||
t.Errorf("No additional unnamespaced groups should be created")
|
t.Errorf("No additional unnamespaced groups should be created")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,9 +16,6 @@ go_test(
|
||||||
importpath = "k8s.io/kubernetes/pkg/printers/internalversion",
|
importpath = "k8s.io/kubernetes/pkg/printers/internalversion",
|
||||||
library = ":go_default_library",
|
library = ":go_default_library",
|
||||||
deps = [
|
deps = [
|
||||||
"//federation/apis/federation:go_default_library",
|
|
||||||
"//federation/apis/federation/v1beta1:go_default_library",
|
|
||||||
"//federation/client/clientset_generated/federation_clientset/fake:go_default_library",
|
|
||||||
"//pkg/api:go_default_library",
|
"//pkg/api:go_default_library",
|
||||||
"//pkg/api/legacyscheme:go_default_library",
|
"//pkg/api/legacyscheme:go_default_library",
|
||||||
"//pkg/api/testapi:go_default_library",
|
"//pkg/api/testapi:go_default_library",
|
||||||
|
@ -59,9 +56,6 @@ go_library(
|
||||||
],
|
],
|
||||||
importpath = "k8s.io/kubernetes/pkg/printers/internalversion",
|
importpath = "k8s.io/kubernetes/pkg/printers/internalversion",
|
||||||
deps = [
|
deps = [
|
||||||
"//federation/apis/federation:go_default_library",
|
|
||||||
"//federation/apis/federation/v1beta1:go_default_library",
|
|
||||||
"//federation/client/clientset_generated/federation_clientset:go_default_library",
|
|
||||||
"//pkg/api:go_default_library",
|
"//pkg/api:go_default_library",
|
||||||
"//pkg/api/events:go_default_library",
|
"//pkg/api/events:go_default_library",
|
||||||
"//pkg/api/helper:go_default_library",
|
"//pkg/api/helper:go_default_library",
|
||||||
|
|
|
@ -47,8 +47,6 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
"k8s.io/client-go/dynamic"
|
"k8s.io/client-go/dynamic"
|
||||||
clientextensionsv1beta1 "k8s.io/client-go/kubernetes/typed/extensions/v1beta1"
|
clientextensionsv1beta1 "k8s.io/client-go/kubernetes/typed/extensions/v1beta1"
|
||||||
federation "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
|
||||||
fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/events"
|
"k8s.io/kubernetes/pkg/api/events"
|
||||||
"k8s.io/kubernetes/pkg/api/helper"
|
"k8s.io/kubernetes/pkg/api/helper"
|
||||||
|
@ -3073,47 +3071,6 @@ func (d *ConfigMapDescriber) Describe(namespace, name string, describerSettings
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
type ClusterDescriber struct {
|
|
||||||
fedclientset.Interface
|
|
||||||
}
|
|
||||||
|
|
||||||
func (d *ClusterDescriber) Describe(namespace, name string, describerSettings printers.DescriberSettings) (string, error) {
|
|
||||||
cluster, err := d.Federation().Clusters().Get(name, metav1.GetOptions{})
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
return describeCluster(cluster)
|
|
||||||
}
|
|
||||||
|
|
||||||
func describeCluster(cluster *federation.Cluster) (string, error) {
|
|
||||||
return tabbedString(func(out io.Writer) error {
|
|
||||||
w := NewPrefixWriter(out)
|
|
||||||
w.Write(LEVEL_0, "Name:\t%s\n", cluster.Name)
|
|
||||||
w.Write(LEVEL_0, "Labels:\t%s\n", labels.FormatLabels(cluster.Labels))
|
|
||||||
|
|
||||||
w.Write(LEVEL_0, "ServerAddressByClientCIDRs:\n ClientCIDR\tServerAddress\n")
|
|
||||||
w.Write(LEVEL_1, "----\t----\n")
|
|
||||||
for _, cidrAddr := range cluster.Spec.ServerAddressByClientCIDRs {
|
|
||||||
w.Write(LEVEL_1, "%v \t%v\n\n", cidrAddr.ClientCIDR, cidrAddr.ServerAddress)
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(cluster.Status.Conditions) > 0 {
|
|
||||||
w.Write(LEVEL_0, "Conditions:\n Type\tStatus\tLastUpdateTime\tLastTransitionTime\tReason\tMessage\n")
|
|
||||||
w.Write(LEVEL_1, "----\t------\t-----------------\t------------------\t------\t-------\n")
|
|
||||||
for _, c := range cluster.Status.Conditions {
|
|
||||||
w.Write(LEVEL_1, "%v \t%v \t%s \t%s \t%v \t%v\n",
|
|
||||||
c.Type,
|
|
||||||
c.Status,
|
|
||||||
c.LastProbeTime.Time.Format(time.RFC1123Z),
|
|
||||||
c.LastTransitionTime.Time.Format(time.RFC1123Z),
|
|
||||||
c.Reason,
|
|
||||||
c.Message)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// NetworkPolicyDescriber generates information about a networking.NetworkPolicy
|
// NetworkPolicyDescriber generates information about a networking.NetworkPolicy
|
||||||
type NetworkPolicyDescriber struct {
|
type NetworkPolicyDescriber struct {
|
||||||
clientset.Interface
|
clientset.Interface
|
||||||
|
|
|
@ -33,8 +33,6 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||||
"k8s.io/apimachinery/pkg/util/intstr"
|
"k8s.io/apimachinery/pkg/util/intstr"
|
||||||
versionedfake "k8s.io/client-go/kubernetes/fake"
|
versionedfake "k8s.io/client-go/kubernetes/fake"
|
||||||
federation "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
|
||||||
fedfake "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset/fake"
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/apis/autoscaling"
|
"k8s.io/kubernetes/pkg/apis/autoscaling"
|
||||||
"k8s.io/kubernetes/pkg/apis/extensions"
|
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||||
|
@ -848,40 +846,6 @@ func TestDescribeDeployment(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestDescribeCluster(t *testing.T) {
|
|
||||||
cluster := federation.Cluster{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "foo",
|
|
||||||
ResourceVersion: "4",
|
|
||||||
Labels: map[string]string{
|
|
||||||
"name": "foo",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Spec: federation.ClusterSpec{
|
|
||||||
ServerAddressByClientCIDRs: []federation.ServerAddressByClientCIDR{
|
|
||||||
{
|
|
||||||
ClientCIDR: "0.0.0.0/0",
|
|
||||||
ServerAddress: "localhost:8888",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Status: federation.ClusterStatus{
|
|
||||||
Conditions: []federation.ClusterCondition{
|
|
||||||
{Type: federation.ClusterReady, Status: v1.ConditionTrue},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
fake := fedfake.NewSimpleClientset(&cluster)
|
|
||||||
d := ClusterDescriber{Interface: fake}
|
|
||||||
out, err := d.Describe("any", "foo", printers.DescriberSettings{ShowEvents: true})
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("unexpected error: %v", err)
|
|
||||||
}
|
|
||||||
if !strings.Contains(out, "foo") {
|
|
||||||
t.Errorf("unexpected out: %s", out)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestDescribeStorageClass(t *testing.T) {
|
func TestDescribeStorageClass(t *testing.T) {
|
||||||
reclaimPolicy := api.PersistentVolumeReclaimRetain
|
reclaimPolicy := api.PersistentVolumeReclaimRetain
|
||||||
f := fake.NewSimpleClientset(&storage.StorageClass{
|
f := fake.NewSimpleClientset(&storage.StorageClass{
|
||||||
|
|
|
@ -41,7 +41,6 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/labels"
|
"k8s.io/apimachinery/pkg/labels"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
"k8s.io/kubernetes/federation/apis/federation"
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/events"
|
"k8s.io/kubernetes/pkg/api/events"
|
||||||
"k8s.io/kubernetes/pkg/api/helper"
|
"k8s.io/kubernetes/pkg/api/helper"
|
||||||
|
@ -361,15 +360,6 @@ func AddHandlers(h printers.PrintHandler) {
|
||||||
h.TableHandler(podSecurityPolicyColumnDefinitions, printPodSecurityPolicy)
|
h.TableHandler(podSecurityPolicyColumnDefinitions, printPodSecurityPolicy)
|
||||||
h.TableHandler(podSecurityPolicyColumnDefinitions, printPodSecurityPolicyList)
|
h.TableHandler(podSecurityPolicyColumnDefinitions, printPodSecurityPolicyList)
|
||||||
|
|
||||||
clusterColumnDefinitions := []metav1alpha1.TableColumnDefinition{
|
|
||||||
{Name: "Name", Type: "string", Format: "name", Description: metav1.ObjectMeta{}.SwaggerDoc()["name"]},
|
|
||||||
{Name: "Status", Type: "string", Description: "Status of the cluster"},
|
|
||||||
{Name: "Age", Type: "string", Description: metav1.ObjectMeta{}.SwaggerDoc()["creationTimestamp"]},
|
|
||||||
{Name: "Labels", Type: "string", Description: "The labels of the cluster"},
|
|
||||||
}
|
|
||||||
h.TableHandler(clusterColumnDefinitions, printCluster)
|
|
||||||
h.TableHandler(clusterColumnDefinitions, printClusterList)
|
|
||||||
|
|
||||||
networkPolicyColumnDefinitioins := []metav1alpha1.TableColumnDefinition{
|
networkPolicyColumnDefinitioins := []metav1alpha1.TableColumnDefinition{
|
||||||
{Name: "Name", Type: "string", Format: "name", Description: metav1.ObjectMeta{}.SwaggerDoc()["name"]},
|
{Name: "Name", Type: "string", Format: "name", Description: metav1.ObjectMeta{}.SwaggerDoc()["name"]},
|
||||||
{Name: "Pod-Selector", Type: "string", Description: extensionsv1beta1.NetworkPolicySpec{}.SwaggerDoc()["podSelector"]},
|
{Name: "Pod-Selector", Type: "string", Description: extensionsv1beta1.NetworkPolicySpec{}.SwaggerDoc()["podSelector"]},
|
||||||
|
@ -748,41 +738,6 @@ func printReplicaSetList(list *extensions.ReplicaSetList, options printers.Print
|
||||||
return rows, nil
|
return rows, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func printCluster(obj *federation.Cluster, options printers.PrintOptions) ([]metav1alpha1.TableRow, error) {
|
|
||||||
row := metav1alpha1.TableRow{
|
|
||||||
Object: runtime.RawExtension{Object: obj},
|
|
||||||
}
|
|
||||||
|
|
||||||
var statuses []string
|
|
||||||
for _, condition := range obj.Status.Conditions {
|
|
||||||
if condition.Status == api.ConditionTrue {
|
|
||||||
statuses = append(statuses, string(condition.Type))
|
|
||||||
} else {
|
|
||||||
statuses = append(statuses, "Not"+string(condition.Type))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if len(statuses) == 0 {
|
|
||||||
statuses = append(statuses, "Unknown")
|
|
||||||
}
|
|
||||||
row.Cells = append(row.Cells, obj.Name, strings.Join(statuses, ","), translateTimestamp(obj.CreationTimestamp))
|
|
||||||
if options.ShowLabels {
|
|
||||||
row.Cells = append(row.Cells, labels.FormatLabels(obj.Labels))
|
|
||||||
}
|
|
||||||
return []metav1alpha1.TableRow{row}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func printClusterList(list *federation.ClusterList, options printers.PrintOptions) ([]metav1alpha1.TableRow, error) {
|
|
||||||
rows := make([]metav1alpha1.TableRow, 0, len(list.Items))
|
|
||||||
for i := range list.Items {
|
|
||||||
r, err := printCluster(&list.Items[i], options)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
rows = append(rows, r...)
|
|
||||||
}
|
|
||||||
return rows, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func printJob(obj *batch.Job, options printers.PrintOptions) ([]metav1alpha1.TableRow, error) {
|
func printJob(obj *batch.Job, options printers.PrintOptions) ([]metav1alpha1.TableRow, error) {
|
||||||
row := metav1alpha1.TableRow{
|
row := metav1alpha1.TableRow{
|
||||||
Object: runtime.RawExtension{Object: obj},
|
Object: runtime.RawExtension{Object: obj},
|
||||||
|
|
|
@ -41,7 +41,6 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/util/diff"
|
"k8s.io/apimachinery/pkg/util/diff"
|
||||||
"k8s.io/apimachinery/pkg/util/intstr"
|
"k8s.io/apimachinery/pkg/util/intstr"
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
"k8s.io/kubernetes/federation/apis/federation"
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
||||||
"k8s.io/kubernetes/pkg/api/testapi"
|
"k8s.io/kubernetes/pkg/api/testapi"
|
||||||
|
@ -3134,124 +3133,3 @@ func TestPrintStorageClass(t *testing.T) {
|
||||||
buf.Reset()
|
buf.Reset()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPrintCluster(t *testing.T) {
|
|
||||||
tests := []struct {
|
|
||||||
cluster federation.Cluster
|
|
||||||
expect []metav1alpha1.TableRow
|
|
||||||
showLabels bool
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
federation.Cluster{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "cluster1",
|
|
||||||
CreationTimestamp: metav1.Time{Time: time.Now().Add(1.9e9)},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
[]metav1alpha1.TableRow{{Cells: []interface{}{"cluster1", "Unknown", "0s"}}},
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
federation.Cluster{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "cluster2",
|
|
||||||
CreationTimestamp: metav1.Time{Time: time.Now().Add(1.9e9)},
|
|
||||||
Labels: map[string]string{"label1": "", "label2": "cluster"},
|
|
||||||
},
|
|
||||||
Status: federation.ClusterStatus{
|
|
||||||
Conditions: []federation.ClusterCondition{
|
|
||||||
{
|
|
||||||
Status: api.ConditionTrue,
|
|
||||||
Type: federation.ClusterReady,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Status: api.ConditionFalse,
|
|
||||||
Type: federation.ClusterOffline,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
[]metav1alpha1.TableRow{{Cells: []interface{}{"cluster2", "Ready,NotOffline", "0s", "label1=,label2=cluster"}}},
|
|
||||||
true,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
for i, test := range tests {
|
|
||||||
rows, err := printCluster(&test.cluster, printers.PrintOptions{ShowLabels: test.showLabels})
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
for i := range rows {
|
|
||||||
rows[i].Object.Object = nil
|
|
||||||
}
|
|
||||||
if !reflect.DeepEqual(test.expect, rows) {
|
|
||||||
t.Errorf("%d mismatch: %s", i, diff.ObjectReflectDiff(test.expect, rows))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestPrintClusterList(t *testing.T) {
|
|
||||||
tests := []struct {
|
|
||||||
clusters federation.ClusterList
|
|
||||||
expect []metav1alpha1.TableRow
|
|
||||||
showLabels bool
|
|
||||||
}{
|
|
||||||
// Test podList's pod: name, num of containers, restarts, container ready status
|
|
||||||
{
|
|
||||||
federation.ClusterList{
|
|
||||||
Items: []federation.Cluster{
|
|
||||||
{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "cluster1",
|
|
||||||
CreationTimestamp: metav1.Time{Time: time.Now().Add(1.9e9)},
|
|
||||||
},
|
|
||||||
Status: federation.ClusterStatus{
|
|
||||||
Conditions: []federation.ClusterCondition{
|
|
||||||
{
|
|
||||||
Status: api.ConditionTrue,
|
|
||||||
Type: federation.ClusterReady,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "cluster2",
|
|
||||||
CreationTimestamp: metav1.Time{Time: time.Now().Add(1.9e9)},
|
|
||||||
Labels: map[string]string{"label1": "", "label2": "cluster2"},
|
|
||||||
},
|
|
||||||
Status: federation.ClusterStatus{
|
|
||||||
Conditions: []federation.ClusterCondition{
|
|
||||||
{
|
|
||||||
Status: api.ConditionTrue,
|
|
||||||
Type: federation.ClusterReady,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Status: api.ConditionFalse,
|
|
||||||
Type: federation.ClusterOffline,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
[]metav1alpha1.TableRow{{Cells: []interface{}{"cluster1", "Ready", "0s", "<none>"}},
|
|
||||||
{Cells: []interface{}{"cluster2", "Ready,NotOffline", "0s", "label1=,label2=cluster2"}}},
|
|
||||||
true,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, test := range tests {
|
|
||||||
rows, err := printClusterList(&test.clusters, printers.PrintOptions{ShowLabels: test.showLabels})
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
for i := range rows {
|
|
||||||
rows[i].Object.Object = nil
|
|
||||||
}
|
|
||||||
if !reflect.DeepEqual(test.expect, rows) {
|
|
||||||
t.Errorf("mismatch: %s", diff.ObjectReflectDiff(test.expect, rows))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -51,7 +51,6 @@ go_library(
|
||||||
],
|
],
|
||||||
importpath = "k8s.io/kubernetes/test/e2e",
|
importpath = "k8s.io/kubernetes/test/e2e",
|
||||||
deps = [
|
deps = [
|
||||||
"//federation/test/e2e:go_default_library",
|
|
||||||
"//pkg/api:go_default_library",
|
"//pkg/api:go_default_library",
|
||||||
"//pkg/api/testapi:go_default_library",
|
"//pkg/api/testapi:go_default_library",
|
||||||
"//pkg/api/v1/pod:go_default_library",
|
"//pkg/api/v1/pod:go_default_library",
|
||||||
|
|
|
@ -35,9 +35,8 @@ import (
|
||||||
type Suite string
|
type Suite string
|
||||||
|
|
||||||
const (
|
const (
|
||||||
E2E Suite = "e2e"
|
E2E Suite = "e2e"
|
||||||
NodeE2E Suite = "node e2e"
|
NodeE2E Suite = "node e2e"
|
||||||
FederationE2E Suite = "federation e2e"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|
|
@ -34,7 +34,6 @@ import (
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
runtimeutils "k8s.io/apimachinery/pkg/util/runtime"
|
runtimeutils "k8s.io/apimachinery/pkg/util/runtime"
|
||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
federationtest "k8s.io/kubernetes/federation/test/e2e"
|
|
||||||
"k8s.io/kubernetes/pkg/cloudprovider/providers/azure"
|
"k8s.io/kubernetes/pkg/cloudprovider/providers/azure"
|
||||||
gcecloud "k8s.io/kubernetes/pkg/cloudprovider/providers/gce"
|
gcecloud "k8s.io/kubernetes/pkg/cloudprovider/providers/gce"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/logs"
|
"k8s.io/kubernetes/pkg/kubectl/util/logs"
|
||||||
|
@ -161,7 +160,6 @@ var _ = ginkgo.SynchronizedBeforeSuite(func() []byte {
|
||||||
metav1.NamespaceSystem,
|
metav1.NamespaceSystem,
|
||||||
metav1.NamespaceDefault,
|
metav1.NamespaceDefault,
|
||||||
metav1.NamespacePublic,
|
metav1.NamespacePublic,
|
||||||
framework.FederationSystemNamespace(),
|
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
framework.Failf("Error deleting orphaned namespaces: %v", err)
|
framework.Failf("Error deleting orphaned namespaces: %v", err)
|
||||||
|
@ -239,9 +237,6 @@ var _ = ginkgo.SynchronizedBeforeSuite(func() []byte {
|
||||||
// Reference common test to make the import valid.
|
// Reference common test to make the import valid.
|
||||||
commontest.CurrentSuite = commontest.E2E
|
commontest.CurrentSuite = commontest.E2E
|
||||||
|
|
||||||
// Reference federation test to make the import valid.
|
|
||||||
federationtest.FederationSuite = commontest.FederationE2E
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
||||||
}, func(data []byte) {
|
}, func(data []byte) {
|
||||||
|
|
|
@ -12,7 +12,6 @@ go_library(
|
||||||
"cleanup.go",
|
"cleanup.go",
|
||||||
"deployment_util.go",
|
"deployment_util.go",
|
||||||
"exec_util.go",
|
"exec_util.go",
|
||||||
"federation_util.go",
|
|
||||||
"firewall_util.go",
|
"firewall_util.go",
|
||||||
"framework.go",
|
"framework.go",
|
||||||
"get-kubemark-resource-usage.go",
|
"get-kubemark-resource-usage.go",
|
||||||
|
@ -41,7 +40,6 @@ go_library(
|
||||||
],
|
],
|
||||||
importpath = "k8s.io/kubernetes/test/e2e/framework",
|
importpath = "k8s.io/kubernetes/test/e2e/framework",
|
||||||
deps = [
|
deps = [
|
||||||
"//federation/apis/federation/v1beta1:go_default_library",
|
|
||||||
"//pkg/api:go_default_library",
|
"//pkg/api:go_default_library",
|
||||||
"//pkg/api/legacyscheme:go_default_library",
|
"//pkg/api/legacyscheme:go_default_library",
|
||||||
"//pkg/api/testapi:go_default_library",
|
"//pkg/api/testapi:go_default_library",
|
||||||
|
|
|
@ -1,33 +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 framework
|
|
||||||
|
|
||||||
import (
|
|
||||||
"os"
|
|
||||||
|
|
||||||
federationapi "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
|
||||||
)
|
|
||||||
|
|
||||||
// FederationSystemNamespace returns the namespace in which
|
|
||||||
// the federation system components are hosted.
|
|
||||||
func FederationSystemNamespace() string {
|
|
||||||
federationNS := os.Getenv("FEDERATION_NAMESPACE")
|
|
||||||
if federationNS != "" {
|
|
||||||
return federationNS
|
|
||||||
}
|
|
||||||
return federationapi.FederationNamespaceSystem
|
|
||||||
}
|
|
|
@ -102,12 +102,6 @@ type TestContextType struct {
|
||||||
FeatureGates string
|
FeatureGates string
|
||||||
// Node e2e specific test context
|
// Node e2e specific test context
|
||||||
NodeTestContextType
|
NodeTestContextType
|
||||||
// Federation e2e context
|
|
||||||
FederatedKubeContext string
|
|
||||||
// Federation control plane version to upgrade to while doing upgrade tests
|
|
||||||
FederationUpgradeTarget string
|
|
||||||
// Whether configuration for accessing federation member clusters should be sourced from the host cluster
|
|
||||||
FederationConfigFromCluster bool
|
|
||||||
|
|
||||||
// Indicates what path the kubernetes-anywhere is installed on
|
// Indicates what path the kubernetes-anywhere is installed on
|
||||||
KubernetesAnywherePath string
|
KubernetesAnywherePath string
|
||||||
|
@ -217,8 +211,6 @@ func RegisterClusterFlags() {
|
||||||
flag.StringVar(&TestContext.KubemarkExternalKubeConfig, fmt.Sprintf("%s-%s", "kubemark-external", clientcmd.RecommendedConfigPathFlag), "", "Path to kubeconfig containing embedded authinfo for external cluster.")
|
flag.StringVar(&TestContext.KubemarkExternalKubeConfig, fmt.Sprintf("%s-%s", "kubemark-external", clientcmd.RecommendedConfigPathFlag), "", "Path to kubeconfig containing embedded authinfo for external cluster.")
|
||||||
flag.StringVar(&TestContext.KubeContext, clientcmd.FlagContext, "", "kubeconfig context to use/override. If unset, will use value from 'current-context'")
|
flag.StringVar(&TestContext.KubeContext, clientcmd.FlagContext, "", "kubeconfig context to use/override. If unset, will use value from 'current-context'")
|
||||||
flag.StringVar(&TestContext.KubeAPIContentType, "kube-api-content-type", "application/vnd.kubernetes.protobuf", "ContentType used to communicate with apiserver")
|
flag.StringVar(&TestContext.KubeAPIContentType, "kube-api-content-type", "application/vnd.kubernetes.protobuf", "ContentType used to communicate with apiserver")
|
||||||
flag.StringVar(&TestContext.FederatedKubeContext, "federated-kube-context", "e2e-federation", "kubeconfig context for federation.")
|
|
||||||
flag.BoolVar(&TestContext.FederationConfigFromCluster, "federation-config-from-cluster", false, "whether to source configuration for member clusters from the hosting cluster.")
|
|
||||||
|
|
||||||
flag.StringVar(&TestContext.KubeVolumeDir, "volume-dir", "/var/lib/kubelet", "Path to the directory containing the kubelet volumes.")
|
flag.StringVar(&TestContext.KubeVolumeDir, "volume-dir", "/var/lib/kubelet", "Path to the directory containing the kubelet volumes.")
|
||||||
flag.StringVar(&TestContext.CertDir, "cert-dir", "", "Path to the directory containing the certs. Default is empty, which doesn't use certs.")
|
flag.StringVar(&TestContext.CertDir, "cert-dir", "", "Path to the directory containing the certs. Default is empty, which doesn't use certs.")
|
||||||
|
@ -256,7 +248,6 @@ func RegisterClusterFlags() {
|
||||||
flag.StringVar(&TestContext.EtcdUpgradeVersion, "etcd-upgrade-version", "", "The etcd binary version to upgrade to (e.g., '3.0.14', '2.3.7') if doing an etcd upgrade test.")
|
flag.StringVar(&TestContext.EtcdUpgradeVersion, "etcd-upgrade-version", "", "The etcd binary version to upgrade to (e.g., '3.0.14', '2.3.7') if doing an etcd upgrade test.")
|
||||||
flag.StringVar(&TestContext.UpgradeImage, "upgrade-image", "", "Image to upgrade to (e.g. 'container_vm' or 'gci') if doing an upgrade test.")
|
flag.StringVar(&TestContext.UpgradeImage, "upgrade-image", "", "Image to upgrade to (e.g. 'container_vm' or 'gci') if doing an upgrade test.")
|
||||||
flag.StringVar(&TestContext.GCEUpgradeScript, "gce-upgrade-script", "", "Script to use to upgrade a GCE cluster.")
|
flag.StringVar(&TestContext.GCEUpgradeScript, "gce-upgrade-script", "", "Script to use to upgrade a GCE cluster.")
|
||||||
flag.StringVar(&TestContext.FederationUpgradeTarget, "federation-upgrade-target", "ci/latest", "Version to upgrade to (e.g. 'release/stable', 'release/latest', 'ci/latest', '0.19.1', '0.19.1-669-gabac8c8') if doing an federation upgrade test.")
|
|
||||||
flag.BoolVar(&TestContext.CleanStart, "clean-start", false, "If true, purge all namespaces except default and system before running tests. This serves to Cleanup test namespaces from failed/interrupted e2e runs in a long-lived cluster.")
|
flag.BoolVar(&TestContext.CleanStart, "clean-start", false, "If true, purge all namespaces except default and system before running tests. This serves to Cleanup test namespaces from failed/interrupted e2e runs in a long-lived cluster.")
|
||||||
flag.BoolVar(&TestContext.GarbageCollectorEnabled, "garbage-collector-enabled", true, "Set to true if the garbage collector is enabled in the kube-apiserver and kube-controller-manager, then some tests will rely on the garbage collector to delete dependent resources.")
|
flag.BoolVar(&TestContext.GarbageCollectorEnabled, "garbage-collector-enabled", true, "Set to true if the garbage collector is enabled in the kube-apiserver and kube-controller-manager, then some tests will rely on the garbage collector to delete dependent resources.")
|
||||||
}
|
}
|
||||||
|
|
|
@ -378,9 +378,6 @@ var etcdStorageData = map[schema.GroupVersionResource]struct {
|
||||||
// Be very careful when whitelisting an object as ephemeral.
|
// Be very careful when whitelisting an object as ephemeral.
|
||||||
// Doing so removes the safety we gain from this test by skipping that object.
|
// Doing so removes the safety we gain from this test by skipping that object.
|
||||||
var ephemeralWhiteList = createEphemeralWhiteList(
|
var ephemeralWhiteList = createEphemeralWhiteList(
|
||||||
// k8s.io/kubernetes/federation/apis/federation/v1beta1
|
|
||||||
gvr("federation", "v1beta1", "clusters"), // we cannot create this
|
|
||||||
// --
|
|
||||||
|
|
||||||
// k8s.io/kubernetes/pkg/api/v1
|
// k8s.io/kubernetes/pkg/api/v1
|
||||||
gvr("", "v1", "bindings"), // annotation on pod, not stored in etcd
|
gvr("", "v1", "bindings"), // annotation on pod, not stored in etcd
|
||||||
|
|
|
@ -145,48 +145,6 @@ EmptyDir wrapper volumes should not conflict,deads2k,1,node
|
||||||
Etcd failure should recover from SIGKILL,pmorie,1,api-machinery
|
Etcd failure should recover from SIGKILL,pmorie,1,api-machinery
|
||||||
Etcd failure should recover from network partition with master,justinsb,1,api-machinery
|
Etcd failure should recover from network partition with master,justinsb,1,api-machinery
|
||||||
Events should be sent by kubelets and the scheduler about pods scheduling and running,zmerlynn,1,node
|
Events should be sent by kubelets and the scheduler about pods scheduling and running,zmerlynn,1,node
|
||||||
Federated ReplicaSet Features CRUD should be deleted from underlying clusters when OrphanDependents is false,perotinus,0,federation
|
|
||||||
Federated ReplicaSet Features CRUD should create and update matching replicasets in underlying clusters,perotinus,0,federation
|
|
||||||
Federated ReplicaSet Features CRUD should not be deleted from underlying clusters when OrphanDependents is nil,perotinus,0,federation
|
|
||||||
Federated ReplicaSet Features CRUD should not be deleted from underlying clusters when OrphanDependents is true,perotinus,0,federation
|
|
||||||
Federated ReplicaSet Features Preferences should create replicasets with max replicas preference,perotinus,0,federation
|
|
||||||
Federated ReplicaSet Features Preferences should create replicasets with min replicas preference,perotinus,0,federation
|
|
||||||
Federated ReplicaSet Features Preferences should create replicasets with weight preference,perotinus,0,federation
|
|
||||||
Federated ReplicaSet ReplicaSet objects should be created and deleted successfully,perotinus,0,federation
|
|
||||||
Federated Services Without Clusters should succeed when a service is created,shashidharatd,0,federation
|
|
||||||
Federated Services with clusters DNS non-local federated service missing local service should never find DNS entries for a missing local service,shashidharatd,0,federation
|
|
||||||
Federated Services with clusters DNS should be able to discover a federated service,shashidharatd,0,federation
|
|
||||||
Federated Services with clusters Federated Service should be deleted from underlying clusters when OrphanDependents is false,shashidharatd,0,federation
|
|
||||||
Federated Services with clusters Federated Service should create and update matching services in underlying clusters,shashidharatd,0,federation
|
|
||||||
Federated Services with clusters Federated Service should not be deleted from underlying clusters when OrphanDependents is nil,shashidharatd,0,federation
|
|
||||||
Federated Services with clusters Federated Service should not be deleted from underlying clusters when OrphanDependents is true,shashidharatd,0,federation
|
|
||||||
Federated Services with clusters Federated Service should recreate service shard in underlying clusters when service shard is deleted,shashidharatd,0,federation
|
|
||||||
Federated ingresses Federated Ingresses should be created and deleted successfully,madhusudancs,0,federation
|
|
||||||
Federated ingresses Federated Ingresses should be deleted from underlying clusters when OrphanDependents is false,madhusudancs,0,federation
|
|
||||||
Federated ingresses Federated Ingresses should create and update matching ingresses in underlying clusters,madhusudancs,0,federation
|
|
||||||
Federated ingresses Federated Ingresses should not be deleted from underlying clusters when OrphanDependents is nil,madhusudancs,0,federation
|
|
||||||
Federated ingresses Federated Ingresses should not be deleted from underlying clusters when OrphanDependents is true,madhusudancs,0,federation
|
|
||||||
"Federated types Federated %q resources should be created, read, updated and deleted successfully",marun,0,federation
|
|
||||||
Federation API server authentication should accept cluster resources when the client has HTTP Basic authentication credentials,nikhiljindal,0,federation
|
|
||||||
Federation API server authentication should accept cluster resources when the client has certificate authentication credentials,nikhiljindal,0,federation
|
|
||||||
Federation API server authentication should accept cluster resources when the client has token authentication credentials,nikhiljindal,0,federation
|
|
||||||
Federation API server authentication should not accept cluster resources when the client has invalid HTTP Basic authentication credentials,nikhiljindal,0,federation
|
|
||||||
Federation API server authentication should not accept cluster resources when the client has invalid token authentication credentials,nikhiljindal,0,federation
|
|
||||||
Federation API server authentication should not accept cluster resources when the client has no authentication credentials,nikhiljindal,0,federation
|
|
||||||
Federation apiserver Admission control should not be able to create resources if namespace does not exist,nikhiljindal,0,federation
|
|
||||||
Federation apiserver Cluster objects should be created and deleted successfully,nikhiljindal,0,federation
|
|
||||||
Federation deployments Deployment objects should be created and deleted successfully,nikhiljindal,0,federation
|
|
||||||
Federation deployments Federated Deployment should be deleted from underlying clusters when OrphanDependents is false,nikhiljindal,0,federation
|
|
||||||
Federation deployments Federated Deployment should create and update matching deployments in underlying clusters,nikhiljindal,0,federation
|
|
||||||
Federation deployments Federated Deployment should not be deleted from underlying clusters when OrphanDependents is nil,nikhiljindal,0,federation
|
|
||||||
Federation deployments Federated Deployment should not be deleted from underlying clusters when OrphanDependents is true,nikhiljindal,0,federation
|
|
||||||
Federation events Event objects should be created and deleted successfully,shashidharatd,0,federation
|
|
||||||
Federation namespace Namespace objects all resources in the namespace should be deleted when namespace is deleted,nikhiljindal,0,federation
|
|
||||||
Federation namespace Namespace objects deletes replicasets in the namespace when the namespace is deleted,nikhiljindal,0,federation
|
|
||||||
Federation namespace Namespace objects should be created and deleted successfully,nikhiljindal,0,federation
|
|
||||||
Federation namespace Namespace objects should be deleted from underlying clusters when OrphanDependents is false,nikhiljindal,0,federation
|
|
||||||
Federation namespace Namespace objects should not be deleted from underlying clusters when OrphanDependents is nil,nikhiljindal,0,federation
|
|
||||||
Federation namespace Namespace objects should not be deleted from underlying clusters when OrphanDependents is true,nikhiljindal,0,federation
|
|
||||||
Firewall rule should create valid firewall rules for LoadBalancer type service,MrHohn,0,network
|
Firewall rule should create valid firewall rules for LoadBalancer type service,MrHohn,0,network
|
||||||
Firewall rule should have correct firewall rules for e2e cluster,MrHohn,0,network
|
Firewall rule should have correct firewall rules for e2e cluster,MrHohn,0,network
|
||||||
GCP Volumes GlusterFS should be mountable,nikhiljindal,0,storage
|
GCP Volumes GlusterFS should be mountable,nikhiljindal,0,storage
|
||||||
|
@ -587,27 +545,6 @@ k8s.io/kubernetes/cmd/libs/go2idl/client-gen/types,caesarxuchao,0,
|
||||||
k8s.io/kubernetes/cmd/libs/go2idl/go-to-protobuf/protobuf,smarterclayton,0,
|
k8s.io/kubernetes/cmd/libs/go2idl/go-to-protobuf/protobuf,smarterclayton,0,
|
||||||
k8s.io/kubernetes/cmd/libs/go2idl/openapi-gen/generators,davidopp,1,
|
k8s.io/kubernetes/cmd/libs/go2idl/openapi-gen/generators,davidopp,1,
|
||||||
k8s.io/kubernetes/examples,Random-Liu,0,
|
k8s.io/kubernetes/examples,Random-Liu,0,
|
||||||
k8s.io/kubernetes/federation/apis/federation/install,nikhiljindal,0,
|
|
||||||
k8s.io/kubernetes/federation/apis/federation/validation,nikhiljindal,0,
|
|
||||||
k8s.io/kubernetes/federation/cmd/federation-controller-manager/app,kzwang,0,
|
|
||||||
k8s.io/kubernetes/federation/pkg/dnsprovider,sttts,1,
|
|
||||||
k8s.io/kubernetes/federation/pkg/dnsprovider/providers/aws/route53,cjcullen,1,
|
|
||||||
k8s.io/kubernetes/federation/pkg/dnsprovider/providers/coredns,brendandburns,0,
|
|
||||||
k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns,madhusudancs,1,
|
|
||||||
k8s.io/kubernetes/federation/pkg/federation-controller/cluster,nikhiljindal,0,
|
|
||||||
k8s.io/kubernetes/federation/pkg/federation-controller/deployment,zmerlynn,1,
|
|
||||||
k8s.io/kubernetes/federation/pkg/federation-controller/ingress,vishh,1,
|
|
||||||
k8s.io/kubernetes/federation/pkg/federation-controller/replicaset,roberthbailey,1,
|
|
||||||
k8s.io/kubernetes/federation/pkg/federation-controller/secret,apelisse,1,
|
|
||||||
k8s.io/kubernetes/federation/pkg/federation-controller/service,pmorie,1,
|
|
||||||
k8s.io/kubernetes/federation/pkg/federation-controller/util,bgrant0607,1,
|
|
||||||
k8s.io/kubernetes/federation/pkg/federation-controller/util/eventsink,luxas,1,
|
|
||||||
k8s.io/kubernetes/federation/pkg/federation-controller/util/planner,Q-Lee,1,
|
|
||||||
k8s.io/kubernetes/federation/pkg/federation-controller/util/podanalyzer,caesarxuchao,1,
|
|
||||||
k8s.io/kubernetes/federation/pkg/kubefed,madhusudancs,0,
|
|
||||||
k8s.io/kubernetes/federation/pkg/kubefed/init,madhusudancs,0,
|
|
||||||
k8s.io/kubernetes/federation/registry/cluster,nikhiljindal,0,
|
|
||||||
k8s.io/kubernetes/federation/registry/cluster/etcd,nikhiljindal,0,
|
|
||||||
k8s.io/kubernetes/hack,thockin,1,
|
k8s.io/kubernetes/hack,thockin,1,
|
||||||
k8s.io/kubernetes/hack/cmd/teststale,thockin,1,
|
k8s.io/kubernetes/hack/cmd/teststale,thockin,1,
|
||||||
k8s.io/kubernetes/pkg/api,Q-Lee,1,
|
k8s.io/kubernetes/pkg/api,Q-Lee,1,
|
||||||
|
@ -944,7 +881,6 @@ k8s.io/kubernetes/test/integration/client,Q-Lee,1,
|
||||||
k8s.io/kubernetes/test/integration/configmap,Q-Lee,1,
|
k8s.io/kubernetes/test/integration/configmap,Q-Lee,1,
|
||||||
k8s.io/kubernetes/test/integration/evictions,brendandburns,0,
|
k8s.io/kubernetes/test/integration/evictions,brendandburns,0,
|
||||||
k8s.io/kubernetes/test/integration/examples,maisem,1,
|
k8s.io/kubernetes/test/integration/examples,maisem,1,
|
||||||
k8s.io/kubernetes/test/integration/federation,rrati,0,
|
|
||||||
k8s.io/kubernetes/test/integration/garbagecollector,jlowdermilk,1,
|
k8s.io/kubernetes/test/integration/garbagecollector,jlowdermilk,1,
|
||||||
k8s.io/kubernetes/test/integration/kubeaggregator,deads2k,1,
|
k8s.io/kubernetes/test/integration/kubeaggregator,deads2k,1,
|
||||||
k8s.io/kubernetes/test/integration/kubectl,rrati,0,
|
k8s.io/kubernetes/test/integration/kubectl,rrati,0,
|
||||||
|
|
|
|
@ -1,122 +1,118 @@
|
||||||
{
|
{
|
||||||
"api-machinery": [
|
"api-machinery": [
|
||||||
"Etcd",
|
"Etcd",
|
||||||
"Generated",
|
"Generated",
|
||||||
"HA-master",
|
"HA-master",
|
||||||
"Multi-AZ",
|
"Multi-AZ",
|
||||||
"Namespaces",
|
"Namespaces",
|
||||||
"ResourceQuota",
|
"ResourceQuota",
|
||||||
"Staging",
|
"Staging",
|
||||||
"Summary",
|
"Summary",
|
||||||
"ThirdParty"
|
"ThirdParty"
|
||||||
],
|
],
|
||||||
"apps": [
|
"apps": [
|
||||||
"Cassandra",
|
"Cassandra",
|
||||||
"ConfigMap",
|
"ConfigMap",
|
||||||
"CronJob",
|
"CronJob",
|
||||||
"Daemon",
|
"Daemon",
|
||||||
"Deployment",
|
"Deployment",
|
||||||
"Job",
|
"Job",
|
||||||
"Mesos",
|
"Mesos",
|
||||||
"Pet",
|
"Pet",
|
||||||
"Redis",
|
"Redis",
|
||||||
"ReplicaSet",
|
"ReplicaSet",
|
||||||
"ReplicationController",
|
"ReplicationController",
|
||||||
"Rescheduler",
|
"Rescheduler",
|
||||||
"RethinkDB",
|
"RethinkDB",
|
||||||
"Secret",
|
"Secret",
|
||||||
"Security",
|
"Security",
|
||||||
"Spark",
|
"Spark",
|
||||||
"StatefulSet",
|
"StatefulSet",
|
||||||
"Storm"
|
"Storm"
|
||||||
],
|
],
|
||||||
"autoscaling": [
|
"autoscaling": [
|
||||||
"Cluster size",
|
"Cluster size",
|
||||||
"Horizontal"
|
"Horizontal"
|
||||||
],
|
],
|
||||||
"big-data": [
|
"big-data": [
|
||||||
"Hazelcast"
|
"Hazelcast"
|
||||||
],
|
],
|
||||||
"cli": [
|
"cli": [
|
||||||
"Kubectl"
|
"Kubectl"
|
||||||
],
|
],
|
||||||
"cluster-lifecycle": [
|
"cluster-lifecycle": [
|
||||||
"GKE node",
|
"GKE node",
|
||||||
"Garbage",
|
"Garbage",
|
||||||
"Nodes",
|
"Nodes",
|
||||||
"Upgrade"
|
"Upgrade"
|
||||||
],
|
],
|
||||||
"federation": [
|
|
||||||
"Federated",
|
|
||||||
"Federation"
|
|
||||||
],
|
|
||||||
"instrumentation": [
|
"instrumentation": [
|
||||||
"Cluster level",
|
"Cluster level",
|
||||||
"Kibana",
|
"Kibana",
|
||||||
"MetricsGrabber",
|
"MetricsGrabber",
|
||||||
"Monitoring"
|
"Monitoring"
|
||||||
],
|
],
|
||||||
"network": [
|
"network": [
|
||||||
"ClusterDns",
|
"ClusterDns",
|
||||||
"DNS",
|
"DNS",
|
||||||
"ESIPP",
|
"ESIPP",
|
||||||
"Firewall",
|
"Firewall",
|
||||||
"Load",
|
"Load",
|
||||||
"Network",
|
"Network",
|
||||||
"Service"
|
"Service"
|
||||||
],
|
],
|
||||||
"node": [
|
"node": [
|
||||||
"AppArmor",
|
"AppArmor",
|
||||||
"Cadvisor",
|
"Cadvisor",
|
||||||
"Container",
|
"Container",
|
||||||
"Docker",
|
"Docker",
|
||||||
"Downward",
|
"Downward",
|
||||||
"EmptyDir",
|
"EmptyDir",
|
||||||
"Events",
|
"Events",
|
||||||
"HostPath",
|
"HostPath",
|
||||||
"ImageID",
|
"ImageID",
|
||||||
"InitContainer",
|
"InitContainer",
|
||||||
"Initial",
|
"Initial",
|
||||||
"Kubelet",
|
"Kubelet",
|
||||||
"LimitRange",
|
"LimitRange",
|
||||||
"Liveness",
|
"Liveness",
|
||||||
"Logging",
|
"Logging",
|
||||||
"MemoryEviction",
|
"MemoryEviction",
|
||||||
"MirrorPod",
|
"MirrorPod",
|
||||||
"NodeProblemDetector",
|
"NodeProblemDetector",
|
||||||
"Opaque",
|
"Opaque",
|
||||||
"Pod garbage",
|
"Pod garbage",
|
||||||
"Pods",
|
"Pods",
|
||||||
"Port",
|
"Port",
|
||||||
"PreStop",
|
"PreStop",
|
||||||
"PrivilegedPod",
|
"PrivilegedPod",
|
||||||
"Probing",
|
"Probing",
|
||||||
"Proxy",
|
"Proxy",
|
||||||
"Reboot",
|
"Reboot",
|
||||||
"Restart",
|
"Restart",
|
||||||
"SimpleMount",
|
"SimpleMount",
|
||||||
"Sysctls",
|
"Sysctls",
|
||||||
"Variable",
|
"Variable",
|
||||||
"kubelet",
|
"kubelet",
|
||||||
"when"
|
"when"
|
||||||
],
|
],
|
||||||
"scalability": [
|
"scalability": [
|
||||||
"Density"
|
"Density"
|
||||||
],
|
],
|
||||||
"scheduling": [
|
"scheduling": [
|
||||||
"DisruptionController",
|
"DisruptionController",
|
||||||
"NoExecuteTaintManager",
|
"NoExecuteTaintManager",
|
||||||
"SchedulerPredicates"
|
"SchedulerPredicates"
|
||||||
],
|
],
|
||||||
"storage": [
|
"storage": [
|
||||||
"Dynamic",
|
"Dynamic",
|
||||||
"GCP",
|
"GCP",
|
||||||
"GKE local",
|
"GKE local",
|
||||||
"PersistentVolumes",
|
"PersistentVolumes",
|
||||||
"Pod Disks",
|
"Pod Disks",
|
||||||
"Projected",
|
"Projected",
|
||||||
"Volume"
|
"Volume"
|
||||||
],
|
],
|
||||||
"ui": [
|
"ui": [
|
||||||
"Kubernetes"
|
"Kubernetes"
|
||||||
]
|
]
|
||||||
|
|
Loading…
Reference in New Issue