def root(): paas_prov = provider.detect() if paas_prov == provider.HEROKU: return 'staticfiles' if paas_prov == provider.GONDOR: return os.path.join(os.environ['GONDOR_DATA_DIR'], 'site_media', 'static') if paas_prov == provider.DOTCLOUD: return '/home/dotcloud/volatile/static/' return 'wsgi/static'
def data_dir(default='data'): """ Return persistent data directory or ``default`` if not found Warning: Do not use this directory to store sqlite databases in producction """ if 'OPENSHIFT_DATA_DIR' in os.environ: return os.environ['OPENSHIFT_DATA_DIR'] if 'GONDOR_DATA_DIR' in os.environ: return os.environ['GONDOR_DATA_DIR'] if provider.detect() == provider.DOTCLOUD: return os.path.expanduser('~/data') return default
def config(default=None, engine=None): provider_detected = provider.detect() url = None if provider_detected == provider.DOTCLOUD: with open('/home/dotcloud/environment.json', 'r') as f: os.environ.update(json.load(f)) for key in os.environ: for re_key in re_keys: if re_key.match(key): url = os.environ[key] break if not url: return parse(default, engine) conf = parse(url, engine) if provider_detected == provider.OPENSHIFT: if 'OPENSHIFT_POSTGRESQL_DB_URL' in os.environ: conf['NAME'] = os.environ['PGDATABASE'] elif 'OPENSHIFT_MYSQL_DB_URL' in os.environ: conf['NAME'] = os.environ['OPENSHIFT_APP_NAME'] return conf
def test_detect_unknown(self): self.assertEqual(provider.detect(), 'unknown')
def test_detect_gondor(self): os.environ['GONDOR_xxx'] = '' self.assertEqual(provider.detect(), 'gondor')
def test_detect_dotcloud(self, mock): self.assertEqual(provider.detect(), 'dotcloud') mock.assert_called_with('/home/dotcloud/environment.json')
def test_detect_openshift(self): os.environ['OPENSHIFT_xxx'] = '' self.assertEqual(provider.detect(), 'openshift')
def test_detect_heroku(self): os.environ['DYNO'] = '' self.assertEqual(provider.detect(), 'heroku')