Copy disabled (too large)
Download .txt
Showing preview only (43,915K chars total). Download the full file to get everything.
Repository: kubernetes-incubator/cluster-proportional-autoscaler
Branch: master
Commit: 3b6a79d52d5a
Files: 3873
Total size: 41.0 MB
Directory structure:
gitextract_5brwrtzy/
├── .github/
│ ├── cr.yaml
│ ├── dependabot.yml
│ └── workflows/
│ └── helm-chart-release.yaml
├── .gitignore
├── .travis.yml
├── CHANGELOG.md
├── CONTRIBUTING.md
├── Dockerfile.in
├── LICENSE
├── Makefile
├── OWNERS
├── README.md
├── RELEASE.md
├── SECURITY_CONTACTS
├── build/
│ ├── build.sh
│ ├── lint.sh
│ └── test.sh
├── charts/
│ └── cluster-proportional-autoscaler/
│ ├── .helmignore
│ ├── Chart.yaml
│ ├── templates/
│ │ ├── _helpers.tpl
│ │ ├── clusterrole.yaml
│ │ ├── clusterrolebinding.yaml
│ │ ├── configmap.yaml
│ │ ├── deployment.yaml
│ │ ├── role.yaml
│ │ ├── rolebinding.yaml
│ │ └── serviceaccount.yaml
│ └── values.yaml
├── cmd/
│ └── cluster-proportional-autoscaler/
│ ├── autoscaler.go
│ └── options/
│ ├── options.go
│ └── options_test.go
├── code-of-conduct.md
├── examples/
│ ├── RBAC/
│ │ └── RBAC-configs.yaml
│ ├── README.md
│ ├── ladder-defaultparams.yaml
│ ├── ladder.yaml
│ ├── linear-defaultparams.yaml
│ └── linear.yaml
├── go.mod
├── go.sum
├── pkg/
│ ├── autoscaler/
│ │ ├── autoscaler_server.go
│ │ ├── autoscaler_test.go
│ │ ├── controller/
│ │ │ ├── controller.go
│ │ │ ├── laddercontroller/
│ │ │ │ ├── ladder_controller.go
│ │ │ │ └── ladder_controller_test.go
│ │ │ ├── linearcontroller/
│ │ │ │ ├── linear_controller.go
│ │ │ │ └── linear_controller_test.go
│ │ │ └── plugin/
│ │ │ ├── plugin.go
│ │ │ └── plugin_test.go
│ │ ├── doc.go
│ │ ├── health.go
│ │ └── k8sclient/
│ │ ├── k8sclient.go
│ │ ├── k8sclient_test.go
│ │ └── mock_k8sclient.go
│ └── version/
│ └── version.go
├── tools/
│ ├── go.mod
│ ├── go.sum
│ └── tools.go
└── vendor/
├── github.com/
│ ├── davecgh/
│ │ └── go-spew/
│ │ ├── LICENSE
│ │ └── spew/
│ │ ├── bypass.go
│ │ ├── bypasssafe.go
│ │ ├── common.go
│ │ ├── config.go
│ │ ├── doc.go
│ │ ├── dump.go
│ │ ├── format.go
│ │ └── spew.go
│ ├── emicklei/
│ │ └── go-restful/
│ │ └── v3/
│ │ ├── .gitignore
│ │ ├── .goconvey
│ │ ├── .travis.yml
│ │ ├── CHANGES.md
│ │ ├── LICENSE
│ │ ├── Makefile
│ │ ├── README.md
│ │ ├── SECURITY.md
│ │ ├── Srcfile
│ │ ├── bench_test.sh
│ │ ├── compress.go
│ │ ├── compressor_cache.go
│ │ ├── compressor_pools.go
│ │ ├── compressors.go
│ │ ├── constants.go
│ │ ├── container.go
│ │ ├── cors_filter.go
│ │ ├── coverage.sh
│ │ ├── curly.go
│ │ ├── curly_route.go
│ │ ├── custom_verb.go
│ │ ├── doc.go
│ │ ├── entity_accessors.go
│ │ ├── extensions.go
│ │ ├── filter.go
│ │ ├── filter_adapter.go
│ │ ├── json.go
│ │ ├── jsoniter.go
│ │ ├── jsr311.go
│ │ ├── log/
│ │ │ └── log.go
│ │ ├── logger.go
│ │ ├── mime.go
│ │ ├── options_filter.go
│ │ ├── parameter.go
│ │ ├── path_expression.go
│ │ ├── path_processor.go
│ │ ├── request.go
│ │ ├── response.go
│ │ ├── route.go
│ │ ├── route_builder.go
│ │ ├── route_reader.go
│ │ ├── router.go
│ │ ├── service_error.go
│ │ ├── web_service.go
│ │ └── web_service_container.go
│ ├── fxamacker/
│ │ └── cbor/
│ │ └── v2/
│ │ ├── .gitignore
│ │ ├── .golangci.yml
│ │ ├── CODE_OF_CONDUCT.md
│ │ ├── CONTRIBUTING.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── SECURITY.md
│ │ ├── bytestring.go
│ │ ├── cache.go
│ │ ├── common.go
│ │ ├── decode.go
│ │ ├── diagnose.go
│ │ ├── doc.go
│ │ ├── encode.go
│ │ ├── encode_map.go
│ │ ├── encode_map_go117.go
│ │ ├── simplevalue.go
│ │ ├── stream.go
│ │ ├── structfields.go
│ │ ├── tag.go
│ │ └── valid.go
│ ├── go-logr/
│ │ └── logr/
│ │ ├── .golangci.yaml
│ │ ├── CHANGELOG.md
│ │ ├── CONTRIBUTING.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── SECURITY.md
│ │ ├── context.go
│ │ ├── context_noslog.go
│ │ ├── context_slog.go
│ │ ├── discard.go
│ │ ├── logr.go
│ │ ├── sloghandler.go
│ │ ├── slogr.go
│ │ └── slogsink.go
│ ├── go-openapi/
│ │ ├── jsonpointer/
│ │ │ ├── .editorconfig
│ │ │ ├── .gitignore
│ │ │ ├── .golangci.yml
│ │ │ ├── CODE_OF_CONDUCT.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── pointer.go
│ │ └── jsonreference/
│ │ ├── .gitignore
│ │ ├── .golangci.yml
│ │ ├── CODE_OF_CONDUCT.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── internal/
│ │ │ └── normalize_url.go
│ │ └── reference.go
│ ├── gogo/
│ │ └── protobuf/
│ │ ├── AUTHORS
│ │ ├── CONTRIBUTORS
│ │ ├── LICENSE
│ │ ├── proto/
│ │ │ ├── Makefile
│ │ │ ├── clone.go
│ │ │ ├── custom_gogo.go
│ │ │ ├── decode.go
│ │ │ ├── deprecated.go
│ │ │ ├── discard.go
│ │ │ ├── duration.go
│ │ │ ├── duration_gogo.go
│ │ │ ├── encode.go
│ │ │ ├── encode_gogo.go
│ │ │ ├── equal.go
│ │ │ ├── extensions.go
│ │ │ ├── extensions_gogo.go
│ │ │ ├── lib.go
│ │ │ ├── lib_gogo.go
│ │ │ ├── message_set.go
│ │ │ ├── pointer_reflect.go
│ │ │ ├── pointer_reflect_gogo.go
│ │ │ ├── pointer_unsafe.go
│ │ │ ├── pointer_unsafe_gogo.go
│ │ │ ├── properties.go
│ │ │ ├── properties_gogo.go
│ │ │ ├── skip_gogo.go
│ │ │ ├── table_marshal.go
│ │ │ ├── table_marshal_gogo.go
│ │ │ ├── table_merge.go
│ │ │ ├── table_unmarshal.go
│ │ │ ├── table_unmarshal_gogo.go
│ │ │ ├── text.go
│ │ │ ├── text_gogo.go
│ │ │ ├── text_parser.go
│ │ │ ├── timestamp.go
│ │ │ ├── timestamp_gogo.go
│ │ │ ├── wrappers.go
│ │ │ └── wrappers_gogo.go
│ │ └── sortkeys/
│ │ └── sortkeys.go
│ ├── golang/
│ │ ├── glog/
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── glog.go
│ │ │ ├── glog_file.go
│ │ │ ├── glog_file_linux.go
│ │ │ ├── glog_file_nonwindows.go
│ │ │ ├── glog_file_other.go
│ │ │ ├── glog_file_posix.go
│ │ │ ├── glog_file_windows.go
│ │ │ ├── glog_flags.go
│ │ │ └── internal/
│ │ │ ├── logsink/
│ │ │ │ ├── logsink.go
│ │ │ │ └── logsink_fatal.go
│ │ │ └── stackdump/
│ │ │ └── stackdump.go
│ │ └── protobuf/
│ │ ├── AUTHORS
│ │ ├── CONTRIBUTORS
│ │ ├── LICENSE
│ │ ├── proto/
│ │ │ ├── buffer.go
│ │ │ ├── defaults.go
│ │ │ ├── deprecated.go
│ │ │ ├── discard.go
│ │ │ ├── extensions.go
│ │ │ ├── properties.go
│ │ │ ├── proto.go
│ │ │ ├── registry.go
│ │ │ ├── text_decode.go
│ │ │ ├── text_encode.go
│ │ │ ├── wire.go
│ │ │ └── wrappers.go
│ │ └── ptypes/
│ │ ├── any/
│ │ │ └── any.pb.go
│ │ ├── any.go
│ │ ├── doc.go
│ │ ├── duration/
│ │ │ └── duration.pb.go
│ │ ├── duration.go
│ │ ├── timestamp/
│ │ │ └── timestamp.pb.go
│ │ └── timestamp.go
│ ├── google/
│ │ ├── gnostic-models/
│ │ │ ├── LICENSE
│ │ │ ├── compiler/
│ │ │ │ ├── README.md
│ │ │ │ ├── context.go
│ │ │ │ ├── error.go
│ │ │ │ ├── extensions.go
│ │ │ │ ├── helpers.go
│ │ │ │ ├── main.go
│ │ │ │ └── reader.go
│ │ │ ├── extensions/
│ │ │ │ ├── README.md
│ │ │ │ ├── extension.pb.go
│ │ │ │ ├── extension.proto
│ │ │ │ └── extensions.go
│ │ │ ├── jsonschema/
│ │ │ │ ├── README.md
│ │ │ │ ├── base.go
│ │ │ │ ├── display.go
│ │ │ │ ├── models.go
│ │ │ │ ├── operations.go
│ │ │ │ ├── reader.go
│ │ │ │ ├── schema.json
│ │ │ │ └── writer.go
│ │ │ ├── openapiv2/
│ │ │ │ ├── OpenAPIv2.go
│ │ │ │ ├── OpenAPIv2.pb.go
│ │ │ │ ├── OpenAPIv2.proto
│ │ │ │ ├── README.md
│ │ │ │ ├── document.go
│ │ │ │ └── openapi-2.0.json
│ │ │ └── openapiv3/
│ │ │ ├── OpenAPIv3.go
│ │ │ ├── OpenAPIv3.pb.go
│ │ │ ├── OpenAPIv3.proto
│ │ │ ├── README.md
│ │ │ └── document.go
│ │ ├── go-cmp/
│ │ │ ├── LICENSE
│ │ │ └── cmp/
│ │ │ ├── compare.go
│ │ │ ├── export.go
│ │ │ ├── internal/
│ │ │ │ ├── diff/
│ │ │ │ │ ├── debug_disable.go
│ │ │ │ │ ├── debug_enable.go
│ │ │ │ │ └── diff.go
│ │ │ │ ├── flags/
│ │ │ │ │ └── flags.go
│ │ │ │ ├── function/
│ │ │ │ │ └── func.go
│ │ │ │ └── value/
│ │ │ │ ├── name.go
│ │ │ │ ├── pointer.go
│ │ │ │ └── sort.go
│ │ │ ├── options.go
│ │ │ ├── path.go
│ │ │ ├── report.go
│ │ │ ├── report_compare.go
│ │ │ ├── report_references.go
│ │ │ ├── report_reflect.go
│ │ │ ├── report_slices.go
│ │ │ ├── report_text.go
│ │ │ └── report_value.go
│ │ ├── gofuzz/
│ │ │ ├── .travis.yml
│ │ │ ├── CONTRIBUTING.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── bytesource/
│ │ │ │ └── bytesource.go
│ │ │ ├── doc.go
│ │ │ └── fuzz.go
│ │ └── uuid/
│ │ ├── CHANGELOG.md
│ │ ├── CONTRIBUTING.md
│ │ ├── CONTRIBUTORS
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── dce.go
│ │ ├── doc.go
│ │ ├── hash.go
│ │ ├── marshal.go
│ │ ├── node.go
│ │ ├── node_js.go
│ │ ├── node_net.go
│ │ ├── null.go
│ │ ├── sql.go
│ │ ├── time.go
│ │ ├── util.go
│ │ ├── uuid.go
│ │ ├── version1.go
│ │ ├── version4.go
│ │ ├── version6.go
│ │ └── version7.go
│ ├── inconshreveable/
│ │ └── mousetrap/
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── trap_others.go
│ │ └── trap_windows.go
│ ├── josharian/
│ │ └── intern/
│ │ ├── README.md
│ │ ├── intern.go
│ │ └── license.md
│ ├── mailru/
│ │ └── easyjson/
│ │ ├── LICENSE
│ │ ├── buffer/
│ │ │ └── pool.go
│ │ ├── jlexer/
│ │ │ ├── bytestostr.go
│ │ │ ├── bytestostr_nounsafe.go
│ │ │ ├── error.go
│ │ │ └── lexer.go
│ │ └── jwriter/
│ │ └── writer.go
│ ├── modern-go/
│ │ └── concurrent/
│ │ ├── .gitignore
│ │ ├── .travis.yml
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── executor.go
│ │ ├── go_above_19.go
│ │ ├── go_below_19.go
│ │ ├── log.go
│ │ ├── test.sh
│ │ └── unbounded_executor.go
│ ├── munnerz/
│ │ └── goautoneg/
│ │ ├── LICENSE
│ │ ├── Makefile
│ │ ├── README.txt
│ │ └── autoneg.go
│ ├── pkg/
│ │ └── errors/
│ │ ├── .gitignore
│ │ ├── .travis.yml
│ │ ├── LICENSE
│ │ ├── Makefile
│ │ ├── README.md
│ │ ├── appveyor.yml
│ │ ├── errors.go
│ │ ├── go113.go
│ │ └── stack.go
│ ├── spf13/
│ │ ├── cobra/
│ │ │ ├── .gitignore
│ │ │ ├── .golangci.yml
│ │ │ ├── .mailmap
│ │ │ ├── CONDUCT.md
│ │ │ ├── CONTRIBUTING.md
│ │ │ ├── LICENSE.txt
│ │ │ ├── MAINTAINERS
│ │ │ ├── Makefile
│ │ │ ├── README.md
│ │ │ ├── active_help.go
│ │ │ ├── args.go
│ │ │ ├── bash_completions.go
│ │ │ ├── bash_completionsV2.go
│ │ │ ├── cobra.go
│ │ │ ├── command.go
│ │ │ ├── command_notwin.go
│ │ │ ├── command_win.go
│ │ │ ├── completions.go
│ │ │ ├── fish_completions.go
│ │ │ ├── flag_groups.go
│ │ │ ├── powershell_completions.go
│ │ │ ├── shell_completions.go
│ │ │ └── zsh_completions.go
│ │ └── pflag/
│ │ ├── .editorconfig
│ │ ├── .gitignore
│ │ ├── .golangci.yaml
│ │ ├── .travis.yml
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── bool.go
│ │ ├── bool_slice.go
│ │ ├── bytes.go
│ │ ├── count.go
│ │ ├── duration.go
│ │ ├── duration_slice.go
│ │ ├── flag.go
│ │ ├── float32.go
│ │ ├── float32_slice.go
│ │ ├── float64.go
│ │ ├── float64_slice.go
│ │ ├── golangflag.go
│ │ ├── int.go
│ │ ├── int16.go
│ │ ├── int32.go
│ │ ├── int32_slice.go
│ │ ├── int64.go
│ │ ├── int64_slice.go
│ │ ├── int8.go
│ │ ├── int_slice.go
│ │ ├── ip.go
│ │ ├── ip_slice.go
│ │ ├── ipmask.go
│ │ ├── ipnet.go
│ │ ├── ipnet_slice.go
│ │ ├── string.go
│ │ ├── string_array.go
│ │ ├── string_slice.go
│ │ ├── string_to_int.go
│ │ ├── string_to_int64.go
│ │ ├── string_to_string.go
│ │ ├── uint.go
│ │ ├── uint16.go
│ │ ├── uint32.go
│ │ ├── uint64.go
│ │ ├── uint8.go
│ │ └── uint_slice.go
│ └── x448/
│ └── float16/
│ ├── .travis.yml
│ ├── LICENSE
│ ├── README.md
│ └── float16.go
├── golang.org/
│ └── x/
│ ├── net/
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ ├── http/
│ │ │ └── httpguts/
│ │ │ ├── guts.go
│ │ │ └── httplex.go
│ │ ├── http2/
│ │ │ ├── .gitignore
│ │ │ ├── ascii.go
│ │ │ ├── ciphers.go
│ │ │ ├── client_conn_pool.go
│ │ │ ├── config.go
│ │ │ ├── config_go124.go
│ │ │ ├── config_pre_go124.go
│ │ │ ├── databuffer.go
│ │ │ ├── errors.go
│ │ │ ├── flow.go
│ │ │ ├── frame.go
│ │ │ ├── gotrack.go
│ │ │ ├── hpack/
│ │ │ │ ├── encode.go
│ │ │ │ ├── hpack.go
│ │ │ │ ├── huffman.go
│ │ │ │ ├── static_table.go
│ │ │ │ └── tables.go
│ │ │ ├── http2.go
│ │ │ ├── pipe.go
│ │ │ ├── server.go
│ │ │ ├── timer.go
│ │ │ ├── transport.go
│ │ │ ├── unencrypted.go
│ │ │ ├── write.go
│ │ │ ├── writesched.go
│ │ │ ├── writesched_priority.go
│ │ │ ├── writesched_random.go
│ │ │ └── writesched_roundrobin.go
│ │ ├── idna/
│ │ │ ├── go118.go
│ │ │ ├── idna10.0.0.go
│ │ │ ├── idna9.0.0.go
│ │ │ ├── pre_go118.go
│ │ │ ├── punycode.go
│ │ │ ├── tables10.0.0.go
│ │ │ ├── tables11.0.0.go
│ │ │ ├── tables12.0.0.go
│ │ │ ├── tables13.0.0.go
│ │ │ ├── tables15.0.0.go
│ │ │ ├── tables9.0.0.go
│ │ │ ├── trie.go
│ │ │ ├── trie12.0.0.go
│ │ │ ├── trie13.0.0.go
│ │ │ └── trieval.go
│ │ └── internal/
│ │ └── httpcommon/
│ │ ├── ascii.go
│ │ ├── headermap.go
│ │ └── request.go
│ ├── oauth2/
│ │ ├── .travis.yml
│ │ ├── CONTRIBUTING.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── deviceauth.go
│ │ ├── internal/
│ │ │ ├── doc.go
│ │ │ ├── oauth2.go
│ │ │ ├── token.go
│ │ │ └── transport.go
│ │ ├── oauth2.go
│ │ ├── pkce.go
│ │ ├── token.go
│ │ └── transport.go
│ ├── sys/
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ ├── plan9/
│ │ │ ├── asm.s
│ │ │ ├── asm_plan9_386.s
│ │ │ ├── asm_plan9_amd64.s
│ │ │ ├── asm_plan9_arm.s
│ │ │ ├── const_plan9.go
│ │ │ ├── dir_plan9.go
│ │ │ ├── env_plan9.go
│ │ │ ├── errors_plan9.go
│ │ │ ├── mkall.sh
│ │ │ ├── mkerrors.sh
│ │ │ ├── mksysnum_plan9.sh
│ │ │ ├── pwd_go15_plan9.go
│ │ │ ├── pwd_plan9.go
│ │ │ ├── race.go
│ │ │ ├── race0.go
│ │ │ ├── str.go
│ │ │ ├── syscall.go
│ │ │ ├── syscall_plan9.go
│ │ │ ├── zsyscall_plan9_386.go
│ │ │ ├── zsyscall_plan9_amd64.go
│ │ │ ├── zsyscall_plan9_arm.go
│ │ │ └── zsysnum_plan9.go
│ │ ├── unix/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── affinity_linux.go
│ │ │ ├── aliases.go
│ │ │ ├── asm_aix_ppc64.s
│ │ │ ├── asm_bsd_386.s
│ │ │ ├── asm_bsd_amd64.s
│ │ │ ├── asm_bsd_arm.s
│ │ │ ├── asm_bsd_arm64.s
│ │ │ ├── asm_bsd_ppc64.s
│ │ │ ├── asm_bsd_riscv64.s
│ │ │ ├── asm_linux_386.s
│ │ │ ├── asm_linux_amd64.s
│ │ │ ├── asm_linux_arm.s
│ │ │ ├── asm_linux_arm64.s
│ │ │ ├── asm_linux_loong64.s
│ │ │ ├── asm_linux_mips64x.s
│ │ │ ├── asm_linux_mipsx.s
│ │ │ ├── asm_linux_ppc64x.s
│ │ │ ├── asm_linux_riscv64.s
│ │ │ ├── asm_linux_s390x.s
│ │ │ ├── asm_openbsd_mips64.s
│ │ │ ├── asm_solaris_amd64.s
│ │ │ ├── asm_zos_s390x.s
│ │ │ ├── auxv.go
│ │ │ ├── auxv_unsupported.go
│ │ │ ├── bluetooth_linux.go
│ │ │ ├── bpxsvc_zos.go
│ │ │ ├── bpxsvc_zos.s
│ │ │ ├── cap_freebsd.go
│ │ │ ├── constants.go
│ │ │ ├── dev_aix_ppc.go
│ │ │ ├── dev_aix_ppc64.go
│ │ │ ├── dev_darwin.go
│ │ │ ├── dev_dragonfly.go
│ │ │ ├── dev_freebsd.go
│ │ │ ├── dev_linux.go
│ │ │ ├── dev_netbsd.go
│ │ │ ├── dev_openbsd.go
│ │ │ ├── dev_zos.go
│ │ │ ├── dirent.go
│ │ │ ├── endian_big.go
│ │ │ ├── endian_little.go
│ │ │ ├── env_unix.go
│ │ │ ├── fcntl.go
│ │ │ ├── fcntl_darwin.go
│ │ │ ├── fcntl_linux_32bit.go
│ │ │ ├── fdset.go
│ │ │ ├── gccgo.go
│ │ │ ├── gccgo_c.c
│ │ │ ├── gccgo_linux_amd64.go
│ │ │ ├── ifreq_linux.go
│ │ │ ├── ioctl_linux.go
│ │ │ ├── ioctl_signed.go
│ │ │ ├── ioctl_unsigned.go
│ │ │ ├── ioctl_zos.go
│ │ │ ├── mkall.sh
│ │ │ ├── mkerrors.sh
│ │ │ ├── mmap_nomremap.go
│ │ │ ├── mremap.go
│ │ │ ├── pagesize_unix.go
│ │ │ ├── pledge_openbsd.go
│ │ │ ├── ptrace_darwin.go
│ │ │ ├── ptrace_ios.go
│ │ │ ├── race.go
│ │ │ ├── race0.go
│ │ │ ├── readdirent_getdents.go
│ │ │ ├── readdirent_getdirentries.go
│ │ │ ├── sockcmsg_dragonfly.go
│ │ │ ├── sockcmsg_linux.go
│ │ │ ├── sockcmsg_unix.go
│ │ │ ├── sockcmsg_unix_other.go
│ │ │ ├── sockcmsg_zos.go
│ │ │ ├── symaddr_zos_s390x.s
│ │ │ ├── syscall.go
│ │ │ ├── syscall_aix.go
│ │ │ ├── syscall_aix_ppc.go
│ │ │ ├── syscall_aix_ppc64.go
│ │ │ ├── syscall_bsd.go
│ │ │ ├── syscall_darwin.go
│ │ │ ├── syscall_darwin_amd64.go
│ │ │ ├── syscall_darwin_arm64.go
│ │ │ ├── syscall_darwin_libSystem.go
│ │ │ ├── syscall_dragonfly.go
│ │ │ ├── syscall_dragonfly_amd64.go
│ │ │ ├── syscall_freebsd.go
│ │ │ ├── syscall_freebsd_386.go
│ │ │ ├── syscall_freebsd_amd64.go
│ │ │ ├── syscall_freebsd_arm.go
│ │ │ ├── syscall_freebsd_arm64.go
│ │ │ ├── syscall_freebsd_riscv64.go
│ │ │ ├── syscall_hurd.go
│ │ │ ├── syscall_hurd_386.go
│ │ │ ├── syscall_illumos.go
│ │ │ ├── syscall_linux.go
│ │ │ ├── syscall_linux_386.go
│ │ │ ├── syscall_linux_alarm.go
│ │ │ ├── syscall_linux_amd64.go
│ │ │ ├── syscall_linux_amd64_gc.go
│ │ │ ├── syscall_linux_arm.go
│ │ │ ├── syscall_linux_arm64.go
│ │ │ ├── syscall_linux_gc.go
│ │ │ ├── syscall_linux_gc_386.go
│ │ │ ├── syscall_linux_gc_arm.go
│ │ │ ├── syscall_linux_gccgo_386.go
│ │ │ ├── syscall_linux_gccgo_arm.go
│ │ │ ├── syscall_linux_loong64.go
│ │ │ ├── syscall_linux_mips64x.go
│ │ │ ├── syscall_linux_mipsx.go
│ │ │ ├── syscall_linux_ppc.go
│ │ │ ├── syscall_linux_ppc64x.go
│ │ │ ├── syscall_linux_riscv64.go
│ │ │ ├── syscall_linux_s390x.go
│ │ │ ├── syscall_linux_sparc64.go
│ │ │ ├── syscall_netbsd.go
│ │ │ ├── syscall_netbsd_386.go
│ │ │ ├── syscall_netbsd_amd64.go
│ │ │ ├── syscall_netbsd_arm.go
│ │ │ ├── syscall_netbsd_arm64.go
│ │ │ ├── syscall_openbsd.go
│ │ │ ├── syscall_openbsd_386.go
│ │ │ ├── syscall_openbsd_amd64.go
│ │ │ ├── syscall_openbsd_arm.go
│ │ │ ├── syscall_openbsd_arm64.go
│ │ │ ├── syscall_openbsd_libc.go
│ │ │ ├── syscall_openbsd_mips64.go
│ │ │ ├── syscall_openbsd_ppc64.go
│ │ │ ├── syscall_openbsd_riscv64.go
│ │ │ ├── syscall_solaris.go
│ │ │ ├── syscall_solaris_amd64.go
│ │ │ ├── syscall_unix.go
│ │ │ ├── syscall_unix_gc.go
│ │ │ ├── syscall_unix_gc_ppc64x.go
│ │ │ ├── syscall_zos_s390x.go
│ │ │ ├── sysvshm_linux.go
│ │ │ ├── sysvshm_unix.go
│ │ │ ├── sysvshm_unix_other.go
│ │ │ ├── timestruct.go
│ │ │ ├── unveil_openbsd.go
│ │ │ ├── vgetrandom_linux.go
│ │ │ ├── vgetrandom_unsupported.go
│ │ │ ├── xattr_bsd.go
│ │ │ ├── zerrors_aix_ppc.go
│ │ │ ├── zerrors_aix_ppc64.go
│ │ │ ├── zerrors_darwin_amd64.go
│ │ │ ├── zerrors_darwin_arm64.go
│ │ │ ├── zerrors_dragonfly_amd64.go
│ │ │ ├── zerrors_freebsd_386.go
│ │ │ ├── zerrors_freebsd_amd64.go
│ │ │ ├── zerrors_freebsd_arm.go
│ │ │ ├── zerrors_freebsd_arm64.go
│ │ │ ├── zerrors_freebsd_riscv64.go
│ │ │ ├── zerrors_linux.go
│ │ │ ├── zerrors_linux_386.go
│ │ │ ├── zerrors_linux_amd64.go
│ │ │ ├── zerrors_linux_arm.go
│ │ │ ├── zerrors_linux_arm64.go
│ │ │ ├── zerrors_linux_loong64.go
│ │ │ ├── zerrors_linux_mips.go
│ │ │ ├── zerrors_linux_mips64.go
│ │ │ ├── zerrors_linux_mips64le.go
│ │ │ ├── zerrors_linux_mipsle.go
│ │ │ ├── zerrors_linux_ppc.go
│ │ │ ├── zerrors_linux_ppc64.go
│ │ │ ├── zerrors_linux_ppc64le.go
│ │ │ ├── zerrors_linux_riscv64.go
│ │ │ ├── zerrors_linux_s390x.go
│ │ │ ├── zerrors_linux_sparc64.go
│ │ │ ├── zerrors_netbsd_386.go
│ │ │ ├── zerrors_netbsd_amd64.go
│ │ │ ├── zerrors_netbsd_arm.go
│ │ │ ├── zerrors_netbsd_arm64.go
│ │ │ ├── zerrors_openbsd_386.go
│ │ │ ├── zerrors_openbsd_amd64.go
│ │ │ ├── zerrors_openbsd_arm.go
│ │ │ ├── zerrors_openbsd_arm64.go
│ │ │ ├── zerrors_openbsd_mips64.go
│ │ │ ├── zerrors_openbsd_ppc64.go
│ │ │ ├── zerrors_openbsd_riscv64.go
│ │ │ ├── zerrors_solaris_amd64.go
│ │ │ ├── zerrors_zos_s390x.go
│ │ │ ├── zptrace_armnn_linux.go
│ │ │ ├── zptrace_linux_arm64.go
│ │ │ ├── zptrace_mipsnn_linux.go
│ │ │ ├── zptrace_mipsnnle_linux.go
│ │ │ ├── zptrace_x86_linux.go
│ │ │ ├── zsymaddr_zos_s390x.s
│ │ │ ├── zsyscall_aix_ppc.go
│ │ │ ├── zsyscall_aix_ppc64.go
│ │ │ ├── zsyscall_aix_ppc64_gc.go
│ │ │ ├── zsyscall_aix_ppc64_gccgo.go
│ │ │ ├── zsyscall_darwin_amd64.go
│ │ │ ├── zsyscall_darwin_amd64.s
│ │ │ ├── zsyscall_darwin_arm64.go
│ │ │ ├── zsyscall_darwin_arm64.s
│ │ │ ├── zsyscall_dragonfly_amd64.go
│ │ │ ├── zsyscall_freebsd_386.go
│ │ │ ├── zsyscall_freebsd_amd64.go
│ │ │ ├── zsyscall_freebsd_arm.go
│ │ │ ├── zsyscall_freebsd_arm64.go
│ │ │ ├── zsyscall_freebsd_riscv64.go
│ │ │ ├── zsyscall_illumos_amd64.go
│ │ │ ├── zsyscall_linux.go
│ │ │ ├── zsyscall_linux_386.go
│ │ │ ├── zsyscall_linux_amd64.go
│ │ │ ├── zsyscall_linux_arm.go
│ │ │ ├── zsyscall_linux_arm64.go
│ │ │ ├── zsyscall_linux_loong64.go
│ │ │ ├── zsyscall_linux_mips.go
│ │ │ ├── zsyscall_linux_mips64.go
│ │ │ ├── zsyscall_linux_mips64le.go
│ │ │ ├── zsyscall_linux_mipsle.go
│ │ │ ├── zsyscall_linux_ppc.go
│ │ │ ├── zsyscall_linux_ppc64.go
│ │ │ ├── zsyscall_linux_ppc64le.go
│ │ │ ├── zsyscall_linux_riscv64.go
│ │ │ ├── zsyscall_linux_s390x.go
│ │ │ ├── zsyscall_linux_sparc64.go
│ │ │ ├── zsyscall_netbsd_386.go
│ │ │ ├── zsyscall_netbsd_amd64.go
│ │ │ ├── zsyscall_netbsd_arm.go
│ │ │ ├── zsyscall_netbsd_arm64.go
│ │ │ ├── zsyscall_openbsd_386.go
│ │ │ ├── zsyscall_openbsd_386.s
│ │ │ ├── zsyscall_openbsd_amd64.go
│ │ │ ├── zsyscall_openbsd_amd64.s
│ │ │ ├── zsyscall_openbsd_arm.go
│ │ │ ├── zsyscall_openbsd_arm.s
│ │ │ ├── zsyscall_openbsd_arm64.go
│ │ │ ├── zsyscall_openbsd_arm64.s
│ │ │ ├── zsyscall_openbsd_mips64.go
│ │ │ ├── zsyscall_openbsd_mips64.s
│ │ │ ├── zsyscall_openbsd_ppc64.go
│ │ │ ├── zsyscall_openbsd_ppc64.s
│ │ │ ├── zsyscall_openbsd_riscv64.go
│ │ │ ├── zsyscall_openbsd_riscv64.s
│ │ │ ├── zsyscall_solaris_amd64.go
│ │ │ ├── zsyscall_zos_s390x.go
│ │ │ ├── zsysctl_openbsd_386.go
│ │ │ ├── zsysctl_openbsd_amd64.go
│ │ │ ├── zsysctl_openbsd_arm.go
│ │ │ ├── zsysctl_openbsd_arm64.go
│ │ │ ├── zsysctl_openbsd_mips64.go
│ │ │ ├── zsysctl_openbsd_ppc64.go
│ │ │ ├── zsysctl_openbsd_riscv64.go
│ │ │ ├── zsysnum_darwin_amd64.go
│ │ │ ├── zsysnum_darwin_arm64.go
│ │ │ ├── zsysnum_dragonfly_amd64.go
│ │ │ ├── zsysnum_freebsd_386.go
│ │ │ ├── zsysnum_freebsd_amd64.go
│ │ │ ├── zsysnum_freebsd_arm.go
│ │ │ ├── zsysnum_freebsd_arm64.go
│ │ │ ├── zsysnum_freebsd_riscv64.go
│ │ │ ├── zsysnum_linux_386.go
│ │ │ ├── zsysnum_linux_amd64.go
│ │ │ ├── zsysnum_linux_arm.go
│ │ │ ├── zsysnum_linux_arm64.go
│ │ │ ├── zsysnum_linux_loong64.go
│ │ │ ├── zsysnum_linux_mips.go
│ │ │ ├── zsysnum_linux_mips64.go
│ │ │ ├── zsysnum_linux_mips64le.go
│ │ │ ├── zsysnum_linux_mipsle.go
│ │ │ ├── zsysnum_linux_ppc.go
│ │ │ ├── zsysnum_linux_ppc64.go
│ │ │ ├── zsysnum_linux_ppc64le.go
│ │ │ ├── zsysnum_linux_riscv64.go
│ │ │ ├── zsysnum_linux_s390x.go
│ │ │ ├── zsysnum_linux_sparc64.go
│ │ │ ├── zsysnum_netbsd_386.go
│ │ │ ├── zsysnum_netbsd_amd64.go
│ │ │ ├── zsysnum_netbsd_arm.go
│ │ │ ├── zsysnum_netbsd_arm64.go
│ │ │ ├── zsysnum_openbsd_386.go
│ │ │ ├── zsysnum_openbsd_amd64.go
│ │ │ ├── zsysnum_openbsd_arm.go
│ │ │ ├── zsysnum_openbsd_arm64.go
│ │ │ ├── zsysnum_openbsd_mips64.go
│ │ │ ├── zsysnum_openbsd_ppc64.go
│ │ │ ├── zsysnum_openbsd_riscv64.go
│ │ │ ├── zsysnum_zos_s390x.go
│ │ │ ├── ztypes_aix_ppc.go
│ │ │ ├── ztypes_aix_ppc64.go
│ │ │ ├── ztypes_darwin_amd64.go
│ │ │ ├── ztypes_darwin_arm64.go
│ │ │ ├── ztypes_dragonfly_amd64.go
│ │ │ ├── ztypes_freebsd_386.go
│ │ │ ├── ztypes_freebsd_amd64.go
│ │ │ ├── ztypes_freebsd_arm.go
│ │ │ ├── ztypes_freebsd_arm64.go
│ │ │ ├── ztypes_freebsd_riscv64.go
│ │ │ ├── ztypes_linux.go
│ │ │ ├── ztypes_linux_386.go
│ │ │ ├── ztypes_linux_amd64.go
│ │ │ ├── ztypes_linux_arm.go
│ │ │ ├── ztypes_linux_arm64.go
│ │ │ ├── ztypes_linux_loong64.go
│ │ │ ├── ztypes_linux_mips.go
│ │ │ ├── ztypes_linux_mips64.go
│ │ │ ├── ztypes_linux_mips64le.go
│ │ │ ├── ztypes_linux_mipsle.go
│ │ │ ├── ztypes_linux_ppc.go
│ │ │ ├── ztypes_linux_ppc64.go
│ │ │ ├── ztypes_linux_ppc64le.go
│ │ │ ├── ztypes_linux_riscv64.go
│ │ │ ├── ztypes_linux_s390x.go
│ │ │ ├── ztypes_linux_sparc64.go
│ │ │ ├── ztypes_netbsd_386.go
│ │ │ ├── ztypes_netbsd_amd64.go
│ │ │ ├── ztypes_netbsd_arm.go
│ │ │ ├── ztypes_netbsd_arm64.go
│ │ │ ├── ztypes_openbsd_386.go
│ │ │ ├── ztypes_openbsd_amd64.go
│ │ │ ├── ztypes_openbsd_arm.go
│ │ │ ├── ztypes_openbsd_arm64.go
│ │ │ ├── ztypes_openbsd_mips64.go
│ │ │ ├── ztypes_openbsd_ppc64.go
│ │ │ ├── ztypes_openbsd_riscv64.go
│ │ │ ├── ztypes_solaris_amd64.go
│ │ │ └── ztypes_zos_s390x.go
│ │ └── windows/
│ │ ├── aliases.go
│ │ ├── dll_windows.go
│ │ ├── env_windows.go
│ │ ├── eventlog.go
│ │ ├── exec_windows.go
│ │ ├── memory_windows.go
│ │ ├── mkerrors.bash
│ │ ├── mkknownfolderids.bash
│ │ ├── mksyscall.go
│ │ ├── race.go
│ │ ├── race0.go
│ │ ├── security_windows.go
│ │ ├── service.go
│ │ ├── setupapi_windows.go
│ │ ├── str.go
│ │ ├── syscall.go
│ │ ├── syscall_windows.go
│ │ ├── types_windows.go
│ │ ├── types_windows_386.go
│ │ ├── types_windows_amd64.go
│ │ ├── types_windows_arm.go
│ │ ├── types_windows_arm64.go
│ │ ├── zerrors_windows.go
│ │ ├── zknownfolderids_windows.go
│ │ └── zsyscall_windows.go
│ ├── term/
│ │ ├── CONTRIBUTING.md
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ ├── README.md
│ │ ├── codereview.cfg
│ │ ├── term.go
│ │ ├── term_plan9.go
│ │ ├── term_unix.go
│ │ ├── term_unix_bsd.go
│ │ ├── term_unix_other.go
│ │ ├── term_unsupported.go
│ │ ├── term_windows.go
│ │ └── terminal.go
│ ├── text/
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ ├── secure/
│ │ │ └── bidirule/
│ │ │ ├── bidirule.go
│ │ │ ├── bidirule10.0.0.go
│ │ │ └── bidirule9.0.0.go
│ │ ├── transform/
│ │ │ └── transform.go
│ │ └── unicode/
│ │ ├── bidi/
│ │ │ ├── bidi.go
│ │ │ ├── bracket.go
│ │ │ ├── core.go
│ │ │ ├── prop.go
│ │ │ ├── tables10.0.0.go
│ │ │ ├── tables11.0.0.go
│ │ │ ├── tables12.0.0.go
│ │ │ ├── tables13.0.0.go
│ │ │ ├── tables15.0.0.go
│ │ │ ├── tables9.0.0.go
│ │ │ └── trieval.go
│ │ └── norm/
│ │ ├── composition.go
│ │ ├── forminfo.go
│ │ ├── input.go
│ │ ├── iter.go
│ │ ├── normalize.go
│ │ ├── readwriter.go
│ │ ├── tables10.0.0.go
│ │ ├── tables11.0.0.go
│ │ ├── tables12.0.0.go
│ │ ├── tables13.0.0.go
│ │ ├── tables15.0.0.go
│ │ ├── tables9.0.0.go
│ │ ├── transform.go
│ │ └── trie.go
│ └── time/
│ ├── LICENSE
│ ├── PATENTS
│ └── rate/
│ ├── rate.go
│ └── sometimes.go
├── google.golang.org/
│ └── protobuf/
│ ├── LICENSE
│ ├── PATENTS
│ ├── encoding/
│ │ ├── prototext/
│ │ │ ├── decode.go
│ │ │ ├── doc.go
│ │ │ └── encode.go
│ │ └── protowire/
│ │ └── wire.go
│ ├── internal/
│ │ ├── descfmt/
│ │ │ └── stringer.go
│ │ ├── descopts/
│ │ │ └── options.go
│ │ ├── detrand/
│ │ │ └── rand.go
│ │ ├── editiondefaults/
│ │ │ ├── defaults.go
│ │ │ └── editions_defaults.binpb
│ │ ├── editionssupport/
│ │ │ └── editions.go
│ │ ├── encoding/
│ │ │ ├── defval/
│ │ │ │ └── default.go
│ │ │ ├── messageset/
│ │ │ │ └── messageset.go
│ │ │ ├── tag/
│ │ │ │ └── tag.go
│ │ │ └── text/
│ │ │ ├── decode.go
│ │ │ ├── decode_number.go
│ │ │ ├── decode_string.go
│ │ │ ├── decode_token.go
│ │ │ ├── doc.go
│ │ │ └── encode.go
│ │ ├── errors/
│ │ │ ├── errors.go
│ │ │ ├── is_go112.go
│ │ │ └── is_go113.go
│ │ ├── filedesc/
│ │ │ ├── build.go
│ │ │ ├── desc.go
│ │ │ ├── desc_init.go
│ │ │ ├── desc_lazy.go
│ │ │ ├── desc_list.go
│ │ │ ├── desc_list_gen.go
│ │ │ ├── editions.go
│ │ │ └── placeholder.go
│ │ ├── filetype/
│ │ │ └── build.go
│ │ ├── flags/
│ │ │ ├── flags.go
│ │ │ ├── proto_legacy_disable.go
│ │ │ └── proto_legacy_enable.go
│ │ ├── genid/
│ │ │ ├── any_gen.go
│ │ │ ├── api_gen.go
│ │ │ ├── descriptor_gen.go
│ │ │ ├── doc.go
│ │ │ ├── duration_gen.go
│ │ │ ├── empty_gen.go
│ │ │ ├── field_mask_gen.go
│ │ │ ├── go_features_gen.go
│ │ │ ├── goname.go
│ │ │ ├── map_entry.go
│ │ │ ├── source_context_gen.go
│ │ │ ├── struct_gen.go
│ │ │ ├── timestamp_gen.go
│ │ │ ├── type_gen.go
│ │ │ ├── wrappers.go
│ │ │ └── wrappers_gen.go
│ │ ├── impl/
│ │ │ ├── api_export.go
│ │ │ ├── checkinit.go
│ │ │ ├── codec_extension.go
│ │ │ ├── codec_field.go
│ │ │ ├── codec_gen.go
│ │ │ ├── codec_map.go
│ │ │ ├── codec_map_go111.go
│ │ │ ├── codec_map_go112.go
│ │ │ ├── codec_message.go
│ │ │ ├── codec_messageset.go
│ │ │ ├── codec_tables.go
│ │ │ ├── codec_unsafe.go
│ │ │ ├── convert.go
│ │ │ ├── convert_list.go
│ │ │ ├── convert_map.go
│ │ │ ├── decode.go
│ │ │ ├── encode.go
│ │ │ ├── enum.go
│ │ │ ├── equal.go
│ │ │ ├── extension.go
│ │ │ ├── legacy_enum.go
│ │ │ ├── legacy_export.go
│ │ │ ├── legacy_extension.go
│ │ │ ├── legacy_file.go
│ │ │ ├── legacy_message.go
│ │ │ ├── merge.go
│ │ │ ├── merge_gen.go
│ │ │ ├── message.go
│ │ │ ├── message_reflect.go
│ │ │ ├── message_reflect_field.go
│ │ │ ├── message_reflect_gen.go
│ │ │ ├── pointer_unsafe.go
│ │ │ ├── validate.go
│ │ │ └── weak.go
│ │ ├── order/
│ │ │ ├── order.go
│ │ │ └── range.go
│ │ ├── pragma/
│ │ │ └── pragma.go
│ │ ├── set/
│ │ │ └── ints.go
│ │ ├── strs/
│ │ │ ├── strings.go
│ │ │ ├── strings_unsafe_go120.go
│ │ │ └── strings_unsafe_go121.go
│ │ └── version/
│ │ └── version.go
│ ├── proto/
│ │ ├── checkinit.go
│ │ ├── decode.go
│ │ ├── decode_gen.go
│ │ ├── doc.go
│ │ ├── encode.go
│ │ ├── encode_gen.go
│ │ ├── equal.go
│ │ ├── extension.go
│ │ ├── merge.go
│ │ ├── messageset.go
│ │ ├── proto.go
│ │ ├── proto_methods.go
│ │ ├── proto_reflect.go
│ │ ├── reset.go
│ │ ├── size.go
│ │ ├── size_gen.go
│ │ └── wrappers.go
│ ├── reflect/
│ │ ├── protodesc/
│ │ │ ├── desc.go
│ │ │ ├── desc_init.go
│ │ │ ├── desc_resolve.go
│ │ │ ├── desc_validate.go
│ │ │ ├── editions.go
│ │ │ └── proto.go
│ │ ├── protoreflect/
│ │ │ ├── methods.go
│ │ │ ├── proto.go
│ │ │ ├── source.go
│ │ │ ├── source_gen.go
│ │ │ ├── type.go
│ │ │ ├── value.go
│ │ │ ├── value_equal.go
│ │ │ ├── value_union.go
│ │ │ ├── value_unsafe_go120.go
│ │ │ └── value_unsafe_go121.go
│ │ └── protoregistry/
│ │ └── registry.go
│ ├── runtime/
│ │ ├── protoiface/
│ │ │ ├── legacy.go
│ │ │ └── methods.go
│ │ └── protoimpl/
│ │ ├── impl.go
│ │ └── version.go
│ └── types/
│ ├── descriptorpb/
│ │ └── descriptor.pb.go
│ ├── gofeaturespb/
│ │ └── go_features.pb.go
│ └── known/
│ ├── anypb/
│ │ └── any.pb.go
│ ├── durationpb/
│ │ └── duration.pb.go
│ └── timestamppb/
│ └── timestamp.pb.go
├── gopkg.in/
│ ├── evanphx/
│ │ └── json-patch.v4/
│ │ ├── .gitignore
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── errors.go
│ │ ├── merge.go
│ │ └── patch.go
│ ├── inf.v0/
│ │ ├── LICENSE
│ │ ├── dec.go
│ │ └── rounder.go
│ └── yaml.v3/
│ ├── LICENSE
│ ├── NOTICE
│ ├── README.md
│ ├── apic.go
│ ├── decode.go
│ ├── emitterc.go
│ ├── encode.go
│ ├── parserc.go
│ ├── readerc.go
│ ├── resolve.go
│ ├── scannerc.go
│ ├── sorter.go
│ ├── writerc.go
│ ├── yaml.go
│ ├── yamlh.go
│ └── yamlprivateh.go
├── k8s.io/
│ ├── api/
│ │ ├── LICENSE
│ │ ├── admissionregistration/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ ├── v1alpha1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── apidiscovery/
│ │ │ ├── v2/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v2beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── apiserverinternal/
│ │ │ └── v1alpha1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ └── zz_generated.deepcopy.go
│ │ ├── apps/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ ├── v1beta1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v1beta2/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── authentication/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ ├── v1alpha1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── authorization/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── autoscaling/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ ├── v2/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ ├── v2beta1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v2beta2/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── batch/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── certificates/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ ├── v1alpha1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── coordination/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ ├── v1alpha2/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── core/
│ │ │ └── v1/
│ │ │ ├── annotation_key_constants.go
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── lifecycle.go
│ │ │ ├── objectreference.go
│ │ │ ├── register.go
│ │ │ ├── resource.go
│ │ │ ├── taint.go
│ │ │ ├── toleration.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── well_known_labels.go
│ │ │ ├── well_known_taints.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── discovery/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── well_known_labels.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── well_known_labels.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── events/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── extensions/
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── flowcontrol/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ ├── v1beta1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ ├── v1beta2/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v1beta3/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── imagepolicy/
│ │ │ └── v1alpha1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ └── zz_generated.deepcopy.go
│ │ ├── networking/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── well_known_annotations.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ ├── v1alpha1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── well_known_labels.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── well_known_annotations.go
│ │ │ ├── well_known_labels.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── node/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ ├── v1alpha1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ └── zz_generated.deepcopy.go
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── policy/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── rbac/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ ├── v1alpha1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ └── zz_generated.deepcopy.go
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── resource/
│ │ │ ├── v1alpha3/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── scheduling/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ ├── v1alpha1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ └── zz_generated.deepcopy.go
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── storage/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ ├── v1alpha1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ └── storagemigration/
│ │ └── v1alpha1/
│ │ ├── doc.go
│ │ ├── generated.pb.go
│ │ ├── generated.proto
│ │ ├── register.go
│ │ ├── types.go
│ │ ├── types_swagger_doc_generated.go
│ │ ├── zz_generated.deepcopy.go
│ │ └── zz_generated.prerelease-lifecycle.go
│ ├── apimachinery/
│ │ ├── LICENSE
│ │ ├── pkg/
│ │ │ ├── api/
│ │ │ │ ├── equality/
│ │ │ │ │ └── semantic.go
│ │ │ │ ├── errors/
│ │ │ │ │ ├── OWNERS
│ │ │ │ │ ├── doc.go
│ │ │ │ │ └── errors.go
│ │ │ │ ├── meta/
│ │ │ │ │ ├── OWNERS
│ │ │ │ │ ├── conditions.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── errors.go
│ │ │ │ │ ├── firsthit_restmapper.go
│ │ │ │ │ ├── help.go
│ │ │ │ │ ├── interfaces.go
│ │ │ │ │ ├── lazy.go
│ │ │ │ │ ├── meta.go
│ │ │ │ │ ├── multirestmapper.go
│ │ │ │ │ ├── priority.go
│ │ │ │ │ ├── restmapper.go
│ │ │ │ │ └── testrestmapper/
│ │ │ │ │ └── test_restmapper.go
│ │ │ │ ├── resource/
│ │ │ │ │ ├── OWNERS
│ │ │ │ │ ├── amount.go
│ │ │ │ │ ├── generated.pb.go
│ │ │ │ │ ├── generated.proto
│ │ │ │ │ ├── math.go
│ │ │ │ │ ├── quantity.go
│ │ │ │ │ ├── quantity_proto.go
│ │ │ │ │ ├── scale_int.go
│ │ │ │ │ ├── suffix.go
│ │ │ │ │ └── zz_generated.deepcopy.go
│ │ │ │ └── validation/
│ │ │ │ ├── OWNERS
│ │ │ │ ├── doc.go
│ │ │ │ ├── generic.go
│ │ │ │ └── objectmeta.go
│ │ │ ├── apis/
│ │ │ │ └── meta/
│ │ │ │ ├── internalversion/
│ │ │ │ │ ├── defaults.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── register.go
│ │ │ │ │ ├── types.go
│ │ │ │ │ ├── validation/
│ │ │ │ │ │ └── validation.go
│ │ │ │ │ ├── zz_generated.conversion.go
│ │ │ │ │ └── zz_generated.deepcopy.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── OWNERS
│ │ │ │ │ ├── controller_ref.go
│ │ │ │ │ ├── conversion.go
│ │ │ │ │ ├── deepcopy.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── duration.go
│ │ │ │ │ ├── generated.pb.go
│ │ │ │ │ ├── generated.proto
│ │ │ │ │ ├── group_version.go
│ │ │ │ │ ├── helpers.go
│ │ │ │ │ ├── labels.go
│ │ │ │ │ ├── meta.go
│ │ │ │ │ ├── micro_time.go
│ │ │ │ │ ├── micro_time_fuzz.go
│ │ │ │ │ ├── micro_time_proto.go
│ │ │ │ │ ├── register.go
│ │ │ │ │ ├── time.go
│ │ │ │ │ ├── time_fuzz.go
│ │ │ │ │ ├── time_proto.go
│ │ │ │ │ ├── types.go
│ │ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ │ ├── unstructured/
│ │ │ │ │ │ ├── helpers.go
│ │ │ │ │ │ ├── unstructured.go
│ │ │ │ │ │ ├── unstructured_list.go
│ │ │ │ │ │ └── zz_generated.deepcopy.go
│ │ │ │ │ ├── validation/
│ │ │ │ │ │ └── validation.go
│ │ │ │ │ ├── watch.go
│ │ │ │ │ ├── zz_generated.conversion.go
│ │ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ │ └── zz_generated.defaults.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── conversion.go
│ │ │ │ ├── deepcopy.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.defaults.go
│ │ │ ├── conversion/
│ │ │ │ ├── converter.go
│ │ │ │ ├── deep_equal.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── helper.go
│ │ │ │ └── queryparams/
│ │ │ │ ├── convert.go
│ │ │ │ └── doc.go
│ │ │ ├── fields/
│ │ │ │ ├── doc.go
│ │ │ │ ├── fields.go
│ │ │ │ ├── requirements.go
│ │ │ │ └── selector.go
│ │ │ ├── labels/
│ │ │ │ ├── doc.go
│ │ │ │ ├── labels.go
│ │ │ │ ├── selector.go
│ │ │ │ └── zz_generated.deepcopy.go
│ │ │ ├── runtime/
│ │ │ │ ├── allocator.go
│ │ │ │ ├── codec.go
│ │ │ │ ├── codec_check.go
│ │ │ │ ├── conversion.go
│ │ │ │ ├── converter.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── embedded.go
│ │ │ │ ├── error.go
│ │ │ │ ├── extension.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── helper.go
│ │ │ │ ├── interfaces.go
│ │ │ │ ├── mapper.go
│ │ │ │ ├── negotiate.go
│ │ │ │ ├── register.go
│ │ │ │ ├── schema/
│ │ │ │ │ ├── generated.pb.go
│ │ │ │ │ ├── generated.proto
│ │ │ │ │ ├── group_version.go
│ │ │ │ │ └── interfaces.go
│ │ │ │ ├── scheme.go
│ │ │ │ ├── scheme_builder.go
│ │ │ │ ├── serializer/
│ │ │ │ │ ├── cbor/
│ │ │ │ │ │ ├── cbor.go
│ │ │ │ │ │ ├── direct/
│ │ │ │ │ │ │ └── direct.go
│ │ │ │ │ │ ├── framer.go
│ │ │ │ │ │ ├── internal/
│ │ │ │ │ │ │ └── modes/
│ │ │ │ │ │ │ ├── buffers.go
│ │ │ │ │ │ │ ├── custom.go
│ │ │ │ │ │ │ ├── decode.go
│ │ │ │ │ │ │ ├── diagnostic.go
│ │ │ │ │ │ │ └── encode.go
│ │ │ │ │ │ └── raw.go
│ │ │ │ │ ├── codec_factory.go
│ │ │ │ │ ├── json/
│ │ │ │ │ │ ├── json.go
│ │ │ │ │ │ └── meta.go
│ │ │ │ │ ├── negotiated_codec.go
│ │ │ │ │ ├── protobuf/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ └── protobuf.go
│ │ │ │ │ ├── recognizer/
│ │ │ │ │ │ └── recognizer.go
│ │ │ │ │ ├── streaming/
│ │ │ │ │ │ └── streaming.go
│ │ │ │ │ └── versioning/
│ │ │ │ │ └── versioning.go
│ │ │ │ ├── splice.go
│ │ │ │ ├── swagger_doc_generator.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_proto.go
│ │ │ │ └── zz_generated.deepcopy.go
│ │ │ ├── selection/
│ │ │ │ └── operator.go
│ │ │ ├── types/
│ │ │ │ ├── doc.go
│ │ │ │ ├── namespacedname.go
│ │ │ │ ├── nodename.go
│ │ │ │ ├── patch.go
│ │ │ │ └── uid.go
│ │ │ ├── util/
│ │ │ │ ├── cache/
│ │ │ │ │ ├── expiring.go
│ │ │ │ │ └── lruexpirecache.go
│ │ │ │ ├── diff/
│ │ │ │ │ └── diff.go
│ │ │ │ ├── dump/
│ │ │ │ │ └── dump.go
│ │ │ │ ├── errors/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ └── errors.go
│ │ │ │ ├── framer/
│ │ │ │ │ └── framer.go
│ │ │ │ ├── intstr/
│ │ │ │ │ ├── generated.pb.go
│ │ │ │ │ ├── generated.proto
│ │ │ │ │ ├── instr_fuzz.go
│ │ │ │ │ └── intstr.go
│ │ │ │ ├── json/
│ │ │ │ │ └── json.go
│ │ │ │ ├── managedfields/
│ │ │ │ │ ├── endpoints.yaml
│ │ │ │ │ ├── extract.go
│ │ │ │ │ ├── fieldmanager.go
│ │ │ │ │ ├── gvkparser.go
│ │ │ │ │ ├── internal/
│ │ │ │ │ │ ├── atmostevery.go
│ │ │ │ │ │ ├── buildmanagerinfo.go
│ │ │ │ │ │ ├── capmanagers.go
│ │ │ │ │ │ ├── conflict.go
│ │ │ │ │ │ ├── fieldmanager.go
│ │ │ │ │ │ ├── fields.go
│ │ │ │ │ │ ├── lastapplied.go
│ │ │ │ │ │ ├── lastappliedmanager.go
│ │ │ │ │ │ ├── lastappliedupdater.go
│ │ │ │ │ │ ├── managedfields.go
│ │ │ │ │ │ ├── managedfieldsupdater.go
│ │ │ │ │ │ ├── manager.go
│ │ │ │ │ │ ├── pathelement.go
│ │ │ │ │ │ ├── skipnonapplied.go
│ │ │ │ │ │ ├── stripmeta.go
│ │ │ │ │ │ ├── structuredmerge.go
│ │ │ │ │ │ ├── typeconverter.go
│ │ │ │ │ │ ├── versioncheck.go
│ │ │ │ │ │ └── versionconverter.go
│ │ │ │ │ ├── node.yaml
│ │ │ │ │ ├── pod.yaml
│ │ │ │ │ ├── scalehandler.go
│ │ │ │ │ └── typeconverter.go
│ │ │ │ ├── mergepatch/
│ │ │ │ │ ├── OWNERS
│ │ │ │ │ ├── errors.go
│ │ │ │ │ └── util.go
│ │ │ │ ├── naming/
│ │ │ │ │ └── from_stack.go
│ │ │ │ ├── net/
│ │ │ │ │ ├── http.go
│ │ │ │ │ ├── interface.go
│ │ │ │ │ ├── port_range.go
│ │ │ │ │ ├── port_split.go
│ │ │ │ │ └── util.go
│ │ │ │ ├── runtime/
│ │ │ │ │ └── runtime.go
│ │ │ │ ├── sets/
│ │ │ │ │ ├── byte.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── empty.go
│ │ │ │ │ ├── int.go
│ │ │ │ │ ├── int32.go
│ │ │ │ │ ├── int64.go
│ │ │ │ │ ├── set.go
│ │ │ │ │ └── string.go
│ │ │ │ ├── strategicpatch/
│ │ │ │ │ ├── OWNERS
│ │ │ │ │ ├── errors.go
│ │ │ │ │ ├── meta.go
│ │ │ │ │ ├── patch.go
│ │ │ │ │ └── types.go
│ │ │ │ ├── validation/
│ │ │ │ │ ├── OWNERS
│ │ │ │ │ ├── field/
│ │ │ │ │ │ ├── errors.go
│ │ │ │ │ │ └── path.go
│ │ │ │ │ └── validation.go
│ │ │ │ ├── wait/
│ │ │ │ │ ├── backoff.go
│ │ │ │ │ ├── delay.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── error.go
│ │ │ │ │ ├── loop.go
│ │ │ │ │ ├── poll.go
│ │ │ │ │ ├── timer.go
│ │ │ │ │ └── wait.go
│ │ │ │ └── yaml/
│ │ │ │ └── decoder.go
│ │ │ ├── version/
│ │ │ │ ├── doc.go
│ │ │ │ ├── helpers.go
│ │ │ │ └── types.go
│ │ │ └── watch/
│ │ │ ├── doc.go
│ │ │ ├── filter.go
│ │ │ ├── mux.go
│ │ │ ├── streamwatcher.go
│ │ │ ├── watch.go
│ │ │ └── zz_generated.deepcopy.go
│ │ └── third_party/
│ │ └── forked/
│ │ └── golang/
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ ├── json/
│ │ │ ├── OWNERS
│ │ │ └── fields.go
│ │ └── reflect/
│ │ └── deep_equal.go
│ ├── client-go/
│ │ ├── LICENSE
│ │ ├── applyconfigurations/
│ │ │ ├── OWNERS
│ │ │ ├── admissionregistration/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── auditannotation.go
│ │ │ │ │ ├── expressionwarning.go
│ │ │ │ │ ├── matchcondition.go
│ │ │ │ │ ├── matchresources.go
│ │ │ │ │ ├── mutatingwebhook.go
│ │ │ │ │ ├── mutatingwebhookconfiguration.go
│ │ │ │ │ ├── namedrulewithoperations.go
│ │ │ │ │ ├── paramkind.go
│ │ │ │ │ ├── paramref.go
│ │ │ │ │ ├── rule.go
│ │ │ │ │ ├── rulewithoperations.go
│ │ │ │ │ ├── servicereference.go
│ │ │ │ │ ├── typechecking.go
│ │ │ │ │ ├── validatingadmissionpolicy.go
│ │ │ │ │ ├── validatingadmissionpolicybinding.go
│ │ │ │ │ ├── validatingadmissionpolicybindingspec.go
│ │ │ │ │ ├── validatingadmissionpolicyspec.go
│ │ │ │ │ ├── validatingadmissionpolicystatus.go
│ │ │ │ │ ├── validatingwebhook.go
│ │ │ │ │ ├── validatingwebhookconfiguration.go
│ │ │ │ │ ├── validation.go
│ │ │ │ │ ├── variable.go
│ │ │ │ │ └── webhookclientconfig.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── applyconfiguration.go
│ │ │ │ │ ├── auditannotation.go
│ │ │ │ │ ├── expressionwarning.go
│ │ │ │ │ ├── jsonpatch.go
│ │ │ │ │ ├── matchcondition.go
│ │ │ │ │ ├── matchresources.go
│ │ │ │ │ ├── mutatingadmissionpolicy.go
│ │ │ │ │ ├── mutatingadmissionpolicybinding.go
│ │ │ │ │ ├── mutatingadmissionpolicybindingspec.go
│ │ │ │ │ ├── mutatingadmissionpolicyspec.go
│ │ │ │ │ ├── mutation.go
│ │ │ │ │ ├── namedrulewithoperations.go
│ │ │ │ │ ├── paramkind.go
│ │ │ │ │ ├── paramref.go
│ │ │ │ │ ├── typechecking.go
│ │ │ │ │ ├── validatingadmissionpolicy.go
│ │ │ │ │ ├── validatingadmissionpolicybinding.go
│ │ │ │ │ ├── validatingadmissionpolicybindingspec.go
│ │ │ │ │ ├── validatingadmissionpolicyspec.go
│ │ │ │ │ ├── validatingadmissionpolicystatus.go
│ │ │ │ │ ├── validation.go
│ │ │ │ │ └── variable.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── auditannotation.go
│ │ │ │ ├── expressionwarning.go
│ │ │ │ ├── matchcondition.go
│ │ │ │ ├── matchresources.go
│ │ │ │ ├── mutatingwebhook.go
│ │ │ │ ├── mutatingwebhookconfiguration.go
│ │ │ │ ├── namedrulewithoperations.go
│ │ │ │ ├── paramkind.go
│ │ │ │ ├── paramref.go
│ │ │ │ ├── servicereference.go
│ │ │ │ ├── typechecking.go
│ │ │ │ ├── validatingadmissionpolicy.go
│ │ │ │ ├── validatingadmissionpolicybinding.go
│ │ │ │ ├── validatingadmissionpolicybindingspec.go
│ │ │ │ ├── validatingadmissionpolicyspec.go
│ │ │ │ ├── validatingadmissionpolicystatus.go
│ │ │ │ ├── validatingwebhook.go
│ │ │ │ ├── validatingwebhookconfiguration.go
│ │ │ │ ├── validation.go
│ │ │ │ ├── variable.go
│ │ │ │ └── webhookclientconfig.go
│ │ │ ├── apiserverinternal/
│ │ │ │ └── v1alpha1/
│ │ │ │ ├── serverstorageversion.go
│ │ │ │ ├── storageversion.go
│ │ │ │ ├── storageversioncondition.go
│ │ │ │ └── storageversionstatus.go
│ │ │ ├── apps/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── controllerrevision.go
│ │ │ │ │ ├── daemonset.go
│ │ │ │ │ ├── daemonsetcondition.go
│ │ │ │ │ ├── daemonsetspec.go
│ │ │ │ │ ├── daemonsetstatus.go
│ │ │ │ │ ├── daemonsetupdatestrategy.go
│ │ │ │ │ ├── deployment.go
│ │ │ │ │ ├── deploymentcondition.go
│ │ │ │ │ ├── deploymentspec.go
│ │ │ │ │ ├── deploymentstatus.go
│ │ │ │ │ ├── deploymentstrategy.go
│ │ │ │ │ ├── replicaset.go
│ │ │ │ │ ├── replicasetcondition.go
│ │ │ │ │ ├── replicasetspec.go
│ │ │ │ │ ├── replicasetstatus.go
│ │ │ │ │ ├── rollingupdatedaemonset.go
│ │ │ │ │ ├── rollingupdatedeployment.go
│ │ │ │ │ ├── rollingupdatestatefulsetstrategy.go
│ │ │ │ │ ├── statefulset.go
│ │ │ │ │ ├── statefulsetcondition.go
│ │ │ │ │ ├── statefulsetordinals.go
│ │ │ │ │ ├── statefulsetpersistentvolumeclaimretentionpolicy.go
│ │ │ │ │ ├── statefulsetspec.go
│ │ │ │ │ ├── statefulsetstatus.go
│ │ │ │ │ └── statefulsetupdatestrategy.go
│ │ │ │ ├── v1beta1/
│ │ │ │ │ ├── controllerrevision.go
│ │ │ │ │ ├── deployment.go
│ │ │ │ │ ├── deploymentcondition.go
│ │ │ │ │ ├── deploymentspec.go
│ │ │ │ │ ├── deploymentstatus.go
│ │ │ │ │ ├── deploymentstrategy.go
│ │ │ │ │ ├── rollbackconfig.go
│ │ │ │ │ ├── rollingupdatedeployment.go
│ │ │ │ │ ├── rollingupdatestatefulsetstrategy.go
│ │ │ │ │ ├── statefulset.go
│ │ │ │ │ ├── statefulsetcondition.go
│ │ │ │ │ ├── statefulsetordinals.go
│ │ │ │ │ ├── statefulsetpersistentvolumeclaimretentionpolicy.go
│ │ │ │ │ ├── statefulsetspec.go
│ │ │ │ │ ├── statefulsetstatus.go
│ │ │ │ │ └── statefulsetupdatestrategy.go
│ │ │ │ └── v1beta2/
│ │ │ │ ├── controllerrevision.go
│ │ │ │ ├── daemonset.go
│ │ │ │ ├── daemonsetcondition.go
│ │ │ │ ├── daemonsetspec.go
│ │ │ │ ├── daemonsetstatus.go
│ │ │ │ ├── daemonsetupdatestrategy.go
│ │ │ │ ├── deployment.go
│ │ │ │ ├── deploymentcondition.go
│ │ │ │ ├── deploymentspec.go
│ │ │ │ ├── deploymentstatus.go
│ │ │ │ ├── deploymentstrategy.go
│ │ │ │ ├── replicaset.go
│ │ │ │ ├── replicasetcondition.go
│ │ │ │ ├── replicasetspec.go
│ │ │ │ ├── replicasetstatus.go
│ │ │ │ ├── rollingupdatedaemonset.go
│ │ │ │ ├── rollingupdatedeployment.go
│ │ │ │ ├── rollingupdatestatefulsetstrategy.go
│ │ │ │ ├── scale.go
│ │ │ │ ├── statefulset.go
│ │ │ │ ├── statefulsetcondition.go
│ │ │ │ ├── statefulsetordinals.go
│ │ │ │ ├── statefulsetpersistentvolumeclaimretentionpolicy.go
│ │ │ │ ├── statefulsetspec.go
│ │ │ │ ├── statefulsetstatus.go
│ │ │ │ └── statefulsetupdatestrategy.go
│ │ │ ├── autoscaling/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── crossversionobjectreference.go
│ │ │ │ │ ├── horizontalpodautoscaler.go
│ │ │ │ │ ├── horizontalpodautoscalerspec.go
│ │ │ │ │ ├── horizontalpodautoscalerstatus.go
│ │ │ │ │ ├── scale.go
│ │ │ │ │ ├── scalespec.go
│ │ │ │ │ └── scalestatus.go
│ │ │ │ ├── v2/
│ │ │ │ │ ├── containerresourcemetricsource.go
│ │ │ │ │ ├── containerresourcemetricstatus.go
│ │ │ │ │ ├── crossversionobjectreference.go
│ │ │ │ │ ├── externalmetricsource.go
│ │ │ │ │ ├── externalmetricstatus.go
│ │ │ │ │ ├── horizontalpodautoscaler.go
│ │ │ │ │ ├── horizontalpodautoscalerbehavior.go
│ │ │ │ │ ├── horizontalpodautoscalercondition.go
│ │ │ │ │ ├── horizontalpodautoscalerspec.go
│ │ │ │ │ ├── horizontalpodautoscalerstatus.go
│ │ │ │ │ ├── hpascalingpolicy.go
│ │ │ │ │ ├── hpascalingrules.go
│ │ │ │ │ ├── metricidentifier.go
│ │ │ │ │ ├── metricspec.go
│ │ │ │ │ ├── metricstatus.go
│ │ │ │ │ ├── metrictarget.go
│ │ │ │ │ ├── metricvaluestatus.go
│ │ │ │ │ ├── objectmetricsource.go
│ │ │ │ │ ├── objectmetricstatus.go
│ │ │ │ │ ├── podsmetricsource.go
│ │ │ │ │ ├── podsmetricstatus.go
│ │ │ │ │ ├── resourcemetricsource.go
│ │ │ │ │ └── resourcemetricstatus.go
│ │ │ │ ├── v2beta1/
│ │ │ │ │ ├── containerresourcemetricsource.go
│ │ │ │ │ ├── containerresourcemetricstatus.go
│ │ │ │ │ ├── crossversionobjectreference.go
│ │ │ │ │ ├── externalmetricsource.go
│ │ │ │ │ ├── externalmetricstatus.go
│ │ │ │ │ ├── horizontalpodautoscaler.go
│ │ │ │ │ ├── horizontalpodautoscalercondition.go
│ │ │ │ │ ├── horizontalpodautoscalerspec.go
│ │ │ │ │ ├── horizontalpodautoscalerstatus.go
│ │ │ │ │ ├── metricspec.go
│ │ │ │ │ ├── metricstatus.go
│ │ │ │ │ ├── objectmetricsource.go
│ │ │ │ │ ├── objectmetricstatus.go
│ │ │ │ │ ├── podsmetricsource.go
│ │ │ │ │ ├── podsmetricstatus.go
│ │ │ │ │ ├── resourcemetricsource.go
│ │ │ │ │ └── resourcemetricstatus.go
│ │ │ │ └── v2beta2/
│ │ │ │ ├── containerresourcemetricsource.go
│ │ │ │ ├── containerresourcemetricstatus.go
│ │ │ │ ├── crossversionobjectreference.go
│ │ │ │ ├── externalmetricsource.go
│ │ │ │ ├── externalmetricstatus.go
│ │ │ │ ├── horizontalpodautoscaler.go
│ │ │ │ ├── horizontalpodautoscalerbehavior.go
│ │ │ │ ├── horizontalpodautoscalercondition.go
│ │ │ │ ├── horizontalpodautoscalerspec.go
│ │ │ │ ├── horizontalpodautoscalerstatus.go
│ │ │ │ ├── hpascalingpolicy.go
│ │ │ │ ├── hpascalingrules.go
│ │ │ │ ├── metricidentifier.go
│ │ │ │ ├── metricspec.go
│ │ │ │ ├── metricstatus.go
│ │ │ │ ├── metrictarget.go
│ │ │ │ ├── metricvaluestatus.go
│ │ │ │ ├── objectmetricsource.go
│ │ │ │ ├── objectmetricstatus.go
│ │ │ │ ├── podsmetricsource.go
│ │ │ │ ├── podsmetricstatus.go
│ │ │ │ ├── resourcemetricsource.go
│ │ │ │ └── resourcemetricstatus.go
│ │ │ ├── batch/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── cronjob.go
│ │ │ │ │ ├── cronjobspec.go
│ │ │ │ │ ├── cronjobstatus.go
│ │ │ │ │ ├── job.go
│ │ │ │ │ ├── jobcondition.go
│ │ │ │ │ ├── jobspec.go
│ │ │ │ │ ├── jobstatus.go
│ │ │ │ │ ├── jobtemplatespec.go
│ │ │ │ │ ├── podfailurepolicy.go
│ │ │ │ │ ├── podfailurepolicyonexitcodesrequirement.go
│ │ │ │ │ ├── podfailurepolicyonpodconditionspattern.go
│ │ │ │ │ ├── podfailurepolicyrule.go
│ │ │ │ │ ├── successpolicy.go
│ │ │ │ │ ├── successpolicyrule.go
│ │ │ │ │ └── uncountedterminatedpods.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── cronjob.go
│ │ │ │ ├── cronjobspec.go
│ │ │ │ ├── cronjobstatus.go
│ │ │ │ └── jobtemplatespec.go
│ │ │ ├── certificates/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── certificatesigningrequest.go
│ │ │ │ │ ├── certificatesigningrequestcondition.go
│ │ │ │ │ ├── certificatesigningrequestspec.go
│ │ │ │ │ └── certificatesigningrequeststatus.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── clustertrustbundle.go
│ │ │ │ │ └── clustertrustbundlespec.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── certificatesigningrequest.go
│ │ │ │ ├── certificatesigningrequestcondition.go
│ │ │ │ ├── certificatesigningrequestspec.go
│ │ │ │ └── certificatesigningrequeststatus.go
│ │ │ ├── coordination/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── lease.go
│ │ │ │ │ └── leasespec.go
│ │ │ │ ├── v1alpha2/
│ │ │ │ │ ├── leasecandidate.go
│ │ │ │ │ └── leasecandidatespec.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── lease.go
│ │ │ │ └── leasespec.go
│ │ │ ├── core/
│ │ │ │ └── v1/
│ │ │ │ ├── affinity.go
│ │ │ │ ├── apparmorprofile.go
│ │ │ │ ├── attachedvolume.go
│ │ │ │ ├── awselasticblockstorevolumesource.go
│ │ │ │ ├── azurediskvolumesource.go
│ │ │ │ ├── azurefilepersistentvolumesource.go
│ │ │ │ ├── azurefilevolumesource.go
│ │ │ │ ├── capabilities.go
│ │ │ │ ├── cephfspersistentvolumesource.go
│ │ │ │ ├── cephfsvolumesource.go
│ │ │ │ ├── cinderpersistentvolumesource.go
│ │ │ │ ├── cindervolumesource.go
│ │ │ │ ├── clientipconfig.go
│ │ │ │ ├── clustertrustbundleprojection.go
│ │ │ │ ├── componentcondition.go
│ │ │ │ ├── componentstatus.go
│ │ │ │ ├── configmap.go
│ │ │ │ ├── configmapenvsource.go
│ │ │ │ ├── configmapkeyselector.go
│ │ │ │ ├── configmapnodeconfigsource.go
│ │ │ │ ├── configmapprojection.go
│ │ │ │ ├── configmapvolumesource.go
│ │ │ │ ├── container.go
│ │ │ │ ├── containerimage.go
│ │ │ │ ├── containerport.go
│ │ │ │ ├── containerresizepolicy.go
│ │ │ │ ├── containerstate.go
│ │ │ │ ├── containerstaterunning.go
│ │ │ │ ├── containerstateterminated.go
│ │ │ │ ├── containerstatewaiting.go
│ │ │ │ ├── containerstatus.go
│ │ │ │ ├── containeruser.go
│ │ │ │ ├── csipersistentvolumesource.go
│ │ │ │ ├── csivolumesource.go
│ │ │ │ ├── daemonendpoint.go
│ │ │ │ ├── downwardapiprojection.go
│ │ │ │ ├── downwardapivolumefile.go
│ │ │ │ ├── downwardapivolumesource.go
│ │ │ │ ├── emptydirvolumesource.go
│ │ │ │ ├── endpointaddress.go
│ │ │ │ ├── endpointport.go
│ │ │ │ ├── endpoints.go
│ │ │ │ ├── endpointsubset.go
│ │ │ │ ├── envfromsource.go
│ │ │ │ ├── envvar.go
│ │ │ │ ├── envvarsource.go
│ │ │ │ ├── ephemeralcontainer.go
│ │ │ │ ├── ephemeralcontainercommon.go
│ │ │ │ ├── ephemeralvolumesource.go
│ │ │ │ ├── event.go
│ │ │ │ ├── eventseries.go
│ │ │ │ ├── eventsource.go
│ │ │ │ ├── execaction.go
│ │ │ │ ├── fcvolumesource.go
│ │ │ │ ├── flexpersistentvolumesource.go
│ │ │ │ ├── flexvolumesource.go
│ │ │ │ ├── flockervolumesource.go
│ │ │ │ ├── gcepersistentdiskvolumesource.go
│ │ │ │ ├── gitrepovolumesource.go
│ │ │ │ ├── glusterfspersistentvolumesource.go
│ │ │ │ ├── glusterfsvolumesource.go
│ │ │ │ ├── grpcaction.go
│ │ │ │ ├── hostalias.go
│ │ │ │ ├── hostip.go
│ │ │ │ ├── hostpathvolumesource.go
│ │ │ │ ├── httpgetaction.go
│ │ │ │ ├── httpheader.go
│ │ │ │ ├── imagevolumesource.go
│ │ │ │ ├── iscsipersistentvolumesource.go
│ │ │ │ ├── iscsivolumesource.go
│ │ │ │ ├── keytopath.go
│ │ │ │ ├── lifecycle.go
│ │ │ │ ├── lifecyclehandler.go
│ │ │ │ ├── limitrange.go
│ │ │ │ ├── limitrangeitem.go
│ │ │ │ ├── limitrangespec.go
│ │ │ │ ├── linuxcontaineruser.go
│ │ │ │ ├── loadbalanceringress.go
│ │ │ │ ├── loadbalancerstatus.go
│ │ │ │ ├── localobjectreference.go
│ │ │ │ ├── localvolumesource.go
│ │ │ │ ├── modifyvolumestatus.go
│ │ │ │ ├── namespace.go
│ │ │ │ ├── namespacecondition.go
│ │ │ │ ├── namespacespec.go
│ │ │ │ ├── namespacestatus.go
│ │ │ │ ├── nfsvolumesource.go
│ │ │ │ ├── node.go
│ │ │ │ ├── nodeaddress.go
│ │ │ │ ├── nodeaffinity.go
│ │ │ │ ├── nodecondition.go
│ │ │ │ ├── nodeconfigsource.go
│ │ │ │ ├── nodeconfigstatus.go
│ │ │ │ ├── nodedaemonendpoints.go
│ │ │ │ ├── nodefeatures.go
│ │ │ │ ├── noderuntimehandler.go
│ │ │ │ ├── noderuntimehandlerfeatures.go
│ │ │ │ ├── nodeselector.go
│ │ │ │ ├── nodeselectorrequirement.go
│ │ │ │ ├── nodeselectorterm.go
│ │ │ │ ├── nodespec.go
│ │ │ │ ├── nodestatus.go
│ │ │ │ ├── nodesysteminfo.go
│ │ │ │ ├── objectfieldselector.go
│ │ │ │ ├── objectreference.go
│ │ │ │ ├── persistentvolume.go
│ │ │ │ ├── persistentvolumeclaim.go
│ │ │ │ ├── persistentvolumeclaimcondition.go
│ │ │ │ ├── persistentvolumeclaimspec.go
│ │ │ │ ├── persistentvolumeclaimstatus.go
│ │ │ │ ├── persistentvolumeclaimtemplate.go
│ │ │ │ ├── persistentvolumeclaimvolumesource.go
│ │ │ │ ├── persistentvolumesource.go
│ │ │ │ ├── persistentvolumespec.go
│ │ │ │ ├── persistentvolumestatus.go
│ │ │ │ ├── photonpersistentdiskvolumesource.go
│ │ │ │ ├── pod.go
│ │ │ │ ├── podaffinity.go
│ │ │ │ ├── podaffinityterm.go
│ │ │ │ ├── podantiaffinity.go
│ │ │ │ ├── podcondition.go
│ │ │ │ ├── poddnsconfig.go
│ │ │ │ ├── poddnsconfigoption.go
│ │ │ │ ├── podip.go
│ │ │ │ ├── podos.go
│ │ │ │ ├── podreadinessgate.go
│ │ │ │ ├── podresourceclaim.go
│ │ │ │ ├── podresourceclaimstatus.go
│ │ │ │ ├── podschedulinggate.go
│ │ │ │ ├── podsecuritycontext.go
│ │ │ │ ├── podspec.go
│ │ │ │ ├── podstatus.go
│ │ │ │ ├── podtemplate.go
│ │ │ │ ├── podtemplatespec.go
│ │ │ │ ├── portstatus.go
│ │ │ │ ├── portworxvolumesource.go
│ │ │ │ ├── preferredschedulingterm.go
│ │ │ │ ├── probe.go
│ │ │ │ ├── probehandler.go
│ │ │ │ ├── projectedvolumesource.go
│ │ │ │ ├── quobytevolumesource.go
│ │ │ │ ├── rbdpersistentvolumesource.go
│ │ │ │ ├── rbdvolumesource.go
│ │ │ │ ├── replicationcontroller.go
│ │ │ │ ├── replicationcontrollercondition.go
│ │ │ │ ├── replicationcontrollerspec.go
│ │ │ │ ├── replicationcontrollerstatus.go
│ │ │ │ ├── resourceclaim.go
│ │ │ │ ├── resourcefieldselector.go
│ │ │ │ ├── resourcehealth.go
│ │ │ │ ├── resourcequota.go
│ │ │ │ ├── resourcequotaspec.go
│ │ │ │ ├── resourcequotastatus.go
│ │ │ │ ├── resourcerequirements.go
│ │ │ │ ├── resourcestatus.go
│ │ │ │ ├── scaleiopersistentvolumesource.go
│ │ │ │ ├── scaleiovolumesource.go
│ │ │ │ ├── scopedresourceselectorrequirement.go
│ │ │ │ ├── scopeselector.go
│ │ │ │ ├── seccompprofile.go
│ │ │ │ ├── secret.go
│ │ │ │ ├── secretenvsource.go
│ │ │ │ ├── secretkeyselector.go
│ │ │ │ ├── secretprojection.go
│ │ │ │ ├── secretreference.go
│ │ │ │ ├── secretvolumesource.go
│ │ │ │ ├── securitycontext.go
│ │ │ │ ├── selinuxoptions.go
│ │ │ │ ├── service.go
│ │ │ │ ├── serviceaccount.go
│ │ │ │ ├── serviceaccounttokenprojection.go
│ │ │ │ ├── serviceport.go
│ │ │ │ ├── servicespec.go
│ │ │ │ ├── servicestatus.go
│ │ │ │ ├── sessionaffinityconfig.go
│ │ │ │ ├── sleepaction.go
│ │ │ │ ├── storageospersistentvolumesource.go
│ │ │ │ ├── storageosvolumesource.go
│ │ │ │ ├── sysctl.go
│ │ │ │ ├── taint.go
│ │ │ │ ├── tcpsocketaction.go
│ │ │ │ ├── toleration.go
│ │ │ │ ├── topologyselectorlabelrequirement.go
│ │ │ │ ├── topologyselectorterm.go
│ │ │ │ ├── topologyspreadconstraint.go
│ │ │ │ ├── typedlocalobjectreference.go
│ │ │ │ ├── typedobjectreference.go
│ │ │ │ ├── volume.go
│ │ │ │ ├── volumedevice.go
│ │ │ │ ├── volumemount.go
│ │ │ │ ├── volumemountstatus.go
│ │ │ │ ├── volumenodeaffinity.go
│ │ │ │ ├── volumeprojection.go
│ │ │ │ ├── volumeresourcerequirements.go
│ │ │ │ ├── volumesource.go
│ │ │ │ ├── vspherevirtualdiskvolumesource.go
│ │ │ │ ├── weightedpodaffinityterm.go
│ │ │ │ └── windowssecuritycontextoptions.go
│ │ │ ├── discovery/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── endpoint.go
│ │ │ │ │ ├── endpointconditions.go
│ │ │ │ │ ├── endpointhints.go
│ │ │ │ │ ├── endpointport.go
│ │ │ │ │ ├── endpointslice.go
│ │ │ │ │ └── forzone.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── endpoint.go
│ │ │ │ ├── endpointconditions.go
│ │ │ │ ├── endpointhints.go
│ │ │ │ ├── endpointport.go
│ │ │ │ ├── endpointslice.go
│ │ │ │ └── forzone.go
│ │ │ ├── doc.go
│ │ │ ├── events/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── event.go
│ │ │ │ │ └── eventseries.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── event.go
│ │ │ │ └── eventseries.go
│ │ │ ├── extensions/
│ │ │ │ └── v1beta1/
│ │ │ │ ├── daemonset.go
│ │ │ │ ├── daemonsetcondition.go
│ │ │ │ ├── daemonsetspec.go
│ │ │ │ ├── daemonsetstatus.go
│ │ │ │ ├── daemonsetupdatestrategy.go
│ │ │ │ ├── deployment.go
│ │ │ │ ├── deploymentcondition.go
│ │ │ │ ├── deploymentspec.go
│ │ │ │ ├── deploymentstatus.go
│ │ │ │ ├── deploymentstrategy.go
│ │ │ │ ├── httpingresspath.go
│ │ │ │ ├── httpingressrulevalue.go
│ │ │ │ ├── ingress.go
│ │ │ │ ├── ingressbackend.go
│ │ │ │ ├── ingressloadbalanceringress.go
│ │ │ │ ├── ingressloadbalancerstatus.go
│ │ │ │ ├── ingressportstatus.go
│ │ │ │ ├── ingressrule.go
│ │ │ │ ├── ingressrulevalue.go
│ │ │ │ ├── ingressspec.go
│ │ │ │ ├── ingressstatus.go
│ │ │ │ ├── ingresstls.go
│ │ │ │ ├── ipblock.go
│ │ │ │ ├── networkpolicy.go
│ │ │ │ ├── networkpolicyegressrule.go
│ │ │ │ ├── networkpolicyingressrule.go
│ │ │ │ ├── networkpolicypeer.go
│ │ │ │ ├── networkpolicyport.go
│ │ │ │ ├── networkpolicyspec.go
│ │ │ │ ├── replicaset.go
│ │ │ │ ├── replicasetcondition.go
│ │ │ │ ├── replicasetspec.go
│ │ │ │ ├── replicasetstatus.go
│ │ │ │ ├── rollbackconfig.go
│ │ │ │ ├── rollingupdatedaemonset.go
│ │ │ │ ├── rollingupdatedeployment.go
│ │ │ │ └── scale.go
│ │ │ ├── flowcontrol/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── exemptprioritylevelconfiguration.go
│ │ │ │ │ ├── flowdistinguishermethod.go
│ │ │ │ │ ├── flowschema.go
│ │ │ │ │ ├── flowschemacondition.go
│ │ │ │ │ ├── flowschemaspec.go
│ │ │ │ │ ├── flowschemastatus.go
│ │ │ │ │ ├── groupsubject.go
│ │ │ │ │ ├── limitedprioritylevelconfiguration.go
│ │ │ │ │ ├── limitresponse.go
│ │ │ │ │ ├── nonresourcepolicyrule.go
│ │ │ │ │ ├── policyruleswithsubjects.go
│ │ │ │ │ ├── prioritylevelconfiguration.go
│ │ │ │ │ ├── prioritylevelconfigurationcondition.go
│ │ │ │ │ ├── prioritylevelconfigurationreference.go
│ │ │ │ │ ├── prioritylevelconfigurationspec.go
│ │ │ │ │ ├── prioritylevelconfigurationstatus.go
│ │ │ │ │ ├── queuingconfiguration.go
│ │ │ │ │ ├── resourcepolicyrule.go
│ │ │ │ │ ├── serviceaccountsubject.go
│ │ │ │ │ ├── subject.go
│ │ │ │ │ └── usersubject.go
│ │ │ │ ├── v1beta1/
│ │ │ │ │ ├── exemptprioritylevelconfiguration.go
│ │ │ │ │ ├── flowdistinguishermethod.go
│ │ │ │ │ ├── flowschema.go
│ │ │ │ │ ├── flowschemacondition.go
│ │ │ │ │ ├── flowschemaspec.go
│ │ │ │ │ ├── flowschemastatus.go
│ │ │ │ │ ├── groupsubject.go
│ │ │ │ │ ├── limitedprioritylevelconfiguration.go
│ │ │ │ │ ├── limitresponse.go
│ │ │ │ │ ├── nonresourcepolicyrule.go
│ │ │ │ │ ├── policyruleswithsubjects.go
│ │ │ │ │ ├── prioritylevelconfiguration.go
│ │ │ │ │ ├── prioritylevelconfigurationcondition.go
│ │ │ │ │ ├── prioritylevelconfigurationreference.go
│ │ │ │ │ ├── prioritylevelconfigurationspec.go
│ │ │ │ │ ├── prioritylevelconfigurationstatus.go
│ │ │ │ │ ├── queuingconfiguration.go
│ │ │ │ │ ├── resourcepolicyrule.go
│ │ │ │ │ ├── serviceaccountsubject.go
│ │ │ │ │ ├── subject.go
│ │ │ │ │ └── usersubject.go
│ │ │ │ ├── v1beta2/
│ │ │ │ │ ├── exemptprioritylevelconfiguration.go
│ │ │ │ │ ├── flowdistinguishermethod.go
│ │ │ │ │ ├── flowschema.go
│ │ │ │ │ ├── flowschemacondition.go
│ │ │ │ │ ├── flowschemaspec.go
│ │ │ │ │ ├── flowschemastatus.go
│ │ │ │ │ ├── groupsubject.go
│ │ │ │ │ ├── limitedprioritylevelconfiguration.go
│ │ │ │ │ ├── limitresponse.go
│ │ │ │ │ ├── nonresourcepolicyrule.go
│ │ │ │ │ ├── policyruleswithsubjects.go
│ │ │ │ │ ├── prioritylevelconfiguration.go
│ │ │ │ │ ├── prioritylevelconfigurationcondition.go
│ │ │ │ │ ├── prioritylevelconfigurationreference.go
│ │ │ │ │ ├── prioritylevelconfigurationspec.go
│ │ │ │ │ ├── prioritylevelconfigurationstatus.go
│ │ │ │ │ ├── queuingconfiguration.go
│ │ │ │ │ ├── resourcepolicyrule.go
│ │ │ │ │ ├── serviceaccountsubject.go
│ │ │ │ │ ├── subject.go
│ │ │ │ │ └── usersubject.go
│ │ │ │ └── v1beta3/
│ │ │ │ ├── exemptprioritylevelconfiguration.go
│ │ │ │ ├── flowdistinguishermethod.go
│ │ │ │ ├── flowschema.go
│ │ │ │ ├── flowschemacondition.go
│ │ │ │ ├── flowschemaspec.go
│ │ │ │ ├── flowschemastatus.go
│ │ │ │ ├── groupsubject.go
│ │ │ │ ├── limitedprioritylevelconfiguration.go
│ │ │ │ ├── limitresponse.go
│ │ │ │ ├── nonresourcepolicyrule.go
│ │ │ │ ├── policyruleswithsubjects.go
│ │ │ │ ├── prioritylevelconfiguration.go
│ │ │ │ ├── prioritylevelconfigurationcondition.go
│ │ │ │ ├── prioritylevelconfigurationreference.go
│ │ │ │ ├── prioritylevelconfigurationspec.go
│ │ │ │ ├── prioritylevelconfigurationstatus.go
│ │ │ │ ├── queuingconfiguration.go
│ │ │ │ ├── resourcepolicyrule.go
│ │ │ │ ├── serviceaccountsubject.go
│ │ │ │ ├── subject.go
│ │ │ │ └── usersubject.go
│ │ │ ├── imagepolicy/
│ │ │ │ └── v1alpha1/
│ │ │ │ ├── imagereview.go
│ │ │ │ ├── imagereviewcontainerspec.go
│ │ │ │ ├── imagereviewspec.go
│ │ │ │ └── imagereviewstatus.go
│ │ │ ├── internal/
│ │ │ │ └── internal.go
│ │ │ ├── meta/
│ │ │ │ └── v1/
│ │ │ │ ├── condition.go
│ │ │ │ ├── deleteoptions.go
│ │ │ │ ├── labelselector.go
│ │ │ │ ├── labelselectorrequirement.go
│ │ │ │ ├── managedfieldsentry.go
│ │ │ │ ├── objectmeta.go
│ │ │ │ ├── ownerreference.go
│ │ │ │ ├── preconditions.go
│ │ │ │ ├── typemeta.go
│ │ │ │ └── unstructured.go
│ │ │ ├── networking/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── httpingresspath.go
│ │ │ │ │ ├── httpingressrulevalue.go
│ │ │ │ │ ├── ingress.go
│ │ │ │ │ ├── ingressbackend.go
│ │ │ │ │ ├── ingressclass.go
│ │ │ │ │ ├── ingressclassparametersreference.go
│ │ │ │ │ ├── ingressclassspec.go
│ │ │ │ │ ├── ingressloadbalanceringress.go
│ │ │ │ │ ├── ingressloadbalancerstatus.go
│ │ │ │ │ ├── ingressportstatus.go
│ │ │ │ │ ├── ingressrule.go
│ │ │ │ │ ├── ingressrulevalue.go
│ │ │ │ │ ├── ingressservicebackend.go
│ │ │ │ │ ├── ingressspec.go
│ │ │ │ │ ├── ingressstatus.go
│ │ │ │ │ ├── ingresstls.go
│ │ │ │ │ ├── ipblock.go
│ │ │ │ │ ├── networkpolicy.go
│ │ │ │ │ ├── networkpolicyegressrule.go
│ │ │ │ │ ├── networkpolicyingressrule.go
│ │ │ │ │ ├── networkpolicypeer.go
│ │ │ │ │ ├── networkpolicyport.go
│ │ │ │ │ ├── networkpolicyspec.go
│ │ │ │ │ └── servicebackendport.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── ipaddress.go
│ │ │ │ │ ├── ipaddressspec.go
│ │ │ │ │ ├── parentreference.go
│ │ │ │ │ ├── servicecidr.go
│ │ │ │ │ ├── servicecidrspec.go
│ │ │ │ │ └── servicecidrstatus.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── httpingresspath.go
│ │ │ │ ├── httpingressrulevalue.go
│ │ │ │ ├── ingress.go
│ │ │ │ ├── ingressbackend.go
│ │ │ │ ├── ingressclass.go
│ │ │ │ ├── ingressclassparametersreference.go
│ │ │ │ ├── ingressclassspec.go
│ │ │ │ ├── ingressloadbalanceringress.go
│ │ │ │ ├── ingressloadbalancerstatus.go
│ │ │ │ ├── ingressportstatus.go
│ │ │ │ ├── ingressrule.go
│ │ │ │ ├── ingressrulevalue.go
│ │ │ │ ├── ingressspec.go
│ │ │ │ ├── ingressstatus.go
│ │ │ │ ├── ingresstls.go
│ │ │ │ ├── ipaddress.go
│ │ │ │ ├── ipaddressspec.go
│ │ │ │ ├── parentreference.go
│ │ │ │ ├── servicecidr.go
│ │ │ │ ├── servicecidrspec.go
│ │ │ │ └── servicecidrstatus.go
│ │ │ ├── node/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── overhead.go
│ │ │ │ │ ├── runtimeclass.go
│ │ │ │ │ └── scheduling.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── overhead.go
│ │ │ │ │ ├── runtimeclass.go
│ │ │ │ │ ├── runtimeclassspec.go
│ │ │ │ │ └── scheduling.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── overhead.go
│ │ │ │ ├── runtimeclass.go
│ │ │ │ └── scheduling.go
│ │ │ ├── policy/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── eviction.go
│ │ │ │ │ ├── poddisruptionbudget.go
│ │ │ │ │ ├── poddisruptionbudgetspec.go
│ │ │ │ │ └── poddisruptionbudgetstatus.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── eviction.go
│ │ │ │ ├── poddisruptionbudget.go
│ │ │ │ ├── poddisruptionbudgetspec.go
│ │ │ │ └── poddisruptionbudgetstatus.go
│ │ │ ├── rbac/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── aggregationrule.go
│ │ │ │ │ ├── clusterrole.go
│ │ │ │ │ ├── clusterrolebinding.go
│ │ │ │ │ ├── policyrule.go
│ │ │ │ │ ├── role.go
│ │ │ │ │ ├── rolebinding.go
│ │ │ │ │ ├── roleref.go
│ │ │ │ │ └── subject.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── aggregationrule.go
│ │ │ │ │ ├── clusterrole.go
│ │ │ │ │ ├── clusterrolebinding.go
│ │ │ │ │ ├── policyrule.go
│ │ │ │ │ ├── role.go
│ │ │ │ │ ├── rolebinding.go
│ │ │ │ │ ├── roleref.go
│ │ │ │ │ └── subject.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── aggregationrule.go
│ │ │ │ ├── clusterrole.go
│ │ │ │ ├── clusterrolebinding.go
│ │ │ │ ├── policyrule.go
│ │ │ │ ├── role.go
│ │ │ │ ├── rolebinding.go
│ │ │ │ ├── roleref.go
│ │ │ │ └── subject.go
│ │ │ ├── resource/
│ │ │ │ ├── v1alpha3/
│ │ │ │ │ ├── allocateddevicestatus.go
│ │ │ │ │ ├── allocationresult.go
│ │ │ │ │ ├── basicdevice.go
│ │ │ │ │ ├── celdeviceselector.go
│ │ │ │ │ ├── device.go
│ │ │ │ │ ├── deviceallocationconfiguration.go
│ │ │ │ │ ├── deviceallocationresult.go
│ │ │ │ │ ├── deviceattribute.go
│ │ │ │ │ ├── deviceclaim.go
│ │ │ │ │ ├── deviceclaimconfiguration.go
│ │ │ │ │ ├── deviceclass.go
│ │ │ │ │ ├── deviceclassconfiguration.go
│ │ │ │ │ ├── deviceclassspec.go
│ │ │ │ │ ├── deviceconfiguration.go
│ │ │ │ │ ├── deviceconstraint.go
│ │ │ │ │ ├── devicerequest.go
│ │ │ │ │ ├── devicerequestallocationresult.go
│ │ │ │ │ ├── deviceselector.go
│ │ │ │ │ ├── networkdevicedata.go
│ │ │ │ │ ├── opaquedeviceconfiguration.go
│ │ │ │ │ ├── resourceclaim.go
│ │ │ │ │ ├── resourceclaimconsumerreference.go
│ │ │ │ │ ├── resourceclaimspec.go
│ │ │ │ │ ├── resourceclaimstatus.go
│ │ │ │ │ ├── resourceclaimtemplate.go
│ │ │ │ │ ├── resourceclaimtemplatespec.go
│ │ │ │ │ ├── resourcepool.go
│ │ │ │ │ ├── resourceslice.go
│ │ │ │ │ └── resourceslicespec.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── allocateddevicestatus.go
│ │ │ │ ├── allocationresult.go
│ │ │ │ ├── basicdevice.go
│ │ │ │ ├── celdeviceselector.go
│ │ │ │ ├── device.go
│ │ │ │ ├── deviceallocationconfiguration.go
│ │ │ │ ├── deviceallocationresult.go
│ │ │ │ ├── deviceattribute.go
│ │ │ │ ├── devicecapacity.go
│ │ │ │ ├── deviceclaim.go
│ │ │ │ ├── deviceclaimconfiguration.go
│ │ │ │ ├── deviceclass.go
│ │ │ │ ├── deviceclassconfiguration.go
│ │ │ │ ├── deviceclassspec.go
│ │ │ │ ├── deviceconfiguration.go
│ │ │ │ ├── deviceconstraint.go
│ │ │ │ ├── devicerequest.go
│ │ │ │ ├── devicerequestallocationresult.go
│ │ │ │ ├── deviceselector.go
│ │ │ │ ├── networkdevicedata.go
│ │ │ │ ├── opaquedeviceconfiguration.go
│ │ │ │ ├── resourceclaim.go
│ │ │ │ ├── resourceclaimconsumerreference.go
│ │ │ │ ├── resourceclaimspec.go
│ │ │ │ ├── resourceclaimstatus.go
│ │ │ │ ├── resourceclaimtemplate.go
│ │ │ │ ├── resourceclaimtemplatespec.go
│ │ │ │ ├── resourcepool.go
│ │ │ │ ├── resourceslice.go
│ │ │ │ └── resourceslicespec.go
│ │ │ ├── scheduling/
│ │ │ │ ├── v1/
│ │ │ │ │ └── priorityclass.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ └── priorityclass.go
│ │ │ │ └── v1beta1/
│ │ │ │ └── priorityclass.go
│ │ │ ├── storage/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── csidriver.go
│ │ │ │ │ ├── csidriverspec.go
│ │ │ │ │ ├── csinode.go
│ │ │ │ │ ├── csinodedriver.go
│ │ │ │ │ ├── csinodespec.go
│ │ │ │ │ ├── csistoragecapacity.go
│ │ │ │ │ ├── storageclass.go
│ │ │ │ │ ├── tokenrequest.go
│ │ │ │ │ ├── volumeattachment.go
│ │ │ │ │ ├── volumeattachmentsource.go
│ │ │ │ │ ├── volumeattachmentspec.go
│ │ │ │ │ ├── volumeattachmentstatus.go
│ │ │ │ │ ├── volumeerror.go
│ │ │ │ │ └── volumenoderesources.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── csistoragecapacity.go
│ │ │ │ │ ├── volumeattachment.go
│ │ │ │ │ ├── volumeattachmentsource.go
│ │ │ │ │ ├── volumeattachmentspec.go
│ │ │ │ │ ├── volumeattachmentstatus.go
│ │ │ │ │ ├── volumeattributesclass.go
│ │ │ │ │ └── volumeerror.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── csidriver.go
│ │ │ │ ├── csidriverspec.go
│ │ │ │ ├── csinode.go
│ │ │ │ ├── csinodedriver.go
│ │ │ │ ├── csinodespec.go
│ │ │ │ ├── csistoragecapacity.go
│ │ │ │ ├── storageclass.go
│ │ │ │ ├── tokenrequest.go
│ │ │ │ ├── volumeattachment.go
│ │ │ │ ├── volumeattachmentsource.go
│ │ │ │ ├── volumeattachmentspec.go
│ │ │ │ ├── volumeattachmentstatus.go
│ │ │ │ ├── volumeattributesclass.go
│ │ │ │ ├── volumeerror.go
│ │ │ │ └── volumenoderesources.go
│ │ │ ├── storagemigration/
│ │ │ │ └── v1alpha1/
│ │ │ │ ├── groupversionresource.go
│ │ │ │ ├── migrationcondition.go
│ │ │ │ ├── storageversionmigration.go
│ │ │ │ ├── storageversionmigrationspec.go
│ │ │ │ └── storageversionmigrationstatus.go
│ │ │ └── utils.go
│ │ ├── discovery/
│ │ │ ├── aggregated_discovery.go
│ │ │ ├── discovery_client.go
│ │ │ ├── doc.go
│ │ │ ├── fake/
│ │ │ │ └── discovery.go
│ │ │ └── helper.go
│ │ ├── features/
│ │ │ ├── envvar.go
│ │ │ ├── features.go
│ │ │ └── known_features.go
│ │ ├── gentype/
│ │ │ ├── fake.go
│ │ │ └── type.go
│ │ ├── informers/
│ │ │ ├── admissionregistration/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── interface.go
│ │ │ │ │ ├── mutatingwebhookconfiguration.go
│ │ │ │ │ ├── validatingadmissionpolicy.go
│ │ │ │ │ ├── validatingadmissionpolicybinding.go
│ │ │ │ │ └── validatingwebhookconfiguration.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── interface.go
│ │ │ │ │ ├── mutatingadmissionpolicy.go
│ │ │ │ │ ├── mutatingadmissionpolicybinding.go
│ │ │ │ │ ├── validatingadmissionpolicy.go
│ │ │ │ │ └── validatingadmissionpolicybinding.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── interface.go
│ │ │ │ ├── mutatingwebhookconfiguration.go
│ │ │ │ ├── validatingadmissionpolicy.go
│ │ │ │ ├── validatingadmissionpolicybinding.go
│ │ │ │ └── validatingwebhookconfiguration.go
│ │ │ ├── apiserverinternal/
│ │ │ │ ├── interface.go
│ │ │ │ └── v1alpha1/
│ │ │ │ ├── interface.go
│ │ │ │ └── storageversion.go
│ │ │ ├── apps/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── controllerrevision.go
│ │ │ │ │ ├── daemonset.go
│ │ │ │ │ ├── deployment.go
│ │ │ │ │ ├── interface.go
│ │ │ │ │ ├── replicaset.go
│ │ │ │ │ └── statefulset.go
│ │ │ │ ├── v1beta1/
│ │ │ │ │ ├── controllerrevision.go
│ │ │ │ │ ├── deployment.go
│ │ │ │ │ ├── interface.go
│ │ │ │ │ └── statefulset.go
│ │ │ │ └── v1beta2/
│ │ │ │ ├── controllerrevision.go
│ │ │ │ ├── daemonset.go
│ │ │ │ ├── deployment.go
│ │ │ │ ├── interface.go
│ │ │ │ ├── replicaset.go
│ │ │ │ └── statefulset.go
│ │ │ ├── autoscaling/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── horizontalpodautoscaler.go
│ │ │ │ │ └── interface.go
│ │ │ │ ├── v2/
│ │ │ │ │ ├── horizontalpodautoscaler.go
│ │ │ │ │ └── interface.go
│ │ │ │ ├── v2beta1/
│ │ │ │ │ ├── horizontalpodautoscaler.go
│ │ │ │ │ └── interface.go
│ │ │ │ └── v2beta2/
│ │ │ │ ├── horizontalpodautoscaler.go
│ │ │ │ └── interface.go
│ │ │ ├── batch/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── cronjob.go
│ │ │ │ │ ├── interface.go
│ │ │ │ │ └── job.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── cronjob.go
│ │ │ │ └── interface.go
│ │ │ ├── certificates/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── certificatesigningrequest.go
│ │ │ │ │ └── interface.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── clustertrustbundle.go
│ │ │ │ │ └── interface.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── certificatesigningrequest.go
│ │ │ │ └── interface.go
│ │ │ ├── coordination/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── interface.go
│ │ │ │ │ └── lease.go
│ │ │ │ ├── v1alpha2/
│ │ │ │ │ ├── interface.go
│ │ │ │ │ └── leasecandidate.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── interface.go
│ │ │ │ └── lease.go
│ │ │ ├── core/
│ │ │ │ ├── interface.go
│ │ │ │ └── v1/
│ │ │ │ ├── componentstatus.go
│ │ │ │ ├── configmap.go
│ │ │ │ ├── endpoints.go
│ │ │ │ ├── event.go
│ │ │ │ ├── interface.go
│ │ │ │ ├── limitrange.go
│ │ │ │ ├── namespace.go
│ │ │ │ ├── node.go
│ │ │ │ ├── persistentvolume.go
│ │ │ │ ├── persistentvolumeclaim.go
│ │ │ │ ├── pod.go
│ │ │ │ ├── podtemplate.go
│ │ │ │ ├── replicationcontroller.go
│ │ │ │ ├── resourcequota.go
│ │ │ │ ├── secret.go
│ │ │ │ ├── service.go
│ │ │ │ └── serviceaccount.go
│ │ │ ├── discovery/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── endpointslice.go
│ │ │ │ │ └── interface.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── endpointslice.go
│ │ │ │ └── interface.go
│ │ │ ├── doc.go
│ │ │ ├── events/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── event.go
│ │ │ │ │ └── interface.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── event.go
│ │ │ │ └── interface.go
│ │ │ ├── extensions/
│ │ │ │ ├── interface.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── daemonset.go
│ │ │ │ ├── deployment.go
│ │ │ │ ├── ingress.go
│ │ │ │ ├── interface.go
│ │ │ │ ├── networkpolicy.go
│ │ │ │ └── replicaset.go
│ │ │ ├── factory.go
│ │ │ ├── flowcontrol/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── flowschema.go
│ │ │ │ │ ├── interface.go
│ │ │ │ │ └── prioritylevelconfiguration.go
│ │ │ │ ├── v1beta1/
│ │ │ │ │ ├── flowschema.go
│ │ │ │ │ ├── interface.go
│ │ │ │ │ └── prioritylevelconfiguration.go
│ │ │ │ ├── v1beta2/
│ │ │ │ │ ├── flowschema.go
│ │ │ │ │ ├── interface.go
│ │ │ │ │ └── prioritylevelconfiguration.go
│ │ │ │ └── v1beta3/
│ │ │ │ ├── flowschema.go
│ │ │ │ ├── interface.go
│ │ │ │ └── prioritylevelconfiguration.go
│ │ │ ├── generic.go
│ │ │ ├── internalinterfaces/
│ │ │ │ └── factory_interfaces.go
│ │ │ ├── networking/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── ingress.go
│ │ │ │ │ ├── ingressclass.go
│ │ │ │ │ ├── interface.go
│ │ │ │ │ └── networkpolicy.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── interface.go
│ │ │ │ │ ├── ipaddress.go
│ │ │ │ │ └── servicecidr.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── ingress.go
│ │ │ │ ├── ingressclass.go
│ │ │ │ ├── interface.go
│ │ │ │ ├── ipaddress.go
│ │ │ │ └── servicecidr.go
│ │ │ ├── node/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── interface.go
│ │ │ │ │ └── runtimeclass.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── interface.go
│ │ │ │ │ └── runtimeclass.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── interface.go
│ │ │ │ └── runtimeclass.go
│ │ │ ├── policy/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── interface.go
│ │ │ │ │ └── poddisruptionbudget.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── interface.go
│ │ │ │ └── poddisruptionbudget.go
│ │ │ ├── rbac/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── clusterrole.go
│ │ │ │ │ ├── clusterrolebinding.go
│ │ │ │ │ ├── interface.go
│ │ │ │ │ ├── role.go
│ │ │ │ │ └── rolebinding.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── clusterrole.go
│ │ │ │ │ ├── clusterrolebinding.go
│ │ │ │ │ ├── interface.go
│ │ │ │ │ ├── role.go
│ │ │ │ │ └── rolebinding.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── clusterrole.go
│ │ │ │ ├── clusterrolebinding.go
│ │ │ │ ├── interface.go
│ │ │ │ ├── role.go
│ │ │ │ └── rolebinding.go
│ │ │ ├── resource/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1alpha3/
│ │ │ │ │ ├── deviceclass.go
│ │ │ │ │ ├── interface.go
│ │ │ │ │ ├── resourceclaim.go
│ │ │ │ │ ├── resourceclaimtemplate.go
│ │ │ │ │ └── resourceslice.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── deviceclass.go
│ │ │ │ ├── interface.go
│ │ │ │ ├── resourceclaim.go
│ │ │ │ ├── resourceclaimtemplate.go
│ │ │ │ └── resourceslice.go
│ │ │ ├── scheduling/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── interface.go
│ │ │ │ │ └── priorityclass.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── interface.go
│ │ │ │ │ └── priorityclass.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── interface.go
│ │ │ │ └── priorityclass.go
│ │ │ ├── storage/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── csidriver.go
│ │ │ │ │ ├── csinode.go
│ │ │ │ │ ├── csistoragecapacity.go
│ │ │ │ │ ├── interface.go
│ │ │ │ │ ├── storageclass.go
│ │ │ │ │ └── volumeattachment.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── csistoragecapacity.go
│ │ │ │ │ ├── interface.go
│ │ │ │ │ ├── volumeattachment.go
│ │ │ │ │ └── volumeattributesclass.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── csidriver.go
│ │ │ │ ├── csinode.go
│ │ │ │ ├── csistoragecapacity.go
│ │ │ │ ├── interface.go
│ │ │ │ ├── storageclass.go
│ │ │ │ ├── volumeattachment.go
│ │ │ │ └── volumeattributesclass.go
│ │ │ └── storagemigration/
│ │ │ ├── interface.go
│ │ │ └── v1alpha1/
│ │ │ ├── interface.go
│ │ │ └── storageversionmigration.go
│ │ ├── kubernetes/
│ │ │ ├── clientset.go
│ │ │ ├── doc.go
│ │ │ ├── fake/
│ │ │ │ ├── clientset_generated.go
│ │ │ │ ├── doc.go
│ │ │ │ └── register.go
│ │ │ ├── import.go
│ │ │ ├── scheme/
│ │ │ │ ├── doc.go
│ │ │ │ └── register.go
│ │ │ └── typed/
│ │ │ ├── admissionregistration/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── admissionregistration_client.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_admissionregistration_client.go
│ │ │ │ │ │ ├── fake_mutatingwebhookconfiguration.go
│ │ │ │ │ │ ├── fake_validatingadmissionpolicy.go
│ │ │ │ │ │ ├── fake_validatingadmissionpolicybinding.go
│ │ │ │ │ │ └── fake_validatingwebhookconfiguration.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── mutatingwebhookconfiguration.go
│ │ │ │ │ ├── validatingadmissionpolicy.go
│ │ │ │ │ ├── validatingadmissionpolicybinding.go
│ │ │ │ │ └── validatingwebhookconfiguration.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── admissionregistration_client.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_admissionregistration_client.go
│ │ │ │ │ │ ├── fake_mutatingadmissionpolicy.go
│ │ │ │ │ │ ├── fake_mutatingadmissionpolicybinding.go
│ │ │ │ │ │ ├── fake_validatingadmissionpolicy.go
│ │ │ │ │ │ └── fake_validatingadmissionpolicybinding.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── mutatingadmissionpolicy.go
│ │ │ │ │ ├── mutatingadmissionpolicybinding.go
│ │ │ │ │ ├── validatingadmissionpolicy.go
│ │ │ │ │ └── validatingadmissionpolicybinding.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── admissionregistration_client.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_admissionregistration_client.go
│ │ │ │ │ ├── fake_mutatingwebhookconfiguration.go
│ │ │ │ │ ├── fake_validatingadmissionpolicy.go
│ │ │ │ │ ├── fake_validatingadmissionpolicybinding.go
│ │ │ │ │ └── fake_validatingwebhookconfiguration.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ ├── mutatingwebhookconfiguration.go
│ │ │ │ ├── validatingadmissionpolicy.go
│ │ │ │ ├── validatingadmissionpolicybinding.go
│ │ │ │ └── validatingwebhookconfiguration.go
│ │ │ ├── apiserverinternal/
│ │ │ │ └── v1alpha1/
│ │ │ │ ├── apiserverinternal_client.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_apiserverinternal_client.go
│ │ │ │ │ └── fake_storageversion.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ └── storageversion.go
│ │ │ ├── apps/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── apps_client.go
│ │ │ │ │ ├── controllerrevision.go
│ │ │ │ │ ├── daemonset.go
│ │ │ │ │ ├── deployment.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_apps_client.go
│ │ │ │ │ │ ├── fake_controllerrevision.go
│ │ │ │ │ │ ├── fake_daemonset.go
│ │ │ │ │ │ ├── fake_deployment.go
│ │ │ │ │ │ ├── fake_replicaset.go
│ │ │ │ │ │ └── fake_statefulset.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── replicaset.go
│ │ │ │ │ └── statefulset.go
│ │ │ │ ├── v1beta1/
│ │ │ │ │ ├── apps_client.go
│ │ │ │ │ ├── controllerrevision.go
│ │ │ │ │ ├── deployment.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_apps_client.go
│ │ │ │ │ │ ├── fake_controllerrevision.go
│ │ │ │ │ │ ├── fake_deployment.go
│ │ │ │ │ │ └── fake_statefulset.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ └── statefulset.go
│ │ │ │ └── v1beta2/
│ │ │ │ ├── apps_client.go
│ │ │ │ ├── controllerrevision.go
│ │ │ │ ├── daemonset.go
│ │ │ │ ├── deployment.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_apps_client.go
│ │ │ │ │ ├── fake_controllerrevision.go
│ │ │ │ │ ├── fake_daemonset.go
│ │ │ │ │ ├── fake_deployment.go
│ │ │ │ │ ├── fake_replicaset.go
│ │ │ │ │ └── fake_statefulset.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ ├── replicaset.go
│ │ │ │ └── statefulset.go
│ │ │ ├── authentication/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── authentication_client.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_authentication_client.go
│ │ │ │ │ │ ├── fake_selfsubjectreview.go
│ │ │ │ │ │ └── fake_tokenreview.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── selfsubjectreview.go
│ │ │ │ │ └── tokenreview.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── authentication_client.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_authentication_client.go
│ │ │ │ │ │ └── fake_selfsubjectreview.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ └── selfsubjectreview.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── authentication_client.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_authentication_client.go
│ │ │ │ │ ├── fake_selfsubjectreview.go
│ │ │ │ │ └── fake_tokenreview.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ ├── selfsubjectreview.go
│ │ │ │ └── tokenreview.go
│ │ │ ├── authorization/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── authorization_client.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_authorization_client.go
│ │ │ │ │ │ ├── fake_localsubjectaccessreview.go
│ │ │ │ │ │ ├── fake_selfsubjectaccessreview.go
│ │ │ │ │ │ ├── fake_selfsubjectrulesreview.go
│ │ │ │ │ │ └── fake_subjectaccessreview.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── localsubjectaccessreview.go
│ │ │ │ │ ├── selfsubjectaccessreview.go
│ │ │ │ │ ├── selfsubjectrulesreview.go
│ │ │ │ │ └── subjectaccessreview.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── authorization_client.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_authorization_client.go
│ │ │ │ │ ├── fake_localsubjectaccessreview.go
│ │ │ │ │ ├── fake_selfsubjectaccessreview.go
│ │ │ │ │ ├── fake_selfsubjectrulesreview.go
│ │ │ │ │ └── fake_subjectaccessreview.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ ├── localsubjectaccessreview.go
│ │ │ │ ├── selfsubjectaccessreview.go
│ │ │ │ ├── selfsubjectrulesreview.go
│ │ │ │ └── subjectaccessreview.go
│ │ │ ├── autoscaling/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── autoscaling_client.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_autoscaling_client.go
│ │ │ │ │ │ └── fake_horizontalpodautoscaler.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ └── horizontalpodautoscaler.go
│ │ │ │ ├── v2/
│ │ │ │ │ ├── autoscaling_client.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_autoscaling_client.go
│ │ │ │ │ │ └── fake_horizontalpodautoscaler.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ └── horizontalpodautoscaler.go
│ │ │ │ ├── v2beta1/
│ │ │ │ │ ├── autoscaling_client.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_autoscaling_client.go
│ │ │ │ │ │ └── fake_horizontalpodautoscaler.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ └── horizontalpodautoscaler.go
│ │ │ │ └── v2beta2/
│ │ │ │ ├── autoscaling_client.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_autoscaling_client.go
│ │ │ │ │ └── fake_horizontalpodautoscaler.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ └── horizontalpodautoscaler.go
│ │ │ ├── batch/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── batch_client.go
│ │ │ │ │ ├── cronjob.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_batch_client.go
│ │ │ │ │ │ ├── fake_cronjob.go
│ │ │ │ │ │ └── fake_job.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ └── job.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── batch_client.go
│ │ │ │ ├── cronjob.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_batch_client.go
│ │ │ │ │ └── fake_cronjob.go
│ │ │ │ └── generated_expansion.go
│ │ │ ├── certificates/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── certificates_client.go
│ │ │ │ │ ├── certificatesigningrequest.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_certificates_client.go
│ │ │ │ │ │ └── fake_certificatesigningrequest.go
│ │ │ │ │ └── generated_expansion.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── certificates_client.go
│ │ │ │ │ ├── clustertrustbundle.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_certificates_client.go
│ │ │ │ │ │ └── fake_clustertrustbundle.go
│ │ │ │ │ └── generated_expansion.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── certificates_client.go
│ │ │ │ ├── certificatesigningrequest.go
│ │ │ │ ├── certificatesigningrequest_expansion.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_certificates_client.go
│ │ │ │ │ ├── fake_certificatesigningrequest.go
│ │ │ │ │ └── fake_certificatesigningrequest_expansion.go
│ │ │ │ └── generated_expansion.go
│ │ │ ├── coordination/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── coordination_client.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_coordination_client.go
│ │ │ │ │ │ └── fake_lease.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ └── lease.go
│ │ │ │ ├── v1alpha2/
│ │ │ │ │ ├── coordination_client.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_coordination_client.go
│ │ │ │ │ │ └── fake_leasecandidate.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ └── leasecandidate.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── coordination_client.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_coordination_client.go
│ │ │ │ │ └── fake_lease.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ └── lease.go
│ │ │ ├── core/
│ │ │ │ └── v1/
│ │ │ │ ├── componentstatus.go
│ │ │ │ ├── configmap.go
│ │ │ │ ├── core_client.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── endpoints.go
│ │ │ │ ├── event.go
│ │ │ │ ├── event_expansion.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_componentstatus.go
│ │ │ │ │ ├── fake_configmap.go
│ │ │ │ │ ├── fake_core_client.go
│ │ │ │ │ ├── fake_endpoints.go
│ │ │ │ │ ├── fake_event.go
│ │ │ │ │ ├── fake_event_expansion.go
│ │ │ │ │ ├── fake_limitrange.go
│ │ │ │ │ ├── fake_namespace.go
│ │ │ │ │ ├── fake_namespace_expansion.go
│ │ │ │ │ ├── fake_node.go
│ │ │ │ │ ├── fake_node_expansion.go
│ │ │ │ │ ├── fake_persistentvolume.go
│ │ │ │ │ ├── fake_persistentvolumeclaim.go
│ │ │ │ │ ├── fake_pod.go
│ │ │ │ │ ├── fake_pod_expansion.go
│ │ │ │ │ ├── fake_podtemplate.go
│ │ │ │ │ ├── fake_replicationcontroller.go
│ │ │ │ │ ├── fake_resourcequota.go
│ │ │ │ │ ├── fake_secret.go
│ │ │ │ │ ├── fake_service.go
│ │ │ │ │ ├── fake_service_expansion.go
│ │ │ │ │ └── fake_serviceaccount.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ ├── limitrange.go
│ │ │ │ ├── namespace.go
│ │ │ │ ├── namespace_expansion.go
│ │ │ │ ├── node.go
│ │ │ │ ├── node_expansion.go
│ │ │ │ ├── persistentvolume.go
│ │ │ │ ├── persistentvolumeclaim.go
│ │ │ │ ├── pod.go
│ │ │ │ ├── pod_expansion.go
│ │ │ │ ├── podtemplate.go
│ │ │ │ ├── replicationcontroller.go
│ │ │ │ ├── resourcequota.go
│ │ │ │ ├── secret.go
│ │ │ │ ├── service.go
│ │ │ │ ├── service_expansion.go
│ │ │ │ └── serviceaccount.go
│ │ │ ├── discovery/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── discovery_client.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── endpointslice.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_discovery_client.go
│ │ │ │ │ │ └── fake_endpointslice.go
│ │ │ │ │ └── generated_expansion.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── discovery_client.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── endpointslice.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_discovery_client.go
│ │ │ │ │ └── fake_endpointslice.go
│ │ │ │ └── generated_expansion.go
│ │ │ ├── events/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── event.go
│ │ │ │ │ ├── events_client.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_event.go
│ │ │ │ │ │ └── fake_events_client.go
│ │ │ │ │ └── generated_expansion.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── event.go
│ │ │ │ ├── event_expansion.go
│ │ │ │ ├── events_client.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_event.go
│ │ │ │ │ ├── fake_event_expansion.go
│ │ │ │ │ └── fake_events_client.go
│ │ │ │ └── generated_expansion.go
│ │ │ ├── extensions/
│ │ │ │ └── v1beta1/
│ │ │ │ ├── daemonset.go
│ │ │ │ ├── deployment.go
│ │ │ │ ├── deployment_expansion.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── extensions_client.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_daemonset.go
│ │ │ │ │ ├── fake_deployment.go
│ │ │ │ │ ├── fake_deployment_expansion.go
│ │ │ │ │ ├── fake_extensions_client.go
│ │ │ │ │ ├── fake_ingress.go
│ │ │ │ │ ├── fake_networkpolicy.go
│ │ │ │ │ └── fake_replicaset.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ ├── ingress.go
│ │ │ │ ├── networkpolicy.go
│ │ │ │ └── replicaset.go
│ │ │ ├── flowcontrol/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_flowcontrol_client.go
│ │ │ │ │ │ ├── fake_flowschema.go
│ │ │ │ │ │ └── fake_prioritylevelconfiguration.go
│ │ │ │ │ ├── flowcontrol_client.go
│ │ │ │ │ ├── flowschema.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ └── prioritylevelconfiguration.go
│ │ │ │ ├── v1beta1/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_flowcontrol_client.go
│ │ │ │ │ │ ├── fake_flowschema.go
│ │ │ │ │ │ └── fake_prioritylevelconfiguration.go
│ │ │ │ │ ├── flowcontrol_client.go
│ │ │ │ │ ├── flowschema.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ └── prioritylevelconfiguration.go
│ │ │ │ ├── v1beta2/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_flowcontrol_client.go
│ │ │ │ │ │ ├── fake_flowschema.go
│ │ │ │ │ │ └── fake_prioritylevelconfiguration.go
│ │ │ │ │ ├── flowcontrol_client.go
│ │ │ │ │ ├── flowschema.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ └── prioritylevelconfiguration.go
│ │ │ │ └── v1beta3/
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_flowcontrol_client.go
│ │ │ │ │ ├── fake_flowschema.go
│ │ │ │ │ └── fake_prioritylevelconfiguration.go
│ │ │ │ ├── flowcontrol_client.go
│ │ │ │ ├── flowschema.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ └── prioritylevelconfiguration.go
│ │ │ ├── networking/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_ingress.go
│ │ │ │ │ │ ├── fake_ingressclass.go
│ │ │ │ │ │ ├── fake_networking_client.go
│ │ │ │ │ │ └── fake_networkpolicy.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── ingress.go
│ │ │ │ │ ├── ingressclass.go
│ │ │ │ │ ├── networking_client.go
│ │ │ │ │ └── networkpolicy.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_ipaddress.go
│ │ │ │ │ │ ├── fake_networking_client.go
│ │ │ │ │ │ └── fake_servicecidr.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── ipaddress.go
│ │ │ │ │ ├── networking_client.go
│ │ │ │ │ └── servicecidr.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_ingress.go
│ │ │ │ │ ├── fake_ingressclass.go
│ │ │ │ │ ├── fake_ipaddress.go
│ │ │ │ │ ├── fake_networking_client.go
│ │ │ │ │ └── fake_servicecidr.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ ├── ingress.go
│ │ │ │ ├── ingressclass.go
│ │ │ │ ├── ipaddress.go
│ │ │ │ ├── networking_client.go
│ │ │ │ └── servicecidr.go
│ │ │ ├── node/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_node_client.go
│ │ │ │ │ │ └── fake_runtimeclass.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── node_client.go
│ │ │ │ │ └── runtimeclass.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_node_client.go
│ │ │ │ │ │ └── fake_runtimeclass.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── node_client.go
│ │ │ │ │ └── runtimeclass.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_node_client.go
│ │ │ │ │ └── fake_runtimeclass.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ ├── node_client.go
│ │ │ │ └── runtimeclass.go
│ │ │ ├── policy/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── eviction.go
│ │ │ │ │ ├── eviction_expansion.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_eviction.go
│ │ │ │ │ │ ├── fake_eviction_expansion.go
│ │ │ │ │ │ ├── fake_poddisruptionbudget.go
│ │ │ │ │ │ └── fake_policy_client.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── poddisruptionbudget.go
│ │ │ │ │ └── policy_client.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── eviction.go
│ │ │ │ ├── eviction_expansion.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_eviction.go
│ │ │ │ │ ├── fake_eviction_expansion.go
│ │ │ │ │ ├── fake_poddisruptionbudget.go
│ │ │ │ │ └── fake_policy_client.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ ├── poddisruptionbudget.go
│ │ │ │ └── policy_client.go
│ │ │ ├── rbac/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── clusterrole.go
│ │ │ │ │ ├── clusterrolebinding.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_clusterrole.go
│ │ │ │ │ │ ├── fake_clusterrolebinding.go
│ │ │ │ │ │ ├── fake_rbac_client.go
│ │ │ │ │ │ ├── fake_role.go
│ │ │ │ │ │ └── fake_rolebinding.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── rbac_client.go
│ │ │ │ │ ├── role.go
│ │ │ │ │ └── rolebinding.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── clusterrole.go
│ │ │ │ │ ├── clusterrolebinding.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_clusterrole.go
│ │ │ │ │ │ ├── fake_clusterrolebinding.go
│ │ │ │ │ │ ├── fake_rbac_client.go
│ │ │ │ │ │ ├── fake_role.go
│ │ │ │ │ │ └── fake_rolebinding.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── rbac_client.go
│ │ │ │ │ ├── role.go
│ │ │ │ │ └── rolebinding.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── clusterrole.go
│ │ │ │ ├── clusterrolebinding.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_clusterrole.go
│ │ │ │ │ ├── fake_clusterrolebinding.go
│ │ │ │ │ ├── fake_rbac_client.go
│ │ │ │ │ ├── fake_role.go
│ │ │ │ │ └── fake_rolebinding.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ ├── rbac_client.go
│ │ │ │ ├── role.go
│ │ │ │ └── rolebinding.go
│ │ │ ├── resource/
│ │ │ │ ├── v1alpha3/
│ │ │ │ │ ├── deviceclass.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_deviceclass.go
│ │ │ │ │ │ ├── fake_resource_client.go
│ │ │ │ │ │ ├── fake_resourceclaim.go
│ │ │ │ │ │ ├── fake_resourceclaimtemplate.go
│ │ │ │ │ │ └── fake_resourceslice.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── resource_client.go
│ │ │ │ │ ├── resourceclaim.go
│ │ │ │ │ ├── resourceclaimtemplate.go
│ │ │ │ │ └── resourceslice.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── deviceclass.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_deviceclass.go
│ │ │ │ │ ├── fake_resource_client.go
│ │ │ │ │ ├── fake_resourceclaim.go
│ │ │ │ │ ├── fake_resourceclaimtemplate.go
│ │ │ │ │ └── fake_resourceslice.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ ├── resource_client.go
│ │ │ │ ├── resourceclaim.go
│ │ │ │ ├── resourceclaimtemplate.go
│ │ │ │ └── resourceslice.go
│ │ │ ├── scheduling/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_priorityclass.go
│ │ │ │ │ │ └── fake_scheduling_client.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── priorityclass.go
│ │ │ │ │ └── scheduling_client.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_priorityclass.go
│ │ │ │ │ │ └── fake_scheduling_client.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── priorityclass.go
│ │ │ │ │ └── scheduling_client.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_priorityclass.go
│ │ │ │ │ └── fake_scheduling_client.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ ├── priorityclass.go
│ │ │ │ └── scheduling_client.go
│ │ │ ├── storage/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── csidriver.go
│ │ │ │ │ ├── csinode.go
│ │ │ │ │ ├── csistoragecapacity.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_csidriver.go
│ │ │ │ │ │ ├── fake_csinode.go
│ │ │ │ │ │ ├── fake_csistoragecapacity.go
│ │ │ │ │ │ ├── fake_storage_client.go
│ │ │ │ │ │ ├── fake_storageclass.go
│ │ │ │ │ │ └── fake_volumeattachment.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── storage_client.go
│ │ │ │ │ ├── storageclass.go
│ │ │ │ │ └── volumeattachment.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── csistoragecapacity.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_csistoragecapacity.go
│ │ │ │ │ │ ├── fake_storage_client.go
│ │ │ │ │ │ ├── fake_volumeattachment.go
│ │ │ │ │ │ └── fake_volumeattributesclass.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── storage_client.go
│ │ │ │ │ ├── volumeattachment.go
│ │ │ │ │ └── volumeattributesclass.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── csidriver.go
│ │ │ │ ├── csinode.go
│ │ │ │ ├── csistoragecapacity.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_csidriver.go
│ │ │ │ │ ├── fake_csinode.go
│ │ │ │ │ ├── fake_csistoragecapacity.go
│ │ │ │ │ ├── fake_storage_client.go
│ │ │ │ │ ├── fake_storageclass.go
│ │ │ │ │ ├── fake_volumeattachment.go
│ │ │ │ │ └── fake_volumeattributesclass.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ ├── storage_client.go
│ │ │ │ ├── storageclass.go
│ │ │ │ ├── volumeattachment.go
│ │ │ │ └── volumeattributesclass.go
│ │ │ └── storagemigration/
│ │ │ └── v1alpha1/
│ │ │ ├── doc.go
│ │ │ ├── fake/
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake_storagemigration_client.go
│ │ │ │ └── fake_storageversionmigration.go
│ │ │ ├── generated_expansion.go
│ │ │ ├── storagemigration_client.go
│ │ │ └── storageversionmigration.go
│ │ ├── listers/
│ │ │ ├── admissionregistration/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── mutatingwebhookconfiguration.go
│ │ │ │ │ ├── validatingadmissionpolicy.go
│ │ │ │ │ ├── validatingadmissionpolicybinding.go
│ │ │ │ │ └── validatingwebhookconfiguration.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── mutatingadmissionpolicy.go
│ │ │ │ │ ├── mutatingadmissionpolicybinding.go
│ │ │ │ │ ├── validatingadmissionpolicy.go
│ │ │ │ │ └── validatingadmissionpolicybinding.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── expansion_generated.go
│ │ │ │ ├── mutatingwebhookconfiguration.go
│ │ │ │ ├── validatingadmissionpolicy.go
│ │ │ │ ├── validatingadmissionpolicybinding.go
│ │ │ │ └── validatingwebhookconfiguration.go
│ │ │ ├── apiserverinternal/
│ │ │ │ └── v1alpha1/
│ │ │ │ ├── expansion_generated.go
│ │ │ │ └── storageversion.go
│ │ │ ├── apps/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── controllerrevision.go
│ │ │ │ │ ├── daemonset.go
│ │ │ │ │ ├── daemonset_expansion.go
│ │ │ │ │ ├── deployment.go
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── replicaset.go
│ │ │ │ │ ├── replicaset_expansion.go
│ │ │ │ │ ├── statefulset.go
│ │ │ │ │ └── statefulset_expansion.go
│ │ │ │ ├── v1beta1/
│ │ │ │ │ ├── controllerrevision.go
│ │ │ │ │ ├── deployment.go
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── statefulset.go
│ │ │ │ │ └── statefulset_expansion.go
│ │ │ │ └── v1beta2/
│ │ │ │ ├── controllerrevision.go
│ │ │ │ ├── daemonset.go
│ │ │ │ ├── daemonset_expansion.go
│ │ │ │ ├── deployment.go
│ │ │ │ ├── expansion_generated.go
│ │ │ │ ├── replicaset.go
│ │ │ │ ├── replicaset_expansion.go
│ │ │ │ ├── statefulset.go
│ │ │ │ └── statefulset_expansion.go
│ │ │ ├── autoscaling/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ └── horizontalpodautoscaler.go
│ │ │ │ ├── v2/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ └── horizontalpodautoscaler.go
│ │ │ │ ├── v2beta1/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ └── horizontalpodautoscaler.go
│ │ │ │ └── v2beta2/
│ │ │ │ ├── expansion_generated.go
│ │ │ │ └── horizontalpodautoscaler.go
│ │ │ ├── batch/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── cronjob.go
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── job.go
│ │ │ │ │ └── job_expansion.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── cronjob.go
│ │ │ │ └── expansion_generated.go
│ │ │ ├── certificates/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── certificatesigningrequest.go
│ │ │ │ │ └── expansion_generated.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── clustertrustbundle.go
│ │ │ │ │ └── expansion_generated.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── certificatesigningrequest.go
│ │ │ │ └── expansion_generated.go
│ │ │ ├── coordination/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ └── lease.go
│ │ │ │ ├── v1alpha2/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ └── leasecandidate.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── expansion_generated.go
│ │ │ │ └── lease.go
│ │ │ ├── core/
│ │ │ │ └── v1/
│ │ │ │ ├── componentstatus.go
│ │ │ │ ├── configmap.go
│ │ │ │ ├── endpoints.go
│ │ │ │ ├── event.go
│ │ │ │ ├── expansion_generated.go
│ │ │ │ ├── limitrange.go
│ │ │ │ ├── namespace.go
│ │ │ │ ├── node.go
│ │ │ │ ├── persistentvolume.go
│ │ │ │ ├── persistentvolumeclaim.go
│ │ │ │ ├── pod.go
│ │ │ │ ├── podtemplate.go
│ │ │ │ ├── replicationcontroller.go
│ │ │ │ ├── replicationcontroller_expansion.go
│ │ │ │ ├── resourcequota.go
│ │ │ │ ├── secret.go
│ │ │ │ ├── service.go
│ │ │ │ └── serviceaccount.go
│ │ │ ├── discovery/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── endpointslice.go
│ │ │ │ │ └── expansion_generated.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── endpointslice.go
│ │ │ │ └── expansion_generated.go
│ │ │ ├── doc.go
│ │ │ ├── events/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── event.go
│ │ │ │ │ └── expansion_generated.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── event.go
│ │ │ │ └── expansion_generated.go
│ │ │ ├── extensions/
│ │ │ │ └── v1beta1/
│ │ │ │ ├── daemonset.go
│ │ │ │ ├── daemonset_expansion.go
│ │ │ │ ├── deployment.go
│ │ │ │ ├── expansion_generated.go
│ │ │ │ ├── ingress.go
│ │ │ │ ├── networkpolicy.go
│ │ │ │ ├── replicaset.go
│ │ │ │ └── replicaset_expansion.go
│ │ │ ├── flowcontrol/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── flowschema.go
│ │ │ │ │ └── prioritylevelconfiguration.go
│ │ │ │ ├── v1beta1/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── flowschema.go
│ │ │ │ │ └── prioritylevelconfiguration.go
│ │ │ │ ├── v1beta2/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── flowschema.go
│ │ │ │ │ └── prioritylevelconfiguration.go
│ │ │ │ └── v1beta3/
│ │ │ │ ├── expansion_generated.go
│ │ │ │ ├── flowschema.go
│ │ │ │ └── prioritylevelconfiguration.go
│ │ │ ├── generic_helpers.go
│ │ │ ├── networking/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── ingress.go
│ │ │ │ │ ├── ingressclass.go
│ │ │ │ │ └── networkpolicy.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── ipaddress.go
│ │ │ │ │ └── servicecidr.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── expansion_generated.go
│ │ │ │ ├── ingress.go
│ │ │ │ ├── ingressclass.go
│ │ │ │ ├── ipaddress.go
│ │ │ │ └── servicecidr.go
│ │ │ ├── node/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ └── runtimeclass.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ └── runtimeclass.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── expansion_generated.go
│ │ │ │ └── runtimeclass.go
│ │ │ ├── policy/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── eviction.go
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── poddisruptionbudget.go
│ │ │ │ │ └── poddisruptionbudget_expansion.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── eviction.go
│ │ │ │ ├── expansion_generated.go
│ │ │ │ ├── poddisruptionbudget.go
│ │ │ │ └── poddisruptionbudget_expansion.go
│ │ │ ├── rbac/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── clusterrole.go
│ │ │ │ │ ├── clusterrolebinding.go
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── role.go
│ │ │ │ │ └── rolebinding.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── clusterrole.go
│ │ │ │ │ ├── clusterrolebinding.go
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── role.go
│ │ │ │ │ └── rolebinding.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── clusterrole.go
│ │ │ │ ├── clusterrolebinding.go
│ │ │ │ ├── expansion_generated.go
│ │ │ │ ├── role.go
│ │ │ │ └── rolebinding.go
│ │ │ ├── resource/
│ │ │ │ ├── v1alpha3/
│ │ │ │ │ ├── deviceclass.go
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── resourceclaim.go
│ │ │ │ │ ├── resourceclaimtemplate.go
│ │ │ │ │ └── resourceslice.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── deviceclass.go
│ │ │ │ ├── expansion_generated.go
│ │ │ │ ├── resourceclaim.go
│ │ │ │ ├── resourceclaimtemplate.go
│ │ │ │ └── resourceslice.go
│ │ │ ├── scheduling/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ └── priorityclass.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ └── priorityclass.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── expansion_generated.go
│ │ │ │ └── priorityclass.go
│ │ │ ├── storage/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── csidriver.go
│ │ │ │ │ ├── csinode.go
│ │ │ │ │ ├── csistoragecapacity.go
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── storageclass.go
│ │ │ │ │ └── volumeattachment.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── csistoragecapacity.go
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── volumeattachment.go
│ │ │ │ │ └── volumeattributesclass.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── csidriver.go
│ │ │ │ ├── csinode.go
│ │ │ │ ├── csistoragecapacity.go
│ │ │ │ ├── expansion_generated.go
│ │ │ │ ├── storageclass.go
│ │ │ │ ├── volumeattachment.go
│ │ │ │ └── volumeattributesclass.go
│ │ │ └── storagemigration/
│ │ │ └── v1alpha1/
│ │ │ ├── expansion_generated.go
│ │ │ └── storageversionmigration.go
│ │ ├── openapi/
│ │ │ ├── OWNERS
│ │ │ ├── client.go
│ │ │ ├── groupversion.go
│ │ │ └── typeconverter.go
│ │ ├── pkg/
│ │ │ ├── apis/
│ │ │ │ └── clientauthentication/
│ │ │ │ ├── OWNERS
│ │ │ │ ├── doc.go
│ │ │ │ ├── install/
│ │ │ │ │ └── install.go
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── register.go
│ │ │ │ │ ├── types.go
│ │ │ │ │ ├── zz_generated.conversion.go
│ │ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ │ └── zz_generated.defaults.go
│ │ │ │ ├── v1beta1/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── register.go
│ │ │ │ │ ├── types.go
│ │ │ │ │ ├── zz_generated.conversion.go
│ │ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ │ └── zz_generated.defaults.go
│ │ │ │ └── zz_generated.deepcopy.go
│ │ │ └── version/
│ │ │ ├── base.go
│ │ │ ├── doc.go
│ │ │ └── version.go
│ │ ├── plugin/
│ │ │ └── pkg/
│ │ │ └── client/
│ │ │ └── auth/
│ │ │ └── exec/
│ │ │ ├── exec.go
│ │ │ └── metrics.go
│ │ ├── rest/
│ │ │ ├── OWNERS
│ │ │ ├── client.go
│ │ │ ├── config.go
│ │ │ ├── exec.go
│ │ │ ├── fake/
│ │ │ │ └── fake.go
│ │ │ ├── plugin.go
│ │ │ ├── request.go
│ │ │ ├── transport.go
│ │ │ ├── url_utils.go
│ │ │ ├── urlbackoff.go
│ │ │ ├── warnings.go
│ │ │ ├── watch/
│ │ │ │ ├── decoder.go
│ │ │ │ └── encoder.go
│ │ │ ├── with_retry.go
│ │ │ └── zz_generated.deepcopy.go
│ │ ├── testing/
│ │ │ ├── actions.go
│ │ │ ├── fake.go
│ │ │ ├── fixture.go
│ │ │ └── interface.go
│ │ ├── tools/
│ │ │ ├── cache/
│ │ │ │ ├── OWNERS
│ │ │ │ ├── controller.go
│ │ │ │ ├── delta_fifo.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── expiration_cache.go
│ │ │ │ ├── expiration_cache_fakes.go
│ │ │ │ ├── fake_custom_store.go
│ │ │ │ ├── fifo.go
│ │ │ │ ├── heap.go
│ │ │ │ ├── index.go
│ │ │ │ ├── listers.go
│ │ │ │ ├── listwatch.go
│ │ │ │ ├── mutation_cache.go
│ │ │ │ ├── mutation_detector.go
│ │ │ │ ├── object-names.go
│ │ │ │ ├── reflector.go
│ │ │ │ ├── reflector_data_consistency_detector.go
│ │ │ │ ├── reflector_metrics.go
│ │ │ │ ├── retry_with_deadline.go
│ │ │ │ ├── shared_informer.go
│ │ │ │ ├── store.go
│ │ │ │ ├── synctrack/
│ │ │ │ │ ├── lazy.go
│ │ │ │ │ └── synctrack.go
│ │ │ │ ├── thread_safe_store.go
│ │ │ │ └── undelta_store.go
│ │ │ ├── clientcmd/
│ │ │ │ └── api/
│ │ │ │ ├── doc.go
│ │ │ │ ├── helpers.go
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ └── zz_generated.deepcopy.go
│ │ │ ├── metrics/
│ │ │ │ ├── OWNERS
│ │ │ │ └── metrics.go
│ │ │ ├── pager/
│ │ │ │ └── pager.go
│ │ │ └── reference/
│ │ │ └── ref.go
│ │ ├── transport/
│ │ │ ├── OWNERS
│ │ │ ├── cache.go
│ │ │ ├── cache_go118.go
│ │ │ ├── cert_rotation.go
│ │ │ ├── config.go
│ │ │ ├── round_trippers.go
│ │ │ ├── token_source.go
│ │ │ └── transport.go
│ │ └── util/
│ │ ├── apply/
│ │ │ └── apply.go
│ │ ├── cert/
│ │ │ ├── OWNERS
│ │ │ ├── cert.go
│ │ │ ├── csr.go
│ │ │ ├── io.go
│ │ │ ├── pem.go
│ │ │ └── server_inspection.go
│ │ ├── connrotation/
│ │ │ └── connrotation.go
│ │ ├── consistencydetector/
│ │ │ ├── data_consistency_detector.go
│ │ │ ├── list_data_consistency_detector.go
│ │ │ └── watch_list_data_consistency_detector.go
│ │ ├── flowcontrol/
│ │ │ ├── backoff.go
│ │ │ └── throttle.go
│ │ ├── keyutil/
│ │ │ ├── OWNERS
│ │ │ └── key.go
│ │ ├── watchlist/
│ │ │ └── watch_list.go
│ │ └── workqueue/
│ │ ├── default_rate_limiters.go
│ │ ├── delaying_queue.go
│ │ ├── doc.go
│ │ ├── metrics.go
│ │ ├── parallelizer.go
│ │ ├── queue.go
│ │ └── rate_limiting_queue.go
│ ├── component-base/
│ │ ├── LICENSE
│ │ └── cli/
│ │ └── flag/
│ │ ├── ciphersuites_flag.go
│ │ ├── colon_separated_multimap_string_string.go
│ │ ├── configuration_map.go
│ │ ├── flags.go
│ │ ├── langle_separated_map_string_string.go
│ │ ├── map_string_bool.go
│ │ ├── map_string_string.go
│ │ ├── namedcertkey_flag.go
│ │ ├── noop.go
│ │ ├── omitempty.go
│ │ ├── sectioned.go
│ │ ├── string_flag.go
│ │ ├── string_slice_flag.go
│ │ └── tristate.go
│ ├── klog/
│ │ └── v2/
│ │ ├── .gitignore
│ │ ├── .golangci.yaml
│ │ ├── CONTRIBUTING.md
│ │ ├── LICENSE
│ │ ├── OWNERS
│ │ ├── README.md
│ │ ├── RELEASE.md
│ │ ├── SECURITY.md
│ │ ├── SECURITY_CONTACTS
│ │ ├── code-of-conduct.md
│ │ ├── contextual.go
│ │ ├── contextual_slog.go
│ │ ├── exit.go
│ │ ├── format.go
│ │ ├── imports.go
│ │ ├── internal/
│ │ │ ├── buffer/
│ │ │ │ └── buffer.go
│ │ │ ├── clock/
│ │ │ │ ├── README.md
│ │ │ │ └── clock.go
│ │ │ ├── dbg/
│ │ │ │ └── dbg.go
│ │ │ ├── serialize/
│ │ │ │ ├── keyvalues.go
│ │ │ │ ├── keyvalues_no_slog.go
│ │ │ │ └── keyvalues_slog.go
│ │ │ ├── severity/
│ │ │ │ └── severity.go
│ │ │ └── sloghandler/
│ │ │ └── sloghandler_slog.go
│ │ ├── k8s_references.go
│ │ ├── k8s_references_slog.go
│ │ ├── klog.go
│ │ ├── klog_file.go
│ │ ├── klog_file_others.go
│ │ ├── klog_file_windows.go
│ │ ├── klogr.go
│ │ ├── klogr_slog.go
│ │ └── safeptr.go
│ ├── kube-openapi/
│ │ ├── LICENSE
│ │ └── pkg/
│ │ ├── cached/
│ │ │ └── cache.go
│ │ ├── common/
│ │ │ ├── common.go
│ │ │ ├── doc.go
│ │ │ └── interfaces.go
│ │ ├── handler3/
│ │ │ └── handler.go
│ │ ├── internal/
│ │ │ ├── flags.go
│ │ │ ├── serialization.go
│ │ │ └── third_party/
│ │ │ └── go-json-experiment/
│ │ │ └── json/
│ │ │ ├── AUTHORS
│ │ │ ├── CONTRIBUTORS
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── arshal.go
│ │ │ ├── arshal_any.go
│ │ │ ├── arshal_default.go
│ │ │ ├── arshal_funcs.go
│ │ │ ├── arshal_inlined.go
│ │ │ ├── arshal_methods.go
│ │ │ ├── arshal_time.go
│ │ │ ├── decode.go
│ │ │ ├── doc.go
│ │ │ ├── encode.go
│ │ │ ├── errors.go
│ │ │ ├── fields.go
│ │ │ ├── fold.go
│ │ │ ├── intern.go
│ │ │ ├── pools.go
│ │ │ ├── state.go
│ │ │ ├── token.go
│ │ │ └── value.go
│ │ ├── schemaconv/
│ │ │ ├── openapi.go
│ │ │ ├── proto_models.go
│ │ │ └── smd.go
│ │ ├── spec3/
│ │ │ ├── component.go
│ │ │ ├── encoding.go
│ │ │ ├── example.go
│ │ │ ├── external_documentation.go
│ │ │ ├── fuzz.go
│ │ │ ├── header.go
│ │ │ ├── media_type.go
│ │ │ ├── operation.go
│ │ │ ├── parameter.go
│ │ │ ├── path.go
│ │ │ ├── request_body.go
│ │ │ ├── response.go
│ │ │ ├── security_scheme.go
│ │ │ ├── server.go
│ │ │ └── spec.go
│ │ ├── util/
│ │ │ └── proto/
│ │ │ ├── OWNERS
│ │ │ ├── doc.go
│ │ │ ├── document.go
│ │ │ ├── document_v3.go
│ │ │ └── openapi.go
│ │ └── validation/
│ │ └── spec/
│ │ ├── .gitignore
│ │ ├── LICENSE
│ │ ├── contact_info.go
│ │ ├── external_docs.go
│ │ ├── gnostic.go
│ │ ├── header.go
│ │ ├── info.go
│ │ ├── items.go
│ │ ├── license.go
│ │ ├── operation.go
│ │ ├── parameter.go
│ │ ├── path_item.go
│ │ ├── paths.go
│ │ ├── ref.go
│ │ ├── response.go
│ │ ├── responses.go
│ │ ├── schema.go
│ │ ├── security_scheme.go
│ │ ├── swagger.go
│ │ └── tag.go
│ └── utils/
│ ├── LICENSE
│ ├── buffer/
│ │ └── ring_growing.go
│ ├── clock/
│ │ ├── README.md
│ │ ├── clock.go
│ │ └── testing/
│ │ ├── fake_clock.go
│ │ └── simple_interval_clock.go
│ ├── internal/
│ │ └── third_party/
│ │ └── forked/
│ │ └── golang/
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ └── net/
│ │ ├── ip.go
│ │ └── parse.go
│ ├── net/
│ │ ├── ipfamily.go
│ │ ├── ipnet.go
│ │ ├── multi_listen.go
│ │ ├── net.go
│ │ ├── parse.go
│ │ └── port.go
│ ├── pointer/
│ │ ├── OWNERS
│ │ ├── README.md
│ │ └── pointer.go
│ ├── ptr/
│ │ ├── OWNERS
│ │ ├── README.md
│ │ └── ptr.go
│ └── trace/
│ ├── README.md
│ └── trace.go
├── modules.txt
└── sigs.k8s.io/
├── json/
│ ├── CONTRIBUTING.md
│ ├── LICENSE
│ ├── Makefile
│ ├── OWNERS
│ ├── README.md
│ ├── SECURITY.md
│ ├── SECURITY_CONTACTS
│ ├── code-of-conduct.md
│ ├── doc.go
│ ├── internal/
│ │ └── golang/
│ │ └── encoding/
│ │ └── json/
│ │ ├── decode.go
│ │ ├── encode.go
│ │ ├── fold.go
│ │ ├── fuzz.go
│ │ ├── indent.go
│ │ ├── kubernetes_patch.go
│ │ ├── scanner.go
│ │ ├── stream.go
│ │ ├── tables.go
│ │ └── tags.go
│ └── json.go
├── structured-merge-diff/
│ └── v4/
│ ├── LICENSE
│ ├── fieldpath/
│ │ ├── doc.go
│ │ ├── element.go
│ │ ├── fromvalue.go
│ │ ├── managers.go
│ │ ├── path.go
│ │ ├── pathelementmap.go
│ │ ├── serialize-pe.go
│ │ ├── serialize.go
│ │ └── set.go
│ ├── merge/
│ │ ├── conflict.go
│ │ └── update.go
│ ├── schema/
│ │ ├── doc.go
│ │ ├── elements.go
│ │ ├── equals.go
│ │ └── schemaschema.go
│ ├── typed/
│ │ ├── compare.go
│ │ ├── doc.go
│ │ ├── helpers.go
│ │ ├── merge.go
│ │ ├── parser.go
│ │ ├── reconcile_schema.go
│ │ ├── remove.go
│ │ ├── tofieldset.go
│ │ ├── typed.go
│ │ └── validate.go
│ └── value/
│ ├── allocator.go
│ ├── doc.go
│ ├── fields.go
│ ├── jsontagutil.go
│ ├── list.go
│ ├── listreflect.go
│ ├── listunstructured.go
│ ├── map.go
│ ├── mapreflect.go
│ ├── mapunstructured.go
│ ├── reflectcache.go
│ ├── scalar.go
│ ├── structreflect.go
│ ├── value.go
│ ├── valuereflect.go
│ └── valueunstructured.go
└── yaml/
├── .gitignore
├── .travis.yml
├── CONTRIBUTING.md
├── LICENSE
├── OWNERS
├── README.md
├── RELEASE.md
├── SECURITY_CONTACTS
├── code-of-conduct.md
├── fields.go
├── goyaml.v2/
│ ├── LICENSE
│ ├── LICENSE.libyaml
│ ├── NOTICE
│ ├── OWNERS
│ ├── README.md
│ ├── apic.go
│ ├── decode.go
│ ├── emitterc.go
│ ├── encode.go
│ ├── parserc.go
│ ├── readerc.go
│ ├── resolve.go
│ ├── scannerc.go
│ ├── sorter.go
│ ├── writerc.go
│ ├── yaml.go
│ ├── yamlh.go
│ └── yamlprivateh.go
├── yaml.go
└── yaml_go110.go
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/cr.yaml
================================================
release-name-template: "helm-chart-{{ .Name }}-{{ .Version }}"
================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
- package-ecosystem: docker
directory: /
schedule:
interval: weekly
- package-ecosystem: gomod
directory: /
schedule:
interval: weekly
groups:
gomod-dependencies:
patterns:
- '*'
================================================
FILE: .github/workflows/helm-chart-release.yaml
================================================
name: Release Helm Charts
on:
push:
branches:
- master
paths:
- "charts/**"
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Configure Git
run: |
git config user.name "$GITHUB_ACTOR"
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
- name: Run chart-releaser
uses: helm/chart-releaser-action@v1.2.1
env:
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
with:
config: .github/cr.yaml
================================================
FILE: .gitignore
================================================
/bin
/.go
/.push-*
/.container-*
/.dockerfile-*
/.licenses*
/.buildx-initialized
================================================
FILE: .travis.yml
================================================
sudo: required
# trusty required for docker
# https://github.com/travis-ci/travis-ci/issues/5448
dist: trusty
services:
- docker
script:
- make test
================================================
FILE: CHANGELOG.md
================================================
### Version 1.9.0 (Tue Nov 22 2024 Zihong Zheng <zihongz@google.com>)
- A scalability improvement to reduce memory footprint under large-scale scenarios.
- Pickup latest CVE fixes.
- Update dependencies version (golang, k8s, etc.).
### Version 1.8.9 (Tue Jul 29 2023 Zihong Zheng <zihongz@google.com>)
- Fix options provided to CPA's Nodes List and Watch requests.
### Version 1.8.8 (Tue Mar 28 2023 Zihong Zheng <zihongz@google.com>)
- Support custom priorityClassName in the helm chart.
- Update go dependencies.
- Version tag now comes with the v prefix (v1.8.8) to be consistent with the other k8s repos.
### Version 1.8.7 (Thu Jan 26 2023 Zihong Zheng <zihongz@google.com>)
- Bump go version to resolve Golang CVEs.
### Version 1.8.6 (Mon Aug 15 2022 Zihong Zheng <zihongz@google.com>)
- Use docker buildx for multi-arch image.
### Version 1.8.5 (Wed Aug 14 2021 Zihong Zheng <zihongz@google.com>)
- Change minimum replicas to zero in laddermode.
### Version 1.8.4 (Thu June 29 2021 Zihong Zheng <zihongz@google.com>)
- Remove USER in Dockerfile.
### Version 1.8.3 (Fri Aug 14 2020 Zihong Zheng <zihongz@google.com>)
- Fix the architecture metadata in the multi-arch imagee.
### Version 1.8.2 (Mon Aug 03 2020 Zihong Zheng <zihongz@google.com>)
- Create a multiarch image.
### Version 1.8.1 (Fri June 12 2020 Zihong Zheng <zihongz@google.com>)
- fix core calculate.
### Version 1.8.0 (Thu May 21 2020 Zihong Zheng <zihongz@google.com>)
- Allow ladder to support setting replicas to 0.
- Add simple healthz.
- use node.Status.Allocatable when calculate cores.
- Add includeUnschedulableNodes option
### Version 1.7.1 (Tue Aug 27 2019 Zihong Zheng <zihongz@google.com>)
- Fix a bug that controller is blocked by reflector.Run().
### Version 1.7.0 (Sat Aug 17 2019 Zihong Zheng <zihongz@google.com>)
- Update to use client-go@kubernetes-1.15.1.
### Version 1.6.0 (Thu May 02 2019 Zihong Zheng <zihongz@google.com>)
- Rebase base image to distroless.
### Version 1.5.0 (Fri Mar 29 2019 Zihong Zheng <zihongz@google.com>)
- Add support to filter nodes by node labels.
### Version 1.4.0 (Tue Jan 29 2019 Zihong Zheng <zihongz@google.com>)
- Add support for scaling via apps/v1 and v1 APIs.
### Version 1.3.0 (Tue Oct 02 2018 Zihong Zheng <zihongz@google.com>)
- Rebase docker image on scratch..
### Version 1.2.0 (Wed July 11 2018 Zihong Zheng <zihongz@google.com>)
- Watch nodes instead of periodic polls.
### Version 1.1.2-r2 (Mon June 12 2017 Zihong Zheng <zihongz@google.com>)
- Update base image and rebuild.
### Version 1.1.2 (Thu June 1 2017 Zihong Zheng <zihongz@google.com>)
- Update client-go to 3.0 beta.
### Version 1.1.1 (Thu February 23 2017 Zihong Zheng <zihongz@google.com>)
- Use protobufs for communication with apiserver.
### Version 1.1.0 (Wed February 22 2017 Zihong Zheng <zihongz@google.com>)
- Adds 'preventSinglePointFailure' option to linear controller and supports
switching control mode on-the-fly.
### Version 1.0.0 (Mon November 7 2016 Zihong Zheng <zihongz@google.com>)
- Releases autoscaler 1.0.0 with linear controller and default params support.
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing guidelines
## How to become a contributor and submit your own code
### Contributor License Agreements
We'd love to accept your patches! Before we can take them, we have to jump a couple of legal hurdles.
Please fill out either the individual or corporate Contributor License Agreement (CLA).
* If you are an individual writing original source code and you're sure you own the intellectual property, then you'll need to sign an [individual CLA](http://code.google.com/legal/individual-cla-v1.0.html).
* If you work for a company that wants to allow you to contribute your work, then you'll need to sign a [corporate CLA](http://code.google.com/legal/corporate-cla-v1.0.html).
Follow either of the two links above to access the appropriate CLA and instructions for how to sign and return it. Once we receive it, we'll be able to accept your pull requests.
### Contributing A Patch
1. Submit an issue describing your proposed change to the repo in question.
1. The [repo owners](OWNERS) will respond to your issue promptly.
1. If your proposed change is accepted, and you haven't already done so, sign a Contributor License Agreement (see details above).
1. Fork the desired repo, develop and test your code changes.
1. Submit a pull request.
### Adding dependencies
The project follows a standard Go project layout, see more about [dependency-management](https://github.com/kubernetes/community/blob/master/contributors/devel/development.md#dependency-management).
================================================
FILE: Dockerfile.in
================================================
# 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.
FROM {ARG_FROM}
# When building, we can pass a unique value (e.g. `date +%s`) for this arg,
# which will force a rebuild from here (by invalidating docker's cache).
ARG FORCE_REBUILD=0
# When building, we can pass a hash of the licenses tree, which docker checks
# against its cache and can force a rebuild from here.
ARG HASH_LICENSES=0
# Add third-party licenses.
COPY .licenses/ /LICENSES/
# When building, we can pass a hash of the binary, which docker checks against
# its cache and can force a rebuild from here.
ARG HASH_BINARY=0
# Add the platform-specific binary.
COPY bin/{ARG_OS}_{ARG_ARCH}/{ARG_BIN} /{ARG_BIN}
# This would be nicer as `nobody:nobody` but distroless has no such entries.
USER 65535:65535
ENV HOME=/
ENTRYPOINT ["/{ARG_BIN}"]
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "{}"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright {yyyy} {name of copyright owner}
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: Makefile
================================================
# 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.
DBG_MAKEFILE ?=
ifeq ($(DBG_MAKEFILE),1)
$(warning ***** starting Makefile for goal(s) "$(MAKECMDGOALS)")
$(warning ***** $(shell date))
else
# If we're not debugging the Makefile, don't echo recipes.
MAKEFLAGS += -s
endif
# The binaries to build (just the basenames)
BINS ?= cluster-proportional-autoscaler
# The platforms we support. In theory this can be used for Windows platforms,
# too, but they require specific base images, which we do not have.
ALL_PLATFORMS ?= linux/amd64 linux/arm linux/arm64 linux/ppc64le linux/s390x
# The "FROM" part of the Dockerfile. This should be a manifest-list which
# supports all of the platforms listed in ALL_PLATFORMS.
BASE_IMAGE ?= gcr.io/distroless/static:nonroot
# Where to push the docker images.
REGISTRY ?= gcr.io/k8s-staging-cpa
# Credentials to access the registry.
REGISTRY_USERNAME ?= oauth2accesstoken
REGISTRY_PASSWORD ?= $$(gcloud auth print-access-token)
# This version-strategy uses git tags to set the version string
VERSION ?= $(shell git describe --tags --always --dirty)
#
# This version-strategy uses a manual value to set the version string
#VERSION ?= 1.2.3
# Set this to 1 to build a debugger-friendly binaries.
DBG ?=
###
### These variables should not need tweaking.
###
# We don't need make's built-in rules.
MAKEFLAGS += --no-builtin-rules
# Be pedantic about undefined variables.
MAKEFLAGS += --warn-undefined-variables
.SUFFIXES:
# Used internally. Users should pass GOOS and/or GOARCH.
OS := $(if $(GOOS),$(GOOS),$(shell GOTOOLCHAIN=local go env GOOS))
ARCH := $(if $(GOARCH),$(GOARCH),$(shell GOTOOLCHAIN=local go env GOARCH))
TAG := $(VERSION)__$(OS)_$(ARCH)
GO_VERSION := 1.24
BUILD_IMAGE := golang:$(GO_VERSION)-alpine
BIN_EXTENSION :=
ifeq ($(OS), windows)
BIN_EXTENSION := .exe
endif
# It's necessary to set this because some environments don't link sh -> bash.
SHELL := /usr/bin/env bash -o errexit -o pipefail -o nounset
# This is used in docker buildx commands
BUILDX_NAME := $(shell basename $$(pwd))
# Satisfy --warn-undefined-variables.
GOFLAGS ?=
HTTP_PROXY ?=
HTTPS_PROXY ?=
# Because we store the module cache locally.
GOFLAGS := $(GOFLAGS) -modcacherw
# If you want to build all binaries, see the 'all-build' rule.
# If you want to build all containers, see the 'all-container' rule.
# If you want to build AND push all containers, see the 'all-push' rule.
all: # @HELP builds binaries for one platform ($OS/$ARCH)
all: build
# For the following OS/ARCH expansions, we transform OS/ARCH into OS_ARCH
# because make pattern rules don't match with embedded '/' characters.
build-%:
$(MAKE) build \
--no-print-directory \
GOOS=$(firstword $(subst _, ,$*)) \
GOARCH=$(lastword $(subst _, ,$*))
container-%:
$(MAKE) container \
--no-print-directory \
GOOS=$(firstword $(subst _, ,$*)) \
GOARCH=$(lastword $(subst _, ,$*))
push-%:
$(MAKE) push \
--no-print-directory \
GOOS=$(firstword $(subst _, ,$*)) \
GOARCH=$(lastword $(subst _, ,$*))
all-build: # @HELP builds binaries for all platforms
all-build: $(addprefix build-, $(subst /,_, $(ALL_PLATFORMS)))
all-container: # @HELP builds containers for all platforms
all-container: $(addprefix container-, $(subst /,_, $(ALL_PLATFORMS)))
all-push: # @HELP pushes containers for all platforms to the defined registry
all-push: $(addprefix push-, $(subst /,_, $(ALL_PLATFORMS)))
# The following structure defeats Go's (intentional) behavior to always touch
# result files, even if they have not changed. This will still run `go` but
# will not trigger further work if nothing has actually changed.
OUTBINS = $(foreach bin,$(BINS),bin/$(OS)_$(ARCH)/$(bin)$(BIN_EXTENSION))
build: $(OUTBINS)
echo
# Directories that we need created to build/test.
BUILD_DIRS := bin/$(OS)_$(ARCH) \
bin/tools \
.go/bin/$(OS)_$(ARCH) \
.go/bin/$(OS)_$(ARCH)/$(OS)_$(ARCH) \
.go/cache \
.go/pkg
# Each outbin target is just a facade for the respective stampfile target.
# This `eval` establishes the dependencies for each.
$(foreach outbin,$(OUTBINS),$(eval \
$(outbin): .go/$(outbin).stamp \
))
# This is the target definition for all outbins.
$(OUTBINS):
true
# Each stampfile target can reference an $(OUTBIN) variable.
$(foreach outbin,$(OUTBINS),$(eval $(strip \
.go/$(outbin).stamp: OUTBIN = $(outbin) \
)))
# This is the target definition for all stampfiles.
# This will build the binary under ./.go and update the real binary iff needed.
STAMPS = $(foreach outbin,$(OUTBINS),.go/$(outbin).stamp)
.PHONY: $(STAMPS)
$(STAMPS): go-build
echo -ne "binary: $(OUTBIN) "
if ! cmp -s .go/$(OUTBIN) $(OUTBIN); then \
mv .go/$(OUTBIN) $(OUTBIN); \
date >$@; \
echo; \
else \
echo "(cached)"; \
fi
# This runs the actual `go build` which updates all binaries.
go-build: | $(BUILD_DIRS)
echo "# building for $(OS)/$(ARCH)"
docker run \
-i \
--rm \
-u $$(id -u):$$(id -g) \
-v $$(pwd):/src \
-w /src \
-v $$(pwd)/.go/bin/$(OS)_$(ARCH):/go/bin \
-v $$(pwd)/.go/bin/$(OS)_$(ARCH):/go/bin/$(OS)_$(ARCH) \
-v $$(pwd)/.go/cache:/.cache \
--env GOCACHE="/.cache/gocache" \
--env GOMODCACHE="/.cache/gomodcache" \
--env ARCH="$(ARCH)" \
--env OS="$(OS)" \
--env VERSION="$(VERSION)" \
--env DEBUG="$(DBG)" \
--env GOFLAGS="$(GOFLAGS)" \
--env HTTP_PROXY="$(HTTP_PROXY)" \
--env HTTPS_PROXY="$(HTTPS_PROXY)" \
$(BUILD_IMAGE) \
./build/build.sh ./...
# Example: make shell CMD="-c 'date > datefile'"
shell: # @HELP launches a shell in the containerized build environment
shell: | $(BUILD_DIRS)
echo "# launching a shell in the containerized build environment"
docker run \
-ti \
--rm \
-u $$(id -u):$$(id -g) \
-v $$(pwd):/src \
-w /src \
-v $$(pwd)/.go/bin/$(OS)_$(ARCH):/go/bin \
-v $$(pwd)/.go/bin/$(OS)_$(ARCH):/go/bin/$(OS)_$(ARCH) \
-v $$(pwd)/.go/cache:/.cache \
--env GOCACHE="/.cache/gocache" \
--env GOMODCACHE="/.cache/gomodcache" \
--env ARCH="$(ARCH)" \
--env OS="$(OS)" \
--env VERSION="$(VERSION)" \
--env DEBUG="$(DBG)" \
--env GOFLAGS="$(GOFLAGS)" \
--env HTTP_PROXY="$(HTTP_PROXY)" \
--env HTTPS_PROXY="$(HTTPS_PROXY)" \
$(BUILD_IMAGE) \
/bin/sh $(CMD)
LICENSES = .licenses
$(LICENSES): | $(BUILD_DIRS)
# Don't assume that `go` is available locally.
docker run \
-i \
--rm \
-u $$(id -u):$$(id -g) \
-v $$(pwd)/tools:/src \
-w /src \
-v $$(pwd)/bin/tools:/go/bin \
-v $$(pwd)/.go/cache:/.cache \
--env GOCACHE="/.cache/gocache" \
--env GOMODCACHE="/.cache/gomodcache" \
--env CGO_ENABLED=0 \
--env HTTP_PROXY="$(HTTP_PROXY)" \
--env HTTPS_PROXY="$(HTTPS_PROXY)" \
$(BUILD_IMAGE) \
go install github.com/google/go-licenses/v2
# The tool runs in a container because it execs `go`, which doesn't
# play nicely with CI. The tool also wants its output dir to not
# exist, so we can't just volume mount $(LICENSES).
rm -rf $(LICENSES).tmp
mkdir $(LICENSES).tmp
docker run \
-i \
--rm \
-u $$(id -u):$$(id -g) \
-v $$(pwd)/$(LICENSES).tmp:/output \
-v $$(pwd):/src \
-w /src \
-v $$(pwd)/bin/tools:/go/bin \
-v $$(pwd)/.go/cache:/.cache \
-v $$(pwd)/.go/pkg:/go/pkg \
--env HTTP_PROXY="$(HTTP_PROXY)" \
--env HTTPS_PROXY="$(HTTPS_PROXY)" \
$(BUILD_IMAGE) \
go-licenses save ./... --save_path=/output/licenses
rm -rf $(LICENSES)
mv $(LICENSES).tmp/licenses $(LICENSES)
rmdir $(LICENSES).tmp
find $(LICENSES) -type d | xargs chmod 0755
find $(LICENSES) -type f | xargs chmod 0644
CONTAINER_DOTFILES = $(foreach bin,$(BINS),.container-$(subst /,_,$(REGISTRY)/$(bin))-$(TAG))
# We print the container names here, rather than in CONTAINER_DOTFILES so
# they are always at the end of the output.
container containers: # @HELP builds containers for one platform ($OS/$ARCH)
container containers: $(CONTAINER_DOTFILES)
for bin in $(BINS); do \
echo "container: $(REGISTRY)/$$bin:$(TAG)"; \
done
echo
# Each container-dotfile target can reference a $(BIN) variable.
# This is done in 2 steps to enable target-specific variables.
$(foreach bin,$(BINS),$(eval $(strip \
.container-$(subst /,_,$(REGISTRY)/$(bin))-$(TAG): BIN = $(bin) \
)))
$(foreach bin,$(BINS),$(eval \
.container-$(subst /,_,$(REGISTRY)/$(bin))-$(TAG): bin/$(OS)_$(ARCH)/$(bin)$(BIN_EXTENSION) $(LICENSES) Dockerfile.in \
))
# This is the target definition for all container-dotfiles.
# These are used to track build state in hidden files.
$(CONTAINER_DOTFILES): .buildx-initialized
echo
sed \
-e 's|{ARG_BIN}|$(BIN)$(BIN_EXTENSION)|g' \
-e 's|{ARG_ARCH}|$(ARCH)|g' \
-e 's|{ARG_OS}|$(OS)|g' \
-e 's|{ARG_FROM}|$(BASE_IMAGE)|g' \
Dockerfile.in > .dockerfile-$(BIN)-$(OS)_$(ARCH)
HASH_LICENSES=$$(find $(LICENSES) -type f \
| xargs md5sum | md5sum | cut -f1 -d' '); \
HASH_BINARY=$$(md5sum bin/$(OS)_$(ARCH)/$(BIN)$(BIN_EXTENSION) \
| cut -f1 -d' '); \
FORCE=0; \
docker buildx build \
--builder "$(BUILDX_NAME)" \
--build-arg FORCE_REBUILD="$$FORCE" \
--build-arg HASH_LICENSES="$$HASH_LICENSES" \
--build-arg HASH_BINARY="$$HASH_BINARY" \
--progress=plain \
--load \
--platform "$(OS)/$(ARCH)" \
--build-arg HTTP_PROXY="$(HTTP_PROXY)" \
--build-arg HTTPS_PROXY="$(HTTPS_PROXY)" \
-t $(REGISTRY)/$(BIN):$(TAG) \
-f .dockerfile-$(BIN)-$(OS)_$(ARCH) \
.
docker images -q $(REGISTRY)/$(BIN):$(TAG) > $@
echo
login: # @HELP configures docker to be authenticated to the defined registry
docker login $(REGISTRY) \
-u "$(REGISTRY_USERNAME)" \
-p "$(REGISTRY_PASSWORD)"
push: # @HELP pushes the container for one platform ($OS/$ARCH) to the defined registry
push: container
for bin in $(BINS); do \
docker push $(REGISTRY)/$$bin:$(TAG); \
done
echo
# This depends on github.com/estesp/manifest-tool.
manifest-list: # @HELP builds a manifest list of containers for all platforms
manifest-list: all-push manifest-tool
for bin in $(BINS); do \
platforms=$$(echo $(ALL_PLATFORMS) | sed 's/ /,/g'); \
bin/tools/manifest-tool \
--username="$(REGISTRY_USERNAME)" \
--password="$(REGISTRY_PASSWORD)" \
push from-args \
--platforms "$$platforms" \
--template $(REGISTRY)/$$bin:$(VERSION)__OS_ARCH \
--target $(REGISTRY)/$$bin:$(VERSION); \
done
manifest-tool: # @HELP builds manifest-tool
manifest-tool:
# Don't assume that `go` is available locally.
docker run \
-i \
--rm \
-u $$(id -u):$$(id -g) \
-v $$(pwd)/tools:/src \
-w /src \
-v $$(pwd)/bin/tools:/go/bin \
-v $$(pwd)/.go/cache:/.cache \
--env GOCACHE="/.cache/gocache" \
--env GOMODCACHE="/.cache/gomodcache" \
--env CGO_ENABLED=0 \
--env HTTP_PROXY="$(HTTP_PROXY)" \
--env HTTPS_PROXY="$(HTTPS_PROXY)" \
$(BUILD_IMAGE) \
go install github.com/estesp/manifest-tool/v2/cmd/manifest-tool
version: # @HELP outputs the version string
version:
echo $(VERSION)
test: # @HELP runs tests, as defined in ./build/test.sh
test: | $(BUILD_DIRS)
docker run \
-i \
--rm \
-u $$(id -u):$$(id -g) \
-v $$(pwd):/src \
-w /src \
-v $$(pwd)/.go/bin/$(OS)_$(ARCH):/go/bin \
-v $$(pwd)/.go/bin/$(OS)_$(ARCH):/go/bin/$(OS)_$(ARCH) \
-v $$(pwd)/.go/cache:/.cache \
--env GOCACHE="/.cache/gocache" \
--env GOMODCACHE="/.cache/gomodcache" \
--env ARCH="$(ARCH)" \
--env OS="$(OS)" \
--env VERSION="$(VERSION)" \
--env DEBUG="$(DBG)" \
--env GOFLAGS="$(GOFLAGS)" \
--env HTTP_PROXY="$(HTTP_PROXY)" \
--env HTTPS_PROXY="$(HTTPS_PROXY)" \
$(BUILD_IMAGE) \
./build/test.sh ./...
lint: # @HELP runs golangci-lint
lint: | $(BUILD_DIRS)
docker run \
-i \
--rm \
-u $$(id -u):$$(id -g) \
-v $$(pwd):/src \
-w /src \
-v $$(pwd)/.go/bin/$(OS)_$(ARCH):/go/bin \
-v $$(pwd)/.go/bin/$(OS)_$(ARCH):/go/bin/$(OS)_$(ARCH) \
-v $$(pwd)/.go/cache:/.cache \
--env GOCACHE="/.cache/gocache" \
--env GOMODCACHE="/.cache/gomodcache" \
--env ARCH="$(ARCH)" \
--env OS="$(OS)" \
--env VERSION="$(VERSION)" \
--env DEBUG="$(DBG)" \
--env GOFLAGS="$(GOFLAGS)" \
--env HTTP_PROXY="$(HTTP_PROXY)" \
--env HTTPS_PROXY="$(HTTPS_PROXY)" \
$(BUILD_IMAGE) \
./build/lint.sh ./...
$(BUILD_DIRS):
mkdir -p $@
clean: # @HELP removes built binaries and temporary files
clean: container-clean bin-clean
container-clean:
rm -rf .container-* .dockerfile-* .push-* .buildx-initialized $(LICENSES)
bin-clean:
test -d .go && chmod -R u+w .go || true
rm -rf .go bin
help: # @HELP prints this message
help:
echo "VARIABLES:"
echo " BINS = $(BINS)"
echo " OS = $(OS)"
echo " ARCH = $(ARCH)"
echo " DBG = $(DBG)"
echo " GOFLAGS = $(GOFLAGS)"
echo " REGISTRY = $(REGISTRY)"
echo
echo "TARGETS:"
grep -E '^.*: *# *@HELP' $(MAKEFILE_LIST) \
| awk ' \
BEGIN {FS = ": *# *@HELP"}; \
{ printf " %-30s %s\n", $$1, $$2 }; \
'
# Help set up multi-arch build tools. This assumes you have the tools
# installed. If you already have a buildx builder available, you don't need
# this. See https://medium.com/@artur.klauser/building-multi-architecture-docker-images-with-buildx-27d80f7e2408
# for great context.
.buildx-initialized:
docker buildx create --name "$(BUILDX_NAME)" --node "$(BUILDX_NAME)-0" >/dev/null
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes >/dev/null
date > $@
================================================
FILE: OWNERS
================================================
# See the OWNERS file documentation:
# https://github.com/kubernetes/kubernetes/blob/master/docs/devel/owners.md
approvers:
- thockin
- erictune
- mrhohn
- bowei
================================================
FILE: README.md
================================================
# Horizontal cluster-proportional-autoscaler container
[](https://travis-ci.org/kubernetes-incubator/cluster-proportional-autoscaler)
[](https://goreportcard.com/report/github.com/kubernetes-incubator/cluster-proportional-autoscaler)
## Overview
This container image watches over the number of schedulable nodes and cores of the cluster and resizes
the number of replicas for the required resource. This functionality may be desirable for applications
that need to be autoscaled with the size of the cluster, such as DNS and other services that scale
with the number of nodes/pods in the cluster.
Usage of cluster-proportional-autoscaler:
```
--alsologtostderr[=false]: log to standard error as well as files
--configmap="": ConfigMap containing our scaling parameters.
--default-params=map[]: Default parameters(JSON format) for auto-scaling. Will create/re-create a ConfigMap with this default params if ConfigMap is not present.
--log-backtrace-at=:0: when logging hits line file:N, emit a stack trace
--log-dir="": If non-empty, write log files in this directory
--logtostderr[=false]: log to standard error instead of files
--namespace="": Namespace for all operations, fallback to the namespace of this autoscaler(through MY_POD_NAMESPACE env) if not specified.
--poll-period-seconds=10: The time, in seconds, to check cluster status and perform autoscale.
--stderrthreshold=2: logs at or above this threshold go to stderr
--target="": Targets to scale. In format: 'deployment/*,replicationcontroller/*,replicaset/*' (not case sensitive, comma delimiter supported).
--v=0: log level for V logs
--version[=false]: Print the version and exit.
--vmodule=: comma-separated list of pattern=N settings for file-filtered logging
--nodelabels=: NodeLabels for filtering search of nodes and its cpus by LabelSelectors. Input format is a comma separated list of keyN=valueN LabelSelectors. Usage example: --nodelabels=label1=value1,label2=value2.
--max-sync-failures=[0]: Number of consecutive polling failures before exiting. Default value of 0 will allow for unlimited retries.
```
## Installation with helm
Add the cluster-proportional-autoscaler Helm repository:
```sh
helm repo add cluster-proportional-autoscaler https://kubernetes-sigs.github.io/cluster-proportional-autoscaler
helm repo update
```
Then install a release using the chart. The [charts default values file](charts/cluster-proportional-autoscaler/values.yaml) provides some commented out examples for setting some of the values. There are several required values, but helm should fail with messages that indicate which value is missing.
```sh
helm upgrade --install cluster-proportional-autoscaler \
cluster-proportional-autoscaler/cluster-proportional-autoscaler --values <<name_of_your_values_file>>.yaml
```
## Examples
Please try out the examples in [the examples folder](examples/).
## Implementation Details
The code in this module is a Kubernetes Golang API client that, using the default service account credentials
available to Golang clients running inside pods, it connects to the API server and polls for the number of nodes
and cores in the cluster.
The scaling parameters and data points are provided via a ConfigMap to the autoscaler and it refreshes its
parameters table every poll interval to be up to date with the latest desired scaling parameters.
### Calculation of number of replicas
The desired number of replicas is computed by using the number of cores and nodes as input of the chosen controller.
This may be later extended to more complex interpolation or exponential scaling schemes
but it currently supports `linear` and `ladder` modes.
## Control patterns and ConfigMap formats
The ConfigMap provides the configuration parameters, allowing on-the-fly changes(including control mode) without
rebuilding or restarting the scaler containers/pods.
Currently the two supported ConfigMap key value is: `ladder` and `linear`, which corresponding to two supported control mode.
### Linear Mode
Parameters in ConfigMap must be JSON and use `linear` as key. The sub-keys as below indicates:
```
data:
linear: |-
{
"coresPerReplica": 2,
"nodesPerReplica": 1,
"min": 1,
"max": 100,
"preventSinglePointFailure": true,
"includeUnschedulableNodes": true
}
```
The equation of linear control mode as below:
```
replicas = max( ceil( cores * 1/coresPerReplica ) , ceil( nodes * 1/nodesPerReplica ) )
replicas = min(replicas, max)
replicas = max(replicas, min)
```
When `preventSinglePointFailure` is set to `true`, controller ensures at least 2 replicas
if there are more than one node.
For instance, given a cluster has 4 nodes and 13 cores. With above parameters, each replica could take care of 1 node.
So we need `4 / 1 = 4` replicas to take care of all 4 nodes. And each replica could take care of 2 cores. We need `ceil(13 / 2) = 7`
replicas to take care of all 13 cores. Controller will choose the greater one, which is `7` here, as the result.
When `includeUnschedulableNodes` is set to `true`, the replicas will scale based on the total number of nodes.
Otherwise, the replicas will only scale based on the number of schedulable nodes (i.e., cordoned and draining nodes are
excluded.)
Either one of the `coresPerReplica` or `nodesPerReplica` could be omitted. All of `min`, `max`,
`preventSinglePointFailure` and `includeUnschedulableNodes` are optional. If not set, `min` would be default to `1`,
`preventSinglePointFailure` will be default to `false` and `includeUnschedulableNodes` will be default to `false`.
Side notes:
- Both `coresPerReplica` and `nodesPerReplica` are float.
- The lowest replicas will be set to 1 when `min` is less than 1.
### Ladder Mode
Parameters in ConfigMap must be JSON and use `ladder` as key. The sub-keys as below indicates:
```
data:
ladder: |-
{
"coresToReplicas":
[
[ 1, 1 ],
[ 64, 3 ],
[ 512, 5 ],
[ 1024, 7 ],
[ 2048, 10 ],
[ 4096, 15 ]
],
"nodesToReplicas":
[
[ 1, 1 ],
[ 2, 2 ]
],
"includeUnschedulableNodes": false
}
```
The ladder controller gives out the desired replicas count by using a step function.
The step ladder function uses the datapoint for core and node scaling from the ConfigMap.
The lookup which yields the higher number of replicas will be used as the target scaling number.
For instance, given a cluster comes with `100` nodes and `400` cores and it is using above ConfigMap.
The replicas derived from "cores_to_replicas_map" would be `3` (because `64` < `400` < `512`).
The replicas derived from "nodes_to_replicas_map" would be `2` (because `100` > `2`).
And we would choose the larger one `3`.
When `includeUnschedulableNodes` is set to `true`, the replicas will scale based on total number of nodes or cores.
Otherwise, the replicas will only scale based on the number of schedulable nodes (i.e., cordoned and draining nodes are
excluded.)
Either one of the `coresToReplicas` or `nodesToReplicas` could be omitted. All elements in them should
be int. `includeUnschedulableNodes` will default to `false`.
Replicas can be set to 0 (unlike in linear mode).
Scaling to 0 replicas could be used to enable optional features as a cluster grows. For example, this
ladder would create a single replica once the cluster reaches six nodes.
```
data:
ladder: |-
{
"nodesToReplicas":
[
[ 0, 0 ],
[ 6, 1 ]
]
}
```
## Multi-target support
This container provides the configuration parameters for defining the `target` on which the cluster-proportional-autoscaler
will apply the corresponding scaling control pattern.
The supported k8s workloads for scaling are `deployment`, `replicationcontroller` and `replicaset`.
A single cluster-proportional-autoscale is capable of handling multiple targets by setting the `--target` param.
***Note:*** the k8s workloads should be under the namespace configured from the `--namespace` flag.
```
...
--target="deployment/first,deployment/second"
...
```
## Comparisons to the Horizontal Pod Autoscaler feature
The [Horizontal Pod Autoscaler](http://kubernetes.io/docs/user-guide/horizontal-pod-autoscaling/) is a top-level Kubernetes API resource. It is a closed feedback loop autoscaler which monitors CPU utilization of the pods and scales the number of replicas automatically. It requires the CPU resources to be defined for all containers in the target pods and also requires heapster to be running to provide CPU utilization metrics.
This horizontal cluster proportional autoscaler is a DIY container (because it is not a Kubernetes API resource) that provides a simple control loop that watches the cluster size and scales the target controller. The actual CPU or memory utilization of the target controller pods is not an input to the control loop, the sole inputs are number of schedulable cores and nodes in the cluster.
There is no requirement to run heapster and/or provide CPU resource limits as in HPAs.
The ConfigMap provides the operator with the ability to tune the replica scaling explicitly.
## Using NodeLabels
Nodelabels is an optional param to count only nodes and its cpus where the nodelabels exits. This is useful when nodeselector is used on the target pods controller so its needed to take account only the nodes tagged with the nodeselector labels to calculate the total replicas to scale. When the param is ignored then the cluster proportional autoscaler counts all schedulable nodes and its cpus.
================================================
FILE: RELEASE.md
================================================
# Release Process
The Cluster Proportional AutoScaler is released on an as-needed basis. The process is as follows:
1. An issue is proposing a new release with a changelog since the last release
2. All [OWNERS](OWNERS) must LGTM this release
3. An OWNER runs `git tag -s $VERSION` and inserts the changelog and pushes the tag with `git push $VERSION`
4. Compiled code is published as containers at registry.k8s.io/cpa with the name cluster-proportional-autoscaler:<version-tag>
5. The release issue is closed
6. An announcement email is sent to `kubernetes-dev@googlegroups.com` with the subject `[ANNOUNCE] cluster-proportional-autoscaler $VERSION is released`
================================================
FILE: SECURITY_CONTACTS
================================================
# Defined below are the security contacts for this repo.
#
# They are the contact point for the Product Security Team to reach out
# to for triaging and handling of incoming issues.
#
# The below names agree to abide by the
# [Embargo Policy](https://github.com/kubernetes/sig-release/blob/master/security-release-process-documentation/security-release-process.md#embargo-policy)
# and will be removed and replaced if they violate that agreement.
#
# DO NOT REPORT SECURITY VULNERABILITIES DIRECTLY TO THESE NAMES, FOLLOW THE
# INSTRUCTIONS AT https://kubernetes.io/security/
mrhohn
bowei
================================================
FILE: build/build.sh
================================================
#!/bin/sh
# 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
if [ -z "${OS:-}" ]; then
echo "OS must be set"
exit 1
fi
if [ -z "${ARCH:-}" ]; then
echo "ARCH must be set"
exit 1
fi
if [ -z "${VERSION:-}" ]; then
echo "VERSION must be set"
exit 1
fi
export CGO_ENABLED=0
export GOARCH="${ARCH}"
export GOOS="${OS}"
export GO111MODULE=on
if [ "${DEBUG:-}" = 1 ]; then
# Debugging - disable optimizations and inlining
gogcflags="all=-N -l"
goasmflags=""
goldflags=""
else
# Not debugging - trim paths, disable symbols and DWARF.
goasmflags="all=-trimpath=$(pwd)"
gogcflags="all=-trimpath=$(pwd)"
goldflags="-s -w"
fi
always_ldflags="-X $(go list -m)/pkg/version.Version=${VERSION}"
go install \
-installsuffix "static" \
-gcflags="${gogcflags}" \
-asmflags="${goasmflags}" \
-ldflags="${always_ldflags} ${goldflags}" \
"$@"
================================================
FILE: build/lint.sh
================================================
#!/bin/sh
# Copyright 2022 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
export CGO_ENABLED=0
export GO111MODULE=on
cd tools >/dev/null
go install github.com/golangci/golangci-lint/cmd/golangci-lint
cd - >/dev/null
printf "Running golangci-lint: "
ERRS=$(golangci-lint run "$@" 2>&1 || true)
if [ -n "${ERRS}" ]; then
echo "FAIL"
echo "${ERRS}"
echo
exit 1
fi
echo "PASS"
echo
================================================
FILE: build/test.sh
================================================
#!/bin/sh
# 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
export CGO_ENABLED=0
export GO111MODULE=on
echo "Running tests:"
go test -installsuffix "static" "$@"
echo
================================================
FILE: charts/cluster-proportional-autoscaler/.helmignore
================================================
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
================================================
FILE: charts/cluster-proportional-autoscaler/Chart.yaml
================================================
apiVersion: v2
name: cluster-proportional-autoscaler
version: 1.1.0
appVersion: 1.8.6
description: This chart is used to deploy an instance of the cluster-proportional-autoscaler.
maintainers:
- name: krmichel
url: https://github.com/krmichel
- name: d-mcd
url: https://github.com/d-mcd
================================================
FILE: charts/cluster-proportional-autoscaler/templates/_helpers.tpl
================================================
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "cluster-proportional-autoscaler.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "cluster-proportional-autoscaler.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "cluster-proportional-autoscaler.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Common labels
*/}}
{{- define "cluster-proportional-autoscaler.labels" -}}
helm.sh/chart: {{ include "cluster-proportional-autoscaler.chart" . }}
{{ include "cluster-proportional-autoscaler.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end -}}
{{/*
Selector labels
*/}}
{{- define "cluster-proportional-autoscaler.selectorLabels" -}}
app.kubernetes.io/name: {{ include "cluster-proportional-autoscaler.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end -}}
{{/*
Create the name of the service account to use
*/}}
{{- define "cluster-proportional-autoscaler.serviceAccountName" -}}
{{- if .Values.serviceAccount.create -}}
{{ default (include "cluster-proportional-autoscaler.fullname" .) .Values.serviceAccount.name }}
{{- else -}}
{{ default "default" .Values.serviceAccount.name }}
{{- end -}}
{{- end -}}
{{/*
Calculate node values based on provided values
*/}}
{{- define "cluster-proportional-autoscaler.nodeLables" -}}
{{- if .Values.options.nodeLabels }}
{{- $labels := list }}
{{- range $k, $v := .Values.options.nodeLabels }}
{{- $labels = mustAppend $labels (printf "%s=%s" $k $v) }}
{{- end }}
{{- join "," $labels }}
{{- end }}
{{- end }}
================================================
FILE: charts/cluster-proportional-autoscaler/templates/clusterrole.yaml
================================================
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: {{ include "cluster-proportional-autoscaler.fullname" . }}
labels:
{{- include "cluster-proportional-autoscaler.labels" . | nindent 4 }}
rules:
- apiGroups: [""]
resources: ["nodes"]
verbs: ["list", "watch"]
================================================
FILE: charts/cluster-proportional-autoscaler/templates/clusterrolebinding.yaml
================================================
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: {{ include "cluster-proportional-autoscaler.fullname" . }}
labels:
{{- include "cluster-proportional-autoscaler.labels" . | nindent 4 }}
subjects:
- kind: ServiceAccount
name: {{ include "cluster-proportional-autoscaler.serviceAccountName" . }}
namespace: {{ .Release.Namespace }}
roleRef:
kind: ClusterRole
name: {{ include "cluster-proportional-autoscaler.fullname" . }}
apiGroup: rbac.authorization.k8s.io
================================================
FILE: charts/cluster-proportional-autoscaler/templates/configmap.yaml
================================================
{{ $config := pick .Values.config "ladder" "linear" }}
{{ if not $config }}
{{ fail "A config must be supplied for either ladder mode or linear mode" }}
{{- end }}
{{- if and $config.ladder $config.linear }}
{{ fail "You must supply a config for either ladder mode or linear mode but not both" }}
{{- end }}
{{ $key := mustFirst (keys $config) }}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: {{ include "cluster-proportional-autoscaler.fullname" . }}
namespace: {{ default .Release.Namespace .Values.options.namespace }}
data:
{{- if $key }}
{{ $key }}: |-
{{- get $config $key | mustToJson | nindent 4 }}
{{- end }}
================================================
FILE: charts/cluster-proportional-autoscaler/templates/deployment.yaml
================================================
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "cluster-proportional-autoscaler.fullname" . }}
namespace: {{ default .Release.Namespace .Values.options.namespace }}
labels:
{{- include "cluster-proportional-autoscaler.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "cluster-proportional-autoscaler.selectorLabels" . | nindent 6 }}
template:
metadata:
{{- with .Values.podAnnotations }}
annotations:
{{- toYaml . | nindent 8 }}
{{- end }}
labels:
{{- include "cluster-proportional-autoscaler.selectorLabels" . | nindent 8 }}
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
serviceAccountName: {{ include "cluster-proportional-autoscaler.serviceAccountName" . }}
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
containers:
- name: {{ .Chart.Name }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
args:
- --configmap={{ include "cluster-proportional-autoscaler.fullname" . }}
- --logtostderr={{ ternary true false (not (empty .Values.options.logToStdErr)) }}
- --namespace={{ default .Release.Namespace .Values.options.namespace }}
- --target={{- required "options.target must be specified" .Values.options.target }}
- --v={{ .Values.options.logLevel | int }}
{{- with ternary true false (not (empty .Values.options.alsoLogToStdErr)) }}
- --alsologtostderr={{ . }}
{{- end }}
{{- with .Values.options.logBacktraceAt }}
- --log-backtrace-at={{ . }}
{{- end }}
{{- with .Values.options.logDir }}
- --log-dir={{ . }}
{{- end }}
{{- with .Values.options.maxSyncFailures | toString }}
- --max-sync-failures={{ ternary (. | int) 0 (ge (. | int) 0) }}
{{- end }}
{{- with (include "cluster-proportional-autoscaler.nodeLables" .) }}
- --nodelabels={{ . }}
{{- end }}
{{- with .Values.options.pollPeriodSeconds }}
- --poll-period-seconds={{ ternary (. | int) 1 (gt (. | int) 0) }}
{{- end }}
{{- with .Values.options.stdErrThreshold }}
- --stderrthreshold={{ . }}
{{- end }}
{{- with .Values.options.vmodule }}
- --vmodule={{ . }}
{{- end }}
livenessProbe:
httpGet:
path: /healthz
port: 8080
readinessProbe:
httpGet:
path: /healthz
port: 8080
{{- with .Values.resources }}
resources:
{{- toYaml . | nindent 12 }}
{{- end }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.priorityClassName }}
priorityClassName: {{ . | quote }}
{{- end }}
================================================
FILE: charts/cluster-proportional-autoscaler/templates/role.yaml
================================================
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: {{ include "cluster-proportional-autoscaler.fullname" . }}
namespace: {{ default .Release.Namespace .Values.options.namespace }}
labels:
{{- include "cluster-proportional-autoscaler.labels" . | nindent 4 }}
rules:
- apiGroups: [""]
resources: ["replicationcontrollers/scale"]
verbs: ["get", "update"]
- apiGroups: ["extensions","apps"]
resources: ["deployments/scale", "replicasets/scale"]
verbs: ["get", "update"]
- apiGroups: [""]
resources: ["configmaps"]
verbs: ["get"]
================================================
FILE: charts/cluster-proportional-autoscaler/templates/rolebinding.yaml
================================================
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: {{ include "cluster-proportional-autoscaler.fullname" . }}
namespace: {{ default .Release.Namespace .Values.options.namespace }}
labels:
{{- include "cluster-proportional-autoscaler.labels" . | nindent 4 }}
subjects:
- kind: ServiceAccount
name: {{ include "cluster-proportional-autoscaler.serviceAccountName" . }}
namespace: {{ .Release.Namespace }}
roleRef:
kind: Role
name: {{ include "cluster-proportional-autoscaler.fullname" . }}
apiGroup: rbac.authorization.k8s.io
================================================
FILE: charts/cluster-proportional-autoscaler/templates/serviceaccount.yaml
================================================
{{- if .Values.serviceAccount.create -}}
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ include "cluster-proportional-autoscaler.serviceAccountName" . }}
namespace: {{ default .Release.Namespace .Values.options.namespace }}
labels:
{{- include "cluster-proportional-autoscaler.labels" . | nindent 4 }}
{{- with .Values.serviceAccount.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
{{- end }}
================================================
FILE: charts/cluster-proportional-autoscaler/values.yaml
================================================
affinity: {}
config: {}
# ladder:
# coresToReplicas:
# - [ 1, 1 ]
# - [ 64, 3 ]
# - [ 512, 5 ]
# - [ 1024, 7 ]
# - [ 2048, 10 ]
# - [ 4096, 15 ]
# nodesToReplicas:
# - [ 1, 1 ]
# - [ 2, 2 ]
# linear:
# coresPerReplica: 2
# nodesPerReplica: 1
# min: 1
# max: 100
# preventSinglePointFailure: true
# includeUnschedulableNodes: true
image:
repository: registry.k8s.io/cpa/cluster-proportional-autoscaler
pullPolicy: IfNotPresent
tag:
imagePullSecrets: []
fullnameOverride:
nameOverride:
nodeSelector: {}
options:
alsoLogToStdErr:
logBacktraceAt:
logDir:
# --v=0: log level for V logs
logLevel:
# Defaulting to true limits use of ephemeral storage
logToStdErr: true
maxSyncFailures:
namespace:
nodeLabels: {}
# label1: value1
# label2: value2
pollPeriodSeconds:
stdErrThreshold:
target:
vmodule:
podAnnotations: {}
podSecurityContext: {}
# fsGroup: 2000
replicaCount: 1
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
securityContext: {}
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
serviceAccount:
create: true
annotations: {}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
# If set and create is false, no service account will be created and the expectation is that the provided service account already exists or it will use the "default" service account
name:
tolerations: []
priorityClassName: ""
================================================
FILE: cmd/cluster-proportional-autoscaler/autoscaler.go
================================================
/*
Copyright 2016 The Kubernetes Authors All rights reserved.
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 (
"fmt"
"os"
"k8s.io/component-base/cli/flag"
"github.com/kubernetes-sigs/cluster-proportional-autoscaler/cmd/cluster-proportional-autoscaler/options"
"github.com/kubernetes-sigs/cluster-proportional-autoscaler/pkg/autoscaler"
"github.com/kubernetes-sigs/cluster-proportional-autoscaler/pkg/version"
"github.com/golang/glog"
"github.com/spf13/pflag"
)
func main() {
config := options.NewAutoScalerConfig()
config.AddFlags(pflag.CommandLine)
flag.InitFlags()
if config.PrintVer {
fmt.Printf("%s\n", version.VERSION)
os.Exit(0)
}
// Perform further validation of flags.
if err := config.ValidateFlags(); err != nil {
glog.Errorf("%v", err)
os.Exit(1)
}
glog.V(0).Infof("Scaling Namespace: %s, Target: %s", config.Namespace, config.Target)
scaler, err := autoscaler.NewAutoScaler(config)
if err != nil {
glog.Errorf("%v", err)
os.Exit(1)
}
// Begin autoscaling.
scaler.Run()
}
================================================
FILE: cmd/cluster-proportional-autoscaler/options/options.go
================================================
/*
Copyright 2016 The Kubernetes Authors All rights reserved.
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 options contains flags for initializing an autoscaler.
package options
import (
"encoding/json"
"fmt"
"os"
"strings"
"github.com/golang/glog"
"github.com/spf13/pflag"
)
// AutoScalerConfig configures and runs an autoscaler server
type AutoScalerConfig struct {
Target string
ConfigMap string
Namespace string
DefaultParams configMapData
PollPeriodSeconds int
PrintVer bool
NodeLabels string
MaxSyncFailures int
}
// NewAutoScalerConfig returns a Autoscaler config
func NewAutoScalerConfig() *AutoScalerConfig {
return &AutoScalerConfig{
Namespace: os.Getenv("MY_POD_NAMESPACE"),
PollPeriodSeconds: 10,
PrintVer: false,
}
}
// ValidateFlags validates whether flags are set up correctly
func (c *AutoScalerConfig) ValidateFlags() error {
var errorsFound bool
c.Target = strings.ToLower(c.Target)
if !isTargetFormatValid(c.Target) {
errorsFound = true
}
if c.ConfigMap == "" {
errorsFound = true
glog.Errorf("--configmap parameter cannot be empty")
}
if c.Namespace == "" {
errorsFound = true
glog.Errorf("--namespace parameter not set and failed to fallback")
}
if c.PollPeriodSeconds < 1 {
errorsFound = true
glog.Errorf("--poll-period-seconds cannot be less than 1")
}
// Log all sanity check errors before returning a single error string
if errorsFound {
return fmt.Errorf("failed to validate all input parameters")
}
return nil
}
func isTargetFormatValid(target string) bool {
if target == "" {
glog.Errorf("--target parameter cannot be empty")
return false
}
for _, target := range strings.Split(target, ",") {
target := strings.TrimSpace(target)
if !strings.HasPrefix(target, "deployment/") &&
!strings.HasPrefix(target, "replicationcontroller/") &&
!strings.HasPrefix(target, "replicaset/") {
glog.Errorf("Target format error. Please use 'deployment/*,replicationcontroller/*,replicaset/*' (not case sensitive, comma delimiter supported).")
return false
}
}
return true
}
type configMapData map[string]string
func (c *configMapData) Set(raw string) error {
var rawData map[string]interface{}
if err := json.Unmarshal([]byte(raw), &rawData); err != nil {
return err
}
*c = make(map[string]string)
for key, param := range rawData {
marshaled, err := json.Marshal(param)
if err != nil {
return err
}
(*c)[key] = string(marshaled)
}
return nil
}
func (c *configMapData) String() string {
return fmt.Sprintf("%v", *c)
}
func (c *configMapData) Type() string {
return "configMapData"
}
// AddFlags adds flags for a specific AutoScaler to the specified FlagSet
func (c *AutoScalerConfig) AddFlags(fs *pflag.FlagSet) {
fs.StringVar(&c.Target, "target", c.Target, "Target to scale. In format: 'deployment/*,replicationcontroller/*,replicaset/*' (not case sensitive, comma delimiter supported).")
fs.StringVar(&c.ConfigMap, "configmap", c.ConfigMap, "ConfigMap containing our scaling parameters.")
fs.StringVar(&c.Namespace, "namespace", c.Namespace, "Namespace for all operations, fallback to the namespace of this autoscaler(through MY_POD_NAMESPACE env) if not specified.")
fs.IntVar(&c.PollPeriodSeconds, "poll-period-seconds", c.PollPeriodSeconds, "The time, in seconds, to check cluster status and perform autoscale.")
fs.BoolVar(&c.PrintVer, "version", c.PrintVer, "Print the version and exit.")
fs.Var(&c.DefaultParams, "default-params", "Default parameters(JSON format) for auto-scaling. Will create/re-create a ConfigMap with this default params if ConfigMap is not present.")
fs.StringVar(&c.NodeLabels, "nodelabels", c.NodeLabels, "NodeLabels for filtering search of nodes and its cpus by LabelSelectors. Input format is a comma separated list of keyN=valueN LabelSelectors. Usage example: --nodelabels=label1=value1,label2=value2.")
fs.IntVar(&c.MaxSyncFailures, "max-sync-failures", c.MaxSyncFailures, "Number of consecutive polling failures before exiting. Default value of 0 will allow for unlimited retries.")
}
================================================
FILE: cmd/cluster-proportional-autoscaler/options/options_test.go
================================================
/*
Copyright 2016 The Kubernetes Authors All rights reserved.
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 options
import (
"strings"
"testing"
)
func TestIsTargetFormatValid(t *testing.T) {
testCases := []struct {
target string
expResult bool
}{
{
"deployment/anything",
true,
},
{
"replicationcontroller/anything",
true,
},
{
"replicaset/anything",
true,
},
{
"DeplOymEnT/anything",
true,
},
{
"DeplOymEnT/anything, replicaset/anything,replicationcontroller/anything",
true,
},
{
"deployments/anything",
false,
},
{
"noexist/anything",
false,
},
{
"deployment",
false,
},
}
for _, tc := range testCases {
tc.target = strings.ToLower(tc.target)
res := isTargetFormatValid(tc.target)
if res != tc.expResult {
t.Errorf("Target format verification for [%v] failed. Expected %v, Got %v", tc.target, tc.expResult, res)
}
}
}
================================================
FILE: code-of-conduct.md
================================================
# Kubernetes Community Code of Conduct
Please refer to our [Kubernetes Community Code of Conduct](https://git.k8s.io/community/code-of-conduct.md)
================================================
FILE: examples/RBAC/RBAC-configs.yaml
================================================
# Copyright 2016 The Kubernetes Authors. All rights reserved
#
# 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.
kind: ServiceAccount
apiVersion: v1
metadata:
name: cluster-proportional-autoscaler-example
namespace: default
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: cluster-proportional-autoscaler-example
rules:
- apiGroups: [""]
resources: ["nodes"]
verbs: ["list", "watch"]
- apiGroups: [""]
resources: ["replicationcontrollers/scale"]
verbs: ["get", "update"]
- apiGroups: ["extensions","apps"]
resources: ["deployments/scale", "replicasets/scale"]
verbs: ["get", "update"]
- apiGroups: [""]
resources: ["configmaps"]
verbs: ["get", "create"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: cluster-proportional-autoscaler-example
subjects:
- kind: ServiceAccount
name: cluster-proportional-autoscaler-example
namespace: default
roleRef:
kind: ClusterRole
name: cluster-proportional-autoscaler-example
apiGroup: rbac.authorization.k8s.io
================================================
FILE: examples/README.md
================================================
# Example files
There are several example yaml files in this folder, each of them will create
an autoscaler Deployment watches and resizes the replicas of the nginx server.
They are using different control modes.
Use below commands to create / delete one of the example:
```
kubectl create -f linear.yaml
...
kubectl delete -f linear.yaml
```
P.S. You need to delete the created configMap explicitly when using
*-defaultparams.yaml.
# RBAC configurations
RBAC authentication has been enabled by default in Kubernetes 1.6+. You will need
to create the following RBAC resources to give the controller the permissions to
function correctly.
Use below commands to create / delete the RBAC resources:
```
kubectl create -f RBAC-configs.yaml
...
kubectl delete -f RBAC-configs.yaml
```
RBAC documentation: https://kubernetes.io/docs/reference/access-authn-authz/rbac/
================================================
FILE: examples/ladder-defaultparams.yaml
================================================
# Copyright 2016 The Kubernetes Authors. All rights reserved
#
# 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.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-autoscale-example
namespace: default
spec:
selector:
matchLabels:
run: nginx-autoscale-example
replicas: 1
template:
metadata:
labels:
run: nginx-autoscale-example
spec:
containers:
- name: nginx-autoscale-example
image: nginx
ports:
- containerPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-autoscaler
namespace: default
labels:
app: autoscaler
spec:
selector:
matchLabels:
app: autoscaler
replicas: 1
template:
metadata:
labels:
app: autoscaler
spec:
containers:
- image: registry.k8s.io/cpa/cluster-proportional-autoscaler-amd64:{LATEST_RELEASE}
name: autoscaler
command:
- /cluster-proportional-autoscaler
- --namespace=default
- --configmap=nginx-autoscaler
- --target=deployment/nginx-autoscale-example
- --default-params={"ladder":{"coresToReplicas":[[1, 1],[2, 2],[3, 4],[512, 5]],"nodesToReplicas":[[ 1,1 ],[ 2,2 ]],"includeUnschedulableNodes":"true"}}
- --logtostderr=true
- --v=2
# Uncomment below line if you are using RBAC configs under the RBAC folder.
# serviceAccountName: cluster-proportional-autoscaler-example
================================================
FILE: examples/ladder.yaml
================================================
# Copyright 2016 The Kubernetes Authors. All rights reserved
#
# 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.
kind: ConfigMap
apiVersion: v1
metadata:
name: nginx-autoscaler
namespace: default
data:
ladder: |-
{
"coresToReplicas":
[
[ 1,1 ],
[ 3,3 ],
[ 512,5 ],
[ 1024,7 ],
[ 2048,10 ],
[ 4096,15 ],
[ 8192,20 ],
[ 12288,30 ],
[ 16384,40 ],
[ 20480,50 ],
[ 24576,60 ],
[ 28672,70 ],
[ 32768,80 ],
[ 65535,100 ]
],
"nodesToReplicas":
[
[ 1,1 ],
[ 2,2 ]
]
}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-autoscale-example
namespace: default
spec:
selector:
matchLabels:
run: nginx-autoscale-example
replicas: 1
template:
metadata:
labels:
run: nginx-autoscale-example
spec:
containers:
- name: nginx-autoscale-example
image: nginx
ports:
- containerPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-autoscaler
namespace: default
labels:
app: autoscaler
spec:
selector:
matchLabels:
app: autoscaler
replicas: 1
template:
metadata:
labels:
app: autoscaler
spec:
containers:
- image: registry.k8s.io/cpa/cluster-proportional-autoscaler-amd64:{LATEST_RELEASE}
name: autoscaler
command:
- /cluster-proportional-autoscaler
- --namespace=default
- --configmap=nginx-autoscaler
- --target=deployment/nginx-autoscale-example
- --logtostderr=true
- --v=2
# Uncomment below line if you are using RBAC configs under the RBAC folder.
# serviceAccountName: cluster-proportional-autoscaler-example
================================================
FILE: examples/linear-defaultparams.yaml
================================================
# Copyright 2016 The Kubernetes Authors. All rights reserved
#
# 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.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-autoscale-example
namespace: default
spec:
selector:
matchLabels:
run: nginx-autoscale-example
replicas: 1
template:
metadata:
labels:
run: nginx-autoscale-example
spec:
containers:
- name: nginx-autoscale-example
image: nginx
ports:
- containerPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-autoscaler
namespace: default
labels:
app: autoscaler
spec:
selector:
matchLabels:
app: autoscaler
replicas: 1
template:
metadata:
labels:
app: autoscaler
spec:
containers:
- image: registry.k8s.io/cpa/cluster-proportional-autoscaler-amd64:{LATEST_RELEASE}
name: autoscaler
command:
- /cluster-proportional-autoscaler
- --namespace=default
- --configmap=nginx-autoscaler
- --target=deployment/nginx-autoscale-example
- --default-params={"linear":{"coresPerReplica":2,"nodesPerReplica":1,"preventSinglePointFailure":true,"includeUnschedulableNodes":true}}
- --logtostderr=true
- --v=2
# Uncomment below line if you are using RBAC configs under the RBAC folder.
# serviceAccountName: cluster-proportional-autoscaler-example
================================================
FILE: examples/linear.yaml
================================================
# Copyright 2016 The Kubernetes Authors. All rights reserved
#
# 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.
kind: ConfigMap
apiVersion: v1
metadata:
name: nginx-autoscaler
namespace: default
data:
linear: |-
{
"coresPerReplica": 2,
"nodesPerReplica": 1,
"preventSinglePointFailure": true
}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-autoscale-example
namespace: default
spec:
selector:
matchLabels:
run: nginx-autoscale-example
replicas: 1
template:
metadata:
labels:
run: nginx-autoscale-example
spec:
containers:
- name: nginx-autoscale-example
image: nginx
ports:
- containerPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-autoscaler
namespace: default
labels:
app: autoscaler
spec:
selector:
matchLabels:
app: autoscaler
replicas: 1
template:
metadata:
labels:
app: autoscaler
spec:
containers:
- image: registry.k8s.io/cpa/cluster-proportional-autoscaler-amd64:{LATEST_RELEASE}
name: autoscaler
command:
- /cluster-proportional-autoscaler
- --namespace=default
- --configmap=nginx-autoscaler
- --target=deployment/nginx-autoscale-example
- --logtostderr=true
- --v=2
# Uncomment below line if you are using RBAC configs under the RBAC folder.
# serviceAccountName: cluster-proportional-autoscaler-example
================================================
FILE: go.mod
================================================
module github.com/kubernetes-sigs/cluster-proportional-autoscaler
go 1.24
require (
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc
github.com/golang/glog v1.2.4
github.com/spf13/pflag v1.0.6
k8s.io/api v0.32.3
k8s.io/apimachinery v0.32.3
k8s.io/client-go v0.32.3
k8s.io/component-base v0.32.3
k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738
)
require (
github.com/emicklei/go-restful/v3 v3.11.0 // indirect
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
github.com/go-logr/logr v1.4.2 // indirect
github.com/go-openapi/jsonpointer v0.21.0 // indirect
github.com/go-openapi/jsonreference v0.20.2 // indirect
github.com/go-openapi/swag v0.23.0 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/google/gnostic-models v0.6.8 // indirect
github.com/google/go-cmp v0.6.0 // indirect
github.com/google/gofuzz v1.2.0 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/spf13/cobra v1.8.1 // indirect
github.com/x448/float16 v0.8.4 // indirect
golang.org/x/net v0.36.0 // indirect
golang.org/x/oauth2 v0.23.0 // indirect
golang.org/x/sys v0.30.0 // indirect
golang.org/x/term v0.29.0 // indirect
golang.org/x/text v0.22.0 // indirect
golang.org/x/time v0.7.0 // indirect
google.golang.org/protobuf v1.35.1 // indirect
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
k8s.io/klog/v2 v2.130.1 // indirect
k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect
sigs.k8s.io/yaml v1.4.0 // indirect
)
================================================
FILE: go.sum
================================================
github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g=
github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E=
github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ=
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ=
github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY=
github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k=
github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE=
github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ=
github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang/glog v1.2.4 h1:CNNw5U8lSiiBk7druxtSHHTsRWcxKoac6kZKm2peBBc=
github.com/golang/glog v1.2.4/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I=
github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo=
github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/onsi/ginkgo/v2 v2.21.0 h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM=
github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo=
github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4=
github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM=
github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o=
github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA=
golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I=
golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs=
golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU=
golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ=
golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.26.0 h1:v/60pFQmzmT9ExmjDv2gGIfi3OqfKoEP6I5+umXlbnQ=
golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA=
google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4=
gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M=
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
k8s.io/api v0.32.3 h1:Hw7KqxRusq+6QSplE3NYG4MBxZw1BZnq4aP4cJVINls=
k8s.io/api v0.32.3/go.mod h1:2wEDTXADtm/HA7CCMD8D8bK4yuBUptzaRhYcYEEYA3k=
k8s.io/apimachinery v0.32.3 h1:JmDuDarhDmA/Li7j3aPrwhpNBA94Nvk5zLeOge9HH1U=
k8s.io/apimachinery v0.32.3/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE=
k8s.io/client-go v0.32.3 h1:RKPVltzopkSgHS7aS98QdscAgtgah/+zmpAogooIqVU=
k8s.io/client-go v0.32.3/go.mod h1:3v0+3k4IcT9bXTc4V2rt+d2ZPPG700Xy6Oi0Gdl2PaY=
k8s.io/component-base v0.32.3 h1:98WJvvMs3QZ2LYHBzvltFSeJjEx7t5+8s71P7M74u8k=
k8s.io/component-base v0.32.3/go.mod h1:LWi9cR+yPAv7cu2X9rZanTiFKB2kHA+JjmhkKjCZRpI=
k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f h1:GA7//TjRY9yWGy1poLzYYJJ4JRdzg3+O6e8I+e+8T5Y=
k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f/go.mod h1:R/HEjbvWI0qdfb8viZUeVZm0X6IZnxAydC7YU42CMw4=
k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro=
k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8=
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo=
sigs.k8s.io/structured-merge-diff/v4 v4.4.2 h1:MdmvkGuXi/8io6ixD5wud3vOLwc1rj0aNqRlpuvjmwA=
sigs.k8s.io/structured-merge-diff/v4 v4.4.2/go.mod h1:N8f93tFZh9U6vpxwRArLiikrE5/2tiu1w1AGfACIGE4=
sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
================================================
FILE: pkg/autoscaler/autoscaler_server.go
================================================
/*
Copyright 2016 The Kubernetes Authors All rights reserved.
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 autoscaler
import (
"os"
"time"
v1 "k8s.io/api/core/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
"k8s.io/utils/clock"
"github.com/kubernetes-sigs/cluster-proportional-autoscaler/cmd/cluster-proportional-autoscaler/options"
"github.com/kubernetes-sigs/cluster-proportional-autoscaler/pkg/autoscaler/controller"
"github.com/kubernetes-sigs/cluster-proportional-autoscaler/pkg/autoscaler/controller/plugin"
"github.com/kubernetes-sigs/cluster-proportional-autoscaler/pkg/autoscaler/k8sclient"
"github.com/golang/glog"
)
// AutoScaler determines the number of replicas to run
type AutoScaler struct {
k8sClient k8sclient.K8sClient
controller controller.Controller
configMapName string
defaultParams map[string]string
pollPeriod time.Duration
clock clock.WithTicker
stopCh chan struct{}
readyCh chan<- struct{} // For testing.
healthServer HealthServer
lastPollCycleHealth *healthInfo
maxSyncFailures int
exitFn func()
}
// NewAutoScaler returns a new AutoScaler
func NewAutoScaler(c *options.AutoScalerConfig) (*AutoScaler, error) {
config, err := rest.InClusterConfig()
if err != nil {
return nil, err
}
// Use protobufs for communication with apiserver.
config.ContentType = "application/vnd.kubernetes.protobuf"
clientset, err := kubernetes.NewForConfig(config)
if err != nil {
return nil, err
}
newK8sClient, err := k8sclient.NewK8sClient(clientset, c.Namespace, c.Target, c.NodeLabels)
if err != nil {
return nil, err
}
healthInfo := newHealthInfo()
healthServer := httpHealthServer{lastPollCycleHealth: healthInfo}
return &AutoScaler{
k8sClient: newK8sClient,
configMapName: c.ConfigMap,
defaultParams: c.DefaultParams,
pollPeriod: time.Second * time.Duration(c.PollPeriodSeconds),
clock: clock.RealClock{},
stopCh: make(chan struct{}),
readyCh: make(chan struct{}, 1),
lastPollCycleHealth: healthInfo,
healthServer: &healthServer,
maxSyncFailures: c.MaxSyncFailures,
exitFn: func() { os.Exit(1) },
}, nil
}
// Run periodically counts the number of nodes and cores, estimates the expected
// number of replicas, compares them to the actual replicas, and
// updates the target resource with the expected replicas if necessary.
func (s *AutoScaler) Run() {
ticker := s.clock.NewTicker(s.pollPeriod)
s.readyCh <- struct{}{} // For testing.
go s.healthServer.Start()
// Don't wait for ticker and execute pollAPIServer() for the first time.
s.tryPollAPIServer()
for {
select {
case <-ticker.C():
s.tryPollAPIServer()
case <-s.stopCh:
return
}
}
}
func (s *AutoScaler) tryPollAPIServer() {
err := s.pollAPIServer()
attempts := s.lastPollCycleHealth.setLastPollError(err)
// if we've tried polling the apiserver more times than allowed
if s.maxSyncFailures > 0 && attempts == s.maxSyncFailures {
glog.Errorf("Maximum number of api server polling attempts (%d) have been reached. Exiting application.", s.maxSyncFailures)
s.exitFn()
}
}
func (s *AutoScaler) pollAPIServer() error {
// Query the apiserver for the cluster status --- number of nodes and cores
clusterStatus, err := s.k8sClient.GetClusterStatus()
if err != nil {
glog.Errorf("Error while getting cluster status: %v", err)
return err
}
glog.V(4).Infof("Total nodes %5d, schedulable nodes: %5d", clusterStatus.TotalNodes, clusterStatus.SchedulableNodes)
glog.V(4).Infof("Total cores %5d, schedulable cores: %5d", clusterStatus.TotalCores, clusterStatus.SchedulableCores)
// Sync autoscaler ConfigMap with apiserver
configMap, err := s.syncConfigWithServer()
if err != nil || configMap == nil {
glog.Errorf("Error syncing configMap with apiserver: %v", err)
return err
}
// Only sync updated ConfigMap or before controller is set.
if s.controller == nil || configMap.ObjectMeta.ResourceVersion != s.controller.GetParamsVersion() {
// Ensure corresponding controller type and scaling params.
s.controller, err = plugin.EnsureController(s.controller, configMap)
if err != nil || s.controller == nil {
glog.Errorf("Error ensuring controller: %v", err)
return err
}
}
// Query the controller for the expected replicas number
expReplicas, err := s.controller.GetExpectedReplicas(clusterStatus)
if err != nil {
glog.Errorf("Error calculating expected replicas number: %v", err)
return err
}
glog.V(4).Infof("Expected replica count: %3d", expReplicas)
// Update resource target with expected replicas.
err = s.k8sClient.UpdateReplicas(expReplicas)
if err != nil {
glog.Errorf("Update failure: %s", err)
}
return err
}
func (s *AutoScaler) syncConfigWithServer() (*v1.ConfigMap, error) {
// Fetch autoscaler ConfigMap data from apiserver
configMap, err := s.k8sClient.FetchConfigMap(s.k8sClient.GetNamespace(), s.configMapName)
if err == nil {
return configMap, nil
}
if s.defaultParams == nil {
return nil, err
}
glog.V(0).Infof("ConfigMap not found: %v, will create one with default params", err)
configMap, err = s.k8sClient.CreateConfigMap(s.k8sClient.GetNamespace(), s.configMapName, s.defaultParams)
if err != nil {
return nil, err
}
return configMap, nil
}
================================================
FILE: pkg/autoscaler/autoscaler_test.go
================================================
/*
Copyright 2016 The Kubernetes Authors All rights reserved.
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 autoscaler
import (
"context"
"errors"
"testing"
"time"
v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/util/wait"
testingclock "k8s.io/utils/clock/testing"
"github.com/kubernetes-sigs/cluster-proportional-autoscaler/pkg/autoscaler/controller/laddercontroller"
"github.com/kubernetes-sigs/cluster-proportional-autoscaler/pkg/autoscaler/controller/linearcontroller"
"github.com/kubernetes-sigs/cluster-proportional-autoscaler/pkg/autoscaler/k8sclient"
)
func TestRun(t *testing.T) {
testConfigMap := v1.ConfigMap{
Data: make(map[string]string),
}
testConfigMap.ObjectMeta.ResourceVersion = `1`
testConfigMap.Data[laddercontroller.ControllerType] =
`{
"coresToReplicas":
[
[1, 1],
[2, 2],
[3, 3],
[512, 5],
[1024, 7],
[2048, 10],
[4096, 15],
[8192, 20],
[12288, 30],
[16384, 40],
[20480, 50],
[24576, 60],
[28672, 70],
[32768, 80],
[65535, 100]
],
"nodesToReplicas":
[
[ 1,1 ],
[ 2,2 ]
]
}`
mockK8s := k8sclient.MockK8sClient{
NumOfNodes: 0,
NumOfCores: 0,
NumOfReplicas: 0,
ConfigMap: &testConfigMap,
}
fakeClock := testingclock.NewFakeClock(time.Now())
fakePollPeriod := 5 * time.Second
fakeConfigMapName := "fake-cluster-proportional-autoscaler-params"
autoScaler := &AutoScaler{
k8sClient: &mockK8s,
controller: laddercontroller.NewLadderController(),
clock: fakeClock,
pollPeriod: fakePollPeriod,
configMapName: fakeConfigMapName,
stopCh: make(chan struct{}),
readyCh: make(chan<- struct{}, 1),
lastPollCycleHealth: newHealthInfo(),
healthServer: mockHealthServer{},
}
go autoScaler.Run()
defer close(autoScaler.stopCh)
t.Logf("Scenario: cluster size changing\n")
t.Logf("Wait for the number of replicas be scaled to 1 even no node and no core)\n")
if err := waitForReplicasNumberSatisfy(t, &mockK8s, 1); err != nil {
t.Fatalf("Timeout waiting for condition: %v", err)
}
mockK8s.NumOfCores = 800
mockK8s.NumOfNodes = 1
fakeClock.Step(fakePollPeriod)
t.Logf("Wait for the number of replicas be scaled to 5 when there are 800 cores and 1 node\n")
if err := waitForReplicasNumberSatisfy(t, &mockK8s, 5); err != nil {
t.Fatalf("Timeout waiting for condition: %v", err)
}
mockK8s.NumOfCores = 1
mockK8s.NumOfNodes = 3
fakeClock.Step(fakePollPeriod)
t.Logf("Wait for the number of replicas be scaled to 2 when there are 1 cores and 3 node\n")
if err := waitForReplicasNumberSatisfy(t, &mockK8s, 2); err != nil {
t.Fatalf("Timeout waiting for condition: %v", err)
}
mockK8s.NumOfCores = 200000
mockK8s.NumOfNodes = 50000
fakeClock.Step(fakePollPeriod)
t.Logf("Wait for the number of replicas be scaled to 100 when there are 200000 cores and 50000 node\n")
if err := waitForReplicasNumberSatisfy(t, &mockK8s, 100); err != nil {
t.Fatalf("Timeout waiting for condition: %v", err)
}
t.Logf("Scenario: ConfigMap is changed\n")
mockK8s.ConfigMap.Data[laddercontroller.ControllerType] =
`{
"coresToReplicas":
[
[1, 1],
[2, 2],
[3, 4],
[512, 5],
[1024, 7],
[2048, 10],
[4096, 15],
[8192, 20],
[12288, 30],
[16384, 40],
[20480, 50],
[24576, 60],
[28672, 70],
[32768, 80],
[65535, 200]
],
"nodesToReplicas":
[
[ 1,1 ],
[ 2,2 ]
]
}`
mockK8s.ConfigMap.ObjectMeta.ResourceVersion = `2`
fakeClock.Step(fakePollPeriod)
t.Logf("Wait for the number of replicas be scaled to 200 with new configuration)\n")
if err := waitForReplicasNumberSatisfy(t, &mockK8s, 200); err != nil {
t.Fatalf("Timeout waiting for condition: %v", err)
}
mockK8s.NumOfCores = 500
mockK8s.NumOfNodes = 100
fakeClock.Step(fakePollPeriod)
t.Logf("Wait for the number of replicas be scaled to 4 when there are 500 cores and 100 node\n")
if err := waitForReplicasNumberSatisfy(t, &mockK8s, 4); err != nil {
t.Fatalf("Timeout waiting for condition: %v", err)
}
t.Logf("Scenario: ConfigMap is missing and later appears again\n")
mockK8s.ConfigMap.ObjectMeta.ResourceVersion = ""
fakeClock.Step(fakePollPeriod)
t.Logf("And cluster size changed in between\n")
mockK8s.NumOfCores = 2000
mockK8s.NumOfNodes = 400
mockK8s.ConfigMap.ObjectMeta.ResourceVersion = "3"
fakeClock.Step(fakePollPeriod)
t.Logf("Wait for the number of replicas be scaled to 7 when there are 2000 cores and 400 node\n")
if err := waitForReplicasNumberSatisfy(t, &mockK8s, 7); err != nil {
t.Fatalf("Timeout waiting for condition: %v", err)
}
t.Logf("Scenario: Switch control mode on the fly\n")
delete(mockK8s.ConfigMap.Data, laddercontroller.ControllerType)
mockK8s.ConfigMap.Data[linearcontroller.ControllerType] =
`{
"coresPerReplica": 100,
"nodesPerReplica": 10,
"min": 1,
"max": 100
}`
mockK8s.ConfigMap.ObjectMeta.ResourceVersion = `4`
fakeClock.Step(fakePollPeriod)
t.Logf("Wait for the number of replicas be scaled to 40 with new configuration)\n")
if err := waitForReplicasNumberSatisfy(t, &mockK8s, 40); err != nil {
t.Fatalf("Timeout waiting for condition: %v", err)
}
mockK8s.NumOfCores = 1600
mockK8s.NumOfNodes = 100
fakeClock.Step(fakePollPeriod)
t.Logf("Wait for the number of replicas be scaled to 16 when there are 1600 cores and 100 node\n")
if err := waitForReplicasNumberSatisfy(t, &mockK8s, 16); err != nil {
t.Fatalf("Timeout waiting for condition: %v", err)
}
mockK8s.NumOfCores = 100000
mockK8s.NumOfNodes = 20000
fakeClock.Step(fakePollPeriod)
t.Logf("Wait for the number of replicas be scaled to 100 when there are 100000 cores and 20000 node\n")
if err := waitForReplicasNumberSatisfy(t, &mockK8s, 100); err != nil {
t.Fatalf("Timeout waiting for condition: %v", err)
}
}
func TestRun_MaxRetries(t *testing.T) {
const maxRetries = 3
mockK8s := k8sclient.MockK8sClient{
NumOfNodes: 0,
NumOfCores: 0,
NumOfReplicas: 0,
FetchConfigMapFn: func(namespace, configmap string) (*v1.ConfigMap, error) {
return nil, errors.New("mocked error")
},
}
var exitFnCalled bool
fakeClock := testingclock.NewFakeClock(time.Now())
fakePollPeriod := 5 * time.Second
fakeConfigMapName := "fake-cluster-proportional-autoscaler-params"
readyCh := make(chan struct{})
stopCh := make(chan struct{})
autoScaler := &AutoScaler{
k8sClient: &mockK8s,
controller: laddercontroller.NewLadderController(),
clock: fakeClock,
pollPeriod: fakePollPeriod,
configMapName: fakeConfigMapName,
stopCh: stopCh,
readyCh: readyCh,
lastPollCycleHealth: newHealthInfo(),
maxSyncFailures: maxRetries,
exitFn: func() {
exitFnCalled = true
// shutdown autoScaler via stopCh to stop
close(stopCh)
},
healthServer: mockHealthServer{},
}
go autoScaler.Run()
<-readyCh
for i := 0; i < maxRetries; i++ {
fakeClock.Step(fakePollPeriod)
_ = wait.PollUntilContextTimeout(context.TODO(), 50*time.Millisecond, 3*time.Second, false, func(ctx context.Context) (done bool, err error) {
return true, nil
})
}
if !exitFnCalled {
t.Fatalf("Did not exit")
}
if autoScaler.lastPollCycleHealth.failedCount > autoScaler.maxSyncFailures {
t.Fatalf("scaler ran more times than allowed")
}
}
func waitForReplicasNumberSatisfy(t *testing.T, mockK8s *k8sclient.MockK8sClient, replicas int) error {
return wait.PollUntilContextTimeout(context.TODO(), 50*time.Millisecond, 3*time.Second, false, func(ctx context.Context) (done bool, err error) {
if mockK8s.NumOfReplicas != replicas {
t.Logf("Error number of replicas, expected: %d, got %d\n", replicas, mockK8s.NumOfReplicas)
return false, nil
}
return true, nil
})
}
type mockHealthServer struct {
}
func (s mockHealthServer) Start() {
}
================================================
FILE: pkg/autoscaler/controller/controller.go
================================================
/*
Copyright 2016 The Kubernetes Authors All rights reserved.
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 controller
import (
"k8s.io/api/core/v1"
"github.com/kubernetes-sigs/cluster-proportional-autoscaler/pkg/autoscaler/k8sclient"
)
// Controller defines the interface every controller should implement
type Controller interface {
// GetExpectedReplicas returns the expected replicas based on cluster status
GetExpectedReplicas(*k8sclient.ClusterStatus) (int32, error)
// SyncConfig syncs the ConfigMap with controller
SyncConfig(*v1.ConfigMap) error
// GetParamsVersion returns the latest parameters version from controller
GetParamsVersion() string
// GetControllerType returns the controller type
GetControllerType() string
}
================================================
FILE: pkg/autoscaler/controller/laddercontroller/ladder_controller.go
================================================
/*
Copyright 2016 The Kubernetes Authors All rights reserved.
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 laddercontroller
import (
"encoding/json"
"fmt"
"sort"
v1 "k8s.io/api/core/v1"
"github.com/kubernetes-sigs/cluster-proportional-autoscaler/pkg/autoscaler/controller"
"github.com/kubernetes-sigs/cluster-proportional-autoscaler/pkg/autoscaler/k8sclient"
"github.com/golang/glog"
)
var _ = controller.Controller(&LadderController{})
const (
// ControllerType defines the controller type string
ControllerType = "ladder"
)
// LadderController uses ladder control pattern
type LadderController struct {
params *ladderParams
version string
}
// NewLadderController returns a new ladder controller
func NewLadderController() controller.Controller {
return &LadderController{}
}
type paramEntry [2]int
type paramEntries []paramEntry
func (entries paramEntries) Len() int {
return len(entries)
}
func (entries paramEntries) Less(i, j int) bool {
return entries[i][0] < entries[j][0]
}
func (entries paramEntries) Swap(i, j int) {
entries[i], entries[j] = entries[j], entries[i]
}
type ladderParams struct {
CoresToReplicas paramEntries `json:"coresToReplicas"`
NodesToReplicas paramEntries `json:"nodesToReplicas"`
IncludeUnschedulableNodes bool `json:"includeUnschedulableNodes"`
}
func (c *LadderController) SyncConfig(configMap *v1.ConfigMap) error {
glog.V(0).Infof("Detected ConfigMap version change (old: %s new: %s) - rebuilding lookup entries", c.version, configMap.ObjectMeta.ResourceVersion)
glog.V(2).Infof("Params from apiserver: \n%v", configMap.Data[ControllerType])
params, err := parseParams([]byte(configMap.Data[ControllerType]))
if err != nil {
return fmt.Errorf("error parsing ladder params: %s", err)
}
sort.Sort(params.CoresToReplicas)
sort.Sort(params.NodesToReplicas)
c.params = params
c.version = configMap.ObjectMeta.ResourceVersion
return nil
}
// parseParams Parse the params from JSON string
func parseParams(data []byte) (*ladderParams, error) {
var p ladderParams
if err := json.Unmarshal(data, &p); err != nil {
return nil, fmt.Errorf("could not parse parameters (%s)", err)
}
for _, e := range p.CoresToReplicas {
if len(e) != 2 {
return nil, fmt.Errorf("invalid element %v in cores_to_replicas_map", e)
}
if e[0] < 0 || e[1] < 0 {
return nil, fmt.Errorf("invalid negative values in entry %v in cores_to_replicas_map", e)
}
}
for _, e := range p.NodesToReplicas {
if len(e) != 2 {
return nil, fmt.Errorf("invalid element %b in nodes_to_replicas_map", e)
}
if e[0] < 0 || e[1] < 0 {
return nil, fmt.Errorf("invalid negative values in entry %v in nodes_to_replicas_map", e)
}
}
return &p, nil
}
func (c *LadderController) GetParamsVersion() string {
return c.version
}
func (c *LadderController) GetExpectedReplicas(status *k8sclient.ClusterStatus) (int32, error) {
var expReplicas int32
if c.params.IncludeUnschedulableNodes {
// Get the expected replicas for the total nodes and cores
expReplicas = int32(c.getExpectedReplicasFromParams(int(status.TotalNodes), int(status.TotalCores)))
} else {
// Get the expected replicas for the currently schedulable nodes and cores
expReplicas = int32(c.getExpectedReplicasFromParams(int(status.SchedulableNodes), int(status.SchedulableCores)))
}
return expReplicas, nil
}
func (c *LadderController) getExpectedReplicasFromParams(nodes, cores int) int {
replicasFromCore := getExpectedReplicasFromEntries(cores, c.params.CoresToReplicas)
replicasFromNode := getExpectedReplicasFromEntries(nodes, c.params.NodesToReplicas)
// Returns the results which yields the most replicas
if replicasFromCore > replicasFromNode {
return replicasFromCore
}
return replicasFromNode
}
func getExpectedReplicasFromEntries(resources int, entries []paramEntry) int {
if len(entries) == 0 {
return 0
}
// Binary search for the corresponding replicas number
pos := sort.Search(
len(entries),
func(i int) bool {
return resources < entries[i][0]
})
if pos > 0 {
pos = pos - 1
}
return entries[pos][1]
}
func (c *LadderController) GetControllerType() string {
return ControllerType
}
================================================
FILE: pkg/autoscaler/controller/laddercontroller/ladder_controller_test.go
================================================
/*
Copyright 2016 The Kubernetes Authors All rights reserved.
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 laddercontroller
import (
"sort"
"testing"
"github.com/davecgh/go-spew/spew"
"github.com/kubernetes-sigs/cluster-proportional-autoscaler/pkg/autoscaler/k8sclient"
)
func verifyParams(t *testing.T, scalerParams, expScalerParams *ladderParams) {
if len(expScalerParams.CoresToReplicas) != len(scalerParams.CoresToReplicas) {
t.Errorf("Scaler Params length mismatch Expected: %d, Got %d", len(expScalerParams.CoresToReplicas), len(scalerParams.CoresToReplicas))
return
}
for n, expected := range expScalerParams.CoresToReplicas {
parsed := scalerParams.CoresToReplicas[n]
if expected[0] != parsed[0] || expected[1] != parsed[1] {
t.Errorf("Scaler parser error - Expected value %v MISMATCHED: Got %v", expected, parsed)
}
}
if len(expScalerParams.NodesToReplicas) != len(scalerParams.NodesToReplicas) {
t.Errorf("Scaler Params length mismatch Expected: %d, Got %d", len(expScalerParams.NodesToReplicas), len(scalerParams.NodesToReplicas))
return
}
for n, expected := range expScalerParams.NodesToReplicas {
parsed := scalerParams.NodesToReplicas[n]
if expected[0] != parsed[0] || expected[1] != parsed[1] {
t.Errorf("Scaler parser error - Expected value %v MISMATCHED: Got %v", expected, parsed)
}
}
}
func TestControllerParser(t *testing.T) {
testCases := []struct {
jsonData string
expError bool
expParams *ladderParams
}{
{
`{ "coresToReplicas" : [ [1,1] ] }`,
false,
&ladderParams{CoresToReplicas: []paramEntry{{1, 1}}},
},
{ // Invalid JSON
`{ "coresToReplicas" : {{ 1:1 } }`,
true,
&ladderParams{},
},
{ // Invalid string value in list
`{ "coresToReplicas" : [[ "1, "a"]] }`,
true,
&ladderParams{},
},
{ // Invalid negative in list
`{ "coresToReplicas" : [[:-200]] }`,
true,
&ladderParams{},
},
// IncludeUnschedulableNodes must default to false for backwards compatibility.
{
`{
"coresToReplicas":
[
[0, 0],
[1, 0],
[2, 2],
[3, 3],
[512, 5],
[1024, 7],
[2048, 10],
[4096, 15],
[8192, 20],
[12288, 30],
[16384, 40],
[20480, 50],
[24576, 60],
[28672, 70],
[65535, 100],
[32768, 80 ]
]
}`,
false,
&ladderParams{
CoresToReplicas: []paramEntry{
{0, 0},
{1, 0},
{2, 2},
{3, 3},
{512, 5},
{1024, 7},
{2048, 10},
{4096, 15},
{8192, 20},
{12288, 30},
{16384, 40},
{20480, 50},
{24576, 60},
{28672, 70},
{65535, 100},
{32768, 80},
},
IncludeUnschedulableNodes: false,
},
},
{
`{
"coresToReplicas":
[
[0, 0],
[1, 0],
[2, 2],
[3, 3]
],
"nodesToReplicas":
[
[1, 1],
[2, 2],
[3, 3]
],
"includeUnschedulableNodes": true
}`,
false,
&ladderParams{
CoresToReplicas: []paramEntry{
{0, 0},
{1, 0},
{2, 2},
{3, 3},
},
NodesToReplicas: []paramEntry{
{1, 1},
{2, 2},
{3, 3},
},
IncludeUnschedulableNodes: true,
},
},
}
for _, tc := range testCases {
params, err := parseParams([]byte(tc.jsonData))
if tc.expError {
if err == nil {
t.Errorf("Unexpected parsing success. Expected failure")
spew.Dump(tc)
spew.Dump(params)
}
continue
}
if err != nil && !tc.expError {
t.Errorf("Unexpected parse failure: %v", err)
spew.Dump(tc)
continue
}
verifyParams(t, params, tc.expParams)
}
}
func TestControllerSorter(t *testing.T) {
testCases := []struct {
testParams *ladderParams
expParams *ladderParams
}{
{
&ladderParams{
CoresToReplicas: []paramEntry{
{2, 2},
{3, 3},
{512, 5},
{1024, 7},
{20480, 50},
{4096, 15},
{2048, 10},
{8192, 20},
{65535, 100},
{16384, 40},
{12288, 30},
{1, 1},
{24576, 60},
{32768, 80},
{28672, 70},
},
},
&ladderParams{
CoresToReplicas: []paramEntry{
{1, 1},
{2, 2},
{3, 3},
{512, 5},
{1024, 7},
{2048, 10},
{4096, 15},
{8192, 20},
{12288, 30},
{16384, 40},
{20480, 50},
{24576, 60},
{28672, 70},
{32768, 80},
{65535, 100},
},
},
},
{
&ladderParams{
CoresToReplicas: []paramEntry{
{65535, 100},
{32768, 80},
{28672, 70},
{24576, 60},
{20480, 50},
{16384, 40},
{12288, 30},
{8192, 20},
{4096, 15},
{2048, 10},
{1024, 7},
{512, 5},
{3, 3},
{2, 2},
{1, 1},
},
},
&ladderParams{
CoresToReplicas: []paramEntry{
{1, 1},
{2, 2},
{3, 3},
{512, 5},
{1024, 7},
{2048, 10},
{4096, 15},
{8192, 20},
{12288, 30},
{16384, 40},
{20480, 50},
{24576, 60},
{28672, 70},
{32768, 80},
{65535, 100},
},
},
},
}
for _, tc := range testCases {
sort.Sort(tc.testParams.CoresToReplicas)
verifyParams(t, tc.testParams, tc.expParams)
}
}
func TestControllerScaler(t *testing.T) {
testEntries := []paramEntry{
{1, 1},
{2, 2},
{3, 3},
{4, 4},
{10, 10},
{20, 20},
}
testCases := []struct {
numResources int
expReplicas int
}{
{0, 1},
{1, 1},
{2, 2},
{3, 3},
{4, 4},
{6, 4},
{6, 4},
{10, 10},
{11, 10},
{19, 10},
{20, 20},
{21, 20},
{21, 20},
{40, 20},
}
for _, tc := range testCases {
if replicas := getExpectedReplicasFromEntries(tc.numResources, testEntries); tc.expReplicas != replicas {
t.Errorf("Scaler Lookup failed Expected %d, Got %d", tc.expReplicas, replicas)
}
}
}
func TestControllerScalerFromZero(t *testing.T) {
testEntries := []paramEntry{
{0, 0},
{3, 3},
}
testEntriesFromOne := []paramEntry{
{1, 0},
{3, 3},
}
testCases := []struct {
numResources int
expReplicas int
}{
{0, 0},
{1, 0},
{2, 0},
{3, 3},
{4, 3},
}
for _, tc := range testCases {
if replicas := getExpectedReplicasFromEntries(tc.numResources, testEntries); tc.expReplicas != replicas {
t.Errorf("Scaler Lookup failed Expected %d, Got %d", tc.expReplicas, replicas)
}
if replicas := getExpectedReplicasFromEntries(tc.numResources, testEntriesFromOne); tc.expReplicas != replicas {
t.Errorf("Scaler Lookup failed Expected %d, Got %d", tc.expReplicas, replicas)
}
}
}
func TestScaleFromUnschedulableNodes(t *testing.T) {
nodesToReplicas := []paramEntry{
{0, 0},
{1, 1},
{2, 2},
{3, 3},
}
coresToReplicas := []paramEntry{
{0, 0},
{4, 1},
{8, 2},
{12, 3},
}
testcases := []struct {
clusterStatus *k8sclient.ClusterStatus
expectedReplicas int32
includeSchedulableNodes bool
}{
{
clusterStatus: &k8sclient.ClusterStatus{
TotalNodes: 3,
SchedulableNodes: 2,
TotalCores: 12,
SchedulableCores: 8,
},
expectedReplicas: 3,
includeSchedulableNodes: true,
},
{
clusterStatus: &k8sclient.ClusterStatus{
TotalNodes: 3,
SchedulableNodes: 1,
TotalCores: 12,
SchedulableCores: 4,
},
expectedReplicas: 1,
includeSchedulableNodes: false,
},
}
for _, tc := range testcases {
c := &LadderController{
params: &ladderParams{
CoresToReplicas: coresToReplicas,
NodesToReplicas: nodesToReplicas,
IncludeUnschedulableNodes: tc.includeSchedulableNodes,
},
}
actualReplicas, err := c.GetExpectedReplicas(tc.clusterStatus)
if err != nil {
t.Errorf("Unexpected error: %v", err)
spew.Dump(tc)
continue
}
if tc.expectedReplicas != actualReplicas {
t.Errorf("ScaleFromUnschedulableNodes failed Expected %d, Got %d", tc.expectedReplicas, actualReplicas)
spew.Dump(tc)
continue
}
}
}
================================================
FILE: pkg/autoscaler/controller/linearcontroller/linear_controller.go
================================================
/*
Copyright 2016 The Kubernetes Authors All rights reserved.
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 linearcontroller
import (
"encoding/json"
"fmt"
"math"
"k8s.io/api/core/v1"
"github.com/kubernetes-sigs/cluster-proportional-autoscaler/pkg/autoscaler/controller"
"github.com/kubernetes-sigs/cluster-proportional-autoscaler/pkg/autoscaler/k8sclient"
"github.com/golang/glog"
)
var _ = controller.Controller(&LinearController{})
const (
// ControllerType defines the controller type string
ControllerType = "linear"
)
// LinearController uses linear control pattern
type LinearController struct {
params *linearParams
version string
}
// NewLinearController returns a new linear controller
func NewLinearController() controller.Controller {
return &LinearController{}
}
type linearParams struct {
CoresPerReplica float64 `json:"coresPerReplica"`
NodesPerReplica float64 `json:"nodesPerReplica"`
Min int `json:"min"`
Max int `json:"max"`
PreventSinglePointFailure bool `json:"preventSinglePointFailure"`
IncludeUnschedulableNodes bool `json:"includeUnschedulableNodes"`
}
func (c *LinearController) SyncConfig(configMap *v1.ConfigMap) error {
glog.V(0).Infof("ConfigMap version change (old: %s new: %s) - rebuilding params", c.version, configMap.ObjectMeta.ResourceVersion)
glog.V(2).Infof("Params from apiserver: \n%v", configMap.Data[ControllerType])
params, err := parseParams([]byte(configMap.Data[ControllerType]))
if err != nil {
return fmt.Errorf("error parsing linear params: %s", err)
}
c.params = params
c.version = configMap.ObjectMeta.ResourceVersion
return nil
}
// parseParams Parse the params from JSON string
func parseParams(data []byte) (*linearParams, error) {
var p linearParams
if err := json.Unmarshal(data, &p); err != nil {
return nil, fmt.Errorf("could not parse parameters (%s)", err)
}
if p.Min < 0 {
return nil, fmt.Errorf("invalid negative value for min: %v", p.Min)
} else if p.Min == 0 {
glog.V(2).Infof("Defaulting min replicas count to 1 for linear controller")
p.Min = 1
}
if p.Max != 0 && p.Max < p.Min {
return nil, fmt.Errorf("max replicas count %v should be greater than / equal to min replicas count %v", p.Max, p.Min)
}
if p.CoresPerReplica == 0 && p.NodesPerReplica == 0 {
return nil, fmt.Errorf("should at least provide either CoresPerReplica or NodesPerReplica (Greater than 0)")
}
if p.CoresPerReplica < 0 {
return nil, fmt.Errorf("invalid negative value for coresPerReplica: %v", p.CoresPerReplica)
}
if p.NodesPerReplica < 0 {
return nil, fmt.Errorf("invalid negative value for nodesPerReplica: %v", p.NodesPerReplica)
}
return &p, nil
}
func (c *LinearController) GetParamsVersion() string {
return c.version
}
func (c *LinearController) GetExpectedReplicas(status *k8sclient.ClusterStatus) (int32, error) {
// Get the expected replicas for the currently number of nodes and cores
expReplicas := int32(c.getExpectedReplicasFromParams(int(status.SchedulableNodes), int(status.SchedulableCores), int(status.TotalNodes), int(status.TotalCores)))
return expReplicas, nil
}
func (c *LinearController) getExpectedReplicasFromParams(schedulableNodes, schedulableCores, totalNodes, totalCores int) int {
nodes := schedulableNodes
cores := schedulableCores
if c.params.IncludeUnschedulableNodes {
nodes = totalNodes
cores = totalCores
}
replicasFromCore := c.getExpectedReplicasFromParam(cores, c.params.CoresPerReplica)
replicasFromNode := c.getExpectedReplicasFromParam(nodes, c.params.NodesPerReplica)
// Prevent single point of failure by having at least 2 replicas when
// there are more than one node.
if c.params.PreventSinglePointFailure &&
nodes > 1 &&
replicasFromNode < 2 {
replicasFromNode = 2
}
// Returns the results which yields the most replicas
if replicasFromCore > replicasFromNode {
return replicasFromCore
}
return replicasFromNode
}
func (c *LinearController) getExpectedReplicasFromParam(schedulableResources int, resourcesPerReplica float64) int {
if resourcesPerReplica == 0 {
return 1
}
res := math.Ceil(float64(schedulableResources) / resourcesPerReplica)
if c.params.Max != 0 {
res = math.Min(float64(c.params.Max), res)
}
return int(math.Max(float64(c.params.Min), res))
}
func (c *LinearController) GetControllerType() string {
return ControllerType
}
================================================
FILE: pkg/autoscaler/controller/linearcontroller/linear_controller_test.go
================================================
/*
Copyright 2016 The Kubernetes Authors All rights reserved.
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 linearcontroller
import (
"testing"
"github.com/davecgh/go-spew/spew"
)
func verifyParams(t *testing.T, scalerParams, expScalerParams *linearParams) {
if scalerParams.CoresPerReplica != expScalerParams.CoresPerReplica ||
scalerParams.NodesPerReplica != expScalerParams.NodesPerReplica ||
scalerParams.Min != expScalerParams.Min ||
scalerParams.Max != expScalerParams.Max {
t.Errorf("Parser error - Expected params %v MISMATCHED: Got %v", expScalerParams, scalerParams)
}
}
func TestControllerParser(t *testing.T) {
testCases := []struct {
jsonData string
expError bool
expParams *linearParams
}{
{
`{
"coresPerReplica": 2,
"nodesPerReplica": 1,
"min": 1,
"max": 100,
"preventSinglePointFailure": true,
"includeUnschedulableNodes": true
}`,
false,
&linearParams{
CoresPerReplica: 2,
NodesPerReplica: 1,
Min: 1,
Max: 100,
PreventSinglePointFailure: true,
IncludeUnschedulableNodes: true,
},
},
// IncludeUnschedulableNodes must default to false for backwards compatibility.
{
`{
"coresPerReplica": 2,
"nodesPerReplica": 1,
"min": 1,
"max": 100,
}`,
true,
&linearParams{
CoresPerReplica: 2,
NodesPerReplica: 1,
Min: 1,
Max: 100,
PreventSinglePointFailure: true,
IncludeUnschedulableNodes: false,
},
},
{ // Invalid JSON
`{ "coresPerReplica": {{ 1:1 } }`,
true,
&linearParams{},
},
{ // Invalid string value
`{ "coresPerReplica": "whatisthis"`,
true,
&linearParams{},
},
{ // Invalid negative value
`{ "nodesPerReplica": -20 }`,
true,
&linearParams{},
},
{ // Invalid max that smaller tham min
`{
"nodesPerReplica": 1,
"min": 100,
"max": 50
}`,
true,
&linearParams{},
},
{ // Both coresPerReplica and nodesPerReplica are unset
`{
"min": 1,
"max": 100
}`,
true,
&linearParams{},
},
// Wrong input for PreventSinglePointFailure.
{
`{
"coresPerReplica": 2,
"nodesPerReplica": 1,
"min": 1,
"max": 100,
"preventSinglePointFailure": invalid,
}`,
true,
&linearParams{},
},
// Wrong input for IncludeUnschedulableNodes.
{
`{
"coresPerReplica": 2,
"nodesPerReplica": 1,
"min": 1,
"max": 100,
"includeUnschedulableNodes": invalid,
}`,
true,
&linearParams{},
},
}
for _, tc := range testCases {
params, err := parseParams([]byte(tc.jsonData))
if tc.expError {
if err == nil {
t.Errorf("Unexpected parsing success. Expected failure")
spew.Dump(tc)
spew.Dump(params)
}
continue
}
if err != nil && !tc.expError {
t.Errorf("Unexpected parse failure: %v", err)
spew.Dump(tc)
continue
}
verifyParams(t, params, tc.expParams)
}
}
func TestScaleFromSingleParam(t *testing.T) {
testController := &LinearController{}
testController.params = &linearParams{
CoresPerReplica: 2,
Min: 2,
Max: 100,
}
testCases := []struct {
numResources int
expReplicas int
}{
{0, 2},
{1, 2},
{2, 2},
{3, 2},
{4, 2},
{6, 3},
{6, 3},
{10, 5},
{11, 6},
{19, 10},
{20, 10},
{21, 11},
{30, 15},
{40, 20},
}
for _, tc := range testCases {
if replicas := testController.getExpectedReplicasFromParam(tc.numResources, testController.params.CoresPerReplica); tc.expReplicas != replicas {
t.Errorf("Scaler Lookup failed Expected %d, Got %d", tc.expReplicas, replicas)
}
}
}
func TestScaleFromMultipleParams(t *testing.T) {
testController := &LinearController{}
testController.params = &linearParams{
CoresPerReplica: 2,
NodesPerReplica: 2.5,
Min: 1,
Max: 100,
PreventSinglePointFailure: true,
IncludeUnschedulableNodes: false,
}
testCases := []struct {
numCores int
numNodes int
expReplicas int
}{
{0, 0, 1},
{1, 2, 2},
{2, 3, 2},
{3, 4, 2},
{4, 4, 2},
{6, 4, 3},
{6, 5, 3},
{8, 5, 4},
{8, 15, 6},
{8, 16, 7},
{19, 21, 10},
{23, 20, 12},
{26, 38, 16},
{30, 49, 20},
{40, 20, 20},
}
for _, tc := range testCases {
if replicas := testController.getExpectedReplicasFromParams(tc.numNodes, tc.numCores, tc.numNodes, tc.numNodes); tc.expReplicas != replicas {
t.Errorf("Scaler Lookup failed for case %v: Expected %d, Got %d", tc, tc.expReplicas, replicas)
}
}
}
func TestScaleFromUnschedulableNodes(t *testing.T) {
testController := &LinearController{}
testController.params = &linearParams{
CoresPerReplica: 2,
NodesPerReplica: 2,
Min: 1,
Max: 100,
PreventSinglePointFailure: true,
IncludeUnschedulableNodes: true,
}
testCases := []struct {
numSchedulableCores int
numSchedulableNodes int
numCores int
numNodes int
expReplicas int
}{
{0, 0, 0, 0, 1},
{1, 1, 1, 1, 1},
{2, 2, 2, 2, 2},
{4, 4, 4, 4, 2},
{2, 2, 4, 4, 2},
{8, 8, 8, 8, 4},
{6, 6, 8, 8, 4},
{21, 21, 210, 210, 100},
}
for _, tc := range testCases {
if replicas := testController.getExpectedReplicasFromParams(tc.numSchedulableNodes, tc.numSchedulableCores, tc.numNodes, tc.numNodes); tc.expReplicas != replicas {
t.Errorf("Scaler Lookup failed for case %v: Expected %d, Got %d", tc, tc.expReplicas, replicas)
}
}
}
================================================
FILE: pkg/autoscaler/controller/plugin/plugin.go
================================================
/*
Copyright 2016 The Kubernetes Authors All rights reserved.
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 plugin
import (
"fmt"
"k8s.io/api/core/v1"
"github.com/kubernetes-sigs/cluster-proportional-autoscaler/pkg/autoscaler/controller"
"github.com/kubernetes-sigs/cluster-proportional-autoscaler/pkg/autoscaler/controller/laddercontroller"
"github.com/kubernetes-sigs/cluster-proportional-autoscaler/pkg/autoscaler/controller/linearcontroller"
"github.com/golang/glog"
)
// EnsureController ensures controller type and scaling params
func EnsureController(cont controller.Controller, configMap *v1.ConfigMap) (controller.Controller, error) {
// Expect only one entry, which uses the name of control mode as the key
if len(configMap.Data) != 1 {
return nil, fmt.Errorf("invalid configMap format, expected only one entry, got: %v", configMap.Data)
}
for mode := range configMap.Data {
// No need to reset controller if control pattern doesn't change
if cont != nil && mode == cont.GetControllerType() {
break
}
switch mode {
case laddercontroller.ControllerType:
cont = laddercontroller.NewLadderController()
case linearcontroller.ControllerType:
cont = linearcontroller.NewLinearController()
default:
return nil, fmt.Errorf("not a supported control mode: %v", mode)
}
glog.V(1).Infof("Set control mode to %v", mode)
}
// Sync config with controller
if err := cont.SyncConfig(configMap); err != nil {
return nil, fmt.Errorf("Error syncing configMap with controller: %v", err)
}
return cont, nil
}
================================================
FILE: pkg/autoscaler/controller/plugin/plugin_test.go
================================================
/*
Copyright 2016 The Kubernetes Authors All rights reserved.
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 plugin
import (
"testing"
"k8s.io/api/core/v1"
)
func TestEnsureController(t *testing.T) {
testCases := []struct {
configMap *v1.ConfigMap
expError bool
}{
{
&v1.ConfigMap{
Data: map[string]string{
"invalidmode": "",
},
},
true,
},
{
&v1.ConfigMap{
Data: map[string]string{
"toomanyentries1": "",
"toomanyentries2": "",
},
},
true,
},
{
&v1.ConfigMap{
Data: map[string]string{
"linear": "{\"nodesPerReplica\":1}",
},
},
false,
},
}
for _, tc := range testCases {
_, err := EnsureController(nil, tc.configMap)
if err != nil && !tc.expError {
t.Errorf("Expect no error, got error for configMap %v, error msg: %v", tc.configMap, err)
continue
} else if err == nil && tc.expError {
t.Errorf("Expect error, got no error for configMap %v, error msg: %v", tc.configMap, err)
continue
}
}
}
================================================
FILE: pkg/autoscaler/doc.go
================================================
/*
Copyright 2016 The Kubernetes Authors All rights reserved.
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 autoscaler implements logic to poll the k8s apiserver for cluster status,
// and update the replicas number of a deployment/rc/rs based on current status.
package autoscaler
================================================
FILE: pkg/autoscaler/health.go
================================================
/*
Copyright 2016 The Kubernetes Authors All rights reserved.
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 autoscaler
import (
"fmt"
"net/http"
"sync"
"github.com/golang/glog"
)
type healthInfo struct {
m sync.Mutex
lastError error
failedCount int
}
func newHealthInfo() *healthInfo {
return &healthInfo{m: sync.Mutex{}, lastError: nil, failedCount: 0}
}
func (h *healthInfo) setLastPollError(err error) int {
h.m.Lock()
defer h.m.Unlock()
h.lastError = err
if h.lastError == nil {
h.failedCount = 0
} else {
h.failedCount++
}
return h.failedCount
}
func (h *healthInfo) getLastPollError() error {
h.m.Lock()
defer h.m.Unlock()
return h.lastError
}
type HealthServer interface {
Start()
}
type httpHealthServer struct {
lastPollCycleHealth *healthInfo
}
func (hs *httpHealthServer) Start() {
http.HandleFunc("/healthz", func(w http.ResponseWriter, req *http.Request) {})
http.HandleFunc("/last-poll", hs.lastPollFn)
glog.Fatal(http.ListenAndServe(":8080", nil))
}
func (hs *httpHealthServer) lastPollFn(w http.ResponseWriter, req *http.Request) {
if err := hs.lastPollCycleHealth.getLastPollError(); err != nil {
w.WriteHeader(500)
_, _ = w.Write([]byte(fmt.Sprintf("Encountered error at last poll cycle: %v", err)))
return
}
}
================================================
FILE: pkg/autoscaler/k8sclient/k8sclient.go
================================================
/*
Copyright 2016 The Kubernetes Authors All rights reserved.
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 k8sclient
import (
"context"
"fmt"
"strings"
autoscalingv1 "k8s.io/api/autoscaling/v1"
v1 "k8s.io/api/core/v1"
extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/client-go/informers"
"k8s.io/client-go/kubernetes"
corelisters "k8s.io/client-go/listers/core/v1"
"k8s.io/client-go/rest"
"github.com/golang/glog"
)
// K8sClient - Wraps all needed client functionalities for autoscaler
type K8sClient interface {
// FetchConfigMap fetches the requested configmap from the Apiserver
FetchConfigMap(namespace, configmap string) (*v1.ConfigMap, error)
// CreateConfigMap creates a configmap with given namespace, name and params
CreateConfigMap(namespace, configmap string, params map[string]string) (*v1.ConfigMap, error)
// UpdateConfigMap updates a configmap with given namespace, name and params
UpdateConfigMap(namespace, configmap string, params map[string]string) (*v1.ConfigMap, error)
// GetClusterStatus counts schedulable nodes and cores in the cluster
GetClusterStatus() (clusterStatus *ClusterStatus, err error)
// GetNamespace returns the namespace of target resource.
GetNamespace() (namespace string)
// UpdateReplicas updates the number of replicas for the resource and return the previous replicas count
UpdateReplicas(expReplicas int32) (err error)
}
// k8sClient - Wraps all Kubernetes API client functionalities
type k8sClient struct {
scaleTargets *scaleTargets
clientset kubernetes.Interface
clusterStatus *ClusterStatus
nodeLister corelisters.NodeLister
stopCh chan struct{}
}
func getTrimmedNodeClients(clientset kubernetes.Interface, labelOptions informers.SharedInformerOption) (informers.SharedInformerFactory, corelisters.NodeLister, error) {
factory := informers.NewSharedInformerFactoryWithOptions(clientset, 0, labelOptions)
nodeInformer := factory.Core().V1().Nodes().Informer()
err := nodeInformer.SetTransform(func(obj any) (any, error) {
// Trimming unneeded fields to reduce memory consumption under large-scale.
if node, ok := obj.(*v1.Node); ok {
node.ObjectMeta = metav1.ObjectMeta{
Name: node.Name,
}
node.Spec = v1.NodeSpec{
Unschedulable: node.Spec.Unschedulable,
}
node.Status = v1.NodeStatus{
Allocatable: node.Status.Allocatable,
Conditions: node.Status.Conditions,
}
}
return obj, nil
})
if err != nil {
return nil, nil, err
}
nodeLister := factory.Core().V1().Nodes().Lister()
return factory, nodeLister, nil
}
// NewK8sClient gives a k8sClient with the given dependencies.
func NewK8sClient(clientset kubernetes.Interface, namespace, target string, nodelabels string) (K8sClient, error) {
// Start the informer to list and watch nodes.
stopCh := make(chan struct{})
labelOptions := informers.WithTweakListOptions(func(opts *metav1.ListOptions) {
opts.LabelSelector = nodelabels
})
factory, nodeLister, err := getTrimmedNodeClients(clientset, labelOptions)
if err != nil {
return nil, err
}
factory.Start(stopCh)
factory.WaitForCacheSync(stopCh)
scaleTargets, err := getScaleTargets(target, namespace)
if err != nil {
return nil, err
}
return &k8sClient{
scaleTargets: scaleTargets,
clientset: clientset,
nodeLister: nodeLister,
stopCh: stopCh,
}, nil
}
func getScaleTargets(targets, namespace string) (*scaleTargets, error) {
st := &scaleTargets{targets: []target{}, namespace: namespace}
for _, el := range strings.Split(targets, ",") {
el := strings.TrimSpace(el)
target, err := getTarget(el)
if err != nil {
return &scaleTargets{}, fmt.Errorf("target format error: %v", targets)
}
st.targets = append(st.targets, target)
}
return st, nil
}
func getTarget(t string) (target, error) {
splits := strings.Split(t, "/")
if len(splits) != 2 {
return target{}, fmt.Errorf("target format error: %v", t)
}
kind := splits[0]
name := splits[1]
return target{kind, name}, nil
}
type target struct {
kind string
name string
}
// scaleTargets stores the scalable target resources
type scaleTargets struct {
targets []target
namespace string
}
func (k *k8sClient) GetNamespace() (namespace string) {
return k.scaleTargets.namespace
}
func (k *k8sClient) FetchConfigMap(namespace, configmap string) (*v1.ConfigMap, error) {
cm, err := k.clientset.CoreV1().ConfigMaps(namespace).Get(context.TODO(), configmap, metav1.GetOptions{})
if err != nil {
return nil, err
}
return cm, nil
}
func (k *k8sClient) CreateConfigMap(namespace, configmap string, params map[string]string) (*v1.ConfigMap, error) {
providedConfigMap := v1.ConfigMap{}
providedConfigMap.ObjectMeta.Name = configmap
providedConfigMap.ObjectMeta.Namespace = namespace
providedConfigMap.Data = params
cm, err := k.clientset.CoreV1().ConfigMaps(namespace).Create(context.TODO(), &providedConfigMap, metav1.CreateOptions{})
if err != nil {
return nil, err
}
glog.V(0).Infof("Created ConfigMap %v in namespace %v", configmap, namespace)
return cm, nil
}
func (k *k8sClient) UpdateConfigMap(namespace, configmap string, params map[string]string) (*v1.ConfigMap, error) {
providedConfigMap := v1.ConfigMap{}
providedConfigMap.ObjectMeta.Name = configmap
providedConfigMap.ObjectMeta.Namespace = namespace
providedConfigMap.Data = params
cm, err := k.clientset.CoreV1().ConfigMaps(namespace).Update(context.TODO(), &providedConfigMap, metav1.UpdateOptions{})
if err != nil {
return nil, err
}
glog.V(0).Infof("Updated ConfigMap %v in namespace %v", configmap, namespace)
return cm, nil
}
// ClusterStatus defines the cluster status
type ClusterStatus struct {
TotalNodes int32
SchedulableNodes int32
TotalCores int32
SchedulableCores int32
}
// isNodeReady checks if a node is in the "Ready" state.
func isNodeReady(node *v1.Node) bool {
for _, condition := range node.Status.Conditions {
if condition.Type == v1.NodeReady && condition.Status == v1.ConditionTrue {
return true
}
}
return false
}
func (k *k8sClient) GetClusterStatus() (clusterStatus *ClusterStatus, err error) {
nodes, err := k.nodeLister.List(labels.NewSelector())
if err != nil {
return nil, err
}
clusterStatus = &ClusterStatus{}
clusterStatus.TotalNodes = int32(len(nodes))
var tc resource.Quantity
var sc resource.Quantity
for _, node := range nodes {
tc.Add(node.Status.Allocatable[v1.ResourceCPU])
if !node.Spec.Unschedulable && isNodeReady(node) {
clusterStatus.SchedulableNodes++
sc.Add(node.Status.Allocatable[v1.ResourceCPU])
}
}
clusterStatus.TotalCores = int32(tc.Value())
clusterStatus.SchedulableCores = int32(sc.Value())
k.clusterStatus = clusterStatus
return clusterStatus, nil
}
func (k *k8sClient) UpdateReplicas(expReplicas int32) (err error) {
for _, target := range k.scaleTargets.targets {
_, err := k.UpdateTargetReplicas(expReplicas, target)
if err != nil {
return err
}
}
return nil
}
func (k *k8sClient) UpdateTargetReplicas(expReplicas int32, target target) (prevReplicas int32, err error) {
prevReplicas, err = k.updateReplicasAppsV1(expReplicas, target)
if err == nil || !apierrors.IsForbidden(err) {
return prevReplicas, err
}
glog.V(1).Infof("Falling back to extensions/v1beta1, error using apps/v1: %v", err)
// Fall back to using the extensions API if we get a forbidden error
scale, err := k.getScaleExtensionsV1beta1(&target)
if err != nil {
return 0, err
}
prevReplicas = scale.Spec.Replicas
if expReplicas != prevReplicas {
glog.V(0).Infof(
"Cluster status: SchedulableNodes[%v], TotalNodes[%v], SchedulableCores[%v], TotalCores[%v]",
k.clusterStatus.SchedulableNodes,
k.clusterStatus.TotalNodes,
k.clusterStatus.SchedulableCores,
k.clusterStatus.TotalCores)
glog.V(0).Infof("Replicas are not as expected : updating %s/%s from %d to %d",
target.kind,
target.name,
prevReplicas,
expReplicas)
scale.Spec.Replicas = expReplicas
_, err = k.updateScaleExtensionsV1beta1(&target, scale)
if err != nil {
return 0, err
}
}
return prevReplicas, nil
}
func (k *k8sClient) getScaleExtensionsV1beta1(target *target) (*extensionsv1beta1.Scale, error) {
opt := metav1.GetOptions{}
switch strings.ToLower(target.kind) {
case "deployment", "deployments":
return k.clientset.ExtensionsV1beta1().Deployments(k.scaleTargets.namespace).GetScale(context.TODO(), target.name, opt)
case "replicaset", "replicasets":
return k.clientset.ExtensionsV1beta1().ReplicaSets(k.scaleTargets.namespace).GetScale(context.TODO(), target.name, opt)
default:
return nil, fmt.Errorf("unsupported target kind: %v", target.kind)
}
}
func (k *k8sClient) updateScaleExtensionsV1beta1(target *target, scale *extensionsv1beta1.Scale) (*extensionsv1beta1.Scale, error) {
switch strings.ToLower(target.kind) {
case "deployment", "deployments":
return k.clientset.ExtensionsV1beta1().Deployments(k.scaleTargets.namespace).UpdateScale(context.TODO(), target.name, scale, metav1.UpdateOptions{})
case "replicaset", "replicasets":
return k.clientset.ExtensionsV1beta1().ReplicaSets(k.scaleTargets.namespace).UpdateScale(context.TODO(), target.name, scale, metav1.UpdateOptions{})
default:
return nil, fmt.Errorf("unsupported target kind: %v", target.kind)
}
}
func (k *k8sClient) updateReplicasAppsV1(expReplicas int32, target target) (prevReplicas int32, err error) {
req, err := requestForTarget(k.clientset.AppsV1().RESTClient().Get(), &target, k.scaleTargets.namespace)
if err != nil {
return 0, err
}
scale := &autoscalingv1.Scale{}
if err = req.Do(context.TODO()).Into(scale); err != nil {
return 0, err
}
prevReplicas = scale.Spec.Replicas
if expReplicas != prevReplicas {
glog.V(0).Infof(
"Cluster status: SchedulableNodes[%v], TotalNodes[%v], SchedulableCores[%v], TotalCores[%v]",
k.clusterStatus.SchedulableNodes,
k.clusterStatus.TotalNodes,
k.clusterStatus.SchedulableCores,
k.clusterStatus.TotalCores)
glog.V(0).Infof("Replicas are not as expected : updating %s/%s from %d to %d",
target.kind,
target.name,
prevReplicas,
expReplicas)
scale.Spec.Replicas = expReplicas
req, err = requestForTarget(k.clientset.AppsV1().RESTClient().Put(), &target, k.scaleTargets.namespace)
if err != nil {
return 0, err
}
if err = req.Body(scale).Do(context.TODO()).Error(); err != nil {
return 0, err
}
}
return prevReplicas, nil
}
func requestForTarget(req *rest.Request, target *target, namespace string) (*rest.Request, error) {
var absPath, resource string
// Support the kinds we allowed scaling via the extensions API group
// TODO: switch to use the polymorphic scale client once client-go versions are updated
switch strings.ToLower(target.kind) {
case "deployment", "deployments":
absPath = "/apis/apps/v1"
resource = "deployments"
case "replicaset", "replicasets":
absPath = "/apis/apps/v1"
resource = "replicasets"
case "statefulset", "statefulsets":
absPath = "/apis/apps/v1"
resource = "statefulsets"
case "replicationcontroller", "replicationcontrollers":
absPath = "/api/v1"
resource = "replicationcontrollers"
default:
return nil, fmt.Errorf("unsupported target kind: %v", target.kind)
}
return req.AbsPath(absPath).Namespace(namespace).Resource(resource).Name(target.name).SubResource("scale"), nil
}
================================================
FILE: pkg/autoscaler/k8sclient/k8sclient_test.go
================================================
/*
Copyright 2016 The Kubernetes Authors All rights reserved.
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 k8sclient
import (
"context"
"testing"
v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/client-go/informers"
"k8s.io/client-go/kubernetes/fake"
)
func TestGetTarget(t *testing.T) {
testCases := []struct {
target string
expKind string
expName string
expError bool
}{
{
"deployment/anything",
"deployment",
"anything",
false,
},
{
"replicationcontroller/anotherthing",
"replicationcontroller",
"anotherthing",
false,
},
{
"replicationcontroller",
"",
"",
true,
},
{
"replicaset/anything/what",
"",
"",
true,
},
}
for _, tc := range testCases {
res, err := getTarget(tc.target)
if err != nil && !tc.expError {
t.Errorf("Expect no error, got error for target: %v", tc.target)
continue
} else if err == nil && tc.expError {
t.Errorf("Expect error, got no error for target: %v", tc.target)
continue
}
if res.kind != tc.expKind || res.name != tc.expName {
t.Errorf("Expect kind: %v, name: %v\ngot kind: %v, name: %v", tc.expKind, tc.expName, res.kind, res.name)
}
}
}
func TestGetScaleTargets(t *testing.T) {
testCases := []struct {
target string
expScaleTargets *scaleTargets
expError bool
}{
{
"deployment/anything",
&scaleTargets{
targets: []target{
{kind: "deployment", name: "anything"},
},
},
false,
},
{
"deployment/first,deployment/second",
&scaleTargets{
targets: []target{
{kind: "deployment", name: "first"},
{kind: "deployment", name: "second"},
},
},
false,
},
{
"deployment/first, deployment/second",
&scaleTargets{
targets: []target{
{kind: "deployment", name: "first"},
{kind: "deployment", name: "second"},
},
},
false,
},
{
"deployment/first deployment/second",
&scaleTargets{
targets: []target{
{kind: "deployment", name: "first"},
{kind: "deployment", name: "second"},
},
},
true,
},
}
for _, tc := range testCases {
res, err := getScaleTargets(tc.target, "default")
if err != nil && !tc.expError {
t.Errorf("Expect no error, got error for target: %v", tc.target)
continue
} else if err == nil && tc.expError {
t.Errorf("Expect error, got no error for target: %v", tc.target)
continue
}
if len(res.targets) != len(tc.expScaleTargets.targets) && !tc.expError {
t.Errorf("Expected targets vs resulted targets should be the same length: %v vs %v", len(tc.expScaleTargets.targets), len(res.targets))
continue
}
for i, resTarget := range res.targets {
if resTarget.kind != tc.expScaleTargets.targets[i].kind ||
resTarget.name != tc.expScaleTargets.targets[i].name {
t.Errorf("Expect kind: %v, name: %v\ngot kind: %v, name: %v", tc.expScaleTargets.targets[i].kind,
tc.expScaleTargets.targets[i].name, resTarget.kind, resTarget.name)
}
}
}
}
func TestNewK8sClient(t *testing.T) {
client := fake.NewSimpleClientset()
// Create the test nodes beforehand.
nodeLabels := "app=autoscaler"
q1, _ := resource.ParseQuantity("1000m")
q2, _ := resource.ParseQuantity("2000m")
q3, _ := resource.ParseQuantity("3000m")
q4, _ := resource.ParseQuantity("4000m")
readyConditions := []v1.NodeCondition{
{Type: v1.NodeReady, Status: v1.ConditionTrue},
}
notReadyConditions := []v1.NodeCondition{
{Type: v1.NodeReady, Status: v1.ConditionFalse},
}
testNode1 := &v1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "test-node-1",
Labels: map[string]string{
"app": "autoscaler",
},
Annotations: map[string]string{
"eating-memory": "a-lot",
"oom": "on-the-way",
},
},
Spec: v1.NodeSpec{
Unschedulable: false,
PodCIDR: "10.0.1.0/24",
},
Status: v1.NodeStatus{
Allocatable: v1.ResourceList{
v1.ResourceCPU: q1,
},
Phase: v1.NodeRunning,
Conditions: readyConditions,
},
}
testNode2 := &v1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "test-node-2",
Labels: map[string]string{
"app": "autoscaler",
},
Annotations: map[string]string{
"eating-memory": "a-lot",
"oom": "on-the-way",
},
},
Spec: v1.NodeSpec{
Unschedulable: false,
PodCIDR: "10.0.2.0/24",
},
Status: v1.NodeStatus{
Allocatable: v1.ResourceList{
v1.ResourceCPU: q2,
},
Phase: v1.NodeRunning,
Conditions: readyConditions,
},
}
// testNode3 has Unschedulable set to true.
testNode3 := &v1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "test-node-3",
Labels: map[string]string{
"app": "autoscaler",
},
Annotations: map[string]string{
"eating-memory": "a-lot",
"oom": "on-the-way",
},
},
Spec: v1.NodeSpec{
Unschedulable: true,
PodCIDR: "10.0.3.0/24",
},
Status: v1.NodeStatus{
Allocatable: v1.ResourceList{
v1.ResourceCPU: q3,
},
Phase: v1.NodeRunning,
},
}
// testNode4 uses labels that don't match.
testNode4 := &v1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "test-node-4",
Labels: map[string]string{
"app": "something-else",
},
Annotations: map[string]string{
"eating-memory": "a-lot",
"oom": "on-the-way",
},
},
Spec: v1.NodeSpec{
Unschedulable: false,
PodCIDR: "10.0.4.0/24",
},
Status: v1.NodeStatus{
Allocatable: v1.ResourceList{
v1.ResourceCPU: q4,
},
Phase: v1.NodeRunning,
},
}
// testNode5 has Unschedulable set to false, but it's not Ready according to Status.Conditions.
testNode5 := &v1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "test-node-5",
Labels: map[string]string{
"app": "autoscaler",
},
Annotations: map[string]string{
"eating-memory": "a-lot",
"oom": "on-the-way",
},
},
Spec: v1.NodeSpec{
Unschedulable: false,
PodCIDR: "10.0.3.0/24",
},
Status: v1.NodeStatus{
Allocatable: v1.ResourceList{
v1.ResourceCPU: q3,
},
Phase: v1.NodeRunning,
Conditions: notReadyConditions,
},
}
for _, node := range []*v1.Node{testNode1, testNode2, testNode3, testNode4, testNode5} {
_, err := client.CoreV1().Nodes().Create(context.Background(), node, metav1.CreateOptions{})
if err != nil {
t.Fatal(err)
}
}
k8sClient, err := NewK8sClient(client, "test-namespace", "deployment/test-target", nodeLabels)
if err != nil {
t.Fatal(err)
}
status, err := k8sClient.GetClusterStatus()
if err != nil {
t.Fatal(err)
}
if status.TotalNodes != 4 {
t.Errorf("status.TotalNodes=%v, want 3", status.TotalNodes)
}
if status.SchedulableNodes != 2 {
t.Errorf("status.SchedulableNodes=%v, want 2", status.SchedulableNodes)
}
if status.TotalCores != 9 {
t.Errorf("status.TotalCores=%v, want 6", status.TotalCores)
}
if status.SchedulableCores != 3 {
t.Errorf("status.SchedulableCore=%v, want 3", status.SchedulableCores)
}
}
func TestGetTrimmedNodeClients(t *testing.T) {
client := fake.NewSimpleClientset()
// Create the test node beforehand.
q1, _ := resource.ParseQuantity("1000m")
testNode1 := &v1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "test-node-1",
Labels: map[string]string{
"app": "autoscaler",
},
Annotations: map[string]string{
"eating-memory": "a-lot",
"oom": "on-the-way",
},
},
Spec: v1.NodeSpec{
Unschedulable: false,
PodCIDR: "10.0.1.0/24",
},
Status: v1.NodeStatus{
Allocatable: v1.ResourceList{
v1.ResourceCPU: q1,
},
Phase: v1.NodeRunning,
},
}
_, err := client.CoreV1().Nodes().Create(context.Background(), testNode1, metav1.CreateOptions{})
if err != nil {
t.Fatal(err)
}
// Start the informer.
labelOptions := informers.WithTweakListOptions(func(opts *metav1.ListOptions) {})
factory, nodelister, err := getTrimmedNodeClients(client, labelOptions)
if err != nil {
t.Fatal(err)
}
stopCh := make(chan struct{})
factory.Start(stopCh)
factory.WaitForCacheSync(stopCh)
// Now check if all of objectMeta, spec and status have unneeded fields trimmed.
nodes, err := nodelister.List(labels.NewSelector())
if err != nil {
t.Fatal(err)
}
if len(nodes) != 1 {
t.Fatalf("len(nodes)=%v, want 1", len(nodes))
}
node := nodes[0]
if node.Annotations != nil {
t.Errorf("node.ObjectMeta is not trimmed. Got %+v", node.ObjectMeta)
}
if node.Spec.PodCIDR != "" {
t.Errorf("node.Spec is not trimmed. Got %+v", node.Spec)
}
if node.Status.Phase != "" {
t.Errorf("node.Status is not trimmed. Got %+v", node.Status)
}
}
================================================
FILE: pkg/autoscaler/k8sclient/mock_k8sclient.go
================================================
/*
Copyright 2016 The Kubernetes Authors All rights reserved.
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 k8sclient
import (
"fmt"
v1 "k8s.io/api/core/v1"
)
var _ = K8sClient(&MockK8sClient{})
// MockK8sClient implements K8sClientInterface
type MockK8sClient struct {
NumOfNodes int
NumOfCores int
NumOfReplicas int
ConfigMap *v1.ConfigMap
FetchConfigMapFn func(namespace, configmap string) (*v1.ConfigMap, error)
CreateConfigMapFn func(namespace, configmap string, params map[string]string) (*v1.ConfigMap, error)
}
// FetchConfigMap mocks fetching the requested configmap from the Apiserver
func (k *MockK8sClient) FetchConfigMap(namespace, configmap string) (*v1.ConfigMap, error) {
if k.FetchConfigMapFn != nil {
return k.FetchConfigMapFn(namespace, configmap)
}
if k.ConfigMap.ObjectMeta.ResourceVersion == "" {
return nil, fmt.Errorf("config map not exist")
}
return k.ConfigMap, nil
}
// CreateConfigMap mocks creating a configmap with given namespace, name and params
func (k *MockK8sClient) CreateConfigMap(namespace, configmap string, params map[string]string) (*v1.ConfigMap, error) {
if k.CreateConfigMapFn != nil {
return k.CreateConfigMapFn(namespace, configmap, params)
}
return nil, nil
}
// UpdateConfigMap mocks updating a configmap with given namespace, name and params
func (k *MockK8sClient) UpdateConfigMap(namespace, configmap string, params map[string]string) (*v1.ConfigMap, error) {
return nil, nil
}
// GetClusterStatus mocks counting schedulable nodes and cores in the cluster
func (k *MockK8sClient) GetClusterStatus() (*ClusterStatus, error) {
return &ClusterStatus{int32(k.NumOfNodes), int32(k.NumOfNodes), int32(k.NumOfCores), int32(k.NumOfCores)}, nil
}
// GetNamespace mocks returning the namespace of target resource.
func (k *MockK8sClient) GetNamespace() string {
return ""
}
// UpdateReplicas mocks updating the number of replicas for the resource and return the previous replicas count
func (k *MockK8sClient) UpdateReplicas(expReplicas int32) error {
k.NumOfReplicas = int(expReplicas)
return nil
}
================================================
FILE: pkg/version/version.go
================================================
/*
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 version
// VERSION defines the version
var VERSION = "UNKNOWN"
================================================
FILE: tools/go.mod
================================================
module github.com/thockin/go-build-template/tools
go 1.23.0
require (
github.com/estesp/manifest-tool/v2 v2.1.6
github.com/golangci/golangci-lint v1.63.4
github.com/google/go-licenses/v2 v2.0.0-alpha.1
)
require (
4d63.com/gocheckcompilerdirectives v1.2.1 // indirect
4d63.com/gochecknoglobals v0.2.1 // indirect
github.com/4meepo/tagalign v1.4.1 // indirect
github.com/Abirdcfly/dupword v0.1.3 // indirect
github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 // indirect
github.com/Antonboom/errname v1.0.0 // indirect
github.com/Antonboom/nilnil v1.0.1 // indirect
github.com/Antonboom/testifylint v1.5.2 // indirect
github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c // indirect
github.com/Crocmagnon/fatcontext v0.5.3 // indirect
github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect
github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0 // indirect
github.com/Masterminds/semver/v3 v3.3.0 // indirect
github.com/OpenPeeDeeP/depguard/v2 v2.2.0 // indirect
github.com/alecthomas/go-check-sumtype v0.3.1 // indirect
github.com/alexkohler/nakedret/v2 v2.0.5 // indirect
github.com/alexkohler/prealloc v1.0.0 // indirect
github.com/alingse/asasalint v0.0.11 // indirect
github.com/alingse/nilnesserr v0.1.1 // indirect
github.com/ashanbrown/forbidigo v1.6.0 // indirect
github.com/ashanbrown/makezero v1.2.0 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/bkielbasa/cyclop v1.2.3 // indirect
github.com/blizzy78/varnamelen v0.8.0 // indirect
github.com/bombsimon/wsl/v4 v4.5.0 // indirect
github.com/breml/bidichk v0.3.2 // indirect
github.com/breml/errchkjson v0.4.0 // indirect
github.com/butuzov/ireturn v0.3.1 // indirect
github.com/butuzov/mirror v1.3.0 // indirect
github.com/catenacyber/perfsprint v0.7.1 // indirect
github.com/ccojocar/zxcvbn-go v1.0.2 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/charithe/durationcheck v0.0.10 // indirect
github.com/chavacava/garif v0.1.0 // indirect
github.com/ckaznocha/intrange v0.3.0 // indirect
github.com/containerd/containerd v1.7.29 // indirect
github.com/containerd/errdefs v0.3.0 // indirect
github.com/containerd/log v0.1.0 // indirect
github.com/containerd/platforms v0.2.1 // indirect
github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect
github.com/curioswitch/go-reassign v0.3.0 // indirect
github.com/daixiang0/gci v0.13.5 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/denis-tingaikin/go-header v0.5.0 // indirect
github.com/docker/cli v25.0.4+incompatible // indirect
github.com/docker/distribution v2.8.2+incompatible // indirect
github.com/docker/docker v26.1.5+incompatible // indirect
github.com/docker/docker-credential-helpers v0.7.0 // indirect
github.com/ettle/strcase v0.2.0 // indirect
github.com/fatih/color v1.18.0 // indirect
github.com/fatih/structtag v1.2.0 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
github.com/firefart/nonamedreturns v1.0.5 // indirect
github.com/fsnotify/fsnotify v1.6.0 // indirect
github.com/fzipp/gocyclo v0.6.0 // indirect
github.com/ghostiam/protogetter v0.3.8 // indirect
github.com/go-critic/go-critic v0.11.5 // indirect
github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-toolsmith/astcast v1.1.0 // indirect
github.com/go-toolsmith/astcopy v1.1.0 // indirect
github.com/go-toolsmith/astequal v1.2.0 // indirect
github.com/go-toolsmith/astfmt v1.1.0 // indirect
github.com/go-toolsmith/astp v1.1.0 // indirect
github.com/go-toolsmith/strparse v1.1.0 // indirect
github.com/go-toolsmith/typep v1.1.0 // indirect
github.com/go-viper/mapstructure/v2 v2.2.1 // indirect
github.com/go-xmlfmt/xmlfmt v1.1.3 // indirect
github.com/gobwas/glob v0.2.3 // indirect
github.com/gofrs/flock v0.12.1 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a // indirect
github.com/golangci/go-printf-func-name v0.1.0 // indirect
github.com/golangci/gofmt v0.0.0-20241223200906-057b0627d9b9 // indirect
github.com/golangci/misspell v0.6.0 // indirect
github.com/golangci/plugin-module-register v0.1.1 // indirect
github.com/golangci/revgrep v0.5.3 // indirect
github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed // indirect
github.com/google/go-cmp v0.6.0 // indirect
github.com/google/licenseclassifier/v2 v2.0.0 // indirect
github.com/gordonklaus/ineffassign v0.1.0 // indirect
github.com/gostaticanalysis/analysisutil v0.7.1 // indirect
github.com/gostaticanalysis/comment v1.4.2 // indirect
github.com/gostaticanalysis/forcetypeassert v0.1.0 // indirect
github.com/gostaticanalysis/nilerr v0.1.1 // indirect
github.com/hashicorp/go-immutable-radix/v2 v2.1.0 // indirect
github.com/hashicorp/go-version v1.7.0 // indirect
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/hexops/gotextdiff v1.0.3 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jgautheron/goconst v1.7.1 // indirect
github.com/jingyugao/rowserrcheck v1.1.1 // indirect
github.com/jjti/go-spancheck v0.6.4 // indirect
github.com/julz/importas v0.2.0 // indirect
github.com/karamaru-alpha/copyloopvar v1.1.0 // indirect
github.com/kisielk/errcheck v1.8.0 // indirect
github.com/kkHAIKE/contextcheck v1.1.5 // indirect
github.com/klauspost/compress v1.16.7 // indirect
github.com/kulti/thelper v0.6.3 // indirect
github.com/kunwardeep/paralleltest v1.0.10 // indirect
github.com/kyoh86/exportloopref v0.1.11 // indirect
github.com/lasiar/canonicalheader v1.1.2 // indirect
github.com/ldez/exptostd v0.3.1 // indirect
github.com/ldez/gomoddirectives v0.6.0 // indirect
github.com/ldez/grignotin v0.7.0 // indirect
github.com/ldez/tagliatelle v0.7.1 // indirect
github.com/ldez/usetesting v0.4.2 // indirect
github.com/leonklingele/grouper v1.1.2 // indirect
github.com/macabu/inamedparam v0.1.3 // indirect
github.com/magiconair/properties v1.8.6 // indirect
github.com/maratori/testableexamples v1.0.0 // indirect
github.com/maratori/testpackage v1.1.1 // indirect
github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/go-runewidth v0.0.16 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
github.com/mgechev/revive v1.5.1 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/moby/locker v1.0.1 // indirect
github.com/moricho/tparallel v0.3.2 // indirect
github.com/nakabonne/nestif v0.3.1 // indirect
github.com/nishanths/exhaustive v0.12.0 // indirect
github.com/nishanths/predeclared v0.2.2 // indirect
github.com/nunnatsa/ginkgolinter v0.18.4 // indirect
github.com/olekukonko/tablewriter v0.0.5 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.1.0 // indirect
github.com/otiai10/copy v1.14.0 // indirect
github.com/pelletier/go-toml v1.9.5 // indirect
github.com/pelletier/go-toml/v2 v2.2.3 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/polyfloyd/go-errorlint v1.7.0 // indirect
github.com/prometheus/client_golang v1.16.0 // indirect
github.com/prometheus/client_model v0.3.0 // indirect
github.com/prometheus/common v0.42.0 // indirect
github.com/prometheus/procfs v0.10.1 // indirect
github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 // indirect
github.com/quasilyte/go-ruleguard/dsl v0.3.22 // indirect
github.com/quasilyte/gogrep v0.5.0 // indirect
github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 // indirect
github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 // indirect
github.com/raeperd/recvcheck v0.2.0 // indirect
github.com/rivo/uniseg v0.4.7 // indirect
github.com/rogpeppe/go-internal v1.13.1 // indirect
github.com/russross/blackfriday/v2 v2.1.0 // indirect
github.com/ryancurrah/gomodguard v1.3.5 // indirect
github.com/ryanrolds/sqlclosecheck v0.5.1 // indirect
github.com/sanposhiho/wastedassign/v2 v2.1.0 // indirect
github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 // indirect
github.com/sashamelentyev/interfacebloat v1.1.0 // indirect
github.com/sashamelentyev/usestdlibvars v1.28.0 // indirect
github.com/securego/gosec/v2 v2.21.4 // indirect
github.com/sergi/go-diff v1.2.0 // indirect
github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c // indirect
github.com/sirupsen/logrus v1.9.3 // indirect
github.com/sivchari/containedctx v1.0.3 // indirect
github.com/sivchari/tenv v1.12.1 // indirect
github.com/sonatard/noctx v0.1.0 // indirect
github.com/sourcegraph/go-diff v0.7.0 // indirect
github.com/spf13/afero v1.11.0 // indirect
github.com/spf13/cast v1.5.0 // indirect
github.com/spf13/cobra v1.8.1 // indirect
github.com/spf13/jwalterweatherman v1.1.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/spf13/viper v1.12.0 // indirect
github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect
github.com/stbenjam/no-sprintf-host-port v0.2.0 // indirect
github.com/stretchr/objx v0.5.2 // indirect
github.com/stretchr/testify v1.10.0 // indirect
github.com/subosito/gotenv v1.4.1 // indirect
github.com/tdakkota/asciicheck v0.3.0 // indirect
github.com/tetafro/godot v1.4.20 // indirect
github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3 // indirect
github.com/timonwong/loggercheck v0.10.1 // indirect
github.com/tomarrell/wrapcheck/v2 v2.10.0 // indirect
github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect
github.com/ultraware/funlen v0.2.0 // indirect
github.com/ultraware/whitespace v0.2.0 // indirect
github.com/urfave/cli/v2 v2.27.1 // indirect
github.com/uudashr/gocognit v1.2.0 // indirect
github.com/uudashr/iface v1.3.0 // indirect
github.com/xen0n/gosmopolitan v1.2.2 // indirect
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect
github.com/yagipy/maintidx v1.0.0 // indirect
github.com/yeya24/promlinter v0.3.0 // indirect
github.com/ykadowak/zerologlint v0.1.5 // indirect
gitlab.com/bosi/decorder v0.4.2 // indirect
go-simpler.org/musttag v0.13.0 // indirect
go-simpler.org/sloglint v0.7.2 // indirect
go.opencensus.io v0.24.0 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 // indirect
go.opentelemetry.io/otel v1.29.0 // indirect
go.opentelemetry.io/otel/metric v1.29.0 // indirect
go.opentelemetry.io/otel/trace v1.29.0 // indirect
go.uber.org/atomic v1.7.0 // indirect
go.uber.org/automaxprocs v1.6.0 // indirect
go.uber.org/goleak v1.1.12 // indirect
go.uber.org/multierr v1.6.0 // indirect
go.uber.org/zap v1.24.0 // indirect
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect
golang.org/x/exp/typeparams v0.0.0-20241108190413-2d47ceb2692f // indirect
golang.org/x/mod v0.26.0 // indirect
golang.org/x/net v0.42.0 // indirect
golang.org/x/sync v0.16.0 // indirect
golang.org/x/sys v0.34.0 // indirect
golang.org/x/text v0.27.0 // indirect
golang.org/x/tools v0.34.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect
google.golang.org/grpc v1.66.2 // indirect
google.golang.org/protobuf v1.35.2 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
honnef.co/go/tools v0.5.1 // indirect
k8s.io/klog/v2 v2.90.1 // indirect
mvdan.cc/gofumpt v0.7.0 // indirect
mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f // indirect
oras.land/oras-go/v2 v2.4.0 // indirect
)
================================================
FILE: tools/go.sum
================================================
4d63.com/gocheckcompilerdirectives v1.2.1 h1:AHcMYuw56NPjq/2y615IGg2kYkBdTvOaojYCBcRE7MA=
4d63.com/gocheckcompilerdirectives v1.2.1/go.mod h1:yjDJSxmDTtIHHCqX0ufRYZDL6vQtMG7tJdKVeWwsqvs=
4d63.com/gochecknoglobals v0.2.1 h1:1eiorGsgHOFOuoOiJDy2psSrQbRdIHrlge0IJIkUgDc=
4d63.com/gochecknoglobals v0.2.1/go.mod h1:KRE8wtJB3CXCsb1xy421JfTHIIbmT3U5ruxw2Qu8fSU=
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
github.com/4meepo/tagalign v1.4.1 h1:GYTu2FaPGOGb/xJalcqHeD4il5BiCywyEYZOA55P6J4=
github.com/4meepo/tagalign v1.4.1/go.mod h1:2H9Yu6sZ67hmuraFgfZkNcg5Py9Ch/Om9l2K/2W1qS4=
github.com/Abirdcfly/dupword v0.1.3 h1:9Pa1NuAsZvpFPi9Pqkd93I7LIYRURj+A//dFd5tgBeE=
github.com/Abirdcfly/dupword v0.1.3/go.mod h1:8VbB2t7e10KRNdwTVoxdBaxla6avbhGzb8sCTygUMhw=
github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU=
github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8=
github.com/Antonboom/errname v1.0.0 h1:oJOOWR07vS1kRusl6YRSlat7HFnb3mSfMl6sDMRoTBA=
github.com/Antonboom/errname v1.0.0/go.mod h1:gMOBFzK/vrTiXN9Oh+HFs+e6Ndl0eTFbtsRTSRdXyGI=
github.com/Antonboom/nilnil v1.0.1 h1:C3Tkm0KUxgfO4Duk3PM+ztPncTFlOf0b2qadmS0s4xs=
github.com/Antonboom/nilnil v1.0.1/go.mod h1:CH7pW2JsRNFgEh8B2UaPZTEPhCMuFowP/e8Udp9Nnb0=
github.com/Antonboom/testifylint v1.5.2 h1:4s3Xhuv5AvdIgbd8wOOEeo0uZG7PbDKQyKY5lGoQazk=
github.com/Antonboom/testifylint v1.5.2/go.mod h1:vxy8VJ0bc6NavlYqjZfmp6EfqXMtBgQ4+mhCojwC1P8=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c h1:pxW6RcqyfI9/kWtOwnv/G+AzdKuy2ZrqINhenH4HyNs=
github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
github.com/Crocmagnon/fatcontext v0.5.3 h1:zCh/wjc9oyeF+Gmp+V60wetm8ph2tlsxocgg/J0hOps=
github.com/Crocmagnon/fatcontext v0.5.3/go.mod h1:XoCQYY1J+XTfyv74qLXvNw4xFunr3L1wkopIIKG7wGM=
github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM=
github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs=
github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0 h1:/fTUt5vmbkAcMBt4YQiuC23cV0kEsN1MVMNqeOW43cU=
github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0/go.mod h1:ONJg5sxcbsdQQ4pOW8TGdTidT2TMAUy/2Xhr8mrYaao=
github.com/Masterminds/semver/v3 v3.3.0 h1:B8LGeaivUe71a5qox1ICM/JLl0NqZSW5CHyL+hmvYS0=
github.com/Masterminds/semver/v3 v3.3.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
github.com/Microsoft/hcsshim v0.11.7 h1:vl/nj3Bar/CvJSYo7gIQPyRWc9f3c6IeSNavBTSZNZQ=
github.com/Microsoft/hcsshim v0.11.7/go.mod h1:MV8xMfmECjl5HdO7U/3/hFVnkmSBjAjmA09d4bExKcU=
github.com/OpenPeeDeeP/depguard/v2 v2.2.0 h1:vDfG60vDtIuf0MEOhmLlLLSzqaRM8EMcgJPdp74zmpA=
github.com/OpenPeeDeeP/depguard/v2 v2.2.0/go.mod h1:CIzddKRvLBC4Au5aYP/i3nyaWQ+ClszLIuVocRiCYFQ=
github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0=
github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k=
github.com/alecthomas/go-check-sumtype v0.3.1 h1:u9aUvbGINJxLVXiFvHUlPEaD7VDULsrxJb4Aq31NLkU=
github.com/alecthomas/go-check-sumtype v0.3.1/go.mod h1:A8TSiN3UPRw3laIgWEUOHHLPa6/r9MtoigdlP5h3K/E=
github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc=
github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
github.com/alexkohler/nakedret/v2 v2.0.5 h1:fP5qLgtwbx9EJE8dGEERT02YwS8En4r9nnZ71RK+EVU=
github.com/alexkohler/nakedret/v2 v2.0.5/go.mod h1:bF5i0zF2Wo2o4X4USt9ntUWve6JbFv02Ff4vlkmS/VU=
github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw=
github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE=
github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw=
github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I=
github.com/alingse/nilnesserr v0.1.1 h1:7cYuJewpy9jFNMEA72Q1+3Nm3zKHzg+Q28D5f2bBFUA=
github.com/alingse/nilnesserr v0.1.1/go.mod h1:1xJPrXonEtX7wyTq8Dytns5P2hNzoWymVUIaKm4HNFg=
github.com/ashanbrown/forbidigo v1.6.0 h1:D3aewfM37Yb3pxHujIPSpTf6oQk9sc9WZi8gerOIVIY=
github.com/ashanbrown/forbidigo v1.6.0/go.mod h1:Y8j9jy9ZYAEHXdu723cUlraTqbzjKF1MUyfOKL+AjcU=
github.com/ashanbrown/makezero v1.2.0 h1:/2Lp1bypdmK9wDIq7uWBlDF1iMUpIIS4A+pF6C9IEUU=
github.com/ashanbrown/makezero v1.2.0/go.mod h1:dxlPhHbDMC6N6xICzFBSK+4njQDdK8euNO0qjQMtGY4=
github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/bkielbasa/cyclop v1.2.3 h1:faIVMIGDIANuGPWH031CZJTi2ymOQBULs9H21HSMa5w=
github.com/bkielbasa/cyclop v1.2.3/go.mod h1:kHTwA9Q0uZqOADdupvcFJQtp/ksSnytRMe8ztxG8Fuo=
github.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ089M=
github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k=
github.com/bombsimon/wsl/v4 v4.5.0 h1:iZRsEvDdyhd2La0FVi5k6tYehpOR/R7qIUjmKk7N74A=
github.com/bombsimon/wsl/v4 v4.5.0/go.mod h1:NOQ3aLF4nD7N5YPXMruR6ZXDOAqLoM0GEpLwTdvmOSc=
github.com/breml/bidichk v0.3.2 h1:xV4flJ9V5xWTqxL+/PMFF6dtJPvZLPsyixAoPe8BGJs=
github.com/breml/bidichk v0.3.2/go.mod h1:VzFLBxuYtT23z5+iVkamXO386OB+/sVwZOpIj6zXGos=
github.com/breml/errchkjson v0.4.0 h1:gftf6uWZMtIa/Is3XJgibewBm2ksAQSY/kABDNFTAdk=
github.com/breml/errchkjson v0.4.0/go.mod h1:AuBOSTHyLSaaAFlWsRSuRBIroCh3eh7ZHh5YeelDIk8=
github.com/butuzov/ireturn v0.3.1 h1:mFgbEI6m+9W8oP/oDdfA34dLisRFCj2G6o/yiI1yZrY=
github.com/butuzov/ireturn v0.3.1/go.mod h1:ZfRp+E7eJLC0NQmk1Nrm1LOrn/gQlOykv+cVPdiXH5M=
github.com/butuzov/mirror v1.3.0 h1:HdWCXzmwlQHdVhwvsfBb2Au0r3HyINry3bDWLYXiKoc=
github.com/butuzov/mirror v1.3.0/go.mod h1:AEij0Z8YMALaq4yQj9CPPVYOyJQyiexpQEQgihajRfI=
github.com/catenacyber/perfsprint v0.7.1 h1:PGW5G/Kxn+YrN04cRAZKC+ZuvlVwolYMrIyyTJ/rMmc=
github.com/catenacyber/perfsprint v0.7.1/go.mod h1:/wclWYompEyjUD2FuIIDVKNkqz7IgBIWXIH3V0Zol50=
github.com/ccojocar/zxcvbn-go v1.0.2 h1:na/czXU8RrhXO4EZme6eQJLR4PzcGsahsBOAwU6I3Vg=
github.com/ccojocar/zxcvbn-go v1.0.2/go.mod h1:g1qkXtUSvHP8lhHp5GrSmTz6uWALGRMQdw6Qnz/hi60=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/charithe/durationcheck v0.0.10 h1:wgw73BiocdBDQPik+zcEoBG/ob8uyBHf2iyoHGPf5w4=
github.com/charithe/durationcheck v0.0.10/go.mod h1:bCWXb7gYRysD1CU3C+u4ceO49LoGOY1C1L6uouGNreQ=
github.com/chavacava/garif v0.1.0 h1:2JHa3hbYf5D9dsgseMKAmc/MZ109otzgNFk5s87H9Pc=
github.com/chavacava/garif v0.1.0/go.mod h1:XMyYCkEL58DF0oyW4qDjjnPWONs2HBqYKI+UIPD+Gww=
github.com/ckaznocha/intrange v0.3.0 h1:VqnxtK32pxgkhJgYQEeOArVidIPg+ahLP7WBOXZd5ZY=
github.com/ckaznocha/intrange v0.3.0/go.mod h1:+I/o2d2A1FBHgGELbGxzIcyd3/9l9DuwjM8FsbSS3Lo=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM=
github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw=
github.com/containerd/containerd v1.7.29 h1:90fWABQsaN9mJhGkoVnuzEY+o1XDPbg9BTC9QTAHnuE=
github.com/containerd/containerd v1.7.29/go.mod h1:azUkWcOvHrWvaiUjSQH0fjzuHIwSPg1WL5PshGP4Szs=
github.com/containerd/continuity v0.4.4 h1:/fNVfTJ7wIl/YPMHjf+5H32uFhl63JucB34PlCpMKII=
github.com/containerd/continuity v0.4.4/go.mod h1:/lNJvtJKUQStBzpVQ1+rasXO1LAWtUQssk28EZvJ3nE=
github.com/containerd/errdefs v0.3.0 h1:FSZgGOeK4yuT/+DnF07/Olde/q4KBoMsaamhXxIMDp4=
github.com/containerd/errdefs v0.3.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M=
github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=
github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo=
github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A=
github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw=
github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4=
github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/curioswitch/go-reassign v0.3.0 h1:dh3kpQHuADL3cobV/sSGETA8DOv457dwl+fbBAhrQPs=
github.com/curioswitch/go-reassign v0.3.0/go.mod h1:nApPCCTtqLJN/s8HfItCcKV0jIPwluBOvZP+dsJGA88=
github.com/daixiang0/gci v0.13.5 h1:kThgmH1yBmZSBCh1EJVxQ7JsHpm5Oms0AMed/0LaH4c=
github.com/daixiang0/gci v0.13.5/go.mod h1:12etP2OniiIdP4q+kjUGrC/rUagga7ODbqsom5Eo5Yk=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/denis-tingaikin/go-header v0.5.0 h1:SRdnP5ZKvcO9KKRP1KJrhFR3RrlGuD+42t4429eC9k8=
github.com/denis-tingaikin/go-header v0.5.0/go.mod h1:mMenU5bWrok6Wl2UsZjy+1okegmwQ3UgWl4V1D8gjlY=
github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI=
github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
github.com/docker/cli v25.0.4+incompatible h1:DatRkJ+nrFoYL2HZUzjM5Z5sAmcA5XGp+AW0oEw2+cA=
github.com/docker/cli v25.0.4+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8=
github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
github.com/docker/docker v26.1.5+incompatible h1:NEAxTwEjxV6VbBMBoGG3zPqbiJosIApZjxlbrG9q3/g=
github.com/docker/docker v26.1.5+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A=
github.com/docker/docker-credential-helpers v0.7.0/go.mod h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-c
Showing preview only (255K chars total). Download the full file or copy to clipboard to get everything.
gitextract_5brwrtzy/
├── .github/
│ ├── cr.yaml
│ ├── dependabot.yml
│ └── workflows/
│ └── helm-chart-release.yaml
├── .gitignore
├── .travis.yml
├── CHANGELOG.md
├── CONTRIBUTING.md
├── Dockerfile.in
├── LICENSE
├── Makefile
├── OWNERS
├── README.md
├── RELEASE.md
├── SECURITY_CONTACTS
├── build/
│ ├── build.sh
│ ├── lint.sh
│ └── test.sh
├── charts/
│ └── cluster-proportional-autoscaler/
│ ├── .helmignore
│ ├── Chart.yaml
│ ├── templates/
│ │ ├── _helpers.tpl
│ │ ├── clusterrole.yaml
│ │ ├── clusterrolebinding.yaml
│ │ ├── configmap.yaml
│ │ ├── deployment.yaml
│ │ ├── role.yaml
│ │ ├── rolebinding.yaml
│ │ └── serviceaccount.yaml
│ └── values.yaml
├── cmd/
│ └── cluster-proportional-autoscaler/
│ ├── autoscaler.go
│ └── options/
│ ├── options.go
│ └── options_test.go
├── code-of-conduct.md
├── examples/
│ ├── RBAC/
│ │ └── RBAC-configs.yaml
│ ├── README.md
│ ├── ladder-defaultparams.yaml
│ ├── ladder.yaml
│ ├── linear-defaultparams.yaml
│ └── linear.yaml
├── go.mod
├── go.sum
├── pkg/
│ ├── autoscaler/
│ │ ├── autoscaler_server.go
│ │ ├── autoscaler_test.go
│ │ ├── controller/
│ │ │ ├── controller.go
│ │ │ ├── laddercontroller/
│ │ │ │ ├── ladder_controller.go
│ │ │ │ └── ladder_controller_test.go
│ │ │ ├── linearcontroller/
│ │ │ │ ├── linear_controller.go
│ │ │ │ └── linear_controller_test.go
│ │ │ └── plugin/
│ │ │ ├── plugin.go
│ │ │ └── plugin_test.go
│ │ ├── doc.go
│ │ ├── health.go
│ │ └── k8sclient/
│ │ ├── k8sclient.go
│ │ ├── k8sclient_test.go
│ │ └── mock_k8sclient.go
│ └── version/
│ └── version.go
├── tools/
│ ├── go.mod
│ ├── go.sum
│ └── tools.go
└── vendor/
├── github.com/
│ ├── davecgh/
│ │ └── go-spew/
│ │ ├── LICENSE
│ │ └── spew/
│ │ ├── bypass.go
│ │ ├── bypasssafe.go
│ │ ├── common.go
│ │ ├── config.go
│ │ ├── doc.go
│ │ ├── dump.go
│ │ ├── format.go
│ │ └── spew.go
│ ├── emicklei/
│ │ └── go-restful/
│ │ └── v3/
│ │ ├── .gitignore
│ │ ├── .goconvey
│ │ ├── .travis.yml
│ │ ├── CHANGES.md
│ │ ├── LICENSE
│ │ ├── Makefile
│ │ ├── README.md
│ │ ├── SECURITY.md
│ │ ├── Srcfile
│ │ ├── bench_test.sh
│ │ ├── compress.go
│ │ ├── compressor_cache.go
│ │ ├── compressor_pools.go
│ │ ├── compressors.go
│ │ ├── constants.go
│ │ ├── container.go
│ │ ├── cors_filter.go
│ │ ├── coverage.sh
│ │ ├── curly.go
│ │ ├── curly_route.go
│ │ ├── custom_verb.go
│ │ ├── doc.go
│ │ ├── entity_accessors.go
│ │ ├── extensions.go
│ │ ├── filter.go
│ │ ├── filter_adapter.go
│ │ ├── json.go
│ │ ├── jsoniter.go
│ │ ├── jsr311.go
│ │ ├── log/
│ │ │ └── log.go
│ │ ├── logger.go
│ │ ├── mime.go
│ │ ├── options_filter.go
│ │ ├── parameter.go
│ │ ├── path_expression.go
│ │ ├── path_processor.go
│ │ ├── request.go
│ │ ├── response.go
│ │ ├── route.go
│ │ ├── route_builder.go
│ │ ├── route_reader.go
│ │ ├── router.go
│ │ ├── service_error.go
│ │ ├── web_service.go
│ │ └── web_service_container.go
│ ├── fxamacker/
│ │ └── cbor/
│ │ └── v2/
│ │ ├── .gitignore
│ │ ├── .golangci.yml
│ │ ├── CODE_OF_CONDUCT.md
│ │ ├── CONTRIBUTING.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── SECURITY.md
│ │ ├── bytestring.go
│ │ ├── cache.go
│ │ ├── common.go
│ │ ├── decode.go
│ │ ├── diagnose.go
│ │ ├── doc.go
│ │ ├── encode.go
│ │ ├── encode_map.go
│ │ ├── encode_map_go117.go
│ │ ├── simplevalue.go
│ │ ├── stream.go
│ │ ├── structfields.go
│ │ ├── tag.go
│ │ └── valid.go
│ ├── go-logr/
│ │ └── logr/
│ │ ├── .golangci.yaml
│ │ ├── CHANGELOG.md
│ │ ├── CONTRIBUTING.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── SECURITY.md
│ │ ├── context.go
│ │ ├── context_noslog.go
│ │ ├── context_slog.go
│ │ ├── discard.go
│ │ ├── logr.go
│ │ ├── sloghandler.go
│ │ ├── slogr.go
│ │ └── slogsink.go
│ ├── go-openapi/
│ │ ├── jsonpointer/
│ │ │ ├── .editorconfig
│ │ │ ├── .gitignore
│ │ │ ├── .golangci.yml
│ │ │ ├── CODE_OF_CONDUCT.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── pointer.go
│ │ └── jsonreference/
│ │ ├── .gitignore
│ │ ├── .golangci.yml
│ │ ├── CODE_OF_CONDUCT.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── internal/
│ │ │ └── normalize_url.go
│ │ └── reference.go
│ ├── gogo/
│ │ └── protobuf/
│ │ ├── AUTHORS
│ │ ├── CONTRIBUTORS
│ │ ├── LICENSE
│ │ ├── proto/
│ │ │ ├── Makefile
│ │ │ ├── clone.go
│ │ │ ├── custom_gogo.go
│ │ │ ├── decode.go
│ │ │ ├── deprecated.go
│ │ │ ├── discard.go
│ │ │ ├── duration.go
│ │ │ ├── duration_gogo.go
│ │ │ ├── encode.go
│ │ │ ├── encode_gogo.go
│ │ │ ├── equal.go
│ │ │ ├── extensions.go
│ │ │ ├── extensions_gogo.go
│ │ │ ├── lib.go
│ │ │ ├── lib_gogo.go
│ │ │ ├── message_set.go
│ │ │ ├── pointer_reflect.go
│ │ │ ├── pointer_reflect_gogo.go
│ │ │ ├── pointer_unsafe.go
│ │ │ ├── pointer_unsafe_gogo.go
│ │ │ ├── properties.go
│ │ │ ├── properties_gogo.go
│ │ │ ├── skip_gogo.go
│ │ │ ├── table_marshal.go
│ │ │ ├── table_marshal_gogo.go
│ │ │ ├── table_merge.go
│ │ │ ├── table_unmarshal.go
│ │ │ ├── table_unmarshal_gogo.go
│ │ │ ├── text.go
│ │ │ ├── text_gogo.go
│ │ │ ├── text_parser.go
│ │ │ ├── timestamp.go
│ │ │ ├── timestamp_gogo.go
│ │ │ ├── wrappers.go
│ │ │ └── wrappers_gogo.go
│ │ └── sortkeys/
│ │ └── sortkeys.go
│ ├── golang/
│ │ ├── glog/
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── glog.go
│ │ │ ├── glog_file.go
│ │ │ ├── glog_file_linux.go
│ │ │ ├── glog_file_nonwindows.go
│ │ │ ├── glog_file_other.go
│ │ │ ├── glog_file_posix.go
│ │ │ ├── glog_file_windows.go
│ │ │ ├── glog_flags.go
│ │ │ └── internal/
│ │ │ ├── logsink/
│ │ │ │ ├── logsink.go
│ │ │ │ └── logsink_fatal.go
│ │ │ └── stackdump/
│ │ │ └── stackdump.go
│ │ └── protobuf/
│ │ ├── AUTHORS
│ │ ├── CONTRIBUTORS
│ │ ├── LICENSE
│ │ ├── proto/
│ │ │ ├── buffer.go
│ │ │ ├── defaults.go
│ │ │ ├── deprecated.go
│ │ │ ├── discard.go
│ │ │ ├── extensions.go
│ │ │ ├── properties.go
│ │ │ ├── proto.go
│ │ │ ├── registry.go
│ │ │ ├── text_decode.go
│ │ │ ├── text_encode.go
│ │ │ ├── wire.go
│ │ │ └── wrappers.go
│ │ └── ptypes/
│ │ ├── any/
│ │ │ └── any.pb.go
│ │ ├── any.go
│ │ ├── doc.go
│ │ ├── duration/
│ │ │ └── duration.pb.go
│ │ ├── duration.go
│ │ ├── timestamp/
│ │ │ └── timestamp.pb.go
│ │ └── timestamp.go
│ ├── google/
│ │ ├── gnostic-models/
│ │ │ ├── LICENSE
│ │ │ ├── compiler/
│ │ │ │ ├── README.md
│ │ │ │ ├── context.go
│ │ │ │ ├── error.go
│ │ │ │ ├── extensions.go
│ │ │ │ ├── helpers.go
│ │ │ │ ├── main.go
│ │ │ │ └── reader.go
│ │ │ ├── extensions/
│ │ │ │ ├── README.md
│ │ │ │ ├── extension.pb.go
│ │ │ │ ├── extension.proto
│ │ │ │ └── extensions.go
│ │ │ ├── jsonschema/
│ │ │ │ ├── README.md
│ │ │ │ ├── base.go
│ │ │ │ ├── display.go
│ │ │ │ ├── models.go
│ │ │ │ ├── operations.go
│ │ │ │ ├── reader.go
│ │ │ │ ├── schema.json
│ │ │ │ └── writer.go
│ │ │ ├── openapiv2/
│ │ │ │ ├── OpenAPIv2.go
│ │ │ │ ├── OpenAPIv2.pb.go
│ │ │ │ ├── OpenAPIv2.proto
│ │ │ │ ├── README.md
│ │ │ │ ├── document.go
│ │ │ │ └── openapi-2.0.json
│ │ │ └── openapiv3/
│ │ │ ├── OpenAPIv3.go
│ │ │ ├── OpenAPIv3.pb.go
│ │ │ ├── OpenAPIv3.proto
│ │ │ ├── README.md
│ │ │ └── document.go
│ │ ├── go-cmp/
│ │ │ ├── LICENSE
│ │ │ └── cmp/
│ │ │ ├── compare.go
│ │ │ ├── export.go
│ │ │ ├── internal/
│ │ │ │ ├── diff/
│ │ │ │ │ ├── debug_disable.go
│ │ │ │ │ ├── debug_enable.go
│ │ │ │ │ └── diff.go
│ │ │ │ ├── flags/
│ │ │ │ │ └── flags.go
│ │ │ │ ├── function/
│ │ │ │ │ └── func.go
│ │ │ │ └── value/
│ │ │ │ ├── name.go
│ │ │ │ ├── pointer.go
│ │ │ │ └── sort.go
│ │ │ ├── options.go
│ │ │ ├── path.go
│ │ │ ├── report.go
│ │ │ ├── report_compare.go
│ │ │ ├── report_references.go
│ │ │ ├── report_reflect.go
│ │ │ ├── report_slices.go
│ │ │ ├── report_text.go
│ │ │ └── report_value.go
│ │ ├── gofuzz/
│ │ │ ├── .travis.yml
│ │ │ ├── CONTRIBUTING.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── bytesource/
│ │ │ │ └── bytesource.go
│ │ │ ├── doc.go
│ │ │ └── fuzz.go
│ │ └── uuid/
│ │ ├── CHANGELOG.md
│ │ ├── CONTRIBUTING.md
│ │ ├── CONTRIBUTORS
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── dce.go
│ │ ├── doc.go
│ │ ├── hash.go
│ │ ├── marshal.go
│ │ ├── node.go
│ │ ├── node_js.go
│ │ ├── node_net.go
│ │ ├── null.go
│ │ ├── sql.go
│ │ ├── time.go
│ │ ├── util.go
│ │ ├── uuid.go
│ │ ├── version1.go
│ │ ├── version4.go
│ │ ├── version6.go
│ │ └── version7.go
│ ├── inconshreveable/
│ │ └── mousetrap/
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── trap_others.go
│ │ └── trap_windows.go
│ ├── josharian/
│ │ └── intern/
│ │ ├── README.md
│ │ ├── intern.go
│ │ └── license.md
│ ├── mailru/
│ │ └── easyjson/
│ │ ├── LICENSE
│ │ ├── buffer/
│ │ │ └── pool.go
│ │ ├── jlexer/
│ │ │ ├── bytestostr.go
│ │ │ ├── bytestostr_nounsafe.go
│ │ │ ├── error.go
│ │ │ └── lexer.go
│ │ └── jwriter/
│ │ └── writer.go
│ ├── modern-go/
│ │ └── concurrent/
│ │ ├── .gitignore
│ │ ├── .travis.yml
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── executor.go
│ │ ├── go_above_19.go
│ │ ├── go_below_19.go
│ │ ├── log.go
│ │ ├── test.sh
│ │ └── unbounded_executor.go
│ ├── munnerz/
│ │ └── goautoneg/
│ │ ├── LICENSE
│ │ ├── Makefile
│ │ ├── README.txt
│ │ └── autoneg.go
│ ├── pkg/
│ │ └── errors/
│ │ ├── .gitignore
│ │ ├── .travis.yml
│ │ ├── LICENSE
│ │ ├── Makefile
│ │ ├── README.md
│ │ ├── appveyor.yml
│ │ ├── errors.go
│ │ ├── go113.go
│ │ └── stack.go
│ ├── spf13/
│ │ ├── cobra/
│ │ │ ├── .gitignore
│ │ │ ├── .golangci.yml
│ │ │ ├── .mailmap
│ │ │ ├── CONDUCT.md
│ │ │ ├── CONTRIBUTING.md
│ │ │ ├── LICENSE.txt
│ │ │ ├── MAINTAINERS
│ │ │ ├── Makefile
│ │ │ ├── README.md
│ │ │ ├── active_help.go
│ │ │ ├── args.go
│ │ │ ├── bash_completions.go
│ │ │ ├── bash_completionsV2.go
│ │ │ ├── cobra.go
│ │ │ ├── command.go
│ │ │ ├── command_notwin.go
│ │ │ ├── command_win.go
│ │ │ ├── completions.go
│ │ │ ├── fish_completions.go
│ │ │ ├── flag_groups.go
│ │ │ ├── powershell_completions.go
│ │ │ ├── shell_completions.go
│ │ │ └── zsh_completions.go
│ │ └── pflag/
│ │ ├── .editorconfig
│ │ ├── .gitignore
│ │ ├── .golangci.yaml
│ │ ├── .travis.yml
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── bool.go
│ │ ├── bool_slice.go
│ │ ├── bytes.go
│ │ ├── count.go
│ │ ├── duration.go
│ │ ├── duration_slice.go
│ │ ├── flag.go
│ │ ├── float32.go
│ │ ├── float32_slice.go
│ │ ├── float64.go
│ │ ├── float64_slice.go
│ │ ├── golangflag.go
│ │ ├── int.go
│ │ ├── int16.go
│ │ ├── int32.go
│ │ ├── int32_slice.go
│ │ ├── int64.go
│ │ ├── int64_slice.go
│ │ ├── int8.go
│ │ ├── int_slice.go
│ │ ├── ip.go
│ │ ├── ip_slice.go
│ │ ├── ipmask.go
│ │ ├── ipnet.go
│ │ ├── ipnet_slice.go
│ │ ├── string.go
│ │ ├── string_array.go
│ │ ├── string_slice.go
│ │ ├── string_to_int.go
│ │ ├── string_to_int64.go
│ │ ├── string_to_string.go
│ │ ├── uint.go
│ │ ├── uint16.go
│ │ ├── uint32.go
│ │ ├── uint64.go
│ │ ├── uint8.go
│ │ └── uint_slice.go
│ └── x448/
│ └── float16/
│ ├── .travis.yml
│ ├── LICENSE
│ ├── README.md
│ └── float16.go
├── golang.org/
│ └── x/
│ ├── net/
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ ├── http/
│ │ │ └── httpguts/
│ │ │ ├── guts.go
│ │ │ └── httplex.go
│ │ ├── http2/
│ │ │ ├── .gitignore
│ │ │ ├── ascii.go
│ │ │ ├── ciphers.go
│ │ │ ├── client_conn_pool.go
│ │ │ ├── config.go
│ │ │ ├── config_go124.go
│ │ │ ├── config_pre_go124.go
│ │ │ ├── databuffer.go
│ │ │ ├── errors.go
│ │ │ ├── flow.go
│ │ │ ├── frame.go
│ │ │ ├── gotrack.go
│ │ │ ├── hpack/
│ │ │ │ ├── encode.go
│ │ │ │ ├── hpack.go
│ │ │ │ ├── huffman.go
│ │ │ │ ├── static_table.go
│ │ │ │ └── tables.go
│ │ │ ├── http2.go
│ │ │ ├── pipe.go
│ │ │ ├── server.go
│ │ │ ├── timer.go
│ │ │ ├── transport.go
│ │ │ ├── unencrypted.go
│ │ │ ├── write.go
│ │ │ ├── writesched.go
│ │ │ ├── writesched_priority.go
│ │ │ ├── writesched_random.go
│ │ │ └── writesched_roundrobin.go
│ │ ├── idna/
│ │ │ ├── go118.go
│ │ │ ├── idna10.0.0.go
│ │ │ ├── idna9.0.0.go
│ │ │ ├── pre_go118.go
│ │ │ ├── punycode.go
│ │ │ ├── tables10.0.0.go
│ │ │ ├── tables11.0.0.go
│ │ │ ├── tables12.0.0.go
│ │ │ ├── tables13.0.0.go
│ │ │ ├── tables15.0.0.go
│ │ │ ├── tables9.0.0.go
│ │ │ ├── trie.go
│ │ │ ├── trie12.0.0.go
│ │ │ ├── trie13.0.0.go
│ │ │ └── trieval.go
│ │ └── internal/
│ │ └── httpcommon/
│ │ ├── ascii.go
│ │ ├── headermap.go
│ │ └── request.go
│ ├── oauth2/
│ │ ├── .travis.yml
│ │ ├── CONTRIBUTING.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── deviceauth.go
│ │ ├── internal/
│ │ │ ├── doc.go
│ │ │ ├── oauth2.go
│ │ │ ├── token.go
│ │ │ └── transport.go
│ │ ├── oauth2.go
│ │ ├── pkce.go
│ │ ├── token.go
│ │ └── transport.go
│ ├── sys/
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ ├── plan9/
│ │ │ ├── asm.s
│ │ │ ├── asm_plan9_386.s
│ │ │ ├── asm_plan9_amd64.s
│ │ │ ├── asm_plan9_arm.s
│ │ │ ├── const_plan9.go
│ │ │ ├── dir_plan9.go
│ │ │ ├── env_plan9.go
│ │ │ ├── errors_plan9.go
│ │ │ ├── mkall.sh
│ │ │ ├── mkerrors.sh
│ │ │ ├── mksysnum_plan9.sh
│ │ │ ├── pwd_go15_plan9.go
│ │ │ ├── pwd_plan9.go
│ │ │ ├── race.go
│ │ │ ├── race0.go
│ │ │ ├── str.go
│ │ │ ├── syscall.go
│ │ │ ├── syscall_plan9.go
│ │ │ ├── zsyscall_plan9_386.go
│ │ │ ├── zsyscall_plan9_amd64.go
│ │ │ ├── zsyscall_plan9_arm.go
│ │ │ └── zsysnum_plan9.go
│ │ ├── unix/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── affinity_linux.go
│ │ │ ├── aliases.go
│ │ │ ├── asm_aix_ppc64.s
│ │ │ ├── asm_bsd_386.s
│ │ │ ├── asm_bsd_amd64.s
│ │ │ ├── asm_bsd_arm.s
│ │ │ ├── asm_bsd_arm64.s
│ │ │ ├── asm_bsd_ppc64.s
│ │ │ ├── asm_bsd_riscv64.s
│ │ │ ├── asm_linux_386.s
│ │ │ ├── asm_linux_amd64.s
│ │ │ ├── asm_linux_arm.s
│ │ │ ├── asm_linux_arm64.s
│ │ │ ├── asm_linux_loong64.s
│ │ │ ├── asm_linux_mips64x.s
│ │ │ ├── asm_linux_mipsx.s
│ │ │ ├── asm_linux_ppc64x.s
│ │ │ ├── asm_linux_riscv64.s
│ │ │ ├── asm_linux_s390x.s
│ │ │ ├── asm_openbsd_mips64.s
│ │ │ ├── asm_solaris_amd64.s
│ │ │ ├── asm_zos_s390x.s
│ │ │ ├── auxv.go
│ │ │ ├── auxv_unsupported.go
│ │ │ ├── bluetooth_linux.go
│ │ │ ├── bpxsvc_zos.go
│ │ │ ├── bpxsvc_zos.s
│ │ │ ├── cap_freebsd.go
│ │ │ ├── constants.go
│ │ │ ├── dev_aix_ppc.go
│ │ │ ├── dev_aix_ppc64.go
│ │ │ ├── dev_darwin.go
│ │ │ ├── dev_dragonfly.go
│ │ │ ├── dev_freebsd.go
│ │ │ ├── dev_linux.go
│ │ │ ├── dev_netbsd.go
│ │ │ ├── dev_openbsd.go
│ │ │ ├── dev_zos.go
│ │ │ ├── dirent.go
│ │ │ ├── endian_big.go
│ │ │ ├── endian_little.go
│ │ │ ├── env_unix.go
│ │ │ ├── fcntl.go
│ │ │ ├── fcntl_darwin.go
│ │ │ ├── fcntl_linux_32bit.go
│ │ │ ├── fdset.go
│ │ │ ├── gccgo.go
│ │ │ ├── gccgo_c.c
│ │ │ ├── gccgo_linux_amd64.go
│ │ │ ├── ifreq_linux.go
│ │ │ ├── ioctl_linux.go
│ │ │ ├── ioctl_signed.go
│ │ │ ├── ioctl_unsigned.go
│ │ │ ├── ioctl_zos.go
│ │ │ ├── mkall.sh
│ │ │ ├── mkerrors.sh
│ │ │ ├── mmap_nomremap.go
│ │ │ ├── mremap.go
│ │ │ ├── pagesize_unix.go
│ │ │ ├── pledge_openbsd.go
│ │ │ ├── ptrace_darwin.go
│ │ │ ├── ptrace_ios.go
│ │ │ ├── race.go
│ │ │ ├── race0.go
│ │ │ ├── readdirent_getdents.go
│ │ │ ├── readdirent_getdirentries.go
│ │ │ ├── sockcmsg_dragonfly.go
│ │ │ ├── sockcmsg_linux.go
│ │ │ ├── sockcmsg_unix.go
│ │ │ ├── sockcmsg_unix_other.go
│ │ │ ├── sockcmsg_zos.go
│ │ │ ├── symaddr_zos_s390x.s
│ │ │ ├── syscall.go
│ │ │ ├── syscall_aix.go
│ │ │ ├── syscall_aix_ppc.go
│ │ │ ├── syscall_aix_ppc64.go
│ │ │ ├── syscall_bsd.go
│ │ │ ├── syscall_darwin.go
│ │ │ ├── syscall_darwin_amd64.go
│ │ │ ├── syscall_darwin_arm64.go
│ │ │ ├── syscall_darwin_libSystem.go
│ │ │ ├── syscall_dragonfly.go
│ │ │ ├── syscall_dragonfly_amd64.go
│ │ │ ├── syscall_freebsd.go
│ │ │ ├── syscall_freebsd_386.go
│ │ │ ├── syscall_freebsd_amd64.go
│ │ │ ├── syscall_freebsd_arm.go
│ │ │ ├── syscall_freebsd_arm64.go
│ │ │ ├── syscall_freebsd_riscv64.go
│ │ │ ├── syscall_hurd.go
│ │ │ ├── syscall_hurd_386.go
│ │ │ ├── syscall_illumos.go
│ │ │ ├── syscall_linux.go
│ │ │ ├── syscall_linux_386.go
│ │ │ ├── syscall_linux_alarm.go
│ │ │ ├── syscall_linux_amd64.go
│ │ │ ├── syscall_linux_amd64_gc.go
│ │ │ ├── syscall_linux_arm.go
│ │ │ ├── syscall_linux_arm64.go
│ │ │ ├── syscall_linux_gc.go
│ │ │ ├── syscall_linux_gc_386.go
│ │ │ ├── syscall_linux_gc_arm.go
│ │ │ ├── syscall_linux_gccgo_386.go
│ │ │ ├── syscall_linux_gccgo_arm.go
│ │ │ ├── syscall_linux_loong64.go
│ │ │ ├── syscall_linux_mips64x.go
│ │ │ ├── syscall_linux_mipsx.go
│ │ │ ├── syscall_linux_ppc.go
│ │ │ ├── syscall_linux_ppc64x.go
│ │ │ ├── syscall_linux_riscv64.go
│ │ │ ├── syscall_linux_s390x.go
│ │ │ ├── syscall_linux_sparc64.go
│ │ │ ├── syscall_netbsd.go
│ │ │ ├── syscall_netbsd_386.go
│ │ │ ├── syscall_netbsd_amd64.go
│ │ │ ├── syscall_netbsd_arm.go
│ │ │ ├── syscall_netbsd_arm64.go
│ │ │ ├── syscall_openbsd.go
│ │ │ ├── syscall_openbsd_386.go
│ │ │ ├── syscall_openbsd_amd64.go
│ │ │ ├── syscall_openbsd_arm.go
│ │ │ ├── syscall_openbsd_arm64.go
│ │ │ ├── syscall_openbsd_libc.go
│ │ │ ├── syscall_openbsd_mips64.go
│ │ │ ├── syscall_openbsd_ppc64.go
│ │ │ ├── syscall_openbsd_riscv64.go
│ │ │ ├── syscall_solaris.go
│ │ │ ├── syscall_solaris_amd64.go
│ │ │ ├── syscall_unix.go
│ │ │ ├── syscall_unix_gc.go
│ │ │ ├── syscall_unix_gc_ppc64x.go
│ │ │ ├── syscall_zos_s390x.go
│ │ │ ├── sysvshm_linux.go
│ │ │ ├── sysvshm_unix.go
│ │ │ ├── sysvshm_unix_other.go
│ │ │ ├── timestruct.go
│ │ │ ├── unveil_openbsd.go
│ │ │ ├── vgetrandom_linux.go
│ │ │ ├── vgetrandom_unsupported.go
│ │ │ ├── xattr_bsd.go
│ │ │ ├── zerrors_aix_ppc.go
│ │ │ ├── zerrors_aix_ppc64.go
│ │ │ ├── zerrors_darwin_amd64.go
│ │ │ ├── zerrors_darwin_arm64.go
│ │ │ ├── zerrors_dragonfly_amd64.go
│ │ │ ├── zerrors_freebsd_386.go
│ │ │ ├── zerrors_freebsd_amd64.go
│ │ │ ├── zerrors_freebsd_arm.go
│ │ │ ├── zerrors_freebsd_arm64.go
│ │ │ ├── zerrors_freebsd_riscv64.go
│ │ │ ├── zerrors_linux.go
│ │ │ ├── zerrors_linux_386.go
│ │ │ ├── zerrors_linux_amd64.go
│ │ │ ├── zerrors_linux_arm.go
│ │ │ ├── zerrors_linux_arm64.go
│ │ │ ├── zerrors_linux_loong64.go
│ │ │ ├── zerrors_linux_mips.go
│ │ │ ├── zerrors_linux_mips64.go
│ │ │ ├── zerrors_linux_mips64le.go
│ │ │ ├── zerrors_linux_mipsle.go
│ │ │ ├── zerrors_linux_ppc.go
│ │ │ ├── zerrors_linux_ppc64.go
│ │ │ ├── zerrors_linux_ppc64le.go
│ │ │ ├── zerrors_linux_riscv64.go
│ │ │ ├── zerrors_linux_s390x.go
│ │ │ ├── zerrors_linux_sparc64.go
│ │ │ ├── zerrors_netbsd_386.go
│ │ │ ├── zerrors_netbsd_amd64.go
│ │ │ ├── zerrors_netbsd_arm.go
│ │ │ ├── zerrors_netbsd_arm64.go
│ │ │ ├── zerrors_openbsd_386.go
│ │ │ ├── zerrors_openbsd_amd64.go
│ │ │ ├── zerrors_openbsd_arm.go
│ │ │ ├── zerrors_openbsd_arm64.go
│ │ │ ├── zerrors_openbsd_mips64.go
│ │ │ ├── zerrors_openbsd_ppc64.go
│ │ │ ├── zerrors_openbsd_riscv64.go
│ │ │ ├── zerrors_solaris_amd64.go
│ │ │ ├── zerrors_zos_s390x.go
│ │ │ ├── zptrace_armnn_linux.go
│ │ │ ├── zptrace_linux_arm64.go
│ │ │ ├── zptrace_mipsnn_linux.go
│ │ │ ├── zptrace_mipsnnle_linux.go
│ │ │ ├── zptrace_x86_linux.go
│ │ │ ├── zsymaddr_zos_s390x.s
│ │ │ ├── zsyscall_aix_ppc.go
│ │ │ ├── zsyscall_aix_ppc64.go
│ │ │ ├── zsyscall_aix_ppc64_gc.go
│ │ │ ├── zsyscall_aix_ppc64_gccgo.go
│ │ │ ├── zsyscall_darwin_amd64.go
│ │ │ ├── zsyscall_darwin_amd64.s
│ │ │ ├── zsyscall_darwin_arm64.go
│ │ │ ├── zsyscall_darwin_arm64.s
│ │ │ ├── zsyscall_dragonfly_amd64.go
│ │ │ ├── zsyscall_freebsd_386.go
│ │ │ ├── zsyscall_freebsd_amd64.go
│ │ │ ├── zsyscall_freebsd_arm.go
│ │ │ ├── zsyscall_freebsd_arm64.go
│ │ │ ├── zsyscall_freebsd_riscv64.go
│ │ │ ├── zsyscall_illumos_amd64.go
│ │ │ ├── zsyscall_linux.go
│ │ │ ├── zsyscall_linux_386.go
│ │ │ ├── zsyscall_linux_amd64.go
│ │ │ ├── zsyscall_linux_arm.go
│ │ │ ├── zsyscall_linux_arm64.go
│ │ │ ├── zsyscall_linux_loong64.go
│ │ │ ├── zsyscall_linux_mips.go
│ │ │ ├── zsyscall_linux_mips64.go
│ │ │ ├── zsyscall_linux_mips64le.go
│ │ │ ├── zsyscall_linux_mipsle.go
│ │ │ ├── zsyscall_linux_ppc.go
│ │ │ ├── zsyscall_linux_ppc64.go
│ │ │ ├── zsyscall_linux_ppc64le.go
│ │ │ ├── zsyscall_linux_riscv64.go
│ │ │ ├── zsyscall_linux_s390x.go
│ │ │ ├── zsyscall_linux_sparc64.go
│ │ │ ├── zsyscall_netbsd_386.go
│ │ │ ├── zsyscall_netbsd_amd64.go
│ │ │ ├── zsyscall_netbsd_arm.go
│ │ │ ├── zsyscall_netbsd_arm64.go
│ │ │ ├── zsyscall_openbsd_386.go
│ │ │ ├── zsyscall_openbsd_386.s
│ │ │ ├── zsyscall_openbsd_amd64.go
│ │ │ ├── zsyscall_openbsd_amd64.s
│ │ │ ├── zsyscall_openbsd_arm.go
│ │ │ ├── zsyscall_openbsd_arm.s
│ │ │ ├── zsyscall_openbsd_arm64.go
│ │ │ ├── zsyscall_openbsd_arm64.s
│ │ │ ├── zsyscall_openbsd_mips64.go
│ │ │ ├── zsyscall_openbsd_mips64.s
│ │ │ ├── zsyscall_openbsd_ppc64.go
│ │ │ ├── zsyscall_openbsd_ppc64.s
│ │ │ ├── zsyscall_openbsd_riscv64.go
│ │ │ ├── zsyscall_openbsd_riscv64.s
│ │ │ ├── zsyscall_solaris_amd64.go
│ │ │ ├── zsyscall_zos_s390x.go
│ │ │ ├── zsysctl_openbsd_386.go
│ │ │ ├── zsysctl_openbsd_amd64.go
│ │ │ ├── zsysctl_openbsd_arm.go
│ │ │ ├── zsysctl_openbsd_arm64.go
│ │ │ ├── zsysctl_openbsd_mips64.go
│ │ │ ├── zsysctl_openbsd_ppc64.go
│ │ │ ├── zsysctl_openbsd_riscv64.go
│ │ │ ├── zsysnum_darwin_amd64.go
│ │ │ ├── zsysnum_darwin_arm64.go
│ │ │ ├── zsysnum_dragonfly_amd64.go
│ │ │ ├── zsysnum_freebsd_386.go
│ │ │ ├── zsysnum_freebsd_amd64.go
│ │ │ ├── zsysnum_freebsd_arm.go
│ │ │ ├── zsysnum_freebsd_arm64.go
│ │ │ ├── zsysnum_freebsd_riscv64.go
│ │ │ ├── zsysnum_linux_386.go
│ │ │ ├── zsysnum_linux_amd64.go
│ │ │ ├── zsysnum_linux_arm.go
│ │ │ ├── zsysnum_linux_arm64.go
│ │ │ ├── zsysnum_linux_loong64.go
│ │ │ ├── zsysnum_linux_mips.go
│ │ │ ├── zsysnum_linux_mips64.go
│ │ │ ├── zsysnum_linux_mips64le.go
│ │ │ ├── zsysnum_linux_mipsle.go
│ │ │ ├── zsysnum_linux_ppc.go
│ │ │ ├── zsysnum_linux_ppc64.go
│ │ │ ├── zsysnum_linux_ppc64le.go
│ │ │ ├── zsysnum_linux_riscv64.go
│ │ │ ├── zsysnum_linux_s390x.go
│ │ │ ├── zsysnum_linux_sparc64.go
│ │ │ ├── zsysnum_netbsd_386.go
│ │ │ ├── zsysnum_netbsd_amd64.go
│ │ │ ├── zsysnum_netbsd_arm.go
│ │ │ ├── zsysnum_netbsd_arm64.go
│ │ │ ├── zsysnum_openbsd_386.go
│ │ │ ├── zsysnum_openbsd_amd64.go
│ │ │ ├── zsysnum_openbsd_arm.go
│ │ │ ├── zsysnum_openbsd_arm64.go
│ │ │ ├── zsysnum_openbsd_mips64.go
│ │ │ ├── zsysnum_openbsd_ppc64.go
│ │ │ ├── zsysnum_openbsd_riscv64.go
│ │ │ ├── zsysnum_zos_s390x.go
│ │ │ ├── ztypes_aix_ppc.go
│ │ │ ├── ztypes_aix_ppc64.go
│ │ │ ├── ztypes_darwin_amd64.go
│ │ │ ├── ztypes_darwin_arm64.go
│ │ │ ├── ztypes_dragonfly_amd64.go
│ │ │ ├── ztypes_freebsd_386.go
│ │ │ ├── ztypes_freebsd_amd64.go
│ │ │ ├── ztypes_freebsd_arm.go
│ │ │ ├── ztypes_freebsd_arm64.go
│ │ │ ├── ztypes_freebsd_riscv64.go
│ │ │ ├── ztypes_linux.go
│ │ │ ├── ztypes_linux_386.go
│ │ │ ├── ztypes_linux_amd64.go
│ │ │ ├── ztypes_linux_arm.go
│ │ │ ├── ztypes_linux_arm64.go
│ │ │ ├── ztypes_linux_loong64.go
│ │ │ ├── ztypes_linux_mips.go
│ │ │ ├── ztypes_linux_mips64.go
│ │ │ ├── ztypes_linux_mips64le.go
│ │ │ ├── ztypes_linux_mipsle.go
│ │ │ ├── ztypes_linux_ppc.go
│ │ │ ├── ztypes_linux_ppc64.go
│ │ │ ├── ztypes_linux_ppc64le.go
│ │ │ ├── ztypes_linux_riscv64.go
│ │ │ ├── ztypes_linux_s390x.go
│ │ │ ├── ztypes_linux_sparc64.go
│ │ │ ├── ztypes_netbsd_386.go
│ │ │ ├── ztypes_netbsd_amd64.go
│ │ │ ├── ztypes_netbsd_arm.go
│ │ │ ├── ztypes_netbsd_arm64.go
│ │ │ ├── ztypes_openbsd_386.go
│ │ │ ├── ztypes_openbsd_amd64.go
│ │ │ ├── ztypes_openbsd_arm.go
│ │ │ ├── ztypes_openbsd_arm64.go
│ │ │ ├── ztypes_openbsd_mips64.go
│ │ │ ├── ztypes_openbsd_ppc64.go
│ │ │ ├── ztypes_openbsd_riscv64.go
│ │ │ ├── ztypes_solaris_amd64.go
│ │ │ └── ztypes_zos_s390x.go
│ │ └── windows/
│ │ ├── aliases.go
│ │ ├── dll_windows.go
│ │ ├── env_windows.go
│ │ ├── eventlog.go
│ │ ├── exec_windows.go
│ │ ├── memory_windows.go
│ │ ├── mkerrors.bash
│ │ ├── mkknownfolderids.bash
│ │ ├── mksyscall.go
│ │ ├── race.go
│ │ ├── race0.go
│ │ ├── security_windows.go
│ │ ├── service.go
│ │ ├── setupapi_windows.go
│ │ ├── str.go
│ │ ├── syscall.go
│ │ ├── syscall_windows.go
│ │ ├── types_windows.go
│ │ ├── types_windows_386.go
│ │ ├── types_windows_amd64.go
│ │ ├── types_windows_arm.go
│ │ ├── types_windows_arm64.go
│ │ ├── zerrors_windows.go
│ │ ├── zknownfolderids_windows.go
│ │ └── zsyscall_windows.go
│ ├── term/
│ │ ├── CONTRIBUTING.md
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ ├── README.md
│ │ ├── codereview.cfg
│ │ ├── term.go
│ │ ├── term_plan9.go
│ │ ├── term_unix.go
│ │ ├── term_unix_bsd.go
│ │ ├── term_unix_other.go
│ │ ├── term_unsupported.go
│ │ ├── term_windows.go
│ │ └── terminal.go
│ ├── text/
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ ├── secure/
│ │ │ └── bidirule/
│ │ │ ├── bidirule.go
│ │ │ ├── bidirule10.0.0.go
│ │ │ └── bidirule9.0.0.go
│ │ ├── transform/
│ │ │ └── transform.go
│ │ └── unicode/
│ │ ├── bidi/
│ │ │ ├── bidi.go
│ │ │ ├── bracket.go
│ │ │ ├── core.go
│ │ │ ├── prop.go
│ │ │ ├── tables10.0.0.go
│ │ │ ├── tables11.0.0.go
│ │ │ ├── tables12.0.0.go
│ │ │ ├── tables13.0.0.go
│ │ │ ├── tables15.0.0.go
│ │ │ ├── tables9.0.0.go
│ │ │ └── trieval.go
│ │ └── norm/
│ │ ├── composition.go
│ │ ├── forminfo.go
│ │ ├── input.go
│ │ ├── iter.go
│ │ ├── normalize.go
│ │ ├── readwriter.go
│ │ ├── tables10.0.0.go
│ │ ├── tables11.0.0.go
│ │ ├── tables12.0.0.go
│ │ ├── tables13.0.0.go
│ │ ├── tables15.0.0.go
│ │ ├── tables9.0.0.go
│ │ ├── transform.go
│ │ └── trie.go
│ └── time/
│ ├── LICENSE
│ ├── PATENTS
│ └── rate/
│ ├── rate.go
│ └── sometimes.go
├── google.golang.org/
│ └── protobuf/
│ ├── LICENSE
│ ├── PATENTS
│ ├── encoding/
│ │ ├── prototext/
│ │ │ ├── decode.go
│ │ │ ├── doc.go
│ │ │ └── encode.go
│ │ └── protowire/
│ │ └── wire.go
│ ├── internal/
│ │ ├── descfmt/
│ │ │ └── stringer.go
│ │ ├── descopts/
│ │ │ └── options.go
│ │ ├── detrand/
│ │ │ └── rand.go
│ │ ├── editiondefaults/
│ │ │ ├── defaults.go
│ │ │ └── editions_defaults.binpb
│ │ ├── editionssupport/
│ │ │ └── editions.go
│ │ ├── encoding/
│ │ │ ├── defval/
│ │ │ │ └── default.go
│ │ │ ├── messageset/
│ │ │ │ └── messageset.go
│ │ │ ├── tag/
│ │ │ │ └── tag.go
│ │ │ └── text/
│ │ │ ├── decode.go
│ │ │ ├── decode_number.go
│ │ │ ├── decode_string.go
│ │ │ ├── decode_token.go
│ │ │ ├── doc.go
│ │ │ └── encode.go
│ │ ├── errors/
│ │ │ ├── errors.go
│ │ │ ├── is_go112.go
│ │ │ └── is_go113.go
│ │ ├── filedesc/
│ │ │ ├── build.go
│ │ │ ├── desc.go
│ │ │ ├── desc_init.go
│ │ │ ├── desc_lazy.go
│ │ │ ├── desc_list.go
│ │ │ ├── desc_list_gen.go
│ │ │ ├── editions.go
│ │ │ └── placeholder.go
│ │ ├── filetype/
│ │ │ └── build.go
│ │ ├── flags/
│ │ │ ├── flags.go
│ │ │ ├── proto_legacy_disable.go
│ │ │ └── proto_legacy_enable.go
│ │ ├── genid/
│ │ │ ├── any_gen.go
│ │ │ ├── api_gen.go
│ │ │ ├── descriptor_gen.go
│ │ │ ├── doc.go
│ │ │ ├── duration_gen.go
│ │ │ ├── empty_gen.go
│ │ │ ├── field_mask_gen.go
│ │ │ ├── go_features_gen.go
│ │ │ ├── goname.go
│ │ │ ├── map_entry.go
│ │ │ ├── source_context_gen.go
│ │ │ ├── struct_gen.go
│ │ │ ├── timestamp_gen.go
│ │ │ ├── type_gen.go
│ │ │ ├── wrappers.go
│ │ │ └── wrappers_gen.go
│ │ ├── impl/
│ │ │ ├── api_export.go
│ │ │ ├── checkinit.go
│ │ │ ├── codec_extension.go
│ │ │ ├── codec_field.go
│ │ │ ├── codec_gen.go
│ │ │ ├── codec_map.go
│ │ │ ├── codec_map_go111.go
│ │ │ ├── codec_map_go112.go
│ │ │ ├── codec_message.go
│ │ │ ├── codec_messageset.go
│ │ │ ├── codec_tables.go
│ │ │ ├── codec_unsafe.go
│ │ │ ├── convert.go
│ │ │ ├── convert_list.go
│ │ │ ├── convert_map.go
│ │ │ ├── decode.go
│ │ │ ├── encode.go
│ │ │ ├── enum.go
│ │ │ ├── equal.go
│ │ │ ├── extension.go
│ │ │ ├── legacy_enum.go
│ │ │ ├── legacy_export.go
│ │ │ ├── legacy_extension.go
│ │ │ ├── legacy_file.go
│ │ │ ├── legacy_message.go
│ │ │ ├── merge.go
│ │ │ ├── merge_gen.go
│ │ │ ├── message.go
│ │ │ ├── message_reflect.go
│ │ │ ├── message_reflect_field.go
│ │ │ ├── message_reflect_gen.go
│ │ │ ├── pointer_unsafe.go
│ │ │ ├── validate.go
│ │ │ └── weak.go
│ │ ├── order/
│ │ │ ├── order.go
│ │ │ └── range.go
│ │ ├── pragma/
│ │ │ └── pragma.go
│ │ ├── set/
│ │ │ └── ints.go
│ │ ├── strs/
│ │ │ ├── strings.go
│ │ │ ├── strings_unsafe_go120.go
│ │ │ └── strings_unsafe_go121.go
│ │ └── version/
│ │ └── version.go
│ ├── proto/
│ │ ├── checkinit.go
│ │ ├── decode.go
│ │ ├── decode_gen.go
│ │ ├── doc.go
│ │ ├── encode.go
│ │ ├── encode_gen.go
│ │ ├── equal.go
│ │ ├── extension.go
│ │ ├── merge.go
│ │ ├── messageset.go
│ │ ├── proto.go
│ │ ├── proto_methods.go
│ │ ├── proto_reflect.go
│ │ ├── reset.go
│ │ ├── size.go
│ │ ├── size_gen.go
│ │ └── wrappers.go
│ ├── reflect/
│ │ ├── protodesc/
│ │ │ ├── desc.go
│ │ │ ├── desc_init.go
│ │ │ ├── desc_resolve.go
│ │ │ ├── desc_validate.go
│ │ │ ├── editions.go
│ │ │ └── proto.go
│ │ ├── protoreflect/
│ │ │ ├── methods.go
│ │ │ ├── proto.go
│ │ │ ├── source.go
│ │ │ ├── source_gen.go
│ │ │ ├── type.go
│ │ │ ├── value.go
│ │ │ ├── value_equal.go
│ │ │ ├── value_union.go
│ │ │ ├── value_unsafe_go120.go
│ │ │ └── value_unsafe_go121.go
│ │ └── protoregistry/
│ │ └── registry.go
│ ├── runtime/
│ │ ├── protoiface/
│ │ │ ├── legacy.go
│ │ │ └── methods.go
│ │ └── protoimpl/
│ │ ├── impl.go
│ │ └── version.go
│ └── types/
│ ├── descriptorpb/
│ │ └── descriptor.pb.go
│ ├── gofeaturespb/
│ │ └── go_features.pb.go
│ └── known/
│ ├── anypb/
│ │ └── any.pb.go
│ ├── durationpb/
│ │ └── duration.pb.go
│ └── timestamppb/
│ └── timestamp.pb.go
├── gopkg.in/
│ ├── evanphx/
│ │ └── json-patch.v4/
│ │ ├── .gitignore
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── errors.go
│ │ ├── merge.go
│ │ └── patch.go
│ ├── inf.v0/
│ │ ├── LICENSE
│ │ ├── dec.go
│ │ └── rounder.go
│ └── yaml.v3/
│ ├── LICENSE
│ ├── NOTICE
│ ├── README.md
│ ├── apic.go
│ ├── decode.go
│ ├── emitterc.go
│ ├── encode.go
│ ├── parserc.go
│ ├── readerc.go
│ ├── resolve.go
│ ├── scannerc.go
│ ├── sorter.go
│ ├── writerc.go
│ ├── yaml.go
│ ├── yamlh.go
│ └── yamlprivateh.go
├── k8s.io/
│ ├── api/
│ │ ├── LICENSE
│ │ ├── admissionregistration/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ ├── v1alpha1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── apidiscovery/
│ │ │ ├── v2/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v2beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── apiserverinternal/
│ │ │ └── v1alpha1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ └── zz_generated.deepcopy.go
│ │ ├── apps/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ ├── v1beta1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v1beta2/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── authentication/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ ├── v1alpha1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── authorization/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── autoscaling/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ ├── v2/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ ├── v2beta1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v2beta2/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── batch/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── certificates/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ ├── v1alpha1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── coordination/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ ├── v1alpha2/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── core/
│ │ │ └── v1/
│ │ │ ├── annotation_key_constants.go
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── lifecycle.go
│ │ │ ├── objectreference.go
│ │ │ ├── register.go
│ │ │ ├── resource.go
│ │ │ ├── taint.go
│ │ │ ├── toleration.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── well_known_labels.go
│ │ │ ├── well_known_taints.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── discovery/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── well_known_labels.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── well_known_labels.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── events/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── extensions/
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── flowcontrol/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ ├── v1beta1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ ├── v1beta2/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v1beta3/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── imagepolicy/
│ │ │ └── v1alpha1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ └── zz_generated.deepcopy.go
│ │ ├── networking/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── well_known_annotations.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ ├── v1alpha1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── well_known_labels.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── well_known_annotations.go
│ │ │ ├── well_known_labels.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── node/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ ├── v1alpha1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ └── zz_generated.deepcopy.go
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── policy/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── rbac/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ ├── v1alpha1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ └── zz_generated.deepcopy.go
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── resource/
│ │ │ ├── v1alpha3/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── scheduling/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ ├── v1alpha1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ └── zz_generated.deepcopy.go
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ ├── storage/
│ │ │ ├── v1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ ├── v1alpha1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ │ └── v1beta1/
│ │ │ ├── doc.go
│ │ │ ├── generated.pb.go
│ │ │ ├── generated.proto
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── types_swagger_doc_generated.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.prerelease-lifecycle.go
│ │ └── storagemigration/
│ │ └── v1alpha1/
│ │ ├── doc.go
│ │ ├── generated.pb.go
│ │ ├── generated.proto
│ │ ├── register.go
│ │ ├── types.go
│ │ ├── types_swagger_doc_generated.go
│ │ ├── zz_generated.deepcopy.go
│ │ └── zz_generated.prerelease-lifecycle.go
│ ├── apimachinery/
│ │ ├── LICENSE
│ │ ├── pkg/
│ │ │ ├── api/
│ │ │ │ ├── equality/
│ │ │ │ │ └── semantic.go
│ │ │ │ ├── errors/
│ │ │ │ │ ├── OWNERS
│ │ │ │ │ ├── doc.go
│ │ │ │ │ └── errors.go
│ │ │ │ ├── meta/
│ │ │ │ │ ├── OWNERS
│ │ │ │ │ ├── conditions.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── errors.go
│ │ │ │ │ ├── firsthit_restmapper.go
│ │ │ │ │ ├── help.go
│ │ │ │ │ ├── interfaces.go
│ │ │ │ │ ├── lazy.go
│ │ │ │ │ ├── meta.go
│ │ │ │ │ ├── multirestmapper.go
│ │ │ │ │ ├── priority.go
│ │ │ │ │ ├── restmapper.go
│ │ │ │ │ └── testrestmapper/
│ │ │ │ │ └── test_restmapper.go
│ │ │ │ ├── resource/
│ │ │ │ │ ├── OWNERS
│ │ │ │ │ ├── amount.go
│ │ │ │ │ ├── generated.pb.go
│ │ │ │ │ ├── generated.proto
│ │ │ │ │ ├── math.go
│ │ │ │ │ ├── quantity.go
│ │ │ │ │ ├── quantity_proto.go
│ │ │ │ │ ├── scale_int.go
│ │ │ │ │ ├── suffix.go
│ │ │ │ │ └── zz_generated.deepcopy.go
│ │ │ │ └── validation/
│ │ │ │ ├── OWNERS
│ │ │ │ ├── doc.go
│ │ │ │ ├── generic.go
│ │ │ │ └── objectmeta.go
│ │ │ ├── apis/
│ │ │ │ └── meta/
│ │ │ │ ├── internalversion/
│ │ │ │ │ ├── defaults.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── register.go
│ │ │ │ │ ├── types.go
│ │ │ │ │ ├── validation/
│ │ │ │ │ │ └── validation.go
│ │ │ │ │ ├── zz_generated.conversion.go
│ │ │ │ │ └── zz_generated.deepcopy.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── OWNERS
│ │ │ │ │ ├── controller_ref.go
│ │ │ │ │ ├── conversion.go
│ │ │ │ │ ├── deepcopy.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── duration.go
│ │ │ │ │ ├── generated.pb.go
│ │ │ │ │ ├── generated.proto
│ │ │ │ │ ├── group_version.go
│ │ │ │ │ ├── helpers.go
│ │ │ │ │ ├── labels.go
│ │ │ │ │ ├── meta.go
│ │ │ │ │ ├── micro_time.go
│ │ │ │ │ ├── micro_time_fuzz.go
│ │ │ │ │ ├── micro_time_proto.go
│ │ │ │ │ ├── register.go
│ │ │ │ │ ├── time.go
│ │ │ │ │ ├── time_fuzz.go
│ │ │ │ │ ├── time_proto.go
│ │ │ │ │ ├── types.go
│ │ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ │ ├── unstructured/
│ │ │ │ │ │ ├── helpers.go
│ │ │ │ │ │ ├── unstructured.go
│ │ │ │ │ │ ├── unstructured_list.go
│ │ │ │ │ │ └── zz_generated.deepcopy.go
│ │ │ │ │ ├── validation/
│ │ │ │ │ │ └── validation.go
│ │ │ │ │ ├── watch.go
│ │ │ │ │ ├── zz_generated.conversion.go
│ │ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ │ └── zz_generated.defaults.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── conversion.go
│ │ │ │ ├── deepcopy.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_swagger_doc_generated.go
│ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ └── zz_generated.defaults.go
│ │ │ ├── conversion/
│ │ │ │ ├── converter.go
│ │ │ │ ├── deep_equal.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── helper.go
│ │ │ │ └── queryparams/
│ │ │ │ ├── convert.go
│ │ │ │ └── doc.go
│ │ │ ├── fields/
│ │ │ │ ├── doc.go
│ │ │ │ ├── fields.go
│ │ │ │ ├── requirements.go
│ │ │ │ └── selector.go
│ │ │ ├── labels/
│ │ │ │ ├── doc.go
│ │ │ │ ├── labels.go
│ │ │ │ ├── selector.go
│ │ │ │ └── zz_generated.deepcopy.go
│ │ │ ├── runtime/
│ │ │ │ ├── allocator.go
│ │ │ │ ├── codec.go
│ │ │ │ ├── codec_check.go
│ │ │ │ ├── conversion.go
│ │ │ │ ├── converter.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── embedded.go
│ │ │ │ ├── error.go
│ │ │ │ ├── extension.go
│ │ │ │ ├── generated.pb.go
│ │ │ │ ├── generated.proto
│ │ │ │ ├── helper.go
│ │ │ │ ├── interfaces.go
│ │ │ │ ├── mapper.go
│ │ │ │ ├── negotiate.go
│ │ │ │ ├── register.go
│ │ │ │ ├── schema/
│ │ │ │ │ ├── generated.pb.go
│ │ │ │ │ ├── generated.proto
│ │ │ │ │ ├── group_version.go
│ │ │ │ │ └── interfaces.go
│ │ │ │ ├── scheme.go
│ │ │ │ ├── scheme_builder.go
│ │ │ │ ├── serializer/
│ │ │ │ │ ├── cbor/
│ │ │ │ │ │ ├── cbor.go
│ │ │ │ │ │ ├── direct/
│ │ │ │ │ │ │ └── direct.go
│ │ │ │ │ │ ├── framer.go
│ │ │ │ │ │ ├── internal/
│ │ │ │ │ │ │ └── modes/
│ │ │ │ │ │ │ ├── buffers.go
│ │ │ │ │ │ │ ├── custom.go
│ │ │ │ │ │ │ ├── decode.go
│ │ │ │ │ │ │ ├── diagnostic.go
│ │ │ │ │ │ │ └── encode.go
│ │ │ │ │ │ └── raw.go
│ │ │ │ │ ├── codec_factory.go
│ │ │ │ │ ├── json/
│ │ │ │ │ │ ├── json.go
│ │ │ │ │ │ └── meta.go
│ │ │ │ │ ├── negotiated_codec.go
│ │ │ │ │ ├── protobuf/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ └── protobuf.go
│ │ │ │ │ ├── recognizer/
│ │ │ │ │ │ └── recognizer.go
│ │ │ │ │ ├── streaming/
│ │ │ │ │ │ └── streaming.go
│ │ │ │ │ └── versioning/
│ │ │ │ │ └── versioning.go
│ │ │ │ ├── splice.go
│ │ │ │ ├── swagger_doc_generator.go
│ │ │ │ ├── types.go
│ │ │ │ ├── types_proto.go
│ │ │ │ └── zz_generated.deepcopy.go
│ │ │ ├── selection/
│ │ │ │ └── operator.go
│ │ │ ├── types/
│ │ │ │ ├── doc.go
│ │ │ │ ├── namespacedname.go
│ │ │ │ ├── nodename.go
│ │ │ │ ├── patch.go
│ │ │ │ └── uid.go
│ │ │ ├── util/
│ │ │ │ ├── cache/
│ │ │ │ │ ├── expiring.go
│ │ │ │ │ └── lruexpirecache.go
│ │ │ │ ├── diff/
│ │ │ │ │ └── diff.go
│ │ │ │ ├── dump/
│ │ │ │ │ └── dump.go
│ │ │ │ ├── errors/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ └── errors.go
│ │ │ │ ├── framer/
│ │ │ │ │ └── framer.go
│ │ │ │ ├── intstr/
│ │ │ │ │ ├── generated.pb.go
│ │ │ │ │ ├── generated.proto
│ │ │ │ │ ├── instr_fuzz.go
│ │ │ │ │ └── intstr.go
│ │ │ │ ├── json/
│ │ │ │ │ └── json.go
│ │ │ │ ├── managedfields/
│ │ │ │ │ ├── endpoints.yaml
│ │ │ │ │ ├── extract.go
│ │ │ │ │ ├── fieldmanager.go
│ │ │ │ │ ├── gvkparser.go
│ │ │ │ │ ├── internal/
│ │ │ │ │ │ ├── atmostevery.go
│ │ │ │ │ │ ├── buildmanagerinfo.go
│ │ │ │ │ │ ├── capmanagers.go
│ │ │ │ │ │ ├── conflict.go
│ │ │ │ │ │ ├── fieldmanager.go
│ │ │ │ │ │ ├── fields.go
│ │ │ │ │ │ ├── lastapplied.go
│ │ │ │ │ │ ├── lastappliedmanager.go
│ │ │ │ │ │ ├── lastappliedupdater.go
│ │ │ │ │ │ ├── managedfields.go
│ │ │ │ │ │ ├── managedfieldsupdater.go
│ │ │ │ │ │ ├── manager.go
│ │ │ │ │ │ ├── pathelement.go
│ │ │ │ │ │ ├── skipnonapplied.go
│ │ │ │ │ │ ├── stripmeta.go
│ │ │ │ │ │ ├── structuredmerge.go
│ │ │ │ │ │ ├── typeconverter.go
│ │ │ │ │ │ ├── versioncheck.go
│ │ │ │ │ │ └── versionconverter.go
│ │ │ │ │ ├── node.yaml
│ │ │ │ │ ├── pod.yaml
│ │ │ │ │ ├── scalehandler.go
│ │ │ │ │ └── typeconverter.go
│ │ │ │ ├── mergepatch/
│ │ │ │ │ ├── OWNERS
│ │ │ │ │ ├── errors.go
│ │ │ │ │ └── util.go
│ │ │ │ ├── naming/
│ │ │ │ │ └── from_stack.go
│ │ │ │ ├── net/
│ │ │ │ │ ├── http.go
│ │ │ │ │ ├── interface.go
│ │ │ │ │ ├── port_range.go
│ │ │ │ │ ├── port_split.go
│ │ │ │ │ └── util.go
│ │ │ │ ├── runtime/
│ │ │ │ │ └── runtime.go
│ │ │ │ ├── sets/
│ │ │ │ │ ├── byte.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── empty.go
│ │ │ │ │ ├── int.go
│ │ │ │ │ ├── int32.go
│ │ │ │ │ ├── int64.go
│ │ │ │ │ ├── set.go
│ │ │ │ │ └── string.go
│ │ │ │ ├── strategicpatch/
│ │ │ │ │ ├── OWNERS
│ │ │ │ │ ├── errors.go
│ │ │ │ │ ├── meta.go
│ │ │ │ │ ├── patch.go
│ │ │ │ │ └── types.go
│ │ │ │ ├── validation/
│ │ │ │ │ ├── OWNERS
│ │ │ │ │ ├── field/
│ │ │ │ │ │ ├── errors.go
│ │ │ │ │ │ └── path.go
│ │ │ │ │ └── validation.go
│ │ │ │ ├── wait/
│ │ │ │ │ ├── backoff.go
│ │ │ │ │ ├── delay.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── error.go
│ │ │ │ │ ├── loop.go
│ │ │ │ │ ├── poll.go
│ │ │ │ │ ├── timer.go
│ │ │ │ │ └── wait.go
│ │ │ │ └── yaml/
│ │ │ │ └── decoder.go
│ │ │ ├── version/
│ │ │ │ ├── doc.go
│ │ │ │ ├── helpers.go
│ │ │ │ └── types.go
│ │ │ └── watch/
│ │ │ ├── doc.go
│ │ │ ├── filter.go
│ │ │ ├── mux.go
│ │ │ ├── streamwatcher.go
│ │ │ ├── watch.go
│ │ │ └── zz_generated.deepcopy.go
│ │ └── third_party/
│ │ └── forked/
│ │ └── golang/
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ ├── json/
│ │ │ ├── OWNERS
│ │ │ └── fields.go
│ │ └── reflect/
│ │ └── deep_equal.go
│ ├── client-go/
│ │ ├── LICENSE
│ │ ├── applyconfigurations/
│ │ │ ├── OWNERS
│ │ │ ├── admissionregistration/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── auditannotation.go
│ │ │ │ │ ├── expressionwarning.go
│ │ │ │ │ ├── matchcondition.go
│ │ │ │ │ ├── matchresources.go
│ │ │ │ │ ├── mutatingwebhook.go
│ │ │ │ │ ├── mutatingwebhookconfiguration.go
│ │ │ │ │ ├── namedrulewithoperations.go
│ │ │ │ │ ├── paramkind.go
│ │ │ │ │ ├── paramref.go
│ │ │ │ │ ├── rule.go
│ │ │ │ │ ├── rulewithoperations.go
│ │ │ │ │ ├── servicereference.go
│ │ │ │ │ ├── typechecking.go
│ │ │ │ │ ├── validatingadmissionpolicy.go
│ │ │ │ │ ├── validatingadmissionpolicybinding.go
│ │ │ │ │ ├── validatingadmissionpolicybindingspec.go
│ │ │ │ │ ├── validatingadmissionpolicyspec.go
│ │ │ │ │ ├── validatingadmissionpolicystatus.go
│ │ │ │ │ ├── validatingwebhook.go
│ │ │ │ │ ├── validatingwebhookconfiguration.go
│ │ │ │ │ ├── validation.go
│ │ │ │ │ ├── variable.go
│ │ │ │ │ └── webhookclientconfig.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── applyconfiguration.go
│ │ │ │ │ ├── auditannotation.go
│ │ │ │ │ ├── expressionwarning.go
│ │ │ │ │ ├── jsonpatch.go
│ │ │ │ │ ├── matchcondition.go
│ │ │ │ │ ├── matchresources.go
│ │ │ │ │ ├── mutatingadmissionpolicy.go
│ │ │ │ │ ├── mutatingadmissionpolicybinding.go
│ │ │ │ │ ├── mutatingadmissionpolicybindingspec.go
│ │ │ │ │ ├── mutatingadmissionpolicyspec.go
│ │ │ │ │ ├── mutation.go
│ │ │ │ │ ├── namedrulewithoperations.go
│ │ │ │ │ ├── paramkind.go
│ │ │ │ │ ├── paramref.go
│ │ │ │ │ ├── typechecking.go
│ │ │ │ │ ├── validatingadmissionpolicy.go
│ │ │ │ │ ├── validatingadmissionpolicybinding.go
│ │ │ │ │ ├── validatingadmissionpolicybindingspec.go
│ │ │ │ │ ├── validatingadmissionpolicyspec.go
│ │ │ │ │ ├── validatingadmissionpolicystatus.go
│ │ │ │ │ ├── validation.go
│ │ │ │ │ └── variable.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── auditannotation.go
│ │ │ │ ├── expressionwarning.go
│ │ │ │ ├── matchcondition.go
│ │ │ │ ├── matchresources.go
│ │ │ │ ├── mutatingwebhook.go
│ │ │ │ ├── mutatingwebhookconfiguration.go
│ │ │ │ ├── namedrulewithoperations.go
│ │ │ │ ├── paramkind.go
│ │ │ │ ├── paramref.go
│ │ │ │ ├── servicereference.go
│ │ │ │ ├── typechecking.go
│ │ │ │ ├── validatingadmissionpolicy.go
│ │ │ │ ├── validatingadmissionpolicybinding.go
│ │ │ │ ├── validatingadmissionpolicybindingspec.go
│ │ │ │ ├── validatingadmissionpolicyspec.go
│ │ │ │ ├── validatingadmissionpolicystatus.go
│ │ │ │ ├── validatingwebhook.go
│ │ │ │ ├── validatingwebhookconfiguration.go
│ │ │ │ ├── validation.go
│ │ │ │ ├── variable.go
│ │ │ │ └── webhookclientconfig.go
│ │ │ ├── apiserverinternal/
│ │ │ │ └── v1alpha1/
│ │ │ │ ├── serverstorageversion.go
│ │ │ │ ├── storageversion.go
│ │ │ │ ├── storageversioncondition.go
│ │ │ │ └── storageversionstatus.go
│ │ │ ├── apps/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── controllerrevision.go
│ │ │ │ │ ├── daemonset.go
│ │ │ │ │ ├── daemonsetcondition.go
│ │ │ │ │ ├── daemonsetspec.go
│ │ │ │ │ ├── daemonsetstatus.go
│ │ │ │ │ ├── daemonsetupdatestrategy.go
│ │ │ │ │ ├── deployment.go
│ │ │ │ │ ├── deploymentcondition.go
│ │ │ │ │ ├── deploymentspec.go
│ │ │ │ │ ├── deploymentstatus.go
│ │ │ │ │ ├── deploymentstrategy.go
│ │ │ │ │ ├── replicaset.go
│ │ │ │ │ ├── replicasetcondition.go
│ │ │ │ │ ├── replicasetspec.go
│ │ │ │ │ ├── replicasetstatus.go
│ │ │ │ │ ├── rollingupdatedaemonset.go
│ │ │ │ │ ├── rollingupdatedeployment.go
│ │ │ │ │ ├── rollingupdatestatefulsetstrategy.go
│ │ │ │ │ ├── statefulset.go
│ │ │ │ │ ├── statefulsetcondition.go
│ │ │ │ │ ├── statefulsetordinals.go
│ │ │ │ │ ├── statefulsetpersistentvolumeclaimretentionpolicy.go
│ │ │ │ │ ├── statefulsetspec.go
│ │ │ │ │ ├── statefulsetstatus.go
│ │ │ │ │ └── statefulsetupdatestrategy.go
│ │ │ │ ├── v1beta1/
│ │ │ │ │ ├── controllerrevision.go
│ │ │ │ │ ├── deployment.go
│ │ │ │ │ ├── deploymentcondition.go
│ │ │ │ │ ├── deploymentspec.go
│ │ │ │ │ ├── deploymentstatus.go
│ │ │ │ │ ├── deploymentstrategy.go
│ │ │ │ │ ├── rollbackconfig.go
│ │ │ │ │ ├── rollingupdatedeployment.go
│ │ │ │ │ ├── rollingupdatestatefulsetstrategy.go
│ │ │ │ │ ├── statefulset.go
│ │ │ │ │ ├── statefulsetcondition.go
│ │ │ │ │ ├── statefulsetordinals.go
│ │ │ │ │ ├── statefulsetpersistentvolumeclaimretentionpolicy.go
│ │ │ │ │ ├── statefulsetspec.go
│ │ │ │ │ ├── statefulsetstatus.go
│ │ │ │ │ └── statefulsetupdatestrategy.go
│ │ │ │ └── v1beta2/
│ │ │ │ ├── controllerrevision.go
│ │ │ │ ├── daemonset.go
│ │ │ │ ├── daemonsetcondition.go
│ │ │ │ ├── daemonsetspec.go
│ │ │ │ ├── daemonsetstatus.go
│ │ │ │ ├── daemonsetupdatestrategy.go
│ │ │ │ ├── deployment.go
│ │ │ │ ├── deploymentcondition.go
│ │ │ │ ├── deploymentspec.go
│ │ │ │ ├── deploymentstatus.go
│ │ │ │ ├── deploymentstrategy.go
│ │ │ │ ├── replicaset.go
│ │ │ │ ├── replicasetcondition.go
│ │ │ │ ├── replicasetspec.go
│ │ │ │ ├── replicasetstatus.go
│ │ │ │ ├── rollingupdatedaemonset.go
│ │ │ │ ├── rollingupdatedeployment.go
│ │ │ │ ├── rollingupdatestatefulsetstrategy.go
│ │ │ │ ├── scale.go
│ │ │ │ ├── statefulset.go
│ │ │ │ ├── statefulsetcondition.go
│ │ │ │ ├── statefulsetordinals.go
│ │ │ │ ├── statefulsetpersistentvolumeclaimretentionpolicy.go
│ │ │ │ ├── statefulsetspec.go
│ │ │ │ ├── statefulsetstatus.go
│ │ │ │ └── statefulsetupdatestrategy.go
│ │ │ ├── autoscaling/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── crossversionobjectreference.go
│ │ │ │ │ ├── horizontalpodautoscaler.go
│ │ │ │ │ ├── horizontalpodautoscalerspec.go
│ │ │ │ │ ├── horizontalpodautoscalerstatus.go
│ │ │ │ │ ├── scale.go
│ │ │ │ │ ├── scalespec.go
│ │ │ │ │ └── scalestatus.go
│ │ │ │ ├── v2/
│ │ │ │ │ ├── containerresourcemetricsource.go
│ │ │ │ │ ├── containerresourcemetricstatus.go
│ │ │ │ │ ├── crossversionobjectreference.go
│ │ │ │ │ ├── externalmetricsource.go
│ │ │ │ │ ├── externalmetricstatus.go
│ │ │ │ │ ├── horizontalpodautoscaler.go
│ │ │ │ │ ├── horizontalpodautoscalerbehavior.go
│ │ │ │ │ ├── horizontalpodautoscalercondition.go
│ │ │ │ │ ├── horizontalpodautoscalerspec.go
│ │ │ │ │ ├── horizontalpodautoscalerstatus.go
│ │ │ │ │ ├── hpascalingpolicy.go
│ │ │ │ │ ├── hpascalingrules.go
│ │ │ │ │ ├── metricidentifier.go
│ │ │ │ │ ├── metricspec.go
│ │ │ │ │ ├── metricstatus.go
│ │ │ │ │ ├── metrictarget.go
│ │ │ │ │ ├── metricvaluestatus.go
│ │ │ │ │ ├── objectmetricsource.go
│ │ │ │ │ ├── objectmetricstatus.go
│ │ │ │ │ ├── podsmetricsource.go
│ │ │ │ │ ├── podsmetricstatus.go
│ │ │ │ │ ├── resourcemetricsource.go
│ │ │ │ │ └── resourcemetricstatus.go
│ │ │ │ ├── v2beta1/
│ │ │ │ │ ├── containerresourcemetricsource.go
│ │ │ │ │ ├── containerresourcemetricstatus.go
│ │ │ │ │ ├── crossversionobjectreference.go
│ │ │ │ │ ├── externalmetricsource.go
│ │ │ │ │ ├── externalmetricstatus.go
│ │ │ │ │ ├── horizontalpodautoscaler.go
│ │ │ │ │ ├── horizontalpodautoscalercondition.go
│ │ │ │ │ ├── horizontalpodautoscalerspec.go
│ │ │ │ │ ├── horizontalpodautoscalerstatus.go
│ │ │ │ │ ├── metricspec.go
│ │ │ │ │ ├── metricstatus.go
│ │ │ │ │ ├── objectmetricsource.go
│ │ │ │ │ ├── objectmetricstatus.go
│ │ │ │ │ ├── podsmetricsource.go
│ │ │ │ │ ├── podsmetricstatus.go
│ │ │ │ │ ├── resourcemetricsource.go
│ │ │ │ │ └── resourcemetricstatus.go
│ │ │ │ └── v2beta2/
│ │ │ │ ├── containerresourcemetricsource.go
│ │ │ │ ├── containerresourcemetricstatus.go
│ │ │ │ ├── crossversionobjectreference.go
│ │ │ │ ├── externalmetricsource.go
│ │ │ │ ├── externalmetricstatus.go
│ │ │ │ ├── horizontalpodautoscaler.go
│ │ │ │ ├── horizontalpodautoscalerbehavior.go
│ │ │ │ ├── horizontalpodautoscalercondition.go
│ │ │ │ ├── horizontalpodautoscalerspec.go
│ │ │ │ ├── horizontalpodautoscalerstatus.go
│ │ │ │ ├── hpascalingpolicy.go
│ │ │ │ ├── hpascalingrules.go
│ │ │ │ ├── metricidentifier.go
│ │ │ │ ├── metricspec.go
│ │ │ │ ├── metricstatus.go
│ │ │ │ ├── metrictarget.go
│ │ │ │ ├── metricvaluestatus.go
│ │ │ │ ├── objectmetricsource.go
│ │ │ │ ├── objectmetricstatus.go
│ │ │ │ ├── podsmetricsource.go
│ │ │ │ ├── podsmetricstatus.go
│ │ │ │ ├── resourcemetricsource.go
│ │ │ │ └── resourcemetricstatus.go
│ │ │ ├── batch/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── cronjob.go
│ │ │ │ │ ├── cronjobspec.go
│ │ │ │ │ ├── cronjobstatus.go
│ │ │ │ │ ├── job.go
│ │ │ │ │ ├── jobcondition.go
│ │ │ │ │ ├── jobspec.go
│ │ │ │ │ ├── jobstatus.go
│ │ │ │ │ ├── jobtemplatespec.go
│ │ │ │ │ ├── podfailurepolicy.go
│ │ │ │ │ ├── podfailurepolicyonexitcodesrequirement.go
│ │ │ │ │ ├── podfailurepolicyonpodconditionspattern.go
│ │ │ │ │ ├── podfailurepolicyrule.go
│ │ │ │ │ ├── successpolicy.go
│ │ │ │ │ ├── successpolicyrule.go
│ │ │ │ │ └── uncountedterminatedpods.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── cronjob.go
│ │ │ │ ├── cronjobspec.go
│ │ │ │ ├── cronjobstatus.go
│ │ │ │ └── jobtemplatespec.go
│ │ │ ├── certificates/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── certificatesigningrequest.go
│ │ │ │ │ ├── certificatesigningrequestcondition.go
│ │ │ │ │ ├── certificatesigningrequestspec.go
│ │ │ │ │ └── certificatesigningrequeststatus.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── clustertrustbundle.go
│ │ │ │ │ └── clustertrustbundlespec.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── certificatesigningrequest.go
│ │ │ │ ├── certificatesigningrequestcondition.go
│ │ │ │ ├── certificatesigningrequestspec.go
│ │ │ │ └── certificatesigningrequeststatus.go
│ │ │ ├── coordination/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── lease.go
│ │ │ │ │ └── leasespec.go
│ │ │ │ ├── v1alpha2/
│ │ │ │ │ ├── leasecandidate.go
│ │ │ │ │ └── leasecandidatespec.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── lease.go
│ │ │ │ └── leasespec.go
│ │ │ ├── core/
│ │ │ │ └── v1/
│ │ │ │ ├── affinity.go
│ │ │ │ ├── apparmorprofile.go
│ │ │ │ ├── attachedvolume.go
│ │ │ │ ├── awselasticblockstorevolumesource.go
│ │ │ │ ├── azurediskvolumesource.go
│ │ │ │ ├── azurefilepersistentvolumesource.go
│ │ │ │ ├── azurefilevolumesource.go
│ │ │ │ ├── capabilities.go
│ │ │ │ ├── cephfspersistentvolumesource.go
│ │ │ │ ├── cephfsvolumesource.go
│ │ │ │ ├── cinderpersistentvolumesource.go
│ │ │ │ ├── cindervolumesource.go
│ │ │ │ ├── clientipconfig.go
│ │ │ │ ├── clustertrustbundleprojection.go
│ │ │ │ ├── componentcondition.go
│ │ │ │ ├── componentstatus.go
│ │ │ │ ├── configmap.go
│ │ │ │ ├── configmapenvsource.go
│ │ │ │ ├── configmapkeyselector.go
│ │ │ │ ├── configmapnodeconfigsource.go
│ │ │ │ ├── configmapprojection.go
│ │ │ │ ├── configmapvolumesource.go
│ │ │ │ ├── container.go
│ │ │ │ ├── containerimage.go
│ │ │ │ ├── containerport.go
│ │ │ │ ├── containerresizepolicy.go
│ │ │ │ ├── containerstate.go
│ │ │ │ ├── containerstaterunning.go
│ │ │ │ ├── containerstateterminated.go
│ │ │ │ ├── containerstatewaiting.go
│ │ │ │ ├── containerstatus.go
│ │ │ │ ├── containeruser.go
│ │ │ │ ├── csipersistentvolumesource.go
│ │ │ │ ├── csivolumesource.go
│ │ │ │ ├── daemonendpoint.go
│ │ │ │ ├── downwardapiprojection.go
│ │ │ │ ├── downwardapivolumefile.go
│ │ │ │ ├── downwardapivolumesource.go
│ │ │ │ ├── emptydirvolumesource.go
│ │ │ │ ├── endpointaddress.go
│ │ │ │ ├── endpointport.go
│ │ │ │ ├── endpoints.go
│ │ │ │ ├── endpointsubset.go
│ │ │ │ ├── envfromsource.go
│ │ │ │ ├── envvar.go
│ │ │ │ ├── envvarsource.go
│ │ │ │ ├── ephemeralcontainer.go
│ │ │ │ ├── ephemeralcontainercommon.go
│ │ │ │ ├── ephemeralvolumesource.go
│ │ │ │ ├── event.go
│ │ │ │ ├── eventseries.go
│ │ │ │ ├── eventsource.go
│ │ │ │ ├── execaction.go
│ │ │ │ ├── fcvolumesource.go
│ │ │ │ ├── flexpersistentvolumesource.go
│ │ │ │ ├── flexvolumesource.go
│ │ │ │ ├── flockervolumesource.go
│ │ │ │ ├── gcepersistentdiskvolumesource.go
│ │ │ │ ├── gitrepovolumesource.go
│ │ │ │ ├── glusterfspersistentvolumesource.go
│ │ │ │ ├── glusterfsvolumesource.go
│ │ │ │ ├── grpcaction.go
│ │ │ │ ├── hostalias.go
│ │ │ │ ├── hostip.go
│ │ │ │ ├── hostpathvolumesource.go
│ │ │ │ ├── httpgetaction.go
│ │ │ │ ├── httpheader.go
│ │ │ │ ├── imagevolumesource.go
│ │ │ │ ├── iscsipersistentvolumesource.go
│ │ │ │ ├── iscsivolumesource.go
│ │ │ │ ├── keytopath.go
│ │ │ │ ├── lifecycle.go
│ │ │ │ ├── lifecyclehandler.go
│ │ │ │ ├── limitrange.go
│ │ │ │ ├── limitrangeitem.go
│ │ │ │ ├── limitrangespec.go
│ │ │ │ ├── linuxcontaineruser.go
│ │ │ │ ├── loadbalanceringress.go
│ │ │ │ ├── loadbalancerstatus.go
│ │ │ │ ├── localobjectreference.go
│ │ │ │ ├── localvolumesource.go
│ │ │ │ ├── modifyvolumestatus.go
│ │ │ │ ├── namespace.go
│ │ │ │ ├── namespacecondition.go
│ │ │ │ ├── namespacespec.go
│ │ │ │ ├── namespacestatus.go
│ │ │ │ ├── nfsvolumesource.go
│ │ │ │ ├── node.go
│ │ │ │ ├── nodeaddress.go
│ │ │ │ ├── nodeaffinity.go
│ │ │ │ ├── nodecondition.go
│ │ │ │ ├── nodeconfigsource.go
│ │ │ │ ├── nodeconfigstatus.go
│ │ │ │ ├── nodedaemonendpoints.go
│ │ │ │ ├── nodefeatures.go
│ │ │ │ ├── noderuntimehandler.go
│ │ │ │ ├── noderuntimehandlerfeatures.go
│ │ │ │ ├── nodeselector.go
│ │ │ │ ├── nodeselectorrequirement.go
│ │ │ │ ├── nodeselectorterm.go
│ │ │ │ ├── nodespec.go
│ │ │ │ ├── nodestatus.go
│ │ │ │ ├── nodesysteminfo.go
│ │ │ │ ├── objectfieldselector.go
│ │ │ │ ├── objectreference.go
│ │ │ │ ├── persistentvolume.go
│ │ │ │ ├── persistentvolumeclaim.go
│ │ │ │ ├── persistentvolumeclaimcondition.go
│ │ │ │ ├── persistentvolumeclaimspec.go
│ │ │ │ ├── persistentvolumeclaimstatus.go
│ │ │ │ ├── persistentvolumeclaimtemplate.go
│ │ │ │ ├── persistentvolumeclaimvolumesource.go
│ │ │ │ ├── persistentvolumesource.go
│ │ │ │ ├── persistentvolumespec.go
│ │ │ │ ├── persistentvolumestatus.go
│ │ │ │ ├── photonpersistentdiskvolumesource.go
│ │ │ │ ├── pod.go
│ │ │ │ ├── podaffinity.go
│ │ │ │ ├── podaffinityterm.go
│ │ │ │ ├── podantiaffinity.go
│ │ │ │ ├── podcondition.go
│ │ │ │ ├── poddnsconfig.go
│ │ │ │ ├── poddnsconfigoption.go
│ │ │ │ ├── podip.go
│ │ │ │ ├── podos.go
│ │ │ │ ├── podreadinessgate.go
│ │ │ │ ├── podresourceclaim.go
│ │ │ │ ├── podresourceclaimstatus.go
│ │ │ │ ├── podschedulinggate.go
│ │ │ │ ├── podsecuritycontext.go
│ │ │ │ ├── podspec.go
│ │ │ │ ├── podstatus.go
│ │ │ │ ├── podtemplate.go
│ │ │ │ ├── podtemplatespec.go
│ │ │ │ ├── portstatus.go
│ │ │ │ ├── portworxvolumesource.go
│ │ │ │ ├── preferredschedulingterm.go
│ │ │ │ ├── probe.go
│ │ │ │ ├── probehandler.go
│ │ │ │ ├── projectedvolumesource.go
│ │ │ │ ├── quobytevolumesource.go
│ │ │ │ ├── rbdpersistentvolumesource.go
│ │ │ │ ├── rbdvolumesource.go
│ │ │ │ ├── replicationcontroller.go
│ │ │ │ ├── replicationcontrollercondition.go
│ │ │ │ ├── replicationcontrollerspec.go
│ │ │ │ ├── replicationcontrollerstatus.go
│ │ │ │ ├── resourceclaim.go
│ │ │ │ ├── resourcefieldselector.go
│ │ │ │ ├── resourcehealth.go
│ │ │ │ ├── resourcequota.go
│ │ │ │ ├── resourcequotaspec.go
│ │ │ │ ├── resourcequotastatus.go
│ │ │ │ ├── resourcerequirements.go
│ │ │ │ ├── resourcestatus.go
│ │ │ │ ├── scaleiopersistentvolumesource.go
│ │ │ │ ├── scaleiovolumesource.go
│ │ │ │ ├── scopedresourceselectorrequirement.go
│ │ │ │ ├── scopeselector.go
│ │ │ │ ├── seccompprofile.go
│ │ │ │ ├── secret.go
│ │ │ │ ├── secretenvsource.go
│ │ │ │ ├── secretkeyselector.go
│ │ │ │ ├── secretprojection.go
│ │ │ │ ├── secretreference.go
│ │ │ │ ├── secretvolumesource.go
│ │ │ │ ├── securitycontext.go
│ │ │ │ ├── selinuxoptions.go
│ │ │ │ ├── service.go
│ │ │ │ ├── serviceaccount.go
│ │ │ │ ├── serviceaccounttokenprojection.go
│ │ │ │ ├── serviceport.go
│ │ │ │ ├── servicespec.go
│ │ │ │ ├── servicestatus.go
│ │ │ │ ├── sessionaffinityconfig.go
│ │ │ │ ├── sleepaction.go
│ │ │ │ ├── storageospersistentvolumesource.go
│ │ │ │ ├── storageosvolumesource.go
│ │ │ │ ├── sysctl.go
│ │ │ │ ├── taint.go
│ │ │ │ ├── tcpsocketaction.go
│ │ │ │ ├── toleration.go
│ │ │ │ ├── topologyselectorlabelrequirement.go
│ │ │ │ ├── topologyselectorterm.go
│ │ │ │ ├── topologyspreadconstraint.go
│ │ │ │ ├── typedlocalobjectreference.go
│ │ │ │ ├── typedobjectreference.go
│ │ │ │ ├── volume.go
│ │ │ │ ├── volumedevice.go
│ │ │ │ ├── volumemount.go
│ │ │ │ ├── volumemountstatus.go
│ │ │ │ ├── volumenodeaffinity.go
│ │ │ │ ├── volumeprojection.go
│ │ │ │ ├── volumeresourcerequirements.go
│ │ │ │ ├── volumesource.go
│ │ │ │ ├── vspherevirtualdiskvolumesource.go
│ │ │ │ ├── weightedpodaffinityterm.go
│ │ │ │ └── windowssecuritycontextoptions.go
│ │ │ ├── discovery/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── endpoint.go
│ │ │ │ │ ├── endpointconditions.go
│ │ │ │ │ ├── endpointhints.go
│ │ │ │ │ ├── endpointport.go
│ │ │ │ │ ├── endpointslice.go
│ │ │ │ │ └── forzone.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── endpoint.go
│ │ │ │ ├── endpointconditions.go
│ │ │ │ ├── endpointhints.go
│ │ │ │ ├── endpointport.go
│ │ │ │ ├── endpointslice.go
│ │ │ │ └── forzone.go
│ │ │ ├── doc.go
│ │ │ ├── events/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── event.go
│ │ │ │ │ └── eventseries.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── event.go
│ │ │ │ └── eventseries.go
│ │ │ ├── extensions/
│ │ │ │ └── v1beta1/
│ │ │ │ ├── daemonset.go
│ │ │ │ ├── daemonsetcondition.go
│ │ │ │ ├── daemonsetspec.go
│ │ │ │ ├── daemonsetstatus.go
│ │ │ │ ├── daemonsetupdatestrategy.go
│ │ │ │ ├── deployment.go
│ │ │ │ ├── deploymentcondition.go
│ │ │ │ ├── deploymentspec.go
│ │ │ │ ├── deploymentstatus.go
│ │ │ │ ├── deploymentstrategy.go
│ │ │ │ ├── httpingresspath.go
│ │ │ │ ├── httpingressrulevalue.go
│ │ │ │ ├── ingress.go
│ │ │ │ ├── ingressbackend.go
│ │ │ │ ├── ingressloadbalanceringress.go
│ │ │ │ ├── ingressloadbalancerstatus.go
│ │ │ │ ├── ingressportstatus.go
│ │ │ │ ├── ingressrule.go
│ │ │ │ ├── ingressrulevalue.go
│ │ │ │ ├── ingressspec.go
│ │ │ │ ├── ingressstatus.go
│ │ │ │ ├── ingresstls.go
│ │ │ │ ├── ipblock.go
│ │ │ │ ├── networkpolicy.go
│ │ │ │ ├── networkpolicyegressrule.go
│ │ │ │ ├── networkpolicyingressrule.go
│ │ │ │ ├── networkpolicypeer.go
│ │ │ │ ├── networkpolicyport.go
│ │ │ │ ├── networkpolicyspec.go
│ │ │ │ ├── replicaset.go
│ │ │ │ ├── replicasetcondition.go
│ │ │ │ ├── replicasetspec.go
│ │ │ │ ├── replicasetstatus.go
│ │ │ │ ├── rollbackconfig.go
│ │ │ │ ├── rollingupdatedaemonset.go
│ │ │ │ ├── rollingupdatedeployment.go
│ │ │ │ └── scale.go
│ │ │ ├── flowcontrol/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── exemptprioritylevelconfiguration.go
│ │ │ │ │ ├── flowdistinguishermethod.go
│ │ │ │ │ ├── flowschema.go
│ │ │ │ │ ├── flowschemacondition.go
│ │ │ │ │ ├── flowschemaspec.go
│ │ │ │ │ ├── flowschemastatus.go
│ │ │ │ │ ├── groupsubject.go
│ │ │ │ │ ├── limitedprioritylevelconfiguration.go
│ │ │ │ │ ├── limitresponse.go
│ │ │ │ │ ├── nonresourcepolicyrule.go
│ │ │ │ │ ├── policyruleswithsubjects.go
│ │ │ │ │ ├── prioritylevelconfiguration.go
│ │ │ │ │ ├── prioritylevelconfigurationcondition.go
│ │ │ │ │ ├── prioritylevelconfigurationreference.go
│ │ │ │ │ ├── prioritylevelconfigurationspec.go
│ │ │ │ │ ├── prioritylevelconfigurationstatus.go
│ │ │ │ │ ├── queuingconfiguration.go
│ │ │ │ │ ├── resourcepolicyrule.go
│ │ │ │ │ ├── serviceaccountsubject.go
│ │ │ │ │ ├── subject.go
│ │ │ │ │ └── usersubject.go
│ │ │ │ ├── v1beta1/
│ │ │ │ │ ├── exemptprioritylevelconfiguration.go
│ │ │ │ │ ├── flowdistinguishermethod.go
│ │ │ │ │ ├── flowschema.go
│ │ │ │ │ ├── flowschemacondition.go
│ │ │ │ │ ├── flowschemaspec.go
│ │ │ │ │ ├── flowschemastatus.go
│ │ │ │ │ ├── groupsubject.go
│ │ │ │ │ ├── limitedprioritylevelconfiguration.go
│ │ │ │ │ ├── limitresponse.go
│ │ │ │ │ ├── nonresourcepolicyrule.go
│ │ │ │ │ ├── policyruleswithsubjects.go
│ │ │ │ │ ├── prioritylevelconfiguration.go
│ │ │ │ │ ├── prioritylevelconfigurationcondition.go
│ │ │ │ │ ├── prioritylevelconfigurationreference.go
│ │ │ │ │ ├── prioritylevelconfigurationspec.go
│ │ │ │ │ ├── prioritylevelconfigurationstatus.go
│ │ │ │ │ ├── queuingconfiguration.go
│ │ │ │ │ ├── resourcepolicyrule.go
│ │ │ │ │ ├── serviceaccountsubject.go
│ │ │ │ │ ├── subject.go
│ │ │ │ │ └── usersubject.go
│ │ │ │ ├── v1beta2/
│ │ │ │ │ ├── exemptprioritylevelconfiguration.go
│ │ │ │ │ ├── flowdistinguishermethod.go
│ │ │ │ │ ├── flowschema.go
│ │ │ │ │ ├── flowschemacondition.go
│ │ │ │ │ ├── flowschemaspec.go
│ │ │ │ │ ├── flowschemastatus.go
│ │ │ │ │ ├── groupsubject.go
│ │ │ │ │ ├── limitedprioritylevelconfiguration.go
│ │ │ │ │ ├── limitresponse.go
│ │ │ │ │ ├── nonresourcepolicyrule.go
│ │ │ │ │ ├── policyruleswithsubjects.go
│ │ │ │ │ ├── prioritylevelconfiguration.go
│ │ │ │ │ ├── prioritylevelconfigurationcondition.go
│ │ │ │ │ ├── prioritylevelconfigurationreference.go
│ │ │ │ │ ├── prioritylevelconfigurationspec.go
│ │ │ │ │ ├── prioritylevelconfigurationstatus.go
│ │ │ │ │ ├── queuingconfiguration.go
│ │ │ │ │ ├── resourcepolicyrule.go
│ │ │ │ │ ├── serviceaccountsubject.go
│ │ │ │ │ ├── subject.go
│ │ │ │ │ └── usersubject.go
│ │ │ │ └── v1beta3/
│ │ │ │ ├── exemptprioritylevelconfiguration.go
│ │ │ │ ├── flowdistinguishermethod.go
│ │ │ │ ├── flowschema.go
│ │ │ │ ├── flowschemacondition.go
│ │ │ │ ├── flowschemaspec.go
│ │ │ │ ├── flowschemastatus.go
│ │ │ │ ├── groupsubject.go
│ │ │ │ ├── limitedprioritylevelconfiguration.go
│ │ │ │ ├── limitresponse.go
│ │ │ │ ├── nonresourcepolicyrule.go
│ │ │ │ ├── policyruleswithsubjects.go
│ │ │ │ ├── prioritylevelconfiguration.go
│ │ │ │ ├── prioritylevelconfigurationcondition.go
│ │ │ │ ├── prioritylevelconfigurationreference.go
│ │ │ │ ├── prioritylevelconfigurationspec.go
│ │ │ │ ├── prioritylevelconfigurationstatus.go
│ │ │ │ ├── queuingconfiguration.go
│ │ │ │ ├── resourcepolicyrule.go
│ │ │ │ ├── serviceaccountsubject.go
│ │ │ │ ├── subject.go
│ │ │ │ └── usersubject.go
│ │ │ ├── imagepolicy/
│ │ │ │ └── v1alpha1/
│ │ │ │ ├── imagereview.go
│ │ │ │ ├── imagereviewcontainerspec.go
│ │ │ │ ├── imagereviewspec.go
│ │ │ │ └── imagereviewstatus.go
│ │ │ ├── internal/
│ │ │ │ └── internal.go
│ │ │ ├── meta/
│ │ │ │ └── v1/
│ │ │ │ ├── condition.go
│ │ │ │ ├── deleteoptions.go
│ │ │ │ ├── labelselector.go
│ │ │ │ ├── labelselectorrequirement.go
│ │ │ │ ├── managedfieldsentry.go
│ │ │ │ ├── objectmeta.go
│ │ │ │ ├── ownerreference.go
│ │ │ │ ├── preconditions.go
│ │ │ │ ├── typemeta.go
│ │ │ │ └── unstructured.go
│ │ │ ├── networking/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── httpingresspath.go
│ │ │ │ │ ├── httpingressrulevalue.go
│ │ │ │ │ ├── ingress.go
│ │ │ │ │ ├── ingressbackend.go
│ │ │ │ │ ├── ingressclass.go
│ │ │ │ │ ├── ingressclassparametersreference.go
│ │ │ │ │ ├── ingressclassspec.go
│ │ │ │ │ ├── ingressloadbalanceringress.go
│ │ │ │ │ ├── ingressloadbalancerstatus.go
│ │ │ │ │ ├── ingressportstatus.go
│ │ │ │ │ ├── ingressrule.go
│ │ │ │ │ ├── ingressrulevalue.go
│ │ │ │ │ ├── ingressservicebackend.go
│ │ │ │ │ ├── ingressspec.go
│ │ │ │ │ ├── ingressstatus.go
│ │ │ │ │ ├── ingresstls.go
│ │ │ │ │ ├── ipblock.go
│ │ │ │ │ ├── networkpolicy.go
│ │ │ │ │ ├── networkpolicyegressrule.go
│ │ │ │ │ ├── networkpolicyingressrule.go
│ │ │ │ │ ├── networkpolicypeer.go
│ │ │ │ │ ├── networkpolicyport.go
│ │ │ │ │ ├── networkpolicyspec.go
│ │ │ │ │ └── servicebackendport.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── ipaddress.go
│ │ │ │ │ ├── ipaddressspec.go
│ │ │ │ │ ├── parentreference.go
│ │ │ │ │ ├── servicecidr.go
│ │ │ │ │ ├── servicecidrspec.go
│ │ │ │ │ └── servicecidrstatus.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── httpingresspath.go
│ │ │ │ ├── httpingressrulevalue.go
│ │ │ │ ├── ingress.go
│ │ │ │ ├── ingressbackend.go
│ │ │ │ ├── ingressclass.go
│ │ │ │ ├── ingressclassparametersreference.go
│ │ │ │ ├── ingressclassspec.go
│ │ │ │ ├── ingressloadbalanceringress.go
│ │ │ │ ├── ingressloadbalancerstatus.go
│ │ │ │ ├── ingressportstatus.go
│ │ │ │ ├── ingressrule.go
│ │ │ │ ├── ingressrulevalue.go
│ │ │ │ ├── ingressspec.go
│ │ │ │ ├── ingressstatus.go
│ │ │ │ ├── ingresstls.go
│ │ │ │ ├── ipaddress.go
│ │ │ │ ├── ipaddressspec.go
│ │ │ │ ├── parentreference.go
│ │ │ │ ├── servicecidr.go
│ │ │ │ ├── servicecidrspec.go
│ │ │ │ └── servicecidrstatus.go
│ │ │ ├── node/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── overhead.go
│ │ │ │ │ ├── runtimeclass.go
│ │ │ │ │ └── scheduling.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── overhead.go
│ │ │ │ │ ├── runtimeclass.go
│ │ │ │ │ ├── runtimeclassspec.go
│ │ │ │ │ └── scheduling.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── overhead.go
│ │ │ │ ├── runtimeclass.go
│ │ │ │ └── scheduling.go
│ │ │ ├── policy/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── eviction.go
│ │ │ │ │ ├── poddisruptionbudget.go
│ │ │ │ │ ├── poddisruptionbudgetspec.go
│ │ │ │ │ └── poddisruptionbudgetstatus.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── eviction.go
│ │ │ │ ├── poddisruptionbudget.go
│ │ │ │ ├── poddisruptionbudgetspec.go
│ │ │ │ └── poddisruptionbudgetstatus.go
│ │ │ ├── rbac/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── aggregationrule.go
│ │ │ │ │ ├── clusterrole.go
│ │ │ │ │ ├── clusterrolebinding.go
│ │ │ │ │ ├── policyrule.go
│ │ │ │ │ ├── role.go
│ │ │ │ │ ├── rolebinding.go
│ │ │ │ │ ├── roleref.go
│ │ │ │ │ └── subject.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── aggregationrule.go
│ │ │ │ │ ├── clusterrole.go
│ │ │ │ │ ├── clusterrolebinding.go
│ │ │ │ │ ├── policyrule.go
│ │ │ │ │ ├── role.go
│ │ │ │ │ ├── rolebinding.go
│ │ │ │ │ ├── roleref.go
│ │ │ │ │ └── subject.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── aggregationrule.go
│ │ │ │ ├── clusterrole.go
│ │ │ │ ├── clusterrolebinding.go
│ │ │ │ ├── policyrule.go
│ │ │ │ ├── role.go
│ │ │ │ ├── rolebinding.go
│ │ │ │ ├── roleref.go
│ │ │ │ └── subject.go
│ │ │ ├── resource/
│ │ │ │ ├── v1alpha3/
│ │ │ │ │ ├── allocateddevicestatus.go
│ │ │ │ │ ├── allocationresult.go
│ │ │ │ │ ├── basicdevice.go
│ │ │ │ │ ├── celdeviceselector.go
│ │ │ │ │ ├── device.go
│ │ │ │ │ ├── deviceallocationconfiguration.go
│ │ │ │ │ ├── deviceallocationresult.go
│ │ │ │ │ ├── deviceattribute.go
│ │ │ │ │ ├── deviceclaim.go
│ │ │ │ │ ├── deviceclaimconfiguration.go
│ │ │ │ │ ├── deviceclass.go
│ │ │ │ │ ├── deviceclassconfiguration.go
│ │ │ │ │ ├── deviceclassspec.go
│ │ │ │ │ ├── deviceconfiguration.go
│ │ │ │ │ ├── deviceconstraint.go
│ │ │ │ │ ├── devicerequest.go
│ │ │ │ │ ├── devicerequestallocationresult.go
│ │ │ │ │ ├── deviceselector.go
│ │ │ │ │ ├── networkdevicedata.go
│ │ │ │ │ ├── opaquedeviceconfiguration.go
│ │ │ │ │ ├── resourceclaim.go
│ │ │ │ │ ├── resourceclaimconsumerreference.go
│ │ │ │ │ ├── resourceclaimspec.go
│ │ │ │ │ ├── resourceclaimstatus.go
│ │ │ │ │ ├── resourceclaimtemplate.go
│ │ │ │ │ ├── resourceclaimtemplatespec.go
│ │ │ │ │ ├── resourcepool.go
│ │ │ │ │ ├── resourceslice.go
│ │ │ │ │ └── resourceslicespec.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── allocateddevicestatus.go
│ │ │ │ ├── allocationresult.go
│ │ │ │ ├── basicdevice.go
│ │ │ │ ├── celdeviceselector.go
│ │ │ │ ├── device.go
│ │ │ │ ├── deviceallocationconfiguration.go
│ │ │ │ ├── deviceallocationresult.go
│ │ │ │ ├── deviceattribute.go
│ │ │ │ ├── devicecapacity.go
│ │ │ │ ├── deviceclaim.go
│ │ │ │ ├── deviceclaimconfiguration.go
│ │ │ │ ├── deviceclass.go
│ │ │ │ ├── deviceclassconfiguration.go
│ │ │ │ ├── deviceclassspec.go
│ │ │ │ ├── deviceconfiguration.go
│ │ │ │ ├── deviceconstraint.go
│ │ │ │ ├── devicerequest.go
│ │ │ │ ├── devicerequestallocationresult.go
│ │ │ │ ├── deviceselector.go
│ │ │ │ ├── networkdevicedata.go
│ │ │ │ ├── opaquedeviceconfiguration.go
│ │ │ │ ├── resourceclaim.go
│ │ │ │ ├── resourceclaimconsumerreference.go
│ │ │ │ ├── resourceclaimspec.go
│ │ │ │ ├── resourceclaimstatus.go
│ │ │ │ ├── resourceclaimtemplate.go
│ │ │ │ ├── resourceclaimtemplatespec.go
│ │ │ │ ├── resourcepool.go
│ │ │ │ ├── resourceslice.go
│ │ │ │ └── resourceslicespec.go
│ │ │ ├── scheduling/
│ │ │ │ ├── v1/
│ │ │ │ │ └── priorityclass.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ └── priorityclass.go
│ │ │ │ └── v1beta1/
│ │ │ │ └── priorityclass.go
│ │ │ ├── storage/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── csidriver.go
│ │ │ │ │ ├── csidriverspec.go
│ │ │ │ │ ├── csinode.go
│ │ │ │ │ ├── csinodedriver.go
│ │ │ │ │ ├── csinodespec.go
│ │ │ │ │ ├── csistoragecapacity.go
│ │ │ │ │ ├── storageclass.go
│ │ │ │ │ ├── tokenrequest.go
│ │ │ │ │ ├── volumeattachment.go
│ │ │ │ │ ├── volumeattachmentsource.go
│ │ │ │ │ ├── volumeattachmentspec.go
│ │ │ │ │ ├── volumeattachmentstatus.go
│ │ │ │ │ ├── volumeerror.go
│ │ │ │ │ └── volumenoderesources.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── csistoragecapacity.go
│ │ │ │ │ ├── volumeattachment.go
│ │ │ │ │ ├── volumeattachmentsource.go
│ │ │ │ │ ├── volumeattachmentspec.go
│ │ │ │ │ ├── volumeattachmentstatus.go
│ │ │ │ │ ├── volumeattributesclass.go
│ │ │ │ │ └── volumeerror.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── csidriver.go
│ │ │ │ ├── csidriverspec.go
│ │ │ │ ├── csinode.go
│ │ │ │ ├── csinodedriver.go
│ │ │ │ ├── csinodespec.go
│ │ │ │ ├── csistoragecapacity.go
│ │ │ │ ├── storageclass.go
│ │ │ │ ├── tokenrequest.go
│ │ │ │ ├── volumeattachment.go
│ │ │ │ ├── volumeattachmentsource.go
│ │ │ │ ├── volumeattachmentspec.go
│ │ │ │ ├── volumeattachmentstatus.go
│ │ │ │ ├── volumeattributesclass.go
│ │ │ │ ├── volumeerror.go
│ │ │ │ └── volumenoderesources.go
│ │ │ ├── storagemigration/
│ │ │ │ └── v1alpha1/
│ │ │ │ ├── groupversionresource.go
│ │ │ │ ├── migrationcondition.go
│ │ │ │ ├── storageversionmigration.go
│ │ │ │ ├── storageversionmigrationspec.go
│ │ │ │ └── storageversionmigrationstatus.go
│ │ │ └── utils.go
│ │ ├── discovery/
│ │ │ ├── aggregated_discovery.go
│ │ │ ├── discovery_client.go
│ │ │ ├── doc.go
│ │ │ ├── fake/
│ │ │ │ └── discovery.go
│ │ │ └── helper.go
│ │ ├── features/
│ │ │ ├── envvar.go
│ │ │ ├── features.go
│ │ │ └── known_features.go
│ │ ├── gentype/
│ │ │ ├── fake.go
│ │ │ └── type.go
│ │ ├── informers/
│ │ │ ├── admissionregistration/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── interface.go
│ │ │ │ │ ├── mutatingwebhookconfiguration.go
│ │ │ │ │ ├── validatingadmissionpolicy.go
│ │ │ │ │ ├── validatingadmissionpolicybinding.go
│ │ │ │ │ └── validatingwebhookconfiguration.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── interface.go
│ │ │ │ │ ├── mutatingadmissionpolicy.go
│ │ │ │ │ ├── mutatingadmissionpolicybinding.go
│ │ │ │ │ ├── validatingadmissionpolicy.go
│ │ │ │ │ └── validatingadmissionpolicybinding.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── interface.go
│ │ │ │ ├── mutatingwebhookconfiguration.go
│ │ │ │ ├── validatingadmissionpolicy.go
│ │ │ │ ├── validatingadmissionpolicybinding.go
│ │ │ │ └── validatingwebhookconfiguration.go
│ │ │ ├── apiserverinternal/
│ │ │ │ ├── interface.go
│ │ │ │ └── v1alpha1/
│ │ │ │ ├── interface.go
│ │ │ │ └── storageversion.go
│ │ │ ├── apps/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── controllerrevision.go
│ │ │ │ │ ├── daemonset.go
│ │ │ │ │ ├── deployment.go
│ │ │ │ │ ├── interface.go
│ │ │ │ │ ├── replicaset.go
│ │ │ │ │ └── statefulset.go
│ │ │ │ ├── v1beta1/
│ │ │ │ │ ├── controllerrevision.go
│ │ │ │ │ ├── deployment.go
│ │ │ │ │ ├── interface.go
│ │ │ │ │ └── statefulset.go
│ │ │ │ └── v1beta2/
│ │ │ │ ├── controllerrevision.go
│ │ │ │ ├── daemonset.go
│ │ │ │ ├── deployment.go
│ │ │ │ ├── interface.go
│ │ │ │ ├── replicaset.go
│ │ │ │ └── statefulset.go
│ │ │ ├── autoscaling/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── horizontalpodautoscaler.go
│ │ │ │ │ └── interface.go
│ │ │ │ ├── v2/
│ │ │ │ │ ├── horizontalpodautoscaler.go
│ │ │ │ │ └── interface.go
│ │ │ │ ├── v2beta1/
│ │ │ │ │ ├── horizontalpodautoscaler.go
│ │ │ │ │ └── interface.go
│ │ │ │ └── v2beta2/
│ │ │ │ ├── horizontalpodautoscaler.go
│ │ │ │ └── interface.go
│ │ │ ├── batch/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── cronjob.go
│ │ │ │ │ ├── interface.go
│ │ │ │ │ └── job.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── cronjob.go
│ │ │ │ └── interface.go
│ │ │ ├── certificates/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── certificatesigningrequest.go
│ │ │ │ │ └── interface.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── clustertrustbundle.go
│ │ │ │ │ └── interface.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── certificatesigningrequest.go
│ │ │ │ └── interface.go
│ │ │ ├── coordination/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── interface.go
│ │ │ │ │ └── lease.go
│ │ │ │ ├── v1alpha2/
│ │ │ │ │ ├── interface.go
│ │ │ │ │ └── leasecandidate.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── interface.go
│ │ │ │ └── lease.go
│ │ │ ├── core/
│ │ │ │ ├── interface.go
│ │ │ │ └── v1/
│ │ │ │ ├── componentstatus.go
│ │ │ │ ├── configmap.go
│ │ │ │ ├── endpoints.go
│ │ │ │ ├── event.go
│ │ │ │ ├── interface.go
│ │ │ │ ├── limitrange.go
│ │ │ │ ├── namespace.go
│ │ │ │ ├── node.go
│ │ │ │ ├── persistentvolume.go
│ │ │ │ ├── persistentvolumeclaim.go
│ │ │ │ ├── pod.go
│ │ │ │ ├── podtemplate.go
│ │ │ │ ├── replicationcontroller.go
│ │ │ │ ├── resourcequota.go
│ │ │ │ ├── secret.go
│ │ │ │ ├── service.go
│ │ │ │ └── serviceaccount.go
│ │ │ ├── discovery/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── endpointslice.go
│ │ │ │ │ └── interface.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── endpointslice.go
│ │ │ │ └── interface.go
│ │ │ ├── doc.go
│ │ │ ├── events/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── event.go
│ │ │ │ │ └── interface.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── event.go
│ │ │ │ └── interface.go
│ │ │ ├── extensions/
│ │ │ │ ├── interface.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── daemonset.go
│ │ │ │ ├── deployment.go
│ │ │ │ ├── ingress.go
│ │ │ │ ├── interface.go
│ │ │ │ ├── networkpolicy.go
│ │ │ │ └── replicaset.go
│ │ │ ├── factory.go
│ │ │ ├── flowcontrol/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── flowschema.go
│ │ │ │ │ ├── interface.go
│ │ │ │ │ └── prioritylevelconfiguration.go
│ │ │ │ ├── v1beta1/
│ │ │ │ │ ├── flowschema.go
│ │ │ │ │ ├── interface.go
│ │ │ │ │ └── prioritylevelconfiguration.go
│ │ │ │ ├── v1beta2/
│ │ │ │ │ ├── flowschema.go
│ │ │ │ │ ├── interface.go
│ │ │ │ │ └── prioritylevelconfiguration.go
│ │ │ │ └── v1beta3/
│ │ │ │ ├── flowschema.go
│ │ │ │ ├── interface.go
│ │ │ │ └── prioritylevelconfiguration.go
│ │ │ ├── generic.go
│ │ │ ├── internalinterfaces/
│ │ │ │ └── factory_interfaces.go
│ │ │ ├── networking/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── ingress.go
│ │ │ │ │ ├── ingressclass.go
│ │ │ │ │ ├── interface.go
│ │ │ │ │ └── networkpolicy.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── interface.go
│ │ │ │ │ ├── ipaddress.go
│ │ │ │ │ └── servicecidr.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── ingress.go
│ │ │ │ ├── ingressclass.go
│ │ │ │ ├── interface.go
│ │ │ │ ├── ipaddress.go
│ │ │ │ └── servicecidr.go
│ │ │ ├── node/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── interface.go
│ │ │ │ │ └── runtimeclass.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── interface.go
│ │ │ │ │ └── runtimeclass.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── interface.go
│ │ │ │ └── runtimeclass.go
│ │ │ ├── policy/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── interface.go
│ │ │ │ │ └── poddisruptionbudget.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── interface.go
│ │ │ │ └── poddisruptionbudget.go
│ │ │ ├── rbac/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── clusterrole.go
│ │ │ │ │ ├── clusterrolebinding.go
│ │ │ │ │ ├── interface.go
│ │ │ │ │ ├── role.go
│ │ │ │ │ └── rolebinding.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── clusterrole.go
│ │ │ │ │ ├── clusterrolebinding.go
│ │ │ │ │ ├── interface.go
│ │ │ │ │ ├── role.go
│ │ │ │ │ └── rolebinding.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── clusterrole.go
│ │ │ │ ├── clusterrolebinding.go
│ │ │ │ ├── interface.go
│ │ │ │ ├── role.go
│ │ │ │ └── rolebinding.go
│ │ │ ├── resource/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1alpha3/
│ │ │ │ │ ├── deviceclass.go
│ │ │ │ │ ├── interface.go
│ │ │ │ │ ├── resourceclaim.go
│ │ │ │ │ ├── resourceclaimtemplate.go
│ │ │ │ │ └── resourceslice.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── deviceclass.go
│ │ │ │ ├── interface.go
│ │ │ │ ├── resourceclaim.go
│ │ │ │ ├── resourceclaimtemplate.go
│ │ │ │ └── resourceslice.go
│ │ │ ├── scheduling/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── interface.go
│ │ │ │ │ └── priorityclass.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── interface.go
│ │ │ │ │ └── priorityclass.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── interface.go
│ │ │ │ └── priorityclass.go
│ │ │ ├── storage/
│ │ │ │ ├── interface.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── csidriver.go
│ │ │ │ │ ├── csinode.go
│ │ │ │ │ ├── csistoragecapacity.go
│ │ │ │ │ ├── interface.go
│ │ │ │ │ ├── storageclass.go
│ │ │ │ │ └── volumeattachment.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── csistoragecapacity.go
│ │ │ │ │ ├── interface.go
│ │ │ │ │ ├── volumeattachment.go
│ │ │ │ │ └── volumeattributesclass.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── csidriver.go
│ │ │ │ ├── csinode.go
│ │ │ │ ├── csistoragecapacity.go
│ │ │ │ ├── interface.go
│ │ │ │ ├── storageclass.go
│ │ │ │ ├── volumeattachment.go
│ │ │ │ └── volumeattributesclass.go
│ │ │ └── storagemigration/
│ │ │ ├── interface.go
│ │ │ └── v1alpha1/
│ │ │ ├── interface.go
│ │ │ └── storageversionmigration.go
│ │ ├── kubernetes/
│ │ │ ├── clientset.go
│ │ │ ├── doc.go
│ │ │ ├── fake/
│ │ │ │ ├── clientset_generated.go
│ │ │ │ ├── doc.go
│ │ │ │ └── register.go
│ │ │ ├── import.go
│ │ │ ├── scheme/
│ │ │ │ ├── doc.go
│ │ │ │ └── register.go
│ │ │ └── typed/
│ │ │ ├── admissionregistration/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── admissionregistration_client.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_admissionregistration_client.go
│ │ │ │ │ │ ├── fake_mutatingwebhookconfiguration.go
│ │ │ │ │ │ ├── fake_validatingadmissionpolicy.go
│ │ │ │ │ │ ├── fake_validatingadmissionpolicybinding.go
│ │ │ │ │ │ └── fake_validatingwebhookconfiguration.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── mutatingwebhookconfiguration.go
│ │ │ │ │ ├── validatingadmissionpolicy.go
│ │ │ │ │ ├── validatingadmissionpolicybinding.go
│ │ │ │ │ └── validatingwebhookconfiguration.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── admissionregistration_client.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_admissionregistration_client.go
│ │ │ │ │ │ ├── fake_mutatingadmissionpolicy.go
│ │ │ │ │ │ ├── fake_mutatingadmissionpolicybinding.go
│ │ │ │ │ │ ├── fake_validatingadmissionpolicy.go
│ │ │ │ │ │ └── fake_validatingadmissionpolicybinding.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── mutatingadmissionpolicy.go
│ │ │ │ │ ├── mutatingadmissionpolicybinding.go
│ │ │ │ │ ├── validatingadmissionpolicy.go
│ │ │ │ │ └── validatingadmissionpolicybinding.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── admissionregistration_client.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_admissionregistration_client.go
│ │ │ │ │ ├── fake_mutatingwebhookconfiguration.go
│ │ │ │ │ ├── fake_validatingadmissionpolicy.go
│ │ │ │ │ ├── fake_validatingadmissionpolicybinding.go
│ │ │ │ │ └── fake_validatingwebhookconfiguration.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ ├── mutatingwebhookconfiguration.go
│ │ │ │ ├── validatingadmissionpolicy.go
│ │ │ │ ├── validatingadmissionpolicybinding.go
│ │ │ │ └── validatingwebhookconfiguration.go
│ │ │ ├── apiserverinternal/
│ │ │ │ └── v1alpha1/
│ │ │ │ ├── apiserverinternal_client.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_apiserverinternal_client.go
│ │ │ │ │ └── fake_storageversion.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ └── storageversion.go
│ │ │ ├── apps/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── apps_client.go
│ │ │ │ │ ├── controllerrevision.go
│ │ │ │ │ ├── daemonset.go
│ │ │ │ │ ├── deployment.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_apps_client.go
│ │ │ │ │ │ ├── fake_controllerrevision.go
│ │ │ │ │ │ ├── fake_daemonset.go
│ │ │ │ │ │ ├── fake_deployment.go
│ │ │ │ │ │ ├── fake_replicaset.go
│ │ │ │ │ │ └── fake_statefulset.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── replicaset.go
│ │ │ │ │ └── statefulset.go
│ │ │ │ ├── v1beta1/
│ │ │ │ │ ├── apps_client.go
│ │ │ │ │ ├── controllerrevision.go
│ │ │ │ │ ├── deployment.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_apps_client.go
│ │ │ │ │ │ ├── fake_controllerrevision.go
│ │ │ │ │ │ ├── fake_deployment.go
│ │ │ │ │ │ └── fake_statefulset.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ └── statefulset.go
│ │ │ │ └── v1beta2/
│ │ │ │ ├── apps_client.go
│ │ │ │ ├── controllerrevision.go
│ │ │ │ ├── daemonset.go
│ │ │ │ ├── deployment.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_apps_client.go
│ │ │ │ │ ├── fake_controllerrevision.go
│ │ │ │ │ ├── fake_daemonset.go
│ │ │ │ │ ├── fake_deployment.go
│ │ │ │ │ ├── fake_replicaset.go
│ │ │ │ │ └── fake_statefulset.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ ├── replicaset.go
│ │ │ │ └── statefulset.go
│ │ │ ├── authentication/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── authentication_client.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_authentication_client.go
│ │ │ │ │ │ ├── fake_selfsubjectreview.go
│ │ │ │ │ │ └── fake_tokenreview.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── selfsubjectreview.go
│ │ │ │ │ └── tokenreview.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── authentication_client.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_authentication_client.go
│ │ │ │ │ │ └── fake_selfsubjectreview.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ └── selfsubjectreview.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── authentication_client.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_authentication_client.go
│ │ │ │ │ ├── fake_selfsubjectreview.go
│ │ │ │ │ └── fake_tokenreview.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ ├── selfsubjectreview.go
│ │ │ │ └── tokenreview.go
│ │ │ ├── authorization/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── authorization_client.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_authorization_client.go
│ │ │ │ │ │ ├── fake_localsubjectaccessreview.go
│ │ │ │ │ │ ├── fake_selfsubjectaccessreview.go
│ │ │ │ │ │ ├── fake_selfsubjectrulesreview.go
│ │ │ │ │ │ └── fake_subjectaccessreview.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── localsubjectaccessreview.go
│ │ │ │ │ ├── selfsubjectaccessreview.go
│ │ │ │ │ ├── selfsubjectrulesreview.go
│ │ │ │ │ └── subjectaccessreview.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── authorization_client.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_authorization_client.go
│ │ │ │ │ ├── fake_localsubjectaccessreview.go
│ │ │ │ │ ├── fake_selfsubjectaccessreview.go
│ │ │ │ │ ├── fake_selfsubjectrulesreview.go
│ │ │ │ │ └── fake_subjectaccessreview.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ ├── localsubjectaccessreview.go
│ │ │ │ ├── selfsubjectaccessreview.go
│ │ │ │ ├── selfsubjectrulesreview.go
│ │ │ │ └── subjectaccessreview.go
│ │ │ ├── autoscaling/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── autoscaling_client.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_autoscaling_client.go
│ │ │ │ │ │ └── fake_horizontalpodautoscaler.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ └── horizontalpodautoscaler.go
│ │ │ │ ├── v2/
│ │ │ │ │ ├── autoscaling_client.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_autoscaling_client.go
│ │ │ │ │ │ └── fake_horizontalpodautoscaler.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ └── horizontalpodautoscaler.go
│ │ │ │ ├── v2beta1/
│ │ │ │ │ ├── autoscaling_client.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_autoscaling_client.go
│ │ │ │ │ │ └── fake_horizontalpodautoscaler.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ └── horizontalpodautoscaler.go
│ │ │ │ └── v2beta2/
│ │ │ │ ├── autoscaling_client.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_autoscaling_client.go
│ │ │ │ │ └── fake_horizontalpodautoscaler.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ └── horizontalpodautoscaler.go
│ │ │ ├── batch/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── batch_client.go
│ │ │ │ │ ├── cronjob.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_batch_client.go
│ │ │ │ │ │ ├── fake_cronjob.go
│ │ │ │ │ │ └── fake_job.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ └── job.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── batch_client.go
│ │ │ │ ├── cronjob.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_batch_client.go
│ │ │ │ │ └── fake_cronjob.go
│ │ │ │ └── generated_expansion.go
│ │ │ ├── certificates/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── certificates_client.go
│ │ │ │ │ ├── certificatesigningrequest.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_certificates_client.go
│ │ │ │ │ │ └── fake_certificatesigningrequest.go
│ │ │ │ │ └── generated_expansion.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── certificates_client.go
│ │ │ │ │ ├── clustertrustbundle.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_certificates_client.go
│ │ │ │ │ │ └── fake_clustertrustbundle.go
│ │ │ │ │ └── generated_expansion.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── certificates_client.go
│ │ │ │ ├── certificatesigningrequest.go
│ │ │ │ ├── certificatesigningrequest_expansion.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_certificates_client.go
│ │ │ │ │ ├── fake_certificatesigningrequest.go
│ │ │ │ │ └── fake_certificatesigningrequest_expansion.go
│ │ │ │ └── generated_expansion.go
│ │ │ ├── coordination/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── coordination_client.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_coordination_client.go
│ │ │ │ │ │ └── fake_lease.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ └── lease.go
│ │ │ │ ├── v1alpha2/
│ │ │ │ │ ├── coordination_client.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_coordination_client.go
│ │ │ │ │ │ └── fake_leasecandidate.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ └── leasecandidate.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── coordination_client.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_coordination_client.go
│ │ │ │ │ └── fake_lease.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ └── lease.go
│ │ │ ├── core/
│ │ │ │ └── v1/
│ │ │ │ ├── componentstatus.go
│ │ │ │ ├── configmap.go
│ │ │ │ ├── core_client.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── endpoints.go
│ │ │ │ ├── event.go
│ │ │ │ ├── event_expansion.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_componentstatus.go
│ │ │ │ │ ├── fake_configmap.go
│ │ │ │ │ ├── fake_core_client.go
│ │ │ │ │ ├── fake_endpoints.go
│ │ │ │ │ ├── fake_event.go
│ │ │ │ │ ├── fake_event_expansion.go
│ │ │ │ │ ├── fake_limitrange.go
│ │ │ │ │ ├── fake_namespace.go
│ │ │ │ │ ├── fake_namespace_expansion.go
│ │ │ │ │ ├── fake_node.go
│ │ │ │ │ ├── fake_node_expansion.go
│ │ │ │ │ ├── fake_persistentvolume.go
│ │ │ │ │ ├── fake_persistentvolumeclaim.go
│ │ │ │ │ ├── fake_pod.go
│ │ │ │ │ ├── fake_pod_expansion.go
│ │ │ │ │ ├── fake_podtemplate.go
│ │ │ │ │ ├── fake_replicationcontroller.go
│ │ │ │ │ ├── fake_resourcequota.go
│ │ │ │ │ ├── fake_secret.go
│ │ │ │ │ ├── fake_service.go
│ │ │ │ │ ├── fake_service_expansion.go
│ │ │ │ │ └── fake_serviceaccount.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ ├── limitrange.go
│ │ │ │ ├── namespace.go
│ │ │ │ ├── namespace_expansion.go
│ │ │ │ ├── node.go
│ │ │ │ ├── node_expansion.go
│ │ │ │ ├── persistentvolume.go
│ │ │ │ ├── persistentvolumeclaim.go
│ │ │ │ ├── pod.go
│ │ │ │ ├── pod_expansion.go
│ │ │ │ ├── podtemplate.go
│ │ │ │ ├── replicationcontroller.go
│ │ │ │ ├── resourcequota.go
│ │ │ │ ├── secret.go
│ │ │ │ ├── service.go
│ │ │ │ ├── service_expansion.go
│ │ │ │ └── serviceaccount.go
│ │ │ ├── discovery/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── discovery_client.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── endpointslice.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_discovery_client.go
│ │ │ │ │ │ └── fake_endpointslice.go
│ │ │ │ │ └── generated_expansion.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── discovery_client.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── endpointslice.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_discovery_client.go
│ │ │ │ │ └── fake_endpointslice.go
│ │ │ │ └── generated_expansion.go
│ │ │ ├── events/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── event.go
│ │ │ │ │ ├── events_client.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_event.go
│ │ │ │ │ │ └── fake_events_client.go
│ │ │ │ │ └── generated_expansion.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── event.go
│ │ │ │ ├── event_expansion.go
│ │ │ │ ├── events_client.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_event.go
│ │ │ │ │ ├── fake_event_expansion.go
│ │ │ │ │ └── fake_events_client.go
│ │ │ │ └── generated_expansion.go
│ │ │ ├── extensions/
│ │ │ │ └── v1beta1/
│ │ │ │ ├── daemonset.go
│ │ │ │ ├── deployment.go
│ │ │ │ ├── deployment_expansion.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── extensions_client.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_daemonset.go
│ │ │ │ │ ├── fake_deployment.go
│ │ │ │ │ ├── fake_deployment_expansion.go
│ │ │ │ │ ├── fake_extensions_client.go
│ │ │ │ │ ├── fake_ingress.go
│ │ │ │ │ ├── fake_networkpolicy.go
│ │ │ │ │ └── fake_replicaset.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ ├── ingress.go
│ │ │ │ ├── networkpolicy.go
│ │ │ │ └── replicaset.go
│ │ │ ├── flowcontrol/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_flowcontrol_client.go
│ │ │ │ │ │ ├── fake_flowschema.go
│ │ │ │ │ │ └── fake_prioritylevelconfiguration.go
│ │ │ │ │ ├── flowcontrol_client.go
│ │ │ │ │ ├── flowschema.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ └── prioritylevelconfiguration.go
│ │ │ │ ├── v1beta1/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_flowcontrol_client.go
│ │ │ │ │ │ ├── fake_flowschema.go
│ │ │ │ │ │ └── fake_prioritylevelconfiguration.go
│ │ │ │ │ ├── flowcontrol_client.go
│ │ │ │ │ ├── flowschema.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ └── prioritylevelconfiguration.go
│ │ │ │ ├── v1beta2/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_flowcontrol_client.go
│ │ │ │ │ │ ├── fake_flowschema.go
│ │ │ │ │ │ └── fake_prioritylevelconfiguration.go
│ │ │ │ │ ├── flowcontrol_client.go
│ │ │ │ │ ├── flowschema.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ └── prioritylevelconfiguration.go
│ │ │ │ └── v1beta3/
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_flowcontrol_client.go
│ │ │ │ │ ├── fake_flowschema.go
│ │ │ │ │ └── fake_prioritylevelconfiguration.go
│ │ │ │ ├── flowcontrol_client.go
│ │ │ │ ├── flowschema.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ └── prioritylevelconfiguration.go
│ │ │ ├── networking/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_ingress.go
│ │ │ │ │ │ ├── fake_ingressclass.go
│ │ │ │ │ │ ├── fake_networking_client.go
│ │ │ │ │ │ └── fake_networkpolicy.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── ingress.go
│ │ │ │ │ ├── ingressclass.go
│ │ │ │ │ ├── networking_client.go
│ │ │ │ │ └── networkpolicy.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_ipaddress.go
│ │ │ │ │ │ ├── fake_networking_client.go
│ │ │ │ │ │ └── fake_servicecidr.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── ipaddress.go
│ │ │ │ │ ├── networking_client.go
│ │ │ │ │ └── servicecidr.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_ingress.go
│ │ │ │ │ ├── fake_ingressclass.go
│ │ │ │ │ ├── fake_ipaddress.go
│ │ │ │ │ ├── fake_networking_client.go
│ │ │ │ │ └── fake_servicecidr.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ ├── ingress.go
│ │ │ │ ├── ingressclass.go
│ │ │ │ ├── ipaddress.go
│ │ │ │ ├── networking_client.go
│ │ │ │ └── servicecidr.go
│ │ │ ├── node/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_node_client.go
│ │ │ │ │ │ └── fake_runtimeclass.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── node_client.go
│ │ │ │ │ └── runtimeclass.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_node_client.go
│ │ │ │ │ │ └── fake_runtimeclass.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── node_client.go
│ │ │ │ │ └── runtimeclass.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_node_client.go
│ │ │ │ │ └── fake_runtimeclass.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ ├── node_client.go
│ │ │ │ └── runtimeclass.go
│ │ │ ├── policy/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── eviction.go
│ │ │ │ │ ├── eviction_expansion.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_eviction.go
│ │ │ │ │ │ ├── fake_eviction_expansion.go
│ │ │ │ │ │ ├── fake_poddisruptionbudget.go
│ │ │ │ │ │ └── fake_policy_client.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── poddisruptionbudget.go
│ │ │ │ │ └── policy_client.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── eviction.go
│ │ │ │ ├── eviction_expansion.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_eviction.go
│ │ │ │ │ ├── fake_eviction_expansion.go
│ │ │ │ │ ├── fake_poddisruptionbudget.go
│ │ │ │ │ └── fake_policy_client.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ ├── poddisruptionbudget.go
│ │ │ │ └── policy_client.go
│ │ │ ├── rbac/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── clusterrole.go
│ │ │ │ │ ├── clusterrolebinding.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_clusterrole.go
│ │ │ │ │ │ ├── fake_clusterrolebinding.go
│ │ │ │ │ │ ├── fake_rbac_client.go
│ │ │ │ │ │ ├── fake_role.go
│ │ │ │ │ │ └── fake_rolebinding.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── rbac_client.go
│ │ │ │ │ ├── role.go
│ │ │ │ │ └── rolebinding.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── clusterrole.go
│ │ │ │ │ ├── clusterrolebinding.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_clusterrole.go
│ │ │ │ │ │ ├── fake_clusterrolebinding.go
│ │ │ │ │ │ ├── fake_rbac_client.go
│ │ │ │ │ │ ├── fake_role.go
│ │ │ │ │ │ └── fake_rolebinding.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── rbac_client.go
│ │ │ │ │ ├── role.go
│ │ │ │ │ └── rolebinding.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── clusterrole.go
│ │ │ │ ├── clusterrolebinding.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_clusterrole.go
│ │ │ │ │ ├── fake_clusterrolebinding.go
│ │ │ │ │ ├── fake_rbac_client.go
│ │ │ │ │ ├── fake_role.go
│ │ │ │ │ └── fake_rolebinding.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ ├── rbac_client.go
│ │ │ │ ├── role.go
│ │ │ │ └── rolebinding.go
│ │ │ ├── resource/
│ │ │ │ ├── v1alpha3/
│ │ │ │ │ ├── deviceclass.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_deviceclass.go
│ │ │ │ │ │ ├── fake_resource_client.go
│ │ │ │ │ │ ├── fake_resourceclaim.go
│ │ │ │ │ │ ├── fake_resourceclaimtemplate.go
│ │ │ │ │ │ └── fake_resourceslice.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── resource_client.go
│ │ │ │ │ ├── resourceclaim.go
│ │ │ │ │ ├── resourceclaimtemplate.go
│ │ │ │ │ └── resourceslice.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── deviceclass.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_deviceclass.go
│ │ │ │ │ ├── fake_resource_client.go
│ │ │ │ │ ├── fake_resourceclaim.go
│ │ │ │ │ ├── fake_resourceclaimtemplate.go
│ │ │ │ │ └── fake_resourceslice.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ ├── resource_client.go
│ │ │ │ ├── resourceclaim.go
│ │ │ │ ├── resourceclaimtemplate.go
│ │ │ │ └── resourceslice.go
│ │ │ ├── scheduling/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_priorityclass.go
│ │ │ │ │ │ └── fake_scheduling_client.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── priorityclass.go
│ │ │ │ │ └── scheduling_client.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_priorityclass.go
│ │ │ │ │ │ └── fake_scheduling_client.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── priorityclass.go
│ │ │ │ │ └── scheduling_client.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_priorityclass.go
│ │ │ │ │ └── fake_scheduling_client.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ ├── priorityclass.go
│ │ │ │ └── scheduling_client.go
│ │ │ ├── storage/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── csidriver.go
│ │ │ │ │ ├── csinode.go
│ │ │ │ │ ├── csistoragecapacity.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_csidriver.go
│ │ │ │ │ │ ├── fake_csinode.go
│ │ │ │ │ │ ├── fake_csistoragecapacity.go
│ │ │ │ │ │ ├── fake_storage_client.go
│ │ │ │ │ │ ├── fake_storageclass.go
│ │ │ │ │ │ └── fake_volumeattachment.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── storage_client.go
│ │ │ │ │ ├── storageclass.go
│ │ │ │ │ └── volumeattachment.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── csistoragecapacity.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fake_csistoragecapacity.go
│ │ │ │ │ │ ├── fake_storage_client.go
│ │ │ │ │ │ ├── fake_volumeattachment.go
│ │ │ │ │ │ └── fake_volumeattributesclass.go
│ │ │ │ │ ├── generated_expansion.go
│ │ │ │ │ ├── storage_client.go
│ │ │ │ │ ├── volumeattachment.go
│ │ │ │ │ └── volumeattributesclass.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── csidriver.go
│ │ │ │ ├── csinode.go
│ │ │ │ ├── csistoragecapacity.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_csidriver.go
│ │ │ │ │ ├── fake_csinode.go
│ │ │ │ │ ├── fake_csistoragecapacity.go
│ │ │ │ │ ├── fake_storage_client.go
│ │ │ │ │ ├── fake_storageclass.go
│ │ │ │ │ ├── fake_volumeattachment.go
│ │ │ │ │ └── fake_volumeattributesclass.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ ├── storage_client.go
│ │ │ │ ├── storageclass.go
│ │ │ │ ├── volumeattachment.go
│ │ │ │ └── volumeattributesclass.go
│ │ │ └── storagemigration/
│ │ │ └── v1alpha1/
│ │ │ ├── doc.go
│ │ │ ├── fake/
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake_storagemigration_client.go
│ │ │ │ └── fake_storageversionmigration.go
│ │ │ ├── generated_expansion.go
│ │ │ ├── storagemigration_client.go
│ │ │ └── storageversionmigration.go
│ │ ├── listers/
│ │ │ ├── admissionregistration/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── mutatingwebhookconfiguration.go
│ │ │ │ │ ├── validatingadmissionpolicy.go
│ │ │ │ │ ├── validatingadmissionpolicybinding.go
│ │ │ │ │ └── validatingwebhookconfiguration.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── mutatingadmissionpolicy.go
│ │ │ │ │ ├── mutatingadmissionpolicybinding.go
│ │ │ │ │ ├── validatingadmissionpolicy.go
│ │ │ │ │ └── validatingadmissionpolicybinding.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── expansion_generated.go
│ │ │ │ ├── mutatingwebhookconfiguration.go
│ │ │ │ ├── validatingadmissionpolicy.go
│ │ │ │ ├── validatingadmissionpolicybinding.go
│ │ │ │ └── validatingwebhookconfiguration.go
│ │ │ ├── apiserverinternal/
│ │ │ │ └── v1alpha1/
│ │ │ │ ├── expansion_generated.go
│ │ │ │ └── storageversion.go
│ │ │ ├── apps/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── controllerrevision.go
│ │ │ │ │ ├── daemonset.go
│ │ │ │ │ ├── daemonset_expansion.go
│ │ │ │ │ ├── deployment.go
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── replicaset.go
│ │ │ │ │ ├── replicaset_expansion.go
│ │ │ │ │ ├── statefulset.go
│ │ │ │ │ └── statefulset_expansion.go
│ │ │ │ ├── v1beta1/
│ │ │ │ │ ├── controllerrevision.go
│ │ │ │ │ ├── deployment.go
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── statefulset.go
│ │ │ │ │ └── statefulset_expansion.go
│ │ │ │ └── v1beta2/
│ │ │ │ ├── controllerrevision.go
│ │ │ │ ├── daemonset.go
│ │ │ │ ├── daemonset_expansion.go
│ │ │ │ ├── deployment.go
│ │ │ │ ├── expansion_generated.go
│ │ │ │ ├── replicaset.go
│ │ │ │ ├── replicaset_expansion.go
│ │ │ │ ├── statefulset.go
│ │ │ │ └── statefulset_expansion.go
│ │ │ ├── autoscaling/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ └── horizontalpodautoscaler.go
│ │ │ │ ├── v2/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ └── horizontalpodautoscaler.go
│ │ │ │ ├── v2beta1/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ └── horizontalpodautoscaler.go
│ │ │ │ └── v2beta2/
│ │ │ │ ├── expansion_generated.go
│ │ │ │ └── horizontalpodautoscaler.go
│ │ │ ├── batch/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── cronjob.go
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── job.go
│ │ │ │ │ └── job_expansion.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── cronjob.go
│ │ │ │ └── expansion_generated.go
│ │ │ ├── certificates/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── certificatesigningrequest.go
│ │ │ │ │ └── expansion_generated.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── clustertrustbundle.go
│ │ │ │ │ └── expansion_generated.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── certificatesigningrequest.go
│ │ │ │ └── expansion_generated.go
│ │ │ ├── coordination/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ └── lease.go
│ │ │ │ ├── v1alpha2/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ └── leasecandidate.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── expansion_generated.go
│ │ │ │ └── lease.go
│ │ │ ├── core/
│ │ │ │ └── v1/
│ │ │ │ ├── componentstatus.go
│ │ │ │ ├── configmap.go
│ │ │ │ ├── endpoints.go
│ │ │ │ ├── event.go
│ │ │ │ ├── expansion_generated.go
│ │ │ │ ├── limitrange.go
│ │ │ │ ├── namespace.go
│ │ │ │ ├── node.go
│ │ │ │ ├── persistentvolume.go
│ │ │ │ ├── persistentvolumeclaim.go
│ │ │ │ ├── pod.go
│ │ │ │ ├── podtemplate.go
│ │ │ │ ├── replicationcontroller.go
│ │ │ │ ├── replicationcontroller_expansion.go
│ │ │ │ ├── resourcequota.go
│ │ │ │ ├── secret.go
│ │ │ │ ├── service.go
│ │ │ │ └── serviceaccount.go
│ │ │ ├── discovery/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── endpointslice.go
│ │ │ │ │ └── expansion_generated.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── endpointslice.go
│ │ │ │ └── expansion_generated.go
│ │ │ ├── doc.go
│ │ │ ├── events/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── event.go
│ │ │ │ │ └── expansion_generated.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── event.go
│ │ │ │ └── expansion_generated.go
│ │ │ ├── extensions/
│ │ │ │ └── v1beta1/
│ │ │ │ ├── daemonset.go
│ │ │ │ ├── daemonset_expansion.go
│ │ │ │ ├── deployment.go
│ │ │ │ ├── expansion_generated.go
│ │ │ │ ├── ingress.go
│ │ │ │ ├── networkpolicy.go
│ │ │ │ ├── replicaset.go
│ │ │ │ └── replicaset_expansion.go
│ │ │ ├── flowcontrol/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── flowschema.go
│ │ │ │ │ └── prioritylevelconfiguration.go
│ │ │ │ ├── v1beta1/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── flowschema.go
│ │ │ │ │ └── prioritylevelconfiguration.go
│ │ │ │ ├── v1beta2/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── flowschema.go
│ │ │ │ │ └── prioritylevelconfiguration.go
│ │ │ │ └── v1beta3/
│ │ │ │ ├── expansion_generated.go
│ │ │ │ ├── flowschema.go
│ │ │ │ └── prioritylevelconfiguration.go
│ │ │ ├── generic_helpers.go
│ │ │ ├── networking/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── ingress.go
│ │ │ │ │ ├── ingressclass.go
│ │ │ │ │ └── networkpolicy.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── ipaddress.go
│ │ │ │ │ └── servicecidr.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── expansion_generated.go
│ │ │ │ ├── ingress.go
│ │ │ │ ├── ingressclass.go
│ │ │ │ ├── ipaddress.go
│ │ │ │ └── servicecidr.go
│ │ │ ├── node/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ └── runtimeclass.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ └── runtimeclass.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── expansion_generated.go
│ │ │ │ └── runtimeclass.go
│ │ │ ├── policy/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── eviction.go
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── poddisruptionbudget.go
│ │ │ │ │ └── poddisruptionbudget_expansion.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── eviction.go
│ │ │ │ ├── expansion_generated.go
│ │ │ │ ├── poddisruptionbudget.go
│ │ │ │ └── poddisruptionbudget_expansion.go
│ │ │ ├── rbac/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── clusterrole.go
│ │ │ │ │ ├── clusterrolebinding.go
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── role.go
│ │ │ │ │ └── rolebinding.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── clusterrole.go
│ │ │ │ │ ├── clusterrolebinding.go
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── role.go
│ │ │ │ │ └── rolebinding.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── clusterrole.go
│ │ │ │ ├── clusterrolebinding.go
│ │ │ │ ├── expansion_generated.go
│ │ │ │ ├── role.go
│ │ │ │ └── rolebinding.go
│ │ │ ├── resource/
│ │ │ │ ├── v1alpha3/
│ │ │ │ │ ├── deviceclass.go
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── resourceclaim.go
│ │ │ │ │ ├── resourceclaimtemplate.go
│ │ │ │ │ └── resourceslice.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── deviceclass.go
│ │ │ │ ├── expansion_generated.go
│ │ │ │ ├── resourceclaim.go
│ │ │ │ ├── resourceclaimtemplate.go
│ │ │ │ └── resourceslice.go
│ │ │ ├── scheduling/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ └── priorityclass.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ └── priorityclass.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── expansion_generated.go
│ │ │ │ └── priorityclass.go
│ │ │ ├── storage/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── csidriver.go
│ │ │ │ │ ├── csinode.go
│ │ │ │ │ ├── csistoragecapacity.go
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── storageclass.go
│ │ │ │ │ └── volumeattachment.go
│ │ │ │ ├── v1alpha1/
│ │ │ │ │ ├── csistoragecapacity.go
│ │ │ │ │ ├── expansion_generated.go
│ │ │ │ │ ├── volumeattachment.go
│ │ │ │ │ └── volumeattributesclass.go
│ │ │ │ └── v1beta1/
│ │ │ │ ├── csidriver.go
│ │ │ │ ├── csinode.go
│ │ │ │ ├── csistoragecapacity.go
│ │ │ │ ├── expansion_generated.go
│ │ │ │ ├── storageclass.go
│ │ │ │ ├── volumeattachment.go
│ │ │ │ └── volumeattributesclass.go
│ │ │ └── storagemigration/
│ │ │ └── v1alpha1/
│ │ │ ├── expansion_generated.go
│ │ │ └── storageversionmigration.go
│ │ ├── openapi/
│ │ │ ├── OWNERS
│ │ │ ├── client.go
│ │ │ ├── groupversion.go
│ │ │ └── typeconverter.go
│ │ ├── pkg/
│ │ │ ├── apis/
│ │ │ │ └── clientauthentication/
│ │ │ │ ├── OWNERS
│ │ │ │ ├── doc.go
│ │ │ │ ├── install/
│ │ │ │ │ └── install.go
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ ├── v1/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── register.go
│ │ │ │ │ ├── types.go
│ │ │ │ │ ├── zz_generated.conversion.go
│ │ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ │ └── zz_generated.defaults.go
│ │ │ │ ├── v1beta1/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── register.go
│ │ │ │ │ ├── types.go
│ │ │ │ │ ├── zz_generated.conversion.go
│ │ │ │ │ ├── zz_generated.deepcopy.go
│ │ │ │ │ └── zz_generated.defaults.go
│ │ │ │ └── zz_generated.deepcopy.go
│ │ │ └── version/
│ │ │ ├── base.go
│ │ │ ├── doc.go
│ │ │ └── version.go
│ │ ├── plugin/
│ │ │ └── pkg/
│ │ │ └── client/
│ │ │ └── auth/
│ │ │ └── exec/
│ │ │ ├── exec.go
│ │ │ └── metrics.go
│ │ ├── rest/
│ │ │ ├── OWNERS
│ │ │ ├── client.go
│ │ │ ├── config.go
│ │ │ ├── exec.go
│ │ │ ├── fake/
│ │ │ │ └── fake.go
│ │ │ ├── plugin.go
│ │ │ ├── request.go
│ │ │ ├── transport.go
│ │ │ ├── url_utils.go
│ │ │ ├── urlbackoff.go
│ │ │ ├── warnings.go
│ │ │ ├── watch/
│ │ │ │ ├── decoder.go
│ │ │ │ └── encoder.go
│ │ │ ├── with_retry.go
│ │ │ └── zz_generated.deepcopy.go
│ │ ├── testing/
│ │ │ ├── actions.go
│ │ │ ├── fake.go
│ │ │ ├── fixture.go
│ │ │ └── interface.go
│ │ ├── tools/
│ │ │ ├── cache/
│ │ │ │ ├── OWNERS
│ │ │ │ ├── controller.go
│ │ │ │ ├── delta_fifo.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── expiration_cache.go
│ │ │ │ ├── expiration_cache_fakes.go
│ │ │ │ ├── fake_custom_store.go
│ │ │ │ ├── fifo.go
│ │ │ │ ├── heap.go
│ │ │ │ ├── index.go
│ │ │ │ ├── listers.go
│ │ │ │ ├── listwatch.go
│ │ │ │ ├── mutation_cache.go
│ │ │ │ ├── mutation_detector.go
│ │ │ │ ├── object-names.go
│ │ │ │ ├── reflector.go
│ │ │ │ ├── reflector_data_consistency_detector.go
│ │ │ │ ├── reflector_metrics.go
│ │ │ │ ├── retry_with_deadline.go
│ │ │ │ ├── shared_informer.go
│ │ │ │ ├── store.go
│ │ │ │ ├── synctrack/
│ │ │ │ │ ├── lazy.go
│ │ │ │ │ └── synctrack.go
│ │ │ │ ├── thread_safe_store.go
│ │ │ │ └── undelta_store.go
│ │ │ ├── clientcmd/
│ │ │ │ └── api/
│ │ │ │ ├── doc.go
│ │ │ │ ├── helpers.go
│ │ │ │ ├── register.go
│ │ │ │ ├── types.go
│ │ │ │ └── zz_generated.deepcopy.go
│ │ │ ├── metrics/
│ │ │ │ ├── OWNERS
│ │ │ │ └── metrics.go
│ │ │ ├── pager/
│ │ │ │ └── pager.go
│ │ │ └── reference/
│ │ │ └── ref.go
│ │ ├── transport/
│ │ │ ├── OWNERS
│ │ │ ├── cache.go
│ │ │ ├── cache_go118.go
│ │ │ ├── cert_rotation.go
│ │ │ ├── config.go
│ │ │ ├── round_trippers.go
│ │ │ ├── token_source.go
│ │ │ └── transport.go
│ │ └── util/
│ │ ├── apply/
│ │ │ └── apply.go
│ │ ├── cert/
│ │ │ ├── OWNERS
│ │ │ ├── cert.go
│ │ │ ├── csr.go
│ │ │ ├── io.go
│ │ │ ├── pem.go
│ │ │ └── server_inspection.go
│ │ ├── connrotation/
│ │ │ └── connrotation.go
│ │ ├── consistencydetector/
│ │ │ ├── data_consistency_detector.go
│ │ │ ├── list_data_consistency_detector.go
│ │ │ └── watch_list_data_consistency_detector.go
│ │ ├── flowcontrol/
│ │ │ ├── backoff.go
│ │ │ └── throttle.go
│ │ ├── keyutil/
│ │ │ ├── OWNERS
│ │ │ └── key.go
│ │ ├── watchlist/
│ │ │ └── watch_list.go
│ │ └── workqueue/
│ │ ├── default_rate_limiters.go
│ │ ├── delaying_queue.go
│ │ ├── doc.go
│ │ ├── metrics.go
│ │ ├── parallelizer.go
│ │ ├── queue.go
│ │ └── rate_limiting_queue.go
│ ├── component-base/
│ │ ├── LICENSE
│ │ └── cli/
│ │ └── flag/
│ │ ├── ciphersuites_flag.go
│ │ ├── colon_separated_multimap_string_string.go
│ │ ├── configuration_map.go
│ │ ├── flags.go
│ │ ├── langle_separated_map_string_string.go
│ │ ├── map_string_bool.go
│ │ ├── map_string_string.go
│ │ ├── namedcertkey_flag.go
│ │ ├── noop.go
│ │ ├── omitempty.go
│ │ ├── sectioned.go
│ │ ├── string_flag.go
│ │ ├── string_slice_flag.go
│ │ └── tristate.go
│ ├── klog/
│ │ └── v2/
│ │ ├── .gitignore
│ │ ├── .golangci.yaml
│ │ ├── CONTRIBUTING.md
│ │ ├── LICENSE
│ │ ├── OWNERS
│ │ ├── README.md
│ │ ├── RELEASE.md
│ │ ├── SECURITY.md
│ │ ├── SECURITY_CONTACTS
│ │ ├── code-of-conduct.md
│ │ ├── contextual.go
│ │ ├── contextual_slog.go
│ │ ├── exit.go
│ │ ├── format.go
│ │ ├── imports.go
│ │ ├── internal/
│ │ │ ├── buffer/
│ │ │ │ └── buffer.go
│ │ │ ├── clock/
│ │ │ │ ├── README.md
│ │ │ │ └── clock.go
│ │ │ ├── dbg/
│ │ │ │ └── dbg.go
│ │ │ ├── serialize/
│ │ │ │ ├── keyvalues.go
│ │ │ │ ├── keyvalues_no_slog.go
│ │ │ │ └── keyvalues_slog.go
│ │ │ ├── severity/
│ │ │ │ └── severity.go
│ │ │ └── sloghandler/
│ │ │ └── sloghandler_slog.go
│ │ ├── k8s_references.go
│ │ ├── k8s_references_slog.go
│ │ ├── klog.go
│ │ ├── klog_file.go
│ │ ├── klog_file_others.go
│ │ ├── klog_file_windows.go
│ │ ├── klogr.go
│ │ ├── klogr_slog.go
│ │ └── safeptr.go
│ ├── kube-openapi/
│ │ ├── LICENSE
│ │ └── pkg/
│ │ ├── cached/
│ │ │ └── cache.go
│ │ ├── common/
│ │ │ ├── common.go
│ │ │ ├── doc.go
│ │ │ └── interfaces.go
│ │ ├── handler3/
│ │ │ └── handler.go
│ │ ├── internal/
│ │ │ ├── flags.go
│ │ │ ├── serialization.go
│ │ │ └── third_party/
│ │ │ └── go-json-experiment/
│ │ │ └── json/
│ │ │ ├── AUTHORS
│ │ │ ├── CONTRIBUTORS
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── arshal.go
│ │ │ ├── arshal_any.go
│ │ │ ├── arshal_default.go
│ │ │ ├── arshal_funcs.go
│ │ │ ├── arshal_inlined.go
│ │ │ ├── arshal_methods.go
│ │ │ ├── arshal_time.go
│ │ │ ├── decode.go
│ │ │ ├── doc.go
│ │ │ ├── encode.go
│ │ │ ├── errors.go
│ │ │ ├── fields.go
│ │ │ ├── fold.go
│ │ │ ├── intern.go
│ │ │ ├── pools.go
│ │ │ ├── state.go
│ │ │ ├── token.go
│ │ │ └── value.go
│ │ ├── schemaconv/
│ │ │ ├── openapi.go
│ │ │ ├── proto_models.go
│ │ │ └── smd.go
│ │ ├── spec3/
│ │ │ ├── component.go
│ │ │ ├── encoding.go
│ │ │ ├── example.go
│ │ │ ├── external_documentation.go
│ │ │ ├── fuzz.go
│ │ │ ├── header.go
│ │ │ ├── media_type.go
│ │ │ ├── operation.go
│ │ │ ├── parameter.go
│ │ │ ├── path.go
│ │ │ ├── request_body.go
│ │ │ ├── response.go
│ │ │ ├── security_scheme.go
│ │ │ ├── server.go
│ │ │ └── spec.go
│ │ ├── util/
│ │ │ └── proto/
│ │ │ ├── OWNERS
│ │ │ ├── doc.go
│ │ │ ├── document.go
│ │ │ ├── document_v3.go
│ │ │ └── openapi.go
│ │ └── validation/
│ │ └── spec/
│ │ ├── .gitignore
│ │ ├── LICENSE
│ │ ├── contact_info.go
│ │ ├── external_docs.go
│ │ ├── gnostic.go
│ │ ├── header.go
│ │ ├── info.go
│ │ ├── items.go
│ │ ├── license.go
│ │ ├── operation.go
│ │ ├── parameter.go
│ │ ├── path_item.go
│ │ ├── paths.go
│ │ ├── ref.go
│ │ ├── response.go
│ │ ├── responses.go
│ │ ├── schema.go
│ │ ├── security_scheme.go
│ │ ├── swagger.go
│ │ └── tag.go
│ └── utils/
│ ├── LICENSE
│ ├── buffer/
│ │ └── ring_growing.go
│ ├── clock/
│ │ ├── README.md
│ │ ├── clock.go
│ │ └── testing/
│ │ ├── fake_clock.go
│ │ └── simple_interval_clock.go
│ ├── internal/
│ │ └── third_party/
│ │ └── forked/
│ │ └── golang/
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ └── net/
│ │ ├── ip.go
│ │ └── parse.go
│ ├── net/
│ │ ├── ipfamily.go
│ │ ├── ipnet.go
│ │ ├── multi_listen.go
│ │ ├── net.go
│ │ ├── parse.go
│ │ └── port.go
│ ├── pointer/
│ │ ├── OWNERS
│ │ ├── README.md
│ │ └── pointer.go
│ ├── ptr/
│ │ ├── OWNERS
│ │ ├── README.md
│ │ └── ptr.go
│ └── trace/
│ ├── README.md
│ └── trace.go
├── modules.txt
└── sigs.k8s.io/
├── json/
│ ├── CONTRIBUTING.md
│ ├── LICENSE
│ ├── Makefile
│ ├── OWNERS
│ ├── README.md
│ ├── SECURITY.md
│ ├── SECURITY_CONTACTS
│ ├── code-of-conduct.md
│ ├── doc.go
│ ├── internal/
│ │ └── golang/
│ │ └── encoding/
│ │ └── json/
│ │ ├── decode.go
│ │ ├── encode.go
│ │ ├── fold.go
│ │ ├── fuzz.go
│ │ ├── indent.go
│ │ ├── kubernetes_patch.go
│ │ ├── scanner.go
│ │ ├── stream.go
│ │ ├── tables.go
│ │ └── tags.go
│ └── json.go
├── structured-merge-diff/
│ └── v4/
│ ├── LICENSE
│ ├── fieldpath/
│ │ ├── doc.go
│ │ ├── element.go
│ │ ├── fromvalue.go
│ │ ├── managers.go
│ │ ├── path.go
│ │ ├── pathelementmap.go
│ │ ├── serialize-pe.go
│ │ ├── serialize.go
│ │ └── set.go
│ ├── merge/
│ │ ├── conflict.go
│ │ └── update.go
│ ├── schema/
│ │ ├── doc.go
│ │ ├── elements.go
│ │ ├── equals.go
│ │ └── schemaschema.go
│ ├── typed/
│ │ ├── compare.go
│ │ ├── doc.go
│ │ ├── helpers.go
│ │ ├── merge.go
│ │ ├── parser.go
│ │ ├── reconcile_schema.go
│ │ ├── remove.go
│ │ ├── tofieldset.go
│ │ ├── typed.go
│ │ └── validate.go
│ └── value/
│ ├── allocator.go
│ ├── doc.go
│ ├── fields.go
│ ├── jsontagutil.go
│ ├── list.go
│ ├── listreflect.go
│ ├── listunstructured.go
│ ├── map.go
│ ├── mapreflect.go
│ ├── mapunstructured.go
│ ├── reflectcache.go
│ ├── scalar.go
│ ├── structreflect.go
│ ├── value.go
│ ├── valuereflect.go
│ └── valueunstructured.go
└── yaml/
├── .gitignore
├── .travis.yml
├── CONTRIBUTING.md
├── LICENSE
├── OWNERS
├── README.md
├── RELEASE.md
├── SECURITY_CONTACTS
├── code-of-conduct.md
├── fields.go
├── goyaml.v2/
│ ├── LICENSE
│ ├── LICENSE.libyaml
│ ├── NOTICE
│ ├── OWNERS
│ ├── README.md
│ ├── apic.go
│ ├── decode.go
│ ├── emitterc.go
│ ├── encode.go
│ ├── parserc.go
│ ├── readerc.go
│ ├── resolve.go
│ ├── scannerc.go
│ ├── sorter.go
│ ├── writerc.go
│ ├── yaml.go
│ ├── yamlh.go
│ └── yamlprivateh.go
├── yaml.go
└── yaml_go110.go
Copy disabled (too large)
Download .txt
Showing preview only (13,265K chars total). Download the full file to get everything.
SYMBOL INDEX (148449 symbols across 3268 files)
FILE: cmd/cluster-proportional-autoscaler/autoscaler.go
function main (line 33) | func main() {
FILE: cmd/cluster-proportional-autoscaler/options/options.go
type AutoScalerConfig (line 31) | type AutoScalerConfig struct
method ValidateFlags (line 52) | func (c *AutoScalerConfig) ValidateFlags() error {
method AddFlags (line 125) | func (c *AutoScalerConfig) AddFlags(fs *pflag.FlagSet) {
function NewAutoScalerConfig (line 43) | func NewAutoScalerConfig() *AutoScalerConfig {
function isTargetFormatValid (line 78) | func isTargetFormatValid(target string) bool {
type configMapData (line 98) | type configMapData
method Set (line 100) | func (c *configMapData) Set(raw string) error {
method String (line 116) | func (c *configMapData) String() string {
method Type (line 120) | func (c *configMapData) Type() string {
FILE: cmd/cluster-proportional-autoscaler/options/options_test.go
function TestIsTargetFormatValid (line 24) | func TestIsTargetFormatValid(t *testing.T) {
FILE: pkg/autoscaler/autoscaler_server.go
type AutoScaler (line 37) | type AutoScaler struct
method Run (line 88) | func (s *AutoScaler) Run() {
method tryPollAPIServer (line 106) | func (s *AutoScaler) tryPollAPIServer() {
method pollAPIServer (line 116) | func (s *AutoScaler) pollAPIServer() error {
method syncConfigWithServer (line 159) | func (s *AutoScaler) syncConfigWithServer() (*v1.ConfigMap, error) {
function NewAutoScaler (line 53) | func NewAutoScaler(c *options.AutoScalerConfig) (*AutoScaler, error) {
FILE: pkg/autoscaler/autoscaler_test.go
function TestRun (line 34) | func TestRun(t *testing.T) {
function TestRun_MaxRetries (line 210) | func TestRun_MaxRetries(t *testing.T) {
function waitForReplicasNumberSatisfy (line 260) | func waitForReplicasNumberSatisfy(t *testing.T, mockK8s *k8sclient.MockK...
type mockHealthServer (line 270) | type mockHealthServer struct
method Start (line 273) | func (s mockHealthServer) Start() {
FILE: pkg/autoscaler/controller/controller.go
type Controller (line 26) | type Controller interface
FILE: pkg/autoscaler/controller/laddercontroller/ladder_controller.go
constant ControllerType (line 36) | ControllerType = "ladder"
type LadderController (line 40) | type LadderController struct
method SyncConfig (line 72) | func (c *LadderController) SyncConfig(configMap *v1.ConfigMap) error {
method GetParamsVersion (line 111) | func (c *LadderController) GetParamsVersion() string {
method GetExpectedReplicas (line 115) | func (c *LadderController) GetExpectedReplicas(status *k8sclient.Clust...
method getExpectedReplicasFromParams (line 128) | func (c *LadderController) getExpectedReplicasFromParams(nodes, cores ...
method GetControllerType (line 155) | func (c *LadderController) GetControllerType() string {
function NewLadderController (line 46) | func NewLadderController() controller.Controller {
type paramEntry (line 50) | type paramEntry
type paramEntries (line 52) | type paramEntries
method Len (line 54) | func (entries paramEntries) Len() int {
method Less (line 58) | func (entries paramEntries) Less(i, j int) bool {
method Swap (line 62) | func (entries paramEntries) Swap(i, j int) {
type ladderParams (line 66) | type ladderParams struct
function parseParams (line 87) | func parseParams(data []byte) (*ladderParams, error) {
function getExpectedReplicasFromEntries (line 139) | func getExpectedReplicasFromEntries(resources int, entries []paramEntry)...
FILE: pkg/autoscaler/controller/laddercontroller/ladder_controller_test.go
function verifyParams (line 28) | func verifyParams(t *testing.T, scalerParams, expScalerParams *ladderPar...
function TestControllerParser (line 52) | func TestControllerParser(t *testing.T) {
function TestControllerSorter (line 178) | func TestControllerSorter(t *testing.T) {
function TestControllerScaler (line 271) | func TestControllerScaler(t *testing.T) {
function TestControllerScalerFromZero (line 308) | func TestControllerScalerFromZero(t *testing.T) {
function TestScaleFromUnschedulableNodes (line 340) | func TestScaleFromUnschedulableNodes(t *testing.T) {
FILE: pkg/autoscaler/controller/linearcontroller/linear_controller.go
constant ControllerType (line 36) | ControllerType = "linear"
type LinearController (line 40) | type LinearController struct
method SyncConfig (line 59) | func (c *LinearController) SyncConfig(configMap *v1.ConfigMap) error {
method GetParamsVersion (line 98) | func (c *LinearController) GetParamsVersion() string {
method GetExpectedReplicas (line 102) | func (c *LinearController) GetExpectedReplicas(status *k8sclient.Clust...
method getExpectedReplicasFromParams (line 109) | func (c *LinearController) getExpectedReplicasFromParams(schedulableNo...
method getExpectedReplicasFromParam (line 133) | func (c *LinearController) getExpectedReplicasFromParam(schedulableRes...
method GetControllerType (line 144) | func (c *LinearController) GetControllerType() string {
function NewLinearController (line 46) | func NewLinearController() controller.Controller {
type linearParams (line 50) | type linearParams struct
function parseParams (line 72) | func parseParams(data []byte) (*linearParams, error) {
FILE: pkg/autoscaler/controller/linearcontroller/linear_controller_test.go
function verifyParams (line 25) | func verifyParams(t *testing.T, scalerParams, expScalerParams *linearPar...
function TestControllerParser (line 34) | func TestControllerParser(t *testing.T) {
function TestScaleFromSingleParam (line 154) | func TestScaleFromSingleParam(t *testing.T) {
function TestScaleFromMultipleParams (line 189) | func TestScaleFromMultipleParams(t *testing.T) {
function TestScaleFromUnschedulableNodes (line 229) | func TestScaleFromUnschedulableNodes(t *testing.T) {
FILE: pkg/autoscaler/controller/plugin/plugin.go
function EnsureController (line 32) | func EnsureController(cont controller.Controller, configMap *v1.ConfigMa...
FILE: pkg/autoscaler/controller/plugin/plugin_test.go
function TestEnsureController (line 25) | func TestEnsureController(t *testing.T) {
FILE: pkg/autoscaler/health.go
type healthInfo (line 27) | type healthInfo struct
method setLastPollError (line 37) | func (h *healthInfo) setLastPollError(err error) int {
method getLastPollError (line 49) | func (h *healthInfo) getLastPollError() error {
function newHealthInfo (line 33) | func newHealthInfo() *healthInfo {
type HealthServer (line 55) | type HealthServer interface
type httpHealthServer (line 59) | type httpHealthServer struct
method Start (line 63) | func (hs *httpHealthServer) Start() {
method lastPollFn (line 69) | func (hs *httpHealthServer) lastPollFn(w http.ResponseWriter, req *htt...
FILE: pkg/autoscaler/k8sclient/k8sclient.go
type K8sClient (line 40) | type K8sClient interface
type k8sClient (line 56) | type k8sClient struct
method GetNamespace (line 152) | func (k *k8sClient) GetNamespace() (namespace string) {
method FetchConfigMap (line 156) | func (k *k8sClient) FetchConfigMap(namespace, configmap string) (*v1.C...
method CreateConfigMap (line 164) | func (k *k8sClient) CreateConfigMap(namespace, configmap string, param...
method UpdateConfigMap (line 177) | func (k *k8sClient) UpdateConfigMap(namespace, configmap string, param...
method GetClusterStatus (line 208) | func (k *k8sClient) GetClusterStatus() (clusterStatus *ClusterStatus, ...
method UpdateReplicas (line 232) | func (k *k8sClient) UpdateReplicas(expReplicas int32) (err error) {
method UpdateTargetReplicas (line 242) | func (k *k8sClient) UpdateTargetReplicas(expReplicas int32, target tar...
method getScaleExtensionsV1beta1 (line 276) | func (k *k8sClient) getScaleExtensionsV1beta1(target *target) (*extens...
method updateScaleExtensionsV1beta1 (line 288) | func (k *k8sClient) updateScaleExtensionsV1beta1(target *target, scale...
method updateReplicasAppsV1 (line 299) | func (k *k8sClient) updateReplicasAppsV1(expReplicas int32, target tar...
function getTrimmedNodeClients (line 64) | func getTrimmedNodeClients(clientset kubernetes.Interface, labelOptions ...
function NewK8sClient (line 91) | func NewK8sClient(clientset kubernetes.Interface, namespace, target stri...
function getScaleTargets (line 117) | func getScaleTargets(targets, namespace string) (*scaleTargets, error) {
function getTarget (line 131) | func getTarget(t string) (target, error) {
type target (line 141) | type target struct
type scaleTargets (line 147) | type scaleTargets struct
type ClusterStatus (line 191) | type ClusterStatus struct
function isNodeReady (line 199) | func isNodeReady(node *v1.Node) bool {
function requestForTarget (line 336) | func requestForTarget(req *rest.Request, target *target, namespace strin...
FILE: pkg/autoscaler/k8sclient/k8sclient_test.go
function TestGetTarget (line 31) | func TestGetTarget(t *testing.T) {
function TestGetScaleTargets (line 79) | func TestGetScaleTargets(t *testing.T) {
function TestNewK8sClient (line 149) | func TestNewK8sClient(t *testing.T) {
function TestGetTrimmedNodeClients (line 312) | func TestGetTrimmedNodeClients(t *testing.T) {
FILE: pkg/autoscaler/k8sclient/mock_k8sclient.go
type MockK8sClient (line 28) | type MockK8sClient struct
method FetchConfigMap (line 38) | func (k *MockK8sClient) FetchConfigMap(namespace, configmap string) (*...
method CreateConfigMap (line 49) | func (k *MockK8sClient) CreateConfigMap(namespace, configmap string, p...
method UpdateConfigMap (line 57) | func (k *MockK8sClient) UpdateConfigMap(namespace, configmap string, p...
method GetClusterStatus (line 62) | func (k *MockK8sClient) GetClusterStatus() (*ClusterStatus, error) {
method GetNamespace (line 67) | func (k *MockK8sClient) GetNamespace() string {
method UpdateReplicas (line 72) | func (k *MockK8sClient) UpdateReplicas(expReplicas int32) error {
FILE: vendor/github.com/davecgh/go-spew/spew/bypass.go
constant UnsafeDisabled (line 33) | UnsafeDisabled = false
constant ptrSize (line 36) | ptrSize = unsafe.Sizeof((*byte)(nil))
type flag (line 39) | type flag
constant flagKindMask (line 54) | flagKindMask = flag(0x1f)
function flagField (line 80) | func flagField(v *reflect.Value) *flag {
function unsafeReflectValue (line 93) | func unsafeReflectValue(v reflect.Value) reflect.Value {
function init (line 105) | func init() {
FILE: vendor/github.com/davecgh/go-spew/spew/bypasssafe.go
constant UnsafeDisabled (line 28) | UnsafeDisabled = true
function unsafeReflectValue (line 36) | func unsafeReflectValue(v reflect.Value) reflect.Value {
FILE: vendor/github.com/davecgh/go-spew/spew/common.go
function catchPanic (line 72) | func catchPanic(w io.Writer, v reflect.Value) {
function handleMethods (line 85) | func handleMethods(cs *ConfigState, w io.Writer, v reflect.Value) (handl...
function printBool (line 144) | func printBool(w io.Writer, val bool) {
function printInt (line 153) | func printInt(w io.Writer, val int64, base int) {
function printUint (line 158) | func printUint(w io.Writer, val uint64, base int) {
function printFloat (line 164) | func printFloat(w io.Writer, val float64, precision int) {
function printComplex (line 170) | func printComplex(w io.Writer, c complex128, floatPrecision int) {
function printHexPtr (line 185) | func printHexPtr(w io.Writer, p uintptr) {
type valuesSorter (line 219) | type valuesSorter struct
method Len (line 279) | func (s *valuesSorter) Len() int {
method Swap (line 285) | func (s *valuesSorter) Swap(i, j int) {
method Less (line 326) | func (s *valuesSorter) Less(i, j int) bool {
function newValuesSorter (line 228) | func newValuesSorter(values []reflect.Value, cs *ConfigState) sort.Inter...
function canSortSimply (line 256) | func canSortSimply(kind reflect.Kind) bool {
function valueSortLess (line 295) | func valueSortLess(a, b reflect.Value) bool {
function sortValues (line 336) | func sortValues(values []reflect.Value, cs *ConfigState) {
FILE: vendor/github.com/davecgh/go-spew/spew/config.go
type ConfigState (line 37) | type ConfigState struct
method Errorf (line 115) | func (c *ConfigState) Errorf(format string, a ...interface{}) (err err...
method Fprint (line 127) | func (c *ConfigState) Fprint(w io.Writer, a ...interface{}) (n int, er...
method Fprintf (line 139) | func (c *ConfigState) Fprintf(w io.Writer, format string, a ...interfa...
method Fprintln (line 150) | func (c *ConfigState) Fprintln(w io.Writer, a ...interface{}) (n int, ...
method Print (line 162) | func (c *ConfigState) Print(a ...interface{}) (n int, err error) {
method Printf (line 174) | func (c *ConfigState) Printf(format string, a ...interface{}) (n int, ...
method Println (line 186) | func (c *ConfigState) Println(a ...interface{}) (n int, err error) {
method Sprint (line 197) | func (c *ConfigState) Sprint(a ...interface{}) string {
method Sprintf (line 208) | func (c *ConfigState) Sprintf(format string, a ...interface{}) string {
method Sprintln (line 219) | func (c *ConfigState) Sprintln(a ...interface{}) string {
method NewFormatter (line 240) | func (c *ConfigState) NewFormatter(v interface{}) fmt.Formatter {
method Fdump (line 246) | func (c *ConfigState) Fdump(w io.Writer, a ...interface{}) {
method Dump (line 273) | func (c *ConfigState) Dump(a ...interface{}) {
method Sdump (line 279) | func (c *ConfigState) Sdump(a ...interface{}) string {
method convertArgs (line 288) | func (c *ConfigState) convertArgs(args []interface{}) (formatters []in...
function NewDefaultConfig (line 304) | func NewDefaultConfig() *ConfigState {
FILE: vendor/github.com/davecgh/go-spew/spew/dump.go
type dumpState (line 51) | type dumpState struct
method indent (line 62) | func (d *dumpState) indent() {
method unpackValue (line 73) | func (d *dumpState) unpackValue(v reflect.Value) reflect.Value {
method dumpPtr (line 81) | func (d *dumpState) dumpPtr(v reflect.Value) {
method dumpSlice (line 161) | func (d *dumpState) dumpSlice(v reflect.Value) {
method dump (line 251) | func (d *dumpState) dump(v reflect.Value) {
function fdump (line 453) | func fdump(cs *ConfigState, w io.Writer, a ...interface{}) {
function Fdump (line 472) | func Fdump(w io.Writer, a ...interface{}) {
function Sdump (line 478) | func Sdump(a ...interface{}) string {
function Dump (line 507) | func Dump(a ...interface{}) {
FILE: vendor/github.com/davecgh/go-spew/spew/format.go
constant supportedFlags (line 28) | supportedFlags = "0-+# "
type formatState (line 34) | type formatState struct
method buildDefaultFormat (line 47) | func (f *formatState) buildDefaultFormat() (format string) {
method constructOrigFormat (line 65) | func (f *formatState) constructOrigFormat(verb rune) (format string) {
method unpackValue (line 94) | func (f *formatState) unpackValue(v reflect.Value) reflect.Value {
method formatPtr (line 105) | func (f *formatState) formatPtr(v reflect.Value) {
method format (line 201) | func (f *formatState) format(v reflect.Value) {
method Format (line 371) | func (f *formatState) Format(fs fmt.State, verb rune) {
function newFormatter (line 394) | func newFormatter(cs *ConfigState, v interface{}) fmt.Formatter {
function NewFormatter (line 417) | func NewFormatter(v interface{}) fmt.Formatter {
FILE: vendor/github.com/davecgh/go-spew/spew/spew.go
function Errorf (line 32) | func Errorf(format string, a ...interface{}) (err error) {
function Fprint (line 44) | func Fprint(w io.Writer, a ...interface{}) (n int, err error) {
function Fprintf (line 56) | func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err e...
function Fprintln (line 67) | func Fprintln(w io.Writer, a ...interface{}) (n int, err error) {
function Print (line 79) | func Print(a ...interface{}) (n int, err error) {
function Printf (line 91) | func Printf(format string, a ...interface{}) (n int, err error) {
function Println (line 103) | func Println(a ...interface{}) (n int, err error) {
function Sprint (line 114) | func Sprint(a ...interface{}) string {
function Sprintf (line 125) | func Sprintf(format string, a ...interface{}) string {
function Sprintln (line 136) | func Sprintln(a ...interface{}) string {
function convertArgs (line 142) | func convertArgs(args []interface{}) (formatters []interface{}) {
FILE: vendor/github.com/emicklei/go-restful/v3/compress.go
type CompressingResponseWriter (line 22) | type CompressingResponseWriter struct
method Header (line 29) | func (c *CompressingResponseWriter) Header() http.Header {
method WriteHeader (line 34) | func (c *CompressingResponseWriter) WriteHeader(status int) {
method Write (line 40) | func (c *CompressingResponseWriter) Write(bytes []byte) (int, error) {
method CloseNotify (line 48) | func (c *CompressingResponseWriter) CloseNotify() <-chan bool {
method Close (line 53) | func (c *CompressingResponseWriter) Close() error {
method isCompressorClosed (line 70) | func (c *CompressingResponseWriter) isCompressorClosed() bool {
method Hijack (line 77) | func (c *CompressingResponseWriter) Hijack() (net.Conn, *bufio.ReadWri...
function wantsCompressedResponse (line 87) | func wantsCompressedResponse(httpRequest *http.Request, httpWriter http....
function NewCompressingResponseWriter (line 108) | func NewCompressingResponseWriter(httpWriter http.ResponseWriter, encodi...
FILE: vendor/github.com/emicklei/go-restful/v3/compressor_cache.go
type BoundedCachedCompressors (line 15) | type BoundedCachedCompressors struct
method AcquireGzipWriter (line 43) | func (b *BoundedCachedCompressors) AcquireGzipWriter() *gzip.Writer {
method ReleaseGzipWriter (line 56) | func (b *BoundedCachedCompressors) ReleaseGzipWriter(w *gzip.Writer) {
method AcquireGzipReader (line 64) | func (b *BoundedCachedCompressors) AcquireGzipReader() *gzip.Reader {
method ReleaseGzipReader (line 77) | func (b *BoundedCachedCompressors) ReleaseGzipReader(r *gzip.Reader) {
method AcquireZlibWriter (line 85) | func (b *BoundedCachedCompressors) AcquireZlibWriter() *zlib.Writer {
method ReleaseZlibWriter (line 98) | func (b *BoundedCachedCompressors) ReleaseZlibWriter(w *zlib.Writer) {
function NewBoundedCachedCompressors (line 24) | func NewBoundedCachedCompressors(writersCapacity, readersCapacity int) *...
FILE: vendor/github.com/emicklei/go-restful/v3/compressor_pools.go
type SyncPoolCompessors (line 15) | type SyncPoolCompessors struct
method AcquireGzipWriter (line 36) | func (s *SyncPoolCompessors) AcquireGzipWriter() *gzip.Writer {
method ReleaseGzipWriter (line 40) | func (s *SyncPoolCompessors) ReleaseGzipWriter(w *gzip.Writer) {
method AcquireGzipReader (line 44) | func (s *SyncPoolCompessors) AcquireGzipReader() *gzip.Reader {
method ReleaseGzipReader (line 48) | func (s *SyncPoolCompessors) ReleaseGzipReader(r *gzip.Reader) {
method AcquireZlibWriter (line 52) | func (s *SyncPoolCompessors) AcquireZlibWriter() *zlib.Writer {
method ReleaseZlibWriter (line 56) | func (s *SyncPoolCompessors) ReleaseZlibWriter(w *zlib.Writer) {
function NewSyncPoolCompessors (line 22) | func NewSyncPoolCompessors() *SyncPoolCompessors {
function newGzipWriter (line 60) | func newGzipWriter() *gzip.Writer {
function newGzipReader (line 69) | func newGzipReader() *gzip.Reader {
function newZlibWriter (line 85) | func newZlibWriter() *zlib.Writer {
FILE: vendor/github.com/emicklei/go-restful/v3/compressors.go
type CompressorProvider (line 13) | type CompressorProvider interface
function init (line 38) | func init() {
function CurrentCompressorProvider (line 44) | func CurrentCompressorProvider() CompressorProvider {
function SetCompressorProvider (line 49) | func SetCompressorProvider(p CompressorProvider) {
FILE: vendor/github.com/emicklei/go-restful/v3/constants.go
constant MIME_XML (line 8) | MIME_XML = "application/xml"
constant MIME_JSON (line 9) | MIME_JSON = "application/json"
constant MIME_ZIP (line 10) | MIME_ZIP = "application/zip"
constant MIME_OCTET (line 11) | MIME_OCTET = "application/octet-stream"
constant HEADER_Allow (line 13) | HEADER_Allow = "Allow"
constant HEADER_Accept (line 14) | HEADER_Accept = "Accept"
constant HEADER_Origin (line 15) | HEADER_Origin = "Origin"
constant HEADER_ContentType (line 16) | HEADER_ContentType = "Content-Type"
constant HEADER_ContentDisposition (line 17) | HEADER_ContentDisposition = "Content-Disposition"
constant HEADER_LastModified (line 18) | HEADER_LastModified = "Last-Modified"
constant HEADER_AcceptEncoding (line 19) | HEADER_AcceptEncoding = "Accept-Encoding"
constant HEADER_ContentEncoding (line 20) | HEADER_ContentEncoding = "Content-Encoding"
constant HEADER_AccessControlExposeHeaders (line 21) | HEADER_AccessControlExposeHeaders = "Access-Control-Expose-Headers"
constant HEADER_AccessControlRequestMethod (line 22) | HEADER_AccessControlRequestMethod = "Access-Control-Request-Method"
constant HEADER_AccessControlRequestHeaders (line 23) | HEADER_AccessControlRequestHeaders = "Access-Control-Request-Headers"
constant HEADER_AccessControlAllowMethods (line 24) | HEADER_AccessControlAllowMethods = "Access-Control-Allow-Methods"
constant HEADER_AccessControlAllowOrigin (line 25) | HEADER_AccessControlAllowOrigin = "Access-Control-Allow-Origin"
constant HEADER_AccessControlAllowCredentials (line 26) | HEADER_AccessControlAllowCredentials = "Access-Control-Allow-Credentials"
constant HEADER_AccessControlAllowHeaders (line 27) | HEADER_AccessControlAllowHeaders = "Access-Control-Allow-Headers"
constant HEADER_AccessControlMaxAge (line 28) | HEADER_AccessControlMaxAge = "Access-Control-Max-Age"
constant ENCODING_GZIP (line 30) | ENCODING_GZIP = "gzip"
constant ENCODING_DEFLATE (line 31) | ENCODING_DEFLATE = "deflate"
FILE: vendor/github.com/emicklei/go-restful/v3/container.go
type Container (line 22) | type Container struct
method RecoverHandler (line 55) | func (c *Container) RecoverHandler(handler RecoverHandleFunction) {
method ServiceErrorHandler (line 66) | func (c *Container) ServiceErrorHandler(handler ServiceErrorHandleFunc...
method DoNotRecover (line 73) | func (c *Container) DoNotRecover(doNot bool) {
method Router (line 78) | func (c *Container) Router(aRouter RouteSelector) {
method EnableContentEncoding (line 83) | func (c *Container) EnableContentEncoding(enabled bool) {
method Add (line 88) | func (c *Container) Add(service *WebService) *Container {
method addHandler (line 116) | func (c *Container) addHandler(service *WebService, serveMux *http.Ser...
method Remove (line 140) | func (c *Container) Remove(ws *WebService) error {
method Dispatch (line 197) | func (c *Container) Dispatch(httpWriter http.ResponseWriter, httpReque...
method dispatch (line 208) | func (c *Container) dispatch(httpWriter http.ResponseWriter, httpReque...
method ServeHTTP (line 313) | func (c *Container) ServeHTTP(httpWriter http.ResponseWriter, httpRequ...
method Handle (line 350) | func (c *Container) Handle(pattern string, handler http.Handler) {
method HandleWithFilter (line 387) | func (c *Container) HandleWithFilter(pattern string, handler http.Hand...
method Filter (line 405) | func (c *Container) Filter(filter FilterFunction) {
method RegisteredWebServices (line 410) | func (c *Container) RegisteredWebServices() []*WebService {
method computeAllowedMethods (line 421) | func (c *Container) computeAllowedMethods(req *Request) []string {
function NewContainer (line 36) | func NewContainer() *Container {
type RecoverHandleFunction (line 51) | type RecoverHandleFunction
type ServiceErrorHandleFunction (line 62) | type ServiceErrorHandleFunction
function logStackOnRecover (line 169) | func logStackOnRecover(panicReason interface{}, httpWriter http.Response...
function writeServiceError (line 187) | func writeServiceError(err ServiceError, req *Request, resp *Response) {
function fixedPrefixPath (line 304) | func fixedPrefixPath(pathspec string) string {
function newBasicRequestResponse (line 446) | func newBasicRequestResponse(httpWriter http.ResponseWriter, httpRequest...
FILE: vendor/github.com/emicklei/go-restful/v3/cors_filter.go
type CrossOriginResourceSharing (line 20) | type CrossOriginResourceSharing struct
method Filter (line 47) | func (c CrossOriginResourceSharing) Filter(req *Request, resp *Respons...
method doActualRequest (line 77) | func (c CrossOriginResourceSharing) doActualRequest(req *Request, resp...
method doPreflightRequest (line 82) | func (c *CrossOriginResourceSharing) doPreflightRequest(req *Request, ...
method setOptionsHeaders (line 122) | func (c CrossOriginResourceSharing) setOptionsHeaders(req *Request, re...
method isOriginAllowed (line 131) | func (c CrossOriginResourceSharing) isOriginAllowed(origin string) bool {
method setAllowOriginHeader (line 155) | func (c CrossOriginResourceSharing) setAllowOriginHeader(req *Request,...
method checkAndSetExposeHeaders (line 162) | func (c CrossOriginResourceSharing) checkAndSetExposeHeaders(resp *Res...
method checkAndSetAllowCredentials (line 168) | func (c CrossOriginResourceSharing) checkAndSetAllowCredentials(resp *...
method isValidAccessControlRequestMethod (line 174) | func (c CrossOriginResourceSharing) isValidAccessControlRequestMethod(...
method isValidAccessControlRequestHeader (line 183) | func (c CrossOriginResourceSharing) isValidAccessControlRequestHeader(...
FILE: vendor/github.com/emicklei/go-restful/v3/curly.go
type CurlyRouter (line 15) | type CurlyRouter struct
method SelectRoute (line 19) | func (c CurlyRouter) SelectRoute(
method selectRoutes (line 47) | func (c CurlyRouter) selectRoutes(ws *WebService, requestTokens []stri...
method matchesRouteByPathTokens (line 60) | func (c CurlyRouter) matchesRouteByPathTokens(routeTokens, requestToke...
method regularMatchesPathToken (line 108) | func (c CurlyRouter) regularMatchesPathToken(routeToken string, colon ...
method detectRoute (line 124) | func (c CurlyRouter) detectRoute(candidateRoutes sortableCurlyRoutes, ...
method detectWebService (line 131) | func (c CurlyRouter) detectWebService(requestTokens []string, webServi...
method computeWebserviceScore (line 146) | func (c CurlyRouter) computeWebserviceScore(requestTokens []string, to...
FILE: vendor/github.com/emicklei/go-restful/v3/curly_route.go
type curlyRoute (line 8) | type curlyRoute struct
type sortableCurlyRoutes (line 15) | type sortableCurlyRoutes
method add (line 17) | func (s *sortableCurlyRoutes) add(route curlyRoute) {
method routes (line 21) | func (s sortableCurlyRoutes) routes() (routes []Route) {
method Len (line 29) | func (s sortableCurlyRoutes) Len() int {
method Swap (line 32) | func (s sortableCurlyRoutes) Swap(i, j int) {
method Less (line 35) | func (s sortableCurlyRoutes) Less(i, j int) bool {
FILE: vendor/github.com/emicklei/go-restful/v3/custom_verb.go
function hasCustomVerb (line 12) | func hasCustomVerb(routeToken string) bool {
function isMatchCustomVerb (line 16) | func isMatchCustomVerb(routeToken string, pathToken string) bool {
function removeCustomVerb (line 27) | func removeCustomVerb(str string) string {
FILE: vendor/github.com/emicklei/go-restful/v3/entity_accessors.go
type EntityReaderWriter (line 14) | type EntityReaderWriter interface
type entityReaderWriters (line 32) | type entityReaderWriters struct
method accessorAt (line 62) | func (r *entityReaderWriters) accessorAt(mime string) (EntityReaderWri...
function init (line 37) | func init() {
function RegisterEntityAccessor (line 43) | func RegisterEntityAccessor(mime string, erw EntityReaderWriter) {
function NewEntityAccessorJSON (line 51) | func NewEntityAccessorJSON(contentType string) EntityReaderWriter {
function NewEntityAccessorXML (line 57) | func NewEntityAccessorXML(contentType string) EntityReaderWriter {
type entityXMLAccess (line 79) | type entityXMLAccess struct
method Read (line 85) | func (e entityXMLAccess) Read(req *Request, v interface{}) error {
method Write (line 90) | func (e entityXMLAccess) Write(resp *Response, status int, v interface...
function writeXML (line 95) | func writeXML(resp *Response, status int, contentType string, v interfac...
type entityJSONAccess (line 123) | type entityJSONAccess struct
method Read (line 129) | func (e entityJSONAccess) Read(req *Request, v interface{}) error {
method Write (line 136) | func (e entityJSONAccess) Write(resp *Response, status int, v interfac...
function writeJSON (line 141) | func writeJSON(resp *Response, status int, contentType string, v interfa...
FILE: vendor/github.com/emicklei/go-restful/v3/extensions.go
type ExtensionProperties (line 8) | type ExtensionProperties struct
method AddExtension (line 15) | func (ep *ExtensionProperties) AddExtension(key string, value interfac...
FILE: vendor/github.com/emicklei/go-restful/v3/filter.go
type FilterChain (line 8) | type FilterChain struct
method ProcessFilter (line 18) | func (f *FilterChain) ProcessFilter(request *Request, response *Respon...
type FilterFunction (line 28) | type FilterFunction
function NoBrowserCacheFilter (line 32) | func NoBrowserCacheFilter(req *Request, resp *Response, chain *FilterCha...
FILE: vendor/github.com/emicklei/go-restful/v3/filter_adapter.go
type HttpMiddlewareHandler (line 8) | type HttpMiddlewareHandler
function HttpMiddlewareHandlerToFilter (line 11) | func HttpMiddlewareHandlerToFilter(middleware HttpMiddlewareHandler) Fil...
FILE: vendor/github.com/emicklei/go-restful/v3/jsr311.go
type RouterJSR311 (line 19) | type RouterJSR311 struct
method SelectRoute (line 23) | func (r RouterJSR311) SelectRoute(
method ExtractParameters (line 45) | func (r RouterJSR311) ExtractParameters(route *Route, webService *WebS...
method extractParams (line 58) | func (RouterJSR311) extractParams(pathExpr *pathExpression, matches []...
method detectRoute (line 69) | func (r RouterJSR311) detectRoute(routes []Route, httpRequest *http.Re...
method bestMatchByMedia (line 175) | func (r RouterJSR311) bestMatchByMedia(routes []Route, contentType str...
method selectRoutes (line 181) | func (r RouterJSR311) selectRoutes(dispatcher *WebService, pathRemaind...
method detectDispatcher (line 214) | func (r RouterJSR311) detectDispatcher(requestPath string, dispatchers...
type routeCandidate (line 235) | type routeCandidate struct
method expressionToMatch (line 242) | func (r routeCandidate) expressionToMatch() string {
method String (line 246) | func (r routeCandidate) String() string {
type sortableRouteCandidates (line 250) | type sortableRouteCandidates struct
method Len (line 254) | func (rcs *sortableRouteCandidates) Len() int {
method Swap (line 257) | func (rcs *sortableRouteCandidates) Swap(i, j int) {
method Less (line 260) | func (rcs *sortableRouteCandidates) Less(i, j int) bool {
type dispatcherCandidate (line 290) | type dispatcherCandidate struct
type sortableDispatcherCandidates (line 297) | type sortableDispatcherCandidates struct
method Len (line 301) | func (dc *sortableDispatcherCandidates) Len() int {
method Swap (line 304) | func (dc *sortableDispatcherCandidates) Swap(i, j int) {
method Less (line 307) | func (dc *sortableDispatcherCandidates) Less(i, j int) bool {
FILE: vendor/github.com/emicklei/go-restful/v3/log/log.go
type StdLogger (line 9) | type StdLogger interface
function init (line 16) | func init() {
function SetLogger (line 22) | func SetLogger(customLogger StdLogger) {
function Print (line 27) | func Print(v ...interface{}) {
function Printf (line 32) | func Printf(format string, v ...interface{}) {
FILE: vendor/github.com/emicklei/go-restful/v3/logger.go
function init (line 13) | func init() {
function TraceLogger (line 19) | func TraceLogger(logger log.StdLogger) {
function SetLogger (line 25) | func SetLogger(customLogger log.StdLogger) {
function EnableTracing (line 30) | func EnableTracing(enabled bool) {
FILE: vendor/github.com/emicklei/go-restful/v3/mime.go
type mime (line 8) | type mime struct
function insertMime (line 14) | func insertMime(l []mime, e mime) []mime {
constant qFactorWeightingKey (line 25) | qFactorWeightingKey = "q"
function sortedMimes (line 29) | func sortedMimes(accept string) (sorted []mime) {
FILE: vendor/github.com/emicklei/go-restful/v3/options_filter.go
method OPTIONSFilter (line 13) | func (c *Container) OPTIONSFilter(req *Request, resp *Response, chain *F...
function OPTIONSFilter (line 32) | func OPTIONSFilter() FilterFunction {
FILE: vendor/github.com/emicklei/go-restful/v3/parameter.go
constant PathParameterKind (line 11) | PathParameterKind = iota
constant QueryParameterKind (line 14) | QueryParameterKind
constant BodyParameterKind (line 17) | BodyParameterKind
constant HeaderParameterKind (line 20) | HeaderParameterKind
constant FormParameterKind (line 23) | FormParameterKind
constant MultiPartFormParameterKind (line 26) | MultiPartFormParameterKind
constant CollectionFormatCSV (line 29) | CollectionFormatCSV = CollectionFormat("csv")
constant CollectionFormatSSV (line 32) | CollectionFormatSSV = CollectionFormat("ssv")
constant CollectionFormatTSV (line 35) | CollectionFormatTSV = CollectionFormat("tsv")
constant CollectionFormatPipes (line 38) | CollectionFormatPipes = CollectionFormat("pipes")
constant CollectionFormatMulti (line 42) | CollectionFormatMulti = CollectionFormat("multi")
type CollectionFormat (line 45) | type CollectionFormat
method String (line 47) | func (cf CollectionFormat) String() string {
type Parameter (line 53) | type Parameter struct
method Data (line 82) | func (p *Parameter) Data() ParameterData {
method Kind (line 87) | func (p *Parameter) Kind() int {
method bePath (line 91) | func (p *Parameter) bePath() *Parameter {
method beQuery (line 95) | func (p *Parameter) beQuery() *Parameter {
method beBody (line 99) | func (p *Parameter) beBody() *Parameter {
method beHeader (line 104) | func (p *Parameter) beHeader() *Parameter {
method beForm (line 109) | func (p *Parameter) beForm() *Parameter {
method beMultiPartForm (line 114) | func (p *Parameter) beMultiPartForm() *Parameter {
method Required (line 120) | func (p *Parameter) Required(required bool) *Parameter {
method AllowMultiple (line 126) | func (p *Parameter) AllowMultiple(multiple bool) *Parameter {
method AddExtension (line 132) | func (p *Parameter) AddExtension(key string, value interface{}) *Param...
method AllowEmptyValue (line 138) | func (p *Parameter) AllowEmptyValue(multiple bool) *Parameter {
method AllowableValues (line 144) | func (p *Parameter) AllowableValues(values map[string]string) *Paramet...
method PossibleValues (line 161) | func (p *Parameter) PossibleValues(values []string) *Parameter {
method DataType (line 167) | func (p *Parameter) DataType(typeName string) *Parameter {
method DataFormat (line 173) | func (p *Parameter) DataFormat(formatName string) *Parameter {
method DefaultValue (line 179) | func (p *Parameter) DefaultValue(stringRepresentation string) *Paramet...
method Description (line 185) | func (p *Parameter) Description(doc string) *Parameter {
method CollectionFormat (line 191) | func (p *Parameter) CollectionFormat(format CollectionFormat) *Paramet...
method Pattern (line 197) | func (p *Parameter) Pattern(pattern string) *Parameter {
method Minimum (line 203) | func (p *Parameter) Minimum(minimum float64) *Parameter {
method Maximum (line 209) | func (p *Parameter) Maximum(maximum float64) *Parameter {
method MinLength (line 215) | func (p *Parameter) MinLength(minLength int64) *Parameter {
method MaxLength (line 221) | func (p *Parameter) MaxLength(maxLength int64) *Parameter {
method MinItems (line 227) | func (p *Parameter) MinItems(minItems int64) *Parameter {
method MaxItems (line 233) | func (p *Parameter) MaxItems(maxItems int64) *Parameter {
method UniqueItems (line 239) | func (p *Parameter) UniqueItems(uniqueItems bool) *Parameter {
type ParameterData (line 59) | type ParameterData struct
FILE: vendor/github.com/emicklei/go-restful/v3/path_expression.go
type pathExpression (line 16) | type pathExpression struct
function newPathExpression (line 27) | func newPathExpression(path string) (*pathExpression, error) {
function templateToRegularExpression (line 37) | func templateToRegularExpression(template string) (expression string, li...
FILE: vendor/github.com/emicklei/go-restful/v3/path_processor.go
type PathProcessor (line 14) | type PathProcessor interface
type defaultPathProcessor (line 19) | type defaultPathProcessor struct
method ExtractParameters (line 22) | func (d defaultPathProcessor) ExtractParameters(r *Route, _ *WebServic...
function untokenizePath (line 64) | func untokenizePath(offset int, parts []string) string {
FILE: vendor/github.com/emicklei/go-restful/v3/request.go
type Request (line 15) | type Request struct
method PathParameter (line 41) | func (r *Request) PathParameter(name string) string {
method PathParameters (line 46) | func (r *Request) PathParameters() map[string]string {
method QueryParameter (line 51) | func (r *Request) QueryParameter(name string) string {
method QueryParameters (line 56) | func (r *Request) QueryParameters(name string) []string {
method BodyParameter (line 61) | func (r *Request) BodyParameter(name string) (string, error) {
method HeaderParameter (line 70) | func (r *Request) HeaderParameter(name string) string {
method ReadEntity (line 75) | func (r *Request) ReadEntity(entityPointer interface{}) (err error) {
method SetAttribute (line 107) | func (r *Request) SetAttribute(name string, value interface{}) {
method Attribute (line 112) | func (r Request) Attribute(name string) interface{} {
method SelectedRoutePath (line 118) | func (r Request) SelectedRoutePath() string {
method SelectedRoute (line 128) | func (r Request) SelectedRoute() RouteReader {
function NewRequest (line 22) | func NewRequest(httpRequest *http.Request) *Request {
function DefaultRequestContentType (line 36) | func DefaultRequestContentType(mime string) {
FILE: vendor/github.com/emicklei/go-restful/v3/response.go
type Response (line 22) | type Response struct
method InternalServerError (line 50) | func (r Response) InternalServerError() Response {
method Hijack (line 58) | func (r *Response) Hijack() (net.Conn, *bufio.ReadWriter, error) {
method PrettyPrint (line 66) | func (r *Response) PrettyPrint(bePretty bool) {
method AddHeader (line 71) | func (r Response) AddHeader(header string, value string) Response {
method SetRequestAccepts (line 77) | func (r *Response) SetRequestAccepts(mime string) {
method EntityWriter (line 84) | func (r *Response) EntityWriter() (EntityReaderWriter, bool) {
method WriteEntity (line 130) | func (r *Response) WriteEntity(value interface{}) error {
method WriteHeaderAndEntity (line 141) | func (r *Response) WriteHeaderAndEntity(status int, value interface{})...
method WriteAsXml (line 152) | func (r *Response) WriteAsXml(value interface{}) error {
method WriteHeaderAndXml (line 158) | func (r *Response) WriteHeaderAndXml(status int, value interface{}) er...
method WriteAsJson (line 164) | func (r *Response) WriteAsJson(value interface{}) error {
method WriteJson (line 170) | func (r *Response) WriteJson(value interface{}, contentType string) er...
method WriteHeaderAndJson (line 176) | func (r *Response) WriteHeaderAndJson(status int, value interface{}, c...
method WriteError (line 182) | func (r *Response) WriteError(httpStatus int, err error) (writeErr err...
method WriteServiceError (line 193) | func (r *Response) WriteServiceError(httpStatus int, err ServiceError)...
method WriteErrorString (line 199) | func (r *Response) WriteErrorString(httpStatus int, errorReason string...
method Flush (line 212) | func (r *Response) Flush() {
method WriteHeader (line 222) | func (r *Response) WriteHeader(httpStatus int) {
method StatusCode (line 228) | func (r Response) StatusCode() int {
method Write (line 238) | func (r *Response) Write(bytes []byte) (int, error) {
method ContentLength (line 247) | func (r Response) ContentLength() int {
method CloseNotify (line 252) | func (r Response) CloseNotify() <-chan bool {
method Error (line 257) | func (r Response) Error() error {
function NewResponse (line 34) | func NewResponse(httpWriter http.ResponseWriter) *Response {
function DefaultResponseContentType (line 44) | func DefaultResponseContentType(mime string) {
FILE: vendor/github.com/emicklei/go-restful/v3/route.go
type RouteFunction (line 13) | type RouteFunction
type RouteSelectionConditionFunction (line 18) | type RouteSelectionConditionFunction
type Route (line 21) | type Route struct
method postBuild (line 65) | func (r *Route) postBuild() {
method wrapRequestResponse (line 71) | func (r *Route) wrapRequestResponse(httpWriter http.ResponseWriter, ht...
method matchesAccept (line 86) | func (r Route) matchesAccept(mimeTypesWithQuality string) bool {
method matchesContentType (line 114) | func (r Route) matchesContentType(mimeTypes string) bool {
method String (line 178) | func (r *Route) String() string {
method EnableContentEncoding (line 183) | func (r *Route) EnableContentEncoding(enabled bool) {
function stringTrimSpaceCutset (line 81) | func stringTrimSpaceCutset(r rune) bool {
function tokenizePath (line 164) | func tokenizePath(path string) []string {
FILE: vendor/github.com/emicklei/go-restful/v3/route_builder.go
type RouteBuilder (line 20) | type RouteBuilder struct
method Do (line 57) | func (b *RouteBuilder) Do(oneArgBlocks ...func(*RouteBuilder)) *RouteB...
method To (line 66) | func (b *RouteBuilder) To(function RouteFunction) *RouteBuilder {
method Method (line 72) | func (b *RouteBuilder) Method(method string) *RouteBuilder {
method Produces (line 78) | func (b *RouteBuilder) Produces(mimeTypes ...string) *RouteBuilder {
method Consumes (line 84) | func (b *RouteBuilder) Consumes(mimeTypes ...string) *RouteBuilder {
method Path (line 90) | func (b *RouteBuilder) Path(subPath string) *RouteBuilder {
method Doc (line 96) | func (b *RouteBuilder) Doc(documentation string) *RouteBuilder {
method Notes (line 102) | func (b *RouteBuilder) Notes(notes string) *RouteBuilder {
method Reads (line 109) | func (b *RouteBuilder) Reads(sample interface{}, optionalDescription ....
method ParameterNamed (line 130) | func (b RouteBuilder) ParameterNamed(name string) (p *Parameter) {
method Writes (line 140) | func (b *RouteBuilder) Writes(samples ...interface{}) *RouteBuilder {
method Param (line 146) | func (b *RouteBuilder) Param(parameter *Parameter) *RouteBuilder {
method Operation (line 156) | func (b *RouteBuilder) Operation(name string) *RouteBuilder {
method ReturnsError (line 162) | func (b *RouteBuilder) ReturnsError(code int, message string, model in...
method Returns (line 169) | func (b *RouteBuilder) Returns(code int, message string, model interfa...
method ReturnsWithHeaders (line 185) | func (b *RouteBuilder) ReturnsWithHeaders(code int, message string, mo...
method DefaultReturns (line 194) | func (b *RouteBuilder) DefaultReturns(message string, model interface{...
method Metadata (line 203) | func (b *RouteBuilder) Metadata(key string, value interface{}) *RouteB...
method AddExtension (line 212) | func (b *RouteBuilder) AddExtension(key string, value interface{}) *Ro...
method Deprecate (line 221) | func (b *RouteBuilder) Deprecate() *RouteBuilder {
method AllowedMethodsWithoutContentType (line 230) | func (b *RouteBuilder) AllowedMethodsWithoutContentType(methods []stri...
method servicePath (line 262) | func (b *RouteBuilder) servicePath(path string) *RouteBuilder {
method Filter (line 268) | func (b *RouteBuilder) Filter(filter FilterFunction) *RouteBuilder {
method If (line 283) | func (b *RouteBuilder) If(condition RouteSelectionConditionFunction) *...
method ContentEncodingEnabled (line 289) | func (b *RouteBuilder) ContentEncodingEnabled(enabled bool) *RouteBuil...
method copyDefaults (line 297) | func (b *RouteBuilder) copyDefaults(rootProduces, rootConsumes []strin...
method typeNameHandler (line 308) | func (b *RouteBuilder) typeNameHandler(handler TypeNameHandleFunction)...
method Build (line 314) | func (b *RouteBuilder) Build() Route {
type ResponseError (line 236) | type ResponseError struct
type Header (line 248) | type Header struct
type Items (line 254) | type Items struct
function concatPath (line 362) | func concatPath(rootPath, routePath string) string {
function nameOfFunction (line 375) | func nameOfFunction(f interface{}) string {
FILE: vendor/github.com/emicklei/go-restful/v3/route_reader.go
type RouteReader (line 7) | type RouteReader interface
type routeAccessor (line 20) | type routeAccessor struct
method Method (line 24) | func (r routeAccessor) Method() string {
method Consumes (line 27) | func (r routeAccessor) Consumes() []string {
method Path (line 30) | func (r routeAccessor) Path() string {
method Doc (line 33) | func (r routeAccessor) Doc() string {
method Notes (line 36) | func (r routeAccessor) Notes() string {
method Operation (line 39) | func (r routeAccessor) Operation() string {
method ParameterDocs (line 42) | func (r routeAccessor) ParameterDocs() []*Parameter {
method Metadata (line 47) | func (r routeAccessor) Metadata() map[string]interface{} {
method Deprecated (line 50) | func (r routeAccessor) Deprecated() bool {
function copyMap (line 55) | func copyMap(m map[string]interface{}) map[string]interface{} {
FILE: vendor/github.com/emicklei/go-restful/v3/router.go
type RouteSelector (line 12) | type RouteSelector interface
FILE: vendor/github.com/emicklei/go-restful/v3/service_error.go
type ServiceError (line 13) | type ServiceError struct
method Error (line 30) | func (s ServiceError) Error() string {
function NewError (line 20) | func NewError(code int, message string) ServiceError {
function NewErrorWithHeader (line 25) | func NewErrorWithHeader(code int, message string, header http.Header) Se...
FILE: vendor/github.com/emicklei/go-restful/v3/web_service.go
type WebService (line 17) | type WebService struct
method SetDynamicRoutes (line 36) | func (w *WebService) SetDynamicRoutes(enable bool) {
method TypeNameHandler (line 47) | func (w *WebService) TypeNameHandler(handler TypeNameHandleFunction) *...
method compilePathExpression (line 60) | func (w *WebService) compilePathExpression() {
method ApiVersion (line 70) | func (w *WebService) ApiVersion(apiVersion string) *WebService {
method Version (line 76) | func (w *WebService) Version() string { return w.apiVersion }
method Path (line 80) | func (w *WebService) Path(root string) *WebService {
method Param (line 90) | func (w *WebService) Param(parameter *Parameter) *WebService {
method PathParameter (line 100) | func (w *WebService) PathParameter(name, description string) *Parameter {
method QueryParameter (line 114) | func (w *WebService) QueryParameter(name, description string) *Paramet...
method BodyParameter (line 128) | func (w *WebService) BodyParameter(name, description string) *Parameter {
method HeaderParameter (line 142) | func (w *WebService) HeaderParameter(name, description string) *Parame...
method FormParameter (line 156) | func (w *WebService) FormParameter(name, description string) *Parameter {
method MultiPartFormParameter (line 170) | func (w *WebService) MultiPartFormParameter(name, description string) ...
method Route (line 181) | func (w *WebService) Route(builder *RouteBuilder) *WebService {
method RemoveRoute (line 190) | func (w *WebService) RemoveRoute(path, method string) error {
method Method (line 208) | func (w *WebService) Method(httpMethod string) *RouteBuilder {
method Produces (line 214) | func (w *WebService) Produces(contentTypes ...string) *WebService {
method Consumes (line 221) | func (w *WebService) Consumes(accepts ...string) *WebService {
method Routes (line 227) | func (w *WebService) Routes() []Route {
method RootPath (line 242) | func (w *WebService) RootPath() string {
method PathParameters (line 247) | func (w *WebService) PathParameters() []*Parameter {
method Filter (line 252) | func (w *WebService) Filter(filter FilterFunction) *WebService {
method Doc (line 258) | func (w *WebService) Doc(plainText string) *WebService {
method Documentation (line 264) | func (w *WebService) Documentation() string {
method HEAD (line 273) | func (w *WebService) HEAD(subPath string) *RouteBuilder {
method GET (line 278) | func (w *WebService) GET(subPath string) *RouteBuilder {
method POST (line 283) | func (w *WebService) POST(subPath string) *RouteBuilder {
method PUT (line 288) | func (w *WebService) PUT(subPath string) *RouteBuilder {
method PATCH (line 293) | func (w *WebService) PATCH(subPath string) *RouteBuilder {
method DELETE (line 298) | func (w *WebService) DELETE(subPath string) *RouteBuilder {
method OPTIONS (line 303) | func (w *WebService) OPTIONS(subPath string) *RouteBuilder {
type TypeNameHandleFunction (line 42) | type TypeNameHandleFunction
function reflectTypeName (line 55) | func reflectTypeName(sample interface{}) string {
function PathParameter (line 106) | func PathParameter(name, description string) *Parameter {
function QueryParameter (line 120) | func QueryParameter(name, description string) *Parameter {
function BodyParameter (line 134) | func BodyParameter(name, description string) *Parameter {
function HeaderParameter (line 148) | func HeaderParameter(name, description string) *Parameter {
function FormParameter (line 162) | func FormParameter(name, description string) *Parameter {
function MultiPartFormParameter (line 174) | func MultiPartFormParameter(name, description string) *Parameter {
FILE: vendor/github.com/emicklei/go-restful/v3/web_service_container.go
function init (line 14) | func init() {
function Add (line 26) | func Add(service *WebService) {
function Filter (line 32) | func Filter(filter FilterFunction) {
function RegisteredWebServices (line 37) | func RegisteredWebServices() []*WebService {
FILE: vendor/github.com/fxamacker/cbor/v2/bytestring.go
type ByteString (line 16) | type ByteString
method Bytes (line 19) | func (bs ByteString) Bytes() []byte {
method MarshalCBOR (line 24) | func (bs ByteString) MarshalCBOR() ([]byte, error) {
method UnmarshalCBOR (line 41) | func (bs *ByteString) UnmarshalCBOR(data []byte) error {
FILE: vendor/github.com/fxamacker/cbor/v2/cache.go
type encodeFuncs (line 17) | type encodeFuncs struct
type specialType (line 29) | type specialType
constant specialTypeNone (line 32) | specialTypeNone specialType = iota
constant specialTypeUnmarshalerIface (line 33) | specialTypeUnmarshalerIface
constant specialTypeEmptyIface (line 34) | specialTypeEmptyIface
constant specialTypeIface (line 35) | specialTypeIface
constant specialTypeTag (line 36) | specialTypeTag
constant specialTypeTime (line 37) | specialTypeTime
type typeInfo (line 40) | type typeInfo struct
function newTypeInfo (line 50) | func newTypeInfo(t reflect.Type) *typeInfo {
type decodingStructType (line 87) | type decodingStructType struct
type multierror (line 96) | type multierror
method Error (line 98) | func (m multierror) Error() string {
function getDecodingStructType (line 109) | func getDecodingStructType(t reflect.Type) *decodingStructType {
type encodingStructType (line 166) | type encodingStructType struct
method getFields (line 175) | func (st *encodingStructType) getFields(em *encMode) fields {
type bytewiseFieldSorter (line 186) | type bytewiseFieldSorter struct
method Len (line 190) | func (x *bytewiseFieldSorter) Len() int {
method Swap (line 194) | func (x *bytewiseFieldSorter) Swap(i, j int) {
method Less (line 198) | func (x *bytewiseFieldSorter) Less(i, j int) bool {
type lengthFirstFieldSorter (line 202) | type lengthFirstFieldSorter struct
method Len (line 206) | func (x *lengthFirstFieldSorter) Len() int {
method Swap (line 210) | func (x *lengthFirstFieldSorter) Swap(i, j int) {
method Less (line 214) | func (x *lengthFirstFieldSorter) Less(i, j int) bool {
function getEncodingStructType (line 221) | func getEncodingStructType(t reflect.Type) (*encodingStructType, error) {
function getEncodingStructToArrayType (line 321) | func getEncodingStructToArrayType(t reflect.Type, flds fields) (*encodin...
function getEncodeFunc (line 340) | func getEncodeFunc(t reflect.Type) (encodeFunc, isEmptyFunc) {
function getTypeInfo (line 350) | func getTypeInfo(t reflect.Type) *typeInfo {
function hasToArrayOption (line 359) | func hasToArrayOption(tag string) bool {
FILE: vendor/github.com/fxamacker/cbor/v2/common.go
type cborType (line 11) | type cborType
method String (line 24) | func (t cborType) String() string {
constant cborTypePositiveInt (line 14) | cborTypePositiveInt cborType = 0x00
constant cborTypeNegativeInt (line 15) | cborTypeNegativeInt cborType = 0x20
constant cborTypeByteString (line 16) | cborTypeByteString cborType = 0x40
constant cborTypeTextString (line 17) | cborTypeTextString cborType = 0x60
constant cborTypeArray (line 18) | cborTypeArray cborType = 0x80
constant cborTypeMap (line 19) | cborTypeMap cborType = 0xa0
constant cborTypeTag (line 20) | cborTypeTag cborType = 0xc0
constant cborTypePrimitives (line 21) | cborTypePrimitives cborType = 0xe0
type additionalInformation (line 47) | type additionalInformation
method isIndefiniteLength (line 74) | func (ai additionalInformation) isIndefiniteLength() bool {
constant maxAdditionalInformationWithoutArgument (line 50) | maxAdditionalInformationWithoutArgument = 23
constant additionalInformationWith1ByteArgument (line 51) | additionalInformationWith1ByteArgument = 24
constant additionalInformationWith2ByteArgument (line 52) | additionalInformationWith2ByteArgument = 25
constant additionalInformationWith4ByteArgument (line 53) | additionalInformationWith4ByteArgument = 26
constant additionalInformationWith8ByteArgument (line 54) | additionalInformationWith8ByteArgument = 27
constant additionalInformationAsFalse (line 57) | additionalInformationAsFalse = 20
constant additionalInformationAsTrue (line 58) | additionalInformationAsTrue = 21
constant additionalInformationAsNull (line 59) | additionalInformationAsNull = 22
constant additionalInformationAsUndefined (line 60) | additionalInformationAsUndefined = 23
constant additionalInformationAsFloat16 (line 61) | additionalInformationAsFloat16 = 25
constant additionalInformationAsFloat32 (line 62) | additionalInformationAsFloat32 = 26
constant additionalInformationAsFloat64 (line 63) | additionalInformationAsFloat64 = 27
constant additionalInformationAsIndefiniteLengthFlag (line 66) | additionalInformationAsIndefiniteLengthFlag = 31
constant maxSimpleValueInAdditionalInformation (line 70) | maxSimpleValueInAdditionalInformation = 23
constant minSimpleValueIn1ByteArgument (line 71) | minSimpleValueIn1ByteArgument = 32
constant typeMask (line 85) | typeMask = 0xe0
constant additionalInformationMask (line 88) | additionalInformationMask = 0x1f
function getType (line 91) | func getType(raw byte) cborType {
function getAdditionalInformation (line 95) | func getAdditionalInformation(raw byte) byte {
function isBreakFlag (line 99) | func isBreakFlag(raw byte) bool {
function parseInitialByte (line 103) | func parseInitialByte(b byte) (t cborType, ai byte) {
constant tagNumRFC3339Time (line 108) | tagNumRFC3339Time = 0
constant tagNumEpochTime (line 109) | tagNumEpochTime = 1
constant tagNumUnsignedBignum (line 110) | tagNumUnsignedBignum = 2
constant tagNumNegativeBignum (line 111) | tagNumNegativeBignum = 3
constant tagNumExpectedLaterEncodingBase64URL (line 112) | tagNumExpectedLaterEncodingBase64URL = 21
constant tagNumExpectedLaterEncodingBase64 (line 113) | tagNumExpectedLaterEncodingBase64 = 22
constant tagNumExpectedLaterEncodingBase16 (line 114) | tagNumExpectedLaterEncodingBase16 = 23
constant tagNumSelfDescribedCBOR (line 115) | tagNumSelfDescribedCBOR = 55799
constant cborBreakFlag (line 119) | cborBreakFlag = byte(0xff)
constant cborByteStringWithIndefiniteLengthHead (line 120) | cborByteStringWithIndefiniteLengthHead = byte(0x5f)
constant cborTextStringWithIndefiniteLengthHead (line 121) | cborTextStringWithIndefiniteLengthHead = byte(0x7f)
constant cborArrayWithIndefiniteLengthHead (line 122) | cborArrayWithIndefiniteLengthHead = byte(0x9f)
constant cborMapWithIndefiniteLengthHead (line 123) | cborMapWithIndefiniteLengthHead = byte(0xbf)
function validBuiltinTag (line 136) | func validBuiltinTag(tagNum uint64, contentHead byte) error {
FILE: vendor/github.com/fxamacker/cbor/v2/decode.go
function Unmarshal (line 107) | func Unmarshal(data []byte, v interface{}) error {
function UnmarshalFirst (line 117) | func UnmarshalFirst(data []byte, v interface{}) (rest []byte, err error) {
function Valid (line 133) | func Valid(data []byte) error {
function Wellformed (line 143) | func Wellformed(data []byte) error {
type Unmarshaler (line 150) | type Unmarshaler interface
type InvalidUnmarshalError (line 155) | type InvalidUnmarshalError struct
method Error (line 159) | func (e *InvalidUnmarshalError) Error() string {
type UnmarshalTypeError (line 164) | type UnmarshalTypeError struct
method Error (line 171) | func (e *UnmarshalTypeError) Error() string {
type InvalidMapKeyTypeError (line 186) | type InvalidMapKeyTypeError struct
method Error (line 190) | func (e *InvalidMapKeyTypeError) Error() string {
type DupMapKeyError (line 195) | type DupMapKeyError struct
method Error (line 200) | func (e *DupMapKeyError) Error() string {
type UnknownFieldError (line 205) | type UnknownFieldError struct
method Error (line 209) | func (e *UnknownFieldError) Error() string {
type UnacceptableDataItemError (line 216) | type UnacceptableDataItemError struct
method Error (line 221) | func (e UnacceptableDataItemError) Error() string {
type ByteStringExpectedFormatError (line 228) | type ByteStringExpectedFormatError struct
method Error (line 237) | func (e *ByteStringExpectedFormatError) Error() string {
method Unwrap (line 253) | func (e *ByteStringExpectedFormatError) Unwrap() error {
function newByteStringExpectedFormatError (line 233) | func newByteStringExpectedFormatError(expectedFormatOption ByteStringExp...
type InadmissibleTagContentTypeError (line 261) | type InadmissibleTagContentTypeError struct
method Error (line 284) | func (e *InadmissibleTagContentTypeError) Error() string {
function newInadmissibleTagContentTypeError (line 268) | func newInadmissibleTagContentTypeError(
function newInadmissibleTagContentTypeErrorf (line 280) | func newInadmissibleTagContentTypeErrorf(s string) *InadmissibleTagConte...
type DupMapKeyMode (line 302) | type DupMapKeyMode
method valid (line 320) | func (dmkm DupMapKeyMode) valid() bool {
constant DupMapKeyQuiet (line 307) | DupMapKeyQuiet DupMapKeyMode = iota
constant DupMapKeyEnforcedAPF (line 315) | DupMapKeyEnforcedAPF
constant maxDupMapKeyMode (line 317) | maxDupMapKeyMode
type IndefLengthMode (line 325) | type IndefLengthMode
method valid (line 337) | func (m IndefLengthMode) valid() bool {
constant IndefLengthAllowed (line 329) | IndefLengthAllowed IndefLengthMode = iota
constant IndefLengthForbidden (line 332) | IndefLengthForbidden
constant maxIndefLengthMode (line 334) | maxIndefLengthMode
type TagsMode (line 342) | type TagsMode
method valid (line 354) | func (tm TagsMode) valid() bool {
constant TagsAllowed (line 346) | TagsAllowed TagsMode = iota
constant TagsForbidden (line 349) | TagsForbidden
constant maxTagsMode (line 351) | maxTagsMode
type IntDecMode (line 360) | type IntDecMode
method valid (line 395) | func (idm IntDecMode) valid() bool {
constant IntDecConvertNone (line 369) | IntDecConvertNone IntDecMode = iota
constant IntDecConvertSigned (line 378) | IntDecConvertSigned
constant IntDecConvertSignedOrFail (line 384) | IntDecConvertSignedOrFail
constant IntDecConvertSignedOrBigInt (line 390) | IntDecConvertSignedOrBigInt
constant maxIntDec (line 392) | maxIntDec
type MapKeyByteStringMode (line 408) | type MapKeyByteStringMode
method valid (line 425) | func (mkbsm MapKeyByteStringMode) valid() bool {
constant MapKeyByteStringAllowed (line 415) | MapKeyByteStringAllowed MapKeyByteStringMode = iota
constant MapKeyByteStringForbidden (line 420) | MapKeyByteStringForbidden
constant maxMapKeyByteStringMode (line 422) | maxMapKeyByteStringMode
type ExtraDecErrorCond (line 430) | type ExtraDecErrorCond
method valid (line 443) | func (ec ExtraDecErrorCond) valid() bool {
constant ExtraDecErrorNone (line 433) | ExtraDecErrorNone ExtraDecErrorCond = 0
constant ExtraDecErrorUnknownField (line 438) | ExtraDecErrorUnknownField ExtraDecErrorCond = 1 << iota
constant maxExtraDecError (line 440) | maxExtraDecError
type UTF8Mode (line 449) | type UTF8Mode
method valid (line 463) | func (um UTF8Mode) valid() bool {
constant UTF8RejectInvalid (line 454) | UTF8RejectInvalid UTF8Mode = iota
constant UTF8DecodeInvalid (line 458) | UTF8DecodeInvalid
constant maxUTF8Mode (line 460) | maxUTF8Mode
type FieldNameMatchingMode (line 468) | type FieldNameMatchingMode
method valid (line 483) | func (fnmm FieldNameMatchingMode) valid() bool {
constant FieldNameMatchingPreferCaseSensitive (line 474) | FieldNameMatchingPreferCaseSensitive FieldNameMatchingMode = iota
constant FieldNameMatchingCaseSensitive (line 478) | FieldNameMatchingCaseSensitive
constant maxFieldNameMatchingMode (line 480) | maxFieldNameMatchingMode
type BigIntDecMode (line 488) | type BigIntDecMode
method valid (line 502) | func (bidm BigIntDecMode) valid() bool {
constant BigIntDecodeValue (line 493) | BigIntDecodeValue BigIntDecMode = iota
constant BigIntDecodePointer (line 497) | BigIntDecodePointer
constant maxBigIntDecMode (line 499) | maxBigIntDecMode
type ByteStringToStringMode (line 507) | type ByteStringToStringMode
method valid (line 526) | func (bstsm ByteStringToStringMode) valid() bool {
constant ByteStringToStringForbidden (line 511) | ByteStringToStringForbidden ByteStringToStringMode = iota
constant ByteStringToStringAllowed (line 514) | ByteStringToStringAllowed
constant ByteStringToStringAllowedWithExpectedLaterEncoding (line 521) | ByteStringToStringAllowedWithExpectedLaterEncoding
constant maxByteStringToStringMode (line 523) | maxByteStringToStringMode
type FieldNameByteStringMode (line 531) | type FieldNameByteStringMode
method valid (line 543) | func (fnbsm FieldNameByteStringMode) valid() bool {
constant FieldNameByteStringForbidden (line 535) | FieldNameByteStringForbidden FieldNameByteStringMode = iota
constant FieldNameByteStringAllowed (line 538) | FieldNameByteStringAllowed
constant maxFieldNameByteStringMode (line 540) | maxFieldNameByteStringMode
type UnrecognizedTagToAnyMode (line 549) | type UnrecognizedTagToAnyMode
method valid (line 563) | func (uttam UnrecognizedTagToAnyMode) valid() bool {
constant UnrecognizedTagNumAndContentToAny (line 554) | UnrecognizedTagNumAndContentToAny UnrecognizedTagToAnyMode = iota
constant UnrecognizedTagContentToAny (line 558) | UnrecognizedTagContentToAny
constant maxUnrecognizedTagToAny (line 560) | maxUnrecognizedTagToAny
type TimeTagToAnyMode (line 569) | type TimeTagToAnyMode
method valid (line 587) | func (tttam TimeTagToAnyMode) valid() bool {
constant TimeTagToTime (line 574) | TimeTagToTime TimeTagToAnyMode = iota
constant TimeTagToRFC3339 (line 578) | TimeTagToRFC3339
constant TimeTagToRFC3339Nano (line 582) | TimeTagToRFC3339Nano
constant maxTimeTagToAnyMode (line 584) | maxTimeTagToAnyMode
type SimpleValueRegistry (line 593) | type SimpleValueRegistry struct
function WithRejectedSimpleValue (line 599) | func WithRejectedSimpleValue(sv SimpleValue) func(*SimpleValueRegistry) ...
function NewSimpleValueRegistryFromDefaults (line 612) | func NewSimpleValueRegistryFromDefaults(fns ...func(*SimpleValueRegistry...
type NaNMode (line 624) | type NaNMode
method valid (line 636) | func (ndm NaNMode) valid() bool {
constant NaNDecodeAllowed (line 628) | NaNDecodeAllowed NaNMode = iota
constant NaNDecodeForbidden (line 631) | NaNDecodeForbidden
constant maxNaNDecode (line 633) | maxNaNDecode
type InfMode (line 642) | type InfMode
method valid (line 655) | func (idm InfMode) valid() bool {
constant InfDecodeAllowed (line 646) | InfDecodeAllowed InfMode = iota
constant InfDecodeForbidden (line 650) | InfDecodeForbidden
constant maxInfDecode (line 652) | maxInfDecode
type ByteStringToTimeMode (line 660) | type ByteStringToTimeMode
method valid (line 672) | func (bttm ByteStringToTimeMode) valid() bool {
constant ByteStringToTimeForbidden (line 664) | ByteStringToTimeForbidden ByteStringToTimeMode = iota
constant ByteStringToTimeAllowed (line 667) | ByteStringToTimeAllowed
constant maxByteStringToTimeMode (line 669) | maxByteStringToTimeMode
type ByteStringExpectedFormatMode (line 681) | type ByteStringExpectedFormatMode
method valid (line 706) | func (bsefm ByteStringExpectedFormatMode) valid() bool {
constant ByteStringExpectedFormatNone (line 686) | ByteStringExpectedFormatNone ByteStringExpectedFormatMode = iota
constant ByteStringExpectedBase64URL (line 691) | ByteStringExpectedBase64URL
constant ByteStringExpectedBase64 (line 696) | ByteStringExpectedBase64
constant ByteStringExpectedBase16 (line 701) | ByteStringExpectedBase16
constant maxByteStringExpectedFormatMode (line 703) | maxByteStringExpectedFormatMode
type BignumTagMode (line 712) | type BignumTagMode
method valid (line 725) | func (btm BignumTagMode) valid() bool {
constant BignumTagAllowed (line 716) | BignumTagAllowed BignumTagMode = iota
constant BignumTagForbidden (line 720) | BignumTagForbidden
constant maxBignumTag (line 722) | maxBignumTag
type BinaryUnmarshalerMode (line 731) | type BinaryUnmarshalerMode
method valid (line 744) | func (bum BinaryUnmarshalerMode) valid() bool {
constant BinaryUnmarshalerByteString (line 736) | BinaryUnmarshalerByteString BinaryUnmarshalerMode = iota
constant BinaryUnmarshalerNone (line 739) | BinaryUnmarshalerNone
constant maxBinaryUnmarshalerMode (line 741) | maxBinaryUnmarshalerMode
type DecOptions (line 749) | type DecOptions struct
method DecMode (line 885) | func (opts DecOptions) DecMode() (DecMode, error) { //nolint:gocritic ...
method validForTags (line 891) | func (opts DecOptions) validForTags(tags TagSet) error { //nolint:gocr...
method DecModeWithTags (line 915) | func (opts DecOptions) DecModeWithTags(tags TagSet) (DecMode, error) {...
method DecModeWithSharedTags (line 943) | func (opts DecOptions) DecModeWithSharedTags(tags TagSet) (DecMode, er...
method decMode (line 978) | func (opts DecOptions) decMode() (*decMode, error) { //nolint:gocritic...
constant defaultMaxArrayElements (line 956) | defaultMaxArrayElements = 131072
constant minMaxArrayElements (line 957) | minMaxArrayElements = 16
constant maxMaxArrayElements (line 958) | maxMaxArrayElements = 2147483647
constant defaultMaxMapPairs (line 960) | defaultMaxMapPairs = 131072
constant minMaxMapPairs (line 961) | minMaxMapPairs = 16
constant maxMaxMapPairs (line 962) | maxMaxMapPairs = 2147483647
constant defaultMaxNestedLevels (line 964) | defaultMaxNestedLevels = 32
constant minMaxNestedLevels (line 965) | minMaxNestedLevels = 4
constant maxMaxNestedLevels (line 966) | maxMaxNestedLevels = 65535
type DecMode (line 1127) | type DecMode interface
type decMode (line 1172) | type decMode struct
method DecOptions (line 1205) | func (dm *decMode) DecOptions() DecOptions {
method Unmarshal (line 1248) | func (dm *decMode) Unmarshal(data []byte, v interface{}) error {
method UnmarshalFirst (line 1268) | func (dm *decMode) UnmarshalFirst(data []byte, v interface{}) (rest []...
method Valid (line 1303) | func (dm *decMode) Valid(data []byte) error {
method Wellformed (line 1313) | func (dm *decMode) Wellformed(data []byte) error {
method NewDecoder (line 1319) | func (dm *decMode) NewDecoder(r io.Reader) *Decoder {
type decoder (line 1323) | type decoder struct
method value (line 1344) | func (d *decoder) value(v interface{}) error {
method parseToValue (line 1361) | func (d *decoder) parseToValue(v reflect.Value, tInfo *typeInfo) error...
method parseToTag (line 1649) | func (d *decoder) parseToTag(v reflect.Value) error {
method parseToTime (line 1677) | func (d *decoder) parseToTime() (time.Time, bool, error) {
method parseToUnmarshaler (line 1790) | func (d *decoder) parseToUnmarshaler(v reflect.Value) error {
method parse (line 1810) | func (d *decoder) parse(skipSelfDescribedTag bool) (interface{}, error...
method parseByteString (line 2102) | func (d *decoder) parseByteString() ([]byte, bool) {
method applyByteStringTextConversion (line 2123) | func (d *decoder) applyByteStringTextConversion(
method parseTextString (line 2200) | func (d *decoder) parseTextString() ([]byte, error) {
method parseArray (line 2227) | func (d *decoder) parseArray() ([]interface{}, error) {
method parseArrayToSlice (line 2249) | func (d *decoder) parseArrayToSlice(v reflect.Value, tInfo *typeInfo) ...
method parseArrayToArray (line 2271) | func (d *decoder) parseArrayToArray(v reflect.Value, tInfo *typeInfo) ...
method parseMap (line 2301) | func (d *decoder) parseMap() (interface{}, error) {
method parseMapToMap (line 2366) | func (d *decoder) parseMapToMap(v reflect.Value, tInfo *typeInfo) erro...
method parseArrayToStruct (line 2475) | func (d *decoder) parseArrayToStruct(v reflect.Value, tInfo *typeInfo)...
method parseMapToStruct (line 2548) | func (d *decoder) parseMapToStruct(v reflect.Value, tInfo *typeInfo) e...
method validRegisteredTagNums (line 2827) | func (d *decoder) validRegisteredTagNums(registeredTag *tagItem) error {
method getRegisteredTagItem (line 2841) | func (d *decoder) getRegisteredTagItem(vt reflect.Type) *tagItem {
method skip (line 2850) | func (d *decoder) skip() {
method getHeadWithIndefiniteLengthFlag (line 2885) | func (d *decoder) getHeadWithIndefiniteLengthFlag() (
method getHead (line 2897) | func (d *decoder) getHead() (t cborType, ai byte, val uint64) {
method numOfItemsUntilBreak (line 2935) | func (d *decoder) numOfItemsUntilBreak() int {
method foundBreak (line 2949) | func (d *decoder) foundBreak() bool {
method reset (line 2957) | func (d *decoder) reset(data []byte) {
method nextCBORType (line 2963) | func (d *decoder) nextCBORType() cborType {
method nextCBORNil (line 2967) | func (d *decoder) nextCBORNil() bool {
function fillNil (line 2981) | func fillNil(_ cborType, v reflect.Value) error {
function fillPositiveInt (line 2990) | func fillPositiveInt(t cborType, val uint64, v reflect.Value) error {
function fillNegativeInt (line 3035) | func fillNegativeInt(t cborType, val int64, v reflect.Value) error {
function fillBool (line 3061) | func fillBool(t cborType, val bool, v reflect.Value) error {
function fillFloat (line 3069) | func fillFloat(t cborType, val float64, v reflect.Value) error {
function fillByteString (line 3085) | func fillByteString(t cborType, val []byte, shared bool, v reflect.Value...
function fillTextString (line 3130) | func fillTextString(t cborType, val []byte, v reflect.Value) error {
function isImmutableKind (line 3138) | func isImmutableKind(k reflect.Kind) bool {
function isHashableValue (line 3152) | func isHashableValue(rv reflect.Value) bool {
function convertByteSliceToByteString (line 3175) | func convertByteSliceToByteString(v interface{}) (interface{}, bool) {
FILE: vendor/github.com/fxamacker/cbor/v2/diagnose.go
type DiagMode (line 24) | type DiagMode interface
type ByteStringEncoding (line 36) | type ByteStringEncoding
method valid (line 54) | func (bse ByteStringEncoding) valid() error {
constant ByteStringBase16Encoding (line 40) | ByteStringBase16Encoding ByteStringEncoding = iota
constant ByteStringBase32Encoding (line 43) | ByteStringBase32Encoding
constant ByteStringBase32HexEncoding (line 46) | ByteStringBase32HexEncoding
constant ByteStringBase64Encoding (line 49) | ByteStringBase64Encoding
constant maxByteStringEncoding (line 51) | maxByteStringEncoding
type DiagOptions (line 62) | type DiagOptions struct
method DiagMode (line 102) | func (opts DiagOptions) DiagMode() (DiagMode, error) {
method diagMode (line 106) | func (opts DiagOptions) diagMode() (*diagMode, error) {
type diagMode (line 131) | type diagMode struct
method DiagOptions (line 142) | func (dm *diagMode) DiagOptions() DiagOptions {
method Diagnose (line 157) | func (dm *diagMode) Diagnose(data []byte) (string, error) {
method DiagnoseFirst (line 162) | func (dm *diagMode) DiagnoseFirst(data []byte) (diagNotation string, r...
function Diagnose (line 172) | func Diagnose(data []byte) (string, error) {
function DiagnoseFirst (line 177) | func DiagnoseFirst(data []byte) (diagNotation string, rest []byte, err e...
type diagnose (line 181) | type diagnose struct
method diag (line 195) | func (di *diagnose) diag(cborSequence bool) (string, error) {
method diagFirst (line 221) | func (di *diagnose) diagFirst() (diagNotation string, rest []byte, err...
method wellformed (line 235) | func (di *diagnose) wellformed(allowExtraData bool) error {
method item (line 242) | func (di *diagnose) item() error { //nolint:gocyclo
method writeU16 (line 477) | func (di *diagnose) writeU16(val rune) {
method encodeByteString (line 492) | func (di *diagnose) encodeByteString(val []byte) error {
method encodeTextString (line 579) | func (di *diagnose) encodeTextString(val string, quote byte) error {
method encodeFloat (line 630) | func (di *diagnose) encodeFloat(ai byte, val uint64) error {
function newDiagnose (line 187) | func newDiagnose(data []byte, decm *decMode, diagm *diagMode) *diagnose {
constant utf16SurrSelf (line 576) | utf16SurrSelf = rune(0x10000)
FILE: vendor/github.com/fxamacker/cbor/v2/encode.go
function Marshal (line 95) | func Marshal(v interface{}) ([]byte, error) {
function MarshalToBuffer (line 106) | func MarshalToBuffer(v interface{}, buf *bytes.Buffer) error {
type Marshaler (line 112) | type Marshaler interface
type MarshalerError (line 118) | type MarshalerError struct
method Error (line 123) | func (e *MarshalerError) Error() string {
method Unwrap (line 129) | func (e *MarshalerError) Unwrap() error {
type UnsupportedTypeError (line 135) | type UnsupportedTypeError struct
method Error (line 139) | func (e *UnsupportedTypeError) Error() string {
type UnsupportedValueError (line 145) | type UnsupportedValueError struct
method Error (line 149) | func (e *UnsupportedValueError) Error() string {
type SortMode (line 154) | type SortMode
method valid (line 191) | func (sm SortMode) valid() bool {
constant SortNone (line 158) | SortNone SortMode = 0
constant SortLengthFirst (line 165) | SortLengthFirst SortMode = 1
constant SortBytewiseLexical (line 171) | SortBytewiseLexical SortMode = 2
constant SortFastShuffle (line 177) | SortFastShuffle SortMode = 3
constant SortCanonical (line 180) | SortCanonical SortMode = SortLengthFirst
constant SortCTAP2 (line 183) | SortCTAP2 SortMode = SortBytewiseLexical
constant SortCoreDeterministic (line 186) | SortCoreDeterministic SortMode = SortBytewiseLexical
constant maxSortMode (line 188) | maxSortMode SortMode = 4
type StringMode (line 196) | type StringMode
method cborType (line 206) | func (st StringMode) cborType() (cborType, error) {
constant StringToTextString (line 200) | StringToTextString StringMode = iota
constant StringToByteString (line 203) | StringToByteString
type ShortestFloatMode (line 220) | type ShortestFloatMode
method valid (line 238) | func (sfm ShortestFloatMode) valid() bool {
constant ShortestFloatNone (line 227) | ShortestFloatNone ShortestFloatMode = iota
constant ShortestFloat16 (line 233) | ShortestFloat16
constant maxShortestFloat (line 235) | maxShortestFloat
type NaNConvertMode (line 244) | type NaNConvertMode
method valid (line 269) | func (ncm NaNConvertMode) valid() bool {
constant NaNConvert7e00 (line 248) | NaNConvert7e00 NaNConvertMode = iota
constant NaNConvertNone (line 253) | NaNConvertNone
constant NaNConvertPreserveSignal (line 257) | NaNConvertPreserveSignal
constant NaNConvertQuiet (line 261) | NaNConvertQuiet
constant NaNConvertReject (line 264) | NaNConvertReject
constant maxNaNConvert (line 266) | maxNaNConvert
type InfConvertMode (line 275) | type InfConvertMode
method valid (line 290) | func (icm InfConvertMode) valid() bool {
constant InfConvertFloat16 (line 279) | InfConvertFloat16 InfConvertMode = iota
constant InfConvertNone (line 282) | InfConvertNone
constant InfConvertReject (line 285) | InfConvertReject
constant maxInfConvert (line 287) | maxInfConvert
type TimeMode (line 295) | type TimeMode
method valid (line 317) | func (tm TimeMode) valid() bool {
constant TimeUnix (line 299) | TimeUnix TimeMode = iota
constant TimeUnixMicro (line 302) | TimeUnixMicro
constant TimeUnixDynamic (line 306) | TimeUnixDynamic
constant TimeRFC3339 (line 309) | TimeRFC3339
constant TimeRFC3339Nano (line 312) | TimeRFC3339Nano
constant maxTimeMode (line 314) | maxTimeMode
type BigIntConvertMode (line 322) | type BigIntConvertMode
method valid (line 340) | func (bim BigIntConvertMode) valid() bool {
constant BigIntConvertShortest (line 328) | BigIntConvertShortest BigIntConvertMode = iota
constant BigIntConvertNone (line 332) | BigIntConvertNone
constant BigIntConvertReject (line 335) | BigIntConvertReject
constant maxBigIntConvert (line 337) | maxBigIntConvert
type NilContainersMode (line 345) | type NilContainersMode
method valid (line 359) | func (m NilContainersMode) valid() bool {
constant NilContainerAsNull (line 350) | NilContainerAsNull NilContainersMode = iota
constant NilContainerAsEmpty (line 354) | NilContainerAsEmpty
constant maxNilContainersMode (line 356) | maxNilContainersMode
type OmitEmptyMode (line 365) | type OmitEmptyMode
method valid (line 385) | func (om OmitEmptyMode) valid() bool {
constant OmitEmptyCBORValue (line 372) | OmitEmptyCBORValue OmitEmptyMode = iota
constant OmitEmptyGoValue (line 380) | OmitEmptyGoValue
constant maxOmitEmptyMode (line 382) | maxOmitEmptyMode
type FieldNameMode (line 390) | type FieldNameMode
method valid (line 402) | func (fnm FieldNameMode) valid() bool {
constant FieldNameToTextString (line 394) | FieldNameToTextString FieldNameMode = iota
constant FieldNameToByteString (line 397) | FieldNameToByteString
constant maxFieldNameMode (line 399) | maxFieldNameMode
type ByteSliceLaterFormatMode (line 411) | type ByteSliceLaterFormatMode
method encodingTag (line 431) | func (bsefm ByteSliceLaterFormatMode) encodingTag() (uint64, error) {
constant ByteSliceLaterFormatNone (line 416) | ByteSliceLaterFormatNone ByteSliceLaterFormatMode = iota
constant ByteSliceLaterFormatBase64URL (line 420) | ByteSliceLaterFormatBase64URL
constant ByteSliceLaterFormatBase64 (line 424) | ByteSliceLaterFormatBase64
constant ByteSliceLaterFormatBase16 (line 428) | ByteSliceLaterFormatBase16
type ByteArrayMode (line 449) | type ByteArrayMode
method valid (line 463) | func (bam ByteArrayMode) valid() bool {
constant ByteArrayToByteSlice (line 454) | ByteArrayToByteSlice ByteArrayMode = iota
constant ByteArrayToArray (line 458) | ByteArrayToArray
constant maxByteArrayMode (line 460) | maxByteArrayMode
type BinaryMarshalerMode (line 468) | type BinaryMarshalerMode
method valid (line 480) | func (bmm BinaryMarshalerMode) valid() bool {
constant BinaryMarshalerByteString (line 472) | BinaryMarshalerByteString BinaryMarshalerMode = iota
constant BinaryMarshalerNone (line 475) | BinaryMarshalerNone
constant maxBinaryMarshalerMode (line 477) | maxBinaryMarshalerMode
type EncOptions (line 485) | type EncOptions struct
method EncMode (line 634) | func (opts EncOptions) EncMode() (EncMode, error) { //nolint:gocritic ...
method UserBufferEncMode (line 639) | func (opts EncOptions) UserBufferEncMode() (UserBufferEncMode, error) ...
method EncModeWithTags (line 644) | func (opts EncOptions) EncModeWithTags(tags TagSet) (EncMode, error) {...
method UserBufferEncModeWithTags (line 649) | func (opts EncOptions) UserBufferEncModeWithTags(tags TagSet) (UserBuf...
method EncModeWithSharedTags (line 677) | func (opts EncOptions) EncModeWithSharedTags(tags TagSet) (EncMode, er...
method UserBufferEncModeWithSharedTags (line 682) | func (opts EncOptions) UserBufferEncModeWithSharedTags(tags TagSet) (U...
method encMode (line 697) | func (opts EncOptions) encMode() (*encMode, error) { //nolint:gocritic...
function CanonicalEncOptions (line 558) | func CanonicalEncOptions() EncOptions {
function CTAP2EncOptions (line 578) | func CTAP2EncOptions() EncOptions {
function CoreDetEncOptions (line 599) | func CoreDetEncOptions() EncOptions {
function PreferredUnsortedEncOptions (line 624) | func PreferredUnsortedEncOptions() EncOptions {
type EncMode (line 775) | type EncMode interface
type UserBufferEncMode (line 784) | type UserBufferEncMode interface
type encMode (line 795) | type encMode struct
method EncOptions (line 889) | func (em *encMode) EncOptions() EncOptions {
method unexport (line 910) | func (em *encMode) unexport() {}
method encTagBytes (line 912) | func (em *encMode) encTagBytes(t reflect.Type) []byte {
method Marshal (line 924) | func (em *encMode) Marshal(v interface{}) ([]byte, error) {
method MarshalToBuffer (line 946) | func (em *encMode) MarshalToBuffer(v interface{}, buf *bytes.Buffer) e...
method NewEncoder (line 954) | func (em *encMode) NewEncoder(w io.Writer) *Encoder {
function getMarshalerDecMode (line 861) | func getMarshalerDecMode(indefLength IndefLengthMode, tagsMd TagsMode) *...
function getEncodeBuffer (line 967) | func getEncodeBuffer() *bytes.Buffer {
function putEncodeBuffer (line 971) | func putEncodeBuffer(e *bytes.Buffer) {
type encodeFunc (line 976) | type encodeFunc
type isEmptyFunc (line 977) | type isEmptyFunc
function encode (line 979) | func encode(e *bytes.Buffer, em *encMode, v reflect.Value) error {
function encodeBool (line 994) | func encodeBool(e *bytes.Buffer, em *encMode, v reflect.Value) error {
function encodeInt (line 1006) | func encodeInt(e *bytes.Buffer, em *encMode, v reflect.Value) error {
function encodeUint (line 1020) | func encodeUint(e *bytes.Buffer, em *encMode, v reflect.Value) error {
function encodeFloat (line 1028) | func encodeFloat(e *bytes.Buffer, em *encMode, v reflect.Value) error {
function encodeInf (line 1090) | func encodeInf(e *bytes.Buffer, em *encMode, v reflect.Value) error {
function encodeNaN (line 1110) | func encodeNaN(e *bytes.Buffer, em *encMode, v reflect.Value) error {
function encodeFloat16 (line 1171) | func encodeFloat16(e *bytes.Buffer, f16 float16.Float16) error {
function encodeFloat32 (line 1181) | func encodeFloat32(e *bytes.Buffer, f32 float32) error {
function encodeFloat64 (line 1191) | func encodeFloat64(e *bytes.Buffer, f64 float64) error {
function encodeByteString (line 1201) | func encodeByteString(e *bytes.Buffer, em *encMode, v reflect.Value) err...
function encodeString (line 1228) | func encodeString(e *bytes.Buffer, em *encMode, v reflect.Value) error {
type arrayEncodeFunc (line 1238) | type arrayEncodeFunc struct
method encode (line 1242) | func (ae arrayEncodeFunc) encode(e *bytes.Buffer, em *encMode, v refle...
type encodeKeyValueFunc (line 1269) | type encodeKeyValueFunc
type mapEncodeFunc (line 1271) | type mapEncodeFunc struct
method encode (line 1275) | func (me mapEncodeFunc) encode(e *bytes.Buffer, em *encMode, v reflect...
type keyValue (line 1330) | type keyValue struct
type bytewiseKeyValueSorter (line 1336) | type bytewiseKeyValueSorter struct
method Len (line 1341) | func (x *bytewiseKeyValueSorter) Len() int {
method Swap (line 1345) | func (x *bytewiseKeyValueSorter) Swap(i, j int) {
method Less (line 1349) | func (x *bytewiseKeyValueSorter) Less(i, j int) bool {
type lengthFirstKeyValueSorter (line 1354) | type lengthFirstKeyValueSorter struct
method Len (line 1359) | func (x *lengthFirstKeyValueSorter) Len() int {
method Swap (line 1363) | func (x *lengthFirstKeyValueSorter) Swap(i, j int) {
method Less (line 1367) | func (x *lengthFirstKeyValueSorter) Less(i, j int) bool {
function getKeyValues (line 1377) | func getKeyValues(length int) *[]keyValue {
function putKeyValues (line 1395) | func putKeyValues(x *[]keyValue) {
function encodeStructToArray (line 1400) | func encodeStructToArray(e *bytes.Buffer, em *encMode, v reflect.Value) ...
function encodeStruct (line 1438) | func encodeStruct(e *bytes.Buffer, em *encMode, v reflect.Value) (err er...
function encodeIntf (line 1532) | func encodeIntf(e *bytes.Buffer, em *encMode, v reflect.Value) error {
function encodeTime (line 1540) | func encodeTime(e *bytes.Buffer, em *encMode, v reflect.Value) error {
function encodeBigInt (line 1582) | func encodeBigInt(e *bytes.Buffer, em *encMode, v reflect.Value) error {
type binaryMarshalerEncoder (line 1621) | type binaryMarshalerEncoder struct
method encode (line 1626) | func (bme binaryMarshalerEncoder) encode(e *bytes.Buffer, em *encMode,...
method isEmpty (line 1650) | func (bme binaryMarshalerEncoder) isEmpty(em *encMode, v reflect.Value...
function encodeMarshalerType (line 1668) | func encodeMarshalerType(e *bytes.Buffer, em *encMode, v reflect.Value) ...
function encodeTag (line 1694) | func encodeTag(e *bytes.Buffer, em *encMode, v reflect.Value) error {
function encodeHead (line 1728) | func encodeHead(e *bytes.Buffer, t byte, n uint64) int {
function getEncodeFuncInternal (line 1778) | func getEncodeFuncInternal(t reflect.Type) (ef encodeFunc, ief isEmptyFu...
function getEncodeIndirectValueFunc (line 1870) | func getEncodeIndirectValueFunc(t reflect.Type) encodeFunc {
function alwaysNotEmpty (line 1890) | func alwaysNotEmpty(_ *encMode, _ reflect.Value) (empty bool, err error) {
function isEmptyBool (line 1894) | func isEmptyBool(_ *encMode, v reflect.Value) (bool, error) {
function isEmptyInt (line 1898) | func isEmptyInt(_ *encMode, v reflect.Value) (bool, error) {
function isEmptyUint (line 1902) | func isEmptyUint(_ *encMode, v reflect.Value) (bool, error) {
function isEmptyFloat (line 1906) | func isEmptyFloat(_ *encMode, v reflect.Value) (bool, error) {
function isEmptyString (line 1910) | func isEmptyString(_ *encMode, v reflect.Value) (bool, error) {
function isEmptySlice (line 1914) | func isEmptySlice(_ *encMode, v reflect.Value) (bool, error) {
function isEmptyMap (line 1918) | func isEmptyMap(_ *encMode, v reflect.Value) (bool, error) {
function isEmptyPtr (line 1922) | func isEmptyPtr(_ *encMode, v reflect.Value) (bool, error) {
function isEmptyIntf (line 1926) | func isEmptyIntf(_ *encMode, v reflect.Value) (bool, error) {
function isEmptyStruct (line 1930) | func isEmptyStruct(em *encMode, v reflect.Value) (bool, error) {
function cannotFitFloat32 (line 1977) | func cannotFitFloat32(f64 float64) bool {
function float32NaNFromReflectValue (line 1983) | func float32NaNFromReflectValue(v reflect.Value) float32 {
FILE: vendor/github.com/fxamacker/cbor/v2/encode_map.go
type mapKeyValueEncodeFunc (line 14) | type mapKeyValueEncodeFunc struct
method encodeKeyValues (line 19) | func (me *mapKeyValueEncodeFunc) encodeKeyValues(e *bytes.Buffer, em *...
function getEncodeMapFunc (line 69) | func getEncodeMapFunc(t reflect.Type) encodeFunc {
FILE: vendor/github.com/fxamacker/cbor/v2/encode_map_go117.go
type mapKeyValueEncodeFunc (line 13) | type mapKeyValueEncodeFunc struct
method encodeKeyValues (line 17) | func (me *mapKeyValueEncodeFunc) encodeKeyValues(e *bytes.Buffer, em *...
function getEncodeMapFunc (line 50) | func getEncodeMapFunc(t reflect.Type) encodeFunc {
FILE: vendor/github.com/fxamacker/cbor/v2/simplevalue.go
type SimpleValue (line 18) | type SimpleValue
method MarshalCBOR (line 25) | func (sv SimpleValue) MarshalCBOR() ([]byte, error) {
method UnmarshalCBOR (line 48) | func (sv *SimpleValue) UnmarshalCBOR(data []byte) error {
FILE: vendor/github.com/fxamacker/cbor/v2/stream.go
type Decoder (line 14) | type Decoder struct
method Decode (line 29) | func (dec *Decoder) Decode(v interface{}) error {
method Skip (line 52) | func (dec *Decoder) Skip() error {
method NumBytesRead (line 65) | func (dec *Decoder) NumBytesRead() int {
method Buffered (line 71) | func (dec *Decoder) Buffered() io.Reader {
method readNext (line 78) | func (dec *Decoder) readNext() (int, error) {
method read (line 134) | func (dec *Decoder) read() (int, error) {
method overwriteBuf (line 154) | func (dec *Decoder) overwriteBuf(newBuf []byte) {
function NewDecoder (line 24) | func NewDecoder(r io.Reader) *Decoder {
type Encoder (line 161) | type Encoder struct
method Encode (line 173) | func (enc *Encoder) Encode(v interface{}) error {
method StartIndefiniteByteString (line 204) | func (enc *Encoder) StartIndefiniteByteString() error {
method StartIndefiniteTextString (line 211) | func (enc *Encoder) StartIndefiniteTextString() error {
method StartIndefiniteArray (line 218) | func (enc *Encoder) StartIndefiniteArray() error {
method StartIndefiniteMap (line 225) | func (enc *Encoder) StartIndefiniteMap() error {
method EndIndefinite (line 230) | func (enc *Encoder) EndIndefinite() error {
method startIndefinite (line 248) | func (enc *Encoder) startIndefinite(typ cborType) error {
function NewEncoder (line 168) | func NewEncoder(w io.Writer) *Encoder {
type RawMessage (line 260) | type RawMessage
method MarshalCBOR (line 263) | func (m RawMessage) MarshalCBOR() ([]byte, error) {
method UnmarshalCBOR (line 271) | func (m *RawMessage) UnmarshalCBOR(data []byte) error {
FILE: vendor/github.com/fxamacker/cbor/v2/structfields.go
type field (line 12) | type field struct
type fields (line 27) | type fields
type indexFieldSorter (line 30) | type indexFieldSorter struct
method Len (line 34) | func (x *indexFieldSorter) Len() int {
method Swap (line 38) | func (x *indexFieldSorter) Swap(i, j int) {
method Less (line 42) | func (x *indexFieldSorter) Less(i, j int) bool {
type nameLevelAndTagFieldSorter (line 53) | type nameLevelAndTagFieldSorter struct
method Len (line 57) | func (x *nameLevelAndTagFieldSorter) Len() int {
method Swap (line 61) | func (x *nameLevelAndTagFieldSorter) Swap(i, j int) {
method Less (line 65) | func (x *nameLevelAndTagFieldSorter) Less(i, j int) bool {
function getFields (line 80) | func getFields(t reflect.Type) (flds fields, structOptions string) {
function appendFields (line 147) | func appendFields(
function isFieldExportable (line 232) | func isFieldExportable(f reflect.StructField, fk reflect.Kind) bool { //...
type embeddedFieldNullPtrFunc (line 237) | type embeddedFieldNullPtrFunc
function getFieldValue (line 241) | func getFieldValue(v reflect.Value, idx []int, f embeddedFieldNullPtrFun...
FILE: vendor/github.com/fxamacker/cbor/v2/tag.go
type Tag (line 13) | type Tag struct
type RawTag (line 20) | type RawTag struct
method UnmarshalCBOR (line 26) | func (t *RawTag) UnmarshalCBOR(data []byte) error {
method MarshalCBOR (line 53) | func (t RawTag) MarshalCBOR() ([]byte, error) {
type DecTagMode (line 79) | type DecTagMode
method valid (line 94) | func (dtm DecTagMode) valid() bool {
constant DecTagIgnored (line 83) | DecTagIgnored DecTagMode = iota
constant DecTagOptional (line 86) | DecTagOptional
constant DecTagRequired (line 89) | DecTagRequired
constant maxDecTagMode (line 91) | maxDecTagMode
type EncTagMode (line 99) | type EncTagMode
method valid (line 111) | func (etm EncTagMode) valid() bool {
constant EncTagNone (line 103) | EncTagNone EncTagMode = iota
constant EncTagRequired (line 106) | EncTagRequired
constant maxEncTagMode (line 108) | maxEncTagMode
type TagOptions (line 116) | type TagOptions struct
type TagSet (line 123) | type TagSet interface
type tagProvider (line 133) | type tagProvider interface
type tagItem (line 138) | type tagItem struct
method equalTagNum (line 145) | func (t *tagItem) equalTagNum(num []uint64) bool {
type tagSet (line 165) | type tagSet
method getTagItemFromType (line 173) | func (t tagSet) getTagItemFromType(typ reflect.Type) *tagItem {
method getTypeFromTagNum (line 177) | func (t tagSet) getTypeFromTagNum(num []uint64) reflect.Type {
type syncTagSet (line 167) | type syncTagSet struct
method Add (line 192) | func (t *syncTagSet) Add(opts TagOptions, contentType reflect.Type, nu...
method Remove (line 218) | func (t *syncTagSet) Remove(contentType reflect.Type) {
method getTagItemFromType (line 227) | func (t *syncTagSet) getTagItemFromType(typ reflect.Type) *tagItem {
method getTypeFromTagNum (line 234) | func (t *syncTagSet) getTypeFromTagNum(num []uint64) reflect.Type {
function NewTagSet (line 187) | func NewTagSet() TagSet {
function newTagItem (line 241) | func newTagItem(opts TagOptions, contentType reflect.Type, num uint64, n...
type WrongTagError (line 291) | type WrongTagError struct
method Error (line 297) | func (e *WrongTagError) Error() string {
FILE: vendor/github.com/fxamacker/cbor/v2/valid.go
type SyntaxError (line 17) | type SyntaxError struct
method Error (line 21) | func (e *SyntaxError) Error() string { return e.msg }
type SemanticError (line 24) | type SemanticError struct
method Error (line 28) | func (e *SemanticError) Error() string { return e.msg }
type MaxNestedLevelError (line 31) | type MaxNestedLevelError struct
method Error (line 35) | func (e *MaxNestedLevelError) Error() string {
type MaxArrayElementsError (line 40) | type MaxArrayElementsError struct
method Error (line 44) | func (e *MaxArrayElementsError) Error() string {
type MaxMapPairsError (line 49) | type MaxMapPairsError struct
method Error (line 53) | func (e *MaxMapPairsError) Error() string {
type IndefiniteLengthError (line 58) | type IndefiniteLengthError struct
method Error (line 62) | func (e *IndefiniteLengthError) Error() string {
type TagsMdError (line 67) | type TagsMdError struct
method Error (line 70) | func (e *TagsMdError) Error() string {
type ExtraneousDataError (line 75) | type ExtraneousDataError struct
method Error (line 80) | func (e *ExtraneousDataError) Error() string {
method wellformed (line 88) | func (d *decoder) wellformed(allowExtraData bool, checkBuiltinTags bool)...
method wellformedInternal (line 102) | func (d *decoder) wellformedInternal(depth int, checkBuiltinTags bool) (...
method wellformedIndefiniteString (line 216) | func (d *decoder) wellformedIndefiniteString(t cborType, depth int, chec...
method wellformedIndefiniteArrayOrMap (line 242) | func (d *decoder) wellformedIndefiniteArrayOrMap(t cborType, depth int, ...
method wellformedHeadWithIndefiniteLengthFlag (line 278) | func (d *decoder) wellformedHeadWithIndefiniteLengthFlag() (
method wellformedHead (line 293) | func (d *decoder) wellformedHead() (t cborType, ai byte, val uint64, err...
method acceptableFloat (line 380) | func (d *decoder) acceptableFloat(f float64) error {
FILE: vendor/github.com/go-logr/logr/context.go
type contextKey (line 22) | type contextKey struct
type notFoundError (line 25) | type notFoundError struct
method Error (line 27) | func (notFoundError) Error() string {
method IsNotFound (line 31) | func (notFoundError) IsNotFound() bool {
FILE: vendor/github.com/go-logr/logr/context_noslog.go
function FromContext (line 27) | func FromContext(ctx context.Context) (Logger, error) {
function FromContextOrDiscard (line 37) | func FromContextOrDiscard(ctx context.Context) Logger {
function NewContext (line 47) | func NewContext(ctx context.Context, logger Logger) context.Context {
FILE: vendor/github.com/go-logr/logr/context_slog.go
function FromContext (line 29) | func FromContext(ctx context.Context) (Logger, error) {
function FromContextAsSlogLogger (line 47) | func FromContextAsSlogLogger(ctx context.Context) *slog.Logger {
function FromContextOrDiscard (line 66) | func FromContextOrDiscard(ctx context.Context) Logger {
function NewContext (line 75) | func NewContext(ctx context.Context, logger Logger) context.Context {
function NewContextWithSlogLogger (line 81) | func NewContextWithSlogLogger(ctx context.Context, logger *slog.Logger) ...
FILE: vendor/github.com/go-logr/logr/discard.go
function Discard (line 22) | func Discard() Logger {
FILE: vendor/github.com/go-logr/logr/logr.go
function New (line 213) | func New(sink LogSink) Logger {
type Logger (line 249) | type Logger struct
method setSink (line 225) | func (l *Logger) setSink(sink LogSink) {
method GetSink (line 230) | func (l Logger) GetSink() LogSink {
method WithSink (line 235) | func (l Logger) WithSink(sink LogSink) Logger {
method Enabled (line 256) | func (l Logger) Enabled() bool {
method Info (line 272) | func (l Logger) Info(msg string, keysAndValues ...any) {
method Error (line 294) | func (l Logger) Error(err error, msg string, keysAndValues ...any) {
method V (line 308) | func (l Logger) V(level int) Logger {
method GetV (line 321) | func (l Logger) GetV() int {
method WithValues (line 328) | func (l Logger) WithValues(keysAndValues ...any) Logger {
method WithName (line 341) | func (l Logger) WithName(name string) Logger {
method WithCallDepth (line 364) | func (l Logger) WithCallDepth(depth int) Logger {
method WithCallStackHelper (line 388) | func (l Logger) WithCallStackHelper() (func(), Logger) {
method IsZero (line 405) | func (l Logger) IsZero() bool {
type RuntimeInfo (line 411) | type RuntimeInfo struct
type LogSink (line 426) | type LogSink interface
type CallDepthLogSink (line 465) | type CallDepthLogSink interface
type CallStackHelperLogSink (line 497) | type CallStackHelperLogSink interface
type Marshaler (line 508) | type Marshaler interface
FILE: vendor/github.com/go-logr/logr/sloghandler.go
type slogHandler (line 27) | type slogHandler struct
method GetLevel (line 51) | func (l *slogHandler) GetLevel() slog.Level {
method Enabled (line 55) | func (l *slogHandler) Enabled(_ context.Context, level slog.Level) bool {
method Handle (line 59) | func (l *slogHandler) Handle(ctx context.Context, record slog.Record) ...
method sinkWithCallDepth (line 96) | func (l *slogHandler) sinkWithCallDepth() LogSink {
method WithAttrs (line 103) | func (l *slogHandler) WithAttrs(attrs []slog.Attr) slog.Handler {
method WithGroup (line 122) | func (l *slogHandler) WithGroup(name string) slog.Handler {
method levelFromSlog (line 185) | func (l *slogHandler) levelFromSlog(level slog.Level) int {
constant groupSeparator (line 48) | groupSeparator = "."
function attrToKVs (line 142) | func attrToKVs(attr slog.Attr, groupPrefix string, kvList []any) []any {
function addPrefix (line 162) | func addPrefix(prefix, name string) string {
FILE: vendor/github.com/go-logr/logr/slogr.go
function FromSlogHandler (line 31) | func FromSlogHandler(handler slog.Handler) Logger {
function ToSlogHandler (line 59) | func ToSlogHandler(logger Logger) slog.Handler {
type SlogSink (line 94) | type SlogSink interface
FILE: vendor/github.com/go-logr/logr/slogsink.go
type Underlier (line 36) | type Underlier interface
constant nameKey (line 43) | nameKey = "logger"
constant errKey (line 46) | errKey = "err"
type slogSink (line 49) | type slogSink struct
method Init (line 55) | func (l *slogSink) Init(info RuntimeInfo) {
method GetUnderlying (line 59) | func (l *slogSink) GetUnderlying() slog.Handler {
method WithCallDepth (line 63) | func (l *slogSink) WithCallDepth(depth int) LogSink {
method Enabled (line 69) | func (l *slogSink) Enabled(level int) bool {
method Info (line 73) | func (l *slogSink) Info(level int, msg string, kvList ...interface{}) {
method Error (line 77) | func (l *slogSink) Error(err error, msg string, kvList ...interface{}) {
method log (line 81) | func (l *slogSink) log(err error, msg string, level slog.Level, kvList...
method WithName (line 97) | func (l slogSink) WithName(name string) LogSink {
method WithValues (line 105) | func (l slogSink) WithValues(kvList ...interface{}) LogSink {
function kvListToAttrs (line 110) | func kvListToAttrs(kvList ...interface{}) []slog.Attr {
FILE: vendor/github.com/go-openapi/jsonpointer/pointer.go
constant emptyPointer (line 40) | emptyPointer = ``
constant pointerSeparator (line 41) | pointerSeparator = `/`
constant invalidStart (line 43) | invalidStart = `JSON pointer must be empty or start with a "` + pointerS...
constant notFound (line 44) | notFound = `Can't find the pointer in the document`
type JSONPointable (line 52) | type JSONPointable interface
type JSONSetable (line 58) | type JSONSetable interface
function New (line 63) | func New(jsonPointerString string) (Pointer, error) {
type Pointer (line 72) | type Pointer struct
method parse (line 77) | func (p *Pointer) parse(jsonPointerString string) error {
method Get (line 94) | func (p *Pointer) Get(document any) (any, reflect.Kind, error) {
method Set (line 99) | func (p *Pointer) Set(document any, value any) (any, error) {
method get (line 233) | func (p *Pointer) get(node any, nameProvider *swag.NameProvider) (any,...
method set (line 263) | func (p *Pointer) set(node, data any, nameProvider *swag.NameProvider)...
method DecodedTokens (line 359) | func (p *Pointer) DecodedTokens() []string {
method IsEmpty (line 369) | func (p *Pointer) IsEmpty() bool {
method String (line 374) | func (p *Pointer) String() string {
method Offset (line 385) | func (p *Pointer) Offset(document string) (int64, error) {
function GetForToken (line 104) | func GetForToken(document any, decodedToken string) (any, reflect.Kind, ...
function SetForToken (line 109) | func SetForToken(document any, decodedToken string, value any) (any, err...
function isNil (line 113) | func isNil(input any) bool {
function getSingleImpl (line 127) | func getSingleImpl(node any, decodedToken string, nameProvider *swag.Nam...
function setSingleImpl (line 182) | func setSingleImpl(node, data any, decodedToken string, nameProvider *sw...
function offsetSingleObject (line 416) | func offsetSingleObject(dec *json.Decoder, decodedToken string) (int64, ...
function offsetSingleArray (line 446) | func offsetSingleArray(dec *json.Decoder, decodedToken string) (int64, e...
function drainSingle (line 480) | func drainSingle(dec *json.Decoder) error {
constant encRefTok0 (line 513) | encRefTok0 = `~0`
constant encRefTok1 (line 514) | encRefTok1 = `~1`
constant decRefTok0 (line 515) | decRefTok0 = `~`
constant decRefTok1 (line 516) | decRefTok1 = `/`
function Unescape (line 520) | func Unescape(token string) string {
function Escape (line 527) | func Escape(token string) string {
FILE: vendor/github.com/go-openapi/jsonreference/internal/normalize_url.go
constant defaultHTTPPort (line 10) | defaultHTTPPort = ":80"
constant defaultHTTPSPort (line 11) | defaultHTTPSPort = ":443"
function NormalizeURL (line 31) | func NormalizeURL(u *url.URL) {
function lowercaseScheme (line 41) | func lowercaseScheme(u *url.URL) {
function lowercaseHost (line 47) | func lowercaseHost(u *url.URL) {
function removeDefaultPort (line 53) | func removeDefaultPort(u *url.URL) {
function removeDuplicateSlashes (line 65) | func removeDuplicateSlashes(u *url.URL) {
FILE: vendor/github.com/go-openapi/jsonreference/reference.go
constant fragmentRune (line 38) | fragmentRune = `#`
function New (line 42) | func New(jsonReferenceString string) (Ref, error) {
function MustCreateRef (line 52) | func MustCreateRef(ref string) Ref {
type Ref (line 61) | type Ref struct
method GetURL (line 73) | func (r *Ref) GetURL() *url.URL {
method GetPointer (line 78) | func (r *Ref) GetPointer() *jsonpointer.Pointer {
method String (line 83) | func (r *Ref) String() string {
method IsRoot (line 97) | func (r *Ref) IsRoot() bool {
method IsCanonical (line 105) | func (r *Ref) IsCanonical() bool {
method parse (line 110) | func (r *Ref) parse(jsonReferenceString string) error {
method Inherits (line 143) | func (r *Ref) Inherits(child Ref) (*Ref, error) {
FILE: vendor/github.com/gogo/protobuf/proto/clone.go
function Clone (line 45) | func Clone(src Message) Message {
type Merger (line 57) | type Merger interface
type generatedMerger (line 69) | type generatedMerger interface
function Merge (line 77) | func Merge(dst, src Message) {
function mergeStruct (line 101) | func mergeStruct(out, in reflect.Value) {
function mergeAny (line 140) | func mergeAny(out, in reflect.Value, viaPtr bool, prop *Properties) {
function mergeExtension (line 243) | func mergeExtension(out, in map[int32]Extension) {
FILE: vendor/github.com/gogo/protobuf/proto/custom_gogo.go
type custom (line 33) | type custom interface
FILE: vendor/github.com/gogo/protobuf/proto/decode.go
function DecodeVarint (line 57) | func DecodeVarint(buf []byte) (x uint64, n int) {
method decodeVarintSlow (line 74) | func (p *Buffer) decodeVarintSlow() (x uint64, err error) {
method DecodeVarint (line 101) | func (p *Buffer) DecodeVarint() (x uint64, err error) {
method DecodeFixed64 (line 200) | func (p *Buffer) DecodeFixed64() (x uint64, err error) {
method DecodeFixed32 (line 223) | func (p *Buffer) DecodeFixed32() (x uint64, err error) {
method DecodeZigzag64 (line 242) | func (p *Buffer) DecodeZigzag64() (x uint64, err error) {
method DecodeZigzag32 (line 254) | func (p *Buffer) DecodeZigzag32() (x uint64, err error) {
method DecodeRawBytes (line 266) | func (p *Buffer) DecodeRawBytes(alloc bool) (buf []byte, err error) {
method DecodeStringBytes (line 296) | func (p *Buffer) DecodeStringBytes() (s string, err error) {
type Unmarshaler (line 312) | type Unmarshaler interface
type newUnmarshaler (line 323) | type newUnmarshaler interface
function Unmarshal (line 334) | func Unmarshal(buf []byte, pb Message) error {
function UnmarshalMerge (line 351) | func UnmarshalMerge(buf []byte, pb Message) error {
method DecodeMessage (line 368) | func (p *Buffer) DecodeMessage(pb Message) error {
method DecodeGroup (line 379) | func (p *Buffer) DecodeGroup(pb Message) error {
method Unmarshal (line 396) | func (p *Buffer) Unmarshal(pb Message) error {
FILE: vendor/github.com/gogo/protobuf/proto/deprecated.go
type Stats (line 37) | type Stats struct
function GetStats (line 40) | func GetStats() Stats { return Stats{} }
function MarshalMessageSet (line 43) | func MarshalMessageSet(interface{}) ([]byte, error) {
function UnmarshalMessageSet (line 48) | func UnmarshalMessageSet([]byte, interface{}) error {
function MarshalMessageSetJSON (line 53) | func MarshalMessageSetJSON(interface{}) ([]byte, error) {
function UnmarshalMessageSetJSON (line 58) | func UnmarshalMessageSetJSON([]byte, interface{}) error {
function RegisterMessageSetType (line 63) | func RegisterMessageSetType(Message, int32, string) {}
FILE: vendor/github.com/gogo/protobuf/proto/discard.go
type generatedDiscarder (line 42) | type generatedDiscarder interface
function DiscardUnknown (line 57) | func DiscardUnknown(m Message) {
method DiscardUnknown (line 69) | func (a *InternalMessageInfo) DiscardUnknown(m Message) {
type discardInfo (line 78) | type discardInfo struct
method discard (line 109) | func (di *discardInfo) discard(src pointer) {
method computeDiscardInfo (line 140) | func (di *discardInfo) computeDiscardInfo() {
type discardFieldInfo (line 88) | type discardFieldInfo struct
function getDiscardInfo (line 98) | func getDiscardInfo(t reflect.Type) *discardInfo {
function discardLegacy (line 254) | func discardLegacy(m Message) {
FILE: vendor/github.com/gogo/protobuf/proto/duration.go
constant maxSeconds (line 46) | maxSeconds = int64(10000 * 365.25 * 24 * 60 * 60)
constant minSeconds (line 47) | minSeconds = -maxSeconds
function validateDuration (line 54) | func validateDuration(d *duration) error {
function durationFromProto (line 74) | func durationFromProto(p *duration) (time.Duration, error) {
function durationProto (line 92) | func durationProto(d time.Duration) *duration {
FILE: vendor/github.com/gogo/protobuf/proto/duration_gogo.go
type duration (line 38) | type duration struct
method Reset (line 43) | func (m *duration) Reset() { *m = duration{} }
method ProtoMessage (line 44) | func (*duration) ProtoMessage() {}
method String (line 45) | func (*duration) String() string { return "duration<string>" }
function init (line 47) | func init() {
FILE: vendor/github.com/gogo/protobuf/proto/encode.go
constant maxVarintBytes (line 64) | maxVarintBytes = 10
function EncodeVarint (line 72) | func EncodeVarint(x uint64) []byte {
method EncodeVarint (line 88) | func (p *Buffer) EncodeVarint(x uint64) error {
function SizeVarint (line 98) | func SizeVarint(x uint64) int {
method EncodeFixed64 (line 125) | func (p *Buffer) EncodeFixed64(x uint64) error {
method EncodeFixed32 (line 141) | func (p *Buffer) EncodeFixed32(x uint64) error {
method EncodeZigzag64 (line 153) | func (p *Buffer) EncodeZigzag64(x uint64) error {
method EncodeZigzag32 (line 161) | func (p *Buffer) EncodeZigzag32(x uint64) error {
method EncodeRawBytes (line 169) | func (p *Buffer) EncodeRawBytes(b []byte) error {
method EncodeStringBytes (line 177) | func (p *Buffer) EncodeStringBytes(s string) error {
type Marshaler (line 184) | type Marshaler interface
method EncodeMessage (line 190) | func (p *Buffer) EncodeMessage(pb Message) error {
function isNil (line 199) | func isNil(v reflect.Value) bool {
FILE: vendor/github.com/gogo/protobuf/proto/encode_gogo.go
function NewRequiredNotSetError (line 31) | func NewRequiredNotSetError(field string) *RequiredNotSetError {
FILE: vendor/github.com/gogo/protobuf/proto/equal.go
function Equal (line 72) | func Equal(a, b Message) bool {
function equalStruct (line 96) | func equalStruct(v1, v2 reflect.Value) bool {
function equalAny (line 145) | func equalAny(v1, v2 reflect.Value, prop *Properties) bool {
function equalExtensions (line 232) | func equalExtensions(base reflect.Type, x1, x2 XXX_InternalExtensions) b...
function equalExtMap (line 238) | func equalExtMap(base reflect.Type, em1, em2 map[int32]Extension) bool {
FILE: vendor/github.com/gogo/protobuf/proto/extensions.go
type ExtensionRange (line 52) | type ExtensionRange struct
type extendableProto (line 58) | type extendableProto interface
type extendableProtoV1 (line 67) | type extendableProtoV1 interface
type extensionAdapter (line 74) | type extensionAdapter struct
method extensionsWrite (line 78) | func (e extensionAdapter) extensionsWrite() map[int32]Extension {
method extensionsRead (line 82) | func (e extensionAdapter) extensionsRead() (map[int32]Extension, sync....
type notLocker (line 87) | type notLocker struct
method Lock (line 89) | func (n notLocker) Lock() {}
method Unlock (line 90) | func (n notLocker) Unlock() {}
function extendable (line 95) | func extendable(p interface{}) (extendableProto, error) {
function isNilPtr (line 117) | func isNilPtr(x interface{}) bool {
type XXX_InternalExtensions (line 129) | type XXX_InternalExtensions struct
method extensionsWrite (line 144) | func (e *XXX_InternalExtensions) extensionsWrite() map[int32]Extension {
method extensionsRead (line 157) | func (e *XXX_InternalExtensions) extensionsRead() (map[int32]Extension...
type ExtensionDesc (line 166) | type ExtensionDesc struct
method repeated (line 175) | func (ed *ExtensionDesc) repeated() bool {
type Extension (line 181) | type Extension struct
function SetRawExtension (line 196) | func SetRawExtension(base Message, id int32, b []byte) {
function isExtensionField (line 212) | func isExtensionField(pb extendableProto, field int32) bool {
function checkExtensionTypes (line 222) | func checkExtensionTypes(pb extendableProto, extension *ExtensionDesc) e...
type extPropKey (line 242) | type extPropKey struct
function extensionProperties (line 254) | func extensionProperties(ed *ExtensionDesc) *Properties {
function HasExtension (line 278) | func HasExtension(pb Message, extension *ExtensionDesc) bool {
function ClearExtension (line 315) | func ClearExtension(pb Message, extension *ExtensionDesc) {
function clearExtension (line 319) | func clearExtension(pb Message, fieldNum int32) {
function GetExtension (line 345) | func GetExtension(pb Message, extension *ExtensionDesc) (interface{}, er...
function defaultExtensionValue (line 408) | func defaultExtensionValue(extension *ExtensionDesc) (interface{}, error) {
function decodeExtension (line 447) | func decodeExtension(b []byte, extension *ExtensionDesc) (interface{}, e...
function GetExtensions (line 478) | func GetExtensions(pb Message, es []*ExtensionDesc) (extensions []interf...
function ExtensionDescs (line 499) | func ExtensionDescs(pb Message) ([]*ExtensionDesc, error) {
function SetExtension (line 528) | func SetExtension(pb Message, extension *ExtensionDesc, value interface{...
function ClearAllExtensions (line 565) | func ClearAllExtensions(pb Message) {
function RegisterExtension (line 587) | func RegisterExtension(desc *ExtensionDesc) {
function RegisteredExtensions (line 603) | func RegisteredExtensions(pb Message) map[int32]*ExtensionDesc {
FILE: vendor/github.com/gogo/protobuf/proto/extensions_gogo.go
type extensionsBytes (line 42) | type extensionsBytes interface
type slowExtensionAdapter (line 48) | type slowExtensionAdapter struct
method extensionsWrite (line 52) | func (s slowExtensionAdapter) extensionsWrite() map[int32]Extension {
method extensionsRead (line 56) | func (s slowExtensionAdapter) extensionsRead() (map[int32]Extension, s...
function GetBoolExtension (line 65) | func GetBoolExtension(pb Message, extension *ExtensionDesc, ifnotset boo...
method Equal (line 82) | func (this *Extension) Equal(that *Extension) bool {
method Compare (line 92) | func (this *Extension) Compare(that *Extension) int {
function SizeOfInternalExtension (line 102) | func SizeOfInternalExtension(m extendableProto) (n int) {
type sortableMapElem (line 107) | type sortableMapElem struct
function newSortableExtensionsFromMap (line 112) | func newSortableExtensionsFromMap(m map[int32]Extension) sortableExtensi...
type sortableExtensions (line 120) | type sortableExtensions
method Len (line 122) | func (this sortableExtensions) Len() int { return len(this) }
method Swap (line 124) | func (this sortableExtensions) Swap(i, j int) { this[i], this[j] = thi...
method Less (line 126) | func (this sortableExtensions) Less(i, j int) bool { return this[i].fi...
method String (line 128) | func (this sortableExtensions) String() string {
function StringFromInternalExtension (line 137) | func StringFromInternalExtension(m extendableProto) string {
function StringFromExtensionsMap (line 141) | func StringFromExtensionsMap(m map[int32]Extension) string {
function StringFromExtensionsBytes (line 145) | func StringFromExtensionsBytes(ext []byte) string {
function EncodeInternalExtension (line 153) | func EncodeInternalExtension(m extendableProto, data []byte) (n int, err...
function EncodeInternalExtensionBackwards (line 157) | func EncodeInternalExtensionBackwards(m extendableProto, data []byte) (n...
function EncodeExtensionMap (line 161) | func EncodeExtensionMap(m map[int32]Extension, data []byte) (n int, err ...
function EncodeExtensionMapBackwards (line 176) | func EncodeExtensionMapBackwards(m map[int32]Extension, data []byte) (n ...
function GetRawExtension (line 193) | func GetRawExtension(m map[int32]Extension, id int32) ([]byte, error) {
function size (line 201) | func size(buf []byte, wire int) (int, error) {
function BytesToExtensionsMap (line 232) | func BytesToExtensionsMap(buf []byte) (map[int32]Extension, error) {
function NewExtension (line 253) | func NewExtension(e []byte) Extension {
function AppendExtension (line 259) | func AppendExtension(e Message, tag int32, buf []byte) {
function encodeExtension (line 273) | func encodeExtension(extension *ExtensionDesc, value interface{}) ([]byt...
function decodeExtensionFromBytes (line 283) | func decodeExtensionFromBytes(extension *ExtensionDesc, buf []byte) (int...
method Encode (line 311) | func (this *Extension) Encode() error {
method GoString (line 322) | func (this Extension) GoString() string {
function SetUnsafeExtension (line 329) | func SetUnsafeExtension(pb Message, fieldNum int32, value interface{}) e...
function GetUnsafeExtension (line 342) | func GetUnsafeExtension(pb Message, fieldNum int32) (interface{}, error) {
function NewUnsafeXXX_InternalExtensions (line 355) | func NewUnsafeXXX_InternalExtensions(m map[int32]Extension) XXX_Internal...
function GetUnsafeExtensionsMap (line 366) | func GetUnsafeExtensionsMap(extendable Message) map[int32]Extension {
function deleteExtension (line 371) | func deleteExtension(pb extensionsBytes, theFieldNum int32, offset int) ...
FILE: vendor/github.com/gogo/protobuf/proto/lib.go
type RequiredNotSetError (line 279) | type RequiredNotSetError struct
method Error (line 281) | func (e *RequiredNotSetError) Error() string {
method RequiredNotSet (line 287) | func (e *RequiredNotSetError) RequiredNotSet() bool {
type invalidUTF8Error (line 291) | type invalidUTF8Error struct
method Error (line 293) | func (e *invalidUTF8Error) Error() string {
method InvalidUTF8 (line 299) | func (e *invalidUTF8Error) InvalidUTF8() bool {
function isNonFatal (line 310) | func isNonFatal(err error) bool {
type nonFatal (line 320) | type nonFatal struct
method Merge (line 324) | func (nf *nonFatal) Merge(err error) (ok bool) {
type Message (line 338) | type Message interface
type Buffer (line 349) | type Buffer struct
method Reset (line 363) | func (p *Buffer) Reset() {
method SetBuf (line 370) | func (p *Buffer) SetBuf(s []byte) {
method Bytes (line 376) | func (p *Buffer) Bytes() []byte { return p.buf }
method SetDeterministic (line 398) | func (p *Buffer) SetDeterministic(deterministic bool) {
method DebugPrint (line 502) | func (p *Buffer) DebugPrint(s string, b []byte) {
function NewBuffer (line 358) | func NewBuffer(e []byte) *Buffer {
function Bool (line 408) | func Bool(v bool) *bool {
function Int32 (line 414) | func Int32(v int32) *int32 {
function Int (line 421) | func Int(v int) *int32 {
function Int64 (line 429) | func Int64(v int64) *int64 {
function Float32 (line 435) | func Float32(v float32) *float32 {
function Float64 (line 441) | func Float64(v float64) *float64 {
function Uint32 (line 447) | func Uint32(v uint32) *uint32 {
function Uint64 (line 453) | func Uint64(v uint64) *uint64 {
function String (line 459) | func String(v string) *string {
function EnumName (line 465) | func EnumName(m map[int32]string, v int32) string {
function UnmarshalJSONEnum (line 479) | func UnmarshalJSONEnum(m map[string]int32, data []byte, enumName string)...
function SetDefaults (line 607) | func SetDefaults(pb Message) {
function setDefaults (line 612) | func setDefaults(v reflect.Value, recur, zeros bool) {
type defaultMessage (line 759) | type defaultMessage struct
type scalarField (line 764) | type scalarField struct
function buildDefaultMessage (line 771) | func buildDefaultMessage(t reflect.Type) (dm defaultMessage) {
function fieldDefault (line 800) | func fieldDefault(ft reflect.Type, prop *Properties) (sf *scalarField, n...
function mapKeys (line 900) | func mapKeys(vs []reflect.Value) sort.Interface {
type mapKeySorter (line 923) | type mapKeySorter struct
method Len (line 928) | func (s mapKeySorter) Len() int { return len(s.vs) }
method Swap (line 929) | func (s mapKeySorter) Swap(i, j int) { s.vs[i], s.vs[j] = s.vs[j], s.v...
method Less (line 930) | func (s mapKeySorter) Less(i, j int) bool {
function isProto3Zero (line 935) | func isProto3Zero(v reflect.Value) bool {
constant GoGoProtoPackageIsVersion3 (line 954) | GoGoProtoPackageIsVersion3 = true
constant GoGoProtoPackageIsVersion2 (line 958) | GoGoProtoPackageIsVersion2 = true
constant GoGoProtoPackageIsVersion1 (line 962) | GoGoProtoPackageIsVersion1 = true
type InternalMessageInfo (line 968) | type InternalMessageInfo struct
FILE: vendor/github.com/gogo/protobuf/proto/lib_gogo.go
type Sizer (line 36) | type Sizer interface
type ProtoSizer (line 40) | type ProtoSizer interface
function MarshalJSONEnum (line 44) | func MarshalJSONEnum(m map[int32]string, value int32) ([]byte, error) {
FILE: vendor/github.com/gogo/protobuf/proto/message_set.go
type _MessageSet_Item (line 57) | type _MessageSet_Item struct
type messageSet (line 62) | type messageSet struct
method find (line 77) | func (ms *messageSet) find(pb Message) *_MessageSet_Item {
method Has (line 91) | func (ms *messageSet) Has(pb Message) bool {
method Unmarshal (line 95) | func (ms *messageSet) Unmarshal(pb Message) error {
method Marshal (line 105) | func (ms *messageSet) Marshal(pb Message) error {
method Reset (line 129) | func (ms *messageSet) Reset() { *ms = messageSet{} }
method String (line 130) | func (ms *messageSet) String() string { return CompactTextString(ms) }
method ProtoMessage (line 131) | func (*messageSet) ProtoMessage() {}
type messageTypeIder (line 73) | type messageTypeIder interface
function skipVarint (line 135) | func skipVarint(buf []byte) []byte {
function unmarshalMessageSet (line 144) | func unmarshalMessageSet(buf []byte, exts interface{}) error {
FILE: vendor/github.com/gogo/protobuf/proto/pointer_reflect.go
constant unsafeAllowed (line 45) | unsafeAllowed = false
type field (line 50) | type field
method IsValid (line 64) | func (f field) IsValid() bool { return f != nil }
function toField (line 53) | func toField(f *reflect.StructField) field {
type pointer (line 70) | type pointer struct
method offset (line 96) | func (p pointer) offset(f field) pointer {
method isNil (line 100) | func (p pointer) isNil() bool {
method toInt64 (line 117) | func (p pointer) toInt64() *int64 {
method toInt64Ptr (line 120) | func (p pointer) toInt64Ptr() **int64 {
method toInt64Slice (line 123) | func (p pointer) toInt64Slice() *[]int64 {
method toInt32 (line 129) | func (p pointer) toInt32() *int32 {
method getInt32Ptr (line 143) | func (p pointer) getInt32Ptr() *int32 {
method setInt32Ptr (line 151) | func (p pointer) setInt32Ptr(v int32) {
method getInt32Slice (line 161) | func (p pointer) getInt32Slice() []int32 {
method setInt32Slice (line 179) | func (p pointer) setInt32Slice(v []int32) {
method appendInt32Slice (line 194) | func (p pointer) appendInt32Slice(v int32) {
method toUint64 (line 198) | func (p pointer) toUint64() *uint64 {
method toUint64Ptr (line 201) | func (p pointer) toUint64Ptr() **uint64 {
method toUint64Slice (line 204) | func (p pointer) toUint64Slice() *[]uint64 {
method toUint32 (line 207) | func (p pointer) toUint32() *uint32 {
method toUint32Ptr (line 210) | func (p pointer) toUint32Ptr() **uint32 {
method toUint32Slice (line 213) | func (p pointer) toUint32Slice() *[]uint32 {
method toBool (line 216) | func (p pointer) toBool() *bool {
method toBoolPtr (line 219) | func (p pointer) toBoolPtr() **bool {
method toBoolSlice (line 222) | func (p pointer) toBoolSlice() *[]bool {
method toFloat64 (line 225) | func (p pointer) toFloat64() *float64 {
method toFloat64Ptr (line 228) | func (p pointer) toFloat64Ptr() **float64 {
method toFloat64Slice (line 231) | func (p pointer) toFloat64Slice() *[]float64 {
method toFloat32 (line 234) | func (p pointer) toFloat32() *float32 {
method toFloat32Ptr (line 237) | func (p pointer) toFloat32Ptr() **float32 {
method toFloat32Slice (line 240) | func (p pointer) toFloat32Slice() *[]float32 {
method toString (line 243) | func (p pointer) toString() *string {
method toStringPtr (line 246) | func (p pointer) toStringPtr() **string {
method toStringSlice (line 249) | func (p pointer) toStringSlice() *[]string {
method toBytes (line 252) | func (p pointer) toBytes() *[]byte {
method toBytesSlice (line 255) | func (p pointer) toBytesSlice() *[][]byte {
method toExtensions (line 258) | func (p pointer) toExtensions() *XXX_InternalExtensions {
method toOldExtensions (line 261) | func (p pointer) toOldExtensions() *map[int32]Extension {
method getPointer (line 264) | func (p pointer) getPointer() pointer {
method setPointer (line 267) | func (p pointer) setPointer(q pointer) {
method appendPointer (line 270) | func (p pointer) appendPointer(q pointer) {
method getPointerSlice (line 276) | func (p pointer) getPointerSlice() []pointer {
method setPointerSlice (line 290) | func (p pointer) setPointerSlice(v []pointer) {
method getInterfacePointer (line 304) | func (p pointer) getInterfacePointer() pointer {
method asPointerTo (line 311) | func (p pointer) asPointerTo(t reflect.Type) reflect.Value {
function toPointer (line 76) | func toPointer(i *Message) pointer {
function toAddrPointer (line 82) | func toAddrPointer(i *interface{}, isptr bool) pointer {
function valToPointer (line 90) | func valToPointer(v reflect.Value) pointer {
function grow (line 107) | func grow(s reflect.Value) reflect.Value {
function atomicLoadUnmarshalInfo (line 316) | func atomicLoadUnmarshalInfo(p **unmarshalInfo) *unmarshalInfo {
function atomicStoreUnmarshalInfo (line 321) | func atomicStoreUnmarshalInfo(p **unmarshalInfo, v *unmarshalInfo) {
function atomicLoadMarshalInfo (line 326) | func atomicLoadMarshalInfo(p **marshalInfo) *marshalInfo {
function atomicStoreMarshalInfo (line 331) | func atomicStoreMarshalInfo(p **marshalInfo, v *marshalInfo) {
function atomicLoadMergeInfo (line 336) | func atomicLoadMergeInfo(p **mergeInfo) *mergeInfo {
function atomicStoreMergeInfo (line 341) | func atomicStoreMergeInfo(p **mergeInfo, v *mergeInfo) {
function atomicLoadDiscardInfo (line 346) | func atomicLoadDiscardInfo(p **discardInfo) *discardInfo {
function atomicStoreDiscardInfo (line 351) | func atomicStoreDiscardInfo(p **discardInfo, v *discardInfo) {
FILE: vendor/github.com/gogo/protobuf/proto/pointer_reflect_gogo.go
method getRef (line 43) | func (p pointer) getRef() pointer {
method appendRef (line 47) | func (p pointer) appendRef(v pointer, typ reflect.Type) {
method getSlice (line 54) | func (p pointer) getSlice(typ reflect.Type) reflect.Value {
FILE: vendor/github.com/gogo/protobuf/proto/pointer_unsafe.go
constant unsafeAllowed (line 44) | unsafeAllowed = true
type field (line 48) | type field
method IsValid (line 62) | func (f field) IsValid() bool {
function toField (line 51) | func toField(f *reflect.StructField) field {
constant invalidField (line 56) | invalidField = ^field(0)
constant zeroField (line 59) | zeroField = field(0)
type pointer (line 70) | type pointer struct
method offset (line 107) | func (p pointer) offset(f field) pointer {
method isNil (line 118) | func (p pointer) isNil() bool {
method toInt64 (line 122) | func (p pointer) toInt64() *int64 {
method toInt64Ptr (line 125) | func (p pointer) toInt64Ptr() **int64 {
method toInt64Slice (line 128) | func (p pointer) toInt64Slice() *[]int64 {
method toInt32 (line 131) | func (p pointer) toInt32() *int32 {
method getInt32Ptr (line 144) | func (p pointer) getInt32Ptr() *int32 {
method setInt32Ptr (line 147) | func (p pointer) setInt32Ptr(v int32) {
method getInt32Slice (line 154) | func (p pointer) getInt32Slice() []int32 {
method setInt32Slice (line 161) | func (p pointer) setInt32Slice(v []int32) {
method appendInt32Slice (line 166) | func (p pointer) appendInt32Slice(v int32) {
method toUint64 (line 171) | func (p pointer) toUint64() *uint64 {
method toUint64Ptr (line 174) | func (p pointer) toUint64Ptr() **uint64 {
method toUint64Slice (line 177) | func (p pointer) toUint64Slice() *[]uint64 {
method toUint32 (line 180) | func (p pointer) toUint32() *uint32 {
method toUint32Ptr (line 183) | func (p pointer) toUint32Ptr() **uint32 {
method toUint32Slice (line 186) | func (p pointer) toUint32Slice() *[]uint32 {
method toBool (line 189) | func (p pointer) toBool() *bool {
method toBoolPtr (line 192) | func (p pointer) toBoolPtr() **bool {
method toBoolSlice (line 195) | func (p pointer) toBoolSlice() *[]bool {
method toFloat64 (line 198) | func (p pointer) toFloat64() *float64 {
method toFloat64Ptr (line 201) | func (p pointer) toFloat64Ptr() **float64 {
method toFloat64Slice (line 204) | func (p pointer) toFloat64Slice() *[]float64 {
method toFloat32 (line 207) | func (p pointer) toFloat32() *float32 {
method toFloat32Ptr (line 210) | func (p pointer) toFloat32Ptr() **float32 {
method toFloat32Slice (line 213) | func (p pointer) toFloat32Slice() *[]float32 {
method toString (line 216) | func (p pointer) toString() *string {
method toStringPtr (line 219) | func (p pointer) toStringPtr() **string {
method toStringSlice (line 222) | func (p pointer) toStringSlice() *[]string {
method toBytes (line 225) | func (p pointer) toBytes() *[]byte {
method toBytesSlice (line 228) | func (p pointer) toBytesSlice() *[][]byte {
method toExtensions (line 231) | func (p pointer) toExtensions() *XXX_InternalExtensions {
method toOldExtensions (line 234) | func (p pointer) toOldExtensions() *map[int32]Extension {
method getPointerSlice (line 241) | func (p pointer) getPointerSlice() []pointer {
method setPointerSlice (line 250) | func (p pointer) setPointerSlice(v []pointer) {
method getPointer (line 257) | func (p pointer) getPointer() pointer {
method setPointer (line 262) | func (p pointer) setPointer(q pointer) {
method appendPointer (line 267) | func (p pointer) appendPointer(q pointer) {
method getInterfacePointer (line 274) | func (p pointer) getInterfacePointer() pointer {
method asPointerTo (line 281) | func (p pointer) asPointerTo(t reflect.Type) reflect.Value {
function toPointer (line 79) | func toPointer(i *Message) pointer {
function toAddrPointer (line 88) | func toAddrPointer(i *interface{}, isptr bool) pointer {
function valToPointer (line 101) | func valToPointer(v reflect.Value) pointer {
function atomicLoadUnmarshalInfo (line 285) | func atomicLoadUnmarshalInfo(p **unmarshalInfo) *unmarshalInfo {
function atomicStoreUnmarshalInfo (line 288) | func atomicStoreUnmarshalInfo(p **unmarshalInfo, v *unmarshalInfo) {
function atomicLoadMarshalInfo (line 291) | func atomicLoadMarshalInfo(p **marshalInfo) *marshalInfo {
function atomicStoreMarshalInfo (line 294) | func atomicStoreMarshalInfo(p **marshalInfo, v *marshalInfo) {
function atomicLoadMergeInfo (line 297) | func atomicLoadMergeInfo(p **mergeInfo) *mergeInfo {
function atomicStoreMergeInfo (line 300) | func atomicStoreMergeInfo(p **mergeInfo, v *mergeInfo) {
function atomicLoadDiscardInfo (line 303) | func atomicLoadDiscardInfo(p **discardInfo) *discardInfo {
function atomicStoreDiscardInfo (line 306) | func atomicStoreDiscardInfo(p **discardInfo, v *discardInfo) {
FILE: vendor/github.com/gogo/protobuf/proto/pointer_unsafe_gogo.go
method getRef (line 40) | func (p pointer) getRef() pointer {
method appendRef (line 44) | func (p pointer) appendRef(v pointer, typ reflect.Type) {
method getSlice (line 51) | func (p pointer) getSlice(typ reflect.Type) reflect.Value {
FILE: vendor/github.com/gogo/protobuf/proto/properties.go
constant debug (line 53) | debug bool = false
constant WireVarint (line 57) | WireVarint = 0
constant WireFixed64 (line 58) | WireFixed64 = 1
constant WireBytes (line 59) | WireBytes = 2
constant WireStartGroup (line 60) | WireStartGroup = 3
constant WireEndGroup (line 61) | WireEndGroup = 4
constant WireFixed32 (line 62) | WireFixed32 = 5
type tagMap (line 68) | type tagMap struct
method get (line 77) | func (p *tagMap) get(t int) (int, bool) {
method put (line 89) | func (p *tagMap) put(t int, fi int) {
constant tagMapFastLimit (line 75) | tagMapFastLimit = 1024
type StructProperties (line 105) | type StructProperties struct
method Len (line 127) | func (sp *StructProperties) Len() int { return len(sp.order) }
method Less (line 128) | func (sp *StructProperties) Less(i, j int) bool {
method Swap (line 131) | func (sp *StructProperties) Swap(i, j int) { sp.order[i], sp.order[j] ...
type OneofProperties (line 118) | type OneofProperties struct
type Properties (line 134) | type Properties struct
method String (line 167) | func (p *Properties) String() string {
method Parse (line 203) | func (p *Properties) Parse(s string) {
method setFieldProps (line 286) | func (p *Properties) setFieldProps(typ reflect.Type, f *reflect.Struct...
method setTag (line 345) | func (p *Properties) setTag(lockGetProp bool) {
method Init (line 360) | func (p *Properties) Init(typ reflect.Type, name, tag string, f *refle...
method init (line 364) | func (p *Properties) init(typ reflect.Type, name, tag string, f *refle...
function GetProperties (line 382) | func GetProperties(t reflect.Type) *StructProperties {
type oneofFuncsIface (line 403) | type oneofFuncsIface interface
type oneofWrappersIface (line 406) | type oneofWrappersIface interface
function getPropertiesLocked (line 412) | func getPropertiesLocked(t reflect.Type) *StructProperties {
function RegisterEnum (line 518) | func RegisterEnum(typeName string, unusedNameMap map[int32]string, value...
function EnumValueMap (line 531) | func EnumValueMap(enumType string) map[string]int32 {
function RegisterType (line 545) | func RegisterType(x Message, name string) {
function RegisterMapType (line 564) | func RegisterMapType(x interface{}, name string) {
function MessageName (line 578) | func MessageName(x Message) string {
function MessageType (line 591) | func MessageType(name string) reflect.Type {
function RegisterFile (line 605) | func RegisterFile(filename string, fileDescriptor []byte) {
function FileDescriptor (line 610) | func FileDescriptor(filename string) []byte { return protoFiles[filename] }
FILE: vendor/github.com/gogo/protobuf/proto/skip_gogo.go
function Skip (line 36) | func Skip(data []byte) (n int, err error) {
FILE: vendor/github.com/gogo/protobuf/proto/table_marshal.go
type sizer (line 49) | type sizer
type marshaler (line 53) | type marshaler
type marshalInfo (line 56) | type marshalInfo struct
method size (line 170) | func (u *marshalInfo) size(ptr pointer) int {
method cachedsize (line 232) | func (u *marshalInfo) cachedsize(ptr pointer) int {
method marshal (line 243) | func (u *marshalInfo) marshal(b []byte, ptr pointer, deterministic boo...
method computeMarshalInfo (line 327) | func (u *marshalInfo) computeMarshalInfo() {
method getExtElemInfo (line 442) | func (u *marshalInfo) getExtElemInfo(desc *ExtensionDesc) *marshalElem...
method sizeExtensions (line 2616) | func (u *marshalInfo) sizeExtensions(ext *XXX_InternalExtensions) int {
method appendExtensions (line 2644) | func (u *marshalInfo) appendExtensions(b []byte, ext *XXX_InternalExte...
method sizeMessageSet (line 2721) | func (u *marshalInfo) sizeMessageSet(ext *XXX_InternalExtensions) int {
method appendMessageSet (line 2756) | func (u *marshalInfo) appendMessageSet(b []byte, ext *XXX_InternalExte...
method sizeV1Extensions (line 2839) | func (u *marshalInfo) sizeV1Extensions(m map[int32]Extension) int {
method appendV1Extensions (line 2865) | func (u *marshalInfo) appendV1Extensions(b []byte, m map[int32]Extensi...
type marshalFieldInfo (line 76) | type marshalFieldInfo struct
method computeMarshalFieldInfo (line 478) | func (fi *marshalFieldInfo) computeMarshalFieldInfo(f *reflect.StructF...
method computeOneofFieldInfo (line 497) | func (fi *marshalFieldInfo) computeOneofFieldInfo(f *reflect.StructFie...
method setTag (line 545) | func (fi *marshalFieldInfo) setTag(f *reflect.StructField, tag int, wt...
method setMarshaler (line 552) | func (fi *marshalFieldInfo) setMarshaler(f *reflect.StructField, tags ...
type marshalElemInfo (line 89) | type marshalElemInfo struct
function getMarshalInfo (line 107) | func getMarshalInfo(t reflect.Type) *marshalInfo {
method Size (line 122) | func (a *InternalMessageInfo) Size(msg Message) int {
method Marshal (line 138) | func (a *InternalMessageInfo) Marshal(b []byte, msg Message, determinist...
function getMessageMarshalInfo (line 150) | func getMessageMarshalInfo(msg interface{}, a *InternalMessageInfo) *mar...
type byTag (line 434) | type byTag
method Len (line 436) | func (a byTag) Len() int { return len(a) }
method Swap (line 437) | func (a byTag) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
method Less (line 438) | func (a byTag) Less(i, j int) bool { return a[i].wiretag < a[j].wiretag }
function wiretype (line 528) | func wiretype(encoding string) uint64 {
function typeMarshaler (line 570) | func typeMarshaler(t reflect.Type, tags []string, nozero, oneof bool) (s...
function sizeFixed32Value (line 1022) | func sizeFixed32Value(_ pointer, tagsize int) int {
function sizeFixed32ValueNoZero (line 1025) | func sizeFixed32ValueNoZero(ptr pointer, tagsize int) int {
function sizeFixed32Ptr (line 1032) | func sizeFixed32Ptr(ptr pointer, tagsize int) int {
function sizeFixed32Slice (line 1039) | func sizeFixed32Slice(ptr pointer, tagsize int) int {
function sizeFixed32PackedSlice (line 1043) | func sizeFixed32PackedSlice(ptr pointer, tagsize int) int {
function sizeFixedS32Value (line 1050) | func sizeFixedS32Value(_ pointer, tagsize int) int {
function sizeFixedS32ValueNoZero (line 1053) | func sizeFixedS32ValueNoZero(ptr pointer, tagsize int) int {
function sizeFixedS32Ptr (line 1060) | func sizeFixedS32Ptr(ptr pointer, tagsize int) int {
function sizeFixedS32Slice (line 1067) | func sizeFixedS32Slice(ptr pointer, tagsize int) int {
function sizeFixedS32PackedSlice (line 1071) | func sizeFixedS32PackedSlice(ptr pointer, tagsize int) int {
function sizeFloat32Value (line 1078) | func sizeFloat32Value(_ pointer, tagsize int) int {
function sizeFloat32ValueNoZero (line 1081) | func sizeFloat32ValueNoZero(ptr pointer, tagsize int) int {
function sizeFloat32Ptr (line 1088) | func sizeFloat32Ptr(ptr pointer, tagsize int) int {
function sizeFloat32Slice (line 1095) | func sizeFloat32Slice(ptr pointer, tagsize int) int {
function sizeFloat32PackedSlice (line 1099) | func sizeFloat32PackedSlice(ptr pointer, tagsize int) int {
function sizeFixed64Value (line 1106) | func sizeFixed64Value(_ pointer, tagsize int) int {
function sizeFixed64ValueNoZero (line 1109) | func sizeFixed64ValueNoZero(ptr pointer, tagsize int) int {
function sizeFixed64Ptr (line 1116) | func sizeFixed64Ptr(ptr pointer, tagsize int) int {
function sizeFixed64Slice (line 1123) | func sizeFixed64Slice(ptr pointer, tagsize int) int {
function sizeFixed64PackedSlice (line 1127) | func sizeFixed64PackedSlice(ptr pointer, tagsize int) int {
function sizeFixedS64Value (line 1134) | func sizeFixedS64Value(_ pointer, tagsize int) int {
function sizeFixedS64ValueNoZero (line 1137) | func sizeFixedS64ValueNoZero(ptr pointer, tagsize int) int {
function sizeFixedS64Ptr (line 1144) | func sizeFixedS64Ptr(ptr pointer, tagsize int) int {
function sizeFixedS64Slice (line 1151) | func sizeFixedS64Slice(ptr pointer, tagsize int) int {
function sizeFixedS64PackedSlice (line 1155) | func sizeFixedS64PackedSlice(ptr pointer, tagsize int) int {
function sizeFloat64Value (line 1162) | func sizeFloat64Value(_ pointer, tagsize int) int {
function sizeFloat64ValueNoZero (line 1165) | func sizeFloat64ValueNoZero(ptr pointer, tagsize int) int {
function sizeFloat64Ptr (line 1172) | func sizeFloat64Ptr(ptr pointer, tagsize int) int {
function sizeFloat64Slice (line 1179) | func sizeFloat64Slice(ptr pointer, tagsize int) int {
function sizeFloat64PackedSlice (line 1183) | func sizeFloat64PackedSlice(ptr pointer, tagsize int) int {
function sizeVarint32Value (line 1190) | func sizeVarint32Value(ptr pointer, tagsize int) int {
function sizeVarint32ValueNoZero (line 1194) | func sizeVarint32ValueNoZero(ptr pointer, tagsize int) int {
function sizeVarint32Ptr (line 1201) | func sizeVarint32Ptr(ptr pointer, tagsize int) int {
function sizeVarint32Slice (line 1208) | func sizeVarint32Slice(ptr pointer, tagsize int) int {
function sizeVarint32PackedSlice (line 1216) | func sizeVarint32PackedSlice(ptr pointer, tagsize int) int {
function sizeVarintS32Value (line 1227) | func sizeVarintS32Value(ptr pointer, tagsize int) int {
function sizeVarintS32ValueNoZero (line 1231) | func sizeVarintS32ValueNoZero(ptr pointer, tagsize int) int {
function sizeVarintS32Ptr (line 1238) | func sizeVarintS32Ptr(ptr pointer, tagsize int) int {
function sizeVarintS32Slice (line 1245) | func sizeVarintS32Slice(ptr pointer, tagsize int) int {
function sizeVarintS32PackedSlice (line 1253) | func sizeVarintS32PackedSlice(ptr pointer, tagsize int) int {
function sizeVarint64Value (line 1264) | func sizeVarint64Value(ptr pointer, tagsize int) int {
function sizeVarint64ValueNoZero (line 1268) | func sizeVarint64ValueNoZero(ptr pointer, tagsize int) int {
function sizeVarint64Ptr (line 1275) | func sizeVarint64Ptr(ptr pointer, tagsize int) int {
function sizeVarint64Slice (line 1282) | func sizeVarint64Slice(ptr pointer, tagsize int) int {
function sizeVarint64PackedSlice (line 1290) | func sizeVarint64PackedSlice(ptr pointer, tagsize int) int {
function sizeVarintS64Value (line 1301) | func sizeVarintS64Value(ptr pointer, tagsize int) int {
function sizeVarintS64ValueNoZero (line 1305) | func sizeVarintS64ValueNoZero(ptr pointer, tagsize int) int {
function sizeVarintS64Ptr (line 1312) | func sizeVarintS64Ptr(ptr pointer, tagsize int) int {
function sizeVarintS64Slice (line 1319) | func sizeVarintS64Slice(ptr pointer, tagsize int) int {
function sizeVarintS64PackedSlice (line 1327) | func sizeVarintS64PackedSlice(ptr pointer, tagsize int) int {
function sizeZigzag32Value (line 1338) | func sizeZigzag32Value(ptr pointer, tagsize int) int {
function sizeZigzag32ValueNoZero (line 1342) | func sizeZigzag32ValueNoZero(ptr pointer, tagsize int) int {
function sizeZigzag32Ptr (line 1349) | func sizeZigzag32Ptr(ptr pointer, tagsize int) int {
function sizeZigzag32Slice (line 1357) | func sizeZigzag32Slice(ptr pointer, tagsize int) int {
function sizeZigzag32PackedSlice (line 1365) | func sizeZigzag32PackedSlice(ptr pointer, tagsize int) int {
function sizeZigzag64Value (line 1376) | func sizeZigzag64Value(ptr pointer, tagsize int) int {
function sizeZigzag64ValueNoZero (line 1380) | func sizeZigzag64ValueNoZero(ptr pointer, tagsize int) int {
function sizeZigzag64Ptr (line 1387) | func sizeZigzag64Ptr(ptr pointer, tagsize int) int {
function sizeZigzag64Slice (line 1395) | func sizeZigzag64Slice(ptr pointer, tagsize int) int {
function sizeZigzag64PackedSlice (line 1403) | func sizeZigzag64PackedSlice(ptr pointer, tagsize int) int {
function sizeBoolValue (line 1414) | func sizeBoolValue(_ pointer, tagsize int) int {
function sizeBoolValueNoZero (line 1417) | func sizeBoolValueNoZero(ptr pointer, tagsize int) int {
function sizeBoolPtr (line 1424) | func sizeBoolPtr(ptr pointer, tagsize int) int {
function sizeBoolSlice (line 1431) | func sizeBoolSlice(ptr pointer, tagsize int) int {
function sizeBoolPackedSlice (line 1435) | func sizeBoolPackedSlice(ptr pointer, tagsize int) int {
function sizeStringValue (line 1442) | func sizeStringValue(ptr pointer, tagsize int) int {
function sizeStringValueNoZero (line 1446) | func sizeStringValueNoZero(ptr pointer, tagsize int) int {
function sizeStringPtr (line 1453) | func sizeStringPtr(ptr pointer, tagsize int) int {
function sizeStringSlice (line 1461) | func sizeStringSlice(ptr pointer, tagsize int) int {
function sizeBytes (line 1469) | func sizeBytes(ptr pointer, tagsize int) int {
function sizeBytes3 (line 1476) | func sizeBytes3(ptr pointer, tagsize int) int {
function sizeBytesOneof (line 1483) | func sizeBytesOneof(ptr pointer, tagsize int) int {
function sizeBytesSlice (line 1487) | func sizeBytesSlice(ptr pointer, tagsize int) int {
function appendFixed32 (line 1497) | func appendFixed32(b []byte, v uint32) []byte {
function appendFixed64 (line 1507) | func appendFixed64(b []byte, v uint64) []byte {
function appendVarint (line 1521) | func appendVarint(b []byte, v uint64) []byte {
function appendFixed32Value (line 1603) | func appendFixed32Value(b []byte, ptr pointer, wiretag uint64, _ bool) (...
function appendFixed32ValueNoZero (line 1609) | func appendFixed32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ b...
function appendFixed32Ptr (line 1618) | func appendFixed32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]...
function appendFixed32Slice (line 1627) | func appendFixed32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) (...
function appendFixed32PackedSlice (line 1635) | func appendFixed32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ b...
function appendFixedS32Value (line 1647) | func appendFixedS32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ...
function appendFixedS32ValueNoZero (line 1653) | func appendFixedS32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ ...
function appendFixedS32Ptr (line 1662) | func appendFixedS32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([...
function appendFixedS32Slice (line 1671) | func appendFixedS32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ...
function appendFixedS32PackedSlice (line 1679) | func appendFixedS32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ ...
function appendFloat32Value (line 1691) | func appendFloat32Value(b []byte, ptr pointer, wiretag uint64, _ bool) (...
function appendFloat32ValueNoZero (line 1697) | func appendFloat32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ b...
function appendFloat32Ptr (line 1706) | func appendFloat32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]...
function appendFloat32Slice (line 1715) | func appendFloat32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) (...
function appendFloat32PackedSlice (line 1723) | func appendFloat32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ b...
function appendFixed64Value (line 1735) | func appendFixed64Value(b []byte, ptr pointer, wiretag uint64, _ bool) (...
function appendFixed64ValueNoZero (line 1741) | func appendFixed64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ b...
function appendFixed64Ptr (line 1750) | func appendFixed64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]...
function appendFixed64Slice (line 1759) | func appendFixed64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) (...
function appendFixed64PackedSlice (line 1767) | func appendFixed64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ b...
function appendFixedS64Value (line 1779) | func appendFixedS64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ...
function appendFixedS64ValueNoZero (line 1785) | func appendFixedS64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ ...
function appendFixedS64Ptr (line 1794) | func appendFixedS64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([...
function appendFixedS64Slice (line 1803) | func appendFixedS64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ...
function appendFixedS64PackedSlice (line 1811) | func appendFixedS64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ ...
function appendFloat64Value (line 1823) | func appendFloat64Value(b []byte, ptr pointer, wiretag uint64, _ bool) (...
function appendFloat64ValueNoZero (line 1829) | func appendFloat64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ b...
function appendFloat64Ptr (line 1838) | func appendFloat64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]...
function appendFloat64Slice (line 1847) | func appendFloat64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) (...
function appendFloat64PackedSlice (line 1855) | func appendFloat64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ b...
function appendVarint32Value (line 1867) | func appendVarint32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ...
function appendVarint32ValueNoZero (line 1873) | func appendVarint32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ ...
function appendVarint32Ptr (line 1882) | func appendVarint32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([...
function appendVarint32Slice (line 1891) | func appendVarint32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ...
function appendVarint32PackedSlice (line 1899) | func appendVarint32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ ...
function appendVarintS32Value (line 1916) | func appendVarintS32Value(b []byte, ptr pointer, wiretag uint64, _ bool)...
function appendVarintS32ValueNoZero (line 1922) | func appendVarintS32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _...
function appendVarintS32Ptr (line 1931) | func appendVarintS32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) (...
function appendVarintS32Slice (line 1940) | func appendVarintS32Slice(b []byte, ptr pointer, wiretag uint64, _ bool)...
function appendVarintS32PackedSlice (line 1948) | func appendVarintS32PackedSlice(b []byte, ptr pointer, wiretag uint64, _...
function appendVarint64Value (line 1965) | func appendVarint64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ...
function appendVarint64ValueNoZero (line 1971) | func appendVarint64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ ...
function appendVarint64Ptr (line 1980) | func appendVarint64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([...
function appendVarint64Slice (line 1989) | func appendVarint64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ...
function appendVarint64PackedSlice (line 1997) | func appendVarint64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ ...
function appendVarintS64Value (line 2014) | func appendVarintS64Value(b []byte, ptr pointer, wiretag uint64, _ bool)...
function appendVarintS64ValueNoZero (line 2020) | func appendVarintS64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _...
function appendVarintS64Ptr (line 2029) | func appendVarintS64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) (...
function appendVarintS64Slice (line 2038) | func appendVarintS64Slice(b []byte, ptr pointer, wiretag uint64, _ bool)...
function appendVarintS64PackedSlice (line 2046) | func appendVarintS64PackedSlice(b []byte, ptr pointer, wiretag uint64, _...
function appendZigzag32Value (line 2063) | func appendZigzag32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ...
function appendZigzag32ValueNoZero (line 2069) | func appendZigzag32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ ...
function appendZigzag32Ptr (line 2078) | func appendZigzag32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([...
function appendZigzag32Slice (line 2088) | func appendZigzag32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ...
function appendZigzag32PackedSlice (line 2096) | func appendZigzag32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ ...
function appendZigzag64Value (line 2113) | func appendZigzag64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ...
function appendZigzag64ValueNoZero (line 2119) | func appendZigzag64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ ...
function appendZigzag64Ptr (line 2128) | func appendZigzag64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([...
function appendZigzag64Slice (line 2138) | func appendZigzag64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ...
function appendZigzag64PackedSlice (line 2146) | func appendZigzag64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ ...
function appendBoolValue (line 2163) | func appendBoolValue(b []byte, ptr pointer, wiretag uint64, _ bool) ([]b...
function appendBoolValueNoZero (line 2173) | func appendBoolValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool...
function appendBoolPtr (line 2183) | func appendBoolPtr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byt...
function appendBoolSlice (line 2196) | func appendBoolSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]b...
function appendBoolPackedSlice (line 2208) | func appendBoolPackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool...
function appendStringValue (line 2224) | func appendStringValue(b []byte, ptr pointer, wiretag uint64, _ bool) ([...
function appendStringValueNoZero (line 2231) | func appendStringValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bo...
function appendStringPtr (line 2241) | func appendStringPtr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]b...
function appendStringSlice (line 2252) | func appendStringSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([...
function appendUTF8StringValue (line 2261) | func appendUTF8StringValue(b []byte, ptr pointer, wiretag uint64, _ bool...
function appendUTF8StringValueNoZero (line 2275) | func appendUTF8StringValueNoZero(b []byte, ptr pointer, wiretag uint64, ...
function appendUTF8StringPtr (line 2292) | func appendUTF8StringPtr(b []byte, ptr pointer, wiretag uint64, _ bool) ...
function appendUTF8StringSlice (line 2310) | func appendUTF8StringSlice(b []byte, ptr pointer, wiretag uint64, _ bool...
function appendBytes (line 2326) | func appendBytes(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte,...
function appendBytes3 (line 2336) | func appendBytes3(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte...
function appendBytesOneof (line 2346) | func appendBytesOneof(b []byte, ptr pointer, wiretag uint64, _ bool) ([]...
function appendBytesSlice (line 2353) | func appendBytesSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]...
function makeGroupMarshaler (line 2365) | func makeGroupMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeGroupSliceMarshaler (line 2388) | func makeGroupSliceMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeMessageMarshaler (line 2424) | func makeMessageMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeMessageSliceMarshaler (line 2447) | func makeMessageSliceMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeMapMarshaler (line 2486) | func makeMapMarshaler(f *reflect.StructField) (sizer, marshaler) {
function makeOneOfMarshaler (line 2587) | func makeOneOfMarshaler(fi *marshalFieldInfo, f *reflect.StructField) (s...
type newMarshaler (line 2908) | type newMarshaler interface
function Size (line 2915) | func Size(pb Message) int {
function Marshal (line 2936) | func Marshal(pb Message) ([]byte, error) {
method Marshal (line 2962) | func (p *Buffer) Marshal(pb Message) error {
method grow (line 2999) | func (p *Buffer) grow(n int) {
FILE: vendor/github.com/gogo/protobuf/proto/table_marshal_gogo.go
function makeMessageRefMarshaler (line 38) | func makeMessageRefMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeMessageRefSliceMarshaler (line 53) | func makeMessageRefSliceMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeCustomPtrMarshaler (line 98) | func makeCustomPtrMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeCustomMarshaler (line 123) | func makeCustomMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeTimeMarshaler (line 142) | func makeTimeMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeTimePtrMarshaler (line 168) | func makeTimePtrMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeTimeSliceMarshaler (line 200) | func makeTimeSliceMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeTimePtrSliceMarshaler (line 239) | func makeTimePtrSliceMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeDurationMarshaler (line 278) | func makeDurationMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeDurationPtrMarshaler (line 298) | func makeDurationPtrMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeDurationSliceMarshaler (line 324) | func makeDurationSliceMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeDurationPtrSliceMarshaler (line 357) | func makeDurationPtrSliceMarshaler(u *marshalInfo) (sizer, marshaler) {
FILE: vendor/github.com/gogo/protobuf/proto/table_merge.go
method Merge (line 44) | func (a *InternalMessageInfo) Merge(dst, src Message) {
type mergeInfo (line 53) | type mergeInfo struct
method merge (line 104) | func (mi *mergeInfo) merge(dst, src pointer) {
method computeMergeInfo (line 163) | func (mi *mergeInfo) computeMergeInfo() {
type mergeFieldInfo (line 63) | type mergeFieldInfo struct
function getMergeInfo (line 92) | func getMergeInfo(t reflect.Type) *mergeInfo {
FILE: vendor/github.com/gogo/protobuf/proto/table_unmarshal.go
method Unmarshal (line 53) | func (a *InternalMessageInfo) Unmarshal(msg Message, b []byte) error {
type unmarshalInfo (line 67) | type unmarshalInfo struct
method unmarshal (line 136) | func (u *unmarshalInfo) unmarshal(m pointer, b []byte) error {
method computeUnmarshalInfo (line 272) | func (u *unmarshalInfo) computeUnmarshalInfo() {
method setTag (line 445) | func (u *unmarshalInfo) setTag(tag int, field field, unmarshal unmarsh...
type unmarshaler (line 91) | type unmarshaler
type unmarshalFieldInfo (line 93) | type unmarshalFieldInfo struct
function getUnmarshalInfo (line 114) | func getUnmarshalInfo(t reflect.Type) *unmarshalInfo {
function fieldUnmarshaler (line 462) | func fieldUnmarshaler(f *reflect.StructField) unmarshaler {
function typeUnmarshaler (line 470) | func typeUnmarshaler(t reflect.Type, tags string) unmarshaler {
function unmarshalInt64Value (line 839) | func unmarshalInt64Value(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalInt64Ptr (line 853) | func unmarshalInt64Ptr(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalInt64Slice (line 867) | func unmarshalInt64Slice(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalSint64Value (line 905) | func unmarshalSint64Value(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalSint64Ptr (line 919) | func unmarshalSint64Ptr(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalSint64Slice (line 933) | func unmarshalSint64Slice(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalUint64Value (line 971) | func unmarshalUint64Value(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalUint64Ptr (line 985) | func unmarshalUint64Ptr(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalUint64Slice (line 999) | func unmarshalUint64Slice(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalInt32Value (line 1037) | func unmarshalInt32Value(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalInt32Ptr (line 1051) | func unmarshalInt32Ptr(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalInt32Slice (line 1065) | func unmarshalInt32Slice(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalSint32Value (line 1101) | func unmarshalSint32Value(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalSint32Ptr (line 1115) | func unmarshalSint32Ptr(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalSint32Slice (line 1129) | func unmarshalSint32Slice(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalUint32Value (line 1165) | func unmarshalUint32Value(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalUint32Ptr (line 1179) | func unmarshalUint32Ptr(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalUint32Slice (line 1193) | func unmarshalUint32Slice(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalFixed64Value (line 1231) | func unmarshalFixed64Value(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalFixed64Ptr (line 1243) | func unmarshalFixed64Ptr(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalFixed64Slice (line 1255) | func unmarshalFixed64Slice(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalFixedS64Value (line 1290) | func unmarshalFixedS64Value(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalFixedS64Ptr (line 1302) | func unmarshalFixedS64Ptr(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalFixedS64Slice (line 1314) | func unmarshalFixedS64Slice(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalFixed32Value (line 1349) | func unmarshalFixed32Value(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalFixed32Ptr (line 1361) | func unmarshalFixed32Ptr(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalFixed32Slice (line 1373) | func unmarshalFixed32Slice(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalFixedS32Value (line 1408) | func unmarshalFixedS32Value(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalFixedS32Ptr (line 1420) | func unmarshalFixedS32Ptr(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalFixedS32Slice (line 1432) | func unmarshalFixedS32Slice(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalBoolValue (line 1465) | func unmarshalBoolValue(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalBoolPtr (line 1482) | func unmarshalBoolPtr(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalBoolSlice (line 1495) | func unmarshalBoolSlice(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalFloat64Value (line 1532) | func unmarshalFloat64Value(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalFloat64Ptr (line 1544) | func unmarshalFloat64Ptr(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalFloat64Slice (line 1556) | func unmarshalFloat64Slice(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalFloat32Value (line 1591) | func unmarshalFloat32Value(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalFloat32Ptr (line 1603) | func unmarshalFloat32Ptr(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalFloat32Slice (line 1615) | func unmarshalFloat32Slice(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalStringValue (line 1650) | func unmarshalStringValue(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalStringPtr (line 1667) | func unmarshalStringPtr(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalStringSlice (line 1684) | func unmarshalStringSlice(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalUTF8StringValue (line 1702) | func unmarshalUTF8StringValue(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalUTF8StringPtr (line 1722) | func unmarshalUTF8StringPtr(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalUTF8StringSlice (line 1742) | func unmarshalUTF8StringSlice(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalBytesValue (line 1765) | func unmarshalBytesValue(b []byte, f pointer, w int) ([]byte, error) {
function unmarshalBytesSlice (line 1786) | func unmarshalBytesSlice(b []byte, f pointer, w int) ([]byte, error) {
function makeUnmarshalMessagePtr (line 1804) | func makeUnmarshalMessagePtr(sub *unmarshalInfo, name string) unmarshaler {
function makeUnmarshalMessageSlicePtr (line 1838) | func makeUnmarshalMessageSlicePtr(sub *unmarshalInfo, name string) unmar...
function makeUnmarshalGroupPtr (line 1865) | func makeUnmarshalGroupPtr(sub *unmarshalInfo, name string) unmarshaler {
function makeUnmarshalGroupSlicePtr (line 1891) | func makeUnmarshalGroupSlicePtr(sub *unmarshalInfo, name string) unmarsh...
function makeUnmarshalMap (line 1914) | func makeUnmarshalMap(f *reflect.StructField) unmarshaler {
function makeUnmarshalOneof (line 2017) | func makeUnmarshalOneof(typ, ityp reflect.Type, unmarshal unmarshaler) u...
function skipField (line 2044) | func skipField(b []byte, wire int) ([]byte, error) {
function findEndGroup (line 2085) | func findEndGroup(b []byte) (int, int) {
function encodeVarint (line 2136) | func encodeVarint(b []byte, x uint64) []byte {
function decodeVarint (line 2147) | func decodeVarint(b []byte) (uint64, int) {
FILE: vendor/github.com/gogo/protobuf/proto/table_unmarshal_gogo.go
function makeUnmarshalMessage (line 36) | func makeUnmarshalMessage(sub *unmarshalInfo, name string) unmarshaler {
function makeUnmarshalMessageSlice (line 70) | func makeUnmarshalMessageSlice(sub *unmarshalInfo, name string) unmarsha...
function makeUnmarshalCustomPtr (line 97) | func makeUnmarshalCustomPtr(sub *unmarshalInfo, name string) unmarshaler {
function makeUnmarshalCustomSlice (line 121) | func makeUnmarshalCustomSlice(sub *unmarshalInfo, name string) unmarshal...
function makeUnmarshalCustom (line 145) | func makeUnmarshalCustom(sub *unmarshalInfo, name string) unmarshaler {
function makeUnmarshalTime (line 167) | func makeUnmarshalTime(sub *unmarshalInfo, name string) unmarshaler {
function makeUnmarshalTimePtr (line 194) | func makeUnmarshalTimePtr(sub *unmarshalInfo, name string) unmarshaler {
function makeUnmarshalTimePtrSlice (line 221) | func makeUnmarshalTimePtrSlice(sub *unmarshalInfo, name string) unmarsha...
function makeUnmarshalTimeSlice (line 249) | func makeUnmarshalTimeSlice(sub *unmarshalInfo, name string) unmarshaler {
function makeUnmarshalDurationPtr (line 277) | func makeUnmarshalDurationPtr(sub *unmarshalInfo, name string) unmarshal...
function makeUnmarshalDuration (line 304) | func makeUnmarshalDuration(sub *unmarshalInfo, name string) unmarshaler {
function makeUnmarshalDurationPtrSlice (line 331) | func makeUnmarshalDurationPtrSlice(sub *unmarshalInfo, name string) unma...
function makeUnmarshalDurationSlice (line 359) | func makeUnmarshalDurationSlice(sub *unmarshalInfo, name string) unmarsh...
FILE: vendor/github.com/gogo/protobuf/proto/text.go
type writer (line 71) | type writer interface
type textWriter (line 77) | type textWriter struct
method WriteString (line 84) | func (w *textWriter) WriteString(s string) (n int, err error) {
method Write (line 98) | func (w *textWriter) Write(p []byte) (n int, err error) {
method WriteByte (line 147) | func (w *textWriter) WriteByte(c byte) error {
method indent (line 159) | func (w *textWriter) indent() { w.ind++ }
method unindent (line 161) | func (w *textWriter) unindent() {
method writeIndent (line 839) | func (w *textWriter) writeIndent() {
function writeName (line 169) | func writeName(w *textWriter, props *Properties) error {
function requiresQuotes (line 179) | func requiresQuotes(u string) bool {
function isAny (line 199) | func isAny(sv reflect.Value) bool {
function isprint (line 622) | func isprint(c byte) bool {
function writeString (line 631) | func writeString(w *textWriter, s string) error {
function writeUnknownStruct (line 667) | func writeUnknownStruct(w *textWriter, data []byte) (err error) {
function writeUnknownInt (line 734) | func writeUnknownInt(w *textWriter, x uint64, err error) error {
type int32Slice (line 743) | type int32Slice
method Len (line 745) | func (s int32Slice) Len() int { return len(s) }
method Less (line 746) | func (s int32Slice) Less(i, j int) bool { return s[i] < s[j] }
method Swap (line 747) | func (s int32Slice) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
type TextMarshaler (line 856) | type TextMarshaler struct
method writeProto3Any (line 214) | func (tm *TextMarshaler) writeProto3Any(w *textWriter, sv reflect.Valu...
method writeStruct (line 260) | func (tm *TextMarshaler) writeStruct(w *textWriter, sv reflect.Value) ...
method writeAny (line 482) | func (tm *TextMarshaler) writeAny(w *textWriter, v reflect.Value, prop...
method writeExtensions (line 751) | func (tm *TextMarshaler) writeExtensions(w *textWriter, pv reflect.Val...
method writeExtension (line 821) | func (tm *TextMarshaler) writeExtension(w *textWriter, name string, pb...
method Marshal (line 863) | func (tm *TextMarshaler) Marshal(w io.Writer, pb Message) error {
method Text (line 906) | func (tm *TextMarshaler) Text(pb Message) string {
function MarshalText (line 921) | func MarshalText(w io.Writer, pb Message) error { return defaultTextMars...
function MarshalTextString (line 924) | func MarshalTextString(pb Message) string { return defaultTextMarshaler....
function CompactText (line 927) | func CompactText(w io.Writer, pb Message) error { return compactTextMars...
function CompactTextString (line 930) | func CompactTextString(pb Message) string { return compactTextMarshaler....
FILE: vendor/github.com/gogo/protobuf/proto/text_gogo.go
method writeEnum (line 36) | func (tm *TextMarshaler) writeEnum(w *textWriter, v reflect.Value, props...
FILE: vendor/github.com/gogo/protobuf/proto/text_parser.go
constant anyRepeatedlyUnpacked (line 54) | anyRepeatedlyUnpacked = "Any message unpacked multiple times, or %q alre...
type ParseError (line 56) | type ParseError struct
method Error (line 62) | func (p *ParseError) Error() string {
type token (line 70) | type token struct
method String (line 78) | func (t *token) String() string {
type textParser (line 85) | type textParser struct
method errorf (line 101) | func (p *textParser) errorf(format string, a ...interface{}) *ParseErr...
method skipWhitespace (line 139) | func (p *textParser) skipWhitespace() {
method advance (line 163) | func (p *textParser) advance() {
method back (line 328) | func (p *textParser) back() { p.backed = true }
method next (line 331) | func (p *textParser) next() *token {
method consumeToken (line 361) | func (p *textParser) consumeToken(s string) error {
method missingRequiredFieldError (line 374) | func (p *textParser) missingRequiredFieldError(sv reflect.Value) *Requ...
method checkForColon (line 401) | func (p *textParser) checkForColon(props *Properties, typ reflect.Type...
method readStruct (line 441) | func (p *textParser) readStruct(sv reflect.Value, terminator string) e...
method consumeExtName (line 700) | func (p *textParser) consumeExtName() (string, error) {
method consumeOptionalSeparator (line 732) | func (p *textParser) consumeOptionalSeparator() error {
method readAny (line 743) | func (p *textParser) readAny(v reflect.Value, props *Properties) error {
function newTextParser (line 93) | func newTextParser(s string) *textParser {
function isIdentOrNumberChar (line 109) | func isIdentOrNumberChar(c byte) bool {
function isWhitespace (line 123) | func isWhitespace(c byte) bool {
function isQuote (line 131) | func isQuote(c byte) bool {
function unquoteC (line 217) | func unquoteC(s string, quote rune) (string, error) {
function unescape (line 260) | func unescape(s string) (ch string, tail string, err error) {
function structFieldByName (line 391) | func structFieldByName(sprops *StructProperties, name string) (int, *Pro...
function UnmarshalText (line 1011) | func UnmarshalText(s string, pb Message) error {
FILE: vendor/github.com/gogo/protobuf/proto/timestamp.go
constant minValidSeconds (line 45) | minValidSeconds = -62135596800
constant maxValidSeconds (line 48) | maxValidSeconds = 253402300800
function validateTimestamp (line 61) | func validateTimestamp(ts *timestamp) error {
function timestampFromProto (line 88) | func timestampFromProto(ts *timestamp) (time.Time, error) {
function timestampProto (line 102) | func timestampProto(t time.Time) (*timestamp, error) {
FILE: vendor/github.com/gogo/protobuf/proto/timestamp_gogo.go
type timestamp (line 38) | type timestamp struct
method Reset (line 43) | func (m *timestamp) Reset() { *m = timestamp{} }
method ProtoMessage (line 44) | func (*timestamp) ProtoMessage() {}
method String (line 45) | func (*timestamp) String() string { return "timestamp<string>" }
function init (line 47) | func init() {
FILE: vendor/github.com/gogo/protobuf/proto/wrappers.go
function makeStdDoubleValueMarshaler (line 36) | func makeStdDoubleValueMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeStdDoubleValuePtrMarshaler (line 56) | func makeStdDoubleValuePtrMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeStdDoubleValueSliceMarshaler (line 82) | func makeStdDoubleValueSliceMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeStdDoubleValuePtrSliceMarshaler (line 115) | func makeStdDoubleValuePtrSliceMarshaler(u *marshalInfo) (sizer, marshal...
function makeStdDoubleValueUnmarshaler (line 148) | func makeStdDoubleValueUnmarshaler(sub *unmarshalInfo, name string) unma...
function makeStdDoubleValuePtrUnmarshaler (line 171) | func makeStdDoubleValuePtrUnmarshaler(sub *unmarshalInfo, name string) u...
function makeStdDoubleValuePtrSliceUnmarshaler (line 194) | func makeStdDoubleValuePtrSliceUnmarshaler(sub *unmarshalInfo, name stri...
function makeStdDoubleValueSliceUnmarshaler (line 218) | func makeStdDoubleValueSliceUnmarshaler(sub *unmarshalInfo, name string)...
function makeStdFloatValueMarshaler (line 242) | func makeStdFloatValueMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeStdFloatValuePtrMarshaler (line 262) | func makeStdFloatValuePtrMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeStdFloatValueSliceMarshaler (line 288) | func makeStdFloatValueSliceMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeStdFloatValuePtrSliceMarshaler (line 321) | func makeStdFloatValuePtrSliceMarshaler(u *marshalInfo) (sizer, marshale...
function makeStdFloatValueUnmarshaler (line 354) | func makeStdFloatValueUnmarshaler(sub *unmarshalInfo, name string) unmar...
function makeStdFloatValuePtrUnmarshaler (line 377) | func makeStdFloatValuePtrUnmarshaler(sub *unmarshalInfo, name string) un...
function makeStdFloatValuePtrSliceUnmarshaler (line 400) | func makeStdFloatValuePtrSliceUnmarshaler(sub *unmarshalInfo, name strin...
function makeStdFloatValueSliceUnmarshaler (line 424) | func makeStdFloatValueSliceUnmarshaler(sub *unmarshalInfo, name string) ...
function makeStdInt64ValueMarshaler (line 448) | func makeStdInt64ValueMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeStdInt64ValuePtrMarshaler (line 468) | func makeStdInt64ValuePtrMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeStdInt64ValueSliceMarshaler (line 494) | func makeStdInt64ValueSliceMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeStdInt64ValuePtrSliceMarshaler (line 527) | func makeStdInt64ValuePtrSliceMarshaler(u *marshalInfo) (sizer, marshale...
function makeStdInt64ValueUnmarshaler (line 560) | func makeStdInt64ValueUnmarshaler(sub *unmarshalInfo, name string) unmar...
function makeStdInt64ValuePtrUnmarshaler (line 583) | func makeStdInt64ValuePtrUnmarshaler(sub *unmarshalInfo, name string) un...
function makeStdInt64ValuePtrSliceUnmarshaler (line 606) | func makeStdInt64ValuePtrSliceUnmarshaler(sub *unmarshalInfo, name strin...
function makeStdInt64ValueSliceUnmarshaler (line 630) | func makeStdInt64ValueSliceUnmarshaler(sub *unmarshalInfo, name string) ...
function makeStdUInt64ValueMarshaler (line 654) | func makeStdUInt64ValueMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeStdUInt64ValuePtrMarshaler (line 674) | func makeStdUInt64ValuePtrMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeStdUInt64ValueSliceMarshaler (line 700) | func makeStdUInt64ValueSliceMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeStdUInt64ValuePtrSliceMarshaler (line 733) | func makeStdUInt64ValuePtrSliceMarshaler(u *marshalInfo) (sizer, marshal...
function makeStdUInt64ValueUnmarshaler (line 766) | func makeStdUInt64ValueUnmarshaler(sub *unmarshalInfo, name string) unma...
function makeStdUInt64ValuePtrUnmarshaler (line 789) | func makeStdUInt64ValuePtrUnmarshaler(sub *unmarshalInfo, name string) u...
function makeStdUInt64ValuePtrSliceUnmarshaler (line 812) | func makeStdUInt64ValuePtrSliceUnmarshaler(sub *unmarshalInfo, name stri...
function makeStdUInt64ValueSliceUnmarshaler (line 836) | func makeStdUInt64ValueSliceUnmarshaler(sub *unmarshalInfo, name string)...
function makeStdInt32ValueMarshaler (line 860) | func makeStdInt32ValueMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeStdInt32ValuePtrMarshaler (line 880) | func makeStdInt32ValuePtrMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeStdInt32ValueSliceMarshaler (line 906) | func makeStdInt32ValueSliceMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeStdInt32ValuePtrSliceMarshaler (line 939) | func makeStdInt32ValuePtrSliceMarshaler(u *marshalInfo) (sizer, marshale...
function makeStdInt32ValueUnmarshaler (line 972) | func makeStdInt32ValueUnmarshaler(sub *unmarshalInfo, name string) unmar...
function makeStdInt32ValuePtrUnmarshaler (line 995) | func makeStdInt32ValuePtrUnmarshaler(sub *unmarshalInfo, name string) un...
function makeStdInt32ValuePtrSliceUnmarshaler (line 1018) | func makeStdInt32ValuePtrSliceUnmarshaler(sub *unmarshalInfo, name strin...
function makeStdInt32ValueSliceUnmarshaler (line 1042) | func makeStdInt32ValueSliceUnmarshaler(sub *unmarshalInfo, name string) ...
function makeStdUInt32ValueMarshaler (line 1066) | func makeStdUInt32ValueMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeStdUInt32ValuePtrMarshaler (line 1086) | func makeStdUInt32ValuePtrMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeStdUInt32ValueSliceMarshaler (line 1112) | func makeStdUInt32ValueSliceMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeStdUInt32ValuePtrSliceMarshaler (line 1145) | func makeStdUInt32ValuePtrSliceMarshaler(u *marshalInfo) (sizer, marshal...
function makeStdUInt32ValueUnmarshaler (line 1178) | func makeStdUInt32ValueUnmarshaler(sub *unmarshalInfo, name string) unma...
function makeStdUInt32ValuePtrUnmarshaler (line 1201) | func makeStdUInt32ValuePtrUnmarshaler(sub *unmarshalInfo, name string) u...
function makeStdUInt32ValuePtrSliceUnmarshaler (line 1224) | func makeStdUInt32ValuePtrSliceUnmarshaler(sub *unmarshalInfo, name stri...
function makeStdUInt32ValueSliceUnmarshaler (line 1248) | func makeStdUInt32ValueSliceUnmarshaler(sub *unmarshalInfo, name string)...
function makeStdBoolValueMarshaler (line 1272) | func makeStdBoolValueMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeStdBoolValuePtrMarshaler (line 1292) | func makeStdBoolValuePtrMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeStdBoolValueSliceMarshaler (line 1318) | func makeStdBoolValueSliceMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeStdBoolValuePtrSliceMarshaler (line 1351) | func makeStdBoolValuePtrSliceMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeStdBoolValueUnmarshaler (line 1384) | func makeStdBoolValueUnmarshaler(sub *unmarshalInfo, name string) unmars...
function makeStdBoolValuePtrUnmarshaler (line 1407) | func makeStdBoolValuePtrUnmarshaler(sub *unmarshalInfo, name string) unm...
function makeStdBoolValuePtrSliceUnmarshaler (line 1430) | func makeStdBoolValuePtrSliceUnmarshaler(sub *unmarshalInfo, name string...
function makeStdBoolValueSliceUnmarshaler (line 1454) | func makeStdBoolValueSliceUnmarshaler(sub *unmarshalInfo, name string) u...
function makeStdStringValueMarshaler (line 1478) | func makeStdStringValueMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeStdStringValuePtrMarshaler (line 1498) | func makeStdStringValuePtrMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeStdStringValueSliceMarshaler (line 1524) | func makeStdStringValueSliceMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeStdStringValuePtrSliceMarshaler (line 1557) | func makeStdStringValuePtrSliceMarshaler(u *marshalInfo) (sizer, marshal...
function makeStdStringValueUnmarshaler (line 1590) | func makeStdStringValueUnmarshaler(sub *unmarshalInfo, name string) unma...
function makeStdStringValuePtrUnmarshaler (line 1613) | func makeStdStringValuePtrUnmarshaler(sub *unmarshalInfo, name string) u...
function makeStdStringValuePtrSliceUnmarshaler (line 1636) | func makeStdStringValuePtrSliceUnmarshaler(sub *unmarshalInfo, name stri...
function makeStdStringValueSliceUnmarshaler (line 1660) | func makeStdStringValueSliceUnmarshaler(sub *unmarshalInfo, name string)...
function makeStdBytesValueMarshaler (line 1684) | func makeStdBytesValueMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeStdBytesValuePtrMarshaler (line 1704) | func makeStdBytesValuePtrMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeStdBytesValueSliceMarshaler (line 1730) | func makeStdBytesValueSliceMarshaler(u *marshalInfo) (sizer, marshaler) {
function makeStdBytesValuePtrSliceMarshaler (line 1763) | func makeStdBytesValuePtrSliceMarshaler(u *marshalInfo) (sizer, marshale...
function makeStdBytesValueUnmarshaler (line 1796) | func makeStdBytesValueUnmarshaler(sub *unmarshalInfo, name string) unmar...
function makeStdBytesValuePtrUnmarshaler (line 1819) | func makeStdBytesValuePtrUnmarshaler(sub *unmarshalInfo, name string) un...
function makeStdBytesValuePtrSliceUnmarshaler (line 1842) | func makeStdBytesValuePtrSliceUnmarshaler(sub *unmarshalInfo, name strin...
function makeStdBytesValueSliceUnmarshaler (line 1866) | func makeStdBytesValueSliceUnmarshaler(sub *unmarshalInfo, name string) ...
FILE: vendor/github.com/gogo/protobuf/proto/wrappers_gogo.go
type float64Value (line 31) | type float64Value struct
method Reset (line 35) | func (m *float64Value) Reset() { *m = float64Value{} }
method ProtoMessage (line 36) | func (*float64Value) ProtoMessage() {}
method String (line 37) | func (*float64Value) String() string { return "float64<string>" }
type float32Value (line 39) | type float32Value struct
method Reset (line 43) | func (m *float32Value) Reset() { *m = float32Value{} }
method ProtoMessage (line 44) | func (*float32Value) ProtoMessage() {}
method String (line 45) | func (*float32Value) String() string { return "float32<string>" }
type int64Value (line 47) | type int64Value struct
method Reset (line 51) | func (m *int64Value) Reset() { *m = int64Value{} }
method ProtoMessage (line 52) | func (*int64Value) ProtoMessage() {}
method String (line 53) | func (*int64Value) String() string { return "int64<string>" }
type uint64Value (line 55) | type uint64Value struct
method Reset (line 59) | func (m *uint64Value) Reset() { *m = uint64Value{} }
method ProtoMessage (line 60) | func (*uint64Value) ProtoMessage() {}
method String (line 61) | func (*uint64Value) String() string { return "uint64<string>" }
type int32Value (line 63) | type int32Value struct
method Reset (line 67) | func (m *int32Value) Reset() { *m = int32Value{} }
method ProtoMessage (line 68) | func (*int32Value) ProtoMessage() {}
method String (line 69) | func (*int32Value) String() string { return "int32<string>" }
type uint32Value (line 71) | type uint32Value struct
method Reset (line 75) | func (m *uint32Value) Reset() { *m = uint32Value{} }
method ProtoMessage (line 76) | func (*uint32Value) ProtoMessage() {}
method String (line 77) | func (*uint32Value) String() string { return "uint32<string>" }
type boolValue (line 79) | type boolValue struct
method Reset (line 83) | func (m *boolValue) Reset() { *m = boolValue{} }
method ProtoMessage (line 84) | func (*boolValue) ProtoMessage() {}
method String (line 85) | func (*boolValue) String() string { return "bool<string>" }
type stringValue (line 87) | type stringValue struct
method Reset (line 91) | func (m *stringValue) Reset() { *m = stringValue{} }
method ProtoMessage (line 92) | func (*stringValue) ProtoMessage() {}
method String (line 93) | func (*stringValue) String() string { return "string<string>" }
type bytesValue (line 95) | type bytesValue struct
method Reset (line 99) | func (m *bytesValue) Reset() { *m = bytesValue{} }
method ProtoMessage (line 100) | func (*bytesValue) ProtoMessage() {}
method String (line 101) | func (*bytesValue) String() string { return "[]byte<string>" }
function init (line 103) | func init() {
FILE: vendor/github.com/gogo/protobuf/sortkeys/sortkeys.go
function Strings (line 35) | func Strings(l []string) {
function Float64s (line 39) | func Float64s(l []float64) {
function Float32s (line 43) | func Float32s(l []float32) {
function Int64s (line 47) | func Int64s(l []int64) {
function Int32s (line 51) | func Int32s(l []int32) {
function Uint64s (line 55) | func Uint64s(l []uint64) {
function Uint32s (line 59) | func Uint32s(l []uint32) {
function Bools (line 63) | func Bools(l []bool) {
type BoolSlice (line 67) | type BoolSlice
method Len (line 69) | func (p BoolSlice) Len() int { return len(p) }
method Less (line 70) | func (p BoolSlice) Less(i, j int) bool { return p[j] }
method Swap (line 71) | func (p BoolSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
type Int64Slice (line 73) | type Int64Slice
method Len (line 75) | func (p Int64Slice) Len() int { return len(p) }
method Less (line 76) | func (p Int64Slice) Less(i, j int) bool { return p[i] < p[j] }
method Swap (line 77) | func (p Int64Slice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
type Int32Slice (line 79) | type Int32Slice
method Len (line 81) | func (p Int32Slice) Len() int { return len(p) }
method Less (line 82) | func (p Int32Slice) Less(i, j int) bool { return p[i] < p[j] }
method Swap (line 83) | func (p Int32Slice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
type Uint64Slice (line 85) | type Uint64Slice
method Len (line 87) | func (p Uint64Slice) Len() int { return len(p) }
method Less (line 88) | func (p Uint64Slice) Less(i, j int) bool { return p[i] < p[j] }
method Swap (line 89) | func (p Uint64Slice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
type Uint32Slice (line 91) | type Uint32Slice
method Len (line 93) | func (p Uint32Slice) Len() int { return len(p) }
method Less (line 94) | func (p Uint32Slice) Less(i, j int) bool { return p[i] < p[j] }
method Swap (line 95) | func (p Uint32Slice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
type Float32Slice (line 97) | type Float32Slice
method Len (line 99) | func (p Float32Slice) Len() int { return len(p) }
method Less (line 100) | func (p Float32Slice) Less(i, j int) bool { return p[i] < p[j] }
method Swap (line 101) | func (p Float32Slice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
FILE: vendor/github.com/golang/glog/glog.go
type OutputStats (line 130) | type OutputStats struct
method Lines (line 136) | func (s *OutputStats) Lines() int64 {
method Bytes (line 141) | func (s *OutputStats) Bytes() int64 {
type Level (line 160) | type Level
function metaPoolGet (line 167) | func metaPoolGet() (any, *logsink.Meta) {
type stack (line 175) | type stack
constant noStack (line 178) | noStack = stack(false)
constant withStack (line 179) | withStack = stack(true)
function appendBacktrace (line 182) | func appendBacktrace(depth int, format string, args []any) (string, []an...
function logf (line 205) | func logf(depth int, severity logsink.Severity, verbose bool, stack stac...
function ctxlogf (line 211) | func ctxlogf(ctx context.Context, depth int, severity logsink.Severity, ...
function sinkf (line 241) | func sinkf(meta *logsink.Meta, format string, args ...any) {
function CopyStandardLogTo (line 263) | func CopyStandardLogTo(name string) {
function NewStandardLogger (line 279) | func NewStandardLogger(name string) *stdLog.Logger {
type logBridge (line 289) | type logBridge
method Write (line 293) | func (lb logBridge) Write(b []byte) (n int, err error) {
function defaultFormat (line 341) | func defaultFormat(args []any) string {
function lnFormat (line 366) | func lnFormat(args []any) string {
type Verbose (line 381) | type Verbose
method Info (line 413) | func (v Verbose) Info(args ...any) {
method InfoDepth (line 419) | func (v Verbose) InfoDepth(depth int, args ...any) {
method InfoDepthf (line 427) | func (v Verbose) InfoDepthf(depth int, format string, args ...any) {
method Infoln (line 435) | func (v Verbose) Infoln(args ...any) {
method Infof (line 443) | func (v Verbose) Infof(format string, args ...any) {
method InfoContext (line 451) | func (v Verbose) InfoContext(ctx context.Context, args ...any) {
method InfoContextf (line 457) | func (v Verbose) InfoContextf(ctx context.Context, format string, args...
method InfoContextDepth (line 465) | func (v Verbose) InfoContextDepth(ctx context.Context, depth int, args...
method InfoContextDepthf (line 473) | func (v Verbose) InfoContextDepthf(ctx context.Context, depth int, for...
function V (line 401) | func V(level Level) Verbose {
function VDepth (line 407) | func VDepth(depth int, level Level) Verbose {
function Info (line 481) | func Info(args ...any) {
function InfoDepth (line 490) | func InfoDepth(depth int, args ...any) {
function InfoDepthf (line 495) | func InfoDepthf(depth int, format string, args ...any) {
function Infoln (line 501) | func Infoln(args ...any) {
function Infof (line 507) | func Infof(format string, args ...any) {
function InfoContext (line 513) | func InfoContext(ctx context.Context, args ...any) {
function InfoContextf (line 519) | func InfoContextf(ctx context.Context, format string, args ...any) {
function InfoContextDepth (line 525) | func InfoContextDepth(ctx context.Context, depth int, args ...any) {
function InfoContextDepthf (line 531) | func InfoContextDepthf(ctx context.Context, depth int, format string, ar...
function Warning (line 537) | func Warning(args ...any) {
function WarningDepth (line 543) | func WarningDepth(depth int, args ...any) {
function WarningDepthf (line 549) | func WarningDepthf(depth int, format string, args ...any) {
function Warningln (line 555) | func Warningln(args ...any) {
function Warningf (line 561) | func Warningf(format string, args ...any) {
function WarningContext (line 567) | func WarningContext(ctx context.Context, args ...any) {
function WarningContextf (line 573) | func WarningContextf(ctx context.Context, format string, args ...any) {
function WarningContextDepth (line 579) | func WarningContextDepth(ctx context.Context, depth int, args ...any) {
function WarningContextDepthf (line 585) | func WarningContextDepthf(ctx context.Context, depth int, format string,...
function Error (line 591) | func Error(args ...any) {
function ErrorDepth (line 597) | func ErrorDepth(depth int, args ...any) {
function ErrorDepthf (line 603) | func ErrorDepthf(depth int, format string, args ...any) {
function Errorln (line 609) | func Errorln(args ...any) {
function Errorf (line 615) | func Errorf(format string, args ...any) {
function ErrorContext (line 621) | func ErrorContext(ctx context.Context, args ...any) {
function ErrorContextf (line 627) | func ErrorContextf(ctx context.Context, format string, args ...any) {
function ErrorContextDepth (line 633) | func ErrorContextDepth(ctx context.Context, depth int, args ...any) {
function ErrorContextDepthf (line 639) | func ErrorContextDepthf(ctx context.Context, depth int, format string, a...
function ctxfatalf (line 643) | func ctxfatalf(ctx context.Context, depth int, format string, args ...an...
function fatalf (line 656) | func fatalf(depth int, format string, args ...any) {
function Fatal (line 663) | func Fatal(args ...any) {
function FatalDepth (line 669) | func FatalDepth(depth int, args ...any) {
function FatalDepthf (line 675) | func FatalDepthf(depth int, format string, args ...any) {
function Fatalln (line 682) | func Fatalln(args ...any) {
function Fatalf (line 689) | func Fatalf(format string, args ...any) {
function FatalContext (line 695) | func FatalContext(ctx context.Context, args ...any) {
function FatalContextf (line 701) | func FatalContextf(ctx context.Context, format string, args ...any) {
function FatalContextDepth (line 707) | func FatalContextDepth(ctx context.Context, depth int, args ...any) {
function FatalContextDepthf (line 712) | func FatalContextDepthf(ctx context.Context, depth int, format string, a...
function ctxexitf (line 716) | func ctxexitf(ctx context.Context, depth int, format string, args ...any) {
function exitf (line 722) | func exitf(depth int, format string, args ...any) {
function Exit (line 728) | func Exit(args ...any) {
function ExitDepth (line 734) | func ExitDepth(depth int, args ...any) {
function ExitDepthf (line 740) | func ExitDepthf(depth int, format string, args ...any) {
function Exitln (line 745) | func Exitln(args ...any) {
function Exitf (line 751) | func Exitf(format string, args ...any) {
function ExitContext (line 757) | func ExitContext(ctx context.Context, args ...any) {
function ExitContextf (line 763) | func ExitContextf(ctx context.Context, format string, args ...any) {
function ExitContextDepth (line 769) | func ExitContextDepth(ctx context.Context, depth int, args ...any) {
function ExitContextDepthf (line 775) | func ExitContextDepthf(ctx context.Context, depth int, format string, ar...
FILE: vendor/github.com/golang/glog/glog_file.go
function createLogDirs (line 50) | func createLogDirs() {
function init (line 64) | func init() {
function shortHostname (line 88) | func shortHostname(hostname string) string {
function logName (line 97) | func logName(tag string, t time.Time) (name, link string) {
function create (line 119) | func create(tag string, t time.Time, dir string) (f *os.File, filename s...
function createInDir (line 143) | func createInDir(dir, tag string, t time.Time) (f *os.File, name string,...
type flushSyncWriter (line 167) | type flushSyncWriter interface
function init (line 179) | func init() {
type stderrSink (line 193) | type stderrSink struct
method Enabled (line 202) | func (s *stderrSink) Enabled(m *logsink.Meta) bool {
method Emit (line 207) | func (s *stderrSink) Emit(m *logsink.Meta, data []byte) (n int, err er...
type severityWriters (line 221) | type severityWriters
type fileSink (line 224) | type fileSink struct
method Enabled (line 233) | func (s *fileSink) Enabled(m *logsink.Meta) bool {
method Emit (line 238) | func (s *fileSink) Emit(m *logsink.Meta, data []byte) (n int, err erro...
method createMissingFiles (line 352) | func (s *fileSink) createMissingFiles(upTo logsink.Severity) error {
method flushDaemon (line 376) | func (s *fileSink) flushDaemon() {
method Flush (line 395) | func (s *fileSink) Flush() error {
method flush (line 400) | func (s *fileSink) flush(threshold logsink.Severity) error {
type syncBuffer (line 265) | type syncBuffer struct
method Sync (line 275) | func (sb *syncBuffer) Sync() error {
method Write (line 279) | func (sb *syncBuffer) Write(p []byte) (n int, err error) {
method filenames (line 295) | func (sb *syncBuffer) filenames() []string {
method rotateFile (line 302) | func (sb *syncBuffer) rotateFile(now time.Time) error {
constant footer (line 299) | footer = "\nCONTINUED IN NEXT FILE\n"
constant bufferSize (line 347) | bufferSize = 256 * 1024
function Flush (line 390) | func Flush() {
function Names (line 435) | func Names(s string) ([]string, error) {
FILE: vendor/github.com/golang/glog/glog_file_linux.go
function abortProcess (line 33) | func abortProcess() error {
FILE: vendor/github.com/golang/glog/glog_file_nonwindows.go
function shouldRegisterStderrSink (line 10) | func shouldRegisterStderrSink() bool {
function lookupUser (line 14) | func lookupUser() string {
FILE: vendor/github.com/golang/glog/glog_file_other.go
function abortProcess (line 27) | func abortProcess() error {
FILE: vendor/github.com/golang/glog/glog_file_posix.go
function abortProcess (line 35) | func abortProcess() error {
FILE: vendor/github.com/golang/glog/glog_file_windows.go
function shouldRegisterStderrSink (line 18) | func shouldRegisterStderrSink() bool {
function lookupUser (line 25) | func lookupUser() string {
FILE: vendor/github.com/golang/glog/glog_flags.go
type modulePat (li
Copy disabled (too large)
Download .json
Condensed preview — 3873 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (46,302K chars).
[
{
"path": ".github/cr.yaml",
"chars": 63,
"preview": "release-name-template: \"helm-chart-{{ .Name }}-{{ .Version }}\"\n"
},
{
"path": ".github/dependabot.yml",
"chars": 233,
"preview": "version: 2\nupdates:\n- package-ecosystem: docker\n directory: /\n schedule:\n interval: weekly\n- package-ecosystem: gom"
},
{
"path": ".github/workflows/helm-chart-release.yaml",
"chars": 606,
"preview": "name: Release Helm Charts\n\non:\n push:\n branches:\n - master\n paths:\n - \"charts/**\"\n\njobs:\n release:\n "
},
{
"path": ".gitignore",
"chars": 81,
"preview": "/bin\n/.go\n/.push-*\n/.container-*\n/.dockerfile-*\n/.licenses*\n/.buildx-initialized\n"
},
{
"path": ".travis.yml",
"chars": 156,
"preview": "sudo: required\n\n# trusty required for docker\n# https://github.com/travis-ci/travis-ci/issues/5448\ndist: trusty\n\nservices"
},
{
"path": "CHANGELOG.md",
"chars": 3134,
"preview": "### Version 1.9.0 (Tue Nov 22 2024 Zihong Zheng <zihongz@google.com>)\n - A scalability improvement to reduce memory foot"
},
{
"path": "CONTRIBUTING.md",
"chars": 1492,
"preview": "# Contributing guidelines\n\n## How to become a contributor and submit your own code\n\n### Contributor License Agreements\n\n"
},
{
"path": "Dockerfile.in",
"chars": 1349,
"preview": "# Copyright 2016 The Kubernetes Authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may n"
},
{
"path": "LICENSE",
"chars": 11357,
"preview": " Apache License\n Version 2.0, January 2004\n "
},
{
"path": "Makefile",
"chars": 18697,
"preview": "# Copyright 2016 The Kubernetes Authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may n"
},
{
"path": "OWNERS",
"chars": 172,
"preview": "# See the OWNERS file documentation:\n# https://github.com/kubernetes/kubernetes/blob/master/docs/devel/owners.md\n\nappro"
},
{
"path": "README.md",
"chars": 9878,
"preview": "# Horizontal cluster-proportional-autoscaler container\n\n[;\n"
},
{
"path": "build/lint.sh",
"chars": 952,
"preview": "#!/bin/sh\n\n# Copyright 2022 The Kubernetes Authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "build/test.sh",
"chars": 738,
"preview": "#!/bin/sh\n\n# Copyright 2016 The Kubernetes Authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "charts/cluster-proportional-autoscaler/.helmignore",
"chars": 341,
"preview": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation"
},
{
"path": "charts/cluster-proportional-autoscaler/Chart.yaml",
"chars": 299,
"preview": "apiVersion: v2\nname: cluster-proportional-autoscaler\nversion: 1.1.0\nappVersion: 1.8.6\ndescription: This chart is used to"
},
{
"path": "charts/cluster-proportional-autoscaler/templates/_helpers.tpl",
"chars": 2430,
"preview": "{{/* vim: set filetype=mustache: */}}\n{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"cluster-proportional-autoscale"
},
{
"path": "charts/cluster-proportional-autoscaler/templates/clusterrole.yaml",
"chars": 305,
"preview": "---\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n name: {{ include \"cluster-proportional-autosc"
},
{
"path": "charts/cluster-proportional-autoscaler/templates/clusterrolebinding.yaml",
"chars": 519,
"preview": "---\nkind: ClusterRoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n name: {{ include \"cluster-proportional"
},
{
"path": "charts/cluster-proportional-autoscaler/templates/configmap.yaml",
"chars": 637,
"preview": "{{ $config := pick .Values.config \"ladder\" \"linear\" }}\n{{ if not $config }}\n{{ fail \"A config must be supplied for eithe"
},
{
"path": "charts/cluster-proportional-autoscaler/templates/deployment.yaml",
"chars": 3526,
"preview": "---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: {{ include \"cluster-proportional-autoscaler.fullname\" . }}\n "
},
{
"path": "charts/cluster-proportional-autoscaler/templates/role.yaml",
"chars": 586,
"preview": "---\nkind: Role\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n name: {{ include \"cluster-proportional-autoscaler.fu"
},
{
"path": "charts/cluster-proportional-autoscaler/templates/rolebinding.yaml",
"chars": 577,
"preview": "---\nkind: RoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n name: {{ include \"cluster-proportional-autosc"
},
{
"path": "charts/cluster-proportional-autoscaler/templates/serviceaccount.yaml",
"chars": 444,
"preview": "{{- if .Values.serviceAccount.create -}}\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n name: {{ include \"cluster-p"
},
{
"path": "charts/cluster-proportional-autoscaler/values.yaml",
"chars": 1993,
"preview": "affinity: {}\nconfig: {}\n# ladder:\n# coresToReplicas:\n# - [ 1, 1 ]\n# - [ 64, 3 ]\n# - [ 512, 5 ]\n# "
},
{
"path": "cmd/cluster-proportional-autoscaler/autoscaler.go",
"chars": 1527,
"preview": "/*\nCopyright 2016 The Kubernetes Authors All rights reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "cmd/cluster-proportional-autoscaler/options/options.go",
"chars": 4616,
"preview": "/*\nCopyright 2016 The Kubernetes Authors All rights reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "cmd/cluster-proportional-autoscaler/options/options_test.go",
"chars": 1421,
"preview": "/*\nCopyright 2016 The Kubernetes Authors All rights reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "code-of-conduct.md",
"chars": 148,
"preview": "# Kubernetes Community Code of Conduct\n\nPlease refer to our [Kubernetes Community Code of Conduct](https://git.k8s.io/co"
},
{
"path": "examples/RBAC/RBAC-configs.yaml",
"chars": 1576,
"preview": "# Copyright 2016 The Kubernetes Authors. All rights reserved\n#\n# Licensed under the Apache License, Version 2.0 (the \"Li"
},
{
"path": "examples/README.md",
"chars": 868,
"preview": "# Example files\n\nThere are several example yaml files in this folder, each of them will create\nan autoscaler Deployment "
},
{
"path": "examples/ladder-defaultparams.yaml",
"chars": 1977,
"preview": "# Copyright 2016 The Kubernetes Authors. All rights reserved\n#\n# Licensed under the Apache License, Version 2.0 (the \"Li"
},
{
"path": "examples/ladder.yaml",
"chars": 2340,
"preview": "# Copyright 2016 The Kubernetes Authors. All rights reserved\n#\n# Licensed under the Apache License, Version 2.0 (the \"Li"
},
{
"path": "examples/linear-defaultparams.yaml",
"chars": 1961,
"preview": "# Copyright 2016 The Kubernetes Authors. All rights reserved\n#\n# Licensed under the Apache License, Version 2.0 (the \"Li"
},
{
"path": "examples/linear.yaml",
"chars": 2030,
"preview": "# Copyright 2016 The Kubernetes Authors. All rights reserved\n#\n# Licensed under the Apache License, Version 2.0 (the \"Li"
},
{
"path": "go.mod",
"chars": 2176,
"preview": "module github.com/kubernetes-sigs/cluster-proportional-autoscaler\n\ngo 1.24\n\nrequire (\n\tgithub.com/davecgh/go-spew v1.1.2"
},
{
"path": "go.sum",
"chars": 14968,
"preview": "github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=\ngithub.com/creack/pty v1."
},
{
"path": "pkg/autoscaler/autoscaler_server.go",
"chars": 5901,
"preview": "/*\nCopyright 2016 The Kubernetes Authors All rights reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "pkg/autoscaler/autoscaler_test.go",
"chars": 8380,
"preview": "/*\nCopyright 2016 The Kubernetes Authors All rights reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "pkg/autoscaler/controller/controller.go",
"chars": 1237,
"preview": "/*\nCopyright 2016 The Kubernetes Authors All rights reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "pkg/autoscaler/controller/laddercontroller/ladder_controller.go",
"chars": 4684,
"preview": "/*\nCopyright 2016 The Kubernetes Authors All rights reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "pkg/autoscaler/controller/laddercontroller/ladder_controller_test.go",
"chars": 8302,
"preview": "/*\nCopyright 2016 The Kubernetes Authors All rights reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "pkg/autoscaler/controller/linearcontroller/linear_controller.go",
"chars": 4913,
"preview": "/*\nCopyright 2016 The Kubernetes Authors All rights reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "pkg/autoscaler/controller/linearcontroller/linear_controller_test.go",
"chars": 6197,
"preview": "/*\nCopyright 2016 The Kubernetes Authors All rights reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "pkg/autoscaler/controller/plugin/plugin.go",
"chars": 2043,
"preview": "/*\nCopyright 2016 The Kubernetes Authors All rights reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "pkg/autoscaler/controller/plugin/plugin_test.go",
"chars": 1501,
"preview": "/*\nCopyright 2016 The Kubernetes Authors All rights reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "pkg/autoscaler/doc.go",
"chars": 776,
"preview": "/*\nCopyright 2016 The Kubernetes Authors All rights reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "pkg/autoscaler/health.go",
"chars": 1777,
"preview": "/*\nCopyright 2016 The Kubernetes Authors All rights reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "pkg/autoscaler/k8sclient/k8sclient.go",
"chars": 11994,
"preview": "/*\nCopyright 2016 The Kubernetes Authors All rights reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "pkg/autoscaler/k8sclient/k8sclient_test.go",
"chars": 9156,
"preview": "/*\nCopyright 2016 The Kubernetes Authors All rights reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "pkg/autoscaler/k8sclient/mock_k8sclient.go",
"chars": 2596,
"preview": "/*\nCopyright 2016 The Kubernetes Authors All rights reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "pkg/version/version.go",
"chars": 643,
"preview": "/*\nCopyright 2016 The Kubernetes Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "tools/go.mod",
"chars": 11857,
"preview": "module github.com/thockin/go-build-template/tools\n\ngo 1.23.0\n\nrequire (\n\tgithub.com/estesp/manifest-tool/v2 v2.1.6\n\tgith"
},
{
"path": "tools/go.sum",
"chars": 69290,
"preview": "4d63.com/gocheckcompilerdirectives v1.2.1 h1:AHcMYuw56NPjq/2y615IGg2kYkBdTvOaojYCBcRE7MA=\n4d63.com/gocheckcompilerdirect"
},
{
"path": "tools/tools.go",
"chars": 946,
"preview": "//go:build never\n// +build never\n\n/*\nCopyright 2021 The Kubernetes Authors.\n\nLicensed under the Apache License, Version "
},
{
"path": "vendor/github.com/davecgh/go-spew/LICENSE",
"chars": 766,
"preview": "ISC License\n\nCopyright (c) 2012-2016 Dave Collins <dave@davec.name>\n\nPermission to use, copy, modify, and/or distribute "
},
{
"path": "vendor/github.com/davecgh/go-spew/spew/bypass.go",
"chars": 4715,
"preview": "// Copyright (c) 2015-2016 Dave Collins <dave@davec.name>\n//\n// Permission to use, copy, modify, and distribute this sof"
},
{
"path": "vendor/github.com/davecgh/go-spew/spew/bypasssafe.go",
"chars": 1741,
"preview": "// Copyright (c) 2015-2016 Dave Collins <dave@davec.name>\n//\n// Permission to use, copy, modify, and distribute this sof"
},
{
"path": "vendor/github.com/davecgh/go-spew/spew/common.go",
"chars": 10364,
"preview": "/*\n * Copyright (c) 2013-2016 Dave Collins <dave@davec.name>\n *\n * Permission to use, copy, modify, and distribute this "
},
{
"path": "vendor/github.com/davecgh/go-spew/spew/config.go",
"chars": 12842,
"preview": "/*\n * Copyright (c) 2013-2016 Dave Collins <dave@davec.name>\n *\n * Permission to use, copy, modify, and distribute this "
},
{
"path": "vendor/github.com/davecgh/go-spew/spew/doc.go",
"chars": 8527,
"preview": "/*\n * Copyright (c) 2013-2016 Dave Collins <dave@davec.name>\n *\n * Permission to use, copy, modify, and distribute this "
},
{
"path": "vendor/github.com/davecgh/go-spew/spew/dump.go",
"chars": 13794,
"preview": "/*\n * Copyright (c) 2013-2016 Dave Collins <dave@davec.name>\n *\n * Permission to use, copy, modify, and distribute this "
},
{
"path": "vendor/github.com/davecgh/go-spew/spew/format.go",
"chars": 11314,
"preview": "/*\n * Copyright (c) 2013-2016 Dave Collins <dave@davec.name>\n *\n * Permission to use, copy, modify, and distribute this "
},
{
"path": "vendor/github.com/davecgh/go-spew/spew/spew.go",
"chars": 5969,
"preview": "/*\n * Copyright (c) 2013-2016 Dave Collins <dave@davec.name>\n *\n * Permission to use, copy, modify, and distribute this "
},
{
"path": "vendor/github.com/emicklei/go-restful/v3/.gitignore",
"chars": 912,
"preview": "# Compiled Object files, Static and Dynamic libs (Shared Objects)\n*.o\n*.a\n*.so\n\n# Folders\n_obj\n_test\n\n# Architecture spe"
},
{
"path": "vendor/github.com/emicklei/go-restful/v3/.goconvey",
"chars": 6,
"preview": "ignore"
},
{
"path": "vendor/github.com/emicklei/go-restful/v3/.travis.yml",
"chars": 189,
"preview": "language: go\n\ngo:\n - 1.x\n\nbefore_install:\n - go test -v\n\nscript:\n - go test -race -coverprofile=coverage.txt -covermo"
},
{
"path": "vendor/github.com/emicklei/go-restful/v3/CHANGES.md",
"chars": 10640,
"preview": "# Change history of go-restful\n\n## [v3.11.0] - 2023-08-19\n\n- restored behavior as <= v3.9.0 with option to change path s"
},
{
"path": "vendor/github.com/emicklei/go-restful/v3/LICENSE",
"chars": 1075,
"preview": "Copyright (c) 2012,2013 Ernest Micklei\n\nMIT License\n\nPermission is hereby granted, free of charge, to any person obtaini"
},
{
"path": "vendor/github.com/emicklei/go-restful/v3/Makefile",
"chars": 131,
"preview": "all: test\n\ntest:\n\tgo vet .\n\tgo test -cover -v .\n\nex:\n\tfind ./examples -type f -name \"*.go\" | xargs -I {} go build -o /tm"
},
{
"path": "vendor/github.com/emicklei/go-restful/v3/README.md",
"chars": 5228,
"preview": "go-restful\n==========\npackage for building REST-style Web Services using Google Go\n\n[\n\nvar (\n\tcustomVerbReg = regexp.MustCompile(\":([A-Za-z]+)$\")\n)\n\nfunc hasCust"
},
{
"path": "vendor/github.com/emicklei/go-restful/v3/doc.go",
"chars": 7522,
"preview": "/*\nPackage restful , a lean package for creating REST-style WebServices without magic.\n\nWebServices and Routes\n\nA WebSer"
},
{
"path": "vendor/github.com/emicklei/go-restful/v3/entity_accessors.go",
"chars": 5169,
"preview": "package restful\n\n// Copyright 2015 Ernest Micklei. All rights reserved.\n// Use of this source code is governed by a lice"
},
{
"path": "vendor/github.com/emicklei/go-restful/v3/extensions.go",
"chars": 723,
"preview": "package restful\n\n// Copyright 2021 Ernest Micklei. All rights reserved.\n// Use of this source code is governed by a lice"
},
{
"path": "vendor/github.com/emicklei/go-restful/v3/filter.go",
"chars": 1760,
"preview": "package restful\n\n// Copyright 2013 Ernest Micklei. All rights reserved.\n// Use of this source code is governed by a lice"
},
{
"path": "vendor/github.com/emicklei/go-restful/v3/filter_adapter.go",
"chars": 661,
"preview": "package restful\n\nimport (\n\t\"net/http\"\n)\n\n// HttpMiddlewareHandler is a function that takes a http.Handler and returns a "
},
{
"path": "vendor/github.com/emicklei/go-restful/v3/json.go",
"chars": 172,
"preview": "// +build !jsoniter\n\npackage restful\n\nimport \"encoding/json\"\n\nvar (\n\tMarshalIndent = json.MarshalIndent\n\tNewDecoder ="
},
{
"path": "vendor/github.com/emicklei/go-restful/v3/jsoniter.go",
"chars": 247,
"preview": "// +build jsoniter\n\npackage restful\n\nimport \"github.com/json-iterator/go\"\n\nvar (\n\tjson = jsoniter.ConfigCompati"
},
{
"path": "vendor/github.com/emicklei/go-restful/v3/jsr311.go",
"chars": 10558,
"preview": "package restful\n\n// Copyright 2013 Ernest Micklei. All rights reserved.\n// Use of this source code is governed by a lice"
},
{
"path": "vendor/github.com/emicklei/go-restful/v3/log/log.go",
"chars": 688,
"preview": "package log\n\nimport (\n\tstdlog \"log\"\n\t\"os\"\n)\n\n// StdLogger corresponds to a minimal subset of the interface satisfied by "
},
{
"path": "vendor/github.com/emicklei/go-restful/v3/logger.go",
"chars": 924,
"preview": "package restful\n\n// Copyright 2014 Ernest Micklei. All rights reserved.\n// Use of this source code is governed by a lice"
},
{
"path": "vendor/github.com/emicklei/go-restful/v3/mime.go",
"chars": 1435,
"preview": "package restful\n\nimport (\n\t\"strconv\"\n\t\"strings\"\n)\n\ntype mime struct {\n\tmedia string\n\tquality float64\n}\n\n// insertMime "
},
{
"path": "vendor/github.com/emicklei/go-restful/v3/options_filter.go",
"chars": 1446,
"preview": "package restful\n\nimport \"strings\"\n\n// Copyright 2013 Ernest Micklei. All rights reserved.\n// Use of this source code is "
},
{
"path": "vendor/github.com/emicklei/go-restful/v3/parameter.go",
"chars": 6865,
"preview": "package restful\n\nimport \"sort\"\n\n// Copyright 2013 Ernest Micklei. All rights reserved.\n// Use of this source code is gov"
},
{
"path": "vendor/github.com/emicklei/go-restful/v3/path_expression.go",
"chars": 2576,
"preview": "package restful\n\n// Copyright 2013 Ernest Micklei. All rights reserved.\n// Use of this source code is governed by a lice"
},
{
"path": "vendor/github.com/emicklei/go-restful/v3/path_processor.go",
"chars": 2146,
"preview": "package restful\n\nimport (\n\t\"bytes\"\n\t\"strings\"\n)\n\n// Copyright 2018 Ernest Micklei. All rights reserved.\n// Use of this s"
},
{
"path": "vendor/github.com/emicklei/go-restful/v3/request.go",
"chars": 4344,
"preview": "package restful\n\n// Copyright 2013 Ernest Micklei. All rights reserved.\n// Use of this source code is governed by a lice"
},
{
"path": "vendor/github.com/emicklei/go-restful/v3/response.go",
"chars": 10421,
"preview": "package restful\n\n// Copyright 2013 Ernest Micklei. All rights reserved.\n// Use of this source code is governed by a lice"
},
{
"path": "vendor/github.com/emicklei/go-restful/v3/route.go",
"chars": 5883,
"preview": "package restful\n\n// Copyright 2013 Ernest Micklei. All rights reserved.\n// Use of this source code is governed by a lice"
},
{
"path": "vendor/github.com/emicklei/go-restful/v3/route_builder.go",
"chars": 13112,
"preview": "package restful\n\n// Copyright 2013 Ernest Micklei. All rights reserved.\n// Use of this source code is governed by a lice"
},
{
"path": "vendor/github.com/emicklei/go-restful/v3/route_reader.go",
"chars": 1430,
"preview": "package restful\n\n// Copyright 2021 Ernest Micklei. All rights reserved.\n// Use of this source code is governed by a lice"
},
{
"path": "vendor/github.com/emicklei/go-restful/v3/router.go",
"chars": 766,
"preview": "package restful\n\n// Copyright 2013 Ernest Micklei. All rights reserved.\n// Use of this source code is governed by a lice"
},
{
"path": "vendor/github.com/emicklei/go-restful/v3/service_error.go",
"chars": 980,
"preview": "package restful\n\n// Copyright 2013 Ernest Micklei. All rights reserved.\n// Use of this source code is governed by a lice"
},
{
"path": "vendor/github.com/emicklei/go-restful/v3/web_service.go",
"chars": 10958,
"preview": "package restful\n\nimport (\n\t\"errors\"\n\t\"os\"\n\t\"reflect\"\n\t\"sync\"\n\n\t\"github.com/emicklei/go-restful/v3/log\"\n)\n\n// Copyright 2"
},
{
"path": "vendor/github.com/emicklei/go-restful/v3/web_service_container.go",
"chars": 1259,
"preview": "package restful\n\n// Copyright 2013 Ernest Micklei. All rights reserved.\n// Use of this source code is governed by a lice"
},
{
"path": "vendor/github.com/fxamacker/cbor/v2/.gitignore",
"chars": 192,
"preview": "# Binaries for programs and plugins\n*.exe\n*.exe~\n*.dll\n*.so\n*.dylib\n\n# Test binary, build with `go test -c`\n*.test\n\n# Ou"
},
{
"path": "vendor/github.com/fxamacker/cbor/v2/.golangci.yml",
"chars": 2505,
"preview": "# Do not delete linter settings. Linters like gocritic can be enabled on the command line.\n\nlinters-settings:\n depguard"
},
{
"path": "vendor/github.com/fxamacker/cbor/v2/CODE_OF_CONDUCT.md",
"chars": 5487,
"preview": "\n# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make particip"
},
{
"path": "vendor/github.com/fxamacker/cbor/v2/CONTRIBUTING.md",
"chars": 2641,
"preview": "# How to contribute\n\nYou can contribute by using the library, opening issues, or opening pull requests.\n\n## Bug reports "
},
{
"path": "vendor/github.com/fxamacker/cbor/v2/LICENSE",
"chars": 1076,
"preview": "MIT License\n\nCopyright (c) 2019-present Faye Amacker\n\nPermission is hereby granted, free of charge, to any person obtain"
},
{
"path": "vendor/github.com/fxamacker/cbor/v2/README.md",
"chars": 31360,
"preview": "# CBOR Codec in Go\n\n<!-- [](#cb"
},
{
"path": "vendor/github.com/fxamacker/cbor/v2/SECURITY.md",
"chars": 386,
"preview": "# Security Policy\n\nSecurity fixes are provided for the latest released version of fxamacker/cbor.\n\nIf the security vulne"
},
{
"path": "vendor/github.com/fxamacker/cbor/v2/bytestring.go",
"chars": 1934,
"preview": "// Copyright (c) Faye Amacker. All rights reserved.\n// Licensed under the MIT License. See LICENSE in the project root f"
},
{
"path": "vendor/github.com/fxamacker/cbor/v2/cache.go",
"chars": 9031,
"preview": "// Copyright (c) Faye Amacker. All rights reserved.\n// Licensed under the MIT License. See LICENSE in the project root f"
},
{
"path": "vendor/github.com/fxamacker/cbor/v2/common.go",
"chars": 5206,
"preview": "// Copyright (c) Faye Amacker. All rights reserved.\n// Licensed under the MIT License. See LICENSE in the project root f"
},
{
"path": "vendor/github.com/fxamacker/cbor/v2/decode.go",
"chars": 101124,
"preview": "// Copyright (c) Faye Amacker. All rights reserved.\n// Licensed under the MIT License. See LICENSE in the project root f"
},
{
"path": "vendor/github.com/fxamacker/cbor/v2/diagnose.go",
"chars": 17779,
"preview": "// Copyright (c) Faye Amacker. All rights reserved.\n// Licensed under the MIT License. See LICENSE in the project root f"
},
{
"path": "vendor/github.com/fxamacker/cbor/v2/doc.go",
"chars": 4356,
"preview": "// Copyright (c) Faye Amacker. All rights reserved.\n// Licensed under the MIT License. See LICENSE in the project root f"
},
{
"path": "vendor/github.com/fxamacker/cbor/v2/encode.go",
"chars": 60903,
"preview": "// Copyright (c) Faye Amacker. All rights reserved.\n// Licensed under the MIT License. See LICENSE in the project root f"
},
{
"path": "vendor/github.com/fxamacker/cbor/v2/encode_map.go",
"chars": 1873,
"preview": "// Copyright (c) Faye Amacker. All rights reserved.\n// Licensed under the MIT License. See LICENSE in the project root f"
},
{
"path": "vendor/github.com/fxamacker/cbor/v2/encode_map_go117.go",
"chars": 1306,
"preview": "// Copyright (c) Faye Amacker. All rights reserved.\n// Licensed under the MIT License. See LICENSE in the project root f"
},
{
"path": "vendor/github.com/fxamacker/cbor/v2/simplevalue.go",
"chars": 2449,
"preview": "package cbor\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n)\n\n// SimpleValue represents CBOR simple value.\n// CBOR simple value "
},
{
"path": "vendor/github.com/fxamacker/cbor/v2/stream.go",
"chars": 7917,
"preview": "// Copyright (c) Faye Amacker. All rights reserved.\n// Licensed under the MIT License. See LICENSE in the project root f"
},
{
"path": "vendor/github.com/fxamacker/cbor/v2/structfields.go",
"chars": 6788,
"preview": "// Copyright (c) Faye Amacker. All rights reserved.\n// Licensed under the MIT License. See LICENSE in the project root f"
},
{
"path": "vendor/github.com/fxamacker/cbor/v2/tag.go",
"chars": 7674,
"preview": "package cbor\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"sync\"\n)\n\n// Tag represents CBOR tag data, including tag number and "
},
{
"path": "vendor/github.com/fxamacker/cbor/v2/valid.go",
"chars": 10944,
"preview": "// Copyright (c) Faye Amacker. All rights reserved.\n// Licensed under the MIT License. See LICENSE in the project root f"
},
{
"path": "vendor/github.com/go-logr/logr/.golangci.yaml",
"chars": 377,
"preview": "run:\n timeout: 1m\n tests: true\n\nlinters:\n disable-all: true\n enable:\n - asciicheck\n - errcheck\n - forcetype"
},
{
"path": "vendor/github.com/go-logr/logr/CHANGELOG.md",
"chars": 140,
"preview": "# CHANGELOG\n\n## v1.0.0-rc1\n\nThis is the first logged release. Major changes (including breaking changes)\nhave occurred "
},
{
"path": "vendor/github.com/go-logr/logr/CONTRIBUTING.md",
"chars": 579,
"preview": "# Contributing\n\nLogr is open to pull-requests, provided they fit within the intended scope of\nthe project. Specifically"
},
{
"path": "vendor/github.com/go-logr/logr/LICENSE",
"chars": 11357,
"preview": " Apache License\n Version 2.0, January 2004\n "
},
{
"path": "vendor/github.com/go-logr/logr/README.md",
"chars": 19463,
"preview": "# A minimal logging API for Go\n\n[](https://pkg.go.d"
},
{
"path": "vendor/github.com/go-logr/logr/SECURITY.md",
"chars": 727,
"preview": "# Security Policy\n\nIf you have discovered a security vulnerability in this project, please report it\nprivately. **Do not"
},
{
"path": "vendor/github.com/go-logr/logr/context.go",
"chars": 1015,
"preview": "/*\nCopyright 2023 The logr Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use thi"
},
{
"path": "vendor/github.com/go-logr/logr/context_noslog.go",
"chars": 1375,
"preview": "//go:build !go1.21\n// +build !go1.21\n\n/*\nCopyright 2019 The logr Authors.\n\nLicensed under the Apache License, Version 2."
},
{
"path": "vendor/github.com/go-logr/logr/context_slog.go",
"chars": 2285,
"preview": "//go:build go1.21\n// +build go1.21\n\n/*\nCopyright 2019 The logr Authors.\n\nLicensed under the Apache License, Version 2.0 "
},
{
"path": "vendor/github.com/go-logr/logr/discard.go",
"chars": 833,
"preview": "/*\nCopyright 2020 The logr Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use thi"
},
{
"path": "vendor/github.com/go-logr/logr/logr.go",
"chars": 20707,
"preview": "/*\nCopyright 2019 The logr Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use thi"
},
{
"path": "vendor/github.com/go-logr/logr/sloghandler.go",
"chars": 5716,
"preview": "//go:build go1.21\n// +build go1.21\n\n/*\nCopyright 2023 The logr Authors.\n\nLicensed under the Apache License, Version 2.0 "
},
{
"path": "vendor/github.com/go-logr/logr/slogr.go",
"chars": 3727,
"preview": "//go:build go1.21\n// +build go1.21\n\n/*\nCopyright 2023 The logr Authors.\n\nLicensed under the Apache License, Version 2.0 "
},
{
"path": "vendor/github.com/go-logr/logr/slogsink.go",
"chars": 2997,
"preview": "//go:build go1.21\n// +build go1.21\n\n/*\nCopyright 2023 The logr Authors.\n\nLicensed under the Apache License, Version 2.0 "
},
{
"path": "vendor/github.com/go-openapi/jsonpointer/.editorconfig",
"chars": 539,
"preview": "# top-most EditorConfig file\nroot = true\n\n# Unix-style newlines with a newline ending every file\n[*]\nend_of_line = lf\nin"
},
{
"path": "vendor/github.com/go-openapi/jsonpointer/.gitignore",
"chars": 12,
"preview": "secrets.yml\n"
},
{
"path": "vendor/github.com/go-openapi/jsonpointer/.golangci.yml",
"chars": 952,
"preview": "linters-settings:\n govet:\n check-shadowing: true\n golint:\n min-confidence: 0\n gocyclo:\n min-complexity: 45\n "
},
{
"path": "vendor/github.com/go-openapi/jsonpointer/CODE_OF_CONDUCT.md",
"chars": 3233,
"preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, w"
},
{
"path": "vendor/github.com/go-openapi/jsonpointer/LICENSE",
"chars": 11358,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "vendor/github.com/go-openapi/jsonpointer/README.md",
"chars": 1206,
"preview": "# gojsonpointer [](htt"
},
{
"path": "vendor/github.com/go-openapi/jsonpointer/pointer.go",
"chars": 13683,
"preview": "// Copyright 2013 sigu-399 ( https://github.com/sigu-399 )\n//\n// Licensed under the Apache License, Version 2.0 (the \"Li"
},
{
"path": "vendor/github.com/go-openapi/jsonreference/.gitignore",
"chars": 12,
"preview": "secrets.yml\n"
},
{
"path": "vendor/github.com/go-openapi/jsonreference/.golangci.yml",
"chars": 794,
"preview": "linters-settings:\n govet:\n check-shadowing: true\n gocyclo:\n min-complexity: 30\n maligned:\n suggest-new: true"
},
{
"path": "vendor/github.com/go-openapi/jsonreference/CODE_OF_CONDUCT.md",
"chars": 3233,
"preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, w"
},
{
"path": "vendor/github.com/go-openapi/jsonreference/LICENSE",
"chars": 11358,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "vendor/github.com/go-openapi/jsonreference/README.md",
"chars": 940,
"preview": "# gojsonreference [](https://travis-ci."
},
{
"path": "vendor/github.com/go-openapi/jsonreference/internal/normalize_url.go",
"chars": 1709,
"preview": "package internal\n\nimport (\n\t\"net/url\"\n\t\"regexp\"\n\t\"strings\"\n)\n\nconst (\n\tdefaultHTTPPort = \":80\"\n\tdefaultHTTPSPort = \":44"
},
{
"path": "vendor/github.com/go-openapi/jsonreference/reference.go",
"chars": 3905,
"preview": "// Copyright 2013 sigu-399 ( https://github.com/sigu-399 )\n//\n// Licensed under the Apache License, Version 2.0 (the \"Li"
},
{
"path": "vendor/github.com/gogo/protobuf/AUTHORS",
"chars": 562,
"preview": "# This is the official list of GoGo authors for copyright purposes.\n# This file is distinct from the CONTRIBUTORS file, "
},
{
"path": "vendor/github.com/gogo/protobuf/CONTRIBUTORS",
"chars": 845,
"preview": "Anton Povarov <anton.povarov@gmail.com>\nBrian Goff <cpuguy83@gmail.com>\nClayton Coleman <ccoleman@redhat.com>\nDenis Smir"
},
{
"path": "vendor/github.com/gogo/protobuf/LICENSE",
"chars": 1681,
"preview": "Copyright (c) 2013, The GoGo Authors. All rights reserved.\n\nProtocol Buffers for Go with Gadgets\n\nGo support for Protoco"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/Makefile",
"chars": 1785,
"preview": "# Go support for Protocol Buffers - Google's data interchange format\n#\n# Copyright 2010 The Go Authors. All rights rese"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/clone.go",
"chars": 7916,
"preview": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2011 The Go Authors. All rights r"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/custom_gogo.go",
"chars": 1632,
"preview": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2018, The GoGo Authors. All rights reserved.\n// http://githu"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/decode.go",
"chars": 11448,
"preview": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2010 The Go Authors. All rights r"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/deprecated.go",
"chars": 2494,
"preview": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2018 The Go Authors. All rights r"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/discard.go",
"chars": 10059,
"preview": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2017 The Go Authors. All rights r"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/duration.go",
"chars": 3787,
"preview": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2016 The Go Authors. All rights r"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/duration_gogo.go",
"chars": 1986,
"preview": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2016, The GoGo Authors. All rights reserved.\n// http://githu"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/encode.go",
"chars": 6287,
"preview": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2010 The Go Authors. All rights r"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/encode_gogo.go",
"chars": 1566,
"preview": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2013, The GoGo Authors. All rights reserved.\n// http://githu"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/equal.go",
"chars": 8868,
"preview": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2011 The Go Authors. All rights r"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/extensions.go",
"chars": 18294,
"preview": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2010 The Go Authors. All rights r"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/extensions_gogo.go",
"chars": 9969,
"preview": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2013, The GoGo Authors. All rights reserved.\n// http://githu"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/lib.go",
"chars": 27028,
"preview": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2010 The Go Authors. All rights r"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/lib_gogo.go",
"chars": 1750,
"preview": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2013, The GoGo Authors. All rights reserved.\n// http://githu"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/message_set.go",
"chars": 5624,
"preview": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2010 The Go Authors. All rights r"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/pointer_reflect.go",
"chars": 10572,
"preview": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2012 The Go Authors. All rights r"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/pointer_reflect_gogo.go",
"chars": 2182,
"preview": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2018, The GoGo Authors. All rights reserved.\n// http://githu"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/pointer_unsafe.go",
"chars": 9931,
"preview": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2012 The Go Authors. All rights r"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/pointer_unsafe_gogo.go",
"chars": 2054,
"preview": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2018, The GoGo Authors. All rights reserved.\n// http://githu"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/properties.go",
"chars": 17431,
"preview": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2013, The GoGo Authors. All rights reserved.\n// http://githu"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/properties_gogo.go",
"chars": 1602,
"preview": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2018, The GoGo Authors. All rights reserved.\n// http://githu"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/skip_gogo.go",
"chars": 3040,
"preview": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2013, The GoGo Authors. All rights reserved.\n// http://githu"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/table_marshal.go",
"chars": 80641,
"preview": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2016 The Go Authors. All rights r"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/table_marshal_gogo.go",
"chars": 11101,
"preview": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2018, The GoGo Authors. All rights reserved.\n// http://githu"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/table_merge.go",
"chars": 17908,
"preview": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2016 The Go Authors. All rights r"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/table_unmarshal.go",
"chars": 55441,
"preview": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2016 The Go Authors. All rights r"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/table_unmarshal_gogo.go",
"chars": 9798,
"preview": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2018, The GoGo Authors. All rights reserved.\n// http://githu"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/text.go",
"chars": 23492,
"preview": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2013, The GoGo Authors. All rights reserved.\n// http://githu"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/text_gogo.go",
"chars": 1960,
"preview": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2013, The GoGo Authors. All rights reserved.\n// http://githu"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/text_parser.go",
"chars": 25797,
"preview": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2013, The GoGo Authors. All rights reserved.\n// http://githu"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/timestamp.go",
"chars": 4314,
"preview": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2016 The Go Authors. All rights r"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/timestamp_gogo.go",
"chars": 1986,
"preview": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2016, The GoGo Authors. All rights reserved.\n// http://githu"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/wrappers.go",
"chars": 49622,
"preview": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2018, The GoGo Authors. All rights reserved.\n// http://githu"
},
{
"path": "vendor/github.com/gogo/protobuf/proto/wrappers_gogo.go",
"chars": 4538,
"preview": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2018, The GoGo Authors. All rights reserved.\n// http://githu"
},
{
"path": "vendor/github.com/gogo/protobuf/sortkeys/sortkeys.go",
"chars": 3213,
"preview": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2013, The GoGo Authors. All rights reserved.\n// http://githu"
}
]
// ... and 3673 more files (download for full content)
About this extraction
This page contains the full source code of the kubernetes-incubator/cluster-proportional-autoscaler GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3873 files (41.0 MB), approximately 11.0M tokens, and a symbol index with 148449 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.