public static NewPlatform ( string $platform ) : Scalr\Modules\PlatformModuleInterface | ||
$platform | string | |
return | Scalr\Modules\PlatformModuleInterface |
public static function NewPlatform($platform)
{
if (!array_key_exists($platform, self::$cache)) {
$ucPlatform = ucfirst($platform);
if ($platform == SERVER_PLATFORMS::GCE) {
self::$cache[$platform] = new \Scalr\Modules\Platforms\GoogleCE\GoogleCEPlatformModule();
} elseif ($platform == SERVER_PLATFORMS::AZURE) {
self::$cache[$platform] = new \Scalr\Modules\Platforms\Azure\AzurePlatformModule();
} elseif (in_array($platform, array(SERVER_PLATFORMS::OCS, SERVER_PLATFORMS::NEBULA, SERVER_PLATFORMS::MIRANTIS, SERVER_PLATFORMS::VIO, SERVER_PLATFORMS::CISCO, SERVER_PLATFORMS::HPCLOUD))) {
self::$cache[$platform] = new \Scalr\Modules\Platforms\Openstack\OpenstackPlatformModule($platform);
} elseif ($platform == SERVER_PLATFORMS::VERIZON) {
self::$cache[$platform] = new \Scalr\Modules\Platforms\Verizon\VerizonPlatformModule();
} elseif ($platform == SERVER_PLATFORMS::RACKSPACENG_UK) {
self::$cache[$platform] = new \Scalr\Modules\Platforms\RackspaceNgUk\RackspaceNgUkPlatformModule();
} elseif ($platform == SERVER_PLATFORMS::RACKSPACENG_US) {
self::$cache[$platform] = new \Scalr\Modules\Platforms\RackspaceNgUs\RackspaceNgUsPlatformModule();
} elseif (file_exists(__DIR__ . DIRECTORY_SEPARATOR . 'Platforms' . DIRECTORY_SEPARATOR . $ucPlatform . DIRECTORY_SEPARATOR . $ucPlatform . 'PlatformModule.php')) {
$class = __NAMESPACE__ . '\\Platforms\\' . $ucPlatform . '\\' . $ucPlatform . 'PlatformModule';
self::$cache[$platform] = new $class();
} else {
throw new Exception(sprintf("Platform %s is not supported by Scalr", $platform));
}
}
return self::$cache[$platform];
}
protected function run2($stage) { $farms = $this->db->Execute("SELECT farmid, value FROM farm_settings WHERE name='ec2.vpc.id' AND value != '' AND value IS NOT NULL"); while ($farm = $farms->FetchRow()) { $dbFarm = \DBFarm::LoadByID($farm['farmid']); $roles = $dbFarm->GetFarmRoles(); foreach ($roles as $dbFarmRole) { $vpcSubnetId = $dbFarmRole->GetSetting(Entity\FarmRoleSetting::AWS_VPC_SUBNET_ID); if ($vpcSubnetId && substr($vpcSubnetId, 0, 6) != 'subnet') { $subnets = json_decode($vpcSubnetId); $vpcSubnetId = $subnets[0]; } if ($vpcSubnetId) { try { $platform = PlatformFactory::NewPlatform(\SERVER_PLATFORMS::EC2); $info = $platform->listSubnets(\Scalr_Environment::init()->loadById($dbFarm->EnvID), $dbFarmRole->CloudLocation, $farm['value'], true, $vpcSubnetId); if ($info && $info['type'] != 'public') { $routerRole = $dbFarm->GetFarmRoleByBehavior(\ROLE_BEHAVIORS::VPC_ROUTER); $dbFarmRole->SetSetting(\Scalr_Role_Behavior_Router::ROLE_VPC_SCALR_ROUTER_ID, $routerRole->ID); $this->console->out("Updating router.scalr.farm_role_id property for Farm Role: %s", $dbFarmRole->ID); } } catch (\Exception $e) { continue; } } } } }