From c42ac634fb697847bfbf2beeed7d6df0130bdab0 Mon Sep 17 00:00:00 2001
From: EvanSung <evansung@outlook.com>
Date: Thu, 24 Aug 2023 14:16:12 +0800
Subject: [PATCH] perf(ad_ci_relation): optimize ad_ci relation

---
 cmdb-api/api/lib/cmdb/auto_discovery/auto_discovery.py | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/cmdb-api/api/lib/cmdb/auto_discovery/auto_discovery.py b/cmdb-api/api/lib/cmdb/auto_discovery/auto_discovery.py
index 052d970..c211394 100644
--- a/cmdb-api/api/lib/cmdb/auto_discovery/auto_discovery.py
+++ b/cmdb-api/api/lib/cmdb/auto_discovery/auto_discovery.py
@@ -453,10 +453,12 @@ class AutoDiscoveryCICRUD(DBMixin):
 
         relation_adts = AutoDiscoveryCIType.get_by(type_id=adt.type_id, adr_id=None, to_dict=False)
         for r_adt in relation_adts:
-            if r_adt.relation and ci_id is not None:
-                ad_key, cmdb_key = None, {}
-                for ad_key in r_adt.relation:
-                    cmdb_key = r_adt.relation[ad_key]
+            if not r_adt.relation or ci_id is None:
+                continue
+            for ad_key in r_adt.relation:
+                if not adc.instance.get(ad_key):
+                    continue
+                cmdb_key = r_adt.relation[ad_key]
                 query = "_type:{},{}:{}".format(cmdb_key.get('type_name'), cmdb_key.get('attr_name'),
                                                 adc.instance.get(ad_key))
                 s = search(query)