From 8fa333afc3c47f07cf667b3dd8bc37315a41b148 Mon Sep 17 00:00:00 2001 From: Hage Yaapa Date: Wed, 21 Jun 2017 16:38:29 +0530 Subject: [PATCH] Support for IBM Object Storage --- lib/application.js | 9 ++++++++ package.json | 1 + test/fixtures/object-storage-app/package.json | 5 ++++ .../server/datasources.json | 12 ++++++++++ .../object-storage-app/server/server.js | 13 +++++++++++ test/object-storage.test.js | 23 +++++++++++++++++++ 6 files changed, 63 insertions(+) create mode 100644 test/fixtures/object-storage-app/package.json create mode 100644 test/fixtures/object-storage-app/server/datasources.json create mode 100644 test/fixtures/object-storage-app/server/server.js create mode 100644 test/object-storage.test.js diff --git a/lib/application.js b/lib/application.js index 4ca66653..90f8e457 100644 --- a/lib/application.js +++ b/lib/application.js @@ -225,6 +225,15 @@ app.models = function() { * @param {Object} config The data source config */ app.dataSource = function(name, config) { + // some connectors are aliases to loopback-component-storage + if (['object-storage'].indexOf(config.connector) > -1) { + config.provider = 'openstack'; + config.connector = 'loopback-component-storage'; + config.useServiceCatalog = ('useServiceCatalog' in config) ? config.useServiceCatalog : true; + config.useInternal = ('useInternal' in config) ? config.useInternal : false; + config.keystoneAuthVersion = config.keystoneAuthVersion || 'v3'; + } + try { var ds = dataSourcesFromConfig(name, config, this.connectors, this.registry); this.dataSources[name] = diff --git a/package.json b/package.json index 0f7b78f5..d177255e 100644 --- a/package.json +++ b/package.json @@ -89,6 +89,7 @@ "karma-phantomjs-launcher": "^1.0.0", "karma-script-launcher": "^1.0.0", "loopback-boot": "^2.7.0", + "loopback-component-storage": "^3.2.0", "loopback-context": "^1.0.0", "mocha": "^3.0.0", "nyc": "^10.1.2", diff --git a/test/fixtures/object-storage-app/package.json b/test/fixtures/object-storage-app/package.json new file mode 100644 index 00000000..0c927ef1 --- /dev/null +++ b/test/fixtures/object-storage-app/package.json @@ -0,0 +1,5 @@ +{ + "name": "object-storage-app", + "version": "1.0.0", + "main": "server/server.js" +} diff --git a/test/fixtures/object-storage-app/server/datasources.json b/test/fixtures/object-storage-app/server/datasources.json new file mode 100644 index 00000000..cd73bce2 --- /dev/null +++ b/test/fixtures/object-storage-app/server/datasources.json @@ -0,0 +1,12 @@ +{ + "My-Object-Storage": { + "username": "0", + "password": "*", + "name": "My-Object-Storage", + "authUrl": "https://identity.open.softlayer.com", + "tenantId": "1", + "domainId": "2", + "region": "dallas", + "connector": "object-storage" + } +} diff --git a/test/fixtures/object-storage-app/server/server.js b/test/fixtures/object-storage-app/server/server.js new file mode 100644 index 00000000..8d6b061c --- /dev/null +++ b/test/fixtures/object-storage-app/server/server.js @@ -0,0 +1,13 @@ +'use strict'; + +var loopback = require('../../../../'); +var boot = require('loopback-boot'); +var app = module.exports = loopback(); + +boot(app, __dirname, function(err) { + if (err) { + console.log(err); + throw err; + } + app.emit('booted'); +}); diff --git a/test/object-storage.test.js b/test/object-storage.test.js new file mode 100644 index 00000000..3cf641a1 --- /dev/null +++ b/test/object-storage.test.js @@ -0,0 +1,23 @@ +'use strict'; +var assert = require('assert'); + +describe('object-storage connector', function() { + it('should be set up as loopback-component-storage', function(done) { + this.timeout(10000); + var app = require('./fixtures/object-storage-app'); + var booted = false; + app.on('booted', function() { + if (booted) return; + assert('MyObjectStorage' in app.datasources); + var ds = app.datasources.MyObjectStorage; + assert.equal(ds.name, 'loopback-component-storage'); + assert.equal(ds.settings.connector, 'loopback-component-storage'); + assert.equal(ds.settings.provider, 'openstack'); + assert.equal(ds.settings.useServiceCatalog, true); + assert.equal(ds.settings.useInternal, false); + assert.equal(ds.settings.keystoneAuthVersion, 'v3'); + booted = true; + done(); + }); + }); +});