Scalr\Modules\PlatformFactory::NewPlatform PHP Method

NewPlatform() public static method

Create platform instance
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];
    }

Usage Example

Ejemplo n.º 1
0
 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;
                 }
             }
         }
     }
 }
All Usage Examples Of Scalr\Modules\PlatformFactory::NewPlatform