argo

package
v2.0.0-...-5e8ce1c Latest Latest
Warning

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

Go to latest
Published: Apr 20, 2024 License: Apache-2.0 Imports: 32 Imported by: 0

Documentation

Index

Constants

View Source
const (
	EventReasonStatusRefreshed    = "StatusRefreshed"
	EventReasonResourceCreated    = "ResourceCreated"
	EventReasonResourceUpdated    = "ResourceUpdated"
	EventReasonResourceDeleted    = "ResourceDeleted"
	EventReasonResourceActionRan  = "ResourceActionRan"
	EventReasonOperationStarted   = "OperationStarted"
	EventReasonOperationCompleted = "OperationCompleted"
)
View Source
const (
	TrackingMethodAnnotation         v1alpha1.TrackingMethod = "annotation"
	TrackingMethodLabel              v1alpha1.TrackingMethod = "label"
	TrackingMethodAnnotationAndLabel v1alpha1.TrackingMethod = "annotation+label"
)

Variables

View Source
var (
	ErrAnotherOperationInProgress = status.Errorf(codes.FailedPrecondition, "another operation is already in progress")
)
View Source
var LabelMaxLength = 63
View Source
var WrongResourceTrackingFormat = fmt.Errorf("wrong resource tracking format, should be <application-name>:<group>/<kind>:<namespace>/<name>")

Functions

func APIResourcesToStrings

func APIResourcesToStrings(resources []kube.APIResourceInfo, includeKinds bool) []string

APIResourcesToStrings converts list of API Resources list into string list

func AppInstanceName

func AppInstanceName(appName, appNs, defaultNs string) string

AppInstanceName returns the value to be used for app instance labels from the combination of appName, appNs and defaultNs.

func AugmentSyncMsg

func AugmentSyncMsg(res common.ResourceSyncResult, apiResourceInfoGetter func() ([]kube.APIResourceInfo, error)) (string, error)

AugmentSyncMsg enrich the K8s message with user-relevant information

func ContainsSyncResource

func ContainsSyncResource(name string, namespace string, gvk schema.GroupVersionKind, rr []argoappv1.SyncOperationResource) bool

ContainsSyncResource determines if the given resource exists in the provided slice of sync operation resources.

func ErrProjectNotPermitted

func ErrProjectNotPermitted(appName, appNamespace, projName string) error

ErrProjectNotPermitted returns an error to indicate that an application identified by appName and appNamespace is not allowed to use the project identified by projName.

func FilterAppSetsByProjects

func FilterAppSetsByProjects(appsets []argoappv1.ApplicationSet, projects []string) []argoappv1.ApplicationSet

FilterAppSetsByProjects returns applications which belongs to the specified project

func FilterByCluster

func FilterByCluster(apps []argoappv1.Application, cluster string) []argoappv1.Application

FilterByCluster returns an application

func FilterByName

func FilterByName(apps []argoappv1.Application, name string) ([]argoappv1.Application, error)

FilterByName returns an application

func FilterByNameP

func FilterByNameP(apps []*argoappv1.Application, name string) []*argoappv1.Application

FilterByNameP returns pointer applications This function is for the changes in #12985.

func FilterByProjects

func FilterByProjects(apps []argoappv1.Application, projects []string) []argoappv1.Application

FilterByProjects returns applications which belongs to the specified project

func FilterByProjectsP

func FilterByProjectsP(apps []*argoappv1.Application, projects []string) []*argoappv1.Application

FilterByProjectsP returns application pointers which belongs to the specified project

func FilterByRepo

func FilterByRepo(apps []argoappv1.Application, repo string) []argoappv1.Application

FilterByRepo returns an application

func FilterByRepoP

func FilterByRepoP(apps []*argoappv1.Application, repo string) []*argoappv1.Application

FilterByRepoP returns application pointers

func FormatAppConditions

func FormatAppConditions(conditions []argoappv1.ApplicationCondition) string

FormatAppConditions returns string representation of give app condition list

func GenerateSpecIsDifferentErrorMessage

func GenerateSpecIsDifferentErrorMessage(entity string, a, b interface{}) string

func GetAppProject

func GetAppProject(app *argoappv1.Application, projLister applicationsv1.AppProjectLister, ns string, settingsManager *settings.SettingsManager, db db.ArgoDB, ctx context.Context) (*argoappv1.AppProject, error)

