Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
8 changes: 4 additions & 4 deletions apis/mariadb/composition.yaml → apis/mysql/composition.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
apiVersion: apiextensions.crossplane.io/v1
kind: Composition
metadata:
name: xmariadbinstances.azure.platform.upbound.io
name: xmysqlinstances.azure.platform.upbound.io
labels:
dbengine: mariadb
dbengine: mysql
provider: azure
spec:
compositeTypeRef:
Expand All @@ -12,8 +12,8 @@ spec:
mode: Pipeline
pipeline:
- functionRef:
name: upbound-configuration-azure-databasemariadb
step: mariadb
name: upbound-configuration-azure-databasemysql
step: mysql
- functionRef:
name: crossplane-contrib-function-auto-ready
step: crossplane-contrib-function-auto-ready
19 changes: 5 additions & 14 deletions examples/mariadb-xr.yaml → examples/mysql-xr.yaml
Original file line number Diff line number Diff line change
@@ -1,31 +1,22 @@
apiVersion: azure.platform.upbound.io/v1alpha1
kind: XSQLInstance
metadata:
name: configuration-azure-database-db-mariadb
name: configuration-azure-database-db-mysql
namespace: default
spec:
compositionSelector:
matchLabels:
dbengine: mariadb
dbengine: mysql
parameters:
region: westus
storageGB: 5 #Minimum value is 5
version: "10.3"
storageGB: 20 #Minimum value is 20
version: "8.0"
passwordSecretRef:
namespace: default
name: psqlsecret
key: password
networkRef:
id: configuration-azure-database #This field must match the XNetwork XR spec.parameters.id
writeConnectionSecretToRef:
name: configuration-azure-database-db-conn-mariadb
name: configuration-azure-database-db-conn-mysql
namespace: default
---
apiVersion: v1
data:
password: dXBiMHVuZHIwY2s1ITMxMzM3
kind: Secret
metadata:
name: psqlsecret
namespace: default
type: Opaque
7 changes: 7 additions & 0 deletions examples/network-xr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,10 @@ spec:
parameters:
id: configuration-azure-database
region: westus
addressRange: "10.0.0.0/16"
generalSubnetRange: "10.0.1.0/24"
databaseSubnets:
- addressRange: "10.0.2.0/24"
serviceType: "postgresql"
- addressRange: "10.0.3.0/24"
serviceType: "mysql"
11 changes: 1 addition & 10 deletions examples/postgres-xr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ spec:
dbengine: postgres
parameters:
region: westus
storageGB: 5 #Minimum value is 5
storageGB: 32 #Minimum value is 32
version: "11"
passwordSecretRef:
namespace: default
Expand All @@ -20,12 +20,3 @@ spec:
writeConnectionSecretToRef:
name: configuration-azure-database-db-conn-postgresql
namespace: default
---
apiVersion: v1
data:
password: dXBiMHVuZHIwY2s1ITMxMzM3
kind: Secret
metadata:
name: psqlsecret
namespace: default
type: Opaque
128 changes: 0 additions & 128 deletions functions/mariadb/main.k

This file was deleted.

File renamed without changes.
File renamed without changes.
160 changes: 160 additions & 0 deletions functions/mysql/main.k
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
import models.io.upbound.azure.dbformysql.v1beta2 as dbformysqlv1beta2
import models.io.upbound.azure.dbformysql.v1beta1 as dbformysqlv1beta1
import models.io.upbound.azure.network.v1beta2 as networkv1beta2
import models.io.upbound.azure.network.v1beta1 as networkv1beta1
import models.io.upbound.platform.azure.v1alpha1 as platformazurev1alpha1

import base64

schema DefaultSpec:
deletionPolicy: str
providerConfigRef: {str:str}
forProvider: {str:str}

oxr = platformazurev1alpha1.XSQLInstance {**option("params").oxr}
ocds = option("params").ocds # observed composed resources

_metadata = lambda name: str -> any {
{
annotations = {"krm.kcl.dev/composition-resource-name" = name}
}
}

