nodejs的vsphere-connect lib

时间:2018-02-28 15:39:22

标签: node.js vsphere

我试图在许多函数中使用相同的vsphere实例

这是lib vsphere-connect

const vSphereClient = vSphereConnect.createClient({
host: '',
username: '',
password: '',
ignoreSSL: true,
autoLogin: true,
exclusive: true,
})

其实我知道了。

exports.getVCenterInfo = function getVCenterInfo(req, res) {
!I would like to use an instance there!
}

我试过

  

vSphereClient.retrieve({some code here})

进入我的功能,但它不起作用。 有人能帮帮我吗?

1 个答案:

答案 0 :(得分:1)

据我所知,从lib链接你不能像const vSphereClient = vSphereConnect.createClient({那样使用它,因为在vSphereClient中你会得到未决的承诺。

也许你会像这样编写名为vsphereLib的lib:

const connect = require('vsphere-connect');

let clientInstance;

connect.createClient({
    host: 'vcenter.mydomain.com',
    username: 'administrator@vsphere.local',
    password: 'vmware1',
    ignoreSSL: true,
    autoLogin: true
})
    .then(function (client) {
        clientInstance = client;
    });

module.exports = {
    getClient: () => clientInstance,
};

用法将是:

const client = require('./vsphereLib').getClient;
exports.getVCenterInfo = function getVCenterInfo(req, res) {
client()
    .retrieve({
        type: 'VirtualMachine',
        id: ['vm-1234', 'vm-5678'],
        properties: ['name', 'config.version']
    })
    .then(function (results) {
        console.log(results);
    })
    .caught(function (err) {
        console.log(err);
    });
}

唯一的问题是如果连接失败,你的代码也会失败,所以也许你应该使用init函数扩展vsphereLib并在服务器启动之前运行它