# 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: manila

on:
  pull_request:
    paths:
      - .github/workflows/manila.yml
  push:
    branches:
      - main
    paths:
      - .github/workflows/manila.yml
  release:
    types:
      - published
  workflow_dispatch:

jobs:
  build-image:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout project
        uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4
        with:
          fetch-depth: 0

      - name: Install dependencies
        run: |
          sudo apt-get update
          sudo apt-get install -y debootstrap qemu-utils
          pipx install diskimage-builder==3.28.0
          pipx install python-swiftclient
          pipx inject python-swiftclient python-keystoneclient
          pipx install poetry
          poetry self add "poetry-dynamic-versioning[plugin]"

      - name: Clone openstack/manila-image-elements
        uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4
        with:
          repository: openstack/manila-image-elements
          path: manila-image-elements

      - name: Cache DIB_IMAGE_CACHE
        uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4
        with:
          path: ~/.cache/image-create
          key: dib-image-cache

      - name: Build image
        run: disk-image-create -o manila-$(poetry version --short).qcow2 vm manila-ubuntu-minimal dhcp-all-interfaces manila-ssh ubuntu-nfs ubuntu-cifs
        env:
          ELEMENTS_PATH: manila-image-elements/elements

      - name: Publish image
        if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' || github.event_name == 'release'
        run: |
          swift post -r '.r:*,.rlistings' atmosphere-images
          swift upload atmosphere-images manila-$(poetry version --short).qcow2
        env:
          OS_AUTH_URL: https://auth.vexxhost.net/v3
          OS_REGION_NAME: ca-ymq-1
          OS_USER_DOMAIN_NAME: Default
          OS_USERNAME: ${{ secrets.OS_USERNAME }}
          OS_PASSWORD: ${{ secrets.OS_PASSWORD }}
          OS_PROJECT_DOMAIN_NAME: Default
          OS_PROJECT_NAME: ${{ secrets.OS_PROJECT_NAME }}
