1
0
Fork 0

Adding upstream version 2.2.1.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Benjamin Drung 2025-02-16 12:41:59 +01:00 committed by Daniel Baumann
parent 1d36de0179
commit 757b718eff
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
129 changed files with 16110 additions and 0 deletions

11
.github/dependabot.yml vendored Normal file
View file

@ -0,0 +1,11 @@
---
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
- package-ecosystem: "docker"
directory: "/"
schedule:
interval: "weekly"

63
.github/workflows/docker-publish.yml vendored Normal file
View file

@ -0,0 +1,63 @@
name: Docker
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
on:
push:
branches: [ main ]
# Publish semver tags as releases.
tags: [ 'v*.*.*' ]
pull_request:
branches: [ main ]
workflow_dispatch:
env:
# Use docker.io for Docker Hub if empty
REGISTRY: ghcr.io
# github.repository as <account>/<repo>
IMAGE_NAME: ${{ github.repository }}
jobs:
docker-publish:
if: ${{ !github.event.act }} # skip during local actions testing
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v3
# Login against a Docker registry except on PR
# https://github.com/docker/login-action
- name: Log into registry ${{ env.REGISTRY }}
if: github.event_name != 'pull_request'
uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
# Extract metadata (tags, labels) for Docker
# https://github.com/docker/metadata-action
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@507c2f2dc502c992ad446e3d7a5dfbe311567a96
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
# Build and push Docker image with Buildx (don't push on PR)
# https://github.com/docker/build-push-action
- name: Build and push Docker image
uses: docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

51
.github/workflows/docker-test.yml vendored Normal file
View file

@ -0,0 +1,51 @@
name: Test
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch:
jobs:
docker-run:
if: ${{ !github.event.act }} # skip during local actions testing
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install requirements
# make sure nvme-cli installed (we need it for /etc/nvme/hostnqn and /etc/nvme/hostid)
run: sudo apt-get install --yes --quiet nvme-cli
- name: Load Kernel drivers
run: sudo modprobe -v nvme-fabrics
- name: Fix D-BUS
run: |
sed 's/@STAFD_DBUS_NAME@/org.nvmexpress.staf/g' etc/dbus-1/system.d/org.nvmexpress.staf.in.conf | sudo tee /usr/share/dbus-1/system.d/org.nvmexpress.staf.conf
sed 's/@STACD_DBUS_NAME@/org.nvmexpress.stac/g' etc/dbus-1/system.d/org.nvmexpress.stac.in.conf | sudo tee /usr/share/dbus-1/system.d/org.nvmexpress.stac.conf
sudo systemctl reload dbus.service
- name: Build & Start containers
run: docker-compose -f "docker-compose.yml" up --detach --build
- name: Run tests
run: |
docker-compose ps
docker-compose exec -T stafd stafctl ls
docker-compose exec -T stafd stafctl status
docker-compose exec -T stacd stacctl ls
docker-compose exec -T stacd stacctl status
docker-compose logs
- name: Logs
if: failure()
run: |
docker-compose ps || true
docker-compose logs || true
- name: Stop containers
if: always()
run: docker-compose -f "docker-compose.yml" down

76
.github/workflows/meson-test.yml vendored Normal file
View file

