Documentation
¶
Overview ¶
Package v1 contains API Schema definitions for the github v1 API group +kubebuilder:object:generate=true +groupName=github.as-code.io
Index ¶
- Constants
- Variables
- type App
- type AppList
- type AppReference
- type AppSpec
- type AppStatus
- type ClusterToken
- func (in *ClusterToken) DeepCopy() *ClusterToken
- func (in *ClusterToken) DeepCopyInto(out *ClusterToken)
- func (in *ClusterToken) DeepCopyObject() runtime.Object
- func (t *ClusterToken) GetAppRef() *AppReference
- func (t *ClusterToken) GetInstallationID() int64
- func (t *ClusterToken) GetInstallationTokenOptions() *github.InstallationTokenOptions
- func (t *ClusterToken) GetManagedSecret() ManagedSecret
- func (t *ClusterToken) GetRefreshInterval() time.Duration
- func (t *ClusterToken) GetRetryInterval() time.Duration
- func (t *ClusterToken) GetSecretAnnotations() map[string]string
- func (t *ClusterToken) GetSecretBasicAuth() bool
- func (t *ClusterToken) GetSecretLabels() map[string]string
- func (t *ClusterToken) GetSecretName() string
- func (t *ClusterToken) GetSecretNamespace() string
- func (t *ClusterToken) GetStatusConditions() []metav1.Condition
- func (t *ClusterToken) GetStatusTimestamps() (createdAt, expiresAt time.Time)
- func (t *ClusterToken) GetType() string
- func (t *ClusterToken) SetStatusCondition(condition metav1.Condition) (changed bool)
- func (t *ClusterToken) SetStatusTimestamps(expiresAt time.Time)
- func (t *ClusterToken) UpdateManagedSecret() (changed bool)
- type ClusterTokenList
- type ClusterTokenSecretSpec
- type ClusterTokenSpec
- type ClusterTokenStatus
- type InstallationAccessToken
- type KeySecretReference
- type LocalAppReference
- type ManagedSecret
- type Permissions
- type Token
- func (in *Token) DeepCopy() *Token
- func (in *Token) DeepCopyInto(out *Token)
- func (in *Token) DeepCopyObject() runtime.Object
- func (t *Token) GetAppRef() *AppReference
- func (t *Token) GetInstallationID() int64
- func (t *Token) GetInstallationTokenOptions() *github.InstallationTokenOptions
- func (t *Token) GetManagedSecret() ManagedSecret
- func (t *Token) GetRefreshInterval() time.Duration
- func (t *Token) GetRetryInterval() time.Duration
- func (t *Token) GetSecretAnnotations() map[string]string
- func (t *Token) GetSecretBasicAuth() bool
- func (t *Token) GetSecretLabels() map[string]string
- func (t *Token) GetSecretName() string
- func (t *Token) GetSecretNamespace() string
- func (t *Token) GetStatusConditions() []metav1.Condition
- func (t *Token) GetStatusTimestamps() (createdAt, expiresAt time.Time)
- func (t *Token) GetType() string
- func (t *Token) SetStatusCondition(condition metav1.Condition) (changed bool)
- func (t *Token) SetStatusTimestamps(expiresAt time.Time)
- func (t *Token) UpdateManagedSecret() (changed bool)
- type TokenList
- type TokenSecretSpec
- type TokenSpec
- type TokenStatus
Constants ¶
const ( // ConditionTypeReady is used to signal whether a reconciliation has completed successfully. ConditionTypeReady = "Ready" // ConditionTypeKeyValid is set on an App when spec.validateKey is true and // reports the outcome of the signer's key validation. Absent when // spec.validateKey is false. ConditionTypeKeyValid = "KeyValid" // ReasonAppNotFound indicates the referenced App does not exist. ReasonAppNotFound = "AppNotFound" // ReasonAppNotReady indicates the referenced App exists but its Ready // condition is not True. ReasonAppNotReady = "AppNotReady" // ReasonNoStartupConfig indicates no spec.appRef was set and the operator // has no startup GitHub App configuration. ReasonNoStartupConfig = "NoStartupConfig" // ReasonReconciled indicates a successful reconciliation. ReasonReconciled = "Reconciled" // ReasonSetupFailed indicates construction of the GitHub App client failed. ReasonSetupFailed = "SetupFailed" // ReasonSecretNotFound indicates the Secret named by App.spec.keyRef // could not be fetched (typically NotFound). ReasonSecretNotFound = "SecretNotFound" // ReasonInvalidKey indicates the resolved key material is missing, // empty, or not a usable PEM-encoded RSA private key. ReasonInvalidKey = "InvalidKey" )
Variables ¶
var ( // GroupVersion is group version used to register these objects GroupVersion = schema.GroupVersion{Group: "github.as-code.io", Version: "v1"} // SchemeBuilder is used to add go types to the GroupVersionKind scheme SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion} // AddToScheme adds the types in this group-version to the given scheme. AddToScheme = SchemeBuilder.AddToScheme )
Functions ¶
This section is empty.
Types ¶
type App ¶ added in v1.5.0
type App struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec AppSpec `json:"spec,omitempty"`
Status AppStatus `json:"status,omitempty"`
}
App is the Schema for the apps API; it encapsulates a GitHub App configuration that Tokens and ClusterTokens may reference via spec.appRef.
func (*App) DeepCopy ¶ added in v1.5.0
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new App.
func (*App) DeepCopyInto ¶ added in v1.5.0
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*App) DeepCopyObject ¶ added in v1.5.0
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*App) GetStatusConditions ¶ added in v1.5.0
GetStatusConditions returns the App's status conditions slice.
type AppList ¶ added in v1.5.0
type AppList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata"`
Items []App `json:"items"`
}
AppList contains a list of App.
func (*AppList) DeepCopy ¶ added in v1.5.0
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AppList.
func (*AppList) DeepCopyInto ¶ added in v1.5.0
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*AppList) DeepCopyObject ¶ added in v1.5.0
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type AppReference ¶ added in v1.5.0
type AppReference struct {
// +kubebuilder:validation:Required
// +kubebuilder:validation:MaxLength:=253
// Name of the App resource.
Name string `json:"name"`
// +optional
// +kubebuilder:validation:MaxLength:=253
// Namespace containing the App resource. If empty, defaults to the
// operator's own namespace.
Namespace string `json:"namespace,omitempty"`
}
AppReference identifies an App resource, optionally in a different namespace. Used by the cluster-scoped ClusterToken kind. When Namespace is empty the controller resolves it to the operator's own namespace.
func (*AppReference) DeepCopy ¶ added in v1.5.0
func (in *AppReference) DeepCopy() *AppReference
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AppReference.
func (*AppReference) DeepCopyInto ¶ added in v1.5.0
func (in *AppReference) DeepCopyInto(out *AppReference)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AppSpec ¶ added in v1.5.0
type AppSpec struct {
// +kubebuilder:validation:Required
// +kubebuilder:validation:Minimum=1
// +kubebuilder:example:=12345
// The AppID of the GitHub App.
AppID int64 `json:"appID"`
// +kubebuilder:validation:Required
// +kubebuilder:validation:Minimum=1
// +kubebuilder:example:=123456789
// The default InstallationID of the GitHub App; Tokens/ClusterTokens may
// override this via spec.installationID to target a different installation.
InstallationID int64 `json:"installationID"`
// +kubebuilder:validation:Required
// +kubebuilder:validation:Enum=secret;aws;azure;gcp;vault
// Private key provider. One of "secret" (PEM material in a same-namespace
// Secret, referenced by keyRef), "aws" (AWS KMS), "azure" (Azure Key
// Vault), "gcp" (Google Cloud KMS), or "vault" (HashiCorp Vault transit).
// The "file" provider is intentionally not supported on an App; use the
// operator's startup configuration for file-based keys.
Provider string `json:"provider"`
// +optional
// Cloud-KMS key reference. Required when provider is "aws", "azure",
// "gcp", or "vault"; forbidden when provider is "secret". The exact
// shape depends on the provider: KMS key alias/ID/ARN (aws), Azure Key
// Vault key URL (azure), GCP KMS resource name (gcp), or Vault transit
// sign path (vault).
Key string `json:"key,omitempty"`
// +optional
// Same-namespace Secret reference holding the PEM-encoded RSA private
// key. Required when provider is "secret"; forbidden otherwise.
KeyRef *KeySecretReference `json:"keyRef,omitempty"`
// +optional
// +kubebuilder:default:=false
// If true, the operator validates the private key at reconcile time by
// attempting a test sign. Failures surface as a KeyValid=False condition.
ValidateKey bool `json:"validateKey,omitempty"`
}
AppSpec defines the desired state of an App.
Provider selects how the App's RSA private key is materialised. For cloud KMS (aws/azure/gcp/vault) the key reference is supplied inline via Key. For "secret" the key bytes live in a same-namespace Secret named by KeyRef; this is the only supported way to use an inline PEM with an App, because allowing arbitrary filesystem paths from a namespaced resource would let any namespace owner read key material mounted on the controller Pod.
+kubebuilder:validation:XValidation:rule="(self.provider == 'secret') == has(self.keyRef)",message="keyRef must be set if and only if provider is 'secret'" +kubebuilder:validation:XValidation:rule="(self.provider != 'secret') == has(self.key)",message="key must be set if and only if provider is not 'secret'"
func (*AppSpec) DeepCopy ¶ added in v1.5.0
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AppSpec.
func (*AppSpec) DeepCopyInto ¶ added in v1.5.0
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AppStatus ¶ added in v1.5.0
type AppStatus struct {
// +optional
ObservedGeneration int64 `json:"observedGeneration,omitempty"`
// +optional
Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"`
}
AppStatus defines the observed state of an App.
func (*AppStatus) DeepCopy ¶ added in v1.5.0
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AppStatus.
func (*AppStatus) DeepCopyInto ¶ added in v1.5.0
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ClusterToken ¶
type ClusterToken struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec ClusterTokenSpec `json:"spec,omitempty"`
Status ClusterTokenStatus `json:"status,omitempty"`
}
ClusterToken is the Schema for the clustertokens API
func (*ClusterToken) DeepCopy ¶
func (in *ClusterToken) DeepCopy() *ClusterToken
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterToken.
func (*ClusterToken) DeepCopyInto ¶
func (in *ClusterToken) DeepCopyInto(out *ClusterToken)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ClusterToken) DeepCopyObject ¶
func (in *ClusterToken) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*ClusterToken) GetAppRef ¶ added in v1.5.0
func (t *ClusterToken) GetAppRef() *AppReference
GetAppRef returns the raw *AppReference set on the ClusterToken, or nil if unset. The Namespace field may be empty; the caller (registry) defaults it to the operator's own namespace.
func (*ClusterToken) GetInstallationID ¶
func (t *ClusterToken) GetInstallationID() int64
func (*ClusterToken) GetInstallationTokenOptions ¶
func (t *ClusterToken) GetInstallationTokenOptions() *github.InstallationTokenOptions
func (*ClusterToken) GetManagedSecret ¶
func (t *ClusterToken) GetManagedSecret() ManagedSecret
func (*ClusterToken) GetRefreshInterval ¶
func (t *ClusterToken) GetRefreshInterval() time.Duration
func (*ClusterToken) GetRetryInterval ¶ added in v0.5.0
func (t *ClusterToken) GetRetryInterval() time.Duration
func (*ClusterToken) GetSecretAnnotations ¶
func (t *ClusterToken) GetSecretAnnotations() map[string]string
func (*ClusterToken) GetSecretBasicAuth ¶
func (t *ClusterToken) GetSecretBasicAuth() bool
func (*ClusterToken) GetSecretLabels ¶
func (t *ClusterToken) GetSecretLabels() map[string]string
func (*ClusterToken) GetSecretName ¶
func (t *ClusterToken) GetSecretName() string
GetSecretName returns the name of the Secret for the Token
func (*ClusterToken) GetSecretNamespace ¶
func (t *ClusterToken) GetSecretNamespace() string
func (*ClusterToken) GetStatusConditions ¶
func (t *ClusterToken) GetStatusConditions() []metav1.Condition
func (*ClusterToken) GetStatusTimestamps ¶
func (t *ClusterToken) GetStatusTimestamps() (createdAt, expiresAt time.Time)
func (*ClusterToken) GetType ¶
func (t *ClusterToken) GetType() string
func (*ClusterToken) SetStatusCondition ¶
func (t *ClusterToken) SetStatusCondition(condition metav1.Condition) (changed bool)
func (*ClusterToken) SetStatusTimestamps ¶
func (t *ClusterToken) SetStatusTimestamps(expiresAt time.Time)
func (*ClusterToken) UpdateManagedSecret ¶
func (t *ClusterToken) UpdateManagedSecret() (changed bool)
type ClusterTokenList ¶
type ClusterTokenList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata"`
Items []ClusterToken `json:"items"`
}
ClusterTokenList contains a list of ClusterToken
func (*ClusterTokenList) DeepCopy ¶
func (in *ClusterTokenList) DeepCopy() *ClusterTokenList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterTokenList.
func (*ClusterTokenList) DeepCopyInto ¶
func (in *ClusterTokenList) DeepCopyInto(out *ClusterTokenList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ClusterTokenList) DeepCopyObject ¶
func (in *ClusterTokenList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type ClusterTokenSecretSpec ¶
type ClusterTokenSecretSpec struct {
// +kubebuilder:validation:Required
// +kubebuilder:validation:MaxLength:=253
// +kubebuilder:example:="default"
// Namespace for the Secret managed by this ClusterToken
Namespace string `json:"namespace"`
// +optional
// +kubebuilder:validation:MaxLength:=253
// Name for the Secret managed by this ClusterToken (defaults to the name of the ClusterToken)
Name string `json:"name,omitempty"`
// +optional
// Extra labels for the Secret managed by this Token
Labels map[string]string `json:"labels,omitempty"`
// +optional
// Extra annotations for the Secret managed by this Token
Annotations map[string]string `json:"annotations,omitempty"`
// +optional
// Create a secret with 'username' and 'password' fields for HTTP Basic Auth rather than simply 'token'
BasicAuth bool `json:"basicAuth,omitempty"`
}
func (*ClusterTokenSecretSpec) DeepCopy ¶
func (in *ClusterTokenSecretSpec) DeepCopy() *ClusterTokenSecretSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterTokenSecretSpec.
func (*ClusterTokenSecretSpec) DeepCopyInto ¶
func (in *ClusterTokenSecretSpec) DeepCopyInto(out *ClusterTokenSecretSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ClusterTokenSpec ¶
type ClusterTokenSpec struct {
// +optional
// Reference to the App that provides the GitHub App credentials for this
// ClusterToken. When spec.appRef.namespace is empty, the operator resolves
// the reference in its own namespace. When unset, the operator's startup
// configuration is used.
AppRef *AppReference `json:"appRef,omitempty"`
// +kubebuilder:validation:Required
Secret ClusterTokenSecretSpec `json:"secret"`
// +optional
// +kubebuilder:example:="123456789"
// Specify or override the InstallationID of the GitHub App for this Token
InstallationID int64 `json:"installationID,omitempty"`
// +optional
// +kubebuilder:validation:Format:=duration
// +kubebuilder:default:="30m"
// +kubebuilder:example:="45m"
// Specify how often to refresh the token (maximum: 1h)
RefreshInterval metav1.Duration `json:"refreshInterval"`
// +optional
// +kubebuilder:validation:Format:=duration
// +kubebuilder:default:="5m"
// +kubebuilder:example:="1m"
// Specify how long to wait before retrying on transient token retrieval error
RetryInterval metav1.Duration `json:"retryInterval"`
// +optional
// +kubebuilder:example:={"metadata": "read", "contents": "read"}
// Specify the permissions for the token as a subset of those of the GitHub App
Permissions *Permissions `json:"permissions,omitempty"`
// +optional
// +kubebuilder:validation:MaxItems:=500
// Specify the repositories for which the token should have access
Repositories []string `json:"repositories,omitempty"`
// +optional
// +kubebuilder:validation:MaxItems:=500
// Specify the repository IDs for which the token should have access
RepositoryIDs []int64 `json:"repositoryIDs,omitempty"`
}
ClusterTokenSpec defines the desired state of ClusterToken
func (*ClusterTokenSpec) DeepCopy ¶
func (in *ClusterTokenSpec) DeepCopy() *ClusterTokenSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterTokenSpec.
func (*ClusterTokenSpec) DeepCopyInto ¶
func (in *ClusterTokenSpec) DeepCopyInto(out *ClusterTokenSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ClusterTokenStatus ¶
type ClusterTokenStatus struct {
ManagedSecret ManagedSecret `json:"managedSecret,omitempty"`
IAT InstallationAccessToken `json:"installationAccessToken,omitempty"`
Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"`
}
ClusterTokenStatus defines the observed state of ClusterToken
func (*ClusterTokenStatus) DeepCopy ¶
func (in *ClusterTokenStatus) DeepCopy() *ClusterTokenStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterTokenStatus.
func (*ClusterTokenStatus) DeepCopyInto ¶
func (in *ClusterTokenStatus) DeepCopyInto(out *ClusterTokenStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type InstallationAccessToken ¶
type InstallationAccessToken struct {
CreatedAt metav1.Time `json:"updatedAt,omitempty"`
ExpiresAt metav1.Time `json:"expiresAt,omitempty"`
}
func (*InstallationAccessToken) DeepCopy ¶
func (in *InstallationAccessToken) DeepCopy() *InstallationAccessToken
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InstallationAccessToken.
func (*InstallationAccessToken) DeepCopyInto ¶
func (in *InstallationAccessToken) DeepCopyInto(out *InstallationAccessToken)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type KeySecretReference ¶ added in v1.5.0
type KeySecretReference struct {
// +kubebuilder:validation:Required
// +kubebuilder:validation:MaxLength:=253
// Name of the Secret in the App's namespace.
Name string `json:"name"`
// +optional
// +kubebuilder:default:="private-key.pem"
// Key within the Secret's data map containing the PEM-encoded RSA
// private key. Defaults to "private-key.pem", which matches the
// filename GitHub uses when downloading App keys.
Key string `json:"key,omitempty"`
}
KeySecretReference identifies a same-namespace Secret holding a PEM-encoded RSA private key for a GitHub App.
func (*KeySecretReference) DeepCopy ¶ added in v1.5.0
func (in *KeySecretReference) DeepCopy() *KeySecretReference
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KeySecretReference.
func (*KeySecretReference) DeepCopyInto ¶ added in v1.5.0
func (in *KeySecretReference) DeepCopyInto(out *KeySecretReference)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LocalAppReference ¶ added in v1.5.0
type LocalAppReference struct {
// +kubebuilder:validation:Required
// +kubebuilder:validation:MaxLength:=253
// Name of the App resource in the same namespace as the referring Token.
Name string `json:"name"`
}
LocalAppReference is a same-namespace reference to an App resource used by the namespaced Token kind. A Token may only reference an App in its own namespace.
func (*LocalAppReference) DeepCopy ¶ added in v1.5.0
func (in *LocalAppReference) DeepCopy() *LocalAppReference
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocalAppReference.
func (*LocalAppReference) DeepCopyInto ¶ added in v1.5.0
func (in *LocalAppReference) DeepCopyInto(out *LocalAppReference)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ManagedSecret ¶
type ManagedSecret struct {
BasicAuth bool `json:"basicAuth"`
Namespace string `json:"namespace,omitempty"`
Name string `json:"name,omitempty"`
}
func (*ManagedSecret) DeepCopy ¶
func (in *ManagedSecret) DeepCopy() *ManagedSecret
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedSecret.
func (*ManagedSecret) DeepCopyInto ¶
func (in *ManagedSecret) DeepCopyInto(out *ManagedSecret)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (ManagedSecret) IsUnset ¶
func (m ManagedSecret) IsUnset() bool
func (ManagedSecret) Key ¶
func (m ManagedSecret) Key() types.NamespacedName
func (ManagedSecret) MatchesSpec ¶
func (m ManagedSecret) MatchesSpec(owner secretOwner) bool
type Permissions ¶
type Permissions struct {
// +optional
// +kubebuilder:validation:Enum:=read;write
Actions *string `json:"actions,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
Administration *string `json:"administration,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
Checks *string `json:"checks,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
Codespaces *string `json:"codespaces,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
Contents *string `json:"contents,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
DependabotSecrets *string `json:"dependabot_secrets,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
Deployments *string `json:"deployments,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
EmailAddresses *string `json:"email_addresses,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
Environments *string `json:"environments,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
Followers *string `json:"followers,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
Issues *string `json:"issues,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
Metadata *string `json:"metadata,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
Members *string `json:"members,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
OrganizationAdministration *string `json:"organization_administration,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
OrganizationCustomRoles *string `json:"organization_custom_roles,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
OrganizationHooks *string `json:"organization_hooks,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
OrganizationPackages *string `json:"organization_packages,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
OrganizationPlan *string `json:"organization_plan,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
OrganizationProjects *string `json:"organization_projects,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
OrganizationSecrets *string `json:"organization_secrets,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
OrganizationSelfHostedRunners *string `json:"organization_self_hosted_runners,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
OrganizationUserBlocking *string `json:"organization_user_blocking,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
Packages *string `json:"packages,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
Pages *string `json:"pages,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
PullRequests *string `json:"pull_requests,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
RepositoryCustomProperties *string `json:"repository_custom_properties,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
RepositoryHooks *string `json:"repository_hooks,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write;admin
RepositoryProjects *string `json:"repository_projects,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
Secrets *string `json:"secrets,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
SecretScanningAlerts *string `json:"secret_scanning_alerts,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
SecurityEvents *string `json:"security_events,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
SingleFile *string `json:"single_file,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
Statuses *string `json:"statuses,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
TeamDiscussions *string `json:"team_discussions,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=read;write
VulnerabilityAlerts *string `json:"vulnerability_alerts,omitempty"`
// +optional
// +kubebuilder:validation:Enum:=write
Workflows *string `json:"workflows,omitempty"`
}
func (*Permissions) DeepCopy ¶
func (in *Permissions) DeepCopy() *Permissions
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Permissions.
func (*Permissions) DeepCopyInto ¶
func (in *Permissions) DeepCopyInto(out *Permissions)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Permissions) ToInstallationPermissions ¶
func (p *Permissions) ToInstallationPermissions() *github.InstallationPermissions
type Token ¶
type Token struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec TokenSpec `json:"spec,omitempty"`
Status TokenStatus `json:"status,omitempty"`
}
Token is the Schema for the Tokens API
func (*Token) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Token.
func (*Token) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Token) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*Token) GetAppRef ¶ added in v1.5.0
func (t *Token) GetAppRef() *AppReference
GetAppRef returns a normalized *AppReference for the App backing this Token, or nil when no AppRef is set (falling back to the startup config). The namespace is always the Token's own namespace, since Tokens cannot reference Apps cross-namespace.
func (*Token) GetInstallationID ¶
func (*Token) GetInstallationTokenOptions ¶
func (t *Token) GetInstallationTokenOptions() *github.InstallationTokenOptions
func (*Token) GetManagedSecret ¶
func (t *Token) GetManagedSecret() ManagedSecret
func (*Token) GetRefreshInterval ¶
func (*Token) GetRetryInterval ¶ added in v0.5.0
func (*Token) GetSecretAnnotations ¶
func (*Token) GetSecretBasicAuth ¶
func (*Token) GetSecretLabels ¶
func (*Token) GetSecretName ¶
GetSecretName returns the name of the Secret for the Token
func (*Token) GetSecretNamespace ¶
func (*Token) GetStatusConditions ¶
func (*Token) GetStatusTimestamps ¶
func (*Token) SetStatusCondition ¶
func (*Token) SetStatusTimestamps ¶
func (*Token) UpdateManagedSecret ¶
type TokenList ¶
type TokenList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata"`
Items []Token `json:"items"`
}
TokenList contains a list of Token
func (*TokenList) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TokenList.
func (*TokenList) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*TokenList) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type TokenSecretSpec ¶
type TokenSecretSpec struct {
// +optional
// +kubebuilder:validation:MaxLength:=253
// Name for the Secret managed by this Token (defaults to the name of the Token)
Name string `json:"name,omitempty"`
// +optional
// Extra labels for the Secret managed by this Token
Labels map[string]string `json:"labels,omitempty"`
// +optional
// Extra annotations for the Secret managed by this Token
Annotations map[string]string `json:"annotations,omitempty"`
// +optional
// Create a secret with 'username' and 'password' fields for HTTP Basic Auth rather than simply 'token'
BasicAuth bool `json:"basicAuth,omitempty"`
}
func (*TokenSecretSpec) DeepCopy ¶
func (in *TokenSecretSpec) DeepCopy() *TokenSecretSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TokenSecretSpec.
func (*TokenSecretSpec) DeepCopyInto ¶
func (in *TokenSecretSpec) DeepCopyInto(out *TokenSecretSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type TokenSpec ¶
type TokenSpec struct {
// +optional
// Reference to the App that provides the GitHub App credentials for this
// Token. Must be in the same namespace as the Token. When unset, the
// operator's startup configuration is used.
AppRef *LocalAppReference `json:"appRef,omitempty"`
// +optional
// Override the default token secret name and type
Secret TokenSecretSpec `json:"secret,omitempty"`
// +optional
// +kubebuilder:example:="123456789"
// Specify or override the InstallationID of the GitHub App for this Token
InstallationID int64 `json:"installationID,omitempty"`
// +optional
// +kubebuilder:validation:Format:=duration
// +kubebuilder:default:="30m"
// +kubebuilder:example:="45m"
// Specify how often to refresh the token (maximum: 1h)
RefreshInterval metav1.Duration `json:"refreshInterval"`
// +optional
// +kubebuilder:validation:Format:=duration
// +kubebuilder:default:="5m"
// +kubebuilder:example:="1m"
// Specify how long to wait before retrying on transient token retrieval error
RetryInterval metav1.Duration `json:"retryInterval"`
// +optional
// +kubebuilder:example:={"metadata": "read", "contents": "read"}
// Specify the permissions for the token as a subset of those of the GitHub App
Permissions *Permissions `json:"permissions,omitempty"`
// +optional
// +kubebuilder:validation:MaxItems:=500
// Specify the repositories for which the token should have access
Repositories []string `json:"repositories,omitempty"`
// +optional
// +kubebuilder:validation:MaxItems:=500
// Specify the repository IDs for which the token should have access
RepositoryIDs []int64 `json:"repositoryIDs,omitempty"`
}
TokenSpec defines the desired state of Token
func (*TokenSpec) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TokenSpec.
func (*TokenSpec) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type TokenStatus ¶
type TokenStatus struct {
ManagedSecret ManagedSecret `json:"managedSecret,omitempty"`
IAT InstallationAccessToken `json:"installationAccessToken,omitempty"`
Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"`
}
TokenStatus defines the observed state of Token
func (*TokenStatus) DeepCopy ¶
func (in *TokenStatus) DeepCopy() *TokenStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TokenStatus.
func (*TokenStatus) DeepCopyInto ¶
func (in *TokenStatus) DeepCopyInto(out *TokenStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.