Toggle navigation
Toggle navigation
This project
Loading...
Sign in
ops
/
monitor-ui
·
Commits
Go to a project
GitLab
Go to group
Project
Activity
Files
Commits
Pipelines
0
Builds
0
Graphs
Milestones
Issues
0
Merge Requests
0
Members
Labels
Wiki
Forks
Network
Create a new issue
Download as
Plain Diff
Browse Files
Authored by
lingmin
8 years ago
Commit
110a406030bf43377e13ed94e4c7668aea3fa4aa
2 parents
6b81da88
5df970fc
Merge branch 'master' of
http://git.yoho.cn/ops/monitor-ui
Hide whitespace changes
Inline
Side-by-side
Showing
36 changed files
with
2921 additions
and
406 deletions
monitor-ui-common/src/main/java/com/ui/contants/HttpUriContants.java
monitor-ui-common/src/main/java/com/ui/model/domain/BuildMessage.java
monitor-ui-common/src/main/java/com/ui/model/domain/CenterSwitchModel.java
monitor-ui-common/src/main/java/com/ui/model/domain/RestartModel.java
monitor-ui-common/src/main/java/com/ui/model/req/ActionRequest.java
monitor-ui-common/src/main/java/com/ui/model/req/CompareReq.java
monitor-ui-common/src/main/java/com/ui/model/req/ProjectBuildReq.java
monitor-ui-common/src/main/resources/META-INF/spring/spring-config-common.xml
monitor-ui-ctrl/src/main/java/com/ui/ctrl/CenterSwitchCtrl.java
monitor-ui-ctrl/src/main/java/com/ui/ctrl/CompareIpsCtrl.java
monitor-ui-ctrl/src/main/java/com/ui/ctrl/JavaRestartCtrl.java
monitor-ui-ctrl/src/main/java/com/ui/ctrl/LbSwitchCtrl.java
monitor-ui-ctrl/src/main/java/com/ui/ctrl/LimitSwitchCtrl.java
monitor-ui-ctrl/src/main/java/com/ui/ctrl/LuaSwitchCtrl.java
monitor-ui-ctrl/src/main/java/com/ui/ctrl/MonitCtrl.java
monitor-ui-ctrl/src/main/java/com/ui/ctrl/NginxSwitchCtrl.java
monitor-ui-ctrl/src/main/java/com/ui/ctrl/ProjectBuildCtrl.java
monitor-ui-web/src/main/resources/config.properties
monitor-ui-web/src/main/webapp/css/monit.css
monitor-ui-web/src/main/webapp/jsp/compare/compareIps.jsp
monitor-ui-web/src/main/webapp/jsp/monit/monit.jsp
monitor-ui-web/src/main/webapp/jsp/project/history.jsp
monitor-ui-web/src/main/webapp/jsp/project/project.jsp
monitor-ui-web/src/main/webapp/jsp/project/project_build.jsp
monitor-ui-web/src/main/webapp/jsp/switch/center_switch.jsp
monitor-ui-web/src/main/webapp/jsp/switch/center_switch_exe.jsp
monitor-ui-web/src/main/webapp/jsp/switch/java_restart.jsp
monitor-ui-web/src/main/webapp/jsp/switch/java_restart_process.jsp
monitor-ui-web/src/main/webapp/jsp/switch/lbSwitch.jsp
monitor-ui-web/src/main/webapp/jsp/switch/limitSwitch.jsp
monitor-ui-web/src/main/webapp/jsp/switch/luaSwitch.jsp
monitor-ui-web/src/main/webapp/jsp/switch/nginxSwitch.jsp
monitor-ui-web/src/main/webapp/script/common/genarate_left_panel.js
monitor-ui-web/src/main/webapp/script/monit.js
monitor-ui-web/src/main/webapp/script/nginx_switch.js
monitor-ui-web/src/main/webapp/script/project.js
monitor-ui-common/src/main/java/com/ui/contants/HttpUriContants.java
View file @
110a406
...
...
@@ -62,7 +62,7 @@ public class HttpUriContants {
public
static
final
String
GET_ZK_DETAIL
=
"/zkMonitor/getZkMonitorDetail"
;
public
static
final
String
EDIT_ZK_DETAIL
=
"/zkMonitor/editZkMonitorDetail"
;
public
static
final
String
EDIT_ZK_ROOT
=
"/zkMonitor/editZkMonitorRoot"
;
/***
* redis监控信息查询
****/
...
...
@@ -85,39 +85,54 @@ public class HttpUriContants {
/**
* module
*/
public
static
final
String
GET_All_MODULE
=
"/module/getAll"
;
public
static
final
String
MODULE_INSERT
=
"/module/insert"
;
public
static
final
String
MODULE_UPDATE
=
"/module/updateLevel"
;
public
static
final
String
MODULE_GET_BYNAME
=
"/module/getAuthModuleByName"
;
public
static
final
String
GET_MODULES
=
"/module/getAuthModules"
;
public
static
final
String
GET_All_MODULE
=
"/module/getAll"
;
public
static
final
String
MODULE_INSERT
=
"/module/insert"
;
public
static
final
String
MODULE_UPDATE
=
"/module/updateLevel"
;
public
static
final
String
MODULE_GET_BYNAME
=
"/module/getAuthModuleByName"
;
public
static
final
String
GET_MODULES
=
"/module/getAuthModules"
;
public
static
final
String
MODULE_DELETE_NAME
=
"/module/deleteByName"
;
/**
* nginxswitch
*/
public
static
final
String
VIEW_NGINX_CONF
=
"/nginxswitch/viewNginxConf"
;
public
static
final
String
SWITCH_NGINX
=
"/nginxswitch/switchNginxConf"
;
public
static
final
String
VIEW_NGINX_CONF
=
"/nginxswitch/viewNginxConf"
;
public
static
final
String
VIEW_TOCHANGE_NGINX_CONF
=
"/nginxswitch/viewToChangeNginxConf"
;
public
static
final
String
SWITCH_NGINX
=
"/nginxswitch/switchNginxConf"
;
/**
* luaswitch
*/
public
static
final
String
VIEW_LUA_CONF
=
"/luaswitch/viewConf"
;
public
static
final
String
SWITCH_LUA
=
"/luaswitch/switchConf"
;
public
static
final
String
VIEW_LUA_CONF
=
"/luaswitch/viewConf"
;
public
static
final
String
VIEW_TOCHANGE_LUA_CONF
=
"/luaswitch/viewToChangeLuaConf"
;
public
static
final
String
SWITCH_LUA
=
"/luaswitch/switchConf"
;
/**
* lbswitch
*/
public
static
final
String
VIEW_LB_CONF
=
"/lbswitch/viewConf"
;
public
static
final
String
VIEW_TOCHANGE_LB_CONF
=
"/lbswitch/viewToChangeLbConf"
;
public
static
final
String
SWITCH_LB
=
"/lbswitch/switchConf"
;
/**
* limitswitch
*/
public
static
final
String
VIEW_LIMIT_CONF
=
"/limitswitch/viewConf"
;
public
static
final
String
VIEW_TOCHANGE_LIMIT_CONF
=
"/limitswitch/viewToChangeLimitConf"
;
public
static
final
String
SWITCH_LIMIT
=
"/limitswitch/switchConf"
;
/**
* dnspod
*/
public
static
final
String
VIEW_DNSPOD
=
"/dnspod/getDnsList"
;
public
static
final
String
DNS_SWITCH_BEFORE
=
"/dnspod/initSwitch"
;
public
static
final
String
SWITCH_DNS
=
"/dnspod/doSwitch"
;
public
static
final
String
VALIDE_TOKEN
=
"/dnspod/validateAPIToken"
;
public
static
final
String
VIEW_DNSPOD
=
"/dnspod/getDnsList"
;
public
static
final
String
DNS_SWITCH_BEFORE
=
"/dnspod/initSwitch"
;
public
static
final
String
SWITCH_DNS
=
"/dnspod/doSwitch"
;
public
static
final
String
VALIDE_TOKEN
=
"/dnspod/validateAPIToken"
;
/**
* dns monitor
*/
public
static
final
String
DNS_MONITOR_CURRENT
=
"/other/dns_monitor/current"
;
public
static
final
String
DNS_MONITOR_HISTORY
=
"/other/dns_monitor/history"
;
public
static
final
String
DNS_MONITOR_CURRENT
=
"/other/dns_monitor/current"
;
public
static
final
String
DNS_MONITOR_HISTORY
=
"/other/dns_monitor/history"
;
/***
...
...
@@ -150,6 +165,12 @@ public class HttpUriContants {
//java服务重启
public
static
final
String
JAVA_RESTART_GET
=
"/javaRestart/query"
;
public
static
final
String
JAVA_RESTART_STATAUS
=
"/javaRestart/getProjectStatus"
;
public
static
final
String
JAVA_STOP_RESTART
=
"/javaRestart/stopOrRestart"
;
public
static
final
String
JAVA_GET_MESSAGE
=
"/javaRestart/getMessage"
;
//双中心切换
public
static
final
String
CENTERSWITCH_GET
=
"/centerSwitch/getSwitchList"
;
public
static
final
String
CENTERSWITCH_SWITCH
=
"/centerSwitch/doExe"
;
//java监控信息
public
static
final
String
JAVA_MONITOR_GET
=
"/newJavaApiInfo/queryByServiceType"
;
...
...
monitor-ui-common/src/main/java/com/ui/model/domain/BuildMessage.java
0 → 100644
View file @
110a406
package
com
.
ui
.
model
.
domain
;
/**
* Created by zhengyouwei on 2016/6/29.
*/
public
class
BuildMessage
{
private
String
id
;
private
String
projectOrder
;
private
String
message
;
private
String
currentProject
;
public
BuildMessage
(){
}
public
BuildMessage
(
String
id
,
String
projectOrder
){
this
.
id
=
id
;
this
.
projectOrder
=
projectOrder
;
}
public
String
getId
()
{
return
id
;
}
public
void
setId
(
String
id
)
{
this
.
id
=
id
;
}
public
String
getProjectOrder
()
{
return
projectOrder
;
}
public
void
setProjectOrder
(
String
projectOrder
)
{
this
.
projectOrder
=
projectOrder
;
}
public
String
getMessage
()
{
return
message
;
}
public
void
setMessage
(
String
message
)
{
this
.
message
=
message
;
}
public
String
getCurrentProject
()
{
return
currentProject
;
}
public
void
setCurrentProject
(
String
currentProject
)
{
this
.
currentProject
=
currentProject
;
}
}
...
...
monitor-ui-common/src/main/java/com/ui/model/domain/CenterSwitchModel.java
0 → 100644
View file @
110a406
package
com
.
ui
.
model
.
domain
;
import
lombok.Data
;
/**
* Created by zhengyouwei on 2016/10/24.
*/
@Data
public
class
CenterSwitchModel
{
private
String
name
;
private
String
cName
;
private
String
exe
;
}
...
...
monitor-ui-common/src/main/java/com/ui/model/domain/RestartModel.java
0 → 100644
View file @
110a406
package
com
.
ui
.
model
.
domain
;
import
lombok.Data
;
/**
* Created by zhengyouwei on 2016/10/19.
*/
@Data
public
class
RestartModel
{
//restart,stop
private
String
exe
;
//aws qcloud mix,single
private
String
cloud
;
private
String
project
;
private
String
ip
;
private
Integer
id
;
}
...
...
monitor-ui-common/src/main/java/com/ui/model/req/ActionRequest.java
0 → 100644
View file @
110a406
package
com
.
ui
.
model
.
req
;
import
lombok.Data
;
/**
* Created by yoho on 2016/10/27.
*/
@Data
public
class
ActionRequest
{
private
String
hostId
;
private
String
service
;
private
String
action
;
}
...
...
monitor-ui-common/src/main/java/com/ui/model/req/CompareReq.java
0 → 100644
View file @
110a406
package
com
.
ui
.
model
.
req
;
import
lombok.Data
;
/**
* Created by yoho on 2016/10/21.
*/
@Data
public
class
CompareReq
{
String
service
;
String
net
;
}
...
...
monitor-ui-common/src/main/java/com/ui/model/req/ProjectBuildReq.java
View file @
110a406
...
...
@@ -12,4 +12,6 @@ public class ProjectBuildReq extends PageRequest {
private
String
environment
;
private
int
currentStatus
;
}
...
...
monitor-ui-common/src/main/resources/META-INF/spring/spring-config-common.xml
View file @
110a406
...
...
@@ -22,7 +22,7 @@
class=
"org.springframework.http.client.HttpComponentsClientHttpRequestFactory"
>
<constructor-arg
ref=
"httpClient"
/>
<property
name=
"connectTimeout"
value=
"30000"
/>
<property
name=
"readTimeout"
value=
"30000"
/>
<property
name=
"readTimeout"
value=
"30000
0
"
/>
</bean>
<bean
id=
"restTemplate"
class=
"org.springframework.web.client.RestTemplate"
>
...
...
monitor-ui-ctrl/src/main/java/com/ui/ctrl/CenterSwitchCtrl.java
0 → 100644
View file @
110a406
package
com
.
ui
.
ctrl
;
import
com.ui.contants.HttpUriContants
;
import
com.ui.http.HttpRestClient
;
import
com.ui.model.BaseResponse
;
import
com.ui.model.domain.CenterSwitchModel
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.ui.Model
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.servlet.ModelAndView
;
import
java.util.List
;
/**
* Created by zhengyouwei on 2016/10/24.
*/
@RestController
@RequestMapping
(
value
=
"/centerSwitch"
)
public
class
CenterSwitchCtrl
{
Logger
log
=
LoggerFactory
.
getLogger
(
JavaRestartCtrl
.
class
);
@Autowired
private
HttpRestClient
httpClient
;
@RequestMapping
(
"/toCenterSwitch"
)
public
ModelAndView
toCenterSwitch
(){
return
new
ModelAndView
(
"switch/center_switch"
);
}
@RequestMapping
(
"/getSwitchList"
)
@ResponseBody
public
BaseResponse
getSwitchList
(){
return
httpClient
.
defaultPost
(
HttpUriContants
.
CENTERSWITCH_GET
,
null
,
BaseResponse
.
class
);
}
@RequestMapping
(
"/todoExe"
)
public
ModelAndView
todoExe
(
String
name
,
String
toCloud
,
Model
model
){
model
.
addAttribute
(
"name"
,
name
);
model
.
addAttribute
(
"toCloud"
,
toCloud
);
return
new
ModelAndView
(
"switch/center_switch_exe"
);
}
@RequestMapping
(
"/doExe"
)
public
BaseResponse
doExe
(
CenterSwitchModel
centerSwitchModel
){
BaseResponse
baseResponse
=
httpClient
.
defaultPost
(
HttpUriContants
.
CENTERSWITCH_SWITCH
,
centerSwitchModel
,
BaseResponse
.
class
);
return
baseResponse
;
}
}
...
...
monitor-ui-ctrl/src/main/java/com/ui/ctrl/CompareIpsCtrl.java
0 → 100644
View file @
110a406
package
com
.
ui
.
ctrl
;
import
com.ui.http.HttpRestClient
;
import
com.ui.model.BaseResponse
;
import
com.ui.model.req.CompareReq
;
import
com.ui.model.req.NginxSyncTask
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.servlet.ModelAndView
;
/**
* Created by yoho on 2016/8/23.
*/
@RestController
@RequestMapping
(
value
=
"/compareIps"
)
public
class
CompareIpsCtrl
{
@Autowired
HttpRestClient
httpRestClient
;
@RequestMapping
(
"/toCompareIps"
)
public
ModelAndView
toCompareIpsView
()
{
return
new
ModelAndView
(
"compare/compareIps"
);
}
@RequestMapping
(
"/compare"
)
public
BaseResponse
pushTask
(
CompareReq
req
)
{
BaseResponse
response
=
httpRestClient
.
defaultPost
(
"/compareIps/compare"
,
req
,
BaseResponse
.
class
);
return
response
;
}
}
...
...
monitor-ui-ctrl/src/main/java/com/ui/ctrl/JavaRestartCtrl.java
View file @
110a406
...
...
@@ -3,11 +3,14 @@ package com.ui.ctrl;
import
com.ui.contants.HttpUriContants
;
import
com.ui.http.HttpRestClient
;
import
com.ui.model.BaseResponse
;
import
com.ui.model.domain.RestartModel
;
import
com.ui.model.req.PageRequest
;
import
org.apache.commons.lang.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.ui.Model
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.bind.annotation.RestController
;
...
...
@@ -29,6 +32,15 @@ public class JavaRestartCtrl {
return
new
ModelAndView
(
"/switch/java_restart"
);
}
@RequestMapping
(
"/toStopOrRestart"
)
public
ModelAndView
toStopOrRestart
(
String
project
,
String
cloud
,
String
exe
,
String
ip
,
Model
model
)
{
model
.
addAttribute
(
"project"
,
project
);
model
.
addAttribute
(
"cloud"
,
cloud
);
model
.
addAttribute
(
"exe"
,
exe
);
model
.
addAttribute
(
"ip"
,
ip
);
return
new
ModelAndView
(
"/switch/java_restart_process"
);
}
@RequestMapping
(
"/query"
)
@ResponseBody
public
BaseResponse
query
(
PageRequest
req
)
{
...
...
@@ -38,9 +50,25 @@ public class JavaRestartCtrl {
@RequestMapping
(
"/getProjectStatus"
)
@ResponseBody
public
BaseResponse
get
StatusInfo
s
(
String
project
)
{
public
BaseResponse
get
ProjectStatu
s
(
String
project
)
{
BaseResponse
rep
=
httpClient
.
defaultPost
(
HttpUriContants
.
JAVA_RESTART_STATAUS
+
"?project="
+
project
,
null
,
BaseResponse
.
class
);
return
rep
;
}
@RequestMapping
(
"/stopOrRestart"
)
@ResponseBody
public
BaseResponse
stopOrRestart
(
RestartModel
restartModel
)
{
if
(
StringUtils
.
isBlank
(
restartModel
.
getExe
())
||
StringUtils
.
isBlank
(
restartModel
.
getCloud
())
||
StringUtils
.
isBlank
(
restartModel
.
getProject
())){
return
null
;
}
BaseResponse
rep
=
httpClient
.
defaultPost
(
HttpUriContants
.
JAVA_STOP_RESTART
,
restartModel
,
BaseResponse
.
class
);
return
rep
;
}
@RequestMapping
(
"/getMessage"
)
@ResponseBody
public
BaseResponse
getMessage
(
Integer
id
)
{
BaseResponse
rep
=
httpClient
.
defaultPost
(
HttpUriContants
.
JAVA_GET_MESSAGE
+
"?id="
+
id
,
null
,
BaseResponse
.
class
);
return
rep
;
}
}
...
...
monitor-ui-ctrl/src/main/java/com/ui/ctrl/LbSwitchCtrl.java
0 → 100644
View file @
110a406
package
com
.
ui
.
ctrl
;
import
com.ui.contants.HttpUriContants
;
import
com.ui.http.HttpRestClient
;
import
com.ui.model.BaseResponse
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.core.ParameterizedTypeReference
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.servlet.ModelAndView
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* 直连开关切换
*
* @author bblu 2016-10-25
*/
@Controller
@RequestMapping
(
"lbSwitch"
)
public
class
LbSwitchCtrl
{
private
Logger
logger
=
LoggerFactory
.
getLogger
(
getClass
());
@Autowired
HttpRestClient
httpRestClient
;
/**
* 展示当前配置
*
* @return ModelAndView
*/
@RequestMapping
(
value
=
"toLbSwitch"
)
public
ModelAndView
viewNginxConf
()
{
BaseResponse
<
Map
<
String
,
Object
>>
response
=
httpRestClient
.
exchangeForget
(
HttpUriContants
.
VIEW_LB_CONF
,
new
ParameterizedTypeReference
<
BaseResponse
<
Map
<
String
,
Object
>>>()
{
},
null
);
Map
<
String
,
Object
>
data
=
response
.
getData
();
ModelAndView
mdv
=
new
ModelAndView
(
"switch/lbSwitch"
);
mdv
.
addObject
(
"conf"
,
data
.
get
(
"conf"
));
mdv
.
addObject
(
"status"
,
data
.
get
(
"status"
));
return
mdv
;
}
/**
* 展示修改后的配置文件内容
*
* @param status 状态:1-开启;2-关闭
* @return BaseResponse
*/
@RequestMapping
(
value
=
"viewToChangeLbConf"
)
@ResponseBody
public
BaseResponse
viewToChangeLbConf
(
String
status
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"status"
,
status
);
return
httpRestClient
.
defaultGet
(
HttpUriContants
.
VIEW_TOCHANGE_LB_CONF
,
BaseResponse
.
class
,
map
);
}
/**
* 修改配置,并重启nginx
*
* @return BaseResponse
*/
@RequestMapping
(
value
=
"switchConf"
)
@ResponseBody
public
BaseResponse
switchConf
()
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
return
httpRestClient
.
defaultGet
(
HttpUriContants
.
SWITCH_LB
,
BaseResponse
.
class
,
map
);
}
}
...
...
monitor-ui-ctrl/src/main/java/com/ui/ctrl/LimitSwitchCtrl.java
0 → 100644
View file @
110a406
package
com
.
ui
.
ctrl
;
import
com.ui.contants.HttpUriContants
;
import
com.ui.http.HttpRestClient
;
import
com.ui.model.BaseResponse
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.core.ParameterizedTypeReference
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.servlet.ModelAndView
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* 限流调整
*
* @author bblu 2016-10-26
*/
@Controller
@RequestMapping
(
"limitSwitch"
)
public
class
LimitSwitchCtrl
{
private
Logger
logger
=
LoggerFactory
.
getLogger
(
getClass
());
@Autowired
HttpRestClient
httpRestClient
;
/**
* 展示当前配置
*
* @return ModelAndView
*/
@RequestMapping
(
value
=
"toLimitSwitch"
)
public
ModelAndView
viewNginxConf
()
{
BaseResponse
<
Map
<
String
,
Object
>>
response
=
httpRestClient
.
exchangeForget
(
HttpUriContants
.
VIEW_LIMIT_CONF
,
new
ParameterizedTypeReference
<
BaseResponse
<
Map
<
String
,
Object
>>>()
{
},
null
);
Map
<
String
,
Object
>
data
=
response
.
getData
();
ModelAndView
mdv
=
new
ModelAndView
(
"switch/limitSwitch"
);
mdv
.
addObject
(
"open_limit_flow"
,
data
.
get
(
"open_limit_flow"
));
mdv
.
addObject
(
"limit_config"
,
data
.
get
(
"limit_config"
));
mdv
.
addObject
(
"limit_service_config"
,
data
.
get
(
"limit_service_config"
));
return
mdv
;
}
/**
* 展示修改后配置文件内容
*
* @param openLimitFlow 限流开关true/false
* @param limitConfig api接口限流配置
* @param limitServiceConfig service接口限流配置
* @return BaseResponse
*/
@RequestMapping
(
value
=
"viewToChangeLimitConf"
)
@ResponseBody
public
BaseResponse
viewToChangeLimitConf
(
String
openLimitFlow
,
String
limitConfig
,
String
limitServiceConfig
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"limitFlow"
,
openLimitFlow
);
map
.
put
(
"apiConfs"
,
limitConfig
);
map
.
put
(
"serviceConfs"
,
limitServiceConfig
);
return
httpRestClient
.
defaultPost
(
HttpUriContants
.
VIEW_TOCHANGE_LIMIT_CONF
,
map
,
BaseResponse
.
class
);
}
/**
* 修改配置,并重启nginx
*
* @return BaseResponse
*/
@RequestMapping
(
value
=
"switchConf"
)
@ResponseBody
public
BaseResponse
switchConf
()
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
return
httpRestClient
.
defaultGet
(
HttpUriContants
.
SWITCH_LIMIT
,
BaseResponse
.
class
,
map
);
}
}
...
...
monitor-ui-ctrl/src/main/java/com/ui/ctrl/LuaSwitchCtrl.java
View file @
110a406
...
...
@@ -6,18 +6,18 @@ import com.ui.model.BaseResponse;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.core.ParameterizedTypeReference
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.servlet.ModelAndView
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author zhengyouwei 2016年5月12日 下午1:49:55
* 中心入口切换
*
* @author bblu 2016-10-27
*/
@Controller
@RequestMapping
(
"luaswitch"
)
...
...
@@ -29,28 +29,41 @@ public class LuaSwitchCtrl {
HttpRestClient
httpRestClient
;
/**
*
查看nginx
配置
*
展示当前
配置
*
* @return
2016年5月12日下午1:49:48
* @return
ModelAndView
*/
@RequestMapping
(
value
=
"toLuaSwitch"
)
public
ModelAndView
viewNginxConf
()
{
String
response
=
httpRestClient
.
defaultGet
(
HttpUriContants
.
VIEW_LUA_CONF
,
String
.
class
,
null
);
String
response
=
httpRestClient
.
defaultGet
(
HttpUriContants
.
VIEW_LUA_CONF
,
String
.
class
,
null
);
ModelAndView
mdv
=
new
ModelAndView
(
"switch/luaSwitch"
);
mdv
.
addObject
(
"conf"
,
response
);
return
mdv
;
}
/**
*
修改配置
*
展示修改后配置文件内容
*
* @return 2016年5月12日下午1:49:48
* @param cloudName 目标中心名称
* @return BaseResponse
*/
@RequestMapping
(
value
=
"viewToChangeLuaConf"
)
@ResponseBody
public
BaseResponse
viewToChangeLuaConf
(
String
cloudName
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"cloudName"
,
cloudName
);
return
httpRestClient
.
defaultGet
(
HttpUriContants
.
VIEW_TOCHANGE_LUA_CONF
,
BaseResponse
.
class
,
map
);
}
/**
* 切换配置,并重启nginx
*
* @return BaseResponse
*/
@RequestMapping
(
value
=
"switchConf"
)
@ResponseBody
public
BaseResponse
switchConf
(
String
cloudName
)
{
Map
map
=
new
HashMap
<>();
map
.
put
(
"cloudName"
,
cloudName
);
public
BaseResponse
switchConf
()
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
return
httpRestClient
.
defaultGet
(
HttpUriContants
.
SWITCH_LUA
,
BaseResponse
.
class
,
map
);
}
...
...
monitor-ui-ctrl/src/main/java/com/ui/ctrl/MonitCtrl.java
0 → 100644
View file @
110a406
package
com
.
ui
.
ctrl
;
import
com.ui.http.HttpRestClient
;
import
com.ui.model.BaseResponse
;
import
com.ui.model.req.ActionRequest
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.servlet.ModelAndView
;
/**
* Created by yoho on 2016/10/27.
*/
@RestController
@RequestMapping
(
value
=
"/monit"
)
public
class
MonitCtrl
{
@Autowired
HttpRestClient
httpRestClient
;
@RequestMapping
(
"/toMonit"
)
public
ModelAndView
toNginxView
()
{
return
new
ModelAndView
(
"monit/monit"
);
}
@RequestMapping
(
"/service/all"
)
public
BaseResponse
queryAllService
()
{
BaseResponse
response
=
httpRestClient
.
defaultGet
(
"/monit/service/all"
,
BaseResponse
.
class
);
return
response
;
}
/* @RequestMapping("/hosts/action")
public BaseResponse operHostService(String request) {
BaseResponse response = httpRestClient.defaultPost("/monit/hosts/action", request, BaseResponse.class);
return response;
}*/
@RequestMapping
(
"/hosts/oneAction"
)
public
BaseResponse
operOneHostService
(
ActionRequest
request
)
{
BaseResponse
response
=
httpRestClient
.
defaultPost
(
"/monit/hosts/oneAction"
,
request
,
BaseResponse
.
class
);
return
response
;
}
@RequestMapping
(
"/hosts/delete/{monitId}"
)
public
BaseResponse
delHostService
(
@PathVariable
(
"monitId"
)
String
monitId
)
{
BaseResponse
response
=
httpRestClient
.
defaultPost
(
"/monit/hosts/delete/"
+
monitId
,
null
,
BaseResponse
.
class
);
return
response
;
}
}
...
...
monitor-ui-ctrl/src/main/java/com/ui/ctrl/NginxSwitchCtrl.java
View file @
110a406
...
...
@@ -17,7 +17,9 @@ import java.util.List;
import
java.util.Map
;
/**
* @author zhengyouwei 2016年5月12日 下午1:49:55
* nginx->gateway切换
*
* @author bblu 2016-10-27
*/
@Controller
@RequestMapping
(
"nginxswitch"
)
...
...
@@ -29,15 +31,15 @@ public class NginxSwitchCtrl {
HttpRestClient
httpRestClient
;
/**
*
查看nginx
配置
*
展示当前
配置
*
* @return
2016年5月12日下午1:49:48
* @return
ModelAndView
*/
@RequestMapping
(
value
=
"toNginxSwitch"
)
public
ModelAndView
viewNginxConf
()
{
BaseResponse
<
Map
<
String
,
List
<
Map
<
String
,
Object
>>>>
response
=
httpRestClient
.
exchangeForget
(
HttpUriContants
.
VIEW_NGINX_CONF
,
new
ParameterizedTypeReference
<
BaseResponse
<
Map
<
String
,
List
<
Map
<
String
,
Object
>>>>>()
{
BaseResponse
<
Map
<
String
,
List
<
Map
<
String
,
Object
>>>>
response
=
httpRestClient
.
exchangeForget
(
HttpUriContants
.
VIEW_NGINX_CONF
,
new
ParameterizedTypeReference
<
BaseResponse
<
Map
<
String
,
List
<
Map
<
String
,
Object
>>>>>()
{
},
null
);
Map
<
String
,
List
<
Map
<
String
,
Object
>>>
map
=
response
.
getData
();
Map
<
String
,
List
<
Map
<
String
,
Object
>>>
map
=
response
.
getData
();
ModelAndView
mdv
=
new
ModelAndView
(
"switch/nginxSwitch"
);
mdv
.
addObject
(
"awsList"
,
map
.
get
(
"awsList"
));
mdv
.
addObject
(
"qcloudList"
,
map
.
get
(
"qcloudList"
));
...
...
@@ -45,17 +47,37 @@ public class NginxSwitchCtrl {
}
/**
* 修改配置
* 修改配置
,并重启nginx
*
* @return 2016年5月12日下午1:49:48
* @param cloudName 源中心名称
* @return BaseResponse
*/
@RequestMapping
(
value
=
"switchNginxConf"
)
@ResponseBody
public
BaseResponse
switchNginxConf
(
String
cloudName
,
String
target
)
{
Map
map
=
new
HashMap
<>();
map
.
put
(
"cloudName"
,
cloudName
);
map
.
put
(
"target"
,
target
);
public
BaseResponse
switchNginxConf
(
String
cloudName
)
{
Map
<
String
,
String
>
map
=
new
HashMap
<>();
map
.
put
(
"cloudName"
,
cloudName
);
return
httpRestClient
.
defaultGet
(
HttpUriContants
.
SWITCH_NGINX
,
BaseResponse
.
class
,
map
);
}
/**
* 展示修改后配置文件内容
*
* @param cloudName 源中心名称
* @param target 目标中心名称
* @param onlineOrGray 线上/灰度切换
* @param noChangeIps 不变更配置的ip
* @return BaseResponse
*/
@RequestMapping
(
value
=
"viewToChangeNginxConf"
)
@ResponseBody
public
BaseResponse
viewToChangeNginxConf
(
String
cloudName
,
String
target
,
String
onlineOrGray
,
String
noChangeIps
)
{
Map
<
String
,
String
>
map
=
new
HashMap
<>();
map
.
put
(
"cloudName"
,
cloudName
);
map
.
put
(
"target"
,
target
);
map
.
put
(
"onlineOrGray"
,
onlineOrGray
);
map
.
put
(
"ips"
,
noChangeIps
);
return
httpRestClient
.
defaultGet
(
HttpUriContants
.
VIEW_TOCHANGE_NGINX_CONF
,
BaseResponse
.
class
,
map
);
}
}
...
...
monitor-ui-ctrl/src/main/java/com/ui/ctrl/ProjectBuildCtrl.java
View file @
110a406
...
...
@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONArray;
import
com.ui.contants.HttpUriContants
;
import
com.ui.http.HttpRestClient
;
import
com.ui.model.BaseResponse
;
import
com.ui.model.domain.BuildMessage
;
import
com.ui.model.req.*
;
import
com.ui.project.ProjectEnvironment
;
import
com.ui.project.ProjectOnline
;
...
...
@@ -16,8 +17,7 @@ import org.springframework.web.bind.annotation.*;
import
org.springframework.web.servlet.ModelAndView
;
import
javax.servlet.http.HttpSession
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.*
;
/**
* Created by fruwei on 2016/6/16.
...
...
@@ -57,7 +57,7 @@ public class ProjectBuildCtrl {
model
.
addAttribute
(
"projects"
,
ProjectOnline
.
getJavaList
());
return
new
ModelAndView
(
"project/history"
);
return
new
ModelAndView
(
"project/history"
);
}
/**
...
...
@@ -109,22 +109,80 @@ public class ProjectBuildCtrl {
}
@RequestMapping
(
value
=
"tobuildpage"
)
@ResponseBody
public
ModelAndView
tobuildpage
(
String
messageid
,
String
project
,
String
environment
,
String
operate
,
String
branch
,
String
rollbackfile
,
Model
model
)
{
model
.
addAttribute
(
"messageid"
,
messageid
);
model
.
addAttribute
(
"project"
,
project
);
model
.
addAttribute
(
"environment"
,
environment
);
model
.
addAttribute
(
"operate"
,
operate
);
model
.
addAttribute
(
"branch"
,
branch
);
model
.
addAttribute
(
"rollbackfile"
,
rollbackfile
);
return
new
ModelAndView
(
"project/single_project_build"
);
}
/**
* 执行任务
*
* @param request
* @return
*/
@RequestMapping
(
value
=
"build"
,
method
=
RequestMethod
.
POST
)
@ResponseBody
public
String
build
(
@RequestBody
BuildRequest
request
,
HttpSession
session
)
{
public
ModelAndView
build
(
String
project_name
,
String
environment_name
,
String
operate_name
,
String
branch_name
,
String
rollbackfile_name
,
Model
model
,
HttpSession
session
)
{
try
{
User
user
=
(
User
)
session
.
getAttribute
(
"user"
);
request
.
setUser
(
user
.
getName
());
return
httpRestClient
.
post
(
ProjectEnvironment
.
getUrl
(
request
.
getEnvironment
())
+
"build"
,
request
,
String
.
class
);
List
<
BuildMessage
>
list
=
new
ArrayList
<>();
BuildRequest
buildRequest
=
new
BuildRequest
();
buildRequest
.
setBranch
(
branch_name
);
buildRequest
.
setUser
(
user
.
getName
());
buildRequest
.
setEnvironment
(
environment_name
);
buildRequest
.
setRollbackfile
(
rollbackfile_name
);
buildRequest
.
setOperate
(
operate_name
);
String
messageids
=
""
;
if
(
"Deploy"
.
equals
(
operate_name
))
{
String
[]
array
=
project_name
.
split
(
","
);
if
(
array
.
length
>
4
)
{
String
[]
newArray
=
new
String
[]{
""
,
""
,
""
,
""
};
for
(
int
i
=
0
;
i
<
array
.
length
;
i
++)
{
newArray
[
i
%
4
]
=
newArray
[
i
%
4
]
+
array
[
i
]
+
","
;
}
for
(
String
project
:
newArray
)
{
buildRequest
.
setProject
(
project
.
substring
(
0
,
project
.
length
()
-
1
));
BuildMessage
buildMessage
=
httpRestClient
.
post
(
ProjectEnvironment
.
getUrl
(
environment_name
)
+
"build"
,
buildRequest
,
BuildMessage
.
class
);
if
(
buildMessage
!=
null
)
{
list
.
add
(
buildMessage
);
messageids
=
messageids
+
buildMessage
.
getId
()
+
","
;
}
}
}
else
{
for
(
String
project
:
array
)
{
buildRequest
.
setProject
(
project
);
BuildMessage
buildMessage
=
httpRestClient
.
post
(
ProjectEnvironment
.
getUrl
(
environment_name
)
+
"build"
,
buildRequest
,
BuildMessage
.
class
);
if
(
buildMessage
!=
null
)
{
list
.
add
(
buildMessage
);
messageids
=
messageids
+
buildMessage
.
getId
()
+
","
;
}
}
}
}
else
{
BuildMessage
buildMessage
=
httpRestClient
.
post
(
ProjectEnvironment
.
getUrl
(
environment_name
)
+
"build"
,
buildRequest
,
BuildMessage
.
class
);
if
(
buildMessage
!=
null
)
{
list
.
add
(
buildMessage
);
messageids
=
messageids
+
buildMessage
.
getId
()
+
","
;
}
}
model
.
addAttribute
(
"environment_name"
,
environment_name
);
model
.
addAttribute
(
"operate_name"
,
operate_name
);
model
.
addAttribute
(
"branch_name"
,
branch_name
);
model
.
addAttribute
(
"rollbackfile_name"
,
rollbackfile_name
);
model
.
addAttribute
(
"messageids"
,
messageids
);
model
.
addAttribute
(
"messageList"
,
list
);
}
catch
(
Exception
ex
)
{
return
"failed"
;
}
return
new
ModelAndView
(
"project/project_build"
);
}
/**
...
...
@@ -140,6 +198,7 @@ public class ProjectBuildCtrl {
Map
<
String
,
String
>
map
=
new
HashMap
<>();
map
.
put
(
"messageid"
,
messageid
);
map
.
put
(
"project"
,
project
);
return
httpRestClient
.
get
(
ProjectEnvironment
.
getUrl
(
messageid
.
split
(
"_"
)[
0
])
+
"getbuildmsg"
,
String
.
class
,
map
);
}
catch
(
Exception
ex
)
{
...
...
monitor-ui-web/src/main/resources/config.properties
View file @
110a406
monitor.service.url
=
http://127.0.0.1:8880/monitor
\ No newline at end of file
monitor.service.url
=
http://192.168.102.205:8880/monitor
\ No newline at end of file
...
...
monitor-ui-web/src/main/webapp/css/monit.css
0 → 100644
View file @
110a406
.blanksegmentation
{
height
:
30px
;
}
#rightpanel
{
margin
:
0
40px
;
}
.margin10px
{
margin-top
:
10px
;
}
.margin15px
{
margin-top
:
15px
;
}
.margin20px
{
margin-top
:
20px
;
}
.title-hr
{
margin
:
30px
0
;
}
.table-hr
{
margin
:
5px
64%
8px
0
;
}
...
...
monitor-ui-web/src/main/webapp/jsp/compare/compareIps.jsp
0 → 100644
View file @
110a406
<
%@ page import="org.aspectj.weaver.ast.Var" %>
<
%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<
%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/bootstrap.min.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/bootstrap-datetimepicker.css"
/>
<link
href=
"<%=basePath %>js/bootstrap-plugin/css/bootstrap.table.css"
rel=
"stylesheet"
media=
"screen"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/bootstrap-responsive.min.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/fullcalendar.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/unicorn.main.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/unicorn.grey.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/jquery-ui.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/uniform.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/select2.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>js/jstree/themes/proton/style.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/select2.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/yoho.css"
/>
<script
src=
"<%=basePath %>js/excanvas.min.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/jquery-1.12.0.min.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/jquery-ui.custom.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>/js/bootstrap.min.js"
></script>
<script
src=
"<%=basePath %>/js/unicorn.js"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/datetimepicker/moment-with-locales.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/datetimepicker/bootstrap-datetimepicker.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/global.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.pagination.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.table.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.dialog.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.form.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.panel.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.alerts.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.accordion.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.breadcrumb.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.validate.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.form.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/layer/layer.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.select.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/jstree/jstree.min.js"
></script>
<script
src=
"<%=basePath %>js/jquery.toaster.js"
></script>
<script
type=
"text/javascript"
src=
"<%=basePath %>js/echarts.simple.min.js"
></script>
<script
type=
"text/javascript"
src=
"<%=basePath %>js/echarts.min.js"
></script>
<script>
var
contextPath
=
'<%=basePath %>'
;
</script>
<title>
YOHO!运维
</title>
</head>
<body>
<!-- 头部 -->
<div
id=
"head"
>
</div>
<!-- 右侧具体内容 -->
<div
id=
"content"
>
<div
id=
"breadcrumb"
>
<a
href=
"#"
title=
"Go to Home"
class=
"tip-bottom"
><i
class=
"icon-home"
></i>
Home
</a>
<a
href=
"#"
class=
"current"
>
在线IP配置对比
</a>
</div>
<div
class=
"container-fluid"
>
<div
class=
"widget-box"
>
<div
class=
"widget-title"
>
<h5>
在线IP配置对比
</h5>
</div>
<div
class=
"container-fluid"
>
<div
class=
"row-fluid"
>
<div
class=
"col-md-6"
style=
"width: 90%"
>
<div
class=
"form-group"
>
<label
class=
"col-sm-1 control-label"
>
服务选择
</label>
<div
class=
"col-sm-8"
>
<select
id=
"serviceSelect"
style=
"display: list-item; width: 100px; height: 30px"
>
<option
value=
"1"
>
nginx
</option>
<option
value=
"2"
>
gateway
</option>
<option
value=
"3"
>
bigdata
</option>
<option
value=
"4"
>
message
</option>
<option
value=
"5"
>
order
</option>
<option
value=
"6"
>
product
</option>
<option
value=
"7"
>
promotion
</option>
<option
value=
"8"
>
resources
</option>
<option
value=
"9"
>
sns
</option>
<option
value=
"10"
>
users
</option>
<option
value=
"11"
>
push
</option>
<option
value=
"12"
>
uic
</option>
<option
value=
"13"
>
platform
</option>
</select>
</div>
</div>
</div>
<div
class=
"col-md-6"
style=
"width: 90%; margin-top: 20px"
>
<div
class=
"form-group"
>
<label
class=
"col-sm-1 control-label"
>
范围选择
</label>
<div
class=
"col-sm-8"
>
<div
class=
"rdio rdio-default"
>
<input
type=
"radio"
name=
"operate-1"
value=
"qcloud_val"
id=
"qcloud"
onclick=
"choseNet('qcloud')"
/>
<label
for=
"qcloud"
>
腾讯云
</label>
</div>
<div
class=
"rdio rdio-default"
>
<input
type=
"radio"
name=
"operate-1"
value=
"aws_val"
id=
"aws"
onclick=
"choseNet('aws')"
/>
<label
for=
"aws"
>
AWS
</label>
</div>
</div>
</div>
</div>
<div
class=
"col-md-6"
style=
"width: 90%"
>
<div
class=
"form-group"
>
<div
class=
"col-sm-8"
style=
"margin-bottom: 10px;margin-top: 10px"
>
<button
id=
"exe_btn"
class=
"btn btn-success btn-rounded"
onclick=
"btn_click()"
>
对比
</button>
</div>
</div>
<div
class=
"form-group"
style=
"margin-top: 40px"
>
<div
id=
"showIps"
class=
"col-sm-8"
></div>
</div>
</div>
<!-- col-md-6 -->
</div>
</div>
</div>
</div>
</div>
</body>
<script
src=
"<%=basePath %>script/common/genarate_left_panel.js"
></script>
<script>
$
(
"#li_config"
).
addClass
(
"active open"
);
$
(
"#li_ips_compare"
).
addClass
(
"active"
);
</script>
<script
type=
"text/javascript"
>
var
service
;
var
net
;
function
selectService
()
{
var
obj
=
document
.
getElementById
(
"serviceSelect"
);
//定位id
var
index
=
obj
.
selectedIndex
;
// 选中索引
var
text
=
obj
.
options
[
index
].
text
;
// 选中文本
service
=
text
;
}
function
choseNet
(
netName
)
{
net
=
netName
;
}
function
btn_click
()
{
selectService
();
$
.
ajax
({
url
:
getUrlBasePath
()
+
"/compareIps/compare"
,
type
:
"post"
,
dataType
:
"json"
,
data
:
{
service
:
service
,
net
:
net
},
success
:
function
(
response
)
{
showIps
(
response
.
data
.
ips
);
if
(
1
==
response
.
data
.
status
)
{
localAlert
(
"告警"
,
"存在IP配置不一致,请仔细查看比对结果!"
);
}
},
error
:
function
(
e
)
{
localAlert
(
"错误"
,
"查询比对失败,请稍后重试!"
);
}
});
}
function
showIps
(
data
)
{
var
showIpsArea
=
document
.
getElementById
(
"showIps"
);
document
.
getElementById
(
'showIps'
).
innerHTML
=
''
;
for
(
var
i
=
0
;
i
<
data
.
length
;
i
++
)
{
var
texrArea
=
$
(
"<textarea rows='30' cols='120' style='width: 20%; height: 20%;margin-left: 10%; resize: none;' readonly='readonly'>"
);
texrArea
.
text
(
data
[
i
]);
texrArea
.
appendTo
(
showIpsArea
);
}
}
</script>
</html>
...
...
monitor-ui-web/src/main/webapp/jsp/monit/monit.jsp
0 → 100644
View file @
110a406
<
%@page language="java" contentType="text/html;charset=utf-8" %>
<
%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<
%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/bootstrap.min.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/unicorn.main.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/unicorn.grey.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/jquery-ui.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/bootstrap-responsive.min.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/uniform.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/select2.css"
/>
<script
src=
"<%=basePath %>js/excanvas.min.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/jquery-1.12.0.min.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/jquery-ui.custom.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>/js/bootstrap.min.js"
></script>
<script
src=
"<%=basePath %>/js/unicorn.js"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/datetimepicker/moment-with-locales.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/datetimepicker/bootstrap-datetimepicker.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/global.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.pagination.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.table.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.dialog.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.form.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.panel.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.alerts.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.accordion.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.breadcrumb.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.validate.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.form.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/layer/layer.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.select.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/jstree/jstree.min.js"
></script>
<script
src=
"<%=basePath %>js/jquery.toaster.js"
></script>
<script
src=
"<%=basePath %>js/jquery-2.1.4.min.js"
></script>
<script
src=
"<%=basePath %>js/bootstrap.min.js"
></script>
<script
src=
"<%=basePath %>js/select2.min.js"
></script>
<script
src=
"<%=basePath %>js/custom.js"
></script>
<script>
var
contextPath
=
'<%=basePath %>'
;
</script>
<title>
YOHO!运维
</title>
</head>
<body>
<!-- 头部 -->
<div
id=
"head"
>
</div>
<!-- 右侧具体内容 -->
<div
id=
"content"
>
<div
id=
"breadcrumb"
>
<a
href=
"#"
title=
"Go to Home"
class=
"tip-bottom"
><i
class=
"icon-home"
></i>
Home
</a>
<a
href=
"#"
class=
"current"
>
Monit
</a>
</div>
<div
class=
"container-fluid"
>
<div
id=
"body_div"
>
<div
class=
"blanksegmentation"
></div>
</div>
</div>
</div>
<script
src=
"<%=basePath %>script/common/genarate_left_panel.js"
></script>
<script>
$
(
"#li_monitor"
).
addClass
(
"active open"
);
$
(
"#li_monit"
).
addClass
(
"active"
);
</script>
<script
src=
"<%=basePath %>script/monit.js"
></script>
</body>
</html>
...
...
monitor-ui-web/src/main/webapp/jsp/project/history.jsp
View file @
110a406
...
...
@@ -101,6 +101,17 @@
</c:forEach>
</select>
</div>
<div
class=
"input-group"
style=
"float: left;"
>
<span
class=
"input-group-addon"
>
状态:
</span>
<select
id=
"currentStatus"
name=
"currentStatus"
class=
"form-control"
>
<option
value=
"0"
></option>
<option
value=
"1"
>
正在进行
</option>
<option
value=
"2"
>
成功
</option>
<option
value=
"3"
>
强制退出
</option>
<option
value=
"4"
>
出错退出
</option>
</select>
</div>
<button
id=
"searchBtn"
class=
"btn btn-primary"
style=
"margin-left: 18px;"
>
搜索
</button>
</div>
</div>
...
...
@@ -153,10 +164,10 @@
width
:
"8%"
},
{
title
:
"状态"
,
field
:
"
s
tatus"
,
field
:
"
currentS
tatus"
,
formatter
:
function
(
value
,
rowData
,
rowIndex
)
{
if
(
value
==
1
){
return
'
成功
'
;
return
'
正在进行
'
;
}
else
if
(
value
==
2
){
return
'成功'
;
}
else
if
(
value
==
3
){
...
...
@@ -189,9 +200,12 @@
$
(
"#searchBtn"
).
click
(
function
()
{
var
currentProject
=
$
(
"#currentProject"
).
val
();
var
environment
=
$
(
"#environment"
).
val
();
var
currentStatus
=
$
(
"#currentStatus"
).
val
();
$
(
"#historyTable"
).
table
(
"load"
,
{
'currentProject'
:
currentProject
,
'environment'
:
environment
'environment'
:
environment
,
'currentStatus'
:
currentStatus
});
});
...
...
monitor-ui-web/src/main/webapp/jsp/project/project.jsp
View file @
110a406
...
...
@@ -73,12 +73,6 @@
<div
class=
"col-sm-8"
id=
"project-div"
>
</div>
</div>
<
%--
<div
class=
"form-group"
id=
"tag-div"
>
--%>
<
%--
<label
class=
"col-sm-1 control-label"
>
TAG输入
</label>
--%>
<
%--
<div
class=
"col-sm-8"
>
--%>
<
%--
<input
name=
"tag"
type=
"text"
placeholder=
"默认为master最新版本"
class=
"form-control"
style=
"width: 300px"
/>
--%>
<
%--
</div>
--%>
<
%--
</div>
--%>
<div
class=
"form-group"
id=
"branch-div"
>
<label
class=
"col-sm-1 control-label"
>
Branch输入
</label>
...
...
@@ -100,33 +94,12 @@
<div
class=
"col-sm-8"
>
<button
type=
"button"
id=
"submit-btn"
onclick=
"comfirmSubmit()"
class=
"btn btn-primary"
>
提交
</button>
<button
type=
"button"
id=
"cancel-btn"
onclick=
"cancelBuild()"
class=
"btn btn-danger"
>
取消
</button>
</div>
</div>
<div
class=
"form-group"
>
<label
class=
"col-sm-1 control-label"
>
操作提示
</label>
<div
class=
"col-sm-8"
>
<div
class=
"alert alert-warning"
id=
"task-info-div"
>
</div>
<div
id=
"show-project-div"
>
</div>
</div>
</div>
</form>
</div>
<!-- query panel -->
<HR
class=
"title-hr"
style=
"FILTER: alpha(opacity = 100, finishopacity = 0, style = 3)"
SIZE=
3
>
<textarea
id=
"resultArea"
rows=
"30"
cols=
"120"
style=
"background-color: black; color: white"
readonly=
"readonly"
></textarea>
</div>
<input
type=
"hidden"
id=
"messageid"
>
<input
type=
"hidden"
id=
"currentproject"
>
<!-- 初始化确认页面 -->
<div
class=
"modal fade"
id=
"confirmSubmitDivId"
tabindex=
"-1"
role=
"dialog"
aria-labelledby=
"confirmSubmitLabel"
...
...
@@ -140,8 +113,8 @@
</h2>
</div>
<div
class=
"modal-body"
>
<form
class=
"bs-example bs-example-form"
action=
"<%=path %>/createBranch.do"
role=
"form"
id=
"GitBranchCreateForm"
>
<form
class=
"bs-example bs-example-form"
action=
"<%=basePath %>project/build"
role=
"form"
id=
"GitBranchCreateForm"
method=
"post"
>
<div
class=
"input-group"
>
<span
class=
"input-group-addon"
>
操作类型
</span>
<input
type=
"text"
name=
"operate_name"
class=
"form-control"
readonly=
"readonly"
>
...
...
@@ -170,12 +143,13 @@
<span
class=
"input-group-addon"
>
回滚文件
</span>
<input
type=
"text"
name=
"rollbackfile_name"
class=
"form-control"
readonly=
"readonly"
>
</div>
<div
class=
"modal-footer"
>
<button
type=
"submit"
class=
"btn btn-primary"
>
确认
</button>
<button
type=
"button"
class=
"btn btn-default"
data-dismiss=
"modal"
>
取消
</button>
</div>
</form>
</div>
<div
class=
"modal-footer"
>
<button
type=
"button"
class=
"btn btn-primary"
onclick=
"projectbuild();"
>
确认
</button>
<button
type=
"button"
class=
"btn btn-default"
data-dismiss=
"modal"
>
取消
</button>
</div>
</div>
</div>
</div>
...
...
@@ -191,11 +165,5 @@
$
(
"#li_project"
).
addClass
(
"active open"
);
$
(
"#li_projectRelease"
).
addClass
(
"active"
);
</script>
<script
language=
"JavaScript"
>
window
.
onbeforeunload
=
function
()
{
return
"真的离开?"
;
}
</script>
</body>
</html>
...
...
monitor-ui-web/src/main/webapp/jsp/project/project_build.jsp
0 → 100644
View file @
110a406
<
%@page language="java" contentType="text/html;charset=utf-8" %>
<
%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<
%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/bootstrap.min.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/bootstrap-datetimepicker.css"
/>
<link
href=
"<%=basePath %>js/bootstrap-plugin/css/bootstrap.table.css"
rel=
"stylesheet"
media=
"screen"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/bootstrap-responsive.min.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/fullcalendar.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/unicorn.main.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/unicorn.grey.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/jquery-ui.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/uniform.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/select2.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>js/jstree/themes/proton/style.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/select2.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/yoho.css"
/>
<script
src=
"<%=basePath %>js/excanvas.min.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/jquery-1.12.0.min.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/jquery-ui.custom.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>/js/bootstrap.min.js"
></script>
<script
src=
"<%=basePath %>/js/unicorn.js"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/datetimepicker/moment-with-locales.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/datetimepicker/bootstrap-datetimepicker.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/global.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.pagination.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.table.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.dialog.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.form.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.panel.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.alerts.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.accordion.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.breadcrumb.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.validate.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.form.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/layer/layer.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.select.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/jstree/jstree.min.js"
></script>
<script
src=
"<%=basePath %>js/jquery.toaster.js"
></script>
<script>
var
contextPath
=
'<%=basePath %>'
;
</script>
<title>
YOHO!运维
</title>
</head>
<body>
<!-- 头部 -->
<div
id=
"head"
>
</div>
<!-- 右侧具体内容 -->
<div
id=
"content"
>
<div
id=
"breadcrumb"
>
<a
href=
"#"
title=
"Go to Home"
class=
"tip-bottom"
><i
class=
"icon-home"
></i>
Home
</a>
<a
href=
"#"
class=
"current"
>
发布进程
</a>
</div>
<div
class=
"container-fluid"
>
<div
class=
"widget-box"
>
<div
class=
"widget-title"
>
<h5>
发布进程信息
</h5>
</div>
<div
class=
"widget-content nopadding"
>
<div
class=
"widget-title"
style=
"height: 53px;"
>
<div>
<div
class=
"form-inline"
role=
"form"
id=
"inBoxQueryDiv"
style=
" margin-top: 12px;margin-left: 25px;float: left;"
>
<div
class=
"input-group"
style=
"float: left;"
>
<span
class=
"input-group-addon"
>
操作:
</span>
<input
type=
"text"
id=
"operate_name"
name=
"operate_name"
class=
"form-control"
readonly=
"readonly"
value=
"${operate_name}"
/>
</div>
<div
class=
"input-group"
style=
"float: left;"
>
<span
class=
"input-group-addon"
>
环境:
</span>
<input
type=
"text"
id=
"environment_name"
name=
"environment_name"
class=
"form-control"
readonly=
"readonly"
value=
"${environment_name}"
/>
</div>
<div
class=
"input-group"
style=
"float: left;"
>
<span
class=
"input-group-addon"
>
分支:
</span>
<input
type=
"text"
id=
"branch_name"
name=
"branch_name"
class=
"form-control"
readonly=
"readonly"
value=
"${branch_name}"
/>
</div>
<div
class=
"input-group"
style=
"float: left;"
>
<span
class=
"input-group-addon"
>
回滚:
</span>
<input
type=
"text"
id=
"rollbackfile_name"
name=
"rollbackfile_name"
class=
"form-control"
readonly=
"readonly"
value=
"${rollbackfile_name}"
/>
</div>
</div>
</div>
</div>
<c:forEach
items=
"${messageList }"
var=
"message"
>
<div
style=
"float: left;height: 600px;"
>
<hr>
<div>
执行顺序:
<strong>
${message.projectOrder}
</strong>
</div>
<div>
当前项目:
<input
type=
"text"
id=
"currentProject_${message.id}"
value=
"${message.currentProject}"
readonly=
"readonly"
>
<button
type=
"button"
id=
"cancel-btn_${message.id}"
onclick=
"cancelBuild('${message.id}')"
class=
"btn btn-xs btn-danger"
>
取消
</button>
</div>
<div
style=
"height: 50px"
class=
"alert alert-warning"
id=
"task-info-div_${message.id}"
>
</div>
<textarea
id=
"resultArea_${message.id}"
rows=
"25"
cols=
"100"
style=
"background-color: black; color: white"
readonly=
"readonly"
></textarea>
</div>
</c:forEach>
</div>
</div>
</div>
</div>
<input
type=
"hidden"
id=
"messageListHidden"
value=
"${messageids}"
>
</body>
<script
src=
"<%=basePath %>script/common/genarate_left_panel.js"
></script>
<script>
$
(
"#li_project"
).
addClass
(
"active open"
);
$
(
"#li_projectRelease"
).
addClass
(
"active"
);
</script>
<script>
var
myArray
;
var
removeArray
=
new
Array
();
$
(
function
()
{
var
messageListHidden
=
$
(
"#messageListHidden"
).
val
();
myArray
=
messageListHidden
.
split
(
","
);
var
interval
=
setInterval
(
function
()
{
//查后台,展示数据
$
.
each
(
myArray
,
function
(
idx
,
val
)
{
if
(
jQuery
.
inArray
(
val
,
removeArray
)
!=
-
1
){
return
;
}
if
(
val
==
""
){
return
;
}
var
cproject
=
$
(
"#currentProject_"
+
val
).
val
();
$
.
ajax
({
url
:
contextPath
+
'project/getbuildmsg?messageid='
+
val
+
"&project="
+
cproject
,
type
:
'POST'
,
dataType
:
'json'
,
success
:
function
(
data3
)
{
var
obj2
=
eval
(
"("
+
data3
+
")"
);
var
messagedata
=
obj2
.
data
;
var
currproject
=
messagedata
.
currentProject
;
if
(
currproject
!=
cproject
)
{
$
(
"#currentProject_"
+
val
).
val
(
currproject
);
//更换当前的项目
$
(
"#resultArea_"
+
val
).
val
(
""
)
}
if
(
messagedata
.
message
!=
""
)
{
var
d
=
$
(
"#resultArea_"
+
val
).
val
();
$
(
"#resultArea_"
+
val
).
val
(
d
+
messagedata
.
message
);
var
scrollTop
=
$
(
"#resultArea_"
+
val
)[
0
].
scrollHeight
;
$
(
"#resultArea_"
+
val
).
scrollTop
(
scrollTop
);
}
//code为2 ,则结束
var
code
=
obj2
.
code
;
var
message
=
obj2
.
message
;
if
(
code
==
2
)
{
document
.
getElementById
(
"task-info-div_"
+
val
).
innerHTML
=
"<strong>'"
+
message
+
"'</strong>"
;
removeArray
.
push
(
val
);
$
(
"#cancel-btn_"
+
val
).
hide
();
}
},
error
:
function
(
e
)
{
}
});
});
},
3000
);
});
/**
* 取消
*/
function
cancelBuild
(
messageid
)
{
var
jsondata
=
{
"id"
:
messageid
};
$
.
ajax
({
url
:
contextPath
+
'project/cancelBuild'
,
type
:
'POST'
,
dataType
:
'json'
,
data
:
jsondata
,
success
:
function
(
data
)
{
},
error
:
function
(
e
)
{
}
});
}
</script>
<script>
document
.
onkeydown
=
function
()
{
if
(
event
.
keyCode
==
116
||
event
.
keyCode
==
8
||
(
event
.
ctrlKey
&&
event
.
keyCode
==
82
)
||
event
.
keyCode
==
13
)
{
event
.
keyCode
=
0
;
event
.
returnValue
=
false
;
}
}
document
.
oncontextmenu
=
function
()
{
event
.
returnValue
=
false
;}
</script>
\ No newline at end of file
...
...
monitor-ui-web/src/main/webapp/jsp/switch/center_switch.jsp
0 → 100644
View file @
110a406
<
%@page language="java" contentType="text/html;charset=utf-8" %>
<
%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<
%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/bootstrap.min.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/bootstrap-datetimepicker.css"
/>
<link
href=
"<%=basePath %>js/bootstrap-plugin/css/bootstrap.table.css"
rel=
"stylesheet"
media=
"screen"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/bootstrap-responsive.min.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/fullcalendar.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/unicorn.main.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/unicorn.grey.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/jquery-ui.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/uniform.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/select2.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>js/jstree/themes/proton/style.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/select2.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/yoho.css"
/>
<script
src=
"<%=basePath %>js/excanvas.min.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/jquery-1.12.0.min.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/jquery-ui.custom.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>/js/bootstrap.min.js"
></script>
<script
src=
"<%=basePath %>/js/unicorn.js"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/datetimepicker/moment-with-locales.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/datetimepicker/bootstrap-datetimepicker.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/global.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.pagination.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.table.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.dialog.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.form.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.panel.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.alerts.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.accordion.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.breadcrumb.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.validate.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.form.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/layer/layer.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.select.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/jstree/jstree.min.js"
></script>
<script
src=
"<%=basePath %>js/jquery.toaster.js"
></script>
<script>
var
contextPath
=
'<%=basePath %>'
;
</script>
<title>
YOHO!运维
</title>
</head>
<body>
<!-- 头部 -->
<div
id=
"head"
>
</div>
<!-- 右侧具体内容 -->
<div
id=
"content"
>
<div
id=
"breadcrumb"
>
<a
href=
"#"
title=
"Go to Home"
class=
"tip-bottom"
><i
class=
"icon-home"
></i>
Home
</a>
<a
href=
"#"
class=
"current"
>
双中心切换
</a>
</div>
<div
class=
"container-fluid"
>
<div
class=
"widget-box"
>
<div
id=
"switchTable"
>
</div>
</div>
</div>
</div>
<div
class=
"modal fade"
id=
"myModal"
tabindex=
"-1"
role=
"dialog"
aria-labelledby=
"myModalLabel"
aria-hidden=
"true"
>
<div
class=
"modal-dialog"
style=
"margin-top: 5%;
margin-left: auto;
height:50.333%;
width: 60%;
overflow:scroll;
overflow-x:auto;
overflow-y:auto "
>
<div
class=
"modal-content"
>
<div
class=
"modal-header"
>
<button
type=
"button"
class=
"close"
data-dismiss=
"modal"
aria-hidden=
"true"
>
×
</button>
<h4
class=
"modal-title"
id=
"myModalLabel"
></h4>
</div>
<div
class=
"modal-body"
>
<div
id=
"check_result_div"
style=
""
>
</div>
</div>
<div
class=
"modal-footer"
>
<button
type=
"button"
class=
"btn btn-danger"
data-dismiss=
"modal"
>
关闭
</button>
</div>
</div>
<!-- /.modal-content -->
</div>
<!-- /.modal -->
</div>
<script
src=
"<%=basePath %>script/common/genarate_left_panel.js"
></script>
<script
type=
"text/javascript"
>
$
(
"#li_switch"
).
addClass
(
"active open"
);
$
(
"#li_centerswitch"
).
addClass
(
"active"
);
</script>
</body>
</html>
<script>
$
(
function
()
{
//加载表格
$
(
"#switchTable"
).
table
({
columnAutoWidth
:
false
,
url
:
contextPath
+
"centerSwitch/getSwitchList"
,
striped
:
true
,
title
:
"切换列表"
,
loadFilter
:
function
(
data
)
{
return
defaultLoadFilter
(
data
);
},
columns
:
[{
title
:
"切换项"
,
field
:
"cName"
,
width
:
"15%"
},
{
title
:
"切向QQ"
,
field
:
"name"
,
formatter
:
function
(
value
,
rowData
,
rowIndex
)
{
var
div
=
$
(
"<div>"
);
$
(
"<button onclick=\"doExe(\'"
+
value
+
"\',\'beforeCheck\')\">"
).
addClass
(
"btn btn-xs btn-success"
).
html
(
"前检测"
).
appendTo
(
div
);
div
.
append
(
" "
);
$
(
"<button onclick=\"toDoExe(\'"
+
value
+
"\',\'toQcloud\')\">"
).
addClass
(
"btn btn-primary"
).
html
(
"切换"
).
appendTo
(
div
);
div
.
append
(
" "
);
$
(
"<button onclick=\"doExe(\'"
+
value
+
"\',\'afterCheck\')\">"
).
addClass
(
"btn btn-xs btn-success"
).
html
(
"后检测"
).
appendTo
(
div
);
return
div
;
},
width
:
"35%"
},{
title
:
"切回AWS"
,
field
:
"name"
,
formatter
:
function
(
value
,
rowData
,
rowIndex
)
{
var
div
=
$
(
"<div>"
);
$
(
"<button onclick=\"doExe(\'"
+
value
+
"\',\'afterCheck\')\">"
).
addClass
(
"btn btn-xs btn-success"
).
html
(
"前检测"
).
appendTo
(
div
);
div
.
append
(
" "
);
$
(
"<button onclick=\"toDoExe(\'"
+
value
+
"\',\'toAws\')\">"
).
addClass
(
"btn btn-primary"
).
html
(
"切换"
).
appendTo
(
div
);
div
.
append
(
" "
);
$
(
"<button onclick=\"doExe(\'"
+
value
+
"\',\'beforeCheck\')\">"
).
addClass
(
"btn btn-xs btn-success"
).
html
(
"后检测"
).
appendTo
(
div
);
return
div
;
},
width
:
"35%"
},{
title
:
"状态查看"
,
field
:
"name"
,
formatter
:
function
(
value
,
rowData
,
rowIndex
)
{
var
div
=
$
(
"<div>"
);
$
(
"<button onclick=\"doExe(\'"
+
value
+
"\',\'status\')\">"
).
addClass
(
"btn btn-primary"
).
html
(
"当前状态"
).
appendTo
(
div
);
return
div
;
},
width
:
"35%"
}]
});
});
//执行切换
function
toDoExe
(
name
,
toCloud
)
{
var
dialog
=
$
(
"<div>"
).
appendTo
(
$
(
"body"
));
dialog
.
dialog
({
title
:
"切换确定"
,
backdrop
:
"static"
,
content
:
"name:"
+
name
+
" exe:"
+
toCloud
,
buttons
:
[{
text
:
"否"
,
className
:
"btn-danger"
,
onclick
:
function
()
{
$
(
dialog
).
dialog
(
"hide"
);
}
},
{
text
:
"是"
,
className
:
"btn-success"
,
onclick
:
function
()
{
$
(
dialog
).
dialog
(
"hide"
);
doExe
(
name
,
toCloud
);
}
}]
});
}
//执行切换
function
doExe
(
name
,
exe
)
{
var
jq
=
$
(
"#switchTable"
);
$
.
ajax
({
type
:
'post'
,
url
:
contextPath
+
"/centerSwitch/doExe"
,
data
:{
'name'
:
name
,
'exe'
:
exe
},
dataType
:
'json'
,
beforeSend
:
function
(){
var
div
=
$
(
"<div>"
).
attr
(
"tableSelector"
,
jq
.
selector
).
addClass
(
"modal-backdrop fade in"
).
appendTo
(
$
(
"body"
)).
hide
();
var
tableOffset
=
jq
.
offset
();
var
tableWidth
=
jq
.
outerWidth
(
true
),
tableHeight
=
jq
.
outerHeight
(
true
);
div
.
append
(
$
(
"<div>"
).
addClass
(
"table-loading"
).
css
({
left
:
(
tableWidth
-
124
)
/
2
,
top
:
(
tableHeight
-
124
)
/
2
}));
div
.
css
({
width
:
tableWidth
,
height
:
tableHeight
,
left
:
tableOffset
.
left
,
top
:
tableOffset
.
top
});
div
.
show
();
},
success
:
function
(
resp
)
{
$
(
"body"
).
find
(
"div[tableSelector='"
+
jq
.
selector
+
"']"
).
remove
();
$
(
"#check_result_div"
).
html
(
resp
.
data
);
$
(
"#myModalLabel"
).
text
(
"name:"
+
name
+
" exe:"
+
exe
);
$
(
"#myModal"
).
modal
(
'show'
);
},
error
:
function
()
{
$
(
"body"
).
find
(
"div[tableSelector='"
+
jq
.
selector
+
"']"
).
remove
();
}
});
}
</script>
\ No newline at end of file
...
...
monitor-ui-web/src/main/webapp/jsp/switch/center_switch_exe.jsp
0 → 100644
View file @
110a406
<
%@page language="java" contentType="text/html;charset=utf-8" %>
<
%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<
%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/bootstrap.min.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/bootstrap-datetimepicker.css"
/>
<link
href=
"<%=basePath %>js/bootstrap-plugin/css/bootstrap.table.css"
rel=
"stylesheet"
media=
"screen"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/bootstrap-responsive.min.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/fullcalendar.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/unicorn.main.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/unicorn.grey.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/jquery-ui.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/uniform.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/select2.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>js/jstree/themes/proton/style.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/select2.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/yoho.css"
/>
<script
src=
"<%=basePath %>js/excanvas.min.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/jquery-1.12.0.min.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/jquery-ui.custom.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>/js/bootstrap.min.js"
></script>
<script
src=
"<%=basePath %>/js/unicorn.js"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/datetimepicker/moment-with-locales.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/datetimepicker/bootstrap-datetimepicker.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/global.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.pagination.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.table.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.dialog.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.form.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.panel.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.alerts.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.accordion.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.breadcrumb.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.validate.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.form.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/layer/layer.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.select.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/jstree/jstree.min.js"
></script>
<script
src=
"<%=basePath %>js/jquery.toaster.js"
></script>
<script>
var
contextPath
=
'<%=basePath %>'
;
</script>
<title>
YOHO!运维
</title>
</head>
<body>
<!-- 头部 -->
<div
id=
"head"
>
</div>
<!-- 右侧具体内容 -->
<div
id=
"content"
>
<div
id=
"breadcrumb"
>
<a
href=
"#"
title=
"Go to Home"
class=
"tip-bottom"
><i
class=
"icon-home"
></i>
Home
</a>
<a
href=
"#"
class=
"current"
>
双中心切换
</a>
</div>
<div
class=
"container-fluid"
>
<div
class=
"widget-box"
>
<div
id=
"switchTable"
>
<textarea
id=
"resultArea"
rows=
"25"
style=
"background-color: black; color: white;width: 100%"
readonly=
"readonly"
>
${message}
</textarea>
</div>
</div>
</div>
</div>
<input
type=
"hidden"
id=
"name"
value=
"${name}"
>
<input
type=
"hidden"
id=
"toCloud"
value=
"${toCloud}"
>
</div>
<script
src=
"<%=basePath %>script/common/genarate_left_panel.js"
></script>
<script
type=
"text/javascript"
>
$
(
"#li_switch"
).
addClass
(
"active open"
);
$
(
"#li_centerswitch"
).
addClass
(
"active"
);
</script>
</body>
</html>
<script>
$
(
function
()
{
var
name
=
$
(
"#name"
).
val
();
var
toCloud
=
$
(
"#toCloud"
).
val
();
var
jq
=
$
(
"#switchTable"
);
$
.
ajax
({
type
:
'post'
,
url
:
contextPath
+
"/centerSwitch/doExe"
,
data
:{
'name'
:
name
,
'exe'
:
toCloud
},
dataType
:
'json'
,
beforeSend
:
function
(){
var
div
=
$
(
"<div>"
).
attr
(
"tableSelector"
,
jq
.
selector
).
addClass
(
"modal-backdrop fade in"
).
appendTo
(
$
(
"body"
)).
hide
();
var
tableOffset
=
jq
.
offset
();
var
tableWidth
=
jq
.
outerWidth
(
true
),
tableHeight
=
jq
.
outerHeight
(
true
);
div
.
append
(
$
(
"<div>"
).
addClass
(
"table-loading"
).
css
({
left
:
(
tableWidth
-
124
)
/
2
,
top
:
(
tableHeight
-
124
)
/
2
}));
div
.
css
({
width
:
tableWidth
,
height
:
tableHeight
,
left
:
tableOffset
.
left
,
top
:
tableOffset
.
top
});
div
.
show
();
},
success
:
function
(
resp
)
{
$
(
"body"
).
find
(
"div[tableSelector='"
+
jq
.
selector
+
"']"
).
remove
();
$
(
"#resultArea"
).
val
(
resp
.
data
);
},
error
:
function
(
resp
)
{
}
});
});
document
.
onkeydown
=
function
()
{
if
(
event
.
keyCode
==
116
||
event
.
keyCode
==
8
||
(
event
.
ctrlKey
&&
event
.
keyCode
==
82
)
||
event
.
keyCode
==
13
)
{
event
.
keyCode
=
0
;
event
.
returnValue
=
false
;
}
}
document
.
oncontextmenu
=
function
()
{
event
.
returnValue
=
false
;}
</script>
\ No newline at end of file
...
...
monitor-ui-web/src/main/webapp/jsp/switch/java_restart.jsp
View file @
110a406
...
...
@@ -58,7 +58,6 @@
<script
src=
"<%=basePath %>js/jquery.toaster.js"
></script>
<script>
var
contextPath
=
'<%=basePath %>'
;
var
api_type
=
"<%=api_type %>"
;
</script>
<title>
YOHO!运维
</title>
</head>
...
...
@@ -86,17 +85,17 @@
<div>
<button
id=
"awsRestart"
class=
"btn btn-primary"
style=
"margin-top: 12px;margin-left: 100px;"
onclick=
"restart('all','aws')"
>
onclick=
"restart('all','aws'
,''
)"
>
aws重启
</button>
<button
id=
"qcloudRestart"
class=
"btn btn-primary"
style=
"margin-top: 12px;margin-left: 100px;"
onclick=
"restart('all','qcloud')"
>
onclick=
"restart('all','qcloud'
,''
)"
>
qq重启
</button>
<button
id=
"allRestart"
class=
"btn btn-primary"
style=
"margin-top: 12px;margin-left: 100px;"
onclick=
"restart('all','mix')"
>
onclick=
"restart('all','mix'
,''
)"
>
所有重启
</button>
</div>
...
...
@@ -108,6 +107,7 @@
</div>
</div>
</div>
</body>
<script
src=
"<%=basePath %>script/common/genarate_left_panel.js"
></script>
<script>
...
...
@@ -158,11 +158,16 @@
field
:
"op"
,
formatter
:
function
(
value
,
rowData
,
rowIndex
)
{
var
div
=
$
(
"<div>"
);
$
(
"<button onclick=\"restart(\'"
+
rowData
.
name
+
"\',\'aws\')\">"
).
addClass
(
"btn btn-xs btn-primary"
).
html
(
"aws重启"
).
appendTo
(
div
);
$
(
"<button onclick=\"restart(\'"
+
rowData
.
name
+
"\',\'aws\',\'\')\">"
).
addClass
(
"btn btn-xs btn-primary"
).
html
(
"aws重启"
).
appendTo
(
div
);
div
.
append
(
" "
);
$
(
"<button onclick=\"restart(\'"
+
rowData
.
name
+
"\',\'qcloud\',\'\')\">"
).
addClass
(
"btn btn-xs btn-primary"
).
html
(
"qq重启"
).
appendTo
(
div
);
div
.
append
(
" "
);
$
(
"<button onclick=\"restart(\'"
+
rowData
.
name
+
"\',\'qcloud\')\">"
).
addClass
(
"btn btn-xs btn-primary"
).
html
(
"qq重启"
).
appendTo
(
div
);
$
(
"<button onclick=\"restart(\'"
+
rowData
.
name
+
"\',\'mix\',\'\')\">"
).
addClass
(
"btn btn-xs btn-primary"
).
html
(
"全部重启"
).
appendTo
(
div
);
div
.
append
(
"</br>"
);
div
.
append
(
"</br>"
);
$
(
"<button onclick=\"stop(\'"
+
rowData
.
name
+
"\',\'aws\',\'\')\">"
).
addClass
(
"btn btn-xs btn-primary"
).
html
(
"aws停止"
).
appendTo
(
div
);
div
.
append
(
" "
);
$
(
"<button onclick=\"
restart(\'"
+
rowData
.
name
+
"\',\'mix\')\">"
).
addClass
(
"btn btn-xs btn-primary"
).
html
(
"全部重启
"
).
appendTo
(
div
);
$
(
"<button onclick=\"
stop(\'"
+
rowData
.
name
+
"\',\'qcloud\',\'\')\">"
).
addClass
(
"btn btn-xs btn-primary"
).
html
(
"qq停止
"
).
appendTo
(
div
);
return
div
;
},
width
:
"20%"
...
...
@@ -200,21 +205,27 @@
span
.
attr
(
"data-toggle"
,
"popover"
);
span
.
attr
(
"data-placement"
,
"bottom"
);
span
.
attr
(
"data-html"
,
"true"
);
span
.
attr
(
"data-content"
,
val
.
lastStart
);
if
(
val
.
status
==
"1"
){
span
.
attr
(
"title"
,
val
.
lastStart
);
span
.
attr
(
"data-content"
,
"<button class='btn btn-primary btn-xs' onclick=\"restart(\'"
+
name
+
"\',\'single\',\'"
+
val
.
ip
+
"\')\">重启</button> <button class='btn btn-primary btn-xs' onclick=\"stop(\'"
+
name
+
"\',\'single\',\'"
+
val
.
ip
+
"\')\">停止</button>"
);
// span.attr("data-content", "unkown");
span
.
popover
({
//delay: {"show": 500, "hide": 100}
// container: 'tip_well'
});
// span.attr("onclick","singleOp('"+val.ip+"','"+name+"')");
if
(
val
.
status
==
"1"
)
{
span
.
addClass
(
'btn-success'
);
}
else
{
}
else
{
span
.
addClass
(
'btn-danger'
);
}
if
(
val
.
cloud
==
"aws"
)
{
if
(
val
.
cloud
==
"aws"
)
{
aws_div
.
append
(
span
);
}
else
{
}
else
{
qcloud_div
.
append
(
span
);
}
span
.
popover
({
delay
:
{
"show"
:
500
,
"hide"
:
100
}
// container: 'tip_well'
});
});
$
(
"#aws_"
+
name
).
html
(
""
);
...
...
@@ -229,9 +240,60 @@
});
}
function
restart
(
project
,
cloud
,
ip
)
{
var
dialog
=
$
(
"<div>"
).
appendTo
(
$
(
"body"
));
dialog
.
dialog
({
title
:
"重启确定"
,
backdrop
:
"static"
,
content
:
"服务:"
+
project
+
",云:"
+
cloud
+
",ip:"
+
ip
+
""
,
buttons
:
[{
text
:
"否"
,
className
:
"btn-danger"
,
onclick
:
function
()
{
$
(
dialog
).
dialog
(
"hide"
);
}
},
{
text
:
"是"
,
className
:
"btn-success"
,
onclick
:
function
()
{
function
restart
(
project
,
cloud
)
{
var
iWidth
=
900
;
var
iHeight
=
700
;
var
iTop
=
(
window
.
screen
.
availHeight
-
30
-
iHeight
)
/
2
;
//获得窗口的垂直位置;
var
iLeft
=
(
window
.
screen
.
availWidth
-
10
-
iWidth
)
/
2
;
//获得窗口的水平位置;
window
.
open
(
contextPath
+
"javaRestart/toStopOrRestart?project="
+
project
+
"&cloud="
+
cloud
+
"&exe=restart"
+
"&ip="
+
ip
,
"_blank"
,
"height="
+
iHeight
+
", width="
+
iWidth
+
", top="
+
iTop
+
", left="
+
iLeft
);
$
(
dialog
).
dialog
(
"hide"
);
}
}]
});
}
function
stop
(
project
,
cloud
,
ip
)
{
var
dialog
=
$
(
"<div>"
).
appendTo
(
$
(
"body"
));
dialog
.
dialog
({
title
:
"停机确定"
,
backdrop
:
"static"
,
content
:
"服务:"
+
project
+
",云:"
+
cloud
+
",ip:"
+
ip
+
""
,
buttons
:
[{
text
:
"否"
,
className
:
"btn-danger"
,
onclick
:
function
()
{
$
(
dialog
).
dialog
(
"hide"
);
}
},
{
text
:
"是"
,
className
:
"btn-success"
,
onclick
:
function
()
{
var
iWidth
=
1200
;
var
iHeight
=
900
;
var
iTop
=
(
window
.
screen
.
availHeight
-
30
-
iHeight
)
/
2
;
//获得窗口的垂直位置;
var
iLeft
=
(
window
.
screen
.
availWidth
-
10
-
iWidth
)
/
2
;
//获得窗口的水平位置;
window
.
open
(
contextPath
+
"javaRestart/toStopOrRestart?project="
+
project
+
"&cloud="
+
cloud
+
"&exe=stop"
+
"&ip="
+
ip
,
"_blank"
,
"height="
+
iHeight
+
", width="
+
iWidth
+
", top="
+
iTop
+
", left="
+
iLeft
);
$
(
dialog
).
dialog
(
"hide"
);
}
}]
});
}
</script>
\ No newline at end of file
...
...
monitor-ui-web/src/main/webapp/jsp/switch/java_restart_process.jsp
0 → 100644
View file @
110a406
<
%@page language="java" contentType="text/html;charset=utf-8" %>
<
%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<
%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/bootstrap.min.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/bootstrap-responsive.min.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/jquery.gritter.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/jquery-ui.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/unicorn.main.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/unicorn.grey.css"
class=
"skin-color"
/>
<script
src=
"<%=basePath %>js/excanvas.min.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/jquery-1.12.0.min.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/jquery-ui.custom.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>/js/bootstrap.min.js"
></script>
<script
src=
"<%=basePath %>/js/unicorn.js"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/datetimepicker/moment-with-locales.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/datetimepicker/bootstrap-datetimepicker.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/global.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.pagination.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.table.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.dialog.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.form.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.panel.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.alerts.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.accordion.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.breadcrumb.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.validate.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.form.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/layer/layer.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.select.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/jstree/jstree.min.js"
></script>
<script
src=
"<%=basePath %>js/jquery.toaster.js"
></script>
<script
src=
"<%=basePath %>js/jquery.gritter.min.js"
></script>
<script>
var
contextPath
=
'<%=basePath %>'
;
</script>
<title>
YOHO!运维
</title>
</head>
<body>
<!-- 右侧具体内容 -->
<input
type=
"hidden"
id=
"hidden_ip"
value=
"${ip}"
>
<input
type=
"hidden"
id=
"hidden_project"
value=
"${project}"
>
<input
type=
"hidden"
id=
"hidden_exe"
value=
"${exe}"
>
<input
type=
"hidden"
id=
"hidden_cloud"
value=
"${cloud}"
>
<div
id=
"infoTable"
>
</div>
</body>
<script>
var
myArray
=
new
Array
();
var
removeArray
=
new
Array
();
$
(
function
()
{
var
ip
=
$
(
"#hidden_ip"
).
val
();
var
cloud
=
$
(
"#hidden_cloud"
).
val
();
var
exe
=
$
(
"#hidden_exe"
).
val
();
var
project
=
$
(
"#hidden_project"
).
val
();
var
tableParam
=
{
columnAutoWidth
:
false
,
url
:
contextPath
+
"/javaRestart/stopOrRestart"
,
striped
:
true
,
title
:
"java服务操作进程"
,
dataType
:
"json"
,
loadFilter
:
function
(
data
)
{
return
defaultLoadFilter
(
data
);
},
onLoadSuccess
:
function
(
data
)
{
$
.
each
(
data
,
function
(
idx
,
val
)
{
myArray
[
idx
]
=
val
.
id
;
});
setStatus
();
},
columns
:
[{
title
:
"项目名称"
,
field
:
"project"
,
width
:
"10%"
},
{
title
:
"操作"
,
field
:
"exe"
,
width
:
"10%"
},
{
title
:
"云"
,
field
:
"cloud"
,
width
:
"10%"
},
{
title
:
"已执行IP"
,
field
:
"id"
,
formatter
:
function
(
value
,
rowData
,
rowIndex
)
{
var
div
=
$
(
"<div >"
).
attr
(
'id'
,
'done_'
+
value
);
return
div
;
},
width
:
"25%"
},
{
title
:
"待执行IP"
,
field
:
"id"
,
formatter
:
function
(
value
,
rowData
,
rowIndex
)
{
var
div
=
$
(
"<div >"
).
attr
(
'id'
,
'todo_'
+
value
);
return
div
;
},
width
:
"25%"
},
{
title
:
"进度"
,
field
:
"id"
,
formatter
:
function
(
value
,
rowData
,
rowIndex
)
{
var
div
=
$
(
"<div id=\"process_"
+
value
+
"\">"
);
return
div
;
},
width
:
"20%"
}]
};
//加载表格
$
(
"#infoTable"
).
table
(
tableParam
);
$
(
"#infoTable"
).
table
(
"load"
,
{
'ip'
:
ip
,
'cloud'
:
cloud
,
'exe'
:
exe
,
'project'
:
project
});
var
interval
=
setInterval
(
function
()
{
//查后台,展示数据
setStatus
();
},
3000
);
});
function
setStatus
()
{
if
(
myArray
.
length
==
0
)
return
;
$
.
each
(
myArray
,
function
(
idx
,
val
)
{
if
(
jQuery
.
inArray
(
val
,
removeArray
)
!=
-
1
){
return
;
}
$
.
ajax
({
type
:
'post'
,
url
:
contextPath
+
"/javaRestart/getMessage?id="
+
val
,
dataType
:
'json'
,
success
:
function
(
resp
)
{
if
(
resp
==
null
||
resp
.
code
==
300
)
{
removeArray
[
removeArray
.
length
+
1
]
=
val
;
return
;
}
$
(
"#done_"
+
val
).
html
(
""
);
$
(
"#done_"
+
val
).
html
(
resp
.
data
.
doneList
);
$
(
"#todo_"
+
val
).
html
(
""
);
$
(
"#todo_"
+
val
).
html
(
resp
.
data
.
toDoList
);
$
(
"#process_"
+
val
).
html
(
""
);
$
(
"#process_"
+
val
).
html
(
resp
.
data
.
donePersent
);
},
error
:
function
(
resp
)
{
}
});
});
}
</script>
<script>
document
.
onkeydown
=
function
()
{
if
(
event
.
keyCode
==
116
||
event
.
keyCode
==
8
||
(
event
.
ctrlKey
&&
event
.
keyCode
==
82
)
||
event
.
keyCode
==
13
)
{
event
.
keyCode
=
0
;
event
.
returnValue
=
false
;
}
}
document
.
oncontextmenu
=
function
()
{
event
.
returnValue
=
false
;}
</script>
\ No newline at end of file
...
...
monitor-ui-web/src/main/webapp/jsp/switch/lbSwitch.jsp
0 → 100644
View file @
110a406
<
%@page language="java" contentType="text/html;charset=utf-8" %>
<
%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<
%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/bootstrap.min.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/unicorn.main.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/unicorn.grey.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/jquery-ui.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/bootstrap-responsive.min.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/uniform.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/select2.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/font-awesome.min.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/dnspod_switch.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/ace.min.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/ace-rtl.min.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/ace-skins.min.css"
/>
<script
src=
"<%=basePath %>js/jquery-2.1.4.min.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap.min.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/typeahead-bs2.min.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/ace-elements.min.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/ace.min.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/layer/layer.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>/js/unicorn.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/datetimepicker/moment-with-locales.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/datetimepicker/bootstrap-datetimepicker.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/global.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.pagination.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.table.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.dialog.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.form.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.panel.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.alerts.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.accordion.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.breadcrumb.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.validate.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.form.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.select.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/jquery.toaster.js"
type=
"text/javascript"
></script>
<script
type=
"text/javascript"
>
var
contextPath
=
'<%=basePath %>'
;
</script>
<title>
YOHO!运维
</title>
</head>
<body
style=
"background-color: #444444;font-size: 14px"
>
<!-- 头部 -->
<div
id=
"head"
>
</div>
<!-- 右侧具体内容 -->
<div
id=
"content"
>
<div
id=
"breadcrumb"
>
<a
href=
"#"
title=
"Go to Home"
class=
"tip-bottom"
><em
class=
"icon-home"
></em>
Home
</a>
<a
href=
"#"
class=
"current"
>
直连开关
</a>
</div>
<div
class=
"row"
>
<div
class=
"col-xs-12"
>
<!-- PAGE CONTENT BEGINS -->
<div
class=
"row"
>
<div
class=
"col-xs-12 col-sm-12 widget-container-span"
>
<div
class=
"tabbable"
>
<div
class=
"tab-content"
>
<div
id=
"home"
>
<div
style=
"padding:50px 200px"
>
${conf}
</div>
<h3
class=
"header smaller red"
></h3>
<div
class=
"btn-group"
style=
"padding:5px 20px"
>
<c:choose>
<c:when
test=
"${status == 0}"
>
<button
class=
"btn btn-sm btn-success"
onclick=
"initSwitch(1)"
>
<em
class=
"icon-cogs bigger-110"
></em>
开启
</button>
</c:when>
<c:when
test=
"${status == 1}"
>
<button
class=
"btn btn-sm btn-success"
onclick=
"initSwitch(0)"
>
<em
class=
"icon-cogs bigger-110"
></em>
关闭
</button>
</c:when>
</c:choose>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- /span -->
<div
class=
"vspace-xs-6"
></div>
</div>
<!-- /row -->
<script
type=
"text/javascript"
>
var
$path_assets
=
"assets"
;
//this will be used in gritter alerts containing images
</script>
<!-- PAGE CONTENT ENDS -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
<script
src=
"<%=basePath %>script/common/genarate_left_panel.js"
type=
"text/javascript"
></script>
<script
type=
"text/javascript"
>
$
(
"#li_switch"
).
addClass
(
"active open"
);
$
(
"#li_lbswitch"
).
addClass
(
"active"
);
</script>
<script
type=
"text/javascript"
>
/**
* "开启/关闭"按钮点击事件,打开确认操作对话框
* @param status
*/
function
initSwitch
(
status
)
{
var
dialog
=
$
(
"<div>"
).
appendTo
(
$
(
"body"
));
dialog
.
dialog
({
title
:
"你确定切换吗"
,
backdrop
:
"static"
,
content
:
"你确定要"
+
(
0
===
status
?
"关闭"
:
(
1
===
status
?
"开启"
:
""
))
+
"直连吗?"
,
buttons
:
[{
text
:
"否"
,
className
:
"btn-danger"
,
onclick
:
function
()
{
dialog
.
dialog
(
"hide"
);
}
},
{
text
:
"是"
,
className
:
"btn-success"
,
onclick
:
function
()
{
var
param
=
{
status
:
status
};
sendAjax
(
"post"
,
"viewToChangeLbConf"
,
param
,
"text"
,
viewToChangeSuccess
,
errorFunc
);
dialog
.
dialog
(
"hide"
);
}
}]
});
}
/**
* 打开对话框,展示切换后的配置
* @param resp 切换后的响应数据
*/
function
viewToChangeSuccess
(
resp
)
{
var
data
=
JSON
.
parse
(
resp
);
var
dialog
=
$
(
"<div>"
).
appendTo
(
$
(
"body"
));
dialog
.
dialog
({
title
:
"切换结果"
,
backdrop
:
"static"
,
content
:
"<pre>"
+
data
.
data
+
"</pre>"
,
buttons
:
[{
text
:
"否"
,
className
:
"btn-danger"
,
onclick
:
function
()
{
dialog
.
dialog
(
"hide"
);
}
},
{
text
:
"确定"
,
className
:
"btn-success"
,
onclick
:
function
()
{
sendAjax
(
"post"
,
"switchConf"
,
{},
"text"
,
switchSuccess
,
errorFunc
);
dialog
.
dialog
(
"hide"
);
toWait
();
}
}]
}).
find
(
".modal-body"
).
css
({
height
:
"650px"
});
}
/**
* 切换配置成功,跳转回首页
*/
function
switchSuccess
()
{
window
.
location
.
href
=
contextPath
+
"/lbSwitch/toLbSwitch"
;
}
/**
* 发送ajax请求
* @param type 请求方法post/get
* @param url 请求url
* @param data 请求参数数据
* @param dataType 请求参数类型
* @param success 请求成功回调函数
* @param error 请求异常回调函数
*/
function
sendAjax
(
type
,
url
,
data
,
dataType
,
success
,
error
)
{
$
.
ajax
({
type
:
type
,
url
:
url
,
data
:
data
,
dataType
:
dataType
,
success
:
success
,
error
:
error
});
}
/**
* ajax请求异常回调函数
*/
function
errorFunc
()
{
layer
.
msg
(
"Token异常"
,
{
icon
:
2
});
}
/**
* 打开等待对话框
*/
function
toWait
()
{
$
(
"<div>"
).
appendTo
(
$
(
"body"
)).
dialog
({
title
:
"提示"
,
backdrop
:
"static"
,
content
:
"正在切换,请稍后..."
});
}
</script>
</body>
</html>
...
...
monitor-ui-web/src/main/webapp/jsp/switch/limitSwitch.jsp
0 → 100644
View file @
110a406
<
%@page language="java" contentType="text/html;charset=utf-8" %>
<
%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<
%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/bootstrap.min.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/unicorn.main.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/unicorn.grey.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/jquery-ui.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/bootstrap-responsive.min.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/uniform.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/select2.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/font-awesome.min.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/dnspod_switch.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/ace.min.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/ace-rtl.min.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/ace-skins.min.css"
/>
<script
src=
"<%=basePath %>js/jquery-2.1.4.min.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap.min.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/typeahead-bs2.min.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/ace-elements.min.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/ace.min.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/layer/layer.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>/js/unicorn.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/datetimepicker/moment-with-locales.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/datetimepicker/bootstrap-datetimepicker.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/global.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.pagination.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.table.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.dialog.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.form.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.panel.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.alerts.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.accordion.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.breadcrumb.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.validate.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.form.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.select.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/jquery.toaster.js"
type=
"text/javascript"
></script>
<script
type=
"text/javascript"
>
var
contextPath
=
'<%=basePath %>'
;
</script>
<title>
YOHO!运维
</title>
</head>
<body
style=
"background-color: #444444;font-size: 14px"
>
<!-- 头部 -->
<div
id=
"head"
>
</div>
<!-- 右侧具体内容 -->
<div
id=
"content"
>
<div
id=
"breadcrumb"
>
<a
href=
"#"
title=
"Go to Home"
class=
"tip-bottom"
><em
class=
"icon-home"
></em>
Home
</a>
<a
href=
"#"
class=
"current"
>
限流调整
</a>
</div>
<div
class=
"row"
>
<div
class=
"col-xs-12"
>
<!-- PAGE CONTENT BEGINS -->
<div
class=
"row"
>
<div
class=
"col-xs-12 col-sm-12 widget-container-span"
>
<div
class=
"tabbable"
>
<div
class=
"tab-content"
>
<div
id=
"home"
>
<dl
id=
"dt-list-1"
class=
"dl-horizontal"
>
<dt>
open_limit_flow
</dt>
<dd
id=
"open_limit_flow"
>
${open_limit_flow}
</dd>
<br/>
<dt>
limit_config
</dt>
<dd
id=
"limit_config"
>
<c:forEach
items=
"${limit_config}"
var=
"map"
>
<ul>
<li>
${map}
</li>
</ul>
</c:forEach>
</dd>
<br/>
<dt>
limit_service_config
</dt>
<dd
id=
"limit_service_config"
>
<c:forEach
items=
"${limit_service_config}"
var=
"map"
>
<ul>
<li>
${map}
</li>
</ul>
</c:forEach>
</dd>
</dl>
<h3
class=
"header smaller red"
></h3>
<div
class=
"btn-group"
>
<button
class=
"btn btn-sm btn-success"
onclick=
"initSwitch()"
>
<em
class=
"icon-cogs bigger-110"
></em>
调整
</button>
</div>
</div>
</div>
</div>
</div>
<!-- /span -->
<div
class=
"vspace-xs-6"
></div>
</div>
<!-- /row -->
<script
type=
"text/javascript"
>
var
$path_assets
=
"assets"
;
//this will be used in gritter alerts containing images
</script>
<!-- PAGE CONTENT ENDS -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<script
src=
"<%=basePath %>script/common/genarate_left_panel.js"
type=
"text/javascript"
></script>
<script
type=
"text/javascript"
>
$
(
"#li_switch"
).
addClass
(
"active open"
);
$
(
"#li_limitswitch"
).
addClass
(
"active"
);
</script>
<script
type=
"text/javascript"
>
/**
* 按钮“调整”点击事件,打开设置对话框并初始化数据
*/
function
initSwitch
()
{
var
html
=
"<div><dl class='dl-horizontal'>"
;
html
+=
"<dt>open_limit_flow</dt>"
;
html
+=
"<dd id='open_limit_flow_a'><input type='text' class='form-control' value='"
+
$
(
"#open_limit_flow"
).
text
()
+
"'></dd>"
;
html
+=
"<br />"
;
html
+=
"<dt>limit_config</dt>"
;
html
+=
"<dd id='limit_config_a'><ul>"
;
html
+=
"<li style='padding: 5px;'><button class='btn btn-sm btn-success' onclick='addLi(this)'><em class='icon-cogs bigger-110'></em>新增</button></li>"
;
$
(
"#limit_config"
).
find
(
"li"
).
each
(
function
()
{
html
+=
"<li style='padding: 5px;'><input type='text' class='form-control' style='width: 80%;' value='"
+
$
(
this
).
text
()
+
"'> "
;
html
+=
"<button class='btn btn-sm btn-success' onclick='delLi(this)'><em class='icon-cogs bigger-110'></em>删除</button>"
;
html
+=
"</li>"
;
});
html
+=
"</ul></dd>"
;
html
+=
"<br />"
;
html
+=
"<dt>limit_service_config</dt>"
;
html
+=
"<dd id='limit_service_config_a'><ul>"
;
html
+=
"<li style='padding: 5px;'><button class='btn btn-sm btn-success' onclick='addLi(this)'><em class='icon-cogs bigger-110'></em>新增</button></li>"
;
$
(
"#limit_service_config"
).
find
(
"li"
).
each
(
function
()
{
html
+=
"<li style='padding: 5px;'><input type='text' class='form-control' style='width: 80%;' value='"
+
$
(
this
).
text
()
+
"'> "
;
html
+=
"<button class='btn btn-sm btn-success' onclick='delLi(this)'><em class='icon-cogs bigger-110'></em>删除</button>"
;
html
+=
"</li>"
;
});
html
+=
"</ul></dd>"
;
html
+=
"</dl></div>"
;
var
dialog
=
$
(
"<div>"
).
appendTo
(
$
(
"body"
));
dialog
.
dialog
({
title
:
"限流调整"
,
backdrop
:
"static"
,
content
:
html
,
buttons
:
[{
text
:
"取消"
,
className
:
"btn-danger"
,
onclick
:
function
()
{
dialog
.
dialog
(
"hide"
);
}
},
{
text
:
"提交"
,
className
:
"btn-success"
,
onclick
:
function
()
{
toSubmit
(
dialog
);
}
}]
}).
find
(
".modal-body"
).
css
({
height
:
"650px"
});
}
/**
* ajax提交编辑后的数据
*/
function
toSubmit
(
dialog
)
{
var
toSendAjaxFlag
=
false
;
var
openLimitFlow
=
$
(
"#open_limit_flow_a"
).
find
(
"input"
).
val
();
var
limitConfig
=
[];
$
(
"#limit_config_a"
).
find
(
"input"
).
each
(
function
()
{
var
config
=
$
(
this
).
val
();
if
(
undefined
!==
config
&&
null
!==
config
&&
""
!==
config
)
{
limitConfig
.
push
(
config
);
}
});
var
limitServiceConfig
=
[];
$
(
"#limit_service_config_a"
).
find
(
"input"
).
each
(
function
()
{
var
config
=
$
(
this
).
val
();
if
(
undefined
!==
config
&&
null
!==
config
&&
""
!==
config
)
{
limitServiceConfig
.
push
(
config
);
}
});
if
(
undefined
===
openLimitFlow
||
null
===
openLimitFlow
||
""
===
openLimitFlow
)
{
prompt
(
"提示"
,
"限流开关不能为空!"
)
}
else
{
toSendAjaxFlag
=
true
;
}
if
(
toSendAjaxFlag
)
{
var
param
=
{
openLimitFlow
:
openLimitFlow
,
limitConfig
:
JSON
.
stringify
(
limitConfig
),
limitServiceConfig
:
JSON
.
stringify
(
limitServiceConfig
)
};
sendAjax
(
"post"
,
"viewToChangeLimitConf"
,
param
,
"text"
,
viewToChangeSuccess
,
errorFunc
);
dialog
.
dialog
(
"hide"
);
}
}
/**
* 弹出调整后数据对话框
*/
function
viewToChangeSuccess
(
resp
)
{
var
data
=
JSON
.
parse
(
resp
);
var
dialog
=
$
(
"<div>"
).
appendTo
(
$
(
"body"
));
dialog
.
dialog
({
title
:
"切换结果"
,
backdrop
:
"static"
,
content
:
"<pre>"
+
data
.
data
+
"</pre>"
,
buttons
:
[{
text
:
"否"
,
className
:
"btn-danger"
,
onclick
:
function
()
{
dialog
.
dialog
(
"hide"
);
}
},
{
text
:
"确定"
,
className
:
"btn-success"
,
onclick
:
function
()
{
sendAjax
(
"post"
,
"switchConf"
,
{},
"text"
,
switchSuccess
,
errorFunc
);
dialog
.
dialog
(
"hide"
);
toWait
();
}
}]
}).
find
(
".modal-body"
).
css
({
height
:
"650px"
});
}
/**
* 调整成功后,跳转首页
*/
function
switchSuccess
()
{
window
.
location
.
href
=
getUrlBasePath
()
+
"/limitSwitch/toLimitSwitch"
;
}
/**
* 增加配置项
*/
function
addLi
(
btn
)
{
var
html
=
"<li style='padding: 5px;'><input type='text' class='form-control' style='width: 80%;'> "
;
html
+=
"<button class='btn btn-sm btn-success' onclick='delLi(this)'><em class='icon-cogs bigger-110'></em>删除</button>"
;
html
+=
"</li>"
;
$
(
btn
).
parent
().
parent
().
append
(
html
);
}
/**
* 删除配置项
*/
function
delLi
(
btn
)
{
$
(
btn
).
parent
().
remove
();
}
/**
* 发送ajax请求
* @param type 请求方法post/get
* @param url 请求url
* @param data 请求参数数据
* @param dataType 请求参数类型
* @param success 请求成功回调函数
* @param error 请求异常回调函数
*/
function
sendAjax
(
type
,
url
,
data
,
dataType
,
success
,
error
)
{
$
.
ajax
({
type
:
type
,
url
:
url
,
data
:
data
,
dataType
:
dataType
,
success
:
success
,
error
:
error
});
}
/**
* ajax请求异常回调函数
*/
function
errorFunc
()
{
layer
.
msg
(
"Token异常"
,
{
icon
:
2
});
}
/**
* 打开等待对话框
*/
function
toWait
()
{
$
(
"<div>"
).
appendTo
(
$
(
"body"
)).
dialog
({
title
:
"提示"
,
backdrop
:
"static"
,
content
:
"正在切换,请稍后..."
});
}
/**
* 打开提示对话框
* @param title 标题
* @param content 内容
*/
function
prompt
(
title
,
content
)
{
var
dialog
=
$
(
"<div>"
).
appendTo
(
$
(
"body"
));
dialog
.
dialog
({
title
:
title
,
backdrop
:
"static"
,
content
:
content
,
buttons
:
[{
text
:
"确定"
,
className
:
"btn-success"
,
onclick
:
function
()
{
dialog
.
dialog
(
"hide"
);
}
}]
});
}
</script>
</body>
</html>
...
...
monitor-ui-web/src/main/webapp/jsp/switch/luaSwitch.jsp
View file @
110a406
...
...
@@ -23,14 +23,13 @@
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/ace.min.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/ace-rtl.min.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/ace-skins.min.css"
/>
<script
src=
"<%=basePath %>js/jquery-2.1.4.min.js"
></script>
<script
src=
"<%=basePath %>js/bootstrap.min.js"
></script>
<script
src=
"<%=basePath %>js/typeahead-bs2.min.js"
></script>
<script
src=
"<%=basePath %>js/ace-elements.min.js"
></script>
<script
src=
"<%=basePath %>js/ace.min.js"
></script>
<script
src=
"<%=basePath %>script/nginx_switch.js"
></script>
<script
src=
"<%=basePath %>js/layer/layer.js"
></script>
<script
src=
"<%=basePath %>/js/unicorn.js"
></script>
<script
src=
"<%=basePath %>js/jquery-2.1.4.min.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap.min.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/typeahead-bs2.min.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/ace-elements.min.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/ace.min.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/layer/layer.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>/js/unicorn.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/datetimepicker/moment-with-locales.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/datetimepicker/bootstrap-datetimepicker.js"
charset=
"UTF-8"
...
...
@@ -51,8 +50,8 @@
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.form.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.select.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/jquery.toaster.js"
></script>
<script>
<script
src=
"<%=basePath %>js/jquery.toaster.js"
type=
"text/javascript"
></script>
<script
type=
"text/javascript"
>
var
contextPath
=
'<%=basePath %>'
;
</script>
<title>
YOHO!运维
</title>
...
...
@@ -65,8 +64,8 @@
<!-- 右侧具体内容 -->
<div
id=
"content"
>
<div
id=
"breadcrumb"
>
<a
href=
"#"
title=
"Go to Home"
class=
"tip-bottom"
><i
class=
"icon-home"
></i>
Home
</a>
<a
href=
"#"
class=
"current"
>
lua切换
</a>
<a
href=
"#"
title=
"Go to Home"
class=
"tip-bottom"
><em
class=
"icon-home"
></em>
Home
</a>
<a
href=
"#"
class=
"current"
>
lua切换
</a>
</div>
<div
class=
"row"
>
...
...
@@ -84,44 +83,50 @@
<h3
class=
"header smaller red"
></h3>
<div
class=
"btn-group"
style=
"padding:5px 20px"
>
<button
class=
"btn btn-sm btn-success"
onclick=
"initSwitch('aws')"
>
<
i
class=
"icon-cogs bigger-110"
></i
>
<
em
class=
"icon-cogs bigger-110"
></em
>
aws切换
</button>
<button
class=
"btn btn-sm btn-success"
onclick=
"initSwitch('qcloud')"
>
<
i
class=
"icon-cogs bigger-110"
></i
>
<
em
class=
"icon-cogs bigger-110"
></em
>
qq切换
</button>
<button
class=
"btn btn-sm btn-success"
onclick=
"initSwitch('mix')"
>
<
i
class=
"icon-cogs bigger-110"
></i
>
<
em
class=
"icon-cogs bigger-110"
></em
>
混合切换
</button>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- /span -->
</div>
</div>
<!-- /span -->
<div
class=
"vspace-xs-6"
></div>
</div>
<!-- /row -->
<div
class=
"vspace-xs-6"
></div>
</div>
<!-- /row -->
<script
type=
"text/javascript"
>
var
$path_assets
=
"assets"
;
//this will be used in gritter alerts containing images
</script>
<script
type=
"text/javascript"
>
var
$path_assets
=
"assets"
;
//this will be used in gritter alerts containing images
</script>
<!-- PAGE CONTENT ENDS -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
<!-- PAGE CONTENT ENDS -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
<
/div
>
<
script
src=
"<%=basePath %>script/common/genarate_left_panel.js"
type=
"text/javascript"
></script
>
<script
src=
"<%=basePath %>script/common/genarate_left_panel.js"
></script>
<script>
<script
type=
"text/javascript"
>
$
(
"#li_switch"
).
addClass
(
"active open"
);
$
(
"#li_luaswitch"
).
addClass
(
"active"
);
</script>
<script
type=
"text/javascript"
>
/**
* "*切换"按钮点击事件,打开确认操作对话框
* @param cloudName 目标中心名称
*/
function
initSwitch
(
cloudName
)
{
var
dialog
=
$
(
"<div>"
).
appendTo
(
$
(
"body"
));
dialog
.
dialog
({
...
...
@@ -132,44 +137,96 @@
text
:
"否"
,
className
:
"btn-danger"
,
onclick
:
function
()
{
$
(
dialog
)
.
dialog
(
"hide"
);
dialog
.
dialog
(
"hide"
);
}
},
{
text
:
"是"
,
className
:
"btn-success"
,
onclick
:
function
()
{
var
param
=
{
cloudName
:
cloudName
,
}
$
.
ajax
({
type
:
'post'
,
url
:
'switchConf'
,
data
:
param
,
dataType
:
'text'
,
success
:
function
(
resp
)
{
$
(
dialog
).
dialog
(
"hide"
);
var
data
=
JSON
.
parse
(
resp
);
var
dialog2
=
$
(
"<div>"
).
appendTo
(
$
(
"body"
));
dialog2
.
dialog
({
title
:
"切换结果"
,
backdrop
:
"static"
,
content
:
data
.
data
,
buttons
:
[{
text
:
"确定"
,
className
:
"btn-danger"
,
onclick
:
function
()
{
window
.
location
.
href
=
contextPath
+
"/luaswitch/toLuaSwitch"
;
}
}]
});
},
error
:
function
(
data
)
{
layer
.
msg
(
"异常"
,
{
icon
:
2
});
}
});
cloudName
:
cloudName
};
sendAjax
(
"post"
,
"viewToChangeLuaConf"
,
param
,
"text"
,
viewToChangeSuccess
,
errorFunc
);
dialog
.
dialog
(
"hide"
);
}
}]
});
}
/**
* 打开对话框,展示切换后的配置
* @param resp 切换后的响应数据
*/
function
viewToChangeSuccess
(
resp
)
{
var
data
=
JSON
.
parse
(
resp
);
var
dialog
=
$
(
"<div>"
).
appendTo
(
$
(
"body"
));
dialog
.
dialog
({
title
:
"切换结果"
,
backdrop
:
"static"
,
content
:
"<pre>"
+
data
.
data
+
"</pre>"
,
buttons
:
[{
text
:
"否"
,
className
:
"btn-danger"
,
onclick
:
function
()
{
dialog
.
dialog
(
"hide"
);
}
},
{
text
:
"确定"
,
className
:
"btn-success"
,
onclick
:
function
()
{
sendAjax
(
"post"
,
"switchConf"
,
{},
"text"
,
switchSuccess
,
errorFunc
);
dialog
.
dialog
(
"hide"
);
toWait
();
}
}]
}).
find
(
".modal-body"
).
css
({
height
:
"650px"
});
}
/**
* 切换配置成功,跳转回首页
*/
function
switchSuccess
()
{
window
.
location
.
href
=
contextPath
+
"/luaswitch/toLuaSwitch"
;
}
/**
* 发送ajax请求
* @param type 请求方法post/get
* @param url 请求url
* @param data 请求参数数据
* @param dataType 请求参数类型
* @param success 请求成功回调函数
* @param error 请求异常回调函数
*/
function
sendAjax
(
type
,
url
,
data
,
dataType
,
success
,
error
)
{
$
.
ajax
({
type
:
type
,
url
:
url
,
data
:
data
,
dataType
:
dataType
,
success
:
success
,
error
:
error
});
}
/**
* ajax请求异常回调函数
*/
function
errorFunc
()
{
layer
.
msg
(
"Token异常"
,
{
icon
:
2
});
}
/**
* 打开等待对话框
*/
function
toWait
()
{
$
(
"<div>"
).
appendTo
(
$
(
"body"
)).
dialog
({
title
:
"提示"
,
backdrop
:
"static"
,
content
:
"正在切换,请稍后..."
});
}
</script>
...
...
monitor-ui-web/src/main/webapp/jsp/switch/nginxSwitch.jsp
View file @
110a406
...
...
@@ -23,14 +23,14 @@
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/ace.min.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/ace-rtl.min.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/ace-skins.min.css"
/>
<script
src=
"<%=basePath %>js/jquery-2.1.4.min.js"
></script>
<script
src=
"<%=basePath %>js/bootstrap.min.js"
></script>
<script
src=
"<%=basePath %>js/typeahead-bs2.min.js"
></script>
<script
src=
"<%=basePath %>js/ace-elements.min.js"
></script>
<script
src=
"<%=basePath %>js/ace.min.js"
></script>
<script
src=
"<%=basePath %>script/nginx_switch.js"
></script>
<script
src=
"<%=basePath %>js/layer/layer.js"
></script>
<script
src=
"<%=basePath %>/js/unicorn.js"
></script>
<script
src=
"<%=basePath %>js/jquery-2.1.4.min.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap.min.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/typeahead-bs2.min.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/ace-elements.min.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/ace.min.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>script/nginx_switch.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/layer/layer.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>/js/unicorn.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/datetimepicker/moment-with-locales.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/datetimepicker/bootstrap-datetimepicker.js"
charset=
"UTF-8"
...
...
@@ -51,8 +51,8 @@
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.form.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.select.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/jquery.toaster.js"
></script>
<script>
<script
src=
"<%=basePath %>js/jquery.toaster.js"
type=
"text/javascript"
></script>
<script
type=
"text/javascript"
>
var
contextPath
=
'<%=basePath %>'
;
</script>
<title>
YOHO!运维
</title>
...
...
@@ -65,8 +65,8 @@
<!-- 右侧具体内容 -->
<div
id=
"content"
>
<div
id=
"breadcrumb"
>
<a
href=
"#"
title=
"Go to Home"
class=
"tip-bottom"
><i
class=
"icon-home"
></i>
Home
</a>
<a
href=
"#"
class=
"current"
>
nginx切换
</a>
<a
href=
"#"
title=
"Go to Home"
class=
"tip-bottom"
><em
class=
"icon-home"
></em>
Home
</a>
<a
href=
"#"
class=
"current"
>
nginx切换
</a>
</div>
<div
class=
"row"
>
...
...
@@ -79,14 +79,14 @@
<ul
class=
"nav nav-tabs"
id=
"myTab"
>
<li
class=
"active"
style=
"width: 110px"
>
<a
data-toggle=
"tab"
href=
"#home"
>
<
i
class=
"green icon-cloud bigger-110"
></i
>
<
em
class=
"green icon-cloud bigger-110"
></em
>
亚马逊
</a>
</li>
<li
style=
"width: 110px"
>
<a
data-toggle=
"tab"
href=
"#profile"
>
<
i
class=
"green icon-cloud bigger-110"
></i
>
<
em
class=
"green icon-cloud bigger-110"
></em
>
腾讯云
</a>
</li>
...
...
@@ -110,7 +110,7 @@
<dd>
<ul>
<c:forEach
items=
"${map.server}"
var=
"server"
>
<li>
${server}
</li>
<li
class=
"aws${map.name}Ips"
>
${server}
</li>
</c:forEach>
</ul>
</dd>
...
...
@@ -124,28 +124,29 @@
<button
class=
"btn btn-sm "
>
线上切换
</button>
<button
class=
"btn btn-sm btn-success"
onclick=
"initSwitch('aws','qcloud')"
>
<i
class=
"icon-cogs bigger-110"
></i>
<button
class=
"btn btn-sm btn-success"
onclick=
"initSwitch('aws','qcloud','online')"
>
<em
class=
"icon-cogs bigger-110"
></em>
切向qcloud
</button>
<button
class=
"btn btn-sm btn-success"
onclick=
"initSwitch('aws','aws')"
>
<i
class=
"icon-cogs bigger-110"
></i>
<button
class=
"btn btn-sm btn-success"
onclick=
"initSwitch('aws','aws','online')"
>
<em
class=
"icon-cogs bigger-110"
></em>
切向aws
</button><br><br>
</button>
<br><br>
<button
class=
"btn btn-sm "
>
灰度切换
</button>
<button
class=
"btn btn-sm btn-success"
onclick=
"initSwitch('gray','qcloud')"
>
<i
class=
"icon-cogs bigger-110"
></i>
<button
class=
"btn btn-sm btn-success"
onclick=
"initSwitch('aws','qcloud','gray')"
>
<em
class=
"icon-cogs bigger-110"
></em>
切向qcloud
</button>
</button>
<button
class=
"btn btn-sm btn-success"
onclick=
"initSwitch('gray','aws')"
>
<i
class=
"icon-cogs bigger-110"
></i>
<button
class=
"btn btn-sm btn-success"
onclick=
"initSwitch('aws','aws','gray')"
>
<em
class=
"icon-cogs bigger-110"
></em>
切向aws
</button>
<button
class=
"btn btn-sm btn-success"
onclick=
"initSwitch('gray','gray')"
>
<i
class=
"icon-cogs bigger-110"
></i>
<button
class=
"btn btn-sm btn-success"
onclick=
"initSwitch('aws','gray','gray')"
>
<em
class=
"icon-cogs bigger-110"
></em>
切向gray
</button>
</div>
...
...
@@ -167,7 +168,7 @@
<dd>
<ul>
<c:forEach
items=
"${map.server}"
var=
"server"
>
<li>
${server}
</li>
<li
class=
"qcloud${map.name}Ips"
>
${server}
</li>
</c:forEach>
</ul>
</dd>
...
...
@@ -180,28 +181,32 @@
<button
class=
"btn btn-sm "
>
线上切换
</button>
<button
class=
"btn btn-sm btn-success"
onclick=
"initSwitch('qcloud','qcloud')"
>
<i
class=
"icon-cogs bigger-110"
></i>
<button
class=
"btn btn-sm btn-success"
onclick=
"initSwitch('qcloud','qcloud','online')"
>
<em
class=
"icon-cogs bigger-110"
></em>
切向qcloud
</button>
<button
class=
"btn btn-sm btn-success"
onclick=
"initSwitch('qcloud','aws')"
>
<i
class=
"icon-cogs bigger-110"
></i>
<button
class=
"btn btn-sm btn-success"
onclick=
"initSwitch('qcloud','aws','online')"
>
<em
class=
"icon-cogs bigger-110"
></em>
切向aws
</button>
<br/><br/>
<button
class=
"btn btn-sm "
>
灰度切换
</button>
<button
class=
"btn btn-sm btn-success"
onclick=
"initSwitch('gray','qcloud')"
>
<i
class=
"icon-cogs bigger-110"
></i>
</button>
<button
class=
"btn btn-sm btn-success"
onclick=
"initSwitch('qcloud','qcloud','gray')"
>
<em
class=
"icon-cogs bigger-110"
></em>
切向qcloud
</button>
<button
class=
"btn btn-sm btn-success"
onclick=
"initSwitch('gray','aws')"
>
<i
class=
"icon-cogs bigger-110"
></i>
<button
class=
"btn btn-sm btn-success"
onclick=
"initSwitch('qcloud','aws','gray')"
>
<em
class=
"icon-cogs bigger-110"
></em>
切向aws
</button>
<button
class=
"btn btn-sm btn-success"
onclick=
"initSwitch('gray','gray')"
>
<i
class=
"icon-cogs bigger-110"
></i>
<button
class=
"btn btn-sm btn-success"
onclick=
"initSwitch('qcloud','gray','gray')"
>
<em
class=
"icon-cogs bigger-110"
></em>
切向gray
</button>
...
...
@@ -217,7 +222,6 @@
<div
class=
"space"
></div>
<script
type=
"text/javascript"
>
var
$path_assets
=
"assets"
;
//this will be used in gritter alerts containing images
</script>
...
...
@@ -228,10 +232,12 @@
</div>
<script
src=
"<%=basePath %>script/common/genarate_left_panel.js"
></script>
<script>
<script
src=
"<%=basePath %>script/common/genarate_left_panel.js"
type=
"text/javascript"
></script>
<script
type=
"text/javascript"
>
$
(
"#li_switch"
).
addClass
(
"active open"
);
$
(
"#li_nginxswitch"
).
addClass
(
"active"
);
</script>
</body>
</html>
...
...
monitor-ui-web/src/main/webapp/script/common/genarate_left_panel.js
View file @
110a406
...
...
@@ -22,8 +22,10 @@ innerHTML += "<li id='li_newRedisMonitor'><a id='li_newRedisMonitor_a' href=''><
innerHTML
+=
"<li id='li_newRedisMonitor'><a id='li_memcachedMonitor_a' href=''><i class='icon icon-th'></i> <span>Memcached监控</span></a></li>"
;
innerHTML
+=
"<li id='li_nginxview'><a id='li_nginxview_a' href=''><i class='icon icon-th'></i> <span>Nginx监控</span></a></li>"
;
innerHTML
+=
"<li id='li_dns_monitor'><a id='li_dns_monitor_a' href=''><i class='icon icon-th'></i> <span>DNS反劫持监控</span></a></li>"
;
innerHTML
+=
"<li id='li_monit'><a id='li_monit_a' href=''><i class='icon icon-th'></i> <span>Monit监控</span></a></li>"
;
innerHTML
+=
"</ul></li>"
;
/*主机管理*/
innerHTML
+=
"<li class='submenu' id='li_host'><a id='li_host_a' href='#'><i class='icon icon-th-list'></i> <span>主机管理</span><span class='label'>3</span></a><ul>"
;
innerHTML
+=
"<li id='li_hostGroupList'><a id='li_hostGroupList_a' href=''><i class='icon icon-th'></i> <span>标签管理</span></a></li>"
;
...
...
@@ -46,15 +48,16 @@ innerHTML += "<li id='li_works'><a id='li_works_a' href=''><i class='icon icon-t
innerHTML
+=
"</ul></li>"
;
/*配置管理*/
innerHTML
+=
"<li class='submenu' id='li_config'><a id='li_config_a' href='#'><i class='icon icon-th-list'></i> <span>配置管理</span><span class='label'>
4
</span></a><ul>"
;
innerHTML
+=
"<li class='submenu' id='li_config'><a id='li_config_a' href='#'><i class='icon icon-th-list'></i> <span>配置管理</span><span class='label'>
5
</span></a><ul>"
;
innerHTML
+=
"<li id='li_zkMonitor'><a id='li_zkMonitor_a' href=''><i class='icon icon-th'></i> <span>ZK配置管理</span></a></li>"
;
innerHTML
+=
"<li id='li_nginxSync'><a id='li_nginxSync_a' href=''><i class='icon icon-th'></i> <span>Nginx配置同步</span></a></li>"
;
innerHTML
+=
"<li id='li_degrade_info'><a id='li_degrade_info_a' href=''><i class='icon icon-th'></i> <span>降级服务配置</span></a></li>"
;
innerHTML
+=
"<li id='li_aws_ebs'><a id='li_aws_ebs_a' href=''><i class='icon icon-th'></i> <span>AWS_EBS镜像任务</span></a></li>"
;
innerHTML
+=
"<li id='li_ips_compare'><a id='li_ips_compare_a' href=''><i class='icon icon-th'></i> <span>在线服务Ip配置对比</span></a></li>"
;
innerHTML
+=
"</ul></li>"
;
/*project*/
innerHTML
+=
"<li class='submenu' id='li_project'><a id='li_project_a' href='#'><i class='icon icon-th-list'></i> <span>项目发布</span><span class='label'>
4
</span></a><ul>"
;
innerHTML
+=
"<li class='submenu' id='li_project'><a id='li_project_a' href='#'><i class='icon icon-th-list'></i> <span>项目发布</span><span class='label'>
5
</span></a><ul>"
;
innerHTML
+=
"<li id='li_projectRelease'><a id='li_projectRelease_a' href=''><i class='icon icon-th'></i> <span>项目发布</span></a></li>"
;
innerHTML
+=
"<li id='li_om'><a id='li_om_a' href=''><i class='icon icon-th'></i> <span>OM发布</span></a></li>"
;
innerHTML
+=
"<li id='li_om_new'><a id='li_om_new_a' href=''><i class='icon icon-th'></i> <span>OM_New发布</span></a></li>"
;
...
...
@@ -63,10 +66,13 @@ innerHTML += "<li id='li_projectHistory'><a id='li_projectHistory_a' href=''><i
innerHTML
+=
"</ul></li>"
;
/*switch*/
innerHTML
+=
"<li class='submenu' id='li_switch'><a id='li_switch_a' href='#'><i class='icon icon-th-list'></i> <span>关键切换</span><span class='label'>
3
</span></a>"
;
innerHTML
+=
"<li class='submenu' id='li_switch'><a id='li_switch_a' href='#'><i class='icon icon-th-list'></i> <span>关键切换</span><span class='label'>
6
</span></a>"
;
innerHTML
+=
"<ul><li id='li_nginxswitch'><a id='li_nginxswitch_a' href=''>nginx切换</a></li>"
;
innerHTML
+=
"<li id='li_luaswitch'><a id='li_luaswitch_a' href='#'>LUA切换</a></li>"
;
innerHTML
+=
"<li id='li_limitswitch'><a id='li_limitswitch_a' href='#'>限流调整</a></li>"
;
innerHTML
+=
"<li id='li_lbswitch'><a id='li_lbswitch_a' href='#'>直连开关</a></li>"
;
innerHTML
+=
"<li id='li_javarestart'><a id='li_javarestart_a' href='#'>java重启</a></li>"
;
innerHTML
+=
"<li id='li_centerswitch'><a id='li_centerswitch_a' href='#'>双中心切换</a></li>"
;
innerHTML
+=
"</ul></li>"
;
/*manage*/
...
...
@@ -123,6 +129,11 @@ document.getElementById("li_om_new_a").setAttribute("href", path + "/project/toN
document
.
getElementById
(
"li_newRedisMonitor_a"
).
setAttribute
(
"href"
,
path
+
"/redisMonitor/toNewRedis"
);
document
.
getElementById
(
"li_memcachedMonitor_a"
).
setAttribute
(
"href"
,
path
+
"/memcachedMonitor/toMemcached"
);
document
.
getElementById
(
"li_javarestart_a"
).
setAttribute
(
"href"
,
path
+
"/javaRestart/toJavaRestart"
);
document
.
getElementById
(
"li_centerswitch_a"
).
setAttribute
(
"href"
,
path
+
"/centerSwitch/toCenterSwitch"
);
document
.
getElementById
(
"li_ips_compare_a"
).
setAttribute
(
"href"
,
path
+
"/compareIps/toCompareIps"
);
document
.
getElementById
(
"li_limitswitch_a"
).
setAttribute
(
"href"
,
path
+
"/limitSwitch/toLimitSwitch"
);
document
.
getElementById
(
"li_lbswitch_a"
).
setAttribute
(
"href"
,
path
+
"/lbSwitch/toLbSwitch"
);
document
.
getElementById
(
"li_monit_a"
).
setAttribute
(
"href"
,
path
+
"/monit/toMonit"
);
function
getUrlBasePath
()
{
var
location
=
(
window
.
location
+
''
).
split
(
'/'
);
...
...
monitor-ui-web/src/main/webapp/script/monit.js
0 → 100644
View file @
110a406
//加载页面 初始化页面
queryAllMonitorService
();
//设置定时器,一分钟刷新一次页面
timename
=
setInterval
(
"queryAllMonitorService();"
,
60
*
1000
);
//查询monitor所有服务信息,并且刷新页面展示
function
queryAllMonitorService
()
{
$
.
ajax
({
"url"
:
"/monit/service/all"
,
"type"
:
'GET'
,
"dataType"
:
"json"
,
success
:
function
(
response
)
{
console
.
log
(
response
.
data
);
genarateMonitorDashboard
(
response
.
data
);
},
error
:
function
(
response
)
{
localAlert
(
"Error"
,
"获取服务失败,请稍后重试。"
);
return
;
}
});
}
//生成monitor dashboard展示页面
function
genarateMonitorDashboard
(
data
)
{
var
innerHTML
=
""
;
for
(
var
i
in
data
)
{
var
info
=
data
[
i
];
console
.
log
(
"monitorId: "
+
info
.
monitorId
);
innerHTML
+=
"<div class='blanksegmentation'></div>"
;
innerHTML
+=
"<div class='panel panel-default'>"
;
//genarate panel header httpInfo
innerHTML
+=
genarateHttpInfoDiv
(
info
.
httpInfo
,
info
.
monitorId
);
//genarate panel body serviceInfos events
innerHTML
+=
genarateServiceInfosTables
(
info
.
servicesInfo
,
info
.
eventsInfo
,
info
.
monitorId
);
innerHTML
+=
"</div>"
;
}
document
.
getElementById
(
"body_div"
).
innerHTML
=
innerHTML
;
}
//HttpInfo panel header
function
genarateHttpInfoDiv
(
httpInfo
,
monitorId
)
{
console
.
log
(
"httpInfo: "
+
httpInfo
);
var
innerHTML
=
"<div class='panel-heading'>"
;
innerHTML
+=
genarateSpanText
(
"address: "
+
httpInfo
.
address
,
20
);
innerHTML
+=
genarateSpanText
(
"port: "
+
httpInfo
.
port
,
20
);
innerHTML
+=
genarateSpanText
(
"ssl: "
+
httpInfo
.
ssl
,
20
);
innerHTML
+=
"<a href=\"javascript:deleteBtnOnClicked(\'"
+
monitorId
+
"\')\"><span class='glyphicon glyphicon-trash' style='color: #FF0000;font-size:18px'></span></a>"
;
innerHTML
+=
"</div>"
;
return
innerHTML
;
}
//serviceInfos Table events Table
function
genarateServiceInfosTables
(
serviceInfos
,
events
,
monitorId
)
{
var
innerHTML
=
"<div class='panel-body'>"
;
//genarate serviceInfo table<th>
innerHTML
+=
"<table class='table table-bordered mb30'>"
;
innerHTML
+=
"<thead><tr><th style='width: 25%;'>serviceName</th><th style='width: 20%;'>serviceStatus</th><th style='width: 10%;'>system</th>"
;
innerHTML
+=
"<th style='width: 15%;'>start</th><th style='width: 15%;'>stop</th><th style='width: 15%;'>restart</th></tr></thead><tbody>"
;
//genarate serviceInfo table<tr>
for
(
var
i
in
serviceInfos
)
{
var
service
=
serviceInfos
[
i
];
innerHTML
+=
"<tr>"
innerHTML
+=
"<td>"
+
service
.
serviceName
+
"</td>"
;
//status == NORMAL status font turn green, start button unclickable, and the others potition, turn red stop button unclickable
if
(
serviceInfos
[
i
].
serviceStatus
==
"NORMAL"
)
{
innerHTML
+=
"<td style='color:#008000;font-weight:bold'>"
+
service
.
serviceStatus
+
"</td>"
;
innerHTML
+=
"<td>"
+
service
.
system
+
"</td>"
;
innerHTML
+=
"<td><button class='btn btn-success btn-rounded' onclick=\"actionBtnOnClicked('"
+
monitorId
+
"','"
+
service
.
serviceName
+
"', 'start')\">Start</button></td>"
;
innerHTML
+=
"<td><button class='btn btn-danger btn-rounded' onclick=\"actionBtnOnClicked('"
+
monitorId
+
"','"
+
service
.
serviceName
+
"', 'stop')\">Stop</button></td>"
;
innerHTML
+=
"<td><button class='btn btn-success btn-rounded' onclick=\"actionBtnOnClicked('"
+
monitorId
+
"','"
+
service
.
serviceName
+
"', 'restart')\">Restart</button></td>"
;
}
else
{
innerHTML
+=
"<td style='color:#FF0000;font-weight:bold'>"
+
serviceInfos
[
i
].
serviceStatus
+
"</td>"
;
innerHTML
+=
"<td>"
+
serviceInfos
[
i
].
system
+
"</td>"
;
innerHTML
+=
"<td><button class='btn btn-success btn-rounded' onclick=\"actionBtnOnClicked('"
+
monitorId
+
"','"
+
service
.
serviceName
+
"', 'start')\">Start</button></td>"
;
innerHTML
+=
"<td><button class='btn btn-danger btn-rounded' onclick=\"actionBtnOnClicked('"
+
monitorId
+
"','"
+
service
.
serviceName
+
"', 'stop')\">Stop</button></td>"
;
innerHTML
+=
"<td><button class='btn btn-success btn-rounded' onclick=\"actionBtnOnClicked('"
+
monitorId
+
"','"
+
service
.
serviceName
+
"', 'restart')\">Restart</button></td>"
;
}
innerHTML
+=
"</tr>"
;
}
innerHTML
+=
"</tbody></table>"
;
//genarate events table<th>
innerHTML
+=
"<table class='table table-bordered mb30'>"
;
innerHTML
+=
"<thead><tr><th>collected_sec</th><th>service</th><th>type</th>"
;
innerHTML
+=
"<th>message</th></tr></thead><tbody>"
;
for
(
var
i
in
events
)
{
var
event
=
events
[
i
];
innerHTML
+=
"<tr>"
innerHTML
+=
"<td>"
+
event
.
collected_sec
+
"</td>"
;
innerHTML
+=
"<td>"
+
event
.
service
+
"</td>"
;
innerHTML
+=
"<td>"
+
event
.
type
+
"</td>"
;
innerHTML
+=
"<td>"
+
event
.
message
+
"</td>"
;
innerHTML
+=
"</tr>"
;
}
innerHTML
+=
"</tbody></table>"
innerHTML
+=
"</div>"
;
return
innerHTML
;
}
//生成data的json字符串
function
buildBody
(
monitorId
,
serviceName
,
actionType
)
{
var
actionItem
=
new
Object
();
actionItem
[
'hostId'
]
=
monitorId
;
actionItem
[
'service'
]
=
serviceName
;
actionItem
[
'action'
]
=
actionType
;
var
actions
=
new
Array
();
actions
.
push
(
actionItem
);
var
body
=
new
Object
();
body
[
'actions'
]
=
actions
;
return
JSON
.
stringify
(
body
);
}
//启停按钮的动作方法
function
actionBtnOnClicked
(
monitorId
,
serviceName
,
actionType
)
{
var
body
=
buildBody
(
monitorId
,
serviceName
,
actionType
);
console
.
log
(
body
);
if
(
actionType
==
"delete"
)
{
deleteBtnOnClicked
(
monitorId
);
return
;
}
$
.
ajax
({
"url"
:
"/monit/hosts/oneAction"
,
"type"
:
'POST'
,
"dataType"
:
"json"
,
"data"
:
{
hostId
:
monitorId
,
service
:
serviceName
,
action
:
actionType
},
success
:
function
(
resp
)
{
console
.
log
(
resp
);
queryAllMonitorService
();
},
error
:
function
(
e
)
{
localAlert
(
"Error"
,
"操作失败:"
+
e
.
data
);
queryAllMonitorService
();
}
});
}
//delete按钮的动作方法
function
deleteBtnOnClicked
(
monitorId
)
{
var
url
=
"/monit/hosts/delete/"
+
monitorId
;
console
.
log
(
url
)
$
.
ajax
({
"url"
:
url
,
"type"
:
'POST'
,
"dataType"
:
"json"
,
success
:
function
(
data
)
{
queryAllMonitorService
();
},
error
:
function
(
e
)
{
queryAllMonitorService
();
}
});
}
function
genarateSpanText
(
text
,
size
)
{
return
"<span style='font-size:"
+
size
+
"px;margin-right:20px'>"
+
text
+
"</span>"
;
}
\ No newline at end of file
...
...
monitor-ui-web/src/main/webapp/script/nginx_switch.js
View file @
110a406
$
(
function
()
{
$
(
"#validateTokenRltInfo"
).
hide
();
});
function
initSwitch
(
cloudName
,
target
)
{
/**
* "切向*"按钮点击事件,打开确认操作对话框
* @param cloudName 源中心名称
* @param target 目标中心名称
* @param onlineOrGray 切换:线上/灰度
*/
function
initSwitch
(
cloudName
,
target
,
onlineOrGray
)
{
var
arr
=
getNoChangeIpArr
(
cloudName
,
onlineOrGray
);
if
(
undefined
===
arr
||
null
===
arr
||
0
===
arr
.
length
)
{
prompt
(
"提示"
,
"无可切换的gateway!"
);
return
;
}
var
dialog
=
$
(
"<div>"
).
appendTo
(
$
(
"body"
));
dialog
.
dialog
({
title
:
"你确定切换吗"
,
backdrop
:
"static"
,
content
:
"你确定要将"
+
cloudName
+
"上的流量切向"
+
target
+
"吗?"
,
content
:
"你确定要将"
+
cloudName
+
"上的
"
+
onlineOrGray
+
"
流量切向"
+
target
+
"吗?"
,
buttons
:
[{
text
:
"否"
,
className
:
"btn-danger"
,
onclick
:
function
()
{
$
(
dialog
)
.
dialog
(
"hide"
);
dialog
.
dialog
(
"hide"
);
}
},
{
text
:
"是"
,
...
...
@@ -20,38 +31,132 @@ function initSwitch(cloudName, target) {
onclick
:
function
()
{
var
param
=
{
cloudName
:
cloudName
,
target
:
target
}
$
.
ajax
({
type
:
'post'
,
url
:
'switchNginxConf'
,
data
:
param
,
dataType
:
'text'
,
success
:
function
(
resp
)
{
$
(
dialog
).
dialog
(
"hide"
);
var
data
=
JSON
.
parse
(
resp
);
var
dialog2
=
$
(
"<div>"
).
appendTo
(
$
(
"body"
));
dialog2
.
dialog
({
title
:
"切换结果"
,
backdrop
:
"static"
,
content
:
data
.
data
,
buttons
:
[{
text
:
"确定"
,
className
:
"btn-danger"
,
onclick
:
function
()
{
window
.
location
.
href
=
getUrlBasePath
()
+
"/nginxswitch/toNginxSwitch"
;
}
}]
});
},
error
:
function
(
data
)
{
layer
.
msg
(
"Token异常"
,
{
icon
:
2
});
}
});
target
:
target
,
onlineOrGray
:
onlineOrGray
,
noChangeIps
:
JSON
.
stringify
(
arr
)
};
sendAjax
(
"post"
,
"viewToChangeNginxConf"
,
param
,
"text"
,
viewToChangeSuccess
,
errorFunc
);
dialog
.
dialog
(
"hide"
);
}
}]
});
}
/**
* 打开对话框,展示切换后的配置
* @param resp 切换后的响应数据
*/
function
viewToChangeSuccess
(
resp
)
{
var
data
=
JSON
.
parse
(
resp
);
var
dialog
=
$
(
"<div>"
).
appendTo
(
$
(
"body"
));
dialog
.
dialog
({
title
:
"切换结果"
,
backdrop
:
"static"
,
content
:
"<pre>"
+
data
.
data
.
result
+
"</pre>"
,
buttons
:
[{
text
:
"否"
,
className
:
"btn-danger"
,
onclick
:
function
()
{
dialog
.
dialog
(
"hide"
);
}
},
{
text
:
"确定"
,
className
:
"btn-success"
,
onclick
:
function
()
{
var
param
=
{
cloudName
:
data
.
data
.
cloudName
};
sendAjax
(
"post"
,
"switchNginxConf"
,
param
,
"text"
,
switchSuccess
,
errorFunc
);
dialog
.
dialog
(
"hide"
);
toWait
();
}
}]
}).
find
(
".modal-body"
).
css
({
height
:
"650px"
});
}
/**
* 切换配置成功,跳转回首页
*/
function
switchSuccess
()
{
window
.
location
.
href
=
getUrlBasePath
()
+
"/nginxswitch/toNginxSwitch"
;
}
/**
* 获取不切换的服务器ip(由于线上和灰度同在nginx.conf配置中,模板须设计两个占位符,所以切换某一处时,须将不切换的ip提交到后台)
* @param cloudName 切换的中心aws/qcloud
* @param onlineOrGray 切换线上/灰度
* @returns {Array} 不切换服务器的ip列表
*/
function
getNoChangeIpArr
(
cloudName
,
onlineOrGray
)
{
var
list
=
$
(
"."
+
cloudName
+
(
"online"
===
onlineOrGray
?
"grayapigateway"
:
"apigateway"
)
+
"Ips"
);
if
(
undefined
===
list
||
null
===
list
||
0
===
list
.
length
)
{
return
[];
}
var
result
=
[];
list
.
each
(
function
()
{
result
.
push
(
$
(
this
).
text
().
split
(
":"
)[
0
]);
});
return
result
;
}
/**
* 提示函数
* @param title 标题
* @param content 内容
*/
function
prompt
(
title
,
content
)
{
var
dialog
=
$
(
"<div>"
).
appendTo
(
$
(
"body"
));
dialog
.
dialog
({
title
:
title
,
backdrop
:
"static"
,
content
:
content
,
buttons
:
[{
text
:
"确定"
,
className
:
"btn-success"
,
onclick
:
function
()
{
dialog
.
dialog
(
"hide"
);
}
}]
});
}
/**
* 发送ajax请求
* @param type 请求方法post/get
* @param url 请求url
* @param data 请求参数数据
* @param dataType 请求参数类型
* @param success 请求成功回调函数
* @param error 请求异常回调函数
*/
function
sendAjax
(
type
,
url
,
data
,
dataType
,
success
,
error
)
{
$
.
ajax
({
type
:
type
,
url
:
url
,
data
:
data
,
dataType
:
dataType
,
success
:
success
,
error
:
error
});
}
/**
* ajax请求异常回调函数
*/
function
errorFunc
()
{
layer
.
msg
(
"Token异常"
,
{
icon
:
2
});
}
/**
* 打开等待对话框
*/
function
toWait
()
{
$
(
"<div>"
).
appendTo
(
$
(
"body"
)).
dialog
({
title
:
"提示"
,
backdrop
:
"static"
,
content
:
"正在切换,请稍后..."
});
}
\ No newline at end of file
...
...
monitor-ui-web/src/main/webapp/script/project.js
View file @
110a406
jQuery
(
document
).
ready
(
function
()
{
getProjects
();
$
(
"#cancel-btn"
).
hide
();
});
/**
...
...
@@ -222,127 +221,6 @@ function comfirmSubmit() {
}
}
function
projectbuild
()
{
var
operate
=
$
(
"input[name='operate_name']"
).
val
();
var
projects
=
$
(
"input[name='project_name']"
).
val
();
var
environment
=
$
(
"input[name='environment_name']"
).
val
();
var
branch
=
$
(
"input[name='branch_name']"
).
val
();
var
rollbackfile
=
$
(
"input[name='rollbackfile_name']"
).
val
();
$
(
'#confirmSubmitDivId'
).
modal
(
'hide'
);
$
(
"#submit-btn"
).
hide
();
$
(
"#cancel-btn"
).
show
();
$
(
"#resultArea"
).
val
(
""
);
document
.
getElementById
(
"task-info-div"
).
innerHTML
=
"<strong>任务执行中,请不要关闭页面...</strong>"
;
var
jsondata
=
{
"project"
:
projects
,
"environment"
:
environment
,
"operate"
:
operate
,
"branch"
:
branch
,
"rollbackfile"
:
rollbackfile
};
$
.
ajax
({
url
:
'build'
,
type
:
'POST'
,
dataType
:
'json'
,
contentType
:
"application/json"
,
data
:
JSON
.
stringify
(
jsondata
),
success
:
function
(
data2
)
{
var
obj
=
eval
(
"("
+
data2
+
")"
);
var
projectOrder
=
obj
.
data
.
projectOrder
;
var
projectOrders
=
projectOrder
.
split
(
","
);
$
(
"#currentproject"
).
val
(
projectOrders
[
0
]);
$
(
"#messageid"
).
val
(
obj
.
data
.
id
);
// 展示执行顺序
var
HTML
=
""
;
for
(
var
i
=
0
;
i
<
projectOrders
.
length
;
i
++
)
{
var
p
=
projectOrders
[
i
];
HTML
+=
"<div class='ckbox ckbox-danger' id='show-"
+
p
+
"-div' style='display: inline'>"
;
HTML
+=
" <input name='show-"
+
p
+
"' type='checkbox' id='show-"
+
p
+
"' value='"
+
p
+
"' checked='checked' disabled/>"
;
HTML
+=
"<label for='show-"
+
p
+
"' style='width: 200px'>"
+
p
+
"</label></div>"
;
if
((
i
+
1
)
%
4
==
0
)
{
HTML
+=
"</br>"
;
}
}
document
.
getElementById
(
"show-project-div"
).
innerHTML
=
HTML
;
$
(
"#show-"
+
projectOrders
[
0
]
+
"-div"
).
attr
(
"class"
,
"ckbox ckbox-warning"
);
var
interval
=
setInterval
(
function
()
{
//查后台,展示数据
var
cproject
=
$
(
"#currentproject"
).
val
();
$
.
ajax
({
url
:
'getbuildmsg?messageid='
+
obj
.
data
.
id
+
'&project='
+
cproject
,
type
:
'POST'
,
dataType
:
'json'
,
success
:
function
(
data3
)
{
var
obj2
=
eval
(
"("
+
data3
+
")"
);
var
messagedata
=
obj2
.
data
;
var
currproject
=
messagedata
.
currentProject
;
if
(
currproject
!=
cproject
)
{
$
(
"#currentproject"
).
val
(
currproject
);
//更换当前的项目
$
(
"#show-"
+
cproject
+
"-div"
).
attr
(
"class"
,
"ckbox ckbox-success"
);
$
(
"#show-"
+
currproject
+
"-div"
).
attr
(
"class"
,
"ckbox ckbox-warning"
);
$
(
"#resultArea"
).
val
(
""
)
}
if
(
messagedata
.
message
!=
""
)
{
var
d
=
$
(
"#resultArea"
).
val
();
$
(
"#resultArea"
).
val
(
d
+
messagedata
.
message
);
var
scrollTop
=
$
(
"#resultArea"
)[
0
].
scrollHeight
;
$
(
"#resultArea"
).
scrollTop
(
scrollTop
);
}
//code为2 ,则结束
var
code
=
obj2
.
code
;
var
message
=
obj2
.
message
;
if
(
code
==
2
)
{
$
(
"#submit-btn"
).
show
();
$
(
"#cancel-btn"
).
hide
();
$
(
"#show-"
+
cproject
+
"-div"
).
attr
(
"class"
,
"ckbox ckbox-success"
);
document
.
getElementById
(
"task-info-div"
).
innerHTML
=
"<strong>'"
+
message
+
"'</strong>"
;
clearInterval
(
interval
);
}
},
error
:
function
(
e
)
{
alert
(
"从后台获取数据出错"
);
}
});
},
3000
);
},
error
:
function
(
e
)
{
alert
(
"从后台获取数据出错"
);
}
});
}
/**
* 取消
*/
function
cancelBuild
()
{
$
(
"#submit-btn"
).
show
();
$
(
"#cancel-btn"
).
hide
();
var
messageid
=
$
(
"#messageid"
).
val
();
if
(
messageid
!=
null
&&
messageid
!=
""
)
{
var
jsondata
=
{
"id"
:
messageid
};
$
.
ajax
({
url
:
'cancelBuild'
,
type
:
'POST'
,
dataType
:
'json'
,
data
:
jsondata
,
success
:
function
(
data
)
{
if
(
data
==
"success"
)
{
}
else
{
alert
(
data
)
}
},
error
:
function
(
e
)
{
}
});
}
}
function
getRollbackList
()
{
var
project
=
$
(
"input[name='project']:checked"
).
val
();
var
environment
=
$
(
"input[name='environments']:checked"
).
val
();
...
...
@@ -401,43 +279,6 @@ function branchdefault() {
}
//function getmessage() {
// var messageid = $("#messageid").val();
// if(messageid != null && messageid != ""){
// var jsondata = {"messageid":messageid};
// $.ajax({
// url : 'getbuildmsg',
// type : 'POST',
// dataType : 'json',
// data : jsondata,
// success : function(data) {
// var d= $("#resultArea").val();
// $("#resultArea").val(d+data);
// var scrollTop = $("#resultArea")[0].scrollHeight;
// $("#resultArea").scrollTop(scrollTop);
//
// if(data.indexOf("Process Cancel") != -1){
// $("#messageid").val("");
// $("#submit-btn").show();
// $("#cancel-btn").hide();
// $("#exe_div").html(" 任务已经取消");
// return false;
// }
//
// if(data.indexOf("@@@@@@@@@@@@@@") != -1){
// $("#messageid").val("");
// $("#exe_div").html(" 任务执行结束");
// }
//
// },
// error : function(e) {
// }
// });
// }
// return false;
//}
...
...
Please
register
or
login
to post a comment