如今是云时代,公司买服务器也从传统的IDC托管到现在的各大云厂商采购 。这里,我们将以阿里云、腾讯云为例实现云服务器实例的获取。

1、首先部署django环境,然后安装django drf, 把drf注册到APPS中

INSTALLED_APPS = [
    ...
    'rest_framework',
]

2、在项目下新建一个Python Package命名为apps,settting.py配置路径, IDE把apps设置成Mark Directory as source root

import os
import sys
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))

3、在apps可以创建app了, 创建python package命名为resources,然后把resources注册到APPS中

4、在resources下新建个models.py设计数据表,这一步,可以先获取阿里云和腾讯云的实例返回结果,然后再进行设计。然后把表同步到数据库

from django.db import models


class Cloud(models.Model):
    name = models.CharField(max_length=50, verbose_name='云厂商名称', help_text='云厂商名称')
    code = models.CharField(max_length=20, verbose_name='云厂商名称', help_text='云厂商名称')

    def __str__(self):
        return self.name


class Server(models.Model):
    cloud = models.ForeignKey(Cloud, verbose_name='云厂商', help_text='云厂商')
    instanceId = models.CharField(max_length=50, db_index=True, verbose_name='实例ID', help_text='实例ID')
    instanceName = models.CharField(max_length=50, db_index=True, verbose_name='实例名', help_text='实例名')
    instanceType = models.CharField(max_length=50, verbose_name='实例类型', help_text='实例类型')
    osName = models.CharField(max_length=32, verbose_name='操作系统', help_text='操作系统')
    cpu = models.CharField(max_length=32, verbose_name='cpu核数', help_text='cpu核数')
    memory = models.CharField(max_length=32, verbose_name='内存G', help_text='内存G')
    createdTime = models.DateTimeField(verbose_name='创建时间',help_text='创建时间', null=True, blank=True)
    expiredTime = models.DateTimeField(verbose_name='到期时间', help_text='到期时间', null=True, blank=True)


class Ip(models.Model):
    ip = models.GenericIPAddressField(verbose_name='IP地址', help_text='IP地址', null=True, blank=True)
    inner = models.ForeignKey(Server, null=True, related_name='privateIpAddresses', verbose_name='内网IP', help_text='内网IP')
    public = models.ForeignKey(Server, null=True, related_name='publicIpAddresses', verbose_name='外网IP', help_text='外网IP')
models.py

相关文章: