v1beta1

package
v0.0.0-...-4f85a94 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 26, 2024 License: Apache-2.0 Imports: 8 Imported by: 5

Documentation

Overview

Package v1alpha1 contains API Schema definitions for the appstudio v1beta1 API group +kubebuilder:object:generate=true +groupName=appstudio.redhat.com

Index

Constants

View Source
const (
	UploadSecretLabel                   = "appstudio.redhat.com/upload-secret"           //#nosec G101 -- false positive, this is just a label
	LinkedByRemoteSecretLabel           = "appstudio.redhat.com/linked-by-remote-secret" //#nosec G101 -- false positive, this is just a label
	RemoteSecretAuthServiceAccountLabel = "appstudio.redhat.com/remotesecret-auth-sa"

	RemoteSecretNameAnnotation         = "appstudio.redhat.com/remotesecret-name" //#nosec G101 -- false positive
	TargetNamespaceAnnotation          = "appstudio.redhat.com/remotesecret-target-namespace"
	ManagingRemoteSecretNameAnnotation = "appstudio.redhat.com/managing-remote-secret" //#nosec G101 -- false positive
	LinkedRemoteSecretsAnnotation      = "appstudio.redhat.com/linked-remote-secrets"  //#nosec G101 -- false positive

	// ObjectClusterUrlAnnotation is put on the events that are created when we fail to clean up the deployed secrets during the RemoteSecret
	// finalization. It specifies the API URL of the cluster where the secrets were deployed to (because there is no other good place to put
	// this information on the Event object).
	ObjectClusterUrlAnnotation = "appstudio.redhat.com/object-cluster-url"

	// RemoteSecretPartialUpdateAnnotation if present on the upload secret, this marks the upload secret as performing a partial update of the already existing secret data
	// of the remote secret that the upload secret refers to using the RemoteSecretNameAnnotation annotation. The value of this annotation is not important but should be documented
	// as "true". The data of the upload secret is used to update the secret data (i.e. the keys from the upload secret overwrite the keys in the secret data (adding new keys if not
	// present in the secret data)).
	RemoteSecretPartialUpdateAnnotation = "appstudio.redhat.com/remotesecret-partial-update"
	// RemoteSecretDeletedKeysAnnotation should be placed on an upload secret if the user want to remove some keys from the secret data of an already existing remote secret. It
	// contains the comma-separated list of keys that should be removed.
	RemoteSecretDeletedKeysAnnotation = "appstudio.redhat.com/remotesecret-deleted-keys"
)

Caution: Modifying these constants may have unintended consequences in other projects that rely on remote-secret.

View Source
const (
	RemoteSecretConditionTypeDeployed     RemoteSecretConditionType = "Deployed"
	RemoteSecretConditionTypeDataObtained RemoteSecretConditionType = "DataObtained"

	RemoteSecretReasonAwaitingTokenData RemoteSecretReason = "AwaitingData"
	RemoteSecretReasonDataFound         RemoteSecretReason = "DataFound"
	RemoteSecretReasonInjected          RemoteSecretReason = "Injected"
	RemoteSecretReasonPartiallyInjected RemoteSecretReason = "PartiallyInjected"
	RemoteSecretReasonError             RemoteSecretReason = "Error"
	RemoteSecretReasonNoTargets         RemoteSecretReason = "NoTargets"
)

Variables

