diff --git a/src/appdb.js b/src/appdb.js index 46c242ce3..f3e66ef26 100644 --- a/src/appdb.js +++ b/src/appdb.js @@ -156,21 +156,24 @@ function getAll(callback) { }); } -function add(id, appStoreId, manifest, location, portBindings, accessRestriction, memoryLimit, altDomain, callback) { +function add(id, appStoreId, manifest, location, portBindings, data, callback) { assert.strictEqual(typeof id, 'string'); assert.strictEqual(typeof appStoreId, 'string'); assert(manifest && typeof manifest === 'object'); assert.strictEqual(typeof manifest.version, 'string'); assert.strictEqual(typeof location, 'string'); assert.strictEqual(typeof portBindings, 'object'); - assert.strictEqual(typeof accessRestriction, 'object'); - assert.strictEqual(typeof memoryLimit, 'number'); - assert(altDomain === null || typeof altDomain === 'string'); + assert(data && typeof data === 'object'); assert.strictEqual(typeof callback, 'function'); portBindings = portBindings || { }; var manifestJson = JSON.stringify(manifest); + + var accessRestriction = data.accessRestriction || null; + var memoryLimit = data.memoryLimit || 0; + var altDomain = data.altDomain || null; + var accessRestrictionJson = JSON.stringify(accessRestriction); var queries = [ ]; diff --git a/src/apps.js b/src/apps.js index 79b9024e9..5f8fd95de 100644 --- a/src/apps.js +++ b/src/apps.js @@ -446,7 +446,13 @@ function install(data, auditSource, callback) { purchase(appStoreId, function (error) { if (error) return callback(error); - appdb.add(appId, appStoreId, manifest, location, portBindings, accessRestriction, memoryLimit, altDomain, function (error) { + var data = { + accessRestriction: accessRestriction, + memoryLimit: memoryLimit, + altDomain: altDomain + }; + + appdb.add(appId, appStoreId, manifest, location, portBindings, data, function (error) { if (error && error.reason === DatabaseError.ALREADY_EXISTS) return callback(getDuplicateErrorDetails(location, portBindings, error)); if (error) return callback(new AppsError(AppsError.INTERNAL_ERROR, error)); diff --git a/src/routes/test/backups-test.js b/src/routes/test/backups-test.js index 8ed6d27e0..90da8bfeb 100644 --- a/src/routes/test/backups-test.js +++ b/src/routes/test/backups-test.js @@ -53,7 +53,7 @@ function setup(done) { function addApp(callback) { var manifest = { version: '0.0.1', manifestVersion: 1, dockerImage: 'foo', healthCheckPath: '/', httpPort: 3, title: 'ok', addons: { } }; - appdb.add('appid', 'appStoreId', manifest, 'location', [ ] /* portBindings */, null /* accessRestriction */, 0 /* memoryLimit */, null /* altDomain */, callback); + appdb.add('appid', 'appStoreId', manifest, 'location', [ ] /* portBindings */, { }, callback); }, function createSettings(callback) { diff --git a/src/routes/test/oauth2-test.js b/src/routes/test/oauth2-test.js index e6edd4f22..6fcd9e6f8 100644 --- a/src/routes/test/oauth2-test.js +++ b/src/routes/test/oauth2-test.js @@ -314,10 +314,10 @@ describe('OAuth2', function () { clientdb.add.bind(null, CLIENT_7.id, CLIENT_7.appId, CLIENT_7.type, CLIENT_7.clientSecret, CLIENT_7.redirectURI, CLIENT_7.scope), clientdb.add.bind(null, CLIENT_8.id, CLIENT_8.appId, CLIENT_8.type, CLIENT_8.clientSecret, CLIENT_8.redirectURI, CLIENT_8.scope), clientdb.add.bind(null, CLIENT_9.id, CLIENT_9.appId, CLIENT_9.type, CLIENT_9.clientSecret, CLIENT_9.redirectURI, CLIENT_9.scope), - appdb.add.bind(null, APP_0.id, APP_0.appStoreId, APP_0.manifest, APP_0.location, APP_0.portBindings, APP_0.accessRestriction, APP_0.memoryLimit, APP_0.altDomain), - appdb.add.bind(null, APP_1.id, APP_1.appStoreId, APP_1.manifest, APP_1.location, APP_1.portBindings, APP_1.accessRestriction, APP_1.memoryLimit, APP_1.altDomain), - appdb.add.bind(null, APP_2.id, APP_2.appStoreId, APP_2.manifest, APP_2.location, APP_2.portBindings, APP_2.accessRestriction, APP_2.memoryLimit, APP_2.altDomain), - appdb.add.bind(null, APP_3.id, APP_3.appStoreId, APP_3.manifest, APP_3.location, APP_3.portBindings, APP_3.accessRestriction, APP_3.memoryLimit, APP_3.altDomain), + appdb.add.bind(null, APP_0.id, APP_0.appStoreId, APP_0.manifest, APP_0.location, APP_0.portBindings, APP_0), + appdb.add.bind(null, APP_1.id, APP_1.appStoreId, APP_1.manifest, APP_1.location, APP_1.portBindings, APP_1), + appdb.add.bind(null, APP_2.id, APP_2.appStoreId, APP_2.manifest, APP_2.location, APP_2.portBindings, APP_2), + appdb.add.bind(null, APP_3.id, APP_3.appStoreId, APP_3.manifest, APP_3.location, APP_3.portBindings, APP_3), function (callback) { user.create(USER_0.username, USER_0.password, USER_0.email, USER_0.displayName, null /* source */, function (error, userObject) { expect(error).to.not.be.ok(); diff --git a/src/routes/test/settings-test.js b/src/routes/test/settings-test.js index 4720d9b89..fda776934 100644 --- a/src/routes/test/settings-test.js +++ b/src/routes/test/settings-test.js @@ -56,7 +56,7 @@ function setup(done) { function addApp(callback) { var manifest = { version: '0.0.1', manifestVersion: 1, dockerImage: 'foo', healthCheckPath: '/', httpPort: 3, title: 'ok' }; - appdb.add('appid', 'appStoreId', manifest, 'location', [ ] /* portBindings */, null /* accessRestriction */, 0 /* memoryLimit */, null /* altDomain */, callback); + appdb.add('appid', 'appStoreId', manifest, 'location', [ ] /* portBindings */, { }, callback); } ], done); } diff --git a/src/routes/test/simpleauth-test.js b/src/routes/test/simpleauth-test.js index 092027348..e1349a2bb 100644 --- a/src/routes/test/simpleauth-test.js +++ b/src/routes/test/simpleauth-test.js @@ -160,10 +160,10 @@ describe('SimpleAuth API', function () { clientdb.add.bind(null, CLIENT_3.id, CLIENT_3.appId, CLIENT_3.type, CLIENT_3.clientSecret, CLIENT_3.redirectURI, CLIENT_3.scope), clientdb.add.bind(null, CLIENT_4.id, CLIENT_4.appId, CLIENT_4.type, CLIENT_4.clientSecret, CLIENT_4.redirectURI, CLIENT_4.scope), clientdb.add.bind(null, CLIENT_5.id, CLIENT_5.appId, CLIENT_5.type, CLIENT_5.clientSecret, CLIENT_5.redirectURI, CLIENT_5.scope), - appdb.add.bind(null, APP_0.id, APP_0.appStoreId, APP_0.manifest, APP_0.location, APP_0.portBindings, APP_0.accessRestriction, APP_0.memoryLimit, APP_0.altDomain), - appdb.add.bind(null, APP_1.id, APP_1.appStoreId, APP_1.manifest, APP_1.location, APP_1.portBindings, APP_1.accessRestriction, APP_1.memoryLimit, APP_1.altDomain), - appdb.add.bind(null, APP_2.id, APP_2.appStoreId, APP_2.manifest, APP_2.location, APP_2.portBindings, APP_2.accessRestriction, APP_2.memoryLimit, APP_2.altDomain), - appdb.add.bind(null, APP_3.id, APP_3.appStoreId, APP_3.manifest, APP_3.location, APP_3.portBindings, APP_3.accessRestriction, APP_3.memoryLimit, APP_3.altDomain) + appdb.add.bind(null, APP_0.id, APP_0.appStoreId, APP_0.manifest, APP_0.location, APP_0.portBindings, APP_0), + appdb.add.bind(null, APP_1.id, APP_1.appStoreId, APP_1.manifest, APP_1.location, APP_1.portBindings, APP_1), + appdb.add.bind(null, APP_2.id, APP_2.appStoreId, APP_2.manifest, APP_2.location, APP_2.portBindings, APP_2), + appdb.add.bind(null, APP_3.id, APP_3.appStoreId, APP_3.manifest, APP_3.location, APP_3.portBindings, APP_3) ], done); }); diff --git a/src/routes/test/sysadmin-test.js b/src/routes/test/sysadmin-test.js index 8e2ecee32..e4f81ba7c 100644 --- a/src/routes/test/sysadmin-test.js +++ b/src/routes/test/sysadmin-test.js @@ -51,7 +51,7 @@ function setup(done) { function addApp(callback) { var manifest = { version: '0.0.1', manifestVersion: 1, dockerImage: 'foo', healthCheckPath: '/', httpPort: 3, title: 'ok', addons: { } }; - appdb.add('appid', 'appStoreId', manifest, 'location', [ ] /* portBindings */, null /* accessRestriction */, 0 /* memoryLimit */, null /* altDomain */, callback); + appdb.add('appid', 'appStoreId', manifest, 'location', [ ] /* portBindings */, { }, callback); }, function createSettings(callback) { diff --git a/src/test/apps-test.js b/src/test/apps-test.js index f4c64b739..cc41e137c 100644 --- a/src/test/apps-test.js +++ b/src/test/apps-test.js @@ -116,9 +116,9 @@ describe('Apps', function () { groups.create.bind(null, GROUP_1), groups.addMember.bind(null, groups.ADMIN_GROUP_ID, ADMIN_0.id), groups.addMember.bind(null, GROUP_0, USER_1.id), - appdb.add.bind(null, APP_0.id, APP_0.appStoreId, APP_0.manifest, APP_0.location, APP_0.portBindings, APP_0.accessRestriction, APP_0.memoryLimit, null), - appdb.add.bind(null, APP_1.id, APP_1.appStoreId, APP_1.manifest, APP_1.location, APP_1.portBindings, APP_1.accessRestriction, APP_1.memoryLimit, null), - appdb.add.bind(null, APP_2.id, APP_2.appStoreId, APP_2.manifest, APP_2.location, APP_2.portBindings, APP_2.accessRestriction, APP_2.memoryLimit, null) + appdb.add.bind(null, APP_0.id, APP_0.appStoreId, APP_0.manifest, APP_0.location, APP_0.portBindings, APP_0), + appdb.add.bind(null, APP_1.id, APP_1.appStoreId, APP_1.manifest, APP_1.location, APP_1.portBindings, APP_1), + appdb.add.bind(null, APP_2.id, APP_2.appStoreId, APP_2.manifest, APP_2.location, APP_2.portBindings, APP_2) ], done); }); diff --git a/src/test/apptask-test.js b/src/test/apptask-test.js index 0ac2b3124..1fd59eb1c 100644 --- a/src/test/apptask-test.js +++ b/src/test/apptask-test.js @@ -84,7 +84,7 @@ describe('apptask', function () { config.set('version', '0.5.0'); async.series([ database.initialize, - appdb.add.bind(null, APP.id, APP.appStoreId, APP.manifest, APP.location, APP.portBindings, APP.accessRestriction, APP.memoryLimit, null), + appdb.add.bind(null, APP.id, APP.appStoreId, APP.manifest, APP.location, APP.portBindings, APP), settings.setDnsConfig.bind(null, { provider: 'route53', accessKeyId: 'accessKeyId', secretAccessKey: 'secretAccessKey', endpoint: 'http://localhost:5353' }), settings.setTlsConfig.bind(null, { provider: 'caas' }) ], done); diff --git a/src/test/database-test.js b/src/test/database-test.js index ffbe69170..7141cd9c8 100644 --- a/src/test/database-test.js +++ b/src/test/database-test.js @@ -589,7 +589,7 @@ describe('database', function () { }); it('add succeeds', function (done) { - appdb.add(APP_0.id, APP_0.appStoreId, APP_0.manifest, APP_0.location, APP_0.portBindings, APP_0.accessRestriction, APP_0.memoryLimit, null, function (error) { + appdb.add(APP_0.id, APP_0.appStoreId, APP_0.manifest, APP_0.location, APP_0.portBindings, APP_0, function (error) { expect(error).to.be(null); done(); }); @@ -613,7 +613,7 @@ describe('database', function () { }); it('add of same app fails', function (done) { - appdb.add(APP_0.id, APP_0.appStoreId, APP_0.manifest, APP_0.location, [ ], APP_0.accessRestriction, APP_0.memoryLimit, null, function (error) { + appdb.add(APP_0.id, APP_0.appStoreId, APP_0.manifest, APP_0.location, [ ], APP_0, function (error) { expect(error).to.be.a(DatabaseError); expect(error.reason).to.be(DatabaseError.ALREADY_EXISTS); done(); @@ -685,7 +685,7 @@ describe('database', function () { }); it('add second app succeeds', function (done) { - appdb.add(APP_1.id, APP_1.appStoreId, APP_1.manifest, APP_1.location, [ ], APP_1.accessRestriction, APP_1.memoryLimit, null, function (error) { + appdb.add(APP_1.id, APP_1.appStoreId, APP_1.manifest, APP_1.location, [ ], APP_1, function (error) { expect(error).to.be(null); done(); }); diff --git a/src/test/ldap-test.js b/src/test/ldap-test.js index 0e1a0ca7c..a9cfabc0b 100644 --- a/src/test/ldap-test.js +++ b/src/test/ldap-test.js @@ -71,7 +71,7 @@ function setup(done) { database.initialize.bind(null), database._clear.bind(null), ldapServer.start.bind(null), - appdb.add.bind(null, APP_0.id, APP_0.appStoreId, APP_0.manifest, APP_0.location, APP_0.portBindings, APP_0.accessRestriction, APP_0.memoryLimit, null), + appdb.add.bind(null, APP_0.id, APP_0.appStoreId, APP_0.manifest, APP_0.location, APP_0.portBindings, APP_0), appdb.update.bind(null, APP_0.id, { containerId: APP_0.containerId }), function (callback) { user.createOwner(USER_0.username, USER_0.password, USER_0.email, USER_0.displayName, AUDIT_SOURCE, function (error, result) { diff --git a/src/test/updatechecker-test.js b/src/test/updatechecker-test.js index c2a0c0439..2850db8ec 100644 --- a/src/test/updatechecker-test.js +++ b/src/test/updatechecker-test.js @@ -251,7 +251,7 @@ describe('updatechecker - checkAppUpdates', function () { database.initialize, database._clear, mailer._clearMailQueue, - appdb.add.bind(null, APP_0.id, APP_0.appStoreId, APP_0.manifest, APP_0.location, APP_0.portBindings, APP_0.accessRestriction, APP_0.memoryLimit, null), + appdb.add.bind(null, APP_0.id, APP_0.appStoreId, APP_0.manifest, APP_0.location, APP_0.portBindings, APP_0), user.createOwner.bind(null, USER_0.username, USER_0.password, USER_0.email, USER_0.displayName, AUDIT_SOURCE) ], done); });