James Iter 8 роки тому
батько
коміт
96e86616d7

+ 2 - 2
api/config.py

@@ -2,12 +2,12 @@
 # -*- coding: utf-8 -*-
 
 
-from flask import Blueprint, g
+from flask import Blueprint
 from flask import request
 import jimit as ji
 import json
 
-from models import Config, Disk, Guest
+from models import Config, Disk
 from models import Rules
 from models import Utils
 

+ 4 - 0
api/guest.py

@@ -4,6 +4,7 @@
 
 import copy
 from math import ceil
+from IPy import IP
 
 import requests
 import json
@@ -235,6 +236,9 @@ def r_create():
                     ssh_key_guest_mapping.ssh_key_id = ssh_key_id
                     ssh_key_guest_mapping.create()
 
+            if os_template_profile.os_distro == 'coreos':
+                config.netmask = IP(guest.ip).make_net(config.netmask).prefixlen().__str__()
+
             # 替换占位符为有效内容
             _os_template_initialize_operates = copy.deepcopy(os_template_initialize_operates)
             for k, v in enumerate(_os_template_initialize_operates):

+ 1 - 0
docs/todo.md

@@ -96,5 +96,6 @@
 - [ ] 在 About 页面,展现是否可以升级信息
 - [ ] 在 About 页面,加入更新功能
 - [ ] 大于 内存、负载 百分比后,禁止创建虚拟机
+- [ ] 考虑用 /etc/machine-id 替换 node_id
 
 

+ 18 - 2
misc/init.sql

@@ -423,6 +423,7 @@ ALTER TABLE snapshot_disk_mapping ADD INDEX (disk_uuid);
 INSERT INTO os_template_initialize_operate_set (label, description, active) VALUES ('CentOS-Systemd', '用作 Redhat Systemd 系列的系统初始化。初始化操作依据 CentOS 7 来实现。', 1);
 INSERT INTO os_template_initialize_operate_set (label, description, active) VALUES ('CentOS-SysV', '用作 Redhat SysV 系列的系统初始化。初始化操作依据 CentOS 6.8 来实现。', 1);
 INSERT INTO os_template_initialize_operate_set (label, description, active) VALUES ('Gentoo-OpenRC', '用作 Gentoo OpenRC 系列的系统初始化。', 1);
+INSERT INTO os_template_initialize_operate_set (label, description, active) VALUES ('CoreOS', '用作 CoreOS 系列的系统初始化。', 1);
 INSERT INTO os_template_initialize_operate_set (label, description, active) VALUES ('Windows', '用作 MS-Windows 系列的系统初始化。初始化操作依据 Windows 2012 来实现。', 1);
 
 -- For CentOS-Systemd
