mirror of
https://github.com/ceph/ceph-csi.git
synced 2025-06-14 02:43:36 +00:00
vendor files
This commit is contained in:
349
vendor/k8s.io/kubernetes/build/visible_to/BUILD
generated
vendored
Normal file
349
vendor/k8s.io/kubernetes/build/visible_to/BUILD
generated
vendored
Normal file
@ -0,0 +1,349 @@
|
||||
# Package groups defined for use in kubernetes visibility rules.
|
||||
#
|
||||
# See associated README.md for explanation.
|
||||
#
|
||||
# Style suggestions:
|
||||
#
|
||||
# - Sort package group definitions by name.
|
||||
#
|
||||
# - Prefer obvious package group names.
|
||||
#
|
||||
# E.g "pkg_kubectl_cmd_util_CONSUMERS" names a group
|
||||
# of packages allowed to depend on (consume) the
|
||||
# //pkg/kubectl/cmd/util package.
|
||||
#
|
||||
#
|
||||
# - A group name ending in _BAD wants to be deleted.
|
||||
#
|
||||
# Such a group wants to contract, rather than expand.
|
||||
# It likely exists to permit a legacy unintentional
|
||||
# dependency that requires more work to remove.
|
||||
#
|
||||
# - Prefer defining new groups to expanding groups.
|
||||
#
|
||||
# The former permits tight targeting, the latter can
|
||||
# allow unnecessary visibility and thus bad deps.
|
||||
#
|
||||
|
||||
package_group(
|
||||
name = "COMMON_generators",
|
||||
packages = [
|
||||
"//cmd/gendocs",
|
||||
"//cmd/genman",
|
||||
"//cmd/genyaml",
|
||||
],
|
||||
)
|
||||
|
||||
package_group(
|
||||
name = "COMMON_testing",
|
||||
packages = [
|
||||
"//hack",
|
||||
"//hack/lib",
|
||||
"//hack/make-rules",
|
||||
"//test/e2e",
|
||||
"//test/e2e/framework",
|
||||
"//test/e2e/kubectl",
|
||||
"//test/e2e/workload",
|
||||
"//test/integration/etcd",
|
||||
"//test/integration/framework",
|
||||
"//test/integration/kubectl",
|
||||
],
|
||||
)
|
||||
|
||||
package_group(
|
||||
name = "cluster",
|
||||
packages = [
|
||||
"//cluster/...",
|
||||
],
|
||||
)
|
||||
|
||||
package_group(
|
||||
name = "KUBEADM_BAD",
|
||||
packages = [
|
||||
"//cmd/kubeadm/app/cmd",
|
||||
],
|
||||
)
|
||||
|
||||
package_group(
|
||||
name = "cmd_kubectl_CONSUMERS",
|
||||
packages = [
|
||||
"//cmd",
|
||||
],
|
||||
)
|
||||
|
||||
package_group(
|
||||
name = "cmd_kubectl_app_CONSUMERS",
|
||||
packages = [
|
||||
"//cmd/kubectl",
|
||||
],
|
||||
)
|
||||
|
||||
package_group(
|
||||
name = "pkg_kubectl_CONSUMERS_BAD",
|
||||
includes = [
|
||||
":KUBEADM_BAD",
|
||||
],
|
||||
packages = [
|
||||
"//cmd/clicheck",
|
||||
"//cmd/hyperkube",
|
||||
"//pkg",
|
||||
],
|
||||
)
|
||||
|
||||
package_group(
|
||||
name = "pkg_kubectl_CONSUMERS",
|
||||
includes = [
|
||||
":COMMON_generators",
|
||||
":pkg_kubectl_CONSUMERS_BAD",
|
||||
],
|
||||
packages = [
|
||||
"//cmd/kubectl",
|
||||
"//cmd/kubectl/app",
|
||||
"//pkg/kubectl/cmd",
|
||||
"//pkg/kubectl/cmd/auth",
|
||||
"//pkg/kubectl/cmd/config",
|
||||
"//pkg/kubectl/cmd/rollout",
|
||||
"//pkg/kubectl/cmd/set",
|
||||
"//pkg/kubectl/cmd/testing",
|
||||
"//pkg/kubectl/cmd/util",
|
||||
"//pkg/kubectl/cmd/util/editor",
|
||||
],
|
||||
)
|
||||
|
||||
package_group(
|
||||
name = "pkg_kubectl_cmd_CONSUMERS_BAD",
|
||||
packages = [
|
||||
"//cmd/clicheck",
|
||||
"//cmd/hyperkube",
|
||||
],
|
||||
)
|
||||
|
||||
package_group(
|
||||
name = "pkg_kubectl_cmd_CONSUMERS",
|
||||
includes = [
|
||||
":COMMON_generators",
|
||||
":pkg_kubectl_cmd_CONSUMERS_BAD",
|
||||
],
|
||||
packages = [
|
||||
"//cmd/kubectl",
|
||||
"//cmd/kubectl/app",
|
||||
"//pkg/kubectl",
|
||||
"//pkg/kubectl/cmd",
|
||||
],
|
||||
)
|
||||
|
||||
package_group(
|
||||
name = "pkg_kubectl_cmd_auth_CONSUMERS",
|
||||
packages = [
|
||||
"//pkg/kubectl/cmd",
|
||||
"//pkg/kubectl/cmd/rollout",
|
||||
],
|
||||
)
|
||||
|
||||
package_group(
|
||||
name = "pkg_kubectl_cmd_config_CONSUMERS",
|
||||
packages = [
|
||||
"//pkg/kubectl/cmd",
|
||||
],
|
||||
)
|
||||
|
||||
package_group(
|
||||
name = "pkg_kubectl_cmd_rollout_CONSUMERS",
|
||||
packages = [
|
||||
"//pkg/kubectl/cmd",
|
||||
],
|
||||
)
|
||||
|
||||
package_group(
|
||||
name = "pkg_kubectl_cmd_set_CONSUMERS",
|
||||
packages = [
|
||||
"//pkg/kubectl/cmd",
|
||||
"//pkg/kubectl/cmd/rollout",
|
||||
],
|
||||
)
|
||||
|
||||
package_group(
|
||||
name = "pkg_kubectl_cmd_templates_CONSUMERS",
|
||||
includes = [
|
||||
":COMMON_generators",
|
||||
":COMMON_testing",
|
||||
],
|
||||
packages = [
|
||||
"//cmd/kubectl",
|
||||
"//cmd/kubectl/app",
|
||||
"//pkg/kubectl/cmd",
|
||||
"//pkg/kubectl/cmd/auth",
|
||||
"//pkg/kubectl/cmd/config",
|
||||
"//pkg/kubectl/cmd/resource",
|
||||
"//pkg/kubectl/cmd/rollout",
|
||||
"//pkg/kubectl/cmd/set",
|
||||
"//pkg/kubectl/cmd/templates",
|
||||
"//pkg/kubectl/cmd/util",
|
||||
"//pkg/kubectl/cmd/util/sanity",
|
||||
],
|
||||
)
|
||||
|
||||
package_group(
|
||||
name = "pkg_kubectl_cmd_testdata_edit_CONSUMERS",
|
||||
packages = [
|
||||
"//pkg/kubectl/cmd",
|
||||
],
|
||||
)
|
||||
|
||||
package_group(
|
||||
name = "pkg_kubectl_cmd_testing_CONSUMERS",
|
||||
packages = [
|
||||
"//pkg/kubectl/cmd",
|
||||
"//pkg/kubectl/cmd/auth",
|
||||
"//pkg/kubectl/cmd/resource",
|
||||
"//pkg/kubectl/cmd/set",
|
||||
"//pkg/kubectl/explain",
|
||||
],
|
||||
)
|
||||
|
||||
package_group(
|
||||
name = "pkg_kubectl_cmd_util_CONSUMERS_BAD",
|
||||
includes = [
|
||||
":KUBEADM_BAD",
|
||||
],
|
||||
packages = [
|
||||
"//cmd/clicheck",
|
||||
"//cmd/hyperkube",
|
||||
"//cmd/kube-proxy/app",
|
||||
"//plugin/cmd/kube-scheduler/app",
|
||||
],
|
||||
)
|
||||
|
||||
package_group(
|
||||
name = "pkg_kubectl_cmd_util_CONSUMERS",
|
||||
includes = [
|
||||
":COMMON_generators",
|
||||
":COMMON_testing",
|
||||
":pkg_kubectl_cmd_util_CONSUMERS_BAD",
|
||||
],
|
||||
packages = [
|
||||
"//cmd/kubectl",
|
||||
"//cmd/kubectl/app",
|
||||
"//pkg/kubectl/cmd",
|
||||
"//pkg/kubectl/cmd/auth",
|
||||
"//pkg/kubectl/cmd/config",
|
||||
"//pkg/kubectl/cmd/resource",
|
||||
"//pkg/kubectl/cmd/rollout",
|
||||
"//pkg/kubectl/cmd/set",
|
||||
"//pkg/kubectl/cmd/testing",
|
||||
"//pkg/kubectl/cmd/util",
|
||||
"//pkg/kubectl/cmd/util/editor",
|
||||
],
|
||||
)
|
||||
|
||||
package_group(
|
||||
name = "pkg_kubectl_cmd_util_editor_CONSUMERS",
|
||||
packages = [
|
||||
"//pkg/kubectl/cmd",
|
||||
"//pkg/kubectl/cmd/util",
|
||||
],
|
||||
)
|
||||
|
||||
package_group(
|
||||
name = "pkg_kubectl_cmd_util_jsonmerge_CONSUMERS",
|
||||
packages = [
|
||||
"//pkg/kubectl/cmd",
|
||||
"//pkg/kubectl/cmd/util",
|
||||
],
|
||||
)
|
||||
|
||||
package_group(
|
||||
name = "pkg_kubectl_cmd_util_sanity_CONSUMERS",
|
||||
packages = [
|
||||
"//cmd/clicheck",
|
||||
"//pkg/kubectl/cmd/util",
|
||||
],
|
||||
)
|
||||
|
||||
package_group(
|
||||
name = "pkg_kubectl_metricsutil_CONSUMERS_BAD",
|
||||
packages = [
|
||||
"//cmd/clicheck",
|
||||
"//cmd/hyperkube",
|
||||
],
|
||||
)
|
||||
|
||||
package_group(
|
||||
name = "pkg_kubectl_metricsutil_CONSUMERS",
|
||||
includes = [
|
||||
":COMMON_generators",
|
||||
":pkg_kubectl_metricsutil_CONSUMERS_BAD",
|
||||
],
|
||||
packages = [
|
||||
"//cmd/kubectl",
|
||||
"//cmd/kubectl/app",
|
||||
"//pkg/kubectl",
|
||||
"//pkg/kubectl/cmd",
|
||||
],
|
||||
)
|
||||
|
||||
package_group(
|
||||
name = "pkg_kubectl_resource_CONSUMERS",
|
||||
includes = [
|
||||
":COMMON_generators",
|
||||
":COMMON_testing",
|
||||
],
|
||||
packages = [
|
||||
"//cmd/kubectl",
|
||||
"//cmd/kubectl/app",
|
||||
"//pkg/kubectl",
|
||||
"//pkg/kubectl/cmd",
|
||||
"//pkg/kubectl/cmd/auth",
|
||||
"//pkg/kubectl/cmd/config",
|
||||
"//pkg/kubectl/cmd/resource",
|
||||
"//pkg/kubectl/cmd/rollout",
|
||||
"//pkg/kubectl/cmd/set",
|
||||
"//pkg/kubectl/cmd/testing",
|
||||
"//pkg/kubectl/cmd/util",
|
||||
"//pkg/kubectl/cmd/util/editor",
|
||||
],
|
||||
)
|
||||
|
||||
package_group(
|
||||
name = "pkg_kubectl_testing_CONSUMERS",
|
||||
packages = [
|
||||
"//pkg/kubectl",
|
||||
"//pkg/printers/internalversion",
|
||||
],
|
||||
)
|
||||
|
||||
package_group(
|
||||
name = "pkg_kubectl_util_CONSUMERS",
|
||||
packages = [
|
||||
"//pkg/kubectl",
|
||||
"//pkg/kubectl/cmd",
|
||||
"//pkg/kubectl/proxy",
|
||||
],
|
||||
)
|
||||
|
||||
package_group(
|
||||
name = "pkg_kubectl_validation_CONSUMERS",
|
||||
packages = [
|
||||
"//pkg/kubectl",
|
||||
"//pkg/kubectl/cmd/testing",
|
||||
"//pkg/kubectl/cmd/util",
|
||||
"//pkg/kubectl/resource",
|
||||
],
|
||||
)
|
||||
|
||||
# Added by ./hack/verify-bazel.sh; should be excluded from
|
||||
# that script since it makes no sense here.
|
||||
filegroup(
|
||||
name = "package-srcs",
|
||||
srcs = glob(["**"]),
|
||||
tags = ["automanaged"],
|
||||
)
|
||||
|
||||
# Added by ./hack/verify-bazel.sh; should be excluded from
|
||||
# that script since it makes no sense here.
|
||||
filegroup(
|
||||
name = "all-srcs",
|
||||
srcs = [":package-srcs"],
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
24
vendor/k8s.io/kubernetes/build/visible_to/OWNERS
generated
vendored
Normal file
24
vendor/k8s.io/kubernetes/build/visible_to/OWNERS
generated
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
reviewers:
|
||||
- brendandburns
|
||||
- dchen1107
|
||||
- ixdy
|
||||
- jbeda
|
||||
- lavalamp
|
||||
- mikedanese
|
||||
- monopole
|
||||
- pwittrock
|
||||
- smarterclayton
|
||||
- thockin
|
||||
approvers:
|
||||
- bgrant0607
|
||||
- brendandburns
|
||||
- dchen1107
|
||||
- ixdy
|
||||
- jbeda
|
||||
- lavalamp
|
||||
- mikedanese
|
||||
- monopole
|
||||
- pwittrock
|
||||
- smarterclayton
|
||||
- thockin
|
||||
- wojtek-t
|
184
vendor/k8s.io/kubernetes/build/visible_to/README.md
generated
vendored
Normal file
184
vendor/k8s.io/kubernetes/build/visible_to/README.md
generated
vendored
Normal file
@ -0,0 +1,184 @@
|
||||
# Package Groups Used in Kubernetes Visibility Rules
|
||||
|
||||
## Background
|
||||
|
||||
`BUILD` rules define dependencies, answering the question:
|
||||
on what packages does _foo_ depend?
|
||||
|
||||
The `BUILD` file in this package allows one to define
|
||||
_allowed_ reverse dependencies, answering the question:
|
||||
given a package _foo_, what other specific packages are
|
||||
allowed to depend on it?
|
||||
|
||||
This is done via visibility rules.
|
||||
|
||||
Visibility rules discourage unintended, spurious
|
||||
dependencies that blur code boundaries, slow CICD queues and
|
||||
generally inhibit progress.
|
||||
|
||||
#### Facts
|
||||
|
||||
* A package is any directory that contains a `BUILD` file.
|
||||
|
||||
* A `package_group` is a `BUILD` file rule that defines a named
|
||||
set of packages for use in other rules, e.g., given
|
||||
```
|
||||
package_group(
|
||||
name = "database_CONSUMERS",
|
||||
packages = [
|
||||
"//foo/dbinitializer",
|
||||
"//foo/backend/...", # `backend` and everything below it
|
||||
],
|
||||
)
|
||||
```
|
||||
one can specify the following visibility rule in any `BUILD` rule:
|
||||
```
|
||||
visibility = [ "//build/visible_to:database_CONSUMERS" ],
|
||||
```
|
||||
|
||||
* A visibility rule takes a list of package groups as its
|
||||
argument - or one of the pre-defined groups
|
||||
`//visibility:private` or `//visibility:public`.
|
||||
|
||||
* If no visibility is explicitly defined, a package is
|
||||
_private_ by default.
|
||||
|
||||
* Violations in visibility cause `make bazel-build` to fail,
|
||||
which in turn causes the submit queue to fail - that's the
|
||||
enforcement.
|
||||
|
||||
#### Why define all package groups meant for visibility here (in one file)?
|
||||
|
||||
* Ease discovery of appropriate groups for use in a rule.
|
||||
* Ease reuse (inclusions) of commonly used groups.
|
||||
* Consistent style:
|
||||
* easy to read `//build/visible_to:math_library_CONSUMERS` rules,
|
||||
* call out bad dependencies for eventual removal.
|
||||
* Make it more obvious in code reviews when visibility is being
|
||||
modified.
|
||||
* One set of `OWNERS` to manage visibility.
|
||||
|
||||
The alternative is to use special [package literals] directly
|
||||
in visibility rules, e.g.
|
||||
|
||||
```
|
||||
visibility = [
|
||||
"//foo/dbinitializer:__pkg__",
|
||||
"//foo/backend:__subpackages__",
|
||||
],
|
||||
```
|
||||
|
||||
The difference in style is similar to the difference between
|
||||
using a named static constant like `MAX_NODES` rather than a
|
||||
literal like `12`. Names are preferable to literals for intent
|
||||
documentation, search, changing one place rather than _n_,
|
||||
associating usage in distant code blocks, etc.
|
||||
|
||||
|
||||
## Rule Examples
|
||||
|
||||
#### Nobody outside this package can depend on me.
|
||||
|
||||
```
|
||||
visibility = ["//visibility:private"],
|
||||
```
|
||||
|
||||
Since this is the default, there's no reason to use this
|
||||
rule except as a means to override, for some specific
|
||||
target, some broader, whole-package visibility rule.
|
||||
|
||||
#### Anyone can depend on me (eschew this).
|
||||
|
||||
```
|
||||
visibility = ["//visibility:public"],
|
||||
```
|
||||
|
||||
#### Only some servers can depend on me.
|
||||
|
||||
Appropriate for, say, backend storage utilities.
|
||||
|
||||
```
|
||||
visibility = ["//visible_to:server_foo","//visible_to:server_bar"].
|
||||
```
|
||||
|
||||
#### Both some client and some server can see me.
|
||||
|
||||
Appropriate for shared API definition files and generated code:
|
||||
|
||||
```
|
||||
visibility = ["//visible_to:client_foo,//visible_to:server_foo"],
|
||||
```
|
||||
|
||||
## Handy commands
|
||||
|
||||
#### Quickly check for visibility violations
|
||||
```
|
||||
bazel build --check_visibility --nobuild \
|
||||
//cmd/... //pkg/... //plugin/... \
|
||||
//third_party/... //examples/... //test/... //vendor/k8s.io/...
|
||||
```
|
||||
|
||||
#### Who depends on target _q_?
|
||||
|
||||
To create a seed set for a visibility group, one can ask what
|
||||
packages currently depend on (must currently be able to see) a
|
||||
given Go library target? It's a time consuming query.
|
||||
|
||||
```
|
||||
q=//pkg/kubectl/cmd:go_default_library
|
||||
bazel query "rdeps(...,${q})" | \
|
||||
grep go_default_library | \
|
||||
sed 's/\(.*\):go_default_library/ "\1",/'
|
||||
```
|
||||
|
||||
#### What targets below _p_ are visible to anyone?
|
||||
|
||||
A means to look for things one missed when locking down _p_.
|
||||
|
||||
```
|
||||
p=//pkg/kubectl/cmd
|
||||
bazel query "visible(...,${p}/...)"
|
||||
```
|
||||
|
||||
#### What packages below _p_ may target _q_ depend on without violating visibility rules?
|
||||
|
||||
A means to pinpoint unexpected visibility.
|
||||
|
||||
```
|
||||
p=//pkg/kubectl
|
||||
q=//cmd/kubelet:kubelet
|
||||
bazel query "visible(${q},${p}/...)" | more
|
||||
```
|
||||
|
||||
#### What packages does target _q_ need?
|
||||
|
||||
```
|
||||
q=//cmd/kubectl:kubectl
|
||||
bazel query "buildfiles(deps($q))" | \
|
||||
grep -v @bazel_tools | \
|
||||
grep -v @io_bazel_rules | \
|
||||
grep -v @io_kubernetes_build | \
|
||||
grep -v @local_config | \
|
||||
grep -v @local_jdk | \
|
||||
grep -v //visible_to: | \
|
||||
sed 's/:BUILD//' | \
|
||||
sort | uniq > ~/KUBECTL_BUILD.txt
|
||||
```
|
||||
|
||||
or try
|
||||
|
||||
```
|
||||
bazel query --nohost_deps --noimplicit_deps \
|
||||
"kind('source file', deps($q))" | wc -
|
||||
```
|
||||
|
||||
|
||||
#### How does kubectl depend on pkg/util/parsers?
|
||||
|
||||
```
|
||||
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
|
Reference in New Issue
Block a user