@ -0,0 +1,76 @@
name: Meson
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch:
jobs:
meson-build:
runs-on: ubuntu-latest
steps:
- name: "CHECKOUT: nvme-stas"
uses: actions/checkout@v3
- name: "INSTALL: Overall dependencies"
run: |
sudo apt-mark hold grub-efi-amd64-signed # Workaround for upstream issue
sudo apt-get update --yes --quiet
sudo apt-get upgrade --yes --quiet
sudo apt-get install --yes --quiet python3-pip cmake iproute2
sudo python3 -m pip install --upgrade pip
sudo python3 -m pip install --upgrade wheel meson ninja
- name: "INSTALL: nvme-stas dependencies"
run: |
sudo apt-get install --yes --quiet docbook-xml
sudo apt-get install --yes --quiet docbook-xsl
sudo apt-get install --yes --quiet xsltproc
sudo apt-get install --yes --quiet libglib2.0-dev
sudo apt-get install --yes --quiet libgirepository1.0-dev
sudo apt-get install --yes --quiet libsystemd-dev
sudo apt-get install --yes --quiet python3-systemd
sudo apt-get install --yes --quiet python3-pyudev
sudo apt-get install --yes --quiet python3-lxml
python3 -m pip install --upgrade dasbus pylint pyflakes PyGObject
python3 -m pip install --upgrade vermin pyfakefs importlib-resources
- name: "INSTALL: libnvme"
run: |
sudo apt-get install --yes --quiet swig libjson-c-dev
meson subprojects download
meson setup .build subprojects/libnvme -Dlibdbus=disabled -Dopenssl=disabled -Dbuildtype=release -Dprefix=/usr -Dpython=true
ninja -C .build
sudo meson install -C .build
- name: "CONFIG: PYTHONPATH"
run: |
echo "PYTHONPATH=.build:.build/subprojects/libnvme:/usr/lib/python3/dist-packages/" >> $GITHUB_ENV
- name: "TEST: nvme-stas"
uses: BSFishy/meson-build@v1.0.3
with:
action: test
directory: .build
setup-options: -Dman=true -Dhtml=true
options: --print-errorlogs --suite nvme-stas
# Preserve meson's log file on failure
- uses: actions/upload-artifact@v3
if: failure()
with:
name: "Linux_Meson_Testlog"
path: .build/meson-logs/*
- name: "Generate coverage report"
run: |
python3 -m pip install pytest
python3 -m pip install pytest-cov
PYTHONPATH=.build:.build/subprojects/libnvme:/usr/lib/python3/dist-packages/ pytest --cov=./staslib --cov-report=xml test/test-*.py
- uses: codecov/codecov-action@v3
with:
fail_ci_if_error: false

104
.github/workflows/pylint.yml vendored Normal file
View file

@ -0,0 +1,104 @@
name: Linters
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch:
jobs:
docker-lint:
if: ${{ !github.event.act }} # skip during local actions testing
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- uses: hadolint/hadolint-action@v3.1.0
with:
recursive: true
ignore: DL3041
python-lint:
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
python-version: ["3.6", "3.7", "3.8", "3.9", "3.10"]
steps:
- name: "CHECKOUT: nvme-stas"
uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
# - name: "UPGRADE: existing packages"
# run: |
# sudo apt-get update --yes --quiet || true
# sudo apt-get upgrade --yes --quiet || true
- name: "INSTALL: additional packages"
run: |
sudo apt-get install --yes --quiet python3-pip || true
sudo apt-get install --yes --quiet cmake || true
sudo apt-get install --yes --quiet libgirepository1.0-dev || true
sudo apt-get install --yes --quiet libsystemd-dev || true
sudo apt-get install --yes --quiet python3-systemd || true
sudo python3 -m pip install --upgrade pip
sudo python3 -m pip install --upgrade wheel
sudo python3 -m pip install --upgrade meson
sudo python3 -m pip install --upgrade ninja
python3 -m pip install --upgrade dasbus
python3 -m pip install --upgrade pylint
python3 -m pip install --upgrade pyflakes
python3 -m pip install --upgrade PyGObject
python3 -m pip install --upgrade lxml
python3 -m pip install --upgrade pyudev
- name: "BUILD: libnvme"
run: |
sudo apt-get install --yes --quiet swig libjson-c-dev || true
meson subprojects download
meson setup builddir subprojects/libnvme -Dlibdbus=disabled -Dopenssl=disabled -Dbuildtype=release -Dprefix=/usr -Dpython=true
ninja -C builddir
sudo meson install -C builddir
- name: Set PYTHONPATH
run: |
echo "PYTHONPATH=builddir:builddir/subprojects/libnvme:/usr/lib/python3/dist-packages/" >> $GITHUB_ENV
- name: Show test environment
run: |
echo -e "Build Directory:\n$(ls -laF builddir)"
python3 -VV
python3 -m site
python3 -m pylint --version
echo "pyflakes $(python3 -m pyflakes --version)"
- name: Pylint
run: |
python3 -m pylint --rcfile=test/pylint.rc *.py staslib
- name: Pyflakes
if: always()
run: |
python3 -m pyflakes *.py staslib
python-black:
if: ${{ !github.event.act }} # skip during local actions testing
name: python-black formatter
runs-on: ubuntu-latest
steps:
- name: "CHECKOUT: nvme-stas"
uses: actions/checkout@v3
- name: "BLACK"
uses: psf/black@stable
with:
options: "--check --diff --color --line-length 120 --skip-string-normalization --extend-exclude (subprojects|debian|.build)"
src: "."