@@ -472,8 +473,21 @@ INSERT INTO os_template_initialize_operate (os_template_initialize_operate_set_i
 INSERT INTO os_template_initialize_operate (os_template_initialize_operate_set_id, kind, sequence, path, content, command) VALUES (3, 0, 4, '', '', 'mkdir -p /root/.ssh');
 INSERT INTO os_template_initialize_operate (os_template_initialize_operate_set_id, kind, sequence, path, content, command) VALUES (3, 1, 5, '/root/.ssh/authorized_keys', '{SSH-KEY}', '');
 
+-- For CoreOS
+INSERT INTO os_template_initialize_operate (os_template_initialize_operate_set_id, kind, sequence, path, content, command) VALUES (4, 1, 0, '/etc/resolv.conf', 'nameserver {DNS1}
+nameserver {DNS2}', '');
+INSERT INTO os_template_initialize_operate (os_template_initialize_operate_set_id, kind, sequence, path, content, command) VALUES (4, 1, 1, '/etc/systemd/network/00-eth0.network', '[Match]
+Name=eth0
+
+[Network]
+DNS={DNS1}
+Address={IP}/{NETMASK}
+Gateway={GATEWAY}', '');
+INSERT INTO os_template_initialize_operate (os_template_initialize_operate_set_id, kind, sequence, path, content, command) VALUES (4, 1, 2, '/etc/hostname', '{HOSTNAME}', '');
+INSERT INTO os_template_initialize_operate (os_template_initialize_operate_set_id, kind, sequence, path, content, command) VALUES (4, 1, 5, '/home/core/.ssh/authorized_keys', '{SSH-KEY}', '');
+
 -- For Windows
-INSERT INTO os_template_initialize_operate (os_template_initialize_operate_set_id, kind, sequence, path, content, command) VALUES (4, 1, 0, '/Windows/jimv_init.bat', 'netsh interface ip set address name="Ethernet" source=static {IP} {NETMASK} {GATEWAY}
+INSERT INTO os_template_initialize_operate (os_template_initialize_operate_set_id, kind, sequence, path, content, command) VALUES (5, 1, 0, '/Windows/jimv_init.bat', 'netsh interface ip set address name="Ethernet" source=static {IP} {NETMASK} {GATEWAY}
 netsh interface ip set dns "Ethernet" static {DNS1} primary
 netsh interface ip add dns "Ethernet" {DNS2}
 wmic computersystem where name="%COMPUTERNAME%" call rename name="{HOSTNAME}"
@@ -492,4 +506,6 @@ VALUES ('CentOS-6.8', 'CentOS 6.8。', 'linux', 'centos', 6, 8, 'x86_64', 'CentO
 INSERT INTO os_template_profile (label, description, os_type, os_distro, os_major, os_minor, os_arch, os_product_name, active, icon, os_template_initialize_operate_set_id)
 VALUES ('Gentoo-2.2', 'Gentoo 2.2。', 'linux', 'gentoo', 2, 2, 'x86_64', 'Gentoo Base System release 2.2', 1, 'icon-os icon-os-gentoo', 3);
 INSERT INTO os_template_profile (label, description, os_type, os_distro, os_major, os_minor, os_arch, os_product_name, active, icon, os_template_initialize_operate_set_id)
-VALUES ('Windows-2012-R2-Standard', 'Windows 2012 R2 Standard。', 'windows', 'windows', 6, 3, 'x86_64', 'Windows Server 2012 R2 Standard', 1, 'icon-os icon-os-windows', 4);
+VALUES ('CoreOS-1855.4.0', 'CoreOS 1855.4.0。', 'linux', 'coreos', 1855, 4, 'x86_64', 'CoreOS Linux release 1855.4.0', 1, 'icon-os icon-os-centos', 4);
+INSERT INTO os_template_profile (label, description, os_type, os_distro, os_major, os_minor, os_arch, os_product_name, active, icon, os_template_initialize_operate_set_id)
+VALUES ('Windows-2012-R2-Standard', 'Windows 2012 R2 Standard。', 'windows', 'windows', 6, 3, 'x86_64', 'Windows Server 2012 R2 Standard', 1, 'icon-os icon-os-windows', 5);

+ 3 - 0
static/css/icons.css

@@ -48,3 +48,6 @@
     background-position: 0 -190px;
 }
 
+.icon-os-coreos {
+    background-position: 0 -210px;
+}

BIN
static/images/icons/jimv-icons.png


+ 2 - 0
templates/os_templates_image_show.html

@@ -914,6 +914,7 @@
                                     <option value="icon-os icon-os-debian" data-icon="icon-os icon-os-debian">Debian</option>
                                     <option value="icon-os icon-os-redhat" data-icon="icon-os icon-os-redhat">Redhat</option>
                                     <option value="icon-os icon-os-bsd" data-icon="icon-os icon-os-bsd">BSD</option>
+                                    <option value="icon-os icon-os-coreos" data-icon="icon-os icon-os-coreos">CoreOS</option>
                                     <option value="icon-os icon-os-windows" data-icon="icon-os icon-os-windows">Windows</option>
                                 </select>
                             </div>
@@ -1011,6 +1012,7 @@
                                 <option value="icon-os icon-os-debian" data-icon="icon-os icon-os-debian">Debian</option>
                                 <option value="icon-os icon-os-redhat" data-icon="icon-os icon-os-redhat">Redhat</option>
                                 <option value="icon-os icon-os-bsd" data-icon="icon-os icon-os-bsd">BSD</option>
+                                <option value="icon-os icon-os-coreos" data-icon="icon-os icon-os-coreos">CoreOS</option>
                                 <option value="icon-os icon-os-windows" data-icon="icon-os icon-os-windows">Windows</option>
                             </select>
                         </div>