Skip to content

Commit

Permalink
Merge pull request #353 from nodejitsu/new-providers
Browse files Browse the repository at this point in the history
Support for the new databases providers
  • Loading branch information
AvianFlu committed Nov 9, 2012
2 parents 85349bc + bae3790 commit 2a39482
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 22 deletions.
67 changes: 50 additions & 17 deletions lib/jitsu/commands/databases.js
Expand Up @@ -21,7 +21,7 @@ databases.usage = [
'Valid database types are: ' + 'couch'.magenta + ', ' + 'redis'.magenta + ', or ' + 'mongo'.magenta 'Valid database types are: ' + 'couch'.magenta + ', ' + 'redis'.magenta + ', or ' + 'mongo'.magenta
]; ];


databases.available = ['couch', 'redis', 'mongo']; databases.available = ['couch', 'redis', 'mongo', 'mongohq', 'redistogo'];


// //
// Micro aliasing for databases command // Micro aliasing for databases command
Expand All @@ -35,7 +35,9 @@ databases.available = ['couch', 'redis', 'mongo'];
databases.aliases = { databases.aliases = {
couch : ['c', 'couchdb'], couch : ['c', 'couchdb'],
redis : ['r'], redis : ['r'],
mongo : ['m', 'mongodb'] mongo : ['m', 'mongodb'],
mongohq: [],
redistogo: []
}; };


// //
Expand Down Expand Up @@ -167,7 +169,9 @@ databases.create.usage = [
'', '',
'jitsu databases create couch <database name>', 'jitsu databases create couch <database name>',
'jitsu databases create mongo <database name>', 'jitsu databases create mongo <database name>',
'jitsu databases create redis <database name>' 'jitsu databases create redis <database name>',
'jitsu databases create mongohq <database name>',
'jitsu databases create redistogo <database name>',
]; ];