GetAppProject returns a project from an application. It will also ensure that the application is allowed to use the project.

func GetAppProjectByName

func GetAppProjectByName(name string, projLister applicationsv1.AppProjectLister, ns string, settingsManager *settings.SettingsManager, db db.ArgoDB, ctx context.Context) (*argoappv1.AppProject, error)

GetAppProjectByName returns a project from an application based on name

func GetAppProjectWithScopedResources

func GetAppProjectWithScopedResources(name string, projLister applicationsv1.AppProjectLister, ns string, settingsManager *settings.SettingsManager, db db.ArgoDB, ctx context.Context) (*argoappv1.AppProject, argoappv1.Repositories, []*argoappv1.Cluster, error)

GetAppProjectWithScopedResources returns a project from an application with scoped resources

func GetAppVirtualProject

func GetAppVirtualProject(proj *argoappv1.AppProject, projLister applicationsv1.AppProjectLister, settingsManager *settings.SettingsManager) (*argoappv1.AppProject, error)

func GetDifferentPathsBetweenStructs

func GetDifferentPathsBetweenStructs(a, b interface{}) ([]string, error)

func GetGlobalProjects

func GetGlobalProjects(proj *argoappv1.AppProject, projLister applicationsv1.AppProjectLister, settingsManager *settings.SettingsManager) []*argoappv1.AppProject

func GetPermittedRepos

func GetPermittedRepos(proj *argoappv1.AppProject, repos []*argoappv1.Repository) ([]*argoappv1.Repository, error)

func GetPermittedReposCredentials

func GetPermittedReposCredentials(proj *argoappv1.AppProject, repoCreds []*argoappv1.RepoCreds) ([]*argoappv1.RepoCreds, error)

func GetRefSources

GetRefSources creates a map of ref keys (from the sources' 'ref' fields) to information about the referenced source. This function also validates the references use allowed characters and does not define the same ref key more than once (which would lead to ambiguous references).

func GetTrackingMethod

func GetTrackingMethod(settingsMgr *settings.SettingsManager) v1alpha1.TrackingMethod

GetTrackingMethod retrieve tracking method from settings

func IncludeResource

func IncludeResource(resourceName string, resourceNamespace string, gvk schema.GroupVersionKind,
	syncOperationResources []*argoappv1.SyncOperationResource) bool

IncludeResource checks if an app resource matches atleast one of the filters, then it returns true.

func InstanceNameFromQualified

func InstanceNameFromQualified(name string, defaultNs string) string

InstanceNameFromQualified returns the value to be used for app

func IsOldTrackingMethod

func IsOldTrackingMethod(trackingMethod string) bool

func IsValidAppName

func IsValidAppName(name string) bool

IsValidAppName checks if the name can be used as application name

func IsValidContainerName

func IsValidContainerName(name string) bool

IsValidContainerName checks that a containerName is valid

func IsValidNamespaceName

func IsValidNamespaceName(name string) bool

IsValidNamespaceName checks that a namespace name is valid

func IsValidPodName

func IsValidPodName(name string) bool

IsValidPodName checks that a podName is valid

func IsValidProjectName

func IsValidProjectName(name string) bool

IsValidProjectName checks if the name can be used as project name

func NormalizeApplicationSpec

func NormalizeApplicationSpec(spec *argoappv1.ApplicationSpec) *argoappv1.ApplicationSpec

NormalizeApplicationSpec will normalize an application spec to a preferred state. This is used for migrating application objects which are using deprecated legacy fields into the new fields, and defaulting fields in the spec (e.g. spec.project)

func ParseFromQualifiedName

func ParseFromQualifiedName(appName string, defaultNs string) (string, string)

ParseAppNamespacedName parses a namespaced name in the format namespace/name and returns the components. If name wasn't namespaced, defaultNs will be returned as namespace component.

func ParseInstanceName

func ParseInstanceName(appName string, defaultNs string) (string, string)

ParseInstanceName parses a namespaced name in the format namespace_name and returns the components. If name wasn't namespaced, defaultNs will be returned as namespace component.

func RefreshApp

func RefreshApp(appIf v1alpha1.ApplicationInterface, name string, refreshType argoappv1.RefreshType) (*argoappv1.Application, error)

RefreshApp updates the refresh annotation of an application to coerce the controller to process it

func SetAppOperation

func SetAppOperation(appIf v1alpha1.ApplicationInterface, appName string, op *argoappv1.Operation) (*argoappv1.Application, error)

SetAppOperation updates an application with the specified operation, retrying conflict errors

func TestRepoWithKnownType

func TestRepoWithKnownType(ctx context.Context, repoClient apiclient.RepoServerServiceClient, repo *argoappv1.Repository, isHelm bool, isHelmOci bool) error

func ValidateDestination

func ValidateDestination(ctx context.Context, dest *argoappv1.ApplicationDestination, db db.ArgoDB) error

ValidateDestination sets the 'Server' value of the ApplicationDestination, if it is not set. NOTE: this function WILL write to the object pointed to by the 'dest' parameter.

If an ApplicationDestination has a Name field, but has an empty Server (URL) field, ValidationDestination will look up the cluster by name (to get the server URL), and set the corresponding Server field value.

It also checks: - If we used both name and server then we return an invalid spec error

func ValidatePermissions

ValidatePermissions ensures that the referenced cluster has been added to Argo CD and the app source repo and destination namespace/cluster are permitted in app project

func ValidateRepo

func ValidateRepo(
	ctx context.Context,
	app *argoappv1.Application,
	repoClientset apiclient.Clientset,
	db db.ArgoDB,
	kubectl kube.Kubectl,
	proj *argoappv1.AppProject,
	settingsMgr *settings.SettingsManager,
) ([]argoappv1.ApplicationCondition, error)

ValidateRepo validates the repository specified in application spec. Following is checked: * the repository is accessible * the path contains valid manifests * there are parameters of only one app source type

The plugins parameter is no longer used. It is kept for compatibility with the old signature until Argo CD v3.0.

Types

type AppInstanceValue

type AppInstanceValue struct {
	ApplicationName string
	Group           string
	Kind            string
	Namespace       string
	Name            string
}

AppInstanceValue store information about resource tracking info

func UnstructuredToAppInstanceValue

func UnstructuredToAppInstanceValue(un *unstructured.Unstructured, appName, namespace string) AppInstanceValue

UnstructuredToAppInstanceValue will build the AppInstanceValue based on the provided unstructured. The given namespace works as a default value if the resource's namespace is not defined. It should be the Application's target destination namespace.

type AuditLogger

type AuditLogger struct {
	// contains filtered or unexported fields
}

func NewAuditLogger

func NewAuditLogger(ns string, kIf kubernetes.Interface, component string) *AuditLogger

func (*AuditLogger) LogAppEvent

func (l *AuditLogger) LogAppEvent(app *v1alpha1.Application, info EventInfo, message, user string)

func (*AuditLogger) LogAppProjEvent

func (l *AuditLogger) LogAppProjEvent(proj *v1alpha1.AppProject, info EventInfo, message, user string)

func (*AuditLogger) LogAppSetEvent

func (l *AuditLogger) LogAppSetEvent(app *v1alpha1.ApplicationSet, info EventInfo, message, user string)

func (*AuditLogger) LogResourceEvent

func (l *AuditLogger) LogResourceEvent(res *v1alpha1.ResourceNode, info EventInfo, message, user string)

type EventInfo

type EventInfo struct {
	Type   string
	Reason string
}

type ObjectRef

type ObjectRef struct {
	Name            string
	Namespace       string
	ResourceVersion string
	UID             types.UID
}

type ResourceTracking

type ResourceTracking interface {
	GetAppName(un *unstructured.Unstructured, key string, trackingMethod v1alpha1.TrackingMethod) string
	GetAppInstance(un *unstructured.Unstructured, key string, trackingMethod v1alpha1.TrackingMethod) *AppInstanceValue
	SetAppInstance(un *unstructured.Unstructured, key, val, namespace string, trackingMethod v1alpha1.TrackingMethod) error
	BuildAppInstanceValue(value AppInstanceValue) string
	ParseAppInstanceValue(value string) (*AppInstanceValue, error)
	Normalize(config, live *unstructured.Unstructured, labelKey, trackingMethod string) error
}

ResourceTracking defines methods which allow setup and retrieve tracking information to resource

func NewResourceTracking

func NewResourceTracking() ResourceTracking

Directories

Path Synopsis
Code generated by github.com/argoproj/argo-cd/hack/known_types.
Code generated by github.com/argoproj/argo-cd/hack/known_types.

Jump to

Keyboard shortcuts

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