移除旧模型、去除旧的模型依赖
This commit is contained in:
parent
f9d08d0125
commit
065aa9d34c
|
@ -5,7 +5,7 @@ from flask import request
|
||||||
from flask_restful import reqparse
|
from flask_restful import reqparse
|
||||||
|
|
||||||
from models.asset import fields as assetField
|
from models.asset import fields as assetField
|
||||||
from models.asset import models as assetModel
|
from models.asset import host as assetModel
|
||||||
from common.views import ListCreateViewSet, DetailViewSet
|
from common.views import ListCreateViewSet, DetailViewSet
|
||||||
from common.permission import session_or_token_required
|
from common.permission import session_or_token_required
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ import datetime
|
||||||
|
|
||||||
from flask_restful import Resource, reqparse, marshal, fields as F
|
from flask_restful import Resource, reqparse, marshal, fields as F
|
||||||
|
|
||||||
from models.asset.models import Host
|
from models.asset.host import Host
|
||||||
from models.asset.fields import HostFields
|
from models.asset.fields import HostFields
|
||||||
from models.project import fields
|
from models.project import fields
|
||||||
from models.project.models import Project, Channel, Server, Version
|
from models.project.models import Project, Channel, Server, Version
|
||||||
|
|
|
@ -4,7 +4,7 @@ from flask import request
|
||||||
from flask_restful import inputs
|
from flask_restful import inputs
|
||||||
|
|
||||||
from models.project import fields
|
from models.project import fields
|
||||||
from models.asset import models as assetModel
|
from models.asset import host as assetModel
|
||||||
from models.project.models import Project, Channel, Server
|
from models.project.models import Project, Channel, Server
|
||||||
from common.views import ListMixin, CreateMixin, ListCreateViewSet, DetailViewSet
|
from common.views import ListMixin, CreateMixin, ListCreateViewSet, DetailViewSet
|
||||||
from common.permission import session_or_token_required
|
from common.permission import session_or_token_required
|
||||||
|
|
|
@ -26,82 +26,3 @@ HostSimpleFields = {
|
||||||
"public_ip": fields.String,
|
"public_ip": fields.String,
|
||||||
"private_ip": fields.String,
|
"private_ip": fields.String,
|
||||||
}
|
}
|
||||||
|
|
||||||
DatabaseServerFields = {
|
|
||||||
"id": fields.String,
|
|
||||||
"name": fields.String,
|
|
||||||
"domain": fields.String,
|
|
||||||
"host": fields.String,
|
|
||||||
"manage": fields.String,
|
|
||||||
"data": fields.Raw,
|
|
||||||
"tags": fields.List(fields.String),
|
|
||||||
"labels": fields.Raw,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
databaseDetailFields = {
|
|
||||||
"id": "",
|
|
||||||
"name": fields.String,
|
|
||||||
"domain": fields.String,
|
|
||||||
"host": fields.String,
|
|
||||||
"manage": fields.String,
|
|
||||||
"data": fields.Raw,
|
|
||||||
"tags": fields.List(fields.String),
|
|
||||||
"labels": fields.Raw,
|
|
||||||
}
|
|
||||||
|
|
||||||
DatabaseFields = {
|
|
||||||
"id": fields.String,
|
|
||||||
"name": fields.String,
|
|
||||||
"username": fields.String,
|
|
||||||
"password": fields.String,
|
|
||||||
"data": fields.Raw,
|
|
||||||
"tags": fields.List(fields.String),
|
|
||||||
"labels": fields.Raw,
|
|
||||||
}
|
|
||||||
|
|
||||||
MySQLInstanceFields = {
|
|
||||||
"port": fields.Integer,
|
|
||||||
"username": fields.String,
|
|
||||||
"password": fields.String,
|
|
||||||
"storage": fields.Integer,
|
|
||||||
"memory": fields.Integer,
|
|
||||||
"core": fields.Integer,
|
|
||||||
"databases": fields.List(fields.Nested(DatabaseFields))
|
|
||||||
}
|
|
||||||
# 合并 DatabaseServerFields
|
|
||||||
MySQLInstanceFields.update(DatabaseServerFields)
|
|
||||||
|
|
||||||
RedisInstanceFields = {
|
|
||||||
"port": fields.Integer,
|
|
||||||
"memory": fields.Integer,
|
|
||||||
"replicas": fields.Integer,
|
|
||||||
"password": fields.String,
|
|
||||||
}
|
|
||||||
# 合并 DatabaseServerFields
|
|
||||||
RedisInstanceFields.update(DatabaseServerFields)
|
|
||||||
|
|
||||||
MiddlewareFields = {
|
|
||||||
"id": fields.String,
|
|
||||||
"host": fields.String,
|
|
||||||
"manage": fields.String,
|
|
||||||
"data": fields.Raw,
|
|
||||||
"tags": fields.List(fields.String),
|
|
||||||
"labels": fields.Raw,
|
|
||||||
}
|
|
||||||
|
|
||||||
NginxInstanceFields = {
|
|
||||||
"port": fields.Integer,
|
|
||||||
"url": fields.String,
|
|
||||||
}
|
|
||||||
NginxInstanceFields.update(MiddlewareFields)
|
|
||||||
|
|
||||||
# CDN 序列化字段
|
|
||||||
CDNFields = {
|
|
||||||
"id": fields.String,
|
|
||||||
"domain": fields.String,
|
|
||||||
"data": fields.Raw,
|
|
||||||
"manage": fields.String,
|
|
||||||
"tags": fields.List(fields.String),
|
|
||||||
"labels": fields.Raw,
|
|
||||||
}
|
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
from bson import ObjectId
|
||||||
|
import mongoengine as mongo
|
||||||
|
|
||||||
|
from common.document import DocumentBase
|
||||||
|
from common.validator import is_ipaddr, is_hex_string
|
||||||
|
|
||||||
|
|
||||||
|
class Host(DocumentBase):
|
||||||
|
|
||||||
|
# STATUS = {
|
||||||
|
# "no": ""
|
||||||
|
# }
|
||||||
|
|
||||||
|
public_ip = mongo.StringField(max_length=64, required=True, unique=True, validation=is_ipaddr)
|
||||||
|
private_ip = mongo.StringField(max_length=64, default="")
|
||||||
|
minion_id = mongo.StringField(max_length=64, default="") # 需要唯一,先留空
|
||||||
|
weights = mongo.IntField(default=40)
|
||||||
|
# status = mongo.StringField()
|
||||||
|
# spec = mongo.EmbeddedDocumentField(Spec)
|
||||||
|
|
||||||
|
cpu_num = mongo.IntField(default=1) # cpu物理个数
|
||||||
|
cpu_core = mongo.IntField(default=1) # 每个cpu的核心数
|
||||||
|
memory = mongo.IntField(default=0) # 内存大小,单位GB
|
||||||
|
data = mongo.DictField(default=dict)
|
||||||
|
|
||||||
|
# 标记和标签
|
||||||
|
tags = mongo.ListField(mongo.StringField(), default=list) # tags 默认是空列表
|
||||||
|
labels = mongo.DictField(default=dict)
|
||||||
|
|
||||||
|
created = mongo.DateTimeField()
|
|
@ -1,109 +0,0 @@
|
||||||
from bson import ObjectId
|
|
||||||
import mongoengine as mongo
|
|
||||||
|
|
||||||
from common.document import DocumentBase
|
|
||||||
from common.validator import is_ipaddr, is_hex_string
|
|
||||||
|
|
||||||
|
|
||||||
class Host(DocumentBase):
|
|
||||||
|
|
||||||
# STATUS = {
|
|
||||||
# "no": ""
|
|
||||||
# }
|
|
||||||
|
|
||||||
public_ip = mongo.StringField(max_length=64, required=True, unique=True, validation=is_ipaddr)
|
|
||||||
private_ip = mongo.StringField(max_length=64, default="")
|
|
||||||
minion_id = mongo.StringField(max_length=64, default="") # 需要唯一,先留空
|
|
||||||
weights = mongo.IntField(default=40)
|
|
||||||
# status = mongo.StringField()
|
|
||||||
# spec = mongo.EmbeddedDocumentField(Spec)
|
|
||||||
|
|
||||||
cpu_num = mongo.IntField(default=1) # cpu物理个数
|
|
||||||
cpu_core = mongo.IntField(default=1) # 每个cpu的核心数
|
|
||||||
memory = mongo.IntField(default=0) # 内存大小,单位GB
|
|
||||||
data = mongo.DictField(default=dict)
|
|
||||||
|
|
||||||
# 标记和标签
|
|
||||||
tags = mongo.ListField(mongo.StringField(), default=list) # tags 默认是空列表
|
|
||||||
labels = mongo.DictField(default=dict)
|
|
||||||
|
|
||||||
created = mongo.DateTimeField()
|
|
||||||
|
|
||||||
|
|
||||||
class DatabaseServer(DocumentBase):
|
|
||||||
"""数据库服务器实例,包括mysql、redis、mongodb"""
|
|
||||||
meta = {'allow_inheritance': True}
|
|
||||||
name = mongo.StringField(required=True)
|
|
||||||
domain = mongo.StringField(required=False) # 域名连接的地址
|
|
||||||
host = mongo.StringField(required=True) # 内网连接地址
|
|
||||||
# 管理者,预留
|
|
||||||
manage = mongo.StringField(max_length=128, required=True)
|
|
||||||
data = mongo.DictField(default=dict)
|
|
||||||
# 标记和标签
|
|
||||||
tags = mongo.ListField(mongo.StringField(), default=list) # tags 默认是空列表
|
|
||||||
labels = mongo.DictField(default=dict)
|
|
||||||
|
|
||||||
|
|
||||||
class Database(mongo.EmbeddedDocument):
|
|
||||||
"""数据库对象的结构描述,一个数据库实例下包含多个数据库,并授权不同用户"""
|
|
||||||
# 为数据库对象生成id,非主键
|
|
||||||
# 查询方式: MySQLInstance.objects.filter(databases__id='61adfcd5726440e0eb8b28bc').first()
|
|
||||||
id = mongo.ObjectIdField(required=True, default=ObjectId)
|
|
||||||
name = mongo.StringField(required=True)
|
|
||||||
username = mongo.StringField(default="")
|
|
||||||
password = mongo.StringField(default="")
|
|
||||||
data = mongo.DictField(default=dict)
|
|
||||||
tags = mongo.ListField(mongo.StringField(), default=list) # tags 默认是空列表
|
|
||||||
labels = mongo.DictField(default=dict)
|
|
||||||
|
|
||||||
|
|
||||||
class MySQLInstance(DatabaseServer):
|
|
||||||
"""MySQL数据库实例"""
|
|
||||||
# 库名、连接的用户名密码
|
|
||||||
port = mongo.IntField(default=3306)
|
|
||||||
username = mongo.StringField(max_length=32, required=True)
|
|
||||||
password = mongo.StringField(max_length=128, required=True)
|
|
||||||
# 配置
|
|
||||||
storage = mongo.IntField(required=True)
|
|
||||||
memory = mongo.IntField(required=True)
|
|
||||||
core = mongo.IntField(required=True)
|
|
||||||
# 实例数据库,包含多个数据库
|
|
||||||
databases = mongo.EmbeddedDocumentListField(Database)
|
|
||||||
|
|
||||||
|
|
||||||
class RedisInstance(DatabaseServer):
|
|
||||||
"""Redis数据库实例"""
|
|
||||||
# 内存大小、副本数、密码
|
|
||||||
port = mongo.IntField(default=6379)
|
|
||||||
memory = mongo.IntField(required=True)
|
|
||||||
replicas = mongo.IntField(required=True, default=0)
|
|
||||||
password = mongo.StringField(max_length=128, default="")
|
|
||||||
|
|
||||||
|
|
||||||
class Middleware(DocumentBase):
|
|
||||||
"""中间件"""
|
|
||||||
meta = {'allow_inheritance': True}
|
|
||||||
host = mongo.StringField(required=True)
|
|
||||||
# 管理者,预留
|
|
||||||
manage = mongo.StringField(max_length=128, required=True)
|
|
||||||
data = mongo.DictField(default=dict)
|
|
||||||
# 标记和标签
|
|
||||||
tags = mongo.ListField(mongo.StringField(), default=list) # tags 默认是空列表
|
|
||||||
labels = mongo.DictField(default=dict)
|
|
||||||
|
|
||||||
|
|
||||||
class NginxInstance(Middleware):
|
|
||||||
"""nginx服务器"""
|
|
||||||
port = mongo.IntField(default=80)
|
|
||||||
url = mongo.StringField(max_length=128, default="/")
|
|
||||||
|
|
||||||
|
|
||||||
class CDN(DocumentBase):
|
|
||||||
"""cdn域名"""
|
|
||||||
meta = {'collection': 'cdn'}
|
|
||||||
domain = mongo.StringField(max_length=256, required=True) # cdn域名
|
|
||||||
manage = mongo.StringField(max_length=128, default="")
|
|
||||||
data = mongo.DictField(default=dict)
|
|
||||||
# 标记和标签
|
|
||||||
tags = mongo.ListField(mongo.StringField(), default=list) # tags 默认是空列表
|
|
||||||
labels = mongo.DictField(default=dict)
|
|
|
@ -5,7 +5,7 @@ from settings import common
|
||||||
from common.document import DocumentBase
|
from common.document import DocumentBase
|
||||||
from common.validator import isalnum, is_hex_string
|
from common.validator import isalnum, is_hex_string
|
||||||
|
|
||||||
from models.asset.models import Host, DatabaseServer
|
from models.asset.host import Host
|
||||||
|
|
||||||
|
|
||||||
class Project(DocumentBase):
|
class Project(DocumentBase):
|
||||||
|
@ -249,73 +249,3 @@ class Server(DocumentBase):
|
||||||
if hosts:
|
if hosts:
|
||||||
return queryset.filter(host_id__in=hosts)
|
return queryset.filter(host_id__in=hosts)
|
||||||
return cls.objects.none()
|
return cls.objects.none()
|
||||||
|
|
||||||
@property
|
|
||||||
def game_db(self) -> dict:
|
|
||||||
"""给机器的返回,数据库集合是 DatabaseServer 的子类,可以通过它找到,不管是"""
|
|
||||||
if self.game_db_id:
|
|
||||||
instance = DatabaseServer.objects(databases__id=self.game_db_id).first()
|
|
||||||
if not instance:
|
|
||||||
return {}
|
|
||||||
database = instance.databases.filter(id=self.game_db_id).first()
|
|
||||||
data = dict(database.to_mongo())
|
|
||||||
if "id" in data:
|
|
||||||
data.pop("id")
|
|
||||||
data["host"] = instance.host
|
|
||||||
data["port"] = instance.port
|
|
||||||
return data
|
|
||||||
return {}
|
|
||||||
|
|
||||||
@property
|
|
||||||
def admin_db(self) -> dict:
|
|
||||||
"""给机器的返回,数据库集合是 DatabaseServer 的子类,可以通过它找到,不管是"""
|
|
||||||
if self.admin_db_id:
|
|
||||||
instance = DatabaseServer.objects(databases__id=self.admin_db_id).first()
|
|
||||||
if not instance:
|
|
||||||
return {}
|
|
||||||
database = instance.databases.filter(id=self.admin_db_id).first()
|
|
||||||
data = dict(database.to_mongo())
|
|
||||||
if "id" in data:
|
|
||||||
data.pop("id")
|
|
||||||
data["host"] = instance.host
|
|
||||||
data["port"] = instance.port
|
|
||||||
return data
|
|
||||||
return {}
|
|
||||||
|
|
||||||
@property
|
|
||||||
def game_database(self) -> dict:
|
|
||||||
"""给前端的返回,去除密码等敏感信息"""
|
|
||||||
pop_item = ["id", "username", "password"]
|
|
||||||
if self.game_db_id:
|
|
||||||
instance = DatabaseServer.objects(databases__id=self.game_db_id).first()
|
|
||||||
if not instance:
|
|
||||||
return {}
|
|
||||||
database = instance.databases.filter(id=self.game_db_id).first()
|
|
||||||
data = dict(database.to_mongo())
|
|
||||||
for item in pop_item:
|
|
||||||
if item in data:
|
|
||||||
data.pop(item)
|
|
||||||
data["id"] = str(database.id)
|
|
||||||
data["host"] = instance.host
|
|
||||||
data["port"] = instance.port
|
|
||||||
return data
|
|
||||||
return {}
|
|
||||||
|
|
||||||
@property
|
|
||||||
def admin_database(self) -> dict:
|
|
||||||
"""给前端的返回,去除密码等敏感信息"""
|
|
||||||
pop_item = ["username", "password"]
|
|
||||||
if self.admin_db_id:
|
|
||||||
instance = DatabaseServer.objects(databases__id=self.admin_db_id).first()
|
|
||||||
if not instance:
|
|
||||||
return {}
|
|
||||||
database = instance.databases.filter(id=self.admin_db_id).first()
|
|
||||||
data = dict(database.to_mongo())
|
|
||||||
for item in pop_item:
|
|
||||||
if item in data:
|
|
||||||
data.pop(item)
|
|
||||||
data["id"] = str(database.id)
|
|
||||||
data["host"] = instance.host
|
|
||||||
data["port"] = instance.port
|
|
||||||
return data
|
|
||||||
return {}
|
|
||||||
|
|
Loading…
Reference in New Issue