package kube

kubernetes services: {
	for k, x in service {
		"\(k)": x.kubernetes & {
			apiVersion: "v1"
			kind:       "Service"

			metadata name:   x.name
			metadata labels: x.label
			spec selector:   x.label

			spec ports: [ p for p in x.port ] // convert struct to list
		}
	}
	// Note that we cannot write
	//   kubernetes services "\(k)": {} for k, x in service
	// "service" is also a field comprehension and the spec prohibits one field
	// comprehension referencing another within the same struct.
	// In general it is good practice to define a comprehension in the smallest
	// struct possible.
}

// TODO: with type conversions and types, if implemented:
// deployments :: k8s.Deployment
// deployments: _k8sSpec(X: x) for x in deployment
// This would look nicer and would allow for superior type checking.

kubernetes deployments: {
	for k, x in deployment if x.kind == "deployment" {
		"\(k)": (_k8sSpec & {X: x}).X.kubernetes & {
			apiVersion: "extensions/v1beta1"
			kind:       "Deployment"
			spec replicas: x.replicas
		}
	}
}

kubernetes statefulSets: {
	for k, x in deployment if x.kind == "stateful" {
		"\(k)": (_k8sSpec & {X: x}).X.kubernetes & {
			apiVersion: "apps/v1beta1"
			kind:       "StatefulSet"
			spec replicas: x.replicas
		}
	}
}

kubernetes daemonSets: {
	for k, x in deployment if x.kind == "daemon" {
		"\(k)": (_k8sSpec & {X: x}).X.kubernetes & {
			apiVersion: "extensions/v1beta1"
			kind:       "DaemonSet"
		}
	}
}

kubernetes configMaps: {
	for k, v in configMap {
		"\(k)": {
			apiVersion: "v1"
			kind:       "ConfigMap"

			metadata name: k
			metadata labels component: _base.label.component
			data: v
		}
	}
}

// _k8sSpec injects Kubernetes definitions into a deployment
// Unify the deployment at X and read out kubernetes to obtain
// the conversion.
// TODO: use alias
_k8sSpec X kubernetes: {
	metadata name: X.name
	metadata labels component: X.label.component

	spec template: {
		metadata labels: X.label

		spec containers: [{
			name:  X.name
			image: X.image
			args:  X.args
			if len(X.envSpec) > 0 {
				env: [ {name: k} & v for k, v in X.envSpec ]
			}

			ports: [ {
				name:          k
				containerPort: p
			} for k, p in X.expose.port & X.port ]
		}]
	}

	// Volumes
	spec template spec: {
		if len(X.volume) > 0 {
			volumes: [
					v.kubernetes & {name: v.name} for v in X.volume
			]
		}

		containers: [{
			// TODO: using conversions this would look like:
			// volumeMounts: [ k8s.VolumeMount(v) for v in d.volume ]
			if len(X.volume) > 0 {
				volumeMounts: [ {
					name:      v.name
					mountPath: v.mountPath
					if v.subPath != null | true {
						subPath: v.subPath
					}
					if v.readOnly {
						readOnly: v.readOnly
					}
				} for v in X.volume
				]
			}
		}]
	}
}