View Source
var (
	// GroupVersion is group version used to register these objects
	GroupVersion = schema.GroupVersion{Group: "appstudio.redhat.com", Version: "v1beta1"}

	// 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 Correspondence

type Correspondence int

Correspondence is a result of the TargetKey#CorrespondsTo method describing how two targets correspond to each other. Valid values are NameCorrespondence, GenerateNameCorrespondence and NoCorrespondence.

const (
	NoCorrespondence Correspondence = iota
	GenerateNameCorrespondence
	NameCorrespondence
)

type DeployedSecretStatus

type DeployedSecretStatus struct {
	Labels      map[string]string `json:"labels,omitempty"`
	Annotations map[string]string `json:"annotations,omitempty"`
	Name        string            `json:"name"`
}

func (*DeployedSecretStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeployedSecretStatus.

func (*DeployedSecretStatus) DeepCopyInto

func (in *DeployedSecretStatus) DeepCopyInto(out *DeployedSecretStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type LinkableSecretSpec

type LinkableSecretSpec struct {
	// Name is the name of the secret to be created. If it is not defined a random name based on the name of the binding
	// is used.
	// +optional
	Name         string `json:"name,omitempty"`
	GenerateName string `json:"generateName,omitempty"`
	// Labels contains the labels that the created secret should be labeled with.
	Labels map[string]string `json:"labels,omitempty"`
	// Annotations is the keys and values that the created secret should be annotated with.
	Annotations map[string]string `json:"annotations,omitempty"`
	// Type is the type of the secret to be created in targets. If left empty, the default type used in the cluster is assumed (typically Opaque).
	// The Type has to match type of the UploadSecret. This constraint ensures that the requirements on keys,
	// put forth by Kubernetes (https://kubernetes.io/docs/concepts/configuration/secret/#secret-types), are met and
	// secret can be properly created in targets.
	Type corev1.SecretType `json:"type,omitempty"`
	// RequiredKeys are the keys which need to be present in the UploadSecret to successfully upload the SecretData.
	// Furthermore, the UploadSecret needs to contain the keys which are inferred from the Type
	// (and UploadSecret's type, since these have to match) and may contain any additional keys.
	RequiredKeys []SecretKey `json:"keys,omitempty"`
	// LinkedTo specifies the objects that the secret is linked to. Currently, only service accounts are supported.
	LinkedTo []SecretLink `json:"linkedTo,omitempty"`
}

func (*LinkableSecretSpec) DeepCopy

func (in *LinkableSecretSpec) DeepCopy() *LinkableSecretSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinkableSecretSpec.

func (*LinkableSecretSpec) DeepCopyInto

func (in *LinkableSecretSpec) DeepCopyInto(out *LinkableSecretSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ManagedServiceAccountSpec

type ManagedServiceAccountSpec struct {
	// Name is the name of the service account to create/link. Either this or GenerateName
	// must be specified.
	// +optional
	Name string `json:"name"`
	// GenerateName is the generate name to be used when creating the service account. It only
	// really makes sense for the Managed service accounts that are cleaned up with the binding.
	// +optional
	GenerateName string `json:"generateName"`
	// Labels contains the labels that the created service account should be labeled with.
	Labels map[string]string `json:"labels,omitempty"`
	// Annotations is the keys and values that the created service account should be annotated with.
	Annotations map[string]string `json:"annotations,omitempty"`
}

func (*ManagedServiceAccountSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedServiceAccountSpec.

func (*ManagedServiceAccountSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RemoteSecret

type RemoteSecret struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   RemoteSecretSpec   `json:"spec,omitempty"`
	Status RemoteSecretStatus `json:"status,omitempty"`
	// Transient optional field for data to upload during create/update RemoteSecret
	// It is processed by Mutating Webhook and must not be persisted,
	// to make sure (in a case if something happened with Webhook) it is constrained
	//+kubebuilder:validation:MaxProperties=0
	UploadData map[string][]byte `json:"data,omitempty"`
	// Similar to how one can specify the data in an ordinary Kubernetes secret using either
	// the "data" or "stringData" fields, so one can do that when supplying the data to
	// the remote secret. See the data field for more details about the behavior of these fields
	// in remote secrets.
	// Both in create and update, the contents of the stringData is merged into the data field first.
	// This is the same behavior as with ordinary Kubernetes secret's stringData.
	//+kubebuilder:validation:MaxProperties=0
	StringUploadData map[string]string `json:"stringData,omitempty"`
	// DataFrom is an optional field that can be used to copy data from another remote secret during the creation
	// of the remote secret. This field can be specified only during creation of a remote secret (only one of data
	// or dataFrom can be specified at the same time) or during an update of a remote secret that does not yet have
	// data associated with it (its DataObtained condition is in the AwaitingData state).
	DataFrom RemoteSecretDataFrom `json:"dataFrom,omitempty"`
}

RemoteSecret is the Schema for the RemoteSecret API

func (*RemoteSecret) DeepCopy

func (in *RemoteSecret) DeepCopy() *RemoteSecret

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RemoteSecret.

func (*RemoteSecret) DeepCopyInto

func (in *RemoteSecret) DeepCopyInto(out *RemoteSecret)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RemoteSecret) DeepCopyObject

func (in *RemoteSecret) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*RemoteSecret) ValidateSecretData

func (rs *RemoteSecret) ValidateSecretData(secretData map[string][]byte) error

ValidateSecretData checks whether the secret data contains all the keys required by the secret type and specified in the RemoteSecret spec. If we assumed this function is called only for upload secrets, we could avoid checking the keys required by the secret type because Kubernetes API server would reject the upload secret if it did not contain the required keys. However, this function is also meant for validating the secret data that is already stored.

func (*RemoteSecret) ValidateUploadSecret

func (rs *RemoteSecret) ValidateUploadSecret(uploadSecret *corev1.Secret) error

ValidateUploadSecret checks whether the uploadSecret type matches the RemoteSecret type and whether upload secret contains required keys. The function is in the api package because it extends the contract of the CRD.

type RemoteSecretConditionType

type RemoteSecretConditionType string

RemoteSecretConditionType lists the types of conditions we track in the remote secret status

type RemoteSecretDataFrom

type RemoteSecretDataFrom struct {
	Name      string `json:"name,omitempty"`
	Namespace string `json:"namespace,omitempty"`
}

func (*RemoteSecretDataFrom) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RemoteSecretDataFrom.

func (*RemoteSecretDataFrom) DeepCopyInto

func (in *RemoteSecretDataFrom) DeepCopyInto(out *RemoteSecretDataFrom)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RemoteSecretErrorReason

type RemoteSecretErrorReason string
const (
	RemoteSecretErrorReasonTokenRetrieval RemoteSecretErrorReason = "TokenRetrieval"
	RemoteSecretErrorReasonNoError        RemoteSecretErrorReason = ""
)

type RemoteSecretList

type RemoteSecretList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []RemoteSecret `json:"items"`
}

RemoteSecretList contains a list of RemoteSecret

func (*RemoteSecretList) DeepCopy

func (in *RemoteSecretList) DeepCopy() *RemoteSecretList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RemoteSecretList.

func (*RemoteSecretList) DeepCopyInto

func (in *RemoteSecretList) DeepCopyInto(out *RemoteSecretList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RemoteSecretList) DeepCopyObject

func (in *RemoteSecretList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type RemoteSecretReason

type RemoteSecretReason string

RemoteSecretReason is the reconciliation status of the RemoteSecret object

type RemoteSecretSpec

type RemoteSecretSpec struct {
	// Secret defines the properties of the secret and the linked service accounts that should be
	// created in the target namespaces.
	Secret LinkableSecretSpec `json:"secret"`
	// Targets is the list of the target namespaces that the secret and service accounts should be deployed to.
	// +optional
	Targets []RemoteSecretTarget `json:"targets,omitempty"`
}

RemoteSecretSpec defines the desired state of RemoteSecret

func (*RemoteSecretSpec) DeepCopy

func (in *RemoteSecretSpec) DeepCopy() *RemoteSecretSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RemoteSecretSpec.

func (*RemoteSecretSpec) DeepCopyInto

func (in *RemoteSecretSpec) DeepCopyInto(out *RemoteSecretSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RemoteSecretStatus

type RemoteSecretStatus struct {
	// Conditions is the list of conditions describing the state of the deployment
	// to the targets.
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
	// Targets is the list of the deployment statuses for individual targets in the spec.
	// +optional
	Targets []TargetStatus `json:"targets,omitempty"`
	// SecretStatus describes the shape of the secret which is currently stored in SecretStorage.
	// +optional
	SecretStatus SecretStatus `json:"secret,omitempty"`
}

RemoteSecretStatus defines the observed state of RemoteSecret

func (*RemoteSecretStatus) DeepCopy

func (in *RemoteSecretStatus) DeepCopy() *RemoteSecretStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RemoteSecretStatus.

func (*RemoteSecretStatus) DeepCopyInto

func (in *RemoteSecretStatus) DeepCopyInto(out *RemoteSecretStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RemoteSecretTarget

type RemoteSecretTarget struct {
	// Secret contains the overriden definitions of the secret specific to this target.
	// +kubebuilder:validation:Optional
	Secret *SecretOverride `json:"secret,omitempty"`
	// Namespace is the name of the target namespace to which to deploy.
	Namespace string `json:"namespace"`
	// ApiUrl specifies the URL of the API server of a remote Kubernetes cluster that this target points to. If left empty,
	// the local cluster is assumed.
	// +kubebuilder:validation:Optional
	ApiUrl string `json:"apiUrl,omitempty"`
	// ClusterCredentialsSecret is the name of the secret in the same namespace as the RemoteSecret that contains the token
	// to use to authenticate with the remote Kubernetes cluster. This is ignored if `apiUrl` is empty.
	// +kubebuilder:validation:Optional
	ClusterCredentialsSecret string `json:"clusterCredentialsSecret,omitempty"`
}

func (*RemoteSecretTarget) DeepCopy

func (in *RemoteSecretTarget) DeepCopy() *RemoteSecretTarget

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RemoteSecretTarget.

func (*RemoteSecretTarget) DeepCopyInto

func (in *RemoteSecretTarget) DeepCopyInto(out *RemoteSecretTarget)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (RemoteSecretTarget) ToTargetKey

func (rst RemoteSecretTarget) ToTargetKey(containingRemoteSecret *RemoteSecret) TargetKey

ToTargetKey converts the remote secret target into a target key given the default spec specified in the provided remote secret.

type SecretKey

type SecretKey struct {
	Name string `json:"name,omitempty"`
}

func (*SecretKey) DeepCopy

func (in *SecretKey) DeepCopy() *SecretKey

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretKey.

func (*SecretKey) DeepCopyInto

func (in *SecretKey) DeepCopyInto(out *SecretKey)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SecretLink struct {
	// ServiceAccounts lists the service accounts that the secret is linked to.
	ServiceAccount ServiceAccountLink `json:"serviceAccount,omitempty"`
}

func (*SecretLink) DeepCopy

func (in *SecretLink) DeepCopy() *SecretLink

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretLink.

func (*SecretLink) DeepCopyInto

func (in *SecretLink) DeepCopyInto(out *SecretLink)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SecretOverride

type SecretOverride struct {
	// Labels is the new set of labels to be put on the secret instead of the labels defined in the spec. I.e. this completely replaces
	// the labels from the secret spec. Note that this is a pointer to a map so that we can distinguish between an undefined, nil, value
	// and an empty map (clearing any labels defined in the spec).
	// +kubebuilder:validation:Optional
	Labels *map[string]string `json:"labels,omitempty"`
	// Annotations is the new set of annotations to be put on the secret instead of the annotations defined in the spec. I.e. this
	// completely replaces the annotations from the secret spec. Note that this is a pointer to a map so that we can distinguish between
	// an undefined, nil, value and an empty map (clearing any annotations defined in the spec).
	// +kubebuilder:validation:Optional
	Annotations *map[string]string `json:"annotations,omitempty"`

	// Name is the name of the secret when deployed to the target. This overrides the name from the secret spec.
	// +kubebuilder:validation:Optional
	Name string `json:"name,omitempty"`
	// GenerateName is the GenerateName of the secret when deployed to the target. This overrides the generateName from the secret spec.
	// +kubebuilder:validation:Optional
	GenerateName string `json:"generateName,omitempty"`
}

func (*SecretOverride) DeepCopy

func (in *SecretOverride) DeepCopy() *SecretOverride

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretOverride.

func (*SecretOverride) DeepCopyInto

func (in *SecretOverride) DeepCopyInto(out *SecretOverride)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SecretStatus

type SecretStatus struct {
	Keys []string `json:"keys,omitempty"`
}

func (*SecretStatus) DeepCopy

func (in *SecretStatus) DeepCopy() *SecretStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretStatus.

func (*SecretStatus) DeepCopyInto

func (in *SecretStatus) DeepCopyInto(out *SecretStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServiceAccountLink struct {
	// As specifies how the secret generated by the binding is linked to the service account.
	// This can be either `secret` meaning that the secret is listed as one of the mountable secrets
	// in the `secrets` of the service account, `imagePullSecret` which makes the secret listed as
	// one of the image pull secrets associated with the service account. If not specified, it defaults
	// to `secret`.
	// +optional
	// +kubebuilder:default:=secret
	As ServiceAccountLinkType `json:"as,omitempty"`
	// Reference specifies a pre-existing service account that the secret should be linked to. It is an error
	// if the service account doesn't exist when the operator tries to add a link to a secret with the injected
	// token.
	Reference corev1.LocalObjectReference `json:"reference,omitempty"`
	// Managed specifies the service account that is bound to the lifetime of the binding. This service account
	// must not exist and is created and deleted along with the injected secret.
	Managed ManagedServiceAccountSpec `json:"managed,omitempty"`
}

func (*ServiceAccountLink) DeepCopy

func (in *ServiceAccountLink) DeepCopy() *ServiceAccountLink

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAccountLink.

func (*ServiceAccountLink) DeepCopyInto

func (in *ServiceAccountLink) DeepCopyInto(out *ServiceAccountLink)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ServiceAccountLink) EffectiveSecretLinkType

func (s *ServiceAccountLink) EffectiveSecretLinkType() ServiceAccountLinkType

EffectiveSecretLinkType returns the secret link type applying the default value if LinkedSecretAs is unspecified by the user.

type ServiceAccountLinkType

type ServiceAccountLinkType string
const (
	ServiceAccountLinkTypeSecret          ServiceAccountLinkType = "secret"
	ServiceAccountLinkTypeImagePullSecret ServiceAccountLinkType = "imagePullSecret"
)

type TargetKey

type TargetKey struct {
	ApiUrl             string
	Namespace          string
	SecretName         string
	SecretGenerateName string
}

TargetKey is not used in the RemoteSecret spec as such but it represents an identifier of a target. As such it can be used as key in the maps instead of RemoteSecretTarget (which itself is not comparable).

Note that it is not directly possible to compare a TargetKey generated from a RemoteSecretTarget and TargetStatus, because the spec may contain an empty secret name and non-empty generate name. To determine whether a target key may correspond to another, use the CorrespondsTo function on the target key.

func (TargetKey) CorrespondsTo

func (tk TargetKey) CorrespondsTo(other TargetKey) Correspondence

CorrespondsTo tells whether the target key corresponds to the other target key. Note that this operation is not symmetric, i.e. a.CorrespondsTo(b) does not imply b.CorrespondsTo(a).

func (*TargetKey) DeepCopy

func (in *TargetKey) DeepCopy() *TargetKey

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TargetKey.

func (*TargetKey) DeepCopyInto

func (in *TargetKey) DeepCopyInto(out *TargetKey)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type TargetSecretKey

type TargetSecretKey struct {
	// Name is the exact name of the Secret to be deployed to target.
	// +optional
	Name string `json:"name,omitempty"`
	// GenerateName is the name prefix for Secret to be deployed to the target.
	// +optional
	GenerateName string `json:"generateName,omitempty"`
}

func (*TargetSecretKey) DeepCopy

func (in *TargetSecretKey) DeepCopy() *TargetSecretKey

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TargetSecretKey.

func (*TargetSecretKey) DeepCopyInto

func (in *TargetSecretKey) DeepCopyInto(out *TargetSecretKey)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type TargetStatus

type TargetStatus struct {
	// Namespace is the namespace of the target where the secret and the service accounts have been deployed to.
	Namespace string `json:"namespace"`
	// ApiUrl is the URL of the remote Kubernetes cluster to which the target points to.
	ApiUrl string `json:"apiUrl,omitempty"`
	// SecretName is the name of the secret that is actually deployed to the target namespace
	//
	// Deprecated: please use the DeployedSecret.Name field instead
	SecretName string `json:"secretName,omitempty"`
	// ExpectedSecret defines how the name of the Secret to be deployed should look like. The value comes either from
	// LinkableSecretSpec definition in RemoteSecret spec, or from SecretOverride in the target. The value
	// as such is not important for users, but it is required for a correct matching of targets from spec to status.
	// +optional
	ExpectedSecret *TargetSecretKey `json:"expectedSecret,omitempty"`
	// ServiceAccountNames is the names of the service accounts that have been deployed to the target namespace
	// +optional
	ServiceAccountNames []string `json:"serviceAccountNames,omitempty"`
	// ClusterCredentialsSecret is the name of the secret in the same namespace as the RemoteSecret that contains the token
	// to use to authenticate with the remote Kubernetes cluster. This is ignored if `apiUrl` is empty.
	ClusterCredentialsSecret string `json:"clusterCredentialsSecret,omitempty"`
	// Error the optional error message if the deployment of either the secret or the service accounts failed.
	// +optional
	Error string `json:"error,omitempty"`
	// DeployedSecret contains the status information about the linked secret deployed in the target
	// +optional
	DeployedSecret *DeployedSecretStatus `json:"deployedSecret,omitempty"`
}

func (*TargetStatus) DeepCopy

func (in *TargetStatus) DeepCopy() *TargetStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TargetStatus.

func (*TargetStatus) DeepCopyInto

func (in *TargetStatus) DeepCopyInto(out *TargetStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (TargetStatus) ToTargetKey

func (ts TargetStatus) ToTargetKey() TargetKey

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL