137 lines
4.8 KiB
YAML
137 lines
4.8 KiB
YAML
# =============================================================================
|
|
# COMPOSITION
|
|
# Configure comment créer les ressources réelles
|
|
# =============================================================================
|
|
apiVersion: apiextensions.crossplane.io/v1
|
|
kind: Composition
|
|
metadata:
|
|
# Format: <resource>.<provider>.<group>
|
|
# Exemple: database.aws.mathod.io, network.gcp.mathod.io
|
|
name: <resource>.<provider>.mathod.io
|
|
labels:
|
|
provider: <provider_name>
|
|
type: <resource_type>
|
|
spec:
|
|
# Référence vers le XRD
|
|
compositeTypeRef:
|
|
apiVersion: mathod.io/v1alpha1
|
|
kind: X<ResourceName>
|
|
|
|
# Mode Pipeline (recommandé pour Crossplane v2)
|
|
mode: Pipeline
|
|
|
|
pipeline:
|
|
- step: patch-and-transform
|
|
functionRef:
|
|
name: function-patch-and-transform
|
|
input:
|
|
apiVersion: pt.fn.crossplane.io/v1beta1
|
|
kind: Resources
|
|
resources:
|
|
# =============================================
|
|
# RESSOURCE MANAGÉE #1
|
|
# =============================================
|
|
- name: <resource-name>
|
|
base:
|
|
# API de la ressource (provider specific)
|
|
apiVersion: <provider>.aws.upbound.io/v1beta1
|
|
kind: <ResourceKind>
|
|
spec:
|
|
forProvider:
|
|
# Configuration de base
|
|
<field>: <value>
|
|
|
|
# Référence au ProviderConfig
|
|
providerConfigRef:
|
|
name: aws-provider
|
|
|
|
patches:
|
|
# -------------------------------------
|
|
# FromCompositeFieldPath
|
|
# Copie depuis le XR vers la ressource
|
|
# -------------------------------------
|
|
- type: FromCompositeFieldPath
|
|
fromFieldPath: spec.parameters.<paramName>
|
|
toFieldPath: spec.forProvider.<targetField>
|
|
|
|
# -------------------------------------
|
|
# ToCompositeFieldPath
|
|
# Copie depuis la ressource vers le XR
|
|
# -------------------------------------
|
|
- type: ToCompositeFieldPath
|
|
fromFieldPath: status.atProvider.<sourceField>
|
|
toFieldPath: status.<outputField>
|
|
|
|
# -------------------------------------
|
|
# Transform - Map
|
|
# Transforme une valeur avec un mapping
|
|
# -------------------------------------
|
|
- type: FromCompositeFieldPath
|
|
fromFieldPath: spec.parameters.<boolParam>
|
|
toFieldPath: spec.forProvider.<targetField>
|
|
transforms:
|
|
- type: map
|
|
map:
|
|
"true": Enabled
|
|
"false": Disabled
|
|
|
|
# -------------------------------------
|
|
# Transform - String
|
|
# Formate une string
|
|
# -------------------------------------
|
|
- type: FromCompositeFieldPath
|
|
fromFieldPath: spec.parameters.<paramName>
|
|
toFieldPath: spec.forProvider.<targetField>
|
|
transforms:
|
|
- type: string
|
|
string:
|
|
fmt: "prefix-%s-suffix"
|
|
|
|
# -------------------------------------
|
|
# Transform - Math
|
|
# Opération mathématique
|
|
# -------------------------------------
|
|
- type: FromCompositeFieldPath
|
|
fromFieldPath: spec.parameters.<intParam>
|
|
toFieldPath: spec.forProvider.<targetField>
|
|
transforms:
|
|
- type: math
|
|
math:
|
|
multiply: 2
|
|
|
|
# -------------------------------------
|
|
# CombineFromComposite
|
|
# Combine plusieurs champs
|
|
# -------------------------------------
|
|
- type: CombineFromComposite
|
|
combine:
|
|
variables:
|
|
- fromFieldPath: spec.parameters.<param1>
|
|
- fromFieldPath: spec.parameters.<param2>
|
|
strategy: string
|
|
string:
|
|
fmt: "%s-%s"
|
|
toFieldPath: spec.forProvider.<targetField>
|
|
|
|
# =============================================
|
|
# RESSOURCE MANAGÉE #2 (avec référence)
|
|
# =============================================
|
|
- name: <related-resource>
|
|
base:
|
|
apiVersion: <provider>.aws.upbound.io/v1beta1
|
|
kind: <RelatedResourceKind>
|
|
spec:
|
|
forProvider:
|
|
# Référence vers une autre ressource
|
|
<parent>Ref:
|
|
name: ""
|
|
providerConfigRef:
|
|
name: aws-provider
|
|
|
|
patches:
|
|
# Patch la référence
|
|
- type: FromCompositeFieldPath
|
|
fromFieldPath: spec.parameters.<paramName>
|
|
toFieldPath: spec.forProvider.<parent>Ref.name
|
|
|
|
--- |