Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
32aa334
Chore: Add initial Helm chart and CI configuration for BTP Cloud Foun…
ricogu Jun 11, 2025
ddf3dfb
Chore: Rename service-key.yaml to service-credential-binding.yaml and…
ricogu Jun 11, 2025
25aeda2
Chore: Update references in values.yaml to reflect service credential…
ricogu Jun 11, 2025
cb50cad
Chore: Update references in values.yaml to reflect service credential…
ricogu Jun 11, 2025
a90276b
chore(ci): update helm/charts/crossplane-provider-configs/Chart.yaml.…
ricogu Jun 11, 2025
02a4a39
chore(ci): update Helm Chart helm/charts/crossplane-provider-btp-cf/R…
ricogu Jun 11, 2025
30e9d0e
chore(ci): update Helm Chart helm/charts/crossplane-provider-configs/…
ricogu Jun 11, 2025
3e19c12
Chore: Remove writeConnectionSecretToRef references from service-cred…
ricogu Jun 11, 2025
3030e39
Merge remote-tracking branch 'origin/main'
ricogu Jun 11, 2025
b4542cd
chore(ci): update Helm Chart helm/charts/crossplane-provider-btp-cf/R…
ricogu Jun 11, 2025
6543e96
Chore: Bump app version to 0.3.0 and update Chart version to 0.1.0
ricogu Jun 11, 2025
16e9cd6
Merge remote-tracking branch 'origin/main'
ricogu Jun 11, 2025
952895f
chore(ci): update Helm Chart helm/charts/crossplane-provider-btp-cf/R…
ricogu Jun 11, 2025
2e21103
chore(ci): update Helm Chart helm/charts/crossplane-provider-configs/…
ricogu Jun 11, 2025
c0a5b98
chore: fix formatting in cloudfoundry-btp-orchestrate-cloud-sap.yaml
ricogu Jun 12, 2025
c2c4681
Merge remote-tracking branch 'origin/main'
ricogu Jun 12, 2025
f90ac47
Merge branch 'main' into main
sk31337 Jun 12, 2025
5b088a7
chore: update docker image reference and clean up comments in values.…
ricogu Jun 12, 2025
c164d8e
Merge remote-tracking branch 'origin/main'
ricogu Jun 12, 2025
add4aff
Merge branch 'main' into main
sk31337 Jun 12, 2025
a6fc339
chore: rename configuration and template files for crossplane provider
ricogu Jun 16, 2025
4beac81
Merge remote-tracking branch 'origin/main'
ricogu Jun 16, 2025
a0d1b5e
chore: rename chart name for crossplane provider to reflect cloud fou…
ricogu Jun 16, 2025
a36bdd2
chore(ci): update Helm Chart helm/charts/crossplane-provider-cloudfou…
ricogu Jun 16, 2025
e08d7e2
chore: update helm chart variables to references open sourced provider
sk31337 Jun 16, 2025
695e5f2
chore(ci): update Helm Chart helm/charts/crossplane-provider-cloudfou…
sk31337 Jun 16, 2025
0a1eb2d
chore(ci): update Helm Chart helm/charts/crossplane-provider-configs/…
sk31337 Jun 16, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions helm/charts/crossplane-provider-cloudfoundry/.ci.config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# pipeline feature flags obsolete (Bash Scripts)

jfrog.sh:
enabled: true


# pipeline feature flags
yamllint:
enable: true
helm-docs:
enable: true
helm-chart-linting:
enable: true
helm-chart-validation:
enable: true
helm-chart-version-bump:
enable: true
helm-chart-dependency-update:
enable: true
k8s-manifest-templating:
enable: false
11 changes: 11 additions & 0 deletions helm/charts/crossplane-provider-cloudfoundry/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
apiVersion: v2
appVersion: 0.3.0
description: A Helm Chart to template crossplane manifests to manage BTP Cloud Foundry
resources on BTP.
icon: https://avatars.githubusercontent.com/u/45158470?s=48&v=4
name: crossplane-provider-cloudfoundry
sources:
- https://github.com/openmcp-project/blueprint-building-blocks
type: application
version: 0.1.0

31 changes: 31 additions & 0 deletions helm/charts/crossplane-provider-cloudfoundry/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@


# crossplane-provider-cloudfoundry

