From 23cded688e642e620e26c904836c90e414da875b Mon Sep 17 00:00:00 2001 From: pycook Date: Fri, 29 Aug 2025 17:23:22 +0800 Subject: [PATCH] feat(api): Add API to view raw data of auto-discovered instances --- cmdb-api/api/lib/cmdb/auto_discovery/auto_discovery.py | 9 ++++++++- cmdb-api/api/views/cmdb/auto_discovery.py | 6 ++++-- 2 files changed, 12 insertions(+), 3 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 9cc37db..01d6f9b 100644 --- a/cmdb-api/api/lib/cmdb/auto_discovery/auto_discovery.py +++ b/cmdb-api/api/lib/cmdb/auto_discovery/auto_discovery.py @@ -308,6 +308,8 @@ class AutoDiscoveryCITypeCRUD(DBMixin): if new_last_update_at < __last_update_at: new_last_update_at = __last_update_at + new_last_update_at = new_last_update_at or ad_rules_updated_at + write_ad_rule_sync_history.apply_async(args=(result, oneagent_id, oneagent_name, datetime.datetime.now()), queue=CMDB_QUEUE) if not last_update_at or new_last_update_at > last_update_at: @@ -693,6 +695,11 @@ class AutoDiscoveryCICRUD(DBMixin): stdout="delete resource: {}".format(unique_value)) # TODO: delete ci + @classmethod + def get_instance_by_id(cls, adc_id): + adc = cls.cls.get_by_id(adc_id) or abort(404, ErrFormat.adc_not_found) + return adc.instance + @classmethod def accept(cls, adc, adc_id=None, nickname=None): if adc_id is not None: @@ -725,7 +732,7 @@ class AutoDiscoveryCICRUD(DBMixin): from api.tasks.cmdb import add_net_device_ports add_net_device_ports.apply_async(args=(ci_id, adc.instance['ports']), queue=CMDB_QUEUE) - + adc.update(is_accept=True, accept_by=nickname or current_user.nickname, accept_time=datetime.datetime.now(), diff --git a/cmdb-api/api/views/cmdb/auto_discovery.py b/cmdb-api/api/views/cmdb/auto_discovery.py index 28b926c..542c514 100644 --- a/cmdb-api/api/views/cmdb/auto_discovery.py +++ b/cmdb-api/api/views/cmdb/auto_discovery.py @@ -205,12 +205,14 @@ class AutoDiscoveryCITypeRelationView(APIView): class AutoDiscoveryCIView(APIView): url_prefix = ("/adc", "/adc/", "/adc/ci_types//attributes", "/adc/ci_types") - def get(self, type_id=None): + def get(self, type_id=None, adc_id=None): if "attributes" in request.url: return self.jsonify(AutoDiscoveryCICRUD.get_attributes_by_type_id(type_id)) - elif "ci_types" in request.url: + if "ci_types" in request.url: need_other = request.values.get("need_other") return self.jsonify(AutoDiscoveryCICRUD.get_ci_types(need_other)) + if adc_id is not None: + return self.jsonify(AutoDiscoveryCICRUD.get_instance_by_id(adc_id)) page = get_page(request.values.pop('page', 1)) page_size = get_page_size(request.values.pop('page_size', None))