CMDB服務器管理系統【s5day91】:數據庫表結構補充

一、表機構補充圖

二、用戶信息表(UserProfile)

一、解決了什麼問題python

一、這臺服務器是誰管理的?
二、真正出問題了我敢上去改代碼了?不能
三、因此一臺機器必須有運維人員和業務負責人,可是業務負責人不登錄這個系統,
四、要想登錄這個系統必需要用用戶名密碼,可是我這裏只有部分人登陸,應該怎麼寫服務器

二、代碼運維

class UserProfile(models.Model):
    """
    用戶信息,運維管理員和業務負責人 50人
    """
    name = models.CharField('姓名', max_length=32)
    email = models.EmailField('郵箱')
    phone = models.CharField('座機', max_length=32)
    mobile = models.CharField('手機', max_length=32)

    class Meta:
        verbose_name_plural = "用戶表"

    def __str__(self):
        return self.name

三、管理用戶登陸表(Admininfo)

一、解決了什麼問題日誌

一、有些用戶能夠登陸有些不能夠,因此要作一個表關聯
二、一我的只能有一個用戶名和密碼
三、能登陸在這AdminInfo這張表,不能登陸的在UserProfile表裏server

二、代碼blog

class AdminInfo(models.Model):
    """
    用戶登陸: 10
    """
    user = models.OneToOneField("UserProfile")
    username = models.CharField('用戶名', max_length=32)
    password = models.CharField('密碼', max_length=32)
	

四、服務器表

一、解決了什麼問題博客

一、這個機器在那個機房?
二、屬於哪一個部門,因此咱們要建立一個表,包含機房和部門
三、剛買回來的服務器沒有部門,部門就是運維部,
四、部門和服務器是什麼關係?
五、在小公司可能會出現服務器和業務線應該是多對多,可是有正規的有運維工程師的或者作運維自動化的公司,
 必定保證一個服務器只屬於一個業務線
六、必需要用就寫個多對多的話
 你說這臺服務器要不要有管理員?要不要有業務負責人?業務線的負責人it

二、代碼自動化

class Server(models.Model):
    """
    服務器信息
    """
    # asset = models.OneToOneField('Asset')


    idc = models.ForeignKey(IDC,null=True, blank=True)
    cabinet_num = models.CharField('機櫃號', max_length=30, null=True, blank=True)
    cabinet_order = models.CharField('機櫃中序號', max_length=30, null=True, blank=True)

    business_unit = models.ForeignKey(BusinessUnit,null=True, blank=True)
	tags = models.ManyToManyField(Tag)

五、業務線表(BusinessUnit)

一、解決了什麼問題:class

一、在公司的運維的力度不是管這臺機器,他管這個部門
二、一我的管100臺機器,一個運維負責一個或多個部門
三、因此管理員沒有必要給它寫在這,他和業務線關聯,業務線又和服務器關聯

二、代碼

class BusinessUnit(models.Model):
    """
    業務線(部門)
    """
    name = models.CharField('業務線', max_length=64, unique=True) # 銷售,1,2
	""" 若是反向查找,就有兩個ForeignKey,這種狀況必定要加related_name """
    contact = models.ForeignKey(UserGroup,related_name='c') # 業務線聯繫人:1
    manager = models.ForeignKey(UserGroup,related_name='m') # 運維管理人員:2

    class Meta:
        verbose_name_plural = "業務線表"

    def __str__(self):
        return self.name

六、用戶組表

一、待解決問題:

一、若是業務線聯繫人和運維管理人員聯繫不上怎麼辦?
二、因此咱們就設置2個,也就是備胎,因此我設置比較靈活我能夠是一個也能夠是兩個
三、因此我再建一張表,直接再也不和UserProfile關聯而是和UserGroup關聯
四、這樣咱們一我的一個組,也能夠多個組一個組

二、代碼

class UserGroup(models.Model):
    """
    用戶組
    ID   名稱
     1   組A
     2   組B
     3   組C
    用戶組和用戶關係表
    組ID    用戶ID
     1       1
     1       2
     2       2
     2       3
     3       4
    """
    name = models.CharField(max_length=32, unique=True)
    users = models.ManyToManyField('UserProfile')

    class Meta:
        verbose_name_plural = "用戶組表"

    def __str__(self):
        return self.name

七、資產標籤表

一、解決了什麼問題

一、若是服務器多的話,我能夠給它打個標籤
二、就像咱們寫博客的時候能夠打多個標籤
三、一臺服務器能夠打多個標籤?和小米作了一次技術分享,他對每一臺機器打多個標籤
四、之後查找的時候能夠經過幾個關鍵字能進行快速的查找

二、代碼

class Tag(models.Model):
    """
    資產標籤
    """
    name = models.CharField('標籤', max_length=32, unique=True)

    class Meta:
        verbose_name_plural = "標籤表"

    def __str__(self):
        return self.name	

三、錯誤日誌代碼

class ErrorLog(models.Model):
    """
    錯誤日誌,如:agent採集數據錯誤 或 運行錯誤
    """
    server_obj = models.ForeignKey('Server', null=True, blank=True)
    title = models.CharField(max_length=16)
    content = models.TextField()
    create_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        verbose_name_plural = "錯誤日誌表"

    def __str__(self):
        return self.title
相關文章
相關標籤/搜索