mirror of https://github.com/veops/cmdb.git
137 lines
3.3 KiB
Python
137 lines
3.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""provide some sample data in database"""
|
|
import uuid
|
|
import random
|
|
|
|
|
|
from api.models.cmdb import (
|
|
Attribute,
|
|
CIType,
|
|
CITypeAttributeGroup,
|
|
CITypeAttribute,
|
|
CITypeRelation,
|
|
RelationType
|
|
)
|
|
from api.models.acl import User
|
|
|
|
from api.lib.cmdb.ci_type import CITypeAttributeManager
|
|
from api.lib.cmdb.ci import CIManager, CIRelationManager
|
|
|
|
|
|
def force_add_user():
|
|
from flask import g
|
|
if not getattr(g, "user", None):
|
|
g.user = User.query.first()
|
|
|
|
|
|
def init_attributes(num=1):
|
|
attrs = []
|
|
for i in range(num):
|
|
attrs.append(Attribute.create(
|
|
name=uuid.uuid4().hex[:8],
|
|
alias=uuid.uuid4().hex[:8],
|
|
value_type=str(random.randint(0, 100) % 3)
|
|
))
|
|
return attrs
|
|
|
|
|
|
def init_ci_types(num=1):
|
|
attrs = init_attributes(num)
|
|
|
|
ci_types = []
|
|
for i in range(num):
|
|
ci_type = CIType.create(
|
|
name=uuid.uuid4().hex[:8],
|
|
alias=uuid.uuid4().hex[:8],
|
|
unique_id=attrs[i].id
|
|
)
|
|
CITypeAttribute.create(
|
|
type_id=ci_type.id,
|
|
attr_id=attrs[i].id,
|
|
)
|
|
ci_types.append(ci_type)
|
|
|
|
return ci_types
|
|
|
|
|
|
def init_attribute_groups(num=1):
|
|
ci_types = init_ci_types(num)
|
|
|
|
ags = []
|
|
for i in range(num):
|
|
ags.append(CITypeAttributeGroup.create(
|
|
name=uuid.uuid4().hex[:8],
|
|
type_id=ci_types[i].id,
|
|
order=i
|
|
))
|
|
return ags
|
|
|
|
|
|
def init_relation_type(num=1):
|
|
result = []
|
|
for i in range(num):
|
|
result.append(RelationType.create(
|
|
name=uuid.uuid4().hex[:8],
|
|
))
|
|
return result
|
|
|
|
|
|
def init_ci_type_relation(num=1):
|
|
result = []
|
|
ci_types = init_ci_types(num+1)
|
|
relation_types = init_relation_type(num)
|
|
for i in range(num):
|
|
result.append(CITypeRelation.create(
|
|
parent_id=ci_types[i].id,
|
|
child_id=ci_types[i+1].id,
|
|
relation_type_id=relation_types[i].id
|
|
))
|
|
return result
|
|
|
|
|
|
def fake_attr_value(attr_dict):
|
|
attr_type = attr_dict["value_type"]
|
|
attr_name = attr_dict["name"]
|
|
|
|
if attr_type == "0":
|
|
return {attr_name: random.randint(0, 1000)}
|
|
elif attr_type == "1":
|
|
return {attr_name: random.randint(0, 1000) / 3.0}
|
|
elif attr_type == "2":
|
|
return {attr_name: uuid.uuid4().hex[:8]}
|
|
|
|
|
|
def init_ci(num=1):
|
|
# store ci need has user
|
|
force_add_user()
|
|
ci_type = init_ci_types(1)[0]
|
|
attrs = CITypeAttributeManager.get_attributes_by_type_id(ci_type.id)
|
|
manager = CIManager()
|
|
result = []
|
|
|
|
for i in range(num):
|
|
ci_id = manager.add(ci_type.name, **fake_attr_value(attrs[0]))
|
|
result.append(manager.get_ci_by_id_from_db(ci_id))
|
|
|
|
return result
|
|
|
|
|
|
def init_ci_with_type(ci_types):
|
|
force_add_user()
|
|
cis = []
|
|
manager = CIManager()
|
|
for ci_type in ci_types:
|
|
attrs = CITypeAttributeManager.get_attributes_by_type_id(ci_type.id)
|
|
ci_id = manager.add(ci_type.name, **fake_attr_value(attrs[0]))
|
|
cis.append(manager.get_ci_by_id_from_db(ci_id))
|
|
return cis
|
|
|
|
|
|
def init_ci_relation():
|
|
init_ci_type_relation(1)
|
|
ci_types = CIType.query.all()
|
|
cis = init_ci_with_type(ci_types)
|
|
manager = CIRelationManager()
|
|
cir_id = manager.add(cis[0]['ci_id'], cis[1]['ci_id'])
|
|
return cir_id
|