openshift-python-wrapper 4.20.6__tar.gz → 4.20.8__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.
Files changed (459) hide show
  1. openshift_python_wrapper-4.20.8/.git +1 -0
  2. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/.pre-commit-config.yaml +3 -3
  3. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/PKG-INFO +2 -2
  4. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/cli.py +4 -5
  5. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/core/discovery.py +1 -1
  6. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/core/generator.py +2 -2
  7. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/core/schema.py +9 -11
  8. openshift_python_wrapper-4.20.8/class_generator/formatters/file_writer.py +71 -0
  9. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/manifests/class_generator_template.j2 +5 -1
  10. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/parsers/type_parser.py +1 -1
  11. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/parsers/user_code_parser.py +1 -1
  12. {openshift_python_wrapper-4.20.6/ocp_resources → openshift_python_wrapper-4.20.8/class_generator/tests/manifests/APIServer}/api_server.py +2 -0
  13. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/tests/manifests/ClusterOperator/cluster_operator.py +1 -0
  14. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/tests/manifests/ConfigMap/config_map.py +2 -0
  15. {openshift_python_wrapper-4.20.6/ocp_resources → openshift_python_wrapper-4.20.8/class_generator/tests/manifests/DNS}/dns_config_openshift_io.py +2 -0
  16. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/tests/manifests/DNS/dns_operator_openshift_io.py +2 -0
  17. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/tests/manifests/Deployment/deployment.py +3 -1
  18. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/tests/manifests/ImageContentSourcePolicy/image_content_source_policy.py +2 -0
  19. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/tests/manifests/Ingress/ingress_config_openshift_io.py +2 -0
  20. {openshift_python_wrapper-4.20.6/ocp_resources → openshift_python_wrapper-4.20.8/class_generator/tests/manifests/Ingress}/ingress_networking_k8s_io.py +2 -0
  21. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/tests/manifests/Machine/machine.py +2 -0
  22. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/tests/manifests/NMState/nm_state.py +2 -0
  23. {openshift_python_wrapper-4.20.6/ocp_resources → openshift_python_wrapper-4.20.8/class_generator/tests/manifests/OAuth}/oauth.py +2 -0
  24. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/tests/manifests/Pipeline/pipeline.py +2 -0
  25. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/tests/manifests/Pod/pod.py +3 -1
  26. {openshift_python_wrapper-4.20.6/ocp_resources → openshift_python_wrapper-4.20.8/class_generator/tests/manifests/RouteAdvertisements}/route_advertisements.py +3 -1
  27. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/tests/manifests/Secret/secret.py +2 -0
  28. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/tests/manifests/ServiceMeshMember/service_mesh_member.py +3 -1
  29. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/tests/manifests/ServingRuntime/serving_runtime.py +3 -1
  30. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/tests/manifests/test_parse_explain.j2 +12 -17
  31. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/tests/test_class_generator.py +18 -22
  32. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/tests/test_cli.py +3 -1
  33. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/tests/test_resource_discovery.py +75 -81
  34. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/tests/test_schema_new_functions.py +17 -10
  35. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/utils.py +34 -35
  36. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/examples/resource_list.py +1 -1
  37. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/examples/validation_demo.py +4 -3
  38. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/fake_kubernetes_client/dynamic_client.py +4 -4
  39. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/fake_kubernetes_client/exceptions.py +1 -5
  40. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/fake_kubernetes_client/kubernetes_client.py +13 -13
  41. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/fake_kubernetes_client/resource_field.py +3 -2
  42. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/fake_kubernetes_client/resource_instance.py +21 -20
  43. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/fake_kubernetes_client/resource_manager.py +11 -13
  44. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/fake_kubernetes_client/resource_registry.py +9 -9
  45. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/fake_kubernetes_client/resource_storage.py +8 -12
  46. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/fake_kubernetes_client/status_schema_parser.py +3 -3
  47. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/fake_kubernetes_client/status_templates.py +2 -2
  48. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/mcp_server/example_client.py +1 -0
  49. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/mcp_server/server.py +5 -5
  50. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/mcp_server/tests/test_server.py +10 -10
  51. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/aaq.py +1 -0
  52. {openshift_python_wrapper-4.20.6/class_generator/tests/manifests/APIServer → openshift_python_wrapper-4.20.8/ocp_resources}/api_server.py +1 -0
  53. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/authorino.py +2 -1
  54. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/backup.py +0 -1
  55. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/catalog_source.py +3 -2
  56. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/cdi.py +1 -0
  57. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/chaos_engine.py +0 -2
  58. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/chaos_result.py +0 -2
  59. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/cluster_resource_quota.py +2 -1
  60. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/cluster_role.py +0 -1
  61. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/cluster_role_binding.py +0 -2
  62. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/cluster_user_defined_network.py +2 -1
  63. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/config_imageregistry_operator_openshift_io.py +2 -1
  64. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/config_operator_openshift_io.py +1 -0
  65. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/config_samples_operator_openshift_io.py +1 -0
  66. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/console_config_openshift_io.py +1 -0
  67. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/console_operator_openshift_io.py +1 -0
  68. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/csi_driver.py +1 -0
  69. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/data_import_cron.py +2 -1
  70. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/data_science_cluster.py +1 -0
  71. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/data_source.py +2 -0
  72. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/datavolume.py +13 -9
  73. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/destination_rule.py +0 -2
  74. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/direct_volume_migration.py +1 -0
  75. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/direct_volume_migration_progress.py +1 -0
  76. {openshift_python_wrapper-4.20.6/class_generator/tests/manifests/DNS → openshift_python_wrapper-4.20.8/ocp_resources}/dns_config_openshift_io.py +1 -0
  77. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/dns_operator_openshift_io.py +1 -0
  78. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/dsc_initialization.py +2 -1
  79. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/frr_configuration.py +1 -0
  80. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/gateway.py +0 -2
  81. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/gateway_class.py +2 -1
  82. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/gateway_gateway_networking_k8s_io.py +2 -1
  83. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/gateway_networking_istio_io.py +1 -0
  84. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/group.py +2 -1
  85. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/hostpath_provisioner.py +1 -2
  86. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/image_config_openshift_io.py +1 -0
  87. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/image_content_source_policy.py +1 -0
  88. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/image_image_openshift_io.py +1 -0
  89. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/inference_graph.py +2 -1
  90. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/ingress_config_openshift_io.py +1 -0
  91. {openshift_python_wrapper-4.20.6/class_generator/tests/manifests/Ingress → openshift_python_wrapper-4.20.8/ocp_resources}/ingress_networking_k8s_io.py +1 -0
  92. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/jaeger.py +1 -0
  93. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/kube_descheduler.py +1 -0
  94. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/kubelet_config.py +1 -0
  95. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/kubevirt.py +1 -0
  96. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/llama_stack_distribution.py +2 -1
  97. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/llm_inference_service.py +1 -0
  98. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/lm_eval_job.py +2 -1
  99. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/machine_set.py +3 -2
  100. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/maria_db.py +1 -0
  101. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/mariadb_operator.py +1 -0
  102. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/mig_analytic.py +2 -1
  103. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/mig_cluster.py +2 -1
  104. openshift_python_wrapper-4.20.8/ocp_resources/mig_controller.py +54 -0
  105. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/mig_migration.py +2 -1
  106. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/mig_plan.py +1 -0
  107. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/model_registry_components_platform_opendatahub_io.py +1 -0
  108. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/model_registry_modelregistry_opendatahub_io.py +2 -1
  109. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/multi_namespace_virtual_machine_storage_migration.py +2 -1
  110. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/multi_namespace_virtual_machine_storage_migration_plan.py +2 -1
  111. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/namespace.py +1 -0
  112. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/network_config_openshift_io.py +1 -0
  113. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/network_operator_openshift_io.py +1 -0
  114. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/network_policy.py +2 -1
  115. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/nm_state.py +1 -0
  116. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/node_config_openshift_io.py +1 -0
  117. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/notebook.py +1 -0
  118. {openshift_python_wrapper-4.20.6/class_generator/tests/manifests/OAuth → openshift_python_wrapper-4.20.8/ocp_resources}/oauth.py +1 -0
  119. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/open_telemetry_collector.py +2 -1
  120. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/operator.py +1 -0
  121. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/peer_authentication.py +0 -2
  122. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/persistent_volume.py +0 -2
  123. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/persistent_volume_claim.py +1 -3
  124. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/pipeline.py +1 -0
  125. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/pipeline_run.py +1 -0
  126. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/pod_metrics.py +2 -1
  127. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/project_config_openshift_io.py +1 -0
  128. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/project_project_openshift_io.py +1 -0
  129. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/prometheus.py +1 -0
  130. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/replica_set.py +2 -1
  131. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/resource.py +10 -12
  132. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/restore.py +0 -2
  133. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/rhmi.py +2 -1
  134. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/role.py +1 -2
  135. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/role_binding.py +1 -2
  136. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/route.py +1 -2
  137. {openshift_python_wrapper-4.20.6/class_generator/tests/manifests/RouteAdvertisements → openshift_python_wrapper-4.20.8/ocp_resources}/route_advertisements.py +2 -1
  138. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/scaled_object.py +2 -1
  139. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/scheduler.py +1 -0
  140. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/security_context_constraints.py +2 -1
  141. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/self_subject_review.py +1 -0
  142. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/service.py +1 -0
  143. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/service_account.py +1 -0
  144. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/service_mesh_control_plane.py +0 -2
  145. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/service_mesh_member.py +2 -1
  146. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/service_mesh_member_roll.py +0 -2
  147. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/serving_runtime.py +2 -1
  148. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/snapshot.py +2 -1
  149. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/sriov_network_node_state.py +2 -1
  150. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/ssp.py +2 -1
  151. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/storage_class.py +0 -1
  152. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/storage_cluster.py +1 -0
  153. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/storage_profile.py +0 -2
  154. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/task.py +1 -0
  155. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/task_run.py +1 -0
  156. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/tempo_stack.py +2 -1
  157. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/upload_token_request.py +1 -3
  158. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/user.py +2 -1
  159. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/utils/schema_validator.py +11 -8
  160. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/virtual_machine_cluster_instancetype.py +2 -1
  161. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/virtual_machine_cluster_preference.py +1 -0
  162. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/virtual_machine_export.py +2 -1
  163. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/virtual_machine_import.py +2 -4
  164. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/virtual_machine_instance_migration.py +1 -0
  165. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/virtual_machine_instance_preset.py +2 -1
  166. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/virtual_machine_instance_replica_set.py +2 -1
  167. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/virtual_machine_instancetype.py +2 -1
  168. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/virtual_machine_preference.py +1 -0
  169. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/virtual_machine_restore.py +2 -4
  170. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/virtual_machine_snapshot.py +2 -4
  171. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/virtual_machine_storage_migration.py +2 -1
  172. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/virtual_machine_storage_migration_plan.py +2 -1
  173. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/virtual_service.py +0 -2
  174. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/volume_snapshot.py +2 -1
  175. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/volume_snapshot_class.py +2 -1
  176. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/pyproject.toml +29 -2
  177. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/scripts/generate_pytest_test.py +4 -4
  178. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/scripts/validate_resources.py +4 -3
  179. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_api_group_order.py +2 -2
  180. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_aaq.py +1 -0
  181. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_api_server.py +1 -0
  182. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_authorino.py +1 -0
  183. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_cdi.py +1 -0
  184. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_cdi_config.py +1 -0
  185. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_cluster_resource_quota.py +1 -0
  186. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_cluster_user_defined_network.py +1 -0
  187. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_config_map.py +1 -0
  188. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_console_config_openshift_io.py +1 -0
  189. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_console_operator_openshift_io.py +1 -0
  190. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_csi_driver.py +1 -0
  191. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_data_import_cron.py +1 -0
  192. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_data_science_cluster.py +1 -0
  193. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_deployment.py +1 -0
  194. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_direct_volume_migration.py +1 -0
  195. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_direct_volume_migration_progress.py +1 -0
  196. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_dns_config_openshift_io.py +1 -0
  197. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_dns_operator_openshift_io.py +1 -0
  198. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_dsc_initialization.py +1 -0
  199. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_group.py +1 -0
  200. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_guardrails_orchestrator.py +1 -0
  201. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_image_caching_internal_knative_dev.py +1 -0
  202. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_image_config_openshift_io.py +1 -0
  203. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_image_content_source_policy.py +1 -0
  204. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_image_image_openshift_io.py +1 -0
  205. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_inference_graph.py +1 -0
  206. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_kube_descheduler.py +1 -0
  207. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_kubelet_config.py +1 -0
  208. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_kubevirt.py +1 -0
  209. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_llama_stack_distribution.py +1 -0
  210. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_lm_eval_job.py +1 -0
  211. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_machine.py +1 -0
  212. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_maria_db.py +1 -0
  213. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_mariadb_operator.py +1 -0
  214. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_mig_analytic.py +1 -0
  215. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_mig_cluster.py +1 -0
  216. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_mig_migration.py +1 -0
  217. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_mig_plan.py +1 -0
  218. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_model_registry.py +1 -0
  219. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_model_registry_components_platform_opendatahub_io.py +1 -0
  220. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_model_registry_modelregistry_opendatahub_io.py +1 -0
  221. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_mtq.py +1 -0
  222. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_namespace.py +1 -0
  223. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_network_config_openshift_io.py +1 -0
  224. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_network_operator_openshift_io.py +1 -0
  225. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_nm_state.py +1 -0
  226. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_node.py +1 -0
  227. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_node_config_openshift_io.py +1 -0
  228. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_node_network_configuration_policy_latest.py +1 -0
  229. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_notebook.py +1 -0
  230. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_oauth.py +1 -0
  231. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_operator.py +1 -0
  232. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_pod.py +1 -0
  233. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_pod_metrics.py +1 -0
  234. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_project_config_openshift_io.py +1 -0
  235. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_project_project_openshift_io.py +1 -0
  236. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_project_request.py +2 -1
  237. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_prometheus.py +1 -0
  238. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_replica_set.py +1 -0
  239. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_scheduler.py +1 -0
  240. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_security_context_constraints.py +1 -0
  241. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_self_subject_review.py +1 -0
  242. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_service.py +1 -0
  243. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_service_mesh_member.py +1 -0
  244. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_service_serving_knative_dev.py +1 -0
  245. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_serving_runtime.py +1 -0
  246. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_snapshot.py +1 -0
  247. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_ssp.py +1 -0
  248. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_storage_cluster.py +1 -0
  249. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_user.py +1 -0
  250. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_user_defined_network.py +1 -0
  251. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_virtual_machine_cluster_instancetype.py +1 -0
  252. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_virtual_machine_cluster_preference.py +1 -0
  253. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_virtual_machine_export.py +1 -0
  254. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_virtual_machine_instance_migration.py +1 -0
  255. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_virtual_machine_instance_preset.py +1 -0
  256. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_virtual_machine_instance_replica_set.py +1 -0
  257. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_virtual_machine_instancetype.py +1 -0
  258. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_virtual_machine_preference.py +1 -0
  259. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_volume_snapshot.py +1 -0
  260. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resources/test_volume_snapshot_class.py +1 -0
  261. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_unittests.py +1 -0
  262. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/utils.py +1 -1
  263. openshift_python_wrapper-4.20.8/uv.lock +2763 -0
  264. openshift_python_wrapper-4.20.6/.git +0 -1
  265. openshift_python_wrapper-4.20.6/class_generator/formatters/file_writer.py +0 -36
  266. openshift_python_wrapper-4.20.6/uv.lock +0 -2312
  267. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/.coderabbit.yaml +0 -0
  268. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/.dockerignore +0 -0
  269. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/.flake8 +0 -0
  270. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/.gitattributes +0 -0
  271. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  272. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  273. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/.github/pull_request_template.md +0 -0
  274. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/.github/weekly-digest.yml +0 -0
  275. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/.github/workflows/close-stale-issues.yml +0 -0
  276. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/.gitignore +0 -0
  277. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/.gitleaks.toml +0 -0
  278. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/.readthedocs.yaml +0 -0
  279. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/.release-it.json +0 -0
  280. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/.sonarcloud.properties +0 -0
  281. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/CONTRIBUTING.md +0 -0
  282. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/LICENSE +0 -0
  283. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/Makefile +0 -0
  284. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/OWNERS +0 -0
  285. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/README.md +0 -0
  286. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/VERSION +0 -0
  287. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/README.md +0 -0
  288. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/__init__.py +0 -0
  289. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/constants.py +0 -0
  290. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/core/__init__.py +0 -0
  291. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/core/coverage.py +0 -0
  292. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/formatters/__init__.py +0 -0
  293. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/formatters/template_renderer.py +1 -1
  294. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/parsers/__init__.py +0 -0
  295. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/parsers/explain_parser.py +0 -0
  296. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/py.typed +0 -0
  297. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/schema/__cluster_version__.txt +0 -0
  298. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/schema/__resources-mappings.json.gz +0 -0
  299. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/schema/_definitions.json +0 -0
  300. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/tests/test_batch_regeneration.py +2 -2
  301. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/tests/test_generation.py +0 -0
  302. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/tests/test_schema_parsing.py +0 -0
  303. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/tests/test_user_code_parser.py +0 -0
  304. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/class_generator/tests/test_utils.py +0 -0
  305. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/docs/Makefile +0 -0
  306. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/docs/conf.py +0 -0
  307. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/docs/index.rst +0 -0
  308. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/docs/modules.rst +0 -0
  309. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/docs/ocp_resources.rst +0 -0
  310. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/examples/general.py +0 -0
  311. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/examples/node_network_configuration_policy.py +0 -0
  312. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/examples/pods.py +0 -0
  313. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/examples/role.py +0 -0
  314. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/examples/special_cases.py +0 -0
  315. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/examples/validation_troubleshooting.py +2 -2
  316. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/examples/virtual_machine.py +0 -0
  317. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/fake_kubernetes_client/README.md +0 -0
  318. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/fake_kubernetes_client/__init__.py +3 -3
  319. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/fake_kubernetes_client/configuration.py +0 -0
  320. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/fake_kubernetes_client/types.py +0 -0
  321. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/mcp_server/README.md +0 -0
  322. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/mcp_server/__init__.py +0 -0
  323. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/mcp_server/server-info.json +0 -0
  324. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/mcp_server/tests/__init__.py +0 -0
  325. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/__init__.py +0 -0
  326. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/api_service.py +0 -0
  327. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/application_aware_applied_cluster_resource_quota.py +0 -0
  328. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/application_aware_cluster_resource_quota.py +0 -0
  329. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/application_aware_resource_quota.py +0 -0
  330. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/benchmark.py +0 -0
  331. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/bgp_session_state.py +0 -0
  332. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/cdi_config.py +0 -0
  333. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/cluster_claim.py +0 -0
  334. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/cluster_deployment.py +0 -0
  335. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/cluster_operator.py +0 -0
  336. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/cluster_pool.py +0 -0
  337. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/cluster_service_version.py +0 -0
  338. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/cluster_version.py +0 -0
  339. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/config_map.py +0 -0
  340. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/console_cli_download.py +0 -0
  341. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/console_plugin.py +0 -0
  342. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/console_quick_start.py +0 -0
  343. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/controller_revision.py +0 -0
  344. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/cron_job.py +0 -0
  345. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/csi_storage_capacity.py +0 -0
  346. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/custom_resource_definition.py +0 -0
  347. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/daemonset.py +2 -2
  348. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/deployment.py +0 -0
  349. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/endpoint_slice.py +1 -1
  350. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/endpoints.py +1 -1
  351. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/event.py +0 -0
  352. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/exceptions.py +0 -0
  353. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/fence_agent_remediation_templates.py +0 -0
  354. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/forklift_controller.py +0 -0
  355. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/guardrails_orchestrator.py +2 -2
  356. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/hook.py +1 -1
  357. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/host.py +1 -1
  358. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/hyperconverged.py +1 -1
  359. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/image_caching_internal_knative_dev.py +0 -0
  360. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/image_digest_mirror_set.py +0 -0
  361. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/image_stream.py +1 -1
  362. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/imagestreamtag.py +0 -0
  363. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/inference_service.py +0 -0
  364. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/infrastructure.py +0 -0
  365. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/ingress_controller.py +0 -0
  366. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/installplan.py +0 -0
  367. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/ip_address_pool.py +0 -0
  368. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/job.py +1 -1
  369. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/l2_advertisement.py +0 -0
  370. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/lease.py +1 -1
  371. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/limit_range.py +0 -0
  372. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/machine.py +0 -0
  373. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/machine_config.py +0 -0
  374. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/machine_config_pool.py +0 -0
  375. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/machine_health_check.py +1 -1
  376. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/managed_cluster.py +0 -0
  377. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/metallb.py +0 -0
  378. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/migration.py +1 -1
  379. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/migration_policy.py +0 -0
  380. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/model_registry.py +0 -0
  381. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/mtq.py +0 -0
  382. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/multi_cluster_hub.py +0 -0
  383. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/multi_cluster_observability.py +0 -0
  384. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/multi_network_policy.py +0 -0
  385. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/mutating_webhook_config.py +0 -0
  386. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/network_addons_config.py +0 -0
  387. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/network_attachment_definition.py +0 -0
  388. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/network_map.py +1 -1
  389. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/node.py +0 -0
  390. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/node_health_check.py +0 -0
  391. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/node_maintenance.py +0 -0
  392. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/node_network_configuration_enactment.py +0 -0
  393. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/node_network_configuration_policy.py +2 -2
  394. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/node_network_configuration_policy_latest.py +0 -0
  395. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/node_network_state.py +2 -2
  396. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/ocs_initialization.py +1 -1
  397. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/operator_condition.py +0 -0
  398. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/operator_group.py +1 -1
  399. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/operator_hub.py +0 -0
  400. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/operator_source.py +1 -1
  401. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/package_manifest.py +0 -0
  402. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/performance_profile.py +0 -0
  403. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/plan.py +0 -0
  404. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/pod.py +0 -0
  405. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/pod_disruption_budget.py +1 -1
  406. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/priority_class.py +1 -1
  407. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/project_request.py +0 -0
  408. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/prometheus_rule.py +0 -0
  409. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/provider.py +0 -0
  410. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/proxy.py +0 -0
  411. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/py.typed +0 -0
  412. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/reclaim_space_cron_job.py +0 -0
  413. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/reclaim_space_job.py +0 -0
  414. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/resource_quota.py +0 -0
  415. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/sealed_secret.py +0 -0
  416. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/secret.py +1 -1
  417. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/self_node_remediation_templates.py +0 -0
  418. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/service_monitor.py +0 -0
  419. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/service_serving_knative_dev.py +0 -0
  420. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/sriov_network.py +1 -1
  421. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/sriov_network_node_policy.py +1 -1
  422. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/storage_map.py +1 -1
  423. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/subscription.py +1 -1
  424. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/tekton_tasks.py +0 -0
  425. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/template.py +0 -0
  426. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/trustyai_service.py +0 -0
  427. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/user_defined_network.py +0 -0
  428. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/utils/__init__.py +0 -0
  429. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/utils/archive_utils.py +0 -0
  430. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/utils/constants.py +0 -0
  431. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/utils/resource_constants.py +0 -0
  432. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/utils/utils.py +0 -0
  433. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/validating_webhook_config.py +0 -0
  434. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/virtual_machine.py +0 -0
  435. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/virtual_machine_clone.py +0 -0
  436. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/virtual_machine_instance.py +0 -0
  437. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/virtual_machine_migration_resource_quota.py +0 -0
  438. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/ocp_resources/vm_import_config.py +0 -0
  439. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/pypi-dist/.gitignore +0 -0
  440. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/renovate.json +0 -0
  441. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/scripts/__init__.py +0 -0
  442. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/scripts/diff-from-latest-release.sh +0 -0
  443. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/scripts/diff-from-tag.sh +0 -0
  444. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/scripts/generate_changelog.py +0 -0
  445. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/scripts/get-latest-release.sh +0 -0
  446. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/sonar-project.properties +0 -0
  447. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/__init__.py +0 -0
  448. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/conftest.py +0 -0
  449. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/fixtures/validation_schemas.py +0 -0
  450. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/manifests/vm.yaml +0 -0
  451. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/scripts/__init__.py +0 -0
  452. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_camelcase_to_snake.py +0 -0
  453. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resource.py +0 -0
  454. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_resource_validation.py +0 -0
  455. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_schema_loading.py +0 -0
  456. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_validate_resources.py +0 -0
  457. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_validate_resources_script.py +0 -0
  458. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tests/test_validation_error.py +0 -0
  459. {openshift_python_wrapper-4.20.6 → openshift_python_wrapper-4.20.8}/tox.toml +0 -0
