|
@@ -0,0 +1,387 @@
|
|
|
+{{include "head.html"}}
|
|
|
+<!-- 申请阿里云实例(Modal) -->
|
|
|
+<div class="modal fade" id="applyvps" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
|
|
|
+ <div class="modal-dialog">
|
|
|
+ <div class="modal-content">
|
|
|
+ <div class="modal-header">
|
|
|
+ <div class="modal-header">
|
|
|
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
|
+ <div class="edit-form">
|
|
|
+ <div class="edit-info">
|
|
|
+ <span class="glyphicon glyphicon-cloud" aria-hidden="true"></span>
|
|
|
+ <span class="info">批量申请实例</span>
|
|
|
+ </div>
|
|
|
+ <form class="form-horizontal" role="form">
|
|
|
+ <div class="form-group">
|
|
|
+ <label for="vpsname" class="col-sm-2 control-label">实例名称 :</label>
|
|
|
+ <div class="col-sm-10">
|
|
|
+ <input type="text" class="form-control" id="vpsname" placeholder="请输入实例名称">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label for="vpsimage" class="col-sm-2 control-label">镜像标识 :</label>
|
|
|
+ <div class="col-sm-10">
|
|
|
+ <input type="text" style="color: red" class="form-control" id="vpsimage" placeholder="请输入镜像标识">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label for="vpsnum" class="col-sm-2 control-label">机器数量:</label>
|
|
|
+ <div class="col-sm-10">
|
|
|
+ <input type="text" class="form-control" id="vpsnum" placeholder="请输入机器数量">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label for="vpsduration" class="col-sm-2 control-label">时长(h):</label>
|
|
|
+ <div class="col-sm-10">
|
|
|
+ <input type="text" class="form-control" id="vpsduration" placeholder="请输入申请时长">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+<!-- <div class="form-group">-->
|
|
|
+<!-- <label for="vpsuse" class="col-sm-2 control-label">服务功能:</label>-->
|
|
|
+<!-- <div class="col-sm-10">-->
|
|
|
+<!-- <select class="form-control" id="vpsuse" style="color: red">-->
|
|
|
+<!-- <option value="data">数据(801)</option>-->
|
|
|
+<!-- <option value="special">专用(803)</option>-->
|
|
|
+<!-- <option value="file">附件(805)</option>-->
|
|
|
+<!-- </select>-->
|
|
|
+<!-- </div>-->
|
|
|
+<!-- </div>-->
|
|
|
+ <div class="form-group">
|
|
|
+ <label for="vpstype" class="col-sm-2 control-label">机器型号:</label>
|
|
|
+ <div class="col-sm-10">
|
|
|
+ <select class="form-control" id="vpstype">
|
|
|
+ <option value="4">4核</option>
|
|
|
+ <option value="8">8核</option>
|
|
|
+ </select>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label for="vpspublic" class="col-sm-2 control-label">是否公网:</label>
|
|
|
+ <div class="col-sm-10">
|
|
|
+ <select class="form-control" id="vpspublic">
|
|
|
+ <option value="false">否</option>
|
|
|
+ <option value="true">是</option>
|
|
|
+ </select>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <div class="col-sm-offset-2 col-sm-10 operateStyle">
|
|
|
+ <input type="button" onclick="apply()" class="btn btn-success saveBtn" value="申请">
|
|
|
+ <input type="button" onclick="cancelAdd()" class="btn btn-default" value="取消">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </form>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div><!-- /.modal-content -->
|
|
|
+ </div><!-- /.modal -->
|
|
|
+</div>
|
|
|
+<!-- 模态框(Modal) -->
|
|
|
+<!-- 延时实例(Modal) -->
|
|
|
+<div class="modal fade" id="delayvps" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
|
|
|
+ <div class="modal-dialog">
|
|
|
+ <div class="modal-content">
|
|
|
+ <div class="modal-header">
|
|
|
+ <div class="modal-header">
|
|
|
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
|
+ <div class="edit-form">
|
|
|
+ <div class="edit-info">
|
|
|
+ <span class="glyphicon glyphicon-time" aria-hidden="true"></span>
|
|
|
+ <span class="info">延时实例</span>
|
|
|
+ </div>
|
|
|
+ <form class="form-horizontal" role="form">
|
|
|
+ <div class="form-group" id="delay">
|
|
|
+ <label for="delayid" class="col-sm-2 control-label">实例ID :</label>
|
|
|
+ <div class="col-sm-10">
|
|
|
+ <input type="text" disabled class="form-control" id="delayid" placeholder="请输入实例ID">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label for="delaytime" class="col-sm-2 control-label">延时(h) :</label>
|
|
|
+ <div class="col-sm-10">
|
|
|
+ <input type="text" style="color: red" class="form-control" id="delaytime" placeholder="请输入延时时间">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <div class="col-sm-offset-2 col-sm-10 operateStyle">
|
|
|
+ <input type="button" onclick="delay()" class="btn btn-success saveBtn" value="确认">
|
|
|
+ <input type="button" onclick="cancelAdd()" class="btn btn-default" value="取消">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </form>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div><!-- /.modal-content -->
|
|
|
+ </div><!-- /.modal -->
|
|
|
+</div>
|
|
|
+<!-- 模态框(Modal) -->
|
|
|
+<div class="content-wrapper">
|
|
|
+ <section class="content-header">
|
|
|
+ <h1>
|
|
|
+<!-- 错误爬虫列表-->
|
|
|
+ <small>
|
|
|
+ <button class="btn btn-success" onclick='applymodal()'>申请实例</button>
|
|
|
+ <button class="btn btn-success" onclick='update()'>更新实例</button>
|
|
|
+ <button class="btn btn-info" onclick='delaymodal("")'>一键延时</button>
|
|
|
+<!-- <button class="btn btn-success" onclick='delaymodal()'>延时设置</button>-->
|
|
|
+ <button class="btn btn-info" onclick='tasks()'>一键部署</button>
|
|
|
+ <button class="btn btn-danger" onclick='allrelease()'>一键释放</button>
|
|
|
+ <button class="btn btn-danger" onclick='deletevps()'>一键删除</button>
|
|
|
+ </small>
|
|
|
+ </h1>
|
|
|
+ <!--时间-->
|
|
|
+ <ol class="breadcrumb">
|
|
|
+ <li><a href="#"><i class="fa fa-dashboard"></i> 阿里实例</a></li>
|
|
|
+ <li class="active">列表</li>
|
|
|
+ </ol>
|
|
|
+ </section>
|
|
|
+ <section id="taskerrmsg" class="content hide" style="min-height:0px;">
|
|
|
+ <h5>错误信息:</h5>
|
|
|
+ </section>
|
|
|
+ <section class="content">
|
|
|
+ <div class="box">
|
|
|
+ <div id="timeTopBox">
|
|
|
+ </div>
|
|
|
+ <div class="box-body">
|
|
|
+ <table id="errdata" class="table table-bordered table-striped">
|
|
|
+ <thead>
|
|
|
+ <tr>
|
|
|
+ <th>任务名称</th>
|
|
|
+ <th>实例名称</th>
|
|
|
+ <th>实例状态</th>
|
|
|
+ <th>实例ID</th>
|
|
|
+ <th>实例IP(内网/公网)</th>
|
|
|
+ <th>释放时间</th>
|
|
|
+ <th>运行状态</th>
|
|
|
+ <th>功能</th>
|
|
|
+ <th>操作</th>
|
|
|
+ </tr>
|
|
|
+ </thead>
|
|
|
+ <tbody>
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </section>
|
|
|
+ <script>
|
|
|
+ $(function(){
|
|
|
+ common.setActive("index_vps");
|
|
|
+ vpstable = $('#errdata').DataTable({
|
|
|
+ "language": {
|
|
|
+ "url": "/js/dataTables.chinese.lang"
|
|
|
+ },
|
|
|
+ "ajax": {
|
|
|
+ "url": "/center/vps",
|
|
|
+ "type": "POST",
|
|
|
+ },
|
|
|
+ "columnDefs": [
|
|
|
+ ],
|
|
|
+ "lengthChange":false,
|
|
|
+ "serverSide": true,
|
|
|
+ "searching": false,
|
|
|
+ "ordering": false,
|
|
|
+ "info": true,
|
|
|
+ "autoWidth": true,
|
|
|
+ "processing": true,
|
|
|
+ "columns": [
|
|
|
+ {"data": "TaskName"},
|
|
|
+ {"data": "InstanceName",render:function(val,a,row){
|
|
|
+ if(val == undefined){
|
|
|
+ val = ""
|
|
|
+ }
|
|
|
+ return val;
|
|
|
+ }},
|
|
|
+ {"data": "Status",render:function(val,a,row){
|
|
|
+ if(val == undefined){
|
|
|
+ val = ""
|
|
|
+ }
|
|
|
+ return val;
|
|
|
+ }},
|
|
|
+ {"data": "InstanceId"},
|
|
|
+ {"data": "_id",render:function(val,a,row){
|
|
|
+ if(val == undefined){
|
|
|
+ val = ""
|
|
|
+ }else{
|
|
|
+ val = row.ip_nw+"/"+row.ip_ww;
|
|
|
+ }
|
|
|
+ return val;
|
|
|
+ }},
|
|
|
+ {"data": "AutoReleaseTime",render:function(val,a,row){
|
|
|
+ if(val == undefined){
|
|
|
+ val = ""
|
|
|
+ }
|
|
|
+ return val;
|
|
|
+ }},
|
|
|
+ {"data": "VpsState"},
|
|
|
+ {"data": "_id",render:function(val,a,row){
|
|
|
+ tmp = '<div>' +
|
|
|
+ '<a class="btn btn-sm btn-info" onclick="delaymodal(\''+row.InstanceId+'\')">延时</a> ' +
|
|
|
+ '<a class="btn btn-sm btn-info" onclick="retrieveTask()">部署</a>' +
|
|
|
+ '</div>';
|
|
|
+ return tmp
|
|
|
+ }},
|
|
|
+ {"data": "_id",render:function(val,a,row){
|
|
|
+ tmp = '<div>' +
|
|
|
+ '<a class="btn btn-sm btn-danger" onclick="releasevps(\''+row.InstanceId+'\')">释放</a> ' +
|
|
|
+ '<a class="btn btn-sm btn-danger" onclick="deletevps(\''+row.InstanceId+'\')">删除</a>'+
|
|
|
+ // '<a class="btn btn-sm btn-primary" onclick="checkMethod(\'' + row.s_projectid + '\',\'' + val + '\',\'' + row.s_sourceinfo + '\')">删除</a> ' +
|
|
|
+ '</div>';
|
|
|
+ return tmp
|
|
|
+ }}
|
|
|
+ ]
|
|
|
+ });
|
|
|
+ });
|
|
|
+ function delaymodal(instanceId) {
|
|
|
+ if(instanceId == ""){//一键延时
|
|
|
+ $("#delay").css("display","none");
|
|
|
+ }else{//单个实例延时
|
|
|
+ $("#delayid").val(instanceId)
|
|
|
+ $("#delay").css("display","");
|
|
|
+ }
|
|
|
+ $("#delayvps").modal("show");
|
|
|
+ }
|
|
|
+ function applymodal() {
|
|
|
+ $("#applyvps").modal("show");
|
|
|
+ }
|
|
|
+ function cancelAdd(){
|
|
|
+ $("#delayvps").modal("hide");
|
|
|
+ $("#applyvps").modal("hide");
|
|
|
+ }
|
|
|
+ //申请实例
|
|
|
+ function apply() {
|
|
|
+ let vpsname = $("#vpsname").val();
|
|
|
+ let vpsimage = $("#vpsimage").val();
|
|
|
+ let vpsnum = $("#vpsnum").val();
|
|
|
+ let vpsduration = $("#vpsduration").val();
|
|
|
+ if (vpsname == ""||vpsimage==""||vpsnum == ""||vpsduration == ""){
|
|
|
+ alert("请填写完整的信息!")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ let vpstype = $("#vpstype").val();
|
|
|
+ let vpspublic = $("#vpspublic").val();
|
|
|
+ $.ajax({
|
|
|
+ url:"/center/vps/apply",
|
|
|
+ type:"post",
|
|
|
+ data:{"vpsname":vpsname,"vpsimage":vpsimage,"vpsnum":vpsnum,"vpsduration":vpsduration,"vpstype":vpstype,"vpspublic":vpspublic},
|
|
|
+ success:function (r){
|
|
|
+ if(r&&r.ok){
|
|
|
+ showTip("申请成功", 1000);
|
|
|
+ $("#applyvps").modal("hide");
|
|
|
+ setTimeout(function (){
|
|
|
+ window.location.reload();
|
|
|
+ }, 1000);
|
|
|
+ }else{
|
|
|
+ showTip("申请失败", 1000);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ //更新实例
|
|
|
+ function update() {
|
|
|
+ showConfirm("确定更新实例?", function() {
|
|
|
+ $.ajax({
|
|
|
+ url:"/center/vps/update",
|
|
|
+ type:"post",
|
|
|
+ success:function (r){
|
|
|
+ if(r&&r.ok){
|
|
|
+ showTip("更新成功", 1000);
|
|
|
+ window.location.reload();
|
|
|
+ }else{
|
|
|
+ showTip("更新失败", 1000);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+ }
|
|
|
+ //延时
|
|
|
+ function delay() {
|
|
|
+ let delayid = $("#delayid").val();
|
|
|
+ let delaytime = $("#delaytime").val();
|
|
|
+ if (delaytime == ""){
|
|
|
+ alert("请填写完整的信息!")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ $.ajax({
|
|
|
+ url:"/center/vps/delay",
|
|
|
+ type:"post",
|
|
|
+ data:{"delaytime":delaytime,"delayid":delayid},
|
|
|
+ success:function (r){
|
|
|
+ if(r&&r.ok){
|
|
|
+ showTip("设置成功", 1000);
|
|
|
+ $("#delayvps").modal("hide");
|
|
|
+ setTimeout(function (){
|
|
|
+ window.location.reload();
|
|
|
+ }, 1000);
|
|
|
+ }else{
|
|
|
+ $("#delayvps").modal("hide");
|
|
|
+ showMsg(r.msg, function () {
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ //释放
|
|
|
+ function releasevps(instanceId) {
|
|
|
+ showConfirm("确定释放实例?", function() {
|
|
|
+ $.ajax({
|
|
|
+ url:"/center/vps/release",
|
|
|
+ type:"post",
|
|
|
+ data:{"instanceId":instanceId},
|
|
|
+ success:function (r){
|
|
|
+ if(r&&r.ok){
|
|
|
+ showTip("释放成功",1000);
|
|
|
+ setTimeout(function (){
|
|
|
+ window.location.reload();
|
|
|
+ }, 1000);
|
|
|
+ }else{
|
|
|
+ showTip("释放失败", 2000);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+ }
|
|
|
+ //一键释放
|
|
|
+ function allrelease() {
|
|
|
+ showConfirm("确定释放所有实例?", function() {
|
|
|
+ $.ajax({
|
|
|
+ url:"/center/vps/allrelease",
|
|
|
+ type:"post",
|
|
|
+ success:function (r){
|
|
|
+ if(r&&r.ok){
|
|
|
+ showTip("释放成功", 1000);
|
|
|
+ setTimeout(function (){
|
|
|
+ window.location.reload();
|
|
|
+ }, 1000);
|
|
|
+ }else{
|
|
|
+ showMsg(r.msg, function () {
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+ }
|
|
|
+ //删除
|
|
|
+ function deletevps(instanceId) {
|
|
|
+ showConfirm("确定删除实例信息?", function() {
|
|
|
+ $.ajax({
|
|
|
+ url:"/center/vps/delete",
|
|
|
+ type:"post",
|
|
|
+ data:{"instanceId":instanceId},
|
|
|
+ success:function (r){
|
|
|
+ if(r&&r.ok){
|
|
|
+ showTip("删除成功", 1000);
|
|
|
+ setTimeout(function (){
|
|
|
+ window.location.reload();
|
|
|
+ }, 1000);
|
|
|
+ }else{
|
|
|
+ showTip("删除失败", 1000);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+ }
|
|
|
+ </script>
|
|
|
+</div>
|
|
|
+{{include "bottom.html"}}
|