Initial read only mode (fix #3).
This commit is contained in:
parent
af7029812c
commit
8bbc6e9ff5
@ -41,10 +41,11 @@ const usage = `Usage: xen-api <url> <user> [<password>]`
|
|||||||
|
|
||||||
const main = coroutine(function * (args) {
|
const main = coroutine(function * (args) {
|
||||||
const opts = minimist(args, {
|
const opts = minimist(args, {
|
||||||
boolean: ['help', 'verbose'],
|
boolean: ['help', 'read-only', 'verbose'],
|
||||||
|
|
||||||
alias: {
|
alias: {
|
||||||
help: 'h',
|
help: 'h',
|
||||||
|
'read-only': 'ro',
|
||||||
verbose: 'v'
|
verbose: 'v'
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -73,7 +74,11 @@ const main = coroutine(function * (args) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const xapi = createClient({url, auth: {user, password}})
|
const xapi = createClient({
|
||||||
|
url,
|
||||||
|
auth: { user, password },
|
||||||
|
readOnly: opts.ro
|
||||||
|
})
|
||||||
yield xapi.connect()
|
yield xapi.connect()
|
||||||
|
|
||||||
const repl = createRepl({
|
const repl = createRepl({
|
||||||
|
@ -195,6 +195,8 @@ export class Xapi extends EventEmitter {
|
|||||||
this._fromToken = ''
|
this._fromToken = ''
|
||||||
this._objects.clear()
|
this._objects.clear()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
this._readOnly = Boolean(opts.readOnly)
|
||||||
}
|
}
|
||||||
|
|
||||||
get sessionId () {
|
get sessionId () {
|
||||||
@ -272,7 +274,9 @@ export class Xapi extends EventEmitter {
|
|||||||
|
|
||||||
// High level calls.
|
// High level calls.
|
||||||
call (method, ...args) {
|
call (method, ...args) {
|
||||||
return this._sessionCall(method, args)
|
return this._readOnly
|
||||||
|
? Promise.reject(new Error(`cannot call ${method}() in read only mode`))
|
||||||
|
: this._sessionCall(method, args)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Nice getter which returns the object for a given $id (internal to
|
// Nice getter which returns the object for a given $id (internal to
|
||||||
|
Loading…
Reference in New Issue
Block a user