@@ -0,0 +1 @@
1
+ gitdir: /tmp/github-webhook-openshift-python-wrapper-zslul6r2/.git/worktrees/github-webhook-openshift-python-wrapper-zslul6r2-worktree-6689080a-f1a6-4520-b182-7e93e358d7b3
@@ -45,18 +45,18 @@ repos:
45
45
  ]
46
46
 
47
47
  - repo: https://github.com/astral-sh/ruff-pre-commit
48
- rev: v0.14.2
48
+ rev: v0.15.14
49
49
  hooks:
50
50
  - id: ruff
51
51
  - id: ruff-format
52
52
 
53
53
  - repo: https://github.com/gitleaks/gitleaks
54
- rev: v8.28.0
54
+ rev: v8.30.1
55
55
  hooks:
56
56
  - id: gitleaks
57
57
 
58
58
  - repo: https://github.com/pre-commit/mirrors-mypy
59
- rev: v1.18.2
59
+ rev: v2.1.0
60
60
  hooks:
61
61
  - id: mypy
62
62
  exclude: ^(tests/|examples/|docs/)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openshift-python-wrapper
3
- Version: 4.20.6
3
+ Version: 4.20.8
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/
@@ -20,7 +20,7 @@ Requires-Dist: deepdiff>=8.0.1
20
20
  Requires-Dist: fastmcp>=2.10.4
