|
5 | 5 | """ |
6 | 6 |
|
7 | 7 | import logging |
8 | | -from typing import Optional |
| 8 | +from typing import Optional, Any |
9 | 9 | from uuid import UUID |
10 | 10 |
|
11 | 11 | from fastapi import APIRouter, HTTPException, Query, status, Depends |
|
24 | 24 | VMStatusResponse, |
25 | 25 | HealthResponse, |
26 | 26 | ) |
27 | | -from app.repositories.vm_repository import VMRepository |
| 27 | +from app.repositories.vm_repository_factory import get_vm_repository |
28 | 28 | from app.services.vm_service import VMService |
29 | 29 | from app.utils.helpers import get_datetime_now |
30 | 30 |
|
|
36 | 36 | ) |
37 | 37 |
|
38 | 38 | # 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 |
42 | 42 |
|
43 | 43 |
|
44 | 44 | 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__}") |
46 | 56 | return _service |
47 | 57 |
|
48 | 58 |
|
|
0 commit comments