openshift-python-wrapper 4.15.74__tar.gz → 4.15.75__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 (164) hide show
  1. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/PKG-INFO +6 -3
  2. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/constants.py +3 -0
  3. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/resource.py +56 -28
  4. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/virtual_machine.py +15 -3
  5. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/virtual_machine_instance.py +15 -3
  6. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/pyproject.toml +1 -1
  7. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/LICENSE +0 -0
  8. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/README.md +0 -0
  9. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/__init__.py +0 -0
  10. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/aaq.py +0 -0
  11. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/api_server.py +0 -0
  12. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/api_service.py +0 -0
  13. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/backup.py +0 -0
  14. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/benchmark.py +0 -0
  15. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/catalog_source.py +0 -0
  16. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/cdi.py +0 -0
  17. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/cdi_config.py +0 -0
  18. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/chaos_engine.py +0 -0
  19. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/chaos_result.py +0 -0
  20. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/cluster_operator.py +0 -0
  21. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/cluster_role.py +0 -0
  22. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/cluster_role_binding.py +0 -0
  23. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/cluster_service_version.py +0 -0
  24. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/cluster_version.py +0 -0
  25. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/configmap.py +0 -0
  26. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/console_cli_download.py +0 -0
  27. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/console_plugin.py +0 -0
  28. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/console_quick_start.py +0 -0
  29. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/controller_revision.py +0 -0
  30. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/cron_job.py +0 -0
  31. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/csi_storage_capacity.py +0 -0
  32. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/csidriver.py +0 -0
  33. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/custom_resource_definition.py +0 -0
  34. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/daemonset.py +0 -0
  35. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/data_import_cron.py +0 -0
  36. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/data_source.py +0 -0
  37. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/datavolume.py +0 -0
  38. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/deployment.py +0 -0
  39. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/destination_rule.py +0 -0
  40. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/dns.py +0 -0
  41. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/endpoint_slice.py +0 -0
  42. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/endpoints.py +0 -0
  43. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/event.py +0 -0
  44. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/forklift_controller.py +0 -0
  45. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/gateway.py +0 -0
  46. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/hook.py +0 -0
  47. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/host.py +0 -0
  48. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/hostpath_provisioner.py +0 -0
  49. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/hyperconverged.py +0 -0
  50. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/image.py +0 -0
  51. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/image_content_source_policy.py +0 -0
  52. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/image_digest_mirror_set.py +0 -0
  53. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/image_stream.py +0 -0
  54. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/imagestreamtag.py +0 -0
  55. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/infrastructure.py +0 -0
  56. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/installplan.py +0 -0
  57. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/ip_address_pool.py +0 -0
  58. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/job.py +0 -0
  59. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/kube_descheduler.py +0 -0
  60. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/kubevirt.py +0 -0
  61. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/kubevirt_common_templates_bundle.py +0 -0
  62. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/kubevirt_metrics_aggregation.py +0 -0
  63. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/kubevirt_node_labeller_bundle.py +0 -0
  64. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/kubevirt_template_validaotr.py +0 -0
  65. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/l2_advertisement.py +0 -0
  66. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/lease.py +0 -0
  67. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/limit_range.py +0 -0
  68. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/machine.py +0 -0
  69. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/machine_config.py +0 -0
  70. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/machine_config_pool.py +0 -0
  71. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/machine_health_check.py +0 -0
  72. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/machine_set.py +0 -0
  73. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/managed_cluster.py +0 -0
  74. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/metallb.py +0 -0
  75. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/migration.py +0 -0
  76. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/migration_policy.py +0 -0
  77. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/mtq.py +0 -0
  78. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/mtv.py +0 -0
  79. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/multi_cluster_hub.py +0 -0
  80. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/multi_cluster_observability.py +0 -0
  81. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/multi_network_policy.py +0 -0
  82. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/mutating_webhook_config.py +0 -0
  83. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/namespace.py +0 -0
  84. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/network.py +0 -0
  85. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/network_addons_config.py +0 -0
  86. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/network_attachment_definition.py +0 -0
  87. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/network_map.py +0 -0
  88. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/network_policy.py +0 -0
  89. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/nmstate.py +0 -0
  90. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/node.py +0 -0
  91. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/node_health_check.py +0 -0
  92. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/node_maintenance.py +0 -0
  93. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/node_network_configuration_enactment.py +0 -0
  94. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/node_network_configuration_policy.py +0 -0
  95. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/node_network_state.py +0 -0
  96. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/oauth.py +0 -0
  97. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/ocs_initialization.py +0 -0
  98. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/operator.py +0 -0
  99. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/operator_condition.py +0 -0
  100. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/operator_group.py +0 -0
  101. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/operator_hub.py +0 -0
  102. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/operator_source.py +0 -0
  103. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/package_manifest.py +0 -0
  104. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/peer_authentication.py +0 -0
  105. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/performance_profile.py +0 -0
  106. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/persistent_volume.py +0 -0
  107. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/persistent_volume_claim.py +0 -0
  108. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/pipeline.py +0 -0
  109. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/pipelineruns.py +0 -0
  110. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/plan.py +0 -0
  111. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/pod.py +0 -0
  112. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/pod_disruption_budget.py +0 -0
  113. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/pod_metrics.py +0 -0
  114. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/priority_class.py +0 -0
  115. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/project.py +0 -0
  116. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/prometheus.py +0 -0
  117. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/prometheus_rule.py +0 -0
  118. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/provider.py +0 -0
  119. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/replicaset.py +0 -0
  120. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/resource_quota.py +0 -0
  121. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/restore.py +0 -0
  122. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/rhmi.py +0 -0
  123. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/role.py +0 -0
  124. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/role_binding.py +0 -0
  125. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/route.py +0 -0
  126. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/scheduler.py +0 -0
  127. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/secret.py +0 -0
  128. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/security_context_constraints.py +0 -0
  129. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/service.py +0 -0
  130. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/service_account.py +0 -0
  131. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/service_mesh_control_plane.py +0 -0
  132. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/service_mesh_member_roll.py +0 -0
  133. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/service_monitor.py +0 -0
  134. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/sriov_network.py +0 -0
  135. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/sriov_network_node_policy.py +0 -0
  136. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/sriov_network_node_state.py +0 -0
  137. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/ssp.py +0 -0
  138. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/storage_class.py +0 -0
  139. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/storage_map.py +0 -0
  140. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/storage_profile.py +0 -0
  141. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/subscription.py +0 -0
  142. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/task_run.py +0 -0
  143. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/tekton_tasks.py +0 -0
  144. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/template.py +0 -0
  145. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/upload_token_request.py +0 -0
  146. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/utils.py +0 -0
  147. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/validating_webhook_config.py +0 -0
  148. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/virtual_machine_Instance_replica_set.py +0 -0
  149. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/virtual_machine_clone.py +0 -0
  150. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/virtual_machine_cluster_instance_types.py +0 -0
  151. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/virtual_machine_cluster_preferences.py +0 -0
  152. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/virtual_machine_export.py +0 -0
  153. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/virtual_machine_import.py +0 -0
  154. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/virtual_machine_instance_migration.py +0 -0
  155. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/virtual_machine_instance_preset.py +0 -0
  156. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/virtual_machine_instance_types.py +0 -0
  157. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/virtual_machine_migration_resource_quota.py +0 -0
  158. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/virtual_machine_preferences.py +0 -0
  159. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/virtual_machine_restore.py +0 -0
  160. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/virtual_machine_snapshot.py +0 -0
  161. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/virtual_service.py +0 -0
  162. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/vm_import_config.py +0 -0
  163. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/volume_snapshot.py +0 -0
  164. {openshift_python_wrapper-4.15.74 → openshift_python_wrapper-4.15.75}/ocp_resources/volume_snapshot_class.py +0 -0
@@ -1,9 +1,9 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: openshift-python-wrapper
3
- Version: 4.15.74
3
+ Version: 4.15.75
4
4
  Summary: Wrapper around https://github.com/kubernetes-client/python
5
- Home-page: https://github.com/RedHatQE/openshift-python-wrapper
6
5
  License: Apache-2.0
6
+ License-File: LICENSE
7
7
  Keywords: Openshift,Kubevirt,CNV
8
8
  Author: Meni Yakove
9
9
  Author-email: myakove@gmail.com
@@ -16,6 +16,8 @@ Classifier: Programming Language :: Python :: 3.9
16
16
  Classifier: Programming Language :: Python :: 3.10
17
17
  Classifier: Programming Language :: Python :: 3.11
18
18
  Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Programming Language :: Python :: 3.14
19
21
  Requires-Dist: colorlog (>=6.7.0,<7.0.0)
20
22
  Requires-Dist: jinja2 (>=3.1.2,<4.0.0)
21
23
  Requires-Dist: kubernetes (>=28,<29)
@@ -27,6 +29,7 @@ Requires-Dist: xmltodict (>=0.13.0,<0.14.0)
27
29
  Project-URL: Bug Tracker, https://github.com/RedHatQE/openshift-python-wrapper/issues
28
30
  Project-URL: Documentation, https://openshift-python-wrapper.readthedocs.io/en/latest/
