mirror of https://github.com/veops/cmdb.git
perf(api): /api/v0.1/ci/adc/statistics
perf(api): /api/v0.1/ci/adc/statistics
This commit is contained in:
parent
8f066e95a6
commit
691051c254
|
@ -1,14 +1,13 @@
|
||||||
# -*- coding:utf-8 -*-
|
# -*- coding:utf-8 -*-
|
||||||
|
|
||||||
|
|
||||||
|
import click
|
||||||
import copy
|
import copy
|
||||||
import datetime
|
import datetime
|
||||||
import json
|
import json
|
||||||
|
import requests
|
||||||
import time
|
import time
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
import click
|
|
||||||
import requests
|
|
||||||
from flask import current_app
|
from flask import current_app
|
||||||
from flask.cli import with_appcontext
|
from flask.cli import with_appcontext
|
||||||
from flask_login import login_user
|
from flask_login import login_user
|
||||||
|
@ -185,11 +184,19 @@ def cmdb_counter():
|
||||||
UserCRUD.add(username='worker', password=uuid.uuid4().hex, email='worker@xxx.com')
|
UserCRUD.add(username='worker', password=uuid.uuid4().hex, email='worker@xxx.com')
|
||||||
|
|
||||||
login_user(UserCache.get('worker'))
|
login_user(UserCache.get('worker'))
|
||||||
|
|
||||||
|
i = 0
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
db.session.remove()
|
db.session.remove()
|
||||||
|
|
||||||
CMDBCounterCache.reset()
|
CMDBCounterCache.reset()
|
||||||
|
|
||||||
|
if i % 5 == 0:
|
||||||
|
CMDBCounterCache.flush_adc_counter()
|
||||||
|
i = 0
|
||||||
|
|
||||||
|
i += 1
|
||||||
except:
|
except:
|
||||||
import traceback
|
import traceback
|
||||||
print(traceback.format_exc())
|
print(traceback.format_exc())
|
||||||
|
|
|
@ -5,8 +5,10 @@ from __future__ import unicode_literals
|
||||||
from flask import current_app
|
from flask import current_app
|
||||||
|
|
||||||
from api.extensions import cache
|
from api.extensions import cache
|
||||||
|
from api.extensions import db
|
||||||
from api.lib.cmdb.custom_dashboard import CustomDashboardManager
|
from api.lib.cmdb.custom_dashboard import CustomDashboardManager
|
||||||
from api.models.cmdb import Attribute
|
from api.models.cmdb import Attribute
|
||||||
|
from api.models.cmdb import CI
|
||||||
from api.models.cmdb import CIType
|
from api.models.cmdb import CIType
|
||||||
from api.models.cmdb import CITypeAttribute
|
from api.models.cmdb import CITypeAttribute
|
||||||
from api.models.cmdb import RelationType
|
from api.models.cmdb import RelationType
|
||||||
|
@ -227,6 +229,7 @@ class CITypeAttributeCache(object):
|
||||||
|
|
||||||
class CMDBCounterCache(object):
|
class CMDBCounterCache(object):
|
||||||
KEY = 'CMDB::Counter'
|
KEY = 'CMDB::Counter'
|
||||||
|
KEY2 = 'CMDB::Counter2'
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get(cls):
|
def get(cls):
|
||||||
|
@ -429,3 +432,21 @@ class CMDBCounterCache(object):
|
||||||
return
|
return
|
||||||
|
|
||||||
return numfound
|
return numfound
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def flush_adc_counter(cls):
|
||||||
|
res = db.session.query(CI.type_id, CI.is_auto_discovery)
|
||||||
|
result = dict()
|
||||||
|
for i in res:
|
||||||
|
result.setdefault(i.type_id, dict(total=0, auto_discovery=0))
|
||||||
|
result[i.type_id]['total'] += 1
|
||||||
|
if i.is_auto_discovery:
|
||||||
|
result[i.type_id]['auto_discovery'] += 1
|
||||||
|
|
||||||
|
cache.set(cls.KEY2, result, timeout=0)
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_adc_counter(cls):
|
||||||
|
return cache.get(cls.KEY2) or cls.flush_adc_counter()
|
||||||
|
|
|
@ -5,7 +5,6 @@ import copy
|
||||||
import datetime
|
import datetime
|
||||||
import json
|
import json
|
||||||
import threading
|
import threading
|
||||||
|
|
||||||
from flask import abort
|
from flask import abort
|
||||||
from flask import current_app
|
from flask import current_app
|
||||||
from flask_login import current_user
|
from flask_login import current_user
|
||||||
|
@ -16,6 +15,7 @@ from api.extensions import rd
|
||||||
from api.lib.cmdb.cache import AttributeCache
|
from api.lib.cmdb.cache import AttributeCache
|
||||||
from api.lib.cmdb.cache import CITypeAttributesCache
|
from api.lib.cmdb.cache import CITypeAttributesCache
|
||||||
from api.lib.cmdb.cache import CITypeCache
|
from api.lib.cmdb.cache import CITypeCache
|
||||||
|
from api.lib.cmdb.cache import CMDBCounterCache
|
||||||
from api.lib.cmdb.ci_type import CITypeAttributeManager
|
from api.lib.cmdb.ci_type import CITypeAttributeManager
|
||||||
from api.lib.cmdb.ci_type import CITypeManager
|
from api.lib.cmdb.ci_type import CITypeManager
|
||||||
from api.lib.cmdb.ci_type import CITypeRelationManager
|
from api.lib.cmdb.ci_type import CITypeRelationManager
|
||||||
|
@ -218,15 +218,7 @@ class CIManager(object):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_ad_statistics(cls):
|
def get_ad_statistics(cls):
|
||||||
res = CI.get_by(to_dict=False)
|
return CMDBCounterCache.get_adc_counter()
|
||||||
result = dict()
|
|
||||||
for i in res:
|
|
||||||
result.setdefault(i.type_id, dict(total=0, auto_discovery=0))
|
|
||||||
result[i.type_id]['total'] += 1
|
|
||||||
if i.is_auto_discovery:
|
|
||||||
result[i.type_id]['auto_discovery'] += 1
|
|
||||||
|
|
||||||
return result
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def ci_is_exist(unique_key, unique_value, type_id):
|
def ci_is_exist(unique_key, unique_value, type_id):
|
||||||
|
|
Loading…
Reference in New Issue