kind: ConfigMap
apiVersion: v1
metadata:
    name: gitlab-minio-config-cm
    namespace: gitlab
    selfLink: /api/v1/namespaces/gitlab/configmaps/gitlab-minio-config-cm
    uid: 980ad998-398b-11ea-b115-42010a8001d6
    resourceVersion: '2016126'
    creationTimestamp: '2020-01-18T00:43:50Z'
    labels:
        app: minio
        chart: minio-0.4.3
        heritage: Helm
        release: gitlab
data:
    config.json: |-
        {
          "version": "20",
          "credential": {
            "accessKey": "ACCESS_KEY",
            "secretKey": "SECRET_KEY"
          },
          "region": "us-east-1",
          "browser": "on",
          "domain": "",
          "logger": {
            "console": {
              "enable": true
            },
            "file": {
              "enable": false,
              "fileName": ""
            }
          },
          "notify": {
            "amqp": {
              "1": {
                "enable": false,
                "url": "",
                "exchange": "",
                "routingKey": "",
                "exchangeType": "",
                "deliveryMode": 0,
                "mandatory": false,
                "immediate": false,
                "durable": false,
                "internal": false,
                "noWait": false,
                "autoDeleted": false
              }
            },
            "nats": {
              "1": {
                "enable": false,
                "address": "",
                "subject": "",
                "username": "",
                "password": "",
                "token": "",
                "secure": false,
                "pingInterval": 0,
                "streaming": {
                  "enable": false,
                  "clusterID": "",
                  "clientID": "",
                  "async": false,
                  "maxPubAcksInflight": 0
                }
              }
            },
            "elasticsearch": {
              "1": {
                "enable": false,
                "format": "namespace",
                "url": "",
                "index": ""
              }
            },
            "redis": {
              "1": {
                "enable": false,
                "format": "namespace",
                "address": "",
                "password": "",
                "key": ""
              }
            },
            "postgresql": {
              "1": {
                "enable": false,
                "format": "namespace",
                "connectionString": "",
                "table": "",
                "host": "",
                "port": "",
                "user": "",
                "password": "",
                "database": ""
              }
            },
            "kafka": {
              "1": {
                "enable": false,
                "brokers": null,
                "topic": ""
              }
            },
            "webhook": {
              "1": {
                "enable": false,
                "endpoint": ""
              }
            },
            "mysql": {
              "1": {
                "enable": false,
                "format": "namespace",
                "dsnString": "",
                "table": "",
                "host": "",
                "port": "",
                "user": "",
                "password": "",
                "database": ""
              }
            },
            "mqtt": {
              "1": {
                "enable": false,
                "broker": "",
                "topic": "",
                "qos": 0,
                "clientId": "",
                "username": "",
                "password": ""
              }
            }
          }
        }
    configure: >-
        sed -e 's@ACCESS_KEY@'"$(cat /config/accesskey)"'@' -e
        's@SECRET_KEY@'"$(cat /config/secretkey)"'@' /config/config.json >
        /minio/config.json
    initialize: >-
        #!/bin/sh

        # minio/mc container has Busybox Ash, be sure to be POSIX compliant and
        avoid Bash-isms

        set -e ; # Have script exit in the event of a failed command.


        # connectToMinio

        # Use a check-sleep-check loop to wait for Minio service to be available

        connectToMinio() {
          set -e ; # fail if we can't read the keys.
          ACCESS=$(cat /config/accesskey) ; SECRET=$(cat /config/secretkey) ;
          set +e ; # The connections to minio are allowed to fail.
          echo "Connecting to Minio server: http://$MINIO_ENDPOINT:$MINIO_PORT" ;
          MC_COMMAND="mc config host add myminio http://$MINIO_ENDPOINT:$MINIO_PORT $ACCESS $SECRET" ;
          $MC_COMMAND ;
          STATUS=$? ;
          until [ $STATUS -eq 0 ] ;
          do
            sleep 1 ; # 1 second intervals between attempts
            $MC_COMMAND ;
            STATUS=$? ;
          done ;
          set -e ; # reset `e` as active
          return 0
        }


        # checkBucketExists ($bucket)

        # Check if the bucket exists, by using the exit code of `mc ls`

        checkBucketExists() {
          BUCKET=$1
          CMD=$(/usr/bin/mc ls myminio/$BUCKET > /dev/null 2>&1)
          return $?
        }


        # createBucket ($bucket, $policy, $purge)

        # Ensure bucket exists, purging if asked to

        createBucket() {
          BUCKET=$1
          POLICY=$2
          PURGE=$3


          # Purge the bucket, if set & exists
          # Since PURGE is user input, check explicitly for `true`
          if [ $PURGE = true ]; then
            if checkBucketExists $BUCKET ; then
              echo "Purging bucket '$BUCKET'."
              set +e ; # don't exit if this fails
              /usr/bin/mc rm -r --force myminio/$BUCKET
              set -e ; # reset `e` as active
            else
              echo "Bucket '$BUCKET' does not exist, skipping purge."
            fi
          fi

          # Create the bucket if it does not exist
          if ! checkBucketExists $BUCKET ; then
            echo "Creating bucket '$BUCKET'"
            /usr/bin/mc mb myminio/$BUCKET
          else
            echo "Bucket '$BUCKET' already exists."
          fi

          # At this point, the bucket should exist, skip checking for existance
          # Set policy on the bucket
          echo "Setting policy of bucket '$BUCKET' to '$POLICY'."
          /usr/bin/mc policy $POLICY myminio/$BUCKET
        }


        connectToMinio

        createBucket registry none false

        createBucket git-lfs none false

        createBucket runner-cache none false

        createBucket gitlab-uploads none false

        createBucket gitlab-artifacts none false

        createBucket gitlab-backups none false

        createBucket gitlab-packages none false

        createBucket tmp none false

        createBucket gitlab-pseudo none false

        createBucket gitlab-mr-diffs none false

