{{- range $index, $machineClass := .Values.machineClasses }}
---
apiVersion: v1
kind: Secret
metadata:
  name: {{ $machineClass.name }}
  namespace: {{ $.Release.Namespace }}
{{- if $machineClass.resourceLabels }}
  labels:
{{ toYaml $machineClass.resourceLabels | indent 4 }}
{{- end }}
type: Opaque
data:
  userData: {{ $machineClass.secret.cloudConfig | b64enc }}
  serviceAccountJSON: {{ $machineClass.secret.serviceAccountJSON | b64enc }}
---
apiVersion: machine.sapcloud.io/v1alpha1
kind: GCPMachineClass
metadata:
  name: {{ $machineClass.name }}
  namespace: {{ $.Release.Namespace }}
spec:
  canIpForward: {{ $machineClass.canIpForward }}
  deletionProtection: {{ $machineClass.deletionProtection }}
  description: {{ $machineClass.description }}
  disks:
{{ toYaml $machineClass.disks | indent 2 }}
{{- if $machineClass.labels }}
  labels:
{{ toYaml $machineClass.labels | indent 4 }}
{{- end }}
  machineType: {{ $machineClass.machineType }}
{{- if $machineClass.metadata }}
  metadata:
{{ toYaml $machineClass.metadata | indent 2 }}
{{- end }}
  networkInterfaces:
{{ toYaml $machineClass.networkInterfaces | indent 2 }}
  scheduling:
    automaticRestart: {{ $machineClass.scheduling.automaticRestart }}
    onHostMaintenance: {{ $machineClass.scheduling.onHostMaintenance }}
    preemptible: {{ $machineClass.scheduling.preemptible }}
  secretRef:
    name: {{ $machineClass.name }}
    namespace: {{ $.Release.Namespace }}
  serviceAccounts:
{{ toYaml $machineClass.serviceAccounts | indent 2 }}
{{- if $machineClass.tags }}
  tags:
{{ toYaml $machineClass.tags | indent 2 }}
{{- end }}
  region: {{ $machineClass.region }}
  zone: {{ $machineClass.zone }}
{{- end }}
