天天看點

Django 搭建CMDB系統完整[4](主菜單、資産資料庫表)生成app-- coding: utf-8 --Create your views here.注冊app修改url設計資料庫表:機房、實體伺服器、虛拟機、網絡裝置、安全裝置、儲存設備、軟體資産、廠商設計機房表-- coding: utf-8 --同步資料庫

修改main_page主菜單

data = [{"accessPath":"","checked":false,"delFlag":0,"parentID":1,"resourceCode":"","resourceDesc":"","resourceGrade":2,"resourceID":3,"resourceName":"資産","resourceOrder":0,"resourceType":""},

{"accessPath":"house_list.html","checked":false,"delFlag":0,"parentID":3,"resourceCode":"","resourceDesc":"","resourceGrade":2,"resourceID":31,"resourceName":"機房","resourceOrder":0,"resourceType":""},

{"accessPath":"","checked":false,"delFlag":0,"parentID":3,"resourceCode":"","resourceDesc":"","resourceGrade":2,"resourceID":32,"resourceName":"實體伺服器","resourceOrder":0,"resourceType":""},

{"accessPath":"","checked":false,"delFlag":0,"parentID":3,"resourceCode":"","resourceDesc":"","resourceGrade":2,"resourceID":33,"resourceName":"虛拟機","resourceOrder":0,"resourceType":""},

{"accessPath":"","checked":false,"delFlag":0,"parentID":3,"resourceCode":"","resourceDesc":"","resourceGrade":2,"resourceID":34,"resourceName":"網絡裝置","resourceOrder":0,"resourceType":""},

{"accessPath":"","checked":false,"delFlag":0,"parentID":3,"resourceCode":"","resourceDesc":"","resourceGrade":2,"resourceID":35,"resourceName":"安全裝置","resourceOrder":0,"resourceType":""},

{"accessPath":"","checked":false,"delFlag":0,"parentID":3,"resourceCode":"","resourceDesc":"","resourceGrade":2,"resourceID":36,"resourceName":"儲存設備","resourceOrder":0,"resourceType":""},

{"accessPath":"","checked":false,"delFlag":0,"parentID":3,"resourceCode":"","resourceDesc":"","resourceGrade":2,"resourceID":37,"resourceName":"軟體資産","resourceOrder":0,"resourceType":""},

{"accessPath":"","checked":false,"delFlag":0,"parentID":3,"resourceCode":"","resourceDesc":"","resourceGrade":2,"resourceID":38,"resourceName":"廠商","resourceOrder":0,"resourceType":""}, {"accessPath":"","checked":false,"delFlag":0,"parentID":1,"resourceCode":"","resourceDesc":"","resourceGrade":2,"resourceID":4,"resourceName":"配置管理","resourceOrder":0,"resourceType":""},

{"accessPath":"","checked":false,"delFlag":0,"parentID":4,"resourceCode":"","resourceDesc":"","resourceGrade":2,"resourceID":41,"resourceName":"配置","resourceOrder":0,"resourceType":""},

{"accessPath":"","checked":false,"delFlag":0,"parentID":4,"resourceCode":"","resourceDesc":"","resourceGrade":2,"resourceID":42,"resourceName":"腳本","resourceOrder":0,"resourceType":""}];

生成app

python manage.py startapp cmdbapp

cd cmdbapp

修改cmdbapp views.py

vi views.py

-- coding: utf-8 --

from future import unicode_literals

from django.shortcuts import render,render_to_response

Create your views here.

def main_page(request):

return render_to_response('main_page.html', {'user':request.user })

注冊app

vi /dj/cmdb/settings.py

INSTALLED_APPS = [

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'cmdbapp',

]

修改url

from cmdbapp import views

設計資料庫表:機房、實體伺服器、虛拟機、網絡裝置、安全裝置、儲存設備、軟體資産、廠商

設計機房表

from django.db import models

class Machinaroom(models.Model):

id=models.AutoField(primary_key=True)

name=models.CharField(max_length=200,default=u'機房')

location=models.CharField(max_length=200,default=u'廈門')

vpnurl=models.URLField()

def __unicode__(self):
            return self.name   
           

class Server(models.Model):