databases.get = function (databaseName, callback) { databases.get = function (databaseName, callback) {
Expand Down Expand Up @@ -299,25 +303,38 @@ var printDatabase = function (database) {


switch (database.type) { switch (database.type) {
case 'couch': case 'couch':
var subdomain = database.metadata.id.split('/')[1];
printBase(database); printBase(database);

var connUrl, sslConnUrl;
var connUrl = 'http://' + subdomain + '.iriscouch.com:5984',
sslConnUrl = 'https://' + subdomain + '.iriscouch.com:6984'; // We will need support the databases created using the old way
// So we check if
if (database.metadata.id.indexOf('/') !== -1) {
var subdomain = database.metadata.id.split('/')[1];
connUrl = 'http://' + subdomain + '.iriscouch.com:5984';
sslConnUrl = 'https://' + subdomain + '.iriscouch.com:6984';
} else {
connUrl = 'http://' + database.metadata.host + ':5984',
sslConnUrl = 'https://' + database.metadata.host + ':' + database.metadata.port;
}


jitsu.log.data('Connection url: ' + connUrl.grey); jitsu.log.data('Connection url: ' + connUrl.grey);
jitsu.log.data('SSL connection url: ' + sslConnUrl.grey); jitsu.log.data('SSL connection url: ' + sslConnUrl.grey);
break; break;


case 'mongo': case 'mongo':
case 'mongohq':
printBase(database); printBase(database);
jitsu.log.data('Connection url: ' + (database.metadata.config.MONGOHQ_URL).grey); if (database.metadata.config && database.metadata.config.MONGOHQ_URL) {
jitsu.log.data('Connection url: ' + (database.metadata.config.MONGOHQ_URL).grey);
} else {
jitsu.log.data('Connection url: ' + database.metadata.uri.grey + '/'.grey + database.metadata.dbname.grey);
}
break; break;


case 'redis': case 'redis':
var port = database.metadata.port, var port = database.metadata.port,
password = database.metadata.password, password = database.metadata.password,
server = database.metadata.label.split('-')[0] + '.redistogo.com'; server = (database.metadata.label) ? database.metadata.label.split('-')[0] + '.redistogo.com' : database.metadata.host;


printBase(database); printBase(database);
jitsu.log.data('Connection host: ' + server.grey); jitsu.log.data('Connection host: ' + server.grey);
Expand All @@ -336,10 +353,16 @@ var printDbHelp = function (database) {


switch (database.type) { switch (database.type) {
case 'couch': case 'couch':
var subdomain = database.metadata.id.split('/')[1]; var connUrl, sslConnUrl;


var connUrl = 'http://' + subdomain + '.iriscouch.com:5984', if (database.metadata.id.indexOf('/') !== -1) {
sslConnUrl = 'https://' + subdomain + '.iriscouch.com:6984'; var subdomain = database.metadata.id.split('/')[1];
connUrl = 'http://' + subdomain + '.iriscouch.com:5984';
sslConnUrl = 'https://' + subdomain + '.iriscouch.com:6984';
} else {
connUrl = 'http://' + database.metadata.host + ':5984',
sslConnUrl = 'https://' + database.metadata.host + ':' + database.metadata.port;
}


// TODO: Only write this if in some "verbose" mode. // TODO: Only write this if in some "verbose" mode.
[ [
Expand All @@ -361,8 +384,17 @@ var printDbHelp = function (database) {
break; break;


case 'mongo': case 'mongo':
var parsed = require('url').parse(database.metadata.config.MONGOHQ_URL), case 'mongohq':
auth = parsed.auth.split(':'); var parsed, auth, uri;
if (database.metadata.config && database.metadata.config.MONGOHQ_URL) {
parsed = require('url').parse(database.metadata.config.MONGOHQ_URL);
auth = parsed.auth.split(':');
uri = database.metadata.config.MONGOHQ_URL;
} else {
parsed = require('url').parse(database.metadata.uri + '/' + database.metadata.dbname);
auth = [database.metadata.username, database.metadata.password];
uri = database.metadata.uri + '/' + database.metadata.dbname;
}


// TODO: Only write this if in some "verbose" mode. // TODO: Only write this if in some "verbose" mode.
[ [
Expand All @@ -387,16 +419,17 @@ var printDbHelp = function (database) {
'Connect with the `' + 'mongoose'.magenta + '` module:', 'Connect with the `' + 'mongoose'.magenta + '` module:',
'', '',
' var mongoose = require(\'mongoose\');', ' var mongoose = require(\'mongoose\');',
' mongoose.connect(\'' + database.metadata.config.MONGOHQ_URL + '\');', ' mongoose.connect(\'' + uri + '\');',
'' ''
].forEach(printHelp); ].forEach(printHelp);


break; break;


case 'redis': case 'redis':
case 'redistogo':
var port = database.metadata.port, var port = database.metadata.port,
password = database.metadata.password, password = database.metadata.password,
server = database.metadata.label.split('-')[0] + '.redistogo.com'; server = (database.metadata.label) ? database.metadata.label.split('-')[0] + '.redistogo.com' : database.metadata.host;


[ [
'', '',
Expand Down
12 changes: 7 additions & 5 deletions test/commands/databases-test.js
Expand Up @@ -141,11 +141,13 @@ vows.describe('jitsu/commands/databases').addBatch({
type: "mongo", type: "mongo",
user: "tester", user: "tester",
metadata: { metadata: {
ok: true, id: 63562,
created: true, port: 10039,
config: { host: 'this.is.only.a.test.mongohq.com',
MONGOHQ_URL: 'mongo://nodejitsu:pass@this.is.only.a.test.mongohq.com/path' uri: 'mongo://nodejitsu:pass@this.is.only.a.test.mongohq.com:10039',
} username: 'nodejitsu',
password: 'pass',
dbname: '/path'
}, },
id: "tester-test3", id: "tester-test3",
resource: "Database" resource: "Database"
Expand Down

0 comments on commit 2a39482

Please sign in to comment.