/** * {@inheritdoc} * @see IPlatformModule::GetServerRealStatus() */ public function GetServerRealStatus(DBServer $DBServer) { $region = $DBServer->GetProperty(EUCA_SERVER_PROPERTIES::REGION); $iid = $DBServer->GetProperty(EUCA_SERVER_PROPERTIES::INSTANCE_ID); if (!$iid || !$region) { $status = 'not-found'; } elseif (empty($this->instancesListCache[$DBServer->GetEnvironmentObject()->id][$region][$iid])) { $euca = $DBServer->GetEnvironmentObject()->eucalyptus($region); try { $reservations = $euca->ec2->instance->describe($iid); if ($reservations && count($reservations) > 0 && $reservations->get(0)->instancesSet && count($reservations->get(0)->instancesSet) > 0) { $status = $reservations->get(0)->instancesSet->get(0)->instanceState->name; } else { $status = 'not-found'; } } catch (Exception $e) { if (stristr($e->getMessage(), "does not exist")) { $status = 'not-found'; } else { throw $e; } } } else { $status = $this->instancesListCache[$DBServer->GetEnvironmentObject()->id][$region][$iid]; } return Modules_Platforms_Eucalyptus_Adapters_Status::load($status); }
public function GetServerRealStatus(DBServer $DBServer) { $region = $DBServer->GetProperty(EUCA_SERVER_PROPERTIES::REGION); $environment = $DBServer->GetEnvironmentObject(); $iid = $DBServer->GetProperty(EUCA_SERVER_PROPERTIES::INSTANCE_ID); if (!$iid) { $status = 'not-found'; } elseif (!$this->instancesListCache[$environment->id][$region][$iid]) { $eucaClient = $this->getEucaClient($environment, $region); try { $iinfo = $eucaClient->describeInstances(array($iid)); $iinfo = $iinfo->reservationSet->item[0]; if ($iinfo) { $status = (string) $iinfo->instancesSet->item[0]->instanceState->name; } else { $status = 'not-found'; } } catch (Exception $e) { if (stristr($e->getMessage(), "does not exist")) { $status = 'not-found'; } else { throw $e; } } } else { $status = $this->instancesListCache[$environment->id][$region][$DBServer->GetProperty(EUCA_SERVER_PROPERTIES::INSTANCE_ID)]; } return Modules_Platforms_Eucalyptus_Adapters_Status::load($status); }