Created
August 27, 2012 16:46
-
-
Save scr34m/3490246 to your computer and use it in GitHub Desktop.
VMWare vSphere List VM's with PHP using webservices
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
class soapclientd extends soapclient | |
{ | |
public $action = false; | |
public function __construct($wsdl, $options = array()) | |
{ | |
parent::__construct($wsdl, $options); | |
} | |
public function __doRequest($request, $location, $action, $version, $one_way = 0) | |
{ | |
// echo '<pre>' . htmlspecialchars(str_replace(array ('<ns', '></'), array (PHP_EOL . '<ns', '>'.PHP_EOL.'</'), $request)) . '</pre>'; | |
$resp = parent::__doRequest($request, $location, $action, $version, $one_way); | |
return $resp; | |
} | |
} | |
$client = new soapclientd('vimService.wsdl', array ('location' => 'http://10.1.0.47/sdk', 'trace' => 1)); | |
try | |
{ | |
$request = new stdClass(); | |
$request->_this = array ('_' => 'ServiceInstance', 'type' => 'ServiceInstance'); | |
$response = $client->__soapCall('RetrieveServiceContent', array((array)$request)); | |
} catch (Exception $e) | |
{ | |
echo $e->getMessage(); | |
exit; | |
} | |
$ret = $response->returnval; | |
try | |
{ | |
$request = new stdClass(); | |
$request->_this = $ret->sessionManager; | |
$request->userName = 'root'; | |
$request->password = 'abc123456'; | |
$response = $client->__soapCall('Login', array((array)$request)); | |
} catch (Exception $e) | |
{ | |
echo $e->getMessage(); | |
exit; | |
} | |
$ss1 = new soapvar(array ('name' => 'FolderTraversalSpec'), SOAP_ENC_OBJECT, null, null, 'selectSet', null); | |
$ss2 = new soapvar(array ('name' => 'DataCenterVMTraversalSpec'), SOAP_ENC_OBJECT, null, null, 'selectSet', null); | |
$a = array ('name' => 'FolderTraversalSpec', 'type' => 'Folder', 'path' => 'childEntity', 'skip' => false, $ss1, $ss2); | |
$ss = new soapvar(array ('name' => 'FolderTraversalSpec'), SOAP_ENC_OBJECT, null, null, 'selectSet', null); | |
$b = array ('name' => 'DataCenterVMTraversalSpec', 'type' => 'Datacenter', 'path' => 'vmFolder', 'skip' => false, $ss); | |
$res = null; | |
try | |
{ | |
$request = new stdClass(); | |
$request->_this = $ret->propertyCollector; | |
$request->specSet = array ( | |
'propSet' => array ( | |
array ('type' => 'VirtualMachine', 'all' => 0, 'pathSet' => array ('name', 'guest.ipAddress', 'guest.guestState', 'runtime.powerState', 'config.hardware.numCPU', 'config.hardware.memoryMB')), | |
), | |
'objectSet' => array ( | |
'obj' => $ret->rootFolder, | |
'skip' => false, | |
'selectSet' => array ( | |
new soapvar($a, SOAP_ENC_OBJECT, 'TraversalSpec'), | |
new soapvar($b, SOAP_ENC_OBJECT, 'TraversalSpec'), | |
), | |
) | |
); | |
$res = $client->__soapCall('RetrieveProperties', array((array)$request)); | |
} catch (Exception $e) | |
{ | |
echo $e->getMessage(); | |
} | |
echo '<pre>'; | |
print_r($res); |
hi guys, im struggling here
i have this error
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'vimService.wsdl' : failed to load external entity "vimService.wsdl" in C:\xampp\htdocs\product-admin-master\view\listvms.php:14 Stack trace: #0 C:\xampp\htdocs\product-admin-master\view\listvms.php(14): SoapClient->SoapClient('vimService.wsdl', Array) #1 C:\xampp\htdocs\product-admin-master\view\listvms.php(26): soapclientd->__construct('vimService.wsdl', Array) #2 {main} thrown in
it will be a huge favor if someone help me in this .
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi Seem03
I added as you recommended but. got the same error :(
$client = new soapclientd('vimService.wsdl', array ( 'location' => 'https://esxi.domain.com.fr/sdk', 'trace' => 1, 'exceptions' => 1, "stream_context" => stream_context_create( array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, ) ) ) ));