Example #1
0
 /**
  * {@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);
 }
Example #2
0
 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);
 }