From e3816d89480da54d717a1677afbb9a6a8b1f7fdc Mon Sep 17 00:00:00 2001 From: Mathod Date: Sun, 30 Nov 2025 01:31:03 +0100 Subject: [PATCH] * scheme update --- .../acm/certaws-composition.yaml | 0 .../resources/{objects => }/acm/certaws.yaml | 0 .../{objects => }/ec2/imported-ec2.yaml | 0 .../resources/{objects => }/ec2/test.yaml | 0 .../resources/{objects => }/iam/user.yaml | 0 .../resources/{objects => }/iam/user2.yaml | 0 .../{objects => }/organization/README.md | 0 .../{objects => }/organization/accounts.yaml | 0 .../{objects => }/organization/namespace.yaml | 0 .../organization/oragnization.yaml | 0 .../organization/organizational-unites.yaml | 0 .../organization/policy-attachments.yaml | 0 .../organization/scp-deny-leave-org.yaml | 0 .../organization/scp-restrict-regions.yaml | 0 .../{objects => }/organization/secret.yaml | 0 .../resources/{objects => }/rds/README.md | 0 .../{objects => }/rds/composition.yaml.stop | 0 .../{objects => }/rds/definition.yaml.stop | 0 .../rds/managedResources.yaml.stop | 0 .../s3/compositions/composition.yaml | 0 .../resources/s3/compositions/definition.yaml | 54 +++++++ .../s3/compositions/objectstorage.yaml | 0 .../s3 => s3/objects}/bucket-generate.yaml | 0 .../{objects/s3 => s3/objects}/bucket.yaml | 0 .../template/composite-resources.yaml | 18 +++ .../resources/template/composition.yaml | 137 ++++++++++++++++++ .../resources/template/definition.yaml | 98 +++++++++++++ 27 files changed, 307 insertions(+) rename providers/provider-family-aws/resources/{objects => }/acm/certaws-composition.yaml (100%) rename providers/provider-family-aws/resources/{objects => }/acm/certaws.yaml (100%) rename providers/provider-family-aws/resources/{objects => }/ec2/imported-ec2.yaml (100%) rename providers/provider-family-aws/resources/{objects => }/ec2/test.yaml (100%) rename providers/provider-family-aws/resources/{objects => }/iam/user.yaml (100%) rename providers/provider-family-aws/resources/{objects => }/iam/user2.yaml (100%) rename providers/provider-family-aws/resources/{objects => }/organization/README.md (100%) rename providers/provider-family-aws/resources/{objects => }/organization/accounts.yaml (100%) rename providers/provider-family-aws/resources/{objects => }/organization/namespace.yaml (100%) rename providers/provider-family-aws/resources/{objects => }/organization/oragnization.yaml (100%) rename providers/provider-family-aws/resources/{objects => }/organization/organizational-unites.yaml (100%) rename providers/provider-family-aws/resources/{objects => }/organization/policy-attachments.yaml (100%) rename providers/provider-family-aws/resources/{objects => }/organization/scp-deny-leave-org.yaml (100%) rename providers/provider-family-aws/resources/{objects => }/organization/scp-restrict-regions.yaml (100%) rename providers/provider-family-aws/resources/{objects => }/organization/secret.yaml (100%) rename providers/provider-family-aws/resources/{objects => }/rds/README.md (100%) rename providers/provider-family-aws/resources/{objects => }/rds/composition.yaml.stop (100%) rename providers/provider-family-aws/resources/{objects => }/rds/definition.yaml.stop (100%) rename providers/provider-family-aws/resources/{objects => }/rds/managedResources.yaml.stop (100%) create mode 100644 providers/provider-family-aws/resources/s3/compositions/composition.yaml create mode 100644 providers/provider-family-aws/resources/s3/compositions/definition.yaml create mode 100644 providers/provider-family-aws/resources/s3/compositions/objectstorage.yaml rename providers/provider-family-aws/resources/{objects/s3 => s3/objects}/bucket-generate.yaml (100%) rename providers/provider-family-aws/resources/{objects/s3 => s3/objects}/bucket.yaml (100%) create mode 100644 providers/provider-family-aws/resources/template/composite-resources.yaml create mode 100644 providers/provider-family-aws/resources/template/composition.yaml create mode 100644 providers/provider-family-aws/resources/template/definition.yaml diff --git a/providers/provider-family-aws/resources/objects/acm/certaws-composition.yaml b/providers/provider-family-aws/resources/acm/certaws-composition.yaml similarity index 100% rename from providers/provider-family-aws/resources/objects/acm/certaws-composition.yaml rename to providers/provider-family-aws/resources/acm/certaws-composition.yaml diff --git a/providers/provider-family-aws/resources/objects/acm/certaws.yaml b/providers/provider-family-aws/resources/acm/certaws.yaml similarity index 100% rename from providers/provider-family-aws/resources/objects/acm/certaws.yaml rename to providers/provider-family-aws/resources/acm/certaws.yaml diff --git a/providers/provider-family-aws/resources/objects/ec2/imported-ec2.yaml b/providers/provider-family-aws/resources/ec2/imported-ec2.yaml similarity index 100% rename from providers/provider-family-aws/resources/objects/ec2/imported-ec2.yaml rename to providers/provider-family-aws/resources/ec2/imported-ec2.yaml diff --git a/providers/provider-family-aws/resources/objects/ec2/test.yaml b/providers/provider-family-aws/resources/ec2/test.yaml similarity index 100% rename from providers/provider-family-aws/resources/objects/ec2/test.yaml rename to providers/provider-family-aws/resources/ec2/test.yaml diff --git a/providers/provider-family-aws/resources/objects/iam/user.yaml b/providers/provider-family-aws/resources/iam/user.yaml similarity index 100% rename from providers/provider-family-aws/resources/objects/iam/user.yaml rename to providers/provider-family-aws/resources/iam/user.yaml diff --git a/providers/provider-family-aws/resources/objects/iam/user2.yaml b/providers/provider-family-aws/resources/iam/user2.yaml similarity index 100% rename from providers/provider-family-aws/resources/objects/iam/user2.yaml rename to providers/provider-family-aws/resources/iam/user2.yaml diff --git a/providers/provider-family-aws/resources/objects/organization/README.md b/providers/provider-family-aws/resources/organization/README.md similarity index 100% rename from providers/provider-family-aws/resources/objects/organization/README.md rename to providers/provider-family-aws/resources/organization/README.md diff --git a/providers/provider-family-aws/resources/objects/organization/accounts.yaml b/providers/provider-family-aws/resources/organization/accounts.yaml similarity index 100% rename from providers/provider-family-aws/resources/objects/organization/accounts.yaml rename to providers/provider-family-aws/resources/organization/accounts.yaml diff --git a/providers/provider-family-aws/resources/objects/organization/namespace.yaml b/providers/provider-family-aws/resources/organization/namespace.yaml similarity index 100% rename from providers/provider-family-aws/resources/objects/organization/namespace.yaml rename to providers/provider-family-aws/resources/organization/namespace.yaml diff --git a/providers/provider-family-aws/resources/objects/organization/oragnization.yaml b/providers/provider-family-aws/resources/organization/oragnization.yaml similarity index 100% rename from providers/provider-family-aws/resources/objects/organization/oragnization.yaml rename to providers/provider-family-aws/resources/organization/oragnization.yaml diff --git a/providers/provider-family-aws/resources/objects/organization/organizational-unites.yaml b/providers/provider-family-aws/resources/organization/organizational-unites.yaml similarity index 100% rename from providers/provider-family-aws/resources/objects/organization/organizational-unites.yaml rename to providers/provider-family-aws/resources/organization/organizational-unites.yaml diff --git a/providers/provider-family-aws/resources/objects/organization/policy-attachments.yaml b/providers/provider-family-aws/resources/organization/policy-attachments.yaml similarity index 100% rename from providers/provider-family-aws/resources/objects/organization/policy-attachments.yaml rename to providers/provider-family-aws/resources/organization/policy-attachments.yaml diff --git a/providers/provider-family-aws/resources/objects/organization/scp-deny-leave-org.yaml b/providers/provider-family-aws/resources/organization/scp-deny-leave-org.yaml similarity index 100% rename from providers/provider-family-aws/resources/objects/organization/scp-deny-leave-org.yaml rename to providers/provider-family-aws/resources/organization/scp-deny-leave-org.yaml diff --git a/providers/provider-family-aws/resources/objects/organization/scp-restrict-regions.yaml b/providers/provider-family-aws/resources/organization/scp-restrict-regions.yaml similarity index 100% rename from providers/provider-family-aws/resources/objects/organization/scp-restrict-regions.yaml rename to providers/provider-family-aws/resources/organization/scp-restrict-regions.yaml diff --git a/providers/provider-family-aws/resources/objects/organization/secret.yaml b/providers/provider-family-aws/resources/organization/secret.yaml similarity index 100% rename from providers/provider-family-aws/resources/objects/organization/secret.yaml rename to providers/provider-family-aws/resources/organization/secret.yaml diff --git a/providers/provider-family-aws/resources/objects/rds/README.md b/providers/provider-family-aws/resources/rds/README.md similarity index 100% rename from providers/provider-family-aws/resources/objects/rds/README.md rename to providers/provider-family-aws/resources/rds/README.md diff --git a/providers/provider-family-aws/resources/objects/rds/composition.yaml.stop b/providers/provider-family-aws/resources/rds/composition.yaml.stop similarity index 100% rename from providers/provider-family-aws/resources/objects/rds/composition.yaml.stop rename to providers/provider-family-aws/resources/rds/composition.yaml.stop diff --git a/providers/provider-family-aws/resources/objects/rds/definition.yaml.stop b/providers/provider-family-aws/resources/rds/definition.yaml.stop similarity index 100% rename from providers/provider-family-aws/resources/objects/rds/definition.yaml.stop rename to providers/provider-family-aws/resources/rds/definition.yaml.stop diff --git a/providers/provider-family-aws/resources/objects/rds/managedResources.yaml.stop b/providers/provider-family-aws/resources/rds/managedResources.yaml.stop similarity index 100% rename from providers/provider-family-aws/resources/objects/rds/managedResources.yaml.stop rename to providers/provider-family-aws/resources/rds/managedResources.yaml.stop diff --git a/providers/provider-family-aws/resources/s3/compositions/composition.yaml b/providers/provider-family-aws/resources/s3/compositions/composition.yaml new file mode 100644 index 0000000..e69de29 diff --git a/providers/provider-family-aws/resources/s3/compositions/definition.yaml b/providers/provider-family-aws/resources/s3/compositions/definition.yaml new file mode 100644 index 0000000..efcaacb --- /dev/null +++ b/providers/provider-family-aws/resources/s3/compositions/definition.yaml @@ -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 \ No newline at end of file diff --git a/providers/provider-family-aws/resources/s3/compositions/objectstorage.yaml b/providers/provider-family-aws/resources/s3/compositions/objectstorage.yaml new file mode 100644 index 0000000..e69de29 diff --git a/providers/provider-family-aws/resources/objects/s3/bucket-generate.yaml b/providers/provider-family-aws/resources/s3/objects/bucket-generate.yaml similarity index 100% rename from providers/provider-family-aws/resources/objects/s3/bucket-generate.yaml rename to providers/provider-family-aws/resources/s3/objects/bucket-generate.yaml diff --git a/providers/provider-family-aws/resources/objects/s3/bucket.yaml b/providers/provider-family-aws/resources/s3/objects/bucket.yaml similarity index 100% rename from providers/provider-family-aws/resources/objects/s3/bucket.yaml rename to providers/provider-family-aws/resources/s3/objects/bucket.yaml diff --git a/providers/provider-family-aws/resources/template/composite-resources.yaml b/providers/provider-family-aws/resources/template/composite-resources.yaml new file mode 100644 index 0000000..08561c4 --- /dev/null +++ b/providers/provider-family-aws/resources/template/composite-resources.yaml @@ -0,0 +1,18 @@ +# ============================================================================= +# EXEMPLE D'UTILISATION +# Crée une instance de la ressource composite +# ============================================================================= +apiVersion: mathod.io/v1alpha1 +kind: X +metadata: + name: + namespace: default +spec: + parameters: + : + : true + : 200 + + crossplane: + compositionRef: + name: ..mathod.io \ No newline at end of file diff --git a/providers/provider-family-aws/resources/template/composition.yaml b/providers/provider-family-aws/resources/template/composition.yaml new file mode 100644 index 0000000..221d42c --- /dev/null +++ b/providers/provider-family-aws/resources/template/composition.yaml @@ -0,0 +1,137 @@ +# ============================================================================= +# COMPOSITION +# Configure comment créer les ressources réelles +# ============================================================================= +apiVersion: apiextensions.crossplane.io/v1 +kind: Composition +metadata: + # Format: .. + # Exemple: database.aws.mathod.io, network.gcp.mathod.io + name: ..mathod.io + labels: + provider: + type: +spec: + # Référence vers le XRD + compositeTypeRef: + apiVersion: mathod.io/v1alpha1 + kind: X + + # 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: + base: + # API de la ressource (provider specific) + apiVersion: .aws.upbound.io/v1beta1 + kind: + spec: + forProvider: + # Configuration de base + : + + # Référence au ProviderConfig + providerConfigRef: + name: aws-provider + + patches: + # ------------------------------------- + # FromCompositeFieldPath + # Copie depuis le XR vers la ressource + # ------------------------------------- + - type: FromCompositeFieldPath + fromFieldPath: spec.parameters. + toFieldPath: spec.forProvider. + + # ------------------------------------- + # ToCompositeFieldPath + # Copie depuis la ressource vers le XR + # ------------------------------------- + - type: ToCompositeFieldPath + fromFieldPath: status.atProvider. + toFieldPath: status. + + # ------------------------------------- + # Transform - Map + # Transforme une valeur avec un mapping + # ------------------------------------- + - type: FromCompositeFieldPath + fromFieldPath: spec.parameters. + toFieldPath: spec.forProvider. + transforms: + - type: map + map: + "true": Enabled + "false": Disabled + + # ------------------------------------- + # Transform - String + # Formate une string + # ------------------------------------- + - type: FromCompositeFieldPath + fromFieldPath: spec.parameters. + toFieldPath: spec.forProvider. + transforms: + - type: string + string: + fmt: "prefix-%s-suffix" + + # ------------------------------------- + # Transform - Math + # Opération mathématique + # ------------------------------------- + - type: FromCompositeFieldPath + fromFieldPath: spec.parameters. + toFieldPath: spec.forProvider. + transforms: + - type: math + math: + multiply: 2 + + # ------------------------------------- + # CombineFromComposite + # Combine plusieurs champs + # ------------------------------------- + - type: CombineFromComposite + combine: + variables: + - fromFieldPath: spec.parameters. + - fromFieldPath: spec.parameters. + strategy: string + string: + fmt: "%s-%s" + toFieldPath: spec.forProvider. + + # ============================================= + # RESSOURCE MANAGÉE #2 (avec référence) + # ============================================= + - name: + base: + apiVersion: .aws.upbound.io/v1beta1 + kind: + spec: + forProvider: + # Référence vers une autre ressource + Ref: + name: "" + providerConfigRef: + name: aws-provider + + patches: + # Patch la référence + - type: FromCompositeFieldPath + fromFieldPath: spec.parameters. + toFieldPath: spec.forProvider.Ref.name + +--- \ No newline at end of file diff --git a/providers/provider-family-aws/resources/template/definition.yaml b/providers/provider-family-aws/resources/template/definition.yaml new file mode 100644 index 0000000..5b260af --- /dev/null +++ b/providers/provider-family-aws/resources/template/definition.yaml @@ -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. + # Exemple: xdatabases.mathod.io, xnetworks.mathod.io + name: xs.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 + # Nom au pluriel (lowercase) + plural: xs + + versions: + - name: v1alpha1 + served: true + referenceable: true + schema: + openAPIV3Schema: + type: object + properties: + spec: + type: object + properties: + parameters: + type: object + properties: + # ======================================== + # Paramètres string + # ======================================== + : + type: string + description: "" + default: "" + + # ======================================== + # Paramètres boolean + # ======================================== + : + type: boolean + description: "" + default: false + + # ======================================== + # Paramètres integer + # ======================================== + : + type: integer + description: "" + default: 100 + + # ======================================== + # Paramètres array + # ======================================== + : + type: array + description: "" + items: + type: string + default: [] + + # ======================================== + # Paramètres object + # ======================================== + : + type: object + description: "" + properties: + : + type: string + + # Paramètres obligatoires + required: + - + + required: + - parameters + + # ======================================== + # Status - Informations retournées + # ======================================== + status: + type: object + properties: + : + type: string + description: "" + +--- \ No newline at end of file