"""Configuration for Jira Query Offboarding Tickets.""" import os from pydantic import model_validator from pydantic_settings import BaseSettings class JiraConfig(BaseSettings): """Configuration for Jira client. Locally, set JIRA_API_TOKEN to the token value directly. In AWS Lambda, set JIRA_API_TOKEN to the Secrets Manager secret name; the token will be fetched from Secrets Manager at runtime. """ jira_base_url: str jira_api_token: str jira_user_email: str @model_validator(mode='after') def _resolve_secrets(self) -> 'JiraConfig': """Fetch token from Secrets Manager when running in Lambda.""" if not self.jira_api_token: raise ValueError('JIRA_API_TOKEN environment variable must be set') if os.environ.get('AWS_LAMBDA_FUNCTION_NAME'): from jira_client.secrets_manager import SecretsManagerClient try: self.jira_api_token = SecretsManagerClient().get_jira_api_token( self.jira_api_token ) except Exception as exc: raise ValueError( 'Failed to fetch Jira API token from Secrets Manager' ) from exc return self