openshift-python-wrapper 10.0.67__tar.gz → 10.0.69__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 (183) hide show
  1. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/PKG-INFO +3 -2
  2. openshift_python_wrapper-10.0.69/ocp_resources/csidriver.py +212 -0
  3. openshift_python_wrapper-10.0.69/ocp_resources/service.py +420 -0
  4. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/pyproject.toml +3 -2
  5. openshift_python_wrapper-10.0.67/ocp_resources/csidriver.py +0 -9
  6. openshift_python_wrapper-10.0.67/ocp_resources/service.py +0 -16
  7. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/LICENSE +0 -0
  8. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/README.md +0 -0
  9. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/__init__.py +0 -0
  10. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/aaq.py +0 -0
  11. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/api_server.py +0 -0
  12. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/api_service.py +0 -0
  13. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/application_aware_applied_cluster_resource_quota.py +0 -0
  14. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/application_aware_cluster_resource_quota.py +0 -0
  15. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/application_aware_resource_quota.py +0 -0
  16. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/backup.py +0 -0
  17. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/benchmark.py +0 -0
  18. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/catalog_source.py +0 -0
  19. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/cdi.py +0 -0
  20. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/cdi_config.py +0 -0
  21. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/chaos_engine.py +0 -0
  22. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/chaos_result.py +0 -0
  23. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/cluster_claim.py +0 -0
  24. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/cluster_deployment.py +0 -0
  25. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/cluster_operator.py +0 -0
  26. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/cluster_pool.py +0 -0
  27. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/cluster_role.py +0 -0
  28. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/cluster_role_binding.py +0 -0
  29. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/cluster_service_version.py +0 -0
  30. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/cluster_version.py +0 -0
  31. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/configmap.py +0 -0
  32. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/console_cli_download.py +0 -0
  33. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/console_plugin.py +0 -0
  34. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/console_quick_start.py +0 -0
  35. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/constants.py +0 -0
  36. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/controller_revision.py +0 -0
  37. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/cron_job.py +0 -0
  38. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/csi_storage_capacity.py +0 -0
  39. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/custom_resource_definition.py +0 -0
  40. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/daemonset.py +0 -0
  41. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/data_import_cron.py +0 -0
  42. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/data_source.py +0 -0
  43. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/datavolume.py +0 -0
  44. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/deployment.py +0 -0
  45. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/destination_rule.py +0 -0
  46. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/dns.py +0 -0
  47. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/endpoint_slice.py +0 -0
  48. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/endpoints.py +0 -0
  49. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/event.py +0 -0
  50. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/fence_agent_remediation_templates.py +0 -0
  51. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/forklift_controller.py +0 -0
  52. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/gateway.py +0 -0
  53. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/group.py +0 -0
  54. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/hook.py +0 -0
  55. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/host.py +0 -0
  56. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/hostpath_provisioner.py +0 -0
  57. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/hyperconverged.py +0 -0
  58. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/image.py +0 -0
  59. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/image_content_source_policy.py +0 -0
  60. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/image_digest_mirror_set.py +0 -0
  61. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/image_stream.py +0 -0
  62. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/imagestreamtag.py +0 -0
  63. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/inference_service.py +0 -0
  64. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/infrastructure.py +0 -0
  65. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/ingress_controller.py +0 -0
  66. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/installplan.py +0 -0
  67. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/ip_address_pool.py +0 -0
  68. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/job.py +0 -0
  69. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/kube_descheduler.py +0 -0
  70. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/kubevirt.py +0 -0
  71. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/kubevirt_common_templates_bundle.py +0 -0
  72. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/kubevirt_metrics_aggregation.py +0 -0
  73. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/kubevirt_node_labeller_bundle.py +0 -0
  74. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/kubevirt_template_validaotr.py +0 -0
  75. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/l2_advertisement.py +0 -0
  76. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/lease.py +0 -0
  77. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/limit_range.py +0 -0
  78. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/machine.py +0 -0
  79. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/machine_config.py +0 -0
  80. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/machine_config_pool.py +0 -0
  81. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/machine_health_check.py +0 -0
  82. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/machine_set.py +0 -0
  83. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/managed_cluster.py +0 -0
  84. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/metallb.py +0 -0
  85. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/migration.py +0 -0
  86. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/migration_policy.py +0 -0
  87. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/mtq.py +0 -0
  88. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/mtv.py +0 -0
  89. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/multi_cluster_hub.py +0 -0
  90. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/multi_cluster_observability.py +0 -0
  91. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/multi_network_policy.py +0 -0
  92. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/mutating_webhook_config.py +0 -0
  93. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/namespace.py +0 -0
  94. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/network.py +0 -0
  95. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/network_addons_config.py +0 -0
  96. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/network_attachment_definition.py +0 -0
  97. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/network_map.py +0 -0
  98. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/network_policy.py +0 -0
  99. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/nmstate.py +0 -0
  100. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/node.py +0 -0
  101. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/node_health_check.py +0 -0
  102. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/node_maintenance.py +0 -0
  103. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/node_network_configuration_enactment.py +0 -0
  104. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/node_network_configuration_policy.py +0 -0
  105. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/node_network_state.py +0 -0
  106. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/oauth.py +0 -0
  107. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/ocs_initialization.py +0 -0
  108. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/operator.py +0 -0
  109. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/operator_condition.py +0 -0
  110. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/operator_group.py +0 -0
  111. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/operator_hub.py +0 -0
  112. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/operator_source.py +0 -0
  113. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/package_manifest.py +0 -0
  114. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/peer_authentication.py +0 -0
  115. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/performance_profile.py +0 -0
  116. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/persistent_volume.py +0 -0
  117. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/persistent_volume_claim.py +0 -0
  118. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/pipeline.py +0 -0
  119. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/pipelineruns.py +0 -0
  120. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/plan.py +0 -0
  121. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/pod.py +0 -0
  122. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/pod_disruption_budget.py +0 -0
  123. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/pod_metrics.py +0 -0
  124. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/priority_class.py +0 -0
  125. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/project.py +0 -0
  126. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/prometheus.py +0 -0
  127. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/prometheus_rule.py +0 -0
  128. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/provider.py +0 -0
  129. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/proxy.py +0 -0
  130. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/reclaim_space_cron_job.py +0 -0
  131. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/reclaim_space_job.py +0 -0
  132. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/replicaset.py +0 -0
  133. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/resource.py +0 -0
  134. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/resource_quota.py +0 -0
  135. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/restore.py +0 -0
  136. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/rhmi.py +0 -0
  137. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/role.py +0 -0
  138. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/role_binding.py +0 -0
  139. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/route.py +0 -0
  140. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/scheduler.py +0 -0
  141. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/sealed_secret.py +0 -0
  142. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/secret.py +0 -0
  143. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/security_context_constraints.py +0 -0
  144. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/self_node_remediation_templates.py +0 -0
  145. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/service_account.py +0 -0
  146. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/service_mesh_control_plane.py +0 -0
  147. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/service_mesh_member_roll.py +0 -0
  148. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/service_monitor.py +0 -0
  149. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/serving_runtime.py +0 -0
  150. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/sriov_network.py +0 -0
  151. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/sriov_network_node_policy.py +0 -0
  152. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/sriov_network_node_state.py +0 -0
  153. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/ssp.py +0 -0
  154. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/storage_class.py +0 -0
  155. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/storage_map.py +0 -0
  156. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/storage_profile.py +0 -0
  157. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/subscription.py +0 -0
  158. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/task_run.py +0 -0
  159. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/tekton_tasks.py +0 -0
  160. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/template.py +0 -0
  161. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/trustyai_service.py +0 -0
  162. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/upload_token_request.py +0 -0
  163. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/utils.py +0 -0
  164. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/validating_webhook_config.py +0 -0
  165. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/virtual_machine.py +0 -0
  166. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/virtual_machine_Instance_replica_set.py +0 -0
  167. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/virtual_machine_clone.py +0 -0
  168. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/virtual_machine_cluster_instance_types.py +0 -0
  169. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/virtual_machine_cluster_preferences.py +0 -0
  170. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/virtual_machine_export.py +0 -0
  171. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/virtual_machine_import.py +0 -0
  172. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/virtual_machine_instance.py +0 -0
  173. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/virtual_machine_instance_migration.py +0 -0
  174. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/virtual_machine_instance_preset.py +0 -0
  175. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/virtual_machine_instance_types.py +0 -0
  176. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/virtual_machine_migration_resource_quota.py +0 -0
  177. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/virtual_machine_preferences.py +0 -0
  178. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/virtual_machine_restore.py +0 -0
  179. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/virtual_machine_snapshot.py +0 -0
  180. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/virtual_service.py +0 -0
  181. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/vm_import_config.py +0 -0
  182. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/volume_snapshot.py +0 -0
  183. {openshift_python_wrapper-10.0.67 → openshift_python_wrapper-10.0.69}/ocp_resources/volume_snapshot_class.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: openshift-python-wrapper
