* scheme update
This commit is contained in:
@@ -0,0 +1,54 @@
|
|||||||
|
apiVersion: apiextensions.crossplane.io/v2
|
||||||
|
kind: CompositeResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: xobjectstorages.mathod.io #(1)!
|
||||||
|
spec:
|
||||||
|
scope: Namespaced
|
||||||
|
group: mathod.io #(2)!
|
||||||
|
names:
|
||||||
|
kind: XObjectStorage
|
||||||
|
plural: xobjectstorages
|
||||||
|
versions:
|
||||||
|
- name: v1alpha1
|
||||||
|
served: true
|
||||||
|
referenceable: true
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
spec:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
parameters:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
bucketName:
|
||||||
|
type: string
|
||||||
|
description: "Nom du bucket S3"
|
||||||
|
region:
|
||||||
|
type: string
|
||||||
|
description: "Région AWS"
|
||||||
|
default: "eu-west-1"
|
||||||
|
versioning:
|
||||||
|
type: boolean
|
||||||
|
description: "Activer le versioning"
|
||||||
|
default: false
|
||||||
|
encryption:
|
||||||
|
type: boolean
|
||||||
|
description: "Activer le chiffrement"
|
||||||
|
default: true
|
||||||
|
publicAccess:
|
||||||
|
type: boolean
|
||||||
|
description: "Autoriser l'accès public"
|
||||||
|
default: false
|
||||||
|
required:
|
||||||
|
- bucketName
|
||||||
|
required:
|
||||||
|
- parameters
|
||||||
|
status:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
bucketArn:
|
||||||
|
type: string
|
||||||
|
bucketDomain:
|
||||||
|
type: string
|
||||||
@@ -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