Metadata-Version: 2.4
Name: genesis_core
Version: 0.0.6
Summary: Genesis Core services
Author-email: Genesis Corporation <eugene@frolov.net.ru>
License: Apache-2.0
Project-URL: homepage, https://github.com/infraguys/genesis_core/
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: oslo.config<10.0.0,>=3.22.2
Requires-Dist: bjoern>=3.2.2
Requires-Dist: gcl_looper<2.0.0,>=1.0.1
Requires-Dist: restalchemy<16.0.0,>=15.0.1
Requires-Dist: libvirt-python<12.0.0,>=11.0.0
Requires-Dist: Authlib<2.0.0,>=1.3.2
Requires-Dist: bazooka<2.0.0,>=1.3.0
Requires-Dist: Jinja2<4.0.0,>=3.1.5
Requires-Dist: izulu<1.0.0,>=0.50.0
Requires-Dist: gcl_iam<2.0.0,>=1.2.0
Requires-Dist: gcl_sdk<3.0.0,>=2.2.0
Requires-Dist: gcl_certbot_plugin<1.0.0,>=0.0.5
Requires-Dist: pyotp<3.0.0,>=2.9.0
Requires-Dist: pyyaml<7.0.0,>=6.0.0
Requires-Dist: netaddr<2.0.0,>=1.3.0
Requires-Dist: cryptography<47.0.0,>=45.0.5
Requires-Dist: firebase-admin<7.0.0,>=6.0.0
Requires-Dist: altcha<0.3.0,>=0.2.0
Requires-Dist: openapi-schema-validator>=0.8.1
Provides-Extra: dev
Requires-Dist: tox>=4.0.0; extra == "dev"
Requires-Dist: tox-uv; extra == "dev"
Requires-Dist: pytest>=7.0.0; extra == "dev"
Provides-Extra: test
Requires-Dist: coverage>=4.0; extra == "test"
Requires-Dist: mock<4.0.0,>=3.0.5; extra == "test"
Requires-Dist: pytest<9.0.0,>=8.0.0; extra == "test"
Requires-Dist: pytest-xdist[psutil]<4.0.0,>=3.6.1; extra == "test"
Requires-Dist: pytest-timer<2.0.0,>=1.0.0; extra == "test"
Requires-Dist: dnspython<3.0.0,>=2.6.0; extra == "test"
Requires-Dist: ruamel-yaml==0.17.26; extra == "test"
Provides-Extra: mypy
Requires-Dist: mypy; extra == "mypy"
Provides-Extra: ruff
Requires-Dist: ruff; extra == "ruff"
Provides-Extra: shellcheck
Requires-Dist: shellcheck-py; extra == "shellcheck"
Provides-Extra: docs
Requires-Dist: mkdocs-material==9.1.0; extra == "docs"
Requires-Dist: mkdocs-glightbox; extra == "docs"
Requires-Dist: mkdocs-render-swagger-plugin; extra == "docs"
Requires-Dist: mkdocs-static-i18n[material]; extra == "docs"

![Tests workflow](https://github.com/infraguys/genesis_core/actions/workflows/tests.yml/badge.svg)
![Build workflow](https://github.com/infraguys/genesis_core/actions/workflows/build.yml/badge.svg)

<p align="center">
<img height="256" src="logo.svg" alt="genesis core svg logo">
</p>

Welcome to Genesis Core!

The Genesis Core is an open source software that offers a one turnkey solution to deal with infrastructure at all levels - from bare metal and virtual machines to applications and services.

Refer to the [wiki](https://github.com/infraguys/genesis_core/wiki) for more detailed information.

# 📦 Installation

There are several ways to install Genesis Core and depend on your purpose you can choose one of them.

## Try it out

If you want to try Genesis Core in a few minutes, download the `all-in-one` [stand](https://github.com/infraguys/gci_dev_all_in_one). It's a ready-to-go virtual machine image with preinstalled Genesis Core and ability to get full functionality such as creating inner(nested) virtual machines, installation elements and many others.
This stand may be used for development purposes as well if you are focusing on a new element development.

## Basic usage

In a case you would like to run Genesis Core on your own infrastructure, you can use the [basic guide](https://github.com/infraguys/genesis_core/wiki/BasicUsage) for more details.

# 🚀 Development

**Ubuntu:**

```bash
sudo apt-get install build-essential python3.12-dev python3.12-venv \
    libev-dev libvirt-dev curl
curl -LsSf https://astral.sh/uv/install.sh | sh
source "$HOME"/.local/bin/env
uv tool install tox --with tox-uv
```

**Fedora:**

```bash
sudo dnf install gcc libev-devel libvirt-devel curl
curl -LsSf https://astral.sh/uv/install.sh | sh
source "$HOME"/.local/bin/env
uv tool install tox --with tox-uv 
```

Initialize virtual environment:

```bash
tox -e develop
source .tox/develop/bin/activate
```

Follow the development guide [here](https://github.com/infraguys/genesis_core/wiki/DevelopmentGuide) for more details.

# ⚙️ Tests

**NOTE:** Python version 3.12 is supposed to be used, but you can use other versions

```bash
# Unit tests
tox -e py312

# Functional tests
tox -e py312-functional
```

## Functional tests environment

To run functional tests, export the following environment variables:

```bash
export DATABASE_URI="postgresql://genesis_core:genesis_core@127.0.0.1:5432/genesis_core"
export ADMIN_PASSWORD="admin"
export DEFAULT_CLIENT_SECRET="GenesisCoreSecret"
export GLOBAL_SALT="FOy/2kwwdn0ig1QOq7cestqe"
export HS256_KEY="secret"
```

# 🔗 Related projects

- Genesis SDK is a set of tools for developing Genesis elements. You can find it [here](https://github.com/infraguys/gcl_sdk).
- Genesis DevTools it's a set oftools to manager life cycle of genesis projects. You can find it [here](https://github.com/infraguys/genesis_devtools).

# 💡 Contributing

Contributing to the project is highly appreciated! However, some rules should be followed for successful inclusion of new changes in the project:

- All changes should be done in a separate branch.
- Changes should include not only new functionality or bug fixes, but also tests for the new code.
- After the changes are completed and **tested**, a Pull Request should be created with a clear description of the new functionality. And add one of the project maintainers as a reviewer.
- Changes can be merged only after receiving an approve from one of the project maintainers.
