| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- # coding:utf-8
- import datetime
- from rest_framework import serializers
- from utils.supervisord_utils import SupervisordUtils
- from drf_spectacular.utils import extend_schema_field
- from drf_spectacular.types import OpenApiTypes
- class SystemDetailSerializer(serializers.Serializer):
- cpu_rate = serializers.IntegerField(help_text='cpu使用率', default=0.0)
- disk_rate = serializers.IntegerField(help_text='磁盘使用率', default=0.0)
- memory_rate = serializers.IntegerField(help_text='内存使用率', default=0.0)
- disk_used = serializers.CharField(help_text="磁盘已使用", default="20G")
- disk_total = serializers.CharField(help_text=" 磁盘总数", default="100G")
- memory_used = serializers.CharField(help_text="内存已使用", default="3G")
- memory_total = serializers.CharField(help_text="内存总数", default="8G")
- def to_representation(self, instance):
- return {
- 'cpu_rate': instance['cpu_rate'],
- 'disk_rate': instance['disk_rate'],
- 'memory_rate': instance['memory_rate'],
- 'disk_used': instance['disk_used'],
- 'disk_total': instance['disk_total'],
- 'memory_used': instance['memory_used'],
- 'memory_total': instance['memory_total']
- }
- class ProcessListSerializer(serializers.Serializer):
- pid = serializers.IntegerField(help_text='进程id', default=1)
- name = serializers.CharField(help_text="进程名称", default="nginx")
- start_time = serializers.DateTimeField(help_text="启动时间", default="2020-03-06 20:54:00")
- state_name = serializers.CharField(label="运行状态", help_text="当运行状态不等于RUNNING时候,停止按钮设置为不可点击状态", default="RUNNING")
- description = serializers.CharField(help_text="描述信息", default="Exited too quickly (process log may have details)")
- def to_representation(self, instance):
- start_date = datetime.datetime.fromtimestamp(instance['start'])
- start_time = start_date.strftime('%Y-%m-%d %H:%M:%S')
- state_name = instance['statename']
- description = instance['description']
- pid = -1
- if state_name == 'RUNNING':
- pid = instance['pid']
- now = datetime.datetime.fromtimestamp(instance['now'])
- diff_date = now - start_date
- description = '已运行 ' + str(diff_date).replace('days', '天')
- return {
- "pid": pid,
- "name": instance['name'],
- "start_time": start_time,
- "state_name": instance['statename'],
- "description": description
- }
- class ProcessDetailDeleteSerializer(serializers.Serializer):
- name = serializers.CharField(required=True, help_text="进程名称", error_messages={
- 'required': '参数必须存在',
- 'blank': '进程名称不能为空',
- })
- def validate_name(self, value):
- if not SupervisordUtils().is_exists(value):
- raise serializers.ValidationError('{}进程不存在'.format(value))
- class ProcessDetailPutSerializer(ProcessDetailDeleteSerializer):
- action = serializers.CharField(label="操作方式", required=True, help_text="stop 表示停止,restart 表示重启")
- def validate_action(self, value):
- if value not in ['stop', 'restart']:
- raise serializers.ValidationError('仅支持stop或restart')
|