mirror of
https://github.com/TeaOSLab/EdgeAdmin.git
synced 2025-11-21 16:50:25 +08:00
实现迁移辅助功能(系统设置 -- 高级设置 -- 迁移)
This commit is contained in:
191
web/views/@default/settings/transfer/index.js
Normal file
191
web/views/@default/settings/transfer/index.js
Normal file
@@ -0,0 +1,191 @@
|
||||
Tea.context(function () {
|
||||
this.STEP_PREPARE = "prepare"
|
||||
this.STEP_DATABASE = "database"
|
||||
this.STEP_ADMIN = "admin"
|
||||
this.STEP_API = "api"
|
||||
this.STEP_ADDRESS = "address"
|
||||
this.STEP_UPGRADE = "upgrade"
|
||||
this.STEP_FINISH = "finish"
|
||||
|
||||
this.step = this.STEP_PREPARE
|
||||
|
||||
this.doBack = function (step) {
|
||||
this.step = step
|
||||
|
||||
switch (step) {
|
||||
case this.STEP_UPGRADE:
|
||||
if (this.apiNodeChanged == 0) {
|
||||
this.doBack(this.STEP_ADMIN)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 准备工作
|
||||
*/
|
||||
this.doPrepare = function () {
|
||||
this.step = this.STEP_DATABASE
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据库
|
||||
*/
|
||||
this.databaseChanged = 1
|
||||
this.databaseTransferred = 0
|
||||
|
||||
this.doDatabase = function () {
|
||||
if (this.databaseChanged == 1 && this.databaseTransferred == 0) {
|
||||
teaweb.warn("请先将老的数据导入到新的数据库中。")
|
||||
return
|
||||
}
|
||||
this.step = this.STEP_API
|
||||
}
|
||||
|
||||
/**
|
||||
* API
|
||||
*/
|
||||
this.apiNodeChanged = 1
|
||||
this.apiNodeHost = ""
|
||||
this.apiNodePort = ""
|
||||
this.apiNodeProtocol = "http"
|
||||
this.apiNodeInstalled = 1
|
||||
|
||||
this.doAPI = function () {
|
||||
if (this.apiNodeChanged == 0) {
|
||||
this.step = this.STEP_ADMIN
|
||||
return
|
||||
}
|
||||
if (this.apiNodeInstalled == 0) {
|
||||
teaweb.warn("请先安装新的API节点")
|
||||
return
|
||||
}
|
||||
|
||||
this.$post(".validateAPI")
|
||||
.params({
|
||||
host: this.apiNodeHost,
|
||||
port: this.apiNodePort,
|
||||
protocol: this.apiNodeProtocol
|
||||
})
|
||||
.timeout(30)
|
||||
.success(function (resp) {
|
||||
if (this.apiNodeChanged == 1) {
|
||||
this.step = this.STEP_ADDRESS
|
||||
this.apiAddressHosts = resp.data.hosts
|
||||
} else {
|
||||
this.step = this.STEP_ADMIN
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改地址
|
||||
*/
|
||||
this.apiAddresses = []
|
||||
this.apiAddressHosts = []
|
||||
|
||||
this.doAddress = function () {
|
||||
this.step = this.STEP_ADMIN
|
||||
}
|
||||
|
||||
/**
|
||||
* 管理平台
|
||||
*/
|
||||
this.adminNodeChanged = 1
|
||||
this.adminNodeInstalled = 1
|
||||
|
||||
this.doAdmin = function () {
|
||||
if (this.adminNodeChanged == 1 && this.adminNodeInstalled == 0) {
|
||||
teaweb.warn("请先安装新的管理平台")
|
||||
return
|
||||
}
|
||||
|
||||
if (this.apiNodeChanged == 0) {
|
||||
this.step = this.STEP_FINISH
|
||||
} else {
|
||||
this.step = this.STEP_UPGRADE
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 边缘节点
|
||||
*/
|
||||
this.isUpgrading = false
|
||||
this.percentNodes = 0
|
||||
this.countNodes = 0
|
||||
this.countFinishedNodes = 0
|
||||
|
||||
this.doStartUpgrade = function () {
|
||||
this.percentNodes = 0
|
||||
this.countNodes = 0
|
||||
this.countFinishedNodes = 0
|
||||
|
||||
this.$post(".statNodes")
|
||||
.success(function (resp) {
|
||||
this.countNodes = resp.data.countNodes
|
||||
if (this.countNodes == 0) {
|
||||
this.isUpgrading = true
|
||||
this.percentNodes = 100
|
||||
return
|
||||
}
|
||||
|
||||
this.isUpgrading = true
|
||||
this.upgradeNodeTimer()
|
||||
})
|
||||
.fail(function () {
|
||||
|
||||
})
|
||||
.error(function () {
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
this.upgradeNodeTimer = function () {
|
||||
if (!this.isUpgrading) {
|
||||
return
|
||||
}
|
||||
if (this.percentNodes == 100) {
|
||||
return
|
||||
}
|
||||
this.$post(".upgradeNodes")
|
||||
.params({
|
||||
apiNodeProtocol: this.apiNodeProtocol,
|
||||
apiNodeHost: this.apiNodeHost,
|
||||
apiNodePort: this.apiNodePort
|
||||
})
|
||||
.success(function (resp) {
|
||||
this.countFinishedNodes += resp.data.count
|
||||
if (this.countNodes > 0) {
|
||||
this.percentNodes = this.countFinishedNodes * 100 / this.countNodes
|
||||
if (this.percentNodes > 100) {
|
||||
this.percentNodes = 100
|
||||
}
|
||||
}
|
||||
|
||||
if (resp.data.hasNext) {
|
||||
this.$delay(function () {
|
||||
this.upgradeNodeTimer()
|
||||
}, 5000)
|
||||
}
|
||||
})
|
||||
.fail(function (resp) {
|
||||
this.isUpgrading = false
|
||||
|
||||
teaweb.warn(resp.message)
|
||||
})
|
||||
.error(function (err) {
|
||||
teaweb.warn("请求错误:" + err.message)
|
||||
this.isUpgrading = false
|
||||
})
|
||||
}
|
||||
|
||||
this.doUpgrade = function () {
|
||||
this.step = this.STEP_FINISH
|
||||
}
|
||||
|
||||
/**
|
||||
* 完成
|
||||
*/
|
||||
this.doFinish = function () {
|
||||
window.location = "/"
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user