Skip to content

Commit b3d6451

Browse files
committed
feat[routes]: Refactor VM service dependency to use repository factory pattern
1 parent d9899d7 commit b3d6451

1 file changed

Lines changed: 16 additions & 6 deletions

File tree

app/routes/vm_routes.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"""
66

77
import logging
8-
from typing import Optional
8+
from typing import Optional, Any
99
from uuid import UUID
1010

1111
from fastapi import APIRouter, HTTPException, Query, status, Depends
@@ -24,7 +24,7 @@
2424
VMStatusResponse,
2525
HealthResponse,
2626
)
27-
from app.repositories.vm_repository import VMRepository
27+
from app.repositories.vm_repository_factory import get_vm_repository
2828
from app.services.vm_service import VMService
2929
from app.utils.helpers import get_datetime_now
3030

@@ -36,13 +36,23 @@
3636
)
3737

3838
# Dependency injection for service
39-
# In production, this would be a proper dependency with lifecycle management
40-
_repository = VMRepository()
41-
_service = VMService(_repository)
39+
# Repository is created via factory (mock or real OpenStack based on config)
40+
_repository: Optional[Any] = None
41+
_service: Optional[VMService] = None
4242

4343

4444
def get_vm_service() -> VMService:
45-
"""Dependency to get VM service instance"""
45+
"""
46+
Dependency to get VM service instance.
47+
48+
Creates repository via factory pattern - will use mock or real OpenStack
49+
based on USE_REAL_OPENSTACK configuration.
50+
"""
51+
global _repository, _service
52+
if _service is None:
53+
_repository = get_vm_repository()
54+
_service = VMService(_repository)
55+
logger.info(f"VM Service initialized with {type(_repository).__name__}")
4656
return _service
4757

4858

0 commit comments

Comments
 (0)