![Version: 0.1.0](https://img.shields.io/badge/Version-0.1.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.3.0](https://img.shields.io/badge/AppVersion-0.3.0-informational?style=flat-square)

A Helm Chart to template crossplane manifests to manage BTP Cloud Foundry resources on BTP.

## Source Code

* <https://github.com/openmcp-project/blueprint-building-blocks>

## Values

| Key | Type | Default | Description |
|-----|------|---------|-------------|
| apps | list | object | `apps[].` orchestrate `kind: App` of BTP Cloud foundry. |
| orgMembers | list | `[{"cloudfoundryProviderConfigRefName":"","forProvider":[],"name":""}]` | `orgMembers[].` orchestrate `kind: OrgMembers` of BTP Cloud foundry. |
| organizations | list | `[{"cloudfoundryProviderConfigRefName":"","externalName":"","forProvider":[],"name":""}]` | `organizations[].` orchestrate `kind: Organization` of BTP Cloud foundry. |
| organizations[0].externalName | string | `""` | must match the actual name of the Cloud Foundry organization in BTP! |
| routes | list | `[{"cloudfoundryProviderConfigRefName":"","forProvider":[],"name":""}]` | `routes[].` orchestrate `kind: Route` of BTP Cloud foundry. |
| secrets[0].data | list | `[]` | *(optional)* [data](https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/secret-v1/) *(map[string][]byte)* Data contains the secret data. Each key must consist of alphanumeric characters, '-', '_' or '.'. The serialized form of the secret data is a base64 encoded string, representing the arbitrary (possibly non-string) data value here. Described in [here](https://tools.ietf.org/html/rfc4648#section-4) |
| secrets[0].name | string | `""` | defines k8s `metadata.name` value of `kind: Secret` |
| secrets[0].namespace | string | `""` | *(optional)* defines k8s [`metadata.namespace`](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/object-meta/#ObjectMeta) value of `kind: Secret` |
| secrets[0].stringData | list | `[]` | *(optional)* [stringData](https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/secret-v1/) *(map[string]string)* allows specifying non-binary secret data in string form. It is provided as a write-only input field for convenience. All keys and values are merged into the data field on write, overwriting any existing values. The stringData field is never output when reading from the API. |
| serviceCredentialsBindings | list | `[{"cloudfoundryProviderConfigRefName":"","forProvider":[],"name":""}]` | `serviceCredentialsBindings[].` orchestrate `kind: ServiceKey` of BTP Cloud foundry. |
| serviceInstances | list | `[{"cloudfoundryProviderConfigRefName":"","forProvider":[],"name":""}]` | `serviceInstances[].` orchestrate `kind: ServiceInstance` of BTP Cloud foundry. |
| spaceMembers | list | `[{"cloudfoundryProviderConfigRefName":"","forProvider":[],"name":""}]` | `spaceMembers[].` orchestrate `kind: SpaceMembers` of BTP Cloud foundry. |

----------------------------------------------
Autogenerated from chart metadata using [helm-docs v1.14.2](https://github.com/norwoodj/helm-docs/releases/v1.14.2)
Empty file.
17 changes: 17 additions & 0 deletions helm/charts/crossplane-provider-cloudfoundry/templates/app.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{{- range $item := .Values.apps }}
{{- if and ($item) (ne $item.name "") }}
---
apiVersion: cloudfoundry.crossplane.io/v1alpha1
kind: App
metadata:
name: {{required "A valid value is required! (.Values.apps[].name)" $item.name | lower }}
labels:
openmcp.cloud/blueprint-building-block: "{{ $.Chart.Name }}"
openmcp.cloud/blueprint-building-block-version: "{{ $.Chart.Version }}"
spec:
providerConfigRef:
name: {{required "A valid value is required! (.Values.apps[].cloudfoundryProviderConfigRefName)" $item.cloudfoundryProviderConfigRefName }}
forProvider:
{{- required "A valid value is required! (.Values.spaces[].forProvider)" $item.forProvider | toYaml | nindent 4 }}
{{- end }}
{{- end }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{{- range $item := .Values.orgMembers }}
{{- if and ($item) (ne $item.name "") }}
---
apiVersion: cloudfoundry.crossplane.io/v1alpha1
kind: OrgMembers
metadata:
name: {{required "A valid value is required! (.Values.orgMembers[].name)" $item.name | lower }}
labels:
openmcp.cloud/blueprint-building-block: "{{ $.Chart.Name }}"
openmcp.cloud/blueprint-building-block-version: "{{ $.Chart.Version }}"
spec:
providerConfigRef:
name: {{required "A valid value is required! (.Values.orgMembers[].cloudfoundryProviderConfigRefName)" $item.cloudfoundryProviderConfigRefName }}
forProvider:
{{- required "A valid value is required! (.Values.spaces[].forProvider)" $item.forProvider | toYaml | nindent 4 }}
{{- end }}
{{- end }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{{- range $item := .Values.organizations }}
{{- if and ($item) (ne $item.name "") }}
---
apiVersion: cloudfoundry.crossplane.io/v1alpha1
kind: Organization
metadata:
name: {{required "A valid value is required! (.Values.organizations[].name)" $item.name | lower }}
labels:
openmcp.cloud/blueprint-building-block: "{{ $.Chart.Name }}"
openmcp.cloud/blueprint-building-block-version: "{{ $.Chart.Version }}"
annotations:
crossplane.io/external-name: {{required "A valid value is required! (.Values.organizations[].externalName)" $item.externalName }}
spec:
providerConfigRef:
name: {{required "A valid value is required! (.Values.apps[].cloudfoundryProviderConfigRefName)" $item.cloudfoundryProviderConfigRefName }}
forProvider:
{{- required "A valid value is required! (.Values.spaces[].forProvider)" $item.forProvider | toYaml | nindent 4 }}
{{- end }}
{{- end }}
17 changes: 17 additions & 0 deletions helm/charts/crossplane-provider-cloudfoundry/templates/route.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{{- range $item := .Values.routes }}
{{- if and ($item) (ne $item.name "") }}
---
apiVersion: cloudfoundry.crossplane.io/v1alpha1
kind: Route
metadata:
name: {{required "A valid value is required! (.Values.routes[].name)" $item.name | lower }}
labels:
openmcp.cloud/blueprint-building-block: "{{ $.Chart.Name }}"
openmcp.cloud/blueprint-building-block-version: "{{ $.Chart.Version }}"
spec:
providerConfigRef:
name: {{required "A valid value is required! (.Values.routes[].cloudfoundryProviderConfigRefName)" $item.cloudfoundryProviderConfigRefName }}
forProvider:
{{- required "A valid value is required! (.Values.spaces[].forProvider)" $item.forProvider | toYaml | nindent 4 }}
{{- end }}
{{- end }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{{- range $item := .Values.secrets}}
{{- if and ($item) (ne $item.name "")}}
---
apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: {{required "A valid value is required! (.Values.secrets[].name)" $item.name | lower | quote}}
namespace: {{required "A valid value is required! (.Values.secrets[].namespace)" $item.namespace | lower | quote}}
labels:
openmcp.cloud/blueprint-building-block: "{{ $.Chart.Name }}"
openmcp.cloud/blueprint-building-block-version: "{{ $.Chart.Version }}"
{{- if $item.stringData}}
stringData:
{{- range $key, $value := $item.stringData }}
{{ $key }}: {{ $value | quote }}
{{- end }}
{{- end }}
{{- if $item.data}}
data:
{{- toYaml $item.data | nindent 4 }}
{{- end }}
{{- end }}
{{- end }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{{- range $item := .Values.serviceCredentialsBindings }}
{{- if and ($item) (ne $item.name "") }}
---
apiVersion: cloudfoundry.crossplane.io/v1alpha1
kind: ServiceCredentialBinding
metadata:
name: {{required "A valid value is required! (.Values.serviceKeys[].name)" $item.name | lower }}
labels:
openmcp.cloud/blueprint-building-block: "{{ $.Chart.Name }}"
openmcp.cloud/blueprint-building-block-version: "{{ $.Chart.Version }}"
spec:
providerConfigRef:
name: {{required "A valid value is required! (.Values.serviceKeys[].cloudfoundryProviderConfigRefName)" $item.cloudfoundryProviderConfigRefName }}
forProvider:
{{- required "A valid value is required! (.Values.spaces[].forProvider)" $item.forProvider | toYaml | nindent 4 }}
{{- end }}
{{- end }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{{- range $item := .Values.serviceInstances }}
{{- if and ($item) (ne $item.name "") }}
---
apiVersion: cloudfoundry.crossplane.io/v1alpha1
kind: ServiceInstance
metadata:
name: {{required "A valid value is required! (.Values.serviceInstances[].name)" $item.name | lower }}
labels:
openmcp.cloud/blueprint-building-block: "{{ $.Chart.Name }}"
openmcp.cloud/blueprint-building-block-version: "{{ $.Chart.Version }}"
spec:
providerConfigRef:
name: {{required "A valid value is required! (.Values.serviceInstances[].cloudfoundryProviderConfigRefName)" $item.cloudfoundryProviderConfigRefName }}
forProvider:
{{- required "A valid value is required! (.Values.spaces[].forProvider)" $item.forProvider | toYaml | nindent 4 }}
{{- end }}
{{- end }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{{- range $item := .Values.spaceMembers }}
{{- if and ($item) (ne $item.name "") }}
---
apiVersion: cloudfoundry.crossplane.io/v1alpha1
kind: SpaceMembers
metadata:
name: {{required "A valid value is required! (.Values.spaceMembers[].name)" $item.name | lower }}
labels:
openmcp.cloud/blueprint-building-block: "{{ $.Chart.Name }}"
openmcp.cloud/blueprint-building-block-version: "{{ $.Chart.Version }}"
spec:
providerConfigRef:
name: {{required "A valid value is required! (.Values.spaceMembers[].cloudfoundryProviderConfigRefName)" $item.cloudfoundryProviderConfigRefName }}
forProvider:
{{- toYaml $item.forProvider | nindent 4 }}
{{- end }}
{{- end }}
17 changes: 17 additions & 0 deletions helm/charts/crossplane-provider-cloudfoundry/templates/spaces.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{{- range $item := .Values.spaces }}
{{- if and ($item) (ne $item.name "") }}
---
apiVersion: cloudfoundry.crossplane.io/v1alpha1
kind: Space
metadata:
name: {{required "A valid value is required! (.Values.spaces[].name)" $item.name | lower }}
labels:
openmcp.cloud/blueprint-building-block: "{{ $.Chart.Name }}"
openmcp.cloud/blueprint-building-block-version: "{{ $.Chart.Version }}"
spec:
providerConfigRef:
name: {{required "A valid value is required! (.Values.spaces[].cloudfoundryProviderConfigRefName)" $item.cloudfoundryProviderConfigRefName }}
forProvider:
{{- required "A valid value is required! (.Values.spaces[].forProvider)" $item.forProvider | toYaml | nindent 4 }}
{{- end }}
{{- end }}
105 changes: 105 additions & 0 deletions helm/charts/crossplane-provider-cloudfoundry/values.ci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
---
########################################################################################################################
###! /!\ this file is only used in github pipeline to template a valid and NOT empty helm manifest! #####
########################################################################################################################
apps:
- cloudfoundryProviderConfigRefName: "cloudfoundryProviderConfigRefName"
name: "name"
forProvider:
name: my-app
dockerImage: hello-cf:latest
dockerCredentialsSecretRef:
name: registry-secret
namespace: crossplane-system
spaceRef:
name: my-space
routes:
- routeRef:
name: my-route
########################################################################################################################
routes:
- cloudfoundryProviderConfigRefName: "cloudfoundryProviderConfigRefName"
name: "name"
forProvider:
domain:
name: cfapps.eu10.hana.ondemand.com
hostname: my-app
path: /hello # must begin with a `/`
spaceRef:
name: my-space
policy:
resolve: Always
########################################################################################################################
serviceInstances:
- cloudfoundryProviderConfigRefName: "cloudfoundryProviderConfigRefName"
name: "name"
forProvider:
type: managed
name: my-destination
spaceRef:
name: my-space
servicePlan:
offering: destination
plan: lite
########################################################################################################################
serviceCredentialsBindings:
- cloudfoundryProviderConfigRefName: "cloudfoundryProviderConfigRefName"
name: "name"
forProvider:
name: my-service-key
serviceInstanceRef:
name: my-service-instance
connectionDetailsAsJSON: false
writeConnectionSecretToRef:
name: my-service-key-secret
namespace: default
########################################################################################################################
orgMembers:
- cloudfoundryProviderConfigRefName: "cloudfoundryProviderConfigRefName"
name: "name"
forProvider:
orgRef:
name: my-org
roleType: Managers
members:
- username: user1@sap.com
origin: sap.ids
- username: user2@sap.com
enforcementPolicy: Lax
########################################################################################################################
spaceMembers:
- cloudfoundryProviderConfigRefName: "cloudfoundryProviderConfigRefName"
name: "name"
forProvider:
enforcementPolicy: "enforcementPolicy"
members:
- origin: "origin"
username: "username"
roleType: "Developers"
space: "space"
spaceRef:
name: "name"
policy:
resolution: "resolution"
resolve: "Always"
spaceSelector:
matchControllerRef: true
matchLabels:
policy:
resolution: "resolution"
########################################################################################################################
organizations:
- cloudfoundryProviderConfigRefName: "cloudfoundryProviderConfigRefName"
name: "name"
externalName: "externalName"
forProvider:
id: "The external GUID of the org"
name: "The name of the Organization in Cloud Foundry"
########################################################################################################################
secrets:
- name: "name"
namespace: "namespace"
stringData:
foo: "bar"
#data: []
########################################################################################################################
Loading