Я использую nodejs и коды узла достаточно просты (с использованием некоторых из сказочных здесь, но задача похожа на обещание):Vsphere CreateContainerView/RetrievePropertiesEx возвращает только 100 объектов
const connect = (vcenter) => {
return new Task((reject, resolve) => {
const Vsphere = require('vsphere');
const vc = new Vsphere.Client(vcenter, 'me', 'myPass', false);
vc.once('ready',() => resolve(vc));
vc.once('error', reject);
})
}
const getVirtualMachines = (vc) => {
return new Task((reject, resolve) => {
const rootFolder = vc.serviceContent.rootFolder;
const vms = vc.getMORefsInContainerByType(rootFolder, 'VirtualMachine');
vms.once('result', resolve)
vms.once('error', reject)
})
}
connect(vcenterIp).
chain(getVirtualMachines).
// SNIP (this isn't significant)
fork(e2,f2)
и результаты в отправка этих запросов
CreateContainerView
{
"_this": {
"attributes": {
"type": "ViewManager"
},
"$value": "ViewManager"
},
"container": {
"attributes": {
"type": "Folder"
},
"$value": "group-d1"
},
"type": "VirtualMachine",
"recursive": true
}
RetrievePropertiesEx
{
"_this": {
"attributes": {
"type": "PropertyCollector"
},
"$value": "propertyCollector"
},
"specSet": [
{
"attributes": {
"xsi:type": "PropertyFilterSpec"
},
"propSet": [
{
"attributes": {
"xsi:type": "PropertySpec"
},
"type": "VirtualMachine",
"all": true
}
],
"objectSet": [
{
"attributes": {
"xsi:type": "ObjectSpec"
},
"obj": {
"attributes": {
"type": "ContainerView"
},
"$value": "session[520e031b-3c15-9c1d-408a-45ab98bde1dc]52dfe626-a128-c94f-8c4c-df52a68d97c0"
},
"skip": true,
"selectSet": [
{
"attributes": {
"xsi:type": "TraversalSpec"
},
"type": "ContainerView",
"path": "view",
"skip": false
}
]
}
]
}
],
"options": {}
}
Который возвращает
{ returnval:
{ token: '0',
objects:
[ [Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object] ] } }
Проблема я вижу я s, что API возвращает всего 100 элементов, в то время как в моей среде более 100VM.
Я действительно хочу, чтобы запрос, чтобы вернуть все мои виртуальные машины
обновления 1:
Чтобы вызвать одну операцию сбора свойство, вызовите метод RetrievePropertiesEx. Пример приложения передает заполненный PropertyFilterSpec и пустую структуру опций в метод . По умолчанию для RetrieveOptions.maxObjects указано, что не установлено максимальное количество возвращаемых объектов. PropertyCollector может наложить максимум. Если количество собранных объектов больше, чем максимум, PropertyCollector возвращает значения маркеров в объекте RetrieveResult данных и этот маркер используется для извлечения остальных свойств, используя ContinueRetrievePropertiesEx метод API
обновление 2
ОК, глядя на возвращаемые результаты vSPehere возвращает меня к ken код. и библиотека node-vsphere не должна извлекать все результаты. Мне нужно выяснить способ получить все результаты за один шаг.
Есть ли способ изменить значение RetrieveOptions.maxObjects? –
Не то, что мог бы найти. – akaphenom