From af562f3c3aa057cd64110623a3b2b1e52140d6ae Mon Sep 17 00:00:00 2001 From: Florent BEAUCHAMP Date: Wed, 24 May 2023 09:50:10 +0200 Subject: [PATCH] chore(node-vsphere-soap): fix lint issues --- @vates/node-vsphere-soap/config-test.stub.js | 4 +- @vates/node-vsphere-soap/lib/client.js | 73 +++++++++---------- @vates/node-vsphere-soap/package.json | 3 - .../test/vsphere-soap.test.js | 48 ++++++------ CHANGELOG.unreleased.md | 1 + 5 files changed, 58 insertions(+), 71 deletions(-) diff --git a/@vates/node-vsphere-soap/config-test.stub.js b/@vates/node-vsphere-soap/config-test.stub.js index 852916fc4..7026ac57b 100644 --- a/@vates/node-vsphere-soap/config-test.stub.js +++ b/@vates/node-vsphere-soap/config-test.stub.js @@ -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', diff --git a/@vates/node-vsphere-soap/lib/client.js b/@vates/node-vsphere-soap/lib/client.js index 8d8b374a9..b68d35d78 100644 --- a/@vates/node-vsphere-soap/lib/client.js +++ b/@vates/node-vsphere-soap/lib/client.js @@ -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) }) diff --git a/@vates/node-vsphere-soap/package.json b/@vates/node-vsphere-soap/package.json index 630f8ed63..c6e259663 100644 --- a/@vates/node-vsphere-soap/package.json +++ b/@vates/node-vsphere-soap/package.json @@ -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", diff --git a/@vates/node-vsphere-soap/test/vsphere-soap.test.js b/@vates/node-vsphere-soap/test/vsphere-soap.test.js index 92fc5cf14..032e031f2 100644 --- a/@vates/node-vsphere-soap/test/vsphere-soap.test.js +++ b/@vates/node-vsphere-soap/test/vsphere-soap.test.js @@ -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) }) }) }) diff --git a/CHANGELOG.unreleased.md b/CHANGELOG.unreleased.md index 6ed2a7a7f..6b9ed85b4 100644 --- a/CHANGELOG.unreleased.md +++ b/CHANGELOG.unreleased.md @@ -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