Compare commits

...
Sign in to create a new pull request.

20 commits

Author SHA1 Message Date
Packit
5bb1b24544 [packit] 1.17.0 upstream release
Upstream tag: v1.17.0
Upstream commit: 859d911f
2023-10-23 15:07:53 +00:00
Packit
c21dad9a54 [packit] 1.16.0 upstream release
Upstream tag: v1.16.0
Upstream commit: 8e30c75c
2023-10-17 18:21:29 +00:00
Packit
ff71fa8f3b [packit] 1.15.1 upstream release
Upstream tag: v1.15.1
Upstream commit: 0135d465
2023-06-13 14:03:33 +00:00
Packit
2955a7b823 [packit] 1.15.0 upstream release
Upstream tag: v1.15.0
Upstream commit: 5903fb92
2023-04-18 15:49:01 +00:00
Packit
473143d266 [packit] 1.14.1 upstream release
Upstream tag: v1.14.1
Upstream commit: af38b707

Signed-off-by: Packit <hello@packit.dev>
2023-03-16 15:31:42 +00:00
Packit
639a00f58a [packit] 1.14.0 upstream release
Upstream tag: v1.14.0
Upstream commit: c209923b

Signed-off-by: Packit <hello@packit.dev>
2023-03-08 14:13:05 +00:00
Packit
e417dcdcf8 [packit] 1.13.3 upstream release
Upstream tag: v1.13.3
Upstream commit: acf943e2

Signed-off-by: Packit <hello@packit.dev>
2023-03-01 10:07:53 +00:00
Packit
7319e4d802 [packit] 1.13.1 upstream release
Upstream tag: v1.13.1
Upstream commit: 469298da

Signed-off-by: Packit <hello@packit.dev>
2023-02-21 11:44:17 +00:00
Tibor Dudlák
57b0988845
chore: Add add tmt tests and plans and add them to sync
Signed-off-by: Tibor Dudlák <tdudlak@redhat.com>
2022-12-15 08:09:22 +01:00
Tibor Dudlák
c7bd8ec7da
chore: Add fmf/version and allowed users to run packit
Signed-off-by: Tibor Dudlák <tdudlak@redhat.com>
2022-12-14 10:43:10 +01:00
Tibor Dudlák
7d285dc6f5
Create release mrack-1.12.3-2 which has fixed ci.fmf
Signed-off-by: Tibor Dudlák <tdudlak@redhat.com>
2022-12-14 09:22:24 +01:00
Tibor Dudlák
b716751f9d
Add ci.fmf
Signed-off-by: Tibor Dudlák <tdudlak@redhat.com>
2022-12-14 08:13:37 +01:00
Packit
36eb2333b1 [packit] 1.12.3 upstream release
Upstream tag: v1.12.3
Upstream commit: 6bd9e17e

Signed-off-by: Packit <hello@packit.dev>
2022-12-13 20:52:51 +00:00
Packit
213dda4294 [packit] 1.12.2 upstream release
Upstream tag: v1.12.2
Upstream commit: 497e95b3

Signed-off-by: Packit <hello@packit.dev>
2022-12-02 10:22:04 +00:00
Tibor Dudlák
5024c24312
Add spec readme and sources upstream version 1.12.1
Signed-off-by: Tibor Dudlák <tdudlak@redhat.com>
2022-11-29 15:00:07 +01:00
Tibor Dudlák
93e972c59d
Add spec readme and sources upstream version 1.12.0
Signed-off-by: Tibor Dudlák <tdudlak@redhat.com>
2022-11-21 09:45:34 +01:00
Tibor Dudlák
8a41d73160
Bump to upstream version 1.11.0
Signed-off-by: Tibor Dudlák <tdudlak@redhat.com>
2022-11-04 12:53:06 +01:00
Tibor Dudlák
b7e4f7a711
Add source tarball with 1.10.0 mrack version
Signed-off-by: Tibor Dudlák <tdudlak@redhat.com>
2022-11-01 09:00:02 +01:00
Tibor Dudlák
5f2a02c5b0
Update README.md to upstream version
Signed-off-by: Tibor Dudlák <tdudlak@redhat.com>
2022-11-01 08:59:48 +01:00
Tibor Dudlák
56af2ddbe7
Add initial spec from upstream
Signed-off-by: Tibor Dudlák <tdudlak@redhat.com>
2022-11-01 08:59:32 +01:00
12 changed files with 980 additions and 1 deletions

1
.fmf/version Normal file
View file

@ -0,0 +1 @@
1

14
.gitignore vendored Normal file
View file

@ -0,0 +1,14 @@
/mrack-1.10.0.tar.gz
/mrack-1.11.0.tar.gz
/mrack-1.12.0.tar.gz
/mrack-1.12.1.tar.gz
/mrack-1.12.2.tar.gz
/mrack-1.12.3.tar.gz
/mrack-1.13.1.tar.gz
/mrack-1.13.3.tar.gz
/mrack-1.14.0.tar.gz
/mrack-1.14.1.tar.gz
/mrack-1.15.0.tar.gz
/mrack-1.15.1.tar.gz
/mrack-1.16.0.tar.gz
/mrack-1.17.0.tar.gz

153
.packit.yaml Normal file
View file

