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