21
21
  Requires-Dist: jinja2>=3.1.4
22
22
  Requires-Dist: jsonschema>=4.20.0
23
- Requires-Dist: kubernetes>=31.0.0
23
+ Requires-Dist: kubernetes!=36.0.0,>=31.0.0
24
24
  Requires-Dist: packaging>=24.1
25
25
  Requires-Dist: pyhelper-utils>=0.0.42
26
26
  Requires-Dist: python-benedict>=0.33.2
@@ -1,14 +1,13 @@
1
1
  """Command-line interface for the class generator."""
2
2
 
3
3
  import fnmatch
4
+ import logging
4
5
  import shutil
5
6
  import sys
6
7
  from datetime import datetime
7
8
  from pathlib import Path
8
9
  from typing import Any
9
10
 
10
- import logging
11
-
12
11
  import cloup
13
12
  from cloup.constraints import If, IsSet, accept_none, require_one
14
13
  from simple_logger.logger import get_logger
@@ -17,7 +16,7 @@ from class_generator.constants import TESTS_MANIFESTS_DIR
17
16
  from class_generator.core.coverage import analyze_coverage, generate_report
18
17
  from class_generator.core.discovery import discover_generated_resources
19
18
  from class_generator.core.generator import class_generator
20
- from class_generator.core.schema import update_kind_schema, ClusterVersionError
19
+ from class_generator.core.schema import ClusterVersionError, update_kind_schema
21
20
  from class_generator.tests.test_generation import generate_class_generator_tests
22
21
  from class_generator.utils import execute_parallel_tasks
23
22
  from ocp_resources.utils.utils import convert_camel_case_to_snake_case
@@ -57,7 +56,7 @@ def handle_schema_update(update_schema: bool, generate_missing: bool) -> bool:
57
56
  LOGGER.info("Updating resource schema...")
58
57
  try:
59
58
  update_kind_schema()
60
- except (RuntimeError, IOError, ClusterVersionError) as e:
59
+ except (OSError, RuntimeError, ClusterVersionError) as e:
61
60
  LOGGER.exception(f"Failed to update schema: {e}")
62
61
  sys.exit(1)
63
62
 
@@ -450,7 +449,7 @@ def handle_test_generation(add_tests: bool) -> None:
450
449
  import os
451
450
 
452
451
  test_file = "class_generator/tests/test_class_generator.py"
453
- exit_code = os.system(f"uv run pytest {test_file}")
452
+ exit_code = os.system(f"uv run --group tests pytest {test_file}")
454
453
 
455
454
  # os.system returns the exit status shifted left by 8 bits
456
455
  if exit_code != 0:
@@ -1,8 +1,8 @@
1
1
  """Discovery functions for finding cluster resources and generated files."""
2
2
 
3
+ from concurrent.futures import Future, ThreadPoolExecutor, as_completed
3
4
  from pathlib import Path