@ -0,0 +1,153 @@
---
# See the documentation for more information:
# https://packit.dev/docs/configuration/
specfile_path: mrack.spec
# add or remove files that should be synced
files_to_sync:
- mrack.spec
- README.md
- .packit.yaml
- gating.yaml
- ci.fmf
# we need to sync tmt for TF to work in Fedora updates
- src: ./tests/smoke/*
dest: ./tests/smoke/
- src: ./plans/*
dest: ./plans/
# Allow dist git reactions on packit and tdudlak commits and PRs
allowed_pr_authors:
- packit
- tdudlak
allowed_committers:
- packit
- tdudlak
# name in upstream package repository/registry (e.g. in PyPI)
upstream_package_name: mrack
# downstream (Fedora) RPM package name
downstream_package_name: mrack
# mrack uses tag v(ver_number) and we need to make sure packit know what to expect
# see: https://packit.dev/docs/configuration/#upstream_tag_template
upstream_tag_template: "v{version}"
sync_changelog: true
actions:
create-archive:
- "python3 setup.py sdist --dist-dir ."
- "sh -c 'echo mrack-$(python3 setup.py --version).tar.gz'"
get-current-version:
- "python3 setup.py --version"
jobs:
- job: copr_build
trigger: pull_request
release_suffix: "99.dev.{PACKIT_PROJECT_BRANCH}"
targets: [fedora-all, epel-8, epel-9]
- job: tests
trigger: pull_request
identifier: "upstream-smoke"
targets: [fedora-all, epel-8, epel-9]
- job: copr_build
trigger: commit
targets: [fedora-all, epel-8, epel-9]
- job: copr_build
trigger: release
owner: "@freeipa"
project: neoave
targets: [fedora-all, epel-8, epel-9]
- job: propose_downstream
trigger: release
dist_git_branches: [fedora-all, epel-8, epel-9]
- job: koji_build
trigger: commit
dist_git_branches: [fedora-all, epel-8, epel-9]
- job: bodhi_update
trigger: commit
dist_git_branches: [fedora-branched, epel-8, epel-9] # rawhide updates are created automatically
# # pr_osp
# - &internal_test # use openstack (osp) tests as template for other test cases
# job: tests
# fmf_url: "https://gitlab.cee.redhat.com/idm-ops/mrack-internal-tests"
# fmf_ref: "main"
# use_internal_tf: True
# targets: [fedora-latest-stable]
# identifier: "internal-provisioning-osp"
# trigger: pull_request
# env:
# MRACK_TEST_CASE: "provisioning-osp"
# - &pr_aws
# <<: *internal_test
# identifier: "internal-provisioning-aws"
# env:
# MRACK_TEST_CASE: "provisioning-aws"
# - &pr_bkr_cpu
# <<: *internal_test
# identifier: "internal-provisioning-bkr-c9s-req1cpu"
# env:
# MRACK_TEST_CASE: "provisioning-bkr-c9s-req1cpu"
# - &pr_bkr_ppc64le
# <<: *internal_test
# identifier: "internal-provisioning-bkr-fedora-ppc64le"
# env:
# MRACK_TEST_CASE: "provisioning-bkr-fedora-ppc64le"
# - &pr_bkr_mem_cpu
# <<: *internal_test
# identifier: "internal-provisioning-bkr-rhel-8-req-2048mem-2cpu"
# env:
# MRACK_TEST_CASE: "provisioning-bkr-rhel-8-req-2048mem-2cpu"
# - &pr_bkr_mem
# <<: *internal_test
# identifier: "internal-provisioning-bkr-rhel-9-req-4069mem"
# env:
# MRACK_TEST_CASE: "provisioning-bkr-rhel-9-req-4069mem"
# - &pr_mrack_all_ssh
# <<: *internal_test
# identifier: "internal-all-providers-ssh"
# trigger: pull_request
# env:
# MRACK_TEST_CASE: "all-providers-ssh"
# # run the same internal tests as in PR for commit in main
# - &main_osp
# <<: *internal_test # pr_osp
# trigger: commit
# - &main_aws
# <<: *pr_aws
# trigger: commit
# - &main_bkr_ppc64le
# <<: *pr_bkr_ppc64le
# trigger: commit
# - &main_bkr_cpu
# <<: *pr_bkr_cpu
# trigger: commit
# - &main_bkr_mem_cpu
# <<: *pr_bkr_mem_cpu
# trigger: commit
# - &main_bkr_mem
# <<: *pr_bkr_mem
# trigger: commit
# - &main_mrack_all_ssh
# <<: *pr_mrack_all_ssh
# trigger: commit

303
README.md
View file

@ -1,3 +1,304 @@
# mrack
The mrack package
![pypi_badge](https://img.shields.io/pypi/v/mrack?label=PyPI&logo=pypi) ![readthedocs_badge](https://img.shields.io/readthedocs/mrack?label=Read%20the%20Docs&logo=read-the-docs) ![badge](https://copr.fedorainfracloud.org/coprs/g/freeipa/neoave/package/mrack/status_image/last_build.png)
Provisioning library for CI and local multi-host testing supporting multiple
provisioning providers (OpenStack, AWS, libvirt, podman containers, Beaker).
But in comparison to multi-cloud libraries, the aim is to be able to describe
host from application perspective. E.g.:
```yaml
network: IPv4
hosts:
- name: master.testdomain.test
role: master
group: ipaserver
os: fedora-31
- name: client.testdomain.test
role: client
group: ipaclient
os: fedora-30
```
This is then combined with provisioning configuration where each provider has
defined meaning for `role`, `group`, `os` params which e.g. translates to
flavors, images, ...
```yaml
provider: openstack # default provider
openstack:
images:
fedora-30: Fedora-Cloud-Base-30-compose-latest
fedora-31: Fedora-Cloud-Base-31
flavors:
ipaserver: ci.m1.medium
ipaclient: ci.m1.micro
networks:
IPv4: net_ci_4
IPv6: net_ipv6_only
dual: net_cci_4_6
keypair: ipa_key
beaker:
distros:
fedora-30: FEDORA-30%
fodora-31: FEDORA-31%
```
So then user can quickly change provisioning location just by changing provider
name without needing to redefine the provider/cloud specifics. This is
especially useful for a lot of jobs sharing the same app specific provisioner
configuration.
```yaml
provider: beaker
```
Or each host can use a different provider:
```yaml
hosts:
- name: master.testdomain.test
role: master
group: ipaserver
os: fedora-31
provider: openstack
network: dual
- name: client.testdomain.test
role: client
group: ipaclient
os: fedora-30
provider: beaker
```
The output is then Ansible inventory with correct group mapping and information
which allows to SSH to the machines.
```yaml
all:
children:
ipaserver:
hosts:
f30-1.mrack.test: {}
f33-2.mrack.test: {}
hosts:
f30-1.mrack.test:
ansible_host: 10.0.154.21
ansible_python_interpreter: /usr/bin/python3
ansible_ssh_private_key_file: config/id_rsa
ansible_user: fedora
meta_dc_record: DC=mrack,DC=test
meta_domain: mrack.test
meta_fqdn: f30-1.mrack.test
meta_ip: 10.0.154.21
meta_os: fedora-30
meta_provider_id: 7c3c28f9-4674-4f7f-b413-00bc0b00d711
meta_restraint_id: 9
meta_role: master
f33-2.mrack.test:
ansible_host: ec2-13-15-16-1.eu-central-1.compute.amazonaws.com
ansible_python_interpreter: /usr/bin/python3
ansible_ssh_private_key_file: config/id_rsa
ansible_user: fedora
meta_dc_record: DC=mrack,DC=test
meta_domain: mrack.test
meta_fqdn: f33-2.mrack.test
meta_ip: 13.15.16.1
meta_os: fedora-33
meta_provider_id: i-08c0d4a86c4b7f7ef
meta_restraint_id: 1
meta_role: master
```
## Installation
mrack can be installed via pip, from [PyPI](https://pypi.org/project/mrack/):
```
pip install mrack
```
It is also available for Fedora 32+ via [COPR](https://copr.fedorainfracloud.org/coprs/g/freeipa/neoave/package/mrack/):
```
# enable the copr at your system
sudo dnf copr enable @freeipa/neoave
# install mrack package with all supported providers and cli
sudo dnf install mrack
# install mrack command and e.g. AWS provider
sudo dnf install mrack-cli python3-mrack-aws
# install mrack library to be later used as an import with support of OpenStack provider:
sudo dnf install python3-mrack-openstack
```
---
**NOTE**
Above command will install `mrack` package which depends on (contains) following packages:
- mrack-cli
- python3-mracklib
- python3-mrack-aws
- python3-mrack-beaker
- python3-mrack-openstack
- python3-mrack-podman
- python3-mrack-virt
The `python3-mracklib` is mandatory as it contains core mrack library.
To install only some of `mrack` providers you should install `python3-mrack-{provider_name}`.
To install mrack command a package `mrack-cli` is required.
---
## Run mrack
In order to use the mrack utility a mrack.conf (e.g. [mrack.conf] from the repository(repo/blob/main/src/mrack/data/mrack.conf)) is needed.
mrack looks for the config file in following order:
- `./` actual directory
- `~/.mrack/` home directory
- `/etc/mrack/` system directory
Values from the configuration file could be overriden using mrack utility
options `--mrack-config` `--provisioning-config` `--db` (for more see `mrack --help`).
```
Usage: mrack [OPTIONS] COMMAND [ARGS]...
Multihost human friendly provisioner.
Options:
-c, --mrack-config PATH
-p, --provisioning-config PATH
-d, --db PATH
--debug
--help Show this message and exit.
Commands:
destroy Destroy provisioned hosts.
list List host tracked by.
output Create outputs - such as Ansible inventory.
ssh SSH to host.
up Provision hosts.
```
### Provisioning with mrack
To provision system from the metadata.yaml either run:
```
mrack up
```
or use `up` command's option `--metadata`/`-m` to override path to the metadata file.
```
mrack up --metadata other-metadata.yaml
```
To return resources using mrack run:
```
mrack destroy
```
or use `destroy` command's option `--metadata`/`-m` to override path to the metadata file.
```
mrack destroy --metadata other-metadata.yaml
```
### mrack as python library
```python
# first set up authentication for each provider
# $ export AWS_CONFIG_FILE=`readlink -f ./aws.key`
from mrack.providers import providers
# import all supported providers:
from mrack.providers.aws import PROVISIONER_KEY as AWS
from mrack.providers.aws import AWSProvider
from mrack.providers.beaker import PROVISIONER_KEY as BEAKER
from mrack.providers.beaker import BeakerProvider
from mrack.providers.openstack import PROVISIONER_KEY as OPENSTACK
from mrack.providers.openstack import OpenStackProvider
from mrack.providers.podman import PROVISIONER_KEY as PODMAN
from mrack.providers.podman import PodmanProvider
from mrack.providers.static import PROVISIONER_KEY as STATIC
from mrack.providers.static import StaticProvider
from mrack.providers.virt import PROVISIONER_KEY as VIRT
from mrack.providers.virt import VirtProvider
# register all supported providers:
providers.register(AWS, AWSProvider)
providers.register(OPENSTACK, OpenStackProvider)
providers.register(BEAKER, BeakerProvider)
providers.register(PODMAN, PodmanProvider)
providers.register(STATIC, StaticProvider)
providers.register(VIRT, VirtProvider)
# use global context class
import mrack
global_context = mrack.context.global_context
# init global context with paths to files
mrack_config = "mrack.conf"
provisioning_config = "provisioning-config.yaml"
db_file = "mrackdb.json"
global_context.init(mrack_config, provisioning_config, db_file)
# load the metadata to global_context
metadata = "./metadata-f34.yaml"
global_context.init_metadata(metadata)
# pick default provider:
provider = "aws"
# create Up action
from mrack.actions.up import Up
up_action = Up()
await up_action.init(provider)
# provision machines:
await up_action.provision()
# store the output to db or just use the db later on
from mrack.actions.output import Output
output_action = Output()
await output_action.generate_outputs()
# work with machines...
# cleanup the machines:
from mrack.actions.destroy import Destroy
destroy_action = Destroy()
await destroy_action.destroy()
```
## Contribute
Projects is using [black](https://github.com/psf/black) formater and [isort](https://github.com/PyCQA/isort) to keep consistent
formatting, [flake8](https://flake8.pycqa.org/en/latest/) and
[pydocstyle](http://pycodestyle.pycqa.org/en/latest/intro.html) to ensure following
Python good practices.
Contributions (Pull Requests) are welcome. It is expected that they will pass tox tests and code checkers.
Inclusion of the unit tests for the new code is recommended.
Because of that we have configured [pre-commit](https://pre-commit.com/) hook.
Please enable the feature on your local system and use it before sending a patch.
It could save us lot of re-pushing to the PR.
### Black formatting and isort
Expected formatting can be achieved by running:
```
$ make format
```
Look into [black](https://github.com/psf/black) documentation for possible integration
in editors/IDEs.
### Testing
Just run tox to execute all tests and linters
```
$ tox
# or use make
$ make test
```

3
README.packit Normal file
View file

@ -0,0 +1,3 @@
This repository is maintained by packit.
https://packit.dev/
The file was generated using packit 0.84.0.

1
ci.fmf Normal file
View file

@ -0,0 +1 @@
resultsdb-testcase: separate

10
gating.yaml Normal file
View file

@ -0,0 +1,10 @@
--- !Policy
product_versions:
- fedora-*
- epel-8
- epel-9
decision_contexts:
- bodhi_update_push_stable
subject_type: koji_build
rules:
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./plans/tests.functional}

409
mrack.spec Normal file
View file

@ -0,0 +1,409 @@
Name: mrack
Version: 1.17.0
Release: 1%{?dist}
Summary: Multicloud use-case based multihost async provisioner
License: Apache-2.0
URL: https://github.com/neoave/mrack
Source0: %{URL}/releases/download/v%{version}/%{name}-%{version}.tar.gz
BuildArch: noarch
BuildRequires: python3-devel
BuildRequires: python3-click
BuildRequires: python3-pyyaml
BuildRequires: python3-setuptools
# coma separated list of provider plugins
%global provider_plugins aws,beaker,openstack,podman,virt
Requires: %{name}-cli = %{version}-%{release}
Requires: python3-%{name}lib = %{version}-%{release}
Requires: python3-%{name}-aws = %{version}-%{release}
Requires: python3-%{name}-beaker = %{version}-%{release}
Requires: python3-%{name}-openstack = %{version}-%{release}
Requires: python3-%{name}-podman = %{version}-%{release}
Requires: python3-%{name}-virt = %{version}-%{release}
# We filter out the asyncopenstackclient dependency of this package
# so it is not forcing installation of missing dependencies in Fedora
# Once python3-AsyncOpenStackClient is in fedora we can drop this line
%global __requires_exclude asyncopenstackclient
%{?python_disable_dependency_generator}
%description
mrack is a provisioning tool and a library for CI and local multi-host
testing supporting multiple provisioning providers (e.g. AWS, Beaker,
Openstack). But in comparison to other multi-cloud libraries,
the aim is to be able to describe host from application perspective.
%package cli
Summary: Command line interface for mrack
Requires: python3-%{name}lib = %{version}-%{release}
Requires: python3-click
%package -n python3-%{name}lib
Summary: Core mrack libraries
Requires: python3-pyyaml
Recommends: python3-gssapi
Requires: sshpass
%{?python_provide:%python_provide python3-%{name}lib}
%package -n python3-%{name}-aws
Summary: AWS provider plugin for mrack
Requires: python3-%{name}lib = %{version}-%{release}
Requires: python3-boto3
Requires: python3-botocore
%{?python_provide:%python_provide python3-%{name}-aws}
%package -n python3-%{name}-beaker
Summary: Beaker provider plugin for mrack
Requires: python3-%{name}lib = %{version}-%{release}
%if 0%{?rhel} == 8
# c8s has missing beaker-client package
Recommends: beaker-client
%else
Requires: beaker-client
%endif
%{?python_provide:%python_provide python3-%{name}-beaker}
%package -n python3-%{name}-openstack
Summary: Openstack provider plugin for mrack
Requires: python3-%{name}lib = %{version}-%{release}
Recommends: python3-aiofiles
Recommends: python3-os-client-config
Recommends: python3-AsyncOpenStackClient
%{?python_provide:%python_provide python3-%{name}-openstack}
%package -n python3-%{name}-podman
Summary: Podman provider plugin for mrack
Requires: python3-%{name}lib = %{version}-%{release}
Requires: podman
%{?python_provide:%python_provide python3-%{name}-podman}
%package -n python3-%{name}-virt
Summary: Virtualization provider plugin for mrack using testcloud
Requires: python3-%{name}lib = %{version}-%{release}
Requires: testcloud
%{?python_provide:%python_provide python3-%{name}-virt}
%description cli
%{name}-cli contains mrack command which functionality
can be extended by installing mrack plugins
%description -n python3-%{name}lib
python3-%{name}lib contains core mrack functionalities
and static provider which can be used as a library
%description -n python3-%{name}-aws
%{name}-aws is an additional plugin with AWS provisioning
library extending mrack package
%description -n python3-%{name}-beaker
%{name}-beaker is an additional plugin with Beaker provisioning
library extending mrack package
%description -n python3-%{name}-openstack
%{name}-openstack is an additional plugin with OpenStack provisioning
library extending mrack package
%description -n python3-%{name}-podman
%{name}-podman is an additional plugin with Podman provisioning
library extending mrack package
%description -n python3-%{name}-virt
%{name}-virt is an additional plugin with Virualization provisioning
library extending mrack package using testcloud
%prep
%autosetup -p1 -n %{name}-%{version}
# Remove bundled egg-info
rm -r src/%{name}.egg-info
%build
%py3_build
%install
%py3_install
%files
%license LICENSE
%doc README.md
%doc CHANGELOG.md
%files cli
# the mrack man page RFE: https://github.com/neoave/mrack/issues/197
%license LICENSE
%doc README.md
%doc CHANGELOG.md
%{_bindir}/%{name}
%{python3_sitelib}/%{name}/{,__pycache__/}run.*
%files -n python3-%{name}lib
%license LICENSE
%doc README.md
%doc CHANGELOG.md
%{python3_sitelib}/%{name}
%{python3_sitelib}/%{name}-%{version}-py%{python3_version}.egg-info
%exclude %{python3_sitelib}/%{name}/{,__pycache__/}run.*
%exclude %{python3_sitelib}/%{name}/providers/utils/{,__pycache__/}osapi.*
%exclude %{python3_sitelib}/%{name}/providers/utils/{,__pycache__/}testcloud.*
%exclude %{python3_sitelib}/%{name}/providers/utils/{,__pycache__/}podman.*
%exclude %{python3_sitelib}/%{name}/providers/{,__pycache__/}{%{provider_plugins}}.*
%exclude %{python3_sitelib}/%{name}/transformers/{,__pycache__/}{%{provider_plugins}}.*
%files -n python3-%{name}-aws
%{python3_sitelib}/%{name}/transformers/{,__pycache__/}aws.*
%{python3_sitelib}/%{name}/providers/{,__pycache__/}aws.*
%files -n python3-%{name}-beaker
%{python3_sitelib}/%{name}/transformers/{,__pycache__/}beaker.*
%{python3_sitelib}/%{name}/providers/{,__pycache__/}beaker.*
%files -n python3-%{name}-openstack
%{python3_sitelib}/%{name}/transformers/{,__pycache__/}openstack.*
%{python3_sitelib}/%{name}/providers/{,__pycache__/}openstack.*
%{python3_sitelib}/%{name}/providers/utils/{,__pycache__/}osapi.*
%files -n python3-%{name}-podman
%{python3_sitelib}/%{name}/transformers/{,__pycache__/}podman.*
%{python3_sitelib}/%{name}/providers/{,__pycache__/}podman.*
%{python3_sitelib}/%{name}/providers/utils/{,__pycache__/}podman.*
%files -n python3-%{name}-virt
%{python3_sitelib}/%{name}/transformers/{,__pycache__/}virt.*
%{python3_sitelib}/%{name}/providers/{,__pycache__/}virt.*
%{python3_sitelib}/%{name}/providers/utils/{,__pycache__/}testcloud.*
%changelog
* Mon Oct 23 2023 David Pascual Hernandez <davherna@redhat.com> - 1.17.0-1
- 5251d90 chore(ci): Temporarely remove packit tests (David Pascual)
- 3a59761 feat(openstack): Append API version to auth_url in credentials (David Pascual)
- 97a5355 chore(release): Update semantic release action name and version (David Pascual)
- 6d6cdc6 chore(release): Upload distribution package to release assets (David Pascual)
* Mon Oct 09 2023 David Pascual Hernandez <davherna@redhat.com> - 1.16.0-1
- e8e20f1 chore(ci): Fix release workflow build step checking out wrong commit (David Pascual)
- 97a7cd0 chore: Bump asyncopenstackclient dependency version (David Pascual)
- 41b12e7 chore: Release version 1.16.0 (github-actions)
- 278d1b1 chore(release): Add PyPI action & extract copr step (Tibor Dudlák)
- 9bbd987 chore: Bump python-semantic-release to v7.34.4 (Tibor Dudlák)
- d6b7298 feat: Add new dependecies to mrack.spec file (David Pascual)
- 7bbda34 feat(OpenStack): Add clouds.yaml as an authentication method (David Pascual)
- a5b32e3 feat(OpenStack): Import publick key on provision (David Pascual)
- 1a29d86 test: fix pylint issues and use isinstance (Tibor Dudlák)
- db74ae0 fix(Beaker): Exception has been thrown as raise missed argument (Tibor Dudlák)
- de027fa docs(Beaker): Add hostRequires documentation section to guides (David Pascual)
* Tue Sep 19 2023 Tibor Dudlák <tdudlak@redhat.com> - 1.16.0-1
- 278d1b1 chore(release): Add PyPI action & extract copr step (Tibor Dudlák)
- 9bbd987 chore: Bump python-semantic-release to v7.34.4 (Tibor Dudlák)
- d6b7298 feat: Add new dependecies to mrack.spec file (David Pascual)
- 7bbda34 feat(OpenStack): Add clouds.yaml as an authentication method (David Pascual)
- a5b32e3 feat(OpenStack): Import publick key on provision (David Pascual)
- 1a29d86 test: fix pylint issues and use isinstance (Tibor Dudlák)
- db74ae0 fix(Beaker): Exception has been thrown as raise missed argument (Tibor Dudlák)
- de027fa docs(Beaker): Add hostRequires documentation section to guides (David Pascual)
* Tue Jun 13 2023 Tibor Dudlák <tdudlak@redhat.com> - 1.15.1-1
- 608c763 chore(Packit): Use yaml magic to run same internal tests for PRs and commits to main (Tibor Dudlák)
- 8062a20 refactor: more verbose output when (re)provisioning (Tibor Dudlák)
- 19b52f8 test(OpenStack): Add reprovision with dynamic result tests (Tibor Dudlák)
- fd111f5 fix: Do not reprovision all hosts when server error is detected (Tibor Dudlák)
- 6e499f6 fix: Use lower cooldown time to not be too slow in re-provisioning (Tibor Dudlák)
- e03793c chore(Packit): Add internalt tests per pull request (Tibor Dudlák)
- 44023eb chore(Packit): add missing build job(s) to Packit config (Tibor Dudlák)
* Tue Apr 18 2023 Tibor Dudlák <tdudlak@redhat.com> - 1.15.0-1
- f9f0e33 test: Add missing strategy_retry test (Tibor Dudlák)
- 121c5db refactor(provider): take max_utilization out to method to ease mocking (Tibor Dudlák)
- dc74ced test: Add missing tests for fixed code from https://github.com/neoave/mrack/pull/245 (Tibor Dudlák)
- 86393ab feat(outputs): preset username and password for windows host in pytest-mh (Tibor Dudlák)
- 4c26b5f feat(outputs): merge nested dictionary instead of overriding it (Tibor Dudlák)
- 4dde2e5 feat(utils): add merge_dict (Tibor Dudlák)
- 5440be1 refactor: fixes _openstack_gather_responses test warnings and exec time (David Pascual)
- e29031b fix: Handle 403 AuthError (out of quota) in openstack provisioning (David Pascual)
- a4e5075 feat: configurable ssh options (Petr Vobornik)
- e9d716e chore: fix docs dependencies in tox run (Petr Vobornik)
- 6f1943b chore: add Markdown support to docs and add design section (Petr Vobornik)
- 88458e1 docs: SSH options design (Petr Vobornik)
* Thu Mar 16 2023 Tibor Dudlák <tdudlak@redhat.com> - 1.14.1-1
- a9c4e62 fix: mrack not re-provisioning hosts which were destroyed (Tibor Dudlák)
- 17b45e4 fix: Replace coroutines with tasks to avoid RuntimeError (David Pascual)
* Wed Mar 08 2023 Tibor Dudlák <tdudlak@redhat.com> - 1.14.0-1
- e319b73 refactor(AWS): change variable name typo in get_ip_addresses (Tibor Dudlák)
- d95e65f fix(OpenStack): Add missing await for self._load_limits() method call (Tibor Dudlák)
- d0c2d8f refactor: Update supported providers (Tibor Dudlák)
- 13ad3df fix(outputs): remove config section from pytest-multihost (Tibor Dudlák)
- d3da251 feat(outputs): allow to overwrite ansible layout (Tibor Dudlák)
- d3ac20d feat(outputs): allow to choose which outputs should be generated (Tibor Dudlák)
- 66f2877 feat(outputs): add support for pytest-mh (Tibor Dudlák)
- db633b7 feat(utils): relax condition in get_fqdn (Tibor Dudlák)
- 0735e36 fix(outputs): add host to correct group in layout (Tibor Dudlák)
- b1f5318 feat(utils): add get_os_type (Tibor Dudlák)
- 0ab88e6 refactor(black): reformat code (Tibor Dudlák)
* Wed Mar 01 2023 Tibor Dudlák <tdudlak@redhat.com> - 1.13.3-1
- 0f62237 fix(OpenStack): await loading limits to not break provisioning (Tibor Dudlák)
* Wed Mar 01 2023 Tibor Dudlák <tdudlak@redhat.com> - 1.13.2-1
- 06f18d1 fix: Use get method when host error object is a dictionary (Tibor Dudlák)
- fd33d68 fix(Beaker): rerurn common dictionary when validation fails (Tibor Dudlák)
- b6c5ef4 fix(OpenStack): Add exception parameter when validation fails (Tibor Dudlák)
- fa2c779 fix(OpenStack): load limits properly by one method (Tibor Dudlák)
- 61e515f chore: change back mrack dist release to 1 (Tibor Dudlák)
* Tue Feb 21 2023 Tibor Dudlák <tdudlak@redhat.com> - 1.13.1-1
- 1421b37 fix(MrackConfig): Fix MrackConfig class properties (Tibor Dudlák)
* Fri Feb 17 2023 Tibor Dudlák <tdudlak@redhat.com> - 1.13.0-1
- 72cc2f3 test: add extra dnf options when dealing with rhel/epel 8 (Tibor Dudlák)
- 32a754b chore: set packit to sync changelog as well (Tibor Dudlák)
- b0512b4 chore: sync fedora spec to upstream to maintain changelog history for fedora (Tibor Dudlák)
- be7b50a chore: Generate proper changelog from commit history when releasing (Tibor Dudlák)
- 98f4035 chore: Bump python-semantic-release to latest (Tibor Dudlák)
- a0e76dd test(OpenStack): Fixup the network spread tests (Tibor Dudlák)
- 88b9332 test(OpenStack): rewrite network alloaction tests (Tibor Dudlák)
- 777862f feat(OpenStack): Provide a way to disable network spreading (Tibor Dudlák)
- ff7331d fix(OpenStack): fix condition for network to get in interval (Tibor Dudlák)
- 943316d fix: fqdn in name is ignored and mrack guesses the name instead #237 (Tibor Dudlák)
- 46141dc feat(AWS): Add utilization check method (Tibor Dudlák)
- bb80060 feat(OpenStack): Add utilization check method (Tibor Dudlák)
- 55f9c2c feat: Do not use same sleep for every mrack run (Tibor Dudlák)
- 6ce3927 test(AnsibleInventory): global level output values override (Tibor Dudlák)
- a7a896a feat(AnsibleInventory): Allow additional global level values (Tibor Dudlák)
- 91c562c feat(AnsibleInventory): Allow additional domain level ansible inventory values (Tibor Dudlák)
- 109b03c test(OpenStack): Update calls in openststack tests (Tibor Dudlák)
- 4467cc2 refactor(OpenStack): make private openstack methods truly private (Tibor Dudlák)
- 72b9b9c chore: use custom release_suffix for PR testing via packit (Petr Vobornik)
- f3f734a chore: disable pylint pre-commit hook (Petr Vobornik)
- 4aa9b0a chore(Packit): Add synchronization of tmt plans and tests (Tibor Dudlák)
- 02c3e01 chore(Packit): Configure users on whose actions packit is allowed to be run (Tibor Dudlák)
- cf14ed9 chore(Packit): Add missing ci.fmf to synced files (Tibor Dudlák)
* Tue Dec 13 2022 Tibor Dudlák <tdudlak@redhat.com> - 1.12.3-4
- chore: Add add tmt tests and plans and add them to sync (Tibor Dudlák)
* Tue Dec 13 2022 Tibor Dudlák <tdudlak@redhat.com> - 1.12.3-3
- chore: Add fmf/version and allowed users to run packit (Tibor Dudlák)
* Tue Dec 13 2022 Tibor Dudlák <tdudlak@redhat.com> - 1.12.3-2
- chore: Add ci.fmf to the repo (Tibor Dudlák)
* Tue Dec 13 2022 Packit <hello@packit.dev> - 1.12.3-1
- chore: Release version 1.12.3 (github-actions)
- chore(Packit): Enable copr build for commit to main only. (Tibor Dudlák)
- chore(Packit): Enable TF tests job to run on pull request. (Tibor Dudlák)
- chore(Packit): Add fedora gating.yaml to synced files. (Tibor Dudlák)
- chore(TestingFarm): Add gating for fedora workflow (Tibor Dudlák)
- fix: Add cache decorator for older python versions. (Tibor Dudlák)
- fix(mrack.spec): Missing dependency in c8s for beaker-client (Tibor Dudlák)
- chore(Packit): enable epel-8 and epel-9 updates and tests (Tibor Dudlák)
- fix(AWS): refactor sources to be py3.6 compatible (Tibor Dudlák)
* Fri Dec 02 2022 Packit <hello@packit.dev> - 1.12.2-1
- chore: Release version 1.12.2 (github-actions)
- chore: Use python 3.10 in GH actions (Tibor Dudlák)
- refactor: pylint fixes related to Python 3.10 (Tibor Dudlák)
- test: Fix test_utils.py to be included in pytest run (Tibor Dudlák)
- chore(pytest): add missing python_path when using pytest >=7.0.0 (Tibor Dudlák)
- test: Add test for value_to_bool util function (Tibor Dudlák)
- fix: Owner requirement boolean parsing from string (Tibor Dudlák)
- chore(Packit): Add upstream_tag_template to .packit.yaml (Tibor Dudlák)
* Thu Nov 24 2022 Tibor Dudlák <tdudlak@redhat.com> - 1.12.1-1
- Released upstream version 1.12.1
* Mon Nov 14 2022 Tibor Dudlák <tdudlak@redhat.com> - 1.12.0-1
- Released upstream version 1.12.0
* Thu Nov 03 2022 Tibor Dudlák <tdudlak@redhat.com> - 1.11.0-1
- Released upstream version 1.11.0
* Wed Oct 26 2022 Tibor Dudlák <tdudlak@redhat.com> - 1.10.0-1
- Released upstream version 1.10.0
* Thu Oct 20 2022 Tibor Dudlák <tdudlak@redhat.com> - 1.9.1-1
- Released upstream version 1.9.1
* Wed Oct 12 2022 Tibor Dudlák <tdudlak@redhat.com> - 1.9.0-1
- Released upstream version 1.9.0
* Mon Oct 10 2022 Tibor Dudlák <tdudlak@redhat.com> - 1.8.1-1
- Released upstream version 1.8.1
* Mon Oct 10 2022 Tibor Dudlák <tdudlak@redhat.com> - 1.8.0-1
- Released upstream version 1.8.0
* Tue Sep 20 2022 Tibor Dudlák <tdudlak@redhat.com> - 1.7.0-1
- Released upstream version 1.7.0
* Wed Jul 27 2022 Tibor Dudlák <tdudlak@redhat.com> - 1.6.0-1
- Released upstream version 1.6.0
* Fri Jul 08 2022 Tibor Dudlák <tdudlak@redhat.com> - 1.5.0-1
- Released upstream version 1.5.0
* Fri Jun 17 2022 David Pascual Hernandez <davherna@redhat.com> - 1.4.1-1
- Released upstream version 1.4.1
* Thu May 05 2022 Tibor Dudlák <tdudlak@redhat.com> - 1.4.0-1
- Released upstream version 1.4.0
* Tue Apr 05 2022 Tibor Dudlák <tdudlak@redhat.com> - 1.3.1-1
- Released upstream version 1.3.1
* Fri Apr 01 2022 David Pascual Hernandez <davherna@redhat.com> - 1.3.0-1
- Released upstream version 1.3.0
* Wed Dec 15 2021 Tibor Dudlák <tdudlak@redhat.com> - 1.2.0-1
- Released upstream version 1.2.0
* Thu Nov 25 2021 Tibor Dudlák <tdudlak@redhat.com> - 1.1.1-1
- Released upstream version 1.1.1
* Tue Nov 23 2021 Tibor Dudlák <tdudlak@redhat.com> - 1.1.0-1
- Released upstream version 1.1.0
* Fri Sep 03 2021 Tibor Dudlák <tdudlak@redhat.com> - 1.0.0-1
- Released upstream version 1.0.0
* Thu Jul 01 2021 Tibor Dudlák <tdudlak@redhat.com> - 0.14.0-1
- Released upstream version 0.14.0
* Tue Jun 08 2021 Francisco Triviño <ftrivino@redhat.com> - 0.13.0-1
- Released upstream version 0.13.0
* Thu May 13 2021 Tibor Dudlák <tdudlak@redhat.com> - 0.12.0-1
- Released upstream version 0.12.0
* Fri May 07 2021 Tibor Dudlák <tdudlak@redhat.com> - 0.11.0-1
- Released upstream version 0.11.0
* Fri Apr 30 2021 Bhavik Bhavsar <bbhavsar@redhat.com> - 0.10.0-1
- Released upstream version 0.10.0
* Mon Apr 19 2021 Armando Neto <abiagion@redhat.com> - 0.9.0-1
- Released upstream version 0.9.0
* Thu Apr 15 2021 Armando Neto <abiagion@redhat.com> - 0.8.0-1
- Released upstream version 0.8.0
* Tue Mar 23 2021 Armando Neto <abiagion@redhat.com> - 0.7.1-1
- Released upstream version 0.7.1
* Mon Mar 22 2021 Tibor Dudlák <tdudlak@redhat.com> - 0.7.0-1
- Released upstream version 0.7.0
* Thu Feb 04 2021 Armando Neto <abiagion@redhat.com> - 0.6.0-1
- Initial package.

9
plans/tests.fmf Normal file
View file

@ -0,0 +1,9 @@
summary: Smoke test for mrack
discover:
how: fmf
prepare:
- how: shell
script:
- dnf remove -y `rpm -qa | grep mrack`
execute:
how: tmt

1
sources Normal file
View file

@ -0,0 +1 @@
SHA512 (mrack-1.17.0.tar.gz) = 719e7bb52683da16718de246ca92d93fe887136d0783c7c79b4630b92318108c73038e1822cc1aa90225e542d4371564ce8e87e1504fcd93c518262b0db437fa

8
tests/smoke/main.fmf Normal file
View file

@ -0,0 +1,8 @@
summary: Run Smoke tests
test: ./smoke-test.sh
enabled: true
path: /tests/smoke
require:
- which
framework: beakerlib
duration: 10m

69
tests/smoke/smoke-test.sh Executable file
View file

@ -0,0 +1,69 @@
#!/bin/bash
# Author: Tibor Dudlák
. /usr/share/beakerlib/beakerlib.sh || ( echo "FAILED to source beakerlib" && exit 1 )
export DNF_EXTRA_OPTIONS=$([[ `rpm --eval '%{?dist}' | grep .el8` > /dev/null ]] && echo "--nobest")
install_package () {
rlPhaseStartSetup "Installing $1"
rlRun "dnf install -y $1 $DNF_EXTRA_OPTIONS"
rlPhaseEnd
}
print_and_remove_mrack_log(){
rlPhaseStartTest "Print and remove mrack.log"
rlRun "cat mrack.log && rm -f mrack.log"
rlPhaseEnd
}
rm_mracklog_run_mrack_up () {
rlPhaseStartTest "Remove mrack.log and run mrack up"
rlRun "rm -f mrack.log"
rlRun "mrack up 2>&1 | grep 'Installed providers:'"
rlPhaseEnd
}
rlJournalStart
rlPhaseStartSetup "Check required packages and absence of mrack"
rlAssertRpm "which"
rlRun "dnf remove -y `rpm -qa | grep mrack` || true"
rlPhaseEnd
rlPhaseStartTest "mrack should not be pre-installed on system"
rlRun "python3 -c \"import mrack\"" 1
rlPhaseEnd
install_package "python3-mracklib"
rlPhaseStartTest "mrack command NOT present on system"
rlRun "which mrack 2>&1 | grep -i 'no' | grep 'mrack'"
rlPhaseEnd
install_package "mrack-cli"
rlPhaseStartTest "mrack command present on system"
rlRun "which mrack | grep 'bin/mrack'"
rlRun "mrack --version"
rlPhaseEnd
install_package "python3-mrack-beaker"
rm_mracklog_run_mrack_up
install_package "mrack"
rm_mracklog_run_mrack_up
print_and_remove_mrack_log
rlPhaseStartSetup "Reinstall mrack"
rlRun "dnf reinstall mrack -y"
rlPhaseEnd
rm_mracklog_run_mrack_up
print_and_remove_mrack_log
rlJournalEnd