OpenShift Python Scale Utilities
Project description
openshift-python-scale-utilities
Pypi: openshift-python-scale-utilities
Utilities to assist in scaling openshift-python-wrapper resources
ocp_scale_utilities.threaded
Utilizes ThreadPoolExecutor to operate on many resources in parallel across multiple threads.
Usage
from ocp_resources.virtual_machine import VirtualMachine
from ocp_scale_utilities.threaded.utils import (
threaded_deploy_resources,
threaded_delete_resources,
threaded_wait_deleted_resources,
)
from ocp_scale_utilities.threaded.scale import ThreadedScaleResources
# Create iterable of VirtualMachine python objects to deploy
# Be sure to use deepcopy() when passing dicts to objects to avoid collisions
vms = [VirtualMachine(..., body=deepcopy(body))]
# Option A:
def funcA():
threaded_deploy_resources(resources=vms)
yield vms
threaded_delete_resources(resources=vms)
threaded_wait_deleted_resources(resources=vms)
# Option B:
def funcB():
with ThreadedScaleResources(resources=vms, wait_for_status=VirtualMachine.Status.RUNNING):
yield vms
ocp_scale_utilities.monitoring
MonitorResourceAPIServerRequests provides a way to monitor a specific resource to determine if it is being actively used.
This allows the ability to wait for resources to settle after a major scale action,
improving reliability, and increasing readability in prometheus data.
Usage
from ocp_resources.virtual_machine import VirtualMachine
from ocp_scale_utilities.monitoring import MonitorResourceAPIServerRequests
from ocp_scale_utilities.threaded.scale import ThreadedScaleResources
from ocp_utilities.monitoring import Prometheus
monitor_api_requests = MonitorResourceAPIServerRequests(
prometheus=Prometheus(...),
resource_class=VirtualMachine,
idle_requests_value=float(...), # Based on apiserver_request_total metric
)
monitor_api_requests.wait_for_idle()
with ThreadedScaleResources(resources=vms):
monitor_api_requests.wait_for_idle()
yield vms
monitor_api_requests.wait_for_idle()
ocp_scale_utilities.logger
Logging at scale requires utilizing logging.QueueHandlers to avoid logging to closed streams.
root QueueHandler ┐ ┌> StreamHandler
├> Queue -> QueueListener ┤
basic QueueHandler ┘ └> FileHandler
Usage
main.py
import logging
from ocp_scale_utilities.logger import setup_logging
from module import func
LOGGER = None
def main():
LOGGER.warning("main logged warning message")
func()
if __name__ == "__main__":
log_listener = setup_logging(log_level=logging.WARNING, log_file="/tmp/example.log")
LOGGER = logging.getLogger(__name__)
main()
log_listener.stop()
module.py
import logging
LOGGER = logging.getLogger(__name__)
def func():
LOGGER.warning("func logged warning message")
Contributing
Please use pre-commit to check the code before commiting
pre-commit install
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file openshift_python_scale_utilities-0.1.1.3-py3-none-any.whl.
File metadata
- Download URL: openshift_python_scale_utilities-0.1.1.3-py3-none-any.whl
- Upload date:
- Size: 11.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c024069338664dfdd455c882f9616f366920add9cd5433e6790227fc58ad9337
|
|
| MD5 |
b1ed03fa3dd9a4a5619abcccd33d477b
|
|
| BLAKE2b-256 |
0b1bf52df5a81d50fba88fcf0303c00d5d9c8941d90e6ab9945d54a4a7dbf96f
|