我试图在许多函数中使用相同的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})
进入我的功能,但它不起作用。 有人能帮帮我吗?
答案 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并在服务器启动之前运行它