chore(node-vsphere-soap): fix lint issues
This commit is contained in:
committed by
Julien Fontanet
parent
7b949716bc
commit
af562f3c3a
@@ -1,9 +1,11 @@
|
||||
'use strict'
|
||||
|
||||
// place your own credentials here for a vCenter or ESXi server
|
||||
// this information will be used for connecting to a vCenter instance
|
||||
// for module testing
|
||||
// name the file config-test.js
|
||||
|
||||
var vCenterTestCreds = {
|
||||
const vCenterTestCreds = {
|
||||
vCenterIP: 'vcsa',
|
||||
vCenterUser: 'vcuser',
|
||||
vCenterPassword: 'vcpw',
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
'use strict'
|
||||
/*
|
||||
|
||||
node-vsphere-soap
|
||||
@@ -11,12 +12,11 @@
|
||||
|
||||
*/
|
||||
|
||||
var EventEmitter = require('events').EventEmitter,
|
||||
util = require('util'),
|
||||
soap = require('soap'),
|
||||
cookie = require('soap-cookie'), // required for session persistence
|
||||
constants = require('constants'),
|
||||
_ = require('lodash')
|
||||
const EventEmitter = require('events').EventEmitter
|
||||
const util = require('util')
|
||||
const soap = require('soap')
|
||||
const Cookie = require('soap-cookie') // required for session persistence
|
||||
const { SSL_OP_NO_TLSv1_2 } = require('crypto').constants
|
||||
|
||||
// Client class
|
||||
// inherits from EventEmitter
|
||||
@@ -28,8 +28,6 @@ function Client(vCenterHostname, username, password, sslVerify) {
|
||||
|
||||
sslVerify = typeof sslVerify !== 'undefined' ? sslVerify : false
|
||||
|
||||
var self = this
|
||||
|
||||
EventEmitter.call(this)
|
||||
|
||||
// sslVerify argument handling
|
||||
@@ -39,7 +37,7 @@ function Client(vCenterHostname, username, password, sslVerify) {
|
||||
this.clientopts = {
|
||||
rejectUnauthorized: false,
|
||||
strictSSL: false,
|
||||
secureOptions: constants.SSL_OP_NO_TLSv1_2, // likely needed for node >= 10.0
|
||||
secureOptions: SSL_OP_NO_TLSv1_2, // likely needed for node >= 10.0
|
||||
} // recommended options by node-soap authors
|
||||
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0' // need for self-signed certs
|
||||
}
|
||||
@@ -47,8 +45,8 @@ function Client(vCenterHostname, username, password, sslVerify) {
|
||||
this.connectionInfo = {
|
||||
host: vCenterHostname,
|
||||
user: username,
|
||||
password: password,
|
||||
sslVerify: sslVerify,
|
||||
password,
|
||||
sslVerify,
|
||||
}
|
||||
|
||||
this._loginArgs = {
|
||||
@@ -70,24 +68,24 @@ function Client(vCenterHostname, username, password, sslVerify) {
|
||||
|
||||
util.inherits(Client, EventEmitter)
|
||||
|
||||
Client.prototype.runCommand = function (command, arguments) {
|
||||
var self = this
|
||||
var cmdargs
|
||||
if (!arguments || arguments == null) {
|
||||
Client.prototype.runCommand = function (command, args) {
|
||||
const self = this
|
||||
let cmdargs
|
||||
if (!args || args === null) {
|
||||
cmdargs = {}
|
||||
} else {
|
||||
cmdargs = arguments
|
||||
cmdargs = args
|
||||
}
|
||||
|
||||
var emitter = new EventEmitter()
|
||||
const emitter = new EventEmitter()
|
||||
|
||||
// check if client has successfully connected
|
||||
if (self.status == 'ready' || self.status == 'connecting') {
|
||||
if (self.status === 'ready' || self.status === 'connecting') {
|
||||
self.client.VimService.VimPort[command](cmdargs, function (err, result, raw, soapHeader) {
|
||||
if (err) {
|
||||
_soapErrorHandler(self, emitter, command, cmdargs, err)
|
||||
}
|
||||
if (command == 'Logout') {
|
||||
if (command === 'Logout') {
|
||||
self.status = 'disconnected'
|
||||
process.removeAllListeners('beforeExit')
|
||||
}
|
||||
@@ -95,7 +93,7 @@ Client.prototype.runCommand = function (command, arguments) {
|
||||
})
|
||||
} else {
|
||||
// if connection not ready or connecting, reconnect to instance
|
||||
if (self.status == 'disconnected') {
|
||||
if (self.status === 'disconnected') {
|
||||
self.emit('connect')
|
||||
}
|
||||
self.once('ready', function () {
|
||||
@@ -103,7 +101,7 @@ Client.prototype.runCommand = function (command, arguments) {
|
||||
if (err) {
|
||||
_soapErrorHandler(self, emitter, command, cmdargs, err)
|
||||
}
|
||||
if (command == 'Logout') {
|
||||
if (command === 'Logout') {
|
||||
self.status = 'disconnected'
|
||||
process.removeAllListeners('beforeExit')
|
||||
}
|
||||
@@ -116,15 +114,15 @@ Client.prototype.runCommand = function (command, arguments) {
|
||||
}
|
||||
|
||||
Client.prototype.close = function () {
|
||||
var self = this
|
||||
const self = this
|
||||
|
||||
self.emit('close')
|
||||
}
|
||||
|
||||
Client.prototype._connect = function () {
|
||||
var self = this
|
||||
const self = this
|
||||
|
||||
if (self.status != 'disconnected') {
|
||||
if (self.status !== 'disconnected') {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -152,12 +150,12 @@ Client.prototype._connect = function () {
|
||||
|
||||
self.serviceContent = result.returnval
|
||||
self.sessionManager = result.returnval.sessionManager
|
||||
var loginArgs = _.assign({ _this: self.sessionManager }, self._loginArgs)
|
||||
const loginArgs = { _this: self.sessionManager, ...self._loginArgs }
|
||||
|
||||
self
|
||||
.runCommand('Login', loginArgs)
|
||||
.once('result', function (result, raw, soapHeader) {
|
||||
self.authCookie = new cookie(client.lastResponseHeaders)
|
||||
self.authCookie = new Cookie(client.lastResponseHeaders)
|
||||
self.client.setSecurity(self.authCookie) // needed since vSphere SOAP WS uses cookies
|
||||
|
||||
self.userName = result.returnval.userName
|
||||
@@ -183,39 +181,34 @@ Client.prototype._connect = function () {
|
||||
}
|
||||
|
||||
Client.prototype._close = function () {
|
||||
var self = this
|
||||
const self = this
|
||||
|
||||
if (self.status == 'ready') {
|
||||
if (self.status === 'ready') {
|
||||
self
|
||||
.runCommand('Logout', { _this: self.sessionManager })
|
||||
.once('result', function (result) {
|
||||
.once('result', function () {
|
||||
self.status = 'disconnected'
|
||||
//console.log(result);
|
||||
})
|
||||
.once('error', function (err) {
|
||||
console.error(err)
|
||||
.once('error', function () {
|
||||
/* don't care of error during disconnection */
|
||||
self.status = 'disconnected'
|
||||
})
|
||||
} else {
|
||||
self.status = 'disconnected'
|
||||
}
|
||||
}
|
||||
|
||||
function _soapErrorHandler(self, emitter, command, arguments, err) {
|
||||
if (err) {
|
||||
console.error('error contents : ' + err.body)
|
||||
} else {
|
||||
err = { body: 'general error' }
|
||||
}
|
||||
function _soapErrorHandler(self, emitter, command, args, err) {
|
||||
err = err || { body: 'general error' }
|
||||
|
||||
if (err.body.match(/session is not authenticated/)) {
|
||||
console.log('authorization token expired! reconnecting...')
|
||||
self.status = 'disconnected'
|
||||
process.removeAllListeners('beforeExit')
|
||||
|
||||
if (self.reconnectCount < 10) {
|
||||
self.reconnectCount += 1
|
||||
self
|
||||
.runCommand(command, arguments)
|
||||
.runCommand(command, args)
|
||||
.once('result', function (result, raw, soapHeader) {
|
||||
emitter.emit('result', result, raw, soapHeader)
|
||||
})
|
||||
|
||||
@@ -4,9 +4,6 @@
|
||||
"description": "interface to vSphere SOAP/WSDL from node for interfacing with vCenter or ESXi, forked from node-vsphere-soap",
|
||||
"main": "lib/client.js",
|
||||
"author": "reedog117",
|
||||
"scripts": {
|
||||
"test": "lab"
|
||||
},
|
||||
"repository": {
|
||||
"directory": "@vates/node-vsphere-soap",
|
||||
"type": "git",
|
||||
|
||||
@@ -1,44 +1,38 @@
|
||||
'use strict'
|
||||
|
||||
/*
|
||||
vsphere-soap.test.js
|
||||
|
||||
tests for the vCenterConnectionInstance class
|
||||
*/
|
||||
|
||||
var Code = require('code')
|
||||
var Lab = require('lab')
|
||||
var util = require('util')
|
||||
var lab = (exports.lab = Lab.script())
|
||||
var vc = require('../lib/client')
|
||||
var TestCreds = require('../config-test.js').vCenterTestCreds
|
||||
var _ = require('lodash')
|
||||
const Code = require('code')
|
||||
const Lab = require('lab')
|
||||
const lab = (exports.lab = Lab.script())
|
||||
const vc = require('../lib/client')
|
||||
|
||||
var describe = lab.describe
|
||||
var it = lab.it
|
||||
var before = lab.before
|
||||
var after = lab.after
|
||||
var expect = Code.expect
|
||||
// eslint-disable-next-line n/no-missing-require
|
||||
const TestCreds = require('../config-test.js').vCenterTestCreds
|
||||
|
||||
var VItest = new vc.Client(TestCreds.vCenterIP, TestCreds.vCenterUser, TestCreds.vCenterPassword, false)
|
||||
const describe = lab.describe
|
||||
const it = lab.it
|
||||
const expect = Code.expect
|
||||
|
||||
const VItest = new vc.Client(TestCreds.vCenterIP, TestCreds.vCenterUser, TestCreds.vCenterPassword, false)
|
||||
|
||||
describe('Client object initialization:', function () {
|
||||
it('provides a successful login', { timeout: 5000 }, function (done) {
|
||||
VItest.once('ready', function () {
|
||||
expect(VItest.userName).to.exist()
|
||||
//console.log('logged in user : ' + VItest.userName);
|
||||
expect(VItest.fullName).to.exist()
|
||||
//console.log('logged in user fullname : ' + VItest.fullName);
|
||||
expect(VItest.serviceContent).to.exist()
|
||||
//console.log(VItest.serviceContent);
|
||||
done()
|
||||
}).once('error', function (err) {
|
||||
console.error(err)
|
||||
// this should fail if there's a problem
|
||||
expect(VItest.userName).to.exist()
|
||||
//console.log('logged in user : ' + VItest.userName);
|
||||
expect(VItest.fullName).to.exist()
|
||||
//console.log('logged in user fullname : ' + VItest.fullName);
|
||||
expect(VItest.serviceContent).to.exist()
|
||||
//console.log(VItest.serviceContent);
|
||||
done()
|
||||
})
|
||||
})
|
||||
@@ -82,13 +76,13 @@ describe('Client tests - query commands:', function () {
|
||||
|
||||
it('can obtain the names of all Virtual Machines in the inventory', { timeout: 20000 }, function (done) {
|
||||
// get property collector
|
||||
var propertyCollector = VItest.serviceContent.propertyCollector
|
||||
const propertyCollector = VItest.serviceContent.propertyCollector
|
||||
// get view manager
|
||||
var viewManager = VItest.serviceContent.viewManager
|
||||
const viewManager = VItest.serviceContent.viewManager
|
||||
// get root folder
|
||||
var rootFolder = VItest.serviceContent.rootFolder
|
||||
const rootFolder = VItest.serviceContent.rootFolder
|
||||
|
||||
var containerView, objectSpec, traversalSpec, propertySpec, propertyFilterSpec
|
||||
let containerView, objectSpec, traversalSpec, propertySpec, propertyFilterSpec
|
||||
// this is the equivalent to
|
||||
VItest.runCommand('CreateContainerView', {
|
||||
_this: viewManager,
|
||||
@@ -113,7 +107,7 @@ describe('Client tests - query commands:', function () {
|
||||
skip: false,
|
||||
}
|
||||
|
||||
objectSpec = _.assign(objectSpec, { selectSet: [traversalSpec] })
|
||||
objectSpec = { ...objectSpec, selectSet: [traversalSpec] }
|
||||
|
||||
propertySpec = {
|
||||
attributes: { 'xsi:type': 'PropertySpec' },
|
||||
@@ -135,15 +129,15 @@ describe('Client tests - query commands:', function () {
|
||||
})
|
||||
.once('result', function (result, raw) {
|
||||
expect(result.returnval.objects).to.exist()
|
||||
if (_.isArray(result.returnval.objects)) {
|
||||
expect(_.sample(result.returnval.objects).obj.attributes.type).to.be.equal('VirtualMachine')
|
||||
if (Array.isArray(result.returnval.objects)) {
|
||||
expect(result.returnval.objects[0].obj.attributes.type).to.be.equal('VirtualMachine')
|
||||
} else {
|
||||
expect(result.returnval.objects.obj.attributes.type).to.be.equal('VirtualMachine')
|
||||
}
|
||||
done()
|
||||
})
|
||||
.once('error', function (err) {
|
||||
console.log('\n\nlast request : ' + VItest.client.lastRequest)
|
||||
console.error('\n\nlast request : ' + VItest.client.lastRequest, err)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
- @vates/nbd-client patch
|
||||
- @vates/task minor
|
||||
- @xen-orchestra/backups minor
|
||||
- @vates/node-vsphere-soap major
|
||||
- xo-server-auth-oidc minor
|
||||
- xo-web minor
|
||||
|
||||
|
||||
Reference in New Issue
Block a user