---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: awx
  namespace: {{ awx_openshift_project }}
spec:
  replicas: 1
  template:
    metadata:
      labels:
        name: awx-web-deploy
        service: django
    spec:
      containers:
        - name: awx-web
          image: {{ awx_web_openshift_image }}
          imagePullPolicy: Always
          ports:
            - containerPort: 8052
          volumeMounts:
            - mountPath: /etc/tower
              name: awx-application-config
          resources:
            requests:
              memory: "{{ awx_web_mem_request }}Gi"
              cpu: "{{ awx_web_cpu_request }}m"
        - name: awx-celery
          image: {{ awx_task_openshift_image }}
          imagePullPolicy: Always
          volumeMounts:
            - mountPath: /etc/tower
              name: awx-application-config
          env:
            - name: DATABASE_USER
              value: {{ pg_username }}
            - name: DATABASE_NAME
              value: {{ pg_database }}
            - name: DATABASE_HOST
              value: {{ pg_hostname|default('postgresql') }}
            - name: DATABASE_PORT
              value: "{{ pg_port|default('5432') }}"
            - name: DATABASE_PASSWORD
              value: {{ pg_password }}
            - name: MEMCACHED_HOST
              value: {{ memcached_hostname|default('localhost') }}
            - name: RABBITMQ_HOST
              value: {{ rabbitmq_hostname|default('localhost') }}
            - name: AWX_ADMIN_USER
              value: {{ default_admin_user|default('admin') }}
            - name: AWX_ADMIN_PASSWORD
              value: {{ default_admin_password|default('password') }}
          resources:
            requests:
              memory: "{{ awx_task_mem_request }}Gi"
              cpu: "{{ awx_task_cpu_request }}m"
        - name: awx-rabbit
          image: ansible/awx_rabbitmq:{{ rabbitmq_version }}
          imagePullPolicy: Always
          env:
            # For consupmption by rabbitmq-env.conf
            - name: MY_POD_IP
              valueFrom:
                fieldRef:
                  fieldPath: status.podIP
            - name: RABBITMQ_USE_LONGNAME
              value: "true"
            - name: RABBITMQ_ERLANG_COOKIE
              value: "cookiemonster"
            - name: RABBITMQ_NODENAME
              value: "rabbit@$(MY_POD_IP)"
            - name: AUTOCLUSTER_TYPE
              value: "etcd"
            - name: AUTOCLUSTER_DELAY
              value: "60"
            - name: ETCD_HOST
              value: "etcd"
            - name: AUTOCLUSTER_CLEANUP
              value: "true"
            - name: CLEANUP_WARN_ONLY
              value: "false"
            - name: CLEANUP_INTERVAL
              value: "30"
            - name: RABBITMQ_DEFAULT_USER
              value: "awx"
            - name: RABBITMQ_DEFAULT_PASS
              value: "abcdefg"
            - name: RABBITMQ_DEFAULT_VHOST
              value: "awx"
            - name: RABBITMQ_CONFIG_FILE
              value: "/etc/rabbitmq/rabbitmq"
          resources:
            requests:
              memory: "{{ awx_rabbitmq_mem_request }}Gi"
              cpu: "{{ awx_rabbitmq_cpu_request }}m"
        - name: awx-memcached
          image: memcached
          resources:
            requests:
              memory: "{{ awx_memcached_mem_request }}Gi"
              cpu: "{{ awx_memcached_cpu_request }}m"
      volumes:
        - name: awx-application-config
          configMap:
            name: awx-config
            items:
              - key: awx_settings
                path: settings.py
              - key: secret_key
                path: SECRET_KEY
---
apiVersion: v1
kind: Service
metadata:
  name: awx-web-svc
  namespace: {{ awx_openshift_project }}
  labels:
    name: awx-web-svc
spec:
  type: "NodePort"
  ports:
    - name: http
      port: 8052
  selector:
    name: awx-web-deploy
---
---
apiVersion: v1
kind: Service
metadata:
  name: awx-rmq-mgmt
  namespace: {{ awx_openshift_project }}
  labels:
    name: awx-rmq-mgmt
spec:
  type: ClusterIP
  ports:
    - name: rmqmgmt
      port: 15672
      targetPort: 15672
  selector:
    name: awx-web-deploy
---
apiVersion: v1
kind: Route
metadata:
  name: awx-web-svc
  namespace: {{ awx_openshift_project }}
spec:
  port:
    targetPort: http
  tls:
    insecureEdgeTerminationPolicy: Allow
    termination: edge
  to:
    kind: Service
    name: awx-web-svc
    weight: 100
  wildcardPolicy: None
