Как получить доступ к CreateNasDatastore в vmware sdk? - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь использовать Vmware Perl SDK для монтирования хранилища данных nfs, и документы ... сложные ... но пока я думал, что все получилось, я получаю:

Можетнайти метод объекта «CreateNasDatastore» через пакет «ManagedObjectReference» в строке ./mkds 65.

Я также обновил до последней версии Perl SDK (6.7) ...

Согласноhttps://pubs.vmware.com/vi3/sdk/ReferenceGuide/vim.host.DatastoreSystem.html

CreateNasDatastore - это метод в управляемом объекте HostDatastoreSystem, который является свойством HostConfigManager, поэтому для каждого хоста я получаю представление HostSystem и затем использую объект configManager-> datastoreSystem:

...
foreach my $host_view (@$host_views) {
...
    print "connected to $host\n";

    my $cf_views = Vim::find_entity_views(view_type => 'HostSystem');
    foreach my $cfv (@$cf_views) {
        my $ds = $cfv->configManager->datastoreSystem;
        print Dumper($ds);
        # no arguments yet, just trying to find out how to invoke it
        $ds->CreateNasDatastore();
        exit 0;
    }
}
connected to vcenter01.ad.casco.net
Hosts found:
1: cvo-esx5.ad.casco.net
connected to cvo-esx5.ad.casco.net
$VAR1 = bless( {
                 'value' => 'ha-datastoresystem',
                 'type' => 'HostDatastoreSystem'
               }, 'ManagedObjectReference' );
Can't locate object method "CreateNasDatastore" via package "ManagedObjectReference" at ./mkds line 65.

Я не уверен, как еще получить к нему доступ, и надеюсь, что кто-то еще понимает эту структуру лучше, чем я ...

Ответы [ 2 ]

1 голос
/ 19 апреля 2019

Документ, на который вы ссылаетесь, не относится к Perl SDK, и вполне возможно, что привязки Perl будут выглядеть немного иначе (разные условные обозначения, другой порядок ввода и тому подобное) или даже сильно отличаться от привязок для другого языка. .

Итак, вот общий совет. Чтобы увидеть методы, поддерживаемые подсказкой ManagedObjectReference, проверьте переменную stash %ManagedObjectReference::.

print "Symbols in 'ManagedObjectReference' namespace:\n\t";
print join("\n\t", sort keys %ManagedObjectReference::);

В нем будут перечислены символы в пространстве имен, некоторые из которых будут именами методов, и, возможно, они подскажут вам правильное написание метода, который вы ищете.

0 голосов
/ 20 апреля 2019

Я обнаружил, что некоторые из инструментов командной строки, установленные с SDK, являются perl, и нашел это решение в vicfg-nas (он также показывает, как построить структуру аргументов):

use VMware::VIRuntime;
use VMware::VIExt;
...
eval {
    Vim::login( user_name => $esx_user, password => $esx_pw, service_url => "https://$server/sdk");
};
...
my $datacenter_view = Vim::find_entity_view(view_type => 'Datacenter');
my $host_views = Vim::find_entity_views(view_type => 'HostSystem',
                                        begin_entity => $datacenter_view);
foreach my $host_view (@$host_views) {
    my $host = $host_view->{'name'};
    eval {
        Vim::login( user_name => $esx_user, password => $esx_pw, service_url => "https://$host/sdk");
    };

    my $ds_view = Vim::get_view(mo_ref => $host_view->{'configManager.datastoreSystem'});

    my $hostNasVolSpec = new HostNasVolumeSpec (remoteHost => $fileserver, 
                                               remotePath => $share, 
                                               localPath => $label,
                                               accessMode => $accessMode); 
    $ds_view->CreateNasDatastore(spec => $hostNasVolSpec);
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...