Scalr\Service\OpenStack\OpenStack::listServices PHP Method

listServices() public method

Gets the list of allowed services for this tenant
public listServices ( ) : array
return array Returns the list of allowed services for this tenant
    public function listServices()
    {
        if (!isset($this->cache['services'])) {
            $cfg = $this->getConfig();
            $client = $this->getClient();
            if (!$cfg->getAuthToken() instanceof AuthToken) {
                $client->auth();
            }
            $region = $cfg->getRegion();
            foreach ($cfg->getAuthToken()->getRegionEndpoints() as $service => $info) {
                if (!empty($info[$region])) {
                    $this->cache['services'][$service] = $service;
                }
            }
        }
        return array_values($this->cache['services']);
    }

Usage Example

Esempio n. 1
0
 private function getOpenStackDetails($platform)
 {
     $params = array();
     $params["{$platform}.is_enabled"] = true;
     $params[OpenstackPlatformModule::KEYSTONE_URL] = $this->env->getPlatformConfigValue("{$platform}." . OpenstackPlatformModule::KEYSTONE_URL);
     $params[OpenstackPlatformModule::SSL_VERIFYPEER] = $this->env->getPlatformConfigValue("{$platform}." . OpenstackPlatformModule::SSL_VERIFYPEER);
     $params[OpenstackPlatformModule::USERNAME] = $this->env->getPlatformConfigValue("{$platform}." . OpenstackPlatformModule::USERNAME);
     $params[OpenstackPlatformModule::PASSWORD] = $this->env->getPlatformConfigValue("{$platform}." . OpenstackPlatformModule::PASSWORD) != '' ? '******' : '';
     $params[OpenstackPlatformModule::API_KEY] = $this->env->getPlatformConfigValue("{$platform}." . OpenstackPlatformModule::API_KEY);
     if ($platform == SERVER_PLATFORMS::ECS) {
         $params[OpenstackPlatformModule::TENANT_NAME] = $this->env->getPlatformConfigValue("{$platform}." . OpenstackPlatformModule::TENANT_NAME) != '' ? '******' : '';
     } else {
         $params[OpenstackPlatformModule::TENANT_NAME] = $this->env->getPlatformConfigValue("{$platform}." . OpenstackPlatformModule::TENANT_NAME);
     }
     $params['features'] = array();
     /* @var $config Yaml */
     $config = $this->env->getContainer()->config;
     if (isset($platform) && $config->defined("scalr.{$platform}.use_proxy") && $config("scalr.{$platform}.use_proxy") && in_array($config('scalr.connections.proxy.use_on'), ['both', 'scalr'])) {
         $params['proxySettings'] = $config('scalr.connections.proxy');
     } else {
         $params['proxySettings'] = null;
     }
     if ($params[OpenstackPlatformModule::KEYSTONE_URL]) {
         try {
             $os = new OpenStack(new OpenStackConfig($params[OpenstackPlatformModule::USERNAME], $params[OpenstackPlatformModule::KEYSTONE_URL], 'fake-region', $params[OpenstackPlatformModule::API_KEY], null, null, $this->env->getPlatformConfigValue("{$platform}." . OpenstackPlatformModule::PASSWORD), $this->env->getPlatformConfigValue("{$platform}." . OpenstackPlatformModule::TENANT_NAME), null, $params['proxySettings']));
             //$os->setDebug(true);
             $params['regions'] = $os->listZones();
             foreach ($params['regions'] as $region) {
                 try {
                     $cloudLocation = $region->name;
                     $os = new OpenStack(new OpenStackConfig($params[OpenstackPlatformModule::USERNAME], $params[OpenstackPlatformModule::KEYSTONE_URL], $cloudLocation, $params[OpenstackPlatformModule::API_KEY], null, null, $this->env->getPlatformConfigValue("{$platform}." . OpenstackPlatformModule::PASSWORD), $this->env->getPlatformConfigValue("{$platform}." . OpenstackPlatformModule::TENANT_NAME), null, $params['proxySettings']));
                     $params['features'][$cloudLocation] = array('Volumes (Cinder)' => $os->hasService('volume'), 'Security groups (Nova)' => $os->servers->isExtensionSupported(ServersExtension::securityGroups()), 'Networking (Neutron)' => $os->hasService('network'), 'Load balancing (Neutron LBaaS)' => !in_array($platform, array(SERVER_PLATFORMS::RACKSPACENG_US, SERVER_PLATFORMS::RACKSPACENG_UK)) && $os->hasService('network') ? $os->network->isExtensionSupported('lbaas') : false, 'Floating IPs (Nova)' => $os->servers->isExtensionSupported(ServersExtension::floatingIps()), 'Objects store (Swift)' => $os->hasService('object-store'));
                     $params['info'][$cloudLocation] = array('services' => $os->listServices(), 'nova_extensions' => $os->servers->listExtensions());
                     if ($os->hasService('network')) {
                         $params['info'][$cloudLocation]['neutron_url'] = $os->network->getEndpointUrl();
                         $params['info'][$cloudLocation]['neutron_extensions'] = $os->network->listExtensions();
                     }
                 } catch (Exception $e) {
                     $params['info'][$cloudLocation]['exception'] = $e->getMessage();
                 }
             }
         } catch (Exception $e) {
             //TODO: Show in UI
             $params['info']['exception'] = $e->getMessage();
         }
     }
     return $params;
 }
All Usage Examples Of Scalr\Service\OpenStack\OpenStack::listServices