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;
}