From 6fb43483771415eb9c15937238f5d07ce9689b35 Mon Sep 17 00:00:00 2001
From: Robert Latta <robert.latta@geant.org>
Date: Thu, 9 Jun 2022 15:41:29 +0000
Subject: [PATCH] added customer type to related customers data

---
 inventory_provider/db/ims.py      | 11 +++++++++++
 inventory_provider/db/ims_data.py | 27 +++++++++++++--------------
 2 files changed, 24 insertions(+), 14 deletions(-)

diff --git a/inventory_provider/db/ims.py b/inventory_provider/db/ims.py
index da9de868..ef5210af 100644
--- a/inventory_provider/db/ims.py
+++ b/inventory_provider/db/ims.py
@@ -148,6 +148,17 @@ IMS_SERVICE_NAMES = {
 }
 
 
+class CustomerType(Enum):
+    COMMERCIAL_PEER = 1
+    CONNECTIVITY_SUPPLIER = 2
+    EU_NREN = 3
+    HOUSING_SUPPLIER = 4
+    IX_SUPPLIER = 5
+    OTHER = 6
+    R_AND_E_PEER = 7
+    UNKNOWN = 'UNKNOWN'
+
+
 class InventoryStatus(Enum):
     PLANNED = 1
     READY_FOR_SERVICE = 2
diff --git a/inventory_provider/db/ims_data.py b/inventory_provider/db/ims_data.py
index f6e15153..2d616f09 100644
--- a/inventory_provider/db/ims_data.py
+++ b/inventory_provider/db/ims_data.py
@@ -2,8 +2,7 @@ import logging
 import re
 from collections import defaultdict
 from copy import copy
-from itertools import chain, groupby
-from operator import itemgetter
+from itertools import chain
 
 from inventory_provider import environment
 from inventory_provider.db import ims
@@ -127,20 +126,20 @@ def get_customer_service_emails(ds: IMS):
 
 
 def get_circuit_related_customers(ds: IMS):
-    relations = sorted(
-        list(
-            ds.get_filtered_entities(
+
+    return_value = defaultdict(list)
+    for ccr in ds.get_filtered_entities(
                 'CircuitCustomerRelation',
                 'circuit.inventoryStatusId== 3',
-                ims.CIRCUIT_CUSTOMER_RELATION['Customer']
-            )
-        ), key=itemgetter('circuitid'))
-
-    return {k: [{
-        'id': c['customer']['id'],
-        'name': c['customer']['name']
-    } for c in v] for k, v in
-            groupby(relations, key=itemgetter('circuitid'))}
+                ims.CIRCUIT_CUSTOMER_RELATION['Customer']):
+        return_value[ccr['circuitid']].append(
+            {
+                'id': ccr['customer']['id'],
+                'name': ccr['customer']['name'],
+                'type': ccr['customer']['customertypeid']
+            }
+        )
+    return return_value
 
 
 def get_port_id_services(ds: IMS):
-- 
GitLab