3
- Version: 10.0.67
3
+ Version: 10.0.69
4
4
  Summary: Wrapper around https://github.com/kubernetes-client/python
5
5
  Home-page: https://github.com/RedHatQE/openshift-python-wrapper
6
6
  License: Apache-2.0
@@ -21,9 +21,10 @@ Requires-Dist: colorlog (>=6.7.0,<7.0.0)
21
21
  Requires-Dist: jinja2 (>=3.1.2,<4.0.0)
22
22
  Requires-Dist: kubernetes (>=30.0.0,<31.0.0)
23
23
  Requires-Dist: packaging (>=23.1,<24.0)
24
- Requires-Dist: pyhelper-utils (>=0.0.28,<0.0.29)
24
+ Requires-Dist: pyhelper-utils (>=0.0.30,<0.0.31)
25
25
  Requires-Dist: python-benedict (>=0.33.0,<0.34.0)
26
26
  Requires-Dist: python-simple-logger (>=1.0.6)
27
+ Requires-Dist: rich (>=13.7.1,<14.0.0)
27
28
  Requires-Dist: ruff (>=0.5.3,<0.6.0)
28
29
  Requires-Dist: timeout-sampler (>=0.0.17)
29
30
  Requires-Dist: xmltodict (>=0.13.0,<0.14.0)
@@ -0,0 +1,212 @@
1
+ # Generated using https://github.com/RedHatQE/openshift-python-wrapper/blob/main/scripts/resource/README.md
2
+
3
+ from typing import Any, Dict, Optional
4
+ from ocp_resources.resource import Resource
5
+
6
+
7
+ class CSIDriver(Resource):
8
+ """
9
+ CSIDriver captures information about a Container Storage Interface (CSI)
10
+ volume driver deployed on the cluster. Kubernetes attach detach controller
11
+ uses this object to determine whether attach is required. Kubelet uses this
12
+ object to determine whether pod information needs to be passed on mount.
13
+ CSIDriver objects are non-namespaced.
14
+
15
+ API Link: https://kubernetes-csi.github.io/docs/csi-driver-object.html
16
+ """
17
+
18
+ api_group: str = Resource.ApiGroup.STORAGE_K8S_IO
19
+
20
+ def __init__(
21
+ self,
22
+ attach_required: Optional[bool] = None,
23
+ fs_group_policy: Optional[str] = "",
24
+ pod_info_on_mount: Optional[bool] = None,
25
+ requires_republish: Optional[bool] = None,
26
+ se_linux_mount: Optional[bool] = None,
27
+ storage_capacity: Optional[bool] = None,
28
+ token_requests: Optional[Dict[str, Any]] = None,
29
+ volume_lifecycle_modes: Optional[Dict[str, Any]] = None,
30
+ **kwargs: Any,
31
+ ) -> None:
32
+ """
33
+ Args:
34
+ attach_required(bool): attachRequired indicates this CSI volume driver requires an attach operation
35
+ (because it implements the CSI ControllerPublishVolume() method), and that
36
+ the Kubernetes attach detach controller should call the attach volume
37
+ interface which checks the volumeattachment status and waits until the
38
+ volume is attached before proceeding to mounting. The CSI external-attacher
39
+ coordinates with CSI volume driver and updates the volumeattachment status
40
+ when the attach operation is complete. If the CSIDriverRegistry feature gate
41
+ is enabled and the value is specified to false, the attach operation will be
42
+ skipped. Otherwise the attach operation will be called.
43
+
44
+ This field is immutable.
45
+
46
+ fs_group_policy(str): fsGroupPolicy defines if the underlying volume supports changing ownership
47
+ and permission of the volume before being mounted. Refer to the specific
48
+ FSGroupPolicy values for additional details.
49
+
50
+ This field is immutable.
51
+
52
+ Defaults to ReadWriteOnceWithFSType, which will examine each volume to
53
+ determine if Kubernetes should modify ownership and permissions of the
54
+ volume. With the default policy the defined fsGroup will only be applied if
55
+ a fstype is defined and the volume's access mode contains ReadWriteOnce.
56
+
57
+ pod_info_on_mount(bool): podInfoOnMount indicates this CSI volume driver requires additional pod
58
+ information (like podName, podUID, etc.) during mount operations, if set to
59
+ true. If set to false, pod information will not be passed on mount. Default
60
+ is false.
61
+
62
+ The CSI driver specifies podInfoOnMount as part of driver deployment. If
63
+ true, Kubelet will pass pod information as VolumeContext in the CSI
64
+ NodePublishVolume() calls. The CSI driver is responsible for parsing and
65
+ validating the information passed in as VolumeContext.
66
+
67
+ The following VolumeConext will be passed if podInfoOnMount is set to true.
68
+ This list might grow, but the prefix will be used.
69
+ "csi.storage.k8s.io/pod.name": pod.Name "csi.storage.k8s.io/pod.namespace":
70
+ pod.Namespace "csi.storage.k8s.io/pod.uid": string(pod.UID)
71
+ "csi.storage.k8s.io/ephemeral": "true" if the volume is an ephemeral inline
72
+ volume
73
+ defined by a CSIVolumeSource, otherwise
74
+ "false"
75
+
76
+ "csi.storage.k8s.io/ephemeral" is a new feature in Kubernetes 1.16. It is
77
+ only required for drivers which support both the "Persistent" and
78
+ "Ephemeral" VolumeLifecycleMode. Other drivers can leave pod info disabled
79
+ and/or ignore this field. As Kubernetes 1.15 doesn't support this field,
80
+ drivers can only support one mode when deployed on such a cluster and the
81
+ deployment determines which mode that is, for example via a command line
82
+ parameter of the driver.
83
+
84
+ This field is immutable.
85
+
86
+ requires_republish(bool): requiresRepublish indicates the CSI driver wants `NodePublishVolume` being
87
+ periodically called to reflect any possible change in the mounted volume.
88
+ This field defaults to false.
89
+
90
+ Note: After a successful initial NodePublishVolume call, subsequent calls to
91
+ NodePublishVolume should only update the contents of the volume. New mount
92
+ points will not be seen by a running container.
93
+
94
+ se_linux_mount(bool): seLinuxMount specifies if the CSI driver supports "-o context" mount option.
95
+
96
+ When "true", the CSI driver must ensure that all volumes provided by this
97
+ CSI driver can be mounted separately with different `-o context` options.
98
+ This is typical for storage backends that provide volumes as filesystems on
99
+ block devices or as independent shared volumes. Kubernetes will call
100
+ NodeStage / NodePublish with "-o context=xyz" mount option when mounting a
101
+ ReadWriteOncePod volume used in Pod that has explicitly set SELinux context.
102
+ In the future, it may be expanded to other volume AccessModes. In any case,
103
+ Kubernetes will ensure that the volume is mounted only with a single SELinux
104
+ context.
105
+
106
+ When "false", Kubernetes won't pass any special SELinux mount options to the
107
+ driver. This is typical for volumes that represent subdirectories of a
108
+ bigger shared filesystem.
109
+
110
+ Default is "false".
111
+
112
+ storage_capacity(bool): storageCapacity indicates that the CSI volume driver wants pod scheduling to
113
+ consider the storage capacity that the driver deployment will report by
114
+ creating CSIStorageCapacity objects with capacity information, if set to
115
+ true.
116
+
117
+ The check can be enabled immediately when deploying a driver. In that case,
118
+ provisioning new volumes with late binding will pause until the driver
119
+ deployment has published some suitable CSIStorageCapacity object.
120
+
121
+ Alternatively, the driver can be deployed with the field unset or false and
122
+ it can be flipped later when storage capacity information has been
123
+ published.
124
+
125
+ This field was immutable in Kubernetes <= 1.22 and now is mutable.
126
+
127
+ token_requests(Dict[Any, Any]): tokenRequests indicates the CSI driver needs pods' service account tokens it
128
+ is mounting volume for to do necessary authentication. Kubelet will pass the
129
+ tokens in VolumeContext in the CSI NodePublishVolume calls. The CSI driver
130
+ should parse and validate the following VolumeContext:
131
+ "csi.storage.k8s.io/serviceAccount.tokens": {
132
+ "<audience>": {
133
+ "token": <token>,
134
+ "expirationTimestamp": <expiration timestamp in RFC3339>,
135
+ },
136
+ ...
137
+ }
138
+
139
+ Note: Audience in each TokenRequest should be different and at most one
140
+ token is empty string. To receive a new token after expiry,
141
+ RequiresRepublish can be used to trigger NodePublishVolume periodically.
142
+ TokenRequest contains parameters of a service account token.
143
+
144
+ FIELDS:
145
+ audience <string> -required-
146
+ audience is the intended audience of the token in "TokenRequestSpec". It
147
+ will default to the audiences of kube apiserver.
148
+
149
+ expirationSeconds <integer>
150
+ expirationSeconds is the duration of validity of the token in
151
+ "TokenRequestSpec". It has the same default value of "ExpirationSeconds" in
152
+ "TokenRequestSpec".
153
+
154
+ volume_lifecycle_modes(Dict[Any, Any]): volumeLifecycleModes defines what kind of volumes this CSI volume driver
155
+ supports. The default if the list is empty is "Persistent", which is the
156
+ usage defined by the CSI specification and implemented in Kubernetes via the
157
+ usual PV/PVC mechanism.
158
+
159
+ The other mode is "Ephemeral". In this mode, volumes are defined inline
160
+ inside the pod spec with CSIVolumeSource and their lifecycle is tied to the
161
+ lifecycle of that pod. A driver has to be aware of this because it is only
162
+ going to get a NodePublishVolume call for such a volume.
163
+
164
+ For more information about implementing this mode, see
165
+ https://kubernetes-csi.github.io/docs/ephemeral-local-volumes.html A driver
166
+ can support one or more of these modes and more modes may be added in the
167
+ future.
168
+
169
+ This field is beta. This field is immutable.
170
+
171
+ """
172
+ super().__init__(**kwargs)
173
+
174
+ self.attach_required = attach_required
175
+ self.fs_group_policy = fs_group_policy
176
+ self.pod_info_on_mount = pod_info_on_mount
177
+ self.requires_republish = requires_republish
178
+ self.se_linux_mount = se_linux_mount
179
+ self.storage_capacity = storage_capacity
180
+ self.token_requests = token_requests
181
+ self.volume_lifecycle_modes = volume_lifecycle_modes
182
+
183
+ def to_dict(self) -> None:
184
+ super().to_dict()
185
+
186
+ if not self.yaml_file:
187
+ self.res["spec"] = {}
188
+ _spec = self.res["spec"]
189
+
190
+ if self.attach_required is not None:
191
+ _spec["attachRequired"] = self.attach_required
192
+
193
+ if self.fs_group_policy:
194
+ _spec["fsGroupPolicy"] = self.fs_group_policy
195
+
196
+ if self.pod_info_on_mount is not None:
197
+ _spec["podInfoOnMount"] = self.pod_info_on_mount
198
+
199
+ if self.requires_republish is not None:
200
+ _spec["requiresRepublish"] = self.requires_republish
201
+
202
+ if self.se_linux_mount is not None:
203
+ _spec["seLinuxMount"] = self.se_linux_mount
204
+
205
+ if self.storage_capacity is not None:
206
+ _spec["storageCapacity"] = self.storage_capacity
207
+
208
+ if self.token_requests:
209
+ _spec["tokenRequests"] = self.token_requests
210
+
211
+ if self.volume_lifecycle_modes:
212
+ _spec["volumeLifecycleModes"] = self.volume_lifecycle_modes
@@ -0,0 +1,420 @@
1
+ # Generated using https://github.com/RedHatQE/openshift-python-wrapper/blob/main/scripts/resource/README.md
2
+
3
+ from typing import Any, Dict, Optional
4
+ from ocp_resources.resource import NamespacedResource
5
+
6
+
7
+ class Service(NamespacedResource):
8
+ """
9
+ Service is a named abstraction of software service (for example, mysql)
10
+ consisting of local port (for example 3306) that the proxy listens on, and
11
+ the selector that determines which pods will answer requests sent through
12
+ the proxy.
13
+
14
+ API Link: https://kubernetes.io/docs/concepts/services-networking/service/
15
+ """
16
+
17
+ class Type:
18
+ CLUSTER_IP = "ClusterIP"
19
+ NODE_PORT = "NodePort"
20
+ LOAD_BALANCER = "LoadBalancer"
21
+
22
+ api_version: str = NamespacedResource.ApiVersion.V1
23
+
24
+ def __init__(
25
+ self,
26
+ allocate_load_balancer_node_ports: Optional[bool] = None,
27
+ cluster_ip: Optional[str] = "",
28
+ cluster_ips: Optional[Dict[str, Any]] = None,
29
+ external_ips: Optional[Dict[str, Any]] = None,
30
+ external_name: Optional[str] = "",
31
+ external_traffic_policy: Optional[str] = "",
32
+ health_check_node_port: Optional[int] = None,
33
+ internal_traffic_policy: Optional[str] = "",
34
+ ip_families: Optional[Dict[str, Any]] = None,
35
+ ip_family_policy: Optional[str] = "",
36
+ load_balancer_class: Optional[str] = "",
37
+ load_balancer_ip: Optional[str] = "",
38
+ load_balancer_source_ranges: Optional[Dict[str, Any]] = None,
39
+ ports: Optional[Dict[str, Any]] = None,
40
+ publish_not_ready_addresses: Optional[bool] = None,
41
+ selector: Optional[Dict[str, Any]] = None,
42
+ session_affinity: Optional[str] = "",
43
+ session_affinity_config: Optional[Dict[str, Any]] = None,
44
+ type: Optional[str] = "",
45
+ **kwargs: Any,
46
+ ) -> None:
47
+ """
48
+ Args:
49
+ allocate_load_balancer_node_ports(bool): allocateLoadBalancerNodePorts defines if NodePorts will be automatically
50
+ allocated for services with type LoadBalancer. Default is "true". It may be
51
+ set to "false" if the cluster load-balancer does not rely on NodePorts. If
52
+ the caller requests specific NodePorts (by specifying a value), those
53
+ requests will be respected, regardless of this field. This field may only be
54
+ set for services with type LoadBalancer and will be cleared if the type is
55
+ changed to any other type.
56
+
57
+ cluster_ip(str): clusterIP is the IP address of the service and is usually assigned randomly.
58
+ If an address is specified manually, is in-range (as per system
59
+ configuration), and is not in use, it will be allocated to the service;
60
+ otherwise creation of the service will fail. This field may not be changed
61
+ through updates unless the type field is also being changed to ExternalName
62
+ (which requires this field to be blank) or the type field is being changed
63
+ from ExternalName (in which case this field may optionally be specified, as
64
+ describe above). Valid values are "None", empty string (""), or a valid IP
65
+ address. Setting this to "None" makes a "headless service" (no virtual IP),
66
+ which is useful when direct endpoint connections are preferred and proxying
67
+ is not required. Only applies to types ClusterIP, NodePort, and
68
+ LoadBalancer. If this field is specified when creating a Service of type
69
+ ExternalName, creation will fail. This field will be wiped when updating a
70
+ Service to type ExternalName. More info:
71
+ https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
72
+
73
+ cluster_ips(Dict[Any, Any]): ClusterIPs is a list of IP addresses assigned to this service, and are
74
+ usually assigned randomly. If an address is specified manually, is in-range
75
+ (as per system configuration), and is not in use, it will be allocated to
76
+ the service; otherwise creation of the service will fail. This field may not
77
+ be changed through updates unless the type field is also being changed to
78
+ ExternalName (which requires this field to be empty) or the type field is
79
+ being changed from ExternalName (in which case this field may optionally be
80
+ specified, as describe above). Valid values are "None", empty string (""),
81
+ or a valid IP address. Setting this to "None" makes a "headless service"
82
+ (no virtual IP), which is useful when direct endpoint connections are
83
+ preferred and proxying is not required. Only applies to types ClusterIP,
84
+ NodePort, and LoadBalancer. If this field is specified when creating a
85
+ Service of type ExternalName, creation will fail. This field will be wiped
86
+ when updating a Service to type ExternalName. If this field is not
87
+ specified, it will be initialized from the clusterIP field. If this field
88
+ is specified, clients must ensure that clusterIPs[0] and clusterIP have the
89
+ same value.
90
+
91
+ This field may hold a maximum of two entries (dual-stack IPs, in either
92
+ order). These IPs must correspond to the values of the ipFamilies field.
93
+ Both clusterIPs and ipFamilies are governed by the ipFamilyPolicy field.
94
+ More info:
95
+ https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
96
+
97
+ external_ips(Dict[Any, Any]): externalIPs is a list of IP addresses for which nodes in the cluster will
98
+ also accept traffic for this service. These IPs are not managed by
99
+ Kubernetes. The user is responsible for ensuring that traffic arrives at a
100
+ node with this IP. A common example is external load-balancers that are not
101
+ part of the Kubernetes system.
102
+
103
+ external_name(str): externalName is the external reference that discovery mechanisms will return
104
+ as an alias for this service (e.g. a DNS CNAME record). No proxying will be
105
+ involved. Must be a lowercase RFC-1123 hostname
106
+ (https://tools.ietf.org/html/rfc1123) and requires `type` to be
107
+ "ExternalName".
108
+
109
+ external_traffic_policy(str): externalTrafficPolicy describes how nodes distribute service traffic they
110
+ receive on one of the Service's "externally-facing" addresses (NodePorts,
111
+ ExternalIPs, and LoadBalancer IPs). If set to "Local", the proxy will
112
+ configure the service in a way that assumes that external load balancers
113
+ will take care of balancing the service traffic between nodes, and so each
114
+ node will deliver traffic only to the node-local endpoints of the service,
115
+ without masquerading the client source IP. (Traffic mistakenly sent to a
116
+ node with no endpoints will be dropped.) The default value, "Cluster", uses
117
+ the standard behavior of routing to all endpoints evenly (possibly modified
118
+ by topology and other features). Note that traffic sent to an External IP or
119
+ LoadBalancer IP from within the cluster will always get "Cluster" semantics,
120
+ but clients sending to a NodePort from within the cluster may need to take
121
+ traffic policy into account when picking a node.
122
+
123
+ Possible enum values:
124
+ - `"Cluster"`
125
+ - `"Cluster"` routes traffic to all endpoints.
126
+ - `"Local"`
127
+ - `"Local"` preserves the source IP of the traffic by routing only to
128
+ endpoints on the same node as the traffic was received on (dropping the
129
+ traffic if there are no local endpoints).
130
+
131
+ health_check_node_port(int): healthCheckNodePort specifies the healthcheck nodePort for the service. This
132
+ only applies when type is set to LoadBalancer and externalTrafficPolicy is
133
+ set to Local. If a value is specified, is in-range, and is not in use, it
134
+ will be used. If not specified, a value will be automatically allocated.
135
+ External systems (e.g. load-balancers) can use this port to determine if a
136
+ given node holds endpoints for this service or not. If this field is
137
+ specified when creating a Service which does not need it, creation will
138
+ fail. This field will be wiped when updating a Service to no longer need it
139
+ (e.g. changing type). This field cannot be updated once set.
140
+
141
+ internal_traffic_policy(str): InternalTrafficPolicy describes how nodes distribute service traffic they
142
+ receive on the ClusterIP. If set to "Local", the proxy will assume that pods
143
+ only want to talk to endpoints of the service on the same node as the pod,
144
+ dropping the traffic if there are no local endpoints. The default value,
145
+ "Cluster", uses the standard behavior of routing to all endpoints evenly
146
+ (possibly modified by topology and other features).
147
+
148
+ Possible enum values:
149
+ - `"Cluster"` routes traffic to all endpoints.
150
+ - `"Local"` routes traffic only to endpoints on the same node as the client
151
+ pod (dropping the traffic if there are no local endpoints).
152
+
153
+ ip_families(Dict[Any, Any]): IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this
154
+ service. This field is usually assigned automatically based on cluster
155
+ configuration and the ipFamilyPolicy field. If this field is specified
156
+ manually, the requested family is available in the cluster, and
157
+ ipFamilyPolicy allows it, it will be used; otherwise creation of the service
158
+ will fail. This field is conditionally mutable: it allows for adding or
159
+ removing a secondary IP family, but it does not allow changing the primary
160
+ IP family of the Service. Valid values are "IPv4" and "IPv6". This field
161
+ only applies to Services of types ClusterIP, NodePort, and LoadBalancer, and
162
+ does apply to "headless" services. This field will be wiped when updating a
163
+ Service to type ExternalName.
164
+
165
+ This field may hold a maximum of two entries (dual-stack families, in either
166
+ order). These families must correspond to the values of the clusterIPs
167
+ field, if specified. Both clusterIPs and ipFamilies are governed by the
168
+ ipFamilyPolicy field.
169
+
170
+ ip_family_policy(str): IPFamilyPolicy represents the dual-stack-ness requested or required by this
171
+ Service. If there is no value provided, then this field will be set to
172
+ SingleStack. Services can be "SingleStack" (a single IP family),
173
+ "PreferDualStack" (two IP families on dual-stack configured clusters or a
174
+ single IP family on single-stack clusters), or "RequireDualStack" (two IP
175
+ families on dual-stack configured clusters, otherwise fail). The ipFamilies
176
+ and clusterIPs fields depend on the value of this field. This field will be
177
+ wiped when updating a service to type ExternalName.
178
+
179
+ Possible enum values:
180
+ - `"PreferDualStack"` indicates that this service prefers dual-stack when
181
+ the cluster is configured for dual-stack. If the cluster is not configured
182
+ for dual-stack the service will be assigned a single IPFamily. If the
183
+ IPFamily is not set in service.spec.ipFamilies then the service will be
184
+ assigned the default IPFamily configured on the cluster
185
+ - `"RequireDualStack"` indicates that this service requires dual-stack.
186
+ Using IPFamilyPolicyRequireDualStack on a single stack cluster will result
187
+ in validation errors. The IPFamilies (and their order) assigned to this
188
+ service is based on service.spec.ipFamilies. If service.spec.ipFamilies was
189
+ not provided then it will be assigned according to how they are configured
190
+ on the cluster. If service.spec.ipFamilies has only one entry then the
191
+ alternative IPFamily will be added by apiserver
192
+ - `"SingleStack"` indicates that this service is required to have a single
193
+ IPFamily. The IPFamily assigned is based on the default IPFamily used by the
194
+ cluster or as identified by service.spec.ipFamilies field
195
+
196
+ load_balancer_class(str): loadBalancerClass is the class of the load balancer implementation this
197
+ Service belongs to. If specified, the value of this field must be a
198
+ label-style identifier, with an optional prefix, e.g. "internal-vip" or
199
+ "example.com/internal-vip". Unprefixed names are reserved for end-users.
200
+ This field can only be set when the Service type is 'LoadBalancer'. If not
201
+ set, the default load balancer implementation is used, today this is
202
+ typically done through the cloud provider integration, but should apply for
203
+ any default implementation. If set, it is assumed that a load balancer
204
+ implementation is watching for Services with a matching class. Any default
205
+ load balancer implementation (e.g. cloud providers) should ignore Services
206
+ that set this field. This field can only be set when creating or updating a
207
+ Service to type 'LoadBalancer'. Once set, it can not be changed. This field
208
+ will be wiped when a service is updated to a non 'LoadBalancer' type.
209
+
210
+ load_balancer_ip(str): Only applies to Service Type: LoadBalancer. This feature depends on whether
211
+ the underlying cloud-provider supports specifying the loadBalancerIP when a
212
+ load balancer is created. This field will be ignored if the cloud-provider
213
+ does not support the feature. Deprecated: This field was under-specified and
214
+ its meaning varies across implementations, and it cannot support dual-stack.
215
+ As of Kubernetes v1.24, users are encouraged to use implementation-specific
216
+ annotations when available. This field may be removed in a future API
217
+ version.
218
+
219
+ load_balancer_source_ranges(Dict[Any, Any]): If specified and supported by the platform, this will restrict traffic
220
+ through the cloud-provider load-balancer will be restricted to the specified
221
+ client IPs. This field will be ignored if the cloud-provider does not
222
+ support the feature." More info:
223
+ https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
224
+
225
+ ports(Dict[Any, Any]): The list of ports that are exposed by this service. More info:
226
+ https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
227
+ ServicePort contains information on service's port.
228
+
229
+ FIELDS:
230
+ appProtocol <string>
231
+ The application protocol for this port. This field follows standard
232
+ Kubernetes label syntax. Un-prefixed names are reserved for IANA standard
233
+ service names (as per RFC-6335 and
234
+ https://www.iana.org/assignments/service-names). Non-standard protocols
235
+ should use prefixed names such as mycompany.com/my-custom-protocol.
236
+
237
+ name <string>
238
+ The name of this port within the service. This must be a DNS_LABEL. All
239
+ ports within a ServiceSpec must have unique names. When considering the
240
+ endpoints for a Service, this must match the 'name' field in the
241
+ EndpointPort. Optional if only one ServicePort is defined on this service.
242
+
243
+ nodePort <integer>
244
+ The port on each node on which this service is exposed when type is NodePort
245
+ or LoadBalancer. Usually assigned by the system. If a value is specified,
246
+ in-range, and not in use it will be used, otherwise the operation will fail.
247
+ If not specified, a port will be allocated if this Service requires one. If
248
+ this field is specified when creating a Service which does not need it,
249
+ creation will fail. This field will be wiped when updating a Service to no
250
+ longer need it (e.g. changing type from NodePort to ClusterIP). More info:
251
+ https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
252
+
253
+ port <integer> -required-
254
+ The port that will be exposed by this service.
255
+
256
+ protocol <string>
257
+ The IP protocol for this port. Supports "TCP", "UDP", and "SCTP". Default is
258
+ TCP.
259
+
260
+ Possible enum values:
261
+ - `"SCTP"` is the SCTP protocol.
262
+ - `"TCP"` is the TCP protocol.
263
+ - `"UDP"` is the UDP protocol.
264
+
265
+ targetPort <IntOrString>
266
+ Number or name of the port to access on the pods targeted by the service.
267
+ Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. If
268
+ this is a string, it will be looked up as a named port in the target Pod's
269
+ container ports. If this is not specified, the value of the 'port' field is
270
+ used (an identity map). This field is ignored for services with
271
+ clusterIP=None, and should be omitted or set equal to the 'port' field. More
272
+ info:
273
+ https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service
274
+
275
+ publish_not_ready_addresses(bool): publishNotReadyAddresses indicates that any agent which deals with endpoints
276
+ for this Service should disregard any indications of ready/not-ready. The
277
+ primary use case for setting this field is for a StatefulSet's Headless
278
+ Service to propagate SRV DNS records for its Pods for the purpose of peer
279
+ discovery. The Kubernetes controllers that generate Endpoints and
280
+ EndpointSlice resources for Services interpret this to mean that all
281
+ endpoints are considered "ready" even if the Pods themselves are not. Agents
282
+ which consume only Kubernetes generated endpoints through the Endpoints or
283
+ EndpointSlice resources can safely assume this behavior.
284
+
285
+ selector(Dict[Any, Any]): Route service traffic to pods with label keys and values matching this
286
+ selector. If empty or not present, the service is assumed to have an
287
+ external process managing its endpoints, which Kubernetes will not modify.
288
+ Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type
289
+ is ExternalName. More info:
290
+ https://kubernetes.io/docs/concepts/services-networking/service/
291
+
292
+ session_affinity(str): Supports "ClientIP" and "None". Used to maintain session affinity. Enable
293
+ client IP based session affinity. Must be ClientIP or None. Defaults to
294
+ None. More info:
295
+ https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
296
+
297
+ Possible enum values:
298
+ - `"ClientIP"` is the Client IP based.
299
+ - `"None"` - no session affinity.
300
+
301
+ session_affinity_config(Dict[Any, Any]): sessionAffinityConfig contains the configurations of session affinity.
302
+ SessionAffinityConfig represents the configurations of session affinity.
303
+
304
+ FIELDS:
305
+ clientIP <ClientIPConfig>
306
+ clientIP contains the configurations of Client IP based session affinity.
307
+
308
+ type(str): type determines how the Service is exposed. Defaults to ClusterIP. Valid
309
+ options are ExternalName, ClusterIP, NodePort, and LoadBalancer. "ClusterIP"
310
+ allocates a cluster-internal IP address for load-balancing to endpoints.
311
+ Endpoints are determined by the selector or if that is not specified, by
312
+ manual construction of an Endpoints object or EndpointSlice objects. If
313
+ clusterIP is "None", no virtual IP is allocated and the endpoints are
314
+ published as a set of endpoints rather than a virtual IP. "NodePort" builds
315
+ on ClusterIP and allocates a port on every node which routes to the same
316
+ endpoints as the clusterIP. "LoadBalancer" builds on NodePort and creates an
317
+ external load-balancer (if supported in the current cloud) which routes to
318
+ the same endpoints as the clusterIP. "ExternalName" aliases this service to
319
+ the specified externalName. Several other fields do not apply to
320
+ ExternalName services. More info:
321
+ https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
322
+
323
+ Possible enum values:
324
+ - `"ClusterIP"` means a service will only be accessible inside the cluster,
325
+ via the cluster IP.
326
+ - `"ExternalName"` means a service consists of only a reference to an
327
+ external name that kubedns or equivalent will return as a CNAME record, with
328
+ no exposing or proxying of any pods involved.
329
+ - `"LoadBalancer"` means a service will be exposed via an external load
330
+ balancer (if the cloud provider supports it), in addition to 'NodePort'
331
+ type.
332
+ - `"NodePort"` means a service will be exposed on one port of every node,
333
+ in addition to 'ClusterIP' type.
334
+
335
+ """
336
+ super().__init__(**kwargs)
337
+
338
+ self.allocate_load_balancer_node_ports = allocate_load_balancer_node_ports
339
+ self.cluster_ip = cluster_ip
340
+ self.cluster_ips = cluster_ips
341
+ self.external_ips = external_ips
342
+ self.external_name = external_name
343
+ self.external_traffic_policy = external_traffic_policy
344
+ self.health_check_node_port = health_check_node_port
345
+ self.internal_traffic_policy = internal_traffic_policy
346
+ self.ip_families = ip_families
347
+ self.ip_family_policy = ip_family_policy
348
+ self.load_balancer_class = load_balancer_class
349
+ self.load_balancer_ip = load_balancer_ip
350
+ self.load_balancer_source_ranges = load_balancer_source_ranges
351
+ self.ports = ports
352
+ self.publish_not_ready_addresses = publish_not_ready_addresses
353
+ self.selector = selector
354
+ self.session_affinity = session_affinity
355
+ self.session_affinity_config = session_affinity_config
356
+ self.type = type
357
+
358
+ def to_dict(self) -> None:
359
+ super().to_dict()
360
+
361
+ if not self.yaml_file:
362
+ self.res["spec"] = {}
363
+ _spec = self.res["spec"]
364
+
365
+ if self.allocate_load_balancer_node_ports is not None:
366
+ _spec["allocateLoadBalancerNodePorts"] = self.allocate_load_balancer_node_ports
367
+
368
+ if self.cluster_ip:
369
+ _spec["clusterIP"] = self.cluster_ip
370
+
371
+ if self.cluster_ips:
372
+ _spec["clusterIPs"] = self.cluster_ips
373
+
374
+ if self.external_ips:
375
+ _spec["externalIPs"] = self.external_ips
376
+
377
+ if self.external_name:
378
+ _spec["externalName"] = self.external_name
379
+
380
+ if self.external_traffic_policy:
381
+ _spec["externalTrafficPolicy"] = self.external_traffic_policy
382
+
383
+ if self.health_check_node_port:
384
+ _spec["healthCheckNodePort"] = self.health_check_node_port
385
+
386
+ if self.internal_traffic_policy:
387
+ _spec["internalTrafficPolicy"] = self.internal_traffic_policy
388
+
389
+ if self.ip_families:
390
+ _spec["ipFamilies"] = self.ip_families
391
+
392
+ if self.ip_family_policy:
393
+ _spec["ipFamilyPolicy"] = self.ip_family_policy
394
+
395
+ if self.load_balancer_class:
396
+ _spec["loadBalancerClass"] = self.load_balancer_class
397
+
398
+ if self.load_balancer_ip:
399
+ _spec["loadBalancerIP"] = self.load_balancer_ip
400
+
401
+ if self.load_balancer_source_ranges:
402
+ _spec["loadBalancerSourceRanges"] = self.load_balancer_source_ranges
403
+
404
+ if self.ports:
405
+ _spec["ports"] = self.ports
406
+
407
+ if self.publish_not_ready_addresses is not None:
408
+ _spec["publishNotReadyAddresses"] = self.publish_not_ready_addresses
409
+
410
+ if self.selector:
411
+ _spec["selector"] = self.selector
412
+
413
+ if self.session_affinity:
414
+ _spec["sessionAffinity"] = self.session_affinity
415
+
416
+ if self.session_affinity_config:
417
+ _spec["sessionAffinityConfig"] = self.session_affinity_config
418
+
419
+ if self.type:
420
+ _spec["type"] = self.type