"""Registrar factory — selects the appropriate AgentRegistrar based on config.""" import logging from .registrar import AgentRegistrar from .registrar_stub import StubRegistrar logger = logging.getLogger(__name__) def create_registrar(config) -> AgentRegistrar: """Create the appropriate registrar based on AGENT_REGISTRAR setting.""" driver = config.agent_registrar if driver == "keycloak": if not config.keycloak_admin_client_secret: logger.warning("Keycloak secret not configured, using stub") return StubRegistrar() from .registrar_keycloak import KeycloakRegistrar return KeycloakRegistrar( base_url=config.keycloak_url, realm=config.keycloak_realm, client_id=config.keycloak_admin_client_id, client_secret=config.keycloak_admin_client_secret, ) elif driver == "entra": if not config.entra_client_secret: logger.warning("Entra secret not configured, using stub") return StubRegistrar() from .registrar_entra import EntraRegistrar return EntraRegistrar( tenant_id=config.entra_tenant_id, client_id=config.entra_client_id, client_secret=config.entra_client_secret, agent_blueprint_id=config.entra_agent_blueprint_id, ) elif driver == "auto": if config.entra_client_secret: from .registrar_entra import EntraRegistrar logger.info("Auto-selected Entra registrar") return EntraRegistrar( tenant_id=config.entra_tenant_id, client_id=config.entra_client_id, client_secret=config.entra_client_secret, agent_blueprint_id=config.entra_agent_blueprint_id, ) elif config.keycloak_admin_client_secret: from .registrar_keycloak import KeycloakRegistrar logger.info("Auto-selected Keycloak registrar") return KeycloakRegistrar( base_url=config.keycloak_url, realm=config.keycloak_realm, client_id=config.keycloak_admin_client_id, client_secret=config.keycloak_admin_client_secret, ) else: logger.warning("No IdP configured, using stub registrar") return StubRegistrar() else: logger.warning("Unknown registrar driver: %s, using stub", driver) return StubRegistrar()