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