2025-04-29 14:10:08 +07:00
|
|
|
import enum
|
|
|
|
from typing import Literal, Optional
|
2024-06-20 16:24:10 +08:00
|
|
|
|
2024-07-07 12:18:15 +08:00
|
|
|
from pydantic import Field, PositiveInt
|
|
|
|
from pydantic_settings import BaseSettings
|
2024-06-20 16:24:10 +08:00
|
|
|
|
|
|
|
|
2024-07-07 12:18:15 +08:00
|
|
|
class OpenSearchConfig(BaseSettings):
|
2024-06-20 16:24:10 +08:00
|
|
|
"""
|
2024-09-22 12:38:41 +07:00
|
|
|
Configuration settings for OpenSearch
|
2024-06-20 16:24:10 +08:00
|
|
|
"""
|
|
|
|
|
2025-04-29 14:10:08 +07:00
|
|
|
class AuthMethod(enum.StrEnum):
|
|
|
|
"""
|
|
|
|
Authentication method for OpenSearch
|
|
|
|
"""
|
|
|
|
|
|
|
|
BASIC = "basic"
|
|
|
|
AWS_MANAGED_IAM = "aws_managed_iam"
|
|
|
|
|
2024-06-20 16:24:10 +08:00
|
|
|
OPENSEARCH_HOST: Optional[str] = Field(
|
2024-09-22 12:38:41 +07:00
|
|
|
description="Hostname or IP address of the OpenSearch server (e.g., 'localhost' or 'opensearch.example.com')",
|
2024-06-20 16:24:10 +08:00
|
|
|
default=None,
|
|
|
|
)
|
|
|
|
|
|
|
|
OPENSEARCH_PORT: PositiveInt = Field(
|
2024-09-22 12:38:41 +07:00
|
|
|
description="Port number on which the OpenSearch server is listening (default is 9200)",
|
2024-06-20 16:24:10 +08:00
|
|
|
default=9200,
|
|
|
|
)
|
|
|
|
|
2025-04-29 14:10:08 +07:00
|
|
|
OPENSEARCH_SECURE: bool = Field(
|
|
|
|
description="Whether to use SSL/TLS encrypted connection for OpenSearch (True for HTTPS, False for HTTP)",
|
|
|
|
default=False,
|
|
|
|
)
|
|
|
|
|
2025-05-22 06:14:38 +04:00
|
|
|
OPENSEARCH_VERIFY_CERTS: bool = Field(
|
|
|
|
description="Whether to verify SSL certificates for HTTPS connections (recommended to set True in production)",
|
|
|
|
default=True,
|
|
|
|
)
|
|
|
|
|
2025-04-29 14:10:08 +07:00
|
|
|
OPENSEARCH_AUTH_METHOD: AuthMethod = Field(
|
|
|
|
description="Authentication method for OpenSearch connection (default is 'basic')",
|
|
|
|
default=AuthMethod.BASIC,
|
|
|
|
)
|
|
|
|
|
2024-06-20 16:24:10 +08:00
|
|
|
OPENSEARCH_USER: Optional[str] = Field(
|
2024-09-22 12:38:41 +07:00
|
|
|
description="Username for authenticating with OpenSearch",
|
2024-06-20 16:24:10 +08:00
|
|
|
default=None,
|
|
|
|
)
|
|
|
|
|
|
|
|
OPENSEARCH_PASSWORD: Optional[str] = Field(
|
2024-09-22 12:38:41 +07:00
|
|
|
description="Password for authenticating with OpenSearch",
|
2024-06-20 16:24:10 +08:00
|
|
|
default=None,
|
|
|
|
)
|
|
|
|
|
2025-04-29 14:10:08 +07:00
|
|
|
OPENSEARCH_AWS_REGION: Optional[str] = Field(
|
|
|
|
description="AWS region for OpenSearch (e.g. 'us-west-2')",
|
|
|
|
default=None,
|
|
|
|
)
|
|
|
|
|
|
|
|
OPENSEARCH_AWS_SERVICE: Optional[Literal["es", "aoss"]] = Field(
|
|
|
|
description="AWS service for OpenSearch (e.g. 'aoss' for OpenSearch Serverless)", default=None
|
2024-06-20 16:24:10 +08:00
|
|
|
)
|