一、解決了什麼問題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這張表,不能登陸的在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)
一、解決了什麼問題: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