hyperfluid 0.1.0__py3-none-any.whl
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.
- hyperfluid/__init__.py +56 -0
- hyperfluid/_exceptions.py +93 -0
- hyperfluid/_version.py +6 -0
- hyperfluid/api/__init__.py +1441 -0
- hyperfluid/api/_auth.py +231 -0
- hyperfluid/api/_errors.py +125 -0
- hyperfluid/api/_pages.py +307 -0
- hyperfluid/api/_pagination.py +298 -0
- hyperfluid/api/_response.py +132 -0
- hyperfluid/api/_streaming.py +353 -0
- hyperfluid/api/accept_invitation.py +115 -0
- hyperfluid/api/ai_agents.py +961 -0
- hyperfluid/api/ai_agents_sessions.py +277 -0
- hyperfluid/api/airflow_connections.py +683 -0
- hyperfluid/api/airflows.py +839 -0
- hyperfluid/api/airflows_pods.py +240 -0
- hyperfluid/api/alert_rules.py +153 -0
- hyperfluid/api/alert_rules_rules.py +436 -0
- hyperfluid/api/alerting_settings.py +216 -0
- hyperfluid/api/alerting_settings_bindings.py +206 -0
- hyperfluid/api/alerting_settings_channels.py +474 -0
- hyperfluid/api/alerting_settings_thresholds.py +278 -0
- hyperfluid/api/api_keys.py +380 -0
- hyperfluid/api/app_instances.py +495 -0
- hyperfluid/api/app_templates.py +235 -0
- hyperfluid/api/atlas.py +600 -0
- hyperfluid/api/atlas_entries.py +351 -0
- hyperfluid/api/audit_logs.py +589 -0
- hyperfluid/api/audit_logs_security_decisions.py +299 -0
- hyperfluid/api/authorization.py +2794 -0
- hyperfluid/api/backup_targets.py +585 -0
- hyperfluid/api/bifrost.py +163 -0
- hyperfluid/api/buckets.py +1160 -0
- hyperfluid/api/buckets_archive_operations.py +313 -0
- hyperfluid/api/buckets_objects.py +479 -0
- hyperfluid/api/changelogs.py +112 -0
- hyperfluid/api/check_name_availability.py +126 -0
- hyperfluid/api/ci_runners.py +106 -0
- hyperfluid/api/cli.py +106 -0
- hyperfluid/api/client.py +5360 -0
- hyperfluid/api/common.py +845 -0
- hyperfluid/api/compute_docks.py +753 -0
- hyperfluid/api/console_config.py +106 -0
- hyperfluid/api/container_apps.py +877 -0
- hyperfluid/api/container_apps_crd.py +763 -0
- hyperfluid/api/container_apps_git_source.py +99 -0
- hyperfluid/api/container_apps_git_source_container_apps.py +83 -0
- hyperfluid/api/container_apps_git_source_container_apps_image_source.py +455 -0
- hyperfluid/api/container_apps_git_source_harbors.py +79 -0
- hyperfluid/api/container_apps_git_source_harbors_container_apps.py +366 -0
- hyperfluid/api/container_apps_pods.py +232 -0
- hyperfluid/api/converters.py +264 -0
- hyperfluid/api/crate_hf_console_inbound_http_handlers_data_containers_iceberg_clone_table.py +162 -0
- hyperfluid/api/crate_hf_console_inbound_http_handlers_data_docks_data_containers_handlers.py +156 -0
- hyperfluid/api/create_invitation.py +141 -0
- hyperfluid/api/create_signup_request.py +159 -0
- hyperfluid/api/dashboards.py +1069 -0
- hyperfluid/api/dashboards_versions.py +210 -0
- hyperfluid/api/data_docks.py +445 -0
- hyperfluid/api/data_docks_catalog.py +182 -0
- hyperfluid/api/decline_invitation.py +110 -0
- hyperfluid/api/dev_workstations.py +889 -0
- hyperfluid/api/dev_workstations_agent_chat.py +534 -0
- hyperfluid/api/dev_workstations_agent_chat_permission_policy.py +266 -0
- hyperfluid/api/dev_workstations_agent_chat_questions.py +264 -0
- hyperfluid/api/dev_workstations_agent_chat_sessions.py +522 -0
- hyperfluid/api/dev_workstations_agent_chat_sessions_messages.py +303 -0
- hyperfluid/api/dev_workstations_agent_chat_workspaces.py +229 -0
- hyperfluid/api/dev_workstations_ai.py +167 -0
- hyperfluid/api/dev_workstations_audit.py +219 -0
- hyperfluid/api/dev_workstations_egress_allowlists.py +471 -0
- hyperfluid/api/dev_workstations_egress_flows.py +141 -0
- hyperfluid/api/dev_workstations_files.py +241 -0
- hyperfluid/api/dev_workstations_forgejo.py +217 -0
- hyperfluid/api/dev_workstations_git_ops.py +770 -0
- hyperfluid/api/dev_workstations_metrics.py +118 -0
- hyperfluid/api/dev_workstations_preview_ports.py +118 -0
- hyperfluid/api/dev_workstations_preview_proxy.py +120 -0
- hyperfluid/api/dev_workstations_repositories.py +284 -0
- hyperfluid/api/dev_workstations_scm.py +396 -0
- hyperfluid/api/dev_workstations_skill_registries.py +657 -0
- hyperfluid/api/dev_workstations_skill_registries_skills.py +350 -0
- hyperfluid/api/dev_workstations_terminals.py +249 -0
- hyperfluid/api/domain_verifications.py +505 -0
- hyperfluid/api/faker_create_schema.py +141 -0
- hyperfluid/api/faker_create_table.py +149 -0
- hyperfluid/api/faker_create_table_structured.py +150 -0
- hyperfluid/api/faker_delete_schema.py +124 -0
- hyperfluid/api/faker_delete_schema_preview.py +130 -0
- hyperfluid/api/faker_delete_table.py +124 -0
- hyperfluid/api/faker_delete_table_preview.py +130 -0
- hyperfluid/api/faker_get_field_types.py +108 -0
- hyperfluid/api/faker_get_schemas.py +122 -0
- hyperfluid/api/faker_get_table.py +130 -0
- hyperfluid/api/faker_get_tables.py +122 -0
- hyperfluid/api/faker_update_table.py +146 -0
- hyperfluid/api/forgejo_runners.py +624 -0
- hyperfluid/api/get_data_container.py +122 -0
- hyperfluid/api/get_invitation_preview.py +116 -0
- hyperfluid/api/get_signup_page_copy.py +132 -0
- hyperfluid/api/git_hub_runners.py +1216 -0
- hyperfluid/api/handlers.py +362 -0
- hyperfluid/api/harbors.py +461 -0
- hyperfluid/api/harbors_crd.py +205 -0
- hyperfluid/api/hf_key_value_caches.py +595 -0
- hyperfluid/api/iceberg_create_iceberg_data_container.py +138 -0
- hyperfluid/api/iceberg_create_schema.py +149 -0
- hyperfluid/api/iceberg_create_table.py +184 -0
- hyperfluid/api/iceberg_delete_schema.py +120 -0
- hyperfluid/api/iceberg_delete_table.py +166 -0
- hyperfluid/api/iceberg_get_iceberg_data_container.py +122 -0
- hyperfluid/api/iceberg_get_schemas.py +122 -0
- hyperfluid/api/iceberg_get_table_columns.py +138 -0
- hyperfluid/api/iceberg_get_tables.py +122 -0
- hyperfluid/api/iceberg_health.py +241 -0
- hyperfluid/api/iceberg_health_scan_api.py +214 -0
- hyperfluid/api/iceberg_optimize.py +636 -0
- hyperfluid/api/iceberg_optimize_runs.py +284 -0
- hyperfluid/api/identity_providers.py +475 -0
- hyperfluid/api/kafka_services.py +751 -0
- hyperfluid/api/kafka_topics.py +501 -0
- hyperfluid/api/list_identity_providers.py +118 -0
- hyperfluid/api/list_invitations.py +122 -0
- hyperfluid/api/llm_credits.py +353 -0
- hyperfluid/api/llm_credits_budgets.py +300 -0
- hyperfluid/api/managed_postgre_sq_ls.py +103 -0
- hyperfluid/api/managed_postgre_sq_ls_harbors.py +81 -0
- hyperfluid/api/managed_postgre_sq_ls_harbors_managed_postgresqls.py +306 -0
- hyperfluid/api/managed_postgre_sq_ls_managed_postgresqls.py +530 -0
- hyperfluid/api/managed_postgre_sql_users.py +619 -0
- hyperfluid/api/managed_postgresql_backups.py +513 -0
- hyperfluid/api/managed_postgresql_imports.py +986 -0
- hyperfluid/api/middleware.py +40 -0
- hyperfluid/api/model_catalog.py +170 -0
- hyperfluid/api/model_serving.py +556 -0
- hyperfluid/api/monitoring.py +1080 -0
- hyperfluid/api/monitoring_bifrost.py +456 -0
- hyperfluid/api/monitoring_compute_docks.py +302 -0
- hyperfluid/api/monitoring_container_apps.py +404 -0
- hyperfluid/api/monitoring_container_apps_custom_metrics.py +251 -0
- hyperfluid/api/monitoring_data_docks.py +286 -0
- hyperfluid/api/monitoring_dev_workstations.py +373 -0
- hyperfluid/api/monitoring_harbors.py +177 -0
- hyperfluid/api/monitoring_harbors_github_runners.py +449 -0
- hyperfluid/api/monitoring_hf_key_value_caches.py +286 -0
- hyperfluid/api/monitoring_kafka_services.py +286 -0
- hyperfluid/api/monitoring_managed_postgresqls.py +292 -0
- hyperfluid/api/monitoring_model_servings.py +278 -0
- hyperfluid/api/nextflow.py +735 -0
- hyperfluid/api/nextflow_runs.py +623 -0
- hyperfluid/api/nextflow_runs_tasks.py +236 -0
- hyperfluid/api/ontology.py +480 -0
- hyperfluid/api/ontology_action_types.py +578 -0
- hyperfluid/api/ontology_link_types.py +479 -0
- hyperfluid/api/ontology_object_types.py +657 -0
- hyperfluid/api/ontology_object_types_instances.py +394 -0
- hyperfluid/api/ontology_properties.py +233 -0
- hyperfluid/api/open_data.py +279 -0
- hyperfluid/api/org_storage.py +284 -0
- hyperfluid/api/org_storage_harbors.py +237 -0
- hyperfluid/api/org_storage_harbors_zones.py +198 -0
- hyperfluid/api/org_storage_zones.py +190 -0
- hyperfluid/api/organization_features.py +120 -0
- hyperfluid/api/organizations.py +580 -0
- hyperfluid/api/orgs.py +69 -0
- hyperfluid/api/orgs_data_docks.py +203 -0
- hyperfluid/api/petite_requete.py +1945 -0
- hyperfluid/api/pipelines.py +1515 -0
- hyperfluid/api/pipelines_runs.py +371 -0
- hyperfluid/api/pipelines_stats_api.py +214 -0
- hyperfluid/api/postgresql_create_postgresql_data_container.py +142 -0
- hyperfluid/api/postgresql_get_postgresql_data_container.py +124 -0
- hyperfluid/api/quotas.py +175 -0
- hyperfluid/api/redeem_invitation.py +108 -0
- hyperfluid/api/register_invitation.py +135 -0
- hyperfluid/api/registries.py +393 -0
- hyperfluid/api/registry_projects.py +407 -0
- hyperfluid/api/registry_views.py +427 -0
- hyperfluid/api/registry_views_projects.py +69 -0
- hyperfluid/api/registry_views_projects_images.py +540 -0
- hyperfluid/api/resend_invitation.py +124 -0
- hyperfluid/api/revoke_invitation.py +122 -0
- hyperfluid/api/s3_long_lived_keys.py +221 -0
- hyperfluid/api/s3_long_lived_keys_s3_keys.py +313 -0
- hyperfluid/api/s3_sessions.py +131 -0
- hyperfluid/api/sapience_resources.py +122 -0
- hyperfluid/api/secrets.py +788 -0
- hyperfluid/api/security.py +1167 -0
- hyperfluid/api/security_policies.py +118 -0
- hyperfluid/api/security_settings.py +431 -0
- hyperfluid/api/service_accounts.py +261 -0
- hyperfluid/api/service_accounts_attributes.py +385 -0
- hyperfluid/api/service_accounts_crd.py +501 -0
- hyperfluid/api/service_links.py +387 -0
- hyperfluid/api/shared_models.py +167 -0
- hyperfluid/api/super_catalog_exposure_handlers.py +224 -0
- hyperfluid/api/super_catalog_handlers.py +308 -0
- hyperfluid/api/super_data_access_handlers.py +161 -0
- hyperfluid/api/super_internet_exposure_handlers.py +209 -0
- hyperfluid/api/super_organizations_list_users.py +122 -0
- hyperfluid/api/super_resource_groups_handlers.py +206 -0
- hyperfluid/api/super_search_handlers.py +173 -0
- hyperfluid/api/support.py +69 -0
- hyperfluid/api/support_tickets.py +522 -0
- hyperfluid/api/support_tickets_messages.py +216 -0
- hyperfluid/api/table_classifications.py +551 -0
- hyperfluid/api/terraform_registry.py +122 -0
- hyperfluid/api/token_usage.py +414 -0
- hyperfluid/api/token_usage_timeseries.py +226 -0
- hyperfluid/api/trino_connectors.py +122 -0
- hyperfluid/api/unified_catalog.py +122 -0
- hyperfluid/api/user_attributes.py +492 -0
- hyperfluid/api/verify_signup_request.py +137 -0
- hyperfluid/api/virtual_machine_users.py +452 -0
- hyperfluid/api/virtual_machines.py +664 -0
- hyperfluid/api/workload_security.py +592 -0
- hyperfluid/api/workload_security_settings.py +199 -0
- hyperfluid/api/workload_security_workloads.py +215 -0
- hyperfluid/api/workstation_templates.py +544 -0
- hyperfluid/errors.py +46 -0
- hyperfluid/models/__init__.py +3844 -0
- hyperfluid/models/abort_managed_postgresql_import_upload_request_body.py +18 -0
- hyperfluid/models/abort_multipart_upload_request.py +17 -0
- hyperfluid/models/accept_invitation_body.py +11 -0
- hyperfluid/models/access_binding.py +56 -0
- hyperfluid/models/access_check_item.py +20 -0
- hyperfluid/models/access_check_request_body.py +17 -0
- hyperfluid/models/access_check_result.py +21 -0
- hyperfluid/models/action_parameter.py +31 -0
- hyperfluid/models/action_result.py +21 -0
- hyperfluid/models/action_type.py +47 -0
- hyperfluid/models/add_group_member_request_body.py +17 -0
- hyperfluid/models/add_service_account_attribute_request.py +14 -0
- hyperfluid/models/add_user.py +13 -0
- hyperfluid/models/add_user_attribute_request.py +15 -0
- hyperfluid/models/add_workstation_repository_response.py +26 -0
- hyperfluid/models/agent_mode.py +21 -0
- hyperfluid/models/agent_request_kind.py +24 -0
- hyperfluid/models/agent_workspaces.py +21 -0
- hyperfluid/models/agent_worktree.py +17 -0
- hyperfluid/models/ai_agent_budgets_dto.py +18 -0
- hyperfluid/models/ai_agent_capabilities_response.py +17 -0
- hyperfluid/models/ai_agent_capability_response.py +45 -0
- hyperfluid/models/ai_agent_data_source_dto.py +21 -0
- hyperfluid/models/ai_agent_desired_state_dto.py +17 -0
- hyperfluid/models/ai_agent_inference_dto.py +27 -0
- hyperfluid/models/ai_agent_mail_dto.py +64 -0
- hyperfluid/models/ai_agent_mail_mode_dto.py +17 -0
- hyperfluid/models/ai_agent_mail_stats_response.py +40 -0
- hyperfluid/models/ai_agent_mail_status_dto.py +29 -0
- hyperfluid/models/ai_agent_mailbox_phase_dto.py +17 -0
- hyperfluid/models/ai_agent_memory_response.py +35 -0
- hyperfluid/models/ai_agent_response.py +81 -0
- hyperfluid/models/ai_agent_session_summary.py +30 -0
- hyperfluid/models/ai_agent_session_turn.py +19 -0
- hyperfluid/models/ai_agent_session_turns_response.py +17 -0
- hyperfluid/models/ai_agent_sessions_response.py +17 -0
- hyperfluid/models/ai_agent_status_response.py +24 -0
- hyperfluid/models/ai_classification_result_response.py +25 -0
- hyperfluid/models/ai_classify_request_body.py +20 -0
- hyperfluid/models/ai_classify_response_body.py +21 -0
- hyperfluid/models/ai_edit_request.py +35 -0
- hyperfluid/models/ai_edit_response.py +17 -0
- hyperfluid/models/airflow_connection_condition_response.py +24 -0
- hyperfluid/models/airflow_connection_response.py +145 -0
- hyperfluid/models/airflow_connection_s3_session.py +30 -0
- hyperfluid/models/airflow_crd_spec_response.py +49 -0
- hyperfluid/models/airflow_crd_status_response.py +47 -0
- hyperfluid/models/airflow_egress_request.py +30 -0
- hyperfluid/models/airflow_in_cluster_link_request.py +21 -0
- hyperfluid/models/airflow_link_kind.py +31 -0
- hyperfluid/models/airflow_node_tier.py +38 -0
- hyperfluid/models/airflow_pod_response.py +37 -0
- hyperfluid/models/airflow_response.py +53 -0
- hyperfluid/models/alert_event_dto.py +33 -0
- hyperfluid/models/alert_rule_body.py +40 -0
- hyperfluid/models/alert_rule_dto.py +53 -0
- hyperfluid/models/alertable_panel_dto.py +25 -0
- hyperfluid/models/analytics_summary.py +27 -0
- hyperfluid/models/analytics_trend_point.py +20 -0
- hyperfluid/models/analytics_trends.py +19 -0
- hyperfluid/models/antivirus_config.py +21 -0
- hyperfluid/models/api_error_body.py +23 -0
- hyperfluid/models/api_key_response.py +44 -0
- hyperfluid/models/app_instance_response.py +42 -0
- hyperfluid/models/app_protocol.py +19 -0
- hyperfluid/models/app_template_response.py +43 -0
- hyperfluid/models/app_usage_ref.py +29 -0
- hyperfluid/models/applied_proposal.py +29 -0
- hyperfluid/models/apply_ontology_proposal_request.py +26 -0
- hyperfluid/models/archive_download_response.py +15 -0
- hyperfluid/models/archive_export_request.py +24 -0
- hyperfluid/models/archive_file_type.py +14 -0
- hyperfluid/models/archive_import_request.py +26 -0
- hyperfluid/models/archive_operation_status.py +19 -0
- hyperfluid/models/archive_operation_type.py +15 -0
- hyperfluid/models/ask_ai_agent_request.py +28 -0
- hyperfluid/models/ask_ai_agent_response.py +21 -0
- hyperfluid/models/assistant_answer.py +21 -0
- hyperfluid/models/assistant_request.py +23 -0
- hyperfluid/models/atlas_article.py +21 -0
- hyperfluid/models/atlas_article_summary.py +45 -0
- hyperfluid/models/atlas_assistant_request.py +17 -0
- hyperfluid/models/atlas_assistant_response.py +24 -0
- hyperfluid/models/atlas_assistant_source.py +19 -0
- hyperfluid/models/atlas_assistant_status.py +18 -0
- hyperfluid/models/atlas_entry.py +29 -0
- hyperfluid/models/atlas_entry_kind.py +20 -0
- hyperfluid/models/atlas_localized_text.py +15 -0
- hyperfluid/models/atlas_manifest.py +24 -0
- hyperfluid/models/atlas_persona.py +21 -0
- hyperfluid/models/atlas_procedure_revision.py +25 -0
- hyperfluid/models/atlas_save_entry.py +35 -0
- hyperfluid/models/atlas_search_request.py +24 -0
- hyperfluid/models/atlas_search_response.py +24 -0
- hyperfluid/models/atlas_search_result.py +27 -0
- hyperfluid/models/atlas_status.py +19 -0
- hyperfluid/models/atlas_verification.py +17 -0
- hyperfluid/models/atlas_visibility.py +15 -0
- hyperfluid/models/atlas_workspace.py +23 -0
- hyperfluid/models/audit_actor.py +20 -0
- hyperfluid/models/audit_actor_kind.py +23 -0
- hyperfluid/models/audit_entry_kind.py +15 -0
- hyperfluid/models/audit_log_event.py +111 -0
- hyperfluid/models/audit_log_event_authz_break_glass_used_variant.py +20 -0
- hyperfluid/models/audit_log_event_authz_organization_policy_revoked_variant.py +23 -0
- hyperfluid/models/audit_log_event_console_authz_decision_variant.py +19 -0
- hyperfluid/models/audit_log_event_container_app_image_synced_variant.py +21 -0
- hyperfluid/models/audit_log_event_data_dock_opa_evaluation_variant.py +19 -0
- hyperfluid/models/audit_log_event_managed_postgresql_import_created_variant.py +24 -0
- hyperfluid/models/audit_log_event_object_storage_owner_key_revealed_variant.py +27 -0
- hyperfluid/models/audit_log_event_object_storage_usage_collected_variant.py +23 -0
- hyperfluid/models/audit_log_event_platform_admin_action_variant.py +21 -0
- hyperfluid/models/audit_log_event_runtime_security_alert_variant.py +25 -0
- hyperfluid/models/audit_log_event_s3_gateway_decision_variant.py +19 -0
- hyperfluid/models/audit_log_event_s3_gateway_gate_denied_variant.py +21 -0
- hyperfluid/models/audit_log_event_s3_gateway_session_issued_variant.py +19 -0
- hyperfluid/models/audit_log_event_security_decision_variant.py +19 -0
- hyperfluid/models/audit_log_event_trino_query_completed_variant.py +21 -0
- hyperfluid/models/audit_log_event_type.py +52 -0
- hyperfluid/models/audit_log_event_virtual_machine_console_session_variant.py +23 -0
- hyperfluid/models/audit_log_event_workstation_agent_request_variant.py +25 -0
- hyperfluid/models/audit_log_event_workstation_preview_session_variant.py +22 -0
- hyperfluid/models/audit_log_event_workstation_terminal_command_variant.py +20 -0
- hyperfluid/models/audit_log_freshness.py +17 -0
- hyperfluid/models/audit_log_page_audit_entry.py +28 -0
- hyperfluid/models/audit_log_page_audit_entry_data_item.py +124 -0
- hyperfluid/models/audit_log_page_list_audit_log_item.py +30 -0
- hyperfluid/models/audit_log_page_list_audit_log_item_data_item.py +43 -0
- hyperfluid/models/authorize_preview_response.py +27 -0
- hyperfluid/models/authz_break_glass_used_log.py +21 -0
- hyperfluid/models/authz_organization_policy_revoked_log.py +28 -0
- hyperfluid/models/auto_suspend_input.py +15 -0
- hyperfluid/models/autoscaling_spec.py +52 -0
- hyperfluid/models/available_image.py +42 -0
- hyperfluid/models/backend_driver.py +15 -0
- hyperfluid/models/backup_origin.py +19 -0
- hyperfluid/models/backup_policy.py +15 -0
- hyperfluid/models/backup_target_crd_spec_response.py +23 -0
- hyperfluid/models/backup_target_instance.py +15 -0
- hyperfluid/models/backup_target_response.py +49 -0
- hyperfluid/models/backup_target_source_request.py +28 -0
- hyperfluid/models/backup_target_source_request_external_variant.py +27 -0
- hyperfluid/models/backup_target_source_request_internal_variant.py +23 -0
- hyperfluid/models/bifrost_event_dto.py +41 -0
- hyperfluid/models/bifrost_event_status.py +15 -0
- hyperfluid/models/bifrost_events_response.py +27 -0
- hyperfluid/models/bifrost_feature_status_response.py +23 -0
- hyperfluid/models/bifrost_info_response.py +21 -0
- hyperfluid/models/bifrost_overview_response.py +44 -0
- hyperfluid/models/bifrost_protocol.py +21 -0
- hyperfluid/models/bifrost_timeseries_point_dto.py +17 -0
- hyperfluid/models/bifrost_timeseries_response.py +27 -0
- hyperfluid/models/bifrost_top_response.py +27 -0
- hyperfluid/models/bifrost_top_row_dto.py +20 -0
- hyperfluid/models/branch_list.py +17 -0
- hyperfluid/models/bucket_archive_operation.py +63 -0
- hyperfluid/models/bucket_credentials.py +17 -0
- hyperfluid/models/bucket_field.py +28 -0
- hyperfluid/models/bucket_object.py +21 -0
- hyperfluid/models/bucket_object_listing.py +26 -0
- hyperfluid/models/bucket_ref_spec_response.py +25 -0
- hyperfluid/models/budget_author.py +15 -0
- hyperfluid/models/capacity_usage_item_response.py +33 -0
- hyperfluid/models/catalog_exposure_response.py +25 -0
- hyperfluid/models/catalog_exposure_table_entry.py +20 -0
- hyperfluid/models/catalog_failure_kind.py +23 -0
- hyperfluid/models/catalog_introspection_failure.py +25 -0
- hyperfluid/models/catalog_item.py +31 -0
- hyperfluid/models/catalog_model.py +67 -0
- hyperfluid/models/catalog_repository_response.py +25 -0
- hyperfluid/models/catalog_response.py +17 -0
- hyperfluid/models/ceph_zone_response.py +20 -0
- hyperfluid/models/changelog_entry_response.py +32 -0
- hyperfluid/models/channel_body.py +28 -0
- hyperfluid/models/channel_kind.py +18 -0
- hyperfluid/models/chart_encodings.py +25 -0
- hyperfluid/models/chart_options.py +39 -0
- hyperfluid/models/chart_type.py +25 -0
- hyperfluid/models/check_image_source_response.py +15 -0
- hyperfluid/models/check_name_availability_response_data.py +13 -0
- hyperfluid/models/check_organization_name_availability_response_data.py +13 -0
- hyperfluid/models/checkout_request.py +18 -0
- hyperfluid/models/classification_config.py +49 -0
- hyperfluid/models/classification_stats_response.py +37 -0
- hyperfluid/models/cli_version_response.py +13 -0
- hyperfluid/models/clone_iceberg_table_request_body.py +19 -0
- hyperfluid/models/commit_request.py +13 -0
- hyperfluid/models/commit_response.py +13 -0
- hyperfluid/models/comparator.py +15 -0
- hyperfluid/models/complete_managed_postgresql_import_upload_request_body.py +24 -0
- hyperfluid/models/complete_multipart_upload_request.py +24 -0
- hyperfluid/models/completed_part_info.py +17 -0
- hyperfluid/models/compute_dock_crd_partition.py +27 -0
- hyperfluid/models/compute_dock_crd_spec_response.py +41 -0
- hyperfluid/models/compute_dock_partition_status.py +27 -0
- hyperfluid/models/compute_dock_response.py +47 -0
- hyperfluid/models/compute_engine_input.py +15 -0
- hyperfluid/models/condition.py +36 -0
- hyperfluid/models/condition_principal_attribute_equals_variant.py +21 -0
- hyperfluid/models/condition_request_attribute_equals_variant.py +20 -0
- hyperfluid/models/condition_view.py +29 -0
- hyperfluid/models/configuration_model.py +15 -0
- hyperfluid/models/connector_descriptor_response.py +30 -0
- hyperfluid/models/console_authz_decision_log.py +52 -0
- hyperfluid/models/console_config_feature_flag.py +48 -0
- hyperfluid/models/console_session_phase.py +15 -0
- hyperfluid/models/container_app_crd_spec_response.py +168 -0
- hyperfluid/models/container_app_image_synced_log.py +35 -0
- hyperfluid/models/container_app_metrics.py +22 -0
- hyperfluid/models/container_app_platform_url_response.py +24 -0
- hyperfluid/models/container_app_pod_info.py +60 -0
- hyperfluid/models/container_app_port_input.py +31 -0
- hyperfluid/models/container_app_port_response.py +29 -0
- hyperfluid/models/container_app_response.py +72 -0
- hyperfluid/models/container_app_usage_dto.py +44 -0
- hyperfluid/models/container_app_volume_usage_dto.py +38 -0
- hyperfluid/models/container_app_volumes_response.py +21 -0
- hyperfluid/models/container_apps_usage_response.py +26 -0
- hyperfluid/models/container_row.py +44 -0
- hyperfluid/models/context_provider_response.py +37 -0
- hyperfluid/models/contextual_restriction_response.py +36 -0
- hyperfluid/models/copilot_generate_request.py +39 -0
- hyperfluid/models/copilot_generate_response.py +23 -0
- hyperfluid/models/copilot_repair_context.py +20 -0
- hyperfluid/models/copilot_turn.py +18 -0
- hyperfluid/models/copilot_widget_proposal.py +25 -0
- hyperfluid/models/copy_destination_config.py +40 -0
- hyperfluid/models/copy_destination_config_data_container_variant.py +21 -0
- hyperfluid/models/copy_destination_config_harbor_bucket_variant.py +24 -0
- hyperfluid/models/copy_s3_source_config.py +36 -0
- hyperfluid/models/copy_s3_source_config_data_container_variant.py +21 -0
- hyperfluid/models/copy_s3_source_config_harbor_bucket_variant.py +24 -0
- hyperfluid/models/copy_source_config.py +23 -0
- hyperfluid/models/count_ref_request.py +29 -0
- hyperfluid/models/count_secrets_response.py +13 -0
- hyperfluid/models/crd_owner.py +32 -0
- hyperfluid/models/crd_owner_gitops_variant.py +23 -0
- hyperfluid/models/crd_owner_pipeline_variant.py +18 -0
- hyperfluid/models/crd_owner_ui_variant.py +14 -0
- hyperfluid/models/crd_owner_unknown_variant.py +15 -0
- hyperfluid/models/crd_status_snapshot.py +39 -0
- hyperfluid/models/create_action_type_request.py +29 -0
- hyperfluid/models/create_ai_agent_request.py +89 -0
- hyperfluid/models/create_airflow_connection_request.py +56 -0
- hyperfluid/models/create_airflow_crd_request_body.py +60 -0
- hyperfluid/models/create_api_key_request.py +24 -0
- hyperfluid/models/create_api_key_response.py +27 -0
- hyperfluid/models/create_app_instance_crd_request_body.py +26 -0
- hyperfluid/models/create_backup_target_crd_request_body.py +36 -0
- hyperfluid/models/create_compute_dock_crd_request_body.py +68 -0
- hyperfluid/models/create_connector_ingest_request.py +38 -0
- hyperfluid/models/create_container_app_crd_request_body.py +128 -0
- hyperfluid/models/create_context_enricher_pipeline_request.py +27 -0
- hyperfluid/models/create_context_provider_body.py +24 -0
- hyperfluid/models/create_contextual_restriction_body.py +24 -0
- hyperfluid/models/create_copy_pipeline_request.py +23 -0
- hyperfluid/models/create_dashboard_request.py +31 -0
- hyperfluid/models/create_data_dock_catalog_request.py +63 -0
- hyperfluid/models/create_data_dock_catalog_response.py +19 -0
- hyperfluid/models/create_data_dock_request_body.py +24 -0
- hyperfluid/models/create_dev_workstation_request.py +116 -0
- hyperfluid/models/create_domain_verification_request_body.py +15 -0
- hyperfluid/models/create_faker_schema_request.py +15 -0
- hyperfluid/models/create_faker_table_request.py +15 -0
- hyperfluid/models/create_faker_table_structured_request.py +19 -0
- hyperfluid/models/create_file_router_pipeline_request.py +26 -0
- hyperfluid/models/create_file_sorter_request.py +32 -0
- hyperfluid/models/create_forgejo_runner_request.py +48 -0
- hyperfluid/models/create_g_drive_pipeline_request.py +33 -0
- hyperfluid/models/create_github_connection_request.py +27 -0
- hyperfluid/models/create_github_runner_request.py +63 -0
- hyperfluid/models/create_grant_request_body.py +34 -0
- hyperfluid/models/create_group_request_body.py +16 -0
- hyperfluid/models/create_harbor_crd_request_body.py +15 -0
- hyperfluid/models/create_hf_bucket_request.py +30 -0
- hyperfluid/models/create_hf_key_value_cache_crd_request_body.py +38 -0
- hyperfluid/models/create_iceberg_data_container_request_body.py +21 -0
- hyperfluid/models/create_iceberg_table_metadata_request.py +42 -0
- hyperfluid/models/create_identity_provider_request.py +31 -0
- hyperfluid/models/create_inbound_email_pipeline_request.py +36 -0
- hyperfluid/models/create_invitation_request.py +16 -0
- hyperfluid/models/create_kafka_hf_service_request.py +33 -0
- hyperfluid/models/create_kafka_hf_topic_request.py +20 -0
- hyperfluid/models/create_link_type_request.py +28 -0
- hyperfluid/models/create_managed_postgresql_backup_crd_request_body.py +17 -0
- hyperfluid/models/create_managed_postgresql_crd_request_body.py +62 -0
- hyperfluid/models/create_managed_postgresql_import_crd_request_body.py +33 -0
- hyperfluid/models/create_managed_postgresql_user_crd_request_body.py +29 -0
- hyperfluid/models/create_medallion_schema_request.py +19 -0
- hyperfluid/models/create_model_serving_request.py +35 -0
- hyperfluid/models/create_nextflow_crd_request_body.py +53 -0
- hyperfluid/models/create_object_type_request.py +34 -0
- hyperfluid/models/create_open_data_pipeline_request.py +23 -0
- hyperfluid/models/create_or_update_egress_allowlist_request.py +24 -0
- hyperfluid/models/create_organization_policy_request_body.py +29 -0
- hyperfluid/models/create_organization_request_body.py +17 -0
- hyperfluid/models/create_page_splitter_pipeline_request.py +22 -0
- hyperfluid/models/create_pipeline_request_v2.py +71 -0
- hyperfluid/models/create_pipeline_request_v2_context_enricher_variant.py +25 -0
- hyperfluid/models/create_pipeline_request_v2_copy_variant.py +21 -0
- hyperfluid/models/create_pipeline_request_v2_file_router_variant.py +21 -0
- hyperfluid/models/create_pipeline_request_v2_file_sorter_variant.py +21 -0
- hyperfluid/models/create_pipeline_request_v2_inbound_email_variant.py +21 -0
- hyperfluid/models/create_pipeline_request_v2_open_data_variant.py +21 -0
- hyperfluid/models/create_pipeline_request_v2_page_splitter_variant.py +21 -0
- hyperfluid/models/create_pipeline_request_v2_share_point_variant.py +21 -0
- hyperfluid/models/create_pipeline_request_v2_trino_variant.py +21 -0
- hyperfluid/models/create_pipeline_request_v2g_drive_variant.py +21 -0
- hyperfluid/models/create_pipeline_request_v2s3_copy_variant.py +21 -0
- hyperfluid/models/create_postgresql_data_container_request_body.py +23 -0
- hyperfluid/models/create_property_definition_request.py +25 -0
- hyperfluid/models/create_ref_request.py +24 -0
- hyperfluid/models/create_registry_project_request_body.py +16 -0
- hyperfluid/models/create_s3_copy_pipeline_request.py +23 -0
- hyperfluid/models/create_saved_query_request.py +36 -0
- hyperfluid/models/create_secret_request_body.py +35 -0
- hyperfluid/models/create_service_account_crd_request_body.py +38 -0
- hyperfluid/models/create_service_link_request_body.py +24 -0
- hyperfluid/models/create_session_request.py +20 -0
- hyperfluid/models/create_session_response.py +24 -0
- hyperfluid/models/create_share_point_pipeline_request.py +41 -0
- hyperfluid/models/create_signup_request_body.py +31 -0
- hyperfluid/models/create_signup_request_response.py +14 -0
- hyperfluid/models/create_skill_registry_request.py +34 -0
- hyperfluid/models/create_skill_request.py +21 -0
- hyperfluid/models/create_support_message_request.py +14 -0
- hyperfluid/models/create_support_ticket_request.py +37 -0
- hyperfluid/models/create_table_classification_body.py +25 -0
- hyperfluid/models/create_trino_pipeline_request.py +36 -0
- hyperfluid/models/create_user.py +22 -0
- hyperfluid/models/create_virtual_machine_crd_request_body.py +42 -0
- hyperfluid/models/create_virtual_machine_user_crd_request_body.py +24 -0
- hyperfluid/models/create_workstation_template_request.py +60 -0
- hyperfluid/models/credential_location.py +17 -0
- hyperfluid/models/credit_balance.py +24 -0
- hyperfluid/models/credit_budgets_response.py +17 -0
- hyperfluid/models/credit_ledger_line.py +39 -0
- hyperfluid/models/credit_ledger_response.py +19 -0
- hyperfluid/models/credit_spend_by_model.py +17 -0
- hyperfluid/models/credit_spend_by_model_response.py +17 -0
- hyperfluid/models/custom_domain_availability_response.py +39 -0
- hyperfluid/models/custom_domain_dns_record.py +20 -0
- hyperfluid/models/custom_domain_holder.py +25 -0
- hyperfluid/models/custom_domain_input.py +23 -0
- hyperfluid/models/custom_domain_response.py +37 -0
- hyperfluid/models/custom_domain_target_response.py +17 -0
- hyperfluid/models/custom_domain_tls_mode_input.py +15 -0
- hyperfluid/models/custom_flavor_bounds_dto.py +23 -0
- hyperfluid/models/custom_metric_names_response.py +18 -0
- hyperfluid/models/custom_metric_series_dto.py +24 -0
- hyperfluid/models/custom_metrics_query_request.py +21 -0
- hyperfluid/models/custom_metrics_query_response.py +31 -0
- hyperfluid/models/custom_resource_input.py +27 -0
- hyperfluid/models/dashboard.py +51 -0
- hyperfluid/models/dashboard_status.py +16 -0
- hyperfluid/models/dashboard_summary.py +42 -0
- hyperfluid/models/dashboard_variable.py +29 -0
- hyperfluid/models/dashboard_version_summary.py +23 -0
- hyperfluid/models/dashboard_widget.py +52 -0
- hyperfluid/models/data_access_baseline.py +17 -0
- hyperfluid/models/data_container_overview.py +20 -0
- hyperfluid/models/data_dock.py +72 -0
- hyperfluid/models/data_dock_catalog_info.py +30 -0
- hyperfluid/models/data_dock_catalog_kind.py +36 -0
- hyperfluid/models/data_dock_external_response_data.py +40 -0
- hyperfluid/models/data_dock_internet_exposure_response.py +33 -0
- hyperfluid/models/data_dock_kind.py +18 -0
- hyperfluid/models/data_dock_kind_external_response.py +20 -0
- hyperfluid/models/data_dock_kind_external_response_trino_internal_variant.py +19 -0
- hyperfluid/models/data_dock_kind_request.py +20 -0
- hyperfluid/models/data_dock_kind_request_trino_internal_variant.py +19 -0
- hyperfluid/models/data_dock_kind_trino_internal_variant.py +19 -0
- hyperfluid/models/data_dock_resource_groups_response.py +26 -0
- hyperfluid/models/data_dock_search_request.py +43 -0
- hyperfluid/models/data_dock_search_response.py +21 -0
- hyperfluid/models/data_dock_search_result_item.py +21 -0
- hyperfluid/models/data_dock_security_settings_response.py +45 -0
- hyperfluid/models/data_dock_status.py +21 -0
- hyperfluid/models/data_dock_type.py +16 -0
- hyperfluid/models/data_verb.py +32 -0
- hyperfluid/models/data_verb_decision.py +22 -0
- hyperfluid/models/declared_link.py +26 -0
- hyperfluid/models/declared_network.py +29 -0
- hyperfluid/models/deduping_strategy.py +21 -0
- hyperfluid/models/delete_directory_response.py +14 -0
- hyperfluid/models/delete_prefix_result.py +28 -0
- hyperfluid/models/delete_preview_downstream.py +23 -0
- hyperfluid/models/delete_preview_response.py +42 -0
- hyperfluid/models/delete_warning.py +19 -0
- hyperfluid/models/destination_config.py +22 -0
- hyperfluid/models/detach_image_source_request.py +25 -0
- hyperfluid/models/dev_workstation_audit_status.py +30 -0
- hyperfluid/models/dev_workstation_egress_flows_response.py +21 -0
- hyperfluid/models/dev_workstation_egress_response.py +26 -0
- hyperfluid/models/dev_workstation_metrics.py +33 -0
- hyperfluid/models/dev_workstation_network_response.py +19 -0
- hyperfluid/models/dev_workstation_response.py +58 -0
- hyperfluid/models/dev_workstation_setup_report_response.py +36 -0
- hyperfluid/models/dev_workstation_status_response.py +23 -0
- hyperfluid/models/dev_workstation_transcript_entry.py +25 -0
- hyperfluid/models/discard_request.py +14 -0
- hyperfluid/models/domain_verification_response.py +61 -0
- hyperfluid/models/domain_verification_state_dto.py +15 -0
- hyperfluid/models/downgrade_offer.py +17 -0
- hyperfluid/models/download_service_account_response.py +50 -0
- hyperfluid/models/duplicate_dashboard_request.py +14 -0
- hyperfluid/models/dynamic_label.py +23 -0
- hyperfluid/models/dynamic_label_placeholder.py +24 -0
- hyperfluid/models/effect.py +16 -0
- hyperfluid/models/effective_data_access_response.py +28 -0
- hyperfluid/models/effective_security_settings_response.py +43 -0
- hyperfluid/models/egress_allowlist_response.py +26 -0
- hyperfluid/models/egress_destination_kind_dto.py +16 -0
- hyperfluid/models/egress_flow_summary_dto.py +32 -0
- hyperfluid/models/egress_verdict_dto.py +15 -0
- hyperfluid/models/email_auth_policy.py +19 -0
- hyperfluid/models/enable_sql_engine_request.py +53 -0
- hyperfluid/models/enable_sql_engine_response.py +29 -0
- hyperfluid/models/engine.py +16 -0
- hyperfluid/models/env_var_input.py +15 -0
- hyperfluid/models/env_var_spec_response.py +15 -0
- hyperfluid/models/environment_map_node.py +29 -0
- hyperfluid/models/environment_map_response.py +21 -0
- hyperfluid/models/execute_action_request.py +21 -0
- hyperfluid/models/execute_request.py +27 -0
- hyperfluid/models/exposed_table_ref.py +15 -0
- hyperfluid/models/exposure_mode.py +19 -0
- hyperfluid/models/faker_field_type.py +21 -0
- hyperfluid/models/faker_schema_overview.py +23 -0
- hyperfluid/models/faker_table_field_options.py +13 -0
- hyperfluid/models/faker_table_fields.py +23 -0
- hyperfluid/models/faker_table_overview.py +31 -0
- hyperfluid/models/faker_table_template.py +19 -0
- hyperfluid/models/file_content.py +31 -0
- hyperfluid/models/file_import_result.py +33 -0
- hyperfluid/models/file_mount_input.py +26 -0
- hyperfluid/models/file_mount_response.py +24 -0
- hyperfluid/models/file_mount_source_input.py +29 -0
- hyperfluid/models/file_mount_source_input_inline_variant.py +17 -0
- hyperfluid/models/file_mount_source_input_secret_manager_variant.py +17 -0
- hyperfluid/models/file_mount_source_response.py +32 -0
- hyperfluid/models/file_mount_source_response_inline_variant.py +18 -0
- hyperfluid/models/file_mount_source_response_secret_manager_variant.py +17 -0
- hyperfluid/models/file_preview.py +25 -0
- hyperfluid/models/file_sorter_destination_config.py +18 -0
- hyperfluid/models/file_sorter_routing_config.py +17 -0
- hyperfluid/models/file_sorter_source_config.py +40 -0
- hyperfluid/models/file_sorter_source_config_data_container_variant.py +21 -0
- hyperfluid/models/file_sorter_source_config_harbor_bucket_variant.py +24 -0
- hyperfluid/models/finding.py +27 -0
- hyperfluid/models/fixable_counts.py +17 -0
- hyperfluid/models/flow_direction.py +15 -0
- hyperfluid/models/flow_verdict.py +15 -0
- hyperfluid/models/forgejo_repo_entry.py +24 -0
- hyperfluid/models/forgejo_runner_response.py +57 -0
- hyperfluid/models/forgejo_runner_status_response.py +39 -0
- hyperfluid/models/g_drive_extraction_config.py +30 -0
- hyperfluid/models/g_drive_extraction_type.py +15 -0
- hyperfluid/models/g_drive_source_config.py +33 -0
- hyperfluid/models/gc_status_response.py +26 -0
- hyperfluid/models/generate_ontology_request.py +36 -0
- hyperfluid/models/get_console_config_response.py +73 -0
- hyperfluid/models/get_faker_field_types_response.py +20 -0
- hyperfluid/models/get_faker_schema_response.py +17 -0
- hyperfluid/models/get_faker_table_response.py +17 -0
- hyperfluid/models/get_faker_tables_response.py +17 -0
- hyperfluid/models/get_run_response.py +17 -0
- hyperfluid/models/git_diff.py +23 -0
- hyperfluid/models/git_file_status.py +17 -0
- hyperfluid/models/git_image_source.py +54 -0
- hyperfluid/models/git_provider.py +16 -0
- hyperfluid/models/git_ref.py +27 -0
- hyperfluid/models/git_ref_branch_variant.py +16 -0
- hyperfluid/models/git_ref_tag_variant.py +16 -0
- hyperfluid/models/git_repo_status.py +35 -0
- hyperfluid/models/github_connection_credential_dto.py +36 -0
- hyperfluid/models/github_connection_credential_dto_github_app_variant.py +31 -0
- hyperfluid/models/github_connection_credential_dto_pat_variant.py +19 -0
- hyperfluid/models/github_connection_response.py +23 -0
- hyperfluid/models/github_connection_target.py +40 -0
- hyperfluid/models/github_connection_target_kind.py +15 -0
- hyperfluid/models/github_runner_egress_mode_dto.py +16 -0
- hyperfluid/models/github_runner_pool_egress_flows_response.py +36 -0
- hyperfluid/models/github_runner_response.py +69 -0
- hyperfluid/models/github_runner_scope.py +22 -0
- hyperfluid/models/github_runner_scope_org_variant.py +18 -0
- hyperfluid/models/github_runner_scope_repo_variant.py +21 -0
- hyperfluid/models/github_runner_status_response.py +43 -0
- hyperfluid/models/gpu_availability_response.py +39 -0
- hyperfluid/models/gpu_consumer_view.py +34 -0
- hyperfluid/models/gpu_fleet_summary.py +31 -0
- hyperfluid/models/gpu_node_view.py +55 -0
- hyperfluid/models/gpu_resources_response.py +21 -0
- hyperfluid/models/grant.py +47 -0
- hyperfluid/models/group.py +28 -0
- hyperfluid/models/group_member.py +23 -0
- hyperfluid/models/harbor.py +30 -0
- hyperfluid/models/harbor_network_isolation_response.py +17 -0
- hyperfluid/models/harbor_posture.py +34 -0
- hyperfluid/models/harbor_ref.py +19 -0
- hyperfluid/models/harbor_storage_binding_view.py +54 -0
- hyperfluid/models/health_thresholds.py +23 -0
- hyperfluid/models/hf_bucket_detail.py +110 -0
- hyperfluid/models/hf_bucket_view.py +70 -0
- hyperfluid/models/hf_collumn.py +19 -0
- hyperfluid/models/hf_data_type.py +23 -0
- hyperfluid/models/hf_key_value_cache_crd_spec_response.py +23 -0
- hyperfluid/models/hf_key_value_cache_response.py +47 -0
- hyperfluid/models/hf_table.py +26 -0
- hyperfluid/models/histogram_bucket_dto.py +20 -0
- hyperfluid/models/iceberg_column_definition.py +19 -0
- hyperfluid/models/iceberg_connector_data_container.py +20 -0
- hyperfluid/models/iceberg_health_report.py +24 -0
- hyperfluid/models/iceberg_health_scan.py +35 -0
- hyperfluid/models/iceberg_health_summary.py +47 -0
- hyperfluid/models/iceberg_optimize_config.py +62 -0
- hyperfluid/models/iceberg_optimize_run.py +63 -0
- hyperfluid/models/iceberg_optimize_runs_page.py +29 -0
- hyperfluid/models/iceberg_optimize_summary.py +51 -0
- hyperfluid/models/iceberg_schema_metadata.py +46 -0
- hyperfluid/models/iceberg_table_health.py +91 -0
- hyperfluid/models/iceberg_table_metadata.py +27 -0
- hyperfluid/models/iceberg_table_response_data.py +47 -0
- hyperfluid/models/identity_provider.py +30 -0
- hyperfluid/models/identity_provider_kind.py +16 -0
- hyperfluid/models/image_posture.py +37 -0
- hyperfluid/models/image_ref.py +16 -0
- hyperfluid/models/image_scan.py +52 -0
- hyperfluid/models/image_scan_detail.py +55 -0
- hyperfluid/models/image_source.py +18 -0
- hyperfluid/models/image_source_error.py +19 -0
- hyperfluid/models/image_source_status.py +72 -0
- hyperfluid/models/image_source_syncs_page.py +21 -0
- hyperfluid/models/imap_transport_config.py +46 -0
- hyperfluid/models/import_api_extra_filter.py +17 -0
- hyperfluid/models/import_column_type.py +21 -0
- hyperfluid/models/import_file_format.py +18 -0
- hyperfluid/models/imported_column.py +23 -0
- hyperfluid/models/inbound_email_destination_config.py +35 -0
- hyperfluid/models/inbound_email_destination_config_data_container_variant.py +21 -0
- hyperfluid/models/inbound_email_destination_config_harbor_bucket_variant.py +24 -0
- hyperfluid/models/inbound_email_extraction_config.py +23 -0
- hyperfluid/models/inbound_email_security_config.py +36 -0
- hyperfluid/models/inbound_email_source_config.py +23 -0
- hyperfluid/models/inbound_email_source_config_imap_variant.py +21 -0
- hyperfluid/models/init_container_input.py +38 -0
- hyperfluid/models/init_container_response.py +26 -0
- hyperfluid/models/install_media.py +15 -0
- hyperfluid/models/instance_page.py +28 -0
- hyperfluid/models/instance_usage_dto.py +20 -0
- hyperfluid/models/intended_use.py +15 -0
- hyperfluid/models/internet_exposure_state.py +29 -0
- hyperfluid/models/invitation_identity_provider.py +17 -0
- hyperfluid/models/invitation_preview.py +28 -0
- hyperfluid/models/issue_s3_key_request.py +22 -0
- hyperfluid/models/issue_scoped_s3_key_request.py +31 -0
- hyperfluid/models/issued_s3_key.py +28 -0
- hyperfluid/models/issued_scoped_s3_key.py +37 -0
- hyperfluid/models/kafka_consumer_group.py +19 -0
- hyperfluid/models/kafka_hf_service_response.py +63 -0
- hyperfluid/models/kafka_hf_topic_response.py +39 -0
- hyperfluid/models/kafka_metadata.py +22 -0
- hyperfluid/models/kafka_topic_info.py +21 -0
- hyperfluid/models/kpi_threshold.py +17 -0
- hyperfluid/models/label.py +58 -0
- hyperfluid/models/label_type_dynamic_variant.py +21 -0
- hyperfluid/models/label_type_static_variant.py +14 -0
- hyperfluid/models/launch_nextflow_run_request_body.py +40 -0
- hyperfluid/models/link_forgejo_credential_request.py +16 -0
- hyperfluid/models/link_forgejo_credential_response.py +20 -0
- hyperfluid/models/link_type.py +40 -0
- hyperfluid/models/list_audit_log_item.py +43 -0
- hyperfluid/models/list_changelogs_response.py +18 -0
- hyperfluid/models/list_connectors_response.py +17 -0
- hyperfluid/models/list_context_providers_response.py +17 -0
- hyperfluid/models/list_contextual_restrictions_response.py +17 -0
- hyperfluid/models/list_quota_profiles_response.py +17 -0
- hyperfluid/models/list_runs_response.py +17 -0
- hyperfluid/models/list_secrets_response.py +26 -0
- hyperfluid/models/list_security_decisions_response.py +17 -0
- hyperfluid/models/list_service_accounts_response_data.py +17 -0
- hyperfluid/models/list_table_classifications_response.py +17 -0
- hyperfluid/models/list_user_attributes_response.py +14 -0
- hyperfluid/models/live_audit_log.py +24 -0
- hyperfluid/models/log_entry_dto.py +25 -0
- hyperfluid/models/log_level.py +23 -0
- hyperfluid/models/log_source_dto.py +19 -0
- hyperfluid/models/log_stream.py +16 -0
- hyperfluid/models/managed_mail_config_response.py +22 -0
- hyperfluid/models/managed_postgresql_backup_crd_response.py +31 -0
- hyperfluid/models/managed_postgresql_backup_response.py +59 -0
- hyperfluid/models/managed_postgresql_backups_page.py +23 -0
- hyperfluid/models/managed_postgresql_crd_spec_response.py +41 -0
- hyperfluid/models/managed_postgresql_import_compression.py +15 -0
- hyperfluid/models/managed_postgresql_import_condition.py +19 -0
- hyperfluid/models/managed_postgresql_import_crd_response.py +50 -0
- hyperfluid/models/managed_postgresql_import_created_log.py +43 -0
- hyperfluid/models/managed_postgresql_import_format.py +17 -0
- hyperfluid/models/managed_postgresql_import_phase.py +22 -0
- hyperfluid/models/managed_postgresql_import_response.py +73 -0
- hyperfluid/models/managed_postgresql_import_upload.py +28 -0
- hyperfluid/models/managed_postgresql_import_upload_multipart_variant.py +24 -0
- hyperfluid/models/managed_postgresql_import_upload_simple_variant.py +16 -0
- hyperfluid/models/managed_postgresql_imports_page.py +23 -0
- hyperfluid/models/managed_postgresql_response.py +95 -0
- hyperfluid/models/managed_postgresql_user_crd_spec_response.py +17 -0
- hyperfluid/models/managed_postgresql_user_response.py +40 -0
- hyperfluid/models/map_badge.py +38 -0
- hyperfluid/models/matching_tag.py +15 -0
- hyperfluid/models/medallion_tier.py +16 -0
- hyperfluid/models/message_attachment.py +25 -0
- hyperfluid/models/message_author_kind.py +19 -0
- hyperfluid/models/message_part.py +36 -0
- hyperfluid/models/message_part_file_variant.py +35 -0
- hyperfluid/models/message_part_patch_variant.py +19 -0
- hyperfluid/models/message_part_reasoning_variant.py +19 -0
- hyperfluid/models/message_part_text_variant.py +20 -0
- hyperfluid/models/message_part_tool_variant.py +38 -0
- hyperfluid/models/message_role.py +17 -0
- hyperfluid/models/metadata_storage_config.py +21 -0
- hyperfluid/models/metric_panel_dto.py +27 -0
- hyperfluid/models/metric_point_dto.py +15 -0
- hyperfluid/models/metric_series_dto.py +19 -0
- hyperfluid/models/metrics_range.py +23 -0
- hyperfluid/models/model_catalog_response.py +21 -0
- hyperfluid/models/model_config.py +31 -0
- hyperfluid/models/model_option.py +50 -0
- hyperfluid/models/model_protocol.py +30 -0
- hyperfluid/models/model_resources.py +20 -0
- hyperfluid/models/model_runtime.py +16 -0
- hyperfluid/models/model_serving_phase.py +21 -0
- hyperfluid/models/model_serving_response.py +60 -0
- hyperfluid/models/model_type.py +16 -0
- hyperfluid/models/model_usage.py +19 -0
- hyperfluid/models/model_usage_time_point.py +24 -0
- hyperfluid/models/multipart_part_url.py +15 -0
- hyperfluid/models/network_isolation_view.py +17 -0
- hyperfluid/models/nextflow_crd_response.py +40 -0
- hyperfluid/models/nextflow_crd_status_response.py +33 -0
- hyperfluid/models/nextflow_defaults_response.py +50 -0
- hyperfluid/models/nextflow_egress_request.py +20 -0
- hyperfluid/models/nextflow_head_request.py +15 -0
- hyperfluid/models/nextflow_pod_role.py +20 -0
- hyperfluid/models/nextflow_response.py +54 -0
- hyperfluid/models/nextflow_run_counts_response.py +17 -0
- hyperfluid/models/nextflow_run_detail_response.py +67 -0
- hyperfluid/models/nextflow_run_response.py +49 -0
- hyperfluid/models/nextflow_run_task_response.py +43 -0
- hyperfluid/models/nextflow_scm_platform.py +20 -0
- hyperfluid/models/nextflow_scm_request.py +26 -0
- hyperfluid/models/nextflow_storage_request.py +20 -0
- hyperfluid/models/nextflow_task_quota_request.py +18 -0
- hyperfluid/models/node_tier.py +22 -0
- hyperfluid/models/normalized_message.py +55 -0
- hyperfluid/models/notification_channel_dto.py +36 -0
- hyperfluid/models/object_delete_failure.py +18 -0
- hyperfluid/models/object_instance.py +24 -0
- hyperfluid/models/object_storage_owner_key_revealed_log.py +28 -0
- hyperfluid/models/object_storage_usage_collected_log.py +34 -0
- hyperfluid/models/object_type.py +51 -0
- hyperfluid/models/object_type_with_properties.py +21 -0
- hyperfluid/models/observed_flow.py +30 -0
- hyperfluid/models/observed_flows.py +25 -0
- hyperfluid/models/oci_registry_auth.py +17 -0
- hyperfluid/models/oci_registry_config_value.py +17 -0
- hyperfluid/models/ocr_provider_config.py +22 -0
- hyperfluid/models/ocr_provider_config_local_variant.py +29 -0
- hyperfluid/models/ocr_provider_config_mistral_variant.py +14 -0
- hyperfluid/models/ontology_proposal.py +24 -0
- hyperfluid/models/opa_decision_log.py +50 -0
- hyperfluid/models/open_data_catalog_response.py +17 -0
- hyperfluid/models/open_data_column_response.py +17 -0
- hyperfluid/models/open_data_dataset_response.py +35 -0
- hyperfluid/models/open_data_source_config.py +14 -0
- hyperfluid/models/org.py +36 -0
- hyperfluid/models/org_feature.py +49 -0
- hyperfluid/models/org_feature_state.py +19 -0
- hyperfluid/models/org_features_response.py +17 -0
- hyperfluid/models/org_posture.py +40 -0
- hyperfluid/models/org_ref.py +16 -0
- hyperfluid/models/org_rescan_request_body.py +29 -0
- hyperfluid/models/org_security_policies_response.py +17 -0
- hyperfluid/models/org_security_policy_state.py +20 -0
- hyperfluid/models/org_security_settings_response.py +27 -0
- hyperfluid/models/org_storage_view.py +52 -0
- hyperfluid/models/org_user_attributes_response.py +18 -0
- hyperfluid/models/org_workload_scan_settings_response.py +17 -0
- hyperfluid/models/organization_invitation.py +37 -0
- hyperfluid/models/organization_overview_response.py +48 -0
- hyperfluid/models/organization_policy.py +42 -0
- hyperfluid/models/organization_quota_response.py +23 -0
- hyperfluid/models/organization_workload_view.py +40 -0
- hyperfluid/models/panel_kind.py +15 -0
- hyperfluid/models/partition_input.py +35 -0
- hyperfluid/models/patch_airflow_connection_request.py +36 -0
- hyperfluid/models/patch_airflow_crd_request_body.py +44 -0
- hyperfluid/models/patch_app_instance_request_body.py +18 -0
- hyperfluid/models/patch_backup_target_crd_request_body.py +26 -0
- hyperfluid/models/patch_compute_dock_crd_request_body.py +43 -0
- hyperfluid/models/patch_compute_dock_crd_response.py +21 -0
- hyperfluid/models/patch_container_app_crd_request_body.py +153 -0
- hyperfluid/models/patch_container_app_request_body.py +25 -0
- hyperfluid/models/patch_harbor_storage_binding_request.py +15 -0
- hyperfluid/models/patch_hf_bucket_request.py +23 -0
- hyperfluid/models/patch_hf_key_value_cache_crd_request_body.py +32 -0
- hyperfluid/models/patch_managed_postgresql_crd_request_body.py +44 -0
- hyperfluid/models/patch_managed_postgresql_user_crd_request_body.py +23 -0
- hyperfluid/models/patch_model_serving_request.py +22 -0
- hyperfluid/models/patch_nextflow_crd_request_body.py +73 -0
- hyperfluid/models/patch_org_storage_request.py +24 -0
- hyperfluid/models/patch_virtual_machine_crd_request_body.py +24 -0
- hyperfluid/models/pending_permission.py +32 -0
- hyperfluid/models/pending_question.py +36 -0
- hyperfluid/models/permission_action.py +18 -0
- hyperfluid/models/permission_catalog_entry.py +23 -0
- hyperfluid/models/permission_key.py +398 -0
- hyperfluid/models/permission_level.py +15 -0
- hyperfluid/models/permission_policy_view.py +27 -0
- hyperfluid/models/permission_reply.py +19 -0
- hyperfluid/models/permission_reply_request.py +20 -0
- hyperfluid/models/persistence_access.py +16 -0
- hyperfluid/models/persistence_input.py +36 -0
- hyperfluid/models/persistence_response.py +25 -0
- hyperfluid/models/pipeline_detail_field.py +26 -0
- hyperfluid/models/pipeline_detail_group.py +34 -0
- hyperfluid/models/pipeline_detail_response.py +42 -0
- hyperfluid/models/pipeline_field_reference.py +44 -0
- hyperfluid/models/pipeline_field_reference_bucket_variant.py +16 -0
- hyperfluid/models/pipeline_field_reference_credential_variant.py +28 -0
- hyperfluid/models/pipeline_field_reference_shared_model_variant.py +16 -0
- hyperfluid/models/pipeline_field_reference_table_variant.py +21 -0
- hyperfluid/models/pipeline_metadata.py +49 -0
- hyperfluid/models/pipeline_response_data.py +36 -0
- hyperfluid/models/pipeline_run.py +62 -0
- hyperfluid/models/pipeline_run_status.py +19 -0
- hyperfluid/models/pipeline_stats.py +21 -0
- hyperfluid/models/pipeline_status_filter.py +17 -0
- hyperfluid/models/pipeline_type.py +40 -0
- hyperfluid/models/pipeline_type_count.py +17 -0
- hyperfluid/models/pipelines_page.py +30 -0
- hyperfluid/models/pipelines_stats.py +36 -0
- hyperfluid/models/pitr_request.py +38 -0
- hyperfluid/models/platform.py +17 -0
- hyperfluid/models/platform_admin_action_log.py +23 -0
- hyperfluid/models/policy_preset.py +23 -0
- hyperfluid/models/port_protocol.py +16 -0
- hyperfluid/models/post_message_request.py +32 -0
- hyperfluid/models/postgresql_connector_detail.py +33 -0
- hyperfluid/models/pr_checks.py +17 -0
- hyperfluid/models/pr_request.py +15 -0
- hyperfluid/models/pr_response.py +27 -0
- hyperfluid/models/pr_summary.py +35 -0
- hyperfluid/models/prepare_archive_import_request.py +23 -0
- hyperfluid/models/prepare_archive_import_response.py +26 -0
- hyperfluid/models/prepare_archive_import_response_multipart_variant.py +29 -0
- hyperfluid/models/prepare_archive_import_response_simple_variant.py +18 -0
- hyperfluid/models/prepare_managed_postgresql_import_upload_request_body.py +22 -0
- hyperfluid/models/prepare_managed_postgresql_import_upload_response.py +29 -0
- hyperfluid/models/preview_image_source_request.py +21 -0
- hyperfluid/models/preview_image_source_response.py +36 -0
- hyperfluid/models/preview_port.py +23 -0
- hyperfluid/models/preview_ports_response.py +22 -0
- hyperfluid/models/preview_posture.py +21 -0
- hyperfluid/models/principal_usage.py +29 -0
- hyperfluid/models/principal_usage_time_point.py +30 -0
- hyperfluid/models/property_definition.py +39 -0
- hyperfluid/models/proposed_link_type.py +32 -0
- hyperfluid/models/proposed_object_type.py +30 -0
- hyperfluid/models/proposed_property.py +28 -0
- hyperfluid/models/public_signup_page_copy.py +23 -0
- hyperfluid/models/query_history_entry.py +91 -0
- hyperfluid/models/query_history_page.py +24 -0
- hyperfluid/models/query_result.py +30 -0
- hyperfluid/models/query_result_column.py +15 -0
- hyperfluid/models/query_run.py +30 -0
- hyperfluid/models/query_run_error.py +16 -0
- hyperfluid/models/query_run_status.py +16 -0
- hyperfluid/models/question_info.py +31 -0
- hyperfluid/models/question_option.py +17 -0
- hyperfluid/models/question_reply_request.py +16 -0
- hyperfluid/models/quota_capacity_dimension.py +24 -0
- hyperfluid/models/quota_profile_response.py +61 -0
- hyperfluid/models/quota_resource_type.py +34 -0
- hyperfluid/models/quota_status.py +16 -0
- hyperfluid/models/quota_usage_item_response.py +27 -0
- hyperfluid/models/ref.py +49 -0
- hyperfluid/models/ref_status.py +17 -0
- hyperfluid/models/refresh_credentials_summary.py +23 -0
- hyperfluid/models/refresh_data_docks_response.py +17 -0
- hyperfluid/models/refusal_reason.py +32 -0
- hyperfluid/models/register_invitation_request.py +17 -0
- hyperfluid/models/registry_project_response.py +25 -0
- hyperfluid/models/registry_project_usage_response.py +25 -0
- hyperfluid/models/registry_response.py +51 -0
- hyperfluid/models/registry_usage_response.py +47 -0
- hyperfluid/models/rename_terminal_request.py +15 -0
- hyperfluid/models/requested_size.py +17 -0
- hyperfluid/models/requester_kind.py +21 -0
- hyperfluid/models/rescan_response.py +13 -0
- hyperfluid/models/rescan_scope.py +17 -0
- hyperfluid/models/resolve_failure_reason.py +34 -0
- hyperfluid/models/resolved_grant.py +32 -0
- hyperfluid/models/resolved_image.py +25 -0
- hyperfluid/models/resource_denial_count.py +15 -0
- hyperfluid/models/resource_family.py +18 -0
- hyperfluid/models/resource_kind.py +42 -0
- hyperfluid/models/resource_logs_response.py +49 -0
- hyperfluid/models/resource_metrics_response.py +29 -0
- hyperfluid/models/resource_mode.py +32 -0
- hyperfluid/models/resource_origin.py +19 -0
- hyperfluid/models/resource_overview_response.py +24 -0
- hyperfluid/models/resource_requirements_spec.py +24 -0
- hyperfluid/models/resource_source.py +19 -0
- hyperfluid/models/resource_spec.py +17 -0
- hyperfluid/models/resource_tier.py +46 -0
- hyperfluid/models/resource_tier_catalog_entry.py +38 -0
- hyperfluid/models/resource_tier_catalog_response.py +17 -0
- hyperfluid/models/restart_row.py +40 -0
- hyperfluid/models/restore_from_backup.py +43 -0
- hyperfluid/models/restriction_evaluation_result.py +25 -0
- hyperfluid/models/results_page.py +18 -0
- hyperfluid/models/revoked_s3_key.py +24 -0
- hyperfluid/models/rightsizing_direction.py +16 -0
- hyperfluid/models/rightsizing_suggestion_response.py +51 -0
- hyperfluid/models/role.py +29 -0
- hyperfluid/models/runner_flavor_catalog_entry.py +20 -0
- hyperfluid/models/runner_flavor_catalog_response.py +23 -0
- hyperfluid/models/runner_flavor_dto.py +48 -0
- hyperfluid/models/runner_flavor_dto_c2_variant.py +14 -0
- hyperfluid/models/runner_flavor_dto_c3_variant.py +14 -0
- hyperfluid/models/runner_flavor_dto_c4_variant.py +14 -0
- hyperfluid/models/runner_flavor_dto_c8_variant.py +14 -0
- hyperfluid/models/runner_flavor_dto_custom_variant.py +27 -0
- hyperfluid/models/runner_flavor_dto_l_variant.py +14 -0
- hyperfluid/models/runner_flavor_dto_m_variant.py +14 -0
- hyperfluid/models/runner_flavor_dto_s_variant.py +14 -0
- hyperfluid/models/runner_flavor_dto_xl_variant.py +14 -0
- hyperfluid/models/runner_flavor_name.py +23 -0
- hyperfluid/models/runner_resources_dto.py +23 -0
- hyperfluid/models/runtime_alert_priority.py +31 -0
- hyperfluid/models/runtime_security_alert_log.py +64 -0
- hyperfluid/models/s3_gateway_decision_log.py +53 -0
- hyperfluid/models/s3_gateway_gate_denied_log.py +40 -0
- hyperfluid/models/s3_gateway_session_issued_log.py +32 -0
- hyperfluid/models/s3_key_list_entry.py +61 -0
- hyperfluid/models/s3_session_credentials.py +30 -0
- hyperfluid/models/saved_queries_page.py +30 -0
- hyperfluid/models/saved_query.py +41 -0
- hyperfluid/models/saved_query_sort.py +22 -0
- hyperfluid/models/scan_pipeline_health.py +41 -0
- hyperfluid/models/scan_state.py +22 -0
- hyperfluid/models/scan_status.py +18 -0
- hyperfluid/models/scan_summary.py +28 -0
- hyperfluid/models/scan_trigger.py +18 -0
- hyperfluid/models/schedule_state.py +87 -0
- hyperfluid/models/scheduled_run_status.py +20 -0
- hyperfluid/models/scm_branch.py +15 -0
- hyperfluid/models/scm_repository.py +39 -0
- hyperfluid/models/scoped_bucket_request.py +17 -0
- hyperfluid/models/search_mode.py +27 -0
- hyperfluid/models/secret_manager_ref.py +20 -0
- hyperfluid/models/secret_manager_type.py +14 -0
- hyperfluid/models/secret_metadata_response.py +42 -0
- hyperfluid/models/secret_ref.py +23 -0
- hyperfluid/models/secret_ref_input.py +15 -0
- hyperfluid/models/secret_ref_spec_response.py +15 -0
- hyperfluid/models/secret_scope.py +15 -0
- hyperfluid/models/secret_type.py +19 -0
- hyperfluid/models/secret_value.py +27 -0
- hyperfluid/models/secret_value_json_variant.py +16 -0
- hyperfluid/models/secret_value_oci_registry_config_variant.py +19 -0
- hyperfluid/models/secret_value_plaintext_variant.py +16 -0
- hyperfluid/models/secret_value_response.py +19 -0
- hyperfluid/models/security_decision.py +15 -0
- hyperfluid/models/security_decision_log.py +60 -0
- hyperfluid/models/security_decision_log_response.py +41 -0
- hyperfluid/models/security_policy.py +20 -0
- hyperfluid/models/security_policy_value.py +30 -0
- hyperfluid/models/security_policy_value_bool_variant.py +16 -0
- hyperfluid/models/security_policy_value_choice_variant.py +16 -0
- hyperfluid/models/security_policy_value_string_list_variant.py +16 -0
- hyperfluid/models/security_resource_type.py +19 -0
- hyperfluid/models/security_summary_response.py +26 -0
- hyperfluid/models/sender_pattern.py +14 -0
- hyperfluid/models/sensitivity_level.py +19 -0
- hyperfluid/models/service_account.py +58 -0
- hyperfluid/models/service_account_attributes_response.py +13 -0
- hyperfluid/models/service_account_crd_config.py +37 -0
- hyperfluid/models/service_link_kind.py +35 -0
- hyperfluid/models/service_link_port.py +16 -0
- hyperfluid/models/service_link_response.py +34 -0
- hyperfluid/models/service_ref.py +20 -0
- hyperfluid/models/session_summary.py +36 -0
- hyperfluid/models/session_workspace.py +19 -0
- hyperfluid/models/session_workspace_request.py +25 -0
- hyperfluid/models/set_api_key_rate_limits_request.py +18 -0
- hyperfluid/models/set_bindings_body.py +15 -0
- hyperfluid/models/set_key_budget_body.py +27 -0
- hyperfluid/models/set_org_settings_body.py +13 -0
- hyperfluid/models/set_organization_logs_retention_request_body.py +15 -0
- hyperfluid/models/set_role_permissions_request_body.py +17 -0
- hyperfluid/models/set_service_account_attributes_request.py +15 -0
- hyperfluid/models/set_thresholds_body.py +15 -0
- hyperfluid/models/set_user_attributes_request.py +20 -0
- hyperfluid/models/setup_outcome.py +19 -0
- hyperfluid/models/sha256_hash_deduping_strategy.py +17 -0
- hyperfluid/models/share_point_source_config.py +58 -0
- hyperfluid/models/shared_model_response.py +99 -0
- hyperfluid/models/sheet_preview.py +39 -0
- hyperfluid/models/sign_compute_dock_ssh_key_request.py +15 -0
- hyperfluid/models/sign_compute_dock_ssh_key_response.py +22 -0
- hyperfluid/models/signal_bindings_dto.py +16 -0
- hyperfluid/models/signal_thresholds_dto.py +25 -0
- hyperfluid/models/skill_registry_catalog_entry.py +42 -0
- hyperfluid/models/skill_registry_ref_dto.py +23 -0
- hyperfluid/models/skill_registry_response.py +54 -0
- hyperfluid/models/skill_registry_scope_dto.py +17 -0
- hyperfluid/models/skill_response.py +31 -0
- hyperfluid/models/skipped_preview_port.py +19 -0
- hyperfluid/models/sort_dir.py +15 -0
- hyperfluid/models/source_sync_event.py +47 -0
- hyperfluid/models/source_sync_kind.py +32 -0
- hyperfluid/models/spend_budget.py +35 -0
- hyperfluid/models/spend_window.py +24 -0
- hyperfluid/models/sql_copilot_repair_context.py +20 -0
- hyperfluid/models/sql_copilot_request.py +29 -0
- hyperfluid/models/sql_copilot_response.py +29 -0
- hyperfluid/models/start_health_scan_response.py +17 -0
- hyperfluid/models/storage_zone_view.py +70 -0
- hyperfluid/models/support_ticket_event_response.py +38 -0
- hyperfluid/models/support_ticket_message_response.py +34 -0
- hyperfluid/models/support_ticket_response.py +57 -0
- hyperfluid/models/sync_image_source_request.py +15 -0
- hyperfluid/models/sync_image_source_response.py +21 -0
- hyperfluid/models/sync_policy.py +16 -0
- hyperfluid/models/table_classification_response.py +43 -0
- hyperfluid/models/table_column_response.py +15 -0
- hyperfluid/models/table_data_product_response.py +42 -0
- hyperfluid/models/table_health_finding.py +32 -0
- hyperfluid/models/table_health_finding_kind.py +18 -0
- hyperfluid/models/table_health_severity.py +24 -0
- hyperfluid/models/tag_report.py +28 -0
- hyperfluid/models/tag_response.py +52 -0
- hyperfluid/models/tags_response.py +20 -0
- hyperfluid/models/template_faker_field.py +19 -0
- hyperfluid/models/test_git_credential_request.py +24 -0
- hyperfluid/models/test_git_credential_response.py +25 -0
- hyperfluid/models/test_image_pull_failure.py +32 -0
- hyperfluid/models/test_image_pull_failure_reason.py +20 -0
- hyperfluid/models/test_image_pull_request_body.py +20 -0
- hyperfluid/models/test_image_pull_response.py +31 -0
- hyperfluid/models/test_imap_connection_request.py +45 -0
- hyperfluid/models/test_imap_connection_response.py +15 -0
- hyperfluid/models/test_oci_login_failure.py +23 -0
- hyperfluid/models/test_oci_login_failure_reason.py +16 -0
- hyperfluid/models/test_oci_login_request_body.py +18 -0
- hyperfluid/models/test_oci_login_response.py +24 -0
- hyperfluid/models/test_oci_login_verdict.py +17 -0
- hyperfluid/models/ticket_category.py +22 -0
- hyperfluid/models/ticket_priority.py +18 -0
- hyperfluid/models/ticket_status.py +25 -0
- hyperfluid/models/timeseries_metric.py +16 -0
- hyperfluid/models/tiny_query_limits_response.py +17 -0
- hyperfluid/models/tool_permission.py +20 -0
- hyperfluid/models/top_dimension.py +25 -0
- hyperfluid/models/transfer_dashboard_request.py +15 -0
- hyperfluid/models/trino_catalog.py +19 -0
- hyperfluid/models/trino_connector_descriptor_response.py +47 -0
- hyperfluid/models/trino_internal_config.py +37 -0
- hyperfluid/models/trino_internal_config_response.py +37 -0
- hyperfluid/models/trino_metadata.py +28 -0
- hyperfluid/models/trino_query_completed_log.py +85 -0
- hyperfluid/models/trino_resource_group.py +41 -0
- hyperfluid/models/trino_resource_group_selector.py +38 -0
- hyperfluid/models/trino_resource_groups.py +24 -0
- hyperfluid/models/trino_schema.py +19 -0
- hyperfluid/models/unified_catalog_response.py +35 -0
- hyperfluid/models/unit.py +32 -0
- hyperfluid/models/update_action_type_request.py +30 -0
- hyperfluid/models/update_ai_agent_request.py +59 -0
- hyperfluid/models/update_catalog_exposure_request_body.py +22 -0
- hyperfluid/models/update_context_provider_body.py +20 -0
- hyperfluid/models/update_contextual_restriction_body.py +24 -0
- hyperfluid/models/update_dashboard_request.py +40 -0
- hyperfluid/models/update_data_dock_internet_exposure_request_body.py +19 -0
- hyperfluid/models/update_data_dock_request.py +21 -0
- hyperfluid/models/update_data_dock_request_kind.py +20 -0
- hyperfluid/models/update_data_dock_request_kind_trino_internal_variant.py +19 -0
- hyperfluid/models/update_data_dock_resource_groups_request_body.py +17 -0
- hyperfluid/models/update_data_dock_security_settings_body.py +38 -0
- hyperfluid/models/update_dev_workstation_network_request.py +25 -0
- hyperfluid/models/update_dev_workstation_request.py +27 -0
- hyperfluid/models/update_faker_table_request.py +17 -0
- hyperfluid/models/update_forgejo_runner_request.py +36 -0
- hyperfluid/models/update_g_drive_pipeline_request.py +33 -0
- hyperfluid/models/update_g_drive_source_config.py +32 -0
- hyperfluid/models/update_github_connection_request.py +32 -0
- hyperfluid/models/update_github_runner_request.py +76 -0
- hyperfluid/models/update_group_request_body.py +15 -0
- hyperfluid/models/update_identity_provider_request.py +23 -0
- hyperfluid/models/update_kafka_hf_service_request.py +31 -0
- hyperfluid/models/update_kafka_hf_topic_request.py +22 -0
- hyperfluid/models/update_link_type_request.py +27 -0
- hyperfluid/models/update_object_type_request.py +38 -0
- hyperfluid/models/update_org_security_settings_body.py +19 -0
- hyperfluid/models/update_permission_policy_request.py +23 -0
- hyperfluid/models/update_pipeline_config_request.py +37 -0
- hyperfluid/models/update_pipeline_config_request_g_drive_variant.py +22 -0
- hyperfluid/models/update_pipeline_config_request_share_point_variant.py +22 -0
- hyperfluid/models/update_pipeline_request.py +24 -0
- hyperfluid/models/update_property_definition_request.py +26 -0
- hyperfluid/models/update_ref_request.py +40 -0
- hyperfluid/models/update_saved_query_request.py +47 -0
- hyperfluid/models/update_secret_request_body.py +19 -0
- hyperfluid/models/update_service_account_crd_request_body.py +24 -0
- hyperfluid/models/update_share_point_pipeline_request.py +49 -0
- hyperfluid/models/update_share_point_source_config.py +39 -0
- hyperfluid/models/update_skill_registry_request.py +23 -0
- hyperfluid/models/update_skill_request.py +20 -0
- hyperfluid/models/update_table_classification_body.py +19 -0
- hyperfluid/models/update_ticket_status_request.py +19 -0
- hyperfluid/models/update_workstation_skill_registries_request.py +20 -0
- hyperfluid/models/update_workstation_template_request.py +41 -0
- hyperfluid/models/upload_managed_postgresql_import_response.py +25 -0
- hyperfluid/models/upsert_optimize_config_request.py +40 -0
- hyperfluid/models/usage_source.py +20 -0
- hyperfluid/models/usage_summary.py +19 -0
- hyperfluid/models/user.py +23 -0
- hyperfluid/models/user_attributes_entry.py +18 -0
- hyperfluid/models/user_context_response.py +19 -0
- hyperfluid/models/user_denial_count.py +15 -0
- hyperfluid/models/user_with_roles.py +22 -0
- hyperfluid/models/value.py +6 -0
- hyperfluid/models/value_format.py +17 -0
- hyperfluid/models/verify_signup_request_body.py +13 -0
- hyperfluid/models/version_entry.py +21 -0
- hyperfluid/models/versions_response.py +17 -0
- hyperfluid/models/vetted_base_response.py +14 -0
- hyperfluid/models/virtual_machine_console_session_log.py +40 -0
- hyperfluid/models/virtual_machine_image_catalog.py +18 -0
- hyperfluid/models/virtual_machine_image_catalog_image.py +23 -0
- hyperfluid/models/virtual_machine_image_catalog_source.py +23 -0
- hyperfluid/models/virtual_machine_response.py +68 -0
- hyperfluid/models/virtual_machine_user_response.py +40 -0
- hyperfluid/models/virtual_machine_users_page.py +25 -0
- hyperfluid/models/virtual_machines_page.py +25 -0
- hyperfluid/models/vm_image_kind.py +15 -0
- hyperfluid/models/vulnerability_counts.py +22 -0
- hyperfluid/models/warning_severity.py +18 -0
- hyperfluid/models/widget_chart.py +23 -0
- hyperfluid/models/widget_health.py +21 -0
- hyperfluid/models/widget_layout.py +19 -0
- hyperfluid/models/worker_auto_scaling.py +21 -0
- hyperfluid/models/worker_auto_scaling_response.py +21 -0
- hyperfluid/models/workload_detail.py +29 -0
- hyperfluid/models/workload_kind.py +57 -0
- hyperfluid/models/workload_ref.py +29 -0
- hyperfluid/models/workload_row.py +65 -0
- hyperfluid/models/workload_scan_trigger.py +24 -0
- hyperfluid/models/workspace_mode.py +19 -0
- hyperfluid/models/workstation_agent_request_log.py +51 -0
- hyperfluid/models/workstation_file.py +19 -0
- hyperfluid/models/workstation_preview_session_log.py +33 -0
- hyperfluid/models/workstation_repository_input.py +24 -0
- hyperfluid/models/workstation_repository_response.py +28 -0
- hyperfluid/models/workstation_skill_registries_response.py +17 -0
- hyperfluid/models/workstation_template_response.py +56 -0
- hyperfluid/models/workstation_template_scope_dto.py +16 -0
- hyperfluid/models/workstation_terminal_command_log.py +55 -0
- hyperfluid/models/workstation_tool_dto.py +17 -0
- hyperfluid/models/write_file_request.py +23 -0
- hyperfluid/models/write_file_response.py +15 -0
- hyperfluid/py.typed +0 -0
- hyperfluid/serialization.py +911 -0
- hyperfluid/unions.py +102 -0
- hyperfluid-0.1.0.dist-info/METADATA +165 -0
- hyperfluid-0.1.0.dist-info/RECORD +1300 -0
- hyperfluid-0.1.0.dist-info/WHEEL +4 -0
- hyperfluid-0.1.0.dist-info/licenses/LICENSE +201 -0
|
@@ -0,0 +1,1216 @@
|
|
|
1
|
+
# this file is @generated
|
|
2
|
+
"""Git hub runners API."""
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
import builtins
|
|
7
|
+
import typing as t
|
|
8
|
+
from uuid import UUID
|
|
9
|
+
|
|
10
|
+
from .. import models as _models
|
|
11
|
+
from ..models import (
|
|
12
|
+
CreateGithubConnectionRequest,
|
|
13
|
+
CreateGithubRunnerRequest,
|
|
14
|
+
GithubConnectionCredentialDto,
|
|
15
|
+
GithubConnectionResponse,
|
|
16
|
+
GithubConnectionTarget,
|
|
17
|
+
GithubRunnerEgressModeDto,
|
|
18
|
+
GithubRunnerEgressModeDtoLiteral,
|
|
19
|
+
GithubRunnerResponse,
|
|
20
|
+
GithubRunnerScope,
|
|
21
|
+
RunnerFlavorDto,
|
|
22
|
+
UpdateGithubConnectionRequest,
|
|
23
|
+
UpdateGithubRunnerRequest,
|
|
24
|
+
)
|
|
25
|
+
from ..serialization import UNSET, Unset, to_json_value
|
|
26
|
+
from ._response import async_to_raw_response_wrapper, to_raw_response_wrapper
|
|
27
|
+
from .common import (
|
|
28
|
+
ApiBaseAsync,
|
|
29
|
+
ApiBaseSync,
|
|
30
|
+
ApiRequest,
|
|
31
|
+
Timeout,
|
|
32
|
+
decode_response,
|
|
33
|
+
encode_path_param,
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class AsyncGitHubRunners(ApiBaseAsync):
|
|
38
|
+
"""Git hub runners API, for asyncio."""
|
|
39
|
+
|
|
40
|
+
@property
|
|
41
|
+
def with_raw_response(self) -> AsyncGitHubRunnersWithRawResponse:
|
|
42
|
+
"""These methods, returning an :class:`APIResponse` with the status and headers."""
|
|
43
|
+
return AsyncGitHubRunnersWithRawResponse(self)
|
|
44
|
+
|
|
45
|
+
async def list_organization_github_connections(
|
|
46
|
+
self,
|
|
47
|
+
organization_id: UUID,
|
|
48
|
+
*,
|
|
49
|
+
extra_headers: t.Mapping[str, str] | None = None,
|
|
50
|
+
extra_query: t.Mapping[str, object] | None = None,
|
|
51
|
+
extra_body: t.Mapping[str, object] | None = None,
|
|
52
|
+
timeout: Timeout | Unset = UNSET,
|
|
53
|
+
max_retries: int | None = None,
|
|
54
|
+
) -> builtins.list[GithubConnectionResponse]:
|
|
55
|
+
"""List the org's `GithubConnection`s (metadata only, never credentials)."""
|
|
56
|
+
response = await self._request(
|
|
57
|
+
ApiRequest(
|
|
58
|
+
method="get",
|
|
59
|
+
path="/api/v1/organizations/{organization_id}/github-connections",
|
|
60
|
+
path_params={
|
|
61
|
+
"organization_id": encode_path_param(
|
|
62
|
+
"organization_id", organization_id, "simple", False
|
|
63
|
+
),
|
|
64
|
+
},
|
|
65
|
+
error_types={
|
|
66
|
+
"default": _models.ApiErrorBody,
|
|
67
|
+
},
|
|
68
|
+
extra_headers=extra_headers,
|
|
69
|
+
extra_query=extra_query,
|
|
70
|
+
extra_body=extra_body,
|
|
71
|
+
timeout=timeout,
|
|
72
|
+
max_retries=max_retries,
|
|
73
|
+
)
|
|
74
|
+
)
|
|
75
|
+
return decode_response(response, list[GithubConnectionResponse])
|
|
76
|
+
|
|
77
|
+
async def create_organization_github_connection(
|
|
78
|
+
self,
|
|
79
|
+
organization_id: UUID,
|
|
80
|
+
*,
|
|
81
|
+
credential: GithubConnectionCredentialDto,
|
|
82
|
+
name: str,
|
|
83
|
+
base_url: str | None | Unset = UNSET,
|
|
84
|
+
extra_headers: t.Mapping[str, str] | None = None,
|
|
85
|
+
extra_query: t.Mapping[str, object] | None = None,
|
|
86
|
+
extra_body: t.Mapping[str, object] | None = None,
|
|
87
|
+
timeout: Timeout | Unset = UNSET,
|
|
88
|
+
max_retries: int | None = None,
|
|
89
|
+
) -> GithubConnectionResponse:
|
|
90
|
+
"""Create a `GithubConnection`: an org-scoped user-secret holding the GitHub
|
|
91
|
+
credential (PAT or App key). Write-only — no read endpoint ever returns it.
|
|
92
|
+
|
|
93
|
+
## The credential is proved against GitHub before it is stored
|
|
94
|
+
A credential is only worth storing if GitHub accepts it, and the cost of
|
|
95
|
+
finding out later is high: an unusable credential is accepted silently
|
|
96
|
+
today, and the first symptom is a pool that never comes online, with the
|
|
97
|
+
real reason buried in an ARC listener log the user cannot see. So the
|
|
98
|
+
connection is used, once, before anything is written — and if GitHub
|
|
99
|
+
refuses it, the 400 carries GitHub's own sentence ("Bad credentials",
|
|
100
|
+
"Integration not found", …).
|
|
101
|
+
|
|
102
|
+
The same round trip is what makes `installation_id` optional for the App
|
|
103
|
+
case: `GET /app/installations` answers it. See [`resolve_app_installation`].
|
|
104
|
+
|
|
105
|
+
:param base_url: GitHub base URL. Defaults to `https://github.com`; set for GHES.
|
|
106
|
+
:param name: Connection name — a DNS-1123-style label (lowercase alphanumerics and hyphens), unique per organization."""
|
|
107
|
+
response = await self._request(
|
|
108
|
+
ApiRequest(
|
|
109
|
+
method="post",
|
|
110
|
+
path="/api/v1/organizations/{organization_id}/github-connections",
|
|
111
|
+
path_params={
|
|
112
|
+
"organization_id": encode_path_param(
|
|
113
|
+
"organization_id", organization_id, "simple", False
|
|
114
|
+
),
|
|
115
|
+
},
|
|
116
|
+
json_body=to_json_value(
|
|
117
|
+
CreateGithubConnectionRequest(
|
|
118
|
+
base_url=base_url,
|
|
119
|
+
credential=credential,
|
|
120
|
+
name=name,
|
|
121
|
+
),
|
|
122
|
+
CreateGithubConnectionRequest,
|
|
123
|
+
),
|
|
124
|
+
error_types={
|
|
125
|
+
"default": _models.ApiErrorBody,
|
|
126
|
+
},
|
|
127
|
+
extra_headers=extra_headers,
|
|
128
|
+
extra_query=extra_query,
|
|
129
|
+
extra_body=extra_body,
|
|
130
|
+
timeout=timeout,
|
|
131
|
+
max_retries=max_retries,
|
|
132
|
+
)
|
|
133
|
+
)
|
|
134
|
+
return decode_response(response, GithubConnectionResponse)
|
|
135
|
+
|
|
136
|
+
async def update_organization_github_connection(
|
|
137
|
+
self,
|
|
138
|
+
organization_id: UUID,
|
|
139
|
+
name: str,
|
|
140
|
+
*,
|
|
141
|
+
credential: GithubConnectionCredentialDto,
|
|
142
|
+
base_url: str | None | Unset = UNSET,
|
|
143
|
+
extra_headers: t.Mapping[str, str] | None = None,
|
|
144
|
+
extra_query: t.Mapping[str, object] | None = None,
|
|
145
|
+
extra_body: t.Mapping[str, object] | None = None,
|
|
146
|
+
timeout: Timeout | Unset = UNSET,
|
|
147
|
+
max_retries: int | None = None,
|
|
148
|
+
) -> GithubConnectionResponse:
|
|
149
|
+
"""Update a `GithubConnection` in place: rotate the stored credential, and
|
|
150
|
+
optionally move the connection to a different GitHub host.
|
|
151
|
+
|
|
152
|
+
## Why the credential is always required
|
|
153
|
+
The stored credential is write-only — no endpoint hands one back — so there
|
|
154
|
+
is nothing here to partially edit. Requiring it also means every update
|
|
155
|
+
re-proves a working credential against the *effective* host before anything
|
|
156
|
+
is overwritten, which is what makes the failure mode "GitHub refused this,
|
|
157
|
+
nothing changed" instead of "your pools stop renewing their registration
|
|
158
|
+
token an hour from now".
|
|
159
|
+
|
|
160
|
+
The name is not editable: it is what every pool's `connection_secret_name`
|
|
161
|
+
resolves through, and renaming it would orphan them. Rename = create the new
|
|
162
|
+
one, move the pools, delete the old one.
|
|
163
|
+
|
|
164
|
+
## Propagation
|
|
165
|
+
The operator re-projects each pool's `githubConfigSecret` from this secret
|
|
166
|
+
on every reconcile, so a rotation reaches running pools on their next tick
|
|
167
|
+
(~2 minutes for a healthy pool) with no pool edit and no restart.
|
|
168
|
+
|
|
169
|
+
:param base_url: GitHub base URL. Absent keeps the stored host; changing it is refused while any runner pool still registers against the old one."""
|
|
170
|
+
response = await self._request(
|
|
171
|
+
ApiRequest(
|
|
172
|
+
method="put",
|
|
173
|
+
path="/api/v1/organizations/{organization_id}/github-connections/{name}",
|
|
174
|
+
path_params={
|
|
175
|
+
"organization_id": encode_path_param(
|
|
176
|
+
"organization_id", organization_id, "simple", False
|
|
177
|
+
),
|
|
178
|
+
"name": name,
|
|
179
|
+
},
|
|
180
|
+
json_body=to_json_value(
|
|
181
|
+
UpdateGithubConnectionRequest(
|
|
182
|
+
base_url=base_url,
|
|
183
|
+
credential=credential,
|
|
184
|
+
),
|
|
185
|
+
UpdateGithubConnectionRequest,
|
|
186
|
+
),
|
|
187
|
+
error_types={
|
|
188
|
+
"default": _models.ApiErrorBody,
|
|
189
|
+
},
|
|
190
|
+
extra_headers=extra_headers,
|
|
191
|
+
extra_query=extra_query,
|
|
192
|
+
extra_body=extra_body,
|
|
193
|
+
timeout=timeout,
|
|
194
|
+
max_retries=max_retries,
|
|
195
|
+
)
|
|
196
|
+
)
|
|
197
|
+
return decode_response(response, GithubConnectionResponse)
|
|
198
|
+
|
|
199
|
+
async def delete_organization_github_connection(
|
|
200
|
+
self,
|
|
201
|
+
organization_id: UUID,
|
|
202
|
+
name: str,
|
|
203
|
+
*,
|
|
204
|
+
extra_headers: t.Mapping[str, str] | None = None,
|
|
205
|
+
extra_query: t.Mapping[str, object] | None = None,
|
|
206
|
+
extra_body: t.Mapping[str, object] | None = None,
|
|
207
|
+
timeout: Timeout | Unset = UNSET,
|
|
208
|
+
max_retries: int | None = None,
|
|
209
|
+
) -> None:
|
|
210
|
+
"""Delete a `GithubConnection` by name.
|
|
211
|
+
|
|
212
|
+
Refuses while any pool still references it (409): a pool whose connection
|
|
213
|
+
disappeared keeps its already-projected `githubConfigSecret` and then starts
|
|
214
|
+
failing token refreshes with no local signal — delete the pools first."""
|
|
215
|
+
await self._request(
|
|
216
|
+
ApiRequest(
|
|
217
|
+
method="delete",
|
|
218
|
+
path="/api/v1/organizations/{organization_id}/github-connections/{name}",
|
|
219
|
+
path_params={
|
|
220
|
+
"organization_id": encode_path_param(
|
|
221
|
+
"organization_id", organization_id, "simple", False
|
|
222
|
+
),
|
|
223
|
+
"name": name,
|
|
224
|
+
},
|
|
225
|
+
error_types={
|
|
226
|
+
"default": _models.ApiErrorBody,
|
|
227
|
+
},
|
|
228
|
+
extra_headers=extra_headers,
|
|
229
|
+
extra_query=extra_query,
|
|
230
|
+
extra_body=extra_body,
|
|
231
|
+
timeout=timeout,
|
|
232
|
+
max_retries=max_retries,
|
|
233
|
+
)
|
|
234
|
+
)
|
|
235
|
+
|
|
236
|
+
async def list_organization_github_connection_targets(
|
|
237
|
+
self,
|
|
238
|
+
organization_id: UUID,
|
|
239
|
+
name: str,
|
|
240
|
+
*,
|
|
241
|
+
extra_headers: t.Mapping[str, str] | None = None,
|
|
242
|
+
extra_query: t.Mapping[str, object] | None = None,
|
|
243
|
+
extra_body: t.Mapping[str, object] | None = None,
|
|
244
|
+
timeout: Timeout | Unset = UNSET,
|
|
245
|
+
max_retries: int | None = None,
|
|
246
|
+
) -> builtins.list[GithubConnectionTarget]:
|
|
247
|
+
"""List every org/user a stored connection can register a runner pool on.
|
|
248
|
+
|
|
249
|
+
This is what makes the pool-create form fill itself in: the response carries
|
|
250
|
+
the organization login (the value `scope` needs) and, for a GitHub App, the
|
|
251
|
+
installation id — the number users were previously copying out of the tail
|
|
252
|
+
of a GitHub settings URL.
|
|
253
|
+
|
|
254
|
+
For an App connection the result is filtered to the installation the
|
|
255
|
+
connection is pinned to. Offering the App's other installations would be
|
|
256
|
+
offering pools that cannot work: ARC authenticates with one installation id,
|
|
257
|
+
and a pool registered on a different org than that installation covers fails
|
|
258
|
+
at listener startup. An empty result for an App connection therefore means
|
|
259
|
+
the installation was removed on GitHub's side — which is itself the signal
|
|
260
|
+
the user needs.
|
|
261
|
+
|
|
262
|
+
Requires `secret:read` on the backing secret in addition to
|
|
263
|
+
`forgejo_runner:read`: nothing is returned *from* the credential, but the
|
|
264
|
+
credential is used to act as the organization on GitHub, and an org that
|
|
265
|
+
denies `secret:read` to a role must not have that role drive it."""
|
|
266
|
+
response = await self._request(
|
|
267
|
+
ApiRequest(
|
|
268
|
+
method="get",
|
|
269
|
+
path="/api/v1/organizations/{organization_id}/github-connections/{name}/targets",
|
|
270
|
+
path_params={
|
|
271
|
+
"organization_id": encode_path_param(
|
|
272
|
+
"organization_id", organization_id, "simple", False
|
|
273
|
+
),
|
|
274
|
+
"name": name,
|
|
275
|
+
},
|
|
276
|
+
error_types={
|
|
277
|
+
"default": _models.ApiErrorBody,
|
|
278
|
+
},
|
|
279
|
+
extra_headers=extra_headers,
|
|
280
|
+
extra_query=extra_query,
|
|
281
|
+
extra_body=extra_body,
|
|
282
|
+
timeout=timeout,
|
|
283
|
+
max_retries=max_retries,
|
|
284
|
+
)
|
|
285
|
+
)
|
|
286
|
+
return decode_response(response, list[GithubConnectionTarget])
|
|
287
|
+
|
|
288
|
+
async def list(
|
|
289
|
+
self,
|
|
290
|
+
organization_id: UUID,
|
|
291
|
+
harbor_id: UUID,
|
|
292
|
+
*,
|
|
293
|
+
extra_headers: t.Mapping[str, str] | None = None,
|
|
294
|
+
extra_query: t.Mapping[str, object] | None = None,
|
|
295
|
+
extra_body: t.Mapping[str, object] | None = None,
|
|
296
|
+
timeout: Timeout | Unset = UNSET,
|
|
297
|
+
max_retries: int | None = None,
|
|
298
|
+
) -> builtins.list[GithubRunnerResponse]:
|
|
299
|
+
"""List all `GithubRunner` pool CRs for the harbor."""
|
|
300
|
+
response = await self._request(
|
|
301
|
+
ApiRequest(
|
|
302
|
+
method="get",
|
|
303
|
+
path="/api/v1/organizations/{organization_id}/harbors/{harbor_id}/github-runners",
|
|
304
|
+
path_params={
|
|
305
|
+
"organization_id": encode_path_param(
|
|
306
|
+
"organization_id", organization_id, "simple", False
|
|
307
|
+
),
|
|
308
|
+
"harbor_id": encode_path_param(
|
|
309
|
+
"harbor_id", harbor_id, "simple", False
|
|
310
|
+
),
|
|
311
|
+
},
|
|
312
|
+
error_types={
|
|
313
|
+
"default": _models.ApiErrorBody,
|
|
314
|
+
},
|
|
315
|
+
extra_headers=extra_headers,
|
|
316
|
+
extra_query=extra_query,
|
|
317
|
+
extra_body=extra_body,
|
|
318
|
+
timeout=timeout,
|
|
319
|
+
max_retries=max_retries,
|
|
320
|
+
)
|
|
321
|
+
)
|
|
322
|
+
return decode_response(response, list[GithubRunnerResponse])
|
|
323
|
+
|
|
324
|
+
async def create(
|
|
325
|
+
self,
|
|
326
|
+
organization_id: UUID,
|
|
327
|
+
harbor_id: UUID,
|
|
328
|
+
*,
|
|
329
|
+
connection: str,
|
|
330
|
+
name: str,
|
|
331
|
+
scope: GithubRunnerScope,
|
|
332
|
+
egress_mode: GithubRunnerEgressModeDto
|
|
333
|
+
| GithubRunnerEgressModeDtoLiteral
|
|
334
|
+
| None
|
|
335
|
+
| Unset = UNSET,
|
|
336
|
+
extra_egress_fqdns: builtins.list[str] | None | Unset = UNSET,
|
|
337
|
+
flavor: RunnerFlavorDto | None | Unset = UNSET,
|
|
338
|
+
max_runners: int | None | Unset = UNSET,
|
|
339
|
+
min_runners: int | None | Unset = UNSET,
|
|
340
|
+
runner_group: str | None | Unset = UNSET,
|
|
341
|
+
runner_image: str | None | Unset = UNSET,
|
|
342
|
+
runs_on: str | None | Unset = UNSET,
|
|
343
|
+
extra_headers: t.Mapping[str, str] | None = None,
|
|
344
|
+
extra_query: t.Mapping[str, object] | None = None,
|
|
345
|
+
extra_body: t.Mapping[str, object] | None = None,
|
|
346
|
+
timeout: Timeout | Unset = UNSET,
|
|
347
|
+
max_retries: int | None = None,
|
|
348
|
+
) -> GithubRunnerResponse:
|
|
349
|
+
"""Create a `GithubRunner` pool CR for this harbor.
|
|
350
|
+
|
|
351
|
+
Validates that the referenced `GithubConnection` exists before creating the
|
|
352
|
+
CR (fail fast in the UI rather than at reconcile time). Returns 201; 409 if
|
|
353
|
+
a pool with that name already exists.
|
|
354
|
+
|
|
355
|
+
:param connection: Name of the `GithubConnection` holding the credential (as returned by the connections API — the leaf name, not the full secret path).
|
|
356
|
+
:param extra_egress_fqdns: Extra destinations the pool's network policy allows egress to, beyond the built-in GitHub Actions preset. `host` opens 443/TCP; `host:port` opens that port instead (`deb.debian.org:80`, `registry.corp.example:5000`).
|
|
357
|
+
:param max_runners: Ceiling on concurrent runners. Defaults to 3.
|
|
358
|
+
:param min_runners: Warm runners kept idle. Defaults to 0 (scale-to-zero).
|
|
359
|
+
:param name: Pool name — must be a valid DNS-1123 label, at most 45 characters (GitHub's runner scale-set name limit). The value workflows put in `runs-on:` is the registered scale-set name the operator derives from it and reports back as `status.runner_scale_set_name`.
|
|
360
|
+
:param runner_group: GitHub runner group (org scope only). Defaults to GitHub's default group.
|
|
361
|
+
:param runner_image: Runner container image override. Defaults to the platform-pinned `ghcr.io/actions/actions-runner` release.
|
|
362
|
+
:param runs_on: The name this pool registers under with GitHub — **the value workflows put in `runs-on:`**, and the only thing GitHub schedules a job on for a runner scale set. Absent (or empty) keeps the name Hyperfluid derives, `<name>-<digest>`, which is unique across the GitHub org by construction. Setting it trades that for a name you choose (`ubuntu-latest`, `hyperfluid-linux-l`, …); the request is rejected with a 409 if another pool on the same GitHub target and runner group already claims it."""
|
|
363
|
+
response = await self._request(
|
|
364
|
+
ApiRequest(
|
|
365
|
+
method="post",
|
|
366
|
+
path="/api/v1/organizations/{organization_id}/harbors/{harbor_id}/github-runners",
|
|
367
|
+
path_params={
|
|
368
|
+
"organization_id": encode_path_param(
|
|
369
|
+
"organization_id", organization_id, "simple", False
|
|
370
|
+
),
|
|
371
|
+
"harbor_id": encode_path_param(
|
|
372
|
+
"harbor_id", harbor_id, "simple", False
|
|
373
|
+
),
|
|
374
|
+
},
|
|
375
|
+
json_body=to_json_value(
|
|
376
|
+
CreateGithubRunnerRequest(
|
|
377
|
+
connection=connection,
|
|
378
|
+
egress_mode=t.cast(
|
|
379
|
+
"GithubRunnerEgressModeDto | None | Unset", egress_mode
|
|
380
|
+
),
|
|
381
|
+
extra_egress_fqdns=extra_egress_fqdns,
|
|
382
|
+
flavor=flavor,
|
|
383
|
+
max_runners=max_runners,
|
|
384
|
+
min_runners=min_runners,
|
|
385
|
+
name=name,
|
|
386
|
+
runner_group=runner_group,
|
|
387
|
+
runner_image=runner_image,
|
|
388
|
+
runs_on=runs_on,
|
|
389
|
+
scope=scope,
|
|
390
|
+
),
|
|
391
|
+
CreateGithubRunnerRequest,
|
|
392
|
+
),
|
|
393
|
+
error_types={
|
|
394
|
+
"default": _models.ApiErrorBody,
|
|
395
|
+
},
|
|
396
|
+
extra_headers=extra_headers,
|
|
397
|
+
extra_query=extra_query,
|
|
398
|
+
extra_body=extra_body,
|
|
399
|
+
timeout=timeout,
|
|
400
|
+
max_retries=max_retries,
|
|
401
|
+
)
|
|
402
|
+
)
|
|
403
|
+
return decode_response(response, GithubRunnerResponse)
|
|
404
|
+
|
|
405
|
+
async def retrieve(
|
|
406
|
+
self,
|
|
407
|
+
organization_id: UUID,
|
|
408
|
+
harbor_id: UUID,
|
|
409
|
+
name: str,
|
|
410
|
+
*,
|
|
411
|
+
extra_headers: t.Mapping[str, str] | None = None,
|
|
412
|
+
extra_query: t.Mapping[str, object] | None = None,
|
|
413
|
+
extra_body: t.Mapping[str, object] | None = None,
|
|
414
|
+
timeout: Timeout | Unset = UNSET,
|
|
415
|
+
max_retries: int | None = None,
|
|
416
|
+
) -> GithubRunnerResponse:
|
|
417
|
+
"""Get a single `GithubRunner` pool CR by name (status polling)."""
|
|
418
|
+
response = await self._request(
|
|
419
|
+
ApiRequest(
|
|
420
|
+
method="get",
|
|
421
|
+
path="/api/v1/organizations/{organization_id}/harbors/{harbor_id}/github-runners/{name}",
|
|
422
|
+
path_params={
|
|
423
|
+
"organization_id": encode_path_param(
|
|
424
|
+
"organization_id", organization_id, "simple", False
|
|
425
|
+
),
|
|
426
|
+
"harbor_id": encode_path_param(
|
|
427
|
+
"harbor_id", harbor_id, "simple", False
|
|
428
|
+
),
|
|
429
|
+
"name": name,
|
|
430
|
+
},
|
|
431
|
+
error_types={
|
|
432
|
+
"default": _models.ApiErrorBody,
|
|
433
|
+
},
|
|
434
|
+
extra_headers=extra_headers,
|
|
435
|
+
extra_query=extra_query,
|
|
436
|
+
extra_body=extra_body,
|
|
437
|
+
timeout=timeout,
|
|
438
|
+
max_retries=max_retries,
|
|
439
|
+
)
|
|
440
|
+
)
|
|
441
|
+
return decode_response(response, GithubRunnerResponse)
|
|
442
|
+
|
|
443
|
+
async def delete(
|
|
444
|
+
self,
|
|
445
|
+
organization_id: UUID,
|
|
446
|
+
harbor_id: UUID,
|
|
447
|
+
name: str,
|
|
448
|
+
*,
|
|
449
|
+
extra_headers: t.Mapping[str, str] | None = None,
|
|
450
|
+
extra_query: t.Mapping[str, object] | None = None,
|
|
451
|
+
extra_body: t.Mapping[str, object] | None = None,
|
|
452
|
+
timeout: Timeout | Unset = UNSET,
|
|
453
|
+
max_retries: int | None = None,
|
|
454
|
+
) -> None:
|
|
455
|
+
"""Delete a `GithubRunner` pool CR by name.
|
|
456
|
+
|
|
457
|
+
Idempotent: 204 even when already absent. The operator's finalizer tears
|
|
458
|
+
down the `AutoscalingRunnerSet` (ARC deregisters the scale set from
|
|
459
|
+
GitHub), the config secret, and the network policy via ownerReference GC.
|
|
460
|
+
|
|
461
|
+
The 204 is held until the CR is observed gone (bounded — see
|
|
462
|
+
[`DELETE_SETTLE_BUDGET`]). `Api::delete` only *marks* a finalized object,
|
|
463
|
+
so returning on its acknowledgement made the client's post-delete refetch
|
|
464
|
+
race the finalizer and re-render the pool it had just deleted."""
|
|
465
|
+
await self._request(
|
|
466
|
+
ApiRequest(
|
|
467
|
+
method="delete",
|
|
468
|
+
path="/api/v1/organizations/{organization_id}/harbors/{harbor_id}/github-runners/{name}",
|
|
469
|
+
path_params={
|
|
470
|
+
"organization_id": encode_path_param(
|
|
471
|
+
"organization_id", organization_id, "simple", False
|
|
472
|
+
),
|
|
473
|
+
"harbor_id": encode_path_param(
|
|
474
|
+
"harbor_id", harbor_id, "simple", False
|
|
475
|
+
),
|
|
476
|
+
"name": name,
|
|
477
|
+
},
|
|
478
|
+
error_types={
|
|
479
|
+
"default": _models.ApiErrorBody,
|
|
480
|
+
},
|
|
481
|
+
extra_headers=extra_headers,
|
|
482
|
+
extra_query=extra_query,
|
|
483
|
+
extra_body=extra_body,
|
|
484
|
+
timeout=timeout,
|
|
485
|
+
max_retries=max_retries,
|
|
486
|
+
)
|
|
487
|
+
)
|
|
488
|
+
|
|
489
|
+
async def update(
|
|
490
|
+
self,
|
|
491
|
+
organization_id: UUID,
|
|
492
|
+
harbor_id: UUID,
|
|
493
|
+
name: str,
|
|
494
|
+
*,
|
|
495
|
+
connection: str | None | Unset = UNSET,
|
|
496
|
+
egress_mode: GithubRunnerEgressModeDto
|
|
497
|
+
| GithubRunnerEgressModeDtoLiteral
|
|
498
|
+
| None
|
|
499
|
+
| Unset = UNSET,
|
|
500
|
+
extra_egress_fqdns: builtins.list[str] | None | Unset = UNSET,
|
|
501
|
+
flavor: RunnerFlavorDto | None | Unset = UNSET,
|
|
502
|
+
max_runners: int | None | Unset = UNSET,
|
|
503
|
+
min_runners: int | None | Unset = UNSET,
|
|
504
|
+
runner_group: str | None | Unset = UNSET,
|
|
505
|
+
runner_image: str | None | Unset = UNSET,
|
|
506
|
+
runs_on: str | None | Unset = UNSET,
|
|
507
|
+
scope: GithubRunnerScope | None | Unset = UNSET,
|
|
508
|
+
extra_headers: t.Mapping[str, str] | None = None,
|
|
509
|
+
extra_query: t.Mapping[str, object] | None = None,
|
|
510
|
+
extra_body: t.Mapping[str, object] | None = None,
|
|
511
|
+
timeout: Timeout | Unset = UNSET,
|
|
512
|
+
max_retries: int | None = None,
|
|
513
|
+
) -> GithubRunnerResponse:
|
|
514
|
+
"""Edit a `GithubRunner` pool in place.
|
|
515
|
+
|
|
516
|
+
Exists because the alternative — delete and recreate — deregisters the scale
|
|
517
|
+
set from GitHub, which drops the `runs-on:` target and interrupts whatever
|
|
518
|
+
was running. Every field below can change without that happening.
|
|
519
|
+
|
|
520
|
+
## What the operator does with each field
|
|
521
|
+
- **`min_runners` / `max_runners`** — a live resize. ARC moves the target
|
|
522
|
+
count on the existing `AutoscalingRunnerSet`; no pod is recreated and no
|
|
523
|
+
running job is touched.
|
|
524
|
+
- **`flavor` / `runner_image`** — a template change. The runner pod spec is
|
|
525
|
+
rewritten, so jobs already executing finish on the old template and the
|
|
526
|
+
next ones start on the new one. Nothing is killed mid-job.
|
|
527
|
+
- **`runner_group`** — re-registers the scale set into another GitHub runner
|
|
528
|
+
group. Brief, and the scale-set name is unchanged, so `runs-on:` keeps
|
|
529
|
+
working.
|
|
530
|
+
- **`runs_on`** — deregisters the scale set and registers it again under a
|
|
531
|
+
new name. The one edit here that workflows can see, and the one with
|
|
532
|
+
downtime: GitHub will not move a registration's runner label in place, so
|
|
533
|
+
the `AutoscalingRunnerSet` is deleted and re-applied (its Kubernetes name
|
|
534
|
+
is unchanged, as is every other object). ARC drains in-flight runners
|
|
535
|
+
first, so no job is killed, but the pool accepts nothing until the new
|
|
536
|
+
registration is live, and a workflow still naming the old value queues
|
|
537
|
+
until it is updated. `""` hands the name back to the derived one.
|
|
538
|
+
- **`extra_egress_fqdns`** — the pool's network policy is re-rendered. It
|
|
539
|
+
replaces the previous list wholesale rather than merging into it. Entries
|
|
540
|
+
are `host` (443/TCP) or `host:port`.
|
|
541
|
+
- **`egress_mode`** — the pool's network policy is re-rendered, in place and
|
|
542
|
+
without recreating a pod. Cilium applies the new policy to the live
|
|
543
|
+
endpoints, so a job already running keeps its established connections and
|
|
544
|
+
only its *next* connect is judged by the new posture.
|
|
545
|
+
- **`connection`** — the pool's config secret is re-projected from the new
|
|
546
|
+
credential. This is the rotation path: swap in a fresh App key or PAT
|
|
547
|
+
without the scale set ever leaving GitHub.
|
|
548
|
+
|
|
549
|
+
`scope` is deliberately not editable; see [`UpdateGithubRunnerRequest`].
|
|
550
|
+
|
|
551
|
+
:param connection: Move the pool to a different `GithubConnection` — the leaf name, same value `CreateGithubRunnerRequest.connection` takes. Used to swap in a rotated credential without deregistering the scale set. The new connection must point at the same GitHub host as the current one.
|
|
552
|
+
:param extra_egress_fqdns: Replacement egress allow-list (it replaces the previous one wholesale, it is not merged entry by entry). Send `[]` to keep only the built-in GitHub Actions preset. Entries are `host` (443/TCP) or `host:port`.
|
|
553
|
+
:param max_runners: New concurrency ceiling. Live resize, same as `min_runners`.
|
|
554
|
+
:param min_runners: New warm-runner floor. Live resize — ARC changes the target without recreating pods.
|
|
555
|
+
:param runner_group: New GitHub runner group (org scope only). Send `""` to fall back to GitHub's default group.
|
|
556
|
+
:param runner_image: New runner container image. Rolls the runner template, same as `flavor`. Send `""` to go back to the platform-pinned default.
|
|
557
|
+
:param runs_on: New `runs-on:` name. Send `""` to go back to the name Hyperfluid derives from the pool name. Unlike every other field here this one is **not** transparent to running workflows: the scale set is deregistered and registered again under the new name, so a workflow still saying `runs-on: <old name>` queues until it is edited. It is also the only edit with downtime. GitHub will not move a registration's runner label in place, so the `AutoscalingRunnerSet` is deleted and re-applied (under its unchanged Kubernetes name). ARC drains in-flight runners first — no job is killed — but the pool accepts nothing until the new registration is live. `status.message` names the old value to keep using meanwhile."""
|
|
558
|
+
response = await self._request(
|
|
559
|
+
ApiRequest(
|
|
560
|
+
method="patch",
|
|
561
|
+
path="/api/v1/organizations/{organization_id}/harbors/{harbor_id}/github-runners/{name}",
|
|
562
|
+
path_params={
|
|
563
|
+
"organization_id": encode_path_param(
|
|
564
|
+
"organization_id", organization_id, "simple", False
|
|
565
|
+
),
|
|
566
|
+
"harbor_id": encode_path_param(
|
|
567
|
+
"harbor_id", harbor_id, "simple", False
|
|
568
|
+
),
|
|
569
|
+
"name": name,
|
|
570
|
+
},
|
|
571
|
+
json_body=to_json_value(
|
|
572
|
+
UpdateGithubRunnerRequest(
|
|
573
|
+
connection=connection,
|
|
574
|
+
egress_mode=t.cast(
|
|
575
|
+
"GithubRunnerEgressModeDto | None | Unset", egress_mode
|
|
576
|
+
),
|
|
577
|
+
extra_egress_fqdns=extra_egress_fqdns,
|
|
578
|
+
flavor=flavor,
|
|
579
|
+
max_runners=max_runners,
|
|
580
|
+
min_runners=min_runners,
|
|
581
|
+
runner_group=runner_group,
|
|
582
|
+
runner_image=runner_image,
|
|
583
|
+
runs_on=runs_on,
|
|
584
|
+
scope=scope,
|
|
585
|
+
),
|
|
586
|
+
UpdateGithubRunnerRequest,
|
|
587
|
+
),
|
|
588
|
+
error_types={
|
|
589
|
+
"default": _models.ApiErrorBody,
|
|
590
|
+
},
|
|
591
|
+
extra_headers=extra_headers,
|
|
592
|
+
extra_query=extra_query,
|
|
593
|
+
extra_body=extra_body,
|
|
594
|
+
timeout=timeout,
|
|
595
|
+
max_retries=max_retries,
|
|
596
|
+
)
|
|
597
|
+
)
|
|
598
|
+
return decode_response(response, GithubRunnerResponse)
|
|
599
|
+
|
|
600
|
+
|
|
601
|
+
class AsyncGitHubRunnersWithRawResponse:
|
|
602
|
+
"""The methods of :class:`AsyncGitHubRunners`, returning an :class:`APIResponse`."""
|
|
603
|
+
|
|
604
|
+
def __init__(self, resource: AsyncGitHubRunners) -> None:
|
|
605
|
+
self.list_organization_github_connections = async_to_raw_response_wrapper(
|
|
606
|
+
resource.list_organization_github_connections
|
|
607
|
+
)
|
|
608
|
+
self.create_organization_github_connection = async_to_raw_response_wrapper(
|
|
609
|
+
resource.create_organization_github_connection
|
|
610
|
+
)
|
|
611
|
+
self.update_organization_github_connection = async_to_raw_response_wrapper(
|
|
612
|
+
resource.update_organization_github_connection
|
|
613
|
+
)
|
|
614
|
+
self.delete_organization_github_connection = async_to_raw_response_wrapper(
|
|
615
|
+
resource.delete_organization_github_connection
|
|
616
|
+
)
|
|
617
|
+
self.list_organization_github_connection_targets = (
|
|
618
|
+
async_to_raw_response_wrapper(
|
|
619
|
+
resource.list_organization_github_connection_targets
|
|
620
|
+
)
|
|
621
|
+
)
|
|
622
|
+
self.list = async_to_raw_response_wrapper(resource.list)
|
|
623
|
+
self.create = async_to_raw_response_wrapper(resource.create)
|
|
624
|
+
self.retrieve = async_to_raw_response_wrapper(resource.retrieve)
|
|
625
|
+
self.delete = async_to_raw_response_wrapper(resource.delete)
|
|
626
|
+
self.update = async_to_raw_response_wrapper(resource.update)
|
|
627
|
+
|
|
628
|
+
|
|
629
|
+
class GitHubRunners(ApiBaseSync):
|
|
630
|
+
"""Git hub runners API."""
|
|
631
|
+
|
|
632
|
+
@property
|
|
633
|
+
def with_raw_response(self) -> GitHubRunnersWithRawResponse:
|
|
634
|
+
"""These methods, returning an :class:`APIResponse` with the status and headers."""
|
|
635
|
+
return GitHubRunnersWithRawResponse(self)
|
|
636
|
+
|
|
637
|
+
def list_organization_github_connections(
|
|
638
|
+
self,
|
|
639
|
+
organization_id: UUID,
|
|
640
|
+
*,
|
|
641
|
+
extra_headers: t.Mapping[str, str] | None = None,
|
|
642
|
+
extra_query: t.Mapping[str, object] | None = None,
|
|
643
|
+
extra_body: t.Mapping[str, object] | None = None,
|
|
644
|
+
timeout: Timeout | Unset = UNSET,
|
|
645
|
+
max_retries: int | None = None,
|
|
646
|
+
) -> builtins.list[GithubConnectionResponse]:
|
|
647
|
+
"""List the org's `GithubConnection`s (metadata only, never credentials)."""
|
|
648
|
+
response = self._request(
|
|
649
|
+
ApiRequest(
|
|
650
|
+
method="get",
|
|
651
|
+
path="/api/v1/organizations/{organization_id}/github-connections",
|
|
652
|
+
path_params={
|
|
653
|
+
"organization_id": encode_path_param(
|
|
654
|
+
"organization_id", organization_id, "simple", False
|
|
655
|
+
),
|
|
656
|
+
},
|
|
657
|
+
error_types={
|
|
658
|
+
"default": _models.ApiErrorBody,
|
|
659
|
+
},
|
|
660
|
+
extra_headers=extra_headers,
|
|
661
|
+
extra_query=extra_query,
|
|
662
|
+
extra_body=extra_body,
|
|
663
|
+
timeout=timeout,
|
|
664
|
+
max_retries=max_retries,
|
|
665
|
+
)
|
|
666
|
+
)
|
|
667
|
+
return decode_response(response, list[GithubConnectionResponse])
|
|
668
|
+
|
|
669
|
+
def create_organization_github_connection(
|
|
670
|
+
self,
|
|
671
|
+
organization_id: UUID,
|
|
672
|
+
*,
|
|
673
|
+
credential: GithubConnectionCredentialDto,
|
|
674
|
+
name: str,
|
|
675
|
+
base_url: str | None | Unset = UNSET,
|
|
676
|
+
extra_headers: t.Mapping[str, str] | None = None,
|
|
677
|
+
extra_query: t.Mapping[str, object] | None = None,
|
|
678
|
+
extra_body: t.Mapping[str, object] | None = None,
|
|
679
|
+
timeout: Timeout | Unset = UNSET,
|
|
680
|
+
max_retries: int | None = None,
|
|
681
|
+
) -> GithubConnectionResponse:
|
|
682
|
+
"""Create a `GithubConnection`: an org-scoped user-secret holding the GitHub
|
|
683
|
+
credential (PAT or App key). Write-only — no read endpoint ever returns it.
|
|
684
|
+
|
|
685
|
+
## The credential is proved against GitHub before it is stored
|
|
686
|
+
A credential is only worth storing if GitHub accepts it, and the cost of
|
|
687
|
+
finding out later is high: an unusable credential is accepted silently
|
|
688
|
+
today, and the first symptom is a pool that never comes online, with the
|
|
689
|
+
real reason buried in an ARC listener log the user cannot see. So the
|
|
690
|
+
connection is used, once, before anything is written — and if GitHub
|
|
691
|
+
refuses it, the 400 carries GitHub's own sentence ("Bad credentials",
|
|
692
|
+
"Integration not found", …).
|
|
693
|
+
|
|
694
|
+
The same round trip is what makes `installation_id` optional for the App
|
|
695
|
+
case: `GET /app/installations` answers it. See [`resolve_app_installation`].
|
|
696
|
+
|
|
697
|
+
:param base_url: GitHub base URL. Defaults to `https://github.com`; set for GHES.
|
|
698
|
+
:param name: Connection name — a DNS-1123-style label (lowercase alphanumerics and hyphens), unique per organization."""
|
|
699
|
+
response = self._request(
|
|
700
|
+
ApiRequest(
|
|
701
|
+
method="post",
|
|
702
|
+
path="/api/v1/organizations/{organization_id}/github-connections",
|
|
703
|
+
path_params={
|
|
704
|
+
"organization_id": encode_path_param(
|
|
705
|
+
"organization_id", organization_id, "simple", False
|
|
706
|
+
),
|
|
707
|
+
},
|
|
708
|
+
json_body=to_json_value(
|
|
709
|
+
CreateGithubConnectionRequest(
|
|
710
|
+
base_url=base_url,
|
|
711
|
+
credential=credential,
|
|
712
|
+
name=name,
|
|
713
|
+
),
|
|
714
|
+
CreateGithubConnectionRequest,
|
|
715
|
+
),
|
|
716
|
+
error_types={
|
|
717
|
+
"default": _models.ApiErrorBody,
|
|
718
|
+
},
|
|
719
|
+
extra_headers=extra_headers,
|
|
720
|
+
extra_query=extra_query,
|
|
721
|
+
extra_body=extra_body,
|
|
722
|
+
timeout=timeout,
|
|
723
|
+
max_retries=max_retries,
|
|
724
|
+
)
|
|
725
|
+
)
|
|
726
|
+
return decode_response(response, GithubConnectionResponse)
|
|
727
|
+
|
|
728
|
+
def update_organization_github_connection(
|
|
729
|
+
self,
|
|
730
|
+
organization_id: UUID,
|
|
731
|
+
name: str,
|
|
732
|
+
*,
|
|
733
|
+
credential: GithubConnectionCredentialDto,
|
|
734
|
+
base_url: str | None | Unset = UNSET,
|
|
735
|
+
extra_headers: t.Mapping[str, str] | None = None,
|
|
736
|
+
extra_query: t.Mapping[str, object] | None = None,
|
|
737
|
+
extra_body: t.Mapping[str, object] | None = None,
|
|
738
|
+
timeout: Timeout | Unset = UNSET,
|
|
739
|
+
max_retries: int | None = None,
|
|
740
|
+
) -> GithubConnectionResponse:
|
|
741
|
+
"""Update a `GithubConnection` in place: rotate the stored credential, and
|
|
742
|
+
optionally move the connection to a different GitHub host.
|
|
743
|
+
|
|
744
|
+
## Why the credential is always required
|
|
745
|
+
The stored credential is write-only — no endpoint hands one back — so there
|
|
746
|
+
is nothing here to partially edit. Requiring it also means every update
|
|
747
|
+
re-proves a working credential against the *effective* host before anything
|
|
748
|
+
is overwritten, which is what makes the failure mode "GitHub refused this,
|
|
749
|
+
nothing changed" instead of "your pools stop renewing their registration
|
|
750
|
+
token an hour from now".
|
|
751
|
+
|
|
752
|
+
The name is not editable: it is what every pool's `connection_secret_name`
|
|
753
|
+
resolves through, and renaming it would orphan them. Rename = create the new
|
|
754
|
+
one, move the pools, delete the old one.
|
|
755
|
+
|
|
756
|
+
## Propagation
|
|
757
|
+
The operator re-projects each pool's `githubConfigSecret` from this secret
|
|
758
|
+
on every reconcile, so a rotation reaches running pools on their next tick
|
|
759
|
+
(~2 minutes for a healthy pool) with no pool edit and no restart.
|
|
760
|
+
|
|
761
|
+
:param base_url: GitHub base URL. Absent keeps the stored host; changing it is refused while any runner pool still registers against the old one."""
|
|
762
|
+
response = self._request(
|
|
763
|
+
ApiRequest(
|
|
764
|
+
method="put",
|
|
765
|
+
path="/api/v1/organizations/{organization_id}/github-connections/{name}",
|
|
766
|
+
path_params={
|
|
767
|
+
"organization_id": encode_path_param(
|
|
768
|
+
"organization_id", organization_id, "simple", False
|
|
769
|
+
),
|
|
770
|
+
"name": name,
|
|
771
|
+
},
|
|
772
|
+
json_body=to_json_value(
|
|
773
|
+
UpdateGithubConnectionRequest(
|
|
774
|
+
base_url=base_url,
|
|
775
|
+
credential=credential,
|
|
776
|
+
),
|
|
777
|
+
UpdateGithubConnectionRequest,
|
|
778
|
+
),
|
|
779
|
+
error_types={
|
|
780
|
+
"default": _models.ApiErrorBody,
|
|
781
|
+
},
|
|
782
|
+
extra_headers=extra_headers,
|
|
783
|
+
extra_query=extra_query,
|
|
784
|
+
extra_body=extra_body,
|
|
785
|
+
timeout=timeout,
|
|
786
|
+
max_retries=max_retries,
|
|
787
|
+
)
|
|
788
|
+
)
|
|
789
|
+
return decode_response(response, GithubConnectionResponse)
|
|
790
|
+
|
|
791
|
+
def delete_organization_github_connection(
|
|
792
|
+
self,
|
|
793
|
+
organization_id: UUID,
|
|
794
|
+
name: str,
|
|
795
|
+
*,
|
|
796
|
+
extra_headers: t.Mapping[str, str] | None = None,
|
|
797
|
+
extra_query: t.Mapping[str, object] | None = None,
|
|
798
|
+
extra_body: t.Mapping[str, object] | None = None,
|
|
799
|
+
timeout: Timeout | Unset = UNSET,
|
|
800
|
+
max_retries: int | None = None,
|
|
801
|
+
) -> None:
|
|
802
|
+
"""Delete a `GithubConnection` by name.
|
|
803
|
+
|
|
804
|
+
Refuses while any pool still references it (409): a pool whose connection
|
|
805
|
+
disappeared keeps its already-projected `githubConfigSecret` and then starts
|
|
806
|
+
failing token refreshes with no local signal — delete the pools first."""
|
|
807
|
+
self._request(
|
|
808
|
+
ApiRequest(
|
|
809
|
+
method="delete",
|
|
810
|
+
path="/api/v1/organizations/{organization_id}/github-connections/{name}",
|
|
811
|
+
path_params={
|
|
812
|
+
"organization_id": encode_path_param(
|
|
813
|
+
"organization_id", organization_id, "simple", False
|
|
814
|
+
),
|
|
815
|
+
"name": name,
|
|
816
|
+
},
|
|
817
|
+
error_types={
|
|
818
|
+
"default": _models.ApiErrorBody,
|
|
819
|
+
},
|
|
820
|
+
extra_headers=extra_headers,
|
|
821
|
+
extra_query=extra_query,
|
|
822
|
+
extra_body=extra_body,
|
|
823
|
+
timeout=timeout,
|
|
824
|
+
max_retries=max_retries,
|
|
825
|
+
)
|
|
826
|
+
)
|
|
827
|
+
|
|
828
|
+
def list_organization_github_connection_targets(
|
|
829
|
+
self,
|
|
830
|
+
organization_id: UUID,
|
|
831
|
+
name: str,
|
|
832
|
+
*,
|
|
833
|
+
extra_headers: t.Mapping[str, str] | None = None,
|
|
834
|
+
extra_query: t.Mapping[str, object] | None = None,
|
|
835
|
+
extra_body: t.Mapping[str, object] | None = None,
|
|
836
|
+
timeout: Timeout | Unset = UNSET,
|
|
837
|
+
max_retries: int | None = None,
|
|
838
|
+
) -> builtins.list[GithubConnectionTarget]:
|
|
839
|
+
"""List every org/user a stored connection can register a runner pool on.
|
|
840
|
+
|
|
841
|
+
This is what makes the pool-create form fill itself in: the response carries
|
|
842
|
+
the organization login (the value `scope` needs) and, for a GitHub App, the
|
|
843
|
+
installation id — the number users were previously copying out of the tail
|
|
844
|
+
of a GitHub settings URL.
|
|
845
|
+
|
|
846
|
+
For an App connection the result is filtered to the installation the
|
|
847
|
+
connection is pinned to. Offering the App's other installations would be
|
|
848
|
+
offering pools that cannot work: ARC authenticates with one installation id,
|
|
849
|
+
and a pool registered on a different org than that installation covers fails
|
|
850
|
+
at listener startup. An empty result for an App connection therefore means
|
|
851
|
+
the installation was removed on GitHub's side — which is itself the signal
|
|
852
|
+
the user needs.
|
|
853
|
+
|
|
854
|
+
Requires `secret:read` on the backing secret in addition to
|
|
855
|
+
`forgejo_runner:read`: nothing is returned *from* the credential, but the
|
|
856
|
+
credential is used to act as the organization on GitHub, and an org that
|
|
857
|
+
denies `secret:read` to a role must not have that role drive it."""
|
|
858
|
+
response = self._request(
|
|
859
|
+
ApiRequest(
|
|
860
|
+
method="get",
|
|
861
|
+
path="/api/v1/organizations/{organization_id}/github-connections/{name}/targets",
|
|
862
|
+
path_params={
|
|
863
|
+
"organization_id": encode_path_param(
|
|
864
|
+
"organization_id", organization_id, "simple", False
|
|
865
|
+
),
|
|
866
|
+
"name": name,
|
|
867
|
+
},
|
|
868
|
+
error_types={
|
|
869
|
+
"default": _models.ApiErrorBody,
|
|
870
|
+
},
|
|
871
|
+
extra_headers=extra_headers,
|
|
872
|
+
extra_query=extra_query,
|
|
873
|
+
extra_body=extra_body,
|
|
874
|
+
timeout=timeout,
|
|
875
|
+
max_retries=max_retries,
|
|
876
|
+
)
|
|
877
|
+
)
|
|
878
|
+
return decode_response(response, list[GithubConnectionTarget])
|
|
879
|
+
|
|
880
|
+
def list(
|
|
881
|
+
self,
|
|
882
|
+
organization_id: UUID,
|
|
883
|
+
harbor_id: UUID,
|
|
884
|
+
*,
|
|
885
|
+
extra_headers: t.Mapping[str, str] | None = None,
|
|
886
|
+
extra_query: t.Mapping[str, object] | None = None,
|
|
887
|
+
extra_body: t.Mapping[str, object] | None = None,
|
|
888
|
+
timeout: Timeout | Unset = UNSET,
|
|
889
|
+
max_retries: int | None = None,
|
|
890
|
+
) -> builtins.list[GithubRunnerResponse]:
|
|
891
|
+
"""List all `GithubRunner` pool CRs for the harbor."""
|
|
892
|
+
response = self._request(
|
|
893
|
+
ApiRequest(
|
|
894
|
+
method="get",
|
|
895
|
+
path="/api/v1/organizations/{organization_id}/harbors/{harbor_id}/github-runners",
|
|
896
|
+
path_params={
|
|
897
|
+
"organization_id": encode_path_param(
|
|
898
|
+
"organization_id", organization_id, "simple", False
|
|
899
|
+
),
|
|
900
|
+
"harbor_id": encode_path_param(
|
|
901
|
+
"harbor_id", harbor_id, "simple", False
|
|
902
|
+
),
|
|
903
|
+
},
|
|
904
|
+
error_types={
|
|
905
|
+
"default": _models.ApiErrorBody,
|
|
906
|
+
},
|
|
907
|
+
extra_headers=extra_headers,
|
|
908
|
+
extra_query=extra_query,
|
|
909
|
+
extra_body=extra_body,
|
|
910
|
+
timeout=timeout,
|
|
911
|
+
max_retries=max_retries,
|
|
912
|
+
)
|
|
913
|
+
)
|
|
914
|
+
return decode_response(response, list[GithubRunnerResponse])
|
|
915
|
+
|
|
916
|
+
def create(
|
|
917
|
+
self,
|
|
918
|
+
organization_id: UUID,
|
|
919
|
+
harbor_id: UUID,
|
|
920
|
+
*,
|
|
921
|
+
connection: str,
|
|
922
|
+
name: str,
|
|
923
|
+
scope: GithubRunnerScope,
|
|
924
|
+
egress_mode: GithubRunnerEgressModeDto
|
|
925
|
+
| GithubRunnerEgressModeDtoLiteral
|
|
926
|
+
| None
|
|
927
|
+
| Unset = UNSET,
|
|
928
|
+
extra_egress_fqdns: builtins.list[str] | None | Unset = UNSET,
|
|
929
|
+
flavor: RunnerFlavorDto | None | Unset = UNSET,
|
|
930
|
+
max_runners: int | None | Unset = UNSET,
|
|
931
|
+
min_runners: int | None | Unset = UNSET,
|
|
932
|
+
runner_group: str | None | Unset = UNSET,
|
|
933
|
+
runner_image: str | None | Unset = UNSET,
|
|
934
|
+
runs_on: str | None | Unset = UNSET,
|
|
935
|
+
extra_headers: t.Mapping[str, str] | None = None,
|
|
936
|
+
extra_query: t.Mapping[str, object] | None = None,
|
|
937
|
+
extra_body: t.Mapping[str, object] | None = None,
|
|
938
|
+
timeout: Timeout | Unset = UNSET,
|
|
939
|
+
max_retries: int | None = None,
|
|
940
|
+
) -> GithubRunnerResponse:
|
|
941
|
+
"""Create a `GithubRunner` pool CR for this harbor.
|
|
942
|
+
|
|
943
|
+
Validates that the referenced `GithubConnection` exists before creating the
|
|
944
|
+
CR (fail fast in the UI rather than at reconcile time). Returns 201; 409 if
|
|
945
|
+
a pool with that name already exists.
|
|
946
|
+
|
|
947
|
+
:param connection: Name of the `GithubConnection` holding the credential (as returned by the connections API — the leaf name, not the full secret path).
|
|
948
|
+
:param extra_egress_fqdns: Extra destinations the pool's network policy allows egress to, beyond the built-in GitHub Actions preset. `host` opens 443/TCP; `host:port` opens that port instead (`deb.debian.org:80`, `registry.corp.example:5000`).
|
|
949
|
+
:param max_runners: Ceiling on concurrent runners. Defaults to 3.
|
|
950
|
+
:param min_runners: Warm runners kept idle. Defaults to 0 (scale-to-zero).
|
|
951
|
+
:param name: Pool name — must be a valid DNS-1123 label, at most 45 characters (GitHub's runner scale-set name limit). The value workflows put in `runs-on:` is the registered scale-set name the operator derives from it and reports back as `status.runner_scale_set_name`.
|
|
952
|
+
:param runner_group: GitHub runner group (org scope only). Defaults to GitHub's default group.
|
|
953
|
+
:param runner_image: Runner container image override. Defaults to the platform-pinned `ghcr.io/actions/actions-runner` release.
|
|
954
|
+
:param runs_on: The name this pool registers under with GitHub — **the value workflows put in `runs-on:`**, and the only thing GitHub schedules a job on for a runner scale set. Absent (or empty) keeps the name Hyperfluid derives, `<name>-<digest>`, which is unique across the GitHub org by construction. Setting it trades that for a name you choose (`ubuntu-latest`, `hyperfluid-linux-l`, …); the request is rejected with a 409 if another pool on the same GitHub target and runner group already claims it."""
|
|
955
|
+
response = self._request(
|
|
956
|
+
ApiRequest(
|
|
957
|
+
method="post",
|
|
958
|
+
path="/api/v1/organizations/{organization_id}/harbors/{harbor_id}/github-runners",
|
|
959
|
+
path_params={
|
|
960
|
+
"organization_id": encode_path_param(
|
|
961
|
+
"organization_id", organization_id, "simple", False
|
|
962
|
+
),
|
|
963
|
+
"harbor_id": encode_path_param(
|
|
964
|
+
"harbor_id", harbor_id, "simple", False
|
|
965
|
+
),
|
|
966
|
+
},
|
|
967
|
+
json_body=to_json_value(
|
|
968
|
+
CreateGithubRunnerRequest(
|
|
969
|
+
connection=connection,
|
|
970
|
+
egress_mode=t.cast(
|
|
971
|
+
"GithubRunnerEgressModeDto | None | Unset", egress_mode
|
|
972
|
+
),
|
|
973
|
+
extra_egress_fqdns=extra_egress_fqdns,
|
|
974
|
+
flavor=flavor,
|
|
975
|
+
max_runners=max_runners,
|
|
976
|
+
min_runners=min_runners,
|
|
977
|
+
name=name,
|
|
978
|
+
runner_group=runner_group,
|
|
979
|
+
runner_image=runner_image,
|
|
980
|
+
runs_on=runs_on,
|
|
981
|
+
scope=scope,
|
|
982
|
+
),
|
|
983
|
+
CreateGithubRunnerRequest,
|
|
984
|
+
),
|
|
985
|
+
error_types={
|
|
986
|
+
"default": _models.ApiErrorBody,
|
|
987
|
+
},
|
|
988
|
+
extra_headers=extra_headers,
|
|
989
|
+
extra_query=extra_query,
|
|
990
|
+
extra_body=extra_body,
|
|
991
|
+
timeout=timeout,
|
|
992
|
+
max_retries=max_retries,
|
|
993
|
+
)
|
|
994
|
+
)
|
|
995
|
+
return decode_response(response, GithubRunnerResponse)
|
|
996
|
+
|
|
997
|
+
def retrieve(
|
|
998
|
+
self,
|
|
999
|
+
organization_id: UUID,
|
|
1000
|
+
harbor_id: UUID,
|
|
1001
|
+
name: str,
|
|
1002
|
+
*,
|
|
1003
|
+
extra_headers: t.Mapping[str, str] | None = None,
|
|
1004
|
+
extra_query: t.Mapping[str, object] | None = None,
|
|
1005
|
+
extra_body: t.Mapping[str, object] | None = None,
|
|
1006
|
+
timeout: Timeout | Unset = UNSET,
|
|
1007
|
+
max_retries: int | None = None,
|
|
1008
|
+
) -> GithubRunnerResponse:
|
|
1009
|
+
"""Get a single `GithubRunner` pool CR by name (status polling)."""
|
|
1010
|
+
response = self._request(
|
|
1011
|
+
ApiRequest(
|
|
1012
|
+
method="get",
|
|
1013
|
+
path="/api/v1/organizations/{organization_id}/harbors/{harbor_id}/github-runners/{name}",
|
|
1014
|
+
path_params={
|
|
1015
|
+
"organization_id": encode_path_param(
|
|
1016
|
+
"organization_id", organization_id, "simple", False
|
|
1017
|
+
),
|
|
1018
|
+
"harbor_id": encode_path_param(
|
|
1019
|
+
"harbor_id", harbor_id, "simple", False
|
|
1020
|
+
),
|
|
1021
|
+
"name": name,
|
|
1022
|
+
},
|
|
1023
|
+
error_types={
|
|
1024
|
+
"default": _models.ApiErrorBody,
|
|
1025
|
+
},
|
|
1026
|
+
extra_headers=extra_headers,
|
|
1027
|
+
extra_query=extra_query,
|
|
1028
|
+
extra_body=extra_body,
|
|
1029
|
+
timeout=timeout,
|
|
1030
|
+
max_retries=max_retries,
|
|
1031
|
+
)
|
|
1032
|
+
)
|
|
1033
|
+
return decode_response(response, GithubRunnerResponse)
|
|
1034
|
+
|
|
1035
|
+
def delete(
|
|
1036
|
+
self,
|
|
1037
|
+
organization_id: UUID,
|
|
1038
|
+
harbor_id: UUID,
|
|
1039
|
+
name: str,
|
|
1040
|
+
*,
|
|
1041
|
+
extra_headers: t.Mapping[str, str] | None = None,
|
|
1042
|
+
extra_query: t.Mapping[str, object] | None = None,
|
|
1043
|
+
extra_body: t.Mapping[str, object] | None = None,
|
|
1044
|
+
timeout: Timeout | Unset = UNSET,
|
|
1045
|
+
max_retries: int | None = None,
|
|
1046
|
+
) -> None:
|
|
1047
|
+
"""Delete a `GithubRunner` pool CR by name.
|
|
1048
|
+
|
|
1049
|
+
Idempotent: 204 even when already absent. The operator's finalizer tears
|
|
1050
|
+
down the `AutoscalingRunnerSet` (ARC deregisters the scale set from
|
|
1051
|
+
GitHub), the config secret, and the network policy via ownerReference GC.
|
|
1052
|
+
|
|
1053
|
+
The 204 is held until the CR is observed gone (bounded — see
|
|
1054
|
+
[`DELETE_SETTLE_BUDGET`]). `Api::delete` only *marks* a finalized object,
|
|
1055
|
+
so returning on its acknowledgement made the client's post-delete refetch
|
|
1056
|
+
race the finalizer and re-render the pool it had just deleted."""
|
|
1057
|
+
self._request(
|
|
1058
|
+
ApiRequest(
|
|
1059
|
+
method="delete",
|
|
1060
|
+
path="/api/v1/organizations/{organization_id}/harbors/{harbor_id}/github-runners/{name}",
|
|
1061
|
+
path_params={
|
|
1062
|
+
"organization_id": encode_path_param(
|
|
1063
|
+
"organization_id", organization_id, "simple", False
|
|
1064
|
+
),
|
|
1065
|
+
"harbor_id": encode_path_param(
|
|
1066
|
+
"harbor_id", harbor_id, "simple", False
|
|
1067
|
+
),
|
|
1068
|
+
"name": name,
|
|
1069
|
+
},
|
|
1070
|
+
error_types={
|
|
1071
|
+
"default": _models.ApiErrorBody,
|
|
1072
|
+
},
|
|
1073
|
+
extra_headers=extra_headers,
|
|
1074
|
+
extra_query=extra_query,
|
|
1075
|
+
extra_body=extra_body,
|
|
1076
|
+
timeout=timeout,
|
|
1077
|
+
max_retries=max_retries,
|
|
1078
|
+
)
|
|
1079
|
+
)
|
|
1080
|
+
|
|
1081
|
+
def update(
|
|
1082
|
+
self,
|
|
1083
|
+
organization_id: UUID,
|
|
1084
|
+
harbor_id: UUID,
|
|
1085
|
+
name: str,
|
|
1086
|
+
*,
|
|
1087
|
+
connection: str | None | Unset = UNSET,
|
|
1088
|
+
egress_mode: GithubRunnerEgressModeDto
|
|
1089
|
+
| GithubRunnerEgressModeDtoLiteral
|
|
1090
|
+
| None
|
|
1091
|
+
| Unset = UNSET,
|
|
1092
|
+
extra_egress_fqdns: builtins.list[str] | None | Unset = UNSET,
|
|
1093
|
+
flavor: RunnerFlavorDto | None | Unset = UNSET,
|
|
1094
|
+
max_runners: int | None | Unset = UNSET,
|
|
1095
|
+
min_runners: int | None | Unset = UNSET,
|
|
1096
|
+
runner_group: str | None | Unset = UNSET,
|
|
1097
|
+
runner_image: str | None | Unset = UNSET,
|
|
1098
|
+
runs_on: str | None | Unset = UNSET,
|
|
1099
|
+
scope: GithubRunnerScope | None | Unset = UNSET,
|
|
1100
|
+
extra_headers: t.Mapping[str, str] | None = None,
|
|
1101
|
+
extra_query: t.Mapping[str, object] | None = None,
|
|
1102
|
+
extra_body: t.Mapping[str, object] | None = None,
|
|
1103
|
+
timeout: Timeout | Unset = UNSET,
|
|
1104
|
+
max_retries: int | None = None,
|
|
1105
|
+
) -> GithubRunnerResponse:
|
|
1106
|
+
"""Edit a `GithubRunner` pool in place.
|
|
1107
|
+
|
|
1108
|
+
Exists because the alternative — delete and recreate — deregisters the scale
|
|
1109
|
+
set from GitHub, which drops the `runs-on:` target and interrupts whatever
|
|
1110
|
+
was running. Every field below can change without that happening.
|
|
1111
|
+
|
|
1112
|
+
## What the operator does with each field
|
|
1113
|
+
- **`min_runners` / `max_runners`** — a live resize. ARC moves the target
|
|
1114
|
+
count on the existing `AutoscalingRunnerSet`; no pod is recreated and no
|
|
1115
|
+
running job is touched.
|
|
1116
|
+
- **`flavor` / `runner_image`** — a template change. The runner pod spec is
|
|
1117
|
+
rewritten, so jobs already executing finish on the old template and the
|
|
1118
|
+
next ones start on the new one. Nothing is killed mid-job.
|
|
1119
|
+
- **`runner_group`** — re-registers the scale set into another GitHub runner
|
|
1120
|
+
group. Brief, and the scale-set name is unchanged, so `runs-on:` keeps
|
|
1121
|
+
working.
|
|
1122
|
+
- **`runs_on`** — deregisters the scale set and registers it again under a
|
|
1123
|
+
new name. The one edit here that workflows can see, and the one with
|
|
1124
|
+
downtime: GitHub will not move a registration's runner label in place, so
|
|
1125
|
+
the `AutoscalingRunnerSet` is deleted and re-applied (its Kubernetes name
|
|
1126
|
+
is unchanged, as is every other object). ARC drains in-flight runners
|
|
1127
|
+
first, so no job is killed, but the pool accepts nothing until the new
|
|
1128
|
+
registration is live, and a workflow still naming the old value queues
|
|
1129
|
+
until it is updated. `""` hands the name back to the derived one.
|
|
1130
|
+
- **`extra_egress_fqdns`** — the pool's network policy is re-rendered. It
|
|
1131
|
+
replaces the previous list wholesale rather than merging into it. Entries
|
|
1132
|
+
are `host` (443/TCP) or `host:port`.
|
|
1133
|
+
- **`egress_mode`** — the pool's network policy is re-rendered, in place and
|
|
1134
|
+
without recreating a pod. Cilium applies the new policy to the live
|
|
1135
|
+
endpoints, so a job already running keeps its established connections and
|
|
1136
|
+
only its *next* connect is judged by the new posture.
|
|
1137
|
+
- **`connection`** — the pool's config secret is re-projected from the new
|
|
1138
|
+
credential. This is the rotation path: swap in a fresh App key or PAT
|
|
1139
|
+
without the scale set ever leaving GitHub.
|
|
1140
|
+
|
|
1141
|
+
`scope` is deliberately not editable; see [`UpdateGithubRunnerRequest`].
|
|
1142
|
+
|
|
1143
|
+
:param connection: Move the pool to a different `GithubConnection` — the leaf name, same value `CreateGithubRunnerRequest.connection` takes. Used to swap in a rotated credential without deregistering the scale set. The new connection must point at the same GitHub host as the current one.
|
|
1144
|
+
:param extra_egress_fqdns: Replacement egress allow-list (it replaces the previous one wholesale, it is not merged entry by entry). Send `[]` to keep only the built-in GitHub Actions preset. Entries are `host` (443/TCP) or `host:port`.
|
|
1145
|
+
:param max_runners: New concurrency ceiling. Live resize, same as `min_runners`.
|
|
1146
|
+
:param min_runners: New warm-runner floor. Live resize — ARC changes the target without recreating pods.
|
|
1147
|
+
:param runner_group: New GitHub runner group (org scope only). Send `""` to fall back to GitHub's default group.
|
|
1148
|
+
:param runner_image: New runner container image. Rolls the runner template, same as `flavor`. Send `""` to go back to the platform-pinned default.
|
|
1149
|
+
:param runs_on: New `runs-on:` name. Send `""` to go back to the name Hyperfluid derives from the pool name. Unlike every other field here this one is **not** transparent to running workflows: the scale set is deregistered and registered again under the new name, so a workflow still saying `runs-on: <old name>` queues until it is edited. It is also the only edit with downtime. GitHub will not move a registration's runner label in place, so the `AutoscalingRunnerSet` is deleted and re-applied (under its unchanged Kubernetes name). ARC drains in-flight runners first — no job is killed — but the pool accepts nothing until the new registration is live. `status.message` names the old value to keep using meanwhile."""
|
|
1150
|
+
response = self._request(
|
|
1151
|
+
ApiRequest(
|
|
1152
|
+
method="patch",
|
|
1153
|
+
path="/api/v1/organizations/{organization_id}/harbors/{harbor_id}/github-runners/{name}",
|
|
1154
|
+
path_params={
|
|
1155
|
+
"organization_id": encode_path_param(
|
|
1156
|
+
"organization_id", organization_id, "simple", False
|
|
1157
|
+
),
|
|
1158
|
+
"harbor_id": encode_path_param(
|
|
1159
|
+
"harbor_id", harbor_id, "simple", False
|
|
1160
|
+
),
|
|
1161
|
+
"name": name,
|
|
1162
|
+
},
|
|
1163
|
+
json_body=to_json_value(
|
|
1164
|
+
UpdateGithubRunnerRequest(
|
|
1165
|
+
connection=connection,
|
|
1166
|
+
egress_mode=t.cast(
|
|
1167
|
+
"GithubRunnerEgressModeDto | None | Unset", egress_mode
|
|
1168
|
+
),
|
|
1169
|
+
extra_egress_fqdns=extra_egress_fqdns,
|
|
1170
|
+
flavor=flavor,
|
|
1171
|
+
max_runners=max_runners,
|
|
1172
|
+
min_runners=min_runners,
|
|
1173
|
+
runner_group=runner_group,
|
|
1174
|
+
runner_image=runner_image,
|
|
1175
|
+
runs_on=runs_on,
|
|
1176
|
+
scope=scope,
|
|
1177
|
+
),
|
|
1178
|
+
UpdateGithubRunnerRequest,
|
|
1179
|
+
),
|
|
1180
|
+
error_types={
|
|
1181
|
+
"default": _models.ApiErrorBody,
|
|
1182
|
+
},
|
|
1183
|
+
extra_headers=extra_headers,
|
|
1184
|
+
extra_query=extra_query,
|
|
1185
|
+
extra_body=extra_body,
|
|
1186
|
+
timeout=timeout,
|
|
1187
|
+
max_retries=max_retries,
|
|
1188
|
+
)
|
|
1189
|
+
)
|
|
1190
|
+
return decode_response(response, GithubRunnerResponse)
|
|
1191
|
+
|
|
1192
|
+
|
|
1193
|
+
class GitHubRunnersWithRawResponse:
|
|
1194
|
+
"""The methods of :class:`GitHubRunners`, returning an :class:`APIResponse`."""
|
|
1195
|
+
|
|
1196
|
+
def __init__(self, resource: GitHubRunners) -> None:
|
|
1197
|
+
self.list_organization_github_connections = to_raw_response_wrapper(
|
|
1198
|
+
resource.list_organization_github_connections
|
|
1199
|
+
)
|
|
1200
|
+
self.create_organization_github_connection = to_raw_response_wrapper(
|
|
1201
|
+
resource.create_organization_github_connection
|
|
1202
|
+
)
|
|
1203
|
+
self.update_organization_github_connection = to_raw_response_wrapper(
|
|
1204
|
+
resource.update_organization_github_connection
|
|
1205
|
+
)
|
|
1206
|
+
self.delete_organization_github_connection = to_raw_response_wrapper(
|
|
1207
|
+
resource.delete_organization_github_connection
|
|
1208
|
+
)
|
|
1209
|
+
self.list_organization_github_connection_targets = to_raw_response_wrapper(
|
|
1210
|
+
resource.list_organization_github_connection_targets
|
|
1211
|
+
)
|
|
1212
|
+
self.list = to_raw_response_wrapper(resource.list)
|
|
1213
|
+
self.create = to_raw_response_wrapper(resource.create)
|
|
1214
|
+
self.retrieve = to_raw_response_wrapper(resource.retrieve)
|
|
1215
|
+
self.delete = to_raw_response_wrapper(resource.delete)
|
|
1216
|
+
self.update = to_raw_response_wrapper(resource.update)
|