4
5
  from typing import Any
5
- from concurrent.futures import ThreadPoolExecutor, as_completed, Future
6
6
 
7
7
  from kubernetes.dynamic import DynamicClient
8
8
  from simple_logger.logger import get_logger
@@ -155,7 +155,7 @@ def class_generator(
155
155
  LOGGER.info("Updating schema")
156
156
  try:
157
157
  update_kind_schema()
158
- except (RuntimeError, IOError) as e:
158
+ except (OSError, RuntimeError) as e:
159
159
  error_msg = f"Failed to update schema: {e}"
160
160
  LOGGER.error(error_msg)
161
161
  raise RuntimeError(error_msg) from e
@@ -188,7 +188,7 @@ def class_generator(
188
188
  unique_groups = set()
189
189
  for resource in resources:
190
190
  # Use the original group name that we stored
191
- if "original_group" in resource and resource["original_group"]:
191
+ if resource.get("original_group"):
192
192
  unique_groups.add(resource["original_group"])
193
193
 
194
194
  use_output_file_suffix: bool = len(unique_groups) > 1
@@ -12,7 +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.utils import execute_parallel_with_mapping, execute_parallel_tasks
15
+ from class_generator.utils import execute_parallel_tasks, execute_parallel_with_mapping
16
16
  from ocp_resources.utils.archive_utils import save_json_archive
17
17
  from ocp_resources.utils.schema_validator import SchemaValidator
18
18
 
@@ -22,8 +22,6 @@ LOGGER = get_logger(name=__name__)
22
22
  class ClusterVersionError(Exception):
23
23
  """Raised when there are issues with cluster version operations."""
24
24
 
25
- pass
26
-
27
25
 
28
26
  def get_client_binary() -> str:
29
27
  """Determine whether to use 'oc' or 'kubectl' binary."""
@@ -138,7 +136,7 @@ def check_and_update_cluster_version(client: str) -> bool:
138
136
  try:
139
137
  with open(cluster_version_file, "r") as fd:
140
138
  last_cluster_version_generated = fd.read().strip()
141
- except (FileNotFoundError, IOError):
139
+ except (OSError, FileNotFoundError):
142
140
  # Treat missing file as first run - use baseline version that allows updates
143
141
  last_cluster_version_generated = "v0.0.0"
144
142
  LOGGER.info("Cluster version file not found - treating as first run with baseline version v0.0.0")
@@ -1360,10 +1358,10 @@ def write_schema_files(
1360
1358
  # Ensure schema directory exists
1361
1359
  try:
1362
1360
  Path(SCHEMA_DIR).mkdir(parents=True, exist_ok=True)
1363
- except (OSError, IOError) as e:
1361
+ except OSError as e:
1364
1362
  error_msg = f"Failed to create schema directory {SCHEMA_DIR}: {e}"
1365
1363
  LOGGER.error(error_msg)
1366
- raise IOError(error_msg) from e
1364
+ raise OSError(error_msg) from e
1367
1365
 
1368
1366
  # Fetch missing core definitions if schemas are available
1369
1367
  if schemas:
@@ -1400,18 +1398,18 @@ def write_schema_files(
1400
1398
  with open(definitions_file, "w") as fd:
1401
1399
  json.dump(definitions_data, fd, indent=2, sort_keys=True)
1402
1400
  LOGGER.info(f"Written {len(definitions)} definitions to {definitions_file}")
1403
- except (OSError, IOError, TypeError) as e:
1401
+ except (OSError, TypeError) as e:
1404
1402
  error_msg = f"Failed to write definitions file {definitions_file}: {e}"
1405
1403
  LOGGER.error(error_msg)
1406
- raise IOError(error_msg) from e
1404
+ raise OSError(error_msg) from e
1407
1405
 
1408
1406
  # Write and archive resources mapping
1409
1407
  try:
1410
1408
  save_json_archive(resources_mapping, RESOURCES_MAPPING_FILE)
1411
- except (OSError, IOError, TypeError) as e:
1409
+ except (OSError, TypeError) as e:
1412
1410
  error_msg = f"Failed to save and archive resources mapping file {RESOURCES_MAPPING_FILE}: {e}"
1413
1411
  LOGGER.error(error_msg)
1414
- raise IOError(error_msg) from e
1412
+ raise OSError(error_msg) from e
1415
1413
 
1416
1414
 
1417
1415
  @dataclasses.dataclass
@@ -1527,7 +1525,7 @@ def _handle_no_schemas_case() -> None:
1527
1525
  existing_definitions_data = json.load(fd)
1528
1526
  definitions = existing_definitions_data.get("definitions", {})
1529
1527
  LOGGER.info(f"Found {len(definitions)} existing definitions that will be preserved")
1530
- except (FileNotFoundError, IOError, json.JSONDecodeError):
1528
+ except (OSError, FileNotFoundError, json.JSONDecodeError):
1531
1529
  LOGGER.debug("Could not load existing definitions file. No existing definitions to preserve.")
1532
1530
 
1533
1531
 
@@ -0,0 +1,71 @@
1
+ """File writing utilities for generated code."""
2
+
3
+ from pathlib import Path
4
+
5
+ from pyhelper_utils.shell import run_command
6
+ from simple_logger.logger import get_logger
7
+
8
+ LOGGER = get_logger(name=__name__)
9
+
10
+ # Project root directory (contains pyproject.toml and .pre-commit-config.yaml)
11
+ _PROJECT_ROOT = Path(__file__).resolve().parent.parent.parent
12
+
13
+
14
+ def write_and_format_rendered(filepath: str, output: str) -> None:
15
+ """
16
+ Write rendered content to file and format with prek, falling back to ruff.
17
+
18
+ Args:
19
+ filepath: Path to write the file to
20
+ output: Content to write
21
+ """
22
+ with open(filepath, "w", encoding="utf-8") as fd:
23
+ fd.write(output)
24
+
25
+ pre_commit_config = str(_PROJECT_ROOT / ".pre-commit-config.yaml")
26
+ pyproject_toml = str(_PROJECT_ROOT / "pyproject.toml")
27
+
28
+ # Try prek first (runs all pre-commit hooks including ruff)
29
+ prek_success = False
30
+ try:
31
+ rc, stdout, stderr = run_command(
32
+ command=["uvx", "prek", "-c", pre_commit_config, "run", "--files", filepath],
33
+ verify_stderr=False,
34
+ check=False,
35
+ log_errors=False,
36
+ )
37
+ if not rc:
38
+ if stderr:
39
+ LOGGER.warning(f"Prek hooks failed for {filepath}, falling back to ruff.")
40
+ LOGGER.debug(f"prek stderr: {stderr}")
41
+ else:
42
+ prek_success = True
43
+
44
+ if stdout:
45
+ LOGGER.info(f"{filepath} fixed by prek")
46
+ LOGGER.debug(f"prek stdout: {stdout}")
47
+ except Exception as e:
48
+ LOGGER.warning(f"Failed to run prek for {filepath}, falling back to ruff: {e}")
49
+
50
+ if not prek_success:
51
+ _run_ruff_fallback(filepath=filepath, pyproject_toml=pyproject_toml)
52
+
53
+
54
+ def _run_ruff_fallback(filepath: str, pyproject_toml: str) -> None:
55
+ """Run ruff check --fix and ruff format as fallback when prek fails."""
56
+ for ruff_cmd in (
57
+ ["uvx", "ruff", "check", "--fix", "--config", pyproject_toml, filepath],
58
+ ["uvx", "ruff", "format", "--config", pyproject_toml, filepath],
59
+ ):
60
+ try:
61
+ _, stdout, _ = run_command(
62
+ command=ruff_cmd,
63
+ verify_stderr=False,
64
+ check=False,
65
+ log_errors=False,
66
+ )
67
+ if stdout:
68
+ LOGGER.info(f"{filepath} fixed by ruff")
69
+ LOGGER.debug(f"ruff stdout: {stdout}")
70
+ except Exception as e:
71
+ LOGGER.error(f"Ruff fallback failed for {filepath}: {e}")
@@ -14,8 +14,12 @@
14
14
  {% endfor %}
15
15
 
16
16
  from typing import Any
17
- from ocp_resources.resource import {{ base_class }}
17
+
18
+ {% if all_required_args %}
18
19
  from ocp_resources.exceptions import MissingRequiredArgumentError
20
+ {% endif %}
21
+ from ocp_resources.resource import {{ base_class }}
22
+
19
23
 
20
24
  class {{ kind }}({{ base_class }}):
21
25
  """
@@ -6,7 +6,7 @@ from typing import Any
6
6
 
7
7
  from simple_logger.logger import get_logger
8
8
 
9
- from class_generator.constants import MISSING_DESCRIPTION_STR, SPEC_STR, DEFINITIONS_FILE
9
+ from class_generator.constants import DEFINITIONS_FILE, MISSING_DESCRIPTION_STR, SPEC_STR
10
10
  from class_generator.utils import sanitize_python_name
11
11
  from ocp_resources.utils.utils import convert_camel_case_to_snake_case
12
12
 
@@ -39,7 +39,7 @@ def parse_user_code_from_file(file_path: str) -> tuple[str, str]:
39
39
  f"Failed to decode file {file_path} with UTF-8 encoding. The file may contain invalid characters.",
40
40
  )
41
41
  except Exception as e:
42
- raise Exception(f"Unexpected error reading file {file_path}: {type(e).__name__}: {str(e)}")
42
+ raise Exception(f"Unexpected error reading file {file_path}: {type(e).__name__}: {e!s}")
43
43
 
44
44
  end_of_generated_code_line = " # End of generated code"
45
45
  user_code: str = ""
@@ -2,6 +2,7 @@
2
2
 
3
3
 
4
4
  from typing import Any
5
+
5
6
  from ocp_resources.resource import Resource
6
7
 
7
8
 
@@ -71,6 +72,7 @@ class APIServer(Resource):
71
72
  self.tls_security_profile = tls_security_profile
72
73
 
73
74
  def to_dict(self) -> None:
75
+
74
76
  super().to_dict()
75
77
 
76
78
  if not self.kind_dict and not self.yaml_file:
@@ -2,6 +2,7 @@
2
2
 
3
3
 
4
4
  from typing import Any
5
+
5
6
  from ocp_resources.resource import NamespacedResource
6
7
 
7
8
 
@@ -47,6 +48,7 @@ class ConfigMap(NamespacedResource):
47
48
  self.immutable = immutable
48
49
 
49
50
  def to_dict(self) -> None:
51
+
50
52
  super().to_dict()
51
53
 
52
54
  if not self.kind_dict and not self.yaml_file:
@@ -2,6 +2,7 @@
2
2
 
3
3
 
4
4
  from typing import Any
5
+
5
6
  from ocp_resources.resource import Resource
6
7
 
7
8
 
@@ -54,6 +55,7 @@ class DNS(Resource):
54
55
  self.public_zone = public_zone
55
56
 
56
57
  def to_dict(self) -> None:
58
+
57
59
  super().to_dict()
58
60
 
59
61
  if not self.kind_dict and not self.yaml_file:
@@ -2,6 +2,7 @@
2
2
 
3
3
 
4
4
  from typing import Any
5
+
5
6
  from ocp_resources.resource import Resource
6
7
 
7
8
 
@@ -93,6 +94,7 @@ class DNS(Resource):
93
94
  self.upstream_resolvers = upstream_resolvers
94
95
 
95
96
  def to_dict(self) -> None:
97
+
96
98
  super().to_dict()
97
99
 
98
100
  if not self.kind_dict and not self.yaml_file:
@@ -2,8 +2,9 @@
2
2
 
3
3
 
4
4
  from typing import Any
5
- from ocp_resources.resource import NamespacedResource
5
+
6
6
  from ocp_resources.exceptions import MissingRequiredArgumentError
7
+ from ocp_resources.resource import NamespacedResource
7
8
 
8
9
 
9
10
  class Deployment(NamespacedResource):
@@ -279,6 +280,7 @@ class Deployment(NamespacedResource):
279
280
  self.template = template
280
281
 
281
282
  def to_dict(self) -> None:
283
+
282
284
  super().to_dict()
283
285
 
284
286
  if not self.kind_dict and not self.yaml_file:
@@ -2,6 +2,7 @@
2
2
 
3
3
 
4
4
  from typing import Any
5
+
5
6
  from ocp_resources.resource import Resource
6
7
 
7
8
 
@@ -48,6 +49,7 @@ class ImageContentSourcePolicy(Resource):
48
49
  self.repository_digest_mirrors = repository_digest_mirrors
49
50
 
50
51
  def to_dict(self) -> None:
52
+
51
53
  super().to_dict()
52
54
 
53
55
  if not self.kind_dict and not self.yaml_file:
@@ -2,6 +2,7 @@
2
2
 
3
3
 
4
4
  from typing import Any
5
+
5
6
  from ocp_resources.resource import Resource
6
7
 
7
8
 
@@ -92,6 +93,7 @@ class Ingress(Resource):
92
93
  self.required_hsts_policies = required_hsts_policies
93
94
 
94
95
  def to_dict(self) -> None:
96
+
95
97
  super().to_dict()
96
98
 
97
99
  if not self.kind_dict and not self.yaml_file:
@@ -2,6 +2,7 @@
2
2
 
3
3
 
4
4
  from typing import Any
5
+
5
6
  from ocp_resources.resource import Resource
6
7
 
7
8
 
@@ -41,6 +42,7 @@ class Ingress(Resource):
41
42
  self.tls = tls
42
43
 
43
44
  def to_dict(self) -> None:
45
+
44
46
  super().to_dict()
45
47
 
46
48
  if not self.kind_dict and not self.yaml_file:
@@ -2,6 +2,7 @@
2
2
 
3
3
 
4
4
  from typing import Any
5
+
5
6
  from ocp_resources.resource import NamespacedResource
6
7
 
7
8
 
@@ -68,6 +69,7 @@ class Machine(NamespacedResource):
68
69
  self.taints = taints
69
70
 
70
71
  def to_dict(self) -> None:
72
+
71
73
  super().to_dict()
72
74
 
73
75
  if not self.kind_dict and not self.yaml_file:
@@ -2,6 +2,7 @@
2
2
 
3
3
 
4
4
  from typing import Any
5
+
5
6
  from ocp_resources.resource import Resource
6
7
 
7
8
 
@@ -76,6 +77,7 @@ class NMState(Resource):
76
77
  self.tolerations = tolerations
77
78
 
78
79
  def to_dict(self) -> None:
80
+
79
81
  super().to_dict()
80
82
 
81
83
  if not self.kind_dict and not self.yaml_file:
@@ -2,6 +2,7 @@
2
2
 
3
3
 
4
4
  from typing import Any
5
+
5
6
  from ocp_resources.resource import Resource
6
7
 
7
8
 
@@ -41,6 +42,7 @@ class OAuth(Resource):
41
42
  self.token_config = token_config
42
43
 
43
44
  def to_dict(self) -> None:
45
+
44
46
  super().to_dict()
45
47
 
46
48
  if not self.kind_dict and not self.yaml_file:
@@ -2,6 +2,7 @@
2
2
 
3
3
 
4
4
  from typing import Any
5
+
5
6
  from ocp_resources.resource import NamespacedResource
6
7
 
7
8
 
@@ -61,6 +62,7 @@ class Pipeline(NamespacedResource):
61
62
  self.workspaces = workspaces
62
63
 
63
64
  def to_dict(self) -> None:
65
+
64
66
  super().to_dict()
65
67
 
66
68
  if not self.kind_dict and not self.yaml_file:
@@ -2,8 +2,9 @@
2
2
 
3
3
 
4
4
  from typing import Any
5
- from ocp_resources.resource import NamespacedResource
5
+
6
6
  from ocp_resources.exceptions import MissingRequiredArgumentError
7
+ from ocp_resources.resource import NamespacedResource
7
8
 
8
9
 
9
10
  class Pod(NamespacedResource):
@@ -492,6 +493,7 @@ class Pod(NamespacedResource):
492
493
  self.volumes = volumes
493
494
 
494
495
  def to_dict(self) -> None:
496
+
495
497
  super().to_dict()
496
498
 
497
499
  if not self.kind_dict and not self.yaml_file:
@@ -2,8 +2,9 @@
2
2
 
3
3
 
4
4
  from typing import Any
5
- from ocp_resources.resource import Resource
5
+
6
6
  from ocp_resources.exceptions import MissingRequiredArgumentError
7
+ from ocp_resources.resource import Resource
7
8
 
8
9
 
9
10
  class RouteAdvertisements(Resource):
@@ -49,6 +50,7 @@ class RouteAdvertisements(Resource):
49
50
  self.target_vrf = target_vrf
50
51
 
51
52
  def to_dict(self) -> None:
53
+
52
54
  super().to_dict()
53
55
 
54
56
  if not self.kind_dict and not self.yaml_file:
@@ -2,6 +2,7 @@
2
2
 
3
3
 
4
4
  from typing import Any
5
+
5
6
  from ocp_resources.resource import NamespacedResource
6
7
 
7
8
 
@@ -52,6 +53,7 @@ class Secret(NamespacedResource):
52
53
  self.type = type
53
54
 
54
55
  def to_dict(self) -> None:
56
+
55
57
  super().to_dict()
56
58
 
57
59
  if not self.kind_dict and not self.yaml_file:
@@ -2,8 +2,9 @@
2
2
 
3
3
 
4
4
  from typing import Any
5
- from ocp_resources.resource import NamespacedResource
5
+
6
6
  from ocp_resources.exceptions import MissingRequiredArgumentError
7
+ from ocp_resources.resource import NamespacedResource
7
8
 
8
9
 
9
10
  class ServiceMeshMember(NamespacedResource):
@@ -28,6 +29,7 @@ class ServiceMeshMember(NamespacedResource):
28
29
  self.control_plane_ref = control_plane_ref
29
30
 
30
31
  def to_dict(self) -> None:
32
+
31
33
  super().to_dict()
32
34
 
33
35
  if not self.kind_dict and not self.yaml_file:
@@ -2,8 +2,9 @@
2
2
 
3
3
 
4
4
  from typing import Any
5
- from ocp_resources.resource import NamespacedResource
5
+
6
6
  from ocp_resources.exceptions import MissingRequiredArgumentError
7
+ from ocp_resources.resource import NamespacedResource
7
8
 
8
9
 
9
10
  class ServingRuntime(NamespacedResource):
@@ -96,6 +97,7 @@ class ServingRuntime(NamespacedResource):
96
97
  self.volumes = volumes
97
98
 
98
99
  def to_dict(self) -> None:
100
+
99
101
  super().to_dict()
100
102
 
101
103
  if not self.kind_dict and not self.yaml_file: