Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: Use tuned files instead of using it as a module #220

Merged
merged 2 commits into from
Aug 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions .github/config/ubuntu-requirements.txt

This file was deleted.

2 changes: 1 addition & 1 deletion .sanity-ansible-ignore-2.10.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
plugins/modules/kernel_settings.py validate-modules:missing-gplv3-license
plugins/modules/kernel_settings_get_config.py validate-modules:missing-gplv3-license
2 changes: 1 addition & 1 deletion .sanity-ansible-ignore-2.11.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
plugins/modules/kernel_settings.py validate-modules:missing-gplv3-license
plugins/modules/kernel_settings_get_config.py validate-modules:missing-gplv3-license
2 changes: 1 addition & 1 deletion .sanity-ansible-ignore-2.12.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
plugins/modules/kernel_settings.py validate-modules:missing-gplv3-license
plugins/modules/kernel_settings_get_config.py validate-modules:missing-gplv3-license
2 changes: 1 addition & 1 deletion .sanity-ansible-ignore-2.13.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
plugins/modules/kernel_settings.py validate-modules:missing-gplv3-license
plugins/modules/kernel_settings_get_config.py validate-modules:missing-gplv3-license
2 changes: 1 addition & 1 deletion .sanity-ansible-ignore-2.14.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
plugins/modules/kernel_settings.py validate-modules:missing-gplv3-license
plugins/modules/kernel_settings_get_config.py validate-modules:missing-gplv3-license
2 changes: 1 addition & 1 deletion .sanity-ansible-ignore-2.15.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
plugins/modules/kernel_settings.py validate-modules:missing-gplv3-license
plugins/modules/kernel_settings_get_config.py validate-modules:missing-gplv3-license
2 changes: 1 addition & 1 deletion .sanity-ansible-ignore-2.16.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
plugins/modules/kernel_settings.py validate-modules:missing-gplv3-license
plugins/modules/kernel_settings_get_config.py validate-modules:missing-gplv3-license
2 changes: 1 addition & 1 deletion .sanity-ansible-ignore-2.17.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
plugins/modules/kernel_settings.py validate-modules:missing-gplv3-license
plugins/modules/kernel_settings_get_config.py validate-modules:missing-gplv3-license
2 changes: 1 addition & 1 deletion .sanity-ansible-ignore-2.9.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
plugins/modules/kernel_settings.py validate-modules:missing-gplv3-license
plugins/modules/kernel_settings_get_config.py validate-modules:missing-gplv3-license
3 changes: 0 additions & 3 deletions ansible_pytest_extra_requirements.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
# SPDX-License-Identifier: MIT

# ansible and dependencies for all supported platforms
ansible ; python_version > "2.6"
idna<2.8 ; python_version < "2.7"
PyYAML<5.1 ; python_version < "2.7"
115 changes: 0 additions & 115 deletions contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,118 +19,3 @@ are likely to be suitable for new contributors!

**Code** is managed on [Github](https://github.com/linux-system-roles/kernel_settings), using
[Pull Requests](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/about-pull-requests).

## Python Code

The Python code needs to be **compatible with the Python versions supported by
the role platform**.

For example, see [meta](https://github.com/linux-system-roles/kernel_settings/blob/main/meta/main.yml)
for the platforms supported by the role.

If the role provides Ansible modules (code in `library/` or `module_utils/`) -
these run on the *managed* node, and typically[1] use the default system python:

* EL6 - python 2.6
* EL7 - python 2.7 or python 3.6 in some cases
* EL8 - python 3.6
* EL9 - python 3.9

If the role provides some other sort of Ansible plugin such as a filter, test,
etc. - these run on the *control* node and typically use whatever version of
python that Ansible uses, which in many cases is *not* the system python, and
may be a modularity release such as python311.

In general, it is a good idea to ensure the role python code works on all
versions of python supported by `tox-lsr` from py36 on, and on py27 if the role
supports EL7, and on py26 if the role supports EL6.[1]

[1] Advanced users may set
[ansible_python_interpreter](https://docs.ansible.com/ansible/latest/reference_appendices/special_variables.html#term-ansible_python_interpreter)
to use a non-system python on the managed node, so it is a good idea to ensure
your code has broad python version compatibility, and do not assume your code
will only ever be run with the default system python.

## Testing kernel_settings modules

It is recommended to use `tox` to set up your `virtualenv` for
development/testing purposes:

```bash
dnf/yum install python-tox
tox -e py38
```

You can also use the virtualenv created by `tox` just like any
other virtualenv created by `python-virtualenv`:

```bash
. .tox/env-py38/bin/activate
python
>>> import package.that.only.exists.in.venv
```

The unit tests and other tests are run by default when you use `tox` by itself
or `tox -e py38` for a specific python versioned environment. Note that other
operating system packages may be required to be installed in order for `tox`
to use `pip` to install python dependencies e.g. for python packages which
have native components.

I would also strongly encourage you to use an IDE for development. For example,
Visual Studio code python extension auto-discovers tests and allows you to
run and debug unit tests. However, you may need to create a `.env` file like
this, in order for code navigation, auto-completion, and test discovery to
work correctly:

```bash
PYTHONPATH=/full/path/to/tuned:/full/path/to/linux-system-roles/kernel_settings/library
```

### Testing the module

[Ansible Module Development Guide](https://docs.ansible.com/ansible/latest/dev_guide/developing_modules_general.html)

Using a tox python virtualenv from the `kernel_settings` directory:

```bash
. .tox/env-py38/bin/activate
TESTING=true [TEST_PROFILE=kernel_settings] python \
library/kernel_settings.py args.json
```

looks for test profiles under `tests/tuned/etc/tuned`

to run the code in the debugger:

```bash
TESTING=true [TEST_PROFILE=kernel_settings] python -mpdb \
library/kernel_settings.py args.json
```

Where `args.json` looks like this:

```json
{
"ANSIBLE_MODULE_ARGS": {
"name": "kernel_settings",
"sysctl": [
{"name": "fs.inotify.max_user_watches", "value": 524288},
{"name": "kernel.threads-max", "value": 30001}
],
"sysfs": [
{"name": "/sys/kernel/kexec_crash_size", "value": 337641472}
],
"bootloader": [
{"name": "cmdline", "value": [
{"name": "mitigations", "value": "on"},
{"name": "another"}
]
}
],
"selinux": [
{"name": "avc_cache_threshold", "value": 512}
],
"purge": false
}
}
```
Loading
Loading