Merge pull request #139 from vatesfr/abhamonr-remember-disabled-servers
Save enabled state for each server
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import { noop } from '../utils'
|
||||
|
||||
export async function add ({
|
||||
host,
|
||||
username,
|
||||
@@ -74,7 +76,7 @@ export async function set ({id, host, username, password}) {
|
||||
await this.updateXenServer(id, {host, username, password})
|
||||
}
|
||||
|
||||
set.description = 'changes the propeorties of a Xen server'
|
||||
set.description = 'changes the properties of a Xen server'
|
||||
|
||||
set.permission = 'admin'
|
||||
|
||||
@@ -99,6 +101,7 @@ set.params = {
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
export async function connect ({id}) {
|
||||
this.updateXenServer(id, {enabled: true}).catch(noop)
|
||||
await this.connectXenServer(id)
|
||||
}
|
||||
|
||||
@@ -115,6 +118,7 @@ connect.params = {
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
export async function disconnect ({id}) {
|
||||
this.updateXenServer(id, {enabled: false}).catch(noop)
|
||||
await this.disconnectXenServer(id)
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import isString from 'lodash.isstring'
|
||||
import {EventEmitter} from 'events'
|
||||
|
||||
import {
|
||||
@@ -41,7 +42,7 @@ export default class Model extends EventEmitter {
|
||||
set (properties, value) {
|
||||
// This method can also be used with two arguments to set a single
|
||||
// property.
|
||||
if (value !== undefined) {
|
||||
if (isString(properties)) {
|
||||
properties = { [properties]: value }
|
||||
}
|
||||
|
||||
|
||||
24
src/xo.js
24
src/xo.js
@@ -210,12 +210,14 @@ export default class Xo extends EventEmitter {
|
||||
// Connects to existing servers.
|
||||
const servers = await this._servers.get()
|
||||
for (let server of servers) {
|
||||
this.connectXenServer(server.id).catch(error => {
|
||||
console.error(
|
||||
`[WARN] ${server.host}:`,
|
||||
error[0] || error.stack || error.code || error
|
||||
)
|
||||
})
|
||||
if (server.enabled) {
|
||||
this.connectXenServer(server.id).catch(error => {
|
||||
console.error(
|
||||
`[WARN] ${server.host}:`,
|
||||
error[0] || error.stack || error.code || error
|
||||
)
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -947,7 +949,7 @@ export default class Xo extends EventEmitter {
|
||||
// FIXME: We are storing passwords which is bad!
|
||||
// Could we use tokens instead?
|
||||
// TODO: use plain objects
|
||||
const server = await this._servers.create({host, username, password})
|
||||
const server = await this._servers.create({host, username, password, enabled: 'true'})
|
||||
|
||||
return server.properties
|
||||
}
|
||||
@@ -960,13 +962,17 @@ export default class Xo extends EventEmitter {
|
||||
}
|
||||
}
|
||||
|
||||
async updateXenServer (id, {host, username, password}) {
|
||||
async updateXenServer (id, {host, username, password, enabled}) {
|
||||
const server = await this._getXenServer(id)
|
||||
|
||||
if (host) server.set('host', host)
|
||||
if (username) server.set('username', username)
|
||||
if (password) server.set('password', password)
|
||||
|
||||
if (enabled !== undefined) {
|
||||
server.set('enabled', enabled ? 'true' : undefined)
|
||||
}
|
||||
|
||||
await this._servers.update(server)
|
||||
}
|
||||
|
||||
@@ -1007,7 +1013,6 @@ export default class Xo extends EventEmitter {
|
||||
})
|
||||
}
|
||||
|
||||
// TODO the previous state should be marked as connected.
|
||||
async connectXenServer (id) {
|
||||
const server = (await this._getXenServer(id)).properties
|
||||
|
||||
@@ -1068,7 +1073,6 @@ export default class Xo extends EventEmitter {
|
||||
}
|
||||
}
|
||||
|
||||
// TODO the previous state should be marked as disconnected.
|
||||
async disconnectXenServer (id) {
|
||||
const xapi = this._xapis[id]
|
||||
if (!xapi) {
|
||||
|
||||
Reference in New Issue
Block a user