Showing preview only (1,711K chars total). Download the full file or copy to clipboard to get everything.
Repository: crossplane/crossplane-runtime
Branch: main
Commit: 301f28c13d44
Files: 201
Total size: 1.6 MB
Directory structure:
gitextract_55jcywba/
├── .coderabbit.yaml
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ └── feature_request.md
│ ├── PULL_REQUEST_TEMPLATE.md
│ ├── renovate-base.json5
│ ├── renovate-earthly.json5
│ ├── renovate-entrypoint.sh
│ ├── renovate-nix.json5
│ ├── renovate.json5
│ └── workflows/
│ ├── backport.yml
│ ├── ci.yml
│ ├── commands.yml
│ ├── renovate.yml
│ ├── stale.yml
│ └── tag.yml
├── .gitignore
├── .golangci.yml
├── CODEOWNERS
├── DCO
├── LICENSE
├── OWNERS.md
├── PROJECT
├── README.md
├── RELEASE.md
├── SECURITY.md
├── apis/
│ ├── apis.go
│ ├── changelogs/
│ │ └── proto/
│ │ └── v1alpha1/
│ │ ├── changelog.pb.go
│ │ ├── changelog.proto
│ │ └── changelog_grpc.pb.go
│ ├── pipelineinspector/
│ │ └── proto/
│ │ └── v1alpha1/
│ │ ├── pipeline_inspector.pb.go
│ │ ├── pipeline_inspector.proto
│ │ └── pipeline_inspector_grpc.pb.go
│ └── proto/
│ └── v1alpha1/
│ ├── ess.pb.go
│ ├── ess.proto
│ └── ess_grpc.pb.go
├── buf.gen.yaml
├── buf.yaml
├── flake.nix
├── generate.go
├── go.mod
├── go.sum
├── gomod2nix.toml
├── hack/
│ ├── boilerplate.go.txt
│ └── linter-violation.tmpl
├── nix/
│ ├── apps.nix
│ └── checks.nix
├── nix.sh
├── pkg/
│ ├── certificates/
│ │ ├── certificates.go
│ │ ├── certificates_test.go
│ │ └── test-data/
│ │ ├── certs/
│ │ │ ├── ca.crt
│ │ │ ├── tls.crt
│ │ │ └── tls.key
│ │ ├── invalid-certs/
│ │ │ ├── ca.crt
│ │ │ ├── tls.crt
│ │ │ └── tls.key
│ │ └── no-ca/
│ │ ├── tls.crt
│ │ └── tls.key
│ ├── conditions/
│ │ ├── manager.go
│ │ └── manager_test.go
│ ├── controller/
│ │ ├── gate.go
│ │ └── options.go
│ ├── errors/
│ │ ├── errors.go
│ │ ├── errors_test.go
│ │ ├── reconcile.go
│ │ └── reconcile_test.go
│ ├── event/
│ │ ├── event.go
│ │ └── event_test.go
│ ├── feature/
│ │ ├── feature.go
│ │ ├── feature_test.go
│ │ └── features.go
│ ├── fieldpath/
│ │ ├── fieldpath.go
│ │ ├── fieldpath_test.go
│ │ ├── merge.go
│ │ ├── merge_test.go
│ │ ├── paved.go
│ │ └── paved_test.go
│ ├── gate/
│ │ ├── gate.go
│ │ └── gate_test.go
│ ├── logging/
│ │ ├── klog.go
│ │ └── logging.go
│ ├── meta/
│ │ ├── meta.go
│ │ └── meta_test.go
│ ├── password/
│ │ ├── password.go
│ │ └── password_test.go
│ ├── ratelimiter/
│ │ ├── default.go
│ │ ├── reconciler.go
│ │ └── reconciler_test.go
│ ├── reconciler/
│ │ ├── customresourcesgate/
│ │ │ ├── reconciler.go
│ │ │ ├── reconciler_test.go
│ │ │ └── setup.go
│ │ ├── doc.go
│ │ ├── managed/
│ │ │ ├── api.go
│ │ │ ├── api_test.go
│ │ │ ├── changelogger.go
│ │ │ ├── changelogger_test.go
│ │ │ ├── doc.go
│ │ │ ├── metrics.go
│ │ │ ├── policies.go
│ │ │ ├── reconciler.go
│ │ │ ├── reconciler_deprecated.go
│ │ │ ├── reconciler_legacy_test.go
│ │ │ ├── reconciler_modern_test.go
│ │ │ └── reconciler_typed.go
│ │ └── providerconfig/
│ │ ├── reconciler.go
│ │ └── reconciler_test.go
│ ├── reference/
│ │ ├── namespaced_reference.go
│ │ ├── namespaced_reference_test.go
│ │ ├── reference.go
│ │ └── reference_test.go
│ ├── resource/
│ │ ├── api.go
│ │ ├── api_test.go
│ │ ├── doc.go
│ │ ├── enqueue_handlers.go
│ │ ├── enqueue_handlers_test.go
│ │ ├── fake/
│ │ │ └── mocks.go
│ │ ├── interfaces.go
│ │ ├── interfaces_test.go
│ │ ├── late_initializer.go
│ │ ├── late_initializer_test.go
│ │ ├── predicates.go
│ │ ├── predicates_test.go
│ │ ├── providerconfig.go
│ │ ├── providerconfig_test.go
│ │ ├── reference.go
│ │ ├── reference_test.go
│ │ ├── resource.go
│ │ ├── resource_test.go
│ │ └── unstructured/
│ │ ├── claim/
│ │ │ ├── claim.go
│ │ │ ├── claim_test.go
│ │ │ └── zz_generated.deepcopy.go
│ │ ├── client.go
│ │ ├── client_test.go
│ │ ├── composed/
│ │ │ ├── composed.go
│ │ │ ├── composed_test.go
│ │ │ └── zz_generated.deepcopy.go
│ │ ├── composite/
│ │ │ ├── composite.go
│ │ │ ├── composite_test.go
│ │ │ └── zz_generated.deepcopy.go
│ │ ├── generate.go
│ │ └── reference/
│ │ └── reference.go
│ ├── statemetrics/
│ │ ├── mr_state_metrics.go
│ │ └── state_recorder.go
│ ├── test/
│ │ ├── cmp.go
│ │ ├── doc.go
│ │ ├── fake.go
│ │ └── retry.go
│ ├── version/
│ │ ├── fake/
│ │ │ └── mocks.go
│ │ ├── version.go
│ │ └── version_test.go
│ ├── webhook/
│ │ ├── mutator.go
│ │ ├── mutator_test.go
│ │ ├── validator.go
│ │ └── validator_test.go
│ ├── xcrd/
│ │ ├── composite.go
│ │ ├── crd.go
│ │ ├── crd_test.go
│ │ ├── fuzz_test.go
│ │ └── schemas.go
│ └── xpkg/
│ ├── build.go
│ ├── build_test.go
│ ├── cache.go
│ ├── cache_test.go
│ ├── client.go
│ ├── client_test.go
│ ├── config.go
│ ├── config_test.go
│ ├── doc.go
│ ├── fake/
│ │ ├── config.go
│ │ └── mocks.go
│ ├── fetch.go
│ ├── find.go
│ ├── find_test.go
│ ├── fuzz_test.go
│ ├── layers.go
│ ├── lint.go
│ ├── lint_test.go
│ ├── name.go
│ ├── name_test.go
│ ├── parser/
│ │ ├── examples/
│ │ │ ├── parser.go
│ │ │ └── parser_test.go
│ │ ├── fsreader.go
│ │ ├── fuzz_test.go
│ │ ├── linter.go
│ │ ├── linter_test.go
│ │ ├── parser.go
│ │ ├── parser_test.go
│ │ └── yaml/
│ │ └── parser.go
│ ├── reader.go
│ ├── scheme.go
│ ├── scheme_test.go
│ ├── signature/
│ │ ├── attestation.go
│ │ ├── doc.go
│ │ └── validate.go
│ ├── testdata/
│ │ ├── examples/
│ │ │ ├── ec2/
│ │ │ │ ├── instance.yaml
│ │ │ │ └── internetgateway.yaml
│ │ │ ├── ecr/
│ │ │ │ └── repository.yaml
│ │ │ └── provider.yaml
│ │ ├── provider_meta.yaml
│ │ └── providerconfigs.helm.crossplane.io.yaml
│ └── validate.go
└── test/
└── fuzz/
└── oss_fuzz_build.sh
================================================
FILE CONTENTS
================================================
================================================
FILE: .coderabbit.yaml
================================================
# CodeRabbit Configuration for Crossplane Runtime
# This configuration is optimized for the Crossplane Runtime Go library
# =============================================================================
# GLOBAL SETTINGS
# =============================================================================
# Language for CodeRabbit reviews and comments (default: en-US, keeping explicit)
language: "en-US"
# Instructions for CodeRabbit's tone and style in reviews (max 250 chars)
tone_instructions: |
Be collaborative and supportive. Ask clarifying questions rather than making
assumptions. Focus on the 'why' behind decisions. Frame concerns
constructively and thank contributors.
# Disable early-access features for stability
early_access: false
# =============================================================================
# REVIEWS
# =============================================================================
reviews:
# We tested assertive and found it too verbose, e.g. approxing 200 comments on
# https://github.com/crossplane/crossplane/pull/6777. Some of the nitpicks do
# look valuable to me, but the signal to noise ratio isn't good enough.
profile: "chill"
# Don't generate summary in PR description - let authors write their own
high_level_summary: false
# Include the high-level summary in the walkthrough comment instead
high_level_summary_in_walkthrough: true
# Collapse walkthrough comment to reduce visual clutter in PRs
collapse_walkthrough: true
# Enable automatic label application
auto_apply_labels: true
# Automatically assign suggested reviewers (disabled - let maintainers control)
auto_assign_reviewers: false
# Disable poem generation in walkthrough comments
poem: false
# Disable review status messages to reduce comment noise
review_status: false
# Focus reviews on source code, exclude generated and vendor files
path_filters:
# Include source code
- "**/*.go"
- "**/*.yaml"
- "**/*.yml"
- "**/*.md"
- "**/*.proto"
- "**/Dockerfile*"
- "**/flake.nix"
- "**/*.sh"
# Exclude generated and vendor files
- "!**/zz_generated*.go"
- "!**/vendor/**"
- "!**/node_modules/**"
- "!**/*.pb.go"
- "!**/*.pb.gw.go"
- "!**/mock_*.go"
- "!**/fake/**"
- "!**/testdata/**"
- "!**/dist/**"
- "!**/build/**"
# Path-specific instructions for different areas of the codebase
path_instructions:
- path: "**/*.go"
instructions: |
Enforce Crossplane-specific patterns: Use crossplane-runtime/pkg/errors
for wrapping. Check variable naming (short for local scope, descriptive
for wider scope). Ensure 'return early' pattern. Verify error scoping
(declare in conditionals when possible). For nolint directives, require
specific linter names and explanations. CRITICAL: Ensure all error
messages are meaningful to end users, not just developers - avoid
technical jargon, include context about what the user was trying to do,
and suggest next steps when possible.
- path: "**/*_test.go"
instructions: |
Enforce table-driven test structure: PascalCase test names (no
underscores), args/want pattern, use cmp.Diff with
cmpopts.EquateErrors() for error testing. Check for proper test case
naming and reason fields. Ensure no third-party test frameworks (no
Ginkgo, Gomega, Testify).
- path: "**/*.md"
instructions: |
Ensure Markdown files are wrapped at 100 columns for consistency and
readability. Lines can be longer if it makes links more readable, but
otherwise should wrap at 100 characters. Check for proper heading
structure, clear language, and that documentation is helpful for users.
- path: "**/apis/**"
instructions: |
Focus on API design following Kubernetes API conventions from
https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md.
Check for proper field naming (camelCase), appropriate types, validation
tags, and documentation. Ask about backward compatibility and the impact
on existing users and upgrade paths. Consider if changes need feature
gates or alpha/beta graduation. Ensure error messages in validation are
user-friendly. Pay attention to API consistency, proper use of optional
vs required fields, and following established Kubernetes patterns.
- path: "**/pkg/reconciler/**"
instructions: |
Review reconciler logic for proper reconciliation patterns, error
handling, and resource management. Pay special attention to conditions
and events: Conditions must be actionable for users (not developers),
stable/deterministic, with proper Type/Reason/Message format. Events
only when something actually happens, with specific details about what
changed. No transient errors in conditions/events. All error messages
must be meaningful to end users - include context about what
resource/operation failed and why.
- path: "**/test/**"
instructions: |
Focus on test coverage, test clarity, and proper use of testing
utilities. Ask about testing scenarios and edge cases. Ensure tests are
maintainable and cover the happy path and error conditions. Verify
error testing uses proper patterns (cmpopts.EquateErrors, sentinel
errors for complex cases).
# Automatic review settings
auto_review:
# Skip reviewing draft PRs until they're ready for review (default: false, keeping explicit)
drafts: false
# Skip reviews if PR title contains these keywords (case-insensitive)
ignore_title_keywords:
- "wip"
- "draft"
- "do not merge"
- "dnm"
# Skip reviews from these automated bot accounts
ignore_usernames:
- "dependabot[bot]"
- "renovate[bot]"
- "github-actions[bot]"
# Quality gates that run during CodeRabbit's review to check PR readiness
pre_merge_checks:
# Check PR title for length and descriptiveness
title:
requirements: "Keep under 72 characters and be descriptive about what the change does."
# Disable docstring coverage check (too noisy for Go projects)
docstrings:
mode: "off"
# Custom checks specific to Crossplane Runtime development practices
custom_checks:
- name: "Breaking Changes"
mode: "error"
instructions: |
Fails if any public Go code (exported functions, types, methods, or
fields) in '**/*.go' (excluding *_test.go and generated files) is
removed, renamed, has signature changes, or has behavior changes that
could break existing users, without the 'breaking-change' label. This
is a library repo - all exported APIs are public.
# Disable automatic code generation features
finishing_touches:
# Disable automatic docstring generation
docstrings:
enabled: false
# Disable automatic unit test generation
unit_tests:
enabled: false
# Tools - DISABLED: We prefer to run linting tools directly in CI
# Our comprehensive golangci-lint setup with "default: all" already covers
# most static analysis. Additional tools can be added to CI as needed.
tools:
# Go linting - disabled (we run golangci-lint with comprehensive config)
golangci-lint:
enabled: false
# Security and vulnerability scanning - disabled (prefer direct CI integration)
gitleaks:
enabled: false
semgrep:
enabled: false
osvScanner:
enabled: false
# File format linting - disabled (prefer direct CI integration)
yamllint:
enabled: false
markdownlint:
enabled: false
shellcheck:
enabled: false
hadolint:
enabled: false
actionlint:
enabled: false
buf:
enabled: false
# GitHub integration - disabled for now
github-checks:
enabled: false
# =============================================================================
# CHAT
# Interactive chat with CodeRabbit in PR comments. You can ask questions like:
# - @coderabbitai explain this error handling approach
# - @coderabbitai what are the edge cases for this function?
# - @coderabbitai how does this affect backward compatibility?
# - @coderabbitai generate unit tests for this function
# =============================================================================
chat:
# Disable ASCII/emoji art in responses
art: false
# =============================================================================
# KNOWLEDGE BASE
# =============================================================================
knowledge_base:
# Enable MCP integration to provide context about external libraries and APIs
mcp:
usage: "enabled"
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug Report
about: Help us diagnose and fix bugs in Crossplane
labels: bug
---
<!--
Thank you for helping to improve Crossplane!
Please be sure to search for open issues before raising a new one. We use issues
for bug reports and feature requests. Please find us at https://slack.crossplane.io
for questions, support, and discussion.
-->
### What happened?
<!--
Please let us know what behaviour you expected and how Crossplane diverged from
that behaviour.
-->
### How can we reproduce it?
<!--
Help us to reproduce your bug as succinctly and precisely as possible. Artifacts
such as example manifests or a script that triggers the issue are highly
appreciated!
-->
### What environment did it happen in?
Crossplane version:
<!--
Include at least the version or commit of Crossplane you were running. Consider
also including your:
* Cloud provider or hardware configuration
* Kubernetes version (use `kubectl version`)
* Kubernetes distribution (e.g. Tectonic, GKE, OpenShift)
* OS (e.g. from /etc/os-release)
* Kernel (e.g. `uname -a`)
-->
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature Request
about: Help us make Crossplane more useful
labels: enhancement
---
<!--
Thank you for helping to improve Crossplane!
Please be sure to search for open issues before raising a new one. We use issues
for bug reports and feature requests. Please find us at https://slack.crossplane.io
for questions, support, and discussion.
-->
### What problem are you facing?
<!--
Please tell us a little about your use case - it's okay if it's hypothetical!
Leading with this context helps frame the feature request so we can ensure we
implement it sensibly.
--->
### How could Crossplane help solve your problem?
<!--
Let us know how you think Crossplane could help with your use case.
-->
================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!--
Thank you for helping to improve Crossplane! Please read the contribution docs
(linked below) if this is your first Crossplane pull request.
-->
### Description of your changes
<!--
Briefly describe what this pull request does, and how it is covered by tests.
Be proactive - direct your reviewers' attention to anything that needs special
consideration.
We love pull requests that fix an open issue. If yours does, use the below line
to indicate which issue it fixes, for example "Fixes #500".
-->
Fixes #
I have: <!--You MUST either [x] check or [ ] ~strike through~ every item.-->
- [ ] Read and followed Crossplane's [contribution process].
- [ ] Run `./nix.sh flake check` to ensure this PR is ready for review.
- [ ] Added or updated unit tests.
- [ ] Linked a PR or a [docs tracking issue] to [document this change].
- [ ] Added `backport release-x.y` labels to auto-backport this PR.
Need help with this checklist? See the [cheat sheet].
[contribution process]: https://github.com/crossplane/crossplane/tree/main/contributing
[docs tracking issue]: https://github.com/crossplane/docs/issues/new
[document this change]: https://docs.crossplane.io/contribute/contribute
[cheat sheet]: https://github.com/crossplane/crossplane/tree/main/contributing#checklist-cheat-sheet
================================================
FILE: .github/renovate-base.json5
================================================
{
$schema: 'https://docs.renovatebot.com/renovate-schema.json',
extends: [
'config:recommended',
'helpers:pinGitHubActionDigests',
':semanticCommits',
],
// We only want renovate to rebase PRs when they have conflicts, default
// "auto" mode is not required.
rebaseWhen: 'conflicted',
// The maximum number of PRs to be created in parallel
prConcurrentLimit: 5,
// The branches renovate should target
// PLEASE UPDATE THIS WHEN RELEASING.
baseBranches: [
'main',
'release-1.20',
'release-2.0',
'release-2.1',
'release-2.2',
'release-2.3',
],
ignorePaths: [
'design/**',
],
postUpdateOptions: [
'gomodTidy',
],
// All PRs should have a label
labels: [
'automated',
],
// PackageRules disabled below should be enabled in case of vulnerabilities
vulnerabilityAlerts: {
enabled: true,
},
osvVulnerabilityAlerts: true,
// Renovate evaluates all packageRules in order, so low priority rules should
// be at the beginning, high priority at the end
packageRules: [
{
description: 'Ignore non-security related updates to release branches',
matchBaseBranches: [
'/^release-.*/',
],
enabled: false,
},
{
description: 'Still update Docker images on release branches though',
matchDatasources: [
'docker',
],
matchBaseBranches: [
'/^release-.*/',
],
enabled: true,
},
{
description: 'Only get Docker image updates every 2 weeks to reduce noise',
matchDatasources: [
'docker',
],
schedule: [
'every 2 week on monday',
],
enabled: true,
},
{
description: "Ignore k8s.io/client-go older versions, they switched to semantic version and old tags are still available in the repo",
matchDatasources: [
'go',
],
matchDepNames: [
'k8s.io/client-go',
],
allowedVersions: '<1.0',
},
{
description: 'Only get dependency digest updates every month to reduce noise',
matchDatasources: [
'go',
],
matchUpdateTypes: [
'digest',
],
extends: [
'schedule:monthly',
],
},
{
description: "Ignore oss-fuzz, it's not using tags, we'll stick to master",
matchDepTypes: [
'action',
],
matchDepNames: [
'google/oss-fuzz',
],
enabled: false,
},
{
description: 'Group all go version updates',
matchDatasources: [
'golang-version',
],
groupName: 'golang version',
},
],
}
================================================
FILE: .github/renovate-earthly.json5
================================================
{
// Earthly-specific configuration for release branches.
// Main branch uses Nix - see renovate-nix.json5.
customManagers: [
{
customType: 'regex',
description: 'Bump Earthly version in GitHub workflows',
fileMatch: [
'^\\.github\\/workflows\\/[^/]+\\.ya?ml$',
],
matchStrings: [
"EARTHLY_VERSION: '(?<currentValue>.*?)'\\n",
],
datasourceTemplate: 'github-releases',
depNameTemplate: 'earthly/earthly',
extractVersionTemplate: '^v(?<version>.*)$',
},
{
customType: 'regex',
description: 'Bump Go version in Earthfile',
fileMatch: [
'^Earthfile$',
],
matchStrings: [
'ARG --global GO_VERSION=(?<currentValue>.*?)\\n',
],
datasourceTemplate: 'golang-version',
depNameTemplate: 'golang',
},
{
customType: 'regex',
description: 'Bump golangci-lint version in the Earthfile',
fileMatch: [
'^Earthfile$',
],
matchStrings: [
'ARG GOLANGCI_LINT_VERSION=(?<currentValue>.*?)\\n',
],
datasourceTemplate: 'github-releases',
depNameTemplate: 'golangci/golangci-lint',
},
{
customType: 'regex',
description: 'Bump codeql version in the Earthfile',
fileMatch: [
'^Earthfile$',
],
matchStrings: [
'ARG CODEQL_VERSION=(?<currentValue>.*?)\\n',
],
datasourceTemplate: 'github-releases',
depNameTemplate: 'github/codeql-action',
extractVersionTemplate: '^codeql-bundle-(?<version>.*)$',
},
],
// Renovate doesn't have native Earthfile support, but because Earthfile
// syntax is a superset of Dockerfile syntax this works to update FROM images.
// https://github.com/renovatebot/renovate/issues/15975
dockerfile: {
fileMatch: [
'(^|/)Earthfile$',
],
},
packageRules: [
{
description: 'Generate code after upgrading go dependencies (Earthly)',
matchDatasources: [
'go',
],
matchBaseBranches: [
// Release 2.1 and older use earthly.
'/^release-1\..*/',
'/^release-2\.[0-1]$/',
],
postUpgradeTasks: {
commands: [
'earthly --strict +go-generate',
],
fileFilters: [
'**/*',
],
executionMode: 'update',
},
},
{
description: 'Lint code after upgrading golangci-lint (Earthly)',
matchDepNames: [
'golangci/golangci-lint',
],
matchBaseBranches: [
// Release 2.1 and older use earthly.
'/^release-1\..*/',
'/^release-2\.[0-1]$/',
],
postUpgradeTasks: {
commands: [
'earthly --strict +go-lint',
],
fileFilters: [
'**/*',
],
executionMode: 'update',
},
},
],
}
================================================
FILE: .github/renovate-entrypoint.sh
================================================
#!/bin/bash
set -e
# Install Earthly (for release branches)
echo "Installing Earthly..."
curl -fsSLo /usr/local/bin/earthly https://github.com/earthly/earthly/releases/latest/download/earthly-linux-amd64
chmod +x /usr/local/bin/earthly
/usr/local/bin/earthly bootstrap
# Install Nix (for main branch)
echo "Installing Nix..."
apt-get update && apt-get install -y nix-bin
# Configure Nix
mkdir -p /etc/nix
cat > /etc/nix/nix.conf << 'EOF'
# Enable flakes and the nix command (e.g. nix run, nix build).
experimental-features = nix-command flakes
# Run builds as the calling user, not dedicated nixbld users. This avoids
# needing to create the nixbld group and users in this ephemeral container.
build-users-group =
# Build derivations in parallel, one per CPU core.
max-jobs = auto
# Use the Crossplane Cachix cache to download pre-built binaries from CI.
extra-substituters = https://crossplane.cachix.org
extra-trusted-public-keys = crossplane.cachix.org-1:NJluVUN9TX0rY/zAxHYaT19Y5ik4ELH4uFuxje+62d4=
EOF
echo "Nix $(nix --version) installed successfully"
renovate
================================================
FILE: .github/renovate-nix.json5
================================================
{
// Nix-specific configuration for main branch.
// Release branches use Earthly - see renovate-earthly.json5.
// Enable the nix manager to update flake.lock when flake inputs change.
nix: {
enabled: true,
},
packageRules: [
{
description: 'Update flake.lock monthly',
matchManagers: [
'nix',
],
extends: [
'schedule:monthly',
],
},
{
description: 'Regenerate gomod2nix.toml and generated code after upgrading go dependencies (Nix)',
matchDatasources: [
'go',
],
matchBaseBranches: [
'main',
// Release 2.2 and newer use nix.
'/^release-2\.([2-9]|..+)$/',
],
postUpgradeTasks: {
commands: [
'nix run .#tidy',
'nix run .#generate',
],
fileFilters: [
'**/*',
],
executionMode: 'update',
},
},
{
description: 'Lint code after upgrading golangci-lint (Nix)',
matchDepNames: [
'golangci/golangci-lint',
],
matchBaseBranches: [
'main',
// Release 2.2 and newer use nix.
'/^release-2\.([2-9]|..+)$/',
],
postUpgradeTasks: {
commands: [
'nix run .#lint',
],
fileFilters: [
'**/*',
],
executionMode: 'update',
},
},
],
}
================================================
FILE: .github/renovate.json5
================================================
{
// This is the main Renovate configuration file.
// It extends base config and build-tool-specific configs.
//
// - renovate-base.json5: Common configuration for all branches
// - renovate-earthly.json5: Earthly-specific config for release branches
// - renovate-nix.json5: Nix-specific config for main branch
//
// The local> syntax requires owner/repo format with // for paths.
// See: https://docs.renovatebot.com/config-presets/#local-presets
extends: [
'local>crossplane/crossplane-runtime//.github/renovate-base.json5',
'local>crossplane/crossplane-runtime//.github/renovate-earthly.json5',
'local>crossplane/crossplane-runtime//.github/renovate-nix.json5',
],
}
================================================
FILE: .github/workflows/backport.yml
================================================
name: Backport
on:
# NOTE(negz): This is a risky target, but we run this action only when and if
# a PR is closed, then filter down to specifically merged PRs. We also don't
# invoke any scripts, etc from within the repo. I believe the fact that we'll
# be able to review PRs before this runs makes this fairly safe.
# https://securitylab.github.com/research/github-actions-preventing-pwn-requests/
pull_request_target:
types: [closed]
# See also commands.yml for the /backport triggered variant of this workflow.
jobs:
# NOTE(negz): I tested many backport GitHub actions before landing on this
# one. Many do not support merge commits, or do not support pull requests with
# more than one commit. This one does. It also handily links backport PRs with
# new PRs, and provides commentary and instructions when it can't backport.
# The main gotchas with this action are that it _only_ supports merge commits,
# and that PRs _must_ be labelled before they're merged to trigger a backport.
open-pr:
runs-on: ubuntu-22.04
if: github.event.pull_request.merged
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
fetch-depth: 0
- name: Open Backport PR
uses: zeebe-io/backport-action@3c06f323a58619da1e8522229ebc8d5de2633e46 # v4.3.0
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
github_workspace: ${{ github.workspace }}
================================================
FILE: .github/workflows/ci.yml
================================================
name: CI
on:
push:
branches:
- main
- release-*
pull_request: {}
workflow_dispatch: {}
env:
# We can't run a step 'if secrets.FOO != ""' but we can run a step
# 'if env.FOO' != ""', so we copy secrets to env vars for conditional checks.
DOCKER_USR: ${{ secrets.DOCKER_USR }}
jobs:
check-diff:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Install Nix
uses: cachix/install-nix-action@616559265b40713947b9c190a8ff4b507b5df49b # v31
- name: Setup Cachix
uses: cachix/cachix-action@3ba601ff5bbb07c7220846facfa2cd81eeee15a1 # v16
with:
name: crossplane
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
- name: Verify Generated Code
run: nix build .#checks.x86_64-linux.generate --print-build-logs
validate-renovate-config:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
# renovate-config-validator only looks at the top-level file and does
# not recursively resolve local> presets, so we also syntax-check every
# renovate*.json5 with the json5 CLI to catch preset parse errors at
# PR time rather than 24h later in the scheduled Renovate job.
- name: Validate Renovate preset syntax
run: |
for f in .github/renovate*.json5; do
npx --yes json5 "$f" > /dev/null
done
- name: Validate Renovate JSON
run: npx --yes --package renovate -- renovate-config-validator
lint:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Install Nix
uses: cachix/install-nix-action@616559265b40713947b9c190a8ff4b507b5df49b # v31
- name: Setup Cachix
uses: cachix/cachix-action@3ba601ff5bbb07c7220846facfa2cd81eeee15a1 # v16
with:
name: crossplane
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
- name: Lint
run: nix build .#checks.x86_64-linux.go-lint --print-build-logs
codeql:
runs-on: ubuntu-22.04
permissions:
contents: read
security-events: write
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Install Nix
uses: cachix/install-nix-action@616559265b40713947b9c190a8ff4b507b5df49b # v31
- name: Setup Cachix
uses: cachix/cachix-action@3ba601ff5bbb07c7220846facfa2cd81eeee15a1 # v16
with:
name: crossplane
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
- name: Setup Nix Environment
uses: nicknovitski/nix-develop@9be7cfb4b10451d3390a75dc18ad0465bed4932a # v1
- name: Initialize CodeQL
uses: github/codeql-action/init@c10b8064de6f491fea524254123dbe5e09572f13 # v4
with:
languages: go
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@c10b8064de6f491fea524254123dbe5e09572f13 # v4
unit-tests:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Install Nix
uses: cachix/install-nix-action@616559265b40713947b9c190a8ff4b507b5df49b # v31
- name: Setup Cachix
uses: cachix/cachix-action@3ba601ff5bbb07c7220846facfa2cd81eeee15a1 # v16
with:
name: crossplane
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
- name: Run Unit Tests
run: nix build .#checks.x86_64-linux.test --print-build-logs
- name: Publish Unit Test Coverage
uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 # v4
with:
flags: unittests
file: result/coverage.txt
token: ${{ secrets.CODECOV_TOKEN }}
protobuf-schemas:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Setup Buf
uses: bufbuild/buf-setup-action@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Lint Protocol Buffers
uses: bufbuild/buf-lint-action@v1
# buf-breaking-action doesn't support branches
# https://github.com/bufbuild/buf-push-action/issues/34
- name: Detect Breaking Changes in Protocol Buffers
uses: bufbuild/buf-breaking-action@a074e988ee34efcd4927079e79c611f428354c01 # v1
# We want to run this for the main branch, and PRs against main.
if: ${{ github.ref == 'refs/heads/main' || github.base_ref == 'main' }}
with:
against: "https://github.com/${GITHUB_REPOSITORY}.git#branch=main"
- name: Push Protocol Buffers to Buf Schema Registry
if: ${{ github.repository == 'crossplane/crossplane-runtime' && github.ref == 'refs/heads/main' }}
uses: bufbuild/buf-push-action@v1
with:
buf_token: ${{ secrets.BUF_TOKEN }}
================================================
FILE: .github/workflows/commands.yml
================================================
name: Comment Commands
on: issue_comment
jobs:
points:
runs-on: ubuntu-22.04
if: startsWith(github.event.comment.body, '/points')
steps:
- name: Extract Command
id: command
uses: xt0rted/slash-command-action@bf51f8f5f4ea3d58abc7eca58f77104182b23e88 # v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
command: points
reaction: "true"
reaction-type: "eyes"
allow-edits: "false"
permission-level: write
- name: Handle Command
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
POINTS: ${{ steps.command.outputs.command-arguments }}
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const points = process.env.POINTS
if (isNaN(parseInt(points))) {
console.log("Malformed command - expected '/points <int>'")
github.reactions.createForIssueComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: context.payload.comment.id,
content: "confused"
})
return
}
const label = "points/" + points
// Delete our needs-points-label label.
try {
await github.issues.deleteLabel({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
name: ['needs-points-label']
})
console.log("Deleted 'needs-points-label' label.")
}
catch(e) {
console.log("Label 'needs-points-label' probably didn't exist.")
}
// Add our points label.
github.issues.addLabels({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
labels: [label]
})
console.log("Added '" + label + "' label.")
# NOTE(negz): See also backport.yml, which is the variant that triggers on PR
# merge rather than on comment.
backport:
runs-on: ubuntu-22.04
if: github.event.issue.pull_request && startsWith(github.event.comment.body, '/backport')
steps:
- name: Extract Command
id: command
uses: xt0rted/slash-command-action@bf51f8f5f4ea3d58abc7eca58f77104182b23e88 # v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
command: backport
reaction: "true"
reaction-type: "eyes"
allow-edits: "false"
permission-level: write
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
fetch-depth: 0
- name: Open Backport PR
uses: zeebe-io/backport-action@3c06f323a58619da1e8522229ebc8d5de2633e46 # v4.3.0
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
github_workspace: ${{ github.workspace }}
fresh:
runs-on: ubuntu-22.04
if: startsWith(github.event.comment.body, '/fresh')
steps:
- name: Extract Command
id: command
uses: xt0rted/slash-command-action@bf51f8f5f4ea3d58abc7eca58f77104182b23e88 # v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
command: fresh
reaction: "true"
reaction-type: "eyes"
allow-edits: "false"
permission-level: read
- name: Handle Command
uses: actions-ecosystem/action-remove-labels@2ce5d41b4b6aa8503e285553f75ed56e0a40bae0 # v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
labels: stale
================================================
FILE: .github/workflows/renovate.yml
================================================
name: Renovate
on:
# Allows manual/automated trigger for debugging purposes
workflow_dispatch:
inputs:
logLevel:
description: "Renovate's log level"
required: true
default: "info"
type: string
schedule:
- cron: '0 8 * * *'
env:
LOG_LEVEL: "info"
jobs:
renovate:
runs-on: ubuntu-latest
if: |
!github.event.repository.fork &&
!github.event.pull_request.head.repo.fork
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
# Don't waste time starting Renovate if any preset is unparseable.
# renovate-config-validator only looks at the top-level file and does
# not recursively resolve local> presets, so we also syntax-check every
# renovate*.json5 with the json5 CLI.
- name: Validate Renovate preset syntax
run: |
for f in .github/renovate*.json5; do
npx --yes json5 "$f" > /dev/null
done
- name: Validate Renovate JSON
run: npx --yes --package renovate -- renovate-config-validator
- name: Get token
id: get-github-app-token
uses: actions/create-github-app-token@fee1f7d63c2ff003460e3d139729b119787bc349 # v2
with:
app-id: ${{ secrets.RENOVATE_GITHUB_APP_ID }}
private-key: ${{ secrets.RENOVATE_GITHUB_APP_PRIVATE_KEY }}
- name: Self-hosted Renovate
uses: renovatebot/github-action@eb932558ad942cccfd8211cf535f17ff183a9f74 # v46.1.9
env:
RENOVATE_REPOSITORIES: ${{ github.repository }}
# Use GitHub API to create commits
RENOVATE_PLATFORM_COMMIT: "true"
LOG_LEVEL: ${{ github.event.inputs.logLevel || env.LOG_LEVEL }}
RENOVATE_ALLOWED_POST_UPGRADE_COMMANDS: '["^nix .+", "^earthly .+"]'
with:
configurationFile: .github/renovate.json5
token: '${{ steps.get-github-app-token.outputs.token }}'
mount-docker-socket: true
docker-user: root
docker-cmd-file: .github/renovate-entrypoint.sh
================================================
FILE: .github/workflows/stale.yml
================================================
name: Stale Issues and PRs
on:
schedule:
# Process new stale issues once a day. Folks can /fresh for a fast un-stale
# per the commands workflow. Run at 1:15 mostly as a somewhat unique time to
# help correlate any issues with this workflow.
- cron: '15 1 * * *'
workflow_dispatch: {}
permissions:
issues: write
pull-requests: write
jobs:
stale:
runs-on: ubuntu-22.04
steps:
- uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 # v9
with:
# This action uses ~2 operations per stale issue per run to determine
# whether it's still stale. It also uses 2-3 operations to mark an issue
# stale or not. During steady state (no issues to mark stale, check, or
# close) we seem to use less than 10 operations with ~150 issues and PRs
# open.
#
# Our hourly rate-limit budget for all workflows that use GITHUB_TOKEN
# is 1,000 requests per the below docs.
# https://docs.github.com/en/rest/overview/resources-in-the-rest-api#requests-from-github-actions
operations-per-run: 100
days-before-stale: 90
days-before-close: 14
stale-issue-label: stale
exempt-issue-labels: exempt-from-stale
stale-issue-message: >
Crossplane does not currently have enough maintainers to address every
issue and pull request. This issue has been automatically marked as
`stale` because it has had no activity in the last 90 days. It will be
closed in 14 days if no further activity occurs. Leaving a comment
**starting with** `/fresh` will mark this issue as not stale.
stale-pr-label: stale
exempt-pr-labels: exempt-from-stale
stale-pr-message:
Crossplane does not currently have enough maintainers to address every
issue and pull request. This pull request has been automatically
marked as `stale` because it has had no activity in the last 90 days.
It will be closed in 14 days if no further activity occurs.
Adding a comment **starting with** `/fresh` will mark this PR as not stale.
================================================
FILE: .github/workflows/tag.yml
================================================
name: Tag
on:
workflow_dispatch:
inputs:
version:
description: 'Release version (e.g. v0.1.0)'
required: true
message:
description: 'Tag message'
required: true
jobs:
create-tag:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Create Tag
uses: negz/create-tag@39bae1e0932567a58c20dea5a1a0d18358503320 # v1
with:
version: ${{ github.event.inputs.version }}
message: ${{ github.event.inputs.message }}
token: ${{ secrets.GITHUB_TOKEN }}
================================================
FILE: .gitignore
================================================
/.cache
/.work
/_output
/config/
/config
cover.out
/vendor
/.vendor-new
# Nix build output
result
result-*
# gitlab example
# exclude files generate by running the example
external-dns-*.tgz
gitlab-*.tgz
gitlab-gcp.yaml
gitlab/
# ignore IDE folders
.vscode/
.idea/
================================================
FILE: .golangci.yml
================================================
version: "2"
output:
formats:
text:
path: stderr
linters:
default: all
disable:
# These are linters we'd like to enable, but that will be labor intensive to
# make existing code compliant.
- wrapcheck
- varnamelen
- testpackage
- paralleltest
- nilnil
- funcorder
# Below are linters that lint for things we don't value. Each entry below
# this line must have a comment explaining the rationale.
# These linters add whitespace in an attempt to make code more readable.
# This isn't a widely accepted Go best practice, and would be laborious to
# apply to existing code.
- wsl
- wsl_v5
- nlreturn
# Warns about uses of fmt.Sprintf that are less performant than alternatives
# such as string concatenation. We value readability more than performance
# unless performance is measured to be an issue.
- perfsprint
# This linter:
#
# 1. Requires errors.Is/errors.As to test equality.
# 2. Requires all errors be wrapped with fmt.Errorf specifically.
# 3. Disallows errors.New inline - requires package level errors.
#
# 1 is covered by other linters. 2 is covered by wrapcheck, which can also
# handle our use of crossplane-runtime's errors package. 3 is more strict
# than we need. Not every error needs to be tested for equality.
- err113
# These linters duplicate gocognit, but calculate complexity differently.
- gocyclo
- cyclop
- nestif
- funlen
- maintidx
# Enforces max line length. It's not idiomatic to enforce a strict limit on
# line length in Go. We'd prefer to lint for things that often cause long
# lines, like functions with too many parameters or long parameter names
# that duplicate their types.
- lll
# Warns about struct instantiations that don't specify every field. Could be
# useful in theory to catch fields that are accidentally omitted. Seems like
# it would have many more false positives than useful catches, though.
- exhaustruct
# Warns about TODO comments. The rationale being they should be issues
# instead. We're okay with using TODO to track minor cleanups for next time
# we touch a particular file.
- godox
# Warns about duplicated code blocks within the same file. Could be useful
# to prompt folks to think about whether code should be broken out into a
# function, but generally we're less worried about DRY and fine with a
# little copying. We don't want to give folks the impression that we require
# every duplicated code block to be factored out into a function.
- dupl
# Warns about returning interfaces rather than concrete types. We do think
# it's best to avoid returning interfaces where possible. However, at the
# time of writing enabling this linter would only catch the (many) cases
# where we must return an interface.
- ireturn
# Warns about returning named variables. We do think it's best to avoid
# returning named variables where possible. However, at the time of writing
# enabling this linter would only catch the (many) cases where returning
# named variables is useful to document what the variables are. For example
# we believe it makes sense to return (ready bool) rather than just (bool)
# to communicate what the bool means.
- nonamedreturns
# Warns about using magic numbers. We do think it's best to avoid magic
# numbers, but we should not be strict about it.
- mnd
# Warns about if err := Foo(); err != nil style error checks. Seems to go
# against idiomatic Go programming, which encourages this approach - e.g.
# to scope errors.
- noinlineerr
settings:
depguard:
rules:
no_third_party_test_libraries:
list-mode: lax
files:
- $test
deny:
- pkg: github.com/stretchr/testify
desc: See https://go.dev/wiki/TestComments#assert-libraries
- pkg: github.com/onsi/ginkgo
desc: See https://go.dev/wiki/TestComments#assert-libraries
- pkg: github.com/onsi/gomega
desc: See https://go.dev/wiki/TestComments#assert-libraries
dupl:
threshold: 100
errcheck:
check-type-assertions: false
check-blank: false
goconst:
min-len: 3
min-occurrences: 5
gocritic:
enabled-tags:
- performance
settings:
captLocal:
paramsOnly: true
rangeValCopy:
sizeThreshold: 32
govet:
disable:
- shadow
interfacebloat:
max: 5
lll:
tab-width: 1
nakedret:
max-func-lines: 30
nolintlint:
require-explanation: true
require-specific: true
prealloc:
simple: true
range-loops: true
for-loops: false
tagliatelle:
case:
rules:
json: goCamel
unparam:
check-exported: false
unused:
exported-fields-are-used: true
exclusions:
generated: lax
rules:
- linters:
- containedctx
- errcheck
- forcetypeassert
- gochecknoglobals
- gochecknoinits
- gocognit
- goconst
- gosec
- scopelint
- unparam
- embeddedstructfieldcheck
path: _test(ing)?\.go
- linters:
- gocritic
path: _test\.go
text: (unnamedResult|exitAfterDefer)
# It's idiomatic to register Kubernetes types with a package scoped
# SchemeBuilder using an init function.
- linters:
- gochecknoglobals
- gochecknoinits
path: apis/
# These are performance optimisations rather than style issues per se.
# They warn when function arguments or range values copy a lot of memory
# rather than using a pointer.
- linters:
- gocritic
text: '(hugeParam|rangeValCopy):'
# This "TestMain should call os.Exit to set exit code" warning is not clever
# enough to notice that we call a helper method that calls os.Exit.
- linters:
- staticcheck
text: 'SA3000:'
# This is a "potential hardcoded credentials" warning. It's triggered by
# any variable with 'secret' in the same, and thus hits a lot of false
# positives in Kubernetes land where a Secret is an object type.
- linters:
- gosec
text: 'G101:'
# This is an 'errors unhandled' warning that duplicates errcheck.
- linters:
- gosec
text: 'G104:'
# This is about implicit memory aliasing in a range loop.
# This is a false positive with Go v1.22 and above.
- linters:
- gosec
text: 'G601:'
# Some k8s dependencies do not have JSON tags on all fields in structs.
- linters:
- musttag
path: k8s.io/
# Various fields related to native patch and transform Composition are
# deprecated, but we can't drop support from Crossplane 1.x. We ignore the
# warnings globally instead of suppressing them with comments everywhere.
- linters:
- staticcheck
text: 'SA1019: .+ is deprecated: Use Composition Functions instead.'
# The runtime library defines deprecated types like LegacyManaged and
# LegacyProviderConfigUsage. Code in the runtime must use these types to
# support legacy resources, even though they're deprecated.
- linters:
- staticcheck
text: 'SA1019: resource\.Legacy.+ is deprecated:'
# Some shared structs in apis/common/v1 are moved to
# apis/common. To preserve a backward-compatible directory structure
# package had to be named common, which we suppress.
- linters:
- revive
text: "var-naming: avoid meaningless package names"
path: apis/common
# The errors package intentionally shadows the stdlib errors package
# to provide a drop-in compatible API with additional functionality.
- linters:
- revive
text: "var-naming: avoid package names that conflict with Go standard library package names"
path: pkg/errors/
paths:
- zz_generated\..+\.go$
- .+\.pb.go$
- third_party$
- builtin$
- examples$
issues:
max-issues-per-linter: 0
max-same-issues: 0
new: false
formatters:
enable:
- gci
- gofmt
- gofumpt
- goimports
settings:
gci:
sections:
- standard
- default
- prefix(github.com/crossplane/crossplane-runtime)
- blank
- dot
custom-order: true
gofmt:
simplify: true
exclusions:
generated: lax
paths:
- zz_generated\..+\.go$
- .+\.pb.go$
- third_party$
- builtin$
- examples$
================================================
FILE: CODEOWNERS
================================================
# This file controls automatic PR reviewer assignment. See the following docs:
#
# * https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
# * https://docs.github.com/en/organizations/organizing-members-into-teams/managing-code-review-settings-for-your-team
#
# The goal of this file is for most PRs to automatically and fairly have one
# maintainer and two reviewers set as PR reviewers. All maintainers have
# permission to approve and merge PRs, but reviewers do not. Most PRs should be
# reviewed by members of the reviewers group before being passed to a maintainer
# for final review.
#
# This in part depends on how the groups in this file are configured.
#
# @crossplane/steering-committee - Assigns 3 members. Admin perms to this repo.
# @crossplane/crossplane-maintainers - Assigns 1 member. Maintain perms to this repo.
# @crossplane/crossplane-reviewers - Assigns 2 members. Write perms to this repo.
#
# Where possible, prefer explicitly specifying a maintainer who is a subject
# matter expert for a particular part of the codebase rather than using the
# @crossplane/crossplane-maintainers group.
#
# See also OWNERS.md for governance details
# Fallback owners
* @crossplane/crossplane-maintainers
# Governance owners - steering committee
/README.md @crossplane/steering-committee
/OWNERS.md @crossplane/steering-committee
/LICENSE @crossplane/steering-committee
================================================
FILE: DCO
================================================
Developer Certificate of Origin
Version 1.1
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
660 York Street, Suite 102,
San Francisco, CA 94110 USA
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
================================================
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 2016 The Crossplane 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.
================================================
FILE: OWNERS.md
================================================
# Crossplane Maintainers
This page lists all active maintainers and reviewers for **this** repository.
Each repository in the [Crossplane organization](https://github.com/crossplane/)
will list their repository maintainers and reviewers in their own `OWNERS.md`
file.
Please see [GOVERNANCE.md](https://github.com/crossplane/crossplane/blob/main/GOVERNANCE.md)
for governance guidelines and responsibilities for maintainers, and reviewers.
See [CODEOWNERS](CODEOWNERS) for automatic PR assignment.
## Maintainers
* Nic Cope <negz@upbound.io> ([negz](https://github.com/negz))
* Bob Haddleton <bob.haddleton@nokia.com> ([bobh66](https://github.com/bobh66))
* Philippe Scorsolini <philippe.scorsolini@upbound.io> ([phisco](https://github.com/phisco))
* Jared Watts <jared@upbound.io> ([jbw976](https://github.com/jbw976))
* Adam Wolfe Gordon <adam.wolfegordon@upbound.io> ([adamwg](https://github.com/adamwg))
* Christopher Haar <christopher.haar@upbound.io> ([haarchri](https://github.com/haarchri))
## Reviewers
* Yury Tsarev <yury@upbound.io> ([ytsarev](https://github.com/ytsarev))
* Ezgi Demirel <ezgi@upbound.io> ([ezgidemirel](https://github.com/ezgidemirel))
* Max Blatt ([MisterMX](https://github.com/MisterMX))
## Emeritus maintainers
* Illya Chekrygin <illya.chekrygin@gmail.com> ([ichekrygin](https://github.com/ichekrygin))
* Hasan Turken <hasan@upbound.io> ([turkenh](https://github.com/turkenh))
================================================
FILE: PROJECT
================================================
version: "1"
domain: crossplane.io
repo: github.com/crossplane/crossplane-runtime
================================================
FILE: README.md
================================================
# crossplane-runtime
[](https://github.com/crossplane/crossplane-runtime/actions/workflows/ci.yml)  [](https://godoc.org/github.com/crossplane/crossplane-runtime)
## Overview
crossplane-runtime is a set of go libraries used to build Kubernetes controllers
in Crossplane and its related stacks. Take a look at our [developer guide] and
[API documentation] for help getting started with crossplane-runtime.
## Contributing
crossplane-runtime is a community driven project and we welcome contributions.
See the Crossplane [contributing] guidelines to get started.
## Report a Bug
For filing bugs, suggesting improvements, or requesting new features, please
open an [issue].
## Contact
Please use the following to reach members of the community:
- Slack: Join our [slack channel]
- Forums: [crossplane-dev]
- Twitter: [@crossplane_io]
- Email: [info@crossplane.io]
## Roadmap
crossplane-runtime goals and milestones are currently tracked in Crossplane's
[roadmap].
## Governance and Owners
crossplane-runtime is run according to the same [governance] and [ownership]
structure as the core Crossplane project.
## Code of Conduct
crossplane-runtime adheres to the same [code of conduct] as the core Crossplane
project.
## Licensing
crossplane-runtime is under the Apache 2.0 license.
[](https://app.fossa.io/projects/git%2Bgithub.com%2Fcrossplane%2Fcrossplane-runtime?ref=badge_large)
[developer guide]: https://github.com/crossplane/crossplane/tree/main/contributing
[API documentation]: https://godoc.org/github.com/crossplane/crossplane-runtime
[contributing]: https://github.com/crossplane/crossplane/blob/main/CONTRIBUTING.md
[issue]: https://github.com/crossplane/crossplane-runtime/issues
[slack channel]: https://slack.crossplane.io
[crossplane-dev]: https://groups.google.com/forum/#!forum/crossplane-dev
[@crossplane_io]: https://twitter.com/crossplane_io
[info@crossplane.io]: mailto:info@crossplane.io
[roadmap]: https://github.com/crossplane/crossplane/blob/main/ROADMAP.md
[governance]: https://github.com/crossplane/crossplane/blob/main/GOVERNANCE.md
[ownership]: https://github.com/crossplane/crossplane/blob/main/OWNERS.md
[code of conduct]: https://github.com/crossplane/crossplane/blob/main/CODE_OF_CONDUCT.md
================================================
FILE: RELEASE.md
================================================
# Release Process
## New Patch Release (vX.Y.Z)
In order to cut a new patch release from an existing release branch `release-X.Y`, follow these steps:
- Run the [Tag workflow][tag-workflow] on the `release-X.Y` branch with the proper release version, `vX.Y.Z`. Message suggested, but not required: `Release vX.Y.Z`.
- Draft the [new release notes], and share them with the rest of the team to ensure that all the required information is included.
- Publish the above release notes.
## New Minor Release (vX.Y.0)
In order to cut a new minor release, follow these steps:
- Create a new release branch `release-X.Y` from `main`, using the [GitHub UI][create-branch].
- Create and merge an empty commit to the `main` branch, if required to have it at least one commit ahead of the release branch.
- Run the [Tag workflow][tag-workflow] on the `main` branch with the release candidate tag for the next release, so `vX.<Y+1>.0-rc.0`.
- Run the [Tag workflow][tag-workflow] on the `release-X.Y` branch with the proper release version, `vX.Y.0`. Message suggested, but not required: `Release vX.Y.0`.
- Draft the [new release notes], and share them with the rest of the team to ensure that all the required information is included.
- Publish the above release notes.
<!-- Named Links -->
[create-branch]: https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-and-deleting-branches-within-your-repository
[new release notes]: https://github.com/crossplane/crossplane-runtime/releases/new
[tag-workflow]: https://github.com/crossplane/crossplane-runtime/actions/workflows/tag.yml
================================================
FILE: SECURITY.md
================================================
# Security Policy
## Reporting a Vulnerability
Instructions for reporting a vulnerability can be found on the
[crossplane repository](https://github.com/crossplane/crossplane/blob/main/SECURITY.md).
================================================
FILE: apis/apis.go
================================================
/*
Copyright 2019 The Crossplane 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 apis contains Kubernetes API groups.
package apis
================================================
FILE: apis/changelogs/proto/v1alpha1/changelog.pb.go
================================================
//
//Copyright 2024 The Crossplane Authors.
//Licensed under the Apache License, Version 2.0 (the "License");
//you may not use this file except in compliance with the License.
//You may obtain a copy of the License at
//http://www.apache.org/licenses/LICENSE-2.0
//Unless required by applicable law or agreed to in writing, software
//distributed under the License is distributed on an "AS IS" BASIS,
//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//See the License for the specific language governing permissions and
//limitations under the License.
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.36.10
// protoc (unknown)
// source: apis/changelogs/proto/v1alpha1/changelog.proto
// buf:lint:ignore PACKAGE_DIRECTORY_MATCH
package v1alpha1
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
structpb "google.golang.org/protobuf/types/known/structpb"
timestamppb "google.golang.org/protobuf/types/known/timestamppb"
reflect "reflect"
sync "sync"
unsafe "unsafe"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// OperationType represents the type of operation that was performed on a
// resource.
type OperationType int32
const (
OperationType_OPERATION_TYPE_UNSPECIFIED OperationType = 0
OperationType_OPERATION_TYPE_CREATE OperationType = 1
OperationType_OPERATION_TYPE_UPDATE OperationType = 2
OperationType_OPERATION_TYPE_DELETE OperationType = 3
)
// Enum value maps for OperationType.
var (
OperationType_name = map[int32]string{
0: "OPERATION_TYPE_UNSPECIFIED",
1: "OPERATION_TYPE_CREATE",
2: "OPERATION_TYPE_UPDATE",
3: "OPERATION_TYPE_DELETE",
}
OperationType_value = map[string]int32{
"OPERATION_TYPE_UNSPECIFIED": 0,
"OPERATION_TYPE_CREATE": 1,
"OPERATION_TYPE_UPDATE": 2,
"OPERATION_TYPE_DELETE": 3,
}
)
func (x OperationType) Enum() *OperationType {
p := new(OperationType)
*p = x
return p
}
func (x OperationType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (OperationType) Descriptor() protoreflect.EnumDescriptor {
return file_apis_changelogs_proto_v1alpha1_changelog_proto_enumTypes[0].Descriptor()
}
func (OperationType) Type() protoreflect.EnumType {
return &file_apis_changelogs_proto_v1alpha1_changelog_proto_enumTypes[0]
}
func (x OperationType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use OperationType.Descriptor instead.
func (OperationType) EnumDescriptor() ([]byte, []int) {
return file_apis_changelogs_proto_v1alpha1_changelog_proto_rawDescGZIP(), []int{0}
}
// SendChangeLogRequest represents a request to send a single change log entry.
type SendChangeLogRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
// The change log entry to send as part of this request.
Entry *ChangeLogEntry `protobuf:"bytes,1,opt,name=entry,proto3" json:"entry,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *SendChangeLogRequest) Reset() {
*x = SendChangeLogRequest{}
mi := &file_apis_changelogs_proto_v1alpha1_changelog_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *SendChangeLogRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SendChangeLogRequest) ProtoMessage() {}
func (x *SendChangeLogRequest) ProtoReflect() protoreflect.Message {
mi := &file_apis_changelogs_proto_v1alpha1_changelog_proto_msgTypes[0]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use SendChangeLogRequest.ProtoReflect.Descriptor instead.
func (*SendChangeLogRequest) Descriptor() ([]byte, []int) {
return file_apis_changelogs_proto_v1alpha1_changelog_proto_rawDescGZIP(), []int{0}
}
func (x *SendChangeLogRequest) GetEntry() *ChangeLogEntry {
if x != nil {
return x.Entry
}
return nil
}
// ChangeLogEntry represents a single change log entry, with detailed information
// about the resource that was changed.
type ChangeLogEntry struct {
state protoimpl.MessageState `protogen:"open.v1"`
// The timestamp at which the change occurred.
Timestamp *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
// The name and version of the provider that is making the change to the
// resource.
Provider string `protobuf:"bytes,2,opt,name=provider,proto3" json:"provider,omitempty"`
// The API version of the resource that was changed, e.g. Group/Version.
ApiVersion string `protobuf:"bytes,3,opt,name=api_version,json=apiVersion,proto3" json:"api_version,omitempty"`
// The kind of the resource that was changed.
Kind string `protobuf:"bytes,4,opt,name=kind,proto3" json:"kind,omitempty"`
// The name of the resource that was changed.
Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"`
// The external name of the resource that was changed.
ExternalName string `protobuf:"bytes,6,opt,name=external_name,json=externalName,proto3" json:"external_name,omitempty"`
// The type of operation that was performed on the resource, e.g. Create,
// Update, or Delete.
Operation OperationType `protobuf:"varint,7,opt,name=operation,proto3,enum=changelogs.proto.v1alpha1.OperationType" json:"operation,omitempty"`
// A full snapshot of the resource's state, as observed directly before the
// resource was changed.
Snapshot *structpb.Struct `protobuf:"bytes,8,opt,name=snapshot,proto3" json:"snapshot,omitempty"`
// An optional error message that describes any error encountered while
// performing the operation on the resource.
ErrorMessage *string `protobuf:"bytes,9,opt,name=error_message,json=errorMessage,proto3,oneof" json:"error_message,omitempty"`
// An optional additional details that can be provided for further context
// about the change.
AdditionalDetails map[string]string `protobuf:"bytes,10,rep,name=additional_details,json=additionalDetails,proto3" json:"additional_details,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *ChangeLogEntry) Reset() {
*x = ChangeLogEntry{}
mi := &file_apis_changelogs_proto_v1alpha1_changelog_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ChangeLogEntry) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ChangeLogEntry) ProtoMessage() {}
func (x *ChangeLogEntry) ProtoReflect() protoreflect.Message {
mi := &file_apis_changelogs_proto_v1alpha1_changelog_proto_msgTypes[1]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ChangeLogEntry.ProtoReflect.Descriptor instead.
func (*ChangeLogEntry) Descriptor() ([]byte, []int) {
return file_apis_changelogs_proto_v1alpha1_changelog_proto_rawDescGZIP(), []int{1}
}
func (x *ChangeLogEntry) GetTimestamp() *timestamppb.Timestamp {
if x != nil {
return x.Timestamp
}
return nil
}
func (x *ChangeLogEntry) GetProvider() string {
if x != nil {
return x.Provider
}
return ""
}
func (x *ChangeLogEntry) GetApiVersion() string {
if x != nil {
return x.ApiVersion
}
return ""
}
func (x *ChangeLogEntry) GetKind() string {
if x != nil {
return x.Kind
}
return ""
}
func (x *ChangeLogEntry) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *ChangeLogEntry) GetExternalName() string {
if x != nil {
return x.ExternalName
}
return ""
}
func (x *ChangeLogEntry) GetOperation() OperationType {
if x != nil {
return x.Operation
}
return OperationType_OPERATION_TYPE_UNSPECIFIED
}
func (x *ChangeLogEntry) GetSnapshot() *structpb.Struct {
if x != nil {
return x.Snapshot
}
return nil
}
func (x *ChangeLogEntry) GetErrorMessage() string {
if x != nil && x.ErrorMessage != nil {
return *x.ErrorMessage
}
return ""
}
func (x *ChangeLogEntry) GetAdditionalDetails() map[string]string {
if x != nil {
return x.AdditionalDetails
}
return nil
}
// SendChangeLogResponse is the response returned by the ChangeLogService after
// a change log entry is sent. Currently, this is an empty message as the only
// useful information expected to sent back at this time will be through errors.
type SendChangeLogResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *SendChangeLogResponse) Reset() {
*x = SendChangeLogResponse{}
mi := &file_apis_changelogs_proto_v1alpha1_changelog_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *SendChangeLogResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SendChangeLogResponse) ProtoMessage() {}
func (x *SendChangeLogResponse) ProtoReflect() protoreflect.Message {
mi := &file_apis_changelogs_proto_v1alpha1_changelog_proto_msgTypes[2]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use SendChangeLogResponse.ProtoReflect.Descriptor instead.
func (*SendChangeLogResponse) Descriptor() ([]byte, []int) {
return file_apis_changelogs_proto_v1alpha1_changelog_proto_rawDescGZIP(), []int{2}
}
var File_apis_changelogs_proto_v1alpha1_changelog_proto protoreflect.FileDescriptor
const file_apis_changelogs_proto_v1alpha1_changelog_proto_rawDesc = "" +
"\n" +
".apis/changelogs/proto/v1alpha1/changelog.proto\x12\x19changelogs.proto.v1alpha1\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"W\n" +
"\x14SendChangeLogRequest\x12?\n" +
"\x05entry\x18\x01 \x01(\v2).changelogs.proto.v1alpha1.ChangeLogEntryR\x05entry\"\xc4\x04\n" +
"\x0eChangeLogEntry\x128\n" +
"\ttimestamp\x18\x01 \x01(\v2\x1a.google.protobuf.TimestampR\ttimestamp\x12\x1a\n" +
"\bprovider\x18\x02 \x01(\tR\bprovider\x12\x1f\n" +
"\vapi_version\x18\x03 \x01(\tR\n" +
"apiVersion\x12\x12\n" +
"\x04kind\x18\x04 \x01(\tR\x04kind\x12\x12\n" +
"\x04name\x18\x05 \x01(\tR\x04name\x12#\n" +
"\rexternal_name\x18\x06 \x01(\tR\fexternalName\x12F\n" +
"\toperation\x18\a \x01(\x0e2(.changelogs.proto.v1alpha1.OperationTypeR\toperation\x123\n" +
"\bsnapshot\x18\b \x01(\v2\x17.google.protobuf.StructR\bsnapshot\x12(\n" +
"\rerror_message\x18\t \x01(\tH\x00R\ferrorMessage\x88\x01\x01\x12o\n" +
"\x12additional_details\x18\n" +
" \x03(\v2@.changelogs.proto.v1alpha1.ChangeLogEntry.AdditionalDetailsEntryR\x11additionalDetails\x1aD\n" +
"\x16AdditionalDetailsEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\x10\n" +
"\x0e_error_message\"\x17\n" +
"\x15SendChangeLogResponse*\x80\x01\n" +
"\rOperationType\x12\x1e\n" +
"\x1aOPERATION_TYPE_UNSPECIFIED\x10\x00\x12\x19\n" +
"\x15OPERATION_TYPE_CREATE\x10\x01\x12\x19\n" +
"\x15OPERATION_TYPE_UPDATE\x10\x02\x12\x19\n" +
"\x15OPERATION_TYPE_DELETE\x10\x032\x88\x01\n" +
"\x10ChangeLogService\x12t\n" +
"\rSendChangeLog\x12/.changelogs.proto.v1alpha1.SendChangeLogRequest\x1a0.changelogs.proto.v1alpha1.SendChangeLogResponse\"\x00BLZJgithub.com/crossplane/crossplane-runtime/v2/apis/changelogs/proto/v1alpha1b\x06proto3"
var (
file_apis_changelogs_proto_v1alpha1_changelog_proto_rawDescOnce sync.Once
file_apis_changelogs_proto_v1alpha1_changelog_proto_rawDescData []byte
)
func file_apis_changelogs_proto_v1alpha1_changelog_proto_rawDescGZIP() []byte {
file_apis_changelogs_proto_v1alpha1_changelog_proto_rawDescOnce.Do(func() {
file_apis_changelogs_proto_v1alpha1_changelog_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_apis_changelogs_proto_v1alpha1_changelog_proto_rawDesc), len(file_apis_changelogs_proto_v1alpha1_changelog_proto_rawDesc)))
})
return file_apis_changelogs_proto_v1alpha1_changelog_proto_rawDescData
}
var file_apis_changelogs_proto_v1alpha1_changelog_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_apis_changelogs_proto_v1alpha1_changelog_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
var file_apis_changelogs_proto_v1alpha1_changelog_proto_goTypes = []any{
(OperationType)(0), // 0: changelogs.proto.v1alpha1.OperationType
(*SendChangeLogRequest)(nil), // 1: changelogs.proto.v1alpha1.SendChangeLogRequest
(*ChangeLogEntry)(nil), // 2: changelogs.proto.v1alpha1.ChangeLogEntry
(*SendChangeLogResponse)(nil), // 3: changelogs.proto.v1alpha1.SendChangeLogResponse
nil, // 4: changelogs.proto.v1alpha1.ChangeLogEntry.AdditionalDetailsEntry
(*timestamppb.Timestamp)(nil), // 5: google.protobuf.Timestamp
(*structpb.Struct)(nil), // 6: google.protobuf.Struct
}
var file_apis_changelogs_proto_v1alpha1_changelog_proto_depIdxs = []int32{
2, // 0: changelogs.proto.v1alpha1.SendChangeLogRequest.entry:type_name -> changelogs.proto.v1alpha1.ChangeLogEntry
5, // 1: changelogs.proto.v1alpha1.ChangeLogEntry.timestamp:type_name -> google.protobuf.Timestamp
0, // 2: changelogs.proto.v1alpha1.ChangeLogEntry.operation:type_name -> changelogs.proto.v1alpha1.OperationType
6, // 3: changelogs.proto.v1alpha1.ChangeLogEntry.snapshot:type_name -> google.protobuf.Struct
4, // 4: changelogs.proto.v1alpha1.ChangeLogEntry.additional_details:type_name -> changelogs.proto.v1alpha1.ChangeLogEntry.AdditionalDetailsEntry
1, // 5: changelogs.proto.v1alpha1.ChangeLogService.SendChangeLog:input_type -> changelogs.proto.v1alpha1.SendChangeLogRequest
3, // 6: changelogs.proto.v1alpha1.ChangeLogService.SendChangeLog:output_type -> changelogs.proto.v1alpha1.SendChangeLogResponse
6, // [6:7] is the sub-list for method output_type
5, // [5:6] is the sub-list for method input_type
5, // [5:5] is the sub-list for extension type_name
5, // [5:5] is the sub-list for extension extendee
0, // [0:5] is the sub-list for field type_name
}
func init() { file_apis_changelogs_proto_v1alpha1_changelog_proto_init() }
func file_apis_changelogs_proto_v1alpha1_changelog_proto_init() {
if File_apis_changelogs_proto_v1alpha1_changelog_proto != nil {
return
}
file_apis_changelogs_proto_v1alpha1_changelog_proto_msgTypes[1].OneofWrappers = []any{}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_apis_changelogs_proto_v1alpha1_changelog_proto_rawDesc), len(file_apis_changelogs_proto_v1alpha1_changelog_proto_rawDesc)),
NumEnums: 1,
NumMessages: 4,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_apis_changelogs_proto_v1alpha1_changelog_proto_goTypes,
DependencyIndexes: file_apis_changelogs_proto_v1alpha1_changelog_proto_depIdxs,
EnumInfos: file_apis_changelogs_proto_v1alpha1_changelog_proto_enumTypes,
MessageInfos: file_apis_changelogs_proto_v1alpha1_changelog_proto_msgTypes,
}.Build()
File_apis_changelogs_proto_v1alpha1_changelog_proto = out.File
file_apis_changelogs_proto_v1alpha1_changelog_proto_goTypes = nil
file_apis_changelogs_proto_v1alpha1_changelog_proto_depIdxs = nil
}
================================================
FILE: apis/changelogs/proto/v1alpha1/changelog.proto
================================================
/*
Copyright 2024 The Crossplane 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.
*/
syntax = "proto3";
// buf:lint:ignore PACKAGE_DIRECTORY_MATCH
package changelogs.proto.v1alpha1;
import "google/protobuf/struct.proto";
import "google/protobuf/timestamp.proto";
option go_package = "github.com/crossplane/crossplane-runtime/v2/apis/changelogs/proto/v1alpha1";
// ChangeLogService is a service that provides the ability to send change log
// entries.
service ChangeLogService {
// SendChangeLog sends a change log entry to the change log service.
rpc SendChangeLog(SendChangeLogRequest) returns (SendChangeLogResponse) {}
}
// SendChangeLogRequest represents a request to send a single change log entry.
message SendChangeLogRequest {
// The change log entry to send as part of this request.
ChangeLogEntry entry = 1;
}
// ChangeLogEntry represents a single change log entry, with detailed information
// about the resource that was changed.
message ChangeLogEntry {
// The timestamp at which the change occurred.
google.protobuf.Timestamp timestamp = 1;
// The name and version of the provider that is making the change to the
// resource.
string provider = 2;
// The API version of the resource that was changed, e.g. Group/Version.
string api_version = 3;
// The kind of the resource that was changed.
string kind = 4;
// The name of the resource that was changed.
string name = 5;
// The external name of the resource that was changed.
string external_name = 6;
// The type of operation that was performed on the resource, e.g. Create,
// Update, or Delete.
OperationType operation = 7;
// A full snapshot of the resource's state, as observed directly before the
// resource was changed.
google.protobuf.Struct snapshot = 8;
// An optional error message that describes any error encountered while
// performing the operation on the resource.
optional string error_message = 9;
// An optional additional details that can be provided for further context
// about the change.
map<string, string> additional_details = 10;
}
// OperationType represents the type of operation that was performed on a
// resource.
enum OperationType {
OPERATION_TYPE_UNSPECIFIED = 0;
OPERATION_TYPE_CREATE = 1;
OPERATION_TYPE_UPDATE = 2;
OPERATION_TYPE_DELETE = 3;
}
// SendChangeLogResponse is the response returned by the ChangeLogService after
// a change log entry is sent. Currently, this is an empty message as the only
// useful information expected to sent back at this time will be through errors.
message SendChangeLogResponse {}
================================================
FILE: apis/changelogs/proto/v1alpha1/changelog_grpc.pb.go
================================================
//
//Copyright 2024 The Crossplane Authors.
//Licensed under the Apache License, Version 2.0 (the "License");
//you may not use this file except in compliance with the License.
//You may obtain a copy of the License at
//http://www.apache.org/licenses/LICENSE-2.0
//Unless required by applicable law or agreed to in writing, software
//distributed under the License is distributed on an "AS IS" BASIS,
//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//See the License for the specific language governing permissions and
//limitations under the License.
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.5.1
// - protoc (unknown)
// source: apis/changelogs/proto/v1alpha1/changelog.proto
// buf:lint:ignore PACKAGE_DIRECTORY_MATCH
package v1alpha1
import (
context "context"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
)
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
// Requires gRPC-Go v1.64.0 or later.
const _ = grpc.SupportPackageIsVersion9
const (
ChangeLogService_SendChangeLog_FullMethodName = "/changelogs.proto.v1alpha1.ChangeLogService/SendChangeLog"
)
// ChangeLogServiceClient is the client API for ChangeLogService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
//
// ChangeLogService is a service that provides the ability to send change log
// entries.
type ChangeLogServiceClient interface {
// SendChangeLog sends a change log entry to the change log service.
SendChangeLog(ctx context.Context, in *SendChangeLogRequest, opts ...grpc.CallOption) (*SendChangeLogResponse, error)
}
type changeLogServiceClient struct {
cc grpc.ClientConnInterface
}
func NewChangeLogServiceClient(cc grpc.ClientConnInterface) ChangeLogServiceClient {
return &changeLogServiceClient{cc}
}
func (c *changeLogServiceClient) SendChangeLog(ctx context.Context, in *SendChangeLogRequest, opts ...grpc.CallOption) (*SendChangeLogResponse, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(SendChangeLogResponse)
err := c.cc.Invoke(ctx, ChangeLogService_SendChangeLog_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
// ChangeLogServiceServer is the server API for ChangeLogService service.
// All implementations must embed UnimplementedChangeLogServiceServer
// for forward compatibility.
//
// ChangeLogService is a service that provides the ability to send change log
// entries.
type ChangeLogServiceServer interface {
// SendChangeLog sends a change log entry to the change log service.
SendChangeLog(context.Context, *SendChangeLogRequest) (*SendChangeLogResponse, error)
mustEmbedUnimplementedChangeLogServiceServer()
}
// UnimplementedChangeLogServiceServer must be embedded to have
// forward compatible implementations.
//
// NOTE: this should be embedded by value instead of pointer to avoid a nil
// pointer dereference when methods are called.
type UnimplementedChangeLogServiceServer struct{}
func (UnimplementedChangeLogServiceServer) SendChangeLog(context.Context, *SendChangeLogRequest) (*SendChangeLogResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method SendChangeLog not implemented")
}
func (UnimplementedChangeLogServiceServer) mustEmbedUnimplementedChangeLogServiceServer() {}
func (UnimplementedChangeLogServiceServer) testEmbeddedByValue() {}
// UnsafeChangeLogServiceServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to ChangeLogServiceServer will
// result in compilation errors.
type UnsafeChangeLogServiceServer interface {
mustEmbedUnimplementedChangeLogServiceServer()
}
func RegisterChangeLogServiceServer(s grpc.ServiceRegistrar, srv ChangeLogServiceServer) {
// If the following call pancis, it indicates UnimplementedChangeLogServiceServer was
// embedded by pointer and is nil. This will cause panics if an
// unimplemented method is ever invoked, so we test this at initialization
// time to prevent it from happening at runtime later due to I/O.
if t, ok := srv.(interface{ testEmbeddedByValue() }); ok {
t.testEmbeddedByValue()
}
s.RegisterService(&ChangeLogService_ServiceDesc, srv)
}
func _ChangeLogService_SendChangeLog_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(SendChangeLogRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ChangeLogServiceServer).SendChangeLog(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: ChangeLogService_SendChangeLog_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ChangeLogServiceServer).SendChangeLog(ctx, req.(*SendChangeLogRequest))
}
return interceptor(ctx, in, info, handler)
}
// ChangeLogService_ServiceDesc is the grpc.ServiceDesc for ChangeLogService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var ChangeLogService_ServiceDesc = grpc.ServiceDesc{
ServiceName: "changelogs.proto.v1alpha1.ChangeLogService",
HandlerType: (*ChangeLogServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "SendChangeLog",
Handler: _ChangeLogService_SendChangeLog_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "apis/changelogs/proto/v1alpha1/changelog.proto",
}
================================================
FILE: apis/pipelineinspector/proto/v1alpha1/pipeline_inspector.pb.go
================================================
//
//Copyright 2026 The Crossplane Authors.
//
//Licensed under the Apache License, Version 2.0 (the "License");
//you may not use this file except in compliance with the License.
//You may obtain a copy of the License at
//
//http://www.apache.org/licenses/LICENSE-2.0
//
//Unless required by applicable law or agreed to in writing, software
//distributed under the License is distributed on an "AS IS" BASIS,
//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//See the License for the specific language governing permissions and
//limitations under the License.
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.36.10
// protoc (unknown)
// source: apis/pipelineinspector/proto/v1alpha1/pipeline_inspector.proto
//buf:lint:ignore PACKAGE_DIRECTORY_MATCH
package v1alpha1
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
timestamppb "google.golang.org/protobuf/types/known/timestamppb"
reflect "reflect"
sync "sync"
unsafe "unsafe"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// EmitRequestRequest wraps the function request with correlation metadata.
type EmitRequestRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
// The original function request as JSON bytes (with credentials stripped for security).
// This allows consumers to parse the request without needing the proto schema.
Request []byte `protobuf:"bytes,1,opt,name=request,proto3" json:"request,omitempty"`
// Metadata for correlation and identification.
Meta *StepMeta `protobuf:"bytes,2,opt,name=meta,proto3" json:"meta,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *EmitRequestRequest) Reset() {
*x = EmitRequestRequest{}
mi := &file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *EmitRequestRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*EmitRequestRequest) ProtoMessage() {}
func (x *EmitRequestRequest) ProtoReflect() protoreflect.Message {
mi := &file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_msgTypes[0]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use EmitRequestRequest.ProtoReflect.Descriptor instead.
func (*EmitRequestRequest) Descriptor() ([]byte, []int) {
return file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_rawDescGZIP(), []int{0}
}
func (x *EmitRequestRequest) GetRequest() []byte {
if x != nil {
return x.Request
}
return nil
}
func (x *EmitRequestRequest) GetMeta() *StepMeta {
if x != nil {
return x.Meta
}
return nil
}
// EmitRequestResponse is empty - this is a fire-and-forget call.
type EmitRequestResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *EmitRequestResponse) Reset() {
*x = EmitRequestResponse{}
mi := &file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *EmitRequestResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*EmitRequestResponse) ProtoMessage() {}
func (x *EmitRequestResponse) ProtoReflect() protoreflect.Message {
mi := &file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_msgTypes[1]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use EmitRequestResponse.ProtoReflect.Descriptor instead.
func (*EmitRequestResponse) Descriptor() ([]byte, []int) {
return file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_rawDescGZIP(), []int{1}
}
// EmitResponseRequest wraps the function response with correlation metadata.
type EmitResponseRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
// The function response as JSON bytes, empty if there was an error.
// This allows consumers to parse the response without needing the proto schema.
Response []byte `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"`
// Error message if the function call failed.
Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`
// Metadata for correlation and identification.
// Must match the meta from the corresponding EmitRequest.
Meta *StepMeta `protobuf:"bytes,3,opt,name=meta,proto3" json:"meta,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *EmitResponseRequest) Reset() {
*x = EmitResponseRequest{}
mi := &file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *EmitResponseRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*EmitResponseRequest) ProtoMessage() {}
func (x *EmitResponseRequest) ProtoReflect() protoreflect.Message {
mi := &file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_msgTypes[2]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use EmitResponseRequest.ProtoReflect.Descriptor instead.
func (*EmitResponseRequest) Descriptor() ([]byte, []int) {
return file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_rawDescGZIP(), []int{2}
}
func (x *EmitResponseRequest) GetResponse() []byte {
if x != nil {
return x.Response
}
return nil
}
func (x *EmitResponseRequest) GetError() string {
if x != nil {
return x.Error
}
return ""
}
func (x *EmitResponseRequest) GetMeta() *StepMeta {
if x != nil {
return x.Meta
}
return nil
}
// EmitResponseResponse is empty - this is a fire-and-forget call.
type EmitResponseResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *EmitResponseResponse) Reset() {
*x = EmitResponseResponse{}
mi := &file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *EmitResponseResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*EmitResponseResponse) ProtoMessage() {}
func (x *EmitResponseResponse) ProtoReflect() protoreflect.Message {
mi := &file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_msgTypes[3]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use EmitResponseResponse.ProtoReflect.Descriptor instead.
func (*EmitResponseResponse) Descriptor() ([]byte, []int) {
return file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_rawDescGZIP(), []int{3}
}
// StepMeta contains metadata for correlating and identifying a function
// invocation within a pipeline execution.
type StepMeta struct {
state protoimpl.MessageState `protogen:"open.v1"`
// Timestamp when this step was executed.
Timestamp *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
// ID identifying the entire pipeline execution (all steps in one reconciliation).
// All function invocations within a single reconciliation share the same trace_id.
TraceId string `protobuf:"bytes,2,opt,name=trace_id,json=traceId,proto3" json:"trace_id,omitempty"`
// ID identifying this specific function invocation.
SpanId string `protobuf:"bytes,3,opt,name=span_id,json=spanId,proto3" json:"span_id,omitempty"`
// Zero-based index of this step in the function pipeline.
StepIndex int32 `protobuf:"varint,4,opt,name=step_index,json=stepIndex,proto3" json:"step_index,omitempty"`
// Name of this step in the function pipeline.
StepName string `protobuf:"bytes,5,opt,name=step_name,json=stepName,proto3" json:"step_name,omitempty"`
// Per-step counter incremented when a function requests additional resources and
// needs to be re-run, starting from 0.
Iteration int32 `protobuf:"varint,6,opt,name=iteration,proto3" json:"iteration,omitempty"`
// Name of the function being invoked.
FunctionName string `protobuf:"bytes,7,opt,name=function_name,json=functionName,proto3" json:"function_name,omitempty"`
// Only one of these can be set - identifies the pipeline context.
//
// Types that are valid to be assigned to Context:
//
// *StepMeta_OperationMeta
// *StepMeta_CompositionMeta
Context isStepMeta_Context `protobuf_oneof:"context"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *StepMeta) Reset() {
*x = StepMeta{}
mi := &file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *StepMeta) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*StepMeta) ProtoMessage() {}
func (x *StepMeta) ProtoReflect() protoreflect.Message {
mi := &file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_msgTypes[4]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use StepMeta.ProtoReflect.Descriptor instead.
func (*StepMeta) Descriptor() ([]byte, []int) {
return file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_rawDescGZIP(), []int{4}
}
func (x *StepMeta) GetTimestamp() *timestamppb.Timestamp {
if x != nil {
return x.Timestamp
}
return nil
}
func (x *StepMeta) GetTraceId() string {
if x != nil {
return x.TraceId
}
return ""
}
func (x *StepMeta) GetSpanId() string {
if x != nil {
return x.SpanId
}
return ""
}
func (x *StepMeta) GetStepIndex() int32 {
if x != nil {
return x.StepIndex
}
return 0
}
func (x *StepMeta) GetStepName() string {
if x != nil {
return x.StepName
}
return ""
}
func (x *StepMeta) GetIteration() int32 {
if x != nil {
return x.Iteration
}
return 0
}
func (x *StepMeta) GetFunctionName() string {
if x != nil {
return x.FunctionName
}
return ""
}
func (x *StepMeta) GetContext() isStepMeta_Context {
if x != nil {
return x.Context
}
return nil
}
func (x *StepMeta) GetOperationMeta() *OperationMeta {
if x != nil {
if x, ok := x.Context.(*StepMeta_OperationMeta); ok {
return x.OperationMeta
}
}
return nil
}
func (x *StepMeta) GetCompositionMeta() *CompositionMeta {
if x != nil {
if x, ok := x.Context.(*StepMeta_CompositionMeta); ok {
return x.CompositionMeta
}
}
return nil
}
type isStepMeta_Context interface {
isStepMeta_Context()
}
type StepMeta_OperationMeta struct {
OperationMeta *OperationMeta `protobuf:"bytes,8,opt,name=operation_meta,json=operationMeta,proto3,oneof"`
}
type StepMeta_CompositionMeta struct {
CompositionMeta *CompositionMeta `protobuf:"bytes,9,opt,name=composition_meta,json=compositionMeta,proto3,oneof"`
}
func (*StepMeta_OperationMeta) isStepMeta_Context() {}
func (*StepMeta_CompositionMeta) isStepMeta_Context() {}
// CompositionMeta contains metadata about the Composition and Composite Resource
type CompositionMeta struct {
state protoimpl.MessageState `protogen:"open.v1"`
// Name of the Composition defining this pipeline.
CompositionName string `protobuf:"bytes,1,opt,name=composition_name,json=compositionName,proto3" json:"composition_name,omitempty"`
// UID of the composite resource being reconciled.
CompositeResourceUid string `protobuf:"bytes,2,opt,name=composite_resource_uid,json=compositeResourceUid,proto3" json:"composite_resource_uid,omitempty"`
// Name of the composite resource being reconciled.
CompositeResourceName string `protobuf:"bytes,3,opt,name=composite_resource_name,json=compositeResourceName,proto3" json:"composite_resource_name,omitempty"`
// Namespace of the composite resource (empty for cluster-scoped resources).
CompositeResourceNamespace string `protobuf:"bytes,4,opt,name=composite_resource_namespace,json=compositeResourceNamespace,proto3" json:"composite_resource_namespace,omitempty"`
// API version of the composite resource (e.g., "example.org/v1").
CompositeResourceApiVersion string `protobuf:"bytes,5,opt,name=composite_resource_api_version,json=compositeResourceApiVersion,proto3" json:"composite_resource_api_version,omitempty"`
// Kind of the composite resource (e.g., "XDatabase").
CompositeResourceKind string `protobuf:"bytes,6,opt,name=composite_resource_kind,json=compositeResourceKind,proto3" json:"composite_resource_kind,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *CompositionMeta) Reset() {
*x = CompositionMeta{}
mi := &file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *CompositionMeta) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CompositionMeta) ProtoMessage() {}
func (x *CompositionMeta) ProtoReflect() protoreflect.Message {
mi := &file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_msgTypes[5]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CompositionMeta.ProtoReflect.Descriptor instead.
func (*CompositionMeta) Descriptor() ([]byte, []int) {
return file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_rawDescGZIP(), []int{5}
}
func (x *CompositionMeta) GetCompositionName() string {
if x != nil {
return x.CompositionName
}
return ""
}
func (x *CompositionMeta) GetCompositeResourceUid() string {
if x != nil {
return x.CompositeResourceUid
}
return ""
}
func (x *CompositionMeta) GetCompositeResourceName() string {
if x != nil {
return x.CompositeResourceName
}
return ""
}
func (x *CompositionMeta) GetCompositeResourceNamespace() string {
if x != nil {
return x.CompositeResourceNamespace
}
return ""
}
func (x *CompositionMeta) GetCompositeResourceApiVersion() string {
if x != nil {
return x.CompositeResourceApiVersion
}
return ""
}
func (x *CompositionMeta) GetCompositeResourceKind() string {
if x != nil {
return x.CompositeResourceKind
}
return ""
}
// OperationMeta contains metadata about the Operation being performed.
type OperationMeta struct {
state protoimpl.MessageState `protogen:"open.v1"`
// Name of the Operation.
OperationName string `protobuf:"bytes,1,opt,name=operation_name,json=operationName,proto3" json:"operation_name,omitempty"`
// UID of the Operation.
OperationUid string `protobuf:"bytes,2,opt,name=operation_uid,json=operationUid,proto3" json:"operation_uid,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *OperationMeta) Reset() {
*x = OperationMeta{}
mi := &file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *OperationMeta) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*OperationMeta) ProtoMessage() {}
func (x *OperationMeta) ProtoReflect() protoreflect.Message {
mi := &file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_msgTypes[6]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use OperationMeta.ProtoReflect.Descriptor instead.
func (*OperationMeta) Descriptor() ([]byte, []int) {
return file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_rawDescGZIP(), []int{6}
}
func (x *OperationMeta) GetOperationName() string {
if x != nil {
return x.OperationName
}
return ""
}
func (x *OperationMeta) GetOperationUid() string {
if x != nil {
return x.OperationUid
}
return ""
}
var File_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto protoreflect.FileDescriptor
const file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_rawDesc = "" +
"\n" +
">apis/pipelineinspector/proto/v1alpha1/pipeline_inspector.proto\x12\x1ccrossplane.pipeline.v1alpha1\x1a\x1fgoogle/protobuf/timestamp.proto\"j\n" +
"\x12EmitRequestRequest\x12\x18\n" +
"\arequest\x18\x01 \x01(\fR\arequest\x12:\n" +
"\x04meta\x18\x02 \x01(\v2&.crossplane.pipeline.v1alpha1.StepMetaR\x04meta\"\x15\n" +
"\x13EmitRequestResponse\"\x83\x01\n" +
"\x13EmitResponseRequest\x12\x1a\n" +
"\bresponse\x18\x01 \x01(\fR\bresponse\x12\x14\n" +
"\x05error\x18\x02 \x01(\tR\x05error\x12:\n" +
"\x04meta\x18\x03 \x01(\v2&.crossplane.pipeline.v1alpha1.StepMetaR\x04meta\"\x16\n" +
"\x14EmitResponseResponse\"\xb4\x03\n" +
"\bStepMeta\x128\n" +
"\ttimestamp\x18\x01 \x01(\v2\x1a.google.protobuf.TimestampR\ttimestamp\x12\x19\n" +
"\btrace_id\x18\x02 \x01(\tR\atraceId\x12\x17\n" +
"\aspan_id\x18\x03 \x01(\tR\x06spanId\x12\x1d\n" +
"\n" +
"step_index\x18\x04 \x01(\x05R\tstepIndex\x12\x1b\n" +
"\tstep_name\x18\x05 \x01(\tR\bstepName\x12\x1c\n" +
"\titeration\x18\x06 \x01(\x05R\titeration\x12#\n" +
"\rfunction_name\x18\a \x01(\tR\ffunctionName\x12T\n" +
"\x0eoperation_meta\x18\b \x01(\v2+.crossplane.pipeline.v1alpha1.OperationMetaH\x00R\roperationMeta\x12Z\n" +
"\x10composition_meta\x18\t \x01(\v2-.crossplane.pipeline.v1alpha1.CompositionMetaH\x00R\x0fcompositionMetaB\t\n" +
"\acontext\"\xe9\x02\n" +
"\x0fCompositionMeta\x12)\n" +
"\x10composition_name\x18\x01 \x01(\tR\x0fcompositionName\x124\n" +
"\x16composite_resource_uid\x18\x02 \x01(\tR\x14compositeResourceUid\x126\n" +
"\x17composite_resource_name\x18\x03 \x01(\tR\x15compositeResourceName\x12@\n" +
"\x1ccomposite_resource_namespace\x18\x04 \x01(\tR\x1acompositeResourceNamespace\x12C\n" +
"\x1ecomposite_resource_api_version\x18\x05 \x01(\tR\x1bcompositeResourceApiVersion\x126\n" +
"\x17composite_resource_kind\x18\x06 \x01(\tR\x15compositeResourceKind\"[\n" +
"\rOperationMeta\x12%\n" +
"\x0eoperation_name\x18\x01 \x01(\tR\roperationName\x12#\n" +
"\roperation_uid\x18\x02 \x01(\tR\foperationUid2\x89\x02\n" +
"\x18PipelineInspectorService\x12t\n" +
"\vEmitRequest\x120.crossplane.pipeline.v1alpha1.EmitRequestRequest\x1a1.crossplane.pipeline.v1alpha1.EmitRequestResponse\"\x00\x12w\n" +
"\fEmitResponse\x121.crossplane.pipeline.v1alpha1.EmitResponseRequest\x1a2.crossplane.pipeline.v1alpha1.EmitResponseResponse\"\x00BSZQgithub.com/crossplane/crossplane-runtime/v2/apis/pipelineinspector/proto/v1alpha1b\x06proto3"
var (
file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_rawDescOnce sync.Once
file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_rawDescData []byte
)
func file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_rawDescGZIP() []byte {
file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_rawDescOnce.Do(func() {
file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_rawDesc), len(file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_rawDesc)))
})
return file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_rawDescData
}
var file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
var file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_goTypes = []any{
(*EmitRequestRequest)(nil), // 0: crossplane.pipeline.v1alpha1.EmitRequestRequest
(*EmitRequestResponse)(nil), // 1: crossplane.pipeline.v1alpha1.EmitRequestResponse
(*EmitResponseRequest)(nil), // 2: crossplane.pipeline.v1alpha1.EmitResponseRequest
(*EmitResponseResponse)(nil), // 3: crossplane.pipeline.v1alpha1.EmitResponseResponse
(*StepMeta)(nil), // 4: crossplane.pipeline.v1alpha1.StepMeta
(*CompositionMeta)(nil), // 5: crossplane.pipeline.v1alpha1.CompositionMeta
(*OperationMeta)(nil), // 6: crossplane.pipeline.v1alpha1.OperationMeta
(*timestamppb.Timestamp)(nil), // 7: google.protobuf.Timestamp
}
var file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_depIdxs = []int32{
4, // 0: crossplane.pipeline.v1alpha1.EmitRequestRequest.meta:type_name -> crossplane.pipeline.v1alpha1.StepMeta
4, // 1: crossplane.pipeline.v1alpha1.EmitResponseRequest.meta:type_name -> crossplane.pipeline.v1alpha1.StepMeta
7, // 2: crossplane.pipeline.v1alpha1.StepMeta.timestamp:type_name -> google.protobuf.Timestamp
6, // 3: crossplane.pipeline.v1alpha1.StepMeta.operation_meta:type_name -> crossplane.pipeline.v1alpha1.OperationMeta
5, // 4: crossplane.pipeline.v1alpha1.StepMeta.composition_meta:type_name -> crossplane.pipeline.v1alpha1.CompositionMeta
0, // 5: crossplane.pipeline.v1alpha1.PipelineInspectorService.EmitRequest:input_type -> crossplane.pipeline.v1alpha1.EmitRequestRequest
2, // 6: crossplane.pipeline.v1alpha1.PipelineInspectorService.EmitResponse:input_type -> crossplane.pipeline.v1alpha1.EmitResponseRequest
1, // 7: crossplane.pipeline.v1alpha1.PipelineInspectorService.EmitRequest:output_type -> crossplane.pipeline.v1alpha1.EmitRequestResponse
3, // 8: crossplane.pipeline.v1alpha1.PipelineInspectorService.EmitResponse:output_type -> crossplane.pipeline.v1alpha1.EmitResponseResponse
7, // [7:9] is the sub-list for method output_type
5, // [5:7] is the sub-list for method input_type
5, // [5:5] is the sub-list for extension type_name
5, // [5:5] is the sub-list for extension extendee
0, // [0:5] is the sub-list for field type_name
}
func init() { file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_init() }
func file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_init() {
if File_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto != nil {
return
}
file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_msgTypes[4].OneofWrappers = []any{
(*StepMeta_OperationMeta)(nil),
(*StepMeta_CompositionMeta)(nil),
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_rawDesc), len(file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_rawDesc)),
NumEnums: 0,
NumMessages: 7,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_goTypes,
DependencyIndexes: file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_depIdxs,
MessageInfos: file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_msgTypes,
}.Build()
File_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto = out.File
file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_goTypes = nil
file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_depIdxs = nil
}
================================================
FILE: apis/pipelineinspector/proto/v1alpha1/pipeline_inspector.proto
================================================
/*
Copyright 2026 The Crossplane 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.
*/
syntax = "proto3";
//buf:lint:ignore PACKAGE_DIRECTORY_MATCH
package crossplane.pipeline.v1alpha1;
import "google/protobuf/timestamp.proto";
option go_package = "github.com/crossplane/crossplane-runtime/v2/apis/pipelineinspector/proto/v1alpha1";
// PipelineInspectorService receives pipeline execution data from Crossplane.
// This service is implemented by a sidecar that captures function pipeline
// execution data for debugging and observability purposes.
service PipelineInspectorService {
// EmitRequest receives the function request before execution.
// This is a fire-and-forget call; errors do not affect pipeline execution.
rpc EmitRequest(EmitRequestRequest) returns (EmitRequestResponse) {}
// EmitResponse receives the function response after execution.
// This is a fire-and-forget call; errors do not affect pipeline execution.
rpc EmitResponse(EmitResponseRequest) returns (EmitResponseResponse) {}
}
// EmitRequestRequest wraps the function request with correlation metadata.
message EmitRequestRequest {
// The original function request as JSON bytes (with credentials stripped for security).
// This allows consumers to parse the request without needing the proto schema.
bytes request = 1;
// Metadata for correlation and identification.
StepMeta meta = 2;
}
// EmitRequestResponse is empty - this is a fire-and-forget call.
message EmitRequestResponse {}
// EmitResponseRequest wraps the function response with correlation metadata.
message EmitResponseRequest {
// The function response as JSON bytes, empty if there was an error.
// This allows consumers to parse the response without needing the proto schema.
bytes response = 1;
// Error message if the function call failed.
string error = 2;
// Metadata for correlation and identification.
// Must match the meta from the corresponding EmitRequest.
StepMeta meta = 3;
}
// EmitResponseResponse is empty - this is a fire-and-forget call.
message EmitResponseResponse {}
// StepMeta contains metadata for correlating and identifying a function
// invocation within a pipeline execution.
message StepMeta {
// Timestamp when this step was executed.
google.protobuf.Timestamp timestamp = 1;
// ID identifying the entire pipeline execution (all steps in one reconciliation).
// All function invocations within a single reconciliation share the same trace_id.
string trace_id = 2;
// ID identifying this specific function invocation.
string span_id = 3;
// Zero-based index of this step in the function pipeline.
int32 step_index = 4;
// Name of this step in the function pipeline.
string step_name = 5;
// Per-step counter incremented when a function requests additional resources and
// needs to be re-run, starting from 0.
int32 iteration = 6;
// Name of the function being invoked.
string function_name = 7;
// Only one of these can be set - identifies the pipeline context.
oneof context {
OperationMeta operation_meta = 8;
CompositionMeta composition_meta = 9;
}
}
// CompositionMeta contains metadata about the Composition and Composite Resource
message CompositionMeta {
// Name of the Composition defining this pipeline.
string composition_name = 1;
// UID of the composite resource being reconciled.
string composite_resource_uid = 2;
// Name of the composite resource being reconciled.
string composite_resource_name = 3;
// Namespace of the composite resource (empty for cluster-scoped resources).
string composite_resource_namespace = 4;
// API version of the composite resource (e.g., "example.org/v1").
string composite_resource_api_version = 5;
// Kind of the composite resource (e.g., "XDatabase").
string composite_resource_kind = 6;
}
// OperationMeta contains metadata about the Operation being performed.
message OperationMeta {
// Name of the Operation.
string operation_name = 1;
// UID of the Operation.
string operation_uid = 2;
}
================================================
FILE: apis/pipelineinspector/proto/v1alpha1/pipeline_inspector_grpc.pb.go
================================================
//
//Copyright 2026 The Crossplane Authors.
//
//Licensed under the Apache License, Version 2.0 (the "License");
//you may not use this file except in compliance with the License.
//You may obtain a copy of the License at
//
//http://www.apache.org/licenses/LICENSE-2.0
//
//Unless required by applicable law or agreed to in writing, software
//distributed under the License is distributed on an "AS IS" BASIS,
//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//See the License for the specific language governing permissions and
//limitations under the License.
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.5.1
// - protoc (unknown)
// source: apis/pipelineinspector/proto/v1alpha1/pipeline_inspector.proto
//buf:lint:ignore PACKAGE_DIRECTORY_MATCH
package v1alpha1
import (
context "context"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
)
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
// Requires gRPC-Go v1.64.0 or later.
const _ = grpc.SupportPackageIsVersion9
const (
PipelineInspectorService_EmitRequest_FullMethodName = "/crossplane.pipeline.v1alpha1.PipelineInspectorService/EmitRequest"
PipelineInspectorService_EmitResponse_FullMethodName = "/crossplane.pipeline.v1alpha1.PipelineInspectorService/EmitResponse"
)
// PipelineInspectorServiceClient is the client API for PipelineInspectorService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
//
// PipelineInspectorService receives pipeline execution data from Crossplane.
// This service is implemented by a sidecar that captures function pipeline
// execution data for debugging and observability purposes.
type PipelineInspectorServiceClient interface {
// EmitRequest receives the function request before execution.
// This is a fire-and-forget call; errors do not affect pipeline execution.
EmitRequest(ctx context.Context, in *EmitRequestRequest, opts ...grpc.CallOption) (*EmitRequestResponse, error)
// EmitResponse receives the function response after execution.
// This is a fire-and-forget call; errors do not affect pipeline execution.
EmitResponse(ctx context.Context, in *EmitResponseRequest, opts ...grpc.CallOption) (*EmitResponseResponse, error)
}
type pipelineInspectorServiceClient struct {
cc grpc.ClientConnInterface
}
func NewPipelineInspectorServiceClient(cc grpc.ClientConnInterface) PipelineInspectorServiceClient {
return &pipelineInspectorServiceClient{cc}
}
func (c *pipelineInspectorServiceClient) EmitRequest(ctx context.Context, in *EmitRequestRequest, opts ...grpc.CallOption) (*EmitRequestResponse, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(EmitRequestResponse)
err := c.cc.Invoke(ctx, PipelineInspectorService_EmitRequest_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *pipelineInspectorServiceClient) EmitResponse(ctx context.Context, in *EmitResponseRequest, opts ...grpc.CallOption) (*EmitResponseResponse, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(EmitResponseResponse)
err := c.cc.Invoke(ctx, PipelineInspectorService_EmitResponse_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
// PipelineInspectorServiceServer is the server API for PipelineInspectorService service.
// All implementations must embed UnimplementedPipelineInspectorServiceServer
// for forward compatibility.
//
// PipelineInspectorService receives pipeline execution data from Crossplane.
// This service is implemented by a sidecar that captures function pipeline
// execution data for debugging and observability purposes.
type PipelineInspectorServiceServer interface {
// EmitRequest receives the function request before execution.
// This is a fire-and-forget call; errors do not affect pipeline execution.
EmitRequest(context.Context, *EmitRequestRequest) (*EmitRequestResponse, error)
// EmitResponse receives the function response after execution.
// This is a fire-and-forget call; errors do not affect pipeline execution.
EmitResponse(context.Context, *EmitResponseRequest) (*EmitResponseResponse, error)
mustEmbedUnimplementedPipelineInspectorServiceServer()
}
// UnimplementedPipelineInspectorServiceServer must be embedded to have
// forward compatible implementations.
//
// NOTE: this should be embedded by value instead of pointer to avoid a nil
// pointer dereference when methods are called.
type UnimplementedPipelineInspectorServiceServer struct{}
func (UnimplementedPipelineInspectorServiceServer) EmitRequest(context.Context, *EmitRequestRequest) (*EmitRequestResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method EmitRequest not implemented")
}
func (UnimplementedPipelineInspectorServiceServer) EmitResponse(context.Context, *EmitResponseRequest) (*EmitResponseResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method EmitResponse not implemented")
}
func (UnimplementedPipelineInspectorServiceServer) mustEmbedUnimplementedPipelineInspectorServiceServer() {
}
func (UnimplementedPipelineInspectorServiceServer) testEmbeddedByValue() {}
// UnsafePipelineInspectorServiceServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to PipelineInspectorServiceServer will
// result in compilation errors.
type UnsafePipelineInspectorServiceServer interface {
mustEmbedUnimplementedPipelineInspectorServiceServer()
}
func RegisterPipelineInspectorServiceServer(s grpc.ServiceRegistrar, srv PipelineInspectorServiceServer) {
// If the following call pancis, it indicates UnimplementedPipelineInspectorServiceServer was
// embedded by pointer and is nil. This will cause panics if an
// unimplemented method is ever invoked, so we test this at initialization
// time to prevent it from happening at runtime later due to I/O.
if t, ok := srv.(interface{ testEmbeddedByValue() }); ok {
t.testEmbeddedByValue()
}
s.RegisterService(&PipelineInspectorService_ServiceDesc, srv)
}
func _PipelineInspectorService_EmitRequest_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(EmitRequestRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(PipelineInspectorServiceServer).EmitRequest(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: PipelineInspectorService_EmitRequest_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(PipelineInspectorServiceServer).EmitRequest(ctx, req.(*EmitRequestRequest))
}
return interceptor(ctx, in, info, handler)
}
func _PipelineInspectorService_EmitResponse_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(EmitResponseRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(PipelineInspectorServiceServer).EmitResponse(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: PipelineInspectorService_EmitResponse_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(PipelineInspectorServiceServer).EmitResponse(ctx, req.(*EmitResponseRequest))
}
return interceptor(ctx, in, info, handler)
}
// PipelineInspectorService_ServiceDesc is the grpc.ServiceDesc for PipelineInspectorService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var PipelineInspectorService_ServiceDesc = grpc.ServiceDesc{
ServiceName: "crossplane.pipeline.v1alpha1.PipelineInspectorService",
HandlerType: (*PipelineInspectorServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "EmitRequest",
Handler: _PipelineInspectorService_EmitRequest_Handler,
},
{
MethodName: "EmitResponse",
Handler: _PipelineInspectorService_EmitResponse_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "apis/pipelineinspector/proto/v1alpha1/pipeline_inspector.proto",
}
================================================
FILE: apis/proto/v1alpha1/ess.pb.go
================================================
//
//Copyright 2023 The Crossplane Authors.
//Licensed under the Apache License, Version 2.0 (the "License");
//you may not use this file except in compliance with the License.
//You may obtain a copy of the License at
//http://www.apache.org/licenses/LICENSE-2.0
//Unless required by applicable law or agreed to in writing, software
//distributed under the License is distributed on an "AS IS" BASIS,
//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//See the License for the specific language governing permissions and
//limitations under the License.
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.36.10
// protoc (unknown)
// source: apis/proto/v1alpha1/ess.proto
// buf:lint:ignore PACKAGE_DIRECTORY_MATCH
package v1alpha1
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
unsafe "unsafe"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// ConfigReference is used to refer a StoreConfig object.
type ConfigReference struct {
state protoimpl.MessageState `protogen:"open.v1"`
ApiVersion string `protobuf:"bytes,1,opt,name=api_version,json=apiVersion,proto3" json:"api_version,omitempty"`
Kind string `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty"`
Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *ConfigReference) Reset() {
*x = ConfigReference{}
mi := &file_apis_proto_v1alpha1_ess_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ConfigReference) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ConfigReference) ProtoMessage() {}
func (x *ConfigReference) ProtoReflect() protoreflect.Message {
mi := &file_apis_proto_v1alpha1_ess_proto_msgTypes[0]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ConfigReference.ProtoReflect.Descriptor instead.
func (*ConfigReference) Descriptor() ([]byte, []int) {
return file_apis_proto_v1alpha1_ess_proto_rawDescGZIP(), []int{0}
}
func (x *ConfigReference) GetApiVersion() string {
if x != nil {
return x.ApiVersion
}
return ""
}
func (x *ConfigReference) GetKind() string {
if x != nil {
return x.Kind
}
return ""
}
func (x *ConfigReference) GetName() string {
if x != nil {
return x.Name
}
return ""
}
// Secret defines the structure of a secret.
type Secret struct {
state protoimpl.MessageState `protogen:"open.v1"`
ScopedName string `protobuf:"bytes,1,opt,name=scoped_name,json=scopedName,proto3" json:"scoped_name,omitempty"`
Metadata map[string]string `protobuf:"bytes,2,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
Data map[string][]byte `protobuf:"bytes,3,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *Secret) Reset() {
*x = Secret{}
mi := &file_apis_proto_v1alpha1_ess_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Secret) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Secret) ProtoMessage() {}
func (x *Secret) ProtoReflect() protoreflect.Message {
mi := &file_apis_proto_v1alpha1_ess_proto_msgTypes[1]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Secret.ProtoReflect.Descriptor instead.
func (*Secret) Descriptor() ([]byte, []int) {
return file_apis_proto_v1alpha1_ess_proto_rawDescGZIP(), []int{1}
}
func (x *Secret) GetScopedName() string {
if x != nil {
return x.ScopedName
}
return ""
}
func (x *Secret) GetMetadata() map[string]string {
if x != nil {
return x.Metadata
}
return nil
}
func (x *Secret) GetData() map[string][]byte {
if x != nil {
return x.Data
}
return nil
}
// GetSecretRequest requests secret from the secret store.
type GetSecretRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
Config *ConfigReference `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
Secret *Secret `protobuf:"bytes,2,opt,name=secret,proto3" json:"secret,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *GetSecretRequest) Reset() {
*x = GetSecretRequest{}
mi := &file_apis_proto_v1alpha1_ess_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *GetSecretRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetSecretRequest) ProtoMessage() {}
func (x *GetSecretRequest) ProtoReflect() protoreflect.Message {
mi := &file_apis_proto_v1alpha1_ess_proto_msgTypes[2]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use GetSecretRequest.ProtoReflect.Descriptor instead.
func (*GetSecretRequest) Descriptor() ([]byte, []int) {
return file_apis_proto_v1alpha1_ess_proto_rawDescGZIP(), []int{2}
}
func (x *GetSecretRequest) GetConfig() *ConfigReference {
if x != nil {
return x.Config
}
return nil
}
func (x *GetSecretRequest) GetSecret() *Secret {
if x != nil {
return x.Secret
}
return nil
}
// GetSecretResponse returns the secret from the secret store.
type GetSecretResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
Secret *Secret `protobuf:"bytes,1,opt,name=secret,proto3" json:"secret,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *GetSecretResponse) Reset() {
*x = GetSecretResponse{}
mi := &file_apis_proto_v1alpha1_ess_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *GetSecretResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetSecretResponse) ProtoMessage() {}
func (x *GetSecretResponse) ProtoReflect() protoreflect.Message {
mi := &file_apis_proto_v1alpha1_ess_proto_msgTypes[3]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use GetSecretResponse.ProtoReflect.Descriptor instead.
func (*GetSecretResponse) Descriptor() ([]byte, []int) {
return file_apis_proto_v1alpha1_ess_proto_rawDescGZIP(), []int{3}
}
func (x *GetSecretResponse) GetSecret() *Secret {
if x != nil {
return x.Secret
}
return nil
}
// ApplySecretRequest applies the secret data update to the secret store.
type ApplySecretRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
Config *ConfigReference `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
Secret *Secret `protobuf:"bytes,2,opt,name=secret,proto3" json:"secret,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *ApplySecretRequest) Reset() {
*x = ApplySecretRequest{}
mi := &file_apis_proto_v1alpha1_ess_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ApplySecretRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ApplySecretRequest) ProtoMessage() {}
func (x *ApplySecretRequest) ProtoReflect() protoreflect.Message {
mi := &file_apis_proto_v1alpha1_ess_proto_msgTypes[4]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ApplySecretRequest.ProtoReflect.Descriptor instead.
func (*ApplySecretRequest) Descriptor() ([]byte, []int) {
return file_apis_proto_v1alpha1_ess_proto_rawDescGZIP(), []int{4}
}
func (x *ApplySecretRequest) GetConfig() *ConfigReference {
if x != nil {
return x.Config
}
return nil
}
func (x *ApplySecretRequest) GetSecret() *Secret {
if x != nil {
return x.Secret
}
return nil
}
// ApplySecretResponse returns if the secret is changed or not.
type ApplySecretResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
Changed bool `protobuf:"varint,1,opt,name=changed,proto3" json:"changed,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *ApplySecretResponse) Reset() {
*x = ApplySecretResponse{}
mi := &file_apis_proto_v1alpha1_ess_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ApplySecretResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ApplySecretResponse) ProtoMessage() {}
func (x *ApplySecretResponse) ProtoReflect() protoreflect.Message {
mi := &file_apis_proto_v1alpha1_ess_proto_msgTypes[5]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ApplySecretResponse.ProtoReflect.Descriptor instead.
func (*ApplySecretResponse) Descriptor() ([]byte, []int) {
return file_apis_proto_v1alpha1_ess_proto_rawDescGZIP(), []int{5}
}
func (x *ApplySecretResponse) GetChanged() bool {
if x != nil {
return x.Changed
}
return false
}
// DeleteKeysRequest deletes the secret from the secret store.
type DeleteKeysRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
Config *ConfigReference `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
Secret *Secret `protobuf:"bytes,2,opt,name=secret,proto3" json:"secret,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *DeleteKeysRequest) Reset() {
*x = DeleteKeysRequest{}
mi := &file_apis_proto_v1alpha1_ess_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *DeleteKeysRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DeleteKeysRequest) ProtoMessage() {}
func (x *DeleteKeysRequest) ProtoReflect() protoreflect.Message {
mi := &file_apis_proto_v1alpha1_ess_proto_msgTypes[6]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use DeleteKeysRequest.ProtoReflect.Descriptor instead.
func (*DeleteKeysRequest) Descriptor() ([]byte, []int) {
return file_apis_proto_v1alpha1_ess_proto_rawDescGZIP(), []int{6}
}
func (x *DeleteKeysRequest) GetConfig() *ConfigReference {
if x != nil {
return x.Config
}
return nil
}
func (x *DeleteKeysRequest) GetSecret() *Secret {
if x != nil {
return x.Secret
}
return nil
}
// DeleteKeysResponse is returned if the secret is deleted.
type DeleteKeysResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *DeleteKeysResponse) Reset() {
*x = DeleteKeysResponse{}
mi := &file_apis_proto_v1alpha1_ess_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *DeleteKeysResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DeleteKeysResponse) ProtoMessage() {}
func (x *DeleteKeysResponse) ProtoReflect() protoreflect.Message {
mi := &file_apis_proto_v1alpha1_ess_proto_msgTypes[7]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use DeleteKeysResponse.ProtoReflect.Descriptor instead.
func (*DeleteKeysResponse) Descriptor() ([]byte, []int) {
return file_apis_proto_v1alpha1_ess_proto_rawDescGZIP(), []int{7}
}
var File_apis_proto_v1alpha1_ess_proto protoreflect.FileDescriptor
const file_apis_proto_v1alpha1_ess_proto_rawDesc = "" +
"\n" +
"\x1dapis/proto/v1alpha1/ess.proto\x12\x12ess.proto.v1alpha1\"Z\n" +
"\x0fConfigReference\x12\x1f\n" +
"\vapi_version\x18\x01 \x01(\tR\n" +
"apiVersion\x12\x12\n" +
"\x04kind\x18\x02 \x01(\tR\x04kind\x12\x12\n" +
"\x04name\x18\x03 \x01(\tR\x04name\"\x9f\x02\n" +
"\x06Secret\x12\x1f\n" +
"\vscoped_name\x18\x01 \x01(\tR\n" +
"scopedName\x12D\n" +
"\bmetadata\x18\x02 \x03(\v2(.ess.proto.v1alpha1.Secret.MetadataEntryR\bmetadata\x128\n" +
"\x04data\x18\x03 \x03(\v2$.ess.proto.v1alpha1.Secret.DataEntryR\x04data\x1a;\n" +
"\rMetadataEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a7\n" +
"\tDataEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
"\x05value\x18\x02 \x01(\fR\x05value:\x028\x01\"\x83\x01\n" +
"\x10GetSecretRequest\x12;\n" +
"\x06config\x18\x01 \x01(\v2#.ess.proto.v1alpha1.ConfigReferenceR\x06config\x122\n" +
"\x06secret\x18\x02 \x01(\v2\x1a.ess.proto.v1alpha1.SecretR\x06secret\"G\n" +
"\x11GetSecretResponse\x122\n" +
"\x06secret\x18\x01 \x01(\v2\x1a.ess.proto.v1alpha1.SecretR\x06secret\"\x85\x01\n" +
"\x12ApplySecretRequest\x12;\n" +
"\x06config\x18\x01 \x01(\v2#.ess.proto.v1alpha1.ConfigReferenceR\x06config\x122\n" +
"\x06secret\x18\x02 \x01(\v2\x1a.ess.proto.v1alpha1.SecretR\x06secret\"/\n" +
"\x13ApplySecretResponse\x12\x18\n" +
"\achanged\x18\x01 \x01(\bR\achanged\"\x84\x01\n" +
"\x11DeleteKeysRequest\x12;\n" +
"\x06config\x18\x01 \x01(\v2#.ess.proto.v1alpha1.ConfigReferenceR\x06config\x122\n" +
"\x06secret\x18\x02 \x01(\v2\x1a.ess.proto.v1alpha1.SecretR\x06secret\"\x14\n" +
"\x12DeleteKeysResponse2\xbf\x02\n" +
" ExternalSecretStorePluginService\x12Z\n" +
"\tGetSecret\x12$.ess.proto.v1alpha1.GetSecretRequest\x1a%.ess.proto.v1alpha1.GetSecretResponse\"\x00\x12`\n" +
"\vApplySecret\x12&.ess.proto.v1alpha1.ApplySecretRequest\x1a'.ess.proto.v1alpha1.ApplySecretResponse\"\x00\x12]\n" +
"\n" +
"DeleteKeys\x12%.ess.proto.v1alpha1.DeleteKeysRequest\x1a&.ess.proto.v1alpha1.DeleteKeysResponse\"\x00BAZ?github.com/crossplane/crossplane-runtime/v2/apis/proto/v1alpha1b\x06proto3"
var (
file_apis_proto_v1alpha1_ess_proto_rawDescOnce sync.Once
file_apis_proto_v1alpha1_ess_proto_rawDescData []byte
)
func file_apis_proto_v1alpha1_ess_proto_rawDescGZIP() []byte {
file_apis_proto_v1alpha1_ess_proto_rawDescOnce.Do(func() {
file_apis_proto_v1alpha1_ess_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_apis_proto_v1alpha1_ess_proto_rawDesc), len(file_apis_proto_v1alpha1_ess_proto_rawDesc)))
})
return file_apis_proto_v1alpha1_ess_proto_rawDescData
}
var file_apis_proto_v1alpha1_ess_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
var file_apis_proto_v1alpha1_ess_proto_goTypes = []any{
(*ConfigReference)(nil), // 0: ess.proto.v1alpha1.ConfigReference
(*Secret)(nil), // 1: ess.proto.v1alpha1.Secret
(*GetSecretRequest)(nil), // 2: ess.proto.v1alpha1.GetSecretRequest
(*GetSecretResponse)(nil), // 3: ess.proto.v1alpha1.GetSecretResponse
(*ApplySecretRequest)(nil), // 4: ess.proto.v1alpha1.ApplySecretRequest
(*ApplySecretResponse)(nil), // 5: ess.proto.v1alpha1.ApplySecretResponse
(*DeleteKeysRequest)(nil), // 6: ess.proto.v1alpha1.DeleteKeysRequest
(*DeleteKeysResponse)(nil), // 7: ess.proto.v1alpha1.DeleteKeysResponse
nil, // 8: ess.proto.v1alpha1.Secret.MetadataEntry
nil, // 9: ess.proto.v1alpha1.Secret.DataEntry
}
var file_apis_proto_v1alpha1_ess_proto_depIdxs = []int32{
8, // 0: ess.proto.v1alpha1.Secret.metadata:type_name -> ess.proto.v1alpha1.Secret.MetadataEntry
9, // 1: ess.proto.v1alpha1.Secret.data:type_name -> ess.proto.v1alpha1.Secret.DataEntry
0, // 2: ess.proto.v1alpha1.GetSecretRequest.config:type_name -> ess.proto.v1alpha1.ConfigReference
1, // 3: ess.proto.v1alpha1.GetSecretRequest.secret:type_name -> ess.proto.v1alpha1.Secret
1, // 4: ess.proto.v1alpha1.GetSecretResponse.secret:type_name -> ess.proto.v1alpha1.Secret
0, // 5: ess.proto.v1alpha1.ApplySecretRequest.config:type_name -> ess.proto.v1alpha1.ConfigReference
1, // 6: ess.proto.v1alpha1.ApplySecretRequest.secret:type_name -> ess.proto.v1alpha1.Secret
0, // 7: ess.proto.v1alpha1.DeleteKeysRequest.config:type_name -> ess.proto.v1alpha1.ConfigReference
1, // 8: ess.proto.v1alpha1.DeleteKeysRequest.secret:type_name -> ess.proto.v1alpha1.Secret
2, // 9: ess.proto.v1alpha1.ExternalSecretStorePluginService.GetSecret:input_type -> ess.proto.v1alpha1.GetSecretRequest
4, // 10: ess.proto.v1alpha1.ExternalSecretStorePluginService.ApplySecret:input_type -> ess.proto.v1alpha1.ApplySecretRequest
6, // 11: ess.proto.v1alpha1.ExternalSecretStorePluginService.DeleteKeys:input_type -> ess.proto.v1alpha1.DeleteKeysRequest
3, // 12: ess.proto.v1alpha1.ExternalSecretStorePluginService.GetSecret:output_type -> ess.proto.v1alpha1.GetSecretResponse
5, // 13: ess.proto.v1alpha1.ExternalSecretStorePluginService.ApplySecret:output_type -> ess.proto.v1alpha1.ApplySecretResponse
7, // 14: ess.proto.v1alpha1.ExternalSecretStorePluginService.DeleteKeys:output_type -> ess.proto.v1alpha1.DeleteKeysResponse
12, // [12:15] is the sub-list for method output_type
9, // [9:12] is the sub-list for method input_type
9, // [9:9] is the sub-list for extension type_name
9, // [9:9] is the sub-list for extension extendee
0, // [0:9] is the sub-list for field type_name
}
func init() { file_apis_proto_v1alpha1_ess_proto_init() }
func file_apis_proto_v1alpha1_ess_proto_init() {
if File_apis_proto_v1alpha1_ess_proto != nil {
return
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_apis_proto_v1alpha1_ess_proto_rawDesc), len(file_apis_proto_v1alpha1_ess_proto_rawDesc)),
NumEnums: 0,
NumMessages: 10,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_apis_proto_v1alpha1_ess_proto_goTypes,
DependencyIndexes: file_apis_proto_v1alpha1_ess_proto_depIdxs,
MessageInfos: file_apis_proto_v1alpha1_ess_proto_msgTypes,
}.Build()
File_apis_proto_v1alpha1_ess_proto = out.File
file_apis_proto_v1alpha1_ess_proto_goTypes = nil
file_apis_proto_v1alpha1_ess_proto_depIdxs = nil
}
================================================
FILE: apis/proto/v1alpha1/ess.proto
================================================
/*
Copyright 2023 The Crossplane 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.
*/
syntax = "proto3";
// buf:lint:ignore PACKAGE_DIRECTORY_MATCH
package ess.proto.v1alpha1;
option go_package = "github.com/crossplane/crossplane-runtime/v2/apis/proto/v1alpha1";
// ExternalSecretStorePluginService defines the APIs for an External Secret Store plugin.
service ExternalSecretStorePluginService {
rpc GetSecret(GetSecretRequest) returns (GetSecretResponse) {}
rpc ApplySecret(ApplySecretRequest) returns (ApplySecretResponse) {}
rpc DeleteKeys(DeleteKeysRequest) returns (DeleteKeysResponse) {}
}
// ConfigReference is used to refer a StoreConfig object.
message ConfigReference {
string api_version = 1;
string kind = 2;
string name = 3;
}
// Secret defines the structure of a secret.
message Secret {
string scoped_name = 1;
map<string, string> metadata = 2;
map<string, bytes> data = 3;
}
// GetSecretRequest requests secret from the secret store.
message GetSecretRequest {
ConfigReference config = 1;
Secret secret = 2;
}
// GetSecretResponse returns the secret from the secret store.
message GetSecretResponse {
Secret secret = 1;
}
// ApplySecretRequest applies the secret data update to the secret store.
message ApplySecretRequest {
ConfigReference config = 1;
Secret secret = 2;
}
// ApplySecretResponse returns if the secret is changed or not.
message ApplySecretResponse {
bool changed = 1;
}
// DeleteKeysRequest deletes the secret from the secret store.
message DeleteKeysRequest {
ConfigReference config = 1;
Secret secret = 2;
}
// DeleteKeysResponse is returned if the secret is deleted.
message DeleteKeysResponse {}
================================================
FILE: apis/proto/v1alpha1/ess_grpc.pb.go
================================================
//
//Copyright 2023 The Crossplane Authors.
//Licensed under the Apache License, Version 2.0 (the "License");
//you may not use this file except in compliance with the License.
//You may obtain a copy of the License at
//http://www.apache.org/licenses/LICENSE-2.0
//Unless required by applicable law or agreed to in writing, software
//distributed under the License is distributed on an "AS IS" BASIS,
//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//See the License for the specific language governing permissions and
//limitations under the License.
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.5.1
// - protoc (unknown)
// source: apis/proto/v1alpha1/ess.proto
// buf:lint:ignore PACKAGE_DIRECTORY_MATCH
package v1alpha1
import (
context "context"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
)
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
// Requires gRPC-Go v1.64.0 or later.
const _ = grpc.SupportPackageIsVersion9
const (
ExternalSecretStorePluginService_GetSecret_FullMethodName = "/ess.proto.v1alpha1.ExternalSecretStorePluginService/GetSecret"
ExternalSecretStorePluginService_ApplySecret_FullMethodName = "/ess.proto.v1alpha1.ExternalSecretStorePluginService/ApplySecret"
ExternalSecretStorePluginService_DeleteKeys_FullMethodName = "/ess.proto.v1alpha1.ExternalSecretStorePluginService/DeleteKeys"
)
// ExternalSecretStorePluginServiceClient is the client API for ExternalSecretStorePluginService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
//
// ExternalSecretStorePluginService defines the APIs for an External Secret Store plugin.
type ExternalSecretStorePluginServiceClient interface {
GetSecret(ctx context.Context, in *GetSecretRequest, opts ...grpc.CallOption) (*GetSecretResponse, error)
ApplySecret(ctx context.Context, in *ApplySecretRequest, opts ...grpc.CallOption) (*ApplySecretResponse, error)
DeleteKeys(ctx context.Context, in *DeleteKeysRequest, opts ...grpc.CallOption) (*DeleteKeysResponse, error)
}
type externalSecretStorePluginServiceClient struct {
cc grpc.ClientConnInterface
}
func NewExternalSecretStorePluginServiceClient(cc grpc.ClientConnInterface) ExternalSecretStorePluginServiceClient {
return &externalSecretStorePluginServiceClient{cc}
}
func (c *externalSecretStorePluginServiceClient) GetSecret(ctx context.Context, in *GetSecretRequest, opts ...grpc.CallOption) (*GetSecretResponse, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(GetSecretResponse)
err := c.cc.Invoke(ctx, ExternalSecretStorePluginService_GetSecret_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *externalSecretStorePluginServiceClient) ApplySecret(ctx context.Context, in *ApplySecretRequest, opts ...grpc.CallOption) (*ApplySecretResponse, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(ApplySecretResponse)
err := c.cc.Invoke(ctx, ExternalSecretStorePluginService_ApplySecret_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *externalSecretStorePluginServiceClient) DeleteKeys(ctx context.Context, in *DeleteKeysRequest, opts ...grpc.CallOption) (*DeleteKeysResponse, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(DeleteKeysResponse)
err := c.cc.Invoke(ctx, ExternalSecretStorePluginService_DeleteKeys_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
// ExternalSecretStorePluginServiceServer is the server API for ExternalSecretStorePluginService service.
// All implementations must embed UnimplementedExternalSecretStorePluginServiceServer
// for forward compatibility.
//
// ExternalSecretStorePluginService defines the APIs for an External Secret Store plugin.
type ExternalSecretStorePluginServiceServer interface {
GetSecret(context.Context, *GetSecretRequest) (*GetSecretResponse, error)
ApplySecret(context.Context, *ApplySecretRequest) (*ApplySecretResponse, error)
DeleteKeys(context.Context, *DeleteKeysRequest) (*DeleteKeysResponse, error)
mustEmbedUnimplementedExternalSecretStorePluginServiceServer()
}
// UnimplementedExternalSecretStorePluginServiceServer must be embedded to have
// forward compatible implementations.
//
// NOTE: this should be embedded by value instead of pointer to avoid a nil
// pointer dereference when methods are called.
type UnimplementedExternalSecretStorePluginServiceServer struct{}
func (UnimplementedExternalSecretStorePluginServiceServer) GetSecret(context.Context, *GetSecretRequest) (*GetSecretResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetSecret not implemented")
}
func (UnimplementedExternalSecretStorePluginServiceServer) ApplySecret(context.Context, *ApplySecretRequest) (*ApplySecretResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ApplySecret not implemented")
}
func (UnimplementedExternalSecretStorePluginServiceServer) DeleteKeys(context.Context, *DeleteKeysRequest) (*DeleteKeysResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method DeleteKeys not implemented")
}
func (UnimplementedExternalSecretStorePluginServiceServer) mustEmbedUnimplementedExternalSecretStorePluginServiceServer() {
}
func (UnimplementedExternalSecretStorePluginServiceServer) testEmbeddedByValue() {}
// UnsafeExternalSecretStorePluginServiceServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to ExternalSecretStorePluginServiceServer will
// result in compilation errors.
type UnsafeExternalSecretStorePluginServiceServer interface {
mustEmbedUnimplementedExternalSecretStorePluginServiceServer()
}
func RegisterExternalSecretStorePluginServiceServer(s grpc.ServiceRegistrar, srv ExternalSecretStorePluginServiceServer) {
// If the following call pancis, it indicates UnimplementedExternalSecretStorePluginServiceServer was
// embedded by pointer and is nil. This will cause panics if an
// unimplemented method is ever invoked, so we test this at initialization
// time to prevent it from happening at runtime later due to I/O.
if t, ok := srv.(interface{ testEmbeddedByValue() }); ok {
t.testEmbeddedByValue()
}
s.RegisterService(&ExternalSecretStorePluginService_ServiceDesc, srv)
}
func _ExternalSecretStorePluginService_GetSecret_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetSecretRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ExternalSecretStorePluginServiceServer).GetSecret(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: ExternalSecretStorePluginService_GetSecret_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ExternalSecretStorePluginServiceServer).GetSecret(ctx, req.(*GetSecretRequest))
}
return interceptor(ctx, in, info, handler)
}
func _ExternalSecretStorePluginService_ApplySecret_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ApplySecretRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ExternalSecretStorePluginServiceServer).ApplySecret(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: ExternalSecretStorePluginService_ApplySecret_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ExternalSecretStorePluginServiceServer).ApplySecret(ctx, req.(*ApplySecretRequest))
}
return interceptor(ctx, in, info, handler)
}
func _ExternalSecretStorePluginService_DeleteKeys_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DeleteKeysRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ExternalSecretStorePluginServiceServer).DeleteKeys(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: ExternalSecretStorePluginService_DeleteKeys_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ExternalSecretStorePluginServiceServer).DeleteKeys(ctx, req.(*DeleteKeysRequest))
}
return interceptor(ctx, in, info, handler)
}
// ExternalSecretStorePluginService_ServiceDesc is the grpc.ServiceDesc for ExternalSecretStorePluginService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var ExternalSecretStorePluginService_ServiceDesc = grpc.ServiceDesc{
ServiceName: "ess.proto.v1alpha1.ExternalSecretStorePluginService",
HandlerType: (*ExternalSecretStorePluginServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "GetSecret",
Handler: _ExternalSecretStorePluginService_GetSecret_Handler,
},
{
MethodName: "ApplySecret",
Handler: _ExternalSecretStorePluginService_ApplySecret_Handler,
},
{
MethodName: "DeleteKeys",
Handler: _ExternalSecretStorePluginService_DeleteKeys_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "apis/proto/v1alpha1/ess.proto",
}
================================================
FILE: buf.gen.yaml
================================================
# This file contains configuration for the `buf generate` command.
# See generate.go for more details.
version: v1
plugins:
- plugin: go
out: .
opt: paths=source_relative
- plugin: go-grpc
out: .
opt: paths=source_relative
================================================
FILE: buf.yaml
================================================
version: v1
name: buf.build/crossplane/crossplane-runtime
breaking:
use:
- WIRE_JSON
lint:
use:
- DEFAULT
allow_comment_ignores: true
================================================
FILE: flake.nix
================================================
# New to Nix? Start here:
# Language basics: https://nix.dev/tutorials/nix-language
# Flakes intro: https://zero-to-nix.com/concepts/flakes
{
description = "Crossplane Runtime - Go library for building Crossplane providers and controllers";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
# TODO(negz): Unpin once https://github.com/nix-community/gomod2nix/pull/231 is released.
gomod2nix = {
url = "github:nix-community/gomod2nix/49662a44272806ff785df2990a420edaaca15db4";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs =
{
self,
nixpkgs,
nixpkgs-unstable,
gomod2nix,
}:
let
# Systems where Nix runs (dev machines, CI).
supportedSystems = [
"x86_64-linux"
"aarch64-linux"
"x86_64-darwin"
"aarch64-darwin"
];
# Helpers for per-system outputs.
forAllSystems = f: nixpkgs.lib.genAttrs supportedSystems (system: forSystem system f);
forSystem =
system: f:
f {
inherit system;
pkgs = import nixpkgs {
inherit system;
overlays = [
gomod2nix.overlays.default
(_final: _prev: {
go = nixpkgs-unstable.legacyPackages.${system}.go_1_25;
inherit (nixpkgs-unstable.legacyPackages.${system}) go_1_25;
})
];
};
};
in
{
# CI checks (nix flake check).
checks = forAllSystems (
{ pkgs, ... }:
let
checks = import ./nix/checks.nix { inherit pkgs self; };
in
{
test = checks.test { };
generate = checks.generate { };
go-lint = checks.goLint { };
nix-lint = checks.nixLint { };
}
);
# Development commands (nix run .#<app>).
apps = forAllSystems (
{ pkgs, ... }:
let
apps = import ./nix/apps.nix { inherit pkgs; };
in
{
test = apps.test { };
lint = apps.lint { fix = true; };
generate = apps.generate { };
tidy = apps.tidy { };
}
);
# Development shell (nix develop).
devShells = forAllSystems (
{ pkgs, ... }:
{
default = pkgs.mkShell {
buildInputs = [
pkgs.coreutils
pkgs.gnused
pkgs.ncurses
pkgs.go
pkgs.golangci-lint
pkgs.gomod2nix
# Code generation
pkgs.buf
pkgs.protoc-gen-go
pkgs.protoc-gen-go-grpc
pkgs.kubernetes-controller-tools
# Nix
pkgs.nixfmt-rfc-style
];
shellHook = ''
export PS1='\[\033[38;2;243;128;123m\][cros\[\033[38;2;255;205;60m\]spla\[\033[38;2;53;208;186m\]ne-rt]\[\033[0m\] \w \$ '
echo "Crossplane Runtime development shell ($(go version | cut -d' ' -f3))"
echo ""
echo " nix run .#test nix run .#generate"
echo " nix run .#lint nix run .#tidy"
echo ""
echo " nix flake check"
echo ""
'';
};
}
);
};
}
================================================
FILE: generate.go
================================================
//go:build generate
// +build generate
/*
Copyright 2019 The Crossplane Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// Code generation tools (controller-gen, buf, etc.) must be in your $PATH. Use
// './nix.sh develop' or './nix.sh run .#generate' to ensure they are.
// Generate deepcopy methodsets
//go:generate controller-gen object:headerFile=./hack/boilerplate.go.txt paths=./apis/...
// Generate gRPC types and stubs. See buf.gen.yaml for buf's configuration.
// The protoc-gen-go and protoc-gen-go-grpc plugins must be in $PATH.
// Note that the vendor dir does temporarily exist during a Nix build.
//go:generate buf generate --exclude-path vendor
package generate
================================================
FILE: go.mod
================================================
module github.com/crossplane/crossplane-runtime/v2
go 1.25.9
require (
dario.cat/mergo v1.0.2
github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6
github.com/Masterminds/semver/v3 v3.4.0
github.com/crossplane/crossplane/apis/v2 v2.0.0-20260424160951-8f231230ebb6
github.com/evanphx/json-patch v5.9.11+incompatible
github.com/go-logr/logr v1.4.3
github.com/google/go-cmp v0.7.0
github.com/google/go-containerregistry v0.20.7
github.com/google/go-containerregistry/pkg/authn/k8schain v0.0.0-20230919002926-dbcd01c402b2
github.com/in-toto/attestation v1.1.2
github.com/in-toto/in-toto-golang v0.11.0
github.com/prometheus/client_golang v1.23.2
github.com/sigstore/cosign/v3 v3.0.5
github.com/sigstore/sigstore v1.10.5
github.com/sirupsen/logrus v1.9.4
github.com/spf13/afero v1.15.0
golang.org/x/time v0.15.0
google.golang.org/grpc v1.79.3
google.golang.org/protobuf v1.36.11
k8s.io/api v0.35.1
k8s.io/apiextensions-apiserver v0.35.0
k8s.io/apimachinery v0.35.1
k8s.io/client-go v0.35.1
k8s.io/component-base v0.35.0
k8s.io/klog/v2 v2.130.1
k8s.io/utils v0.0.0-20260108192941-914a6e750570
sigs.k8s.io/controller-runtime v0.23.1
sigs.k8s.io/controller-tools v0.20.0
sigs.k8s.io/yaml v1.6.0
)
require (
cloud.google.com/go/compute/metadata v0.9.0 // indirect
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible // indirect
github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect
github.com/Azure/go-autorest v14.2.0+incompatible // indirect
github.com/Azure/go-autorest/autorest v0.11.30 // indirect
github.com/Azure/go-autorest/autorest/adal v0.9.24 // indirect
github.com/Azure/go-autorest/autorest/azure/auth v0.5.13 // indirect
github.com/Azure/go-autorest/autorest/azure/cli v0.4.7 // indirect
github.com/Azure/go-autorest/autorest/date v0.3.1 // indirect
github.com/Azure/go-autorest/logger v0.2.2 // indirect
github.com/Azure/go-autorest/tracing v0.6.1 // indirect
github.com/antlr4-go/antlr/v4 v4.13.1 // indirect
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
github.com/aws/aws-sdk-go-v2 v1.41.4 // indirect
github.com/aws/aws-sdk-go-v2/config v1.32.12 // indirect
github.com/aws/aws-sdk-go-v2/credentials v1.19.12 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20 // indirect
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 // indirect
github.com/aws/aws-sdk-go-v2/service/ecr v1.55.3 // indirect
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.38.10 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20 // indirect
github.com/aws/aws-sdk-go-v2/service/signin v1.0.8 // indirect
github.com/aws/aws-sdk-go-v2/service/sso v1.30.13 // indirect
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17 // indirect
github.com/aws/aws-sdk-go-v2/service/sts v1.41.9 // indirect
github.com/aws/smithy-go v1.24.2 // indirect
github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.12.0 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/blang/semver v3.5.1+incompatible // indirect
github.com/blang/semver/v4 v4.0.0 // indirect
github.com/cenkalti/backoff/v5 v5.0.3 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/chrismellard/docker-credential-acr-env v0.0.0-20230304212654-82a0ddb27589 // indirect
github.com/containerd/stargz-snapshotter/estargz v0.18.2 // indirect
github.com/coreos/go-oidc/v3 v3.17.0 // indirect
github.com/cyberphone/json-canonicalization v0.0.0-20241213102144-19d51d7fe467 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/digitorus/pkcs7 v0.0.0-20230818184609-3a137a874352 // indirect
github.com/digitorus/timestamp v0.0.0-20231217203849-220c5c2851b7 // indirect
github.com/dimchansky/utfbom v1.1.1 // indirect
github.com/docker/cli v29.4.0+incompatible // indirect
github.com/docker/distribution v2.8.3+incompatible // indirect
github.com/docker/docker-credential-helpers v0.9.5 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
github.com/emicklei/go-restful/v3 v3.13.0 // indirect
github.com/evanphx/json-patch/v5 v5.9.11 // indirect
github.com/fatih/color v1.18.0 // indirect
github.com/fsnotify/fsnotify v1.9.0 // indirect
github.com/fxamacker/cbor/v2 v2.9.0 // indirect
github.com/go-chi/chi/v5 v5.2.5 // indirect
github.com/go-jose/go-jose/v4 v4.1.4 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-openapi/analysis v0.24.3 // indirect
github.com/go-openapi/errors v0.22.7 // indirect
github.com/go-openapi/jsonpointer v0.22.5 // indirect
github.com/go-openapi/jsonreference v0.21.5 // indirect
github.com/go-openapi/loads v0.23.3 // indirect
github.com/go-openapi/runtime v0.29.3 // indirect
github.com/go-openapi/spec v0.22.4 // indirect
github.com/go-openapi/strfmt v0.26.1 // indirect
github.com/go-openapi/swag v0.25.5 // indirect
github.com/go-openapi/swag/cmdutils v0.25.5 // indirect
github.com/go-openapi/swag/conv v0.25.5 // indirect
github.com/go-openapi/swag/fileutils v0.25.5 // indirect
github.com/go-openapi/swag/jsonname v0.25.5 // indirect
github.com/go-openapi/swag/jsonutils v0.25.5 // indirect
github.com/go-openapi/swag/loading v0.25.5 // indirect
github.com/go-openapi/swag/mangling v0.25.5 // indirect
github.com/go-openapi/swag/netutils v0.25.5 // indirect
github.com/go-openapi/swag/stringutils v0.25.5 // indirect
github.com/go-openapi/swag/typeutils v0.25.5 // indirect
github.com/go-openapi/swag/yamlutils v0.25.5 // indirect
github.com/go-openapi/validate v0.25.2 // indirect
github.com/go-viper/mapstructure/v2 v2.5.0 // indirect
github.com/gobuffalo/flect v1.0.3 // indirect
github.com/golang-jwt/jwt/v4 v4.5.2 // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/google/btree v1.1.3 // indirect
github.com/google/cel-go v0.26.1 // indirect
github.com/google/certificate-transparency-go v1.3.3 // indirect
github.com/google/gnostic-models v0.7.1 // indirect
github.com/google/go-containerregistry/pkg/authn/kubernetes v0.0.0-20250225234217-098045d5e61f // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 // indirect
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
github.com/hashicorp/go-retryablehttp v0.7.8 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jedisct1/go-minisign v0.0.0-20230811132847-661be99b8267 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/klauspost/compress v1.18.5 // indirect
github.com/letsencrypt/boulder v0.20260223.0 // indirect
github.com/mattn/go-colorable v0.1.14 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/moby/term v0.5.2 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/nozzle/throttler v0.0.0-20180817012639-2ea982251481 // indirect
github.com/oklog/ulid/v2 v2.1.1 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.1.1 // indirect
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/prometheus/client_model v0.6.2 // indirect
github.com/prometheus/common v0.67.5 // indirect
github.com/prometheus/procfs v0.19.2 // indirect
github.com/sassoftware/relic v7.2.1+incompatible // indirect
github.com/secure-systems-lab/go-securesystemslib v0.10.0 // indirect
github.com/shibumi/go-pathspec v1.3.0 // indirect
github.com/sigstore/protobuf-specs v0.5.0 // indirect
github.com/sigstore/rekor v1.5.1 // indirect
github.com/sigstore/rekor-tiles/v2 v2.2.1 // indirect
github.com/sigstore/sigstore-go v1.1.4 // indirect
github.com/sigstore/timestamp-authority/v2 v2.0.6 // indirect
github.com/spf13/cobra v1.10.2 // indirect
github.com/spf13/pflag v1.0.10 // indirect
github.com/stoewer/go-strcase v1.3.1 // indirect
github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect
github.com/theupdateframework/go-tuf v0.7.0 // indirect
github.com/theupdateframework/go-tuf/v2 v2.4.1 // indirect
github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 // indirect
github.com/transparency-dev/formats v0.0.0-20251017110053-404c0d5b696c // indirect
github.com/transparency-dev/merkle v0.0.2 // indirect
github.com/vbatts/tar-split v0.12.2 // indirect
github.com/x448/float16 v0.8.4 // indirect
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0 // indirect
go.opentelemetry.io/otel v1.42.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 // indirect
go.opentelemetry.io/otel/metric v1.42.0 // indirect
go.opentelemetry.io/otel/trace v1.42.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.27.1 // indirect
go.yaml.in/yaml/v2 v2.4.3 // indirect
go.yaml.in/yaml/v3 v3.0.4 // indirect
golang.org/x/crypto v0.50.0 // indirect
golang.org/x/exp v0.0.0-20260112195511-716be5621a96 // indirect
golang.org/x/mod v0.35.0 // indirect
golang.org/x/net v0.53.0 // indirect
golang.org/x/oauth2 v0.36.0 // indirect
golang.org/x/sync v0.20.0 // indirect
golang.org/x/sys v0.43.0 // indirect
golang.org/x/term v0.42.0 // indirect
golang.org/x/text v0.36.0 // indirect
golang.org/x/tools v0.44.0 // indirect
gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20260316180232-0b37fe3546d5 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20260316180232-0b37fe3546d5 // indirect
gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
k8s.io/code-generator v0.35.0 // indirect
k8s.io/gengo/v2 v2.0.0-20251215205346-5ee0d033ba5b // indirect
k8s.io/kube-openapi v0.0.0-20260127142750-a19766b6e2d4 // indirect
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.34.0 // indirect
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect
sigs.k8s.io/randfill v1.0.0 // indirect
sigs.k8s.io/structured-merge-diff/v6 v6.3.2-0.20260122202528-d9cc6641c482 // indirect
)
================================================
FILE: go.sum
================================================
cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4=
cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4=
cloud.google.com/go v0.123.0 h1:2NAUJwPR47q+E35uaJeYoNhuNEM9kM8SjgRgdeOJUSE=
cloud.google.com/go v0.123.0/go.mod h1:xBoMV08QcqUGuPW65Qfm1o9Y4zKZBpGS+7bImXLTAZU=
cloud.google.com/go/auth v0.18.2 h1:+Nbt5Ev0xEqxlNjd6c+yYUeosQ5TtEUaNcN/3FozlaM=
cloud.google.com/go/auth v0.18.2/go.mod h1:xD+oY7gcahcu7G2SG2DsBerfFxgPAJz17zz2joOFF3M=
cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc=
cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c=
cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=
cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=
cloud.google.com/go/iam v1.5.3 h1:+vMINPiDF2ognBJ97ABAYYwRgsaqxPbQDlMnbHMjolc=
cloud.google.com/go/iam v1.5.3/go.mod h1:MR3v9oLkZCTlaqljW6Eb2d3HGDGK5/bDv93jhfISFvU=
cloud.google.com/go/kms v1.26.0 h1:cK9mN2cf+9V63D3H1f6koxTatWy39aTI/hCjz1I+adU=
cloud.google.com/go/kms v1.26.0/go.mod h1:pHKOdFJm63hxBsiPkYtowZPltu9dW0MWvBa6IA4HM58=
cloud.google.com/go/longrunning v0.8.0 h1:LiKK77J3bx5gDLi4SMViHixjD2ohlkwBi+mKA7EhfW8=
cloud.google.com/go/longrunning v0.8.0/go.mod h1:UmErU2Onzi+fKDg2gR7dusz11Pe26aknR4kHmJJqIfk=
dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8=
dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA=
filippo.io/edwards25519 v1.2.0 h1:crnVqOiS4jqYleHd9vaKZ+HKtHfllngJIiOpNpoJsjo=
filippo.io/edwards25519 v1.2.0/go.mod h1:xzAOLCNug/yB62zG1bQ8uziwrIqIuxhctzJT18Q77mc=
github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 h1:He8afgbRMd7mFxO99hRNu+6tazq8nFF9lIwo9JFroBk=
github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8=
github.com/AdamKorcz/go-fuzz-headers-1 v0.0.0-20230919221257-8b5d3ce2d11d h1:zjqpY4C7H15HjRPEenkS4SAn3Jy2eRRjkjZbGR30TOg=
github.com/AdamKorcz/go-fuzz-headers-1 v0.0.0-20230919221257-8b5d3ce2d11d/go.mod h1:XNqJ7hv2kY++g8XEHREpi+JqZo3+0l+CH2egBVN4yqM=
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible h1:fcYLmCpyNYRnvJbPerq7U0hS+6+I79yEDJBqVNcqUzU=
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.0 h1:fou+2+WFTib47nS+nz/ozhEBnvU96bKHy6LjRsY4E28=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.0/go.mod h1:t76Ruy8AHvUAC8GfMWJMa0ElSbuIcO03NLpynfbgsPA=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1 h1:Hk5QBxZQC1jb2Fwj6mpzme37xbCDdNTxU7O9eb5+LB4=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1/go.mod h1:IYus9qsFobWIc2YVwe/WPjcnyCkPKtnHAqUYeebc8z0=
github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2 h1:9iefClla7iYpfYWdzPCRDozdmndjTm8DXdpCzPajMgA=
github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2/go.mod h1:XtLgD3ZD34DAaVIIAyG3objl5DynM3CQ/vMcbBNJZGI=
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.4.0 h1:E4MgwLBGeVB5f2MdcIVD3ELVAWpr+WD6MUe1i+tM/PA=
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.4.0/go.mod h1:Y2b/1clN4zsAoUd/pgNAQHjLDnTis/6ROkUfyob6psM=
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.2.0 h1:nCYfgcSyHZXJI8J0IWE5MsCGlb2xp9fJiXyxWgmOFg4=
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.2.0/go.mod h1:ucUjca2JtSZboY8IoUqyQyuuXvwbMBVwFOm0vdQPNhA=
github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg=
github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs=
github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
github.com/Azure/go-autorest/autorest v0.11.28/go.mod h1:MrkzG3Y3AH668QyF9KRk5neJnGgmhQ6krbhR8Q5eMvA=
github.com/Azure/go-autorest/autorest v0.11.30 h1:iaZ1RGz/ALZtN5eq4Nr1SOFSlf2E4pDI3Tcsl+dZPVE=
github.com/Azure/go-autorest/autorest v0.11.30/go.mod h1:t1kpPIOpIVX7annvothKvb0stsrXa37i7b+xpmBW8Fs=
github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ=
github.com/Azure/go-autorest/autorest/adal v0.9.22/go.mod h1:XuAbAEUv2Tta//+voMI038TrJBqjKam0me7qR+L8Cmk=
github.com/Azure/go-autorest/autorest/adal v0.9.24 h1:BHZfgGsGwdkHDyZdtQRQk1WeUdW0m2WPAwuHZwUi5i4=
github.com/Azure/go-autorest/autorest/adal v0.9.24/go.mod h1:7T1+g0PYFmACYW5LlG2fcoPiPlFHjClyRGL7dRlP5c8=
github.com/Azure/go-autorest/autorest/azure/auth v0.5.13 h1:Ov8avRZi2vmrE2JcXw+tu5K/yB41r7xK9GZDiBF7NdM=
github.com/Azure/go-autorest/autorest/azure/auth v0.5.13/go.mod h1:5BAVfWLWXihP47vYrPuBKKf4cS0bXI+KM9Qx6ETDJYo=
github.com/Azure/go-autorest/autorest/azure/cli v0.4.6/go.mod h1:piCfgPho7BiIDdEQ1+g4VmKyD5y+p/XtSNqE6Hc4QD0=
github.com/Azure/go-autorest/autorest/azure/cli v0.4.7 h1:Q9R3utmFg9K1B4OYtAZ7ZUUvIUdzQt7G2MN5Hi/d670=
github.com/Azure/go-autorest/autorest/azure/cli v0.4.7/go.mod h1:bVrAueELJ0CKLBpUHDIvD516TwmHmzqwCpvONWRsw3s=
github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74=
github.com/Azure/go-autorest/autorest/date v0.3.1 h1:o9Z8Jyt+VJJTCZ/UORishuHOusBwolhjokt9s5k8I4w=
github.com/Azure/go-autorest/autorest/date v0.3.1/go.mod h1:Dz/RDmXlfiFFS/eW+b/xMUSFs1tboPVy6UjgADToWDM=
github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k=
github.com/Azure/go-autorest/autorest/mocks v0.4.2 h1:PGN4EDXnuQbojHbU0UWoNvmu9AGVwYHG9/fkDYhtAfw=
github.com/Azure/go-autorest/autorest/mocks v0.4.2/go.mod h1:Vy7OitM9Kei0i1Oj+LvyAWMXJHeKH1MVlzFugfVrmyU=
github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
github.com/Azure/go-autorest/logger v0.2.2 h1:hYqBsEBywrrOSW24kkOCXRcKfKhK76OzLTfF+MYDE2o=
github.com/Azure/go-autorest/logger v0.2.2/go.mod h1:I5fg9K52o+iuydlWfa9T5K6WFos9XYr9dYTFzpqgibw=
github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
github.com/Azure/go-autorest/tracing v0.6.1 h1:YUMSrC/CeD1ZnnXcNYU4a/fzsO35u2Fsful9L/2nyR0=
github.com/Azure/go-autorest/tracing v0.6.1/go.mod h1:/3EgjbsjraOqiicERAeu3m7/z0x1TzjQGAwDrJrXGkc=
github.com/AzureAD/microsoft-authentication-library-for-go v1.6.0 h1:XRzhVemXdgvJqCH0sFfrBUTnUJSBrBf7++ypk+twtRs=
github.com/AzureAD/microsoft-authentication-library-for-go v1.6.0/go.mod h1:HKpQxkWaGLJ+D/5H8QRpyQXA1eKjxkFlOMwck5+33Jk=
github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0=
github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=
github.com/alessio/shellescape v1.4.1 h1:V7yhSDDn8LP4lc4jS8pFkt0zCnzVJlG5JXy9BVKJUX0=
github.com/alessio/shellescape v1.4.1/go.mod h1:PZAiSCk0LJaZkiCSkPv8qIobYglO3FPpyFjDCtHLS30=
github.com/antlr4-go/antlr/v4 v4.13.1 h1:SqQKkuVZ+zWkMMNkjy5FZe5mr5WURWnlpmOuzYWrPrQ=
github.com/antlr4-go/antlr/v4 v4.13.1/go.mod h1:GKmUxMtwp6ZgGwZSva4eWPC5mS6vUAmOABFgjdkM7Nw=
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so=
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
github.com/aws/aws-sdk-go v1.55.8 h1:JRmEUbU52aJQZ2AjX4q4Wu7t4uZjOu71uyNmaWlUkJQ=
github.com/aws/aws-sdk-go v1.55.8/go.mod h1:ZkViS9AqA6otK+JBBNH2++sx1sgxrPKcSzPPvQkUtXk=
github.com/aws/aws-sdk-go-v2 v1.41.4 h1:10f50G7WyU02T56ox1wWXq+zTX9I1zxG46HYuG1hH/k=
github.com/aws/aws-sdk-go-v2 v1.41.4/go.mod h1:mwsPRE8ceUUpiTgF7QmQIJ7lgsKUPQOUl3o72QBrE1o=
github.com/aws/aws-sdk-go-v2/config v1.32.12 h1:O3csC7HUGn2895eNrLytOJQdoL2xyJy0iYXhoZ1OmP0=
github.com/aws/aws-sdk-go-v2/config v1.32.12/go.mod h1:96zTvoOFR4FURjI+/5wY1vc1ABceROO4lWgWJuxgy0g=
github.com/aws/aws-sdk-go-v2/credentials v1.19.12 h1:oqtA6v+y5fZg//tcTWahyN9PEn5eDU/Wpvc2+kJ4aY8=
github.com/aws/aws-sdk-go-v2/credentials v1.19.12/go.mod h1:U3R1RtSHx6NB0DvEQFGyf/0sbrpJrluENHdPy1j/3TE=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20 h1:zOgq3uezl5nznfoK3ODuqbhVg1JzAGDUhXOsU0IDCAo=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20/go.mod h1:z/MVwUARehy6GAg/yQ1GO2IMl0k++cu1ohP9zo887wE=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20 h1:CNXO7mvgThFGqOFgbNAP2nol2qAWBOGfqR/7tQlvLmc=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20/go.mod h1:oydPDJKcfMhgfcgBUZaG+toBbwy8yPWubJXBVERtI4o=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20 h1:tN6W/hg+pkM+tf9XDkWUbDEjGLb+raoBMFsTodcoYKw=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20/go.mod h1:YJ898MhD067hSHA6xYCx5ts/jEd8BSOLtQDL3iZsvbc=
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 h1:qYQ4pzQ2Oz6WpQ8T3HvGHnZydA72MnLuFK9tJwmrbHw=
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.6/go.mod h1:O3h0IK87yXci+kg6flUKzJnWeziQUKciKrLjcatSNcY=
github.com/aws/aws-sdk-go-v2/service/ecr v1.55.3 h1:RtGctYMmkTerGClvdY6bHXdtly4FeYw9wz/NPz62LF8=
github.com/aws/aws-sdk-go-v2/service/ecr v1.55.3/go.mod h1:vBfBu24Ka3/5UZtepbTV0gnc9VPLT8ok+0oDDaYAzn4=
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.38.10 h1:1A/sI3LNMi3fhRI5TFLMwwo7ALAALSFVCSGvFlr1Iys=
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.38.10/go.mod h1:Diyyyz0b43X13pdi1mVMqlTwDjOmRbJMvDsqnduUYWM=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 h1:5EniKhLZe4xzL7a+fU3C2tfUN4nWIqlLesfrjkuPFTY=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7/go.mod h1:x0nZssQ3qZSnIcePWLvcoFisRXJzcTVvYpAAdYX8+GI=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20 h1:2HvVAIq+YqgGotK6EkMf+KIEqTISmTYh5zLpYyeTo1Y=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20/go.mod h1:V4X406Y666khGa8ghKmphma/7C0DAtEQYhkq9z4vpbk=
github.com/aws/aws-sdk-go-v2/service/kms v1.50.3 h1:s/zDSG/a/Su9aX+v0Ld9cimUCdkr5FWPmBV8owaEbZY=
github.com/aws/aws-sdk-go-v2/service/kms v1.50.3/go.mod h1:/iSgiUor15ZuxFGQSTf3lA2FmKxFsQoc2tADOarQBSw=
github.com/aws/aws-sdk-go-v2/service/signin v1.0.8 h1:0GFOLzEbOyZABS3PhYfBIx2rNBACYcKty+XGkTgw1ow=
github.com/aws/aws-sdk-go-v2/service/signin v1.0.8/go.mod h1:LXypKvk85AROkKhOG6/YEcHFPoX+prKTowKnVdcaIxE=
github.com/aws/aws-sdk-go-v2/service/sso v1.30.13 h1:kiIDLZ005EcKomYYITtfsjn7dtOwHDOFy7IbPXKek2o=
github.com/aws/aws-sdk-go-v2/service/sso v1.30.13/go.mod h1:2h/xGEowcW/g38g06g3KpRWDlT+OTfxxI0o1KqayAB8=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17 h1:jzKAXIlhZhJbnYwHbvUQZEB8KfgAEuG0dc08Bkda7NU=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17/go.mod h1:Al9fFsXjv4KfbzQHGe6V4NZSZQXecFcvaIF4e70FoRA=
github.com/aws/aws-sdk-go-v2/service/sts v1.41.9 h1:Cng+OOwCHmFljXIxpEVXAGMnBia8MSU6Ch5i9PgBkcU=
github.com/aws/aws-sdk-go-v2/service/sts v1.41.9/go.mod h1:LrlIndBDdjA/EeXeyNBle+gyCwTlizzW5ycgWnvIxkk=
github.com/aws/smithy-go v1.24.2 h1:FzA3bu/nt/vDvmnkg+R8Xl46gmzEDam6mZ1hzmwXFng=
github.com/aws/smithy-go v1.24.2/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc=
github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.12.0 h1:JFWXO6QPihCknDdnL6VaQE57km4ZKheHIGd9YiOGcTo=
github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.12.0/go.mod h1:046/oLyFlYdAghYQE2yHXi/E//VM5Cf3/dFmA+3CZ0c=
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/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=
github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM=
github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw=
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/chrismellard/docker-credential-acr-env v0.0.0-20230304212654-82a0ddb27589 h1:krfRl01rzPzxSxyLyrChD+U+MzsBXbm0OwYYB67uF+4=
github.com/chrismellard/docker-credential-acr-env v0.0.0-20230304212654-82a0ddb27589/go.mod h1:OuDyvmLnMCwa2ep4Jkm6nyA0ocJuZlGyk2gGseVzERM=
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb h1:EDmT6Q9Zs+SbUoc7Ik9EfrFqcylYqgPZ9ANSbTAntnE=
github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb/go.mod h1:ZjrT6AXHbDs86ZSdt/osfBi5qfexBrKUdONk989Wnk4=
github.com/containerd/stargz-snapshotter/estargz v0.18.2 h1:yXkZFYIzz3eoLwlTUZKz2iQ4MrckBxJjkmD16ynUTrw=
github.com/containerd/stargz-snapshotter/estargz v0.18.2/go.mod h1:XyVU5tcJ3PRpkA9XS2T5us6Eg35yM0214Y+wvrZTBrY=
github.com/coreos/go-oidc/v3 v3.17.0 h1:hWBGaQfbi0iVviX4ibC7bk8OKT5qNr4klBaCHVNvehc=
github.com/coreos/go-oidc/v3 v3.17.0/go.mod h1:wqPbKFrVnE90vty060SB40FCJ8fTHTxSwyXJqZH+sI8=
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY=
github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
github.com/crossplane/crossplane/apis/v2 v2.0.0-20260424160951-8f231230ebb6 h1:9ki6AJQgBJIcLNjK+scUZp2ZDenuAo18d0JSNOlkY2Y=
github.com/crossplane/crossplane/apis/v2 v2.0.0-20260424160951-8f231230ebb6/go.mod h1:h7KE74Z4TFs1L/FFv3RdsiG9Uax7L56oHpcggSZnONg=
github.com/cyberphone/json-canonicalization v0.0.0-20241213102144-19d51d7fe467 h1:uX1JmpONuD549D73r6cgnxyUu18Zb7yHAy5AYU0Pm4Q=
github.com/cyberphone/json-canonicalization v0.0.0-20241213102144-19d51d7fe467/go.mod h1:uzvlm1mxhHkdfqitSA92i7Se+S9ksOn3a3qmv/kyOCw=
github.com/danieljoos/wincred v1.2.3 h1:v7dZC2x32Ut3nEfRH+vhoZGvN72+dQ/snVXo/vMFLdQ=
github.com/danieljoos/wincred v1.2.3/go.mod h1:6qqX0WNrS4RzPZ1tnroDzq9kY3fu1KwE7MRLQK4X0bs=
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/digitorus/pkcs7 v0.0.0-20230713084857-e76b763bdc49/go.mod h1:SKVExuS+vpu2l9IoOc0RwqE7NYnb0JlcFHFnEJkVDzc=
github.com/digitorus/pkcs7 v0.0.0-20230818184609-3a137a874352 h1:ge14PCmCvPjpMQMIAH7uKg0lrtNSOdpYsRXlwk3QbaE=
github.com/digitorus/pkcs7 v0.0.0-20230818184609-3a137a874352/go.mod h1:SKVExuS+vpu2l9IoOc0RwqE7NYnb0JlcFHFnEJkVDzc=
github.com/digitorus/timestamp v0.0.0-20231217203849-220c5c2851b7 h1:lxmTCgmHE1GUYL7P0MlNa00M67axePTq+9nBSGddR8I=
github.com/digitorus/timestamp v0.0.0-20231217203849-220c5c2851b7/go.mod h1:GvWntX9qiTlOud0WkQ6ewFm0LPy5JUR1Xo0Ngbd1w6Y=
github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi/U=
github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE=
github.com/docker/cli v29.4.0+incompatible h1:+IjXULMetlvWJiuSI0Nbor36lcJ5BTcVpUmB21KBoVM=
github.com/docker/cli v29.4.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk=
github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
github.com/docker/docker-credential-helpers v0.9.5 h1:EFNN8DHvaiK8zVqFA2DT6BjXE0GzfLOZ38ggPTKePkY=
github.com/docker/docker-credential-helpers v0.9.5/go.mod h1:v1S+hepowrQXITkEfw6o4+BMbGot02wiKpzWhGUZK6c=
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
github.com/emicklei/go-restful/v3 v3.13.0 h1:C4Bl2xDndpU6nJ4bc1jXd+uTmYPVUwkD6bFY/oTyCes=
github.com/emicklei/go-restful/v3 v3.13.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
github.com/evanphx/json-patch v5.9.11+incompatible h1:ixHHqfcGvxhWkniF1tWxBHA0yb4Z+d1UQi45df52xW8=
github.com/evanphx/json-patch v5.9.11+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
github.com/evanphx/json-patch/v5 v5.9.11 h1:/8HVnzMq13/3x9TPvjG08wUGqBTmZBsCWzjTM0wiaDU=
github.com/evanphx/json-patch/v5 v5.9.11/go.mod h1:3j+LviiESTElxA4p3EMKAB9HXj3/XEtnUf6OZxqIQTM=
github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU=
github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM=
github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ=
github.com/go-chi/chi/v5 v5.2.5 h1:Eg4myHZBjyvJmAFjFvWgrqDTXFyOzjj7YIm3L3mu6Ug=
github.com/go-chi/chi/v5 v5.2.5/go.mod h1:X7Gx4mteadT3eDOMTsXzmI4/rwUpOwBHLpAfupzFJP0=
github.com/go-jose/go-jose/v4 v4.1.4 h1:moDMcTHmvE6Groj34emNPLs/qtYXRVcd6S7NHbHz3kA=
github.com/go-jose/go-jose/v4 v4.1.4/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ=
github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=
github.com/go-openapi/analysis v0.24.3 h1:a1hrvMr8X0Xt69KP5uVTu5jH62DscmDifrLzNglAayk=
github.com/go-openapi/analysis v0.24.3/go.mod h1:Nc+dWJ/FxZbhSow5Yh3ozg5CLJioB+XXT6MdLvJUsUw=
github.com/go-openapi/errors v0.22.7 h1:JLFBGC0Apwdzw3484MmBqspjPbwa2SHvpDm0u5aGhUA=
github.com/go-openapi/errors v0.22.7/go.mod h1://QW6SD9OsWtH6gHllUCddOXDL0tk0ZGNYHwsw4sW3w=
github.com/go-openapi/jsonpointer v0.22.5 h1:8on/0Yp4uTb9f4XvTrM2+1CPrV05QPZXu+rvu2o9jcA=
github.com/go-openapi/jsonpointer v0.22.5/go.mod h1:gyUR3sCvGSWchA2sUBJGluYMbe1zazrYWIkWPjjMUY0=
github.com/go-openapi/jsonreference v0.21.5 h1:6uCGVXU/aNF13AQNggxfysJ+5ZcU4nEAe+pJyVWRdiE=
github.com/go-openapi/jsonreference v0.21.5/go.mod h1:u25Bw85sX4E2jzFodh1FOKMTZLcfifd1Q+iKKOUxExw=
github.com/go-openapi/loads v0.23.3 h1:g5Xap1JfwKkUnZdn+S0L3SzBDpcTIYzZ5Qaag0YDkKQ=
github.com/go-openapi/loads v0.23.3/go.mod h1:NOH07zLajXo8y55hom0omlHWDVVvCwBM/S+csCK8LqA=
github.com/go-openapi/runtime v0.29.3 h1:h5twGaEqxtQg40ePiYm9vFFH1q06Czd7Ot6ufdK0w/Y=
github.com/go-openapi/runtime v0.29.3/go.mod h1:8A1W0/L5eyNJvKciqZtvIVQvYO66NlB7INMSZ9bw/oI=
github.com/go-openapi/spec v0.22.4 h1:4pxGjip
gitextract_55jcywba/
├── .coderabbit.yaml
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ └── feature_request.md
│ ├── PULL_REQUEST_TEMPLATE.md
│ ├── renovate-base.json5
│ ├── renovate-earthly.json5
│ ├── renovate-entrypoint.sh
│ ├── renovate-nix.json5
│ ├── renovate.json5
│ └── workflows/
│ ├── backport.yml
│ ├── ci.yml
│ ├── commands.yml
│ ├── renovate.yml
│ ├── stale.yml
│ └── tag.yml
├── .gitignore
├── .golangci.yml
├── CODEOWNERS
├── DCO
├── LICENSE
├── OWNERS.md
├── PROJECT
├── README.md
├── RELEASE.md
├── SECURITY.md
├── apis/
│ ├── apis.go
│ ├── changelogs/
│ │ └── proto/
│ │ └── v1alpha1/
│ │ ├── changelog.pb.go
│ │ ├── changelog.proto
│ │ └── changelog_grpc.pb.go
│ ├── pipelineinspector/
│ │ └── proto/
│ │ └── v1alpha1/
│ │ ├── pipeline_inspector.pb.go
│ │ ├── pipeline_inspector.proto
│ │ └── pipeline_inspector_grpc.pb.go
│ └── proto/
│ └── v1alpha1/
│ ├── ess.pb.go
│ ├── ess.proto
│ └── ess_grpc.pb.go
├── buf.gen.yaml
├── buf.yaml
├── flake.nix
├── generate.go
├── go.mod
├── go.sum
├── gomod2nix.toml
├── hack/
│ ├── boilerplate.go.txt
│ └── linter-violation.tmpl
├── nix/
│ ├── apps.nix
│ └── checks.nix
├── nix.sh
├── pkg/
│ ├── certificates/
│ │ ├── certificates.go
│ │ ├── certificates_test.go
│ │ └── test-data/
│ │ ├── certs/
│ │ │ ├── ca.crt
│ │ │ ├── tls.crt
│ │ │ └── tls.key
│ │ ├── invalid-certs/
│ │ │ ├── ca.crt
│ │ │ ├── tls.crt
│ │ │ └── tls.key
│ │ └── no-ca/
│ │ ├── tls.crt
│ │ └── tls.key
│ ├── conditions/
│ │ ├── manager.go
│ │ └── manager_test.go
│ ├── controller/
│ │ ├── gate.go
│ │ └── options.go
│ ├── errors/
│ │ ├── errors.go
│ │ ├── errors_test.go
│ │ ├── reconcile.go
│ │ └── reconcile_test.go
│ ├── event/
│ │ ├── event.go
│ │ └── event_test.go
│ ├── feature/
│ │ ├── feature.go
│ │ ├── feature_test.go
│ │ └── features.go
│ ├── fieldpath/
│ │ ├── fieldpath.go
│ │ ├── fieldpath_test.go
│ │ ├── merge.go
│ │ ├── merge_test.go
│ │ ├── paved.go
│ │ └── paved_test.go
│ ├── gate/
│ │ ├── gate.go
│ │ └── gate_test.go
│ ├── logging/
│ │ ├── klog.go
│ │ └── logging.go
│ ├── meta/
│ │ ├── meta.go
│ │ └── meta_test.go
│ ├── password/
│ │ ├── password.go
│ │ └── password_test.go
│ ├── ratelimiter/
│ │ ├── default.go
│ │ ├── reconciler.go
│ │ └── reconciler_test.go
│ ├── reconciler/
│ │ ├── customresourcesgate/
│ │ │ ├── reconciler.go
│ │ │ ├── reconciler_test.go
│ │ │ └── setup.go
│ │ ├── doc.go
│ │ ├── managed/
│ │ │ ├── api.go
│ │ │ ├── api_test.go
│ │ │ ├── changelogger.go
│ │ │ ├── changelogger_test.go
│ │ │ ├── doc.go
│ │ │ ├── metrics.go
│ │ │ ├── policies.go
│ │ │ ├── reconciler.go
│ │ │ ├── reconciler_deprecated.go
│ │ │ ├── reconciler_legacy_test.go
│ │ │ ├── reconciler_modern_test.go
│ │ │ └── reconciler_typed.go
│ │ └── providerconfig/
│ │ ├── reconciler.go
│ │ └── reconciler_test.go
│ ├── reference/
│ │ ├── namespaced_reference.go
│ │ ├── namespaced_reference_test.go
│ │ ├── reference.go
│ │ └── reference_test.go
│ ├── resource/
│ │ ├── api.go
│ │ ├── api_test.go
│ │ ├── doc.go
│ │ ├── enqueue_handlers.go
│ │ ├── enqueue_handlers_test.go
│ │ ├── fake/
│ │ │ └── mocks.go
│ │ ├── interfaces.go
│ │ ├── interfaces_test.go
│ │ ├── late_initializer.go
│ │ ├── late_initializer_test.go
│ │ ├── predicates.go
│ │ ├── predicates_test.go
│ │ ├── providerconfig.go
│ │ ├── providerconfig_test.go
│ │ ├── reference.go
│ │ ├── reference_test.go
│ │ ├── resource.go
│ │ ├── resource_test.go
│ │ └── unstructured/
│ │ ├── claim/
│ │ │ ├── claim.go
│ │ │ ├── claim_test.go
│ │ │ └── zz_generated.deepcopy.go
│ │ ├── client.go
│ │ ├── client_test.go
│ │ ├── composed/
│ │ │ ├── composed.go
│ │ │ ├── composed_test.go
│ │ │ └── zz_generated.deepcopy.go
│ │ ├── composite/
│ │ │ ├── composite.go
│ │ │ ├── composite_test.go
│ │ │ └── zz_generated.deepcopy.go
│ │ ├── generate.go
│ │ └── reference/
│ │ └── reference.go
│ ├── statemetrics/
│ │ ├── mr_state_metrics.go
│ │ └── state_recorder.go
│ ├── test/
│ │ ├── cmp.go
│ │ ├── doc.go
│ │ ├── fake.go
│ │ └── retry.go
│ ├── version/
│ │ ├── fake/
│ │ │ └── mocks.go
│ │ ├── version.go
│ │ └── version_test.go
│ ├── webhook/
│ │ ├── mutator.go
│ │ ├── mutator_test.go
│ │ ├── validator.go
│ │ └── validator_test.go
│ ├── xcrd/
│ │ ├── composite.go
│ │ ├── crd.go
│ │ ├── crd_test.go
│ │ ├── fuzz_test.go
│ │ └── schemas.go
│ └── xpkg/
│ ├── build.go
│ ├── build_test.go
│ ├── cache.go
│ ├── cache_test.go
│ ├── client.go
│ ├── client_test.go
│ ├── config.go
│ ├── config_test.go
│ ├── doc.go
│ ├── fake/
│ │ ├── config.go
│ │ └── mocks.go
│ ├── fetch.go
│ ├── find.go
│ ├── find_test.go
│ ├── fuzz_test.go
│ ├── layers.go
│ ├── lint.go
│ ├── lint_test.go
│ ├── name.go
│ ├── name_test.go
│ ├── parser/
│ │ ├── examples/
│ │ │ ├── parser.go
│ │ │ └── parser_test.go
│ │ ├── fsreader.go
│ │ ├── fuzz_test.go
│ │ ├── linter.go
│ │ ├── linter_test.go
│ │ ├── parser.go
│ │ ├── parser_test.go
│ │ └── yaml/
│ │ └── parser.go
│ ├── reader.go
│ ├── scheme.go
│ ├── scheme_test.go
│ ├── signature/
│ │ ├── attestation.go
│ │ ├── doc.go
│ │ └── validate.go
│ ├── testdata/
│ │ ├── examples/
│ │ │ ├── ec2/
│ │ │ │ ├── instance.yaml
│ │ │ │ └── internetgateway.yaml
│ │ │ ├── ecr/
│ │ │ │ └── repository.yaml
│ │ │ └── provider.yaml
│ │ ├── provider_meta.yaml
│ │ └── providerconfigs.helm.crossplane.io.yaml
│ └── validate.go
└── test/
└── fuzz/
└── oss_fuzz_build.sh
SYMBOL INDEX (1933 symbols across 136 files)
FILE: apis/changelogs/proto/v1alpha1/changelog.pb.go
constant _ (line 35) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
constant _ (line 37) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
type OperationType (line 42) | type OperationType
method Enum (line 67) | func (x OperationType) Enum() *OperationType {
method String (line 73) | func (x OperationType) String() string {
method Descriptor (line 77) | func (OperationType) Descriptor() protoreflect.EnumDescriptor {
method Type (line 81) | func (OperationType) Type() protoreflect.EnumType {
method Number (line 85) | func (x OperationType) Number() protoreflect.EnumNumber {
method EnumDescriptor (line 90) | func (OperationType) EnumDescriptor() ([]byte, []int) {
constant OperationType_OPERATION_TYPE_UNSPECIFIED (line 45) | OperationType_OPERATION_TYPE_UNSPECIFIED OperationType = 0
constant OperationType_OPERATION_TYPE_CREATE (line 46) | OperationType_OPERATION_TYPE_CREATE OperationType = 1
constant OperationType_OPERATION_TYPE_UPDATE (line 47) | OperationType_OPERATION_TYPE_UPDATE OperationType = 2
constant OperationType_OPERATION_TYPE_DELETE (line 48) | OperationType_OPERATION_TYPE_DELETE OperationType = 3
type SendChangeLogRequest (line 95) | type SendChangeLogRequest struct
method Reset (line 103) | func (x *SendChangeLogRequest) Reset() {
method String (line 110) | func (x *SendChangeLogRequest) String() string {
method ProtoMessage (line 114) | func (*SendChangeLogRequest) ProtoMessage() {}
method ProtoReflect (line 116) | func (x *SendChangeLogRequest) ProtoReflect() protoreflect.Message {
method Descriptor (line 129) | func (*SendChangeLogRequest) Descriptor() ([]byte, []int) {
method GetEntry (line 133) | func (x *SendChangeLogRequest) GetEntry() *ChangeLogEntry {
type ChangeLogEntry (line 142) | type ChangeLogEntry struct
method Reset (line 173) | func (x *ChangeLogEntry) Reset() {
method String (line 180) | func (x *ChangeLogEntry) String() string {
method ProtoMessage (line 184) | func (*ChangeLogEntry) ProtoMessage() {}
method ProtoReflect (line 186) | func (x *ChangeLogEntry) ProtoReflect() protoreflect.Message {
method Descriptor (line 199) | func (*ChangeLogEntry) Descriptor() ([]byte, []int) {
method GetTimestamp (line 203) | func (x *ChangeLogEntry) GetTimestamp() *timestamppb.Timestamp {
method GetProvider (line 210) | func (x *ChangeLogEntry) GetProvider() string {
method GetApiVersion (line 217) | func (x *ChangeLogEntry) GetApiVersion() string {
method GetKind (line 224) | func (x *ChangeLogEntry) GetKind() string {
method GetName (line 231) | func (x *ChangeLogEntry) GetName() string {
method GetExternalName (line 238) | func (x *ChangeLogEntry) GetExternalName() string {
method GetOperation (line 245) | func (x *ChangeLogEntry) GetOperation() OperationType {
method GetSnapshot (line 252) | func (x *ChangeLogEntry) GetSnapshot() *structpb.Struct {
method GetErrorMessage (line 259) | func (x *ChangeLogEntry) GetErrorMessage() string {
method GetAdditionalDetails (line 266) | func (x *ChangeLogEntry) GetAdditionalDetails() map[string]string {
type SendChangeLogResponse (line 276) | type SendChangeLogResponse struct
method Reset (line 282) | func (x *SendChangeLogResponse) Reset() {
method String (line 289) | func (x *SendChangeLogResponse) String() string {
method ProtoMessage (line 293) | func (*SendChangeLogResponse) ProtoMessage() {}
method ProtoReflect (line 295) | func (x *SendChangeLogResponse) ProtoReflect() protoreflect.Message {
method Descriptor (line 308) | func (*SendChangeLogResponse) Descriptor() ([]byte, []int) {
constant file_apis_changelogs_proto_v1alpha1_changelog_proto_rawDesc (line 314) | file_apis_changelogs_proto_v1alpha1_changelog_proto_rawDesc = "" +
function file_apis_changelogs_proto_v1alpha1_changelog_proto_rawDescGZIP (line 350) | func file_apis_changelogs_proto_v1alpha1_changelog_proto_rawDescGZIP() [...
function init (line 383) | func init() { file_apis_changelogs_proto_v1alpha1_changelog_proto_init() }
function file_apis_changelogs_proto_v1alpha1_changelog_proto_init (line 384) | func file_apis_changelogs_proto_v1alpha1_changelog_proto_init() {
FILE: apis/changelogs/proto/v1alpha1/changelog_grpc.pb.go
constant _ (line 33) | _ = grpc.SupportPackageIsVersion9
constant ChangeLogService_SendChangeLog_FullMethodName (line 36) | ChangeLogService_SendChangeLog_FullMethodName = "/changelogs.proto.v1alp...
type ChangeLogServiceClient (line 45) | type ChangeLogServiceClient interface
type changeLogServiceClient (line 50) | type changeLogServiceClient struct
method SendChangeLog (line 58) | func (c *changeLogServiceClient) SendChangeLog(ctx context.Context, in...
function NewChangeLogServiceClient (line 54) | func NewChangeLogServiceClient(cc grpc.ClientConnInterface) ChangeLogSer...
type ChangeLogServiceServer (line 74) | type ChangeLogServiceServer interface
type UnimplementedChangeLogServiceServer (line 85) | type UnimplementedChangeLogServiceServer struct
method SendChangeLog (line 87) | func (UnimplementedChangeLogServiceServer) SendChangeLog(context.Conte...
method mustEmbedUnimplementedChangeLogServiceServer (line 90) | func (UnimplementedChangeLogServiceServer) mustEmbedUnimplementedChang...
method testEmbeddedByValue (line 91) | func (UnimplementedChangeLogServiceServer) testEmbeddedByValue() ...
type UnsafeChangeLogServiceServer (line 96) | type UnsafeChangeLogServiceServer interface
function RegisterChangeLogServiceServer (line 100) | func RegisterChangeLogServiceServer(s grpc.ServiceRegistrar, srv ChangeL...
function _ChangeLogService_SendChangeLog_Handler (line 111) | func _ChangeLogService_SendChangeLog_Handler(srv interface{}, ctx contex...
FILE: apis/pipelineinspector/proto/v1alpha1/pipeline_inspector.pb.go
constant _ (line 37) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
constant _ (line 39) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
type EmitRequestRequest (line 43) | type EmitRequestRequest struct
method Reset (line 54) | func (x *EmitRequestRequest) Reset() {
method String (line 61) | func (x *EmitRequestRequest) String() string {
method ProtoMessage (line 65) | func (*EmitRequestRequest) ProtoMessage() {}
method ProtoReflect (line 67) | func (x *EmitRequestRequest) ProtoReflect() protoreflect.Message {
method Descriptor (line 80) | func (*EmitRequestRequest) Descriptor() ([]byte, []int) {
method GetRequest (line 84) | func (x *EmitRequestRequest) GetRequest() []byte {
method GetMeta (line 91) | func (x *EmitRequestRequest) GetMeta() *StepMeta {
type EmitRequestResponse (line 99) | type EmitRequestResponse struct
method Reset (line 105) | func (x *EmitRequestResponse) Reset() {
method String (line 112) | func (x *EmitRequestResponse) String() string {
method ProtoMessage (line 116) | func (*EmitRequestResponse) ProtoMessage() {}
method ProtoReflect (line 118) | func (x *EmitRequestResponse) ProtoReflect() protoreflect.Message {
method Descriptor (line 131) | func (*EmitRequestResponse) Descriptor() ([]byte, []int) {
type EmitResponseRequest (line 136) | type EmitResponseRequest struct
method Reset (line 150) | func (x *EmitResponseRequest) Reset() {
method String (line 157) | func (x *EmitResponseRequest) String() string {
method ProtoMessage (line 161) | func (*EmitResponseRequest) ProtoMessage() {}
method ProtoReflect (line 163) | func (x *EmitResponseRequest) ProtoReflect() protoreflect.Message {
method Descriptor (line 176) | func (*EmitResponseRequest) Descriptor() ([]byte, []int) {
method GetResponse (line 180) | func (x *EmitResponseRequest) GetResponse() []byte {
method GetError (line 187) | func (x *EmitResponseRequest) GetError() string {
method GetMeta (line 194) | func (x *EmitResponseRequest) GetMeta() *StepMeta {
type EmitResponseResponse (line 202) | type EmitResponseResponse struct
method Reset (line 208) | func (x *EmitResponseResponse) Reset() {
method String (line 215) | func (x *EmitResponseResponse) String() string {
method ProtoMessage (line 219) | func (*EmitResponseResponse) ProtoMessage() {}
method ProtoReflect (line 221) | func (x *EmitResponseResponse) ProtoReflect() protoreflect.Message {
method Descriptor (line 234) | func (*EmitResponseResponse) Descriptor() ([]byte, []int) {
type StepMeta (line 240) | type StepMeta struct
method Reset (line 269) | func (x *StepMeta) Reset() {
method String (line 276) | func (x *StepMeta) String() string {
method ProtoMessage (line 280) | func (*StepMeta) ProtoMessage() {}
method ProtoReflect (line 282) | func (x *StepMeta) ProtoReflect() protoreflect.Message {
method Descriptor (line 295) | func (*StepMeta) Descriptor() ([]byte, []int) {
method GetTimestamp (line 299) | func (x *StepMeta) GetTimestamp() *timestamppb.Timestamp {
method GetTraceId (line 306) | func (x *StepMeta) GetTraceId() string {
method GetSpanId (line 313) | func (x *StepMeta) GetSpanId() string {
method GetStepIndex (line 320) | func (x *StepMeta) GetStepIndex() int32 {
method GetStepName (line 327) | func (x *StepMeta) GetStepName() string {
method GetIteration (line 334) | func (x *StepMeta) GetIteration() int32 {
method GetFunctionName (line 341) | func (x *StepMeta) GetFunctionName() string {
method GetContext (line 348) | func (x *StepMeta) GetContext() isStepMeta_Context {
method GetOperationMeta (line 355) | func (x *StepMeta) GetOperationMeta() *OperationMeta {
method GetCompositionMeta (line 364) | func (x *StepMeta) GetCompositionMeta() *CompositionMeta {
type isStepMeta_Context (line 373) | type isStepMeta_Context interface
type StepMeta_OperationMeta (line 377) | type StepMeta_OperationMeta struct
method isStepMeta_Context (line 385) | func (*StepMeta_OperationMeta) isStepMeta_Context() {}
type StepMeta_CompositionMeta (line 381) | type StepMeta_CompositionMeta struct
method isStepMeta_Context (line 387) | func (*StepMeta_CompositionMeta) isStepMeta_Context() {}
type CompositionMeta (line 390) | type CompositionMeta struct
method Reset (line 408) | func (x *CompositionMeta) Reset() {
method String (line 415) | func (x *CompositionMeta) String() string {
method ProtoMessage (line 419) | func (*CompositionMeta) ProtoMessage() {}
method ProtoReflect (line 421) | func (x *CompositionMeta) ProtoReflect() protoreflect.Message {
method Descriptor (line 434) | func (*CompositionMeta) Descriptor() ([]byte, []int) {
method GetCompositionName (line 438) | func (x *CompositionMeta) GetCompositionName() string {
method GetCompositeResourceUid (line 445) | func (x *CompositionMeta) GetCompositeResourceUid() string {
method GetCompositeResourceName (line 452) | func (x *CompositionMeta) GetCompositeResourceName() string {
method GetCompositeResourceNamespace (line 459) | func (x *CompositionMeta) GetCompositeResourceNamespace() string {
method GetCompositeResourceApiVersion (line 466) | func (x *CompositionMeta) GetCompositeResourceApiVersion() string {
method GetCompositeResourceKind (line 473) | func (x *CompositionMeta) GetCompositeResourceKind() string {
type OperationMeta (line 481) | type OperationMeta struct
method Reset (line 491) | func (x *OperationMeta) Reset() {
method String (line 498) | func (x *OperationMeta) String() string {
method ProtoMessage (line 502) | func (*OperationMeta) ProtoMessage() {}
method ProtoReflect (line 504) | func (x *OperationMeta) ProtoReflect() protoreflect.Message {
method Descriptor (line 517) | func (*OperationMeta) Descriptor() ([]byte, []int) {
method GetOperationName (line 521) | func (x *OperationMeta) GetOperationName() string {
method GetOperationUid (line 528) | func (x *OperationMeta) GetOperationUid() string {
constant file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_rawDesc (line 537) | file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_rawD...
function file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_rawDescGZIP (line 580) | func file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto...
function init (line 615) | func init() { file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspec...
function file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto_init (line 616) | func file_apis_pipelineinspector_proto_v1alpha1_pipeline_inspector_proto...
FILE: apis/pipelineinspector/proto/v1alpha1/pipeline_inspector_grpc.pb.go
constant _ (line 36) | _ = grpc.SupportPackageIsVersion9
constant PipelineInspectorService_EmitRequest_FullMethodName (line 39) | PipelineInspectorService_EmitRequest_FullMethodName = "/crossplane.pipe...
constant PipelineInspectorService_EmitResponse_FullMethodName (line 40) | PipelineInspectorService_EmitResponse_FullMethodName = "/crossplane.pipe...
type PipelineInspectorServiceClient (line 50) | type PipelineInspectorServiceClient interface
type pipelineInspectorServiceClient (line 59) | type pipelineInspectorServiceClient struct
method EmitRequest (line 67) | func (c *pipelineInspectorServiceClient) EmitRequest(ctx context.Conte...
method EmitResponse (line 77) | func (c *pipelineInspectorServiceClient) EmitResponse(ctx context.Cont...
function NewPipelineInspectorServiceClient (line 63) | func NewPipelineInspectorServiceClient(cc grpc.ClientConnInterface) Pipe...
type PipelineInspectorServiceServer (line 94) | type PipelineInspectorServiceServer interface
type UnimplementedPipelineInspectorServiceServer (line 109) | type UnimplementedPipelineInspectorServiceServer struct
method EmitRequest (line 111) | func (UnimplementedPipelineInspectorServiceServer) EmitRequest(context...
method EmitResponse (line 114) | func (UnimplementedPipelineInspectorServiceServer) EmitResponse(contex...
method mustEmbedUnimplementedPipelineInspectorServiceServer (line 117) | func (UnimplementedPipelineInspectorServiceServer) mustEmbedUnimplemen...
method testEmbeddedByValue (line 119) | func (UnimplementedPipelineInspectorServiceServer) testEmbeddedByValue...
type UnsafePipelineInspectorServiceServer (line 124) | type UnsafePipelineInspectorServiceServer interface
function RegisterPipelineInspectorServiceServer (line 128) | func RegisterPipelineInspectorServiceServer(s grpc.ServiceRegistrar, srv...
function _PipelineInspectorService_EmitRequest_Handler (line 139) | func _PipelineInspectorService_EmitRequest_Handler(srv interface{}, ctx ...
function _PipelineInspectorService_EmitResponse_Handler (line 157) | func _PipelineInspectorService_EmitResponse_Handler(srv interface{}, ctx...
FILE: apis/proto/v1alpha1/ess.pb.go
constant _ (line 33) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
constant _ (line 35) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
type ConfigReference (line 39) | type ConfigReference struct
method Reset (line 48) | func (x *ConfigReference) Reset() {
method String (line 55) | func (x *ConfigReference) String() string {
method ProtoMessage (line 59) | func (*ConfigReference) ProtoMessage() {}
method ProtoReflect (line 61) | func (x *ConfigReference) ProtoReflect() protoreflect.Message {
method Descriptor (line 74) | func (*ConfigReference) Descriptor() ([]byte, []int) {
method GetApiVersion (line 78) | func (x *ConfigReference) GetApiVersion() string {
method GetKind (line 85) | func (x *ConfigReference) GetKind() string {
method GetName (line 92) | func (x *ConfigReference) GetName() string {
type Secret (line 100) | type Secret struct
method Reset (line 109) | func (x *Secret) Reset() {
method String (line 116) | func (x *Secret) String() string {
method ProtoMessage (line 120) | func (*Secret) ProtoMessage() {}
method ProtoReflect (line 122) | func (x *Secret) ProtoReflect() protoreflect.Message {
method Descriptor (line 135) | func (*Secret) Descriptor() ([]byte, []int) {
method GetScopedName (line 139) | func (x *Secret) GetScopedName() string {
method GetMetadata (line 146) | func (x *Secret) GetMetadata() map[string]string {
method GetData (line 153) | func (x *Secret) GetData() map[string][]byte {
type GetSecretRequest (line 161) | type GetSecretRequest struct
method Reset (line 169) | func (x *GetSecretRequest) Reset() {
method String (line 176) | func (x *GetSecretRequest) String() string {
method ProtoMessage (line 180) | func (*GetSecretRequest) ProtoMessage() {}
method ProtoReflect (line 182) | func (x *GetSecretRequest) ProtoReflect() protoreflect.Message {
method Descriptor (line 195) | func (*GetSecretRequest) Descriptor() ([]byte, []int) {
method GetConfig (line 199) | func (x *GetSecretRequest) GetConfig() *ConfigReference {
method GetSecret (line 206) | func (x *GetSecretRequest) GetSecret() *Secret {
type GetSecretResponse (line 214) | type GetSecretResponse struct
method Reset (line 221) | func (x *GetSecretResponse) Reset() {
method String (line 228) | func (x *GetSecretResponse) String() string {
method ProtoMessage (line 232) | func (*GetSecretResponse) ProtoMessage() {}
method ProtoReflect (line 234) | func (x *GetSecretResponse) ProtoReflect() protoreflect.Message {
method Descriptor (line 247) | func (*GetSecretResponse) Descriptor() ([]byte, []int) {
method GetSecret (line 251) | func (x *GetSecretResponse) GetSecret() *Secret {
type ApplySecretRequest (line 259) | type ApplySecretRequest struct
method Reset (line 267) | func (x *ApplySecretRequest) Reset() {
method String (line 274) | func (x *ApplySecretRequest) String() string {
method ProtoMessage (line 278) | func (*ApplySecretRequest) ProtoMessage() {}
method ProtoReflect (line 280) | func (x *ApplySecretRequest) ProtoReflect() protoreflect.Message {
method Descriptor (line 293) | func (*ApplySecretRequest) Descriptor() ([]byte, []int) {
method GetConfig (line 297) | func (x *ApplySecretRequest) GetConfig() *ConfigReference {
method GetSecret (line 304) | func (x *ApplySecretRequest) GetSecret() *Secret {
type ApplySecretResponse (line 312) | type ApplySecretResponse struct
method Reset (line 319) | func (x *ApplySecretResponse) Reset() {
method String (line 326) | func (x *ApplySecretResponse) String() string {
method ProtoMessage (line 330) | func (*ApplySecretResponse) ProtoMessage() {}
method ProtoReflect (line 332) | func (x *ApplySecretResponse) ProtoReflect() protoreflect.Message {
method Descriptor (line 345) | func (*ApplySecretResponse) Descriptor() ([]byte, []int) {
method GetChanged (line 349) | func (x *ApplySecretResponse) GetChanged() bool {
type DeleteKeysRequest (line 357) | type DeleteKeysRequest struct
method Reset (line 365) | func (x *DeleteKeysRequest) Reset() {
method String (line 372) | func (x *DeleteKeysRequest) String() string {
method ProtoMessage (line 376) | func (*DeleteKeysRequest) ProtoMessage() {}
method ProtoReflect (line 378) | func (x *DeleteKeysRequest) ProtoReflect() protoreflect.Message {
method Descriptor (line 391) | func (*DeleteKeysRequest) Descriptor() ([]byte, []int) {
method GetConfig (line 395) | func (x *DeleteKeysRequest) GetConfig() *ConfigReference {
method GetSecret (line 402) | func (x *DeleteKeysRequest) GetSecret() *Secret {
type DeleteKeysResponse (line 410) | type DeleteKeysResponse struct
method Reset (line 416) | func (x *DeleteKeysResponse) Reset() {
method String (line 423) | func (x *DeleteKeysResponse) String() string {
method ProtoMessage (line 427) | func (*DeleteKeysResponse) ProtoMessage() {}
method ProtoReflect (line 429) | func (x *DeleteKeysResponse) ProtoReflect() protoreflect.Message {
method Descriptor (line 442) | func (*DeleteKeysResponse) Descriptor() ([]byte, []int) {
constant file_apis_proto_v1alpha1_ess_proto_rawDesc (line 448) | file_apis_proto_v1alpha1_ess_proto_rawDesc = "" +
function file_apis_proto_v1alpha1_ess_proto_rawDescGZIP (line 492) | func file_apis_proto_v1alpha1_ess_proto_rawDescGZIP() []byte {
function init (line 535) | func init() { file_apis_proto_v1alpha1_ess_proto_init() }
function file_apis_proto_v1alpha1_ess_proto_init (line 536) | func file_apis_proto_v1alpha1_ess_proto_init() {
FILE: apis/proto/v1alpha1/ess_grpc.pb.go
constant _ (line 33) | _ = grpc.SupportPackageIsVersion9
constant ExternalSecretStorePluginService_GetSecret_FullMethodName (line 36) | ExternalSecretStorePluginService_GetSecret_FullMethodName = "/ess.prot...
constant ExternalSecretStorePluginService_ApplySecret_FullMethodName (line 37) | ExternalSecretStorePluginService_ApplySecret_FullMethodName = "/ess.prot...
constant ExternalSecretStorePluginService_DeleteKeys_FullMethodName (line 38) | ExternalSecretStorePluginService_DeleteKeys_FullMethodName = "/ess.prot...
type ExternalSecretStorePluginServiceClient (line 46) | type ExternalSecretStorePluginServiceClient interface
type externalSecretStorePluginServiceClient (line 52) | type externalSecretStorePluginServiceClient struct
method GetSecret (line 60) | func (c *externalSecretStorePluginServiceClient) GetSecret(ctx context...
method ApplySecret (line 70) | func (c *externalSecretStorePluginServiceClient) ApplySecret(ctx conte...
method DeleteKeys (line 80) | func (c *externalSecretStorePluginServiceClient) DeleteKeys(ctx contex...
function NewExternalSecretStorePluginServiceClient (line 56) | func NewExternalSecretStorePluginServiceClient(cc grpc.ClientConnInterfa...
type ExternalSecretStorePluginServiceServer (line 95) | type ExternalSecretStorePluginServiceServer interface
type UnimplementedExternalSecretStorePluginServiceServer (line 107) | type UnimplementedExternalSecretStorePluginServiceServer struct
method GetSecret (line 109) | func (UnimplementedExternalSecretStorePluginServiceServer) GetSecret(c...
method ApplySecret (line 112) | func (UnimplementedExternalSecretStorePluginServiceServer) ApplySecret...
method DeleteKeys (line 115) | func (UnimplementedExternalSecretStorePluginServiceServer) DeleteKeys(...
method mustEmbedUnimplementedExternalSecretStorePluginServiceServer (line 118) | func (UnimplementedExternalSecretStorePluginServiceServer) mustEmbedUn...
method testEmbeddedByValue (line 120) | func (UnimplementedExternalSecretStorePluginServiceServer) testEmbedde...
type UnsafeExternalSecretStorePluginServiceServer (line 125) | type UnsafeExternalSecretStorePluginServiceServer interface
function RegisterExternalSecretStorePluginServiceServer (line 129) | func RegisterExternalSecretStorePluginServiceServer(s grpc.ServiceRegist...
function _ExternalSecretStorePluginService_GetSecret_Handler (line 140) | func _ExternalSecretStorePluginService_GetSecret_Handler(srv interface{}...
function _ExternalSecretStorePluginService_ApplySecret_Handler (line 158) | func _ExternalSecretStorePluginService_ApplySecret_Handler(srv interface...
function _ExternalSecretStorePluginService_DeleteKeys_Handler (line 176) | func _ExternalSecretStorePluginService_DeleteKeys_Handler(srv interface{...
FILE: pkg/certificates/certificates.go
constant errLoadCert (line 30) | errLoadCert = "cannot load certificate"
constant errLoadCA (line 31) | errLoadCA = "cannot load CA certificate"
constant errInvalidCA (line 32) | errInvalidCA = "invalid CA certificate"
function LoadMTLSConfig (line 36) | func LoadMTLSConfig(caPath, certPath, keyPath string, isServer bool) (*t...
FILE: pkg/certificates/certificates_test.go
constant caCertFileName (line 20) | caCertFileName = "ca.crt"
constant tlsCertFileName (line 21) | tlsCertFileName = "tls.crt"
constant tlsKeyFileName (line 22) | tlsKeyFileName = "tls.key"
function TestLoad (line 25) | func TestLoad(t *testing.T) {
FILE: pkg/conditions/manager.go
type ObjectWithConditions (line 27) | type ObjectWithConditions interface
type Manager (line 33) | type Manager interface
type ConditionSet (line 39) | type ConditionSet interface
type ObservedGenerationPropagationManager (line 50) | type ObservedGenerationPropagationManager struct
method For (line 53) | func (m ObservedGenerationPropagationManager) For(o ObjectWithConditio...
type observedGenerationPropagationConditionSet (line 59) | type observedGenerationPropagationConditionSet struct
method MarkConditions (line 64) | func (c *observedGenerationPropagationConditionSet) MarkConditions(con...
FILE: pkg/conditions/manager_test.go
function TestOGConditionSetMark (line 38) | func TestOGConditionSetMark(t *testing.T) {
function TestOGManagerFor (line 101) | func TestOGManagerFor(t *testing.T) {
function newManaged (line 129) | func newManaged(generation int64, conditions ...xpv2.Condition) *fake.Ma...
FILE: pkg/controller/gate.go
type Gate (line 8) | type Gate interface
FILE: pkg/controller/options.go
function DefaultOptions (line 36) | func DefaultOptions() Options {
type Options (line 48) | type Options struct
method ForControllerRuntime (line 83) | func (o Options) ForControllerRuntime() controller.Options {
type ESSOptions (line 94) | type ESSOptions struct
type MetricOptions (line 100) | type MetricOptions struct
type ChangeLogOptions (line 113) | type ChangeLogOptions struct
FILE: pkg/errors/errors.go
function New (line 31) | func New(text string) error { return errors.New(text) }
function Is (line 48) | func Is(err, target error) bool { return errors.Is(err, target) }
function As (line 66) | func As(err error, target any) bool { return errors.As(err, target) }
function Unwrap (line 70) | func Unwrap(err error) error { return errors.Unwrap(err) }
function Errorf (line 80) | func Errorf(format string, a ...any) error { return fmt.Errorf(format, a...
function WithMessage (line 84) | func WithMessage(err error, message string) error {
function WithMessagef (line 94) | func WithMessagef(err error, format string, args ...any) error {
function Wrap (line 103) | func Wrap(err error, message string) error {
function Wrapf (line 108) | func Wrapf(err error, format string, args ...any) error {
function Cause (line 115) | func Cause(err error) error {
type MultiError (line 133) | type MultiError interface
function Join (line 147) | func Join(errs ...error) MultiError {
type multiError (line 156) | type multiError struct
method Error (line 160) | func (m multiError) Error() string {
method Unwrap (line 164) | func (m multiError) Unwrap() []error {
FILE: pkg/errors/errors_test.go
function TestWrap (line 27) | func TestWrap(t *testing.T) {
function TestWrapf (line 63) | func TestWrapf(t *testing.T) {
function TestCause (line 101) | func TestCause(t *testing.T) {
FILE: pkg/errors/reconcile.go
function SilentlyRequeueOnConflict (line 29) | func SilentlyRequeueOnConflict(result reconcile.Result, err error) (reco...
function WithSilentRequeueOnConflict (line 39) | func WithSilentRequeueOnConflict(r reconcile.Reconciler) reconcile.Recon...
type silentlyRequeueOnConflict (line 43) | type silentlyRequeueOnConflict struct
method Reconcile (line 47) | func (r *silentlyRequeueOnConflict) Reconcile(ctx context.Context, req...
FILE: pkg/errors/reconcile_test.go
function TestSilentlyRequeueOnConflict (line 31) | func TestSilentlyRequeueOnConflict(t *testing.T) {
FILE: pkg/event/event.go
type Type (line 28) | type Type
constant TypeNormal (line 33) | TypeNormal Type = "Normal"
constant TypeWarning (line 34) | TypeWarning Type = "Warning"
type Reason (line 38) | type Reason
type Event (line 41) | type Event struct
function Normal (line 49) | func Normal(r Reason, message string, keysAndValues ...string) Event {
function Warning (line 62) | func Warning(r Reason, err error, keysAndValues ...string) Event {
type Recorder (line 75) | type Recorder interface
type APIRecorder (line 81) | type APIRecorder struct
method Event (line 98) | func (r *APIRecorder) Event(obj runtime.Object, e Event) {
method WithAnnotations (line 110) | func (r *APIRecorder) WithAnnotations(keysAndValues ...string) Recorder {
type FilterFn (line 89) | type FilterFn
function NewAPIRecorder (line 93) | func NewAPIRecorder(r record.EventRecorder, fns ...FilterFn) *APIRecorder {
function sliceMap (line 119) | func sliceMap(from []string, to map[string]string) {
type NopRecorder (line 127) | type NopRecorder struct
method Event (line 135) | func (r *NopRecorder) Event(_ runtime.Object, _ Event) {}
method WithAnnotations (line 138) | func (r *NopRecorder) WithAnnotations(_ ...string) Recorder { return r }
function NewNopRecorder (line 130) | func NewNopRecorder() *NopRecorder {
FILE: pkg/event/event_test.go
function TestSliceMap (line 25) | func TestSliceMap(t *testing.T) {
FILE: pkg/feature/feature.go
type Flag (line 25) | type Flag
type Flags (line 28) | type Flags struct
method Enable (line 34) | func (fs *Flags) Enable(f Flag) {
method Enabled (line 46) | func (fs *Flags) Enabled(f Flag) bool {
FILE: pkg/feature/feature_test.go
function TestEnable (line 25) | func TestEnable(t *testing.T) {
FILE: pkg/feature/features.go
constant EnableBetaManagementPolicies (line 22) | EnableBetaManagementPolicies Flag = "EnableBetaManagementPolicies"
constant EnableAlphaChangeLogs (line 27) | EnableAlphaChangeLogs Flag = "EnableAlphaChangeLogs"
FILE: pkg/fieldpath/fieldpath.go
type SegmentType (line 56) | type SegmentType
constant _ (line 60) | _ SegmentType = iota
constant SegmentField (line 61) | SegmentField
constant SegmentIndex (line 62) | SegmentIndex
type Segment (line 66) | type Segment struct
type Segments (line 73) | type Segments
method String (line 75) | func (sg Segments) String() string {
function FieldOrIndex (line 99) | func FieldOrIndex(s string) Segment {
function Field (line 114) | func Field(s string) Segment {
function Parse (line 119) | func Parse(path string) (Segments, error) {
constant period (line 140) | period = '.'
constant leftBracket (line 141) | leftBracket = '['
constant rightBracket (line 142) | rightBracket = ']'
constant wildcard (line 144) | wildcard = "*"
type itemType (line 147) | type itemType
constant itemError (line 150) | itemError itemType = iota
constant itemPeriod (line 151) | itemPeriod
constant itemLeftBracket (line 152) | itemLeftBracket
constant itemRightBracket (line 153) | itemRightBracket
constant itemField (line 154) | itemField
constant itemFieldOrIndex (line 155) | itemFieldOrIndex
constant itemEOL (line 156) | itemEOL
type item (line 159) | type item struct
type stateFn (line 165) | type stateFn
type lexer (line 169) | type lexer struct
method run (line 176) | func (l *lexer) run() {
method emit (line 184) | func (l *lexer) emit(t itemType) {
method errorf (line 195) | func (l *lexer) errorf(pos int, format string, args ...any) stateFn {
function lexField (line 200) | func lexField(l *lexer) stateFn {
function lexPeriod (line 231) | func lexPeriod(l *lexer) stateFn {
function lexLeftBracket (line 254) | func lexLeftBracket(l *lexer) stateFn {
function lexFieldOrIndex (line 268) | func lexFieldOrIndex(l *lexer) stateFn {
function lexRightBracket (line 290) | func lexRightBracket(l *lexer) stateFn {
FILE: pkg/fieldpath/fieldpath_test.go
function TestSegments (line 30) | func TestSegments(t *testing.T) {
function TestFieldOrIndex (line 79) | func TestFieldOrIndex(t *testing.T) {
function TestParse (line 131) | func TestParse(t *testing.T) {
FILE: pkg/fieldpath/merge.go
constant errInvalidMerge (line 28) | errInvalidMerge = "failed to merge values"
method MergeValue (line 33) | func (p *Paved) MergeValue(path string, value any, mo *MergeOptions) err...
function merge (line 54) | func merge(dst, src any, mergeOptions *MergeOptions) (any, error) {
function removeSourceDuplicates (line 84) | func removeSourceDuplicates(dst, src any) any {
type MergeOptions (line 120) | type MergeOptions struct
method mergoConfiguration (line 130) | func (mo *MergeOptions) mergoConfiguration() []func(*mergo.Config) {
method isAppendSlice (line 148) | func (mo *MergeOptions) isAppendSlice() bool {
FILE: pkg/fieldpath/merge_test.go
function TestMergeValue (line 31) | func TestMergeValue(t *testing.T) {
FILE: pkg/fieldpath/paved.go
constant DefaultMaxFieldPathIndex (line 29) | DefaultMaxFieldPathIndex = 1024
type notFoundError (line 31) | type notFoundError struct
method IsNotFound (line 35) | func (e notFoundError) IsNotFound() bool {
function IsNotFound (line 42) | func IsNotFound(err error) bool {
type Paved (line 52) | type Paved struct
method maxFieldPathIndexEnabled (line 85) | func (p *Paved) maxFieldPathIndexEnabled() bool {
method MarshalJSON (line 90) | func (p Paved) MarshalJSON() ([]byte, error) {
method UnmarshalJSON (line 95) | func (p *Paved) UnmarshalJSON(data []byte) error {
method UnstructuredContent (line 100) | func (p *Paved) UnstructuredContent() map[string]any {
method SetUnstructuredContent (line 109) | func (p *Paved) SetUnstructuredContent(content map[string]any) {
method getValue (line 113) | func (p *Paved) getValue(s Segments) (any, error) {
method ExpandWildcards (line 171) | func (p *Paved) ExpandWildcards(path string) ([]string, error) {
method GetValue (line 252) | func (p *Paved) GetValue(path string) (any, error) {
method GetValueInto (line 262) | func (p *Paved) GetValueInto(path string, out any) error {
method GetString (line 277) | func (p *Paved) GetString(path string) (string, error) {
method GetStringArray (line 292) | func (p *Paved) GetStringArray(path string) ([]string, error) {
method GetStringObject (line 317) | func (p *Paved) GetStringObject(path string) (map[string]string, error) {
method GetBool (line 343) | func (p *Paved) GetBool(path string) (bool, error) {
method GetInteger (line 358) | func (p *Paved) GetInteger(path string) (int64, error) {
method setValue (line 372) | func (p *Paved) setValue(s Segments, value any) error {
method SetValue (line 505) | func (p *Paved) SetValue(path string, value any) error {
method validateSegments (line 514) | func (p *Paved) validateSegments(s Segments) error {
method SetString (line 529) | func (p *Paved) SetString(path, value string) error {
method SetBool (line 534) | func (p *Paved) SetBool(path string, value bool) error {
method SetNumber (line 539) | func (p *Paved) SetNumber(path string, value float64) error {
method DeleteField (line 548) | func (p *Paved) DeleteField(path string) error {
method delete (line 557) | func (p *Paved) delete(segments Segments) error { //nolint:gocognit //...
type PavedOption (line 58) | type PavedOption
function PaveObject (line 62) | func PaveObject(o runtime.Object, opts ...PavedOption) (*Paved, error) {
function Pave (line 68) | func Pave(object map[string]any, opts ...PavedOption) *Paved {
function WithMaxFieldPathIndex (line 79) | func WithMaxFieldPathIndex(maxIndex uint) PavedOption {
function getValueFromInterface (line 117) | func getValueFromInterface(it any, s Segments) (any, error) {
function expandWildcards (line 190) | func expandWildcards(data any, segments Segments) ([]Segments, error) { ...
function toValidJSON (line 425) | func toValidJSON(value any) (any, error) {
function prepareElement (line 440) | func prepareElement(array []any, current, next Segment) {
function prepareField (line 472) | func prepareField(object map[string]any, current, next Segment) {
function deleteField (line 639) | func deleteField(obj any, s Segment) (any, error) {
FILE: pkg/fieldpath/paved_test.go
function TestIsNotFound (line 33) | func TestIsNotFound(t *testing.T) {
function TestGetValue (line 66) | func TestGetValue(t *testing.T) {
function TestGetValueInto (line 193) | func TestGetValueInto(t *testing.T) {
function TestGetString (line 272) | func TestGetString(t *testing.T) {
function TestGetStringArray (line 327) | func TestGetStringArray(t *testing.T) {
function TestGetStringObject (line 390) | func TestGetStringObject(t *testing.T) {
function TestGetBool (line 453) | func TestGetBool(t *testing.T) {
function TestGetInteger (line 508) | func TestGetInteger(t *testing.T) {
function TestSetValue (line 563) | func TestSetValue(t *testing.T) {
function TestExpandWildcards (line 843) | func TestExpandWildcards(t *testing.T) {
function TestDeleteField (line 1012) | func TestDeleteField(t *testing.T) {
FILE: pkg/gate/gate.go
type Gate (line 26) | type Gate struct
type gated (line 33) | type gated struct
method Register (line 45) | func (g *Gate[T]) Register(fn func(), depends ...T) {
method Set (line 55) | func (g *Gate[T]) Set(condition T, value bool) bool {
method process (line 79) | func (g *Gate[T]) process() {
FILE: pkg/gate/gate_test.go
function TestGateRegister (line 29) | func TestGateRegister(t *testing.T) {
function TestGateIntegration (line 92) | func TestGateIntegration(t *testing.T) {
function TestGateConcurrency (line 246) | func TestGateConcurrency(t *testing.T) {
function TestGateTypeSafety (line 286) | func TestGateTypeSafety(t *testing.T) {
FILE: pkg/logging/klog.go
function SetFilteredKlogLogger (line 17) | func SetFilteredKlogLogger(log logr.Logger) {
type requestThrottlingFilter (line 30) | type requestThrottlingFilter struct
method Info (line 34) | func (l *requestThrottlingFilter) Info(level int, msg string, keysAndV...
method Enabled (line 42) | func (l *requestThrottlingFilter) Enabled(level int) bool {
method klogToLogrLevel (line 46) | func (l *requestThrottlingFilter) klogToLogrLevel(klogLvl int) int {
method WithCallDepth (line 56) | func (l *requestThrottlingFilter) WithCallDepth(depth int) logr.LogSink {
FILE: pkg/logging/logging.go
type Logger (line 44) | type Logger interface
function NewNopLogger (line 65) | func NewNopLogger() Logger { return nopLogger{} }
type nopLogger (line 67) | type nopLogger struct
method Info (line 69) | func (l nopLogger) Info(_ string, _ ...any) {}
method Debug (line 70) | func (l nopLogger) Debug(_ string, _ ...any) {}
method WithValues (line 71) | func (l nopLogger) WithValues(_ ...any) Logger { return nopLogger{} }
function NewLogrLogger (line 76) | func NewLogrLogger(l logr.Logger) Logger {
type logrLogger (line 80) | type logrLogger struct
method Info (line 84) | func (l logrLogger) Info(msg string, keysAndValues ...any) {
method Debug (line 88) | func (l logrLogger) Debug(msg string, keysAndValues ...any) {
method WithValues (line 92) | func (l logrLogger) WithValues(keysAndValues ...any) Logger {
FILE: pkg/meta/meta.go
constant AnnotationKeyExternalName (line 38) | AnnotationKeyExternalName = "crossplane.io/external-name"
constant AnnotationKeyExternalCreatePending (line 44) | AnnotationKeyExternalCreatePending = "crossplane.io/external-create-pend...
constant AnnotationKeyExternalCreateSucceeded (line 53) | AnnotationKeyExternalCreateSucceeded = "crossplane.io/external-create-su...
constant AnnotationKeyExternalCreateFailed (line 58) | AnnotationKeyExternalCreateFailed = "crossplane.io/external-create-failed"
constant AnnotationKeyReconciliationPaused (line 65) | AnnotationKeyReconciliationPaused = "crossplane.io/paused"
constant AnnotationKeyPollInterval (line 70) | AnnotationKeyPollInterval = "crossplane.io/poll-interval"
constant AnnotationKeyReconcileRequestedAt (line 76) | AnnotationKeyReconcileRequestedAt = "crossplane.io/reconcile-requested-at"
function ReferenceTo (line 85) | func ReferenceTo(o metav1.Object, of schema.GroupVersionKind) *corev1.Ob...
function TypedReferenceTo (line 99) | func TypedReferenceTo(o metav1.Object, of schema.GroupVersionKind) *xpv2...
function AsOwner (line 111) | func AsOwner(r *xpv2.TypedReference) metav1.OwnerReference {
function AsController (line 122) | func AsController(r *xpv2.TypedReference) metav1.OwnerReference {
function HaveSameController (line 133) | func HaveSameController(a, b metav1.Object) bool {
function NamespacedNameOf (line 147) | func NamespacedNameOf(r *corev1.ObjectReference) types.NamespacedName {
function AddOwnerReference (line 153) | func AddOwnerReference(o metav1.Object, r metav1.OwnerReference) {
function AddControllerReference (line 170) | func AddControllerReference(o metav1.Object, r metav1.OwnerReference) er...
function AddFinalizer (line 181) | func AddFinalizer(o metav1.Object, finalizer string) {
function RemoveFinalizer (line 191) | func RemoveFinalizer(o metav1.Object, finalizer string) {
function FinalizerExists (line 203) | func FinalizerExists(o metav1.Object, finalizer string) bool {
function AddLabels (line 209) | func AddLabels(o metav1.Object, labels map[string]string) {
function RemoveLabels (line 222) | func RemoveLabels(o metav1.Object, labels ...string) {
function AddAnnotations (line 236) | func AddAnnotations(o metav1.Object, annotations map[string]string) {
function RemoveAnnotations (line 249) | func RemoveAnnotations(o metav1.Object, annotations ...string) {
function WasDeleted (line 263) | func WasDeleted(o metav1.Object) bool {
function WasCreated (line 268) | func WasCreated(o metav1.Object) bool {
function GetExternalName (line 276) | func GetExternalName(o metav1.Object) string {
function SetExternalName (line 281) | func SetExternalName(o metav1.Object, name string) {
function GetExternalCreatePending (line 287) | func GetExternalCreatePending(o metav1.Object) time.Time {
function SetExternalCreatePending (line 300) | func SetExternalCreatePending(o metav1.Object, t time.Time) {
function GetExternalCreateSucceeded (line 306) | func GetExternalCreateSucceeded(o metav1.Object) time.Time {
function SetExternalCreateSucceeded (line 319) | func SetExternalCreateSucceeded(o metav1.Object, t time.Time) {
function GetExternalCreateFailed (line 325) | func GetExternalCreateFailed(o metav1.Object) time.Time {
function SetExternalCreateFailed (line 338) | func SetExternalCreateFailed(o metav1.Object, t time.Time) {
function ExternalCreateIncomplete (line 346) | func ExternalCreateIncomplete(o metav1.Object) bool {
function ExternalCreateSucceededDuring (line 367) | func ExternalCreateSucceededDuring(o metav1.Object, d time.Duration) bool {
function IsPaused (line 378) | func IsPaused(o metav1.Object) bool {
function GetPollInterval (line 384) | func GetPollInterval(o metav1.Object) (time.Duration, bool) {
function GetReconcileRequest (line 398) | func GetReconcileRequest(o metav1.Object) (string, bool) {
function SetReconcileRequest (line 408) | func SetReconcileRequest(o metav1.Object, token string) {
FILE: pkg/meta/meta_test.go
constant group (line 35) | group = "coolstuff"
constant version (line 36) | version = "v1"
constant groupVersion (line 37) | groupVersion = group + "/" + version
constant kind (line 38) | kind = "coolresource"
constant namespace (line 39) | namespace = "coolns"
constant name (line 40) | name = "cool"
constant uid (line 41) | uid = types.UID("definitely-a-uuid")
function TestReferenceTo (line 44) | func TestReferenceTo(t *testing.T) {
function TestTypedReferenceTo (line 89) | func TestTypedReferenceTo(t *testing.T) {
function TestAsOwner (line 133) | func TestAsOwner(t *testing.T) {
function TestAsController (line 164) | func TestAsController(t *testing.T) {
function TestHaveSameController (line 199) | func TestHaveSameController(t *testing.T) {
function TestNamespacedNameOf (line 273) | func TestNamespacedNameOf(t *testing.T) {
function TestAddOwnerReference (line 294) | func TestAddOwnerReference(t *testing.T) {
function TestAddControllerReference (line 351) | func TestAddControllerReference(t *testing.T) {
function TestAddFinalizer (line 443) | func TestAddFinalizer(t *testing.T) {
function TestRemoveFinalizer (line 499) | func TestRemoveFinalizer(t *testing.T) {
function TestFinalizerExists (line 555) | func TestFinalizerExists(t *testing.T) {
function TestAddLabels (line 608) | func TestAddLabels(t *testing.T) {
function TestRemoveLabels (line 658) | func TestRemoveLabels(t *testing.T) {
function TestAddAnnotations (line 706) | func TestAddAnnotations(t *testing.T) {
function TestRemoveAnnotations (line 756) | func TestRemoveAnnotations(t *testing.T) {
function TestWasDeleted (line 804) | func TestWasDeleted(t *testing.T) {
function TestWasCreated (line 831) | func TestWasCreated(t *testing.T) {
function TestGetExternalName (line 859) | func TestGetExternalName(t *testing.T) {
function TestSetExternalName (line 884) | func TestSetExternalName(t *testing.T) {
function TestGetExternalCreatePending (line 908) | func TestGetExternalCreatePending(t *testing.T) {
function TestSetExternalCreatePending (line 935) | func TestSetExternalCreatePending(t *testing.T) {
function TestGetExternalCreateSucceeded (line 961) | func TestGetExternalCreateSucceeded(t *testing.T) {
function TestSetExternalCreateSucceeded (line 988) | func TestSetExternalCreateSucceeded(t *testing.T) {
function TestGetExternalCreateFailed (line 1014) | func TestGetExternalCreateFailed(t *testing.T) {
function TestSetExternalCreateFailed (line 1041) | func TestSetExternalCreateFailed(t *testing.T) {
function TestExternalCreateSucceededDuring (line 1067) | func TestExternalCreateSucceededDuring(t *testing.T) {
function TestExternalCreateIncomplete (line 1122) | func TestExternalCreateIncomplete(t *testing.T) {
function TestIsPaused (line 1190) | func TestIsPaused(t *testing.T) {
function TestGetPollInterval (line 1232) | func TestGetPollInterval(t *testing.T) {
function TestGetReconcileRequest (line 1282) | func TestGetReconcileRequest(t *testing.T) {
function TestSetReconcileRequest (line 1317) | func TestSetReconcileRequest(t *testing.T) {
FILE: pkg/password/password.go
type Settings (line 26) | type Settings struct
method Generate (line 49) | func (s Settings) Generate() (string, error) {
function Generate (line 44) | func Generate() (string, error) {
FILE: pkg/password/password_test.go
function TestGenerate (line 9) | func TestGenerate(t *testing.T) {
FILE: pkg/ratelimiter/default.go
function NewGlobal (line 32) | func NewGlobal(rps int) *BucketRateLimiter {
function NewController (line 42) | func NewController() ControllerRateLimiter {
function LimitRESTConfig (line 48) | func LimitRESTConfig(cfg *rest.Config, rps int) *rest.Config {
FILE: pkg/ratelimiter/reconciler.go
type Reconciler (line 37) | type Reconciler struct
method Reconcile (line 54) | func (r *Reconciler) Reconcile(ctx context.Context, req reconcile.Requ...
method when (line 70) | func (r *Reconciler) when(req reconcile.Request) time.Duration {
function NewReconciler (line 49) | func NewReconciler(name string, r reconcile.Reconciler, l RateLimiter) *...
FILE: pkg/ratelimiter/reconciler_test.go
type predictableRateLimiter (line 33) | type predictableRateLimiter struct
method When (line 35) | func (r *predictableRateLimiter) When(_ string) time.Duration { return...
method Forget (line 36) | func (r *predictableRateLimiter) Forget(_ string) {}
method NumRequeues (line 37) | func (r *predictableRateLimiter) NumRequeues(_ string) int { return...
function TestReconcile (line 39) | func TestReconcile(t *testing.T) {
FILE: pkg/reconciler/customresourcesgate/reconciler.go
type Reconciler (line 34) | type Reconciler struct
method Reconcile (line 40) | func (r *Reconciler) Reconcile(_ context.Context, crd *apiextensionsv1...
function toGVKs (line 67) | func toGVKs(crd *apiextensionsv1.CustomResourceDefinition) map[schema.Gr...
function isEstablished (line 76) | func isEstablished(crd *apiextensionsv1.CustomResourceDefinition) bool {
FILE: pkg/reconciler/customresourcesgate/reconciler_test.go
function TestToGVKs (line 35) | func TestToGVKs(t *testing.T) {
function TestIsEstablished (line 125) | func TestIsEstablished(t *testing.T) {
type MockGate (line 264) | type MockGate struct
method Set (line 276) | func (m *MockGate) Set(gvk schema.GroupVersionKind, value bool) bool {
method Register (line 294) | func (m *MockGate) Register(func(), ...schema.GroupVersionKind) {}
function NewMockGate (line 269) | func NewMockGate() *MockGate {
function TestReconcile (line 296) | func TestReconcile(t *testing.T) {
FILE: pkg/reconciler/customresourcesgate/setup.go
function Setup (line 32) | func Setup(mgr ctrl.Manager, o controller.Options) error {
FILE: pkg/reconciler/managed/api.go
constant fieldOwnerAPISimpleRefResolver (line 42) | fieldOwnerAPISimpleRefResolver = "managed.crossplane.io/api-simple-refer...
constant errCreateOrUpdateSecret (line 47) | errCreateOrUpdateSecret = "cannot create or update connection secret"
constant errUpdateManaged (line 48) | errUpdateManaged = "cannot update managed resource"
constant errPatchManaged (line 49) | errPatchManaged = "cannot patch the managed resource via se...
constant errMarshalExisting (line 50) | errMarshalExisting = "cannot marshal the existing object into ...
constant errMarshalResolved (line 51) | errMarshalResolved = "cannot marshal the object with the resol...
constant errPreparePatch (line 52) | errPreparePatch = "cannot prepare the JSON merge patch for ...
constant errUpdateManagedStatus (line 53) | errUpdateManagedStatus = "cannot update managed resource status"
constant errResolveReferences (line 54) | errResolveReferences = "cannot resolve references"
constant errUpdateCriticalAnnotations (line 55) | errUpdateCriticalAnnotations = "cannot update critical annotations"
type NameAsExternalName (line 61) | type NameAsExternalName struct
method Initialize (line 69) | func (a *NameAsExternalName) Initialize(ctx context.Context, mg resour...
function NewNameAsExternalName (line 64) | func NewNameAsExternalName(c client.Client) *NameAsExternalName {
type APISecretPublisher (line 81) | type APISecretPublisher struct
method PublishConnection (line 100) | func (a *APISecretPublisher) PublishConnection(ctx context.Context, o ...
method UnpublishConnection (line 133) | func (a *APISecretPublisher) UnpublishConnection(_ context.Context, _ ...
function NewAPISecretPublisher (line 87) | func NewAPISecretPublisher(c client.Client, ot runtime.ObjectTyper) *API...
type APILocalSecretPublisher (line 139) | type APILocalSecretPublisher struct
method PublishConnection (line 158) | func (a *APILocalSecretPublisher) PublishConnection(ctx context.Contex...
method UnpublishConnection (line 192) | func (a *APILocalSecretPublisher) UnpublishConnection(_ context.Contex...
function NewAPILocalSecretPublisher (line 145) | func NewAPILocalSecretPublisher(c client.Client, ot runtime.ObjectTyper)...
type APISimpleReferenceResolver (line 199) | type APISimpleReferenceResolver struct
method ResolveReferences (line 237) | func (a *APISimpleReferenceResolver) ResolveReferences(ctx context.Con...
function NewAPISimpleReferenceResolver (line 206) | func NewAPISimpleReferenceResolver(c client.Client) *APISimpleReferenceR...
function prepareJSONMerge (line 210) | func prepareJSONMerge(existing, resolved runtime.Object) ([]byte, error) {
type RetryingCriticalAnnotationUpdater (line 267) | type RetryingCriticalAnnotationUpdater struct
method UpdateCriticalAnnotations (line 283) | func (u *RetryingCriticalAnnotationUpdater) UpdateCriticalAnnotations(...
function NewRetryingCriticalAnnotationUpdater (line 273) | func NewRetryingCriticalAnnotationUpdater(c client.Client) *RetryingCrit...
FILE: pkg/reconciler/managed/api_test.go
function TestNameAsExternalName (line 44) | func TestNameAsExternalName(t *testing.T) {
function TestAPISecretPublisher (line 126) | func TestAPISecretPublisher(t *testing.T) {
function TestAPILocalSecretPublisher (line 250) | func TestAPILocalSecretPublisher(t *testing.T) {
type mockSimpleReferencer (line 373) | type mockSimpleReferencer struct
method ResolveReferences (line 379) | func (r *mockSimpleReferencer) ResolveReferences(ctx context.Context, ...
method DeepCopyObject (line 383) | func (r *mockSimpleReferencer) DeepCopyObject() runtime.Object {
method Equal (line 387) | func (r *mockSimpleReferencer) Equal(s *mockSimpleReferencer) bool {
function TestResolveReferences (line 391) | func TestResolveReferences(t *testing.T) {
function TestPrepareJSONMerge (line 495) | func TestPrepareJSONMerge(t *testing.T) {
function TestRetryingCriticalAnnotationUpdater (line 541) | func TestRetryingCriticalAnnotationUpdater(t *testing.T) {
FILE: pkg/reconciler/managed/changelogger.go
constant defaultSendTimeout (line 34) | defaultSendTimeout = 10 * time.Second
type ChangeLogger (line 39) | type ChangeLogger interface
type GRPCChangeLogger (line 45) | type GRPCChangeLogger struct
method Log (line 86) | func (g *GRPCChangeLogger) Log(ctx context.Context, managed resource.M...
function NewGRPCChangeLogger (line 53) | func NewGRPCChangeLogger(client v1alpha1.ChangeLogServiceClient, o ...GR...
type GRPCChangeLoggerOption (line 67) | type GRPCChangeLoggerOption
function WithProviderVersion (line 71) | func WithProviderVersion(version string) GRPCChangeLoggerOption {
function WithSendTimeout (line 79) | func WithSendTimeout(timeout time.Duration) GRPCChangeLoggerOption {
type nopChangeLogger (line 128) | type nopChangeLogger struct
method Log (line 134) | func (n *nopChangeLogger) Log(_ context.Context, _ resource.Managed, _...
function newNopChangeLogger (line 130) | func newNopChangeLogger() *nopChangeLogger {
FILE: pkg/reconciler/managed/changelogger_test.go
type changeLogServiceClient (line 45) | type changeLogServiceClient struct
method SendChangeLog (line 50) | func (c *changeLogServiceClient) SendChangeLog(ctx context.Context, in...
function TestChangeLogger (line 59) | func TestChangeLogger(t *testing.T) {
function mustObjectAsProtobufStruct (line 166) | func mustObjectAsProtobufStruct(o runtime.Object) *structpb.Struct {
function equateApproxTimepb (line 178) | func equateApproxTimepb(margin time.Duration) []cmp.Option {
function msgIsTimestamp (line 198) | func msgIsTimestamp(x reflect.Value) bool {
FILE: pkg/reconciler/managed/metrics.go
constant subSystem (line 31) | subSystem = "crossplane"
type MetricRecorder (line 34) | type MetricRecorder interface
type MRMetricRecorder (line 46) | type MRMetricRecorder struct
method Describe (line 89) | func (r *MRMetricRecorder) Describe(ch chan<- *prometheus.Desc) {
method Collect (line 99) | func (r *MRMetricRecorder) Collect(ch chan<- prometheus.Metric) {
method recordUnchanged (line 106) | func (r *MRMetricRecorder) recordUnchanged(name string) {
method recordFirstTimeReconciled (line 110) | func (r *MRMetricRecorder) recordFirstTimeReconciled(managed resource....
method recordDrift (line 117) | func (r *MRMetricRecorder) recordDrift(managed resource.Managed) {
method recordDeleted (line 135) | func (r *MRMetricRecorder) recordDeleted(managed resource.Managed) {
method recordFirstTimeReady (line 139) | func (r *MRMetricRecorder) recordFirstTimeReady(managed resource.Manag...
function NewMRMetricRecorder (line 57) | func NewMRMetricRecorder() *MRMetricRecorder {
type NopMetricRecorder (line 154) | type NopMetricRecorder struct
method Describe (line 162) | func (r *NopMetricRecorder) Describe(_ chan<- *prometheus.Desc) {}
method Collect (line 165) | func (r *NopMetricRecorder) Collect(_ chan<- prometheus.Metric) {}
method recordUnchanged (line 167) | func (r *NopMetricRecorder) recordUnchanged(_ string) {}
method recordFirstTimeReconciled (line 169) | func (r *NopMetricRecorder) recordFirstTimeReconciled(_ resource.Manag...
method recordDrift (line 171) | func (r *NopMetricRecorder) recordDrift(_ resource.Managed) {}
method recordDeleted (line 173) | func (r *NopMetricRecorder) recordDeleted(_ resource.Managed) {}
method recordFirstTimeReady (line 175) | func (r *NopMetricRecorder) recordFirstTimeReady(_ resource.Managed) {}
function NewNopMetricRecorder (line 157) | func NewNopMetricRecorder() *NopMetricRecorder {
function getLabels (line 177) | func getLabels(r resource.Managed) prometheus.Labels {
FILE: pkg/reconciler/managed/policies.go
type ManagementPoliciesResolver (line 28) | type ManagementPoliciesResolver struct
method Validate (line 154) | func (m *ManagementPoliciesResolver) Validate() error {
method IsPaused (line 176) | func (m *ManagementPoliciesResolver) IsPaused() bool {
method ShouldCreate (line 186) | func (m *ManagementPoliciesResolver) ShouldCreate() bool {
method ShouldUpdate (line 196) | func (m *ManagementPoliciesResolver) ShouldUpdate() bool {
method ShouldLateInitialize (line 206) | func (m *ManagementPoliciesResolver) ShouldLateInitialize() bool {
method ShouldOnlyObserve (line 217) | func (m *ManagementPoliciesResolver) ShouldOnlyObserve() bool {
method ShouldDelete (line 229) | func (m *ManagementPoliciesResolver) ShouldDelete() bool {
type LegacyManagementPoliciesResolver (line 39) | type LegacyManagementPoliciesResolver struct
method ShouldDelete (line 245) | func (m *LegacyManagementPoliciesResolver) ShouldDelete() bool {
type ManagementPoliciesResolverOption (line 46) | type ManagementPoliciesResolverOption
function WithSupportedManagementPolicies (line 49) | func WithSupportedManagementPolicies(supportedManagementPolicies []sets....
function defaultSupportedManagementPolicies (line 55) | func defaultSupportedManagementPolicies() []sets.Set[xpv2.ManagementActi...
function NewManagementPoliciesResolver (line 115) | func NewManagementPoliciesResolver(managementPolicyEnabled bool, managem...
function NewLegacyManagementPoliciesResolver (line 135) | func NewLegacyManagementPoliciesResolver(managementPolicyEnabled bool, m...
FILE: pkg/reconciler/managed/reconciler.go
constant FinalizerName (line 47) | FinalizerName = "finalizer.managedresource.crossplane.io"
constant reconcileGracePeriod (line 49) | reconcileGracePeriod = 30 * time.Second
constant reconcileTimeout (line 50) | reconcileTimeout = 1 * time.Minute
constant defaultPollInterval (line 52) | defaultPollInterval = 1 * time.Minute
constant defaultGracePeriod (line 53) | defaultGracePeriod = 30 * time.Second
constant errFmtManagementPolicyNonDefault (line 58) | errFmtManagementPolicyNonDefault = "`spec.managementPolicies` is set t...
constant errFmtManagementPolicyNotSupported (line 59) | errFmtManagementPolicyNotSupported = "`spec.managementPolicies` is set t...
constant errGetManaged (line 61) | errGetManaged = "cannot get managed resource"
constant errUpdateManagedAnnotations (line 62) | errUpdateManagedAnnotations = "cannot update managed resource annotations"
constant errCreateIncomplete (line 63) | errCreateIncomplete = "cannot determine creation result - remove...
constant errReconcileConnect (line 64) | errReconcileConnect = "connect failed"
constant errReconcileObserve (line 65) | errReconcileObserve = "observe failed"
constant errReconcileCreate (line 66) | errReconcileCreate = "create failed"
constant errReconcileUpdate (line 67) | errReconcileUpdate = "update failed"
constant errReconcileDelete (line 68) | errReconcileDelete = "delete failed"
constant errRecordChangeLog (line 69) | errRecordChangeLog = "cannot record change log entry"
constant errExternalResourceNotExist (line 71) | errExternalResourceNotExist = "external resource does not exist"
constant errManagedNotImplemented (line 73) | errManagedNotImplemented = "managed resource does not implement connecti...
constant reasonCannotConnect (line 78) | reasonCannotConnect event.Reason = "CannotConnectToProvider"
constant reasonCannotDisconnect (line 79) | reasonCannotDisconnect event.Reason = "CannotDisconnectFromProvider"
constant reasonCannotInitialize (line 80) | reasonCannotInitialize event.Reason = "CannotInitializeManagedRes...
constant reasonCannotResolveRefs (line 81) | reasonCannotResolveRefs event.Reason = "CannotResolveResourceRefer...
constant reasonCannotObserve (line 82) | reasonCannotObserve event.Reason = "CannotObserveExternalResou...
constant reasonCannotCreate (line 83) | reasonCannotCreate event.Reason = "CannotCreateExternalResource"
constant reasonCannotDelete (line 84) | reasonCannotDelete event.Reason = "CannotDeleteExternalResource"
constant reasonCannotPublish (line 85) | reasonCannotPublish event.Reason = "CannotPublishConnectionDet...
constant reasonCannotUnpublish (line 86) | reasonCannotUnpublish event.Reason = "CannotUnpublishConnectionD...
constant reasonCannotUpdate (line 87) | reasonCannotUpdate event.Reason = "CannotUpdateExternalResource"
constant reasonCannotUpdateManaged (line 88) | reasonCannotUpdateManaged event.Reason = "CannotUpdateManagedResource"
constant reasonManagementPolicyInvalid (line 89) | reasonManagementPolicyInvalid event.Reason = "CannotUseInvalidManagement...
constant reasonDeleted (line 91) | reasonDeleted event.Reason = "DeletedExternalResource"
constant reasonCreated (line 92) | reasonCreated event.Reason = "CreatedExternalResource"
constant reasonUpdated (line 93) | reasonUpdated event.Reason = "UpdatedExternalResource"
constant reasonPending (line 94) | reasonPending event.Reason = "PendingExternalResource"
constant reasonReconciliationPaused (line 96) | reasonReconciliationPaused event.Reason = "ReconciliationPaused"
constant reasonReconcileRequestHandled (line 97) | reasonReconcileRequestHandled event.Reason = "ReconcileRequestHandled"
function ControllerName (line 102) | func ControllerName(kind string) string {
type ManagementPoliciesChecker (line 109) | type ManagementPoliciesChecker interface
type reconcileRequestTracker (line 132) | type reconcileRequestTracker interface
type CriticalAnnotationUpdater (line 139) | type CriticalAnnotationUpdater interface
type CriticalAnnotationUpdateFn (line 145) | type CriticalAnnotationUpdateFn
method UpdateCriticalAnnotations (line 148) | func (fn CriticalAnnotationUpdateFn) UpdateCriticalAnnotations(ctx con...
type ConnectionDetails (line 154) | type ConnectionDetails
type AdditionalDetails (line 159) | type AdditionalDetails
type ConnectionPublisher (line 164) | type ConnectionPublisher interface
type ConnectionPublisherFns (line 175) | type ConnectionPublisherFns struct
method PublishConnection (line 181) | func (fn ConnectionPublisherFns) PublishConnection(ctx context.Context...
method UnpublishConnection (line 186) | func (fn ConnectionPublisherFns) UnpublishConnection(ctx context.Conte...
type LocalConnectionPublisher (line 193) | type LocalConnectionPublisher interface
type LocalConnectionPublisherFns (line 204) | type LocalConnectionPublisherFns struct
method PublishConnection (line 210) | func (fn LocalConnectionPublisherFns) PublishConnection(ctx context.Co...
method UnpublishConnection (line 215) | func (fn LocalConnectionPublisherFns) UnpublishConnection(ctx context....
type ConnectionDetailsFetcher (line 221) | type ConnectionDetailsFetcher interface
type Initializer (line 228) | type Initializer interface
type InitializerChain (line 233) | type InitializerChain
method Initialize (line 237) | func (cc InitializerChain) Initialize(ctx context.Context, mg resource...
type InitializerFn (line 249) | type InitializerFn
method Initialize (line 252) | func (m InitializerFn) Initialize(ctx context.Context, mg resource.Man...
type ReferenceResolver (line 257) | type ReferenceResolver interface
type ReferenceResolverFn (line 267) | type ReferenceResolverFn
method ResolveReferences (line 270) | func (m ReferenceResolverFn) ResolveReferences(ctx context.Context, mg...
type TypedExternalConnector (line 280) | type TypedExternalConnector interface
type TypedNopDisconnector (line 292) | type TypedNopDisconnector struct
method Connect (line 297) | func (c *TypedNopDisconnector[managed]) Connect(ctx context.Context, mg ...
method Disconnect (line 302) | func (c *TypedNopDisconnector[managed]) Disconnect(_ context.Context) er...
function NewNopDisconnector (line 308) | func NewNopDisconnector(c ExternalConnector) ExternalConnectDisconnector {
function NewTypedNopDisconnector (line 314) | func NewTypedNopDisconnector[managed resource.Managed](c TypedExternalCo...
type TypedExternalConnectDisconnector (line 324) | type TypedExternalConnectDisconnector interface
type TypedExternalConnectorFn (line 335) | type TypedExternalConnectorFn
method Connect (line 339) | func (ec TypedExternalConnectorFn[managed]) Connect(ctx context.Context,...
type ExternalDisconnectorFn (line 345) | type ExternalDisconnectorFn
method Disconnect (line 348) | func (ed ExternalDisconnectorFn) Disconnect(ctx context.Context) error {
type TypedExternalConnectDisconnectorFns (line 358) | type TypedExternalConnectDisconnectorFns struct
method Connect (line 365) | func (fns TypedExternalConnectDisconnectorFns[managed]) Connect(ctx cont...
method Disconnect (line 370) | func (fns TypedExternalConnectDisconnectorFns[managed]) Disconnect(ctx c...
type TypedExternalClient (line 386) | type TypedExternalClient interface
type TypedExternalClientFns (line 424) | type TypedExternalClientFns struct
method Observe (line 434) | func (e TypedExternalClientFns[managed]) Observe(ctx context.Context, mg...
method Create (line 440) | func (e TypedExternalClientFns[managed]) Create(ctx context.Context, mg ...
method Update (line 446) | func (e TypedExternalClientFns[managed]) Update(ctx context.Context, mg ...
method Delete (line 452) | func (e TypedExternalClientFns[managed]) Delete(ctx context.Context, mg ...
method Disconnect (line 457) | func (e TypedExternalClientFns[managed]) Disconnect(ctx context.Context)...
type NopConnector (line 462) | type NopConnector struct
method Connect (line 465) | func (c *NopConnector) Connect(_ context.Context, _ resource.Managed) ...
type NopClient (line 470) | type NopClient struct
method Observe (line 473) | func (c *NopClient) Observe(_ context.Context, _ resource.Managed) (Ex...
method Create (line 478) | func (c *NopClient) Create(_ context.Context, _ resource.Managed) (Ext...
method Update (line 483) | func (c *NopClient) Update(_ context.Context, _ resource.Managed) (Ext...
method Delete (line 488) | func (c *NopClient) Delete(_ context.Context, _ resource.Managed) (Ext...
method Disconnect (line 493) | func (c *NopClient) Disconnect(_ context.Context) error { return nil }
type ExternalObservation (line 497) | type ExternalObservation struct
type ExternalCreation (line 542) | type ExternalCreation struct
type ExternalUpdate (line 556) | type ExternalUpdate struct
type ExternalDelete (line 570) | type ExternalDelete struct
type Reconciler (line 580) | type Reconciler struct
method effectivePollInterval (line 867) | func (r *Reconciler) effectivePollInterval(o metav1.Object) time.Durat...
method Reconcile (line 919) | func (r *Reconciler) Reconcile(ctx context.Context, req reconcile.Requ...
type mrManaged (line 611) | type mrManaged struct
method PublishConnection (line 631) | func (m mrManaged) PublishConnection(ctx context.Context, managed reso...
method UnpublishConnection (line 642) | func (m mrManaged) UnpublishConnection(ctx context.Context, managed re...
function defaultMRManaged (line 620) | func defaultMRManaged(m manager.Manager) mrManaged {
type mrExternal (line 653) | type mrExternal struct
function defaultMRExternal (line 657) | func defaultMRExternal() mrExternal {
type ReconcilerOption (line 664) | type ReconcilerOption
function WithTimeout (line 670) | func WithTimeout(duration time.Duration) ReconcilerOption {
function WithPollInterval (line 681) | func WithPollInterval(after time.Duration) ReconcilerOption {
function WithMinPollInterval (line 690) | func WithMinPollInterval(d time.Duration) ReconcilerOption {
function WithMetricRecorder (line 697) | func WithMetricRecorder(recorder MetricRecorder) ReconcilerOption {
type PollIntervalHook (line 706) | type PollIntervalHook
function defaultPollIntervalHook (line 708) | func defaultPollIntervalHook(_ resource.Managed, pollInterval time.Durat...
function WithPollIntervalHook (line 716) | func WithPollIntervalHook(hook PollIntervalHook) ReconcilerOption {
function WithPollJitterHook (line 727) | func WithPollJitterHook(jitter time.Duration) ReconcilerOption {
function WithCreationGracePeriod (line 738) | func WithCreationGracePeriod(d time.Duration) ReconcilerOption {
function WithExternalConnector (line 746) | func WithExternalConnector(c ExternalConnector) ReconcilerOption {
function WithTypedExternalConnector (line 754) | func WithTypedExternalConnector[managed resource.Managed](c TypedExterna...
function WithCriticalAnnotationUpdater (line 766) | func WithCriticalAnnotationUpdater(u CriticalAnnotationUpdater) Reconcil...
function withConnectionPublishers (line 775) | func withConnectionPublishers(p ConnectionPublisher) ReconcilerOption {
function withLocalConnectionPublishers (line 784) | func withLocalConnectionPublishers(p LocalConnectionPublisher) Reconcile...
function WithInitializers (line 792) | func WithInitializers(i ...Initializer) ReconcilerOption {
function WithFinalizer (line 800) | func WithFinalizer(f resource.Finalizer) ReconcilerOption {
function WithReferenceResolver (line 808) | func WithReferenceResolver(rr ReferenceResolver) ReconcilerOption {
function WithLogger (line 815) | func WithLogger(l logging.Logger) ReconcilerOption {
function WithRecorder (line 822) | func WithRecorder(er event.Recorder) ReconcilerOption {
function WithManagementPolicies (line 829) | func WithManagementPolicies() ReconcilerOption {
function WithReconcilerSupportedManagementPolicies (line 837) | func WithReconcilerSupportedManagementPolicies(supported []sets.Set[xpv2...
function WithChangeLogger (line 845) | func WithChangeLogger(c ChangeLogger) ReconcilerOption {
function WithDeterministicExternalName (line 858) | func WithDeterministicExternalName(b bool) ReconcilerOption {
function NewReconciler (line 884) | func NewReconciler(m manager.Manager, of resource.ManagedKind, o ...Reco...
FILE: pkg/reconciler/managed/reconciler_deprecated.go
type TypedExternalConnecter (line 33) | type TypedExternalConnecter interface
type ExternalDisconnector (line 43) | type ExternalDisconnector interface
type ExternalDisconnecter (line 54) | type ExternalDisconnecter interface
function NewNopDisconnecter (line 71) | func NewNopDisconnecter(c ExternalConnector) ExternalConnectDisconnector {
function WithExternalConnecter (line 93) | func WithExternalConnecter(c ExternalConnector) ReconcilerOption {
function WithExternalConnectDisconnector (line 101) | func WithExternalConnectDisconnector(c ExternalConnectDisconnector) Reco...
function WithExternalConnectDisconnecter (line 110) | func WithExternalConnectDisconnecter(c ExternalConnectDisconnector) Reco...
function WithTypedExternalConnectDisconnector (line 120) | func WithTypedExternalConnectDisconnector[managed resource.Managed](c Ty...
function WithTypedExternalConnectDisconnecter (line 129) | func WithTypedExternalConnectDisconnecter[managed resource.Managed](c Ty...
FILE: pkg/reconciler/managed/reconciler_legacy_test.go
function TestReconciler (line 46) | func TestReconciler(t *testing.T) {
function TestTestLegacyManagementPoliciesResolverIsPaused (line 2180) | func TestTestLegacyManagementPoliciesResolverIsPaused(t *testing.T) {
function TestLegacyManagementPoliciesResolverValidate (line 2226) | func TestLegacyManagementPoliciesResolverValidate(t *testing.T) {
function TestLegacyManagementPoliciesResolverShouldCreate (line 2288) | func TestLegacyManagementPoliciesResolverShouldCreate(t *testing.T) {
function TestLegacyManagementPoliciesResolverShouldUpdate (line 2341) | func TestLegacyManagementPoliciesResolverShouldUpdate(t *testing.T) {
function TestLegacyManagementPoliciesResolverShouldLateInitialize (line 2394) | func TestLegacyManagementPoliciesResolverShouldLateInitialize(t *testing...
function TestLegacyManagementPoliciesResolverOnlyObserve (line 2447) | func TestLegacyManagementPoliciesResolverOnlyObserve(t *testing.T) {
function TestLegacyShouldDelete (line 2492) | func TestLegacyShouldDelete(t *testing.T) {
function TestLegacyReconcilerChangeLogs (line 2617) | func TestLegacyReconcilerChangeLogs(t *testing.T) {
function asLegacyManaged (line 2905) | func asLegacyManaged(obj client.Object, generation int64) *fake.LegacyMa...
function newLegacyManaged (line 2912) | func newLegacyManaged(generation int64) *fake.LegacyManaged {
function legacyManagedMockGetFn (line 2919) | func legacyManagedMockGetFn(err error, generation int64) test.MockGetFn {
FILE: pkg/reconciler/managed/reconciler_modern_test.go
function TestModernReconciler (line 46) | func TestModernReconciler(t *testing.T) {
function TestManagementPoliciesResolverIsPaused (line 2186) | func TestManagementPoliciesResolverIsPaused(t *testing.T) {
function TestManagementPoliciesResolverValidate (line 2232) | func TestManagementPoliciesResolverValidate(t *testing.T) {
function TestManagementPoliciesResolverShouldCreate (line 2294) | func TestManagementPoliciesResolverShouldCreate(t *testing.T) {
function TestManagementPoliciesResolverShouldUpdate (line 2347) | func TestManagementPoliciesResolverShouldUpdate(t *testing.T) {
function TestManagementPoliciesResolverShouldLateInitialize (line 2400) | func TestManagementPoliciesResolverShouldLateInitialize(t *testing.T) {
function TestManagementPoliciesResolverOnlyObserve (line 2453) | func TestManagementPoliciesResolverOnlyObserve(t *testing.T) {
function TestShouldDelete (line 2498) | func TestShouldDelete(t *testing.T) {
function TestReconcilerChangeLogs (line 2568) | func TestReconcilerChangeLogs(t *testing.T) {
function TestEffectivePollInterval (line 2856) | func TestEffectivePollInterval(t *testing.T) {
function TestReconcilePollIntervalAnnotation (line 2922) | func TestReconcilePollIntervalAnnotation(t *testing.T) {
function TestReconcileRequestAnnotation (line 3015) | func TestReconcileRequestAnnotation(t *testing.T) {
function asModernManaged (line 3096) | func asModernManaged(obj client.Object, generation int64) *fake.ModernMa...
function newModernManaged (line 3103) | func newModernManaged(generation int64) *fake.ModernManaged {
function modernManagedMockGetFn (line 3110) | func modernManagedMockGetFn(err error, generation int64) test.MockGetFn {
FILE: pkg/reconciler/managed/reconciler_typed.go
constant errFmtUnexpectedObjectType (line 10) | errFmtUnexpectedObjectType = "unexpected object type %T"
type typedExternalConnectDisconnectorWrapper (line 14) | type typedExternalConnectDisconnectorWrapper struct
method Connect (line 18) | func (c *typedExternalConnectDisconnectorWrapper[managed]) Connect(ctx c...
method Disconnect (line 32) | func (c *typedExternalConnectDisconnectorWrapper[managed]) Disconnect(ct...
type typedExternalClientWrapper (line 38) | type typedExternalClientWrapper struct
method Observe (line 42) | func (c *typedExternalClientWrapper[managed]) Observe(ctx context.Contex...
method Create (line 51) | func (c *typedExternalClientWrapper[managed]) Create(ctx context.Context...
method Update (line 60) | func (c *typedExternalClientWrapper[managed]) Update(ctx context.Context...
method Delete (line 69) | func (c *typedExternalClientWrapper[managed]) Delete(ctx context.Context...
method Disconnect (line 78) | func (c *typedExternalClientWrapper[managed]) Disconnect(ctx context.Con...
FILE: pkg/reconciler/providerconfig/reconciler.go
constant finalizer (line 41) | finalizer = "in-use.crossplane.io"
constant shortWait (line 42) | shortWait = 30 * time.Second
constant timeout (line 43) | timeout = 2 * time.Minute
constant errGetPC (line 45) | errGetPC = "cannot get ProviderConfig"
constant errListPCUs (line 46) | errListPCUs = "cannot list ProviderConfigUsages"
constant errDeletePCU (line 47) | errDeletePCU = "cannot delete ProviderConfigUsage"
constant errUpdate (line 48) | errUpdate = "cannot update ProviderConfig"
constant errUpdateStatus (line 49) | errUpdateStatus = "cannot update ProviderConfig status"
constant reasonAccount (line 54) | reasonAccount event.Reason = "UsageAccounting"
constant TypeTerminating (line 59) | TypeTerminating xpv2.ConditionType = "Terminating"
constant ReasonInUse (line 60) | ReasonInUse xpv2.ConditionReason = "InUse"
function Terminating (line 65) | func Terminating() xpv2.Condition {
function ControllerName (line 76) | func ControllerName(kind string) string {
type Reconciler (line 84) | type Reconciler struct
method Reconcile (line 149) | func (r *Reconciler) Reconcile(ctx context.Context, req reconcile.Requ...
type ReconcilerOption (line 97) | type ReconcilerOption
function WithLogger (line 100) | func WithLogger(l logging.Logger) ReconcilerOption {
function WithRecorder (line 107) | func WithRecorder(er event.Recorder) ReconcilerOption {
function NewReconciler (line 114) | func NewReconciler(m manager.Manager, of resource.ProviderConfigKinds, o...
FILE: pkg/reconciler/providerconfig/reconciler_test.go
type ProviderConfigUsageList (line 42) | type ProviderConfigUsageList struct
method GetObjectKind (line 47) | func (p *ProviderConfigUsageList) GetObjectKind() schema.ObjectKind {
method DeepCopyObject (line 51) | func (p *ProviderConfigUsageList) DeepCopyObject() runtime.Object {
method GetItems (line 64) | func (p *ProviderConfigUsageList) GetItems() []resource.ProviderConfig...
function TestReconciler (line 68) | func TestReconciler(t *testing.T) {
FILE: pkg/reference/namespaced_reference.go
type NamespacedResolutionRequest (line 36) | type NamespacedResolutionRequest struct
method IsNoOp (line 47) | func (rr *NamespacedResolutionRequest) IsNoOp() bool {
type NamespacedResolutionResponse (line 76) | type NamespacedResolutionResponse struct
method Validate (line 82) | func (rr NamespacedResolutionResponse) Validate() error {
type MultiNamespacedResolutionRequest (line 92) | type MultiNamespacedResolutionRequest struct
method IsNoOp (line 103) | func (rr *MultiNamespacedResolutionRequest) IsNoOp() bool {
type MultiNamespacedResolutionResponse (line 137) | type MultiNamespacedResolutionResponse struct
method Validate (line 143) | func (rr MultiNamespacedResolutionResponse) Validate() error {
type APINamespacedResolver (line 159) | type APINamespacedResolver struct
method Resolve (line 173) | func (r *APINamespacedResolver) Resolve(ctx context.Context, req Names...
method ResolveMultiple (line 228) | func (r *APINamespacedResolver) ResolveMultiple(ctx context.Context, r...
function NewAPINamespacedResolver (line 167) | func NewAPINamespacedResolver(c client.Reader, from resource.Managed) *A...
function sortGenericMapByKeys (line 286) | func sortGenericMapByKeys[T any](m map[string]T) ([]string, []T) {
function ControllersMustMatchNamespaced (line 300) | func ControllersMustMatchNamespaced(s *xpv2.NamespacedSelector) bool {
FILE: pkg/reference/namespaced_reference_test.go
function prepareTestExamplesNamespaced (line 23) | func prepareTestExamplesNamespaced(numExamples int) ([]string, []xpv2.Na...
function TestNamespacedResolve (line 43) | func TestNamespacedResolve(t *testing.T) {
function TestNamespacedResolveMultiple (line 483) | func TestNamespacedResolveMultiple(t *testing.T) {
function TestNamespacedControllersMustMatch (line 1040) | func TestNamespacedControllersMustMatch(t *testing.T) {
FILE: pkg/reference/reference.go
constant errGetManaged (line 39) | errGetManaged = "cannot get referenced resource"
constant errListManaged (line 40) | errListManaged = "cannot list resources that match selector"
constant errNoMatches (line 41) | errNoMatches = "no resources matched selector"
constant errNoValue (line 42) | errNoValue = "referenced field was empty (referenced resource may no...
function FromPtrValue (line 50) | func FromPtrValue(v *string) string {
function FromFloatPtrValue (line 59) | func FromFloatPtrValue(v *float64) string {
function FromIntPtrValue (line 68) | func FromIntPtrValue(v *int64) string {
function ToPtrValue (line 77) | func ToPtrValue(v string) *string {
function ToFloatPtrValue (line 86) | func ToFloatPtrValue(v string) *float64 {
function ToIntPtrValue (line 100) | func ToIntPtrValue(v string) *int64 {
function FromPtrValues (line 118) | func FromPtrValues(v []*string) []string {
function FromFloatPtrValues (line 128) | func FromFloatPtrValues(v []*float64) []string {
function FromIntPtrValues (line 138) | func FromIntPtrValues(v []*int64) []string {
function ToPtrValues (line 152) | func ToPtrValues(v []string) []*string {
function ToFloatPtrValues (line 162) | func ToFloatPtrValues(v []string) []*float64 {
function ToIntPtrValues (line 172) | func ToIntPtrValues(v []string) []*int64 {
type To (line 182) | type To struct
type ExtractValueFn (line 189) | type ExtractValueFn
function ExternalName (line 193) | func ExternalName() ExtractValueFn {
type ResolutionRequest (line 201) | type ResolutionRequest struct
method IsNoOp (line 212) | func (rr *ResolutionRequest) IsNoOp() bool {
type ResolutionResponse (line 241) | type ResolutionResponse struct
method Validate (line 247) | func (rr ResolutionResponse) Validate() error {
type MultiResolutionRequest (line 257) | type MultiResolutionRequest struct
method IsNoOp (line 268) | func (rr *MultiResolutionRequest) IsNoOp() bool {
type MultiResolutionResponse (line 302) | type MultiResolutionResponse struct
method Validate (line 308) | func (rr MultiResolutionResponse) Validate() error {
type APIResolver (line 324) | type APIResolver struct
method Resolve (line 338) | func (r *APIResolver) Resolve(ctx context.Context, req ResolutionReque...
method ResolveMultiple (line 382) | func (r *APIResolver) ResolveMultiple(ctx context.Context, req MultiRe...
function NewAPIResolver (line 332) | func NewAPIResolver(c client.Reader, from resource.Managed) *APIResolver {
function getResolutionError (line 430) | func getResolutionError(p *xpv2.Policy, err error) error {
function sortMapByKeys (line 438) | func sortMapByKeys(m map[string]xpv2.Reference) ([]string, []xpv2.Refere...
function ControllersMustMatch (line 452) | func ControllersMustMatch(s *xpv2.Selector) bool {
FILE: pkg/reference/reference_test.go
constant testResourceNamePrefix (line 40) | testResourceNamePrefix = "cool-resource-"
constant testValuePrefix (line 41) | testValuePrefix = "cool-value-"
constant testControllerUID (line 42) | testControllerUID = types.UID("very-unique")
function prepareTestExamples (line 45) | func prepareTestExamples(numExamples int) ([]string, []xpv2.Reference, [...
type FakeManagedList (line 68) | type FakeManagedList struct
method GetItems (line 74) | func (fml *FakeManagedList) GetItems() []resource.Managed {
function TestToAndFromPtr (line 78) | func TestToAndFromPtr(t *testing.T) {
function TestToAndFromFloatPtr (line 95) | func TestToAndFromFloatPtr(t *testing.T) {
function TestToAndFromPtrValues (line 112) | func TestToAndFromPtrValues(t *testing.T) {
function TestToAndFromFloatPtrValues (line 131) | func TestToAndFromFloatPtrValues(t *testing.T) {
function TestToAndFromIntPtrValues (line 150) | func TestToAndFromIntPtrValues(t *testing.T) {
function TestResolve (line 169) | func TestResolve(t *testing.T) {
function TestResolveMultiple (line 540) | func TestResolveMultiple(t *testing.T) {
function TestControllersMustMatch (line 1023) | func TestControllersMustMatch(t *testing.T) {
FILE: pkg/resource/api.go
constant errUpdateObject (line 35) | errUpdateObject = "cannot update object"
type APIPatchingApplicator (line 40) | type APIPatchingApplicator struct
method Apply (line 53) | func (a *APIPatchingApplicator) Apply(ctx context.Context, o client.Ob...
function NewAPIPatchingApplicator (line 46) | func NewAPIPatchingApplicator(c client.Client) *APIPatchingApplicator {
type patch (line 85) | type patch struct
method Type (line 87) | func (p *patch) Type() types.PatchType { return types.M...
method Data (line 88) | func (p *patch) Data(_ client.Object) ([]byte, error) { return json.Ma...
type APIUpdatingApplicator (line 92) | type APIUpdatingApplicator struct
method Apply (line 104) | func (a *APIUpdatingApplicator) Apply(ctx context.Context, o client.Ob...
function NewAPIUpdatingApplicator (line 98) | func NewAPIUpdatingApplicator(c client.Client) *APIUpdatingApplicator {
type APIFinalizer (line 141) | type APIFinalizer struct
method AddFinalizer (line 165) | func (a *APIFinalizer) AddFinalizer(ctx context.Context, obj Object) e...
method RemoveFinalizer (line 176) | func (a *APIFinalizer) RemoveFinalizer(ctx context.Context, obj Object...
function NewNopFinalizer (line 147) | func NewNopFinalizer() Finalizer { return nopFinalizer{} }
type nopFinalizer (line 149) | type nopFinalizer struct
method AddFinalizer (line 151) | func (f nopFinalizer) AddFinalizer(_ context.Context, _ Object) error {
method RemoveFinalizer (line 155) | func (f nopFinalizer) RemoveFinalizer(_ context.Context, _ Object) err...
function NewAPIFinalizer (line 160) | func NewAPIFinalizer(c client.Client, finalizer string) *APIFinalizer {
type FinalizerFns (line 187) | type FinalizerFns struct
method AddFinalizer (line 193) | func (f FinalizerFns) AddFinalizer(ctx context.Context, obj Object) er...
method RemoveFinalizer (line 198) | func (f FinalizerFns) RemoveFinalizer(ctx context.Context, obj Object)...
FILE: pkg/resource/api_test.go
function TestAPIPatchingApplicator (line 35) | func TestAPIPatchingApplicator(t *testing.T) {
function TestAPIUpdatingApplicator (line 158) | func TestAPIUpdatingApplicator(t *testing.T) {
function TestManagedRemoveFinalizer (line 290) | func TestManagedRemoveFinalizer(t *testing.T) {
function TestAPIFinalizerAdder (line 350) | func TestAPIFinalizerAdder(t *testing.T) {
FILE: pkg/resource/enqueue_handlers.go
type adder (line 30) | type adder interface
type EnqueueRequestForProviderConfig (line 39) | type EnqueueRequestForProviderConfig struct
method Create (line 47) | func (e *EnqueueRequestForProviderConfig) Create(_ context.Context, ev...
method Update (line 53) | func (e *EnqueueRequestForProviderConfig) Update(_ context.Context, ev...
method Delete (line 60) | func (e *EnqueueRequestForProviderConfig) Delete(_ context.Context, ev...
method Generic (line 66) | func (e *EnqueueRequestForProviderConfig) Generic(_ context.Context, e...
method addProviderConfig (line 70) | func (e *EnqueueRequestForProviderConfig) addProviderConfig(obj runtim...
FILE: pkg/resource/enqueue_handlers_test.go
type addFn (line 35) | type addFn
method Add (line 37) | func (fn addFn) Add(item reconcile.Request) {
function TestAddProviderConfig (line 41) | func TestAddProviderConfig(t *testing.T) {
FILE: pkg/resource/fake/mocks.go
type Conditioned (line 42) | type Conditioned struct
method SetConditions (line 45) | func (m *Conditioned) SetConditions(c ...xpv2.Condition) { m.Condition...
method GetCondition (line 48) | func (m *Conditioned) GetCondition(ct xpv2.ConditionType) xpv2.Conditi...
type ClaimReferencer (line 53) | type ClaimReferencer struct
method SetClaimReference (line 56) | func (m *ClaimReferencer) SetClaimReference(r *reference.Claim) { m.Re...
method GetClaimReference (line 59) | func (m *ClaimReferencer) GetClaimReference() *reference.Claim { retur...
type ManagedResourceReferencer (line 62) | type ManagedResourceReferencer struct
method SetResourceReference (line 65) | func (m *ManagedResourceReferencer) SetResourceReference(r *corev1.Obj...
method GetResourceReference (line 68) | func (m *ManagedResourceReferencer) GetResourceReference() *corev1.Obj...
type TypedProviderConfigReferencer (line 71) | type TypedProviderConfigReferencer struct
method SetProviderConfigReference (line 74) | func (m *TypedProviderConfigReferencer) SetProviderConfigReference(p *...
method GetProviderConfigReference (line 79) | func (m *TypedProviderConfigReferencer) GetProviderConfigReference() *...
type LegacyProviderConfigReferencer (line 84) | type LegacyProviderConfigReferencer struct
method SetProviderConfigReference (line 87) | func (m *LegacyProviderConfigReferencer) SetProviderConfigReference(p ...
method GetProviderConfigReference (line 90) | func (m *LegacyProviderConfigReferencer) GetProviderConfigReference() ...
type RequiredProviderConfigReferencer (line 96) | type RequiredProviderConfigReferencer struct
method SetProviderConfigReference (line 99) | func (m *RequiredProviderConfigReferencer) SetProviderConfigReference(...
method GetProviderConfigReference (line 104) | func (m *RequiredProviderConfigReferencer) GetProviderConfigReference(...
type RequiredTypedProviderConfigReferencer (line 110) | type RequiredTypedProviderConfigReferencer struct
method SetProviderConfigReference (line 113) | func (m *RequiredTypedProviderConfigReferencer) SetProviderConfigRefer...
method GetProviderConfigReference (line 118) | func (m *RequiredTypedProviderConfigReferencer) GetProviderConfigRefer...
type RequiredTypedResourceReferencer (line 124) | type RequiredTypedResourceReferencer struct
method SetResourceReference (line 127) | func (m *RequiredTypedResourceReferencer) SetResourceReference(p xpv2....
method GetResourceReference (line 132) | func (m *RequiredTypedResourceReferencer) GetResourceReference() xpv2....
type LocalConnectionSecretWriterTo (line 137) | type LocalConnectionSecretWriterTo struct
method SetWriteConnectionSecretToReference (line 142) | func (m *LocalConnectionSecretWriterTo) SetWriteConnectionSecretToRefe...
method GetWriteConnectionSecretToReference (line 147) | func (m *LocalConnectionSecretWriterTo) GetWriteConnectionSecretToRefe...
type ConnectionSecretWriterTo (line 152) | type ConnectionSecretWriterTo struct
method SetWriteConnectionSecretToReference (line 155) | func (m *ConnectionSecretWriterTo) SetWriteConnectionSecretToReference...
method GetWriteConnectionSecretToReference (line 160) | func (m *ConnectionSecretWriterTo) GetWriteConnectionSecretToReference...
type Manageable (line 165) | type Manageable struct
method SetManagementPolicies (line 168) | func (m *Manageable) SetManagementPolicies(p xpv2.ManagementPolicies) ...
method GetManagementPolicies (line 171) | func (m *Manageable) GetManagementPolicies() xpv2.ManagementPolicies {...
type Orphanable (line 174) | type Orphanable struct
method SetDeletionPolicy (line 177) | func (m *Orphanable) SetDeletionPolicy(p xpv2.DeletionPolicy) { m.Poli...
method GetDeletionPolicy (line 180) | func (m *Orphanable) GetDeletionPolicy() xpv2.DeletionPolicy { return ...
type CompositionReferencer (line 183) | type CompositionReferencer struct
method SetCompositionReference (line 186) | func (m *CompositionReferencer) SetCompositionReference(r *corev1.Obje...
method GetCompositionReference (line 189) | func (m *CompositionReferencer) GetCompositionReference() *corev1.Obje...
type CompositionSelector (line 192) | type CompositionSelector struct
method SetCompositionSelector (line 195) | func (m *CompositionSelector) SetCompositionSelector(s *metav1.LabelSe...
method GetCompositionSelector (line 198) | func (m *CompositionSelector) GetCompositionSelector() *metav1.LabelSe...
type CompositionRevisionReferencer (line 201) | type CompositionRevisionReferencer struct
method SetCompositionRevisionReference (line 204) | func (m *CompositionRevisionReferencer) SetCompositionRevisionReferenc...
method GetCompositionRevisionReference (line 209) | func (m *CompositionRevisionReferencer) GetCompositionRevisionReferenc...
type CompositionRevisionSelector (line 214) | type CompositionRevisionSelector struct
method SetCompositionRevisionSelector (line 217) | func (m *CompositionRevisionSelector) SetCompositionRevisionSelector(l...
method GetCompositionRevisionSelector (line 222) | func (m *CompositionRevisionSelector) GetCompositionRevisionSelector()...
type CompositionUpdater (line 227) | type CompositionUpdater struct
method SetCompositionUpdatePolicy (line 230) | func (m *CompositionUpdater) SetCompositionUpdatePolicy(p *xpv2.Update...
method GetCompositionUpdatePolicy (line 235) | func (m *CompositionUpdater) GetCompositionUpdatePolicy() *xpv2.Update...
type CompositeResourceDeleter (line 240) | type CompositeResourceDeleter struct
method SetCompositeDeletePolicy (line 243) | func (m *CompositeResourceDeleter) SetCompositeDeletePolicy(p *xpv2.Co...
method GetCompositeDeletePolicy (line 248) | func (m *CompositeResourceDeleter) GetCompositeDeletePolicy() *xpv2.Co...
type CompositeResourceReferencer (line 253) | type CompositeResourceReferencer struct
method SetResourceReference (line 256) | func (m *CompositeResourceReferencer) SetResourceReference(p *referenc...
method GetResourceReference (line 259) | func (m *CompositeResourceReferencer) GetResourceReference() *referenc...
type ComposedResourcesReferencer (line 262) | type ComposedResourcesReferencer struct
method SetResourceReferences (line 265) | func (m *ComposedResourcesReferencer) SetResourceReferences(r []corev1...
method GetResourceReferences (line 268) | func (m *ComposedResourcesReferencer) GetResourceReferences() []corev1...
type EnvironmentConfigReferencer (line 272) | type EnvironmentConfigReferencer struct
method SetEnvironmentConfigReferences (line 275) | func (m *EnvironmentConfigReferencer) SetEnvironmentConfigReferences(r...
method GetEnvironmentConfigReferences (line 280) | func (m *EnvironmentConfigReferencer) GetEnvironmentConfigReferences()...
type ConnectionDetailsLastPublishedTimer (line 286) | type ConnectionDetailsLastPublishedTimer struct
method SetConnectionDetailsLastPublishedTime (line 295) | func (c *ConnectionDetailsLastPublishedTimer) SetConnectionDetailsLast...
method GetConnectionDetailsLastPublishedTime (line 300) | func (c *ConnectionDetailsLastPublishedTimer) GetConnectionDetailsLast...
type UserCounter (line 306) | type UserCounter struct
method SetUsers (line 309) | func (m *UserCounter) SetUsers(i int64) {
method GetUsers (line 314) | func (m *UserCounter) GetUsers() int64 {
type Object (line 319) | type Object struct
method GetObjectKind (line 325) | func (o *Object) GetObjectKind() schema.ObjectKind {
method DeepCopyObject (line 330) | func (o *Object) DeepCopyObject() runtime.Object {
type Managed (line 344) | type Managed struct
method GetObjectKind (line 351) | func (m *Managed) GetObjectKind() schema.ObjectKind {
method DeepCopyObject (line 356) | func (m *Managed) DeepCopyObject() runtime.Object {
type ModernManaged (line 370) | type ModernManaged struct
method GetObjectKind (line 380) | func (m *ModernManaged) GetObjectKind() schema.ObjectKind {
method DeepCopyObject (line 385) | func (m *ModernManaged) DeepCopyObject() runtime.Object {
type LegacyManaged (line 399) | type LegacyManaged struct
method GetObjectKind (line 409) | func (m *LegacyManaged) GetObjectKind() schema.ObjectKind {
method DeepCopyObject (line 414) | func (m *LegacyManaged) DeepCopyObject() runtime.Object {
type Composite (line 428) | type Composite struct
method GetObjectKind (line 446) | func (m *Composite) GetObjectKind() schema.ObjectKind {
method DeepCopyObject (line 451) | func (m *Composite) DeepCopyObject() runtime.Object {
type Composed (line 465) | type Composed struct
method GetObjectKind (line 473) | func (m *Composed) GetObjectKind() schema.ObjectKind {
method DeepCopyObject (line 478) | func (m *Composed) DeepCopyObject() runtime.Object {
type CompositeClaim (line 492) | type CompositeClaim struct
method GetObjectKind (line 509) | func (m *CompositeClaim) GetObjectKind() schema.ObjectKind {
method DeepCopyObject (line 514) | func (m *CompositeClaim) DeepCopyObject() runtime.Object {
type Manager (line 528) | type Manager struct
method Elected (line 540) | func (m *Manager) Elected() <-chan struct{} {
method GetCache (line 548) | func (m *Manager) GetCache() cache.Cache { return m.Cache }
method GetClient (line 551) | func (m *Manager) GetClient() client.Client { return m.Client }
method GetScheme (line 554) | func (m *Manager) GetScheme() *runtime.Scheme { return m.Scheme }
method GetConfig (line 557) | func (m *Manager) GetConfig() *rest.Config { return m.Config }
method GetRESTMapper (line 560) | func (m *Manager) GetRESTMapper() meta.RESTMapper { return m.RESTMapper }
method GetLogger (line 563) | func (m *Manager) GetLogger() logr.Logger { return m.Logger }
function GVK (line 569) | func GVK(o runtime.Object) schema.GroupVersionKind {
function SchemeWith (line 574) | func SchemeWith(o ...runtime.Object) *runtime.Scheme {
type MockConnectionSecretOwner (line 583) | type MockConnectionSecretOwner struct
method GetWriteConnectionSecretToReference (line 591) | func (m *MockConnectionSecretOwner) GetWriteConnectionSecretToReferenc...
method SetWriteConnectionSecretToReference (line 596) | func (m *MockConnectionSecretOwner) SetWriteConnectionSecretToReferenc...
method GetObjectKind (line 601) | func (m *MockConnectionSecretOwner) GetObjectKind() schema.ObjectKind {
method DeepCopyObject (line 606) | func (m *MockConnectionSecretOwner) DeepCopyObject() runtime.Object {
type MockLocalConnectionSecretOwner (line 621) | type MockLocalConnectionSecretOwner struct
method GetWriteConnectionSecretToReference (line 629) | func (m *MockLocalConnectionSecretOwner) GetWriteConnectionSecretToRef...
method SetWriteConnectionSecretToReference (line 634) | func (m *MockLocalConnectionSecretOwner) SetWriteConnectionSecretToRef...
method GetObjectKind (line 639) | func (m *MockLocalConnectionSecretOwner) GetObjectKind() schema.Object...
method DeepCopyObject (line 644) | func (m *MockLocalConnectionSecretOwner) DeepCopyObject() runtime.Obje...
type ProviderConfig (line 658) | type ProviderConfig struct
method GetObjectKind (line 666) | func (p *ProviderConfig) GetObjectKind() schema.ObjectKind {
method DeepCopyObject (line 671) | func (p *ProviderConfig) DeepCopyObject() runtime.Object {
type ProviderConfigUsage (line 686) | type ProviderConfigUsage struct
method GetObjectKind (line 694) | func (p *ProviderConfigUsage) GetObjectKind() schema.ObjectKind {
method DeepCopyObject (line 699) | func (p *ProviderConfigUsage) DeepCopyObject() runtime.Object {
type LegacyProviderConfigUsage (line 714) | type LegacyProviderConfigUsage struct
method GetObjectKind (line 722) | func (p *LegacyProviderConfigUsage) GetObjectKind() schema.ObjectKind {
method DeepCopyObject (line 727) | func (p *LegacyProviderConfigUsage) DeepCopyObject() runtime.Object {
FILE: pkg/resource/interfaces.go
type Conditioned (line 33) | type Conditioned interface
type ClaimReferencer (line 39) | type ClaimReferencer interface
type ManagedResourceReferencer (line 45) | type ManagedResourceReferencer interface
type LocalConnectionSecretWriterTo (line 52) | type LocalConnectionSecretWriterTo interface
type ConnectionSecretWriterTo (line 59) | type ConnectionSecretWriterTo interface
type Manageable (line 65) | type Manageable interface
type Orphanable (line 71) | type Orphanable interface
type ProviderConfigReferencer (line 77) | type ProviderConfigReferencer interface
type TypedProviderConfigReferencer (line 84) | type TypedProviderConfigReferencer interface
type RequiredProviderConfigReferencer (line 91) | type RequiredProviderConfigReferencer interface
type RequiredTypedProviderConfigReferencer (line 98) | type RequiredTypedProviderConfigReferencer interface
type RequiredTypedResourceReferencer (line 104) | type RequiredTypedResourceReferencer interface
type Finalizer (line 110) | type Finalizer interface
type CompositionSelector (line 116) | type CompositionSelector interface
type CompositionReferencer (line 122) | type CompositionReferencer interface
type CompositionRevisionReferencer (line 129) | type CompositionRevisionReferencer interface
type CompositionRevisionSelector (line 136) | type CompositionRevisionSelector interface
type CompositionUpdater (line 143) | type CompositionUpdater interface
type CompositeResourceDeleter (line 150) | type CompositeResourceDeleter interface
type ComposedResourcesReferencer (line 156) | type ComposedResourcesReferencer interface
type CompositeResourceReferencer (line 162) | type CompositeResourceReferencer interface
type EnvironmentConfigReferencer (line 168) | type EnvironmentConfigReferencer interface
type UserCounter (line 174) | type UserCounter interface
type ConnectionDetailsPublishedTimer (line 181) | type ConnectionDetailsPublishedTimer interface
type ReconciliationObserver (line 187) | type ReconciliationObserver interface
type Object (line 193) | type Object interface
type Managed (line 200) | type Managed interface
type ModernManaged (line 209) | type ModernManaged interface
type LegacyManaged (line 220) | type LegacyManaged interface
type ManagedList (line 228) | type ManagedList interface
type LegacyManagedList (line 238) | type LegacyManagedList interface
type ProviderConfig (line 246) | type ProviderConfig interface
type ProviderConfigUsage (line 254) | type ProviderConfigUsage interface
type TypedProviderConfigUsage (line 261) | type TypedProviderConfigUsage interface
type LegacyProviderConfigUsage (line 270) | type LegacyProviderConfigUsage interface
type ProviderConfigUsageList (line 276) | type ProviderConfigUsageList interface
type Composite (line 284) | type Composite interface
type LegacyComposite (line 299) | type LegacyComposite interface
type Composed (line 307) | type Composed interface
type CompositeClaim (line 316) | type CompositeClaim interface
FILE: pkg/resource/late_initializer.go
function NewLateInitializer (line 26) | func NewLateInitializer() *LateInitializer {
type LateInitializer (line 34) | type LateInitializer struct
method IsChanged (line 40) | func (li *LateInitializer) IsChanged() bool {
method SetChanged (line 46) | func (li *LateInitializer) SetChanged() {
method LateInitializeStringPtr (line 51) | func (li *LateInitializer) LateInitializeStringPtr(org *string, from *...
method LateInitializeInt64Ptr (line 62) | func (li *LateInitializer) LateInitializeInt64Ptr(org *int64, from *in...
method LateInitializeBoolPtr (line 73) | func (li *LateInitializer) LateInitializeBoolPtr(org *bool, from *bool...
method LateInitializeTimePtr (line 85) | func (li *LateInitializer) LateInitializeTimePtr(org *metav1.Time, fro...
FILE: pkg/resource/late_initializer_test.go
function TestLateInitializeStringPtr (line 27) | func TestLateInitializeStringPtr(t *testing.T) {
function TestLateInitializeInt64Ptr (line 93) | func TestLateInitializeInt64Ptr(t *testing.T) {
function TestLateInitializeBoolPtr (line 159) | func TestLateInitializeBoolPtr(t *testing.T) {
function TestLateInitializeTimePtr (line 225) | func TestLateInitializeTimePtr(t *testing.T) {
FILE: pkg/resource/predicates.go
type PredicateFn (line 33) | type PredicateFn
function NewPredicates (line 40) | func NewPredicates(fn PredicateFn) predicate.Funcs {
function DesiredStateChanged (line 55) | func DesiredStateChanged() predicate.Predicate {
type AnnotationChangedPredicate (line 77) | type AnnotationChangedPredicate struct
method Update (line 91) | func (a AnnotationChangedPredicate) Update(e event.UpdateEvent) bool {
function copyAnnotations (line 83) | func copyAnnotations(an map[string]string) map[string]string {
FILE: pkg/resource/predicates_test.go
function TestDesiredStateChanged (line 32) | func TestDesiredStateChanged(t *testing.T) {
FILE: pkg/resource/providerconfig.go
constant errExtractEnv (line 36) | errExtractEnv = "cannot extract from environment variable whe...
constant errExtractFs (line 37) | errExtractFs = "cannot extract from filesystem when no path ...
constant errExtractSecretKey (line 38) | errExtractSecretKey = "cannot extract from secret key when none spe...
constant errGetCredentialsSecret (line 39) | errGetCredentialsSecret = "cannot get credentials secret"
constant errNoHandlerForSourceFmt (line 40) | errNoHandlerForSourceFmt = "no extraction handler registered for source:...
constant errMissingPCRef (line 41) | errMissingPCRef = "managed resource does not reference a Provid...
constant errMissingPCRefKind (line 42) | errMissingPCRefKind = "managed resource ProviderConfig reference ha...
constant errApplyPCU (line 43) | errApplyPCU = "cannot apply ProviderConfigUsage"
type missingRefError (line 46) | type missingRefError struct
method MissingReference (line 48) | func (m missingRefError) MissingReference() bool { return true }
function IsMissingReference (line 52) | func IsMissingReference(err error) bool {
type EnvLookupFn (line 61) | type EnvLookupFn
function ExtractEnv (line 64) | func ExtractEnv(_ context.Context, e EnvLookupFn, s xpv2.CommonCredentia...
function ExtractFs (line 73) | func ExtractFs(_ context.Context, fs afero.Fs, s xpv2.CommonCredentialSe...
function ExtractSecret (line 82) | func ExtractSecret(ctx context.Context, client client.Client, s xpv2.Com...
function CommonCredentialExtractor (line 96) | func CommonCredentialExtractor(ctx context.Context, source xpv2.Credenti...
type Tracker (line 116) | type Tracker interface
type TrackerFn (line 122) | type TrackerFn
method Track (line 125) | func (fn TrackerFn) Track(ctx context.Context, mg Managed) error {
type LegacyTracker (line 130) | type LegacyTracker interface
type LegacyTrackerFn (line 136) | type LegacyTrackerFn
method Track (line 139) | func (fn LegacyTrackerFn) Track(ctx context.Context, mg LegacyManaged)...
type ModernTracker (line 144) | type ModernTracker interface
type ModernTrackerFn (line 150) | type ModernTrackerFn
method Track (line 153) | func (fn ModernTrackerFn) Track(ctx context.Context, mg ModernManaged)...
type ProviderConfigUsageTracker (line 159) | type ProviderConfigUsageTracker struct
method Track (line 174) | func (u *ProviderConfigUsageTracker) Track(ctx context.Context, mg Mod...
function NewProviderConfigUsageTracker (line 165) | func NewProviderConfigUsageTracker(c client.Client, of TypedProviderConf...
type LegacyProviderConfigUsageTracker (line 212) | type LegacyProviderConfigUsageTracker struct
method Track (line 228) | func (u *LegacyProviderConfigUsageTracker) Track(ctx context.Context, ...
function NewLegacyProviderConfigUsageTracker (line 219) | func NewLegacyProviderConfigUsageTracker(c client.Client, of LegacyProvi...
FILE: pkg/resource/providerconfig_test.go
function TestExtractEnv (line 34) | func TestExtractEnv(t *testing.T) {
function TestExtractFs (line 90) | func TestExtractFs(t *testing.T) {
function TestExtractSecret (line 150) | func TestExtractSecret(t *testing.T) {
function TestTrackLegacy (line 240) | func TestTrackLegacy(t *testing.T) {
function TestTrackModern (line 335) | func TestTrackModern(t *testing.T) {
FILE: pkg/resource/reference.go
type ReferenceStatusType (line 28) | type ReferenceStatusType
method String (line 38) | func (t ReferenceStatusType) String() string {
constant ReferenceStatusUnknown (line 32) | ReferenceStatusUnknown ReferenceStatusType = iota
constant ReferenceNotFound (line 33) | ReferenceNotFound
constant ReferenceNotReady (line 34) | ReferenceNotReady
constant ReferenceReady (line 35) | ReferenceReady
type ReferenceStatus (line 43) | type ReferenceStatus struct
method String (line 48) | func (r ReferenceStatus) String() string {
type CanReference (line 55) | type CanReference
type AttributeReferencer (line 60) | type AttributeReferencer interface
FILE: pkg/resource/reference_test.go
function TestReferenceStatusType_String (line 24) | func TestReferenceStatusType_String(t *testing.T) {
function TestReferenceStatus_String (line 56) | func TestReferenceStatus_String(t *testing.T) {
FILE: pkg/resource/resource.go
constant SecretTypeConnection (line 45) | SecretTypeConnection corev1.SecretType = "connection.crossplane.io/v1alp...
constant ExternalResourceTagKeyKind (line 50) | ExternalResourceTagKeyKind = "crossplane-kind"
constant ExternalResourceTagKeyName (line 51) | ExternalResourceTagKeyName = "crossplane-name"
constant ExternalResourceTagKeyNamespace (line 52) | ExternalResourceTagKeyNamespace = "crossplane-namespace"
constant ExternalResourceTagKeyProvider (line 53) | ExternalResourceTagKeyProvider = "crossplane-providerconfig"
constant ExternalResourceTagKeyProviderConfigKind (line 54) | ExternalResourceTagKeyProviderConfigKind = "crossplane-providerconfig-kind"
constant errMarshalJSON (line 56) | errMarshalJSON = "cannot marshal to JSON"
constant errUnmarshalJSON (line 57) | errUnmarshalJSON = "cannot unmarshal JSON data"
constant errStructFromUnstructured (line 58) | errStructFromUnstructured = "cannot create Struct"
type ManagedKind (line 62) | type ManagedKind
type CompositeKind (line 65) | type CompositeKind
type CompositeClaimKind (line 69) | type CompositeClaimKind
type ProviderConfigKinds (line 72) | type ProviderConfigKinds struct
type ConnectionSecretOwner (line 79) | type ConnectionSecretOwner interface
type LocalConnectionSecretOwner (line 87) | type LocalConnectionSecretOwner interface
function LocalConnectionSecretFor (line 96) | func LocalConnectionSecretFor(o LocalConnectionSecretOwner, kind schema....
function ConnectionSecretFor (line 112) | func ConnectionSecretFor(o ConnectionSecretOwner, kind schema.GroupVersi...
function MustCreateObject (line 126) | func MustCreateObject(kind schema.GroupVersionKind, oc runtime.ObjectCre...
function GetKind (line 138) | func GetKind(obj runtime.Object, ot runtime.ObjectTyper) (schema.GroupVe...
function MustGetKind (line 158) | func MustGetKind(obj runtime.Object, ot runtime.ObjectTyper) schema.Grou...
type ErrorIs (line 168) | type ErrorIs
function Ignore (line 172) | func Ignore(is ErrorIs, err error) error {
function IgnoreAny (line 183) | func IgnoreAny(err error, is ...ErrorIs) error {
function IgnoreNotFound (line 195) | func IgnoreNotFound(err error) error {
function IsAPIError (line 200) | func IsAPIError(err error) bool {
function IsAPIErrorWrapped (line 206) | func IsAPIErrorWrapped(err error) bool {
function IsConditionTrue (line 211) | func IsConditionTrue(c xpv2.Condition) bool {
type Applicator (line 216) | type Applicator interface
type shouldRetryFunc (line 220) | type shouldRetryFunc
type ApplicatorWithRetry (line 223) | type ApplicatorWithRetry struct
method Apply (line 231) | func (awr *ApplicatorWithRetry) Apply(ctx context.Context, c client.Ob...
function NewApplicatorWithRetry (line 241) | func NewApplicatorWithRetry(applicator Applicator, shouldRetry shouldRet...
type ClientApplicator (line 257) | type ClientApplicator struct
type ApplyFn (line 263) | type ApplyFn
method Apply (line 266) | func (fn ApplyFn) Apply(ctx context.Context, o client.Object, ao ...Ap...
type ApplyOption (line 272) | type ApplyOption
function UpdateFn (line 276) | func UpdateFn(fn func(current, desired runtime.Object)) ApplyOption {
type notControllableError (line 283) | type notControllableError struct
method NotControllable (line 285) | func (e notControllableError) NotControllable() bool {
function IsNotControllable (line 292) | func IsNotControllable(err error) bool {
function MustBeControllableBy (line 305) | func MustBeControllableBy(u types.UID) ApplyOption {
function ConnectionSecretMustBeControllableBy (line 337) | func ConnectionSecretMustBeControllableBy(u types.UID) ApplyOption {
type notAllowedError (line 359) | type notAllowedError struct
method NotAllowed (line 361) | func (e notAllowedError) NotAllowed() bool {
function NewNotAllowed (line 366) | func NewNotAllowed(message string) error {
function IsNotAllowed (line 372) | func IsNotAllowed(err error) bool {
function AllowUpdateIf (line 384) | func AllowUpdateIf(fn func(current, desired runtime.Object) bool) ApplyO...
function StoreCurrentRV (line 397) | func StoreCurrentRV(origRV *string) ApplyOption {
function GetExternalTags (line 412) | func GetExternalTags(mg Managed) map[string]string {
constant DefaultFirstN (line 443) | DefaultFirstN = 3
function FirstNAndSomeMore (line 449) | func FirstNAndSomeMore(n int, names []string) string {
function StableNAndSomeMore (line 467) | func StableNAndSomeMore(n int, names []string) string {
function AsProtobufStruct (line 479) | func AsProtobufStruct(o runtime.Object) (*structpb.Struct, error) {
FILE: pkg/resource/resource_test.go
constant namespace (line 42) | namespace = "coolns"
constant name (line 43) | name = "cool"
constant uid (line 44) | uid = types.UID("definitely-a-uuid")
constant testSteps (line 45) | testSteps = 3
function TestLocalConnectionSecretFor (line 59) | func TestLocalConnectionSecretFor(t *testing.T) {
function TestConnectionSecretFor (line 113) | func TestConnectionSecretFor(t *testing.T) {
type MockTyper (line 167) | type MockTyper struct
method ObjectKinds (line 173) | func (t MockTyper) ObjectKinds(_ runtime.Object) ([]schema.GroupVersio...
method Recognizes (line 177) | func (t MockTyper) Recognizes(_ schema.GroupVersionKind) bool { return...
function TestGetKind (line 179) | func TestGetKind(t *testing.T) {
function TestMustCreateObject (line 255) | func TestMustCreateObject(t *testing.T) {
function TestIgnore (line 284) | func TestIgnore(t *testing.T) {
function TestIgnoreAny (line 322) | func TestIgnoreAny(t *testing.T) {
function TestIsConditionTrue (line 370) | func TestIsConditionTrue(t *testing.T) {
type object (line 403) | type object struct
method DeepCopyObject (line 408) | func (o *object) DeepCopyObject() runtime.Object {
function TestIsNotControllable (line 412) | func TestIsNotControllable(t *testing.T) {
function TestMustBeControllableBy (line 445) | func TestMustBeControllableBy(t *testing.T) {
function TestConnectionSecretMustBeControllableBy (line 503) | func TestConnectionSecretMustBeControllableBy(t *testing.T) {
function TestAllowUpdateIf (line 575) | func TestAllowUpdateIf(t *testing.T) {
function TestGetExternalTags (line 617) | func TestGetExternalTags(t *testing.T) {
function Test_notControllableError_NotControllable (line 694) | func Test_notControllableError_NotControllable(t *testing.T) {
function Test_notAllowedError_NotAllowed (line 704) | func Test_notAllowedError_NotAllowed(t *testing.T) {
function TestIsAPIErrorWrapped (line 713) | func TestIsAPIErrorWrapped(t *testing.T) {
function TestNewApplicatorWithRetry (line 745) | func TestNewApplicatorWithRetry(t *testing.T) {
type mockApplicator (line 783) | type mockApplicator struct
method Apply (line 788) | func (m *mockApplicator) Apply(_ context.Context, _ client.Object, _ ....
function TestApplicatorWithRetry_Apply (line 798) | func TestApplicatorWithRetry_Apply(t *testing.T) {
function TestUpdate (line 874) | func TestUpdate(t *testing.T) {
function TestFirstNAndSomeMore (line 930) | func TestFirstNAndSomeMore(t *testing.T) {
FILE: pkg/resource/unstructured/claim/claim.go
type Option (line 32) | type Option
function WithGroupVersionKind (line 36) | func WithGroupVersionKind(gvk schema.GroupVersionKind) Option {
function WithConditions (line 44) | func WithConditions(c ...xpv2.Condition) Option {
function New (line 51) | func New(opts ...Option) *Unstructured {
type Unstructured (line 64) | type Unstructured struct
method GetUnstructured (line 69) | func (c *Unstructured) GetUnstructured() *unstructured.Unstructured {
method GetCompositionSelector (line 74) | func (c *Unstructured) GetCompositionSelector() *metav1.LabelSelector {
method SetCompositionSelector (line 84) | func (c *Unstructured) SetCompositionSelector(sel *metav1.LabelSelecto...
method GetCompositionReference (line 89) | func (c *Unstructured) GetCompositionReference() *corev1.ObjectReferen...
method SetCompositionReference (line 99) | func (c *Unstructured) SetCompositionReference(ref *corev1.ObjectRefer...
method GetCompositionRevisionReference (line 104) | func (c *Unstructured) GetCompositionRevisionReference() *corev1.Local...
method SetCompositionRevisionReference (line 114) | func (c *Unstructured) SetCompositionRevisionReference(ref *corev1.Loc...
method GetCompositionRevisionSelector (line 119) | func (c *Unstructured) GetCompositionRevisionSelector() *metav1.LabelS...
method SetCompositionRevisionSelector (line 129) | func (c *Unstructured) SetCompositionRevisionSelector(ref *metav1.Labe...
method SetCompositionUpdatePolicy (line 134) | func (c *Unstructured) SetCompositionUpdatePolicy(p *xpv2.UpdatePolicy) {
method GetCompositionUpdatePolicy (line 139) | func (c *Unstructured) GetCompositionUpdatePolicy() *xpv2.UpdatePolicy {
method SetCompositeDeletePolicy (line 151) | func (c *Unstructured) SetCompositeDeletePolicy(p *xpv2.CompositeDelet...
method GetCompositeDeletePolicy (line 156) | func (c *Unstructured) GetCompositeDeletePolicy() *xpv2.CompositeDelet...
method GetResourceReference (line 168) | func (c *Unstructured) GetResourceReference() *reference.Composite {
method SetResourceReference (line 178) | func (c *Unstructured) SetResourceReference(ref *reference.Composite) {
method GetReference (line 183) | func (c *Unstructured) GetReference() *reference.Claim {
method GetWriteConnectionSecretToReference (line 193) | func (c *Unstructured) GetWriteConnectionSecretToReference() *xpv2.Loc...
method SetWriteConnectionSecretToReference (line 203) | func (c *Unstructured) SetWriteConnectionSecretToReference(ref *xpv2.L...
method GetCondition (line 208) | func (c *Unstructured) GetCondition(ct xpv2.ConditionType) xpv2.Condit...
method SetConditions (line 219) | func (c *Unstructured) SetConditions(conditions ...xpv2.Condition) {
method GetConnectionDetailsLastPublishedTime (line 228) | func (c *Unstructured) GetConnectionDetailsLastPublishedTime() *metav1...
method SetConnectionDetailsLastPublishedTime (line 238) | func (c *Unstructured) SetConnectionDetailsLastPublishedTime(t *metav1...
method SetObservedGeneration (line 243) | func (c *Unstructured) SetObservedGeneration(generation int64) {
method GetObservedGeneration (line 251) | func (c *Unstructured) GetObservedGeneration() int64 {
FILE: pkg/resource/unstructured/claim/claim_test.go
function TestWithGroupVersionKind (line 37) | func TestWithGroupVersionKind(t *testing.T) {
function TestConditions (line 70) | func TestConditions(t *testing.T) {
function TestCompositionSelector (line 126) | func TestCompositionSelector(t *testing.T) {
function TestCompositionReference (line 152) | func TestCompositionReference(t *testing.T) {
function TestCompositionRevisionReference (line 178) | func TestCompositionRevisionReference(t *testing.T) {
function TestCompositionRevisionSelector (line 204) | func TestCompositionRevisionSelector(t *testing.T) {
function TestCompositionUpdatePolicy (line 230) | func TestCompositionUpdatePolicy(t *testing.T) {
function TestCompositeDeletePolicy (line 256) | func TestCompositeDeletePolicy(t *testing.T) {
function TestResourceReference (line 282) | func TestResourceReference(t *testing.T) {
function TestClaimReference (line 308) | func TestClaimReference(t *testing.T) {
function TestWriteConnectionSecretToReference (line 322) | func TestWriteConnectionSecretToReference(t *testing.T) {
function TestConnectionDetailsLastPublishedTime (line 348) | func TestConnectionDetailsLastPublishedTime(t *testing.T) {
function TestObservedGeneration (line 385) | func TestObservedGeneration(t *testing.T) {
FILE: pkg/resource/unstructured/claim/zz_generated.deepcopy.go
method DeepCopyInto (line 28) | func (in *Unstructured) DeepCopyInto(out *Unstructured) {
method DeepCopy (line 34) | func (in *Unstructured) DeepCopy() *Unstructured {
method DeepCopyObject (line 44) | func (in *Unstructured) DeepCopyObject() runtime.Object {
FILE: pkg/resource/unstructured/client.go
type Wrapper (line 32) | type Wrapper interface
type ListWrapper (line 37) | type ListWrapper interface
function NewClient (line 45) | func NewClient(c client.Client) *WrapperClient {
type WrapperClient (line 52) | type WrapperClient struct
method Get (line 59) | func (c *WrapperClient) Get(ctx context.Context, key client.ObjectKey,...
method List (line 70) | func (c *WrapperClient) List(ctx context.Context, list client.ObjectLi...
method Create (line 79) | func (c *WrapperClient) Create(ctx context.Context, obj client.Object,...
method Delete (line 88) | func (c *WrapperClient) Delete(ctx context.Context, obj client.Object,...
method Update (line 98) | func (c *WrapperClient) Update(ctx context.Context, obj client.Object,...
method Patch (line 108) | func (c *WrapperClient) Patch(ctx context.Context, obj client.Object, ...
method Apply (line 117) | func (c *WrapperClient) Apply(ctx context.Context, config runtime.Appl...
method DeleteAllOf (line 122) | func (c *WrapperClient) DeleteAllOf(ctx context.Context, obj client.Ob...
method Status (line 131) | func (c *WrapperClient) Status() client.StatusWriter {
method SubResource (line 138) | func (c *WrapperClient) SubResource(subResource string) client.SubReso...
method Scheme (line 144) | func (c *WrapperClient) Scheme() *runtime.Scheme {
method RESTMapper (line 149) | func (c *WrapperClient) RESTMapper() meta.RESTMapper {
method GroupVersionKindFor (line 154) | func (c *WrapperClient) GroupVersionKindFor(obj runtime.Object) (schem...
method IsObjectNamespaced (line 163) | func (c *WrapperClient) IsObjectNamespaced(obj runtime.Object) (bool, ...
type wrapperStatusClient (line 171) | type wrapperStatusClient struct
method Create (line 178) | func (c *wrapperStatusClient) Create(ctx context.Context, obj, subReso...
method Update (line 190) | func (c *wrapperStatusClient) Update(ctx context.Context, obj client.O...
method Patch (line 201) | func (c *wrapperStatusClient) Patch(ctx context.Context, obj client.Ob...
method Apply (line 214) | func (c *wrapperStatusClient) Apply(ctx context.Context, obj runtime.A...
FILE: pkg/resource/unstructured/client_test.go
type Wrapped (line 42) | type Wrapped struct
method GetUnstructured (line 44) | func (w *Wrapped) GetUnstructured() *unstructured.Unstructured {
function NewWrapped (line 52) | func NewWrapped() *Wrapped { return &Wrapped{} }
type WrappedList (line 54) | type WrappedList struct
method GetUnstructuredList (line 56) | func (w *WrappedList) GetUnstructuredList() *unstructured.Unstructured...
function NewWrappedList (line 61) | func NewWrappedList() *WrappedList { return &WrappedList{} }
function NewUnwrapped (line 63) | func NewUnwrapped() *unstructured.Unstructured {
function NewUnwrappedList (line 71) | func NewUnwrappedList() *unstructured.UnstructuredList {
function TestGet (line 76) | func TestGet(t *testing.T) {
function TestList (line 122) | func TestList(t *testing.T) {
function TestCreate (line 169) | func TestCreate(t *testing.T) {
function TestDelete (line 214) | func TestDelete(t *testing.T) {
function TestUpdate (line 259) | func TestUpdate(t *testing.T) {
function TestPatch (line 304) | func TestPatch(t *testing.T) {
function TestDeleteAllOf (line 350) | func TestDeleteAllOf(t *testing.T) {
function TestStatusCreate (line 395) | func TestStatusCreate(t *testing.T) {
function TestStatusUpdate (line 441) | func TestStatusUpdate(t *testing.T) {
function TestStatusPatch (line 486) | func TestStatusPatch(t *testing.T) {
FILE: pkg/resource/unstructured/composed/composed.go
type Option (line 30) | type Option
function FromReference (line 34) | func FromReference(ref corev1.ObjectReference) Option {
function WithConditions (line 45) | func WithConditions(c ...xpv2.Condition) Option {
function New (line 52) | func New(opts ...Option) *Unstructured {
type Unstructured (line 65) | type Unstructured struct
method GetUnstructured (line 70) | func (cr *Unstructured) GetUnstructured() *unstructured.Unstructured {
method GetCondition (line 75) | func (cr *Unstructured) GetCondition(ct xpv2.ConditionType) xpv2.Condi...
method SetConditions (line 86) | func (cr *Unstructured) SetConditions(c ...xpv2.Condition) {
method GetWriteConnectionSecretToReference (line 95) | func (cr *Unstructured) GetWriteConnectionSecretToReference() *xpv2.Se...
method SetWriteConnectionSecretToReference (line 105) | func (cr *Unstructured) SetWriteConnectionSecretToReference(r *xpv2.Se...
method OwnedBy (line 110) | func (cr *Unstructured) OwnedBy(u types.UID) bool {
method RemoveOwnerRef (line 121) | func (cr *Unstructured) RemoveOwnerRef(u types.UID) {
method SetObservedGeneration (line 164) | func (cr *Unstructured) SetObservedGeneration(generation int64) {
method GetObservedGeneration (line 172) | func (cr *Unstructured) GetObservedGeneration() int64 {
type ListOption (line 132) | type ListOption
function FromReferenceToList (line 136) | func FromReferenceToList(ref corev1.ObjectReference) ListOption {
function NewList (line 144) | func NewList(opts ...ListOption) *UnstructuredList {
type UnstructuredList (line 154) | type UnstructuredList struct
method GetUnstructuredList (line 159) | func (cr *UnstructuredList) GetUnstructuredList() *unstructured.Unstru...
FILE: pkg/resource/unstructured/composed/composed_test.go
function TestFromReference (line 31) | func TestFromReference(t *testing.T) {
function TestConditions (line 69) | func TestConditions(t *testing.T) {
function TestWriteConnectionSecretToReference (line 125) | func TestWriteConnectionSecretToReference(t *testing.T) {
function TestObservedGeneration (line 151) | func TestObservedGeneration(t *testing.T) {
FILE: pkg/resource/unstructured/composed/zz_generated.deepcopy.go
method DeepCopyInto (line 28) | func (in *Unstructured) DeepCopyInto(out *Unstructured) {
method DeepCopy (line 34) | func (in *Unstructured) DeepCopy() *Unstructured {
method DeepCopyObject (line 44) | func (in *Unstructured) DeepCopyObject() runtime.Object {
FILE: pkg/resource/unstructured/composite/composite.go
type Schema (line 35) | type Schema
constant SchemaModern (line 41) | SchemaModern Schema = iota
constant SchemaLegacy (line 46) | SchemaLegacy
type Option (line 50) | type Option
function WithGroupVersionKind (line 53) | func WithGroupVersionKind(gvk schema.GroupVersionKind) Option {
function WithConditions (line 60) | func WithConditions(c ...xpv2.Condition) Option {
function WithSchema (line 67) | func WithSchema(s Schema) Option {
function New (line 74) | func New(opts ...Option) *Unstructured {
type Unstructured (line 87) | type Unstructured struct
method GetUnstructured (line 94) | func (c *Unstructured) GetUnstructured() *unstructured.Unstructured {
method GetCompositionSelector (line 99) | func (c *Unstructured) GetCompositionSelector() *metav1.LabelSelector {
method SetCompositionSelector (line 114) | func (c *Unstructured) SetCompositionSelector(sel *metav1.LabelSelecto...
method GetCompositionReference (line 124) | func (c *Unstructured) GetCompositionReference() *corev1.ObjectReferen...
method SetCompositionReference (line 139) | func (c *Unstructured) SetCompositionReference(ref *corev1.ObjectRefer...
method GetCompositionRevisionReference (line 149) | func (c *Unstructured) GetCompositionRevisionReference() *corev1.Local...
method SetCompositionRevisionReference (line 164) | func (c *Unstructured) SetCompositionRevisionReference(ref *corev1.Loc...
method GetCompositionRevisionSelector (line 174) | func (c *Unstructured) GetCompositionRevisionSelector() *metav1.LabelS...
method SetCompositionRevisionSelector (line 189) | func (c *Unstructured) SetCompositionRevisionSelector(sel *metav1.Labe...
method SetCompositionUpdatePolicy (line 199) | func (c *Unstructured) SetCompositionUpdatePolicy(p *xpv2.UpdatePolicy) {
method GetCompositionUpdatePolicy (line 209) | func (c *Unstructured) GetCompositionUpdatePolicy() *xpv2.UpdatePolicy {
method GetClaimReference (line 226) | func (c *Unstructured) GetClaimReference() *reference.Claim {
method SetClaimReference (line 241) | func (c *Unstructured) SetClaimReference(ref *reference.Claim) {
method GetResourceReferences (line 251) | func (c *Unstructured) GetResourceReferences() []corev1.ObjectReference {
method SetResourceReferences (line 264) | func (c *Unstructured) SetResourceReferences(refs []corev1.ObjectRefer...
method GetReference (line 287) | func (c *Unstructured) GetReference() *reference.Composite {
method GetWriteConnectionSecretToReference (line 306) | func (c *Unstructured) GetWriteConnectionSecretToReference() *xpv2.Sec...
method SetWriteConnectionSecretToReference (line 321) | func (c *Unstructured) SetWriteConnectionSecretToReference(ref *xpv2.S...
method GetCondition (line 331) | func (c *Unstructured) GetCondition(ct xpv2.ConditionType) xpv2.Condit...
method SetConditions (line 342) | func (c *Unstructured) SetConditions(conditions ...xpv2.Condition) {
method GetConditions (line 351) | func (c *Unstructured) GetConditions() []xpv2.Condition {
method GetConnectionDetailsLastPublishedTime (line 360) | func (c *Unstructured) GetConnectionDetailsLastPublishedTime() *metav1...
method SetConnectionDetailsLastPublishedTime (line 375) | func (c *Unstructured) SetConnectionDetailsLastPublishedTime(t *metav1...
method SetObservedGeneration (line 385) | func (c *Unstructured) SetObservedGeneration(generation int64) {
method GetObservedGeneration (line 393) | func (c *Unstructured) GetObservedGeneration() int64 {
method SetLastHandledReconcileAt (line 401) | func (c *Unstructured) SetLastHandledReconcileAt(token string) {
method GetLastHandledReconcileAt (line 406) | func (c *Unstructured) GetLastHandledReconcileAt() string {
method SetClaimConditionTypes (line 416) | func (c *Unstructured) SetClaimConditionTypes(in ...xpv2.ConditionType...
method GetClaimConditionTypes (line 448) | func (c *Unstructured) GetClaimConditionTypes() []xpv2.ConditionType {
FILE: pkg/resource/unstructured/composite/composite_test.go
function TestWithGroupVersionKind (line 39) | func TestWithGroupVersionKind(t *testing.T) {
function TestConditions (line 72) | func TestConditions(t *testing.T) {
function TestClaimConditionTypes (line 138) | func TestClaimConditionTypes(t *testing.T) {
function TestCompositionSelector (line 217) | func TestCompositionSelector(t *testing.T) {
function TestCompositionReference (line 243) | func TestCompositionReference(t *testing.T) {
function TestCompositionRevisionReference (line 269) | func TestCompositionRevisionReference(t *testing.T) {
function TestCompositionRevisionSelector (line 295) | func TestCompositionRevisionSelector(t *testing.T) {
function TestCompositionUpdatePolicy (line 321) | func TestCompositionUpdatePolicy(t *testing.T) {
function TestClaimReference (line 347) | func TestClaimReference(t *testing.T) {
function TestResourceReferences (line 373) | func TestResourceReferences(t *testing.T) {
function TestWriteConnectionSecretToReference (line 399) | func TestWriteConnectionSecretToReference(t *testing.T) {
function TestConnectionDetailsLastPublishedTime (line 425) | func TestConnectionDetailsLastPublishedTime(t *testing.T) {
function TestObservedGeneration (line 467) | func TestObservedGeneration(t *testing.T) {
function TestLastHandledReconcileAt (line 492) | func TestLastHandledReconcileAt(t *testing.T) {
FILE: pkg/resource/unstructured/composite/zz_generated.deepcopy.go
method DeepCopyInto (line 28) | func (in *Unstructured) DeepCopyInto(out *Unstructured) {
method DeepCopy (line 34) | func (in *Unstructured) DeepCopy() *Unstructured {
method DeepCopyObject (line 44) | func (in *Unstructured) DeepCopyObject() runtime.Object {
FILE: pkg/resource/unstructured/reference/reference.go
type Claim (line 25) | type Claim struct
method GroupVersionKind (line 55) | func (c *Claim) GroupVersionKind() schema.GroupVersionKind {
type Composite (line 40) | type Composite struct
method GroupVersionKind (line 60) | func (c *Composite) GroupVersionKind() schema.GroupVersionKind {
FILE: pkg/statemetrics/mr_state_metrics.go
type MRStateMetrics (line 36) | type MRStateMetrics struct
method Describe (line 66) | func (r *MRStateMetrics) Describe(ch chan<- *prometheus.Desc) {
method Collect (line 75) | func (r *MRStateMetrics) Collect(ch chan<- prometheus.Metric) {
function NewMRStateMetrics (line 43) | func NewMRStateMetrics() *MRStateMetrics {
type MRStateRecorder (line 82) | type MRStateRecorder struct
method Record (line 103) | func (r *MRStateRecorder) Record(ctx context.Context) error {
method Start (line 135) | func (r *MRStateRecorder) Start(ctx context.Context) error {
method getLabels (line 151) | func (r *MRStateRecorder) getLabels() (prometheus.Labels, error) {
function NewMRStateRecorder (line 92) | func NewMRStateRecorder(c client.Client, log logging.Logger, metrics *MR...
FILE: pkg/statemetrics/state_recorder.go
constant subSystem (line 26) | subSystem = "crossplane"
type StateRecorder (line 29) | type StateRecorder interface
type NopStateRecorder (line 35) | type NopStateRecorder struct
method Record (line 43) | func (r *NopStateRecorder) Record(_ context.Context, _ schema.GroupVer...
method Start (line 46) | func (r *NopStateRecorder) Start(_ context.Context) error { return nil }
function NewNopStateRecorder (line 38) | func NewNopStateRecorder() *NopStateRecorder {
FILE: pkg/test/cmp.go
function EquateErrors (line 35) | func EquateErrors() cmp.Option {
function EquateConditions (line 53) | func EquateConditions() cmp.Option {
FILE: pkg/test/fake.go
type MockGetFn (line 31) | type MockGetFn
type MockListFn (line 34) | type MockListFn
type MockCreateFn (line 37) | type MockCreateFn
type MockDeleteFn (line 40) | type MockDeleteFn
type MockDeleteAllOfFn (line 43) | type MockDeleteAllOfFn
type MockUpdateFn (line 46) | type MockUpdateFn
type MockPatchFn (line 49) | type MockPatchFn
type MockApplyFn (line 52) | type MockApplyFn
type MockSubResourceGetFn (line 55) | type MockSubResourceGetFn
type MockSubResourceCreateFn (line 58) | type MockSubResourceCreateFn
type MockSubResourceUpdateFn (line 61) | type MockSubResourceUpdateFn
type MockSubResourcePatchFn (line 64) | type MockSubResourcePatchFn
type MockSubResourceApplyFn (line 67) | type MockSubResourceApplyFn
type MockSchemeFn (line 70) | type MockSchemeFn
type MockGroupVersionKindForFn (line 73) | type MockGroupVersionKindForFn
type MockIsObjectNamespacedFn (line 76) | type MockIsObjectNamespacedFn
type ObjectFn (line 80) | type ObjectFn
type ApplyFn (line 84) | type ApplyFn
type RuntimeObjectFn (line 88) | type RuntimeObjectFn
type ObjectListFn (line 92) | type ObjectListFn
function NewMockGetFn (line 95) | func NewMockGetFn(err error, ofn ...ObjectFn) MockGetFn {
function NewMockListFn (line 108) | func NewMockListFn(err error, ofn ...ObjectListFn) MockListFn {
function NewMockCreateFn (line 121) | func NewMockCreateFn(err error, ofn ...ObjectFn) MockCreateFn {
function NewMockDeleteFn (line 134) | func NewMockDeleteFn(err error, ofn ...ObjectFn) MockDeleteFn {
function NewMockDeleteAllOfFn (line 147) | func NewMockDeleteAllOfFn(err error, ofn ...ObjectFn) MockDeleteAllOfFn {
function NewMockUpdateFn (line 160) | func NewMockUpdateFn(err error, ofn ...ObjectFn) MockUpdateFn {
function NewMockPatchFn (line 173) | func NewMockPatchFn(err error, ofn ...ObjectFn) MockPatchFn {
function NewMockApplyFn (line 186) | func NewMockApplyFn(err error, afn ...ApplyFn) MockApplyFn {
function NewMockSubResourceCreateFn (line 199) | func NewMockSubResourceCreateFn(err error, ofn ...ObjectFn) MockSubResou...
function NewMockSubResourceUpdateFn (line 212) | func NewMockSubResourceUpdateFn(err error, ofn ...ObjectFn) MockSubResou...
function NewMockSubResourcePatchFn (line 225) | func NewMockSubResourcePatchFn(err error, ofn ...ObjectFn) MockSubResour...
function NewMockSchemeFn (line 238) | func NewMockSchemeFn(scheme *runtime.Scheme) MockSchemeFn {
function NewMockGroupVersionKindForFn (line 245) | func NewMockGroupVersionKindForFn(err error, gvk schema.GroupVersionKind...
function NewMockIsObjectNamespacedFn (line 258) | func NewMockIsObjectNamespacedFn(err error, isNamespaced bool, rofn ...R...
type MockClient (line 274) | type MockClient struct
method Get (line 321) | func (c *MockClient) Get(ctx context.Context, key client.ObjectKey, ob...
method List (line 326) | func (c *MockClient) List(ctx context.Context, list client.ObjectList,...
method Create (line 331) | func (c *MockClient) Create(ctx context.Context, obj client.Object, op...
method Delete (line 336) | func (c *MockClient) Delete(ctx context.Context, obj client.Object, op...
method DeleteAllOf (line 341) | func (c *MockClient) DeleteAllOf(ctx context.Context, obj client.Objec...
method Update (line 346) | func (c *MockClient) Update(ctx context.Context, obj client.Object, op...
method Patch (line 351) | func (c *MockClient) Patch(ctx context.Context, obj client.Object, pat...
method Apply (line 356) | func (c *MockClient) Apply(ctx context.Context, config runtime.ApplyCo...
method Status (line 361) | func (c *MockClient) Status() client.SubResourceWriter {
method SubResource (line 370) | func (c *MockClient) SubResource(_ string) client.SubResourceClient {
method RESTMapper (line 380) | func (c *MockClient) RESTMapper() meta.RESTMapper {
method Scheme (line 385) | func (c *MockClient) Scheme() *runtime.Scheme {
method GroupVersionKindFor (line 390) | func (c *MockClient) GroupVersionKindFor(obj runtime.Object) (schema.G...
method IsObjectNamespaced (line 395) | func (c *MockClient) IsObjectNamespaced(obj runtime.Object) (bool, err...
function NewMockClient (line 300) | func NewMockClient() *MockClient {
type MockSubResourceClient (line 400) | type MockSubResourceClient struct
method Get (line 409) | func (m *MockSubResourceClient) Get(ctx context.Context, obj, subResou...
method Create (line 414) | func (m *MockSubResourceClient) Create(ctx context.Context, obj, subRe...
method Update (line 419) | func (m *MockSubResourceClient) Update(ctx context.Context, obj client...
method Patch (line 424) | func (m *MockSubResourceClient) Patch(ctx context.Context, obj client....
method Apply (line 429) | func (m *MockSubResourceClient) Apply(ctx context.Context, obj runtime...
FILE: pkg/version/fake/mocks.go
type MockVersioner (line 29) | type MockVersioner struct
method GetVersionString (line 51) | func (m *MockVersioner) GetVersionString() string {
method GetSemVer (line 56) | func (m *MockVersioner) GetSemVer() (*semver.Version, error) {
method InConstraints (line 61) | func (m *MockVersioner) InConstraints(_ string) (bool, error) {
function NewMockGetVersionStringFn (line 36) | func NewMockGetVersionStringFn(s string) func() string {
function NewMockGetSemVerFn (line 41) | func NewMockGetSemVerFn(s *semver.Version, err error) func() (*semver.Ve...
function NewMockInConstraintsFn (line 46) | func NewMockInConstraintsFn(b bool, err error) func() (bool, error) {
FILE: pkg/version/version.go
type Operations (line 27) | type Operations interface
type Versioner (line 34) | type Versioner struct
method GetVersionString (line 46) | func (v *Versioner) GetVersionString() string {
method GetSemVer (line 51) | func (v *Versioner) GetSemVer() (*semver.Version, error) {
method InConstraints (line 57) | func (v *Versioner) InConstraints(c string) (bool, error) {
function New (line 39) | func New() *Versioner {
FILE: pkg/version/version_test.go
function TestInRange (line 28) | func TestInRange(t *testing.T) {
FILE: pkg/webhook/mutator.go
function WithMutationFns (line 28) | func WithMutationFns(fns ...MutateFn) MutatorOption {
type MutatorOption (line 35) | type MutatorOption
type MutateFn (line 38) | type MutateFn
function NewMutator (line 41) | func NewMutator(opts ...MutatorOption) *Mutator {
type Mutator (line 53) | type Mutator struct
method Default (line 60) | func (m *Mutator) Default(ctx context.Context, obj runtime.Object) err...
FILE: pkg/webhook/mutator_test.go
function TestDefault (line 38) | func TestDefault(t *testing.T) {
FILE: pkg/webhook/validator.go
function WithValidateCreationFns (line 28) | func WithValidateCreationFns(fns ...ValidateCreateFn) ValidatorOption {
function WithValidateUpdateFns (line 36) | func WithValidateUpdateFns(fns ...ValidateUpdateFn) ValidatorOption {
function WithValidateDeletionFns (line 44) | func WithValidateDeletionFns(fns ...ValidateDeleteFn) ValidatorOption {
type ValidatorOption (line 51) | type ValidatorOption
type ValidateCreateFn (line 54) | type ValidateCreateFn
type ValidateUpdateFn (line 57) | type ValidateUpdateFn
type ValidateDeleteFn (line 60) | type ValidateDeleteFn
function NewValidator (line 63) | func NewValidator(opts ...ValidatorOption) *Validator {
type Validator (line 77) | type Validator struct
method ValidateCreate (line 84) | func (vc *Validator) ValidateCreate(ctx context.Context, obj runtime.O...
method ValidateUpdate (line 100) | func (vc *Validator) ValidateUpdate(ctx context.Context, oldObj, newOb...
method ValidateDelete (line 116) | func (vc *Validator) ValidateDelete(ctx context.Context, obj runtime.O...
FILE: pkg/webhook/validator_test.go
function TestValidateCreate (line 45) | func TestValidateCreate(t *testing.T) {
function TestValidateUpdate (line 128) | func TestValidateUpdate(t *testing.T) {
function TestValidateDelete (line 212) | func TestValidateDelete(t *testing.T) {
FILE: pkg/xcrd/composite.go
constant AnnotationKeyCompositionResourceName (line 28) | AnnotationKeyCompositionResourceName = "crossplane.io/composition-resour...
function SetCompositionResourceName (line 33) | func SetCompositionResourceName(o metav1.Object, n string) {
function GetCompositionResourceName (line 39) | func GetCompositionResourceName(o metav1.Object) string {
FILE: pkg/xcrd/crd.go
constant CategoryClaim (line 40) | CategoryClaim = "claim"
constant CategoryComposite (line 41) | CategoryComposite = "composite"
constant errFmtGenCrd (line 45) | errFmtGenCrd = "cannot generate CRD for %q %q"
constant errParseValidation (line 46) | errParseValidation = "cannot parse validation schema"
constant errInvalidClaimNames (line 47) | errInvalidClaimNames = "invalid resource claim names"
constant errMissingClaimNames (line 48) | errMissingClaimNames = "missing names"
constant errFmtConflictingClaimName (line 49) | errFmtConflictingClaimName = "%q conflicts with composite resource n...
constant errCustomResourceValidationNil (line 50) | errCustomResourceValidationNil = "custom resource validation cannot be nil"
function ForCompositeResource (line 55) | func ForCompositeResource(xrd *v1.CompositeResourceDefinition) (*extv1.C...
function ForCompositeResourceClaim (line 109) | func ForCompositeResourceClaim(xrd *v1.CompositeResourceDefinition) (*ex...
function genCrdVersion (line 158) | func genCrdVersion(vr v1.CompositeResourceDefinitionVersion, maxNameLeng...
function validateClaimNames (line 228) | func validateClaimNames(d *v1.CompositeResourceDefinition) error {
function parseSchema (line 252) | func parseSchema(v *v1.CompositeResourceValidation) (*extv1.JSONSchemaPr...
function setCrdMetadata (line 266) | func setCrdMetadata(crd *extv1.CustomResourceDefinition, xrd *v1.Composi...
function IsEstablished (line 291) | func IsEstablished(s extv1.CustomResourceDefinitionStatus) bool {
FILE: pkg/xcrd/crd_test.go
function TestIsEstablished (line 150) | func TestIsEstablished(t *testing.T) {
function TestForCompositeResource (line 180) | func TestForCompositeResource(t *testing.T) {
function TestValidateClaimNames (line 2536) | func TestValidateClaimNames(t *testing.T) {
function TestForCompositeResourceClaim (line 2634) | func TestForCompositeResourceClaim(t *testing.T) {
function TestForCompositeResourceClaimEmptyXrd (line 3238) | func TestForCompositeResourceClaimEmptyXrd(t *testing.T) {
function TestSetCrdMetadata (line 3498) | func TestSetCrdMetadata(t *testing.T) {
FILE: pkg/xcrd/fuzz_test.go
function FuzzForCompositeResourceXcrd (line 26) | func FuzzForCompositeResourceXcrd(f *testing.F) {
function FuzzForCompositeResourceClaim (line 40) | func FuzzForCompositeResourceClaim(f *testing.F) {
FILE: pkg/xcrd/schemas.go
constant LabelKeyNamePrefixForComposed (line 30) | LabelKeyNamePrefixForComposed = "crossplane.io/composite"
constant LabelKeyClaimName (line 31) | LabelKeyClaimName = "crossplane.io/claim-name"
constant LabelKeyClaimNamespace (line 32) | LabelKeyClaimNamespace = "crossplane.io/claim-namespace"
constant CompositionRevisionRef (line 36) | CompositionRevisionRef = "compositionRevisionRef"
function BaseProps (line 46) | func BaseProps() *extv1.JSONSchemaProps {
function CompositeResourceSpecProps (line 76) | func CompositeResourceSpecProps(s v1.CompositeResourceScope, defaultPol ...
function CompositeResourceClaimSpecProps (line 210) | func CompositeResourceClaimSpecProps(defaultPol *xpv2.CompositeDeletePol...
function CompositeResourceStatusProps (line 293) | func CompositeResourceStatusProps(s v1.CompositeResourceScope) map[strin...
function CompositeResourcePrinterColumns (line 347) | func CompositeResourcePrinterColumns(s v1.CompositeResourceScope) []extv...
function CompositeResourceClaimPrinterColumns (line 394) | func CompositeResourceClaimPrinterColumns() []extv1.CustomResourceColumn...
function GetPropFields (line 420) | func GetPropFields(props map[string]extv1.JSONSchemaProps) []string {
FILE: pkg/xpkg/build.go
constant errParserPackage (line 40) | errParserPackage = "failed to parse package"
constant errParserExample (line 41) | errParserExample = "failed to parse examples"
constant errLintPackage (line 42) | errLintPackage = "failed to lint package"
constant errInitBackend (line 43) | errInitBackend = "failed to initialize package parsing backend"
constant errTarFromStream (line 44) | errTarFromStream = "failed to build tarball from stream"
constant errLayerFromTar (line 45) | errLayerFromTar = "failed to convert tarball to image layer"
constant errDigestInvalid (line 46) | errDigestInvalid = "failed to get digest from image layer"
constant errBuildImage (line 47) | errBuildImage = "failed to build image from layers"
constant errConfigFile (line 48) | errConfigFile = "failed to get config file from image"
constant errMutateConfig (line 49) | errMutateConfig = "failed to mutate config for image"
constant errBuildObjectScheme (line 50) | errBuildObjectScheme = "failed to build scheme for package encoder"
function annotatedTeeReadCloser (line 61) | func annotatedTeeReadCloser(r io.Reader, w io.Writer) *teeReader {
type teeReader (line 65) | type teeReader struct
method Read (line 70) | func (t *teeReader) Read(p []byte) (n int, err error) {
method Close (line 81) | func (t *teeReader) Close() error {
method Annotate (line 85) | func (t *teeReader) Annotate() any {
type Builder (line 95) | type Builder struct
method Build (line 128) | func (b *Builder) Build(ctx context.Context, opts ...BuildOpt) (v1.Ima...
function New (line 104) | func New(packageSource, exampleSource parser.Backend, packageParser pars...
type buildOpts (line 113) | type buildOpts struct
type BuildOpt (line 118) | type BuildOpt
function WithBase (line 121) | func WithBase(img v1.Image) BuildOpt {
function encode (line 242) | func encode(pkg parser.Lintable) (*bytes.Buffer, error) {
function SkipContains (line 272) | func SkipContains(pattern string) parser.FilterFn {
FILE: pkg/xpkg/build_test.go
function init (line 52) | func init() {
type MockBackend (line 61) | type MockBackend struct
method Init (line 69) | func (m *MockBackend) Init(_ context.Context, _ ...parser.BackendOptio...
function NewMockInitFn (line 65) | func NewMockInitFn(r io.ReadCloser, err error) func() (io.ReadCloser, er...
type MockParser (line 75) | type MockParser struct
method Parse (line 83) | func (m *MockParser) Parse(context.Context, io.ReadCloser) (*parser.Pa...
function NewMockParseFn (line 79) | func NewMockParseFn(pkg *parser.Package, err error) func() (*parser.Pack...
function TestBuild (line 87) | func TestBuild(t *testing.T) {
function TestBuildExamples (line 136) | func TestBuildExamples(t *testing.T) {
type xpkgContents (line 289) | type xpkgContents struct
function readImg (line 295) | func readImg(i v1.Image) (xpkgContents, error) {
function allLabels (line 339) | func allLabels(i partial.WithConfigFile) ([]string, error) {
function yamlParser (line 357) | func yamlParser() (*parser.PackageParser, error) {
FILE: pkg/xpkg/cache.go
constant errGetNopCache (line 31) | errGetNopCache = "cannot get content from a NopCache"
constant cacheContentExt (line 34) | cacheContentExt = ".gz"
type PackageCache (line 37) | type PackageCache interface
type FsPackageCache (line 46) | type FsPackageCache struct
method Has (line 61) | func (c *FsPackageCache) Has(id string) bool {
method Get (line 70) | func (c *FsPackageCache) Get(id string) (io.ReadCloser, error) {
method Store (line 83) | func (c *FsPackageCache) Store(id string, content io.ReadCloser) error {
method Delete (line 112) | func (c *FsPackageCache) Delete(id string) error {
function NewFsPackageCache (line 53) | func NewFsPackageCache(dir string, fs afero.Fs) *FsPackageCache {
type NopCache (line 126) | type NopCache struct
method Has (line 134) | func (c *NopCache) Has(string) bool {
method Get (line 139) | func (c *NopCache) Get(string) (io.ReadCloser, error) {
method Store (line 144) | func (c *NopCache) Store(string, io.ReadCloser) error {
method Delete (line 149) | func (c *NopCache) Delete(string) error {
function NewNopCache (line 129) | func NewNopCache() *NopCache {
FILE: pkg/xpkg/cache_test.go
function TestHas (line 35) | func TestHas(t *testing.T) {
function TestGet (line 89) | func TestGet(t *testing.T) {
function TestStore (line 144) | func TestStore(t *testing.T) {
function TestDelete (line 184) | func TestDelete(t *testing.T) {
FILE: pkg/xpkg/client.go
type Client (line 40) | type Client interface
type ImageConfig (line 57) | type ImageConfig struct
type ImageConfigReason (line 63) | type ImageConfigReason
constant ImageConfigReasonRewrite (line 68) | ImageConfigReasonRewrite ImageConfigReason = "RewriteImage"
constant ImageConfigReasonSetPullSecret (line 72) | ImageConfigReasonSetPullSecret ImageConfigReason = "SetImagePullSecret"
constant ImageConfigReasonVerify (line 76) | ImageConfigReasonVerify ImageConfigReason = "VerifyImage"
function SupportedImageConfigs (line 83) | func SupportedImageConfigs() []ImageConfigReason {
constant maxPackageSize (line 93) | maxPackageSize = 200 << 20
type Package (line 96) | type Package struct
method DigestHex (line 125) | func (p *Package) DigestHex() string {
method GetMeta (line 135) | func (p *Package) GetMeta() pkgmetav1.Pkg {
method GetDependencies (line 147) | func (p *Package) GetDependencies() []pkgmetav1.Dependency {
method Ref (line 156) | func (p *Package) Ref() string {
method ResolvedRef (line 162) | func (p *Package) ResolvedRef() string {
function BuildPackageRef (line 168) | func BuildPackageRef(source, version string) string {
type GetOption (line 176) | type GetOption
function WithPullSecrets (line 180) | func WithPullSecrets(secrets ...string) GetOption {
function WithPullPolicy (line 188) | func WithPullPolicy(policy corev1.PullPolicy) GetOption {
type GetConfig (line 195) | type GetConfig struct
type CachedClient (line 201) | type CachedClient struct
method Get (line 221) | func (c *CachedClient) Get(ctx context.Context, ref string, opts ...Ge...
method ListVersions (line 370) | func (c *CachedClient) ListVersions(ctx context.Context, source string...
function NewCachedClient (line 210) | func NewCachedClient(f Fetcher, p parser.Parser, c PackageCache, s Confi...
function ExtractPackageYAML (line 414) | func ExtractPackageYAML(img v1.Image) (io.ReadCloser, error) {
function FilterAndSortVersions (line 463) | func FilterAndSortVersions(tags []string) []string {
FILE: pkg/xpkg/client_test.go
constant testDigest (line 39) | testDigest = "sha256:abc123def456789012345678901234567890123456789012345...
constant testSource (line 40) | testSource = "xpkg.crossplane.io/crossplane-contrib/provider-aws"
constant testTag (line 41) | testTag = "v1.0.0"
type MockFetcher (line 46) | type MockFetcher struct
method Fetch (line 52) | func (m *MockFetcher) Fetch(ctx context.Context, ref name.Reference, s...
method Head (line 56) | func (m *MockFetcher) Head(ctx context.Context, ref name.Reference, se...
method Tags (line 60) | func (m *MockFetcher) Tags(ctx context.Context, ref name.Reference, se...
type MockCache (line 66) | type MockCache struct
method Get (line 73) | func (m *MockCache) Get(key string) (io.ReadCloser, error) {
method Store (line 77) | func (m *MockCache) Store(key string, rc io.ReadCloser) error {
method Delete (line 81) | func (m *MockCache) Delete(key string) error {
method Has (line 85) | func (m *MockCache) Has(key string) bool {
type MockConfigStore (line 91) | type MockConfigStore struct
method RewritePath (line 98) | func (m *MockConfigStore) RewritePath(ctx context.Context, ref string)...
method PullSecretFor (line 102) | func (m *MockConfigStore) PullSecretFor(ctx context.Context, ref strin...
method ImageVerificationConfigFor (line 106) | func (m *MockConfigStore) ImageVerificationConfigFor(ctx context.Conte...
method RuntimeConfigFor (line 110) | func (m *MockConfigStore) RuntimeConfigFor(ctx context.Context, ref st...
type MockValidator (line 114) | type MockValidator struct
method Validate (line 118) | func (m *MockValidator) Validate(ctx context.Context, ref name.Referen...
type MockImage (line 122) | type MockImage struct
method Manifest (line 129) | func (m *MockImage) Manifest() (*v1.Manifest, error) {
method LayerByDigest (line 133) | func (m *MockImage) LayerByDigest(h v1.Hash) (v1.Layer, error) {
method Layers (line 137) | func (m *MockImage) Layers() ([]v1.Layer, error) {
type MockLayer (line 144) | type MockLayer struct
method Uncompressed (line 153) | func (m *MockLayer) Uncompressed() (io.ReadCloser, error) {
function NewMockLayer (line 149) | func NewMockLayer(content string) *MockLayer {
function CreateTarWithPackageYAML (line 157) | func CreateTarWithPackageYAML(packageYAML string) string {
function NewTestParser (line 172) | func NewTestParser(t *testing.T) parser.Parser {
function NewTestPackage (line 185) | func NewTestPackage(t *testing.T, metaJSON string, objectsJSON ...string...
function PackageComparer (line 206) | func PackageComparer() cmp.Option {
function TestClientGet (line 223) | func TestClientGet(t *testing.T) {
function TestClientListVersions (line 1060) | func TestClientListVersions(t *testing.T) {
function TestExtractPackageYAML (line 1236) | func TestExtractPackageYAML(t *testing.T) {
function TestFilterAndSortVersions (line 1387) | func TestFilterAndSortVersions(t *testing.T) {
function TestPackageDigestHex (line 1449) | func TestPackageDigestHex(t *testing.T) {
FILE: pkg/xpkg/config.go
constant errListImageConfigs (line 14) | errListImageConfigs = "cannot list ImageConfigs"
constant errFindBestMatch (line 15) | errFindBestMatch = "cannot find best matching ImageConfig"
type ConfigStore (line 19) | type ConfigStore interface
type isValidConfig (line 35) | type isValidConfig
type ImageConfigStoreOption (line 38) | type ImageConfigStoreOption
function NewImageConfigStore (line 41) | func NewImageConfigStore(client client.Client, namespace string, opts .....
type ImageConfigStore (line 55) | type ImageConfigStore struct
method PullSecretFor (line 62) | func (s *ImageConfigStore) PullSecretFor(ctx context.Context, image st...
method ImageVerificationConfigFor (line 80) | func (s *ImageConfigStore) ImageVerificationConfigFor(ctx context.Cont...
method RewritePath (line 104) | func (s *ImageConfigStore) RewritePath(ctx context.Context, image stri...
method RuntimeConfigFor (line 142) | func (s *ImageConfigStore) RuntimeConfigFor(ctx context.Context, image...
method bestMatch (line 161) | func (s *ImageConfigStore) bestMatch(ctx context.Context, image string...
FILE: pkg/xpkg/config_test.go
function TestImageConfigStoreBestMatch (line 19) | func TestImageConfigStoreBestMatch(t *testing.T) {
FILE: pkg/xpkg/fake/config.go
type MockConfigStore (line 14) | type MockConfigStore struct
method PullSecretFor (line 22) | func (s *MockConfigStore) PullSecretFor(ctx context.Context, image str...
method ImageVerificationConfigFor (line 27) | func (s *MockConfigStore) ImageVerificationConfigFor(ctx context.Conte...
method RewritePath (line 32) | func (s *MockConfigStore) RewritePath(ctx context.Context, image strin...
method RuntimeConfigFor (line 37) | func (s *MockConfigStore) RuntimeConfigFor(ctx context.Context, image ...
function NewMockConfigStorePullSecretForFn (line 42) | func NewMockConfigStorePullSecretForFn(imageConfig, pullSecret string, e...
function NewMockConfigStoreImageVerificationConfigForFn (line 49) | func NewMockConfigStoreImageVerificationConfigForFn(imageConfig string, ...
function NewMockRewritePathFn (line 57) | func NewMockRewritePathFn(imageConfig, newPath string, err error) func(c...
function NewMockRuntimeConfigForFn (line 65) | func NewMockRuntimeConfigForFn(imageConfig string, runtimeConfig *v1beta...
FILE: pkg/xpkg/fake/mocks.go
type MockCache (line 33) | type MockCache struct
method Has (line 61) | func (c *MockCache) Has(string) bool {
method Get (line 66) | func (c *MockCache) Get(string) (io.ReadCloser, error) {
method Store (line 71) | func (c *MockCache) Store(s string, rc io.ReadCloser) error {
method Delete (line 76) | func (c *MockCache) Delete(string) error {
function NewMockCacheHasFn (line 41) | func NewMockCacheHasFn(has bool) func() bool {
function NewMockCacheGetFn (line 46) | func NewMockCacheGetFn(rc io.ReadCloser, err error) func() (io.ReadClose...
function NewMockCacheStoreFn (line 51) | func NewMockCacheStoreFn(err error) func(s string, rc io.ReadCloser) err...
function NewMockCacheDeleteFn (line 56) | func NewMockCacheDeleteFn(err error) func() error {
type MockFetcher (line 83) | type MockFetcher struct
method Fetch (line 95) | func (m *MockFetcher) Fetch(_ context.Context, _ name.Reference, _ ......
method Head (line 105) | func (m *MockFetcher) Head(_ context.Context, ref name.Reference, _ .....
method Tags (line 115) | func (m *MockFetcher) Tags(_ context.Context, ref name.Reference, _ .....
function NewMockFetchFn (line 90) | func NewMockFetchFn(img v1.Image, err error) func() (v1.Image, error) {
function NewMockHeadFn (line 100) | func NewMockHeadFn(d *v1.Descriptor, err error) func(name.Reference) (*v...
function NewMockTagsFn (line 110) | func NewMockTagsFn(tags []string, err error) func(name.Reference) ([]str...
type MockClient (line 122) | type MockClient struct
method Get (line 128) | func (c *MockClient) Get(ctx context.Context, ref string, opts ...xpkg...
method ListVersions (line 133) | func (c *MockClient) ListVersions(ctx context.Context, source string, ...
function NewMockGetFn (line 138) | func NewMockGetFn(pkg *xpkg.Package, err error) func(context.Context, st...
function NewMockListVersionsFn (line 143) | func NewMockListVersionsFn(versions []string, err error) func(context.Co...
FILE: pkg/xpkg/fetch.go
function init (line 37) | func init() { //nolint:gochecknoinits // See comment below.
type Fetcher (line 47) | type Fetcher interface
type K8sFetcher (line 54) | type K8sFetcher struct
method Fetch (line 132) | func (i *K8sFetcher) Fetch(ctx context.Context, ref name.Reference, se...
method Head (line 151) | func (i *K8sFetcher) Head(ctx context.Context, ref name.Reference, sec...
method Tags (line 185) | func (i *K8sFetcher) Tags(ctx context.Context, ref name.Reference, sec...
type FetcherOpt (line 63) | type FetcherOpt
function WithCustomCA (line 66) | func WithCustomCA(rootCAs *x509.CertPool) FetcherOpt {
function WithUserAgent (line 80) | func WithUserAgent(userAgent string) FetcherOpt {
function WithNamespace (line 94) | func WithNamespace(ns string) FetcherOpt {
function WithServiceAccount (line 103) | func WithServiceAccount(sa string) FetcherOpt {
function NewK8sFetcher (line 111) | func NewK8sFetcher(client kubernetes.Interface, opts ...FetcherOpt) (*K8...
type NopFetcher (line 204) | type NopFetcher struct
method Fetch (line 212) | func (n *NopFetcher) Fetch(_ context.Context, _ name.Reference, _ ...s...
method Head (line 217) | func (n *NopFetcher) Head(_ context.Context, _ name.Reference, _ ...st...
method Tags (line 222) | func (n *NopFetcher) Tags(_ context.Context, _ name.Reference, _ ...st...
function NewNopFetcher (line 207) | func NewNopFetcher() *NopFetcher {
FILE: pkg/xpkg/find.go
constant errNoMatch (line 28) | errNoMatch = "directory does not contain a compiled crossplane package"
constant errMultiMatch (line 29) | errMultiMatch = "directory contains multiple compiled crossplane packages"
function FindXpkgInDir (line 33) | func FindXpkgInDir(fs afero.Fs, root string) (string, error) {
FILE: pkg/xpkg/find_test.go
function TestFindXpkgInDir (line 30) | func TestFindXpkgInDir(t *testing.T) {
FILE: pkg/xpkg/fuzz_test.go
function FuzzFindXpkgInDir (line 26) | func FuzzFindXpkgInDir(f *testing.F) {
FILE: pkg/xpkg/layers.go
constant errLayer (line 36) | errLayer = "cannot get image layers"
constant errDigest (line 37) | errDigest = "cannot get image digest"
function Layer (line 42) | func Layer(r io.Reader, fileName, annotation string, fileSize int64, mod...
function writeLayer (line 83) | func writeLayer(tw *tar.Writer, hdr *tar.Header, buf io.Reader) error {
function Label (line 100) | func Label(annotation string) string {
function AnnotateLayers (line 114) | func AnnotateLayers(i v1.Image) (v1.Image, error) {
FILE: pkg/xpkg/lint.go
constant errNotExactlyOneMeta (line 37) | errNotExactlyOneMeta = "not exactly one package meta type"
constant errNotMeta (line 38) | errNotMeta = "meta type is not a package"
constant errNotMetaProvider (line 39) | errNotMetaProvider = "package meta type is not Provider"
constant errNotMetaConfiguration (line 40) | errNotMetaConfiguration = "package meta type is not Configu...
constant errNotMetaFunction (line 41) | errNotMetaFunction = "package meta type is not Function"
constant errNotCRD (line 42) | errNotCRD = "object is not a CRD"
constant errNotMRD (line 43) | errNotMRD = "object is not an MRD"
constant errNotXRD (line 44) | errNotXRD = "object is not an XRD"
constant errNotMutatingWebhookConfiguration (line 45) | errNotMutatingWebhookConfiguration = "object is not a MutatingWebhookC...
constant errNotValidatingWebhookConfiguration (line 46) | errNotValidatingWebhookConfiguration = "object is not an ValidatingWebho...
constant errNotComposition (line 47) | errNotComposition = "object is not a Composition"
constant errNotActivationPolicy (line 48) | errNotActivationPolicy = "object is not an ManagedResource...
constant errNotOperation (line 49) | errNotOperation = "object is not an Operation"
constant errNotCronOperation (line 50) | errNotCronOperation = "object is not a CronOperation"
constant errNotWatchOperation (line 51) | errNotWatchOperation = "object is not a WatchOperation"
constant errBadConstraints (line 52) | errBadConstraints = "package version constraints are ...
constant errFmtCrossplaneIncompatible (line 53) | errFmtCrossplaneIncompatible = "package is not compatible with C...
function NewProviderLinter (line 58) | func NewProviderLinter() parser.Linter {
function NewConfigurationLinter (line 71) | func NewConfigurationLinter() parser.Linter {
function NewFunctionLinter (line 80) | func NewFunctionLinter() parser.Linter {
function OneMeta (line 88) | func OneMeta(pkg parser.Lintable) error {
function IsProvider (line 97) | func IsProvider(o runtime.Object) error {
function IsConfiguration (line 107) | func IsConfiguration(o runtime.Object) error {
function IsFunction (line 117) | func IsFunction(o runtime.Object) error {
function PackageCrossplaneCompatible (line 128) | func PackageCrossplaneCompatible(v version.Operations) parser.ObjectLint...
function PackageValidSemver (line 153) | func PackageValidSemver(o runtime.Object) error {
function IsCRD (line 171) | func IsCRD(o runtime.Object) error {
function IsMRD (line 181) | func IsMRD(o runtime.Object) error {
function IsMutatingWebhookConfiguration (line 191) | func IsMutatingWebhookConfiguration(o runtime.Object) error {
function IsValidatingWebhookConfiguration (line 200) | func IsValidatingWebhookConfiguration(o runtime.Object) error {
function IsXRD (line 209) | func IsXRD(o runtime.Object) error {
function IsComposition (line 219) | func IsComposition(o runtime.Object) error {
function IsActivationPolicy (line 228) | func IsActivationPolicy(o runtime.Object) error {
function IsOperation (line 237) | func IsOperation(o runtime.Object) error {
function IsCronOperation (line 246) | func IsCronOperation(o runtime.Object) error {
function IsWatchOperation (line 255) | func IsWatchOperation(o runtime.Object) error {
FILE: pkg/xpkg/lint_test.go
function TestOneMeta (line 156) | func TestOneMeta(t *testing.T) {
function TestIsProvider (line 195) | func TestIsProvider(t *testing.T) {
function TestIsConfiguration (line 226) | func TestIsConfiguration(t *testing.T) {
function TestIsFunction (line 257) | func TestIsFunction(t *testing.T) {
function TestPackageCrossplaneCompatible (line 290) | func TestPackageCrossplaneCompatible(t *testing.T) {
function TestPackageValidSemver (line 384) | func TestPackageValidSemver(t *testing.T) {
function TestIsCRD (line 438) | func TestIsCRD(t *testing.T) {
function TestIsMRD (line 469) | func TestIsMRD(t *testing.T) {
function TestIsXRD (line 496) | func TestIsXRD(t *testing.T) {
function TestIsComposition (line 523) | func TestIsComposition(t *testing.T) {
function TestIsActivationPolicy (line 550) | func TestIsActivationPolicy(t *testing.T) {
function TestIsOperation (line 577) | func TestIsOperation(t *testing.T) {
function TestIsCronOperation (line 604) | func TestIsCronOperation(t *testing.T) {
function TestIsWatchOperation (line 631) | func TestIsWatchOperation(t *testing.T) {
FILE: pkg/xpkg/name.go
constant MetaFile (line 31) | MetaFile string = "crossplane.yaml"
constant StreamFile (line 35) | StreamFile string = "package.yaml"
constant StreamFileMode (line 38) | StreamFileMode os.FileMode = 0o644
constant XpkgExtension (line 41) | XpkgExtension string = ".xpkg"
constant XpkgMatchPattern (line 44) | XpkgMatchPattern string = "*" + XpkgExtension
constant XpkgExamplesFile (line 48) | XpkgExamplesFile string = ".up/examples.yaml"
constant AnnotationKey (line 51) | AnnotationKey string = "io.crossplane.xpkg"
constant PackageAnnotation (line 55) | PackageAnnotation string = "base"
constant ExamplesAnnotation (line 61) | ExamplesAnnotation string = "upbound"
constant identifierDelimeters (line 67) | identifierDelimeters string = ":@"
function truncate (line 70) | func truncate(str string, num int) string {
function FriendlyID (line 81) | func FriendlyID(name, hash string) string {
function ToDNSLabel (line 86) | func ToDNSLabel(s string) string {
function BuildPath (line 108) | func BuildPath(path, name, ext string) string {
function ParseNameFromMeta (line 116) | func ParseNameFromMeta(fs afero.Fs, path string) (string, error) {
function ParsePackageSourceFromReference (line 137) | func ParsePackageSourceFromReference(ref name.Reference) string {
type metaPkg (line 141) | type metaPkg struct
function parseNameFromPackage (line 147) | func parseNameFromPackage(bs []byte) (string, error) {
function ReplaceExt (line 155) | func ReplaceExt(path, ext string) string {
FILE: pkg/xpkg/name_test.go
function TestFriendlyID (line 26) | func TestFriendlyID(t *testing.T) {
function TestToDNSLabel (line 98) | func TestToDNSLabel(t *testing.T) {
function TestSourceFromReference (line 132) | func TestSourceFromReference(t *testing.T) {
function TestBuildPath (line 183) | func TestBuildPath(t *testing.T) {
function TestReplaceExt (line 235) | func TestReplaceExt(t *testing.T) {
FILE: pkg/xpkg/parser/examples/parser.go
type Examples (line 34) | type Examples struct
type Parser (line 39) | type Parser struct
method Parse (line 52) | func (p *Parser) Parse(_ context.Context, reader io.ReadCloser) (*Exam...
function NewExamples (line 42) | func NewExamples() *Examples {
function New (line 47) | func New() *Parser {
function annotateErr (line 88) | func annotateErr(err error, reader io.ReadCloser) error {
FILE: pkg/xpkg/parser/examples/parser_test.go
type mockAnnotatedReadCloser (line 31) | type mockAnnotatedReadCloser struct
method Annotate (line 36) | func (m *mockAnnotatedReadCloser) Annotate() any {
function TestParse (line 40) | func TestParse(t *testing.T) {
FILE: pkg/xpkg/parser/fsreader.go
type FsReadCloserAnnotation (line 31) | type FsReadCloserAnnotation struct
type FsReadCloser (line 37) | type FsReadCloser struct
method Read (line 125) | func (r *FsReadCloser) Read(p []byte) (n int, err error) {
method Close (line 160) | func (r *FsReadCloser) Close() error {
method Annotate (line 165) | func (r *FsReadCloser) Annotate() any {
type FilterFn (line 50) | type FilterFn
function SkipPath (line 53) | func SkipPath(pattern string) FilterFn {
function SkipDirs (line 60) | func SkipDirs() FilterFn {
function SkipEmpty (line 71) | func SkipEmpty() FilterFn {
function SkipNotYAML (line 78) | func SkipNotYAML() FilterFn {
function NewFsReadCloser (line 91) | func NewFsReadCloser(fs afero.Fs, dir string, fns ...FilterFn) (*FsReadC...
FILE: pkg/xpkg/parser/fuzz_test.go
function FuzzParse (line 12) | func FuzzParse(f *testing.F) {
FILE: pkg/xpkg/parser/linter.go
constant errNilLinterFn (line 28) | errNilLinterFn = "linter function is nil"
constant errOrFmt (line 30) | errOrFmt = "object did not pass any of the linters with following errors...
type Linter (line 34) | type Linter interface
type PackageLinterFn (line 40) | type PackageLinterFn
function PackageLinterFns (line 44) | func PackageLinterFns(fns ...PackageLinterFn) []PackageLinterFn {
type ObjectLinterFn (line 49) | type ObjectLinterFn
function ObjectLinterFns (line 53) | func ObjectLinterFns(fns ...ObjectLinterFn) []ObjectLinterFn {
type PackageLinter (line 59) | type PackageLinter struct
method Lint (line 75) | func (l *PackageLinter) Lint(pkg Lintable) error {
function NewPackageLinter (line 66) | func NewPackageLinter(pre []PackageLinterFn, perMeta, perObject []Object...
function Or (line 103) | func Or(linters ...ObjectLinterFn) ObjectLinterFn {
FILE: pkg/xpkg/parser/linter_test.go
function TestLinter (line 48) | func TestLinter(t *testing.T) {
function TestOr (line 131) | func TestOr(t *testing.T) {
FILE: pkg/xpkg/parser/parser.go
type Lintable (line 38) | type Lintable interface
type AnnotatedReadCloser (line 48) | type AnnotatedReadCloser interface
type ObjectCreaterTyper (line 54) | type ObjectCreaterTyper interface
type Package (line 60) | type Package struct
method GetMeta (line 71) | func (p *Package) GetMeta() []runtime.Object {
method GetObjects (line 76) | func (p *Package) GetObjects() []runtime.Object {
function NewPackage (line 66) | func NewPackage() *Package {
type Parser (line 81) | type Parser interface
type PackageParser (line 86) | type PackageParser struct
method Parse (line 103) | func (p *PackageParser) Parse(_ context.Context, reader io.ReadCloser)...
function New (line 92) | func New(meta, obj ObjectCreaterTyper) *PackageParser {
function isEmptyYAML (line 156) | func isEmptyYAML(y []byte) bool {
function annotateErr (line 170) | func annotateErr(err error, reader io.ReadCloser) error {
type BackendOption (line 180) | type BackendOption
type Backend (line 183) | type Backend interface
type PodLogBackend (line 188) | type PodLogBackend struct
method Init (line 205) | func (p *PodLogBackend) Init(ctx context.Context, bo ...BackendOption)...
function NewPodLogBackend (line 195) | func NewPodLogBackend(bo ...BackendOption) *PodLogBackend {
function PodName (line 221) | func PodName(name string) BackendOption {
function PodNamespace (line 233) | func PodNamespace(namespace string) BackendOption {
function PodClient (line 245) | func PodClient(client kubernetes.Interface) BackendOption {
type NopBackend (line 257) | type NopBackend struct
method Init (line 265) | func (p *NopBackend) Init(_ context.Context, _ ...BackendOption) (io.R...
function NewNopBackend (line 260) | func NewNopBackend(...BackendOption) *NopBackend {
type FsBackend (line 270) | type FsBackend struct
method Init (line 289) | func (p *FsBackend) Init(_ context.Context, bo ...BackendOption) (io.R...
function NewFsBackend (line 277) | func NewFsBackend(fs afero.Fs, bo ...BackendOption) *FsBackend {
function FsDir (line 298) | func FsDir(dir string) BackendOption {
function FsFilters (line 310) | func FsFilters(skips ...FilterFn) BackendOption {
type EchoBackend (line 322) | type EchoBackend struct
method Init (line 334) | func (p *EchoBackend) Init(_ context.Context, bo ...BackendOption) (io...
function NewEchoBackend (line 327) | func NewEchoBackend(echo string) Backend {
FILE: pkg/xpkg/parser/parser_test.go
function TestParser (line 83) | func TestParser(t *testing.T) {
function TestCleanYAML (line 223) | func TestCleanYAML(t *testing.T) {
FILE: pkg/xpkg/parser/yaml/parser.go
constant errBuildMetaScheme (line 28) | errBuildMetaScheme = "failed to build meta scheme for package parser"
constant errBuildObjectScheme (line 29) | errBuildObjectScheme = "failed to build object scheme for package parser"
function New (line 33) | func New() (*parser.PackageParser, error) {
FILE: pkg/xpkg/reader.go
type gzipReadCloser (line 27) | type gzipReadCloser struct
method Read (line 46) | func (g *gzipReadCloser) Read(p []byte) (n int, err error) {
method Close (line 51) | func (g *gzipReadCloser) Close() error {
function GzipReadCloser (line 33) | func GzipReadCloser(rc io.ReadCloser) (io.ReadCloser, error) {
type teeReadCloser (line 63) | type teeReadCloser struct
method Read (line 79) | func (t *teeReadCloser) Read(b []byte) (int, error) {
method Close (line 84) | func (t *teeReadCloser) Close() error {
function TeeReadCloser (line 70) | func TeeReadCloser(r io.ReadCloser, w io.WriteCloser) io.ReadCloser {
type joinedReadCloser (line 97) | type joinedReadCloser struct
method Read (line 112) | func (r *joinedReadCloser) Read(b []byte) (int, error) {
method Close (line 117) | func (r *joinedReadCloser) Close() error {
function JoinedReadCloser (line 104) | func JoinedReadCloser(r io.Reader, c io.Closer) io.ReadCloser {
FILE: pkg/xpkg/scheme.go
function BuildMetaScheme (line 36) | func BuildMetaScheme() (*runtime.Scheme, error) {
function BuildObjectScheme (line 55) | func BuildObjectScheme() (*runtime.Scheme, error) {
function TryConvert (line 91) | func TryConvert(obj runtime.Object, candidates ...conversion.Hub) (runti...
function TryConvertToPkg (line 110) | func TryConvertToPkg(obj runtime.Object, candidates ...conversion.Hub) (...
FILE: pkg/xpkg/scheme_test.go
type mockHub (line 29) | type mockHub struct
method Hub (line 31) | func (h mockHub) Hub() {}
type mockConvertible (line 33) | type mockConvertible struct
method ConvertTo (line 38) | func (c *mockConvertible) ConvertTo(_ conversion.Hub) error {
function TestTryConvert (line 46) | func TestTryConvert(t *testing.T) {
FILE: pkg/xpkg/signature/attestation.go
constant predicateCustom (line 40) | predicateCustom = "custom"
constant predicateSLSA (line 41) | predicateSLSA = "slsaprovenance"
constant predicateSLSA02 (line 42) | predicateSLSA02 = "slsaprovenance02"
constant predicateSLSA1 (line 43) | predicateSLSA1 = "slsaprovenance1"
constant predicateSPDX (line 44) | predicateSPDX = "spdx"
constant predicateSPDXJSON (line 45) | predicateSPDXJSON = "spdxjson"
constant predicateCycloneDX (line 46) | predicateCycloneDX = "cyclonedx"
constant predicateLink (line 47) | predicateLink = "link"
constant predicateVuln (line 48) | predicateVuln = "vuln"
constant predicateOpenVEX (line 49) | predicateOpenVEX = "openvex"
function attestationToPayloadJSON (line 68) | func attestationToPayloadJSON(_ context.Context, predicateType string, v...
FILE: pkg/xpkg/signature/validate.go
constant fetchCertTimeout (line 28) | fetchCertTimeout = 30 * time.Second
type Validator (line 31) | type Validator interface
type NopValidator (line 36) | type NopValidator struct
method Validate (line 39) | func (NopValidator) Validate(context.Context, name.Reference, *v1beta1...
function NewCosignValidator (line 44) | func NewCosignValidator(c client.Reader, k kubernetes.Interface, namespa...
type CosignValidator (line 83) | type CosignValidator struct
method Validate (line 93) | func (c *CosignValidator) Validate(ctx context.Context, ref name.Refer...
method buildCosignCheckOpts (line 172) | func (c *CosignValidator) buildCosignCheckOpts(ctx context.Context, a ...
function hashAlgorithm (line 222) | func hashAlgorithm(algorithm string) (crypto.Hash, error) {
FILE: pkg/xpkg/validate.go
type Validator (line 22) | type Validator
function NewProviderValidator (line 26) | func NewProviderValidator() Validator {
function NewConfigurationValidator (line 35) | func NewConfigurationValidator() Validator {
function NewFunctionValidator (line 44) | func NewFunctionValidator() Validator {
Condensed preview — 201 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,877K chars).
[
{
"path": ".coderabbit.yaml",
"chars": 9024,
"preview": "# CodeRabbit Configuration for Crossplane Runtime\n# This configuration is optimized for the Crossplane Runtime Go librar"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.md",
"chars": 1059,
"preview": "---\nname: Bug Report\nabout: Help us diagnose and fix bugs in Crossplane\nlabels: bug\n---\n<!--\nThank you for helping to im"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.md",
"chars": 705,
"preview": "---\nname: Feature Request\nabout: Help us make Crossplane more useful\nlabels: enhancement\n---\n<!--\nThank you for helping "
},
{
"path": ".github/PULL_REQUEST_TEMPLATE.md",
"chars": 1290,
"preview": "<!--\nThank you for helping to improve Crossplane! Please read the contribution docs\n(linked below) if this is your first"
},
{
"path": ".github/renovate-base.json5",
"chars": 2630,
"preview": "{\n $schema: 'https://docs.renovatebot.com/renovate-schema.json',\n extends: [\n 'config:recommended',\n 'helpers:pi"
},
{
"path": ".github/renovate-earthly.json5",
"chars": 2853,
"preview": "{\n // Earthly-specific configuration for release branches.\n // Main branch uses Nix - see renovate-nix.json5.\n custom"
},
{
"path": ".github/renovate-entrypoint.sh",
"chars": 1076,
"preview": "#!/bin/bash\n\nset -e\n\n# Install Earthly (for release branches)\necho \"Installing Earthly...\"\ncurl -fsSLo /usr/local/bin/ea"
},
{
"path": ".github/renovate-nix.json5",
"chars": 1380,
"preview": "{\n // Nix-specific configuration for main branch.\n // Release branches use Earthly - see renovate-earthly.json5.\n\n //"
},
{
"path": ".github/renovate.json5",
"chars": 705,
"preview": "{\n // This is the main Renovate configuration file.\n // It extends base config and build-tool-specific configs.\n //\n "
},
{
"path": ".github/workflows/backport.yml",
"chars": 1486,
"preview": "name: Backport\n\non:\n # NOTE(negz): This is a risky target, but we run this action only when and if\n # a PR is closed, "
},
{
"path": ".github/workflows/ci.yml",
"chars": 5103,
"preview": "name: CI\n\non:\n push:\n branches:\n - main\n - release-*\n pull_request: {}\n workflow_dispatch: {}\n\nenv:\n # "
},
{
"path": ".github/workflows/commands.yml",
"chars": 3619,
"preview": "name: Comment Commands\n\non: issue_comment\n\njobs:\n points:\n runs-on: ubuntu-22.04\n if: startsWith(github.event.com"
},
{
"path": ".github/workflows/renovate.yml",
"chars": 2092,
"preview": "name: Renovate\non:\n # Allows manual/automated trigger for debugging purposes\n workflow_dispatch:\n inputs:\n log"
},
{
"path": ".github/workflows/stale.yml",
"chars": 2217,
"preview": "name: Stale Issues and PRs\non:\n schedule:\n # Process new stale issues once a day. Folks can /fresh for a fast un-sta"
},
{
"path": ".github/workflows/tag.yml",
"chars": 640,
"preview": "name: Tag\n\non:\n workflow_dispatch:\n inputs:\n version:\n description: 'Release version (e.g. v0.1.0)'\n "
},
{
"path": ".gitignore",
"chars": 267,
"preview": "/.cache\n/.work\n/_output\n/config/\n/config\ncover.out\n/vendor\n/.vendor-new\n\n# Nix build output\nresult\nresult-*\n\n# gitlab ex"
},
{
"path": ".golangci.yml",
"chars": 8886,
"preview": "version: \"2\"\n\noutput:\n formats:\n text:\n path: stderr\n\nlinters:\n default: all\n disable:\n # These are linter"
},
{
"path": "CODEOWNERS",
"chars": 1574,
"preview": "# This file controls automatic PR reviewer assignment. See the following docs:\n#\n# * https://docs.github.com/en/reposito"
},
{
"path": "DCO",
"chars": 1422,
"preview": "Developer Certificate of Origin\nVersion 1.1\n\nCopyright (C) 2004, 2006 The Linux Foundation and its contributors.\n660 Yor"
},
{
"path": "LICENSE",
"chars": 11374,
"preview": " Apache License\n Version 2.0, January 2004\n "
},
{
"path": "OWNERS.md",
"chars": 1418,
"preview": "# Crossplane Maintainers\n\nThis page lists all active maintainers and reviewers for **this** repository.\nEach repository "
},
{
"path": "PROJECT",
"chars": 82,
"preview": "version: \"1\"\ndomain: crossplane.io\nrepo: github.com/crossplane/crossplane-runtime\n"
},
{
"path": "README.md",
"chars": 2615,
"preview": "# crossplane-runtime\n[](https:"
},
{
"path": "RELEASE.md",
"chars": 1610,
"preview": "# Release Process\n\n## New Patch Release (vX.Y.Z)\n\nIn order to cut a new patch release from an existing release branch `r"
},
{
"path": "SECURITY.md",
"chars": 202,
"preview": "# Security Policy\n\n## Reporting a Vulnerability\n\nInstructions for reporting a vulnerability can be found on the\n[crosspl"
},
{
"path": "apis/apis.go",
"chars": 632,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "apis/changelogs/proto/v1alpha1/changelog.pb.go",
"chars": 15750,
"preview": "//\n//Copyright 2024 The Crossplane Authors.\n//Licensed under the Apache License, Version 2.0 (the \"License\");\n//you may "
},
{
"path": "apis/changelogs/proto/v1alpha1/changelog.proto",
"chars": 3116,
"preview": "/*\n Copyright 2024 The Crossplane Authors.\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you m"
},
{
"path": "apis/changelogs/proto/v1alpha1/changelog_grpc.pb.go",
"chars": 5804,
"preview": "//\n//Copyright 2024 The Crossplane Authors.\n//Licensed under the Apache License, Version 2.0 (the \"License\");\n//you may "
},
{
"path": "apis/pipelineinspector/proto/v1alpha1/pipeline_inspector.pb.go",
"chars": 23905,
"preview": "//\n//Copyright 2026 The Crossplane Authors.\n//\n//Licensed under the Apache License, Version 2.0 (the \"License\");\n//you m"
},
{
"path": "apis/pipelineinspector/proto/v1alpha1/pipeline_inspector.proto",
"chars": 4570,
"preview": "/*\n Copyright 2026 The Crossplane Authors.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you "
},
{
"path": "apis/pipelineinspector/proto/v1alpha1/pipeline_inspector_grpc.pb.go",
"chars": 8546,
"preview": "//\n//Copyright 2026 The Crossplane Authors.\n//\n//Licensed under the Apache License, Version 2.0 (the \"License\");\n//you m"
},
{
"path": "apis/proto/v1alpha1/ess.pb.go",
"chars": 19243,
"preview": "//\n//Copyright 2023 The Crossplane Authors.\n//Licensed under the Apache License, Version 2.0 (the \"License\");\n//you may "
},
{
"path": "apis/proto/v1alpha1/ess.proto",
"chars": 2191,
"preview": "/*\n Copyright 2023 The Crossplane Authors.\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you m"
},
{
"path": "apis/proto/v1alpha1/ess_grpc.pb.go",
"chars": 9750,
"preview": "//\n//Copyright 2023 The Crossplane Authors.\n//Licensed under the Apache License, Version 2.0 (the \"License\");\n//you may "
},
{
"path": "buf.gen.yaml",
"chars": 243,
"preview": "# This file contains configuration for the `buf generate` command.\n# See generate.go for more details.\nversion: v1\nplugi"
},
{
"path": "buf.yaml",
"chars": 148,
"preview": "version: v1\nname: buf.build/crossplane/crossplane-runtime\nbreaking:\n use:\n - WIRE_JSON\nlint:\n use:\n - DEFAULT\n "
},
{
"path": "flake.nix",
"chars": 3370,
"preview": "# New to Nix? Start here:\n# Language basics: https://nix.dev/tutorials/nix-language\n# Flakes intro: https://zer"
},
{
"path": "generate.go",
"chars": 1170,
"preview": "//go:build generate\n// +build generate\n\n/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Ve"
},
{
"path": "go.mod",
"chars": 10726,
"preview": "module github.com/crossplane/crossplane-runtime/v2\n\ngo 1.25.9\n\nrequire (\n\tdario.cat/mergo v1.0.2\n\tgithub.com/AdaLogics/g"
},
{
"path": "go.sum",
"chars": 71683,
"preview": "cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4=\ncel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ"
},
{
"path": "gomod2nix.toml",
"chars": 26058,
"preview": "schema = 3\n\n[mod]\n [mod.\"cloud.google.com/go/compute/metadata\"]\n version = \"v0.9.0\"\n hash = \"sha256-VFqQwLJKyH1zR"
},
{
"path": "hack/boilerplate.go.txt",
"chars": 570,
"preview": "/*\nCopyright 2025 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "hack/linter-violation.tmpl",
"chars": 210,
"preview": "`{{violation.rule}}`: {{violation.message}}\n\nRefer to Crossplane's [coding style documentation](https://github.com/cross"
},
{
"path": "nix/apps.nix",
"chars": 3153,
"preview": "# Interactive development commands for Crossplane Runtime.\n#\n# Apps run outside the Nix sandbox with full filesystem and"
},
{
"path": "nix/checks.nix",
"chars": 3304,
"preview": "# CI check builders for Crossplane Runtime.\n#\n# Checks run inside the Nix sandbox without network or filesystem access. "
},
{
"path": "nix.sh",
"chars": 4121,
"preview": "#!/usr/bin/env bash\n# nix.sh - Run Nix commands via Docker without installing Nix locally.\n#\n# Usage: ./nix.sh <command>"
},
{
"path": "pkg/certificates/certificates.go",
"chars": 1910,
"preview": "/*\nCopyright 2023 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/certificates/certificates_test.go",
"chars": 2688,
"preview": "package certificates\n\nimport (\n\t\"crypto/tls\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\n\t\"github.com/"
},
{
"path": "pkg/certificates/test-data/certs/ca.crt",
"chars": 573,
"preview": "-----BEGIN CERTIFICATE-----\nMIIBejCCASGgAwIBAgIIOGozHYTTZu4wCgYIKoZIzj0EAwIwETEPMA0GA1UEAxMG\nUm9vdENBMCAXDTE5MTIyMzA4NTY"
},
{
"path": "pkg/certificates/test-data/certs/tls.crt",
"chars": 671,
"preview": "-----BEGIN CERTIFICATE-----\nMIIBxDCCAWmgAwIBAgIUVkhaF0okPcEJaKYKJRyTHU+aQMwwCgYIKoZIzj0EAwIw\nETEPMA0GA1UEAxMGUm9vdENBMCA"
},
{
"path": "pkg/certificates/test-data/certs/tls.key",
"chars": 226,
"preview": "-----BEGIN EC PRIVATE KEY-----\nMHcCAQEEIDcpnLnAoOvR+q7rEKEY4zEWTicMkPaHJ1iC8lHEy9v8oAoGCCqGSM49\nAwEHoUQDQgAEsg46fus8p9Ft"
},
{
"path": "pkg/certificates/test-data/invalid-certs/ca.crt",
"chars": 520,
"preview": "MIIBejCCASGgAwIBAgIIOGozHYTTZu4wCgYIKoZIzj0EAwIwETEPMA0GA1UEAxMG\nUm9vdENBMCAXDTE5MTIyMzA4NTYzN1oYDzIxMTkxMTI5MDkwMTM3WjA"
},
{
"path": "pkg/certificates/test-data/invalid-certs/tls.crt",
"chars": 671,
"preview": "-----BEGIN CERTIFICATE-----\nMIIBxDCCAWmgAwIBAgIUVkhaF0okPcEJaKYKJRyTHU+aQMwwCgYIKoZIzj0EAwIw\nETEPMA0GA1UEAxMGUm9vdENBMCA"
},
{
"path": "pkg/certificates/test-data/invalid-certs/tls.key",
"chars": 226,
"preview": "-----BEGIN EC PRIVATE KEY-----\nMHcCAQEEIDcpnLnAoOvR+q7rEKEY4zEWTicMkPaHJ1iC8lHEy9v8oAoGCCqGSM49\nAwEHoUQDQgAEsg46fus8p9Ft"
},
{
"path": "pkg/certificates/test-data/no-ca/tls.crt",
"chars": 671,
"preview": "-----BEGIN CERTIFICATE-----\nMIIBxDCCAWmgAwIBAgIUVkhaF0okPcEJaKYKJRyTHU+aQMwwCgYIKoZIzj0EAwIw\nETEPMA0GA1UEAxMGUm9vdENBMCA"
},
{
"path": "pkg/certificates/test-data/no-ca/tls.key",
"chars": 226,
"preview": "-----BEGIN EC PRIVATE KEY-----\nMHcCAQEEIDcpnLnAoOvR+q7rEKEY4zEWTicMkPaHJ1iC8lHEy9v8oAoGCCqGSM49\nAwEHoUQDQgAEsg46fus8p9Ft"
},
{
"path": "pkg/conditions/manager.go",
"chars": 2858,
"preview": "/*\nCopyright 2025 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/conditions/manager_test.go",
"chars": 4544,
"preview": "/*\nCopyright 2025 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/controller/gate.go",
"chars": 648,
"preview": "package controller\n\nimport (\n\t\"k8s.io/apimachinery/pkg/runtime/schema\"\n)\n\n// A Gate is an interface to allow reconcilers"
},
{
"path": "pkg/controller/options.go",
"chars": 3511,
"preview": "/*\nCopyright 2021 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/errors/errors.go",
"chars": 5469,
"preview": "/*\nCopyright 2021 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/errors/errors_test.go",
"chars": 2707,
"preview": "/*\nCopyright 2021 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/errors/reconcile.go",
"chars": 1602,
"preview": "/*\nCopyright 2023 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/errors/reconcile_test.go",
"chars": 2664,
"preview": "/*\nCopyright 2023 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/event/event.go",
"chars": 3623,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/event/event_test.go",
"chars": 1967,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/feature/feature.go",
"chars": 1263,
"preview": "/*\nCopyright 2021 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/feature/feature_test.go",
"chars": 1397,
"preview": "/*\nCopyright 2021 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/feature/features.go",
"chars": 1091,
"preview": "/*\nCopyright 2023 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/fieldpath/fieldpath.go",
"chars": 7395,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/fieldpath/fieldpath_test.go",
"chars": 7880,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/fieldpath/merge.go",
"chars": 4308,
"preview": "/*\nCopyright 2021 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/fieldpath/merge_test.go",
"chars": 5191,
"preview": "/*\nCopyright 2021 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/fieldpath/paved.go",
"chars": 16496,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/fieldpath/paved_test.go",
"chars": 34085,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/gate/gate.go",
"chars": 2983,
"preview": "/*\nCopyright 2025 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/gate/gate_test.go",
"chars": 6605,
"preview": "/*\nCopyright 2025 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/logging/klog.go",
"chars": 1716,
"preview": "// Copyright 2024 Upbound Inc.\n// All rights reserved\n\npackage logging\n\nimport (\n\t\"flag\"\n\t\"os\"\n\t\"strings\"\n\n\t\"github.com/"
},
{
"path": "pkg/logging/logging.go",
"chars": 4007,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/meta/meta.go",
"chars": 12907,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/meta/meta_test.go",
"chars": 30253,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/password/password.go",
"chars": 1586,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/password/password_test.go",
"chars": 356,
"preview": "package password\n\nimport (\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n)\n\nfunc TestGenerate(t *testing.T) {\n\t// ¯\\_(ツ)_/"
},
{
"path": "pkg/ratelimiter/default.go",
"chars": 2261,
"preview": "/*\nCopyright 2021 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/ratelimiter/reconciler.go",
"chars": 2999,
"preview": "/*\nCopyright 2021 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/ratelimiter/reconciler_test.go",
"chars": 3355,
"preview": "/*\nCopyright 2021 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/reconciler/customresourcesgate/reconciler.go",
"chars": 2668,
"preview": "/*\nCopyright 2025 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/reconciler/customresourcesgate/reconciler_test.go",
"chars": 15521,
"preview": "/*\nCopyright 2025 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/reconciler/customresourcesgate/setup.go",
"chars": 1477,
"preview": "/*\nCopyright 2025 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/reconciler/doc.go",
"chars": 659,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/reconciler/managed/api.go",
"chars": 11300,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/reconciler/managed/api_test.go",
"chars": 17149,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/reconciler/managed/changelogger.go",
"chars": 4433,
"preview": "/*\nCopyright 2024 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/reconciler/managed/changelogger_test.go",
"chars": 6900,
"preview": "/*\nCopyright 2024 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/reconciler/managed/doc.go",
"chars": 695,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/reconciler/managed/metrics.go",
"chars": 6430,
"preview": "/*\nCopyright 2024 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/reconciler/managed/policies.go",
"chars": 12132,
"preview": "/*\nCopyright 2023 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/reconciler/managed/reconciler.go",
"chars": 69165,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/reconciler/managed/reconciler_deprecated.go",
"chars": 4759,
"preview": "/*\nCopyright 2025 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/reconciler/managed/reconciler_legacy_test.go",
"chars": 117557,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/reconciler/managed/reconciler_modern_test.go",
"chars": 124923,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/reconciler/managed/reconciler_typed.go",
"chars": 2341,
"preview": "package managed\n\nimport (\n\t\"context\"\n\n\t\"github.com/crossplane/crossplane-runtime/v2/pkg/errors\"\n\t\"github.com/crossplane/"
},
{
"path": "pkg/reconciler/providerconfig/reconciler.go",
"chars": 7951,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/reconciler/providerconfig/reconciler_test.go",
"chars": 14299,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/reference/namespaced_reference.go",
"chars": 10466,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/reference/namespaced_reference_test.go",
"chars": 32154,
"preview": "package reference\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"strings\"\n\t\"testing\"\n\n\txpv2 \"github.com/crossplane/crossplane/apis/v2/cor"
},
{
"path": "pkg/reference/reference.go",
"chars": 13957,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/reference/reference_test.go",
"chars": 30230,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/resource/api.go",
"chars": 6296,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/resource/api_test.go",
"chars": 10411,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/resource/doc.go",
"chars": 726,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/resource/enqueue_handlers.go",
"chars": 3182,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/resource/enqueue_handlers_test.go",
"chars": 5171,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/resource/fake/mocks.go",
"chars": 22589,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/resource/interfaces.go",
"chars": 10225,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/resource/interfaces_test.go",
"chars": 1723,
"preview": "/*\nCopyright 2021 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/resource/late_initializer.go",
"chars": 2502,
"preview": "/*\nCopyright 2021 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/resource/late_initializer_test.go",
"chars": 5005,
"preview": "/*\nCopyright 2021 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/resource/predicates.go",
"chars": 3911,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/resource/predicates_test.go",
"chars": 3424,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/resource/providerconfig.go",
"chars": 9468,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/resource/providerconfig_test.go",
"chars": 11162,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/resource/reference.go",
"chars": 2481,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/resource/reference_test.go",
"chars": 1742,
"preview": "/*\nCopyright 2021 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/resource/resource.go",
"chars": 16609,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/resource/resource_test.go",
"chars": 23851,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/resource/unstructured/claim/claim.go",
"chars": 8546,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/resource/unstructured/claim/claim_test.go",
"chars": 9806,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/resource/unstructured/claim/zz_generated.deepcopy.go",
"chars": 1442,
"preview": "//go:build !ignore_autogenerated\n\n/*\nCopyright 2025 The Crossplane Authors.\n\nLicensed under the Apache License, Version "
},
{
"path": "pkg/resource/unstructured/client.go",
"chars": 8150,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/resource/unstructured/client_test.go",
"chars": 12321,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/resource/unstructured/composed/composed.go",
"chars": 5597,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/resource/unstructured/composed/composed_test.go",
"chars": 4406,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/resource/unstructured/composed/zz_generated.deepcopy.go",
"chars": 1445,
"preview": "//go:build !ignore_autogenerated\n\n/*\nCopyright 2025 The Crossplane Authors.\n\nLicensed under the Apache License, Version "
},
{
"path": "pkg/resource/unstructured/composite/composite.go",
"chars": 13333,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/resource/unstructured/composite/composite_test.go",
"chars": 13810,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/resource/unstructured/composite/zz_generated.deepcopy.go",
"chars": 1446,
"preview": "//go:build !ignore_autogenerated\n\n/*\nCopyright 2025 The Crossplane Authors.\n\nLicensed under the Apache License, Version "
},
{
"path": "pkg/resource/unstructured/generate.go",
"chars": 1043,
"preview": "//go:build generate\n\n/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "pkg/resource/unstructured/reference/reference.go",
"chars": 1819,
"preview": "/*\nCopyright 2024 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/statemetrics/mr_state_metrics.go",
"chars": 4693,
"preview": "/*\nCopyright 2024 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/statemetrics/state_recorder.go",
"chars": 1389,
"preview": "/*\nCopyright 2024 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/test/cmp.go",
"chars": 1652,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/test/doc.go",
"chars": 709,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/test/fake.go",
"chars": 15384,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/test/retry.go",
"chars": 989,
"preview": "/*\nCopyright 2019 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/version/fake/mocks.go",
"chars": 2067,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/version/version.go",
"chars": 1803,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/version/version_test.go",
"chars": 3020,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/webhook/mutator.go",
"chars": 1907,
"preview": "/*\nCopyright 2022 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/webhook/mutator_test.go",
"chars": 2138,
"preview": "/*\nCopyright 2022 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/webhook/validator.go",
"chars": 3674,
"preview": "/*\nCopyright 2022 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/webhook/validator_test.go",
"chars": 7490,
"preview": "/*\nCopyright 2022 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xcrd/composite.go",
"chars": 1465,
"preview": "/*\nCopyright 2021 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xcrd/crd.go",
"chars": 10211,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xcrd/crd_test.go",
"chars": 121518,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xcrd/fuzz_test.go",
"chars": 1271,
"preview": "/*\nCopyright 2023 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xcrd/schemas.go",
"chars": 12339,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xpkg/build.go",
"chars": 7563,
"preview": "/*\nCopyright 2023 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xpkg/build_test.go",
"chars": 9694,
"preview": "/*\nCopyright 2023 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xpkg/cache.go",
"chars": 3488,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xpkg/cache_test.go",
"chars": 5300,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xpkg/client.go",
"chars": 14719,
"preview": "/*\nCopyright 2025 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xpkg/client_test.go",
"chars": 43769,
"preview": "/*\nCopyright 2025 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xpkg/config.go",
"chars": 5967,
"preview": "package xpkg\n\nimport (\n\t\"context\"\n\t\"strings\"\n\n\t\"github.com/crossplane/crossplane/apis/v2/pkg/v1beta1\"\n\t\"sigs.k8s.io/cont"
},
{
"path": "pkg/xpkg/config_test.go",
"chars": 12426,
"preview": "package xpkg\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/crossplane/crossplane/apis/v2/pkg/v1beta1\"\n\t\"github.com/googl"
},
{
"path": "pkg/xpkg/doc.go",
"chars": 658,
"preview": "/*\nCopyright 2022 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xpkg/fake/config.go",
"chars": 3324,
"preview": "package fake\n\nimport (\n\t\"context\"\n\n\t\"github.com/crossplane/crossplane/apis/v2/pkg/v1beta1\"\n\n\t\"github.com/crossplane/cros"
},
{
"path": "pkg/xpkg/fake/mocks.go",
"chars": 4986,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xpkg/fetch.go",
"chars": 6713,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xpkg/find.go",
"chars": 1534,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xpkg/find_test.go",
"chars": 2773,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xpkg/fuzz_test.go",
"chars": 1368,
"preview": "/*\nCopyright 2023 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xpkg/layers.go",
"chars": 4582,
"preview": "/*\nCopyright 2023 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xpkg/lint.go",
"chars": 8419,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xpkg/lint_test.go",
"chars": 18370,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xpkg/name.go",
"chars": 4516,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xpkg/name_test.go",
"chars": 8028,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xpkg/parser/examples/parser.go",
"chars": 2351,
"preview": "/*\nCopyright 2023 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xpkg/parser/examples/parser_test.go",
"chars": 3585,
"preview": "/*\nCopyright 2026 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xpkg/parser/fsreader.go",
"chars": 3896,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xpkg/parser/fuzz_test.go",
"chars": 370,
"preview": "package parser\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"io\"\n\t\"testing\"\n\n\t\"k8s.io/apimachinery/pkg/runtime\"\n)\n\nfunc FuzzParse(f *t"
},
{
"path": "pkg/xpkg/parser/linter.go",
"chars": 2984,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xpkg/parser/linter_test.go",
"chars": 4767,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xpkg/parser/parser.go",
"chars": 8245,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xpkg/parser/parser_test.go",
"chars": 9110,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xpkg/parser/yaml/parser.go",
"chars": 1322,
"preview": "/*\nCopyright 2023 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xpkg/reader.go",
"chars": 2849,
"preview": "/*\nCopyright 2022 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xpkg/scheme.go",
"chars": 3574,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xpkg/scheme_test.go",
"chars": 2538,
"preview": "/*\nCopyright 2020 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xpkg/signature/attestation.go",
"chars": 7637,
"preview": "//\n// Copyright 2022 The Sigstore Authors.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you "
},
{
"path": "pkg/xpkg/signature/doc.go",
"chars": 675,
"preview": "/*\nCopyright 2025 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "pkg/xpkg/signature/validate.go",
"chars": 7087,
"preview": "package signature\n\nimport (\n\t\"context\"\n\t\"crypto\"\n\t\"fmt\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/crossplane/crossplane/apis/v2/p"
},
{
"path": "pkg/xpkg/testdata/examples/ec2/instance.yaml",
"chars": 930,
"preview": "# Copyright 2023 the Crossplane authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may n"
},
{
"path": "pkg/xpkg/testdata/examples/ec2/internetgateway.yaml",
"chars": 822,
"preview": "# Copyright 2023 the Crossplane authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may n"
},
{
"path": "pkg/xpkg/testdata/examples/ecr/repository.yaml",
"chars": 849,
"preview": "# Copyright 2023 the Crossplane authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may n"
},
{
"path": "pkg/xpkg/testdata/examples/provider.yaml",
"chars": 717,
"preview": "# Copyright 2023 the Crossplane authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may n"
},
{
"path": "pkg/xpkg/testdata/provider_meta.yaml",
"chars": 27225,
"preview": "apiVersion: meta.pkg.crossplane.io/v1alpha1\nkind: Provider\nmetadata:\n annotations:\n company: Crossplane\n descript"
},
{
"path": "pkg/xpkg/testdata/providerconfigs.helm.crossplane.io.yaml",
"chars": 16984,
"preview": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n annotations:\n controller-gen.kubebuild"
},
{
"path": "pkg/xpkg/validate.go",
"chars": 1667,
"preview": "/*\nCopyright 2025 The Crossplane Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
}
]
// ... and 1 more files (download for full content)
About this extraction
This page contains the full source code of the crossplane/crossplane-runtime GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 201 files (1.6 MB), approximately 469.1k tokens, and a symbol index with 1933 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.