From 4ee0a7d63ba9318c44f9f96c3903ea469a87987c Mon Sep 17 00:00:00 2001 From: Tristan Cacqueray Date: Dec 11 2020 13:52:46 +0000 Subject: Update oc-deploy expression to use a function This change improves the oc-deploy expression by re-using a deploySimple function. --- diff --git a/README.md b/README.md index 992be13..306d645 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,6 @@ podman run -it -v ./conf:/data:Z -p 127.0.0.1:8080:80 quay.io/software-factory/f ## Run on OpenShift ``` -dhall-to-yaml <<< ./oc-deploy.dhall > oc-deploy.yaml +dhall-to-yaml --documents <<< ./oc-deploy.dhall > oc-deploy.yaml oc apply -f ./oc-deploy.yaml ``` diff --git a/oc-deploy.dhall b/oc-deploy.dhall index 9f9ccb7..4d81008 100644 --- a/oc-deploy.dhall +++ b/oc-deploy.dhall @@ -1,157 +1,62 @@ --- examples/deploymentSimple.dhall - -let openshift = https://raw.githubusercontent.com/TristanCacqueray/dhall-openshift/master/package.dhall sha256:5d6efe2ed15b3e4e263bafce9752c45c671a42bbefd4d483e87d40d41d089640 - -let ocp = https://raw.githubusercontent.com/TristanCacqueray/dhall-openshift/master/typesUnion.dhall sha256:35cd4481c88a3a6b25078afcb807cd4264cf0889982c15046a5bbb8d86c047d4 - -let deployment = - openshift.Deployment::{ - , metadata = openshift.ObjectMeta::{ name = Some "fm-gateway" } - , spec = Some openshift.DeploymentSpec::{ - , selector = openshift.LabelSelector::{ - , matchLabels = Some (toMap { app = "fm-gateway" }) - } - , replicas = Some 1 - , template = openshift.PodTemplateSpec::{ - , metadata = openshift.ObjectMeta::{ name = Some "fm-gateway", labels = Some (toMap { app = "fm-gateway"}) } - , spec = Some openshift.PodSpec::{ - , volumes = Some - [ openshift.Volume::{ - , name = "fm-gateway-config" - , configMap = Some openshift.ConfigMapVolumeSource::{ - , name = Some "config-toml" - } - } - ] - , containers = - [ openshift.Container::{ - , name = "fm-gateway" - , image = Some "quay.io/software-factory/fm-gateway:latest" - , ports = Some - [ openshift.ContainerPort::{ containerPort = 8080 } ] - , volumeMounts = Some - [ openshift.VolumeMount::{ - , name = "fm-gateway-config" - , mountPath = "/data/" - } - ] - } - ] - } - } - } - } - -let service = - openshift.Service::{ - , metadata = openshift.ObjectMeta::{ name = Some "fm-gateway-service" } - , spec = Some openshift.ServiceSpec::{ - , selector = Some (toMap { app = "fm-gateway" }) - , ports = Some [ openshift.ServicePort::{ - , targetPort = Some (openshift.IntOrString.Int 8080) - , port = 80 - }] - } - } - -let route = openshift.Route::{ - , metadata = openshift.ObjectMeta::{ name = Some "fm-gateway" } - , spec = openshift.RouteSpec::{ - , host = "fm-gateway-rhos-org.apps.ocp.prod.psi.redhat.com" - , path = Some "/" - , port = Some openshift.RoutePort::{ targetPort = openshift.IntOrString.Int 8080} - , tls = Some openshift.TLSConfig::{ insecureEdgeTerminationPolicy = Some "Redirect", termination = "edge"} - , to = openshift.RouteTargetReference::{ - , kind = "Service" - , name = "fm-gateway-service" - , weight = 100 - } +-- https://softwarefactory-project.io/cgit/software-factory/sf-infra/plain/Infra/OpenShift/package.dhall sha256:81afaed59916e796e2ae78e9e7a34f40214a243c9b95a19c96e65e144bc9df7d +let OpenShift = + ~/src/softwarefactory-project.io/software-factory/sf-infra/Infra/OpenShift/package.dhall + +let toml = + '' + amqp_url = "amqps://fedora:@rabbitmq.fedoraproject.org/%2Fpublic_pubsub" + + [tls] + ca_cert = "/etc/fedora-messaging/cacert.pem" + keyfile = "/etc/fedora-messaging/fedora-key.pem" + certfile = "/etc/fedora-messaging/fedora-cert.pem" + + [client_properties] + app = "Fedora Messaging Zuul" + + [exchanges."amq.topic"] + type = "topic" + durable = true + auto_delete = false + arguments = {} + + [qos] + prefetch_size = 0 + prefetch_count = 25 + + [log_config] + version = 1 + disable_existing_loggers = true + + [log_config.formatters.simple] + format = "[%(levelname)-7s %(name)s] - %(message)s" + + [log_config.handlers.console] + class = "logging.StreamHandler" + formatter = "simple" + stream = "ext://sys.stdout" + + [log_config.root] + level = "DEBUG" + handlers = ["console"] + + [consumer_config] + # If true the payload will by written in a file but not send to webhook server url + send_to_file = false + verify_ssl = true + topic_prefixes_dest = [ + "org.fedoraproject.prod.pagure,https://softwarefactory-project.io/zuul/api/connection/src.fedoraproject.org/payload" + ] + exclude_projects = [] + stats_server_port = 8080 + '' + +in OpenShift.deploySimple + "fm-gateway" + "quay.io/software-factory/fm-gateway:latest" + 8080 + "fm-gateway-rhos-org.apps.ocp.prod.psi.redhat.com" + OpenShift.ConfigMap::{ + , metadata = OpenShift.ObjectMeta::{ name = Some "config-toml" } + , data = Some (toMap { `config.toml` = toml }) } - } -let toml = '' - amqp_url = "amqps://fedora:@rabbitmq.fedoraproject.org/%2Fpublic_pubsub" - - - [tls] - - ca_cert = "/etc/fedora-messaging/cacert.pem" - - keyfile = "/etc/fedora-messaging/fedora-key.pem" - - certfile = "/etc/fedora-messaging/fedora-cert.pem" - - - [client_properties] - - app = "Fedora Messaging Zuul" - - - [exchanges."amq.topic"] - - type = "topic" - - durable = true - - auto_delete = false - - arguments = {} - - - [qos] - - prefetch_size = 0 - - prefetch_count = 25 - - - [log_config] - - version = 1 - - disable_existing_loggers = true - - - [log_config.formatters.simple] - - format = "[%(levelname)-7s %(name)s] - %(message)s" - - - [log_config.handlers.console] - - class = "logging.StreamHandler" - - formatter = "simple" - - stream = "ext://sys.stdout" - - - [log_config.root] - - level = "DEBUG" - - handlers = ["console"] - - - [consumer_config] - - # If true the payload will by written in a file but not send to webhook server url - - send_to_file = false - - verify_ssl = true - - topic_prefixes_dest = [ - "org.fedoraproject.prod.pagure,https://softwarefactory-project.io/zuul/api/connection/src.fedoraproject.org/payload" - ] - - exclude_projects = [] - - stats_server_port = 8080 -'' - -let config = openshift.ConfigMap::{ - , metadata = openshift.ObjectMeta::{ name = Some "config-toml" } - , data = Some [{mapKey = "config.toml", mapValue = toml}] -} - -in { apiVersion = "v1", kind = "List", items = [ocp.Route route, ocp.Service service, ocp.Deployment deployment, ocp.ConfigMap config] } diff --git a/oc-deploy.yaml b/oc-deploy.yaml index ae31ad8..fda9fa7 100644 --- a/oc-deploy.yaml +++ b/oc-deploy.yaml @@ -1,140 +1,108 @@ +--- apiVersion: v1 -items: - - apiVersion: v1 - kind: Route - metadata: - name: fm-gateway - spec: - host: fm-gateway-rhos-org.apps.ocp.prod.psi.redhat.com - path: / - port: - targetPort: 8080 - tls: - insecureEdgeTerminationPolicy: Redirect - termination: edge - to: - kind: Service - name: fm-gateway-service - weight: 100 - - apiVersion: v1 +kind: Route +metadata: + name: fm-gateway +spec: + host: fm-gateway-rhos-org.apps.ocp.prod.psi.redhat.com + path: / + port: + targetPort: 8080 + tls: + insecureEdgeTerminationPolicy: Redirect + termination: edge + to: kind: Service + name: fm-gateway-service + weight: 100 +--- +apiVersion: v1 +kind: Service +metadata: + name: fm-gateway-service +spec: + ports: + - port: 80 + targetPort: 8080 + selector: + app: fm-gateway +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: fm-gateway +spec: + replicas: 1 + selector: + matchLabels: + app: fm-gateway + template: metadata: - name: fm-gateway-service - spec: - ports: - - port: 80 - targetPort: 8080 - selector: + labels: app: fm-gateway - - apiVersion: apps/v1 - kind: Deployment - metadata: name: fm-gateway spec: - replicas: 1 - selector: - matchLabels: - app: fm-gateway - template: - metadata: - labels: - app: fm-gateway + containers: + - image: quay.io/software-factory/fm-gateway:latest name: fm-gateway - spec: - containers: - - image: quay.io/software-factory/fm-gateway:latest - name: fm-gateway - ports: - - containerPort: 8080 - volumeMounts: - - mountPath: /data/ - name: fm-gateway-config - volumes: - - configMap: - name: config-toml + ports: + - containerPort: 8080 + volumeMounts: + - mountPath: /data/ name: fm-gateway-config - - apiVersion: v1 - data: - config.toml: |2 - amqp_url = "amqps://fedora:@rabbitmq.fedoraproject.org/%2Fpublic_pubsub" - - - [tls] - - ca_cert = "/etc/fedora-messaging/cacert.pem" - - keyfile = "/etc/fedora-messaging/fedora-key.pem" - - certfile = "/etc/fedora-messaging/fedora-cert.pem" - - - [client_properties] - - app = "Fedora Messaging Zuul" - - - [exchanges."amq.topic"] - - type = "topic" - - durable = true - - auto_delete = false - - arguments = {} - - - [qos] - - prefetch_size = 0 - - prefetch_count = 25 - - - [log_config] - - version = 1 - - disable_existing_loggers = true - - - [log_config.formatters.simple] - - format = "[%(levelname)-7s %(name)s] - %(message)s" - - - [log_config.handlers.console] - - class = "logging.StreamHandler" - - formatter = "simple" - - stream = "ext://sys.stdout" - - - [log_config.root] - - level = "DEBUG" - - handlers = ["console"] - - - [consumer_config] - - # If true the payload will by written in a file but not send to webhook server url - - send_to_file = false - - verify_ssl = true - - topic_prefixes_dest = [ - "org.fedoraproject.prod.pagure,https://softwarefactory-project.io/zuul/api/connection/src.fedoraproject.org/payload" - ] - - exclude_projects = [] - - stats_server_port = 8080 - kind: ConfigMap - metadata: - name: config-toml -kind: List + volumes: + - configMap: + name: config-toml + name: fm-gateway-config +--- +apiVersion: v1 +data: + config.toml: | + amqp_url = "amqps://fedora:@rabbitmq.fedoraproject.org/%2Fpublic_pubsub" + + [tls] + ca_cert = "/etc/fedora-messaging/cacert.pem" + keyfile = "/etc/fedora-messaging/fedora-key.pem" + certfile = "/etc/fedora-messaging/fedora-cert.pem" + + [client_properties] + app = "Fedora Messaging Zuul" + + [exchanges."amq.topic"] + type = "topic" + durable = true + auto_delete = false + arguments = {} + + [qos] + prefetch_size = 0 + prefetch_count = 25 + + [log_config] + version = 1 + disable_existing_loggers = true + + [log_config.formatters.simple] + format = "[%(levelname)-7s %(name)s] - %(message)s" + + [log_config.handlers.console] + class = "logging.StreamHandler" + formatter = "simple" + stream = "ext://sys.stdout" + + [log_config.root] + level = "DEBUG" + handlers = ["console"] + + [consumer_config] + # If true the payload will by written in a file but not send to webhook server url + send_to_file = false + verify_ssl = true + topic_prefixes_dest = [ + "org.fedoraproject.prod.pagure,https://softwarefactory-project.io/zuul/api/connection/src.fedoraproject.org/payload" + ] + exclude_projects = [] + stats_server_port = 8080 +kind: ConfigMap +metadata: + name: config-toml