cloud-env
Advanced tools
Comparing version 0.1.1 to 0.2.0
56
index.js
@@ -64,19 +64,57 @@ var defaults = { | ||
MYSQL_DB_PASSWORD: process.env.OPENSHIFT_MYSQL_DB_PASSWORD | ||
}, | ||
v3: { | ||
APP_NAME: process.env.OPENSHIFT_BUILD_NAMESPACE, | ||
MONGODB_DB_HOST: process.env.MONGODB_SERVICE_HOST, | ||
MONGODB_DB_PORT: process.env.MONGODB_SERVICE_PORT, | ||
MONGODB_DB_USERNAME: process.env.MONGODB_USER, | ||
MONGODB_DB_PASSWORD: process.env.MONGODB_PASSWORD, | ||
POSTGRESQL_DB_HOST: process.env.POSTGRESQL_SERVICE_HOST, | ||
POSTGRESQL_DB_PORT: process.env.POSTGRESQL_SERVICE_PORT, | ||
POSTGRESQL_DB_USERNAME: process.env.POSTGRESQL_USER, | ||
POSTGRESQL_DB_PASSWORD: process.env.POSTGRESQL_PASSWORD, | ||
MYSQL_DB_HOST: process.env.MYSQL_SERVICE_HOST, | ||
MYSQL_DB_PORT: process.env.MYSQL_SERVICE_PORT, | ||
MYSQL_DB_USERNAME: process.env.MYSQL_USER, | ||
MYSQL_DB_PASSWORD: process.env.MYSQL_PASSWORD | ||
} | ||
} | ||
var find_key = function (key, default_key){ | ||
return defaults.openshift[key] || defaults.cloud[key] || default_key || defaults.dev[key]; | ||
} | ||
var resolve_config = function (){ | ||
var env = {}; | ||
var self_svc_key = false; | ||
var db_names = ['postgresql','mongodb','mysql']; | ||
var db_key = ''; | ||
var svc_name = process.env.OPENSHIFT_BUILD_NAME; | ||
var resolve_config = function (){ | ||
var env = {} | ||
//kubernetes and openshiftV3 configs | ||
// Detect service host and port from v3 build namespace | ||
if(svc_name){ | ||
// strip build number | ||
self_svc_key = svc_name.replace(/-\d+$/,'').toUpperCase().replace(/-/g, '_'); | ||
defaults.v3['PORT'] = process.env[self_svc_key+'_SERVICE_PORT']; | ||
defaults.v3['IP'] = process.env[self_svc_key+'_SERVICE_HOST']; | ||
} | ||
// Sniff common v3 database configs | ||
for(var db in db_names){ | ||
db_key = db_names[db].toUpperCase(); | ||
if( process.env[db_key+'_USER'] && process.env[db_key+'_PASSWORD'] && process.env[db_key+'_SERVICE_HOST'] && process.env[db_key+'_SERVICE_PORT'] ) | ||
{ | ||
defaults.v3[db_key+'_DB_URL'] = db_names[db]+"://"+process.env[db_key+'_USER']+":"+process.env[db_key+'_PASSWORD']+"@"+process.env[db_key+'_SERVICE_HOST']+":"+process.env[db_key+'_SERVICE_PORT']; | ||
} | ||
} | ||
env.defaults = defaults; | ||
// config key accessor | ||
env.get = function (key, default_key){ | ||
return defaults.v3[key] || defaults.openshift[key] || defaults.cloud[key] || default_key || defaults.dev[key]; | ||
} | ||
// collapse / unify available configs | ||
for(var key in defaults.cloud){ | ||
env[key] = find_key(key); | ||
env[key] = env.get(key); | ||
} | ||
return env | ||
return env; | ||
} | ||
var exports = module.exports = resolve_config(); | ||
exports.defaults = defaults | ||
exports.get = find_key |
@@ -8,3 +8,3 @@ { | ||
}, | ||
"version": "0.1.1", | ||
"version": "0.2.0", | ||
"description": "Consistent naming for cloud-provided server config strings", | ||
@@ -11,0 +11,0 @@ "dependencies": {}, |
@@ -5,3 +5,3 @@ #cloud-env [![npm version](http://img.shields.io/npm/v/cloud-env.svg)](https://www.npmjs.org/package/cloud-env) [![Build Status](http://img.shields.io/travis/ryanj/cloud-env.svg)](https://travis-ci.org/ryanj/cloud-env) | ||
It works by checking the system environment (`process.env`) for known configuration strings (published by [OpenShift](http://openshift.com/), [Heroku](http://heroku.com/)), normalizing the results into [a well-defined list](#configuration-strings). | ||
It works by checking the system environment (`process.env`) for known configuration strings (published by [OpenShift](http://openshift.com/), [Heroku](http://heroku.com/) [Modulus](http://help.modulus.io/customer/portal/articles/1660583)), normalizing the results into [a well-defined list](#configuration-strings). | ||
@@ -8,0 +8,0 @@ [![npm stats](https://nodei.co/npm/cloud-env.png?downloads=true&stars=true)](https://www.npmjs.org/package/cloud-env) |
11061
114