chore(node-vsphere-soap): fix lint issues

This commit is contained in:
Florent BEAUCHAMP
2023-05-24 09:50:10 +02:00
committed by Julien Fontanet
parent 7b949716bc
commit af562f3c3a
5 changed files with 58 additions and 71 deletions

View File

@@ -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',

View File

@@ -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)
})

View File

@@ -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",

View File

@@ -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)
})
})
})

View File

@@ -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