Wrapper around https://github.com/openshift/openshift-restclient-python
Project description
openshift-python-wrapper
Pypi: openshift-python-wrapper A python wrapper for openshift-restclient-python with support for RedHat Container Virtualization. (Openshift Virtualization) Docs: openshift-python-wrapper docs
Installation
From source:
git clone https://github.com/RedHatQE/openshift-python-wrapper.git
cd openshift-python-wrapper
python setup.py install --user
From pypi:
pip install openshift-python-wrapper --user
Release new version
requirements:
- Export GitHub token
export GITHUB_TOKEN=<your_github_token>
sudo npm install --global release-it
npm install --save-dev @j-ulrich/release-it-regex-bumper
rm -f package.json package-lock.json
usage:
- Create a release, run from the relevant branch. To create a 4.10 release, run:
git checkout v4.10
release-it # Follow the instructions
docs
Hosted on readthedocs.io openshift-python-wrapper
PR dependency
For PR dependency we use dpulls
To make PR depends on other PR add depends on #<PR NUMBER>
in the PR description.
Logging configuration
To change log level export OPENSHIFT_PYTHON_WRAPPER_LOG_LEVEL:
export OPENSHIFT_PYTHON_WRAPPER_LOG_LEVEL=<LOG_LEVEL> # can be: "DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"
Examples
Client
client = DynamicClient(client=kubernetes.config.new_client_from_config())
The examples given below are relevant to all resources. For simplicity we will use the resource - Namespace.
Import
Import Namespace:
from resources.namespace import Namespace
Create
Create a Namespace:
ns = Namespace(name="namespace-example-1")
ns.create()
Will return True
if creation succeeded.
We can also use the with
statement which ensures automatic clean-up of the code executed:
with Namespace(name="namespace-example-2") as ns:
yield ns
teardown=False
- Disables clean-up after execution.
Wait
Wait for Namespace to be in status Active
:
ns.wait_for_status(status=Namespace.Status.ACTIVE, timeout=120)
Will raise a TimeoutExpiredError
if Namespace is not in the desired status.
Delete
Delete the Namespace
ns.delete()
Will return False
if not found.
Exists
Checks if Namespace exists on the server:
ns.exists
Will return None
if not found.
Get
Query to get Pods (resource) in the connected cluster with label of label_example=example
. Returns a generator
of the resource - pod
for pod in Pod.get(dyn_client=client, label_selector="label_example=example")):
pod.log()
We can also get the name of the Node that the pod
is running on:
pod.node.name
VM
Start:
with VirtualMachine(
name="vm-example",
namespace="namespace-example",
node_selector="worker-node-example",
) as vm:
vm.start()
Stop:
vm.stop()
Restart:
vm.restart()
Get VMI:
test_vmi = vm.vmi
After having a VMI, we can wait until VMI is in running state:
test_vmi.wait_until_running()
Will raise TimeoutExpiredError
if VMI failed to run.
Then, we can get the Pod that is in Running state and execute a command on it:
command_output = test_vmi.virt_launcher_pod.execute(command="command-example")
If no Pod was found, will raise ResourceNotFoundError
.
NNCP Capture Syntax
Using capture syntax to switch ipv4 config between interfaces
with NodeNetworkConfigurationPolicy(
name="capture_nncp",
capture={'first-nic': 'interfaces.name=="ens8"',
'second-nic': 'interfaces.name=="ens9"'},
teardown=False, # Capture doesn't support reverting config on teardown
...
) as nncp:
nncp.add_interface(name="{{ capture.first-nic.interfaces.0.name }}", set_ipv4="{{ capture.second-nic.interfaces.0.ipv4 }}")
nncp.add_interface(name="{{ capture.second-nic.interfaces.0.name }}", set_ipv4="{{ capture.first-nic.interfaces.0.ipv4 }}")
yield nncp
Code check
We use pre-commit for code check.
pre-commit install
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file openshift-python-wrapper-2.6.4.4.tar.gz
.
File metadata
- Download URL: openshift-python-wrapper-2.6.4.4.tar.gz
- Upload date:
- Size: 40.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.11.3 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.64.0 CPython/3.9.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 076da77028ac219f993253d7864c48f2ed32bbc702ceace9079a662ba0a2d604 |
|
MD5 | ef81e995eafe5cb1acb17d60d125e345 |
|
BLAKE2b-256 | 7ecac01d8219043d1b5c2fb66312c92e6d1cae0260f0e57c00e71957916f2395 |