29
31
  Project-URL: Download, https://pypi.org/project/openshift-python-wrapper/
32
+ Project-URL: Homepage, https://github.com/RedHatQE/openshift-python-wrapper
30
33
  Description-Content-Type: text/markdown
31
34
 
32
35
  # openshift-python-wrapper
@@ -22,7 +22,10 @@ DEFAULT_CLUSTER_RETRY_EXCEPTIONS = {
22
22
  PROTOCOL_ERROR_EXCEPTION_DICT = {ProtocolError: []}
23
23
  NOT_FOUND_ERROR_EXCEPTION_DICT = {NotFoundError: []}
24
24
 
25
+ TIMEOUT_1SEC = 1
26
+ TIMEOUT_5SEC = 5
25
27
  TIMEOUT_10SEC = 10
28
+ TIMEOUT_30SEC = 30
26
29
  TIMEOUT_1MINUTE = 60
27
30
  TIMEOUT_2MINUTES = 2 * 60
28
31
  TIMEOUT_4MINUTES = 4 * 60
@@ -1,11 +1,15 @@
1
+ from __future__ import annotations
2
+
1
3
  import contextlib
2
4
  import copy
3
5
  import json
4
6
  import os
5
7
  import re
6
8
  import sys
9
+ from collections.abc import Callable
7
10
  from io import StringIO
8
11
  from signal import SIGINT, signal
12
+ from typing import Any
9
13
 
10
14
  import kubernetes
11
15
  import yaml
@@ -13,28 +17,31 @@ from benedict import benedict
13
17
  from kubernetes.dynamic import DynamicClient
14
18
  from kubernetes.dynamic.exceptions import (
15
19
  ConflictError,
20
+ ForbiddenError,
16
21
  MethodNotAllowedError,
17
22
  NotFoundError,
18
- ForbiddenError,
19
23
  )
20
24
  from kubernetes.dynamic.resource import ResourceField
21
25
  from packaging.version import Version
22
26
  from simple_logger.logger import get_logger
27
+ from timeout_sampler import (
28
+ TimeoutExpiredError,
29
+ TimeoutSampler,
30
+ TimeoutWatch,
31
+ )
23
32
 
24
33
  from ocp_resources.constants import (
25
34
  DEFAULT_CLUSTER_RETRY_EXCEPTIONS,
26
35
  NOT_FOUND_ERROR_EXCEPTION_DICT,
27
36
  PROTOCOL_ERROR_EXCEPTION_DICT,
28
37
  TIMEOUT_1MINUTE,
38
+ TIMEOUT_1SEC,
29
39
  TIMEOUT_4MINUTES,
40
+ TIMEOUT_5SEC,
30
41
  TIMEOUT_10SEC,
42
+ TIMEOUT_30SEC,
31
43
  )
32
44
  from ocp_resources.event import Event
33
- from timeout_sampler import (
34
- TimeoutExpiredError,
35
- TimeoutSampler,
36
- TimeoutWatch,
37
- )
38
45
  from ocp_resources.utils import skip_existing_resource_creation_teardown
39
46
 
40
47
  LOGGER = get_logger(name=__name__)
@@ -124,7 +131,7 @@ class KubeAPIVersion(Version):
124
131
  with contextlib.suppress(ValueError):
125
132
  components[idx] = int(obj)
126
133
 
127
- errmsg = f"version '{vstring}' does not conform to kubernetes api versioning" " guidelines"
134
+ errmsg = f"version '{vstring}' does not conform to kubernetes api versioning guidelines"
128
135
 
129
136
  if len(components) not in (2, 4) or components[0] != "v" or not isinstance(components[1], int):
130
137
  raise ValueError(errmsg)
@@ -352,9 +359,7 @@ class Resource:
352
359
  """
353
360
  self.api_group = api_group or self.api_group
354
361
  if not self.api_group and not self.api_version:
355
- raise NotImplementedError(
356
- "Subclasses of Resource require self.api_group or self.api_version to" " be defined"
357
- )
362
+ raise NotImplementedError("Subclasses of Resource require self.api_group or self.api_version to be defined")
358
363
  self.namespace = None
359
364
  self.name = name
360
365
  self.client = client
@@ -767,11 +772,17 @@ class Resource:
767
772
  self.api.replace(body=resource_dict, name=self.name, namespace=self.namespace)
768
773
 
769
774
  @staticmethod
770
- def retry_cluster_exceptions(func, exceptions_dict=DEFAULT_CLUSTER_RETRY_EXCEPTIONS, **kwargs):
775
+ def retry_cluster_exceptions(
776
+ func: Callable,
777
+ exceptions_dict: dict[type[Exception], list[str]] = DEFAULT_CLUSTER_RETRY_EXCEPTIONS,
778
+ timeout: int = TIMEOUT_10SEC,
779
+ sleep_time: int = 1,
780
+ **kwargs: Any,
781
+ ) -> Any:
771
782
  try:
772
783
  sampler = TimeoutSampler(
773
- wait_timeout=TIMEOUT_10SEC,
774
- sleep=1,
784
+ wait_timeout=timeout,
785
+ sleep=sleep_time,
775
786
  func=func,
776
787
  print_log=False,
777
788
  exceptions_dict=exceptions_dict,
@@ -902,26 +913,41 @@ class Resource:
902
913
  if cond["type"] == condition and cond["status"] == status:
903
914
  return
904
915
 
905
- def api_request(self, method, action, url, **params):
906
- """
907
- Handle API requests to resource.
916
+ def api_request(
917
+ self, method: str, action: str, url: str, retry_params: dict[str, int] | None = None, **params: Any
918
+ ) -> dict[str, Any]:
919
+ """Handle API requests to resource.
908
920
 
909
921
  Args:
910
- method (str): Request method (GET/PUT etc.).
911
- action (str): Action to perform (stop/start/guestosinfo etc.).
912
- url (str): URL of resource.
922
+ method: HTTP method (e.g. ``GET``, ``PUT``).
923
+ action: Subresource action to perform (e.g. ``start``, ``stop``, ``guestosinfo``).
924
+ url: Base URL of the resource.
925
+ retry_params: Optional timeout and sleep_time values for retrying the API request call.
926
+ **params: Additional keyword arguments forwarded to the underlying HTTP request.
913
927
 
914
928
  Returns:
915
- data(dict): response data
916
-
929
+ Parsed JSON response data, or raw response data when JSON decoding fails.
917
930
  """
918
931
  client = self.privileged_client or self.client
919
- response = client.client.request(
920
- method=method,
921
- url=f"{url}/{action}",
922
- headers=self.client.configuration.api_key,
923
- **params,
924
- )
932
+
933
+ api_request_params = {
934
+ "url": f"{url}/{action}",
935
+ "method": method,
936
+ "headers": self.client.configuration.api_key,
937
+ }
938
+ if retry_params:
939
+ response = self.retry_cluster_exceptions(
940
+ func=client.client.request,
941
+ timeout=retry_params.get("timeout", TIMEOUT_10SEC),
942
+ sleep_time=retry_params.get("sleep_time", TIMEOUT_1SEC),
943
+ **api_request_params,
944
+ **params,
945
+ )
946
+ else:
947
+ response = client.client.request(
948
+ **api_request_params,
949
+ **params,
950
+ )
925
951
 
926
952
  try:
927
953
  return json.loads(response.data)
@@ -931,7 +957,7 @@ class Resource:
931
957
  def wait_for_conditions(self):
932
958
  timeout_watcher = TimeoutWatch(timeout=30)
933
959
  for sample in TimeoutSampler(
934
- wait_timeout=30,
960
+ wait_timeout=TIMEOUT_30SEC,
935
961
  sleep=1,
936
962
  func=lambda: self.exists,
937
963
  ):
@@ -1377,4 +1403,6 @@ class ResourceEditor:
1377
1403
  patches=patches,
1378
1404
  action_text=action_text,
1379
1405
  action=action,
1406
+ timeout=TIMEOUT_30SEC,
1407
+ sleep_time=TIMEOUT_5SEC,
1380
1408
  )
