- .github
-
CHANGELOG
- CHANGELOG-1.10.md
- CHANGELOG-1.11.md
- CHANGELOG-1.12.md
- CHANGELOG-1.13.md
- CHANGELOG-1.14.md
- CHANGELOG-1.15.md
- CHANGELOG-1.16.md
- CHANGELOG-1.17.md
- CHANGELOG-1.18.md
- CHANGELOG-1.19.md
- CHANGELOG-1.2.md
- CHANGELOG-1.20.md
- CHANGELOG-1.21.md
- CHANGELOG-1.22.md
- CHANGELOG-1.23.md
- CHANGELOG-1.24.md
- CHANGELOG-1.25.md
- CHANGELOG-1.26.md
- CHANGELOG-1.27.md
- CHANGELOG-1.28.md
- CHANGELOG-1.29.md
- CHANGELOG-1.3.md
- CHANGELOG-1.30.md
- CHANGELOG-1.31.md
- CHANGELOG-1.4.md
- CHANGELOG-1.5.md
- CHANGELOG-1.6.md
- CHANGELOG-1.7.md
- CHANGELOG-1.8.md
- CHANGELOG-1.9.md
- OWNERS
- README.md
- LICENSES
- api
- build
- cluster
-
cmd
-
clicheck
-
cloud-controller-manager
-
dependencycheck
-
dependencyverifier
-
fieldnamedocscheck
-
gendocs
-
genkubedocs
-
genman
-
genswaggertypedocs
-
genutils
-
genyaml
-
gotemplate
-
import-boss
-
importverifier
-
kube-apiserver
-
kube-controller-manager
-
kube-proxy
-
kube-scheduler
-
kubeadm
-
kubectl
-
kubectl-convert
-
kubelet
-
kubemark
-
preferredimports
-
prune-junit-xml
-
yamlfmt
- OWNERS
-
clicheck
- docs
-
hack
-
boilerplate
-
conformance
-
e2e-internal
-
gen-swagger-doc
-
jenkins
-
lib
-
make-rules
-
testdata
-
tools
-
verify-flags
- .descriptions_failures
- .import-aliases
- .spelling_failures
- OWNERS
- README.md
- _update-generated-proto-bindings-dockerized.sh
- _update-generated-protobuf-dockerized.sh
- apidiff.sh
- benchmark-go.sh
- build-cross.sh
- build-go.sh
- cherry_pick_pull.sh
- dev-build-and-push.sh
- dev-build-and-up.sh
- dev-push-conformance.sh
- e2e-node-test.sh
- generate-docs.sh
- get-build.sh
- ginkgo-e2e.sh
- golangci-hints.yaml
- golangci-strict.yaml
- golangci.yaml
- golangci.yaml.in
- grab-profiles.sh
- install-etcd.sh
- install-protoc.sh
- lint-dependencies.sh
- list-feature-tests.sh
- local-up-cluster.sh
- logcheck.conf
- module-graph.sh
- pin-dependency.sh
- print-workspace-status.sh
- run-prometheus-on-etcd-scrapes.sh
- serve-prom-scrapes.sh
- test-go.sh
- test-integration.sh
- unwanted-dependencies.json
- update-all.sh
- update-codegen.sh
- update-conformance-yaml.sh
- update-generated-api-compatibility-data.sh
- update-generated-docs.sh
- update-generated-stable-metrics.sh
- update-go-workspace.sh
- update-gofmt.sh
- update-golangci-lint-config.sh
- update-import-aliases.sh
- update-internal-modules.sh
- update-kustomize.sh
- update-mocks.sh
- update-netparse-cve.sh
- update-openapi-spec.sh
- update-translations.sh
- update-vanity-imports.sh
- update-vendor-licenses.sh
- update-vendor.sh
- update-yamlfmt.sh
- verify-all.sh
- verify-api-groups.sh
- verify-boilerplate.sh
- verify-cli-conventions.sh
- verify-codegen.sh
- verify-conformance-requirements.sh
- verify-conformance-yaml.sh
- verify-description.sh
- verify-e2e-suites.sh
- verify-e2e-test-ownership.sh
- verify-external-dependencies-version.sh
- verify-fieldname-docs.sh
- verify-file-sizes.sh
- verify-flags-underscore.py
- verify-generated-docs.sh
- verify-generated-stable-metrics.sh
- verify-go-workspace.sh
- verify-gofmt.sh
- verify-golangci-lint-config.sh
- verify-golangci-lint-pr-hints.sh
- verify-golangci-lint-pr.sh
- verify-golangci-lint.sh
- verify-govulncheck.sh
- verify-import-aliases.sh
- verify-import-boss.sh
- verify-imports.sh
- verify-internal-modules.sh
- verify-licenses.sh
- verify-mocks.sh
- verify-netparse-cve.sh
- verify-no-vendor-cycles.sh
- verify-non-mutating-validation.sh
- verify-openapi-docs-urls.sh
- verify-openapi-spec.sh
- verify-pkg-names.sh
- verify-prerelease-lifecycle-tags.sh
- verify-prometheus-imports.sh
- verify-publishing-bot.py
- verify-readonly-packages.sh
- verify-shellcheck.sh
- verify-spelling.sh
- verify-staging-meta-files.sh
- verify-test-code.sh
- verify-test-featuregates.sh
- verify-test-images.sh
- verify-testing-import.sh
- verify-typecheck.sh
- verify-vendor-licenses.sh
- verify-vendor.sh
- verify-yamlfmt.sh
-
boilerplate
- logo
- pkg
- plugin
- staging
- test
- third_party
- vendor
- .generated_files
- .gitattributes
- .gitignore
- .go-version
- CHANGELOG.md
- CONTRIBUTING.md
- LICENSE
- Makefile
- OWNERS
- OWNERS_ALIASES
- README.md
- SECURITY_CONTACTS
- SUPPORT.md
- code-of-conduct.md
- go.mod
- go.sum
- go.work
- go.work.sum
Explanation
This code generates a metrics documentation page for Kubernetes. It reads a YAML file containing metrics definitions, parses them, and then uses Go templates to create a well-structured HTML document.
Here’s a breakdown of the key components and their functionalities:
1. Parsing Metrics from YAML:
documentation-list.yaml
: This file contains definitions of all Kubernetes metrics.yaml.Unmarshal
: Parses the YAML data into a slice ofmetric
structs.sort.Sort
: Sorts the parsed metrics based on their stability level and name (using thebyFQName
custom sort implementation).
2. Data Preparation:
byStabilityLevel
: Organizes the sorted metrics into a map based on their stability level (“ALPHA”, “BETA”, “STABLE”).templateData
: A struct holding all the data needed for the template: sorted metrics, current date and time, and the Kubernetes version.metric
: A struct representing a single metric definition, containing fields like name, subsystem, namespace, help text, type, stability level, labels, and deprecated versions.BuildFQName
: Constructs the fully qualified name (FQN) of a metric from its namespace, subsystem, and name.
3. Generating HTML using Templates:
template.New
andtemplate.Parse
: Creates and parses the Go template based on thetempl
string, which defines the HTML structure.template.FuncMap
: Defines functions available within the template, in this case,ToLower
for converting strings to lowercase.template.Execute
: Executes the parsed template using thetemplateData
to produce the final HTML output.
4. Output:
fmt.Print
: Prints the generated HTML to the console.
Overall, this code demonstrates a common pattern in documentation generation:
- Data extraction: Reading and parsing data from a source file.
- Data manipulation: Sorting, filtering, and organizing data into a suitable structure for templating.
- Templating: Generating structured output using a template language.
This specific implementation focuses on Kubernetes metrics documentation, but the general principles can be applied to generate various kinds of documentation from different data sources.
Graph
The graph shows the usage of functions within the codebase.
Select a code symbol to view it's graph