public function GetServerRealStatus(DBServer $DBServer) { $region = $DBServer->GetProperty(EC2_SERVER_PROPERTIES::REGION); $iid = $DBServer->GetProperty(EC2_SERVER_PROPERTIES::INSTANCE_ID); if (!$iid || !$region) { $status = 'not-found'; } elseif (!$this->instancesListCache[$DBServer->GetEnvironmentObject()->id][$region][$iid]) { $EC2Client = Scalr_Service_Cloud_Aws::newEc2($region, $DBServer->GetEnvironmentObject()->getPlatformConfigValue(self::PRIVATE_KEY), $DBServer->GetEnvironmentObject()->getPlatformConfigValue(self::CERTIFICATE)); try { $iinfo = $EC2Client->DescribeInstances($iid); $iinfo = $iinfo->reservationSet->item; if ($iinfo) { $status = (string) $iinfo->instancesSet->item->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][$DBServer->GetProperty(EC2_SERVER_PROPERTIES::INSTANCE_ID)]; } return Modules_Platforms_Ec2_Adapters_Status::load($status); }
/** * {@inheritdoc} * @see IPlatformModule::GetServerRealStatus() */ public function GetServerRealStatus(DBServer $DBServer) { $region = $DBServer->GetProperty(EC2_SERVER_PROPERTIES::REGION); $iid = $DBServer->GetProperty(EC2_SERVER_PROPERTIES::INSTANCE_ID); if (!$iid || !$region) { $status = 'not-found'; } elseif (empty($this->instancesListCache[$DBServer->GetEnvironmentObject()->id][$region][$iid])) { $aws = $DBServer->GetEnvironmentObject()->aws($region); try { $reservations = $aws->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_Ec2_Adapters_Status::load($status); }