# spec defaults
_defaultSpec = DefaultSpec {
deletionPolicy = oxr.spec.parameters.deletionPolicy or "Delete"
providerConfigRef = {
name = oxr.spec.parameters.providerConfigName or "default"
}
forProvider = {}
}

assert 20 <= oxr.spec.parameters.storageGB <= 16384, "storageGB supported values for MySQL FlexibleServer are between 20 and 16384"

_items = [
networkv1beta2.PrivateDNSZone {
metadata = {
**_metadata("privatednszone")
name = "{}-mysql".format(oxr.spec.parameters.networkRef.id)
annotations = {
"crossplane.io/external-name" = "{}.mysql.database.azure.com".format(oxr.spec.parameters.networkRef.id)
}
labels = {
"azure.platform.upbound.io/network-id" = oxr.spec.parameters.networkRef.id
}
}
spec = {
**_defaultSpec
forProvider = {
resourceGroupNameSelector = {
matchLabels = {
"azure.platform.upbound.io/network-id" = oxr.spec.parameters.networkRef.id
}
}
}
}
}
networkv1beta1.PrivateDNSZoneVirtualNetworkLink {
metadata = {
**_metadata("privatednszonevnetlink")
name = "{}-mysql".format(oxr.spec.parameters.networkRef.id)
}
spec = {
**_defaultSpec
forProvider = {
resourceGroupNameSelector = {
matchLabels = {
"azure.platform.upbound.io/network-id" = oxr.spec.parameters.networkRef.id
}
}
privateDnsZoneNameSelector = {
matchLabels = {
"azure.platform.upbound.io/network-id" = oxr.spec.parameters.networkRef.id
}
}
virtualNetworkIdSelector = {
matchLabels = {
"azure.platform.upbound.io/network-id" = oxr.spec.parameters.networkRef.id
}
}
}
}
}
dbformysqlv1beta2.FlexibleServer {
metadata = {
**_metadata("mysqlserver")
name = "{}-mysql".format(oxr.spec.parameters.networkRef.id)
}
spec = {
**_defaultSpec
forProvider = {
administratorLogin = "mysqladmin"
skuName = "GP_Standard_D2ds_v4"
location = oxr.spec.parameters.region
administratorPasswordSecretRef = {
key = oxr.spec.parameters.passwordSecretRef.key
name = oxr.spec.parameters.passwordSecretRef.name
namespace = oxr.spec.parameters.passwordSecretRef.namespace
}
backupRetentionDays = 7
storage.sizeGb = oxr.spec.parameters.storageGB
resourceGroupNameSelector = {
matchLabels = {
"azure.platform.upbound.io/network-id" = oxr.spec.parameters.networkRef.id
}
}
delegatedSubnetIdSelector = {
matchLabels = {
"azure.platform.upbound.io/network-id" = oxr.spec.parameters.networkRef.id
"azure.platform.upbound.io/subnet-service-type" = "mysql"
}
}
privateDnsZoneIdSelector = {
matchLabels = {
"azure.platform.upbound.io/network-id" = oxr.spec.parameters.networkRef.id
}
}
}
writeConnectionSecretToRef = {
namespace = oxr.spec.writeConnectionSecretToRef.namespace
name = "{}-mysql".format(oxr.metadata.uid)
}
}
}

dbformysqlv1beta1.FlexibleDatabase {
metadata = {
**_metadata("database")
name = "upbound"
}
spec = {
**_defaultSpec
forProvider = {
charset = "utf8mb4"
collation = "utf8mb4_unicode_ci"
serverNameSelector = {
matchControllerRef = True
}
resourceGroupNameSelector = {
matchLabels = {
"azure.platform.upbound.io/network-id" = oxr.spec.parameters.networkRef.id
}
}
}
}
}
{
apiVersion: "meta.krm.kcl.dev/v1alpha1"
kind: "CompositeConnectionDetails"
if "mysqlserver" in ocds:
data: {
username = ocds["mysqlserver"].ConnectionDetails.username
password = ocds["mysqlserver"].ConnectionDetails.password
host = base64.encode(ocds["mysqlserver"].Resource?.status?.atProvider?.fqdn)
}
else:
data: {}
}
]

items = _items
File renamed without changes.
Loading
Loading