"""

伺服器資訊

machinaroom= models.ForeignKey(Machinaroom)

hostname = models.CharField(max_length=128, unique=True)
    sn = models.CharField('SN号', max_length=64,null=True,blank=True)
    manufacturer = models.CharField(verbose_name='制造商', max_length=64, null=True, blank=True)
    model = models.CharField('型号', max_length=64, null=True, blank=True)

    manage_ip = models.GenericIPAddressField('管理IP', null=True, blank=True)
    other_ip = models.GenericIPAddressField('其他IP', null=True, blank=True)

    os_platform = models.CharField('系統', max_length=16, null=True, blank=True)
    os_version = models.CharField('系統版本', max_length=16, null=True, blank=True)

    cpu_count = models.IntegerField('CPU個數', null=True, blank=True)
    cpu_physical_count = models.IntegerField('CPU實體個數', null=True, blank=True)
    cpu_model = models.CharField('CPU型号', max_length=128, null=True, blank=True)

    memory_model=models.CharField('memory型号', max_length=128, null=True, blank=True)
    memory_size=models.CharField('memory大小',max_length=128, null=True, blank=True)

    status_choices = ((0, '線上'),
                  (1, '已下線'),
                  (2, '未知'),
                  (3, '故障'),
                  (4, '備用'),
                  )
    status = models.SmallIntegerField(choices=status_choices, default=0)

    id =models.AutoField(primary_key=True)
    class Meta:
            verbose_name_plural = "伺服器表"

    def __str__(self):
            return self.hostname
           

class VirtualMachina(models.Model):

"""虛拟機資訊"""

server= models.ForeignKey(Server)

hostname = models.CharField(max_length=128, unique=True)

manage_ip = models.GenericIPAddressField('管理IP', null=True, blank=True)

other_ip = models.GenericIPAddressField('其他IP', null=True, blank=True)

os_platform = models.CharField('系統', max_length=16, null=True, blank=True)

os_version = models.CharField('系統版本', max_length=16, null=True, blank=True)

cpu_memo = models.CharField('CPU資訊',max_length=128, null=True, blank=True)

memory_size=models.CharField('memory大小',max_length=128, null=True, blank=True)

disk_count=models.CharField('硬碟資訊',max_length=200, null=True, blank=True)
    status_choices = ((0, '線上'),
                  (1, '已下線'),
                  (2, '未知'),
                  (3, '故障'),
                  (4, '備用'),
                  )
    status = models.SmallIntegerField(choices=status_choices, default=0)

    id =models.AutoField(primary_key=True)

    def __str__(self):
            return self.hostname
           

class NetworkDevice(models.Model):

status_choices = ((0, '線上'),

(1, '已下線'),

(2, '未知'),

(3, '故障'),

(4, '備用'),

)

status = models.SmallIntegerField(choices=status_choices, default=0)

id =models.AutoField(primary_key=True)
    machinaroom= models.ForeignKey(Machinaroom)

    hostname = models.CharField(max_length=128, unique=True)
    port_num = models.SmallIntegerField(u'端口個數', null=True, blank=True)
    device_detail = models.TextField(u'設定詳細配置', null=True, blank=True)
    model = models.CharField(u'型号', max_length=128, null=True, blank=True)
    manage_ip = models.GenericIPAddressField('管理IP', null=True, blank=True)
    other_ip = models.GenericIPAddressField('其他IP', null=True, blank=True)

    class Meta:
            verbose_name = '網絡裝置'
            verbose_name_plural = "網絡裝置"
    def __str__(self):
            return self.hostname
           

class SecurityDevice(models.Model):

id =models.AutoField(primary_key=True)
    machinaroom= models.ForeignKey(Machinaroom)
    type=models.CharField(u'類型', max_length=128)

    hostname = models.CharField(max_length=128, unique=True)
    port_num = models.SmallIntegerField(u'端口個數', null=True, blank=True)
    device_detail = models.TextField(u'設定詳細配置', null=True, blank=True)
    model = models.CharField(u'型号', max_length=128, null=True, blank=True)
    manage_ip = models.GenericIPAddressField('管理IP', null=True, blank=True)
    other_ip = models.GenericIPAddressField('其他IP', null=True, blank=True)
    
    class Meta:
            verbose_name = '安全裝置'
            verbose_name_plural = "安全裝置"
    def __str__(self):
            return self.hostname
           

class StorageDevice(models.Model):

"""儲存設備"""

model = models.CharField(u'型号', max_length=128, null=True, blank=True)

id =models.AutoField(primary_key=True)

disk_memo=models.CharField('容量資訊',max_length=200, null=True, blank=True)

memo = models.TextField(u'備注', blank=True, null=True)

class Meta:

verbose_name = '儲存設備'

verbose_name_plural = "儲存設備"

def __str__(self):
            return self.model
           

class Software(models.Model):

sub_assset_type_choices = (

(0, 'OS'),

(1, '辦公\開發軟體'),

(2, '業務軟體'),

)
    sub_asset_type = models.SmallIntegerField(choices=sub_assset_type_choices, verbose_name="伺服器類型", default=0)
    license_num = models.IntegerField(verbose_name="授權數")
    version = models.CharField(u'軟體/系統版本', max_length=64, help_text=u'eg. CentOS release 6.5 (Final)', unique=True)

    id =models.AutoField(primary_key=True)
    def __str__(self):
            return self.version

    class Meta:
            verbose_name = '軟體/系統'
            verbose_name_plural = "軟體/系統"
           

class Manufactory(models.Model):

"""廠商"""

id =models.AutoField(primary_key=True)
    manufactory = models.CharField(u'廠商名稱', max_length=64, unique=True)
    support_num = models.CharField(u'支援電話', max_length=30, blank=True)
    memo = models.CharField(u'備注', max_length=128, blank=True)

    def __str__(self):
            return self.manufactory

    class Meta:
            verbose_name = '廠商'
            verbose_name_plural = "廠商"
           

同步資料庫

python manage.py makemigrations

python manage.py migrate

上一篇: gz解壓