Scalr\Modules\Platforms\Cloudstack\Helpers\CloudstackHelper::getSharedIP PHP Method

getSharedIP() public static method

public static getSharedIP ( DBServer $dbServer )
$dbServer DBServer
    public static function getSharedIP(\DBServer $dbServer)
    {
        $remoteIp = null;
        $platform = PlatformFactory::NewPlatform($dbServer->platform);
        $ips = $platform->GetServerIPAddresses($dbServer);
        if ($ips['remoteIp']) {
            $remoteIp = $ips['remoteIp'];
            $dbServer->GetFarmRoleObject()->SetSetting(Entity\FarmRoleSetting::CLOUDSTACK_NETWORK_TYPE, 'Direct', Entity\FarmRoleSetting::TYPE_LCL);
        } else {
            if ($dbServer->farmRoleId) {
                $dbFarmRole = $dbServer->GetFarmRoleObject();
                $networkType = $dbFarmRole->GetSetting(Entity\FarmRoleSetting::CLOUDSTACK_NETWORK_TYPE);
                if ($networkType == 'Direct') {
                    $remoteIp = $ips['localIp'];
                } else {
                    $useStaticNat = $dbFarmRole->GetSetting(Entity\FarmRoleSetting::CLOUDSTACK_USE_STATIC_NAT);
                    $networkId = $dbFarmRole->GetSetting(Entity\FarmRoleSetting::CLOUDSTACK_NETWORK_ID);
                    if (!$useStaticNat && $networkId != 'SCALR_MANUAL') {
                        $sharedIp = $dbFarmRole->GetSetting(Entity\FarmRoleSetting::CLOUDSTACK_SHARED_IP_ADDRESS);
                        if (!$sharedIp) {
                            $dbServer->GetEnvironmentObject()->keychain($dbServer->platform)->properties[Entity\CloudCredentialsProperty::CLOUDSTACK_SHARED_IP . ".{$dbServer->GetProperty(\CLOUDSTACK_SERVER_PROPERTIES::CLOUD_LOCATION)}"];
                        } else {
                            $remoteIp = $sharedIp;
                        }
                    }
                }
            }
        }
        return $remoteIp;
    }

Usage Example

 /**
  * {@inheritdoc}
  * @see \Scalr\Modules\PlatformModuleInterface::ResumeServer()
  */
 public function ResumeServer(DBServer $DBServer)
 {
     $cs = $DBServer->GetEnvironmentObject()->cloudstack($this->platform);
     try {
         $cs->instance->start($DBServer->GetProperty(CLOUDSTACK_SERVER_PROPERTIES::SERVER_ID));
     } catch (NotFoundException $e) {
         throw new InstanceNotFoundException($e->getMessage(), $e->getCode(), $e);
     }
     $remoteIp = CloudstackHelper::getSharedIP($DBServer);
     if ($remoteIp) {
         $DBServer->remoteIp = $remoteIp;
     }
     parent::ResumeServer($DBServer);
     return true;
 }
All Usage Examples Of Scalr\Modules\Platforms\Cloudstack\Helpers\CloudstackHelper::getSharedIP