public function GetServerExtendedInformation(DBServer $DBServer, $extended = false)
{
try {
$cloudLocation = $DBServer->GetProperty(\OPENSTACK_SERVER_PROPERTIES::CLOUD_LOCATION);
$serverId = $DBServer->GetProperty(\OPENSTACK_SERVER_PROPERTIES::SERVER_ID);
$client = $this->getOsClient($DBServer->GetEnvironmentObject(), $cloudLocation);
$iinfo = $client->servers->getServerDetails($serverId);
if (!$this->instancesDetailsCache[$iinfo->id]) {
$this->instancesDetailsCache[$iinfo->id] = new \stdClass();
$this->instancesDetailsCache[$iinfo->id]->addresses = $iinfo->addresses;
}
$ips = $this->GetServerIPAddresses($DBServer);
if ($iinfo) {
$retval = array('Cloud Server ID' => $DBServer->GetProperty(\OPENSTACK_SERVER_PROPERTIES::SERVER_ID), 'Image ID' => $iinfo->image->id, 'Flavor ID' => $iinfo->flavor->id, 'Public IP' => $ips['remoteIp'] ? $ips['remoteIp'] : $DBServer->remoteIp, 'Private IP' => $ips['localIp'] ? $ips['localIp'] : $DBServer->localIp, 'Status' => $iinfo->status, 'Name' => $iinfo->name, 'Host ID' => $iinfo->hostId, 'Progress' => $iinfo->progress);
if ($iinfo->status == 'ERROR') {
$retval['Status'] = "{$retval['Status']} (Fault message: {$iinfo->fault->message})";
}
if ($iinfo->key_name) {
$retval['Key name'] = $iinfo->key_name;
}
if ($iinfo->availability_zone || $iinfo->{"OS-EXT-AZ:availability_zone"}) {
$retval['Availability zone'] = $iinfo->availability_zone ? $iinfo->availability_zone : $iinfo->{"OS-EXT-AZ:availability_zone"};
}
if ($iinfo->security_groups) {
$list = array();
foreach ($iinfo->security_groups as $sg) {
$list[] = $sg->name;
}
$retval['Security Groups'] = implode(", ", $list);
}
return $retval;
}
} catch (NotFoundException $e) {
return false;
} catch (\Exception $e) {
throw $e;
}
return false;
}