- from enum import Enum
- from typing import Literal, Optional
-
- from pydantic import Field, PositiveInt
- from pydantic_settings import BaseSettings
-
-
- class OpenSearchConfig(BaseSettings):
- """
- Configuration settings for OpenSearch
- """
-
- class AuthMethod(Enum):
- """
- Authentication method for OpenSearch
- """
-
- BASIC = "basic"
- AWS_MANAGED_IAM = "aws_managed_iam"
-
- OPENSEARCH_HOST: Optional[str] = Field(
- description="Hostname or IP address of the OpenSearch server (e.g., 'localhost' or 'opensearch.example.com')",
- default=None,
- )
-
- OPENSEARCH_PORT: PositiveInt = Field(
- description="Port number on which the OpenSearch server is listening (default is 9200)",
- default=9200,
- )
-
- OPENSEARCH_SECURE: bool = Field(
- description="Whether to use SSL/TLS encrypted connection for OpenSearch (True for HTTPS, False for HTTP)",
- default=False,
- )
-
- OPENSEARCH_VERIFY_CERTS: bool = Field(
- description="Whether to verify SSL certificates for HTTPS connections (recommended to set True in production)",
- default=True,
- )
-
- OPENSEARCH_AUTH_METHOD: AuthMethod = Field(
- description="Authentication method for OpenSearch connection (default is 'basic')",
- default=AuthMethod.BASIC,
- )
-
- OPENSEARCH_USER: Optional[str] = Field(
- description="Username for authenticating with OpenSearch",
- default=None,
- )
-
- OPENSEARCH_PASSWORD: Optional[str] = Field(
- description="Password for authenticating with OpenSearch",
- default=None,
- )
-
- 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
- )
|