• [svc]堡垒机模型设计初步


    models

    from django.contrib.auth.models import AbstractUser
    from django.db import models
    
    
    # Create your models here.
    
    class RemoteUser(models.Model):
        """主机账号"""
        auth_type = models.SmallIntegerField(choices=((0, 'sshpass'), (1, 'sshkey')), default=0)
        username = models.CharField(max_length=30)
        password = models.CharField(max_length=60, blank=True, null=True)
    
        class Meta:
            unique_together = ("auth_type", "username", "password")
            verbose_name = "主机账号"
            verbose_name_plural = verbose_name
    
        def __str__(self):
            return "%s/%s" % (self.username, self.password)
    
    
    class HostGroup(models.Model):
        """主机组"""
        name = models.CharField(max_length=30)
    
        # hosts = models.ForeignKey(Hosts, on_delete=models.CASCADE)
    
        class Meta:
            verbose_name = "主机组"
            verbose_name_plural = verbose_name
    
        def __str__(self):
            return "%s" % (self.name)
    
    
    class Hosts(models.Model):
        """主机"""
        name = models.CharField(max_length=30, unique=True)
        ip = models.GenericIPAddressField(unique=True)
        port = models.SmallIntegerField(default=22)
        idc = models.ForeignKey("IDC", on_delete=models.CASCADE)
        # remote_user = models.ManyToManyField(RemoteUser)
        host_group = models.ForeignKey(HostGroup, on_delete=models.CASCADE)
    
        class Meta:
            verbose_name = "主机"
            verbose_name_plural = verbose_name
    
        def __str__(self):
            return self.name
    
    
    class HostToRemoteUser(models.Model):
        """主机和账号绑定"""
        host = models.ForeignKey(Hosts, on_delete=models.CASCADE)
        remote_user = models.ForeignKey(RemoteUser, on_delete=models.CASCADE)
    
    
    class IDC(models.Model):
        name = models.CharField(max_length=30, unique=True)
    
        class Meta:
            verbose_name = "IDC机房"
            verbose_name_plural = verbose_name
    
        def __str__(self):
            return self.name
    
    
    # class UserProfile(AbstractUser):
    #     # host_to_remote_users = models.ManyToManyField("HostToRemoteUser", blank=True, null=True)
    #     # host_groups = models.ManyToManyField("HostGroup", blank=True, null=True)
    #     tel = models.CharField(max_length=30)
    #
    #     class Meta:
    #         verbose_name = "用户信息"
    #         verbose_name_plural = verbose_name
    #
    #     def __str__(self):
    #         return self.username
    
    

    admin

    from django.contrib import admin
    
    from .models import RemoteUser, Hosts, HostGroup, IDC, HostToRemoteUser
    
    
    # Register your models here.
    
    class RemoteUserAdmin(admin.ModelAdmin):
        """主机账号"""
        list_display = ("username", "password")
    
    
    class HostsAdmin(admin.ModelAdmin):
        """主机"""
        list_display = ("name", "ip", "port","idc","host_group")
    
    
    class HostGroupAdmin(admin.ModelAdmin):
        """主机组"""
        list_display = ("name",)
    
    
    class IDCAdmin(admin.ModelAdmin):
        """主机组"""
        list_display = ("name",)
    
    
    class HostToRemoteUserAdmin(admin.ModelAdmin):
        """主机组"""
        list_display = ("host", "remote_user")
    
    
    admin.site.register(RemoteUser, RemoteUserAdmin)
    admin.site.register(Hosts, HostsAdmin)
    admin.site.register(HostGroup, HostGroupAdmin)
    admin.site.register(HostToRemoteUser, HostToRemoteUserAdmin)
    admin.site.register(IDC, IDCAdmin)
    
  • 相关阅读:
    个人附加作业
    个人最终总结
    结对作业--电梯调度
    VS2015安装&简单的C#单元测试
    C#程序代码分析(第三周)
    HTML学习有感
    gitlab使用有感之坚持
    学习有感

    Activity总结
  • 原文地址:https://www.cnblogs.com/iiiiiher/p/8648428.html
Copyright © 2020-2023  润新知