@@ -1,10 +1,13 @@
1
- # -*- coding: utf-8 -*-
1
+ from __future__ import annotations
2
2
 
3
+ from typing import Any
3
4
 
4
5
  from ocp_resources.constants import (
5
6
  DEFAULT_CLUSTER_RETRY_EXCEPTIONS,
6
7
  PROTOCOL_ERROR_EXCEPTION_DICT,
7
8
  TIMEOUT_4MINUTES,
9
+ TIMEOUT_5SEC,
10
+ TIMEOUT_30SEC,
8
11
  )
9
12
  from ocp_resources.resource import NamespacedResource
10
13
  from timeout_sampler import TimeoutSampler
@@ -72,8 +75,17 @@ class VirtualMachine(NamespacedResource):
72
75
  f"namespaces/{self.namespace}/virtualmachines/{self.name}"
73
76
  )
74
77
 
75
- def api_request(self, method, action, **params):
76
- return super().api_request(method=method, action=action, url=self._subresource_api_url, **params)
78
+ def api_request(
79
+ self, method: str, action: str, url: str = "", retry_params: dict[str, int] | None = None, **params: Any
80
+ ) -> dict[str, Any]:
81
+ default_vm_api_request_retry_params: dict[str, int] = {"timeout": TIMEOUT_30SEC, "sleep_time": TIMEOUT_5SEC}
82
+ return super().api_request(
83
+ method=method,
84
+ action=action,
85
+ url=url or self._subresource_api_url,
86
+ retry_params=retry_params or default_vm_api_request_retry_params,
87
+ **params,
88
+ )
77
89
 
