openshift-python-wrapper 4.20.8__tar.gz → 4.20.9__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/.gitignore +0 -1
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/.pre-commit-config.yaml +1 -1
- openshift_python_wrapper-4.20.9/AGENTS.md +90 -0
- openshift_python_wrapper-4.20.9/CLAUDE.md +1 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/CONTRIBUTING.md +24 -5
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/PKG-INFO +9 -4
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/README.md +2 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/fake_kubernetes_client/resource_instance.py +5 -5
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/fake_kubernetes_client/status_schema_parser.py +6 -6
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/fake_kubernetes_client/status_templates.py +21 -21
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/migration.py +1 -1
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/virtual_machine_import.py +1 -1
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/pyproject.toml +7 -4
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/uv.lock +24 -233
- openshift_python_wrapper-4.20.8/.git +0 -1
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/.coderabbit.yaml +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/.dockerignore +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/.flake8 +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/.gitattributes +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/.github/pull_request_template.md +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/.github/weekly-digest.yml +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/.github/workflows/close-stale-issues.yml +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/.gitleaks.toml +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/.readthedocs.yaml +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/.release-it.json +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/.sonarcloud.properties +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/LICENSE +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/Makefile +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/OWNERS +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/VERSION +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/README.md +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/__init__.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/cli.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/constants.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/core/__init__.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/core/coverage.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/core/discovery.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/core/generator.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/core/schema.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/formatters/__init__.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/formatters/file_writer.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/formatters/template_renderer.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/manifests/class_generator_template.j2 +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/parsers/__init__.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/parsers/explain_parser.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/parsers/type_parser.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/parsers/user_code_parser.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/py.typed +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/schema/__cluster_version__.txt +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/schema/__resources-mappings.json.gz +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/schema/_definitions.json +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/tests/manifests/APIServer/api_server.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/tests/manifests/ClusterOperator/cluster_operator.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/tests/manifests/ConfigMap/config_map.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/tests/manifests/DNS/dns_config_openshift_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/tests/manifests/DNS/dns_operator_openshift_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/tests/manifests/Deployment/deployment.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/tests/manifests/ImageContentSourcePolicy/image_content_source_policy.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/tests/manifests/Ingress/ingress_config_openshift_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/tests/manifests/Ingress/ingress_networking_k8s_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/tests/manifests/Machine/machine.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/tests/manifests/NMState/nm_state.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/tests/manifests/OAuth/oauth.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/tests/manifests/Pipeline/pipeline.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/tests/manifests/Pod/pod.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/tests/manifests/RouteAdvertisements/route_advertisements.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/tests/manifests/Secret/secret.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/tests/manifests/ServiceMeshMember/service_mesh_member.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/tests/manifests/ServingRuntime/serving_runtime.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/tests/manifests/test_parse_explain.j2 +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/tests/test_batch_regeneration.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/tests/test_class_generator.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/tests/test_cli.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/tests/test_generation.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/tests/test_resource_discovery.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/tests/test_schema_new_functions.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/tests/test_schema_parsing.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/tests/test_user_code_parser.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/tests/test_utils.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/class_generator/utils.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/docs/Makefile +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/docs/conf.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/docs/index.rst +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/docs/modules.rst +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/docs/ocp_resources.rst +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/examples/general.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/examples/node_network_configuration_policy.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/examples/pods.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/examples/resource_list.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/examples/role.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/examples/special_cases.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/examples/validation_demo.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/examples/validation_troubleshooting.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/examples/virtual_machine.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/fake_kubernetes_client/README.md +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/fake_kubernetes_client/__init__.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/fake_kubernetes_client/configuration.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/fake_kubernetes_client/dynamic_client.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/fake_kubernetes_client/exceptions.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/fake_kubernetes_client/kubernetes_client.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/fake_kubernetes_client/resource_field.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/fake_kubernetes_client/resource_manager.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/fake_kubernetes_client/resource_registry.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/fake_kubernetes_client/resource_storage.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/fake_kubernetes_client/types.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/mcp_server/README.md +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/mcp_server/__init__.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/mcp_server/example_client.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/mcp_server/server-info.json +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/mcp_server/server.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/mcp_server/tests/__init__.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/mcp_server/tests/test_server.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/__init__.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/aaq.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/api_server.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/api_service.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/application_aware_applied_cluster_resource_quota.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/application_aware_cluster_resource_quota.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/application_aware_resource_quota.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/authorino.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/backup.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/benchmark.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/bgp_session_state.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/catalog_source.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/cdi.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/cdi_config.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/chaos_engine.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/chaos_result.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/cluster_claim.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/cluster_deployment.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/cluster_operator.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/cluster_pool.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/cluster_resource_quota.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/cluster_role.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/cluster_role_binding.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/cluster_service_version.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/cluster_user_defined_network.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/cluster_version.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/config_imageregistry_operator_openshift_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/config_map.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/config_operator_openshift_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/config_samples_operator_openshift_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/console_cli_download.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/console_config_openshift_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/console_operator_openshift_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/console_plugin.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/console_quick_start.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/controller_revision.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/cron_job.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/csi_driver.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/csi_storage_capacity.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/custom_resource_definition.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/daemonset.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/data_import_cron.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/data_science_cluster.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/data_source.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/datavolume.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/deployment.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/destination_rule.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/direct_volume_migration.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/direct_volume_migration_progress.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/dns_config_openshift_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/dns_operator_openshift_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/dsc_initialization.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/endpoint_slice.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/endpoints.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/event.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/exceptions.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/fence_agent_remediation_templates.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/forklift_controller.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/frr_configuration.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/gateway.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/gateway_class.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/gateway_gateway_networking_k8s_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/gateway_networking_istio_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/group.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/guardrails_orchestrator.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/hook.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/host.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/hostpath_provisioner.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/hyperconverged.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/image_caching_internal_knative_dev.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/image_config_openshift_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/image_content_source_policy.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/image_digest_mirror_set.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/image_image_openshift_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/image_stream.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/imagestreamtag.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/inference_graph.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/inference_service.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/infrastructure.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/ingress_config_openshift_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/ingress_controller.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/ingress_networking_k8s_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/installplan.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/ip_address_pool.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/jaeger.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/job.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/kube_descheduler.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/kubelet_config.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/kubevirt.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/l2_advertisement.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/lease.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/limit_range.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/llama_stack_distribution.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/llm_inference_service.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/lm_eval_job.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/machine.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/machine_config.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/machine_config_pool.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/machine_health_check.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/machine_set.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/managed_cluster.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/maria_db.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/mariadb_operator.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/metallb.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/mig_analytic.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/mig_cluster.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/mig_controller.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/mig_migration.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/mig_plan.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/migration_policy.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/model_registry.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/model_registry_components_platform_opendatahub_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/model_registry_modelregistry_opendatahub_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/mtq.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/multi_cluster_hub.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/multi_cluster_observability.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/multi_namespace_virtual_machine_storage_migration.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/multi_namespace_virtual_machine_storage_migration_plan.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/multi_network_policy.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/mutating_webhook_config.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/namespace.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/network_addons_config.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/network_attachment_definition.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/network_config_openshift_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/network_map.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/network_operator_openshift_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/network_policy.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/nm_state.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/node.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/node_config_openshift_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/node_health_check.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/node_maintenance.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/node_network_configuration_enactment.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/node_network_configuration_policy.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/node_network_configuration_policy_latest.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/node_network_state.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/notebook.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/oauth.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/ocs_initialization.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/open_telemetry_collector.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/operator.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/operator_condition.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/operator_group.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/operator_hub.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/operator_source.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/package_manifest.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/peer_authentication.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/performance_profile.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/persistent_volume.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/persistent_volume_claim.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/pipeline.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/pipeline_run.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/plan.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/pod.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/pod_disruption_budget.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/pod_metrics.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/priority_class.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/project_config_openshift_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/project_project_openshift_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/project_request.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/prometheus.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/prometheus_rule.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/provider.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/proxy.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/py.typed +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/reclaim_space_cron_job.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/reclaim_space_job.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/replica_set.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/resource.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/resource_quota.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/restore.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/rhmi.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/role.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/role_binding.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/route.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/route_advertisements.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/scaled_object.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/scheduler.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/sealed_secret.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/secret.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/security_context_constraints.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/self_node_remediation_templates.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/self_subject_review.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/service.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/service_account.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/service_mesh_control_plane.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/service_mesh_member.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/service_mesh_member_roll.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/service_monitor.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/service_serving_knative_dev.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/serving_runtime.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/snapshot.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/sriov_network.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/sriov_network_node_policy.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/sriov_network_node_state.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/ssp.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/storage_class.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/storage_cluster.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/storage_map.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/storage_profile.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/subscription.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/task.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/task_run.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/tekton_tasks.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/template.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/tempo_stack.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/trustyai_service.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/upload_token_request.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/user.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/user_defined_network.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/utils/__init__.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/utils/archive_utils.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/utils/constants.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/utils/resource_constants.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/utils/schema_validator.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/utils/utils.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/validating_webhook_config.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/virtual_machine.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/virtual_machine_clone.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/virtual_machine_cluster_instancetype.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/virtual_machine_cluster_preference.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/virtual_machine_export.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/virtual_machine_instance.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/virtual_machine_instance_migration.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/virtual_machine_instance_preset.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/virtual_machine_instance_replica_set.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/virtual_machine_instancetype.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/virtual_machine_migration_resource_quota.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/virtual_machine_preference.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/virtual_machine_restore.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/virtual_machine_snapshot.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/virtual_machine_storage_migration.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/virtual_machine_storage_migration_plan.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/virtual_service.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/vm_import_config.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/volume_snapshot.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/ocp_resources/volume_snapshot_class.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/pypi-dist/.gitignore +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/renovate.json +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/scripts/__init__.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/scripts/diff-from-latest-release.sh +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/scripts/diff-from-tag.sh +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/scripts/generate_changelog.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/scripts/get-latest-release.sh +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/sonar-project.properties +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/__init__.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/conftest.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/fixtures/validation_schemas.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/manifests/vm.yaml +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/scripts/__init__.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/scripts/generate_pytest_test.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/scripts/validate_resources.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_api_group_order.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_camelcase_to_snake.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resource.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resource_validation.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_aaq.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_api_server.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_authorino.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_cdi.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_cdi_config.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_cluster_resource_quota.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_cluster_user_defined_network.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_config_map.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_console_config_openshift_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_console_operator_openshift_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_csi_driver.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_data_import_cron.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_data_science_cluster.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_deployment.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_direct_volume_migration.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_direct_volume_migration_progress.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_dns_config_openshift_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_dns_operator_openshift_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_dsc_initialization.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_group.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_guardrails_orchestrator.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_image_caching_internal_knative_dev.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_image_config_openshift_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_image_content_source_policy.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_image_image_openshift_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_inference_graph.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_kube_descheduler.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_kubelet_config.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_kubevirt.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_llama_stack_distribution.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_lm_eval_job.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_machine.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_maria_db.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_mariadb_operator.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_mig_analytic.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_mig_cluster.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_mig_migration.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_mig_plan.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_model_registry.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_model_registry_components_platform_opendatahub_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_model_registry_modelregistry_opendatahub_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_mtq.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_namespace.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_network_config_openshift_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_network_operator_openshift_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_nm_state.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_node.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_node_config_openshift_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_node_network_configuration_policy_latest.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_notebook.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_oauth.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_operator.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_pod.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_pod_metrics.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_project_config_openshift_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_project_project_openshift_io.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_project_request.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_prometheus.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_replica_set.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_scheduler.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_security_context_constraints.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_self_subject_review.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_service.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_service_mesh_member.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_service_serving_knative_dev.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_serving_runtime.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_snapshot.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_ssp.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_storage_cluster.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_user.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_user_defined_network.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_virtual_machine_cluster_instancetype.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_virtual_machine_cluster_preference.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_virtual_machine_export.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_virtual_machine_instance_migration.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_virtual_machine_instance_preset.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_virtual_machine_instance_replica_set.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_virtual_machine_instancetype.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_virtual_machine_preference.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_volume_snapshot.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_resources/test_volume_snapshot_class.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_schema_loading.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_unittests.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_validate_resources.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_validate_resources_script.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/test_validation_error.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tests/utils.py +0 -0
- {openshift_python_wrapper-4.20.8 → openshift_python_wrapper-4.20.9}/tox.toml +0 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# openshift-python-wrapper
|
|
2
|
+
|
|
3
|
+
Python wrapper for kubernetes-python-client providing simplified CRUD and resource-specific methods for Kubernetes/OpenShift resources (233+ wrappers).
|
|
4
|
+
|
|
5
|
+
## Commands
|
|
6
|
+
|
|
7
|
+
- **Package manager**: `uv` — NEVER use `python` or `pip` directly
|
|
8
|
+
- Build/sync: `uv sync`
|
|
9
|
+
- Test all: `uv run --group tests pytest`
|
|
10
|
+
- Test specific: `uv run --group tests pytest tests/test_daemonset.py`
|
|
11
|
+
- Lint: `prek run`
|
|
12
|
+
- Pre-commit setup: `prek install`
|
|
13
|
+
- Generate resource: `class-generator --kind Pod --add-tests`
|
|
14
|
+
- Full verify: `prek run && uv run --group tests pytest`
|
|
15
|
+
|
|
16
|
+
## Definition of Done
|
|
17
|
+
|
|
18
|
+
A task is complete when ALL pass:
|
|
19
|
+
1. `prek run` exits 0 (ruff, mypy, flake8, detect-secrets, gitleaks)
|
|
20
|
+
2. `uv run --group tests pytest` exits 0 — coverage ≥ 65%
|
|
21
|
+
3. Type hints on all new code (enforced by mypy)
|
|
22
|
+
4. Committed with message: `type(scope): description`
|
|
23
|
+
|
|
24
|
+
## When Blocked
|
|
25
|
+
|
|
26
|
+
- Tests fail after 3 attempts → stop, report failing test with full output
|
|
27
|
+
- Missing dependency → `uv add <package>`, never `pip install`
|
|
28
|
+
- Pre-commit fails → read the error, fix the specific violation
|
|
29
|
+
- 🚫 NEVER: skip tests, force push to main, delete files to fix errors
|
|
30
|
+
|
|
31
|
+
## Project
|
|
32
|
+
|
|
33
|
+
- Stack: Python 3.11-3.14 (requires-python >=3.11,<3.15), kubernetes-python-client, timeout-sampler, uv
|
|
34
|
+
- Structure: `ocp_resources/` (resource wrappers), `tests/` (pytest), `class_generator/` (code gen), `fake_kubernetes_client/` (mock client)
|
|
35
|
+
- Key deps: `kubernetes` (API client), `timeout-sampler` (polling), `openshift-python-utilities` (shared utils)
|
|
36
|
+
- Docs: `examples/`, inline docstrings (Google style)
|
|
37
|
+
|
|
38
|
+
## When Adding a Resource
|
|
39
|
+
|
|
40
|
+
- New resources MUST be generated via `class-generator --kind ResourceName --add-tests` — manual creation is not allowed
|
|
41
|
+
- Reference implementations: `ocp_resources/config_map.py` (namespaced), `ocp_resources/node.py` (cluster-scoped)
|
|
42
|
+
- File naming: `snake_case.py` — class naming: exact Kubernetes `kind` (PascalCase)
|
|
43
|
+
- Namespaced → inherit `NamespacedResource`, cluster-scoped → inherit `Resource`
|
|
44
|
+
- Must implement: `__init__()`, `to_dict()`, `api_group` (if not core v1)
|
|
45
|
+
- Reference: `class_generator/README.md`
|
|
46
|
+
|
|
47
|
+
## Generated Code Markers
|
|
48
|
+
|
|
49
|
+
Resource files from `class-generator` use markers to separate generated from manual code:
|
|
50
|
+
- **Start**: `# Generated using https://...class_generator/README.md` (line 1)
|
|
51
|
+
- **End**: `# End of generated code` (inside class)
|
|
52
|
+
|
|
53
|
+
Code between markers is auto-generated — do NOT modify manually. Use `class-generator --kind <Kind> --overwrite --backup` to regenerate. Custom code (helper methods, overrides) goes BELOW the end marker.
|
|
54
|
+
|
|
55
|
+
## When Writing Code
|
|
56
|
+
|
|
57
|
+
- No client-side validation in `to_dict()` — let the K8s/OCP API server return errors. Helper functions in resource classes CAN validate.
|
|
58
|
+
- Context managers for auto-cleanup: `with Pod(name="test", namespace="default") as pod:`
|
|
59
|
+
- Wait utilities: `wait_for_status()`, `wait_for_condition()` via timeout-sampler
|
|
60
|
+
- Sensitive data: add keys to `keys_to_hash` property for automatic log hashing
|
|
61
|
+
- Fake client for tests: `get_client(fake=True)` — no cluster required
|
|
62
|
+
|
|
63
|
+
## When Reviewing Code
|
|
64
|
+
|
|
65
|
+
- Verify generated code markers are intact — no manual edits between markers
|
|
66
|
+
- Check type hints on all new functions/parameters
|
|
67
|
+
- Verify tests exist for new helper methods (not needed for generated `__init__`/`to_dict`)
|
|
68
|
+
- Import path: `ocp_resources.resource_name` (snake_case with underscores)
|
|
69
|
+
|
|
70
|
+
## Boundaries
|
|
71
|
+
|
|
72
|
+
- ✅ Always: use `uv` for Python ops, run `prek install` before first commit, add typing
|
|
73
|
+
- ⚠️ Ask first: adding new dependencies, modifying base `Resource` class, changing CI
|
|
74
|
+
- 🚫 Never: use `python`/`pip` directly, edit generated code between markers, edit files in `docs/` (regenerate with docsfy instead)
|
|
75
|
+
|
|
76
|
+
## Environment
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
OPENSHIFT_PYTHON_WRAPPER_LOG_LEVEL=DEBUG # DEBUG, INFO, WARNING, ERROR, CRITICAL
|
|
80
|
+
OPENSHIFT_PYTHON_WRAPPER_HASH_LOG_DATA="false" # Disable log hashing
|
|
81
|
+
HTTPS_PROXY="http://proxy:8080" # Proxy support
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Additional References
|
|
85
|
+
|
|
86
|
+
- Contributing guide: `CONTRIBUTING.md`
|
|
87
|
+
- Class generator details: `class_generator/README.md`
|
|
88
|
+
- MCP server: `mcp_server/README.md`
|
|
89
|
+
- Release process: `CONTRIBUTING.md` + `.release-it.json`
|
|
90
|
+
- Fake client: `fake_kubernetes_client/` (CRUD, selectors, watch, status generation)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@AGENTS.md
|
|
@@ -12,7 +12,7 @@ To get an overview of the project, read the [README](README.md).
|
|
|
12
12
|
### Create a new issue
|
|
13
13
|
|
|
14
14
|
If you find a problem with the code, [search if an issue already exists](https://github.com/RedHatQE/openshift-python-wrapper/issues).
|
|
15
|
-
If you open a pull request to fix the problem, an issue will
|
|
15
|
+
If you open a pull request to fix the problem, an issue will be automatically created.
|
|
16
16
|
If a related issue doesn't exist, you can open a new issue using a relevant [issue form](https://github.com/RedHatQE/openshift-python-wrapper/issues/new/choose).
|
|
17
17
|
|
|
18
18
|
## Pull requests
|
|
@@ -37,13 +37,15 @@ prek install
|
|
|
37
37
|
|
|
38
38
|
## Adding a new module (resource)
|
|
39
39
|
|
|
40
|
-
##### Using generator script
|
|
40
|
+
##### Using generator script (REQUIRED)
|
|
41
|
+
|
|
42
|
+
New resources MUST be added via the class generator — manual creation is not allowed.
|
|
41
43
|
|
|
42
44
|
- [class_generator](class_generator/README.md)
|
|
43
45
|
|
|
44
|
-
##### Manual
|
|
46
|
+
##### Manual code (below `# End of generated code` only)
|
|
45
47
|
|
|
46
|
-
|
|
48
|
+
Custom helper methods can be added below the end marker. The generated class structure must follow these rules:
|
|
47
49
|
|
|
48
50
|
- A new file named as the resource under `ocp_resources`; If the resource name is composed of multiple words, separate them with an underscore.
|
|
49
51
|
- A class named as the resource kind.
|
|
@@ -56,4 +58,21 @@ A new resource must follow rules:
|
|
|
56
58
|
Define all the required arguments that are **required** to instantiate the new resource. Optional parameters may be added as well.
|
|
57
59
|
- Implement `to_dict` function.
|
|
58
60
|
|
|
59
|
-
Check [ConfigMap](ocp_resources/
|
|
61
|
+
Check [ConfigMap](ocp_resources/config_map.py) and [Node](ocp_resources/node.py) for reference.
|
|
62
|
+
|
|
63
|
+
### Generated code markers
|
|
64
|
+
|
|
65
|
+
Resource files created by `class-generator` use markers to separate generated from manual code:
|
|
66
|
+
|
|
67
|
+
- **Start marker** (line 1): `# Generated using https://github.com/RedHatQE/openshift-python-wrapper/blob/main/class_generator/README.md`
|
|
68
|
+
- **End marker** (inside class): `# End of generated code`
|
|
69
|
+
|
|
70
|
+
Code between these markers is **auto-generated and must NOT be modified manually**.
|
|
71
|
+
To update generated code, use `class-generator --kind <Kind> --overwrite --backup`.
|
|
72
|
+
Custom code (helper methods, overrides) goes **below** the `# End of generated code` marker.
|
|
73
|
+
|
|
74
|
+
### No client-side validation on resource creation
|
|
75
|
+
|
|
76
|
+
When building resource payloads (`to_dict()`), do NOT validate or block at code level (e.g., mutual exclusivity of fields).
|
|
77
|
+
If a payload can be sent to the API, send it — let the Kubernetes/OpenShift API server return the error.
|
|
78
|
+
Helper functions in resource classes (e.g., `wait_for_rollout()`, `restart()`) CAN perform validation and guarding as needed.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: openshift-python-wrapper
|
|
3
|
-
Version: 4.20.
|
|
3
|
+
Version: 4.20.9
|
|
4
4
|
Summary: Wrapper around https://github.com/kubernetes-client/python
|
|
5
5
|
Project-URL: homepage, https://github.com/RedHatQE/openshift-python-wrapper
|
|
6
6
|
Project-URL: documentation, https://openshift-python-wrapper.readthedocs.io/en/latest/
|
|
@@ -13,7 +13,11 @@ License-File: LICENSE
|
|
|
13
13
|
Keywords: Kubevirt,Openshift,Openshift Virtualization
|
|
14
14
|
Classifier: Operating System :: OS Independent
|
|
15
15
|
Classifier: Programming Language :: Python :: 3
|
|
16
|
-
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
20
|
+
Requires-Python: <3.15,>=3.11
|
|
17
21
|
Requires-Dist: cloup>=3.0.5
|
|
18
22
|
Requires-Dist: colorlog>=6.8.2
|
|
19
23
|
Requires-Dist: deepdiff>=8.0.1
|
|
@@ -27,7 +31,6 @@ Requires-Dist: python-benedict>=0.33.2
|
|
|
27
31
|
Requires-Dist: python-simple-logger>=1.0.40
|
|
28
32
|
Requires-Dist: requests>=2.32.2
|
|
29
33
|
Requires-Dist: rich>=13.9.2
|
|
30
|
-
Requires-Dist: ruff>=0.6.9
|
|
31
34
|
Requires-Dist: timeout-sampler>=0.0.46
|
|
32
35
|
Requires-Dist: xmltodict>=0.13.0
|
|
33
36
|
Description-Content-Type: text/markdown
|
|
@@ -61,6 +64,8 @@ Resource manifests and logs can be easily collected.
|
|
|
61
64
|
|
|
62
65
|
## Installation
|
|
63
66
|
|
|
67
|
+
Requires Python 3.11-3.14.
|
|
68
|
+
|
|
64
69
|
From source:
|
|
65
70
|
|
|
66
71
|
```bash
|
|
@@ -4,7 +4,7 @@ import copy
|
|
|
4
4
|
import time
|
|
5
5
|
import uuid
|
|
6
6
|
from collections.abc import Iterator
|
|
7
|
-
from datetime import
|
|
7
|
+
from datetime import UTC, datetime
|
|
8
8
|
from typing import TYPE_CHECKING, Any, Union
|
|
9
9
|
|
|
10
10
|
from fake_kubernetes_client.exceptions import ConflictError, MethodNotAllowedError, NotFoundError
|
|
@@ -66,7 +66,7 @@ class FakeResourceInstance:
|
|
|
66
66
|
|
|
67
67
|
def _generate_timestamp(self) -> str:
|
|
68
68
|
"""Generate current UTC timestamp in ISO format"""
|
|
69
|
-
return datetime.now(
|
|
69
|
+
return datetime.now(UTC).isoformat()
|
|
70
70
|
|
|
71
71
|
def create(
|
|
72
72
|
self, body: dict[str, Any] | None = None, namespace: str | None = None, **kwargs: Any
|
|
@@ -208,7 +208,7 @@ class FakeResourceInstance:
|
|
|
208
208
|
"namespace": resource_namespace or "default",
|
|
209
209
|
"uid": str(uuid.uuid4()),
|
|
210
210
|
"resourceVersion": str(int(time.time() * 1000)),
|
|
211
|
-
"creationTimestamp": datetime.now(
|
|
211
|
+
"creationTimestamp": datetime.now(UTC).isoformat(),
|
|
212
212
|
"generation": 1,
|
|
213
213
|
},
|
|
214
214
|
"involvedObject": {
|
|
@@ -222,8 +222,8 @@ class FakeResourceInstance:
|
|
|
222
222
|
"reason": reason,
|
|
223
223
|
"message": f"{resource_kind} {resource_name} has been {action}",
|
|
224
224
|
"source": {"component": "fake-client", "host": "fake-cluster.example.com"},
|
|
225
|
-
"firstTimestamp": datetime.now(
|
|
226
|
-
"lastTimestamp": datetime.now(
|
|
225
|
+
"firstTimestamp": datetime.now(UTC).isoformat(),
|
|
226
|
+
"lastTimestamp": datetime.now(UTC).isoformat(),
|
|
227
227
|
"count": 1,
|
|
228
228
|
"type": "Normal",
|
|
229
229
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import json
|
|
4
4
|
import os
|
|
5
5
|
import random
|
|
6
|
-
from datetime import
|
|
6
|
+
from datetime import UTC, datetime
|
|
7
7
|
from typing import Any
|
|
8
8
|
|
|
9
9
|
|
|
@@ -302,7 +302,7 @@ class StatusSchemaParser:
|
|
|
302
302
|
def _generate_string_value(self, field_name: str, is_ready: bool = True) -> str:
|
|
303
303
|
"""Generate a string value based on field name"""
|
|
304
304
|
if "time" in field_name.lower() or "timestamp" in field_name.lower():
|
|
305
|
-
return datetime.now(
|
|
305
|
+
return datetime.now(UTC).isoformat()
|
|
306
306
|
elif field_name == "message":
|
|
307
307
|
return "Resource is ready" if is_ready else "Resource is not ready"
|
|
308
308
|
elif field_name == "reason":
|
|
@@ -424,14 +424,14 @@ class StatusSchemaParser:
|
|
|
424
424
|
{
|
|
425
425
|
"type": "Ready",
|
|
426
426
|
"status": "True",
|
|
427
|
-
"lastTransitionTime": datetime.now(
|
|
427
|
+
"lastTransitionTime": datetime.now(UTC).isoformat(),
|
|
428
428
|
"reason": "ResourceReady",
|
|
429
429
|
"message": "Resource is ready",
|
|
430
430
|
},
|
|
431
431
|
{
|
|
432
432
|
"type": "Available",
|
|
433
433
|
"status": "True",
|
|
434
|
-
"lastTransitionTime": datetime.now(
|
|
434
|
+
"lastTransitionTime": datetime.now(UTC).isoformat(),
|
|
435
435
|
"reason": "ResourceAvailable",
|
|
436
436
|
"message": "Resource is available",
|
|
437
437
|
},
|
|
@@ -441,14 +441,14 @@ class StatusSchemaParser:
|
|
|
441
441
|
{
|
|
442
442
|
"type": "Ready",
|
|
443
443
|
"status": "False",
|
|
444
|
-
"lastTransitionTime": datetime.now(
|
|
444
|
+
"lastTransitionTime": datetime.now(UTC).isoformat(),
|
|
445
445
|
"reason": "ResourceNotReady",
|
|
446
446
|
"message": "Resource is not ready",
|
|
447
447
|
},
|
|
448
448
|
{
|
|
449
449
|
"type": "Available",
|
|
450
450
|
"status": "False",
|
|
451
|
-
"lastTransitionTime": datetime.now(
|
|
451
|
+
"lastTransitionTime": datetime.now(UTC).isoformat(),
|
|
452
452
|
"reason": "ResourceUnavailable",
|
|
453
453
|
"message": "Resource is unavailable",
|
|
454
454
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""Status template methods for fake Kubernetes resources"""
|
|
2
2
|
|
|
3
|
-
from datetime import
|
|
3
|
+
from datetime import UTC, datetime
|
|
4
4
|
from typing import Any
|
|
5
5
|
|
|
6
6
|
from fake_kubernetes_client.status_schema_parser import StatusSchemaParser
|
|
@@ -99,7 +99,7 @@ def get_pod_status_template(body: dict[str, Any]) -> dict[str, Any]:
|
|
|
99
99
|
ready_message = "All containers are ready"
|
|
100
100
|
container_ready = True
|
|
101
101
|
container_started = True
|
|
102
|
-
container_state = {"running": {"startedAt": datetime.now(
|
|
102
|
+
container_state = {"running": {"startedAt": datetime.now(UTC).isoformat()}}
|
|
103
103
|
|
|
104
104
|
# Check pod-specific annotation first
|
|
105
105
|
if "fake-client.io/pod-ready" in annotations:
|
|
@@ -133,7 +133,7 @@ def get_pod_status_template(body: dict[str, Any]) -> dict[str, Any]:
|
|
|
133
133
|
ready_message = "All containers are ready"
|
|
134
134
|
container_ready = True
|
|
135
135
|
container_started = True
|
|
136
|
-
container_state = {"running": {"startedAt": datetime.now(
|
|
136
|
+
container_state = {"running": {"startedAt": datetime.now(UTC).isoformat()}}
|
|
137
137
|
|
|
138
138
|
return {
|
|
139
139
|
"phase": "Running",
|
|
@@ -142,14 +142,14 @@ def get_pod_status_template(body: dict[str, Any]) -> dict[str, Any]:
|
|
|
142
142
|
"type": "Initialized",
|
|
143
143
|
"status": "True",
|
|
144
144
|
"lastProbeTime": None,
|
|
145
|
-
"lastTransitionTime": datetime.now(
|
|
145
|
+
"lastTransitionTime": datetime.now(UTC).isoformat(),
|
|
146
146
|
"reason": "PodCompleted",
|
|
147
147
|
},
|
|
148
148
|
{
|
|
149
149
|
"type": "Ready",
|
|
150
150
|
"status": ready_status, # Now configurable, defaults to True
|
|
151
151
|
"lastProbeTime": None,
|
|
152
|
-
"lastTransitionTime": datetime.now(
|
|
152
|
+
"lastTransitionTime": datetime.now(UTC).isoformat(),
|
|
153
153
|
"reason": ready_reason,
|
|
154
154
|
"message": ready_message,
|
|
155
155
|
},
|
|
@@ -157,7 +157,7 @@ def get_pod_status_template(body: dict[str, Any]) -> dict[str, Any]:
|
|
|
157
157
|
"type": "ContainersReady",
|
|
158
158
|
"status": ready_status, # Should match Ready status
|
|
159
159
|
"lastProbeTime": None,
|
|
160
|
-
"lastTransitionTime": datetime.now(
|
|
160
|
+
"lastTransitionTime": datetime.now(UTC).isoformat(),
|
|
161
161
|
"reason": ready_reason,
|
|
162
162
|
"message": ready_message,
|
|
163
163
|
},
|
|
@@ -165,14 +165,14 @@ def get_pod_status_template(body: dict[str, Any]) -> dict[str, Any]:
|
|
|
165
165
|
"type": "PodScheduled",
|
|
166
166
|
"status": "True",
|
|
167
167
|
"lastProbeTime": None,
|
|
168
|
-
"lastTransitionTime": datetime.now(
|
|
168
|
+
"lastTransitionTime": datetime.now(UTC).isoformat(),
|
|
169
169
|
"reason": "PodScheduled",
|
|
170
170
|
},
|
|
171
171
|
],
|
|
172
172
|
"hostIP": "10.0.0.1",
|
|
173
173
|
"podIP": "10.244.0.2",
|
|
174
174
|
"podIPs": [{"ip": "10.244.0.2"}],
|
|
175
|
-
"startTime": datetime.now(
|
|
175
|
+
"startTime": datetime.now(UTC).isoformat(),
|
|
176
176
|
"containerStatuses": [
|
|
177
177
|
{
|
|
178
178
|
"name": container_name,
|
|
@@ -207,16 +207,16 @@ def get_deployment_status_template(body: dict[str, Any]) -> dict[str, Any]:
|
|
|
207
207
|
{
|
|
208
208
|
"type": "Available",
|
|
209
209
|
"status": "True",
|
|
210
|
-
"lastUpdateTime": datetime.now(
|
|
211
|
-
"lastTransitionTime": datetime.now(
|
|
210
|
+
"lastUpdateTime": datetime.now(UTC).isoformat(),
|
|
211
|
+
"lastTransitionTime": datetime.now(UTC).isoformat(),
|
|
212
212
|
"reason": "MinimumReplicasAvailable",
|
|
213
213
|
"message": "Deployment has minimum availability.",
|
|
214
214
|
},
|
|
215
215
|
{
|
|
216
216
|
"type": "Progressing",
|
|
217
217
|
"status": "True",
|
|
218
|
-
"lastUpdateTime": datetime.now(
|
|
219
|
-
"lastTransitionTime": datetime.now(
|
|
218
|
+
"lastUpdateTime": datetime.now(UTC).isoformat(),
|
|
219
|
+
"lastTransitionTime": datetime.now(UTC).isoformat(),
|
|
220
220
|
"reason": "NewReplicaSetAvailable",
|
|
221
221
|
"message": "ReplicaSet has successfully progressed.",
|
|
222
222
|
},
|
|
@@ -235,16 +235,16 @@ def get_deployment_status_template(body: dict[str, Any]) -> dict[str, Any]:
|
|
|
235
235
|
{
|
|
236
236
|
"type": "Available",
|
|
237
237
|
"status": "False",
|
|
238
|
-
"lastUpdateTime": datetime.now(
|
|
239
|
-
"lastTransitionTime": datetime.now(
|
|
238
|
+
"lastUpdateTime": datetime.now(UTC).isoformat(),
|
|
239
|
+
"lastTransitionTime": datetime.now(UTC).isoformat(),
|
|
240
240
|
"reason": "MinimumReplicasUnavailable",
|
|
241
241
|
"message": "Deployment does not have minimum availability.",
|
|
242
242
|
},
|
|
243
243
|
{
|
|
244
244
|
"type": "Progressing",
|
|
245
245
|
"status": "False",
|
|
246
|
-
"lastUpdateTime": datetime.now(
|
|
247
|
-
"lastTransitionTime": datetime.now(
|
|
246
|
+
"lastUpdateTime": datetime.now(UTC).isoformat(),
|
|
247
|
+
"lastTransitionTime": datetime.now(UTC).isoformat(),
|
|
248
248
|
"reason": "ProgressDeadlineExceeded",
|
|
249
249
|
"message": "ReplicaSet has timed out progressing.",
|
|
250
250
|
},
|
|
@@ -270,14 +270,14 @@ def get_namespace_status_template(body: dict[str, Any]) -> dict[str, Any]:
|
|
|
270
270
|
{
|
|
271
271
|
"type": "NamespaceDeletionDiscoveryFailure",
|
|
272
272
|
"status": "False",
|
|
273
|
-
"lastTransitionTime": datetime.now(
|
|
273
|
+
"lastTransitionTime": datetime.now(UTC).isoformat(),
|
|
274
274
|
"reason": "ResourcesDiscovered",
|
|
275
275
|
"message": "All resources successfully discovered",
|
|
276
276
|
},
|
|
277
277
|
{
|
|
278
278
|
"type": "NamespaceDeletionContentFailure",
|
|
279
279
|
"status": "False",
|
|
280
|
-
"lastTransitionTime": datetime.now(
|
|
280
|
+
"lastTransitionTime": datetime.now(UTC).isoformat(),
|
|
281
281
|
"reason": "ContentDeleted",
|
|
282
282
|
"message": "All content successfully deleted",
|
|
283
283
|
},
|
|
@@ -291,14 +291,14 @@ def get_namespace_status_template(body: dict[str, Any]) -> dict[str, Any]:
|
|
|
291
291
|
{
|
|
292
292
|
"type": "NamespaceDeletionDiscoveryFailure",
|
|
293
293
|
"status": "True",
|
|
294
|
-
"lastTransitionTime": datetime.now(
|
|
294
|
+
"lastTransitionTime": datetime.now(UTC).isoformat(),
|
|
295
295
|
"reason": "DiscoveryFailed",
|
|
296
296
|
"message": "Discovery failed for some resources",
|
|
297
297
|
},
|
|
298
298
|
{
|
|
299
299
|
"type": "NamespaceDeletionContentFailure",
|
|
300
300
|
"status": "True",
|
|
301
|
-
"lastTransitionTime": datetime.now(
|
|
301
|
+
"lastTransitionTime": datetime.now(UTC).isoformat(),
|
|
302
302
|
"reason": "ContentDeletionFailed",
|
|
303
303
|
"message": "Failed to delete all content",
|
|
304
304
|
},
|
|
@@ -316,7 +316,7 @@ def get_generic_status_template(body: dict[str, Any]) -> dict[str, Any]:
|
|
|
316
316
|
{
|
|
317
317
|
"type": "Ready",
|
|
318
318
|
"status": ready_status,
|
|
319
|
-
"lastTransitionTime": datetime.now(
|
|
319
|
+
"lastTransitionTime": datetime.now(UTC).isoformat(),
|
|
320
320
|
"reason": ready_reason,
|
|
321
321
|
"message": ready_message,
|
|
322
322
|
}
|
|
@@ -162,7 +162,7 @@ class VirtualMachineImport(NamespacedResource):
|
|
|
162
162
|
if self.warm:
|
|
163
163
|
spec["warm"] = self.warm
|
|
164
164
|
if self.finalize_date:
|
|
165
|
-
spec["finalizeDate"] = self.finalize_date.strftime(
|
|
165
|
+
spec["finalizeDate"] = self.finalize_date.strftime("%Y-%m-%dT%H:%M:%SZ")
|
|
166
166
|
|
|
167
167
|
provider_source = spec.setdefault("source", {}).setdefault(self.provider_type, {})
|
|
168
168
|
vm = provider_source.setdefault("vm", {})
|
|
@@ -90,15 +90,19 @@ include = [
|
|
|
90
90
|
]
|
|
91
91
|
|
|
92
92
|
[project]
|
|
93
|
-
requires-python = ">=3.
|
|
93
|
+
requires-python = ">=3.11,<3.15"
|
|
94
94
|
name = "openshift-python-wrapper"
|
|
95
|
-
version = "4.20.
|
|
95
|
+
version = "4.20.9"
|
|
96
96
|
description = "Wrapper around https://github.com/kubernetes-client/python"
|
|
97
97
|
readme = "README.md"
|
|
98
98
|
license = "Apache-2.0"
|
|
99
99
|
keywords = ["Openshift", "Kubevirt", "Openshift Virtualization"]
|
|
100
100
|
classifiers = [
|
|
101
101
|
"Programming Language :: Python :: 3",
|
|
102
|
+
"Programming Language :: Python :: 3.11",
|
|
103
|
+
"Programming Language :: Python :: 3.12",
|
|
104
|
+
"Programming Language :: Python :: 3.13",
|
|
105
|
+
"Programming Language :: Python :: 3.14",
|
|
102
106
|
"Operating System :: OS Independent",
|
|
103
107
|
]
|
|
104
108
|
dependencies = [
|
|
@@ -114,7 +118,6 @@ dependencies = [
|
|
|
114
118
|
"python-simple-logger>=1.0.40",
|
|
115
119
|
"requests>=2.32.2",
|
|
116
120
|
"rich>=13.9.2",
|
|
117
|
-
"ruff>=0.6.9",
|
|
118
121
|
"timeout-sampler>=0.0.46",
|
|
119
122
|
"xmltodict>=0.13.0",
|
|
120
123
|
"fastmcp>=2.10.4",
|
|
@@ -152,4 +155,4 @@ build-backend = "hatchling.build"
|
|
|
152
155
|
|
|
153
156
|
[dependency-groups]
|
|
154
157
|
tests = ["pytest>=8.3.5", "pytest-cov>=6.1.1"]
|
|
155
|
-
dev = ["ipdb>=0.13.13", "ipython>=8.12.3"]
|
|
158
|
+
dev = ["ipdb>=0.13.13", "ipython>=8.12.3", "ruff>=0.6.9"]
|