* scheme update
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
# =============================================================================
|
||||
# EXEMPLE D'UTILISATION
|
||||
# Crée une instance de la ressource composite
|
||||
# =============================================================================
|
||||
apiVersion: mathod.io/v1alpha1
|
||||
kind: X<ResourceName>
|
||||
metadata:
|
||||
name: <instance-name>
|
||||
namespace: default
|
||||
spec:
|
||||
parameters:
|
||||
<paramName>: <value>
|
||||
<boolParam>: true
|
||||
<intParam>: 200
|
||||
|
||||
crossplane:
|
||||
compositionRef:
|
||||
name: <resource>.<provider>.mathod.io
|
||||
@@ -0,0 +1,137 @@
|
||||
# =============================================================================
|
||||
# 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
|
||||
|
||||
---
|
||||
@@ -0,0 +1,98 @@
|
||||
# =============================================================================
|
||||
# XRD (Composite Resource Definition)
|
||||
# Définit le schéma de ton API personnalisée
|
||||
# =============================================================================
|
||||
apiVersion: apiextensions.crossplane.io/v2
|
||||
kind: CompositeResourceDefinition
|
||||
metadata:
|
||||
# Format: x<pluriel>.<group>
|
||||
# Exemple: xdatabases.mathod.io, xnetworks.mathod.io
|
||||
name: x<RESOURCE_PLURAL>s.mathod.io
|
||||
spec:
|
||||
scope: Namespaced
|
||||
|
||||
# Le groupe de ton API (doit matcher le suffix du name)
|
||||
group: mathod.io
|
||||
|
||||
names:
|
||||
# Nom au singulier (PascalCase) - Commence par X
|
||||
kind: X<ResourceName>
|
||||
# Nom au pluriel (lowercase)
|
||||
plural: x<resource_name>s
|
||||
|
||||
versions:
|
||||
- name: v1alpha1
|
||||
served: true
|
||||
referenceable: true
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
type: object
|
||||
properties:
|
||||
spec:
|
||||
type: object
|
||||
properties:
|
||||
parameters:
|
||||
type: object
|
||||
properties:
|
||||
# ========================================
|
||||
# Paramètres string
|
||||
# ========================================
|
||||
<paramName>:
|
||||
type: string
|
||||
description: "<Description du paramètre>"
|
||||
default: "<valeur_par_defaut>"
|
||||
|
||||
# ========================================
|
||||
# Paramètres boolean
|
||||
# ========================================
|
||||
<boolParam>:
|
||||
type: boolean
|
||||
description: "<Description du paramètre>"
|
||||
default: false
|
||||
|
||||
# ========================================
|
||||
# Paramètres integer
|
||||
# ========================================
|
||||
<intParam>:
|
||||
type: integer
|
||||
description: "<Description du paramètre>"
|
||||
default: 100
|
||||
|
||||
# ========================================
|
||||
# Paramètres array
|
||||
# ========================================
|
||||
<arrayParam>:
|
||||
type: array
|
||||
description: "<Description du paramètre>"
|
||||
items:
|
||||
type: string
|
||||
default: []
|
||||
|
||||
# ========================================
|
||||
# Paramètres object
|
||||
# ========================================
|
||||
<objectParam>:
|
||||
type: object
|
||||
description: "<Description du paramètre>"
|
||||
properties:
|
||||
<subField>:
|
||||
type: string
|
||||
|
||||
# Paramètres obligatoires
|
||||
required:
|
||||
- <paramName>
|
||||
|
||||
required:
|
||||
- parameters
|
||||
|
||||
# ========================================
|
||||
# Status - Informations retournées
|
||||
# ========================================
|
||||
status:
|
||||
type: object
|
||||
properties:
|
||||
<outputField>:
|
||||
type: string
|
||||
description: "<Description de la sortie>"
|
||||
|
||||
---
|
||||
Reference in New Issue
Block a user