78
90
  def to_dict(self):
79
91
  super().to_dict()
@@ -1,9 +1,12 @@
1
+ from __future__ import annotations
2
+
1
3
  import shlex
4
+ from typing import Any
2
5
 
3
6
  import xmltodict
4
7
  from kubernetes.dynamic.exceptions import ResourceNotFoundError
5
8
 
6
- from ocp_resources.constants import PROTOCOL_ERROR_EXCEPTION_DICT, TIMEOUT_4MINUTES
9
+ from ocp_resources.constants import PROTOCOL_ERROR_EXCEPTION_DICT, TIMEOUT_4MINUTES, TIMEOUT_5SEC, TIMEOUT_30SEC
7
10
  from ocp_resources.node import Node
8
11
  from ocp_resources.pod import Pod
9
12
  from ocp_resources.resource import NamespacedResource
@@ -48,8 +51,17 @@ class VirtualMachineInstance(NamespacedResource):
48
51
  f"namespaces/{self.namespace}/virtualmachineinstances/{self.name}"
49
52
  )
50
53
 
51
- def api_request(self, method, action, **params):
52
- return super().api_request(method=method, action=action, url=self._subresource_api_url, **params)
54
+ def api_request(
55
+ self, method: str, action: str, url: str = "", retry_params: dict[str, int] | None = None, **params: Any
56
+ ) -> dict[str, Any]:
57
+ default_vmi_api_request_retry_params: dict[str, int] = {"timeout": TIMEOUT_30SEC, "sleep_time": TIMEOUT_5SEC}
58
+ return super().api_request(
59
+ method=method,
60
+ action=action,
61
+ url=url or self._subresource_api_url,
62
+ retry_params=retry_params or default_vmi_api_request_retry_params,
63
+ **params,
64
+ )
53
65
 
54
66
  def pause(self, timeout=TIMEOUT_4MINUTES, wait=False):
55
67
  self.api_request(method="PUT", action="pause")
@@ -10,7 +10,7 @@ exclude = [".git", ".venv", ".mypy_cache", ".tox", "__pycache__"]
10
10
 
11
11
  [tool.poetry]
12
12
  name = "openshift-python-wrapper"
13
- version = "4.15.74"
13
+ version = "4.15.75"
14
14
  description = "Wrapper around https://github.com/kubernetes-client/python"
15
15
  authors = ["Meni Yakove <myakove@gmail.com>", "Ruth Netser <rnetser@gmail.com>"]
16
16
  readme = "README.md"