Scalr\Modules\Platforms\Openstack\OpenstackPlatformModule::GetServerExtendedInformation PHP Метод

GetServerExtendedInformation() публичный Метод

См. также: Scalr\Modules\PlatformModuleInterface::GetServerExtendedInformation()
public GetServerExtendedInformation ( DBServer $DBServer, $extended = false )
$DBServer DBServer
    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;
    }