diff --git a/src/ralph/discovery/models_device.py b/src/ralph/discovery/models_device.py index 65660a9668..c13bed0190 100644 --- a/src/ralph/discovery/models_device.py +++ b/src/ralph/discovery/models_device.py @@ -311,6 +311,13 @@ class Meta: def __unicode__(self): return self.name + def get_environments(self): + env_ids_from_service = models_ci.CIRelation.objects.filter( + parent=self.id, + ).values('child__id') + envs = DeviceEnvironment.objects.filter(id__in=env_ids_from_service) + return envs + class Device( LastSeen, diff --git a/src/ralph/discovery/tests/test_models.py b/src/ralph/discovery/tests/test_models.py index 5057df4631..31f8235939 100644 --- a/src/ralph/discovery/tests/test_models.py +++ b/src/ralph/discovery/tests/test_models.py @@ -10,6 +10,11 @@ from django.test import TestCase import mock +from ralph.cmdb.tests.utils import ( + CIRelationFactory, + DeviceEnvironmentFactory, + ServiceCatalogFactory, +) from ralph.discovery.models import DeviceType, Device, UptimeSupport from ralph.discovery.models_history import HistoryChange @@ -82,3 +87,13 @@ class Model(UptimeSupport): self.assertEqual(m.uptime, None) m.uptime = 132 self.assertEqual(m.uptime, datetime.timedelta(seconds=132)) + + +class ServiceEnvironments(TestCase): + + def test_getting_environments(self): + service = ServiceCatalogFactory() + env = DeviceEnvironmentFactory() + self.assertEqual(len(service.get_environments()), 0) + CIRelationFactory(parent=service, child=env) + self.assertEqual(len(service.get_environments()), 1)