# Copyright (c) 2023 VEXXHOST, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.

name: ceph

on:
  pull_request:
    paths-ignore:
      - go.mod
      - go.sum
  workflow_dispatch:
    inputs:
      debug_enabled:
        type: boolean
        description: 'Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)'
        required: false
        default: false
      network_backend:
        type: choice
        description: 'Network backend type'
        required: true
        default: 'ovn'
        options:
          - openvswitch
          - ovn

jobs:
  debug:
    runs-on: v3-standard-16
    if: github.event_name == 'workflow_dispatch' && inputs.debug_enabled
    strategy:
      fail-fast: false
    concurrency:
      group: ${{ github.ref }}-${{ inputs.network_backend }}
      cancel-in-progress: true
    steps:
      - name: Checkout project
        uses: actions/checkout@v4

      - name: Install Poetry
        run: pipx install poetry

      - name: Setup Python
        uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5
        with:
          cache: poetry

      - name: Install dependencies
        run: poetry install --no-interaction --with dev

      # NOTE(mnaser): LVM commands take a long time if there are any existing
      #               loop devices created by "snapd", so we uninstall it.
      - name: Uninstall "snapd"
        run: sudo apt-get purge -y snapd

      - name: Turn off swap
        run: sudo swapoff -a

      - name: Run Molecule Converge
        run: poetry run molecule converge -s ceph
        env:
          ATMOSPHERE_NETWORK_BACKEND: ${{ inputs.network_backend }}

      # Enable tmate debugging of manually-triggered workflows if the input option was provided
      - name: Setup tmate session
        if: ${{ failure() }}
        uses: mxschmitt/action-tmate@v3
        timeout-minutes: 60

      - name: Run Molecule Destroy
        run: poetry run molecule destroy -s ceph

  test:
    runs-on: v3-standard-16
    if: github.event_name != 'workflow_dispatch' || !inputs.debug_enabled
    strategy:
      fail-fast: false
      matrix:
        network_backend:
          - openvswitch
          - ovn
    concurrency:
      group: ${{ github.ref }}-${{ matrix.network_backend }}
      cancel-in-progress: true
    steps:
      - name: Checkout project
        uses: actions/checkout@v4

      - name: Install Poetry
        run: pipx install poetry

      - name: Setup Python
        uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5
        with:
          cache: poetry

      - name: Install dependencies
        run: poetry install --no-interaction --with dev

      # NOTE(mnaser): LVM commands take a long time if there are any existing
      #               loop devices created by "snapd", so we uninstall it.
      - name: Uninstall "snapd"
        run: sudo apt-get purge -y snapd

      - name: Turn off swap
        run: sudo swapoff -a

      - name: Run Molecule
        run: poetry run molecule test -s ceph
        env:
          ATMOSPHERE_NETWORK_BACKEND: ${{ matrix.network_backend }}
