config_init.html 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. {% extends "layout.html" %}
  2. {% block head %}
  3. {{ super() }}
  4. <style type="text/css">
  5. label>span {
  6. color: deepskyblue;
  7. }
  8. .btn,
  9. .form-group>div>div,
  10. .form-control {
  11. border-radius: 0;
  12. }
  13. .form-horizontal > .form-group {
  14. margin: 0;
  15. }
  16. </style>
  17. {% endblock head %}
  18. {% block body %}
  19. <script>
  20. $(document).ready(function() {
  21. $('body').addClass('add-transition');
  22. $('.add-page-transition').on('click', function(){
  23. var transAttr = $(this).attr('data-transition');
  24. $('.add-transition').attr('class', 'add-transition');
  25. $('.add-transition').addClass(transAttr);
  26. });
  27. $('#storage_mode').on('changed.bs.select', function (me) {
  28. if ($('#storage_mode').val() === '2' || $('#storage_mode').val() === '3') {
  29. $('#dfs_volume_label').css('display', 'unset');
  30. $('#dfs_volume').css('display', 'unset');
  31. } else {
  32. $('#dfs_volume_label').css('display', 'none');
  33. $('#dfs_volume').css('display', 'none');
  34. }
  35. });
  36. });
  37. function create() {
  38. var data = {
  39. jimv_edition: 0,
  40. storage_mode: parseInt($('#storage_mode').val()),
  41. vm_network: $('#vm_network').val(),
  42. vm_manage_network: $('#vm_manage_network').val(),
  43. start_ip: $('#start_ip').val(),
  44. end_ip: $('#end_ip').val(),
  45. netmask: $('#netmask').val(),
  46. gateway: $('#gateway').val(),
  47. dns1: $('#dns1').val(),
  48. dns2: $('#dns2').val(),
  49. start_vnc_port: parseInt($('#start_vnc_port').val()),
  50. dfs_volume: $('#dfs_volume').val(),
  51. storage_path: $('#storage_path').val(),
  52. hdd_type: $('#hdd_type').val(),
  53. iops_base: parseInt($('#iops_base').val()),
  54. iops_pre_unit: parseInt($('#iops_pre_unit').val()),
  55. iops_cap: parseInt($('#iops_cap').val()),
  56. iops_max: parseInt($('#iops_max').val()),
  57. iops_max_length: parseInt($('#iops_max_length').val()),
  58. bps_base: parseInt($('#bps_base').val()),
  59. bps_pre_unit: parseInt($('#bps_pre_unit').val()),
  60. bps_cap: parseInt($('#bps_cap').val()),
  61. bps_max: parseInt($('#bps_max').val()),
  62. bps_max_length: parseInt($('#bps_max_length').val())
  63. };
  64. var go_back_url = '/';
  65. $.ajax({
  66. url : '/api/config',
  67. type : 'POST',
  68. contentType: "application/json; charset=utf-8",
  69. async: false,
  70. dataType: "json",
  71. data : JSON.stringify(data),
  72. error : function(data, textStatus, xhr) {
  73. alter_warning('初始化失败!');
  74. alter_danger(data.responseText);
  75. },
  76. success : function(data, textStatus, xhr) {
  77. alter_success('JimV 已被初始化。页面将在3秒钟后自动跳转到首页!!');
  78. }
  79. });
  80. setTimeout(function() {
  81. window.location.href=go_back_url;
  82. }, 3000);
  83. }
  84. function hdd_type_select(me) {
  85. var hdd_type = $(me).val();
  86. if (hdd_type === 'sas') {
  87. $('#iops_base').val('1000');
  88. $('#iops_pre_unit').val('1');
  89. $('#iops_cap').val('2000');
  90. $('#iops_max').val('3000');
  91. $('#iops_max_length').val('20');
  92. // 200 MiB
  93. $('#bps_base').val('209715200');
  94. // 0.3 MiB
  95. $('#bps_pre_unit').val('314572');
  96. // 500 MiB
  97. $('#bps_cap').val('524288000');
  98. // 1 GiB
  99. $('#bps_max').val('1073741824');
  100. $('#bps_max_length').val('10')
  101. } else if (hdd_type === 'ssd') {
  102. $('#iops_base').val('1000');
  103. $('#iops_pre_unit').val('30');
  104. $('#iops_cap').val('10000');
  105. $('#iops_max').val('20000');
  106. $('#iops_max_length').val('20');
  107. $('#bps_base').val('209715200');
  108. // 1 MiB
  109. $('#bps_pre_unit').val('1048576');
  110. $('#bps_cap').val('524288000');
  111. $('#bps_max').val('1073741824');
  112. $('#bps_max_length').val('10')
  113. } else {
  114. $('#iops_base').val('100');
  115. $('#iops_pre_unit').val('0');
  116. $('#iops_cap').val('100');
  117. $('#iops_max').val('200');
  118. $('#iops_max_length').val('20');
  119. // 30 MiB
  120. $('#bps_base').val('31457280');
  121. // 0.1 MiB
  122. $('#bps_pre_unit').val('104857');
  123. // 50 MiB
  124. $('#bps_cap').val('52428800');
  125. // 100 MiB
  126. $('#bps_max').val('104857600');
  127. $('#bps_max_length').val('10')
  128. }
  129. }
  130. </script>
  131. <div class="container" style="padding-top: 100px;">
  132. <div class="panel">
  133. <div class="panel-body">
  134. <h3 class="title-hero" style="text-transform: unset;">
  135. 初始化 JimV
  136. </h3>
  137. <div class="example-box-wrapper">
  138. <form class="form-horizontal bordered-row" action="javascript:;">
  139. <div class="form-group">
  140. <label class="col-sm-2 control-label">网桥(业务网络)</label>
  141. <div class="col-sm-3">
  142. <input title="Guest 业务网络" class="form-control" id="vm_network" name="vm_network" type="text" value="net-br0">
  143. </div>
  144. <label class="col-sm-2 control-label">网桥(管理网络)</label>
  145. <div class="col-sm-3">
  146. <input title="Guest 管理网络" class="form-control" id="vm_manage_network" name="vm_manage_network" type="text" value="net-br0">
  147. </div>
  148. </div>
  149. <div class="form-group">
  150. <label class="col-sm-2 control-label">起始 IP</label>
  151. <div class="col-sm-3">
  152. <input title="起始 IP" class="form-control" id="start_ip" name="start_ip" type="text" value="10.10.1.1">
  153. </div>
  154. <label class="col-sm-2 control-label">截止 IP</label>
  155. <div class="col-sm-3">
  156. <input title="截止 IP" class="form-control" id="end_ip" name="end_ip" type="text" value="10.10.15.253">
  157. </div>
  158. </div>
  159. <div class="form-group">
  160. <label class="col-sm-2 control-label">子网掩码</label>
  161. <div class="col-sm-3">
  162. <input title="子网掩码" class="form-control" id="netmask" name="netmask" type="text" value="255.255.240.0">
  163. </div>
  164. <label class="col-sm-2 control-label">网关</label>
  165. <div class="col-sm-3">
  166. <input title="网关" class="form-control" id="gateway" name="gateway" type="text" value="10.10.15.254">
  167. </div>
  168. </div>
  169. <div class="form-group">
  170. <label class="col-sm-2 control-label">DNS1</label>
  171. <div class="col-sm-3">
  172. <input title="DNS1" class="form-control" id="dns1" name="dns1" type="text" value="223.5.5.5">
  173. </div>
  174. <label class="col-sm-2 control-label">DNS2</label>
  175. <div class="col-sm-3">
  176. <input title="DNS2" class="form-control" id="dns2" name="dns2" type="text" value="8.8.8.8">
  177. </div>
  178. </div>
  179. <div class="form-group">
  180. <label class="col-sm-2 control-label">起始 VNC 端口</label>
  181. <div class="col-sm-3">
  182. <input title="起始 VNC 端口" class="form-control" id="start_vnc_port" name="start_vnc_port" type="text" value="15900">
  183. </div>
  184. </div>
  185. <div class="form-group">
  186. <label class="col-sm-2 control-label">虚拟机磁盘存储模式</label>
  187. <div class="col-sm-3">
  188. <select id="storage_mode" title="虚拟机磁盘存储模式" class="selectpicker" name="storage_mode" data-width="100%">
  189. <option value="0" selected>本地存储</option>
  190. <option value="1" data-subtext="NFS">挂载共享</option>
  191. <option value="2">Ceph</option>
  192. <option value="3">Glusterfs</option>
  193. </select>
  194. </div>
  195. <label id="dfs_volume_label" class="col-sm-2 control-label" style="display: none;">分布式文件系统存储卷</label>
  196. <div class="col-sm-3">
  197. <input id="dfs_volume" title="分布式文件系统存储卷" class="form-control" name="dfs_volume" type="text" style="display: none;">
  198. </div>
  199. </div>
  200. <div class="form-group">
  201. <label class="col-sm-2 control-label">虚拟机磁盘存放路径</label>
  202. <div class="col-sm-3">
  203. <input title="虚拟机磁盘存放路径" class="form-control" id="storage_path" name="storage_path" type="text" value="/opt/Images">
  204. </div>
  205. <!-- HDD for Hard Disk Drive -->
  206. <label id="hdd_type_label" class="col-sm-2 control-label">磁盘类型</label>
  207. <div class="col-sm-1">
  208. <label>STAT<input class="form-control" name="hdd_type" type="radio" value="stat" onclick="hdd_type_select(this)" /></label>
  209. </div>
  210. <div class="col-sm-1">
  211. <label>SAS<input class="form-control" name="hdd_type" type="radio" checked value="sas" onclick="hdd_type_select(this)" /></label>
  212. </div>
  213. <div class="col-sm-1">
  214. <label>SSD<input class="form-control" name="hdd_type" type="radio" value="ssd" onclick="hdd_type_select(this)" /></label>
  215. </div>
  216. <div>
  217. <input class="form-control" id="iops_base" name="iops_base" type="hidden" value="1000" />
  218. <input class="form-control" id="iops_pre_unit" name="iops_pre_unit" type="hidden" value="1" />
  219. <input class="form-control" id="iops_cap" name="iops_cap" type="hidden" value="2000" />
  220. <input class="form-control" id="iops_max" name="iops_max" type="hidden" value="3000" />
  221. <input class="form-control" id="iops_max_length" name="iops_max_length" type="hidden" value="20" />
  222. <input class="form-control" id="bps_base" name="bps_base" type="hidden" value="209715200" />
  223. <input class="form-control" id="bps_pre_unit" name="bps_pre_unit" type="hidden" value="314572" />
  224. <input class="form-control" id="bps_cap" name="bps_cap" type="hidden" value="524288000" />
  225. <input class="form-control" id="bps_max" name="bps_max" type="hidden" value="1073741824" />
  226. <input class="form-control" id="bps_max_length" name="bps_max_length" type="hidden" value="10" />
  227. </div>
  228. </div>
  229. <div class="form-group">
  230. <label class="col-sm-2 control-label"></label>
  231. <div class="col-sm-3 pull-right">
  232. <button class="btn btn-blue-alt" style="width: 180px; height: 40px; font-size: 16px;" onclick="create()">初始化</button>
  233. </div>
  234. </div>
  235. </form>
  236. </div>
  237. </div>
  238. </div>
  239. </div>
  240. {% endblock body %}