From 8d67ee4e0392f8742a3c3a27cf38a94d266a450b Mon Sep 17 00:00:00 2001 From: Sambhav Kothari Date: Sun, 26 Mar 2023 16:46:08 +0100 Subject: [PATCH] Add type-hints to ensure IDEs provide right auto-completion (#504) Signed-off-by: Sambhav Kothari --- Makefile | 2 + scripts/models.py | 14 + src/hera/events/models/eventsource.pyi | 30 + src/hera/events/models/google/protobuf.pyi | 7 + src/hera/events/models/grpc/__init__.py | 0 .../events/models/grpc/gateway/runtime.pyi | 18 + src/hera/events/models/io/__init__.py | 0 .../events/models/io/argoproj/__init__.py | 0 .../models/io/argoproj/events/v1alpha1.pyi | 807 ++++++++++++ .../models/io/argoproj/workflow/v1alpha1.pyi | 1084 +++++++++++++++++ src/hera/events/models/io/k8s/__init__.py | 0 src/hera/events/models/io/k8s/api/__init__.py | 0 src/hera/events/models/io/k8s/api/core/v1.pyi | 637 ++++++++++ .../models/io/k8s/api/policy/v1beta1.pyi | 11 + .../models/io/k8s/apimachinery/__init__.py | 0 .../io/k8s/apimachinery/pkg/__init__.py | 0 .../io/k8s/apimachinery/pkg/api/resource.pyi | 4 + .../io/k8s/apimachinery/pkg/apis/__init__.py | 0 .../io/k8s/apimachinery/pkg/apis/meta/v1.pyi | 77 ++ .../io/k8s/apimachinery/pkg/util/intstr.pyi | 4 + src/hera/events/models/sensor.pyi | 32 + src/hera/workflows/models/eventsource.pyi | 30 + src/hera/workflows/models/google/protobuf.pyi | 7 + src/hera/workflows/models/grpc/__init__.py | 0 .../workflows/models/grpc/gateway/runtime.pyi | 18 + src/hera/workflows/models/io/__init__.py | 0 .../workflows/models/io/argoproj/__init__.py | 0 .../models/io/argoproj/events/v1alpha1.pyi | 807 ++++++++++++ .../models/io/argoproj/workflow/v1alpha1.pyi | 1084 +++++++++++++++++ src/hera/workflows/models/io/k8s/__init__.py | 0 .../workflows/models/io/k8s/api/__init__.py | 0 .../workflows/models/io/k8s/api/core/v1.pyi | 637 ++++++++++ .../models/io/k8s/api/policy/v1beta1.pyi | 11 + .../models/io/k8s/apimachinery/__init__.py | 0 .../io/k8s/apimachinery/pkg/__init__.py | 0 .../io/k8s/apimachinery/pkg/api/resource.pyi | 4 + .../io/k8s/apimachinery/pkg/apis/__init__.py | 0 .../io/k8s/apimachinery/pkg/apis/meta/v1.pyi | 77 ++ .../io/k8s/apimachinery/pkg/util/intstr.pyi | 4 + src/hera/workflows/models/sensor.pyi | 32 + 40 files changed, 5438 insertions(+) create mode 100644 src/hera/events/models/eventsource.pyi create mode 100644 src/hera/events/models/google/protobuf.pyi create mode 100644 src/hera/events/models/grpc/__init__.py create mode 100644 src/hera/events/models/grpc/gateway/runtime.pyi create mode 100644 src/hera/events/models/io/__init__.py create mode 100644 src/hera/events/models/io/argoproj/__init__.py create mode 100644 src/hera/events/models/io/argoproj/events/v1alpha1.pyi create mode 100644 src/hera/events/models/io/argoproj/workflow/v1alpha1.pyi create mode 100644 src/hera/events/models/io/k8s/__init__.py create mode 100644 src/hera/events/models/io/k8s/api/__init__.py create mode 100644 src/hera/events/models/io/k8s/api/core/v1.pyi create mode 100644 src/hera/events/models/io/k8s/api/policy/v1beta1.pyi create mode 100644 src/hera/events/models/io/k8s/apimachinery/__init__.py create mode 100644 src/hera/events/models/io/k8s/apimachinery/pkg/__init__.py create mode 100644 src/hera/events/models/io/k8s/apimachinery/pkg/api/resource.pyi create mode 100644 src/hera/events/models/io/k8s/apimachinery/pkg/apis/__init__.py create mode 100644 src/hera/events/models/io/k8s/apimachinery/pkg/apis/meta/v1.pyi create mode 100644 src/hera/events/models/io/k8s/apimachinery/pkg/util/intstr.pyi create mode 100644 src/hera/events/models/sensor.pyi create mode 100644 src/hera/workflows/models/eventsource.pyi create mode 100644 src/hera/workflows/models/google/protobuf.pyi create mode 100644 src/hera/workflows/models/grpc/__init__.py create mode 100644 src/hera/workflows/models/grpc/gateway/runtime.pyi create mode 100644 src/hera/workflows/models/io/__init__.py create mode 100644 src/hera/workflows/models/io/argoproj/__init__.py create mode 100644 src/hera/workflows/models/io/argoproj/events/v1alpha1.pyi create mode 100644 src/hera/workflows/models/io/argoproj/workflow/v1alpha1.pyi create mode 100644 src/hera/workflows/models/io/k8s/__init__.py create mode 100644 src/hera/workflows/models/io/k8s/api/__init__.py create mode 100644 src/hera/workflows/models/io/k8s/api/core/v1.pyi create mode 100644 src/hera/workflows/models/io/k8s/api/policy/v1beta1.pyi create mode 100644 src/hera/workflows/models/io/k8s/apimachinery/__init__.py create mode 100644 src/hera/workflows/models/io/k8s/apimachinery/pkg/__init__.py create mode 100644 src/hera/workflows/models/io/k8s/apimachinery/pkg/api/resource.pyi create mode 100644 src/hera/workflows/models/io/k8s/apimachinery/pkg/apis/__init__.py create mode 100644 src/hera/workflows/models/io/k8s/apimachinery/pkg/apis/meta/v1.pyi create mode 100644 src/hera/workflows/models/io/k8s/apimachinery/pkg/util/intstr.pyi create mode 100644 src/hera/workflows/models/sensor.pyi diff --git a/Makefile b/Makefile index f7b9bb322..491756087 100644 --- a/Makefile +++ b/Makefile @@ -45,6 +45,7 @@ workflows-models: ## Generate the Workflows models portion of Argo Workflows --disable-appending-item-suffix \ --disable-timestamp @poetry run python scripts/models.py $(OPENAPI_SPEC_URL) workflows + @poetry run stubgen -o src -p hera.workflows.models && rm -rf **/__init__.pyi @$(MAKE) format .PHONY: events-models @@ -59,6 +60,7 @@ events-models: ## Generate the Events models portion of Argo Workflows --disable-appending-item-suffix \ --disable-timestamp @poetry run python scripts/models.py $(OPENAPI_SPEC_URL) events + @poetry run stubgen -o src -p hera.events.models && rm -rf **/__init__.pyi @$(MAKE) format .PHONY: models diff --git a/scripts/models.py b/scripts/models.py index fafb2fe70..c5420a13d 100644 --- a/scripts/models.py +++ b/scripts/models.py @@ -2,6 +2,7 @@ # we want the init of `workflows.models` to have a filtered import of Workflow models # we can parse out the JSON using the old code and filter on Workflow objects +import os import sys from pathlib import Path @@ -129,6 +130,19 @@ def write_imports(imports: list, models_type: str, openapi_spec_url: str) -> Non f.write(f"from hera.{models_type}.models.io.k8s.api.core.v1 import {enum}\n") +# Ensure that an init file is present in every folder recursively inside the hera//models folder +# This is to ensure that stubgen works appropriately +def ensure_init(): + for models_type in model_types: + for root, _, files in os.walk(f"src/hera/{models_type}/models"): + # ignore __pycache__ folders + if "__pycache__" in root: + continue + if "__init__.py" not in files: + with open(f"{root}/__init__.py", "w") as f: + f.write("") + + if __name__ == "__main__": models_type = get_models_type() openapi_spec_url = get_openapi_spec_url() diff --git a/src/hera/events/models/eventsource.pyi b/src/hera/events/models/eventsource.pyi new file mode 100644 index 000000000..6a6eb9f8d --- /dev/null +++ b/src/hera/events/models/eventsource.pyi @@ -0,0 +1,30 @@ +from typing import Optional + +from hera.shared._base_model import BaseModel as BaseModel + +from .io.argoproj.events import v1alpha1 as v1alpha1 +from .io.k8s.apimachinery.pkg.apis.meta import v1 as v1 + +class EventSourceDeletedResponse(BaseModel): ... + +class LogEntry(BaseModel): + event_name: Optional[str] + event_source_name: Optional[str] + event_source_type: Optional[str] + level: Optional[str] + msg: Optional[str] + namespace: Optional[str] + time: Optional[v1.Time] + +class CreateEventSourceRequest(BaseModel): + event_source: Optional[v1alpha1.EventSource] + namespace: Optional[str] + +class EventSourceWatchEvent(BaseModel): + object: Optional[v1alpha1.EventSource] + type: Optional[str] + +class UpdateEventSourceRequest(BaseModel): + event_source: Optional[v1alpha1.EventSource] + name: Optional[str] + namespace: Optional[str] diff --git a/src/hera/events/models/google/protobuf.pyi b/src/hera/events/models/google/protobuf.pyi new file mode 100644 index 000000000..54a09fbaf --- /dev/null +++ b/src/hera/events/models/google/protobuf.pyi @@ -0,0 +1,7 @@ +from typing import Optional + +from hera.shared._base_model import BaseModel as BaseModel + +class Any(BaseModel): + type_url: Optional[str] + value: Optional[str] diff --git a/src/hera/events/models/grpc/__init__.py b/src/hera/events/models/grpc/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/hera/events/models/grpc/gateway/runtime.pyi b/src/hera/events/models/grpc/gateway/runtime.pyi new file mode 100644 index 000000000..6f34eadc7 --- /dev/null +++ b/src/hera/events/models/grpc/gateway/runtime.pyi @@ -0,0 +1,18 @@ +from typing import List, Optional + +from hera.shared._base_model import BaseModel as BaseModel + +from ...google import protobuf as protobuf + +class Error(BaseModel): + code: Optional[int] + details: Optional[List[protobuf.Any]] + error: Optional[str] + message: Optional[str] + +class StreamError(BaseModel): + details: Optional[List[protobuf.Any]] + grpc_code: Optional[int] + http_code: Optional[int] + http_status: Optional[str] + message: Optional[str] diff --git a/src/hera/events/models/io/__init__.py b/src/hera/events/models/io/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/hera/events/models/io/argoproj/__init__.py b/src/hera/events/models/io/argoproj/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/hera/events/models/io/argoproj/events/v1alpha1.pyi b/src/hera/events/models/io/argoproj/events/v1alpha1.pyi new file mode 100644 index 000000000..3c58b9ff6 --- /dev/null +++ b/src/hera/events/models/io/argoproj/events/v1alpha1.pyi @@ -0,0 +1,807 @@ +from typing import Dict, List, Optional + +from hera.shared._base_model import BaseModel as BaseModel + +from ...k8s.api.core import v1 as v1 +from ...k8s.apimachinery.pkg.apis.meta import v1 as v1_1 + +class AMQPConsumeConfig(BaseModel): + auto_ack: Optional[bool] + consumer_tag: Optional[str] + exclusive: Optional[bool] + no_local: Optional[bool] + no_wait: Optional[bool] + +class AMQPExchangeDeclareConfig(BaseModel): + auto_delete: Optional[bool] + durable: Optional[bool] + internal: Optional[bool] + no_wait: Optional[bool] + +class AMQPQueueBindConfig(BaseModel): + no_wait: Optional[bool] + +class AMQPQueueDeclareConfig(BaseModel): + arguments: Optional[str] + auto_delete: Optional[bool] + durable: Optional[bool] + exclusive: Optional[bool] + name: Optional[str] + no_wait: Optional[bool] + +class Amount(BaseModel): + value: Optional[str] + +class BitbucketRepository(BaseModel): + owner: Optional[str] + repository_slug: Optional[str] + +class BitbucketServerRepository(BaseModel): + project_key: Optional[str] + repository_slug: Optional[str] + +class CatchupConfiguration(BaseModel): + enabled: Optional[bool] + max_duration: Optional[str] + +class ConditionsResetByTime(BaseModel): + cron: Optional[str] + timezone: Optional[str] + +class ConditionsResetCriteria(BaseModel): + by_time: Optional[ConditionsResetByTime] + +class ConfigMapPersistence(BaseModel): + create_if_not_exist: Optional[bool] + name: Optional[str] + +class DataFilter(BaseModel): + comparator: Optional[str] + path: Optional[str] + template: Optional[str] + type: Optional[str] + value: Optional[List[str]] + +class EventDependencyTransformer(BaseModel): + jq: Optional[str] + script: Optional[str] + +class EventPersistence(BaseModel): + catchup: Optional[CatchupConfiguration] + config_map: Optional[ConfigMapPersistence] + +class EventSourceFilter(BaseModel): + expression: Optional[str] + +class FileArtifact(BaseModel): + path: Optional[str] + +class GitRemoteConfig(BaseModel): + name: Optional[str] + urls: Optional[List[str]] + +class Int64OrString(BaseModel): + int64_val: Optional[str] + str_val: Optional[str] + type: Optional[str] + +class KafkaConsumerGroup(BaseModel): + group_name: Optional[str] + oldest: Optional[bool] + rebalance_strategy: Optional[str] + +class LogTrigger(BaseModel): + interval_seconds: Optional[str] + +class Metadata(BaseModel): + annotations: Optional[Dict[str, str]] + labels: Optional[Dict[str, str]] + +class OwnedRepositories(BaseModel): + names: Optional[List[str]] + owner: Optional[str] + +class PayloadField(BaseModel): + name: Optional[str] + path: Optional[str] + +class RateLimit(BaseModel): + requests_per_unit: Optional[int] + unit: Optional[str] + +class Resource(BaseModel): + value: Optional[str] + +class S3Bucket(BaseModel): + key: Optional[str] + name: Optional[str] + +class S3Filter(BaseModel): + prefix: Optional[str] + suffix: Optional[str] + +class Selector(BaseModel): + key: Optional[str] + operation: Optional[str] + value: Optional[str] + +class StatusPolicy(BaseModel): + allow: Optional[List[int]] + +class StorageGridFilter(BaseModel): + prefix: Optional[str] + suffix: Optional[str] + +class TimeFilter(BaseModel): + start: Optional[str] + stop: Optional[str] + +class TriggerParameterSource(BaseModel): + context_key: Optional[str] + context_template: Optional[str] + data_key: Optional[str] + data_template: Optional[str] + dependency_name: Optional[str] + value: Optional[str] + +class URLArtifact(BaseModel): + path: Optional[str] + verify_cert: Optional[bool] + +class WatchPathConfig(BaseModel): + directory: Optional[str] + path: Optional[str] + path_regexp: Optional[str] + +class AzureEventsHubEventSource(BaseModel): + filter: Optional[EventSourceFilter] + fqdn: Optional[str] + hub_name: Optional[str] + metadata: Optional[Dict[str, str]] + shared_access_key: Optional[v1.SecretKeySelector] + shared_access_key_name: Optional[v1.SecretKeySelector] + +class Backoff(BaseModel): + duration: Optional[Int64OrString] + factor: Optional[Amount] + jitter: Optional[Amount] + steps: Optional[int] + +class BasicAuth(BaseModel): + password: Optional[v1.SecretKeySelector] + username: Optional[v1.SecretKeySelector] + +class BitbucketBasicAuth(BaseModel): + password: Optional[v1.SecretKeySelector] + username: Optional[v1.SecretKeySelector] + +class CalendarEventSource(BaseModel): + exclusion_dates: Optional[List[str]] + filter: Optional[EventSourceFilter] + interval: Optional[str] + metadata: Optional[Dict[str, str]] + persistence: Optional[EventPersistence] + schedule: Optional[str] + timezone: Optional[str] + +class Condition(BaseModel): + last_transition_time: Optional[v1_1.Time] + message: Optional[str] + reason: Optional[str] + status: Optional[str] + type: Optional[str] + +class EventContext(BaseModel): + datacontenttype: Optional[str] + id: Optional[str] + source: Optional[str] + specversion: Optional[str] + subject: Optional[str] + time: Optional[v1_1.Time] + type: Optional[str] + +class ExprFilter(BaseModel): + expr: Optional[str] + fields: Optional[List[PayloadField]] + +class FileEventSource(BaseModel): + event_type: Optional[str] + filter: Optional[EventSourceFilter] + metadata: Optional[Dict[str, str]] + polling: Optional[bool] + watch_path_config: Optional[WatchPathConfig] + +class GenericEventSource(BaseModel): + auth_secret: Optional[v1.SecretKeySelector] + config: Optional[str] + filter: Optional[EventSourceFilter] + insecure: Optional[bool] + json_body: Optional[bool] + metadata: Optional[Dict[str, str]] + url: Optional[str] + +class GitCreds(BaseModel): + password: Optional[v1.SecretKeySelector] + username: Optional[v1.SecretKeySelector] + +class GithubAppCreds(BaseModel): + app_id: Optional[str] + installation_id: Optional[str] + private_key: Optional[v1.SecretKeySelector] + +class HDFSEventSource(BaseModel): + addresses: Optional[List[str]] + check_interval: Optional[str] + filter: Optional[EventSourceFilter] + hdfs_user: Optional[str] + krb_c_cache_secret: Optional[v1.SecretKeySelector] + krb_config_config_map: Optional[v1.ConfigMapKeySelector] + krb_keytab_secret: Optional[v1.SecretKeySelector] + krb_realm: Optional[str] + krb_service_principal_name: Optional[str] + krb_username: Optional[str] + metadata: Optional[Dict[str, str]] + type: Optional[str] + watch_path_config: Optional[WatchPathConfig] + +class K8SResourcePolicy(BaseModel): + backoff: Optional[Backoff] + error_on_backoff_timeout: Optional[bool] + labels: Optional[Dict[str, str]] + +class NATSAuth(BaseModel): + basic: Optional[BasicAuth] + credential: Optional[v1.SecretKeySelector] + nkey: Optional[v1.SecretKeySelector] + token: Optional[v1.SecretKeySelector] + +class PubSubEventSource(BaseModel): + credential_secret: Optional[v1.SecretKeySelector] + delete_subscription_on_finish: Optional[bool] + filter: Optional[EventSourceFilter] + json_body: Optional[bool] + metadata: Optional[Dict[str, str]] + project_id: Optional[str] + subscription_id: Optional[str] + topic: Optional[str] + topic_project_id: Optional[str] + +class ResourceFilter(BaseModel): + after_start: Optional[bool] + created_by: Optional[v1_1.Time] + fields: Optional[List[Selector]] + labels: Optional[List[Selector]] + prefix: Optional[str] + +class S3Artifact(BaseModel): + access_key: Optional[v1.SecretKeySelector] + bucket: Optional[S3Bucket] + endpoint: Optional[str] + events: Optional[List[str]] + filter: Optional[S3Filter] + insecure: Optional[bool] + metadata: Optional[Dict[str, str]] + region: Optional[str] + secret_key: Optional[v1.SecretKeySelector] + +class SASLConfig(BaseModel): + mechanism: Optional[str] + password: Optional[v1.SecretKeySelector] + user: Optional[v1.SecretKeySelector] + +class SQSEventSource(BaseModel): + access_key: Optional[v1.SecretKeySelector] + dlq: Optional[bool] + endpoint: Optional[str] + filter: Optional[EventSourceFilter] + json_body: Optional[bool] + metadata: Optional[Dict[str, str]] + queue: Optional[str] + queue_account_id: Optional[str] + region: Optional[str] + role_arn: Optional[str] + secret_key: Optional[v1.SecretKeySelector] + session_token: Optional[v1.SecretKeySelector] + wait_time_seconds: Optional[str] + +class Status(BaseModel): + conditions: Optional[List[Condition]] + +class TLSConfig(BaseModel): + ca_cert_secret: Optional[v1.SecretKeySelector] + client_cert_secret: Optional[v1.SecretKeySelector] + client_key_secret: Optional[v1.SecretKeySelector] + insecure_skip_verify: Optional[bool] + +class TriggerParameter(BaseModel): + dest: Optional[str] + operation: Optional[str] + src: Optional[TriggerParameterSource] + +class TriggerPolicy(BaseModel): + k8s: Optional[K8SResourcePolicy] + status: Optional[StatusPolicy] + +class ValueFromSource(BaseModel): + config_map_key_ref: Optional[v1.ConfigMapKeySelector] + secret_key_ref: Optional[v1.SecretKeySelector] + +class WebhookContext(BaseModel): + auth_secret: Optional[v1.SecretKeySelector] + endpoint: Optional[str] + max_payload_size: Optional[str] + metadata: Optional[Dict[str, str]] + method: Optional[str] + port: Optional[str] + server_cert_secret: Optional[v1.SecretKeySelector] + server_key_secret: Optional[v1.SecretKeySelector] + url: Optional[str] + +class WebhookEventSource(BaseModel): + filter: Optional[EventSourceFilter] + webhook_context: Optional[WebhookContext] + +class AMQPEventSource(BaseModel): + auth: Optional[BasicAuth] + connection_backoff: Optional[Backoff] + consume: Optional[AMQPConsumeConfig] + exchange_declare: Optional[AMQPExchangeDeclareConfig] + exchange_name: Optional[str] + exchange_type: Optional[str] + filter: Optional[EventSourceFilter] + json_body: Optional[bool] + metadata: Optional[Dict[str, str]] + queue_bind: Optional[AMQPQueueBindConfig] + queue_declare: Optional[AMQPQueueDeclareConfig] + routing_key: Optional[str] + tls: Optional[TLSConfig] + url: Optional[str] + url_secret: Optional[v1.SecretKeySelector] + +class AWSLambdaTrigger(BaseModel): + access_key: Optional[v1.SecretKeySelector] + function_name: Optional[str] + invocation_type: Optional[str] + parameters: Optional[List[TriggerParameter]] + payload: Optional[List[TriggerParameter]] + region: Optional[str] + role_arn: Optional[str] + secret_key: Optional[v1.SecretKeySelector] + +class AzureEventHubsTrigger(BaseModel): + fqdn: Optional[str] + hub_name: Optional[str] + parameters: Optional[List[TriggerParameter]] + payload: Optional[List[TriggerParameter]] + shared_access_key: Optional[v1.SecretKeySelector] + shared_access_key_name: Optional[v1.SecretKeySelector] + +class BitbucketAuth(BaseModel): + basic: Optional[BitbucketBasicAuth] + oauth_token: Optional[v1.SecretKeySelector] + +class BitbucketEventSource(BaseModel): + auth: Optional[BitbucketAuth] + delete_hook_on_finish: Optional[bool] + events: Optional[List[str]] + filter: Optional[EventSourceFilter] + metadata: Optional[Dict[str, str]] + owner: Optional[str] + project_key: Optional[str] + repositories: Optional[List[BitbucketRepository]] + repository_slug: Optional[str] + webhook: Optional[WebhookContext] + +class BitbucketServerEventSource(BaseModel): + access_token: Optional[v1.SecretKeySelector] + bitbucketserver_base_url: Optional[str] + delete_hook_on_finish: Optional[bool] + events: Optional[List[str]] + filter: Optional[EventSourceFilter] + metadata: Optional[Dict[str, str]] + project_key: Optional[str] + repositories: Optional[List[BitbucketServerRepository]] + repository_slug: Optional[str] + webhook: Optional[WebhookContext] + webhook_secret: Optional[v1.SecretKeySelector] + +class CustomTrigger(BaseModel): + cert_secret: Optional[v1.SecretKeySelector] + parameters: Optional[List[TriggerParameter]] + payload: Optional[List[TriggerParameter]] + secure: Optional[bool] + server_name_override: Optional[str] + server_url: Optional[str] + spec: Optional[Dict[str, str]] + +class EmitterEventSource(BaseModel): + broker: Optional[str] + channel_key: Optional[str] + channel_name: Optional[str] + connection_backoff: Optional[Backoff] + filter: Optional[EventSourceFilter] + json_body: Optional[bool] + metadata: Optional[Dict[str, str]] + password: Optional[v1.SecretKeySelector] + tls: Optional[TLSConfig] + username: Optional[v1.SecretKeySelector] + +class EventDependencyFilter(BaseModel): + context: Optional[EventContext] + data: Optional[List[DataFilter]] + data_logical_operator: Optional[str] + expr_logical_operator: Optional[str] + exprs: Optional[List[ExprFilter]] + script: Optional[str] + time: Optional[TimeFilter] + +class EventSourceStatus(BaseModel): + status: Optional[Status] + +class GitArtifact(BaseModel): + branch: Optional[str] + clone_directory: Optional[str] + creds: Optional[GitCreds] + file_path: Optional[str] + insecure_ignore_host_key: Optional[bool] + ref: Optional[str] + remote: Optional[GitRemoteConfig] + ssh_key_secret: Optional[v1.SecretKeySelector] + tag: Optional[str] + url: Optional[str] + +class GithubEventSource(BaseModel): + active: Optional[bool] + api_token: Optional[v1.SecretKeySelector] + content_type: Optional[str] + delete_hook_on_finish: Optional[bool] + events: Optional[List[str]] + filter: Optional[EventSourceFilter] + github_app: Optional[GithubAppCreds] + github_base_url: Optional[str] + github_upload_url: Optional[str] + id: Optional[str] + insecure: Optional[bool] + metadata: Optional[Dict[str, str]] + organizations: Optional[List[str]] + owner: Optional[str] + repositories: Optional[List[OwnedRepositories]] + repository: Optional[str] + webhook: Optional[WebhookContext] + webhook_secret: Optional[v1.SecretKeySelector] + +class GitlabEventSource(BaseModel): + access_token: Optional[v1.SecretKeySelector] + delete_hook_on_finish: Optional[bool] + enable_ssl_verification: Optional[bool] + events: Optional[List[str]] + filter: Optional[EventSourceFilter] + gitlab_base_url: Optional[str] + metadata: Optional[Dict[str, str]] + project_id: Optional[str] + projects: Optional[List[str]] + secret_token: Optional[v1.SecretKeySelector] + webhook: Optional[WebhookContext] + +class KafkaEventSource(BaseModel): + config: Optional[str] + connection_backoff: Optional[Backoff] + consumer_group: Optional[KafkaConsumerGroup] + filter: Optional[EventSourceFilter] + json_body: Optional[bool] + limit_events_per_second: Optional[str] + metadata: Optional[Dict[str, str]] + partition: Optional[str] + sasl: Optional[SASLConfig] + tls: Optional[TLSConfig] + topic: Optional[str] + url: Optional[str] + version: Optional[str] + +class KafkaTrigger(BaseModel): + compress: Optional[bool] + flush_frequency: Optional[int] + parameters: Optional[List[TriggerParameter]] + partition: Optional[int] + partitioning_key: Optional[str] + payload: Optional[List[TriggerParameter]] + required_acks: Optional[int] + sasl: Optional[SASLConfig] + tls: Optional[TLSConfig] + topic: Optional[str] + url: Optional[str] + version: Optional[str] + +class MQTTEventSource(BaseModel): + client_id: Optional[str] + connection_backoff: Optional[Backoff] + filter: Optional[EventSourceFilter] + json_body: Optional[bool] + metadata: Optional[Dict[str, str]] + tls: Optional[TLSConfig] + topic: Optional[str] + url: Optional[str] + +class NATSEventsSource(BaseModel): + auth: Optional[NATSAuth] + connection_backoff: Optional[Backoff] + filter: Optional[EventSourceFilter] + json_body: Optional[bool] + metadata: Optional[Dict[str, str]] + subject: Optional[str] + tls: Optional[TLSConfig] + url: Optional[str] + +class NATSTrigger(BaseModel): + parameters: Optional[List[TriggerParameter]] + payload: Optional[List[TriggerParameter]] + subject: Optional[str] + tls: Optional[TLSConfig] + url: Optional[str] + +class NSQEventSource(BaseModel): + channel: Optional[str] + connection_backoff: Optional[Backoff] + filter: Optional[EventSourceFilter] + host_address: Optional[str] + json_body: Optional[bool] + metadata: Optional[Dict[str, str]] + tls: Optional[TLSConfig] + topic: Optional[str] + +class OpenWhiskTrigger(BaseModel): + action_name: Optional[str] + auth_token: Optional[v1.SecretKeySelector] + host: Optional[str] + namespace: Optional[str] + parameters: Optional[List[TriggerParameter]] + payload: Optional[List[TriggerParameter]] + version: Optional[str] + +class PulsarEventSource(BaseModel): + auth_token_secret: Optional[v1.SecretKeySelector] + connection_backoff: Optional[Backoff] + filter: Optional[EventSourceFilter] + json_body: Optional[bool] + metadata: Optional[Dict[str, str]] + tls: Optional[TLSConfig] + tls_allow_insecure_connection: Optional[bool] + tls_trust_certs_secret: Optional[v1.SecretKeySelector] + tls_validate_hostname: Optional[bool] + topics: Optional[List[str]] + type: Optional[str] + url: Optional[str] + +class PulsarTrigger(BaseModel): + auth_token_secret: Optional[v1.SecretKeySelector] + connection_backoff: Optional[Backoff] + parameters: Optional[List[TriggerParameter]] + payload: Optional[List[TriggerParameter]] + tls: Optional[TLSConfig] + tls_allow_insecure_connection: Optional[bool] + tls_trust_certs_secret: Optional[v1.SecretKeySelector] + tls_validate_hostname: Optional[bool] + topic: Optional[str] + url: Optional[str] + +class RedisEventSource(BaseModel): + channels: Optional[List[str]] + db: Optional[int] + filter: Optional[EventSourceFilter] + host_address: Optional[str] + json_body: Optional[bool] + metadata: Optional[Dict[str, str]] + namespace: Optional[str] + password: Optional[v1.SecretKeySelector] + tls: Optional[TLSConfig] + username: Optional[str] + +class RedisStreamEventSource(BaseModel): + consumer_group: Optional[str] + db: Optional[int] + filter: Optional[EventSourceFilter] + host_address: Optional[str] + max_msg_count_per_read: Optional[int] + metadata: Optional[Dict[str, str]] + password: Optional[v1.SecretKeySelector] + streams: Optional[List[str]] + tls: Optional[TLSConfig] + username: Optional[str] + +class ResourceEventSource(BaseModel): + event_types: Optional[List[str]] + filter: Optional[ResourceFilter] + group_version_resource: Optional[v1_1.GroupVersionResource] + metadata: Optional[Dict[str, str]] + namespace: Optional[str] + +class SNSEventSource(BaseModel): + access_key: Optional[v1.SecretKeySelector] + endpoint: Optional[str] + filter: Optional[EventSourceFilter] + metadata: Optional[Dict[str, str]] + region: Optional[str] + role_arn: Optional[str] + secret_key: Optional[v1.SecretKeySelector] + topic_arn: Optional[str] + validate_signature: Optional[bool] + webhook: Optional[WebhookContext] + +class SecureHeader(BaseModel): + name: Optional[str] + value_from: Optional[ValueFromSource] + +class SensorStatus(BaseModel): + status: Optional[Status] + +class Service(BaseModel): + cluster_ip: Optional[str] + ports: Optional[List[v1.ServicePort]] + +class SlackEventSource(BaseModel): + filter: Optional[EventSourceFilter] + metadata: Optional[Dict[str, str]] + signing_secret: Optional[v1.SecretKeySelector] + token: Optional[v1.SecretKeySelector] + webhook: Optional[WebhookContext] + +class SlackTrigger(BaseModel): + channel: Optional[str] + message: Optional[str] + parameters: Optional[List[TriggerParameter]] + slack_token: Optional[v1.SecretKeySelector] + +class StorageGridEventSource(BaseModel): + api_url: Optional[str] + auth_token: Optional[v1.SecretKeySelector] + bucket: Optional[str] + events: Optional[List[str]] + filter: Optional[StorageGridFilter] + metadata: Optional[Dict[str, str]] + region: Optional[str] + topic_arn: Optional[str] + webhook: Optional[WebhookContext] + +class StripeEventSource(BaseModel): + api_key: Optional[v1.SecretKeySelector] + create_webhook: Optional[bool] + event_filter: Optional[List[str]] + metadata: Optional[Dict[str, str]] + webhook: Optional[WebhookContext] + +class ArtifactLocation(BaseModel): + configmap: Optional[v1.ConfigMapKeySelector] + file: Optional[FileArtifact] + git: Optional[GitArtifact] + inline: Optional[str] + resource: Optional[Resource] + s3: Optional[S3Artifact] + url: Optional[URLArtifact] + +class EventDependency(BaseModel): + event_name: Optional[str] + event_source_name: Optional[str] + filters: Optional[EventDependencyFilter] + filters_logical_operator: Optional[str] + name: Optional[str] + transform: Optional[EventDependencyTransformer] + +class HTTPTrigger(BaseModel): + basic_auth: Optional[BasicAuth] + headers: Optional[Dict[str, str]] + method: Optional[str] + parameters: Optional[List[TriggerParameter]] + payload: Optional[List[TriggerParameter]] + secure_headers: Optional[List[SecureHeader]] + timeout: Optional[str] + tls: Optional[TLSConfig] + url: Optional[str] + +class StandardK8STrigger(BaseModel): + live_object: Optional[bool] + operation: Optional[str] + parameters: Optional[List[TriggerParameter]] + patch_strategy: Optional[str] + source: Optional[ArtifactLocation] + +class ArgoWorkflowTrigger(BaseModel): + args: Optional[List[str]] + operation: Optional[str] + parameters: Optional[List[TriggerParameter]] + source: Optional[ArtifactLocation] + +class TriggerTemplate(BaseModel): + argo_workflow: Optional[ArgoWorkflowTrigger] + aws_lambda: Optional[AWSLambdaTrigger] + azure_event_hubs: Optional[AzureEventHubsTrigger] + conditions: Optional[str] + conditions_reset: Optional[List[ConditionsResetCriteria]] + custom: Optional[CustomTrigger] + http: Optional[HTTPTrigger] + k8s: Optional[StandardK8STrigger] + kafka: Optional[KafkaTrigger] + log: Optional[LogTrigger] + name: Optional[str] + nats: Optional[NATSTrigger] + open_whisk: Optional[OpenWhiskTrigger] + pulsar: Optional[PulsarTrigger] + slack: Optional[SlackTrigger] + +class Template(BaseModel): + affinity: Optional[v1.Affinity] + container: Optional[v1.Container] + image_pull_secrets: Optional[List[v1.LocalObjectReference]] + metadata: Optional[Metadata] + node_selector: Optional[Dict[str, str]] + priority: Optional[int] + priority_class_name: Optional[str] + security_context: Optional[v1.PodSecurityContext] + service_account_name: Optional[str] + tolerations: Optional[List[v1.Toleration]] + volumes: Optional[List[v1.Volume]] + +class Trigger(BaseModel): + parameters: Optional[List[TriggerParameter]] + policy: Optional[TriggerPolicy] + rate_limit: Optional[RateLimit] + retry_strategy: Optional[Backoff] + template: Optional[TriggerTemplate] + +class EventSourceSpec(BaseModel): + amqp: Optional[Dict[str, AMQPEventSource]] + azure_events_hub: Optional[Dict[str, AzureEventsHubEventSource]] + bitbucket: Optional[Dict[str, BitbucketEventSource]] + bitbucketserver: Optional[Dict[str, BitbucketServerEventSource]] + calendar: Optional[Dict[str, CalendarEventSource]] + emitter: Optional[Dict[str, EmitterEventSource]] + event_bus_name: Optional[str] + file: Optional[Dict[str, FileEventSource]] + generic: Optional[Dict[str, GenericEventSource]] + github: Optional[Dict[str, GithubEventSource]] + gitlab: Optional[Dict[str, GitlabEventSource]] + hdfs: Optional[Dict[str, HDFSEventSource]] + kafka: Optional[Dict[str, KafkaEventSource]] + minio: Optional[Dict[str, S3Artifact]] + mqtt: Optional[Dict[str, MQTTEventSource]] + nats: Optional[Dict[str, NATSEventsSource]] + nsq: Optional[Dict[str, NSQEventSource]] + pub_sub: Optional[Dict[str, PubSubEventSource]] + pulsar: Optional[Dict[str, PulsarEventSource]] + redis: Optional[Dict[str, RedisEventSource]] + redis_stream: Optional[Dict[str, RedisStreamEventSource]] + replicas: Optional[int] + resource: Optional[Dict[str, ResourceEventSource]] + service: Optional[Service] + slack: Optional[Dict[str, SlackEventSource]] + sns: Optional[Dict[str, SNSEventSource]] + sqs: Optional[Dict[str, SQSEventSource]] + storage_grid: Optional[Dict[str, StorageGridEventSource]] + stripe: Optional[Dict[str, StripeEventSource]] + template: Optional[Template] + webhook: Optional[Dict[str, WebhookEventSource]] + +class SensorSpec(BaseModel): + dependencies: Optional[List[EventDependency]] + error_on_failed_round: Optional[bool] + event_bus_name: Optional[str] + replicas: Optional[int] + template: Optional[Template] + triggers: Optional[List[Trigger]] + +class EventSource(BaseModel): + metadata: Optional[v1_1.ObjectMeta] + spec: Optional[EventSourceSpec] + status: Optional[EventSourceStatus] + +class EventSourceList(BaseModel): + items: Optional[List[EventSource]] + metadata: Optional[v1_1.ListMeta] + +class Sensor(BaseModel): + metadata: Optional[v1_1.ObjectMeta] + spec: Optional[SensorSpec] + status: Optional[SensorStatus] + +class SensorList(BaseModel): + items: Optional[List[Sensor]] + metadata: Optional[v1_1.ListMeta] diff --git a/src/hera/events/models/io/argoproj/workflow/v1alpha1.pyi b/src/hera/events/models/io/argoproj/workflow/v1alpha1.pyi new file mode 100644 index 000000000..26203f374 --- /dev/null +++ b/src/hera/events/models/io/argoproj/workflow/v1alpha1.pyi @@ -0,0 +1,1084 @@ +from typing import Any, Dict, List, Optional + +from hera.shared._base_model import BaseModel as BaseModel + +from ...k8s.api.core import v1 as v1 +from ...k8s.api.policy import v1beta1 as v1beta1 +from ...k8s.apimachinery.pkg.apis.meta import v1 as v1_1 +from ...k8s.apimachinery.pkg.util import intstr as intstr + +class Amount(BaseModel): + __root__: float + +class ArchivedWorkflowDeletedResponse(BaseModel): ... + +class ArtGCStatus(BaseModel): + not_specified: Optional[bool] + pods_recouped: Optional[Dict[str, bool]] + strategies_processed: Optional[Dict[str, bool]] + +class ArtifactRepositoryRef(BaseModel): + config_map: Optional[str] + key: Optional[str] + +class ArtifactResult(BaseModel): + error: Optional[str] + name: str + success: Optional[bool] + +class ArtifactResultNodeStatus(BaseModel): + artifact_results: Optional[Dict[str, ArtifactResult]] + +class ClusterWorkflowTemplateDeleteResponse(BaseModel): ... + +class CollectEventRequest(BaseModel): + name: Optional[str] + +class CollectEventResponse(BaseModel): ... + +class Condition(BaseModel): + message: Optional[str] + status: Optional[str] + type: Optional[str] + +class ContinueOn(BaseModel): + error: Optional[bool] + failed: Optional[bool] + +class Counter(BaseModel): + value: str + +class CreateS3BucketOptions(BaseModel): + object_locking: Optional[bool] + +class CronWorkflowDeletedResponse(BaseModel): ... + +class CronWorkflowResumeRequest(BaseModel): + name: Optional[str] + namespace: Optional[str] + +class CronWorkflowSuspendRequest(BaseModel): + name: Optional[str] + namespace: Optional[str] + +class Event(BaseModel): + selector: str + +class EventResponse(BaseModel): ... + +class ExecutorConfig(BaseModel): + service_account_name: Optional[str] + +class Gauge(BaseModel): + realtime: bool + value: str + +class GetUserInfoResponse(BaseModel): + email: Optional[str] + email_verified: Optional[bool] + groups: Optional[List[str]] + issuer: Optional[str] + service_account_name: Optional[str] + service_account_namespace: Optional[str] + subject: Optional[str] + +class HTTPBodySource(BaseModel): + bytes: Optional[str] + +class Header(BaseModel): + name: str + value: str + +class Histogram(BaseModel): + buckets: List[Amount] + value: str + +class Item(BaseModel): + __root__: Any + +class LabelKeys(BaseModel): + items: Optional[List[str]] + +class LabelValueFrom(BaseModel): + expression: str + +class LabelValues(BaseModel): + items: Optional[List[str]] + +class Link(BaseModel): + name: str + scope: str + url: str + +class LogEntry(BaseModel): + content: Optional[str] + pod_name: Optional[str] + +class MemoizationStatus(BaseModel): + cache_name: str + hit: bool + key: str + +class Metadata(BaseModel): + annotations: Optional[Dict[str, str]] + labels: Optional[Dict[str, str]] + +class MetricLabel(BaseModel): + key: str + value: str + +class Mutex(BaseModel): + name: Optional[str] + +class MutexHolding(BaseModel): + holder: Optional[str] + mutex: Optional[str] + +class MutexStatus(BaseModel): + holding: Optional[List[MutexHolding]] + waiting: Optional[List[MutexHolding]] + +class NodeSynchronizationStatus(BaseModel): + waiting: Optional[str] + +class NoneStrategy(BaseModel): ... + +class OAuth2EndpointParam(BaseModel): + key: str + value: Optional[str] + +class OSSLifecycleRule(BaseModel): + mark_deletion_after_days: Optional[int] + mark_infrequent_access_after_days: Optional[int] + +class Plugin(BaseModel): ... + +class Prometheus(BaseModel): + counter: Optional[Counter] + gauge: Optional[Gauge] + help: str + histogram: Optional[Histogram] + labels: Optional[List[MetricLabel]] + name: str + when: Optional[str] + +class RawArtifact(BaseModel): + data: str + +class ResubmitArchivedWorkflowRequest(BaseModel): + memoized: Optional[bool] + name: Optional[str] + namespace: Optional[str] + parameters: Optional[List[str]] + uid: Optional[str] + +class RetryArchivedWorkflowRequest(BaseModel): + name: Optional[str] + namespace: Optional[str] + node_field_selector: Optional[str] + parameters: Optional[List[str]] + restart_successful: Optional[bool] + uid: Optional[str] + +class RetryNodeAntiAffinity(BaseModel): ... + +class SemaphoreHolding(BaseModel): + holders: Optional[List[str]] + semaphore: Optional[str] + +class SemaphoreStatus(BaseModel): + holding: Optional[List[SemaphoreHolding]] + waiting: Optional[List[SemaphoreHolding]] + +class SuppliedValueFrom(BaseModel): ... + +class SuspendTemplate(BaseModel): + duration: Optional[str] + +class SynchronizationStatus(BaseModel): + mutex: Optional[MutexStatus] + semaphore: Optional[SemaphoreStatus] + +class TTLStrategy(BaseModel): + seconds_after_completion: Optional[int] + seconds_after_failure: Optional[int] + seconds_after_success: Optional[int] + +class TarStrategy(BaseModel): + compression_level: Optional[int] + +class TemplateRef(BaseModel): + cluster_scope: Optional[bool] + name: Optional[str] + template: Optional[str] + +class TransformationStep(BaseModel): + expression: str + +class Version(BaseModel): + build_date: str + compiler: str + git_commit: str + git_tag: str + git_tree_state: str + go_version: str + platform: str + version: str + +class VolumeClaimGC(BaseModel): + strategy: Optional[str] + +class WorkflowDeleteResponse(BaseModel): ... + +class WorkflowMetadata(BaseModel): + annotations: Optional[Dict[str, str]] + labels: Optional[Dict[str, str]] + labels_from: Optional[Dict[str, LabelValueFrom]] + +class WorkflowResubmitRequest(BaseModel): + memoized: Optional[bool] + name: Optional[str] + namespace: Optional[str] + parameters: Optional[List[str]] + +class WorkflowResumeRequest(BaseModel): + name: Optional[str] + namespace: Optional[str] + node_field_selector: Optional[str] + +class WorkflowRetryRequest(BaseModel): + name: Optional[str] + namespace: Optional[str] + node_field_selector: Optional[str] + parameters: Optional[List[str]] + restart_successful: Optional[bool] + +class WorkflowSetRequest(BaseModel): + message: Optional[str] + name: Optional[str] + namespace: Optional[str] + node_field_selector: Optional[str] + output_parameters: Optional[str] + phase: Optional[str] + +class WorkflowStopRequest(BaseModel): + message: Optional[str] + name: Optional[str] + namespace: Optional[str] + node_field_selector: Optional[str] + +class WorkflowSuspendRequest(BaseModel): + name: Optional[str] + namespace: Optional[str] + +class WorkflowTemplateDeleteResponse(BaseModel): ... + +class WorkflowTemplateRef(BaseModel): + cluster_scope: Optional[bool] + name: Optional[str] + +class WorkflowTerminateRequest(BaseModel): + name: Optional[str] + namespace: Optional[str] + +class ZipStrategy(BaseModel): ... + +class ArchiveStrategy(BaseModel): + none: Optional[NoneStrategy] + tar: Optional[TarStrategy] + zip: Optional[ZipStrategy] + +class ArtifactGC(BaseModel): + pod_metadata: Optional[Metadata] + service_account_name: Optional[str] + strategy: Optional[str] + +class ArtifactGCStatus(BaseModel): + artifact_results_by_node: Optional[Dict[str, ArtifactResultNodeStatus]] + +class ArtifactoryArtifact(BaseModel): + password_secret: Optional[v1.SecretKeySelector] + url: str + username_secret: Optional[v1.SecretKeySelector] + +class ArtifactoryArtifactRepository(BaseModel): + password_secret: Optional[v1.SecretKeySelector] + repo_url: Optional[str] + username_secret: Optional[v1.SecretKeySelector] + +class AzureArtifact(BaseModel): + account_key_secret: Optional[v1.SecretKeySelector] + blob: str + container: str + endpoint: str + use_sdk_creds: Optional[bool] + +class AzureArtifactRepository(BaseModel): + account_key_secret: Optional[v1.SecretKeySelector] + blob_name_format: Optional[str] + container: str + endpoint: str + use_sdk_creds: Optional[bool] + +class Backoff(BaseModel): + duration: Optional[str] + factor: Optional[intstr.IntOrString] + max_duration: Optional[str] + +class BasicAuth(BaseModel): + password_secret: Optional[v1.SecretKeySelector] + username_secret: Optional[v1.SecretKeySelector] + +class Cache(BaseModel): + config_map: v1.ConfigMapKeySelector + +class ClientCertAuth(BaseModel): + client_cert_secret: Optional[v1.SecretKeySelector] + client_key_secret: Optional[v1.SecretKeySelector] + +class ContainerSetRetryStrategy(BaseModel): + duration: Optional[str] + retries: intstr.IntOrString + +class CronWorkflowStatus(BaseModel): + active: List[v1.ObjectReference] + conditions: List[Condition] + last_scheduled_time: v1_1.Time + +class GCSArtifact(BaseModel): + bucket: Optional[str] + key: str + service_account_key_secret: Optional[v1.SecretKeySelector] + +class GCSArtifactRepository(BaseModel): + bucket: Optional[str] + key_format: Optional[str] + service_account_key_secret: Optional[v1.SecretKeySelector] + +class GitArtifact(BaseModel): + branch: Optional[str] + depth: Optional[int] + disable_submodules: Optional[bool] + fetch: Optional[List[str]] + insecure_ignore_host_key: Optional[bool] + password_secret: Optional[v1.SecretKeySelector] + repo: str + revision: Optional[str] + single_branch: Optional[bool] + ssh_private_key_secret: Optional[v1.SecretKeySelector] + username_secret: Optional[v1.SecretKeySelector] + +class HDFSArtifact(BaseModel): + addresses: Optional[List[str]] + force: Optional[bool] + hdfs_user: Optional[str] + krb_c_cache_secret: Optional[v1.SecretKeySelector] + krb_config_config_map: Optional[v1.ConfigMapKeySelector] + krb_keytab_secret: Optional[v1.SecretKeySelector] + krb_realm: Optional[str] + krb_service_principal_name: Optional[str] + krb_username: Optional[str] + path: str + +class HDFSArtifactRepository(BaseModel): + addresses: Optional[List[str]] + force: Optional[bool] + hdfs_user: Optional[str] + krb_c_cache_secret: Optional[v1.SecretKeySelector] + krb_config_config_map: Optional[v1.ConfigMapKeySelector] + krb_keytab_secret: Optional[v1.SecretKeySelector] + krb_realm: Optional[str] + krb_service_principal_name: Optional[str] + krb_username: Optional[str] + path_format: Optional[str] + +class HTTPHeaderSource(BaseModel): + secret_key_ref: Optional[v1.SecretKeySelector] + +class InfoResponse(BaseModel): + links: Optional[List[Link]] + managed_namespace: Optional[str] + modals: Optional[Dict[str, bool]] + nav_color: Optional[str] + +class Memoize(BaseModel): + cache: Cache + key: str + max_age: str + +class Metrics(BaseModel): + prometheus: List[Prometheus] + +class OAuth2Auth(BaseModel): + client_id_secret: Optional[v1.SecretKeySelector] + client_secret_secret: Optional[v1.SecretKeySelector] + endpoint_params: Optional[List[OAuth2EndpointParam]] + scopes: Optional[List[str]] + token_url_secret: Optional[v1.SecretKeySelector] + +class OSSArtifact(BaseModel): + access_key_secret: Optional[v1.SecretKeySelector] + bucket: Optional[str] + create_bucket_if_not_present: Optional[bool] + endpoint: Optional[str] + key: str + lifecycle_rule: Optional[OSSLifecycleRule] + secret_key_secret: Optional[v1.SecretKeySelector] + security_token: Optional[str] + +class OSSArtifactRepository(BaseModel): + access_key_secret: Optional[v1.SecretKeySelector] + bucket: Optional[str] + create_bucket_if_not_present: Optional[bool] + endpoint: Optional[str] + key_format: Optional[str] + lifecycle_rule: Optional[OSSLifecycleRule] + secret_key_secret: Optional[v1.SecretKeySelector] + security_token: Optional[str] + +class RetryAffinity(BaseModel): + node_anti_affinity: Optional[RetryNodeAntiAffinity] + +class RetryStrategy(BaseModel): + affinity: Optional[RetryAffinity] + backoff: Optional[Backoff] + expression: Optional[str] + limit: Optional[intstr.IntOrString] + retry_policy: Optional[str] + +class S3EncryptionOptions(BaseModel): + enable_encryption: Optional[bool] + kms_encryption_context: Optional[str] + kms_key_id: Optional[str] + server_side_customer_key_secret: Optional[v1.SecretKeySelector] + +class SemaphoreRef(BaseModel): + config_map_key_ref: Optional[v1.ConfigMapKeySelector] + +class Sequence(BaseModel): + count: Optional[intstr.IntOrString] + end: Optional[intstr.IntOrString] + format: Optional[str] + start: Optional[intstr.IntOrString] + +class SubmitOpts(BaseModel): + annotations: Optional[str] + dry_run: Optional[bool] + entry_point: Optional[str] + generate_name: Optional[str] + labels: Optional[str] + name: Optional[str] + owner_reference: Optional[v1_1.OwnerReference] + parameters: Optional[List[str]] + pod_priority_class_name: Optional[str] + priority: Optional[int] + server_dry_run: Optional[bool] + service_account: Optional[str] + +class Synchronization(BaseModel): + mutex: Optional[Mutex] + semaphore: Optional[SemaphoreRef] + +class ValueFrom(BaseModel): + config_map_key_ref: Optional[v1.ConfigMapKeySelector] + default: Optional[str] + event: Optional[str] + expression: Optional[str] + jq_filter: Optional[str] + json_path: Optional[str] + parameter: Optional[str] + path: Optional[str] + supplied: Optional[SuppliedValueFrom] + +class WorkflowSubmitRequest(BaseModel): + namespace: Optional[str] + resource_kind: Optional[str] + resource_name: Optional[str] + submit_options: Optional[SubmitOpts] + +class HTTPAuth(BaseModel): + basic_auth: Optional[BasicAuth] + client_cert: Optional[ClientCertAuth] + oauth2: Optional[OAuth2Auth] + +class HTTPHeader(BaseModel): + name: str + value: Optional[str] + value_from: Optional[HTTPHeaderSource] + +class Parameter(BaseModel): + default: Optional[str] + description: Optional[str] + enum: Optional[List[str]] + global_name: Optional[str] + name: str + value: Optional[str] + value_from: Optional[ValueFrom] + +class PodGC(BaseModel): + label_selector: Optional[v1_1.LabelSelector] + strategy: Optional[str] + +class S3Artifact(BaseModel): + access_key_secret: Optional[v1.SecretKeySelector] + bucket: Optional[str] + create_bucket_if_not_present: Optional[CreateS3BucketOptions] + encryption_options: Optional[S3EncryptionOptions] + endpoint: Optional[str] + insecure: Optional[bool] + key: Optional[str] + region: Optional[str] + role_arn: Optional[str] + secret_key_secret: Optional[v1.SecretKeySelector] + use_sdk_creds: Optional[bool] + +class S3ArtifactRepository(BaseModel): + access_key_secret: Optional[v1.SecretKeySelector] + bucket: Optional[str] + create_bucket_if_not_present: Optional[CreateS3BucketOptions] + encryption_options: Optional[S3EncryptionOptions] + endpoint: Optional[str] + insecure: Optional[bool] + key_format: Optional[str] + key_prefix: Optional[str] + region: Optional[str] + role_arn: Optional[str] + secret_key_secret: Optional[v1.SecretKeySelector] + use_sdk_creds: Optional[bool] + +class ArtifactRepository(BaseModel): + archive_logs: Optional[bool] + artifactory: Optional[ArtifactoryArtifactRepository] + azure: Optional[AzureArtifactRepository] + gcs: Optional[GCSArtifactRepository] + hdfs: Optional[HDFSArtifactRepository] + oss: Optional[OSSArtifactRepository] + s3: Optional[S3ArtifactRepository] + +class ArtifactRepositoryRefStatus(BaseModel): + artifact_repository: Optional[ArtifactRepository] + config_map: Optional[str] + default: Optional[bool] + key: Optional[str] + namespace: Optional[str] + +class HTTP(BaseModel): + body: Optional[str] + body_from: Optional[HTTPBodySource] + headers: Optional[List[HTTPHeader]] + insecure_skip_verify: Optional[bool] + method: Optional[str] + success_condition: Optional[str] + timeout_seconds: Optional[int] + url: str + +class HTTPArtifact(BaseModel): + auth: Optional[HTTPAuth] + headers: Optional[List[Header]] + url: str + +class Artifact(BaseModel): + archive: Optional[ArchiveStrategy] + archive_logs: Optional[bool] + artifact_gc: Optional[ArtifactGC] + artifactory: Optional[ArtifactoryArtifact] + azure: Optional[AzureArtifact] + deleted: Optional[bool] + from_: Optional[str] + from_expression: Optional[str] + gcs: Optional[GCSArtifact] + git: Optional[GitArtifact] + global_name: Optional[str] + hdfs: Optional[HDFSArtifact] + http: Optional[HTTPArtifact] + mode: Optional[int] + name: str + optional: Optional[bool] + oss: Optional[OSSArtifact] + path: Optional[str] + raw: Optional[RawArtifact] + recurse_mode: Optional[bool] + s3: Optional[S3Artifact] + sub_path: Optional[str] + +class ArtifactLocation(BaseModel): + archive_logs: Optional[bool] + artifactory: Optional[ArtifactoryArtifact] + azure: Optional[AzureArtifact] + gcs: Optional[GCSArtifact] + git: Optional[GitArtifact] + hdfs: Optional[HDFSArtifact] + http: Optional[HTTPArtifact] + oss: Optional[OSSArtifact] + raw: Optional[RawArtifact] + s3: Optional[S3Artifact] + +class ArtifactNodeSpec(BaseModel): + archive_location: Optional[ArtifactLocation] + artifacts: Optional[Dict[str, Artifact]] + +class ArtifactPaths(BaseModel): + archive: Optional[ArchiveStrategy] + archive_logs: Optional[bool] + artifact_gc: Optional[ArtifactGC] + artifactory: Optional[ArtifactoryArtifact] + azure: Optional[AzureArtifact] + deleted: Optional[bool] + from_: Optional[str] + from_expression: Optional[str] + gcs: Optional[GCSArtifact] + git: Optional[GitArtifact] + global_name: Optional[str] + hdfs: Optional[HDFSArtifact] + http: Optional[HTTPArtifact] + mode: Optional[int] + name: str + optional: Optional[bool] + oss: Optional[OSSArtifact] + path: Optional[str] + raw: Optional[RawArtifact] + recurse_mode: Optional[bool] + s3: Optional[S3Artifact] + sub_path: Optional[str] + +class ContainerNode(BaseModel): + args: Optional[List[str]] + command: Optional[List[str]] + dependencies: Optional[List[str]] + env: Optional[List[v1.EnvVar]] + env_from: Optional[List[v1.EnvFromSource]] + image: Optional[str] + image_pull_policy: Optional[str] + lifecycle: Optional[v1.Lifecycle] + liveness_probe: Optional[v1.Probe] + name: str + ports: Optional[List[v1.ContainerPort]] + readiness_probe: Optional[v1.Probe] + resources: Optional[v1.ResourceRequirements] + security_context: Optional[v1.SecurityContext] + startup_probe: Optional[v1.Probe] + stdin: Optional[bool] + stdin_once: Optional[bool] + termination_message_path: Optional[str] + termination_message_policy: Optional[str] + tty: Optional[bool] + volume_devices: Optional[List[v1.VolumeDevice]] + volume_mounts: Optional[List[v1.VolumeMount]] + working_dir: Optional[str] + +class ContainerSetTemplate(BaseModel): + containers: List[ContainerNode] + retry_strategy: Optional[ContainerSetRetryStrategy] + volume_mounts: Optional[List[v1.VolumeMount]] + +class DataSource(BaseModel): + artifact_paths: Optional[ArtifactPaths] + +class Inputs(BaseModel): + artifacts: Optional[List[Artifact]] + parameters: Optional[List[Parameter]] + +class ManifestFrom(BaseModel): + artifact: Artifact + +class Outputs(BaseModel): + artifacts: Optional[List[Artifact]] + exit_code: Optional[str] + parameters: Optional[List[Parameter]] + result: Optional[str] + +class ResourceTemplate(BaseModel): + action: str + failure_condition: Optional[str] + flags: Optional[List[str]] + manifest: Optional[str] + manifest_from: Optional[ManifestFrom] + merge_strategy: Optional[str] + set_owner_reference: Optional[bool] + success_condition: Optional[str] + +class ScriptTemplate(BaseModel): + args: Optional[List[str]] + command: Optional[List[str]] + env: Optional[List[v1.EnvVar]] + env_from: Optional[List[v1.EnvFromSource]] + image: str + image_pull_policy: Optional[str] + lifecycle: Optional[v1.Lifecycle] + liveness_probe: Optional[v1.Probe] + name: Optional[str] + ports: Optional[List[v1.ContainerPort]] + readiness_probe: Optional[v1.Probe] + resources: Optional[v1.ResourceRequirements] + security_context: Optional[v1.SecurityContext] + source: str + startup_probe: Optional[v1.Probe] + stdin: Optional[bool] + stdin_once: Optional[bool] + termination_message_path: Optional[str] + termination_message_policy: Optional[str] + tty: Optional[bool] + volume_devices: Optional[List[v1.VolumeDevice]] + volume_mounts: Optional[List[v1.VolumeMount]] + working_dir: Optional[str] + +class UserContainer(BaseModel): + args: Optional[List[str]] + command: Optional[List[str]] + env: Optional[List[v1.EnvVar]] + env_from: Optional[List[v1.EnvFromSource]] + image: Optional[str] + image_pull_policy: Optional[str] + lifecycle: Optional[v1.Lifecycle] + liveness_probe: Optional[v1.Probe] + mirror_volume_mounts: Optional[bool] + name: str + ports: Optional[List[v1.ContainerPort]] + readiness_probe: Optional[v1.Probe] + resources: Optional[v1.ResourceRequirements] + security_context: Optional[v1.SecurityContext] + startup_probe: Optional[v1.Probe] + stdin: Optional[bool] + stdin_once: Optional[bool] + termination_message_path: Optional[str] + termination_message_policy: Optional[str] + tty: Optional[bool] + volume_devices: Optional[List[v1.VolumeDevice]] + volume_mounts: Optional[List[v1.VolumeMount]] + working_dir: Optional[str] + +class Arguments(BaseModel): + artifacts: Optional[List[Artifact]] + parameters: Optional[List[Parameter]] + +class ArtifactGCSpec(BaseModel): + artifacts_by_node: Optional[Dict[str, ArtifactNodeSpec]] + +class Data(BaseModel): + source: DataSource + transformation: List[TransformationStep] + +class LifecycleHook(BaseModel): + arguments: Optional[Arguments] + expression: Optional[str] + template: Optional[str] + template_ref: Optional[TemplateRef] + +class NodeResult(BaseModel): + message: Optional[str] + outputs: Optional[Outputs] + phase: Optional[str] + progress: Optional[str] + +class NodeStatus(BaseModel): + boundary_id: Optional[str] + children: Optional[List[str]] + daemoned: Optional[bool] + display_name: Optional[str] + estimated_duration: Optional[int] + finished_at: Optional[v1_1.Time] + host_node_name: Optional[str] + id: str + inputs: Optional[Inputs] + memoization_status: Optional[MemoizationStatus] + message: Optional[str] + name: str + outbound_nodes: Optional[List[str]] + outputs: Optional[Outputs] + phase: Optional[str] + pod_ip: Optional[str] + progress: Optional[str] + resources_duration: Optional[Dict[str, int]] + started_at: Optional[v1_1.Time] + synchronization_status: Optional[NodeSynchronizationStatus] + template_name: Optional[str] + template_ref: Optional[TemplateRef] + template_scope: Optional[str] + type: str + +class Submit(BaseModel): + arguments: Optional[Arguments] + metadata: Optional[v1_1.ObjectMeta] + workflow_template_ref: WorkflowTemplateRef + +class WorkflowEventBindingSpec(BaseModel): + event: Event + submit: Optional[Submit] + +class WorkflowTaskSetStatus(BaseModel): + nodes: Optional[Dict[str, NodeResult]] + +class WorkflowEventBinding(BaseModel): + api_version: Optional[str] + kind: Optional[str] + metadata: v1_1.ObjectMeta + spec: WorkflowEventBindingSpec + +class WorkflowEventBindingList(BaseModel): + api_version: Optional[str] + items: List[WorkflowEventBinding] + kind: Optional[str] + metadata: v1_1.ListMeta + +class ClusterWorkflowTemplate(BaseModel): + api_version: Optional[str] + kind: Optional[str] + metadata: v1_1.ObjectMeta + spec: WorkflowSpec + +class ClusterWorkflowTemplateCreateRequest(BaseModel): + create_options: Optional[v1_1.CreateOptions] + template: Optional[ClusterWorkflowTemplate] + +class ClusterWorkflowTemplateLintRequest(BaseModel): + create_options: Optional[v1_1.CreateOptions] + template: Optional[ClusterWorkflowTemplate] + +class ClusterWorkflowTemplateList(BaseModel): + api_version: Optional[str] + items: List[ClusterWorkflowTemplate] + kind: Optional[str] + metadata: v1_1.ListMeta + +class ClusterWorkflowTemplateUpdateRequest(BaseModel): + name: Optional[str] + template: Optional[ClusterWorkflowTemplate] + +class CreateCronWorkflowRequest(BaseModel): + create_options: Optional[v1_1.CreateOptions] + cron_workflow: Optional[CronWorkflow] + namespace: Optional[str] + +class CronWorkflow(BaseModel): + api_version: Optional[str] + kind: Optional[str] + metadata: v1_1.ObjectMeta + spec: CronWorkflowSpec + status: Optional[CronWorkflowStatus] + +class CronWorkflowList(BaseModel): + api_version: Optional[str] + items: List[CronWorkflow] + kind: Optional[str] + metadata: v1_1.ListMeta + +class CronWorkflowSpec(BaseModel): + concurrency_policy: Optional[str] + failed_jobs_history_limit: Optional[int] + schedule: str + starting_deadline_seconds: Optional[int] + successful_jobs_history_limit: Optional[int] + suspend: Optional[bool] + timezone: Optional[str] + workflow_metadata: Optional[v1_1.ObjectMeta] + workflow_spec: WorkflowSpec + +class DAGTask(BaseModel): + arguments: Optional[Arguments] + continue_on: Optional[ContinueOn] + dependencies: Optional[List[str]] + depends: Optional[str] + hooks: Optional[Dict[str, LifecycleHook]] + inline: Optional[Template] + name: str + on_exit: Optional[str] + template: Optional[str] + template_ref: Optional[TemplateRef] + when: Optional[str] + with_items: Optional[List[Item]] + with_param: Optional[str] + with_sequence: Optional[Sequence] + +class DAGTemplate(BaseModel): + fail_fast: Optional[bool] + target: Optional[str] + tasks: List[DAGTask] + +class LintCronWorkflowRequest(BaseModel): + cron_workflow: Optional[CronWorkflow] + namespace: Optional[str] + +class ParallelSteps(BaseModel): + __root__: List[WorkflowStep] + +class Template(BaseModel): + active_deadline_seconds: Optional[intstr.IntOrString] + affinity: Optional[v1.Affinity] + archive_location: Optional[ArtifactLocation] + automount_service_account_token: Optional[bool] + container: Optional[v1.Container] + container_set: Optional[ContainerSetTemplate] + daemon: Optional[bool] + dag: Optional[DAGTemplate] + data: Optional[Data] + executor: Optional[ExecutorConfig] + fail_fast: Optional[bool] + host_aliases: Optional[List[v1.HostAlias]] + http: Optional[HTTP] + init_containers: Optional[List[UserContainer]] + inputs: Optional[Inputs] + memoize: Optional[Memoize] + metadata: Optional[Metadata] + metrics: Optional[Metrics] + name: Optional[str] + node_selector: Optional[Dict[str, str]] + outputs: Optional[Outputs] + parallelism: Optional[int] + plugin: Optional[Plugin] + pod_spec_patch: Optional[str] + priority: Optional[int] + priority_class_name: Optional[str] + resource: Optional[ResourceTemplate] + retry_strategy: Optional[RetryStrategy] + scheduler_name: Optional[str] + script: Optional[ScriptTemplate] + security_context: Optional[v1.PodSecurityContext] + service_account_name: Optional[str] + sidecars: Optional[List[UserContainer]] + steps: Optional[List[ParallelSteps]] + suspend: Optional[SuspendTemplate] + synchronization: Optional[Synchronization] + timeout: Optional[str] + tolerations: Optional[List[v1.Toleration]] + volumes: Optional[List[v1.Volume]] + +class UpdateCronWorkflowRequest(BaseModel): + cron_workflow: Optional[CronWorkflow] + name: Optional[str] + namespace: Optional[str] + +class Workflow(BaseModel): + api_version: Optional[str] + kind: Optional[str] + metadata: v1_1.ObjectMeta + spec: WorkflowSpec + status: Optional[WorkflowStatus] + +class WorkflowCreateRequest(BaseModel): + create_options: Optional[v1_1.CreateOptions] + instance_id: Optional[str] + namespace: Optional[str] + server_dry_run: Optional[bool] + workflow: Optional[Workflow] + +class WorkflowLintRequest(BaseModel): + namespace: Optional[str] + workflow: Optional[Workflow] + +class WorkflowList(BaseModel): + api_version: Optional[str] + items: List[Workflow] + kind: Optional[str] + metadata: v1_1.ListMeta + +class WorkflowSpec(BaseModel): + active_deadline_seconds: Optional[int] + affinity: Optional[v1.Affinity] + archive_logs: Optional[bool] + arguments: Optional[Arguments] + artifact_gc: Optional[ArtifactGC] + artifact_repository_ref: Optional[ArtifactRepositoryRef] + automount_service_account_token: Optional[bool] + dns_config: Optional[v1.PodDNSConfig] + dns_policy: Optional[str] + entrypoint: Optional[str] + executor: Optional[ExecutorConfig] + hooks: Optional[Dict[str, LifecycleHook]] + host_aliases: Optional[List[v1.HostAlias]] + host_network: Optional[bool] + image_pull_secrets: Optional[List[v1.LocalObjectReference]] + metrics: Optional[Metrics] + node_selector: Optional[Dict[str, str]] + on_exit: Optional[str] + parallelism: Optional[int] + pod_disruption_budget: Optional[v1beta1.PodDisruptionBudgetSpec] + pod_gc: Optional[PodGC] + pod_metadata: Optional[Metadata] + pod_priority: Optional[int] + pod_priority_class_name: Optional[str] + pod_spec_patch: Optional[str] + priority: Optional[int] + retry_strategy: Optional[RetryStrategy] + scheduler_name: Optional[str] + security_context: Optional[v1.PodSecurityContext] + service_account_name: Optional[str] + shutdown: Optional[str] + suspend: Optional[bool] + synchronization: Optional[Synchronization] + template_defaults: Optional[Template] + templates: Optional[List[Template]] + tolerations: Optional[List[v1.Toleration]] + ttl_strategy: Optional[TTLStrategy] + volume_claim_gc: Optional[VolumeClaimGC] + volume_claim_templates: Optional[List[v1.PersistentVolumeClaim]] + volumes: Optional[List[v1.Volume]] + workflow_metadata: Optional[WorkflowMetadata] + workflow_template_ref: Optional[WorkflowTemplateRef] + +class WorkflowStatus(BaseModel): + artifact_gc_status: Optional[ArtGCStatus] + artifact_repository_ref: Optional[ArtifactRepositoryRefStatus] + compressed_nodes: Optional[str] + conditions: Optional[List[Condition]] + estimated_duration: Optional[int] + finished_at: Optional[v1_1.Time] + message: Optional[str] + nodes: Optional[Dict[str, NodeStatus]] + offload_node_status_version: Optional[str] + outputs: Optional[Outputs] + persistent_volume_claims: Optional[List[v1.Volume]] + phase: Optional[str] + progress: Optional[str] + resources_duration: Optional[Dict[str, int]] + started_at: Optional[v1_1.Time] + stored_templates: Optional[Dict[str, Template]] + stored_workflow_template_spec: Optional[WorkflowSpec] + synchronization: Optional[SynchronizationStatus] + +class WorkflowStep(BaseModel): + arguments: Optional[Arguments] + continue_on: Optional[ContinueOn] + hooks: Optional[Dict[str, LifecycleHook]] + inline: Optional[Template] + name: Optional[str] + on_exit: Optional[str] + template: Optional[str] + template_ref: Optional[TemplateRef] + when: Optional[str] + with_items: Optional[List[Item]] + with_param: Optional[str] + with_sequence: Optional[Sequence] + +class WorkflowTaskSetSpec(BaseModel): + tasks: Optional[Dict[str, Template]] + +class WorkflowTemplate(BaseModel): + api_version: Optional[str] + kind: Optional[str] + metadata: v1_1.ObjectMeta + spec: WorkflowSpec + +class WorkflowTemplateCreateRequest(BaseModel): + create_options: Optional[v1_1.CreateOptions] + namespace: Optional[str] + template: Optional[WorkflowTemplate] + +class WorkflowTemplateLintRequest(BaseModel): + create_options: Optional[v1_1.CreateOptions] + namespace: Optional[str] + template: Optional[WorkflowTemplate] + +class WorkflowTemplateList(BaseModel): + api_version: Optional[str] + items: List[WorkflowTemplate] + kind: Optional[str] + metadata: v1_1.ListMeta + +class WorkflowTemplateUpdateRequest(BaseModel): + name: Optional[str] + namespace: Optional[str] + template: Optional[WorkflowTemplate] + +class WorkflowWatchEvent(BaseModel): + object: Optional[Workflow] + type: Optional[str] diff --git a/src/hera/events/models/io/k8s/__init__.py b/src/hera/events/models/io/k8s/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/hera/events/models/io/k8s/api/__init__.py b/src/hera/events/models/io/k8s/api/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/hera/events/models/io/k8s/api/core/v1.pyi b/src/hera/events/models/io/k8s/api/core/v1.pyi new file mode 100644 index 000000000..e8b896464 --- /dev/null +++ b/src/hera/events/models/io/k8s/api/core/v1.pyi @@ -0,0 +1,637 @@ +from enum import Enum +from typing import Dict, List, Optional + +from hera.shared._base_model import BaseModel as BaseModel + +from ...apimachinery.pkg.api import resource as resource +from ...apimachinery.pkg.apis.meta import v1 as v1 +from ...apimachinery.pkg.util import intstr as intstr + +class AWSElasticBlockStoreVolumeSource(BaseModel): + fs_type: Optional[str] + partition: Optional[int] + read_only: Optional[bool] + volume_id: str + +class AzureDiskVolumeSource(BaseModel): + caching_mode: Optional[str] + disk_name: str + disk_uri: str + fs_type: Optional[str] + kind: Optional[str] + read_only: Optional[bool] + +class AzureFileVolumeSource(BaseModel): + read_only: Optional[bool] + secret_name: str + share_name: str + +class Capabilities(BaseModel): + add: Optional[List[str]] + drop: Optional[List[str]] + +class ConfigMapEnvSource(BaseModel): + name: Optional[str] + optional: Optional[bool] + +class ConfigMapKeySelector(BaseModel): + key: str + name: Optional[str] + optional: Optional[bool] + +class ImagePullPolicy(Enum): + always: str + if_not_present: str + never: str + +class TerminationMessagePolicy(Enum): + fallback_to_logs_on_error: str + file: str + +class Protocol(Enum): + sctp: str + tcp: str + udp: str + +class ContainerPort(BaseModel): + container_port: int + host_ip: Optional[str] + host_port: Optional[int] + name: Optional[str] + protocol: Optional[Protocol] + +class EventSource(BaseModel): + component: Optional[str] + host: Optional[str] + +class ExecAction(BaseModel): + command: Optional[List[str]] + +class FCVolumeSource(BaseModel): + fs_type: Optional[str] + lun: Optional[int] + read_only: Optional[bool] + target_ww_ns: Optional[List[str]] + wwids: Optional[List[str]] + +class FlockerVolumeSource(BaseModel): + dataset_name: Optional[str] + dataset_uuid: Optional[str] + +class GCEPersistentDiskVolumeSource(BaseModel): + fs_type: Optional[str] + partition: Optional[int] + pd_name: str + read_only: Optional[bool] + +class GRPCAction(BaseModel): + port: int + service: Optional[str] + +class GitRepoVolumeSource(BaseModel): + directory: Optional[str] + repository: str + revision: Optional[str] + +class GlusterfsVolumeSource(BaseModel): + endpoints: str + path: str + read_only: Optional[bool] + +class Scheme(Enum): + http: str + https: str + +class HTTPHeader(BaseModel): + name: str + value: str + +class HostAlias(BaseModel): + hostnames: Optional[List[str]] + ip: Optional[str] + +class HostPathVolumeSource(BaseModel): + path: str + type: Optional[str] + +class KeyToPath(BaseModel): + key: str + mode: Optional[int] + path: str + +class LocalObjectReference(BaseModel): + name: Optional[str] + +class NFSVolumeSource(BaseModel): + path: str + read_only: Optional[bool] + server: str + +class Operator(Enum): + does_not_exist: str + exists: str + gt: str + in_: str + lt: str + not_in: str + +class NodeSelectorRequirement(BaseModel): + key: str + operator: Operator + values: Optional[List[str]] + +class NodeSelectorTerm(BaseModel): + match_expressions: Optional[List[NodeSelectorRequirement]] + match_fields: Optional[List[NodeSelectorRequirement]] + +class ObjectFieldSelector(BaseModel): + api_version: Optional[str] + field_path: str + +class ObjectReference(BaseModel): + api_version: Optional[str] + field_path: Optional[str] + kind: Optional[str] + name: Optional[str] + namespace: Optional[str] + resource_version: Optional[str] + uid: Optional[str] + +class Type(Enum): + file_system_resize_pending: str + resizing: str + +class Phase(Enum): + bound: str + lost: str + pending: str + +class PersistentVolumeClaimVolumeSource(BaseModel): + claim_name: str + read_only: Optional[bool] + +class PhotonPersistentDiskVolumeSource(BaseModel): + fs_type: Optional[str] + pd_id: str + +class PodDNSConfigOption(BaseModel): + name: Optional[str] + value: Optional[str] + +class PortworxVolumeSource(BaseModel): + fs_type: Optional[str] + read_only: Optional[bool] + volume_id: str + +class PreferredSchedulingTerm(BaseModel): + preference: NodeSelectorTerm + weight: int + +class QuobyteVolumeSource(BaseModel): + group: Optional[str] + read_only: Optional[bool] + registry: str + tenant: Optional[str] + user: Optional[str] + volume: str + +class RBDVolumeSource(BaseModel): + fs_type: Optional[str] + image: str + keyring: Optional[str] + monitors: List[str] + pool: Optional[str] + read_only: Optional[bool] + secret_ref: Optional[LocalObjectReference] + user: Optional[str] + +class SELinuxOptions(BaseModel): + level: Optional[str] + role: Optional[str] + type: Optional[str] + user: Optional[str] + +class ScaleIOVolumeSource(BaseModel): + fs_type: Optional[str] + gateway: str + protection_domain: Optional[str] + read_only: Optional[bool] + secret_ref: LocalObjectReference + ssl_enabled: Optional[bool] + storage_mode: Optional[str] + storage_pool: Optional[str] + system: str + volume_name: Optional[str] + +class TypeModel(Enum): + localhost: str + runtime_default: str + unconfined: str + +class SeccompProfile(BaseModel): + localhost_profile: Optional[str] + type: TypeModel + +class SecretEnvSource(BaseModel): + name: Optional[str] + optional: Optional[bool] + +class SecretKeySelector(BaseModel): + key: str + name: Optional[str] + optional: Optional[bool] + +class SecretProjection(BaseModel): + items: Optional[List[KeyToPath]] + name: Optional[str] + optional: Optional[bool] + +class SecretVolumeSource(BaseModel): + default_mode: Optional[int] + items: Optional[List[KeyToPath]] + optional: Optional[bool] + secret_name: Optional[str] + +class ServiceAccountTokenProjection(BaseModel): + audience: Optional[str] + expiration_seconds: Optional[int] + path: str + +class StorageOSVolumeSource(BaseModel): + fs_type: Optional[str] + read_only: Optional[bool] + secret_ref: Optional[LocalObjectReference] + volume_name: Optional[str] + volume_namespace: Optional[str] + +class Sysctl(BaseModel): + name: str + value: str + +class Effect(Enum): + no_execute: str + no_schedule: str + prefer_no_schedule: str + +class OperatorModel(Enum): + equal: str + exists: str + +class Toleration(BaseModel): + effect: Optional[Effect] + key: Optional[str] + operator: Optional[OperatorModel] + toleration_seconds: Optional[int] + value: Optional[str] + +class TypedLocalObjectReference(BaseModel): + api_group: Optional[str] + kind: str + name: str + +class VolumeDevice(BaseModel): + device_path: str + name: str + +class VolumeMount(BaseModel): + mount_path: str + mount_propagation: Optional[str] + name: str + read_only: Optional[bool] + sub_path: Optional[str] + sub_path_expr: Optional[str] + +class VsphereVirtualDiskVolumeSource(BaseModel): + fs_type: Optional[str] + storage_policy_id: Optional[str] + storage_policy_name: Optional[str] + volume_path: str + +class WindowsSecurityContextOptions(BaseModel): + gmsa_credential_spec: Optional[str] + gmsa_credential_spec_name: Optional[str] + host_process: Optional[bool] + run_as_user_name: Optional[str] + +class CSIVolumeSource(BaseModel): + driver: str + fs_type: Optional[str] + node_publish_secret_ref: Optional[LocalObjectReference] + read_only: Optional[bool] + volume_attributes: Optional[Dict[str, str]] + +class CephFSVolumeSource(BaseModel): + monitors: List[str] + path: Optional[str] + read_only: Optional[bool] + secret_file: Optional[str] + secret_ref: Optional[LocalObjectReference] + user: Optional[str] + +class CinderVolumeSource(BaseModel): + fs_type: Optional[str] + read_only: Optional[bool] + secret_ref: Optional[LocalObjectReference] + volume_id: str + +class ConfigMapProjection(BaseModel): + items: Optional[List[KeyToPath]] + name: Optional[str] + optional: Optional[bool] + +class ConfigMapVolumeSource(BaseModel): + default_mode: Optional[int] + items: Optional[List[KeyToPath]] + name: Optional[str] + optional: Optional[bool] + +class EmptyDirVolumeSource(BaseModel): + medium: Optional[str] + size_limit: Optional[resource.Quantity] + +class EnvFromSource(BaseModel): + config_map_ref: Optional[ConfigMapEnvSource] + prefix: Optional[str] + secret_ref: Optional[SecretEnvSource] + +class EventSeries(BaseModel): + count: Optional[int] + last_observed_time: Optional[v1.MicroTime] + +class FlexVolumeSource(BaseModel): + driver: str + fs_type: Optional[str] + options: Optional[Dict[str, str]] + read_only: Optional[bool] + secret_ref: Optional[LocalObjectReference] + +class HTTPGetAction(BaseModel): + host: Optional[str] + http_headers: Optional[List[HTTPHeader]] + path: Optional[str] + port: intstr.IntOrString + scheme: Optional[Scheme] + +class ISCSIVolumeSource(BaseModel): + chap_auth_discovery: Optional[bool] + chap_auth_session: Optional[bool] + fs_type: Optional[str] + initiator_name: Optional[str] + iqn: str + iscsi_interface: Optional[str] + lun: int + portals: Optional[List[str]] + read_only: Optional[bool] + secret_ref: Optional[LocalObjectReference] + target_portal: str + +class NodeSelector(BaseModel): + node_selector_terms: List[NodeSelectorTerm] + +class PersistentVolumeClaimCondition(BaseModel): + last_probe_time: Optional[v1.Time] + last_transition_time: Optional[v1.Time] + message: Optional[str] + reason: Optional[str] + status: str + type: Type + +class PersistentVolumeClaimStatus(BaseModel): + access_modes: Optional[List[str]] + allocated_resources: Optional[Dict[str, resource.Quantity]] + capacity: Optional[Dict[str, resource.Quantity]] + conditions: Optional[List[PersistentVolumeClaimCondition]] + phase: Optional[Phase] + resize_status: Optional[str] + +class PodDNSConfig(BaseModel): + nameservers: Optional[List[str]] + options: Optional[List[PodDNSConfigOption]] + searches: Optional[List[str]] + +class PodSecurityContext(BaseModel): + fs_group: Optional[int] + fs_group_change_policy: Optional[str] + run_as_group: Optional[int] + run_as_non_root: Optional[bool] + run_as_user: Optional[int] + se_linux_options: Optional[SELinuxOptions] + seccomp_profile: Optional[SeccompProfile] + supplemental_groups: Optional[List[int]] + sysctls: Optional[List[Sysctl]] + windows_options: Optional[WindowsSecurityContextOptions] + +class ResourceFieldSelector(BaseModel): + container_name: Optional[str] + divisor: Optional[resource.Quantity] + resource: str + +class ResourceRequirements(BaseModel): + limits: Optional[Dict[str, resource.Quantity]] + requests: Optional[Dict[str, resource.Quantity]] + +class SecurityContext(BaseModel): + allow_privilege_escalation: Optional[bool] + capabilities: Optional[Capabilities] + privileged: Optional[bool] + proc_mount: Optional[str] + read_only_root_filesystem: Optional[bool] + run_as_group: Optional[int] + run_as_non_root: Optional[bool] + run_as_user: Optional[int] + se_linux_options: Optional[SELinuxOptions] + seccomp_profile: Optional[SeccompProfile] + windows_options: Optional[WindowsSecurityContextOptions] + +class ServicePort(BaseModel): + app_protocol: Optional[str] + name: Optional[str] + node_port: Optional[int] + port: int + protocol: Optional[Protocol] + target_port: Optional[intstr.IntOrString] + +class TCPSocketAction(BaseModel): + host: Optional[str] + port: intstr.IntOrString + +class DownwardAPIVolumeFile(BaseModel): + field_ref: Optional[ObjectFieldSelector] + mode: Optional[int] + path: str + resource_field_ref: Optional[ResourceFieldSelector] + +class DownwardAPIVolumeSource(BaseModel): + default_mode: Optional[int] + items: Optional[List[DownwardAPIVolumeFile]] + +class EnvVarSource(BaseModel): + config_map_key_ref: Optional[ConfigMapKeySelector] + field_ref: Optional[ObjectFieldSelector] + resource_field_ref: Optional[ResourceFieldSelector] + secret_key_ref: Optional[SecretKeySelector] + +class Event(BaseModel): + action: Optional[str] + api_version: Optional[str] + count: Optional[int] + event_time: Optional[v1.MicroTime] + first_timestamp: Optional[v1.Time] + involved_object: ObjectReference + kind: Optional[str] + last_timestamp: Optional[v1.Time] + message: Optional[str] + metadata: v1.ObjectMeta + reason: Optional[str] + related: Optional[ObjectReference] + reporting_component: Optional[str] + reporting_instance: Optional[str] + series: Optional[EventSeries] + source: Optional[EventSource] + type: Optional[str] + +class LifecycleHandler(BaseModel): + exec: Optional[ExecAction] + http_get: Optional[HTTPGetAction] + tcp_socket: Optional[TCPSocketAction] + +class NodeAffinity(BaseModel): + preferred_during_scheduling_ignored_during_execution: Optional[List[PreferredSchedulingTerm]] + required_during_scheduling_ignored_during_execution: Optional[NodeSelector] + +class PersistentVolumeClaimSpec(BaseModel): + access_modes: Optional[List[str]] + data_source: Optional[TypedLocalObjectReference] + data_source_ref: Optional[TypedLocalObjectReference] + resources: Optional[ResourceRequirements] + selector: Optional[v1.LabelSelector] + storage_class_name: Optional[str] + volume_mode: Optional[str] + volume_name: Optional[str] + +class PersistentVolumeClaimTemplate(BaseModel): + metadata: Optional[v1.ObjectMeta] + spec: PersistentVolumeClaimSpec + +class PodAffinityTerm(BaseModel): + label_selector: Optional[v1.LabelSelector] + namespace_selector: Optional[v1.LabelSelector] + namespaces: Optional[List[str]] + topology_key: str + +class Probe(BaseModel): + exec: Optional[ExecAction] + failure_threshold: Optional[int] + grpc: Optional[GRPCAction] + http_get: Optional[HTTPGetAction] + initial_delay_seconds: Optional[int] + period_seconds: Optional[int] + success_threshold: Optional[int] + tcp_socket: Optional[TCPSocketAction] + termination_grace_period_seconds: Optional[int] + timeout_seconds: Optional[int] + +class WeightedPodAffinityTerm(BaseModel): + pod_affinity_term: PodAffinityTerm + weight: int + +class DownwardAPIProjection(BaseModel): + items: Optional[List[DownwardAPIVolumeFile]] + +class EnvVar(BaseModel): + name: str + value: Optional[str] + value_from: Optional[EnvVarSource] + +class EphemeralVolumeSource(BaseModel): + volume_claim_template: Optional[PersistentVolumeClaimTemplate] + +class Lifecycle(BaseModel): + post_start: Optional[LifecycleHandler] + pre_stop: Optional[LifecycleHandler] + +class PersistentVolumeClaim(BaseModel): + api_version: Optional[str] + kind: Optional[str] + metadata: Optional[v1.ObjectMeta] + spec: Optional[PersistentVolumeClaimSpec] + status: Optional[PersistentVolumeClaimStatus] + +class PodAffinity(BaseModel): + preferred_during_scheduling_ignored_during_execution: Optional[List[WeightedPodAffinityTerm]] + required_during_scheduling_ignored_during_execution: Optional[List[PodAffinityTerm]] + +class PodAntiAffinity(BaseModel): + preferred_during_scheduling_ignored_during_execution: Optional[List[WeightedPodAffinityTerm]] + required_during_scheduling_ignored_during_execution: Optional[List[PodAffinityTerm]] + +class VolumeProjection(BaseModel): + config_map: Optional[ConfigMapProjection] + downward_api: Optional[DownwardAPIProjection] + secret: Optional[SecretProjection] + service_account_token: Optional[ServiceAccountTokenProjection] + +class Affinity(BaseModel): + node_affinity: Optional[NodeAffinity] + pod_affinity: Optional[PodAffinity] + pod_anti_affinity: Optional[PodAntiAffinity] + +class Container(BaseModel): + args: Optional[List[str]] + command: Optional[List[str]] + env: Optional[List[EnvVar]] + env_from: Optional[List[EnvFromSource]] + image: str + image_pull_policy: Optional[ImagePullPolicy] + lifecycle: Optional[Lifecycle] + liveness_probe: Optional[Probe] + name: Optional[str] + ports: Optional[List[ContainerPort]] + readiness_probe: Optional[Probe] + resources: Optional[ResourceRequirements] + security_context: Optional[SecurityContext] + startup_probe: Optional[Probe] + stdin: Optional[bool] + stdin_once: Optional[bool] + termination_message_path: Optional[str] + termination_message_policy: Optional[TerminationMessagePolicy] + tty: Optional[bool] + volume_devices: Optional[List[VolumeDevice]] + volume_mounts: Optional[List[VolumeMount]] + working_dir: Optional[str] + +class ProjectedVolumeSource(BaseModel): + default_mode: Optional[int] + sources: Optional[List[VolumeProjection]] + +class Volume(BaseModel): + aws_elastic_block_store: Optional[AWSElasticBlockStoreVolumeSource] + azure_disk: Optional[AzureDiskVolumeSource] + azure_file: Optional[AzureFileVolumeSource] + cephfs: Optional[CephFSVolumeSource] + cinder: Optional[CinderVolumeSource] + config_map: Optional[ConfigMapVolumeSource] + csi: Optional[CSIVolumeSource] + downward_api: Optional[DownwardAPIVolumeSource] + empty_dir: Optional[EmptyDirVolumeSource] + ephemeral: Optional[EphemeralVolumeSource] + fc: Optional[FCVolumeSource] + flex_volume: Optional[FlexVolumeSource] + flocker: Optional[FlockerVolumeSource] + gce_persistent_disk: Optional[GCEPersistentDiskVolumeSource] + git_repo: Optional[GitRepoVolumeSource] + glusterfs: Optional[GlusterfsVolumeSource] + host_path: Optional[HostPathVolumeSource] + iscsi: Optional[ISCSIVolumeSource] + name: str + nfs: Optional[NFSVolumeSource] + persistent_volume_claim: Optional[PersistentVolumeClaimVolumeSource] + photon_persistent_disk: Optional[PhotonPersistentDiskVolumeSource] + portworx_volume: Optional[PortworxVolumeSource] + projected: Optional[ProjectedVolumeSource] + quobyte: Optional[QuobyteVolumeSource] + rbd: Optional[RBDVolumeSource] + scale_io: Optional[ScaleIOVolumeSource] + secret: Optional[SecretVolumeSource] + storageos: Optional[StorageOSVolumeSource] + vsphere_volume: Optional[VsphereVirtualDiskVolumeSource] diff --git a/src/hera/events/models/io/k8s/api/policy/v1beta1.pyi b/src/hera/events/models/io/k8s/api/policy/v1beta1.pyi new file mode 100644 index 000000000..471065d56 --- /dev/null +++ b/src/hera/events/models/io/k8s/api/policy/v1beta1.pyi @@ -0,0 +1,11 @@ +from typing import Optional + +from hera.shared._base_model import BaseModel as BaseModel + +from ...apimachinery.pkg.apis.meta import v1 as v1 +from ...apimachinery.pkg.util import intstr as intstr + +class PodDisruptionBudgetSpec(BaseModel): + max_unavailable: Optional[intstr.IntOrString] + min_available: Optional[intstr.IntOrString] + selector: Optional[v1.LabelSelector] diff --git a/src/hera/events/models/io/k8s/apimachinery/__init__.py b/src/hera/events/models/io/k8s/apimachinery/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/hera/events/models/io/k8s/apimachinery/pkg/__init__.py b/src/hera/events/models/io/k8s/apimachinery/pkg/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/hera/events/models/io/k8s/apimachinery/pkg/api/resource.pyi b/src/hera/events/models/io/k8s/apimachinery/pkg/api/resource.pyi new file mode 100644 index 000000000..8cb1ae92f --- /dev/null +++ b/src/hera/events/models/io/k8s/apimachinery/pkg/api/resource.pyi @@ -0,0 +1,4 @@ +from hera.shared._base_model import BaseModel as BaseModel + +class Quantity(BaseModel): + __root__: str diff --git a/src/hera/events/models/io/k8s/apimachinery/pkg/apis/__init__.py b/src/hera/events/models/io/k8s/apimachinery/pkg/apis/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/hera/events/models/io/k8s/apimachinery/pkg/apis/meta/v1.pyi b/src/hera/events/models/io/k8s/apimachinery/pkg/apis/meta/v1.pyi new file mode 100644 index 000000000..5c25dfa7b --- /dev/null +++ b/src/hera/events/models/io/k8s/apimachinery/pkg/apis/meta/v1.pyi @@ -0,0 +1,77 @@ +from datetime import datetime +from typing import Dict, List, Optional + +from hera.shared._base_model import BaseModel as BaseModel + +class CreateOptions(BaseModel): + dry_run: Optional[List[str]] + field_manager: Optional[str] + field_validation: Optional[str] + +class FieldsV1(BaseModel): ... + +class GroupVersionResource(BaseModel): + group: Optional[str] + resource: Optional[str] + version: Optional[str] + +class LabelSelectorRequirement(BaseModel): + key: str + operator: str + values: Optional[List[str]] + +class ListMeta(BaseModel): + continue_: Optional[str] + remaining_item_count: Optional[int] + resource_version: Optional[str] + self_link: Optional[str] + +class MicroTime(BaseModel): + __root__: datetime + +class OwnerReference(BaseModel): + api_version: str + block_owner_deletion: Optional[bool] + controller: Optional[bool] + kind: str + name: str + uid: str + +class StatusCause(BaseModel): + field: Optional[str] + message: Optional[str] + reason: Optional[str] + +class Time(BaseModel): + __root__: datetime + +class LabelSelector(BaseModel): + match_expressions: Optional[List[LabelSelectorRequirement]] + match_labels: Optional[Dict[str, str]] + +class ManagedFieldsEntry(BaseModel): + api_version: Optional[str] + fields_type: Optional[str] + fields_v1: Optional[FieldsV1] + manager: Optional[str] + operation: Optional[str] + subresource: Optional[str] + time: Optional[Time] + +class ObjectMeta(BaseModel): + annotations: Optional[Dict[str, str]] + cluster_name: Optional[str] + creation_timestamp: Optional[Time] + deletion_grace_period_seconds: Optional[int] + deletion_timestamp: Optional[Time] + finalizers: Optional[List[str]] + generate_name: Optional[str] + generation: Optional[int] + labels: Optional[Dict[str, str]] + managed_fields: Optional[List[ManagedFieldsEntry]] + name: Optional[str] + namespace: Optional[str] + owner_references: Optional[List[OwnerReference]] + resource_version: Optional[str] + self_link: Optional[str] + uid: Optional[str] diff --git a/src/hera/events/models/io/k8s/apimachinery/pkg/util/intstr.pyi b/src/hera/events/models/io/k8s/apimachinery/pkg/util/intstr.pyi new file mode 100644 index 000000000..4ed64fd53 --- /dev/null +++ b/src/hera/events/models/io/k8s/apimachinery/pkg/util/intstr.pyi @@ -0,0 +1,4 @@ +from hera.shared._base_model import BaseModel as BaseModel + +class IntOrString(BaseModel): + __root__: str diff --git a/src/hera/events/models/sensor.pyi b/src/hera/events/models/sensor.pyi new file mode 100644 index 000000000..5baaafad4 --- /dev/null +++ b/src/hera/events/models/sensor.pyi @@ -0,0 +1,32 @@ +from typing import Optional + +from hera.shared._base_model import BaseModel as BaseModel + +from .io.argoproj.events import v1alpha1 as v1alpha1 +from .io.k8s.apimachinery.pkg.apis.meta import v1 as v1 + +class DeleteSensorResponse(BaseModel): ... + +class LogEntry(BaseModel): + dependency_name: Optional[str] + event_context: Optional[str] + level: Optional[str] + msg: Optional[str] + namespace: Optional[str] + sensor_name: Optional[str] + time: Optional[v1.Time] + trigger_name: Optional[str] + +class CreateSensorRequest(BaseModel): + create_options: Optional[v1.CreateOptions] + namespace: Optional[str] + sensor: Optional[v1alpha1.Sensor] + +class SensorWatchEvent(BaseModel): + object: Optional[v1alpha1.Sensor] + type: Optional[str] + +class UpdateSensorRequest(BaseModel): + name: Optional[str] + namespace: Optional[str] + sensor: Optional[v1alpha1.Sensor] diff --git a/src/hera/workflows/models/eventsource.pyi b/src/hera/workflows/models/eventsource.pyi new file mode 100644 index 000000000..6a6eb9f8d --- /dev/null +++ b/src/hera/workflows/models/eventsource.pyi @@ -0,0 +1,30 @@ +from typing import Optional + +from hera.shared._base_model import BaseModel as BaseModel + +from .io.argoproj.events import v1alpha1 as v1alpha1 +from .io.k8s.apimachinery.pkg.apis.meta import v1 as v1 + +class EventSourceDeletedResponse(BaseModel): ... + +class LogEntry(BaseModel): + event_name: Optional[str] + event_source_name: Optional[str] + event_source_type: Optional[str] + level: Optional[str] + msg: Optional[str] + namespace: Optional[str] + time: Optional[v1.Time] + +class CreateEventSourceRequest(BaseModel): + event_source: Optional[v1alpha1.EventSource] + namespace: Optional[str] + +class EventSourceWatchEvent(BaseModel): + object: Optional[v1alpha1.EventSource] + type: Optional[str] + +class UpdateEventSourceRequest(BaseModel): + event_source: Optional[v1alpha1.EventSource] + name: Optional[str] + namespace: Optional[str] diff --git a/src/hera/workflows/models/google/protobuf.pyi b/src/hera/workflows/models/google/protobuf.pyi new file mode 100644 index 000000000..54a09fbaf --- /dev/null +++ b/src/hera/workflows/models/google/protobuf.pyi @@ -0,0 +1,7 @@ +from typing import Optional + +from hera.shared._base_model import BaseModel as BaseModel + +class Any(BaseModel): + type_url: Optional[str] + value: Optional[str] diff --git a/src/hera/workflows/models/grpc/__init__.py b/src/hera/workflows/models/grpc/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/hera/workflows/models/grpc/gateway/runtime.pyi b/src/hera/workflows/models/grpc/gateway/runtime.pyi new file mode 100644 index 000000000..6f34eadc7 --- /dev/null +++ b/src/hera/workflows/models/grpc/gateway/runtime.pyi @@ -0,0 +1,18 @@ +from typing import List, Optional + +from hera.shared._base_model import BaseModel as BaseModel + +from ...google import protobuf as protobuf + +class Error(BaseModel): + code: Optional[int] + details: Optional[List[protobuf.Any]] + error: Optional[str] + message: Optional[str] + +class StreamError(BaseModel): + details: Optional[List[protobuf.Any]] + grpc_code: Optional[int] + http_code: Optional[int] + http_status: Optional[str] + message: Optional[str] diff --git a/src/hera/workflows/models/io/__init__.py b/src/hera/workflows/models/io/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/hera/workflows/models/io/argoproj/__init__.py b/src/hera/workflows/models/io/argoproj/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/hera/workflows/models/io/argoproj/events/v1alpha1.pyi b/src/hera/workflows/models/io/argoproj/events/v1alpha1.pyi new file mode 100644 index 000000000..3c58b9ff6 --- /dev/null +++ b/src/hera/workflows/models/io/argoproj/events/v1alpha1.pyi @@ -0,0 +1,807 @@ +from typing import Dict, List, Optional + +from hera.shared._base_model import BaseModel as BaseModel + +from ...k8s.api.core import v1 as v1 +from ...k8s.apimachinery.pkg.apis.meta import v1 as v1_1 + +class AMQPConsumeConfig(BaseModel): + auto_ack: Optional[bool] + consumer_tag: Optional[str] + exclusive: Optional[bool] + no_local: Optional[bool] + no_wait: Optional[bool] + +class AMQPExchangeDeclareConfig(BaseModel): + auto_delete: Optional[bool] + durable: Optional[bool] + internal: Optional[bool] + no_wait: Optional[bool] + +class AMQPQueueBindConfig(BaseModel): + no_wait: Optional[bool] + +class AMQPQueueDeclareConfig(BaseModel): + arguments: Optional[str] + auto_delete: Optional[bool] + durable: Optional[bool] + exclusive: Optional[bool] + name: Optional[str] + no_wait: Optional[bool] + +class Amount(BaseModel): + value: Optional[str] + +class BitbucketRepository(BaseModel): + owner: Optional[str] + repository_slug: Optional[str] + +class BitbucketServerRepository(BaseModel): + project_key: Optional[str] + repository_slug: Optional[str] + +class CatchupConfiguration(BaseModel): + enabled: Optional[bool] + max_duration: Optional[str] + +class ConditionsResetByTime(BaseModel): + cron: Optional[str] + timezone: Optional[str] + +class ConditionsResetCriteria(BaseModel): + by_time: Optional[ConditionsResetByTime] + +class ConfigMapPersistence(BaseModel): + create_if_not_exist: Optional[bool] + name: Optional[str] + +class DataFilter(BaseModel): + comparator: Optional[str] + path: Optional[str] + template: Optional[str] + type: Optional[str] + value: Optional[List[str]] + +class EventDependencyTransformer(BaseModel): + jq: Optional[str] + script: Optional[str] + +class EventPersistence(BaseModel): + catchup: Optional[CatchupConfiguration] + config_map: Optional[ConfigMapPersistence] + +class EventSourceFilter(BaseModel): + expression: Optional[str] + +class FileArtifact(BaseModel): + path: Optional[str] + +class GitRemoteConfig(BaseModel): + name: Optional[str] + urls: Optional[List[str]] + +class Int64OrString(BaseModel): + int64_val: Optional[str] + str_val: Optional[str] + type: Optional[str] + +class KafkaConsumerGroup(BaseModel): + group_name: Optional[str] + oldest: Optional[bool] + rebalance_strategy: Optional[str] + +class LogTrigger(BaseModel): + interval_seconds: Optional[str] + +class Metadata(BaseModel): + annotations: Optional[Dict[str, str]] + labels: Optional[Dict[str, str]] + +class OwnedRepositories(BaseModel): + names: Optional[List[str]] + owner: Optional[str] + +class PayloadField(BaseModel): + name: Optional[str] + path: Optional[str] + +class RateLimit(BaseModel): + requests_per_unit: Optional[int] + unit: Optional[str] + +class Resource(BaseModel): + value: Optional[str] + +class S3Bucket(BaseModel): + key: Optional[str] + name: Optional[str] + +class S3Filter(BaseModel): + prefix: Optional[str] + suffix: Optional[str] + +class Selector(BaseModel): + key: Optional[str] + operation: Optional[str] + value: Optional[str] + +class StatusPolicy(BaseModel): + allow: Optional[List[int]] + +class StorageGridFilter(BaseModel): + prefix: Optional[str] + suffix: Optional[str] + +class TimeFilter(BaseModel): + start: Optional[str] + stop: Optional[str] + +class TriggerParameterSource(BaseModel): + context_key: Optional[str] + context_template: Optional[str] + data_key: Optional[str] + data_template: Optional[str] + dependency_name: Optional[str] + value: Optional[str] + +class URLArtifact(BaseModel): + path: Optional[str] + verify_cert: Optional[bool] + +class WatchPathConfig(BaseModel): + directory: Optional[str] + path: Optional[str] + path_regexp: Optional[str] + +class AzureEventsHubEventSource(BaseModel): + filter: Optional[EventSourceFilter] + fqdn: Optional[str] + hub_name: Optional[str] + metadata: Optional[Dict[str, str]] + shared_access_key: Optional[v1.SecretKeySelector] + shared_access_key_name: Optional[v1.SecretKeySelector] + +class Backoff(BaseModel): + duration: Optional[Int64OrString] + factor: Optional[Amount] + jitter: Optional[Amount] + steps: Optional[int] + +class BasicAuth(BaseModel): + password: Optional[v1.SecretKeySelector] + username: Optional[v1.SecretKeySelector] + +class BitbucketBasicAuth(BaseModel): + password: Optional[v1.SecretKeySelector] + username: Optional[v1.SecretKeySelector] + +class CalendarEventSource(BaseModel): + exclusion_dates: Optional[List[str]] + filter: Optional[EventSourceFilter] + interval: Optional[str] + metadata: Optional[Dict[str, str]] + persistence: Optional[EventPersistence] + schedule: Optional[str] + timezone: Optional[str] + +class Condition(BaseModel): + last_transition_time: Optional[v1_1.Time] + message: Optional[str] + reason: Optional[str] + status: Optional[str] + type: Optional[str] + +class EventContext(BaseModel): + datacontenttype: Optional[str] + id: Optional[str] + source: Optional[str] + specversion: Optional[str] + subject: Optional[str] + time: Optional[v1_1.Time] + type: Optional[str] + +class ExprFilter(BaseModel): + expr: Optional[str] + fields: Optional[List[PayloadField]] + +class FileEventSource(BaseModel): + event_type: Optional[str] + filter: Optional[EventSourceFilter] + metadata: Optional[Dict[str, str]] + polling: Optional[bool] + watch_path_config: Optional[WatchPathConfig] + +class GenericEventSource(BaseModel): + auth_secret: Optional[v1.SecretKeySelector] + config: Optional[str] + filter: Optional[EventSourceFilter] + insecure: Optional[bool] + json_body: Optional[bool] + metadata: Optional[Dict[str, str]] + url: Optional[str] + +class GitCreds(BaseModel): + password: Optional[v1.SecretKeySelector] + username: Optional[v1.SecretKeySelector] + +class GithubAppCreds(BaseModel): + app_id: Optional[str] + installation_id: Optional[str] + private_key: Optional[v1.SecretKeySelector] + +class HDFSEventSource(BaseModel): + addresses: Optional[List[str]] + check_interval: Optional[str] + filter: Optional[EventSourceFilter] + hdfs_user: Optional[str] + krb_c_cache_secret: Optional[v1.SecretKeySelector] + krb_config_config_map: Optional[v1.ConfigMapKeySelector] + krb_keytab_secret: Optional[v1.SecretKeySelector] + krb_realm: Optional[str] + krb_service_principal_name: Optional[str] + krb_username: Optional[str] + metadata: Optional[Dict[str, str]] + type: Optional[str] + watch_path_config: Optional[WatchPathConfig] + +class K8SResourcePolicy(BaseModel): + backoff: Optional[Backoff] + error_on_backoff_timeout: Optional[bool] + labels: Optional[Dict[str, str]] + +class NATSAuth(BaseModel): + basic: Optional[BasicAuth] + credential: Optional[v1.SecretKeySelector] + nkey: Optional[v1.SecretKeySelector] + token: Optional[v1.SecretKeySelector] + +class PubSubEventSource(BaseModel): + credential_secret: Optional[v1.SecretKeySelector] + delete_subscription_on_finish: Optional[bool] + filter: Optional[EventSourceFilter] + json_body: Optional[bool] + metadata: Optional[Dict[str, str]] + project_id: Optional[str] + subscription_id: Optional[str] + topic: Optional[str] + topic_project_id: Optional[str] + +class ResourceFilter(BaseModel): + after_start: Optional[bool] + created_by: Optional[v1_1.Time] + fields: Optional[List[Selector]] + labels: Optional[List[Selector]] + prefix: Optional[str] + +class S3Artifact(BaseModel): + access_key: Optional[v1.SecretKeySelector] + bucket: Optional[S3Bucket] + endpoint: Optional[str] + events: Optional[List[str]] + filter: Optional[S3Filter] + insecure: Optional[bool] + metadata: Optional[Dict[str, str]] + region: Optional[str] + secret_key: Optional[v1.SecretKeySelector] + +class SASLConfig(BaseModel): + mechanism: Optional[str] + password: Optional[v1.SecretKeySelector] + user: Optional[v1.SecretKeySelector] + +class SQSEventSource(BaseModel): + access_key: Optional[v1.SecretKeySelector] + dlq: Optional[bool] + endpoint: Optional[str] + filter: Optional[EventSourceFilter] + json_body: Optional[bool] + metadata: Optional[Dict[str, str]] + queue: Optional[str] + queue_account_id: Optional[str] + region: Optional[str] + role_arn: Optional[str] + secret_key: Optional[v1.SecretKeySelector] + session_token: Optional[v1.SecretKeySelector] + wait_time_seconds: Optional[str] + +class Status(BaseModel): + conditions: Optional[List[Condition]] + +class TLSConfig(BaseModel): + ca_cert_secret: Optional[v1.SecretKeySelector] + client_cert_secret: Optional[v1.SecretKeySelector] + client_key_secret: Optional[v1.SecretKeySelector] + insecure_skip_verify: Optional[bool] + +class TriggerParameter(BaseModel): + dest: Optional[str] + operation: Optional[str] + src: Optional[TriggerParameterSource] + +class TriggerPolicy(BaseModel): + k8s: Optional[K8SResourcePolicy] + status: Optional[StatusPolicy] + +class ValueFromSource(BaseModel): + config_map_key_ref: Optional[v1.ConfigMapKeySelector] + secret_key_ref: Optional[v1.SecretKeySelector] + +class WebhookContext(BaseModel): + auth_secret: Optional[v1.SecretKeySelector] + endpoint: Optional[str] + max_payload_size: Optional[str] + metadata: Optional[Dict[str, str]] + method: Optional[str] + port: Optional[str] + server_cert_secret: Optional[v1.SecretKeySelector] + server_key_secret: Optional[v1.SecretKeySelector] + url: Optional[str] + +class WebhookEventSource(BaseModel): + filter: Optional[EventSourceFilter] + webhook_context: Optional[WebhookContext] + +class AMQPEventSource(BaseModel): + auth: Optional[BasicAuth] + connection_backoff: Optional[Backoff] + consume: Optional[AMQPConsumeConfig] + exchange_declare: Optional[AMQPExchangeDeclareConfig] + exchange_name: Optional[str] + exchange_type: Optional[str] + filter: Optional[EventSourceFilter] + json_body: Optional[bool] + metadata: Optional[Dict[str, str]] + queue_bind: Optional[AMQPQueueBindConfig] + queue_declare: Optional[AMQPQueueDeclareConfig] + routing_key: Optional[str] + tls: Optional[TLSConfig] + url: Optional[str] + url_secret: Optional[v1.SecretKeySelector] + +class AWSLambdaTrigger(BaseModel): + access_key: Optional[v1.SecretKeySelector] + function_name: Optional[str] + invocation_type: Optional[str] + parameters: Optional[List[TriggerParameter]] + payload: Optional[List[TriggerParameter]] + region: Optional[str] + role_arn: Optional[str] + secret_key: Optional[v1.SecretKeySelector] + +class AzureEventHubsTrigger(BaseModel): + fqdn: Optional[str] + hub_name: Optional[str] + parameters: Optional[List[TriggerParameter]] + payload: Optional[List[TriggerParameter]] + shared_access_key: Optional[v1.SecretKeySelector] + shared_access_key_name: Optional[v1.SecretKeySelector] + +class BitbucketAuth(BaseModel): + basic: Optional[BitbucketBasicAuth] + oauth_token: Optional[v1.SecretKeySelector] + +class BitbucketEventSource(BaseModel): + auth: Optional[BitbucketAuth] + delete_hook_on_finish: Optional[bool] + events: Optional[List[str]] + filter: Optional[EventSourceFilter] + metadata: Optional[Dict[str, str]] + owner: Optional[str] + project_key: Optional[str] + repositories: Optional[List[BitbucketRepository]] + repository_slug: Optional[str] + webhook: Optional[WebhookContext] + +class BitbucketServerEventSource(BaseModel): + access_token: Optional[v1.SecretKeySelector] + bitbucketserver_base_url: Optional[str] + delete_hook_on_finish: Optional[bool] + events: Optional[List[str]] + filter: Optional[EventSourceFilter] + metadata: Optional[Dict[str, str]] + project_key: Optional[str] + repositories: Optional[List[BitbucketServerRepository]] + repository_slug: Optional[str] + webhook: Optional[WebhookContext] + webhook_secret: Optional[v1.SecretKeySelector] + +class CustomTrigger(BaseModel): + cert_secret: Optional[v1.SecretKeySelector] + parameters: Optional[List[TriggerParameter]] + payload: Optional[List[TriggerParameter]] + secure: Optional[bool] + server_name_override: Optional[str] + server_url: Optional[str] + spec: Optional[Dict[str, str]] + +class EmitterEventSource(BaseModel): + broker: Optional[str] + channel_key: Optional[str] + channel_name: Optional[str] + connection_backoff: Optional[Backoff] + filter: Optional[EventSourceFilter] + json_body: Optional[bool] + metadata: Optional[Dict[str, str]] + password: Optional[v1.SecretKeySelector] + tls: Optional[TLSConfig] + username: Optional[v1.SecretKeySelector] + +class EventDependencyFilter(BaseModel): + context: Optional[EventContext] + data: Optional[List[DataFilter]] + data_logical_operator: Optional[str] + expr_logical_operator: Optional[str] + exprs: Optional[List[ExprFilter]] + script: Optional[str] + time: Optional[TimeFilter] + +class EventSourceStatus(BaseModel): + status: Optional[Status] + +class GitArtifact(BaseModel): + branch: Optional[str] + clone_directory: Optional[str] + creds: Optional[GitCreds] + file_path: Optional[str] + insecure_ignore_host_key: Optional[bool] + ref: Optional[str] + remote: Optional[GitRemoteConfig] + ssh_key_secret: Optional[v1.SecretKeySelector] + tag: Optional[str] + url: Optional[str] + +class GithubEventSource(BaseModel): + active: Optional[bool] + api_token: Optional[v1.SecretKeySelector] + content_type: Optional[str] + delete_hook_on_finish: Optional[bool] + events: Optional[List[str]] + filter: Optional[EventSourceFilter] + github_app: Optional[GithubAppCreds] + github_base_url: Optional[str] + github_upload_url: Optional[str] + id: Optional[str] + insecure: Optional[bool] + metadata: Optional[Dict[str, str]] + organizations: Optional[List[str]] + owner: Optional[str] + repositories: Optional[List[OwnedRepositories]] + repository: Optional[str] + webhook: Optional[WebhookContext] + webhook_secret: Optional[v1.SecretKeySelector] + +class GitlabEventSource(BaseModel): + access_token: Optional[v1.SecretKeySelector] + delete_hook_on_finish: Optional[bool] + enable_ssl_verification: Optional[bool] + events: Optional[List[str]] + filter: Optional[EventSourceFilter] + gitlab_base_url: Optional[str] + metadata: Optional[Dict[str, str]] + project_id: Optional[str] + projects: Optional[List[str]] + secret_token: Optional[v1.SecretKeySelector] + webhook: Optional[WebhookContext] + +class KafkaEventSource(BaseModel): + config: Optional[str] + connection_backoff: Optional[Backoff] + consumer_group: Optional[KafkaConsumerGroup] + filter: Optional[EventSourceFilter] + json_body: Optional[bool] + limit_events_per_second: Optional[str] + metadata: Optional[Dict[str, str]] + partition: Optional[str] + sasl: Optional[SASLConfig] + tls: Optional[TLSConfig] + topic: Optional[str] + url: Optional[str] + version: Optional[str] + +class KafkaTrigger(BaseModel): + compress: Optional[bool] + flush_frequency: Optional[int] + parameters: Optional[List[TriggerParameter]] + partition: Optional[int] + partitioning_key: Optional[str] + payload: Optional[List[TriggerParameter]] + required_acks: Optional[int] + sasl: Optional[SASLConfig] + tls: Optional[TLSConfig] + topic: Optional[str] + url: Optional[str] + version: Optional[str] + +class MQTTEventSource(BaseModel): + client_id: Optional[str] + connection_backoff: Optional[Backoff] + filter: Optional[EventSourceFilter] + json_body: Optional[bool] + metadata: Optional[Dict[str, str]] + tls: Optional[TLSConfig] + topic: Optional[str] + url: Optional[str] + +class NATSEventsSource(BaseModel): + auth: Optional[NATSAuth] + connection_backoff: Optional[Backoff] + filter: Optional[EventSourceFilter] + json_body: Optional[bool] + metadata: Optional[Dict[str, str]] + subject: Optional[str] + tls: Optional[TLSConfig] + url: Optional[str] + +class NATSTrigger(BaseModel): + parameters: Optional[List[TriggerParameter]] + payload: Optional[List[TriggerParameter]] + subject: Optional[str] + tls: Optional[TLSConfig] + url: Optional[str] + +class NSQEventSource(BaseModel): + channel: Optional[str] + connection_backoff: Optional[Backoff] + filter: Optional[EventSourceFilter] + host_address: Optional[str] + json_body: Optional[bool] + metadata: Optional[Dict[str, str]] + tls: Optional[TLSConfig] + topic: Optional[str] + +class OpenWhiskTrigger(BaseModel): + action_name: Optional[str] + auth_token: Optional[v1.SecretKeySelector] + host: Optional[str] + namespace: Optional[str] + parameters: Optional[List[TriggerParameter]] + payload: Optional[List[TriggerParameter]] + version: Optional[str] + +class PulsarEventSource(BaseModel): + auth_token_secret: Optional[v1.SecretKeySelector] + connection_backoff: Optional[Backoff] + filter: Optional[EventSourceFilter] + json_body: Optional[bool] + metadata: Optional[Dict[str, str]] + tls: Optional[TLSConfig] + tls_allow_insecure_connection: Optional[bool] + tls_trust_certs_secret: Optional[v1.SecretKeySelector] + tls_validate_hostname: Optional[bool] + topics: Optional[List[str]] + type: Optional[str] + url: Optional[str] + +class PulsarTrigger(BaseModel): + auth_token_secret: Optional[v1.SecretKeySelector] + connection_backoff: Optional[Backoff] + parameters: Optional[List[TriggerParameter]] + payload: Optional[List[TriggerParameter]] + tls: Optional[TLSConfig] + tls_allow_insecure_connection: Optional[bool] + tls_trust_certs_secret: Optional[v1.SecretKeySelector] + tls_validate_hostname: Optional[bool] + topic: Optional[str] + url: Optional[str] + +class RedisEventSource(BaseModel): + channels: Optional[List[str]] + db: Optional[int] + filter: Optional[EventSourceFilter] + host_address: Optional[str] + json_body: Optional[bool] + metadata: Optional[Dict[str, str]] + namespace: Optional[str] + password: Optional[v1.SecretKeySelector] + tls: Optional[TLSConfig] + username: Optional[str] + +class RedisStreamEventSource(BaseModel): + consumer_group: Optional[str] + db: Optional[int] + filter: Optional[EventSourceFilter] + host_address: Optional[str] + max_msg_count_per_read: Optional[int] + metadata: Optional[Dict[str, str]] + password: Optional[v1.SecretKeySelector] + streams: Optional[List[str]] + tls: Optional[TLSConfig] + username: Optional[str] + +class ResourceEventSource(BaseModel): + event_types: Optional[List[str]] + filter: Optional[ResourceFilter] + group_version_resource: Optional[v1_1.GroupVersionResource] + metadata: Optional[Dict[str, str]] + namespace: Optional[str] + +class SNSEventSource(BaseModel): + access_key: Optional[v1.SecretKeySelector] + endpoint: Optional[str] + filter: Optional[EventSourceFilter] + metadata: Optional[Dict[str, str]] + region: Optional[str] + role_arn: Optional[str] + secret_key: Optional[v1.SecretKeySelector] + topic_arn: Optional[str] + validate_signature: Optional[bool] + webhook: Optional[WebhookContext] + +class SecureHeader(BaseModel): + name: Optional[str] + value_from: Optional[ValueFromSource] + +class SensorStatus(BaseModel): + status: Optional[Status] + +class Service(BaseModel): + cluster_ip: Optional[str] + ports: Optional[List[v1.ServicePort]] + +class SlackEventSource(BaseModel): + filter: Optional[EventSourceFilter] + metadata: Optional[Dict[str, str]] + signing_secret: Optional[v1.SecretKeySelector] + token: Optional[v1.SecretKeySelector] + webhook: Optional[WebhookContext] + +class SlackTrigger(BaseModel): + channel: Optional[str] + message: Optional[str] + parameters: Optional[List[TriggerParameter]] + slack_token: Optional[v1.SecretKeySelector] + +class StorageGridEventSource(BaseModel): + api_url: Optional[str] + auth_token: Optional[v1.SecretKeySelector] + bucket: Optional[str] + events: Optional[List[str]] + filter: Optional[StorageGridFilter] + metadata: Optional[Dict[str, str]] + region: Optional[str] + topic_arn: Optional[str] + webhook: Optional[WebhookContext] + +class StripeEventSource(BaseModel): + api_key: Optional[v1.SecretKeySelector] + create_webhook: Optional[bool] + event_filter: Optional[List[str]] + metadata: Optional[Dict[str, str]] + webhook: Optional[WebhookContext] + +class ArtifactLocation(BaseModel): + configmap: Optional[v1.ConfigMapKeySelector] + file: Optional[FileArtifact] + git: Optional[GitArtifact] + inline: Optional[str] + resource: Optional[Resource] + s3: Optional[S3Artifact] + url: Optional[URLArtifact] + +class EventDependency(BaseModel): + event_name: Optional[str] + event_source_name: Optional[str] + filters: Optional[EventDependencyFilter] + filters_logical_operator: Optional[str] + name: Optional[str] + transform: Optional[EventDependencyTransformer] + +class HTTPTrigger(BaseModel): + basic_auth: Optional[BasicAuth] + headers: Optional[Dict[str, str]] + method: Optional[str] + parameters: Optional[List[TriggerParameter]] + payload: Optional[List[TriggerParameter]] + secure_headers: Optional[List[SecureHeader]] + timeout: Optional[str] + tls: Optional[TLSConfig] + url: Optional[str] + +class StandardK8STrigger(BaseModel): + live_object: Optional[bool] + operation: Optional[str] + parameters: Optional[List[TriggerParameter]] + patch_strategy: Optional[str] + source: Optional[ArtifactLocation] + +class ArgoWorkflowTrigger(BaseModel): + args: Optional[List[str]] + operation: Optional[str] + parameters: Optional[List[TriggerParameter]] + source: Optional[ArtifactLocation] + +class TriggerTemplate(BaseModel): + argo_workflow: Optional[ArgoWorkflowTrigger] + aws_lambda: Optional[AWSLambdaTrigger] + azure_event_hubs: Optional[AzureEventHubsTrigger] + conditions: Optional[str] + conditions_reset: Optional[List[ConditionsResetCriteria]] + custom: Optional[CustomTrigger] + http: Optional[HTTPTrigger] + k8s: Optional[StandardK8STrigger] + kafka: Optional[KafkaTrigger] + log: Optional[LogTrigger] + name: Optional[str] + nats: Optional[NATSTrigger] + open_whisk: Optional[OpenWhiskTrigger] + pulsar: Optional[PulsarTrigger] + slack: Optional[SlackTrigger] + +class Template(BaseModel): + affinity: Optional[v1.Affinity] + container: Optional[v1.Container] + image_pull_secrets: Optional[List[v1.LocalObjectReference]] + metadata: Optional[Metadata] + node_selector: Optional[Dict[str, str]] + priority: Optional[int] + priority_class_name: Optional[str] + security_context: Optional[v1.PodSecurityContext] + service_account_name: Optional[str] + tolerations: Optional[List[v1.Toleration]] + volumes: Optional[List[v1.Volume]] + +class Trigger(BaseModel): + parameters: Optional[List[TriggerParameter]] + policy: Optional[TriggerPolicy] + rate_limit: Optional[RateLimit] + retry_strategy: Optional[Backoff] + template: Optional[TriggerTemplate] + +class EventSourceSpec(BaseModel): + amqp: Optional[Dict[str, AMQPEventSource]] + azure_events_hub: Optional[Dict[str, AzureEventsHubEventSource]] + bitbucket: Optional[Dict[str, BitbucketEventSource]] + bitbucketserver: Optional[Dict[str, BitbucketServerEventSource]] + calendar: Optional[Dict[str, CalendarEventSource]] + emitter: Optional[Dict[str, EmitterEventSource]] + event_bus_name: Optional[str] + file: Optional[Dict[str, FileEventSource]] + generic: Optional[Dict[str, GenericEventSource]] + github: Optional[Dict[str, GithubEventSource]] + gitlab: Optional[Dict[str, GitlabEventSource]] + hdfs: Optional[Dict[str, HDFSEventSource]] + kafka: Optional[Dict[str, KafkaEventSource]] + minio: Optional[Dict[str, S3Artifact]] + mqtt: Optional[Dict[str, MQTTEventSource]] + nats: Optional[Dict[str, NATSEventsSource]] + nsq: Optional[Dict[str, NSQEventSource]] + pub_sub: Optional[Dict[str, PubSubEventSource]] + pulsar: Optional[Dict[str, PulsarEventSource]] + redis: Optional[Dict[str, RedisEventSource]] + redis_stream: Optional[Dict[str, RedisStreamEventSource]] + replicas: Optional[int] + resource: Optional[Dict[str, ResourceEventSource]] + service: Optional[Service] + slack: Optional[Dict[str, SlackEventSource]] + sns: Optional[Dict[str, SNSEventSource]] + sqs: Optional[Dict[str, SQSEventSource]] + storage_grid: Optional[Dict[str, StorageGridEventSource]] + stripe: Optional[Dict[str, StripeEventSource]] + template: Optional[Template] + webhook: Optional[Dict[str, WebhookEventSource]] + +class SensorSpec(BaseModel): + dependencies: Optional[List[EventDependency]] + error_on_failed_round: Optional[bool] + event_bus_name: Optional[str] + replicas: Optional[int] + template: Optional[Template] + triggers: Optional[List[Trigger]] + +class EventSource(BaseModel): + metadata: Optional[v1_1.ObjectMeta] + spec: Optional[EventSourceSpec] + status: Optional[EventSourceStatus] + +class EventSourceList(BaseModel): + items: Optional[List[EventSource]] + metadata: Optional[v1_1.ListMeta] + +class Sensor(BaseModel): + metadata: Optional[v1_1.ObjectMeta] + spec: Optional[SensorSpec] + status: Optional[SensorStatus] + +class SensorList(BaseModel): + items: Optional[List[Sensor]] + metadata: Optional[v1_1.ListMeta] diff --git a/src/hera/workflows/models/io/argoproj/workflow/v1alpha1.pyi b/src/hera/workflows/models/io/argoproj/workflow/v1alpha1.pyi new file mode 100644 index 000000000..26203f374 --- /dev/null +++ b/src/hera/workflows/models/io/argoproj/workflow/v1alpha1.pyi @@ -0,0 +1,1084 @@ +from typing import Any, Dict, List, Optional + +from hera.shared._base_model import BaseModel as BaseModel + +from ...k8s.api.core import v1 as v1 +from ...k8s.api.policy import v1beta1 as v1beta1 +from ...k8s.apimachinery.pkg.apis.meta import v1 as v1_1 +from ...k8s.apimachinery.pkg.util import intstr as intstr + +class Amount(BaseModel): + __root__: float + +class ArchivedWorkflowDeletedResponse(BaseModel): ... + +class ArtGCStatus(BaseModel): + not_specified: Optional[bool] + pods_recouped: Optional[Dict[str, bool]] + strategies_processed: Optional[Dict[str, bool]] + +class ArtifactRepositoryRef(BaseModel): + config_map: Optional[str] + key: Optional[str] + +class ArtifactResult(BaseModel): + error: Optional[str] + name: str + success: Optional[bool] + +class ArtifactResultNodeStatus(BaseModel): + artifact_results: Optional[Dict[str, ArtifactResult]] + +class ClusterWorkflowTemplateDeleteResponse(BaseModel): ... + +class CollectEventRequest(BaseModel): + name: Optional[str] + +class CollectEventResponse(BaseModel): ... + +class Condition(BaseModel): + message: Optional[str] + status: Optional[str] + type: Optional[str] + +class ContinueOn(BaseModel): + error: Optional[bool] + failed: Optional[bool] + +class Counter(BaseModel): + value: str + +class CreateS3BucketOptions(BaseModel): + object_locking: Optional[bool] + +class CronWorkflowDeletedResponse(BaseModel): ... + +class CronWorkflowResumeRequest(BaseModel): + name: Optional[str] + namespace: Optional[str] + +class CronWorkflowSuspendRequest(BaseModel): + name: Optional[str] + namespace: Optional[str] + +class Event(BaseModel): + selector: str + +class EventResponse(BaseModel): ... + +class ExecutorConfig(BaseModel): + service_account_name: Optional[str] + +class Gauge(BaseModel): + realtime: bool + value: str + +class GetUserInfoResponse(BaseModel): + email: Optional[str] + email_verified: Optional[bool] + groups: Optional[List[str]] + issuer: Optional[str] + service_account_name: Optional[str] + service_account_namespace: Optional[str] + subject: Optional[str] + +class HTTPBodySource(BaseModel): + bytes: Optional[str] + +class Header(BaseModel): + name: str + value: str + +class Histogram(BaseModel): + buckets: List[Amount] + value: str + +class Item(BaseModel): + __root__: Any + +class LabelKeys(BaseModel): + items: Optional[List[str]] + +class LabelValueFrom(BaseModel): + expression: str + +class LabelValues(BaseModel): + items: Optional[List[str]] + +class Link(BaseModel): + name: str + scope: str + url: str + +class LogEntry(BaseModel): + content: Optional[str] + pod_name: Optional[str] + +class MemoizationStatus(BaseModel): + cache_name: str + hit: bool + key: str + +class Metadata(BaseModel): + annotations: Optional[Dict[str, str]] + labels: Optional[Dict[str, str]] + +class MetricLabel(BaseModel): + key: str + value: str + +class Mutex(BaseModel): + name: Optional[str] + +class MutexHolding(BaseModel): + holder: Optional[str] + mutex: Optional[str] + +class MutexStatus(BaseModel): + holding: Optional[List[MutexHolding]] + waiting: Optional[List[MutexHolding]] + +class NodeSynchronizationStatus(BaseModel): + waiting: Optional[str] + +class NoneStrategy(BaseModel): ... + +class OAuth2EndpointParam(BaseModel): + key: str + value: Optional[str] + +class OSSLifecycleRule(BaseModel): + mark_deletion_after_days: Optional[int] + mark_infrequent_access_after_days: Optional[int] + +class Plugin(BaseModel): ... + +class Prometheus(BaseModel): + counter: Optional[Counter] + gauge: Optional[Gauge] + help: str + histogram: Optional[Histogram] + labels: Optional[List[MetricLabel]] + name: str + when: Optional[str] + +class RawArtifact(BaseModel): + data: str + +class ResubmitArchivedWorkflowRequest(BaseModel): + memoized: Optional[bool] + name: Optional[str] + namespace: Optional[str] + parameters: Optional[List[str]] + uid: Optional[str] + +class RetryArchivedWorkflowRequest(BaseModel): + name: Optional[str] + namespace: Optional[str] + node_field_selector: Optional[str] + parameters: Optional[List[str]] + restart_successful: Optional[bool] + uid: Optional[str] + +class RetryNodeAntiAffinity(BaseModel): ... + +class SemaphoreHolding(BaseModel): + holders: Optional[List[str]] + semaphore: Optional[str] + +class SemaphoreStatus(BaseModel): + holding: Optional[List[SemaphoreHolding]] + waiting: Optional[List[SemaphoreHolding]] + +class SuppliedValueFrom(BaseModel): ... + +class SuspendTemplate(BaseModel): + duration: Optional[str] + +class SynchronizationStatus(BaseModel): + mutex: Optional[MutexStatus] + semaphore: Optional[SemaphoreStatus] + +class TTLStrategy(BaseModel): + seconds_after_completion: Optional[int] + seconds_after_failure: Optional[int] + seconds_after_success: Optional[int] + +class TarStrategy(BaseModel): + compression_level: Optional[int] + +class TemplateRef(BaseModel): + cluster_scope: Optional[bool] + name: Optional[str] + template: Optional[str] + +class TransformationStep(BaseModel): + expression: str + +class Version(BaseModel): + build_date: str + compiler: str + git_commit: str + git_tag: str + git_tree_state: str + go_version: str + platform: str + version: str + +class VolumeClaimGC(BaseModel): + strategy: Optional[str] + +class WorkflowDeleteResponse(BaseModel): ... + +class WorkflowMetadata(BaseModel): + annotations: Optional[Dict[str, str]] + labels: Optional[Dict[str, str]] + labels_from: Optional[Dict[str, LabelValueFrom]] + +class WorkflowResubmitRequest(BaseModel): + memoized: Optional[bool] + name: Optional[str] + namespace: Optional[str] + parameters: Optional[List[str]] + +class WorkflowResumeRequest(BaseModel): + name: Optional[str] + namespace: Optional[str] + node_field_selector: Optional[str] + +class WorkflowRetryRequest(BaseModel): + name: Optional[str] + namespace: Optional[str] + node_field_selector: Optional[str] + parameters: Optional[List[str]] + restart_successful: Optional[bool] + +class WorkflowSetRequest(BaseModel): + message: Optional[str] + name: Optional[str] + namespace: Optional[str] + node_field_selector: Optional[str] + output_parameters: Optional[str] + phase: Optional[str] + +class WorkflowStopRequest(BaseModel): + message: Optional[str] + name: Optional[str] + namespace: Optional[str] + node_field_selector: Optional[str] + +class WorkflowSuspendRequest(BaseModel): + name: Optional[str] + namespace: Optional[str] + +class WorkflowTemplateDeleteResponse(BaseModel): ... + +class WorkflowTemplateRef(BaseModel): + cluster_scope: Optional[bool] + name: Optional[str] + +class WorkflowTerminateRequest(BaseModel): + name: Optional[str] + namespace: Optional[str] + +class ZipStrategy(BaseModel): ... + +class ArchiveStrategy(BaseModel): + none: Optional[NoneStrategy] + tar: Optional[TarStrategy] + zip: Optional[ZipStrategy] + +class ArtifactGC(BaseModel): + pod_metadata: Optional[Metadata] + service_account_name: Optional[str] + strategy: Optional[str] + +class ArtifactGCStatus(BaseModel): + artifact_results_by_node: Optional[Dict[str, ArtifactResultNodeStatus]] + +class ArtifactoryArtifact(BaseModel): + password_secret: Optional[v1.SecretKeySelector] + url: str + username_secret: Optional[v1.SecretKeySelector] + +class ArtifactoryArtifactRepository(BaseModel): + password_secret: Optional[v1.SecretKeySelector] + repo_url: Optional[str] + username_secret: Optional[v1.SecretKeySelector] + +class AzureArtifact(BaseModel): + account_key_secret: Optional[v1.SecretKeySelector] + blob: str + container: str + endpoint: str + use_sdk_creds: Optional[bool] + +class AzureArtifactRepository(BaseModel): + account_key_secret: Optional[v1.SecretKeySelector] + blob_name_format: Optional[str] + container: str + endpoint: str + use_sdk_creds: Optional[bool] + +class Backoff(BaseModel): + duration: Optional[str] + factor: Optional[intstr.IntOrString] + max_duration: Optional[str] + +class BasicAuth(BaseModel): + password_secret: Optional[v1.SecretKeySelector] + username_secret: Optional[v1.SecretKeySelector] + +class Cache(BaseModel): + config_map: v1.ConfigMapKeySelector + +class ClientCertAuth(BaseModel): + client_cert_secret: Optional[v1.SecretKeySelector] + client_key_secret: Optional[v1.SecretKeySelector] + +class ContainerSetRetryStrategy(BaseModel): + duration: Optional[str] + retries: intstr.IntOrString + +class CronWorkflowStatus(BaseModel): + active: List[v1.ObjectReference] + conditions: List[Condition] + last_scheduled_time: v1_1.Time + +class GCSArtifact(BaseModel): + bucket: Optional[str] + key: str + service_account_key_secret: Optional[v1.SecretKeySelector] + +class GCSArtifactRepository(BaseModel): + bucket: Optional[str] + key_format: Optional[str] + service_account_key_secret: Optional[v1.SecretKeySelector] + +class GitArtifact(BaseModel): + branch: Optional[str] + depth: Optional[int] + disable_submodules: Optional[bool] + fetch: Optional[List[str]] + insecure_ignore_host_key: Optional[bool] + password_secret: Optional[v1.SecretKeySelector] + repo: str + revision: Optional[str] + single_branch: Optional[bool] + ssh_private_key_secret: Optional[v1.SecretKeySelector] + username_secret: Optional[v1.SecretKeySelector] + +class HDFSArtifact(BaseModel): + addresses: Optional[List[str]] + force: Optional[bool] + hdfs_user: Optional[str] + krb_c_cache_secret: Optional[v1.SecretKeySelector] + krb_config_config_map: Optional[v1.ConfigMapKeySelector] + krb_keytab_secret: Optional[v1.SecretKeySelector] + krb_realm: Optional[str] + krb_service_principal_name: Optional[str] + krb_username: Optional[str] + path: str + +class HDFSArtifactRepository(BaseModel): + addresses: Optional[List[str]] + force: Optional[bool] + hdfs_user: Optional[str] + krb_c_cache_secret: Optional[v1.SecretKeySelector] + krb_config_config_map: Optional[v1.ConfigMapKeySelector] + krb_keytab_secret: Optional[v1.SecretKeySelector] + krb_realm: Optional[str] + krb_service_principal_name: Optional[str] + krb_username: Optional[str] + path_format: Optional[str] + +class HTTPHeaderSource(BaseModel): + secret_key_ref: Optional[v1.SecretKeySelector] + +class InfoResponse(BaseModel): + links: Optional[List[Link]] + managed_namespace: Optional[str] + modals: Optional[Dict[str, bool]] + nav_color: Optional[str] + +class Memoize(BaseModel): + cache: Cache + key: str + max_age: str + +class Metrics(BaseModel): + prometheus: List[Prometheus] + +class OAuth2Auth(BaseModel): + client_id_secret: Optional[v1.SecretKeySelector] + client_secret_secret: Optional[v1.SecretKeySelector] + endpoint_params: Optional[List[OAuth2EndpointParam]] + scopes: Optional[List[str]] + token_url_secret: Optional[v1.SecretKeySelector] + +class OSSArtifact(BaseModel): + access_key_secret: Optional[v1.SecretKeySelector] + bucket: Optional[str] + create_bucket_if_not_present: Optional[bool] + endpoint: Optional[str] + key: str + lifecycle_rule: Optional[OSSLifecycleRule] + secret_key_secret: Optional[v1.SecretKeySelector] + security_token: Optional[str] + +class OSSArtifactRepository(BaseModel): + access_key_secret: Optional[v1.SecretKeySelector] + bucket: Optional[str] + create_bucket_if_not_present: Optional[bool] + endpoint: Optional[str] + key_format: Optional[str] + lifecycle_rule: Optional[OSSLifecycleRule] + secret_key_secret: Optional[v1.SecretKeySelector] + security_token: Optional[str] + +class RetryAffinity(BaseModel): + node_anti_affinity: Optional[RetryNodeAntiAffinity] + +class RetryStrategy(BaseModel): + affinity: Optional[RetryAffinity] + backoff: Optional[Backoff] + expression: Optional[str] + limit: Optional[intstr.IntOrString] + retry_policy: Optional[str] + +class S3EncryptionOptions(BaseModel): + enable_encryption: Optional[bool] + kms_encryption_context: Optional[str] + kms_key_id: Optional[str] + server_side_customer_key_secret: Optional[v1.SecretKeySelector] + +class SemaphoreRef(BaseModel): + config_map_key_ref: Optional[v1.ConfigMapKeySelector] + +class Sequence(BaseModel): + count: Optional[intstr.IntOrString] + end: Optional[intstr.IntOrString] + format: Optional[str] + start: Optional[intstr.IntOrString] + +class SubmitOpts(BaseModel): + annotations: Optional[str] + dry_run: Optional[bool] + entry_point: Optional[str] + generate_name: Optional[str] + labels: Optional[str] + name: Optional[str] + owner_reference: Optional[v1_1.OwnerReference] + parameters: Optional[List[str]] + pod_priority_class_name: Optional[str] + priority: Optional[int] + server_dry_run: Optional[bool] + service_account: Optional[str] + +class Synchronization(BaseModel): + mutex: Optional[Mutex] + semaphore: Optional[SemaphoreRef] + +class ValueFrom(BaseModel): + config_map_key_ref: Optional[v1.ConfigMapKeySelector] + default: Optional[str] + event: Optional[str] + expression: Optional[str] + jq_filter: Optional[str] + json_path: Optional[str] + parameter: Optional[str] + path: Optional[str] + supplied: Optional[SuppliedValueFrom] + +class WorkflowSubmitRequest(BaseModel): + namespace: Optional[str] + resource_kind: Optional[str] + resource_name: Optional[str] + submit_options: Optional[SubmitOpts] + +class HTTPAuth(BaseModel): + basic_auth: Optional[BasicAuth] + client_cert: Optional[ClientCertAuth] + oauth2: Optional[OAuth2Auth] + +class HTTPHeader(BaseModel): + name: str + value: Optional[str] + value_from: Optional[HTTPHeaderSource] + +class Parameter(BaseModel): + default: Optional[str] + description: Optional[str] + enum: Optional[List[str]] + global_name: Optional[str] + name: str + value: Optional[str] + value_from: Optional[ValueFrom] + +class PodGC(BaseModel): + label_selector: Optional[v1_1.LabelSelector] + strategy: Optional[str] + +class S3Artifact(BaseModel): + access_key_secret: Optional[v1.SecretKeySelector] + bucket: Optional[str] + create_bucket_if_not_present: Optional[CreateS3BucketOptions] + encryption_options: Optional[S3EncryptionOptions] + endpoint: Optional[str] + insecure: Optional[bool] + key: Optional[str] + region: Optional[str] + role_arn: Optional[str] + secret_key_secret: Optional[v1.SecretKeySelector] + use_sdk_creds: Optional[bool] + +class S3ArtifactRepository(BaseModel): + access_key_secret: Optional[v1.SecretKeySelector] + bucket: Optional[str] + create_bucket_if_not_present: Optional[CreateS3BucketOptions] + encryption_options: Optional[S3EncryptionOptions] + endpoint: Optional[str] + insecure: Optional[bool] + key_format: Optional[str] + key_prefix: Optional[str] + region: Optional[str] + role_arn: Optional[str] + secret_key_secret: Optional[v1.SecretKeySelector] + use_sdk_creds: Optional[bool] + +class ArtifactRepository(BaseModel): + archive_logs: Optional[bool] + artifactory: Optional[ArtifactoryArtifactRepository] + azure: Optional[AzureArtifactRepository] + gcs: Optional[GCSArtifactRepository] + hdfs: Optional[HDFSArtifactRepository] + oss: Optional[OSSArtifactRepository] + s3: Optional[S3ArtifactRepository] + +class ArtifactRepositoryRefStatus(BaseModel): + artifact_repository: Optional[ArtifactRepository] + config_map: Optional[str] + default: Optional[bool] + key: Optional[str] + namespace: Optional[str] + +class HTTP(BaseModel): + body: Optional[str] + body_from: Optional[HTTPBodySource] + headers: Optional[List[HTTPHeader]] + insecure_skip_verify: Optional[bool] + method: Optional[str] + success_condition: Optional[str] + timeout_seconds: Optional[int] + url: str + +class HTTPArtifact(BaseModel): + auth: Optional[HTTPAuth] + headers: Optional[List[Header]] + url: str + +class Artifact(BaseModel): + archive: Optional[ArchiveStrategy] + archive_logs: Optional[bool] + artifact_gc: Optional[ArtifactGC] + artifactory: Optional[ArtifactoryArtifact] + azure: Optional[AzureArtifact] + deleted: Optional[bool] + from_: Optional[str] + from_expression: Optional[str] + gcs: Optional[GCSArtifact] + git: Optional[GitArtifact] + global_name: Optional[str] + hdfs: Optional[HDFSArtifact] + http: Optional[HTTPArtifact] + mode: Optional[int] + name: str + optional: Optional[bool] + oss: Optional[OSSArtifact] + path: Optional[str] + raw: Optional[RawArtifact] + recurse_mode: Optional[bool] + s3: Optional[S3Artifact] + sub_path: Optional[str] + +class ArtifactLocation(BaseModel): + archive_logs: Optional[bool] + artifactory: Optional[ArtifactoryArtifact] + azure: Optional[AzureArtifact] + gcs: Optional[GCSArtifact] + git: Optional[GitArtifact] + hdfs: Optional[HDFSArtifact] + http: Optional[HTTPArtifact] + oss: Optional[OSSArtifact] + raw: Optional[RawArtifact] + s3: Optional[S3Artifact] + +class ArtifactNodeSpec(BaseModel): + archive_location: Optional[ArtifactLocation] + artifacts: Optional[Dict[str, Artifact]] + +class ArtifactPaths(BaseModel): + archive: Optional[ArchiveStrategy] + archive_logs: Optional[bool] + artifact_gc: Optional[ArtifactGC] + artifactory: Optional[ArtifactoryArtifact] + azure: Optional[AzureArtifact] + deleted: Optional[bool] + from_: Optional[str] + from_expression: Optional[str] + gcs: Optional[GCSArtifact] + git: Optional[GitArtifact] + global_name: Optional[str] + hdfs: Optional[HDFSArtifact] + http: Optional[HTTPArtifact] + mode: Optional[int] + name: str + optional: Optional[bool] + oss: Optional[OSSArtifact] + path: Optional[str] + raw: Optional[RawArtifact] + recurse_mode: Optional[bool] + s3: Optional[S3Artifact] + sub_path: Optional[str] + +class ContainerNode(BaseModel): + args: Optional[List[str]] + command: Optional[List[str]] + dependencies: Optional[List[str]] + env: Optional[List[v1.EnvVar]] + env_from: Optional[List[v1.EnvFromSource]] + image: Optional[str] + image_pull_policy: Optional[str] + lifecycle: Optional[v1.Lifecycle] + liveness_probe: Optional[v1.Probe] + name: str + ports: Optional[List[v1.ContainerPort]] + readiness_probe: Optional[v1.Probe] + resources: Optional[v1.ResourceRequirements] + security_context: Optional[v1.SecurityContext] + startup_probe: Optional[v1.Probe] + stdin: Optional[bool] + stdin_once: Optional[bool] + termination_message_path: Optional[str] + termination_message_policy: Optional[str] + tty: Optional[bool] + volume_devices: Optional[List[v1.VolumeDevice]] + volume_mounts: Optional[List[v1.VolumeMount]] + working_dir: Optional[str] + +class ContainerSetTemplate(BaseModel): + containers: List[ContainerNode] + retry_strategy: Optional[ContainerSetRetryStrategy] + volume_mounts: Optional[List[v1.VolumeMount]] + +class DataSource(BaseModel): + artifact_paths: Optional[ArtifactPaths] + +class Inputs(BaseModel): + artifacts: Optional[List[Artifact]] + parameters: Optional[List[Parameter]] + +class ManifestFrom(BaseModel): + artifact: Artifact + +class Outputs(BaseModel): + artifacts: Optional[List[Artifact]] + exit_code: Optional[str] + parameters: Optional[List[Parameter]] + result: Optional[str] + +class ResourceTemplate(BaseModel): + action: str + failure_condition: Optional[str] + flags: Optional[List[str]] + manifest: Optional[str] + manifest_from: Optional[ManifestFrom] + merge_strategy: Optional[str] + set_owner_reference: Optional[bool] + success_condition: Optional[str] + +class ScriptTemplate(BaseModel): + args: Optional[List[str]] + command: Optional[List[str]] + env: Optional[List[v1.EnvVar]] + env_from: Optional[List[v1.EnvFromSource]] + image: str + image_pull_policy: Optional[str] + lifecycle: Optional[v1.Lifecycle] + liveness_probe: Optional[v1.Probe] + name: Optional[str] + ports: Optional[List[v1.ContainerPort]] + readiness_probe: Optional[v1.Probe] + resources: Optional[v1.ResourceRequirements] + security_context: Optional[v1.SecurityContext] + source: str + startup_probe: Optional[v1.Probe] + stdin: Optional[bool] + stdin_once: Optional[bool] + termination_message_path: Optional[str] + termination_message_policy: Optional[str] + tty: Optional[bool] + volume_devices: Optional[List[v1.VolumeDevice]] + volume_mounts: Optional[List[v1.VolumeMount]] + working_dir: Optional[str] + +class UserContainer(BaseModel): + args: Optional[List[str]] + command: Optional[List[str]] + env: Optional[List[v1.EnvVar]] + env_from: Optional[List[v1.EnvFromSource]] + image: Optional[str] + image_pull_policy: Optional[str] + lifecycle: Optional[v1.Lifecycle] + liveness_probe: Optional[v1.Probe] + mirror_volume_mounts: Optional[bool] + name: str + ports: Optional[List[v1.ContainerPort]] + readiness_probe: Optional[v1.Probe] + resources: Optional[v1.ResourceRequirements] + security_context: Optional[v1.SecurityContext] + startup_probe: Optional[v1.Probe] + stdin: Optional[bool] + stdin_once: Optional[bool] + termination_message_path: Optional[str] + termination_message_policy: Optional[str] + tty: Optional[bool] + volume_devices: Optional[List[v1.VolumeDevice]] + volume_mounts: Optional[List[v1.VolumeMount]] + working_dir: Optional[str] + +class Arguments(BaseModel): + artifacts: Optional[List[Artifact]] + parameters: Optional[List[Parameter]] + +class ArtifactGCSpec(BaseModel): + artifacts_by_node: Optional[Dict[str, ArtifactNodeSpec]] + +class Data(BaseModel): + source: DataSource + transformation: List[TransformationStep] + +class LifecycleHook(BaseModel): + arguments: Optional[Arguments] + expression: Optional[str] + template: Optional[str] + template_ref: Optional[TemplateRef] + +class NodeResult(BaseModel): + message: Optional[str] + outputs: Optional[Outputs] + phase: Optional[str] + progress: Optional[str] + +class NodeStatus(BaseModel): + boundary_id: Optional[str] + children: Optional[List[str]] + daemoned: Optional[bool] + display_name: Optional[str] + estimated_duration: Optional[int] + finished_at: Optional[v1_1.Time] + host_node_name: Optional[str] + id: str + inputs: Optional[Inputs] + memoization_status: Optional[MemoizationStatus] + message: Optional[str] + name: str + outbound_nodes: Optional[List[str]] + outputs: Optional[Outputs] + phase: Optional[str] + pod_ip: Optional[str] + progress: Optional[str] + resources_duration: Optional[Dict[str, int]] + started_at: Optional[v1_1.Time] + synchronization_status: Optional[NodeSynchronizationStatus] + template_name: Optional[str] + template_ref: Optional[TemplateRef] + template_scope: Optional[str] + type: str + +class Submit(BaseModel): + arguments: Optional[Arguments] + metadata: Optional[v1_1.ObjectMeta] + workflow_template_ref: WorkflowTemplateRef + +class WorkflowEventBindingSpec(BaseModel): + event: Event + submit: Optional[Submit] + +class WorkflowTaskSetStatus(BaseModel): + nodes: Optional[Dict[str, NodeResult]] + +class WorkflowEventBinding(BaseModel): + api_version: Optional[str] + kind: Optional[str] + metadata: v1_1.ObjectMeta + spec: WorkflowEventBindingSpec + +class WorkflowEventBindingList(BaseModel): + api_version: Optional[str] + items: List[WorkflowEventBinding] + kind: Optional[str] + metadata: v1_1.ListMeta + +class ClusterWorkflowTemplate(BaseModel): + api_version: Optional[str] + kind: Optional[str] + metadata: v1_1.ObjectMeta + spec: WorkflowSpec + +class ClusterWorkflowTemplateCreateRequest(BaseModel): + create_options: Optional[v1_1.CreateOptions] + template: Optional[ClusterWorkflowTemplate] + +class ClusterWorkflowTemplateLintRequest(BaseModel): + create_options: Optional[v1_1.CreateOptions] + template: Optional[ClusterWorkflowTemplate] + +class ClusterWorkflowTemplateList(BaseModel): + api_version: Optional[str] + items: List[ClusterWorkflowTemplate] + kind: Optional[str] + metadata: v1_1.ListMeta + +class ClusterWorkflowTemplateUpdateRequest(BaseModel): + name: Optional[str] + template: Optional[ClusterWorkflowTemplate] + +class CreateCronWorkflowRequest(BaseModel): + create_options: Optional[v1_1.CreateOptions] + cron_workflow: Optional[CronWorkflow] + namespace: Optional[str] + +class CronWorkflow(BaseModel): + api_version: Optional[str] + kind: Optional[str] + metadata: v1_1.ObjectMeta + spec: CronWorkflowSpec + status: Optional[CronWorkflowStatus] + +class CronWorkflowList(BaseModel): + api_version: Optional[str] + items: List[CronWorkflow] + kind: Optional[str] + metadata: v1_1.ListMeta + +class CronWorkflowSpec(BaseModel): + concurrency_policy: Optional[str] + failed_jobs_history_limit: Optional[int] + schedule: str + starting_deadline_seconds: Optional[int] + successful_jobs_history_limit: Optional[int] + suspend: Optional[bool] + timezone: Optional[str] + workflow_metadata: Optional[v1_1.ObjectMeta] + workflow_spec: WorkflowSpec + +class DAGTask(BaseModel): + arguments: Optional[Arguments] + continue_on: Optional[ContinueOn] + dependencies: Optional[List[str]] + depends: Optional[str] + hooks: Optional[Dict[str, LifecycleHook]] + inline: Optional[Template] + name: str + on_exit: Optional[str] + template: Optional[str] + template_ref: Optional[TemplateRef] + when: Optional[str] + with_items: Optional[List[Item]] + with_param: Optional[str] + with_sequence: Optional[Sequence] + +class DAGTemplate(BaseModel): + fail_fast: Optional[bool] + target: Optional[str] + tasks: List[DAGTask] + +class LintCronWorkflowRequest(BaseModel): + cron_workflow: Optional[CronWorkflow] + namespace: Optional[str] + +class ParallelSteps(BaseModel): + __root__: List[WorkflowStep] + +class Template(BaseModel): + active_deadline_seconds: Optional[intstr.IntOrString] + affinity: Optional[v1.Affinity] + archive_location: Optional[ArtifactLocation] + automount_service_account_token: Optional[bool] + container: Optional[v1.Container] + container_set: Optional[ContainerSetTemplate] + daemon: Optional[bool] + dag: Optional[DAGTemplate] + data: Optional[Data] + executor: Optional[ExecutorConfig] + fail_fast: Optional[bool] + host_aliases: Optional[List[v1.HostAlias]] + http: Optional[HTTP] + init_containers: Optional[List[UserContainer]] + inputs: Optional[Inputs] + memoize: Optional[Memoize] + metadata: Optional[Metadata] + metrics: Optional[Metrics] + name: Optional[str] + node_selector: Optional[Dict[str, str]] + outputs: Optional[Outputs] + parallelism: Optional[int] + plugin: Optional[Plugin] + pod_spec_patch: Optional[str] + priority: Optional[int] + priority_class_name: Optional[str] + resource: Optional[ResourceTemplate] + retry_strategy: Optional[RetryStrategy] + scheduler_name: Optional[str] + script: Optional[ScriptTemplate] + security_context: Optional[v1.PodSecurityContext] + service_account_name: Optional[str] + sidecars: Optional[List[UserContainer]] + steps: Optional[List[ParallelSteps]] + suspend: Optional[SuspendTemplate] + synchronization: Optional[Synchronization] + timeout: Optional[str] + tolerations: Optional[List[v1.Toleration]] + volumes: Optional[List[v1.Volume]] + +class UpdateCronWorkflowRequest(BaseModel): + cron_workflow: Optional[CronWorkflow] + name: Optional[str] + namespace: Optional[str] + +class Workflow(BaseModel): + api_version: Optional[str] + kind: Optional[str] + metadata: v1_1.ObjectMeta + spec: WorkflowSpec + status: Optional[WorkflowStatus] + +class WorkflowCreateRequest(BaseModel): + create_options: Optional[v1_1.CreateOptions] + instance_id: Optional[str] + namespace: Optional[str] + server_dry_run: Optional[bool] + workflow: Optional[Workflow] + +class WorkflowLintRequest(BaseModel): + namespace: Optional[str] + workflow: Optional[Workflow] + +class WorkflowList(BaseModel): + api_version: Optional[str] + items: List[Workflow] + kind: Optional[str] + metadata: v1_1.ListMeta + +class WorkflowSpec(BaseModel): + active_deadline_seconds: Optional[int] + affinity: Optional[v1.Affinity] + archive_logs: Optional[bool] + arguments: Optional[Arguments] + artifact_gc: Optional[ArtifactGC] + artifact_repository_ref: Optional[ArtifactRepositoryRef] + automount_service_account_token: Optional[bool] + dns_config: Optional[v1.PodDNSConfig] + dns_policy: Optional[str] + entrypoint: Optional[str] + executor: Optional[ExecutorConfig] + hooks: Optional[Dict[str, LifecycleHook]] + host_aliases: Optional[List[v1.HostAlias]] + host_network: Optional[bool] + image_pull_secrets: Optional[List[v1.LocalObjectReference]] + metrics: Optional[Metrics] + node_selector: Optional[Dict[str, str]] + on_exit: Optional[str] + parallelism: Optional[int] + pod_disruption_budget: Optional[v1beta1.PodDisruptionBudgetSpec] + pod_gc: Optional[PodGC] + pod_metadata: Optional[Metadata] + pod_priority: Optional[int] + pod_priority_class_name: Optional[str] + pod_spec_patch: Optional[str] + priority: Optional[int] + retry_strategy: Optional[RetryStrategy] + scheduler_name: Optional[str] + security_context: Optional[v1.PodSecurityContext] + service_account_name: Optional[str] + shutdown: Optional[str] + suspend: Optional[bool] + synchronization: Optional[Synchronization] + template_defaults: Optional[Template] + templates: Optional[List[Template]] + tolerations: Optional[List[v1.Toleration]] + ttl_strategy: Optional[TTLStrategy] + volume_claim_gc: Optional[VolumeClaimGC] + volume_claim_templates: Optional[List[v1.PersistentVolumeClaim]] + volumes: Optional[List[v1.Volume]] + workflow_metadata: Optional[WorkflowMetadata] + workflow_template_ref: Optional[WorkflowTemplateRef] + +class WorkflowStatus(BaseModel): + artifact_gc_status: Optional[ArtGCStatus] + artifact_repository_ref: Optional[ArtifactRepositoryRefStatus] + compressed_nodes: Optional[str] + conditions: Optional[List[Condition]] + estimated_duration: Optional[int] + finished_at: Optional[v1_1.Time] + message: Optional[str] + nodes: Optional[Dict[str, NodeStatus]] + offload_node_status_version: Optional[str] + outputs: Optional[Outputs] + persistent_volume_claims: Optional[List[v1.Volume]] + phase: Optional[str] + progress: Optional[str] + resources_duration: Optional[Dict[str, int]] + started_at: Optional[v1_1.Time] + stored_templates: Optional[Dict[str, Template]] + stored_workflow_template_spec: Optional[WorkflowSpec] + synchronization: Optional[SynchronizationStatus] + +class WorkflowStep(BaseModel): + arguments: Optional[Arguments] + continue_on: Optional[ContinueOn] + hooks: Optional[Dict[str, LifecycleHook]] + inline: Optional[Template] + name: Optional[str] + on_exit: Optional[str] + template: Optional[str] + template_ref: Optional[TemplateRef] + when: Optional[str] + with_items: Optional[List[Item]] + with_param: Optional[str] + with_sequence: Optional[Sequence] + +class WorkflowTaskSetSpec(BaseModel): + tasks: Optional[Dict[str, Template]] + +class WorkflowTemplate(BaseModel): + api_version: Optional[str] + kind: Optional[str] + metadata: v1_1.ObjectMeta + spec: WorkflowSpec + +class WorkflowTemplateCreateRequest(BaseModel): + create_options: Optional[v1_1.CreateOptions] + namespace: Optional[str] + template: Optional[WorkflowTemplate] + +class WorkflowTemplateLintRequest(BaseModel): + create_options: Optional[v1_1.CreateOptions] + namespace: Optional[str] + template: Optional[WorkflowTemplate] + +class WorkflowTemplateList(BaseModel): + api_version: Optional[str] + items: List[WorkflowTemplate] + kind: Optional[str] + metadata: v1_1.ListMeta + +class WorkflowTemplateUpdateRequest(BaseModel): + name: Optional[str] + namespace: Optional[str] + template: Optional[WorkflowTemplate] + +class WorkflowWatchEvent(BaseModel): + object: Optional[Workflow] + type: Optional[str] diff --git a/src/hera/workflows/models/io/k8s/__init__.py b/src/hera/workflows/models/io/k8s/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/hera/workflows/models/io/k8s/api/__init__.py b/src/hera/workflows/models/io/k8s/api/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/hera/workflows/models/io/k8s/api/core/v1.pyi b/src/hera/workflows/models/io/k8s/api/core/v1.pyi new file mode 100644 index 000000000..e8b896464 --- /dev/null +++ b/src/hera/workflows/models/io/k8s/api/core/v1.pyi @@ -0,0 +1,637 @@ +from enum import Enum +from typing import Dict, List, Optional + +from hera.shared._base_model import BaseModel as BaseModel + +from ...apimachinery.pkg.api import resource as resource +from ...apimachinery.pkg.apis.meta import v1 as v1 +from ...apimachinery.pkg.util import intstr as intstr + +class AWSElasticBlockStoreVolumeSource(BaseModel): + fs_type: Optional[str] + partition: Optional[int] + read_only: Optional[bool] + volume_id: str + +class AzureDiskVolumeSource(BaseModel): + caching_mode: Optional[str] + disk_name: str + disk_uri: str + fs_type: Optional[str] + kind: Optional[str] + read_only: Optional[bool] + +class AzureFileVolumeSource(BaseModel): + read_only: Optional[bool] + secret_name: str + share_name: str + +class Capabilities(BaseModel): + add: Optional[List[str]] + drop: Optional[List[str]] + +class ConfigMapEnvSource(BaseModel): + name: Optional[str] + optional: Optional[bool] + +class ConfigMapKeySelector(BaseModel): + key: str + name: Optional[str] + optional: Optional[bool] + +class ImagePullPolicy(Enum): + always: str + if_not_present: str + never: str + +class TerminationMessagePolicy(Enum): + fallback_to_logs_on_error: str + file: str + +class Protocol(Enum): + sctp: str + tcp: str + udp: str + +class ContainerPort(BaseModel): + container_port: int + host_ip: Optional[str] + host_port: Optional[int] + name: Optional[str] + protocol: Optional[Protocol] + +class EventSource(BaseModel): + component: Optional[str] + host: Optional[str] + +class ExecAction(BaseModel): + command: Optional[List[str]] + +class FCVolumeSource(BaseModel): + fs_type: Optional[str] + lun: Optional[int] + read_only: Optional[bool] + target_ww_ns: Optional[List[str]] + wwids: Optional[List[str]] + +class FlockerVolumeSource(BaseModel): + dataset_name: Optional[str] + dataset_uuid: Optional[str] + +class GCEPersistentDiskVolumeSource(BaseModel): + fs_type: Optional[str] + partition: Optional[int] + pd_name: str + read_only: Optional[bool] + +class GRPCAction(BaseModel): + port: int + service: Optional[str] + +class GitRepoVolumeSource(BaseModel): + directory: Optional[str] + repository: str + revision: Optional[str] + +class GlusterfsVolumeSource(BaseModel): + endpoints: str + path: str + read_only: Optional[bool] + +class Scheme(Enum): + http: str + https: str + +class HTTPHeader(BaseModel): + name: str + value: str + +class HostAlias(BaseModel): + hostnames: Optional[List[str]] + ip: Optional[str] + +class HostPathVolumeSource(BaseModel): + path: str + type: Optional[str] + +class KeyToPath(BaseModel): + key: str + mode: Optional[int] + path: str + +class LocalObjectReference(BaseModel): + name: Optional[str] + +class NFSVolumeSource(BaseModel): + path: str + read_only: Optional[bool] + server: str + +class Operator(Enum): + does_not_exist: str + exists: str + gt: str + in_: str + lt: str + not_in: str + +class NodeSelectorRequirement(BaseModel): + key: str + operator: Operator + values: Optional[List[str]] + +class NodeSelectorTerm(BaseModel): + match_expressions: Optional[List[NodeSelectorRequirement]] + match_fields: Optional[List[NodeSelectorRequirement]] + +class ObjectFieldSelector(BaseModel): + api_version: Optional[str] + field_path: str + +class ObjectReference(BaseModel): + api_version: Optional[str] + field_path: Optional[str] + kind: Optional[str] + name: Optional[str] + namespace: Optional[str] + resource_version: Optional[str] + uid: Optional[str] + +class Type(Enum): + file_system_resize_pending: str + resizing: str + +class Phase(Enum): + bound: str + lost: str + pending: str + +class PersistentVolumeClaimVolumeSource(BaseModel): + claim_name: str + read_only: Optional[bool] + +class PhotonPersistentDiskVolumeSource(BaseModel): + fs_type: Optional[str] + pd_id: str + +class PodDNSConfigOption(BaseModel): + name: Optional[str] + value: Optional[str] + +class PortworxVolumeSource(BaseModel): + fs_type: Optional[str] + read_only: Optional[bool] + volume_id: str + +class PreferredSchedulingTerm(BaseModel): + preference: NodeSelectorTerm + weight: int + +class QuobyteVolumeSource(BaseModel): + group: Optional[str] + read_only: Optional[bool] + registry: str + tenant: Optional[str] + user: Optional[str] + volume: str + +class RBDVolumeSource(BaseModel): + fs_type: Optional[str] + image: str + keyring: Optional[str] + monitors: List[str] + pool: Optional[str] + read_only: Optional[bool] + secret_ref: Optional[LocalObjectReference] + user: Optional[str] + +class SELinuxOptions(BaseModel): + level: Optional[str] + role: Optional[str] + type: Optional[str] + user: Optional[str] + +class ScaleIOVolumeSource(BaseModel): + fs_type: Optional[str] + gateway: str + protection_domain: Optional[str] + read_only: Optional[bool] + secret_ref: LocalObjectReference + ssl_enabled: Optional[bool] + storage_mode: Optional[str] + storage_pool: Optional[str] + system: str + volume_name: Optional[str] + +class TypeModel(Enum): + localhost: str + runtime_default: str + unconfined: str + +class SeccompProfile(BaseModel): + localhost_profile: Optional[str] + type: TypeModel + +class SecretEnvSource(BaseModel): + name: Optional[str] + optional: Optional[bool] + +class SecretKeySelector(BaseModel): + key: str + name: Optional[str] + optional: Optional[bool] + +class SecretProjection(BaseModel): + items: Optional[List[KeyToPath]] + name: Optional[str] + optional: Optional[bool] + +class SecretVolumeSource(BaseModel): + default_mode: Optional[int] + items: Optional[List[KeyToPath]] + optional: Optional[bool] + secret_name: Optional[str] + +class ServiceAccountTokenProjection(BaseModel): + audience: Optional[str] + expiration_seconds: Optional[int] + path: str + +class StorageOSVolumeSource(BaseModel): + fs_type: Optional[str] + read_only: Optional[bool] + secret_ref: Optional[LocalObjectReference] + volume_name: Optional[str] + volume_namespace: Optional[str] + +class Sysctl(BaseModel): + name: str + value: str + +class Effect(Enum): + no_execute: str + no_schedule: str + prefer_no_schedule: str + +class OperatorModel(Enum): + equal: str + exists: str + +class Toleration(BaseModel): + effect: Optional[Effect] + key: Optional[str] + operator: Optional[OperatorModel] + toleration_seconds: Optional[int] + value: Optional[str] + +class TypedLocalObjectReference(BaseModel): + api_group: Optional[str] + kind: str + name: str + +class VolumeDevice(BaseModel): + device_path: str + name: str + +class VolumeMount(BaseModel): + mount_path: str + mount_propagation: Optional[str] + name: str + read_only: Optional[bool] + sub_path: Optional[str] + sub_path_expr: Optional[str] + +class VsphereVirtualDiskVolumeSource(BaseModel): + fs_type: Optional[str] + storage_policy_id: Optional[str] + storage_policy_name: Optional[str] + volume_path: str + +class WindowsSecurityContextOptions(BaseModel): + gmsa_credential_spec: Optional[str] + gmsa_credential_spec_name: Optional[str] + host_process: Optional[bool] + run_as_user_name: Optional[str] + +class CSIVolumeSource(BaseModel): + driver: str + fs_type: Optional[str] + node_publish_secret_ref: Optional[LocalObjectReference] + read_only: Optional[bool] + volume_attributes: Optional[Dict[str, str]] + +class CephFSVolumeSource(BaseModel): + monitors: List[str] + path: Optional[str] + read_only: Optional[bool] + secret_file: Optional[str] + secret_ref: Optional[LocalObjectReference] + user: Optional[str] + +class CinderVolumeSource(BaseModel): + fs_type: Optional[str] + read_only: Optional[bool] + secret_ref: Optional[LocalObjectReference] + volume_id: str + +class ConfigMapProjection(BaseModel): + items: Optional[List[KeyToPath]] + name: Optional[str] + optional: Optional[bool] + +class ConfigMapVolumeSource(BaseModel): + default_mode: Optional[int] + items: Optional[List[KeyToPath]] + name: Optional[str] + optional: Optional[bool] + +class EmptyDirVolumeSource(BaseModel): + medium: Optional[str] + size_limit: Optional[resource.Quantity] + +class EnvFromSource(BaseModel): + config_map_ref: Optional[ConfigMapEnvSource] + prefix: Optional[str] + secret_ref: Optional[SecretEnvSource] + +class EventSeries(BaseModel): + count: Optional[int] + last_observed_time: Optional[v1.MicroTime] + +class FlexVolumeSource(BaseModel): + driver: str + fs_type: Optional[str] + options: Optional[Dict[str, str]] + read_only: Optional[bool] + secret_ref: Optional[LocalObjectReference] + +class HTTPGetAction(BaseModel): + host: Optional[str] + http_headers: Optional[List[HTTPHeader]] + path: Optional[str] + port: intstr.IntOrString + scheme: Optional[Scheme] + +class ISCSIVolumeSource(BaseModel): + chap_auth_discovery: Optional[bool] + chap_auth_session: Optional[bool] + fs_type: Optional[str] + initiator_name: Optional[str] + iqn: str + iscsi_interface: Optional[str] + lun: int + portals: Optional[List[str]] + read_only: Optional[bool] + secret_ref: Optional[LocalObjectReference] + target_portal: str + +class NodeSelector(BaseModel): + node_selector_terms: List[NodeSelectorTerm] + +class PersistentVolumeClaimCondition(BaseModel): + last_probe_time: Optional[v1.Time] + last_transition_time: Optional[v1.Time] + message: Optional[str] + reason: Optional[str] + status: str + type: Type + +class PersistentVolumeClaimStatus(BaseModel): + access_modes: Optional[List[str]] + allocated_resources: Optional[Dict[str, resource.Quantity]] + capacity: Optional[Dict[str, resource.Quantity]] + conditions: Optional[List[PersistentVolumeClaimCondition]] + phase: Optional[Phase] + resize_status: Optional[str] + +class PodDNSConfig(BaseModel): + nameservers: Optional[List[str]] + options: Optional[List[PodDNSConfigOption]] + searches: Optional[List[str]] + +class PodSecurityContext(BaseModel): + fs_group: Optional[int] + fs_group_change_policy: Optional[str] + run_as_group: Optional[int] + run_as_non_root: Optional[bool] + run_as_user: Optional[int] + se_linux_options: Optional[SELinuxOptions] + seccomp_profile: Optional[SeccompProfile] + supplemental_groups: Optional[List[int]] + sysctls: Optional[List[Sysctl]] + windows_options: Optional[WindowsSecurityContextOptions] + +class ResourceFieldSelector(BaseModel): + container_name: Optional[str] + divisor: Optional[resource.Quantity] + resource: str + +class ResourceRequirements(BaseModel): + limits: Optional[Dict[str, resource.Quantity]] + requests: Optional[Dict[str, resource.Quantity]] + +class SecurityContext(BaseModel): + allow_privilege_escalation: Optional[bool] + capabilities: Optional[Capabilities] + privileged: Optional[bool] + proc_mount: Optional[str] + read_only_root_filesystem: Optional[bool] + run_as_group: Optional[int] + run_as_non_root: Optional[bool] + run_as_user: Optional[int] + se_linux_options: Optional[SELinuxOptions] + seccomp_profile: Optional[SeccompProfile] + windows_options: Optional[WindowsSecurityContextOptions] + +class ServicePort(BaseModel): + app_protocol: Optional[str] + name: Optional[str] + node_port: Optional[int] + port: int + protocol: Optional[Protocol] + target_port: Optional[intstr.IntOrString] + +class TCPSocketAction(BaseModel): + host: Optional[str] + port: intstr.IntOrString + +class DownwardAPIVolumeFile(BaseModel): + field_ref: Optional[ObjectFieldSelector] + mode: Optional[int] + path: str + resource_field_ref: Optional[ResourceFieldSelector] + +class DownwardAPIVolumeSource(BaseModel): + default_mode: Optional[int] + items: Optional[List[DownwardAPIVolumeFile]] + +class EnvVarSource(BaseModel): + config_map_key_ref: Optional[ConfigMapKeySelector] + field_ref: Optional[ObjectFieldSelector] + resource_field_ref: Optional[ResourceFieldSelector] + secret_key_ref: Optional[SecretKeySelector] + +class Event(BaseModel): + action: Optional[str] + api_version: Optional[str] + count: Optional[int] + event_time: Optional[v1.MicroTime] + first_timestamp: Optional[v1.Time] + involved_object: ObjectReference + kind: Optional[str] + last_timestamp: Optional[v1.Time] + message: Optional[str] + metadata: v1.ObjectMeta + reason: Optional[str] + related: Optional[ObjectReference] + reporting_component: Optional[str] + reporting_instance: Optional[str] + series: Optional[EventSeries] + source: Optional[EventSource] + type: Optional[str] + +class LifecycleHandler(BaseModel): + exec: Optional[ExecAction] + http_get: Optional[HTTPGetAction] + tcp_socket: Optional[TCPSocketAction] + +class NodeAffinity(BaseModel): + preferred_during_scheduling_ignored_during_execution: Optional[List[PreferredSchedulingTerm]] + required_during_scheduling_ignored_during_execution: Optional[NodeSelector] + +class PersistentVolumeClaimSpec(BaseModel): + access_modes: Optional[List[str]] + data_source: Optional[TypedLocalObjectReference] + data_source_ref: Optional[TypedLocalObjectReference] + resources: Optional[ResourceRequirements] + selector: Optional[v1.LabelSelector] + storage_class_name: Optional[str] + volume_mode: Optional[str] + volume_name: Optional[str] + +class PersistentVolumeClaimTemplate(BaseModel): + metadata: Optional[v1.ObjectMeta] + spec: PersistentVolumeClaimSpec + +class PodAffinityTerm(BaseModel): + label_selector: Optional[v1.LabelSelector] + namespace_selector: Optional[v1.LabelSelector] + namespaces: Optional[List[str]] + topology_key: str + +class Probe(BaseModel): + exec: Optional[ExecAction] + failure_threshold: Optional[int] + grpc: Optional[GRPCAction] + http_get: Optional[HTTPGetAction] + initial_delay_seconds: Optional[int] + period_seconds: Optional[int] + success_threshold: Optional[int] + tcp_socket: Optional[TCPSocketAction] + termination_grace_period_seconds: Optional[int] + timeout_seconds: Optional[int] + +class WeightedPodAffinityTerm(BaseModel): + pod_affinity_term: PodAffinityTerm + weight: int + +class DownwardAPIProjection(BaseModel): + items: Optional[List[DownwardAPIVolumeFile]] + +class EnvVar(BaseModel): + name: str + value: Optional[str] + value_from: Optional[EnvVarSource] + +class EphemeralVolumeSource(BaseModel): + volume_claim_template: Optional[PersistentVolumeClaimTemplate] + +class Lifecycle(BaseModel): + post_start: Optional[LifecycleHandler] + pre_stop: Optional[LifecycleHandler] + +class PersistentVolumeClaim(BaseModel): + api_version: Optional[str] + kind: Optional[str] + metadata: Optional[v1.ObjectMeta] + spec: Optional[PersistentVolumeClaimSpec] + status: Optional[PersistentVolumeClaimStatus] + +class PodAffinity(BaseModel): + preferred_during_scheduling_ignored_during_execution: Optional[List[WeightedPodAffinityTerm]] + required_during_scheduling_ignored_during_execution: Optional[List[PodAffinityTerm]] + +class PodAntiAffinity(BaseModel): + preferred_during_scheduling_ignored_during_execution: Optional[List[WeightedPodAffinityTerm]] + required_during_scheduling_ignored_during_execution: Optional[List[PodAffinityTerm]] + +class VolumeProjection(BaseModel): + config_map: Optional[ConfigMapProjection] + downward_api: Optional[DownwardAPIProjection] + secret: Optional[SecretProjection] + service_account_token: Optional[ServiceAccountTokenProjection] + +class Affinity(BaseModel): + node_affinity: Optional[NodeAffinity] + pod_affinity: Optional[PodAffinity] + pod_anti_affinity: Optional[PodAntiAffinity] + +class Container(BaseModel): + args: Optional[List[str]] + command: Optional[List[str]] + env: Optional[List[EnvVar]] + env_from: Optional[List[EnvFromSource]] + image: str + image_pull_policy: Optional[ImagePullPolicy] + lifecycle: Optional[Lifecycle] + liveness_probe: Optional[Probe] + name: Optional[str] + ports: Optional[List[ContainerPort]] + readiness_probe: Optional[Probe] + resources: Optional[ResourceRequirements] + security_context: Optional[SecurityContext] + startup_probe: Optional[Probe] + stdin: Optional[bool] + stdin_once: Optional[bool] + termination_message_path: Optional[str] + termination_message_policy: Optional[TerminationMessagePolicy] + tty: Optional[bool] + volume_devices: Optional[List[VolumeDevice]] + volume_mounts: Optional[List[VolumeMount]] + working_dir: Optional[str] + +class ProjectedVolumeSource(BaseModel): + default_mode: Optional[int] + sources: Optional[List[VolumeProjection]] + +class Volume(BaseModel): + aws_elastic_block_store: Optional[AWSElasticBlockStoreVolumeSource] + azure_disk: Optional[AzureDiskVolumeSource] + azure_file: Optional[AzureFileVolumeSource] + cephfs: Optional[CephFSVolumeSource] + cinder: Optional[CinderVolumeSource] + config_map: Optional[ConfigMapVolumeSource] + csi: Optional[CSIVolumeSource] + downward_api: Optional[DownwardAPIVolumeSource] + empty_dir: Optional[EmptyDirVolumeSource] + ephemeral: Optional[EphemeralVolumeSource] + fc: Optional[FCVolumeSource] + flex_volume: Optional[FlexVolumeSource] + flocker: Optional[FlockerVolumeSource] + gce_persistent_disk: Optional[GCEPersistentDiskVolumeSource] + git_repo: Optional[GitRepoVolumeSource] + glusterfs: Optional[GlusterfsVolumeSource] + host_path: Optional[HostPathVolumeSource] + iscsi: Optional[ISCSIVolumeSource] + name: str + nfs: Optional[NFSVolumeSource] + persistent_volume_claim: Optional[PersistentVolumeClaimVolumeSource] + photon_persistent_disk: Optional[PhotonPersistentDiskVolumeSource] + portworx_volume: Optional[PortworxVolumeSource] + projected: Optional[ProjectedVolumeSource] + quobyte: Optional[QuobyteVolumeSource] + rbd: Optional[RBDVolumeSource] + scale_io: Optional[ScaleIOVolumeSource] + secret: Optional[SecretVolumeSource] + storageos: Optional[StorageOSVolumeSource] + vsphere_volume: Optional[VsphereVirtualDiskVolumeSource] diff --git a/src/hera/workflows/models/io/k8s/api/policy/v1beta1.pyi b/src/hera/workflows/models/io/k8s/api/policy/v1beta1.pyi new file mode 100644 index 000000000..471065d56 --- /dev/null +++ b/src/hera/workflows/models/io/k8s/api/policy/v1beta1.pyi @@ -0,0 +1,11 @@ +from typing import Optional + +from hera.shared._base_model import BaseModel as BaseModel + +from ...apimachinery.pkg.apis.meta import v1 as v1 +from ...apimachinery.pkg.util import intstr as intstr + +class PodDisruptionBudgetSpec(BaseModel): + max_unavailable: Optional[intstr.IntOrString] + min_available: Optional[intstr.IntOrString] + selector: Optional[v1.LabelSelector] diff --git a/src/hera/workflows/models/io/k8s/apimachinery/__init__.py b/src/hera/workflows/models/io/k8s/apimachinery/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/hera/workflows/models/io/k8s/apimachinery/pkg/__init__.py b/src/hera/workflows/models/io/k8s/apimachinery/pkg/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/hera/workflows/models/io/k8s/apimachinery/pkg/api/resource.pyi b/src/hera/workflows/models/io/k8s/apimachinery/pkg/api/resource.pyi new file mode 100644 index 000000000..8cb1ae92f --- /dev/null +++ b/src/hera/workflows/models/io/k8s/apimachinery/pkg/api/resource.pyi @@ -0,0 +1,4 @@ +from hera.shared._base_model import BaseModel as BaseModel + +class Quantity(BaseModel): + __root__: str diff --git a/src/hera/workflows/models/io/k8s/apimachinery/pkg/apis/__init__.py b/src/hera/workflows/models/io/k8s/apimachinery/pkg/apis/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/hera/workflows/models/io/k8s/apimachinery/pkg/apis/meta/v1.pyi b/src/hera/workflows/models/io/k8s/apimachinery/pkg/apis/meta/v1.pyi new file mode 100644 index 000000000..5c25dfa7b --- /dev/null +++ b/src/hera/workflows/models/io/k8s/apimachinery/pkg/apis/meta/v1.pyi @@ -0,0 +1,77 @@ +from datetime import datetime +from typing import Dict, List, Optional + +from hera.shared._base_model import BaseModel as BaseModel + +class CreateOptions(BaseModel): + dry_run: Optional[List[str]] + field_manager: Optional[str] + field_validation: Optional[str] + +class FieldsV1(BaseModel): ... + +class GroupVersionResource(BaseModel): + group: Optional[str] + resource: Optional[str] + version: Optional[str] + +class LabelSelectorRequirement(BaseModel): + key: str + operator: str + values: Optional[List[str]] + +class ListMeta(BaseModel): + continue_: Optional[str] + remaining_item_count: Optional[int] + resource_version: Optional[str] + self_link: Optional[str] + +class MicroTime(BaseModel): + __root__: datetime + +class OwnerReference(BaseModel): + api_version: str + block_owner_deletion: Optional[bool] + controller: Optional[bool] + kind: str + name: str + uid: str + +class StatusCause(BaseModel): + field: Optional[str] + message: Optional[str] + reason: Optional[str] + +class Time(BaseModel): + __root__: datetime + +class LabelSelector(BaseModel): + match_expressions: Optional[List[LabelSelectorRequirement]] + match_labels: Optional[Dict[str, str]] + +class ManagedFieldsEntry(BaseModel): + api_version: Optional[str] + fields_type: Optional[str] + fields_v1: Optional[FieldsV1] + manager: Optional[str] + operation: Optional[str] + subresource: Optional[str] + time: Optional[Time] + +class ObjectMeta(BaseModel): + annotations: Optional[Dict[str, str]] + cluster_name: Optional[str] + creation_timestamp: Optional[Time] + deletion_grace_period_seconds: Optional[int] + deletion_timestamp: Optional[Time] + finalizers: Optional[List[str]] + generate_name: Optional[str] + generation: Optional[int] + labels: Optional[Dict[str, str]] + managed_fields: Optional[List[ManagedFieldsEntry]] + name: Optional[str] + namespace: Optional[str] + owner_references: Optional[List[OwnerReference]] + resource_version: Optional[str] + self_link: Optional[str] + uid: Optional[str] diff --git a/src/hera/workflows/models/io/k8s/apimachinery/pkg/util/intstr.pyi b/src/hera/workflows/models/io/k8s/apimachinery/pkg/util/intstr.pyi new file mode 100644 index 000000000..4ed64fd53 --- /dev/null +++ b/src/hera/workflows/models/io/k8s/apimachinery/pkg/util/intstr.pyi @@ -0,0 +1,4 @@ +from hera.shared._base_model import BaseModel as BaseModel + +class IntOrString(BaseModel): + __root__: str diff --git a/src/hera/workflows/models/sensor.pyi b/src/hera/workflows/models/sensor.pyi new file mode 100644 index 000000000..5baaafad4 --- /dev/null +++ b/src/hera/workflows/models/sensor.pyi @@ -0,0 +1,32 @@ +from typing import Optional + +from hera.shared._base_model import BaseModel as BaseModel + +from .io.argoproj.events import v1alpha1 as v1alpha1 +from .io.k8s.apimachinery.pkg.apis.meta import v1 as v1 + +class DeleteSensorResponse(BaseModel): ... + +class LogEntry(BaseModel): + dependency_name: Optional[str] + event_context: Optional[str] + level: Optional[str] + msg: Optional[str] + namespace: Optional[str] + sensor_name: Optional[str] + time: Optional[v1.Time] + trigger_name: Optional[str] + +class CreateSensorRequest(BaseModel): + create_options: Optional[v1.CreateOptions] + namespace: Optional[str] + sensor: Optional[v1alpha1.Sensor] + +class SensorWatchEvent(BaseModel): + object: Optional[v1alpha1.Sensor] + type: Optional[str] + +class UpdateSensorRequest(BaseModel): + name: Optional[str] + namespace: Optional[str] + sensor: Optional[v1alpha1.Sensor]