openshift-python-wrapper 11.0.111__tar.gz → 11.0.113__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-11.0.113/.git +1 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/.pre-commit-config.yaml +1 -1
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/PKG-INFO +1 -1
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/README.md +43 -6
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/cli.py +77 -5
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/core/schema.py +233 -45
- openshift_python_wrapper-11.0.113/class_generator/exceptions.py +11 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/parsers/explain_parser.py +1 -8
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/tests/test_cli.py +44 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/tests/test_schema_new_functions.py +194 -5
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/resource.py +1 -0
- openshift_python_wrapper-11.0.113/ocp_resources/securesign.py +76 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/utils/resource_constants.py +1 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/virtual_machine_instance.py +225 -21
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/pyproject.toml +1 -1
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/uv.lock +231 -327
- openshift_python_wrapper-11.0.111/.git +0 -1
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/.coderabbit.yaml +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/.dockerignore +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/.flake8 +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/.gitattributes +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/.github/pull_request_template.md +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/.github/weekly-digest.yml +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/.github/workflows/close-stale-issues.yml +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/.gitignore +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/.gitleaks.toml +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/.readthedocs.yaml +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/.release-it.json +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/.sonarcloud.properties +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/CONTRIBUTING.md +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/LICENSE +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/Makefile +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/OWNERS +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/README.md +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/__init__.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/constants.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/core/__init__.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/core/coverage.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/core/discovery.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/core/generator.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/formatters/__init__.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/formatters/file_writer.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/formatters/template_renderer.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/manifests/class_generator_template.j2 +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/parsers/__init__.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/parsers/type_parser.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/parsers/user_code_parser.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/py.typed +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/schema/__cluster_version__.txt +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/schema/__resources-mappings.json.gz +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/schema/_definitions.json +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/tests/manifests/APIServer/api_server.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/tests/manifests/ClusterOperator/cluster_operator.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/tests/manifests/ConfigMap/config_map.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/tests/manifests/DNS/dns_config_openshift_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/tests/manifests/DNS/dns_operator_openshift_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/tests/manifests/Deployment/deployment.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/tests/manifests/ImageContentSourcePolicy/image_content_source_policy.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/tests/manifests/Ingress/ingress_config_openshift_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/tests/manifests/Ingress/ingress_networking_k8s_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/tests/manifests/Machine/machine.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/tests/manifests/NMState/nm_state.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/tests/manifests/OAuth/oauth.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/tests/manifests/Pipeline/pipeline.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/tests/manifests/Pod/pod.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/tests/manifests/RouteAdvertisements/route_advertisements.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/tests/manifests/Secret/secret.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/tests/manifests/ServiceMeshMember/service_mesh_member.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/tests/manifests/ServingRuntime/serving_runtime.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/tests/manifests/test_parse_explain.j2 +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/tests/test_batch_regeneration.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/tests/test_class_generator.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/tests/test_generation.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/tests/test_resource_discovery.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/tests/test_schema_parsing.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/tests/test_user_code_parser.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/tests/test_utils.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/utils.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/docs/Makefile +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/docs/conf.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/docs/index.rst +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/docs/modules.rst +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/docs/ocp_resources.rst +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/examples/general.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/examples/node_network_configuration_policy.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/examples/pods.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/examples/resource_list.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/examples/role.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/examples/special_cases.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/examples/validation_demo.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/examples/validation_troubleshooting.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/examples/virtual_machine.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/fake_kubernetes_client/README.md +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/fake_kubernetes_client/__init__.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/fake_kubernetes_client/configuration.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/fake_kubernetes_client/dynamic_client.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/fake_kubernetes_client/exceptions.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/fake_kubernetes_client/kubernetes_client.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/fake_kubernetes_client/resource_field.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/fake_kubernetes_client/resource_instance.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/fake_kubernetes_client/resource_manager.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/fake_kubernetes_client/resource_registry.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/fake_kubernetes_client/resource_storage.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/fake_kubernetes_client/status_schema_parser.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/fake_kubernetes_client/status_templates.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/fake_kubernetes_client/types.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/mcp_server/README.md +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/mcp_server/__init__.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/mcp_server/example_client.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/mcp_server/server-info.json +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/mcp_server/server.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/mcp_server/tests/__init__.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/mcp_server/tests/test_server.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/__init__.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/aaq.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/api_server.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/api_service.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/application_aware_applied_cluster_resource_quota.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/application_aware_cluster_resource_quota.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/application_aware_resource_quota.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/authentication_config_openshift_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/authentication_operator_openshift_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/authorino.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/backup.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/benchmark.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/bgp_session_state.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/catalog_source.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/cdi.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/cdi_config.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/chaos_engine.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/chaos_result.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/cluster_claim.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/cluster_deployment.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/cluster_operator.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/cluster_pool.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/cluster_resource_quota.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/cluster_role.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/cluster_role_binding.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/cluster_service_version.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/cluster_user_defined_network.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/cluster_version.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/config_imageregistry_operator_openshift_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/config_map.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/config_operator_openshift_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/config_samples_operator_openshift_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/console_cli_download.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/console_config_openshift_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/console_operator_openshift_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/console_plugin.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/console_quick_start.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/controller_revision.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/cron_job.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/csi_driver.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/csi_storage_capacity.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/custom_resource_definition.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/daemonset.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/data_import_cron.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/data_science_cluster.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/data_science_pipelines_application.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/data_source.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/datavolume.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/deployment.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/destination_rule.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/direct_volume_migration.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/direct_volume_migration_progress.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/dns_config_openshift_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/dns_operator_openshift_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/dsc_initialization.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/endpoint_slice.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/endpoints.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/event.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/exceptions.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/fence_agent_remediation_templates.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/forklift_controller.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/frr_configuration.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/gateway.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/gateway_class.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/gateway_config.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/gateway_gateway_networking_k8s_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/gateway_networking_istio_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/group.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/guardrails_orchestrator.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/hook.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/host.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/hostpath_provisioner.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/hyperconverged.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/image_caching_internal_knative_dev.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/image_config_openshift_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/image_content_source_policy.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/image_digest_mirror_set.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/image_image_openshift_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/image_stream.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/imagestreamtag.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/inference_graph.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/inference_service.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/infrastructure.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/ingress_config_openshift_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/ingress_controller.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/ingress_networking_k8s_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/installplan.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/ip_address_pool.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/jaeger.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/job.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/kube_descheduler.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/kubelet_config.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/kubevirt.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/l2_advertisement.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/lease.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/limit_range.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/llama_stack_distribution.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/llm_inference_service.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/lm_eval_job.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/machine.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/machine_config.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/machine_config_pool.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/machine_health_check.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/machine_set.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/managed_cluster.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/maria_db.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/mariadb_operator.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/metallb.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/mig_analytic.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/mig_cluster.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/mig_controller.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/mig_migration.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/mig_plan.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/migration.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/migration_policy.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/model_registry.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/model_registry_components_platform_opendatahub_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/model_registry_modelregistry_opendatahub_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/mtq.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/multi_cluster_hub.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/multi_cluster_observability.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/multi_namespace_virtual_machine_storage_migration.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/multi_namespace_virtual_machine_storage_migration_plan.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/multi_network_policy.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/mutating_webhook_config.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/namespace.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/network_addons_config.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/network_attachment_definition.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/network_config_openshift_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/network_map.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/network_operator_openshift_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/network_policy.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/nm_state.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/node.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/node_config_openshift_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/node_health_check.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/node_maintenance.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/node_network_configuration_enactment.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/node_network_configuration_policy.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/node_network_configuration_policy_latest.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/node_network_state.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/notebook.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/oauth.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/ocs_initialization.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/open_telemetry_collector.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/operator.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/operator_condition.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/operator_group.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/operator_hub.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/operator_source.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/package_manifest.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/peer_authentication.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/performance_profile.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/persistent_volume.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/persistent_volume_claim.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/pipeline.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/pipeline_run.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/plan.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/pod.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/pod_disruption_budget.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/pod_metrics.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/priority_class.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/project_config_openshift_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/project_project_openshift_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/project_request.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/prometheus.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/prometheus_rule.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/provider.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/proxy.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/py.typed +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/rate_limit_policy.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/reclaim_space_cron_job.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/reclaim_space_job.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/replica_set.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/resource_quota.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/restore.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/rhmi.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/role.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/role_binding.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/route.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/route_advertisements.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/scaled_object.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/scheduler.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/sealed_secret.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/secret.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/security_context_constraints.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/self_node_remediation_templates.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/self_subject_review.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/service.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/service_account.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/service_mesh_control_plane.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/service_mesh_member.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/service_mesh_member_roll.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/service_monitor.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/service_serving_knative_dev.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/serving_runtime.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/snapshot.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/sriov_network.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/sriov_network_node_policy.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/sriov_network_node_state.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/ssp.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/storage_class.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/storage_cluster.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/storage_map.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/storage_profile.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/subscription.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/task.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/task_run.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/tekton_tasks.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/template.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/tempo_stack.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/token_rate_limit_policy.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/trustyai_service.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/upload_token_request.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/user.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/user_defined_network.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/utils/__init__.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/utils/archive_utils.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/utils/constants.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/utils/schema_validator.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/utils/utils.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/validating_admission_policy.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/validating_admission_policy_binding.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/validating_webhook_config.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/virtual_machine.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/virtual_machine_clone.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/virtual_machine_cluster_instancetype.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/virtual_machine_cluster_preference.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/virtual_machine_export.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/virtual_machine_import.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/virtual_machine_instance_migration.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/virtual_machine_instance_preset.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/virtual_machine_instance_replica_set.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/virtual_machine_instancetype.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/virtual_machine_migration_resource_quota.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/virtual_machine_preference.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/virtual_machine_restore.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/virtual_machine_snapshot.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/virtual_machine_storage_migration.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/virtual_machine_storage_migration_plan.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/virtual_service.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/vm_import_config.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/volume_snapshot.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/ocp_resources/volume_snapshot_class.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/pypi-dist/.gitignore +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/renovate.json +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/scripts/__init__.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/scripts/diff-from-latest-release.sh +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/scripts/diff-from-tag.sh +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/scripts/generate_changelog.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/scripts/get-latest-release.sh +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/sonar-project.properties +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/__init__.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/conftest.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/fixtures/validation_schemas.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/manifests/vm.yaml +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/scripts/__init__.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/scripts/generate_pytest_test.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/scripts/validate_resources.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_api_group_order.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_camelcase_to_snake.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resource.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resource_validation.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_aaq.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_api_server.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_authorino.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_cdi.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_cdi_config.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_cluster_resource_quota.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_cluster_user_defined_network.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_config_map.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_console_config_openshift_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_console_operator_openshift_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_csi_driver.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_data_import_cron.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_data_science_cluster.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_deployment.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_direct_volume_migration.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_direct_volume_migration_progress.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_dns_config_openshift_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_dns_operator_openshift_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_dsc_initialization.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_group.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_guardrails_orchestrator.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_image_caching_internal_knative_dev.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_image_config_openshift_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_image_content_source_policy.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_image_image_openshift_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_inference_graph.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_kube_descheduler.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_kubelet_config.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_kubevirt.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_llama_stack_distribution.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_lm_eval_job.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_machine.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_maria_db.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_mariadb_operator.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_mig_analytic.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_mig_cluster.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_mig_migration.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_mig_plan.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_model_registry.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_model_registry_components_platform_opendatahub_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_model_registry_modelregistry_opendatahub_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_mtq.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_namespace.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_network_config_openshift_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_network_operator_openshift_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_nm_state.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_node.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_node_config_openshift_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_node_network_configuration_policy_latest.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_notebook.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_oauth.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_operator.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_pod.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_pod_metrics.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_project_config_openshift_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_project_project_openshift_io.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_project_request.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_prometheus.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_replica_set.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_scheduler.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_security_context_constraints.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_self_subject_review.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_service.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_service_mesh_member.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_service_serving_knative_dev.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_serving_runtime.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_snapshot.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_ssp.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_storage_cluster.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_user.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_user_defined_network.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_virtual_machine_cluster_instancetype.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_virtual_machine_cluster_preference.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_virtual_machine_export.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_virtual_machine_instance_migration.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_virtual_machine_instance_preset.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_virtual_machine_instance_replica_set.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_virtual_machine_instancetype.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_virtual_machine_preference.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_volume_snapshot.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_resources/test_volume_snapshot_class.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_schema_loading.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_unittests.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_validate_resources.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_validate_resources_script.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/test_validation_error.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tests/utils.py +0 -0
- {openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/tox.toml +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
gitdir: /tmp/github-webhook-openshift-python-wrapper-gm7yvvy5/.git/worktrees/github-webhook-openshift-python-wrapper-gm7yvvy5-worktree-c0219bf1-92b3-472d-94a7-8c43e105c659
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openshift-python-wrapper
|
|
3
|
-
Version: 11.0.
|
|
3
|
+
Version: 11.0.113
|
|
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/
|
{openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/README.md
RENAMED
|
@@ -155,18 +155,55 @@ class-generator --kind Pod --add-tests
|
|
|
155
155
|
|
|
156
156
|
## Update schema files
|
|
157
157
|
|
|
158
|
-
|
|
159
|
-
- Kubernetes/Openshift cluster
|
|
160
|
-
- [oc](https://mirror.openshift.com/pub/openshift-v4/x86_64/clients/ocp/stable/) or [kubectl](https://kubernetes.io/docs/tasks/tools/) (latest version)
|
|
161
|
-
- [uv](https://github.com/astral-sh/uv)
|
|
158
|
+
Schema files contain resource definitions used by the class generator. You can update these from a connected Kubernetes/OpenShift cluster.
|
|
162
159
|
|
|
163
|
-
|
|
160
|
+
### Dependencies
|
|
161
|
+
|
|
162
|
+
- Kubernetes/OpenShift cluster
|
|
163
|
+
- [oc](https://mirror.openshift.com/pub/openshift-v4/x86_64/clients/ocp/stable/) or [kubectl](https://kubernetes.io/docs/tasks/tools/) (latest version)
|
|
164
|
+
- [uv](https://github.com/astral-sh/uv)
|
|
165
|
+
|
|
166
|
+
### Setup
|
|
167
|
+
|
|
168
|
+
Clone this repository:
|
|
164
169
|
|
|
165
170
|
```bash
|
|
166
171
|
git clone https://github.com/RedHatQE/openshift-python-wrapper.git
|
|
167
172
|
cd openshift-python-wrapper
|
|
168
173
|
```
|
|
169
174
|
|
|
170
|
-
|
|
175
|
+
Login to the cluster using admin user and password.
|
|
176
|
+
|
|
177
|
+
### Full schema update
|
|
178
|
+
|
|
179
|
+
Update the entire schema from the connected cluster:
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
class-generator --update-schema
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
This fetches all resource schemas from the cluster and updates the local cache.
|
|
186
|
+
|
|
187
|
+
**Note:** If connected to an older cluster, existing schemas are preserved and only missing resources are added.
|
|
188
|
+
|
|
189
|
+
### Single resource schema update
|
|
190
|
+
|
|
191
|
+
Update the schema for a single resource without affecting others:
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
class-generator --update-schema-for LlamaStackDistribution
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
This is useful when:
|
|
198
|
+
|
|
199
|
+
- Connected to an older cluster but need to update a specific CRD
|
|
200
|
+
- A new operator was installed and you need its resource schema
|
|
201
|
+
- You want to refresh just one resource without a full update
|
|
202
|
+
|
|
203
|
+
After updating the schema, regenerate the class:
|
|
171
204
|
|
|
205
|
+
```bash
|
|
206
|
+
class-generator --kind LlamaStackDistribution --overwrite
|
|
172
207
|
```
|
|
208
|
+
|
|
209
|
+
**Note:** `--update-schema` and `--update-schema-for` are mutually exclusive. Use one or the other, not both.
|
{openshift_python_wrapper-11.0.111 → openshift_python_wrapper-11.0.113}/class_generator/cli.py
RENAMED
|
@@ -10,14 +10,19 @@ from pathlib import Path
|
|
|
10
10
|
from typing import Any
|
|
11
11
|
|
|
12
12
|
import cloup
|
|
13
|
-
from cloup.constraints import If, IsSet, accept_none, require_one
|
|
13
|
+
from cloup.constraints import If, IsSet, accept_none, mutually_exclusive, require_one
|
|
14
14
|
from simple_logger.logger import get_logger
|
|
15
15
|
|
|
16
16
|
from class_generator.constants import TESTS_MANIFESTS_DIR
|
|
17
17
|
from class_generator.core.coverage import analyze_coverage, generate_report
|
|
18
18
|
from class_generator.core.discovery import discover_generated_resources
|
|
19
19
|
from class_generator.core.generator import class_generator
|
|
20
|
-
from class_generator.core.schema import
|
|
20
|
+
from class_generator.core.schema import (
|
|
21
|
+
ClusterVersionError,
|
|
22
|
+
update_kind_schema,
|
|
23
|
+
update_single_resource_schema,
|
|
24
|
+
)
|
|
25
|
+
from class_generator.exceptions import ResourceNotFoundError
|
|
21
26
|
from class_generator.tests.test_generation import generate_class_generator_tests
|
|
22
27
|
from class_generator.utils import execute_parallel_tasks
|
|
23
28
|
from ocp_resources.utils.utils import convert_camel_case_to_snake_case
|
|
@@ -28,16 +33,25 @@ LOGGER = get_logger(name=__name__)
|
|
|
28
33
|
def validate_actions(
|
|
29
34
|
kind: str | None,
|
|
30
35
|
update_schema: bool,
|
|
36
|
+
update_schema_for: str | None,
|
|
31
37
|
discover_missing: bool,
|
|
32
38
|
coverage_report: bool,
|
|
33
39
|
generate_missing: bool,
|
|
34
40
|
regenerate_all: bool,
|
|
35
41
|
) -> None:
|
|
36
42
|
"""Validate that at least one action is specified."""
|
|
37
|
-
actions = [
|
|
43
|
+
actions = [
|
|
44
|
+
kind,
|
|
45
|
+
update_schema,
|
|
46
|
+
update_schema_for,
|
|
47
|
+
discover_missing,
|
|
48
|
+
coverage_report,
|
|
49
|
+
generate_missing,
|
|
50
|
+
regenerate_all,
|
|
51
|
+
]
|
|
38
52
|
if not any(actions):
|
|
39
53
|
LOGGER.error(
|
|
40
|
-
"At least one action must be specified (--kind, --update-schema, --discover-missing, --coverage-report, --generate-missing, or --regenerate-all)"
|
|
54
|
+
"At least one action must be specified (--kind, --update-schema, --update-schema-for, --discover-missing, --coverage-report, --generate-missing, or --regenerate-all)"
|
|
41
55
|
)
|
|
42
56
|
sys.exit(1)
|
|
43
57
|
|
|
@@ -70,6 +84,33 @@ def handle_schema_update(update_schema: bool, generate_missing: bool) -> bool:
|
|
|
70
84
|
return True
|
|
71
85
|
|
|
72
86
|
|
|
87
|
+
def handle_single_schema_update(update_schema_for: str | None) -> bool:
|
|
88
|
+
"""
|
|
89
|
+
Handle single resource schema update operations.
|
|
90
|
+
|
|
91
|
+
Args:
|
|
92
|
+
update_schema_for: The kind name to update schema for, or None
|
|
93
|
+
|
|
94
|
+
Returns:
|
|
95
|
+
True if processing should continue, False if it should exit
|
|
96
|
+
"""
|
|
97
|
+
if update_schema_for:
|
|
98
|
+
LOGGER.info(f"Updating schema for single resource: {update_schema_for}")
|
|
99
|
+
try:
|
|
100
|
+
update_single_resource_schema(kind=update_schema_for)
|
|
101
|
+
except ResourceNotFoundError as e:
|
|
102
|
+
LOGGER.error(f"Resource not found: {e}")
|
|
103
|
+
sys.exit(1)
|
|
104
|
+
except (OSError, RuntimeError) as e:
|
|
105
|
+
LOGGER.exception(f"Failed to update schema for {update_schema_for}: {e}")
|
|
106
|
+
sys.exit(1)
|
|
107
|
+
|
|
108
|
+
LOGGER.info(f"Schema updated for {update_schema_for}.")
|
|
109
|
+
return False
|
|
110
|
+
|
|
111
|
+
return True
|
|
112
|
+
|
|
113
|
+
|
|
73
114
|
def handle_coverage_analysis_and_reporting(
|
|
74
115
|
coverage_report: bool,
|
|
75
116
|
discover_missing: bool,
|
|
@@ -491,6 +532,17 @@ def handle_test_generation(add_tests: bool) -> None:
|
|
|
491
532
|
is_flag=True,
|
|
492
533
|
show_default=True,
|
|
493
534
|
)
|
|
535
|
+
@cloup.option(
|
|
536
|
+
"--update-schema-for",
|
|
537
|
+
type=cloup.STRING,
|
|
538
|
+
help="""
|
|
539
|
+
\b
|
|
540
|
+
Update schema for a single resource kind only, without affecting other resources.
|
|
541
|
+
Useful when connected to an older cluster but needing to update a specific CRD.
|
|
542
|
+
Example: --update-schema-for LlamaStackDistribution
|
|
543
|
+
Cannot be used together with --update-schema.
|
|
544
|
+
""",
|
|
545
|
+
)
|
|
494
546
|
@cloup.option(
|
|
495
547
|
"--discover-missing",
|
|
496
548
|
help="Discover resources in the cluster that don't have wrapper classes",
|
|
@@ -555,6 +607,20 @@ def handle_test_generation(add_tests: bool) -> None:
|
|
|
555
607
|
"regenerate_all",
|
|
556
608
|
],
|
|
557
609
|
)
|
|
610
|
+
@cloup.constraint(
|
|
611
|
+
mutually_exclusive,
|
|
612
|
+
["update_schema", "update_schema_for"],
|
|
613
|
+
)
|
|
614
|
+
@cloup.constraint(
|
|
615
|
+
If(IsSet("update_schema_for"), then=accept_none),
|
|
616
|
+
[
|
|
617
|
+
"kind",
|
|
618
|
+
"discover_missing",
|
|
619
|
+
"coverage_report",
|
|
620
|
+
"generate_missing",
|
|
621
|
+
"regenerate_all",
|
|
622
|
+
],
|
|
623
|
+
)
|
|
558
624
|
@cloup.constraint(
|
|
559
625
|
If(IsSet("backup"), then=require_one),
|
|
560
626
|
["regenerate_all", "overwrite"],
|
|
@@ -577,6 +643,7 @@ def main(
|
|
|
577
643
|
filter: str | None,
|
|
578
644
|
json_output: bool,
|
|
579
645
|
update_schema: bool,
|
|
646
|
+
update_schema_for: str | None,
|
|
580
647
|
verbose: bool,
|
|
581
648
|
) -> None:
|
|
582
649
|
"""Generate Python module for K8S resource."""
|
|
@@ -610,13 +677,18 @@ def main(
|
|
|
610
677
|
validate_actions(
|
|
611
678
|
kind=kind,
|
|
612
679
|
update_schema=update_schema,
|
|
680
|
+
update_schema_for=update_schema_for,
|
|
613
681
|
discover_missing=discover_missing,
|
|
614
682
|
coverage_report=coverage_report,
|
|
615
683
|
generate_missing=generate_missing,
|
|
616
684
|
regenerate_all=regenerate_all,
|
|
617
685
|
)
|
|
618
686
|
|
|
619
|
-
# Handle schema update
|
|
687
|
+
# Handle single resource schema update (if specified)
|
|
688
|
+
if not handle_single_schema_update(update_schema_for=update_schema_for):
|
|
689
|
+
return
|
|
690
|
+
|
|
691
|
+
# Handle full schema update
|
|
620
692
|
if not handle_schema_update(update_schema=update_schema, generate_missing=generate_missing):
|
|
621
693
|
return
|
|
622
694
|
|
|
@@ -12,6 +12,7 @@ from pyhelper_utils.shell import run_command
|
|
|
12
12
|
from simple_logger.logger import get_logger
|
|
13
13
|
|
|
14
14
|
from class_generator.constants import DEFINITIONS_FILE, RESOURCES_MAPPING_FILE, SCHEMA_DIR
|
|
15
|
+
from class_generator.exceptions import ResourceNotFoundError
|
|
15
16
|
from class_generator.utils import execute_parallel_tasks, execute_parallel_with_mapping
|
|
16
17
|
from ocp_resources.utils.archive_utils import save_json_archive
|
|
17
18
|
from ocp_resources.utils.schema_validator import SchemaValidator
|
|
@@ -503,6 +504,64 @@ def fetch_all_api_schemas(
|
|
|
503
504
|
return schemas
|
|
504
505
|
|
|
505
506
|
|
|
507
|
+
def _build_schema_data(
|
|
508
|
+
def_data: dict[str, Any],
|
|
509
|
+
gvk: dict[str, str],
|
|
510
|
+
is_namespaced: bool,
|
|
511
|
+
) -> dict[str, Any]:
|
|
512
|
+
"""Build schema data dictionary from definition data and GVK info.
|
|
513
|
+
|
|
514
|
+
Args:
|
|
515
|
+
def_data: The definition data from the API schema
|
|
516
|
+
gvk: The group-version-kind dictionary
|
|
517
|
+
is_namespaced: Whether the resource is namespaced
|
|
518
|
+
|
|
519
|
+
Returns:
|
|
520
|
+
Schema data dictionary in the format expected by SchemaValidator
|
|
521
|
+
"""
|
|
522
|
+
return {
|
|
523
|
+
"description": def_data.get("description", ""),
|
|
524
|
+
"properties": def_data.get("properties", {}),
|
|
525
|
+
"required": def_data.get("required", []),
|
|
526
|
+
"type": def_data.get("type", "object"),
|
|
527
|
+
"x-kubernetes-group-version-kind": [gvk],
|
|
528
|
+
"namespaced": is_namespaced,
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
|
|
532
|
+
def _merge_schema_into_mapping(
|
|
533
|
+
resources_mapping: dict[str, Any],
|
|
534
|
+
kind_lower: str,
|
|
535
|
+
group: str,
|
|
536
|
+
version: str,
|
|
537
|
+
schema_data: dict[str, Any],
|
|
538
|
+
) -> tuple[bool, str]:
|
|
539
|
+
"""Merge a schema into the resources mapping.
|
|
540
|
+
|
|
541
|
+
Args:
|
|
542
|
+
resources_mapping: The resources mapping dictionary to update
|
|
543
|
+
kind_lower: The lowercase kind name
|
|
544
|
+
group: The API group
|
|
545
|
+
version: The API version
|
|
546
|
+
schema_data: The schema data to merge
|
|
547
|
+
|
|
548
|
+
Returns:
|
|
549
|
+
Tuple of (was_updated, action_description) where action is 'updated', 'added_version', or 'added_new'
|
|
550
|
+
"""
|
|
551
|
+
if kind_lower in resources_mapping:
|
|
552
|
+
existing_schemas = resources_mapping[kind_lower]
|
|
553
|
+
for i, existing_schema in enumerate(existing_schemas):
|
|
554
|
+
existing_gvk = existing_schema.get("x-kubernetes-group-version-kind", [{}])[0]
|
|
555
|
+
if existing_gvk.get("group") == group and existing_gvk.get("version") == version:
|
|
556
|
+
existing_schemas[i] = schema_data
|
|
557
|
+
return True, "updated"
|
|
558
|
+
existing_schemas.append(schema_data)
|
|
559
|
+
return True, "added_version"
|
|
560
|
+
else:
|
|
561
|
+
resources_mapping[kind_lower] = [schema_data]
|
|
562
|
+
return True, "added_new"
|
|
563
|
+
|
|
564
|
+
|
|
506
565
|
def process_schema_definitions(
|
|
507
566
|
schemas: dict[str, dict[str, Any]],
|
|
508
567
|
namespacing_dict: dict[str, bool],
|
|
@@ -579,51 +638,27 @@ def process_schema_definitions(
|
|
|
579
638
|
else:
|
|
580
639
|
schema_name = f"{version}/{kind}"
|
|
581
640
|
|
|
582
|
-
# Create schema data
|
|
583
|
-
schema_data =
|
|
584
|
-
"description": def_data.get("description", ""),
|
|
585
|
-
"properties": def_data.get("properties", {}),
|
|
586
|
-
"required": def_data.get("required", []),
|
|
587
|
-
"type": def_data.get("type", "object"),
|
|
588
|
-
"x-kubernetes-group-version-kind": [group_kind_version],
|
|
589
|
-
"namespaced": is_namespaced,
|
|
590
|
-
}
|
|
641
|
+
# Create schema data using helper function
|
|
642
|
+
schema_data = _build_schema_data(def_data, group_kind_version, is_namespaced)
|
|
591
643
|
|
|
592
644
|
# Store in resources_mapping as an array (multiple schemas per kind)
|
|
593
645
|
kind_lower = kind.lower()
|
|
594
646
|
if kind_lower not in resources_mapping:
|
|
595
|
-
# NEW resource - always add
|
|
596
|
-
resources_mapping
|
|
647
|
+
# NEW resource - always add using merge helper
|
|
648
|
+
_merge_schema_into_mapping(resources_mapping, kind_lower, group, version, schema_data)
|
|
597
649
|
new_resources += 1
|
|
598
650
|
LOGGER.debug(f"Added new resource: {kind_lower}")
|
|
599
651
|
elif allow_updates:
|
|
600
|
-
# UPDATE existing resource
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
# Check if this is the same group/version combination
|
|
609
|
-
if existing_gvk.get("group") == new_gvk.get("group") and existing_gvk.get("version") == new_gvk.get(
|
|
610
|
-
"version"
|
|
611
|
-
):
|
|
612
|
-
# UPDATE: Replace existing schema with newer version
|
|
613
|
-
existing_schemas[i] = schema_data
|
|
614
|
-
updated = True
|
|
615
|
-
updated_resources += 1
|
|
616
|
-
LOGGER.debug(
|
|
617
|
-
f"Updated existing resource schema: {kind_lower} ({new_gvk.get('group', 'core')}/{new_gvk.get('version')})"
|
|
618
|
-
)
|
|
619
|
-
break
|
|
620
|
-
|
|
621
|
-
if not updated:
|
|
622
|
-
# ADD: New group/version for existing resource kind
|
|
623
|
-
existing_schemas.append(schema_data)
|
|
624
|
-
updated_resources += 1
|
|
652
|
+
# UPDATE existing resource using merge helper
|
|
653
|
+
_was_updated, action = _merge_schema_into_mapping(
|
|
654
|
+
resources_mapping, kind_lower, group, version, schema_data
|
|
655
|
+
)
|
|
656
|
+
updated_resources += 1
|
|
657
|
+
if action == "updated":
|
|
658
|
+
LOGGER.debug(f"Updated existing resource schema: {kind_lower} ({group or 'core'}/{version})")
|
|
659
|
+
else:
|
|
625
660
|
LOGGER.debug(
|
|
626
|
-
f"Added new schema version for existing resource: {kind_lower} ({
|
|
661
|
+
f"Added new schema version for existing resource: {kind_lower} ({group or 'core'}/{version})"
|
|
627
662
|
)
|
|
628
663
|
else:
|
|
629
664
|
# Don't update existing resources when cluster version is older
|
|
@@ -1458,22 +1493,18 @@ def _determine_update_strategy(client: str, resources_mapping: dict[Any, Any]) -
|
|
|
1458
1493
|
return UpdateStrategy(should_update=should_update, missing_resources=missing_resources, need_v3_index=need_v3_index)
|
|
1459
1494
|
|
|
1460
1495
|
|
|
1461
|
-
def
|
|
1462
|
-
"""Fetch OpenAPI v3 index
|
|
1496
|
+
def _fetch_openapi_v3_index(client: str) -> dict[str, Any]:
|
|
1497
|
+
"""Fetch OpenAPI v3 index from the cluster.
|
|
1463
1498
|
|
|
1464
1499
|
Args:
|
|
1465
1500
|
client: The client binary path
|
|
1466
|
-
need_v3_index: Whether to fetch the index
|
|
1467
1501
|
|
|
1468
1502
|
Returns:
|
|
1469
|
-
Dictionary of API paths
|
|
1503
|
+
Dictionary of API paths
|
|
1470
1504
|
|
|
1471
1505
|
Raises:
|
|
1472
|
-
RuntimeError: If fetching the index fails
|
|
1506
|
+
RuntimeError: If fetching the index fails
|
|
1473
1507
|
"""
|
|
1474
|
-
if not need_v3_index:
|
|
1475
|
-
return {}
|
|
1476
|
-
|
|
1477
1508
|
LOGGER.info("Fetching OpenAPI v3 index...")
|
|
1478
1509
|
success, v3_data, _ = run_command(command=shlex.split(f"{client} get --raw /openapi/v3"), check=False)
|
|
1479
1510
|
if not success:
|
|
@@ -1487,6 +1518,25 @@ def _fetch_api_index_if_needed(client: str, need_v3_index: bool) -> dict[str, An
|
|
|
1487
1518
|
return paths
|
|
1488
1519
|
|
|
1489
1520
|
|
|
1521
|
+
def _fetch_api_index_if_needed(client: str, need_v3_index: bool) -> dict[str, Any]:
|
|
1522
|
+
"""Fetch OpenAPI v3 index if needed.
|
|
1523
|
+
|
|
1524
|
+
Args:
|
|
1525
|
+
client: The client binary path
|
|
1526
|
+
need_v3_index: Whether to fetch the index
|
|
1527
|
+
|
|
1528
|
+
Returns:
|
|
1529
|
+
Dictionary of API paths or empty dict if not needed
|
|
1530
|
+
|
|
1531
|
+
Raises:
|
|
1532
|
+
RuntimeError: If fetching the index fails when needed
|
|
1533
|
+
"""
|
|
1534
|
+
if not need_v3_index:
|
|
1535
|
+
return {}
|
|
1536
|
+
|
|
1537
|
+
return _fetch_openapi_v3_index(client)
|
|
1538
|
+
|
|
1539
|
+
|
|
1490
1540
|
def _fetch_schemas_based_on_strategy(client: str, strategy: UpdateStrategy, paths: dict[str, Any]) -> dict[str, Any]:
|
|
1491
1541
|
"""Fetch schemas based on the determined update strategy.
|
|
1492
1542
|
|
|
@@ -1612,3 +1662,141 @@ def update_kind_schema(client: str | None = None) -> None:
|
|
|
1612
1662
|
LOGGER.info(
|
|
1613
1663
|
"No schema files updated - no schemas were fetched (either due to older cluster version with no missing resources, or transient fetch failures)"
|
|
1614
1664
|
)
|
|
1665
|
+
|
|
1666
|
+
|
|
1667
|
+
def update_single_resource_schema(kind: str, client: str | None = None) -> None:
|
|
1668
|
+
"""Update schema for a single resource kind without affecting other resources.
|
|
1669
|
+
|
|
1670
|
+
This function is useful when connected to an older cluster but needing to update
|
|
1671
|
+
a specific CRD (e.g., a newly installed operator's resources).
|
|
1672
|
+
|
|
1673
|
+
Args:
|
|
1674
|
+
kind: The resource Kind to update (e.g., 'LlamaStackDistribution')
|
|
1675
|
+
client: Path to kubectl/oc client binary. If None, will auto-detect.
|
|
1676
|
+
|
|
1677
|
+
Raises:
|
|
1678
|
+
ResourceNotFoundError: If the kind is not found on the cluster
|
|
1679
|
+
RuntimeError: If fetching the schema fails
|
|
1680
|
+
"""
|
|
1681
|
+
if client is None:
|
|
1682
|
+
client = get_client_binary()
|
|
1683
|
+
|
|
1684
|
+
LOGGER.info(f"Updating schema for single resource: {kind}")
|
|
1685
|
+
|
|
1686
|
+
# Get dynamic resource-to-API mapping to find the API path for this kind
|
|
1687
|
+
resource_to_api_mapping = build_dynamic_resource_to_api_mapping(client=client)
|
|
1688
|
+
|
|
1689
|
+
if kind not in resource_to_api_mapping:
|
|
1690
|
+
raise ResourceNotFoundError(
|
|
1691
|
+
kind=kind,
|
|
1692
|
+
message=(
|
|
1693
|
+
f"Resource kind '{kind}' not found on the cluster. "
|
|
1694
|
+
f"Ensure the CRD is installed and the kind name is correct (case-sensitive)."
|
|
1695
|
+
),
|
|
1696
|
+
)
|
|
1697
|
+
|
|
1698
|
+
api_paths_for_kind = resource_to_api_mapping[kind]
|
|
1699
|
+
LOGGER.info(f"Found API paths for {kind}: {api_paths_for_kind}")
|
|
1700
|
+
|
|
1701
|
+
# Fetch OpenAPI v3 index using shared helper function
|
|
1702
|
+
paths = _fetch_openapi_v3_index(client)
|
|
1703
|
+
|
|
1704
|
+
# Filter to only the API paths for this specific kind
|
|
1705
|
+
filter_paths = set()
|
|
1706
|
+
for api_path in api_paths_for_kind:
|
|
1707
|
+
if api_path in paths:
|
|
1708
|
+
filter_paths.add(api_path)
|
|
1709
|
+
else:
|
|
1710
|
+
LOGGER.warning(f"API path {api_path} not found in cluster paths")
|
|
1711
|
+
|
|
1712
|
+
if not filter_paths:
|
|
1713
|
+
raise RuntimeError(
|
|
1714
|
+
f"None of the API paths for {kind} were found in the cluster. Expected paths: {api_paths_for_kind}"
|
|
1715
|
+
)
|
|
1716
|
+
|
|
1717
|
+
LOGGER.info(f"Fetching schemas from {len(filter_paths)} API path(s): {filter_paths}")
|
|
1718
|
+
|
|
1719
|
+
# Fetch only the relevant API schemas
|
|
1720
|
+
schemas = fetch_all_api_schemas(client=client, paths=paths, filter_paths=filter_paths)
|
|
1721
|
+
|
|
1722
|
+
if not schemas:
|
|
1723
|
+
raise RuntimeError(
|
|
1724
|
+
f"Failed to fetch schema for {kind} from API paths {filter_paths}. "
|
|
1725
|
+
f"The API server returned no schema data. Check cluster connectivity and permissions."
|
|
1726
|
+
)
|
|
1727
|
+
|
|
1728
|
+
# Build namespacing dictionary by reusing the existing function and filtering to just this resource
|
|
1729
|
+
full_namespacing_dict = build_namespacing_dict(client=client)
|
|
1730
|
+
if kind in full_namespacing_dict:
|
|
1731
|
+
namespacing_dict = {kind: full_namespacing_dict[kind]}
|
|
1732
|
+
else:
|
|
1733
|
+
LOGGER.warning(f"Could not determine if {kind} is namespaced, defaulting to True")
|
|
1734
|
+
namespacing_dict = {kind: True}
|
|
1735
|
+
|
|
1736
|
+
LOGGER.info(f"Resource {kind} is namespaced: {namespacing_dict[kind]}")
|
|
1737
|
+
|
|
1738
|
+
# Load existing resources mapping
|
|
1739
|
+
resources_mapping = read_resources_mapping_file(skip_cache=True)
|
|
1740
|
+
existing_count = len(resources_mapping)
|
|
1741
|
+
LOGGER.info(f"Loaded {existing_count} existing resources from mapping")
|
|
1742
|
+
|
|
1743
|
+
# Process schema definitions for this specific kind only
|
|
1744
|
+
kind_lower = kind.lower()
|
|
1745
|
+
updated = False
|
|
1746
|
+
new_schemas_for_kind = []
|
|
1747
|
+
|
|
1748
|
+
for _, schema in schemas.items():
|
|
1749
|
+
for _def_name, def_data in schema.get("components", {}).get("schemas", {}).items():
|
|
1750
|
+
gvk_list = def_data.get("x-kubernetes-group-version-kind", [])
|
|
1751
|
+
if not gvk_list:
|
|
1752
|
+
continue
|
|
1753
|
+
|
|
1754
|
+
# Check if this definition is for our target kind
|
|
1755
|
+
for gvk in gvk_list:
|
|
1756
|
+
if gvk.get("kind") == kind:
|
|
1757
|
+
group = gvk.get("group", "")
|
|
1758
|
+
version = gvk.get("version", "")
|
|
1759
|
+
|
|
1760
|
+
# Create schema data using helper function
|
|
1761
|
+
is_namespaced = namespacing_dict.get(kind, True)
|
|
1762
|
+
schema_data = _build_schema_data(def_data, gvk, is_namespaced)
|
|
1763
|
+
|
|
1764
|
+
new_schemas_for_kind.append((group, version, schema_data))
|
|
1765
|
+
LOGGER.debug(f"Found schema for {kind} (group={group}, version={version})")
|
|
1766
|
+
break
|
|
1767
|
+
|
|
1768
|
+
if not new_schemas_for_kind:
|
|
1769
|
+
raise RuntimeError(
|
|
1770
|
+
f"No schema definition found for {kind} in the fetched API schemas. "
|
|
1771
|
+
f"The resource exists on the cluster but its schema could not be extracted. "
|
|
1772
|
+
f"This may indicate an issue with the CRD definition or API server configuration."
|
|
1773
|
+
)
|
|
1774
|
+
|
|
1775
|
+
# Update or add the resource in the mapping using the merge helper
|
|
1776
|
+
updated = False
|
|
1777
|
+
for group, version, new_schema_data in new_schemas_for_kind:
|
|
1778
|
+
_was_updated, action = _merge_schema_into_mapping(
|
|
1779
|
+
resources_mapping, kind_lower, group, version, new_schema_data
|
|
1780
|
+
)
|
|
1781
|
+
updated = True
|
|
1782
|
+
if action == "updated":
|
|
1783
|
+
LOGGER.info(f"Updated existing schema for {kind} ({group}/{version})")
|
|
1784
|
+
elif action == "added_version":
|
|
1785
|
+
LOGGER.info(f"Added new schema version for {kind} ({group}/{version})")
|
|
1786
|
+
else: # added_new
|
|
1787
|
+
LOGGER.info(f"Added new resource {kind} ({group}/{version})")
|
|
1788
|
+
|
|
1789
|
+
if updated:
|
|
1790
|
+
# Save the updated resources mapping
|
|
1791
|
+
try:
|
|
1792
|
+
save_json_archive(resources_mapping, RESOURCES_MAPPING_FILE)
|
|
1793
|
+
LOGGER.info(f"Successfully updated schema for {kind}")
|
|
1794
|
+
LOGGER.info(f"Total resources in mapping: {len(resources_mapping)}")
|
|
1795
|
+
except (OSError, TypeError) as e:
|
|
1796
|
+
raise RuntimeError(f"Failed to save resources mapping: {e}") from e
|
|
1797
|
+
|
|
1798
|
+
# Clear cached mapping data in SchemaValidator to force reload
|
|
1799
|
+
SchemaValidator.clear_cache()
|
|
1800
|
+
SchemaValidator.load_mappings_data()
|
|
1801
|
+
else:
|
|
1802
|
+
LOGGER.info(f"No schema updates needed for {kind} - schema is already up to date")
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"""Custom exceptions for class generator."""
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class ResourceNotFoundError(Exception):
|
|
5
|
+
"""Raised when a resource kind is not found."""
|
|
6
|
+
|
|
7
|
+
def __init__(self, kind: str, message: str | None = None) -> None:
|
|
8
|
+
self.kind = kind
|
|
9
|
+
if message is None:
|
|
10
|
+
message = f"Resource kind '{kind}' not found"
|
|
11
|
+
super().__init__(message)
|
|
@@ -6,6 +6,7 @@ from simple_logger.logger import get_logger
|
|
|
6
6
|
|
|
7
7
|
from class_generator.constants import MISSING_DESCRIPTION_STR
|
|
8
8
|
from class_generator.core.schema import extract_group_kind_version, read_resources_mapping_file
|
|
9
|
+
from class_generator.exceptions import ResourceNotFoundError
|
|
9
10
|
from class_generator.parsers.type_parser import get_property_schema, prepare_property_dict
|
|
10
11
|
from class_generator.utils import get_latest_version
|
|
11
12
|
from ocp_resources.resource import Resource
|
|
@@ -13,14 +14,6 @@ from ocp_resources.resource import Resource
|
|
|
13
14
|
LOGGER = get_logger(name=__name__)
|
|
14
15
|
|
|
15
16
|
|
|
16
|
-
class ResourceNotFoundError(Exception):
|
|
17
|
-
"""Raised when a resource kind is not found in the schema definition."""
|
|
18
|
-
|
|
19
|
-
def __init__(self, kind: str) -> None:
|
|
20
|
-
self.kind = kind
|
|
21
|
-
super().__init__(f"Resource kind '{kind}' not found in schema definition")
|
|
22
|
-
|
|
23
|
-
|
|
24
17
|
def parse_explain(kind: str) -> list[dict[str, Any]]:
|
|
25
18
|
"""
|
|
26
19
|
Parse OpenAPI explain data for a given resource kind.
|
|
@@ -6,6 +6,7 @@ from unittest.mock import patch
|
|
|
6
6
|
from click.testing import CliRunner
|
|
7
7
|
|
|
8
8
|
from class_generator.cli import main
|
|
9
|
+
from class_generator.core.schema import ResourceNotFoundError
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
class TestCLIFunctionality:
|
|
@@ -253,3 +254,46 @@ class TestCLIFunctionality:
|
|
|
253
254
|
result = runner.invoke(cli=main, args=[], catch_exceptions=False)
|
|
254
255
|
assert result.exit_code != 0
|
|
255
256
|
# Error is printed to stderr, not stdout
|
|
257
|
+
|
|
258
|
+
def test_update_schema_for_single_resource(self):
|
|
259
|
+
"""Test --update-schema-for functionality."""
|
|
260
|
+
runner = CliRunner()
|
|
261
|
+
|
|
262
|
+
with patch("class_generator.cli.update_single_resource_schema") as mock_update:
|
|
263
|
+
mock_update.return_value = None
|
|
264
|
+
|
|
265
|
+
result = runner.invoke(cli=main, args=["--update-schema-for", "LlamaStackDistribution"])
|
|
266
|
+
|
|
267
|
+
assert result.exit_code == 0
|
|
268
|
+
mock_update.assert_called_once_with(kind="LlamaStackDistribution")
|
|
269
|
+
|
|
270
|
+
def test_update_schema_for_mutual_exclusivity_with_update_schema(self):
|
|
271
|
+
"""Test --update-schema-for and --update-schema are mutually exclusive."""
|
|
272
|
+
runner = CliRunner()
|
|
273
|
+
|
|
274
|
+
result = runner.invoke(cli=main, args=["--update-schema", "--update-schema-for", "Pod"])
|
|
275
|
+
|
|
276
|
+
# Should fail due to mutual exclusivity
|
|
277
|
+
assert result.exit_code != 0
|
|
278
|
+
assert "mutually exclusive" in result.output
|
|
279
|
+
|
|
280
|
+
def test_update_schema_for_cannot_combine_with_kind(self):
|
|
281
|
+
"""Test that --update-schema-for cannot be combined with -k/--kind."""
|
|
282
|
+
runner = CliRunner()
|
|
283
|
+
|
|
284
|
+
result = runner.invoke(cli=main, args=["--update-schema-for", "Pod", "-k", "Pod"])
|
|
285
|
+
|
|
286
|
+
# Should fail due to constraint
|
|
287
|
+
assert result.exit_code != 0
|
|
288
|
+
|
|
289
|
+
def test_update_schema_for_resource_not_found(self):
|
|
290
|
+
"""Test --update-schema-for with a non-existent resource."""
|
|
291
|
+
runner = CliRunner()
|
|
292
|
+
|
|
293
|
+
with patch("class_generator.cli.update_single_resource_schema") as mock_update:
|
|
294
|
+
mock_update.side_effect = ResourceNotFoundError(kind="FakeResource")
|
|
295
|
+
|
|
296
|
+
result = runner.invoke(cli=main, args=["--update-schema-for", "FakeResource"], catch_exceptions=False)
|
|
297
|
+
|
|
298
|
+
# Should exit with error
|
|
299
|
+
assert result.exit_code != 0
|