diff options
author | CoprDistGit <infra@openeuler.org> | 2023-04-12 00:06:30 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-04-12 00:06:30 +0000 |
commit | feab6e49c6066710903a719489f0f6bcae586734 (patch) | |
tree | 7d00ac17bd96525fd7adb95c89ae89e2dab3899c | |
parent | 46285ee035ea4dc8492f53943e32094fb93240d5 (diff) |
automatic import of python-chaostoolkit-lib
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-chaostoolkit-lib.spec | 719 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 721 insertions, 0 deletions
@@ -0,0 +1 @@ +/chaostoolkit-lib-1.34.1.tar.gz diff --git a/python-chaostoolkit-lib.spec b/python-chaostoolkit-lib.spec new file mode 100644 index 0000000..738befa --- /dev/null +++ b/python-chaostoolkit-lib.spec @@ -0,0 +1,719 @@ +%global _empty_manifest_terminate_build 0 +Name: python-chaostoolkit-lib +Version: 1.34.1 +Release: 1 +Summary: Chaos Toolkit core library +License: Apache License Version 2.0 +URL: https://chaostoolkit.org +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/d9/01/f96721e61b36cc765c6f090e6f0c7b6ca6bcbfb115f28a4dc176f33bc137/chaostoolkit-lib-1.34.1.tar.gz +BuildArch: noarch + +Requires: python3-logzero +Requires: python3-requests +Requires: python3-pyyaml +Requires: python3-importlib-metadata +Requires: python3-cchardet +Requires: python3-chardet +Requires: python3-jsonpath2 +Requires: python3-hvac + +%description +# Chaos Toolkit Core Library + +[](https://img.shields.io/pypi/v/chaostoolkit-lib.svg) +[](https://img.shields.io/pypi/l/chaostoolkit-lib.svg) + + +[](https://codecov.io/gh/chaostoolkit/chaostoolkit-lib) +[](https://www.python.org/) + + +The Chaos Toolkit core library implementing the [Open Chaos Initiative][oci]. + +[oci]: https://openchaos.io/ + +[](https://chaostoolkit.org/) + +## Purpose + +The purpose of this library is to provide the core of the Chaos Toolkit +[model][concepts] and functions it needs to render its services. + +Unless you wish to create your own toolkit, you will likely not use directly +this library. + +[concepts]: https://docs.chaostoolkit.org/reference/concepts/ + +## Features + +The library provides the followings features: + +* discover capabilities from extensions + Allows you to explore the support from an extension that would help you + initialize an experiment against the system this extension targets + +* validate a given experiment syntax + The validation looks at various keys in the experiment and raises errors + whenever something doesn't look right. + As a nice addition, when a probe calls a Python function with arguments, + it tries to validate the given argument list matches the signature of the + function to apply. + +* run your steady state before and after the method. The former as a gate to + decide if the experiment can be executed. The latter to see if the system + deviated from normal. + +* run probes and actions declared in an experiment + It runs the steps in a experiment method sequentially, applying first steady + probes, then actions and finally close probes. + + A journal, as a JSON payload, is return of the experiment run. + + The library supports running probes and actions defined as Python functions, + from importable Python modules, processes and HTTP calls. + +* run experiment's rollbacks when provided + +* Load secrets from the experiments, the environ or [vault][vault] + +* Provides event notification from Chaos Toolkit flow (although the actual + events are published by the CLI itself, not from this library), supported + events are: + * on experiment validation: started, failed or completed + * on discovery: started, failed or completed + * on initialization of experiments: started, failed or completed + * on experiment runs: started, failed or completed + + For each event, the according payload is part of the event as well as a UTC + timestamp. + +[vault]: https://www.vaultproject.io/ + +## Install + +If you are user of the Chaos Toolkit, you probably do not need to install this +package yourself as it comes along with the [chaostoolkit cli][cli]. + +[cli]: https://github.com/chaostoolkit/chaostoolkit + +However, should you wish to integrate this library in your own Python code, +please install it as usual: + +``` +$ pip install -U chaostoolkit-lib +``` + +### Specific dependencies + +In addition to essential dependencies, the package can install a couple of +other extra dependencies for specific use-cases. They are not mandatory and +the library will warn you if you try to use a feature that requires them. + +### Vault + +If you need [Vault][vault] support to read secrets from, run the following +command: + +[vault]: https://www.vaultproject.io/ +``` +$ pip install -U chaostoolkit-lib[vault] +``` + +To authenticate with Vault, you can either: +* Use a token through the `vault_token` configuration key +* Use an [AppRole][approle] via the `vault_role_id`, `vault_secret_id` pair of configuration keys +* Use a [service account][serviceaccount] configured with an appropriate [role][role] via the `vault_sa_role` configuration key. The `vault_sa_token_path`, `vault_k8s_mount_point`, and `vault_secrets_mount_point` configuration keys can optionally be specified to point to a location containing a service account [token][sa-token], a different Kubernetes authentication method [mount point][k8s-mount], or a different secrets [mount point][secrets-mount], respectively. + +[approle]: https://www.vaultproject.io/docs/auth/approle.html +[serviceaccount]: https://www.vaultproject.io/api/auth/kubernetes/index.html +[role]: https://www.vaultproject.io/api/auth/kubernetes/index.html#create-role +[sa-token]: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#service-account-token-volume-projection +[k8s-mount]: https://www.vaultproject.io/docs/auth/kubernetes.html +[secrets-mount]: https://www.vaultproject.io/api/secret/kv/kv-v1.htm + + +### JSON Path + +If you need [JSON Path support][jpath] for tolerance probes in the hypothesis, +also run the following command: + +[jpath]: http://goessner.net/articles/JsonPath/ + +``` +$ pip install -U chaostoolkit-lib[jsonpath] +``` + +When using a process activity, the standard output end error streams are logged +into the `chaostoolkit.log` file. The default encoding used is `utf-8` to decode +those streams. Sometimes, this is not the right encoding, so you can install +the [chardet][] or [cchardet][] packages to attempt the detection of the right +encoding. + +[chardet]: https://chardet.readthedocs.io/en/latest/ +[cchardet]: https://github.com/PyYoshi/cChardet + +``` +$ pip install -U chaostoolkit-lib[decoders] +``` + +## Contribute + +Contributors to this project are welcome as this is an open-source effort that +seeks [discussions][join] and continuous improvement. + +[join]: https://join.chaostoolkit.org/ + +From a code perspective, if you wish to contribute, you will need to run a +Python 3.6+ environment. Please, fork this project, write unit tests to cover +the proposed changes, implement the changes, ensure they meet the formatting +standards set out by `black`, `flake8`, and `isort`, add an entry into +`CHANGELOG.md`, and then raise a PR to the repository for review. + +Please refer to the [formatting](#formatting-and-linting) section for more +information on the formatting standards. + +The Chaos Toolkit projects require all contributors must sign a +[Developer Certificate of Origin][dco] on each commit they would like to merge +into the master branch of the repository. Please, make sure you can abide by +the rules of the DCO before submitting a PR. + +[dco]: https://github.com/probot/dco#how-it-works + + +### Develop + +If you wish to develop on this project, make sure to install the development +dependencies. But first, [create a virtual environment][venv] and then install +those dependencies. + +[venv]: http://chaostoolkit.org/reference/usage/install/#create-a-virtual-environment + + +```console +$ make install-dev +``` + +Now, you can edit the files and they will be automatically be seen by your +environment, even when running from the `chaos` command locally. + +### Test + +To run the tests for the project execute the following: + +``` +$ make tests +``` + +### Formatting and Linting + +We use a combination of [`black`][black], [`flake8`][flake8], and [`isort`][isort] +to both lint and format this repositories code. + +[black]: https://github.com/psf/black +[flake8]: https://github.com/PyCQA/flake8 +[isort]: https://github.com/PyCQA/isort + +Before raising a Pull Request, we recommend you run formatting against your +code with: + +```console +$ make format +``` + +This will automatically format any code that doesn't adhere to the formatting +standards. + +As some things are not picked up by the formatting, we also recommend you run: + +```console +$ make lint +``` + +To ensure that any unused import statements/strings that are too long, etc. +are also picked up. + + +%package -n python3-chaostoolkit-lib +Summary: Chaos Toolkit core library +Provides: python-chaostoolkit-lib +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-chaostoolkit-lib +# Chaos Toolkit Core Library + +[](https://img.shields.io/pypi/v/chaostoolkit-lib.svg) +[](https://img.shields.io/pypi/l/chaostoolkit-lib.svg) + + +[](https://codecov.io/gh/chaostoolkit/chaostoolkit-lib) +[](https://www.python.org/) + + +The Chaos Toolkit core library implementing the [Open Chaos Initiative][oci]. + +[oci]: https://openchaos.io/ + +[](https://chaostoolkit.org/) + +## Purpose + +The purpose of this library is to provide the core of the Chaos Toolkit +[model][concepts] and functions it needs to render its services. + +Unless you wish to create your own toolkit, you will likely not use directly +this library. + +[concepts]: https://docs.chaostoolkit.org/reference/concepts/ + +## Features + +The library provides the followings features: + +* discover capabilities from extensions + Allows you to explore the support from an extension that would help you + initialize an experiment against the system this extension targets + +* validate a given experiment syntax + The validation looks at various keys in the experiment and raises errors + whenever something doesn't look right. + As a nice addition, when a probe calls a Python function with arguments, + it tries to validate the given argument list matches the signature of the + function to apply. + +* run your steady state before and after the method. The former as a gate to + decide if the experiment can be executed. The latter to see if the system + deviated from normal. + +* run probes and actions declared in an experiment + It runs the steps in a experiment method sequentially, applying first steady + probes, then actions and finally close probes. + + A journal, as a JSON payload, is return of the experiment run. + + The library supports running probes and actions defined as Python functions, + from importable Python modules, processes and HTTP calls. + +* run experiment's rollbacks when provided + +* Load secrets from the experiments, the environ or [vault][vault] + +* Provides event notification from Chaos Toolkit flow (although the actual + events are published by the CLI itself, not from this library), supported + events are: + * on experiment validation: started, failed or completed + * on discovery: started, failed or completed + * on initialization of experiments: started, failed or completed + * on experiment runs: started, failed or completed + + For each event, the according payload is part of the event as well as a UTC + timestamp. + +[vault]: https://www.vaultproject.io/ + +## Install + +If you are user of the Chaos Toolkit, you probably do not need to install this +package yourself as it comes along with the [chaostoolkit cli][cli]. + +[cli]: https://github.com/chaostoolkit/chaostoolkit + +However, should you wish to integrate this library in your own Python code, +please install it as usual: + +``` +$ pip install -U chaostoolkit-lib +``` + +### Specific dependencies + +In addition to essential dependencies, the package can install a couple of +other extra dependencies for specific use-cases. They are not mandatory and +the library will warn you if you try to use a feature that requires them. + +### Vault + +If you need [Vault][vault] support to read secrets from, run the following +command: + +[vault]: https://www.vaultproject.io/ +``` +$ pip install -U chaostoolkit-lib[vault] +``` + +To authenticate with Vault, you can either: +* Use a token through the `vault_token` configuration key +* Use an [AppRole][approle] via the `vault_role_id`, `vault_secret_id` pair of configuration keys +* Use a [service account][serviceaccount] configured with an appropriate [role][role] via the `vault_sa_role` configuration key. The `vault_sa_token_path`, `vault_k8s_mount_point`, and `vault_secrets_mount_point` configuration keys can optionally be specified to point to a location containing a service account [token][sa-token], a different Kubernetes authentication method [mount point][k8s-mount], or a different secrets [mount point][secrets-mount], respectively. + +[approle]: https://www.vaultproject.io/docs/auth/approle.html +[serviceaccount]: https://www.vaultproject.io/api/auth/kubernetes/index.html +[role]: https://www.vaultproject.io/api/auth/kubernetes/index.html#create-role +[sa-token]: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#service-account-token-volume-projection +[k8s-mount]: https://www.vaultproject.io/docs/auth/kubernetes.html +[secrets-mount]: https://www.vaultproject.io/api/secret/kv/kv-v1.htm + + +### JSON Path + +If you need [JSON Path support][jpath] for tolerance probes in the hypothesis, +also run the following command: + +[jpath]: http://goessner.net/articles/JsonPath/ + +``` +$ pip install -U chaostoolkit-lib[jsonpath] +``` + +When using a process activity, the standard output end error streams are logged +into the `chaostoolkit.log` file. The default encoding used is `utf-8` to decode +those streams. Sometimes, this is not the right encoding, so you can install +the [chardet][] or [cchardet][] packages to attempt the detection of the right +encoding. + +[chardet]: https://chardet.readthedocs.io/en/latest/ +[cchardet]: https://github.com/PyYoshi/cChardet + +``` +$ pip install -U chaostoolkit-lib[decoders] +``` + +## Contribute + +Contributors to this project are welcome as this is an open-source effort that +seeks [discussions][join] and continuous improvement. + +[join]: https://join.chaostoolkit.org/ + +From a code perspective, if you wish to contribute, you will need to run a +Python 3.6+ environment. Please, fork this project, write unit tests to cover +the proposed changes, implement the changes, ensure they meet the formatting +standards set out by `black`, `flake8`, and `isort`, add an entry into +`CHANGELOG.md`, and then raise a PR to the repository for review. + +Please refer to the [formatting](#formatting-and-linting) section for more +information on the formatting standards. + +The Chaos Toolkit projects require all contributors must sign a +[Developer Certificate of Origin][dco] on each commit they would like to merge +into the master branch of the repository. Please, make sure you can abide by +the rules of the DCO before submitting a PR. + +[dco]: https://github.com/probot/dco#how-it-works + + +### Develop + +If you wish to develop on this project, make sure to install the development +dependencies. But first, [create a virtual environment][venv] and then install +those dependencies. + +[venv]: http://chaostoolkit.org/reference/usage/install/#create-a-virtual-environment + + +```console +$ make install-dev +``` + +Now, you can edit the files and they will be automatically be seen by your +environment, even when running from the `chaos` command locally. + +### Test + +To run the tests for the project execute the following: + +``` +$ make tests +``` + +### Formatting and Linting + +We use a combination of [`black`][black], [`flake8`][flake8], and [`isort`][isort] +to both lint and format this repositories code. + +[black]: https://github.com/psf/black +[flake8]: https://github.com/PyCQA/flake8 +[isort]: https://github.com/PyCQA/isort + +Before raising a Pull Request, we recommend you run formatting against your +code with: + +```console +$ make format +``` + +This will automatically format any code that doesn't adhere to the formatting +standards. + +As some things are not picked up by the formatting, we also recommend you run: + +```console +$ make lint +``` + +To ensure that any unused import statements/strings that are too long, etc. +are also picked up. + + +%package help +Summary: Development documents and examples for chaostoolkit-lib +Provides: python3-chaostoolkit-lib-doc +%description help +# Chaos Toolkit Core Library + +[](https://img.shields.io/pypi/v/chaostoolkit-lib.svg) +[](https://img.shields.io/pypi/l/chaostoolkit-lib.svg) + + +[](https://codecov.io/gh/chaostoolkit/chaostoolkit-lib) +[](https://www.python.org/) + + +The Chaos Toolkit core library implementing the [Open Chaos Initiative][oci]. + +[oci]: https://openchaos.io/ + +[](https://chaostoolkit.org/) + +## Purpose + +The purpose of this library is to provide the core of the Chaos Toolkit +[model][concepts] and functions it needs to render its services. + +Unless you wish to create your own toolkit, you will likely not use directly +this library. + +[concepts]: https://docs.chaostoolkit.org/reference/concepts/ + +## Features + +The library provides the followings features: + +* discover capabilities from extensions + Allows you to explore the support from an extension that would help you + initialize an experiment against the system this extension targets + +* validate a given experiment syntax + The validation looks at various keys in the experiment and raises errors + whenever something doesn't look right. + As a nice addition, when a probe calls a Python function with arguments, + it tries to validate the given argument list matches the signature of the + function to apply. + +* run your steady state before and after the method. The former as a gate to + decide if the experiment can be executed. The latter to see if the system + deviated from normal. + +* run probes and actions declared in an experiment + It runs the steps in a experiment method sequentially, applying first steady + probes, then actions and finally close probes. + + A journal, as a JSON payload, is return of the experiment run. + + The library supports running probes and actions defined as Python functions, + from importable Python modules, processes and HTTP calls. + +* run experiment's rollbacks when provided + +* Load secrets from the experiments, the environ or [vault][vault] + +* Provides event notification from Chaos Toolkit flow (although the actual + events are published by the CLI itself, not from this library), supported + events are: + * on experiment validation: started, failed or completed + * on discovery: started, failed or completed + * on initialization of experiments: started, failed or completed + * on experiment runs: started, failed or completed + + For each event, the according payload is part of the event as well as a UTC + timestamp. + +[vault]: https://www.vaultproject.io/ + +## Install + +If you are user of the Chaos Toolkit, you probably do not need to install this +package yourself as it comes along with the [chaostoolkit cli][cli]. + +[cli]: https://github.com/chaostoolkit/chaostoolkit + +However, should you wish to integrate this library in your own Python code, +please install it as usual: + +``` +$ pip install -U chaostoolkit-lib +``` + +### Specific dependencies + +In addition to essential dependencies, the package can install a couple of +other extra dependencies for specific use-cases. They are not mandatory and +the library will warn you if you try to use a feature that requires them. + +### Vault + +If you need [Vault][vault] support to read secrets from, run the following +command: + +[vault]: https://www.vaultproject.io/ +``` +$ pip install -U chaostoolkit-lib[vault] +``` + +To authenticate with Vault, you can either: +* Use a token through the `vault_token` configuration key +* Use an [AppRole][approle] via the `vault_role_id`, `vault_secret_id` pair of configuration keys +* Use a [service account][serviceaccount] configured with an appropriate [role][role] via the `vault_sa_role` configuration key. The `vault_sa_token_path`, `vault_k8s_mount_point`, and `vault_secrets_mount_point` configuration keys can optionally be specified to point to a location containing a service account [token][sa-token], a different Kubernetes authentication method [mount point][k8s-mount], or a different secrets [mount point][secrets-mount], respectively. + +[approle]: https://www.vaultproject.io/docs/auth/approle.html +[serviceaccount]: https://www.vaultproject.io/api/auth/kubernetes/index.html +[role]: https://www.vaultproject.io/api/auth/kubernetes/index.html#create-role +[sa-token]: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#service-account-token-volume-projection +[k8s-mount]: https://www.vaultproject.io/docs/auth/kubernetes.html +[secrets-mount]: https://www.vaultproject.io/api/secret/kv/kv-v1.htm + + +### JSON Path + +If you need [JSON Path support][jpath] for tolerance probes in the hypothesis, +also run the following command: + +[jpath]: http://goessner.net/articles/JsonPath/ + +``` +$ pip install -U chaostoolkit-lib[jsonpath] +``` + +When using a process activity, the standard output end error streams are logged +into the `chaostoolkit.log` file. The default encoding used is `utf-8` to decode +those streams. Sometimes, this is not the right encoding, so you can install +the [chardet][] or [cchardet][] packages to attempt the detection of the right +encoding. + +[chardet]: https://chardet.readthedocs.io/en/latest/ +[cchardet]: https://github.com/PyYoshi/cChardet + +``` +$ pip install -U chaostoolkit-lib[decoders] +``` + +## Contribute + +Contributors to this project are welcome as this is an open-source effort that +seeks [discussions][join] and continuous improvement. + +[join]: https://join.chaostoolkit.org/ + +From a code perspective, if you wish to contribute, you will need to run a +Python 3.6+ environment. Please, fork this project, write unit tests to cover +the proposed changes, implement the changes, ensure they meet the formatting +standards set out by `black`, `flake8`, and `isort`, add an entry into +`CHANGELOG.md`, and then raise a PR to the repository for review. + +Please refer to the [formatting](#formatting-and-linting) section for more +information on the formatting standards. + +The Chaos Toolkit projects require all contributors must sign a +[Developer Certificate of Origin][dco] on each commit they would like to merge +into the master branch of the repository. Please, make sure you can abide by +the rules of the DCO before submitting a PR. + +[dco]: https://github.com/probot/dco#how-it-works + + +### Develop + +If you wish to develop on this project, make sure to install the development +dependencies. But first, [create a virtual environment][venv] and then install +those dependencies. + +[venv]: http://chaostoolkit.org/reference/usage/install/#create-a-virtual-environment + + +```console +$ make install-dev +``` + +Now, you can edit the files and they will be automatically be seen by your +environment, even when running from the `chaos` command locally. + +### Test + +To run the tests for the project execute the following: + +``` +$ make tests +``` + +### Formatting and Linting + +We use a combination of [`black`][black], [`flake8`][flake8], and [`isort`][isort] +to both lint and format this repositories code. + +[black]: https://github.com/psf/black +[flake8]: https://github.com/PyCQA/flake8 +[isort]: https://github.com/PyCQA/isort + +Before raising a Pull Request, we recommend you run formatting against your +code with: + +```console +$ make format +``` + +This will automatically format any code that doesn't adhere to the formatting +standards. + +As some things are not picked up by the formatting, we also recommend you run: + +```console +$ make lint +``` + +To ensure that any unused import statements/strings that are too long, etc. +are also picked up. + + +%prep +%autosetup -n chaostoolkit-lib-1.34.1 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-chaostoolkit-lib -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Wed Apr 12 2023 Python_Bot <Python_Bot@openeuler.org> - 1.34.1-1 +- Package Spec generated @@ -0,0 +1 @@ +0e76c620476ec831921ab90d0a8b6697 chaostoolkit-lib-1.34.1.tar.gz |