def test_nested_default(self): self.assertEqual(envitro.int('TEST_NOPE_INT', envitro.str('TEST_NOPE_STR', '123')), 123) self.assertEqual(envitro.str('TEST_NOPE_STR', envitro.int('TEST_NOPE_INT', 123)), '123') self.assertEqual(envitro.bool('TEST_NOPE_BOOL', envitro.int('TEST_NOPE_INT', 123)), True) self.assertEqual(envitro.bool('TEST_NOPE_BOOL', envitro.int('TEST_NOPE_INT', 0)), False) self.assertEqual(envitro.bool('TEST_NOPE_BOOL', envitro.int('TEST_NOPE_INT', 123)), True) self.assertEqual(envitro.bool('TEST_NOPE_BOOL', envitro.str('TEST_NOPE_STR', 'false')), False) self.assertEqual(envitro.bool('TEST_NOPE_BOOL', envitro.str('TEST_NOPE_STR', '')), False)
def test_none_str(self): if 'DOES_NOT_EXIST_STR' in os.environ: del os.environ['DOES_NOT_EXIST_STR'] self.assertEqual(envitro.str('DOES_NOT_EXIST_STR', allow_none=True), None)
def assert_get_set_str(self, value, expected_value): os.environ['TEST_STR'] = value self.assertEqual(envitro.str('TEST_STR'), expected_value)
# -*- coding: utf-8 -*- import envitro import pyrax # pyrax connection pyrax.set_setting("identity_type", "rackspace") pyrax.set_setting("region", envitro.str("RAX_REGION", "DFW")) pyrax.set_credentials(envitro.str("RAX_ACCOUNT"), envitro.str("RAX_API")) cdb = pyrax.cloud_databases BACKUP_NAME = envitro.str("BACKUP_NAME", "rax-db-backup") MAX_BACKUPS = envitro.int("MAX_BACKUPS", 30) instances = cdb.list() for instance in instances: # create the backup instance.create_backup(BACKUP_NAME) # get the backups and delete the extra ones if there are too many backups = instance.list_backups() backups_filtered = filter(lambda backup: backup.name == BACKUP_NAME, backups) if len(backups_filtered) > MAX_BACKUPS: for backup in backups_filtered[MAX_BACKUPS:]: backup.delete()
def test_invalid(self): if 'DOES_NOT_EXIST' in os.environ: del os.environ['DOES_NOT_EXIST'] with self.assertRaises(KeyError): envitro.str('DOES_NOT_EXIST')
# -*- coding: utf-8 -*- import envitro import etcd ETCD_HOST = envitro.str('ETCD_HOST', '172.17.42.1') # coreos default ETCD_PORT = envitro.int('ETCD_PORT', 2379) ETCD_KEY_REDIS = envitro.str('ETCD_KEY_REDIS', '/services/redis') REDIS_HOST = envitro.str('REDIS_HOST', allow_none=True) REDIS_PORT = envitro.int('REDIS_PORT', allow_none=True) # if the redis host and port were not explicitly set, try and infer them from etcd if not (REDIS_HOST and REDIS_PORT): try: client = etcd.Client(host=ETCD_HOST, port=ETCD_PORT, read_timeout=5) vals = client.read(ETCD_KEY_REDIS).children.next().value.rsplit(':', 1) REDIS_HOST = vals[0] REDIS_PORT = int(vals[1]) except: print('No ETCD connection. Using localhost defaults.') REDIS_HOST = '127.0.0.1' REDIS_PORT = 6379 ##### Redis ##### REDIS_DB = envitro.int('REDIS_DB', 0)
# django/tastypie/libs import envitro import pyrax import warnings from django.conf import settings # pyrax connection RACKSPACE_USERNAME = envitro.str('RACKSPACE_USERNAME') RACKSPACE_APIKEY = envitro.str('RACKSPACE_APIKEY') # attributes try: pyrax.set_setting('identity_type', 'rackspace') pyrax.set_setting('region', 'DFW') pyrax.set_credentials(RACKSPACE_USERNAME, RACKSPACE_APIKEY) cloud_files = pyrax.connect_to_cloudfiles( public=settings.CLOUDFILES_PUBLIC_NETWORK) except: warnings.warn('Not able to setup CloudFiles connection') cloud_files = None
For the full list of settings and their values, see https://docs.djangoproject.com/en/1.9/ref/settings/ """ import os import envitro import dj_database_url # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/1.9/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = envitro.str('SECRET_KEY') # SECURITY WARNING: don't run with debug turned on in production! DEBUG = envitro.bool('DEBUG', False) ALLOWED_HOSTS = ['*'] # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages',
# -*- coding: utf-8 -*- from __future__ import absolute_import import envitro import pymysql pymysql.install_as_MySQLdb() DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': envitro.str('DATABASE_NAME', 'snapabledb'), 'USER': envitro.str('DATABASE_USER', 'snapableusr'), 'PASSWORD': envitro.str('DATABASE_PASSWORD', 'snapable12345'), 'HOST': envitro.str('DATABASE_HOST', '127.0.0.1'), 'PORT': envitro.int('DATABASE_PORT', 3306), } }
# -*- coding: utf-8 -*- import envitro EMAIL_BACKEND = 'api.utils.email.SnapEmailBackend' EMAIL_HOST = envitro.str('EMAIL_HOST', 'smtp.mailgun.org') EMAIL_PORT = envitro.int('EMAIL_PORT', 587) EMAIL_USE_TLS = envitro.bool('EMAIL_USE_TLS', True) EMAIL_HOST_USER = envitro.str('EMAIL_HOST_USER') EMAIL_HOST_PASSWORD = envitro.str('EMAIL_HOST_PASSWORD') ##### sendwithus ##### SENDWITHUS_KEY = envitro.str('SENDWITHUS_KEY') # no email
# -*- coding: utf-8 -*- import envitro # sentry/raven if envitro.isset('SENTRY_DSN'): RAVEN_CONFIG = { 'dsn': envitro.str('SENTRY_DSN'), } LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'verbose': { 'format': '%(asctime)s [%(process)d] [%(levelname)s] %(message)s' }, 'simple': { 'format': '[%(levelname)s] %(message)s' }, 'requests': { 'format': '%(asctime)s %(message)s' }, }, 'handlers': { 'console': { 'level': 'DEBUG', 'class': 'logging.StreamHandler', 'formatter': 'simple', }, 'console.requests': { 'level': 'INFO',
# -*- coding: utf-8 -*- import envitro ##### RACKSPACE ##### CLOUDFILES_IMAGES_PREFIX = envitro.str('CLOUDFILES_IMAGES_PREFIX', 'dev_images_') CLOUDFILES_DOWNLOAD_PREFIX = envitro.str('CLOUDFILES_DOWNLOAD_PREFIX', 'dev_downloads_') CLOUDFILES_WATERMARK_PREFIX = envitro.str('CLOUDFILES_WATERMARK_PREFIX', 'dev_watermark') CLOUDFILES_EVENTS_PER_CONTAINER = 10000 CLOUDFILES_PUBLIC_NETWORK = envitro.bool('CLOUDFILES_PUBLIC_NETWORK', True)