Merge branch 'dvadmin-liqianglog' of https://gitee.com/liqianglog/django-vue-admin into dvadmin-xt12321
commit
51bee0c4ab
|
@ -51,6 +51,7 @@ INSTALLED_APPS = [
|
||||||
'apps.vadmin.op_drf',
|
'apps.vadmin.op_drf',
|
||||||
'apps.vadmin.system',
|
'apps.vadmin.system',
|
||||||
'apps.vadmin.celery',
|
'apps.vadmin.celery',
|
||||||
|
'apps.vadmin.monitor',
|
||||||
]
|
]
|
||||||
|
|
||||||
MIDDLEWARE = [
|
MIDDLEWARE = [
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
from django.apps import AppConfig
|
||||||
|
|
||||||
|
|
||||||
|
class MonitorConfig(AppConfig):
|
||||||
|
name = 'vadmin.monitor'
|
||||||
|
verbose_name = "系统监控"
|
|
@ -0,0 +1,23 @@
|
||||||
|
import django_filters
|
||||||
|
|
||||||
|
from .models import Server, Monitor
|
||||||
|
|
||||||
|
|
||||||
|
class ServerFilter(django_filters.rest_framework.FilterSet):
|
||||||
|
"""
|
||||||
|
服务器信息 简单过滤器
|
||||||
|
"""
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = Server
|
||||||
|
fields = '__all__'
|
||||||
|
|
||||||
|
|
||||||
|
class MonitorFilter(django_filters.rest_framework.FilterSet):
|
||||||
|
"""
|
||||||
|
服务器监控信息 简单过滤器
|
||||||
|
"""
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = Monitor
|
||||||
|
fields = '__all__'
|
|
@ -0,0 +1,3 @@
|
||||||
|
from ..models.monitor import Monitor
|
||||||
|
from ..models.server import Server
|
||||||
|
from ..models.sys_files import SysFiles
|
|
@ -0,0 +1,21 @@
|
||||||
|
from django.db.models import CharField, ForeignKey, CASCADE
|
||||||
|
|
||||||
|
from ...op_drf.models import CoreModel
|
||||||
|
|
||||||
|
|
||||||
|
class Monitor(CoreModel):
|
||||||
|
cpu_num = CharField(max_length=8, verbose_name='CPU核数')
|
||||||
|
cpu_free = CharField(max_length=8, verbose_name='CPU当前空闲率')
|
||||||
|
cpu_sys = CharField(max_length=8, verbose_name='CPU已使用率')
|
||||||
|
mem_num = CharField(max_length=32, verbose_name='内存总数(KB)')
|
||||||
|
mem_free = CharField(max_length=32, verbose_name='内存剩余大小(KB)')
|
||||||
|
mem_sys = CharField(max_length=32, verbose_name='内存已使用大小(KB)')
|
||||||
|
seconds = CharField(max_length=32, verbose_name='运行已时间(秒)')
|
||||||
|
server = ForeignKey(to='Server', on_delete=CASCADE, verbose_name="关联服务器信息", db_constraint=False)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
verbose_name = '服务器监控信息'
|
||||||
|
verbose_name_plural = verbose_name
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"{self.server and self.server.name and self.server.ip}监控信息"
|
|
@ -0,0 +1,17 @@
|
||||||
|
from django.db.models import CharField
|
||||||
|
|
||||||
|
from ...op_drf.models import CoreModel
|
||||||
|
|
||||||
|
|
||||||
|
class Server(CoreModel):
|
||||||
|
name = CharField(max_length=256, verbose_name='服务器名称', null=True, blank=True)
|
||||||
|
ip = CharField(max_length=32, verbose_name="ip地址")
|
||||||
|
os = CharField(max_length=32, verbose_name="操作系统")
|
||||||
|
remark = CharField(max_length=256, verbose_name="备注", null=True, blank=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
verbose_name = '服务器信息'
|
||||||
|
verbose_name_plural = verbose_name
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"{self.name and self.ip}"
|
|
@ -0,0 +1,19 @@
|
||||||
|
from django.db.models import CharField, ForeignKey, CASCADE
|
||||||
|
|
||||||
|
from ...op_drf.models import CoreModel
|
||||||
|
|
||||||
|
|
||||||
|
class SysFiles(CoreModel):
|
||||||
|
dir_name = CharField(max_length=32, verbose_name='磁盘路径')
|
||||||
|
sys_type_name = CharField(max_length=32, verbose_name='系统文件类型')
|
||||||
|
type_name = CharField(max_length=32, verbose_name='盘符类型')
|
||||||
|
total = CharField(max_length=32, verbose_name='磁盘总大小(KB)')
|
||||||
|
mem_free = CharField(max_length=32, verbose_name='已使用大小(KB)')
|
||||||
|
monitor = ForeignKey(to='Monitor', on_delete=CASCADE, verbose_name="关联服务器监控信息", db_constraint=False)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
verbose_name = '系统磁盘'
|
||||||
|
verbose_name_plural = verbose_name
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"{self.creator and self.creator.name}"
|
|
@ -0,0 +1,29 @@
|
||||||
|
from .models import Server, Monitor
|
||||||
|
from ..op_drf.serializers import CustomModelSerializer
|
||||||
|
|
||||||
|
|
||||||
|
# ================================================= #
|
||||||
|
# ************** 服务器信息 序列化器 ************** #
|
||||||
|
# ================================================= #
|
||||||
|
|
||||||
|
class ServerSerializer(CustomModelSerializer):
|
||||||
|
"""
|
||||||
|
服务器信息 简单序列化器
|
||||||
|
"""
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = Server
|
||||||
|
fields = '__all__'
|
||||||
|
|
||||||
|
# ================================================= #
|
||||||
|
# ************** 服务器监控信息 序列化器 ************** #
|
||||||
|
# ================================================= #
|
||||||
|
|
||||||
|
class MonitorSerializer(CustomModelSerializer):
|
||||||
|
"""
|
||||||
|
服务器监控信息 简单序列化器
|
||||||
|
"""
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = Monitor
|
||||||
|
fields = '__all__'
|
|
@ -0,0 +1,3 @@
|
||||||
|
from django.test import TestCase
|
||||||
|
|
||||||
|
# Create your tests here.
|
|
@ -0,0 +1,12 @@
|
||||||
|
from rest_framework.routers import DefaultRouter
|
||||||
|
|
||||||
|
from .views import ServerModelViewSet, MonitorModelViewSet
|
||||||
|
|
||||||
|
router = DefaultRouter()
|
||||||
|
router.register(r'server', ServerModelViewSet)
|
||||||
|
router.register(r'monitor', MonitorModelViewSet)
|
||||||
|
|
||||||
|
urlpatterns = [
|
||||||
|
|
||||||
|
]
|
||||||
|
urlpatterns += router.urls
|
|
@ -0,0 +1,32 @@
|
||||||
|
from .filters import ServerFilter, MonitorFilter
|
||||||
|
from .models import Server, Monitor
|
||||||
|
from .serializers import ServerSerializer, MonitorSerializer
|
||||||
|
from ..op_drf.viewsets import CustomModelViewSet
|
||||||
|
from ..permission.permissions import CommonPermission
|
||||||
|
|
||||||
|
|
||||||
|
class ServerModelViewSet(CustomModelViewSet):
|
||||||
|
"""
|
||||||
|
服务器信息 模型的CRUD视图
|
||||||
|
"""
|
||||||
|
queryset = Server.objects.all()
|
||||||
|
serializer_class = ServerSerializer
|
||||||
|
# extra_filter_backends = [DataLevelPermissionsFilter]
|
||||||
|
filter_class = ServerFilter
|
||||||
|
update_extra_permission_classes = (CommonPermission,)
|
||||||
|
destroy_extra_permission_classes = (CommonPermission,)
|
||||||
|
create_extra_permission_classes = (CommonPermission,)
|
||||||
|
ordering = '-create_datetime' # 默认排序
|
||||||
|
|
||||||
|
class MonitorModelViewSet(CustomModelViewSet):
|
||||||
|
"""
|
||||||
|
服务器监控信息 模型的CRUD视图
|
||||||
|
"""
|
||||||
|
queryset = Monitor.objects.all()
|
||||||
|
serializer_class = MonitorSerializer
|
||||||
|
# extra_filter_backends = [DataLevelPermissionsFilter]
|
||||||
|
filter_class = MonitorFilter
|
||||||
|
update_extra_permission_classes = (CommonPermission,)
|
||||||
|
destroy_extra_permission_classes = (CommonPermission,)
|
||||||
|
create_extra_permission_classes = (CommonPermission,)
|
||||||
|
ordering = '-create_datetime' # 默认排序
|
|
@ -54,5 +54,6 @@ urlpatterns = [
|
||||||
re_path(r'^permission/', include('apps.vadmin.permission.urls')),
|
re_path(r'^permission/', include('apps.vadmin.permission.urls')),
|
||||||
re_path(r'^system/', include('apps.vadmin.system.urls')),
|
re_path(r'^system/', include('apps.vadmin.system.urls')),
|
||||||
re_path(r'^celery/', include('apps.vadmin.celery.urls')),
|
re_path(r'^celery/', include('apps.vadmin.celery.urls')),
|
||||||
|
re_path(r'^monitor/', include('apps.vadmin.monitor.urls')),
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
Loading…
Reference in New Issue