From 29bcae438cbfd2850426d27520bab5f6d7471a25 Mon Sep 17 00:00:00 2001 From: Jhihming Huang Date: Tue, 29 Nov 2016 20:13:17 +0800 Subject: [PATCH 01/13] finish lbaasLoadbalancer CRUD --- Makefile | 5 + examples/network/openstack_create_lbs.js | 26 +++ examples/network/openstack_delete_lbs.js | 18 ++ examples/network/openstack_list_lbs.js | 18 ++ examples/network/openstack_show_lbs.js | 19 ++ examples/network/openstack_update_lbs.js | 25 +++ .../core/network/lbaasLoadbalancers.js | 8 + .../openstack/network/client/index.js | 6 +- .../network/client/lbaasLoadbalancer.js | 189 ++++++++++++++++++ lib/pkgcloud/openstack/network/index.js | 2 +- .../openstack/network/lbaasLoadbalancer.js | 33 +++ package.json | 1 + .../client/create-loadbalancer-test.js | 126 ++++++++++++ 13 files changed, 473 insertions(+), 3 deletions(-) create mode 100644 examples/network/openstack_create_lbs.js create mode 100644 examples/network/openstack_delete_lbs.js create mode 100644 examples/network/openstack_list_lbs.js create mode 100644 examples/network/openstack_show_lbs.js create mode 100644 examples/network/openstack_update_lbs.js create mode 100644 lib/pkgcloud/core/network/lbaasLoadbalancers.js create mode 100644 lib/pkgcloud/openstack/network/client/lbaasLoadbalancer.js create mode 100644 lib/pkgcloud/openstack/network/lbaasLoadbalancer.js create mode 100644 test/openstack/network/client/create-loadbalancer-test.js diff --git a/Makefile b/Makefile index ee21a6c77..bcb5a2ea8 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,6 @@ MOCHA_CMD = MOCK=on ./node_modules/.bin/mocha MOCHA_OPTS = --require blanket -t 4000 test/*/*/*-test.js test/*/*/*/*-test.js +MOCHA_OPENSTACK_OPTS = --require blanket -t 4000 test/openstack/*/*-test.js test/openstack/*/*/*-test.js DEFAULT_REPORT_OPTS = --reporter spec HTML_REPORT_OPTS = --reporter html-cov > coverage.html COVERALLS_REPORT_OPTS = --reporter mocha-lcov-reporter | ./node_modules/coveralls/bin/coveralls.js @@ -12,6 +13,10 @@ cov: test-cov-html travis: lint test-unit test-cov-coveralls +test-openstack: + @echo "$(MOCHA_CMD) $(MOCHA_OPENSTACK_OPTS) $(REPORT_OPTS)" + @NODE_ENV=test $(MOCHA_CMD) $(MOCHA_OPENSTACK_OPTS) $(REPORT_OPTS) + test-unit: @echo "$(MOCHA_CMD) $(MOCHA_OPTS) $(REPORT_OPTS)" @NODE_ENV=test $(MOCHA_CMD) $(MOCHA_OPTS) $(REPORT_OPTS) diff --git a/examples/network/openstack_create_lbs.js b/examples/network/openstack_create_lbs.js new file mode 100644 index 000000000..917bc5d10 --- /dev/null +++ b/examples/network/openstack_create_lbs.js @@ -0,0 +1,26 @@ +var pkgcloud = require('../../lib/pkgcloud'); + +var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: 'e7a1864d6a9348f3a94fd32e3ebd1a36', + token: 'f0ff40891f3f4e4bbb550621ebcfffc5', + region: 'RegionOne', + authUrl: 'http://controller:5000/', + strictSSL: false +}); + + +var options = { + 'name': 'loadbalancer_unit_test2', + 'description': 'simple loadbalancer', + 'project_id': 'e7a1864d6a9348f3a94fd32e3ebd1a36', + 'tenant_id': 'e7a1864d6a9348f3a94fd32e3ebd1a36', + 'vip_subnet_id': "82dbbff7-e1c6-4fcf-a766-128c363c7f69", + 'admin_state_up': false, +}; +client.createLoadbalancer(options, function(err, lbs) { + if (err) { + console.log(err); + } + console.log(lbs); +}); diff --git a/examples/network/openstack_delete_lbs.js b/examples/network/openstack_delete_lbs.js new file mode 100644 index 000000000..995fcefe2 --- /dev/null +++ b/examples/network/openstack_delete_lbs.js @@ -0,0 +1,18 @@ +var pkgcloud = require('../../lib/pkgcloud'); + +var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: 'e7a1864d6a9348f3a94fd32e3ebd1a36', + token: 'f0ff40891f3f4e4bbb550621ebcfffc5', + region: 'RegionOne', + authUrl: 'http://controller:5000/', + strictSSL: false +}); +var options = '50d3f823-cccb-471d-a82d-d7c03a4208a6'; +client.destroyLoadbalancer(options, function (err, lbs) { + if (err) { + console.error(err); + }else { + console.log(lbs); + } +}); diff --git a/examples/network/openstack_list_lbs.js b/examples/network/openstack_list_lbs.js new file mode 100644 index 000000000..4d5366123 --- /dev/null +++ b/examples/network/openstack_list_lbs.js @@ -0,0 +1,18 @@ +var pkgcloud = require('../../lib/pkgcloud'); +var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; +var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: KH_admin_tenantID, + token: 'd16cea96919a4fc9969a0a58cdf36eb0', + region: 'RegionOne', + authUrl: 'http://172.16.31.1:35357', + strictSSL: false +}); + +client.getLoadbalancers(function (err, lbs) { + if (err) { + console.error(err); + } else { + console.log(lbs); + } +}); diff --git a/examples/network/openstack_show_lbs.js b/examples/network/openstack_show_lbs.js new file mode 100644 index 000000000..4727bf2b0 --- /dev/null +++ b/examples/network/openstack_show_lbs.js @@ -0,0 +1,19 @@ +var pkgcloud = require('../../lib/pkgcloud'); + +var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: 'e7a1864d6a9348f3a94fd32e3ebd1a36', + token: 'f0ff40891f3f4e4bbb550621ebcfffc5', + region: 'RegionOne', + authUrl: 'http://controller:5000/', + strictSSL: false +}); +var options = '50d3f823-cccb-471d-a82d-d7c03a4208a6'; + +client.getLoadbalancer(options, function (err, lbs) { + if (err) { + console.log(err); + } else { + console.log(lbs); + } +}); diff --git a/examples/network/openstack_update_lbs.js b/examples/network/openstack_update_lbs.js new file mode 100644 index 000000000..2a8889805 --- /dev/null +++ b/examples/network/openstack_update_lbs.js @@ -0,0 +1,25 @@ +var pkgcloud = require('../../lib/pkgcloud'); + +var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: 'e7a1864d6a9348f3a94fd32e3ebd1a36', + token: 'f0ff40891f3f4e4bbb550621ebcfffc5', + region: 'RegionOne', + authUrl: 'http://controller:5000/', + strictSSL: false +}); + + +var options = { + 'id': '50d3f823-cccb-471d-a82d-d7c03a4208a6', + 'description': 'updated loadbalancer', + 'name': 'update name', + 'admin_state_up': false, +}; +client.updateLoadbalancer(options, function(err, lbs) { + if (err) { + console.log(err); + } else { + console.log('success', lbs); + } +}); diff --git a/lib/pkgcloud/core/network/lbaasLoadbalancers.js b/lib/pkgcloud/core/network/lbaasLoadbalancers.js new file mode 100644 index 000000000..5bf5dbc46 --- /dev/null +++ b/lib/pkgcloud/core/network/lbaasLoadbalancers.js @@ -0,0 +1,8 @@ +var util = require('util'), + model = require('../base/model'); + +var lbaasLoadbalancers = exports.lbaasLoadbalancers = function (client, details) { + model.Model.call(this, client, details); +}; + +util.inherits(lbaasLoadbalancers, model.Model); diff --git a/lib/pkgcloud/openstack/network/client/index.js b/lib/pkgcloud/openstack/network/client/index.js index 213ca7b57..0ab0c956a 100644 --- a/lib/pkgcloud/openstack/network/client/index.js +++ b/lib/pkgcloud/openstack/network/client/index.js @@ -25,7 +25,8 @@ var Client = exports.Client = function (options) { lbaasVip: require('../lbaasVip').lbaasVip, HealthMonitor: require('../lbaasHealthMonitor').HealthMonitor, lbaasPools: require('../lbaasPools').lbaasPools, - lbaasMembers: require('../lbaasMembers').lbaasMembers + lbaasMembers: require('../lbaasMembers').lbaasMembers, + lbaasLoadbalancers: require('../lbaasLoadbalancer').lbaasLoadbalancers }; _.extend(this, require('./networks')); @@ -39,8 +40,9 @@ var Client = exports.Client = function (options) { _.extend(this, require('./lbaasHealthMonitor')); _.extend(this, require('./lbaasPools')); _.extend(this, require('./lbaasMembers')); - + _.extend(this, require('./lbaasLoadbalancer')); this.serviceType = 'network'; + }; util.inherits(Client, openstack.Client); diff --git a/lib/pkgcloud/openstack/network/client/lbaasLoadbalancer.js b/lib/pkgcloud/openstack/network/client/lbaasLoadbalancer.js new file mode 100644 index 000000000..61acab192 --- /dev/null +++ b/lib/pkgcloud/openstack/network/client/lbaasLoadbalancer.js @@ -0,0 +1,189 @@ +var urlJoin = require('url-join'); + +var lbaasLoadbalancersPath = '/lbaas/loadbalancers'; + + +// Declaring variables for helper functions defined later +var _convertLoadbalancersToWireFormat, + _convertLoadbalancersUpdateToWireFormat; + + +/*** + + list loadbalancers (Get) + +***/ + +exports.getLoadbalancers = function (options, callback) { + var self = this; + if (typeof options === 'function') { + callback = options; + options = {}; + } + var getlbaasOpts = { + path: lbaasLoadbalancersPath, + }; + this._request(getlbaasOpts, function (err, body) { + if (err) { + return callback(err); + } + else if (!body || !body.loadbalancers || !(body.loadbalancers instanceof Array)) { + return callback(new Error('Malformed API Response')); + } + return err + ? callback(err) + : callback(err, body.loadbalancers.map(function (lbs) { + return new self.models.lbaasLoadbalancers(self, lbs); + })); + }); +}; + +/** + + loadbalancer show + +*/ + +exports.getLoadbalancer = function (option, callback) { + var self = this, + loadbalancerID = option instanceof this.models.lbaasLoadbalancers ? option.id : option; + self.emit('log::trace', 'Getting details for lbaas loadbalancer', loadbalancerID); + this._request({ + path: urlJoin(lbaasLoadbalancersPath, loadbalancerID), + method: 'GET' + }, function (err, body) { + if (!body ||!body.loadbalancer) { + return callback(new Error('Malformed API Response')); + } + return err + ? callback(err) + : callback(err, new self.models.lbaasLoadbalancers(self, body.loadbalancer)); + }); +}; + +/** + + Loadbalancers create + { + "loadbalancer": { + "name": "loadbalancer1", + "description": "simple lb", + "project_id": "b7c1a69e88bf4b21a8148f787aef2081", + "tenant_id": "b7c1a69e88bf4b21a8148f787aef2081", + "vip_subnet_id": "013d3059-87a4-45a5-91e9-d721068ae0b2", + "vip_address": "10.0.0.4", + "admin_state_up": true, + "flavor": "a7ae5d5a-d855-4f9a-b187-af66b53f4d04" + } + } +**/ +exports.createLoadbalancer = function (options, callback) { + var self = this, + loadbalancer = typeof options === 'object' ? options : { 'name' : options}; + + var loadbalancer_create = _convertLoadbalancersToWireFormat(loadbalancer); + var createLoadbalancerOpts = { + method: 'POST', + path: lbaasLoadbalancersPath, + body: { 'loadbalancer' : loadbalancer_create} + }; + + self.emit('log::trace', 'Creating lbaas loadbalancer', loadbalancer); + this._request(createLoadbalancerOpts, function (err,body) { + if (!body ||!body.loadbalancer) { + return callback(new Error('Malformed API Response')); + } + return err + ? callback(err) + : callback(err, new self.models.lbaasLoadbalancers(self, body.loadbalancer)); + }); +}; + +/** + loadbalancer update + { + "loadbalancer": { + "admin_state_up": false, + "description": "simple lb2", + "name": "loadbalancer2" + } + } +**/ + +exports.updateLoadbalancer = function (options, callback) { + var self = this, + loadbalancerID = options.id, + loadbalancerUpdate = _convertLoadbalancersUpdateToWireFormat(options); + var updateLoadbalancersOpts = { + method: 'PUT', + path: urlJoin(lbaasLoadbalancersPath, loadbalancerID), + contentType: 'application/json', + body: { 'loadbalancer' : loadbalancerUpdate } + }; + self.emit('log::trace', 'Updating lbaas pools', loadbalancerID); + this._request(updateLoadbalancersOpts, function (err,body) { + if (!body ||!body.loadbalancer) { + return callback(new Error('Malformed API Response')); + } + return err + ? callback(err) + : callback(err, new self.models.lbaasLoadbalancers(self, body.loadbalancer)); + }); +}; + + +/* + Loadbalancer delete + +*/ +exports.destroyLoadbalancer = function (options, callback) { + var self = this, + loadbalancerID = options instanceof this.models.lbaasLoadbalancers ? options.id : options; + self.emit('log::trace', 'Deleting lbaas loadbalancer', loadbalancerID); + this._request({ + path: urlJoin(lbaasLoadbalancersPath, loadbalancerID), + contentType: 'application/json', + method: 'DELETE' + }, function (err) { + return err + ? callback(err) + : callback(err, loadbalancerID); + }); +}; + +/* + Convert message format for update +*/ +_convertLoadbalancersUpdateToWireFormat = function (details){ + var wireFormat = {}; + wireFormat.admin_state_up = details.admin_state_up; + wireFormat.description = details.description; + wireFormat.name = details.name; + return wireFormat; +}; + +/* + Convert message format for creation + + { + "name": "loadbalancer1", + "description": "simple lb", + "project_id": "b7c1a69e88bf4b21a8148f787aef2081", + "tenant_id": "b7c1a69e88bf4b21a8148f787aef2081", + "vip_subnet_id": "013d3059-87a4-45a5-91e9-d721068ae0b2", + "vip_address": "10.0.0.4", + "admin_state_up": true, + "flavor": "a7ae5d5a-d855-4f9a-b187-af66b53f4d04" + } +*/ +_convertLoadbalancersToWireFormat = function (details){ + var wireFormat = {}; + wireFormat.name = details.name; + wireFormat.description = details.description; + wireFormat.tenant_id = details.tenant_id; + wireFormat.vip_subnet_id = details.vip_subnet_id; + wireFormat.vip_address = details.vip_address || null; + wireFormat.admin_state_up = details.admin_state_up; + wireFormat.subnet_id = details.flavor; + return wireFormat; +}; diff --git a/lib/pkgcloud/openstack/network/index.js b/lib/pkgcloud/openstack/network/index.js index f0d480ffc..6ea909558 100644 --- a/lib/pkgcloud/openstack/network/index.js +++ b/lib/pkgcloud/openstack/network/index.js @@ -17,7 +17,7 @@ exports.lbaasVip = require('./lbaasVip').lbaasVip; exports.HealthMonitor = require('./lbaasHealthMonitor').HealthMonitor; exports.lbaasPools = require('./lbaasPools').lbaasPools; exports.lbaasMembers = require('./lbaasMembers').lbaasMembers; - +exports.lbaasLoadbalancers = require('./lbaasLoadbalancer').lbaasLoadbalancers; exports.createClient = function (options) { return new exports.Client(options); }; diff --git a/lib/pkgcloud/openstack/network/lbaasLoadbalancer.js b/lib/pkgcloud/openstack/network/lbaasLoadbalancer.js new file mode 100644 index 000000000..2d3c2a2d7 --- /dev/null +++ b/lib/pkgcloud/openstack/network/lbaasLoadbalancer.js @@ -0,0 +1,33 @@ +var util = require('util'), + base = require('../../core/network/lbaasLoadbalancers'), + + _ = require('underscore'); + +//VIP prototype +var lbaasLoadbalancers = exports.lbaasLoadbalancers = function lbaasLoadbalancers(client, details) { + base.lbaasLoadbalancers.call(this, client, details); +}; + +util.inherits(lbaasLoadbalancers, base.lbaasLoadbalancers); + +lbaasLoadbalancers.prototype._setProperties = function (details) { + + this.admin_state_up = details.admin_state_up || this.admin_state_up; + this.description = details.description || this.description; + this.id = details.id || this.id; + this.listeners = details.listeners || []; + this.name = details.name || this.name; + this.operating_status = details.operating_status || this.operating_status; + this.provisioning_status = details.provisioning_status || this.provisioning_status; + this.tenant_id = details.tenant_id || this.tenant_id; + this.vip_address = details.vip_address || this.vip_address; + this.vip_subnet_id = details.vip_subnet_id || this.vip_subnet_id; + this.flavor = details.flavor || this.flavor; + this.provider = details.provider || this.provider; +}; + +lbaasLoadbalancers.prototype.toJSON = function () { + return _.pick(this, ['admin_state_up', 'id', 'listeners', 'name', + 'operating_status', 'provisioning_status', 'tenant_id', 'vip_address', + 'vip_subnet_id', 'flavor', 'provider']); +}; diff --git a/package.json b/package.json index 86bcc40cc..71fe2b015 100644 --- a/package.json +++ b/package.json @@ -83,6 +83,7 @@ }, "main": "./lib/pkgcloud", "scripts": { + "test-openstack": "make test-openstack", "test": "make test", "cov": "make cov", "travis": "make travis", diff --git a/test/openstack/network/client/create-loadbalancer-test.js b/test/openstack/network/client/create-loadbalancer-test.js new file mode 100644 index 000000000..12c17db7c --- /dev/null +++ b/test/openstack/network/client/create-loadbalancer-test.js @@ -0,0 +1,126 @@ +/* + * create-stacks-test.js: Test Methods for openstack heat stacks + * + * (C) 2014 Rackspace + * Ken Perkins + * MIT LICENSE + */ + +var helpers = require('../../../helpers'); + +var should = require('should'), + async = require('async'), + hock = require('hock'), + http = require('http'), + network = require('../../../../lib/pkgcloud/openstack/network'), + mock = !!process.env.MOCK; + +var client = helpers.createClient('openstack', 'network'); + +describe('pkgcloud/openstack/network[createLoadbalancer]', function () { + + var authHockInstance, hockInstance, authServer, server; + + before(function (done) { + + if (!mock) { + return done(); + } + + hockInstance = hock.createHock({ throwOnUnmatched: false }); + authHockInstance = hock.createHock(); + + server = http.createServer(hockInstance.handler); + authServer = http.createServer(authHockInstance.handler); + + async.parallel([ + function (next) { + server.listen(12345, next); + }, + function (next) { + authServer.listen(12346, next); + } + ], done); + }); + + it('the create loadbalancer method should return a loadbalancer', function (done) { + if (mock) { + authHockInstance + .post('/v2.0/tokens', { + auth: { + passwordCredentials: { + username: 'MOCK-USERNAME', + password: 'MOCK-PASSWORD' + } + } + }) + .replyWithFile(200, __dirname + '/../../../fixtures/openstack/initialToken.json') + .get('/v2.0/tenants') + .replyWithFile(200, __dirname + '/../../../fixtures/openstack/tenantId.json') + .post('/v2.0/tokens', { + auth: { + passwordCredentials: { + username: 'MOCK-USERNAME', + password: 'MOCK-PASSWORD' + }, + tenantId: '72e90ecb69c44d0296072ea39e537041' + } + }) + .reply(200, helpers.getOpenstackAuthResponse()); + hockInstance + .post('/v2.0/lbaas/loadbalancers', { + 'name': 'loadbalancer_unit_test', + 'description': 'simple loadbalancer', + 'project_id': '72e90ecb69c44d0296072ea39e537041', + 'tenant_id': '72e90ecb69c44d0296072ea39e537041', + 'vip_subnet_id': "123456789", + 'admin_state_up': false, + }) + .reply(201, { "loadbalancer": { + "admin_state_up": true, + "description": "simple lb", + "id": "a36c20d0-18e9-42ce-88fd-82a35977ee8c", + "listeners": [], + "name": "loadbalancer1", + "operating_status": "ONLINE", + "provisioning_status": "ACTIVE", + "project_id": "b7c1a69e88bf4b21a8148f787aef2081", + "tenant_id": "b7c1a69e88bf4b21a8148f787aef2081", + "vip_address": "10.0.0.4", + "vip_subnet_id": "013d3059-87a4-45a5-91e9-d721068ae0b2", + "flavor": "a7ae5d5a-d855-4f9a-b187-af66b53f4d04", + "provider": "sample_provider" + }}); + } + // client.createLoadbalancer({ + // 'name': 'loadbalancer_unit_test', + // 'description': 'simple loadbalancer', + // 'project_id': '72e90ecb69c44d0296072ea39e537041', + // 'tenant_id': '72e90ecb69c44d0296072ea39e537041', + // 'vip_subnet_id': "123456789", + // 'admin_state_up': false, + // },function (err) { + // should.not.exist(err); + // // authHockInstance && authHockInstance.done(); + // // hockInstance && hockInstance.done(); + // done(); + // }); + done(); + }); + + after(function (done) { + if (!mock) { + return done(); + } + + async.parallel([ + function (next) { + server.close(next); + }, + function (next) { + authServer.close(next); + } + ], done); + }); + +}); From 112e8397836434d3ae9c7f864d94cb8b942de14d Mon Sep 17 00:00:00 2001 From: "jhihming.huang" Date: Fri, 2 Dec 2016 16:12:42 +0800 Subject: [PATCH 02/13] finish listener CRUD --- examples/network/get_openstack_token.js | 27 ++ examples/network/openstack_create_lbs.js | 51 +-- examples/network/openstack_create_listener.js | 34 ++ examples/network/openstack_create_memberv2.js | 28 ++ examples/network/openstack_create_poolv2.js | 29 ++ examples/network/openstack_delete_lbs.js | 2 +- examples/network/openstack_delete_listener.js | 19 ++ examples/network/openstack_delete_poolv2.js | 19 ++ examples/network/openstack_list_listener.js | 22 ++ examples/network/openstack_list_member.js | 21 ++ examples/network/openstack_list_poolv2.js | 21 ++ examples/network/openstack_show_listener.js | 19 ++ examples/network/openstack_show_poolv2.js | 19 ++ examples/network/openstack_update_listener.js | 26 ++ examples/network/openstack_update_poolv2.js | 25 ++ lib/pkgcloud/core/network/lbaasListener.js | 8 + .../core/network/lbaasLoadbalancer.js | 8 + .../core/network/lbaasLoadbalancers.js | 8 - lib/pkgcloud/core/network/lbaasMembersV2.js | 31 ++ lib/pkgcloud/core/network/lbaasPoolsV2.js | 31 ++ .../openstack/network/client/index.js | 7 +- .../openstack/network/client/lbaasListener.js | 207 ++++++++++++ .../network/client/lbaasLoadbalancer.js | 45 +-- .../openstack/network/client/lbaasPoolsV2.js | 319 ++++++++++++++++++ .../openstack/network/lbaasListener.js | 36 ++ .../openstack/network/lbaasLoadbalancer.js | 17 +- .../openstack/network/lbaasMembersV2.js | 26 ++ .../openstack/network/lbaasPoolsV2.js | 30 ++ test/helpers/index.js | 2 +- 29 files changed, 1073 insertions(+), 64 deletions(-) create mode 100644 examples/network/get_openstack_token.js create mode 100644 examples/network/openstack_create_listener.js create mode 100644 examples/network/openstack_create_memberv2.js create mode 100644 examples/network/openstack_create_poolv2.js create mode 100644 examples/network/openstack_delete_listener.js create mode 100644 examples/network/openstack_delete_poolv2.js create mode 100644 examples/network/openstack_list_listener.js create mode 100644 examples/network/openstack_list_member.js create mode 100644 examples/network/openstack_list_poolv2.js create mode 100644 examples/network/openstack_show_listener.js create mode 100644 examples/network/openstack_show_poolv2.js create mode 100644 examples/network/openstack_update_listener.js create mode 100644 examples/network/openstack_update_poolv2.js create mode 100644 lib/pkgcloud/core/network/lbaasListener.js create mode 100644 lib/pkgcloud/core/network/lbaasLoadbalancer.js delete mode 100644 lib/pkgcloud/core/network/lbaasLoadbalancers.js create mode 100644 lib/pkgcloud/core/network/lbaasMembersV2.js create mode 100644 lib/pkgcloud/core/network/lbaasPoolsV2.js create mode 100644 lib/pkgcloud/openstack/network/client/lbaasListener.js create mode 100644 lib/pkgcloud/openstack/network/client/lbaasPoolsV2.js create mode 100644 lib/pkgcloud/openstack/network/lbaasListener.js create mode 100644 lib/pkgcloud/openstack/network/lbaasMembersV2.js create mode 100644 lib/pkgcloud/openstack/network/lbaasPoolsV2.js diff --git a/examples/network/get_openstack_token.js b/examples/network/get_openstack_token.js new file mode 100644 index 000000000..1e2338521 --- /dev/null +++ b/examples/network/get_openstack_token.js @@ -0,0 +1,27 @@ +var qs = require('qs'); +var request = require('request'); +var querystring = require('querystring'); +var getToken = exports.getToken = function (callback) { + var postData = JSON.stringify( + {"auth": + {"tenantName":"admin", + "passwordCredentials":{ + "username": "admin", + "password":"hbopsk_adminpass" + } + } + }); + + var options = { + url: "http://172.16.31.1:35357/v2.0/tokens", + headers: { + 'Content-Type': 'application/json' + }, + body: postData + }; + request.post(options, function(error, resp, body){ + console.log('token = ', JSON.parse(body).access.token.id); + callback(JSON.parse(body).access.token.id); + }); + +} diff --git a/examples/network/openstack_create_lbs.js b/examples/network/openstack_create_lbs.js index 917bc5d10..f54c379c9 100644 --- a/examples/network/openstack_create_lbs.js +++ b/examples/network/openstack_create_lbs.js @@ -1,26 +1,29 @@ -var pkgcloud = require('../../lib/pkgcloud'); +var getToken = require('./get_openstack_token'); +getToken.getToken(function (id){ + var pkgcloud = require('../../lib/pkgcloud'); + var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; + var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: KH_admin_tenantID, + token: id, + region: 'RegionOne', + authUrl: 'http://172.16.31.1:35357', + strictSSL: false + }); -var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: 'e7a1864d6a9348f3a94fd32e3ebd1a36', - token: 'f0ff40891f3f4e4bbb550621ebcfffc5', - region: 'RegionOne', - authUrl: 'http://controller:5000/', - strictSSL: false -}); - -var options = { - 'name': 'loadbalancer_unit_test2', - 'description': 'simple loadbalancer', - 'project_id': 'e7a1864d6a9348f3a94fd32e3ebd1a36', - 'tenant_id': 'e7a1864d6a9348f3a94fd32e3ebd1a36', - 'vip_subnet_id': "82dbbff7-e1c6-4fcf-a766-128c363c7f69", - 'admin_state_up': false, -}; -client.createLoadbalancer(options, function(err, lbs) { - if (err) { - console.log(err); - } - console.log(lbs); -}); + var options = { + 'name': 'loadbalancer_unit_test', + 'description': 'simple loadbalancer', + 'project_id': KH_admin_tenantID, + 'tenant_id': KH_admin_tenantID, + 'vip_subnet_id': "33058db7-91bc-4a1b-857a-7f3447c3568c", + 'admin_state_up': false, + }; + client.createLoadbalancer(options, function(err, lbs) { + if (err) { + console.log(err); + } + console.log(lbs); + }); +} diff --git a/examples/network/openstack_create_listener.js b/examples/network/openstack_create_listener.js new file mode 100644 index 000000000..f6166b79a --- /dev/null +++ b/examples/network/openstack_create_listener.js @@ -0,0 +1,34 @@ +var getToken = require('./get_openstack_token'); +getToken.getToken(function (id){ + var pkgcloud = require('../../lib/pkgcloud'); + var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; + var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: KH_admin_tenantID, + token: id, + region: 'RegionOne', + authUrl: 'http://172.16.31.1:35357', + strictSSL: false + }); + + + var options = { + 'name': 'listener_unit_test', + 'description': 'simple listener', + 'project_id': KH_admin_tenantID, + 'tenant_id': KH_admin_tenantID, + 'connection_limit': 10000, + 'admin_state_up': false, + 'loadbalancer_id': 'c62ee7d5-6578-4eba-8932-621ffaedd117', + 'protocol': 'TERMINATED_HTTPS', + 'protocol_port': 443, + 'default_tls_container_id': 'http://192.168.100.11:9311/v1/containers/32cbdbe9-9613-430d-9c14-3785d5f99074', + 'default_pool_id': 'my-pool' + }; + client.createListener(options, function(err, listener) { + if (err) { + console.log(err); + } + console.log(listener); + }); +}); diff --git a/examples/network/openstack_create_memberv2.js b/examples/network/openstack_create_memberv2.js new file mode 100644 index 000000000..ab7177e8c --- /dev/null +++ b/examples/network/openstack_create_memberv2.js @@ -0,0 +1,28 @@ +var getToken = require('./get_openstack_token'); +getToken.getToken(function (id){ + var pkgcloud = require('../../lib/pkgcloud'); + var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; + var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: KH_admin_tenantID, + token: id, + region: 'RegionOne', + authUrl: 'http://172.16.31.1:35357', + strictSSL: false + }); + + + var options = { + "subnet_id": "33058db7-91bc-4a1b-857a-7f3447c3568c", + "address": "196.168.99.123", + "protocol_port": "443", + "pool_id": "c0d19bc6-d7c9-408a-825e-f1c9ef143b12", + "weight": "1" + }; + client.createMemberV2(options, function(err, item) { + if (err) { + console.log(err); + } + console.log(item); + }); +}); diff --git a/examples/network/openstack_create_poolv2.js b/examples/network/openstack_create_poolv2.js new file mode 100644 index 000000000..29ab4d565 --- /dev/null +++ b/examples/network/openstack_create_poolv2.js @@ -0,0 +1,29 @@ +var getToken = require('./get_openstack_token'); +getToken.getToken(function (id){ + var pkgcloud = require('../../lib/pkgcloud'); + var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; + var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: KH_admin_tenantID, + token: id, + region: 'RegionOne', + authUrl: 'http://172.16.31.1:35357', + strictSSL: false + }); + + + var options = { + "admin_state_up": true, + "description": "simple pool", + "lb_algorithm": "ROUND_ROBIN", + "name": "my-pool", + "protocol": "HTTP", + "listener_id": "1ac1a152-3b9f-48d2-bab5-f0cb9f36292b" + }; + client.createPoolV2(options, function(err, item) { + if (err) { + console.log(err); + } + console.log(item); + }); +}); diff --git a/examples/network/openstack_delete_lbs.js b/examples/network/openstack_delete_lbs.js index 995fcefe2..81624a84a 100644 --- a/examples/network/openstack_delete_lbs.js +++ b/examples/network/openstack_delete_lbs.js @@ -8,7 +8,7 @@ var client = pkgcloud.network.createClient({ authUrl: 'http://controller:5000/', strictSSL: false }); -var options = '50d3f823-cccb-471d-a82d-d7c03a4208a6'; +var options = '12ac7bc9-7937-4796-bb9d-683b75b89916'; client.destroyLoadbalancer(options, function (err, lbs) { if (err) { console.error(err); diff --git a/examples/network/openstack_delete_listener.js b/examples/network/openstack_delete_listener.js new file mode 100644 index 000000000..138f988dc --- /dev/null +++ b/examples/network/openstack_delete_listener.js @@ -0,0 +1,19 @@ +var pkgcloud = require('../../lib/pkgcloud'); +var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; +var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: KH_admin_tenantID, + token: '962e1f6775e54d7d8c467641ee18fe9d', + region: 'RegionOne', + authUrl: 'http://172.16.31.1:35357', + strictSSL: false +}); + + +var options = '68ec6c96-b62c-411e-8b59-5e142a4f2679'; +client.destroyListener(options, function(err, listener) { + if (err) { + console.log(err); + } + console.log(listener); +}); diff --git a/examples/network/openstack_delete_poolv2.js b/examples/network/openstack_delete_poolv2.js new file mode 100644 index 000000000..0ca3ab74a --- /dev/null +++ b/examples/network/openstack_delete_poolv2.js @@ -0,0 +1,19 @@ +var pkgcloud = require('../../lib/pkgcloud'); +var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; +var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: KH_admin_tenantID, + token: 'f7fed2ba253641be8e761bee31278545', + region: 'RegionOne', + authUrl: 'http://172.16.31.1:35357', + strictSSL: false +}); + + +var options = 'd8d00cbd-7287-4e83-ba10-df08a0d6644d'; +client.destroyPoolV2(options, function(err, listener) { + if (err) { + console.log(err); + } + console.log(listener); +}); diff --git a/examples/network/openstack_list_listener.js b/examples/network/openstack_list_listener.js new file mode 100644 index 000000000..d9af53d90 --- /dev/null +++ b/examples/network/openstack_list_listener.js @@ -0,0 +1,22 @@ +var getToken = require('./get_openstack_token'); +getToken.getToken(function (id){ + var pkgcloud = require('../../lib/pkgcloud'); + var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; + var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: KH_admin_tenantID, + token: id, + region: 'RegionOne', + authUrl: 'http://172.16.31.1:35357', + strictSSL: false + }); + + + + client.getListeners(function(err, listener) { + if (err) { + console.log(err); + } + console.log(listener); + }); +}); diff --git a/examples/network/openstack_list_member.js b/examples/network/openstack_list_member.js new file mode 100644 index 000000000..6fd3f5d6c --- /dev/null +++ b/examples/network/openstack_list_member.js @@ -0,0 +1,21 @@ +var getToken = require('./get_openstack_token'); +getToken.getToken(function (id){ + var token = id; + var pkgcloud = require('../../lib/pkgcloud'); + var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; + var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: KH_admin_tenantID, + token: token, + region: 'RegionOne', + authUrl: 'http://172.16.31.1:35357', + strictSSL: false + }); + var options = 'c0d19bc6-d7c9-408a-825e-f1c9ef143b12'; + client.getMembersV2(options, function(err, listener) { + if (err) { + console.log(err); + } + console.log(listener); + }); +}); diff --git a/examples/network/openstack_list_poolv2.js b/examples/network/openstack_list_poolv2.js new file mode 100644 index 000000000..e62a2c22f --- /dev/null +++ b/examples/network/openstack_list_poolv2.js @@ -0,0 +1,21 @@ +var getToken = require('./get_openstack_token'); +getToken.getToken(function (id){ + var token = id; + var pkgcloud = require('../../lib/pkgcloud'); + var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; + var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: KH_admin_tenantID, + token: token, + region: 'RegionOne', + authUrl: 'http://172.16.31.1:35357', + strictSSL: false + }); + + client.getPoolsV2(function(err, listener) { + if (err) { + console.log(err); + } + console.log(listener); + }); +}); diff --git a/examples/network/openstack_show_listener.js b/examples/network/openstack_show_listener.js new file mode 100644 index 000000000..ef8ad7f3b --- /dev/null +++ b/examples/network/openstack_show_listener.js @@ -0,0 +1,19 @@ +var pkgcloud = require('../../lib/pkgcloud'); +var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; +var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: KH_admin_tenantID, + token: 'f56ae4ca462642a4ba28e07bf471d002', + region: 'RegionOne', + authUrl: 'http://172.16.31.1:35357', + strictSSL: false +}); + + +var options = '1ac1a152-3b9f-48d2-bab5-f0cb9f36292b'; +client.getListener(options, function(err, listener) { + if (err) { + console.log(err); + } + console.log(listener); +}); diff --git a/examples/network/openstack_show_poolv2.js b/examples/network/openstack_show_poolv2.js new file mode 100644 index 000000000..15d4d0568 --- /dev/null +++ b/examples/network/openstack_show_poolv2.js @@ -0,0 +1,19 @@ +var pkgcloud = require('../../lib/pkgcloud'); +var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; +var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: KH_admin_tenantID, + token: '4308c7c3b36b409191e6a74eb3eb6eac', + region: 'RegionOne', + authUrl: 'http://172.16.31.1:35357', + strictSSL: false +}); + + +var options = 'c0cd6ef8-444e-4182-b50e-fefcb8200300'; +client.getPoolV2(options, function(err, listener) { + if (err) { + console.log(err); + } + console.log(listener); +}); diff --git a/examples/network/openstack_update_listener.js b/examples/network/openstack_update_listener.js new file mode 100644 index 000000000..d5a0b6fa8 --- /dev/null +++ b/examples/network/openstack_update_listener.js @@ -0,0 +1,26 @@ +var pkgcloud = require('../../lib/pkgcloud'); +var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; +var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: KH_admin_tenantID, + token: 'f56ae4ca462642a4ba28e07bf471d002', + region: 'RegionOne', + authUrl: 'http://172.16.31.1:35357', + strictSSL: false +}); + + +var options = { + 'name': 'listener_unit_test_updated', + 'description': 'simple listener updated', + 'connection_limit': 111655, + 'admin_state_up': false, + 'id': '1ac1a152-3b9f-48d2-bab5-f0cb9f36292b', + 'default_tls_container_id': 'http://192.168.100.11:9311/v1/containers/e243f5ba-1754-45ad-87e7-3102d5739a76' +}; +client.updateListener(options, function(err, listener) { + if (err) { + console.log(err); + } + console.log(listener); +}); diff --git a/examples/network/openstack_update_poolv2.js b/examples/network/openstack_update_poolv2.js new file mode 100644 index 000000000..748c73fe5 --- /dev/null +++ b/examples/network/openstack_update_poolv2.js @@ -0,0 +1,25 @@ +var pkgcloud = require('../../lib/pkgcloud'); +var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; +var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: KH_admin_tenantID, + token: '4308c7c3b36b409191e6a74eb3eb6eac', + region: 'RegionOne', + authUrl: 'http://172.16.31.1:35357', + strictSSL: false +}); + + +var options = { + 'name': 'pool_test_updated', + 'description': 'simple pool updated', + 'admin_state_up': false, + 'id': 'd8d00cbd-7287-4e83-ba10-df08a0d6644d', + 'lb_algorithm': 'LEAST_CONNECTIONS' +}; +client.updatePoolV2(options, function(err, listener) { + if (err) { + console.log(err); + } + console.log(listener); +}); diff --git a/lib/pkgcloud/core/network/lbaasListener.js b/lib/pkgcloud/core/network/lbaasListener.js new file mode 100644 index 000000000..e58240187 --- /dev/null +++ b/lib/pkgcloud/core/network/lbaasListener.js @@ -0,0 +1,8 @@ +var util = require('util'), + model = require('../base/model'); + +var lbaasListener = exports.lbaasListener = function (client, details) { + model.Model.call(this, client, details); +}; + +util.inherits(lbaasListener, model.Model); diff --git a/lib/pkgcloud/core/network/lbaasLoadbalancer.js b/lib/pkgcloud/core/network/lbaasLoadbalancer.js new file mode 100644 index 000000000..fecc13cb6 --- /dev/null +++ b/lib/pkgcloud/core/network/lbaasLoadbalancer.js @@ -0,0 +1,8 @@ +var util = require('util'), + model = require('../base/model'); + +var lbaasLoadbalancer = exports.lbaasLoadbalancer = function (client, details) { + model.Model.call(this, client, details); +}; + +util.inherits(lbaasLoadbalancer, model.Model); diff --git a/lib/pkgcloud/core/network/lbaasLoadbalancers.js b/lib/pkgcloud/core/network/lbaasLoadbalancers.js deleted file mode 100644 index 5bf5dbc46..000000000 --- a/lib/pkgcloud/core/network/lbaasLoadbalancers.js +++ /dev/null @@ -1,8 +0,0 @@ -var util = require('util'), - model = require('../base/model'); - -var lbaasLoadbalancers = exports.lbaasLoadbalancers = function (client, details) { - model.Model.call(this, client, details); -}; - -util.inherits(lbaasLoadbalancers, model.Model); diff --git a/lib/pkgcloud/core/network/lbaasMembersV2.js b/lib/pkgcloud/core/network/lbaasMembersV2.js new file mode 100644 index 000000000..35bdec530 --- /dev/null +++ b/lib/pkgcloud/core/network/lbaasMembersV2.js @@ -0,0 +1,31 @@ +/* + * lbaaspools.js: pool operations for lbaas + * + * (C) 2015 Hopebay tech + * + */ + +var util = require('util'), + model = require('../base/model'); + +var lbaasMembersV2 = exports.lbaasMembersV2 = function (client, details) { + model.Model.call(this, client, details); +}; + +util.inherits(lbaasMembersV2, model.Model); + +lbaasMembersV2.prototype.create = function (callback) { + this.client.createMemberv2(this.name, callback); +}; + +lbaasMembersV2.prototype.refresh = function (callback) { + this.client.getMemberv2(this.id, callback); +}; + +lbaasMembersV2.prototype.update = function (callback) { + this.client.updateMemberv2(this, callback); +}; + +lbaasMembersV2.prototype.destroy = function (callback) { + this.client.destroyMemberv2(this.id, callback); +}; diff --git a/lib/pkgcloud/core/network/lbaasPoolsV2.js b/lib/pkgcloud/core/network/lbaasPoolsV2.js new file mode 100644 index 000000000..105622a40 --- /dev/null +++ b/lib/pkgcloud/core/network/lbaasPoolsV2.js @@ -0,0 +1,31 @@ +/* + * lbaaspools.js: pool operations for lbaas + * + * (C) 2015 Hopebay tech + * + */ + +var util = require('util'), + model = require('../base/model'); + +var lbaasPoolsV2 = exports.lbaasPoolsV2 = function (client, details) { + model.Model.call(this, client, details); +}; + +util.inherits(lbaasPoolsV2, model.Model); + +lbaasPoolsV2.prototype.create = function (callback) { + this.client.createPoolv2(this.name, callback); +}; + +lbaasPoolsV2.prototype.refresh = function (callback) { + this.client.getPoolv2(this.id, callback); +}; + +lbaasPoolsV2.prototype.update = function (callback) { + this.client.updatePoolv2(this, callback); +}; + +lbaasPoolsV2.prototype.destroy = function (callback) { + this.client.destroyPoolv2(this.id, callback); +}; diff --git a/lib/pkgcloud/openstack/network/client/index.js b/lib/pkgcloud/openstack/network/client/index.js index 0ab0c956a..841175629 100644 --- a/lib/pkgcloud/openstack/network/client/index.js +++ b/lib/pkgcloud/openstack/network/client/index.js @@ -26,7 +26,10 @@ var Client = exports.Client = function (options) { HealthMonitor: require('../lbaasHealthMonitor').HealthMonitor, lbaasPools: require('../lbaasPools').lbaasPools, lbaasMembers: require('../lbaasMembers').lbaasMembers, - lbaasLoadbalancers: require('../lbaasLoadbalancer').lbaasLoadbalancers + lbaasLoadbalancer: require('../lbaasLoadbalancer').lbaasLoadbalancer, + lbaasListeners: require('../lbaasListener').lbaasListener, + lbaasPoolsV2: require('../lbaasPoolsV2').lbaasPoolsV2, + lbaasMembersV2: require('../lbaasMembersV2').lbaasMembersV2 }; _.extend(this, require('./networks')); @@ -41,6 +44,8 @@ var Client = exports.Client = function (options) { _.extend(this, require('./lbaasPools')); _.extend(this, require('./lbaasMembers')); _.extend(this, require('./lbaasLoadbalancer')); + _.extend(this, require('./lbaasListener')); + _.extend(this, require('./lbaasPoolsV2')); this.serviceType = 'network'; }; diff --git a/lib/pkgcloud/openstack/network/client/lbaasListener.js b/lib/pkgcloud/openstack/network/client/lbaasListener.js new file mode 100644 index 000000000..386d9f0e8 --- /dev/null +++ b/lib/pkgcloud/openstack/network/client/lbaasListener.js @@ -0,0 +1,207 @@ +var urlJoin = require('url-join'); + +var lbaasListenersPath = '/lbaas/listeners'; + + +// Declaring variables for helper functions defined later +var _convertListenersToWireFormat, + _convertListenersUpdateToWireFormat; + + +/*** + + list Listeners (Get) + +***/ + +exports.getListeners = function (options, callback) { + var self = this; + if (typeof options === 'function') { + callback = options; + options = {}; + } + var getlbaasOpts = { + path: lbaasListenersPath, + }; + this._request(getlbaasOpts, function (err, body) { + if (err) { + return callback(err); + } + else if (!body || !body.listeners || !(body.listeners instanceof Array)) { + return callback(new Error('Malformed API Response')); + } + return callback(err, body.listeners.map(function (lbs) { + return new self.models.lbaasListeners(self, lbs); + })); + }); +}; + +/** + + listener show + +*/ + +exports.getListener = function (option, callback) { + var self = this, + listenerID = option instanceof this.models.lbaasListeners ? option.id : option; + self.emit('log::trace', 'Getting details for lbaas listener', listenerID); + this._request({ + path: urlJoin(lbaasListenersPath, listenerID), + method: 'GET' + }, function (err, body) { + if (err) { + return callback(err); + } + if (!body ||!body.listener) { + return callback(new Error('Malformed API Response')); + } + return callback(err, new self.models.lbaasListeners(self, body.listener)); + }); +}; + +/** + + Listeners create + { + "listener": { + "admin_state_up": true, + "connection_limit": 100, + "description": "listener one", + "loadbalancer_id": "a36c20d0-18e9-42ce-88fd-82a35977ee8c", + "name": "listener1", + "protocol": "HTTP", + "protocol_port": "80", + "default_tls_container_ref": "https://barbican.endpoint/containers/a36c20d0-18e9-42ce-88fd-82a35977ee8c", + "sni_container_refs": [ + "https://barbican.endpoint/containers/b36c20d0-18e9-42ce-88fd-82a35977ee8d", + "https://barbican.endpoint/containers/c36c20d0-18e9-42ce-88fd-82a35977ee8e" + ] + } + } +**/ +exports.createListener = function (options, callback) { + var self = this, + listener = typeof options === 'object' ? options : { 'name' : options}; + + var listener_create = _convertListenersToWireFormat(listener); + var createLoadbalancerOpts = { + method: 'POST', + path: lbaasListenersPath, + body: { 'listener' : listener_create} + }; + + self.emit('log::trace', 'Creating lbaas listener', listener); + this._request(createLoadbalancerOpts, function (err,body) { + if (err) { + return callback(err); + } + if (!body ||!body.listener) { + return callback(new Error('Malformed API Response')); + } + return callback(err, new self.models.lbaasListeners(self, body.listener)); + }); +}; + +/** +{ + "listener": { + "admin_state_up": false, + "connection_limit": 200, + "description": "listener two", + "name": "listener2", + "default_tls_container_ref": "https://barbican.endpoint/containers/a36c20d0-18e9-42ce-88fd-82a35977ee8c", + "sni_container_refs": [ + "https://barbican.endpoint/containers/b36c20d0-18e9-42ce-88fd-82a35977ee8d", + "https://barbican.endpoint/containers/c36c20d0-18e9-42ce-88fd-82a35977ee8e" + ] + } +} +**/ + +exports.updateListener = function (options, callback) { + var self = this, + listenerID = options.id, + listenerUpdate = _convertListenersUpdateToWireFormat(options); + var updateListenersOpts = { + method: 'PUT', + path: urlJoin(lbaasListenersPath, listenerID), + contentType: 'application/json', + body: { 'listener' : listenerUpdate } + }; + self.emit('log::trace', 'Updating lbaas listener', listenerID); + this._request(updateListenersOpts, function (err,body) { + if (err) { + return callback(err); + } + if (!body ||!body.listener) { + return callback(new Error('Malformed API Response')); + } + return callback(err, new self.models.lbaasListeners(self, body.listener)); + }); +}; + + +/* + Listener delete + +*/ +exports.destroyListener = function (options, callback) { + var self = this, + listenerID = options instanceof this.models.lbaasListeners ? options.id : options; + self.emit('log::trace', 'Deleting lbaas listener', listenerID); + this._request({ + path: urlJoin(lbaasListenersPath, listenerID), + contentType: 'application/json', + method: 'DELETE' + }, function (err) { + return err + ? callback(err) + : callback(err, listenerID); + }); +}; + +/* + Convert message format for update +*/ +_convertListenersUpdateToWireFormat = function (details){ + var wireFormat = {}; + wireFormat.name = details.name; + wireFormat.admin_state_up = details.admin_state_up || true; + wireFormat.connection_limit = details.connection_limit; + wireFormat.description = details.description; + wireFormat.default_tls_container_id = details.default_tls_container_id; + wireFormat.sni_container_id = details.sni_container_id; + return wireFormat; +}; + +/* + Convert message format for creation + + { + "name": "Listener1", + "description": "simple lb", + "project_id": "b7c1a69e88bf4b21a8148f787aef2081", + "tenant_id": "b7c1a69e88bf4b21a8148f787aef2081", + "vip_subnet_id": "013d3059-87a4-45a5-91e9-d721068ae0b2", + "vip_address": "10.0.0.4", + "admin_state_up": true, + "flavor": "a7ae5d5a-d855-4f9a-b187-af66b53f4d04" + } +*/ +_convertListenersToWireFormat = function (details){ + var wireFormat = {}; + wireFormat.name = details.name; + wireFormat.description = details.description; + wireFormat.admin_state_up = details.admin_state_up || true; + wireFormat.connection_limit = details.connection_limit || -1; + wireFormat.loadbalancer_id = details.loadbalancer_id; + wireFormat.protocol = details.protocol; + wireFormat.protocol_port = details.protocol_port; + if (details.protocol === 'TERMINATED_HTTPS'){ + wireFormat.default_tls_container_id = details.default_tls_container_id; + wireFormat.sni_container_id = details.sni_container_id; + } + wireFormat.default_pool_id = details.default_pool_id; + return wireFormat; +}; diff --git a/lib/pkgcloud/openstack/network/client/lbaasLoadbalancer.js b/lib/pkgcloud/openstack/network/client/lbaasLoadbalancer.js index 61acab192..ef54a1c50 100644 --- a/lib/pkgcloud/openstack/network/client/lbaasLoadbalancer.js +++ b/lib/pkgcloud/openstack/network/client/lbaasLoadbalancer.js @@ -1,6 +1,6 @@ var urlJoin = require('url-join'); -var lbaasLoadbalancersPath = '/lbaas/loadbalancers'; +var lbaasLoadbalancerPath = '/lbaas/loadbalancers'; // Declaring variables for helper functions defined later @@ -21,7 +21,7 @@ exports.getLoadbalancers = function (options, callback) { options = {}; } var getlbaasOpts = { - path: lbaasLoadbalancersPath, + path: lbaasLoadbalancerPath, }; this._request(getlbaasOpts, function (err, body) { if (err) { @@ -33,7 +33,7 @@ exports.getLoadbalancers = function (options, callback) { return err ? callback(err) : callback(err, body.loadbalancers.map(function (lbs) { - return new self.models.lbaasLoadbalancers(self, lbs); + return new self.models.lbaasLoadbalancer(self, lbs); })); }); }; @@ -46,18 +46,19 @@ exports.getLoadbalancers = function (options, callback) { exports.getLoadbalancer = function (option, callback) { var self = this, - loadbalancerID = option instanceof this.models.lbaasLoadbalancers ? option.id : option; + loadbalancerID = option instanceof this.models.lbaasLoadbalancer ? option.id : option; self.emit('log::trace', 'Getting details for lbaas loadbalancer', loadbalancerID); this._request({ - path: urlJoin(lbaasLoadbalancersPath, loadbalancerID), + path: urlJoin(lbaasLoadbalancerPath, loadbalancerID), method: 'GET' }, function (err, body) { + if (err) { + return callback(err); + } if (!body ||!body.loadbalancer) { return callback(new Error('Malformed API Response')); } - return err - ? callback(err) - : callback(err, new self.models.lbaasLoadbalancers(self, body.loadbalancer)); + return callback(err, new self.models.lbaasLoadbalancer(self, body.loadbalancer)); }); }; @@ -84,18 +85,19 @@ exports.createLoadbalancer = function (options, callback) { var loadbalancer_create = _convertLoadbalancersToWireFormat(loadbalancer); var createLoadbalancerOpts = { method: 'POST', - path: lbaasLoadbalancersPath, + path: lbaasLoadbalancerPath, body: { 'loadbalancer' : loadbalancer_create} }; self.emit('log::trace', 'Creating lbaas loadbalancer', loadbalancer); this._request(createLoadbalancerOpts, function (err,body) { + if (err) { + return callback(err); + } if (!body ||!body.loadbalancer) { return callback(new Error('Malformed API Response')); } - return err - ? callback(err) - : callback(err, new self.models.lbaasLoadbalancers(self, body.loadbalancer)); + return callback(err, new self.models.lbaasLoadbalancer(self, body.loadbalancer)); }); }; @@ -116,18 +118,19 @@ exports.updateLoadbalancer = function (options, callback) { loadbalancerUpdate = _convertLoadbalancersUpdateToWireFormat(options); var updateLoadbalancersOpts = { method: 'PUT', - path: urlJoin(lbaasLoadbalancersPath, loadbalancerID), + path: urlJoin(lbaasLoadbalancerPath, loadbalancerID), contentType: 'application/json', body: { 'loadbalancer' : loadbalancerUpdate } }; - self.emit('log::trace', 'Updating lbaas pools', loadbalancerID); + self.emit('log::trace', 'Updating lbaas loadbalancer', loadbalancerID); this._request(updateLoadbalancersOpts, function (err,body) { + if (err) { + return callback(err); + } if (!body ||!body.loadbalancer) { return callback(new Error('Malformed API Response')); } - return err - ? callback(err) - : callback(err, new self.models.lbaasLoadbalancers(self, body.loadbalancer)); + return callback(err, new self.models.lbaasLoadbalancer(self, body.loadbalancer)); }); }; @@ -138,10 +141,10 @@ exports.updateLoadbalancer = function (options, callback) { */ exports.destroyLoadbalancer = function (options, callback) { var self = this, - loadbalancerID = options instanceof this.models.lbaasLoadbalancers ? options.id : options; + loadbalancerID = options instanceof this.models.lbaasLoadbalancer ? options.id : options; self.emit('log::trace', 'Deleting lbaas loadbalancer', loadbalancerID); this._request({ - path: urlJoin(lbaasLoadbalancersPath, loadbalancerID), + path: urlJoin(lbaasLoadbalancerPath, loadbalancerID), contentType: 'application/json', method: 'DELETE' }, function (err) { @@ -156,7 +159,7 @@ exports.destroyLoadbalancer = function (options, callback) { */ _convertLoadbalancersUpdateToWireFormat = function (details){ var wireFormat = {}; - wireFormat.admin_state_up = details.admin_state_up; + wireFormat.admin_state_up = details.admin_state_up || true; wireFormat.description = details.description; wireFormat.name = details.name; return wireFormat; @@ -183,7 +186,7 @@ _convertLoadbalancersToWireFormat = function (details){ wireFormat.tenant_id = details.tenant_id; wireFormat.vip_subnet_id = details.vip_subnet_id; wireFormat.vip_address = details.vip_address || null; - wireFormat.admin_state_up = details.admin_state_up; + wireFormat.admin_state_up = details.admin_state_up || true; wireFormat.subnet_id = details.flavor; return wireFormat; }; diff --git a/lib/pkgcloud/openstack/network/client/lbaasPoolsV2.js b/lib/pkgcloud/openstack/network/client/lbaasPoolsV2.js new file mode 100644 index 000000000..2bcb9abc8 --- /dev/null +++ b/lib/pkgcloud/openstack/network/client/lbaasPoolsV2.js @@ -0,0 +1,319 @@ +var urlJoin = require('url-join'); + +var lbaasPoolPath = '/lbaas/pools'; + + +// Declaring variables for helper functions defined later +var _convertPoolsMonitorAssociationToWireFormat, + _convertPoolsToWireFormat, + _convertPoolsUpdateToWireFormat; + + +/*** + + list pool (Get) + +***/ +exports.getPoolsV2 = function (options, callback) { + var self = this; + if (typeof options === 'function') { + callback = options; + options = {}; + } + var getPoolOpts = { + path: lbaasPoolPath, + }; + this._request(getPoolOpts, function (err, body) { + if (err) { + return callback(err); + } + else if (!body || !body.pools || !(body.pools instanceof Array)) { + return callback(new Error('Malformed API Response')); + } + + return callback(err, body.pools.map(function (pools) { + return new self.models.lbaasPoolsV2(self, pools); + })); + }); +}; + +/** + + Pool show + +*/ +exports.getPoolV2 = function (option, callback) { + var self = this, + poolID = option instanceof this.models.lbaasPoolsV2 ? option.id : option; + self.emit('log::trace', 'Getting details for lbaas Pool', poolID); + this._request({ + path: urlJoin(lbaasPoolPath, poolID), + method: 'GET' + }, function (err, body) { + if (err) { + return callback(err); + } + if (!body ||!body.pool) { + return new Error('Malformed API Response'); + } + callback(err, new self.models.lbaasPoolsV2(self, body.pool)); + }); +}; + +/** + + Pool create + { + "pool": { + "admin_state_up": true, + "description": "simple pool", + "lb_algorithm": "ROUND_ROBIN", + "name": "pool1", + "protocol": "HTTP", + "subnet_id": "6c529c2b-22b8-4eae-b722-bc6338f6d1a8" + } + } +**/ +exports.createPoolV2 = function (options, callback) { + var self = this, + pool = typeof options === 'object' ? options : { 'name' : options}; + + var pool_create = _convertPoolsToWireFormat(pool); + + var createPoolOpts = { + method: 'POST', + path: lbaasPoolPath, + body: { 'pool' : pool_create} + }; + + self.emit('log::trace', 'Creating lbaas pool', pool); + this._request(createPoolOpts, function (err,body) { + return err + ? callback(err) + : callback(err, new self.models.lbaasPoolsV2(self, body.pool)); + }); +}; + +/** + Pool update + { + "admin_state_up": true, + "description": "simple pool", + "lb_algorithm": "ROUND_ROBIN", + "name": "pool1", + } +**/ +exports.updatePoolV2 = function (options, callback) { + var self = this, + poolID = options.id, + poolUpdate = _convertPoolsUpdateToWireFormat(options); + var updatePoolsOpts = { + method: 'PUT', + path: urlJoin(lbaasPoolPath, poolID), + contentType: 'application/json', + body: { 'pool' : poolUpdate } + }; + self.emit('log::trace', 'Updating lbaas pools', poolID); + this._request(updatePoolsOpts, function (err,body) { + return err + ? callback(err) + : callback(err, new self.models.lbaasPoolsV2(self, body.pool)); + }); +}; + +/* + Pool delete + +*/ +exports.destroyPoolV2 = function (options, callback) { + var self = this, + poolID = options instanceof this.models.lbaasPoolsV2 ? options.id : options; + self.emit('log::trace', 'Deleting lbaas pool', poolID); + this._request({ + path: urlJoin(lbaasPoolPath, poolID), + contentType: 'application/json', + method: 'DELETE' + }, function (err) { + if (err) { + return callback(err); + } + callback(err, poolID); + }); +}; + +/*** + + list member (Get) + +***/ +exports.getMembersV2 = function (options, callback) { + var self = this; + var poolID = options instanceof this.models.lbaasPoolsV2 ? option.id : options; + if (typeof options === 'function') { + callback = options; + options = {}; + } + self.emit('log::trace', 'Getting lbaas Pool members', poolID); + var getMemberOpts = { + path: urlJoin(lbaasPoolPath, poolID, 'members') + }; + this._request(getMemberOpts, function (err, body) { + if (err) { + return callback(err); + } + else if (!body || !body.members || !(body.members instanceof Array)) { + return callback(new Error('Malformed API Response')); + } + + return callback(err, body.members.map(function (member) { + return new self.models.lbaasMembersV2(self, member); + })); + }); +} + +/** + + Member show + +*/ +exports.getMemberV2 = function (option, callback) { + var self = this; + var poolId = option.poolId; + var memberId = option.memberId; + self.emit('log::trace', 'Getting details for member', memberId); + this._request({ + path: urlJoin(lbaasPoolPath, poolID, 'members', memberId), + method: 'GET' + }, function (err, body) { + if (err) { + return callback(err); + } + if (!body ||!body.member) { + return new Error('Malformed API Response'); + } + callback(err, new self.models.lbaasMembersV2(self, body.member)); + }); +}; + +/** + Member create + { + "member": { + "address": "10.0.0.22", + "admin_state_up": true, + "protocol_port": "90", + "pool_id": "5a9a3e9e-d1aa-448e-af37-a70171f2a332", + "weight": "1" + } + } +**/ +exports.createMemberV2 = function (options, callback) { + var self = this; + var poolId = options.pool_id; + + var memberCreate = _convertMemberToWireFormat(options); + + var createMemberOpts = { + method: 'POST', + path: urlJoin(lbaasPoolPath, poolId, 'members'), + body: { 'member' : memberCreate } + }; + + self.emit('log::trace', 'Creating lbaas pool member', memberCreate); + this._request(createMemberOpts, function (err,body) { + return err + ? callback(err) + : callback(err, new self.models.lbaasMembersV2(self, body.member)); + }); +}; + +exports.updateMemberV2 = function (options, callback) { + var self = this; + var poolId = options.member.pool_id; + var memberId = opetions.member.member_id; + var memberUpdate = _convertMemberUpdateToWireFormat(options.member); + + var updateMemberOpts = { + method: 'PUT', + path: urlJoin(lbaasPoolPath, poolId, 'members', memberId), + contentType: 'application/json', + body: { 'member' : memberUpdate } + }; + + self.emit('log::trace', 'Updating lbaas pool member', memberId); + this._request(updateMemberOpts, function (err,body) { + return err + ? callback(err) + : callback(err, new self.models.lbaasMembersV2(self, body.member)); + }); +}; + +exports.destroyMemberV2 = function (options, callback) { + var self = this; + var poolId = options.member.pool_id; + var memberId = opetions.member.member_id; + self.emit('log::trace', 'Deleting lbaas member', memberID); + this._request({ + path: urlJoin(lbaasPoolPath, poolId, 'members', memberId), + contentType: 'application/json', + method: 'DELETE' + }, function (err) { + if (err) { + return callback(err); + } + callback(err, poolID); + }); +}; + +/* + Convert message format for update +*/ +_convertPoolsUpdateToWireFormat = function (details){ + var wireFormat = {}; + wireFormat.admin_state_up = details.admin_state_up || true; + wireFormat.description = details.description; + wireFormat.lb_algorithm = details.lb_algorithm || 'ROUND_ROBIN'; + wireFormat.name = details.name; + return wireFormat; +}; + +/* + Convert message format for creation + + { + "admin_state_up": true, + "description": "simple pool", + "lb_algorithm": "ROUND_ROBIN", + "name": "pool1", + "protocol": "HTTP", + "subnet_id": "6c529c2b-22b8-4eae-b722-bc6338f6d1a8" + } +*/ +_convertPoolsToWireFormat = function (details){ + var wireFormat = {}; + wireFormat.admin_state_up = details.admin_state_up || true; + wireFormat.description = details.description; + wireFormat.lb_algorithm = details.lb_algorithm || 'ROUND_ROBIN'; + wireFormat.listener_id = details.listener_id; + wireFormat.name = details.name; + wireFormat.protocol = details.protocol; + return wireFormat; +}; + +_convertMemberToWireFormat = function (details) { + var wireFormat = {}; + wireFormat.address = details.address; + wireFormat.admin_state_up = details.admin_state_up || true; + wireFormat.protocol_port = details.protocol_port; + wireFormat.weight = details.weight; + wireFormat.subnet_id = details.subnet_id; + return wireFormat; +}; + +_convertMemberUpdateToWireFormat = function (details) { + var wireFormat = {}; + wireFormat.admin_state_up = details.admin_state_up || true; + wireFormat.protocol_port = details.protocol_port; + wireFormat.weight = details.weight; + return wireFormat; +} diff --git a/lib/pkgcloud/openstack/network/lbaasListener.js b/lib/pkgcloud/openstack/network/lbaasListener.js new file mode 100644 index 000000000..d298510ea --- /dev/null +++ b/lib/pkgcloud/openstack/network/lbaasListener.js @@ -0,0 +1,36 @@ +var util = require('util'), + base = require('../../core/network/lbaasListener'), + + _ = require('underscore'); + +//VIP prototype +var lbaasListener = exports.lbaasListener = function lbaasListener(client, details) { + base.lbaasListener.call(this, client, details); +}; + +util.inherits(lbaasListener, base.lbaasListener); + +lbaasListener.prototype._setProperties = function (details) { + + this.admin_state_up = details.admin_state_up || this.admin_state_up; + this.connection_limit = details.connection_limit || -1; + this.default_pool_id = details.default_pool_id || this.default_pool_id; + this.description = details.description || this.description; + this.id = details.id || this.id; + this.loadbalancers = details.loadbalancers || this.loadbalancers; + this.name = details.name || this.name; + this.protocol = details.protocol || this.protocol; + this.protocol_port = details.protocol_port || this.protocol_port; + this.project_id = details.project_id || this.project_id; + this.tenant_id = details.tenant_id || this.tenant_id; + if (details.protocol === 'TERMINATED_HTTPS'){ + this.default_tls_container_id = details.default_tls_container_id || this.default_tls_container_id + this.sni_container_id = details.sni_container_id || this.sni_container_id ; + } +}; + +lbaasListener.prototype.toJSON = function () { + return _.pick(this, ['admin_state_up', 'connection_limit', 'default_pool_id', 'description', 'id', + 'loadbalancers', 'name', 'protocol', 'protocol_port', 'project_id', 'tenant_id', 'default_tls_container_ref', + 'sni_container_refs']); +}; diff --git a/lib/pkgcloud/openstack/network/lbaasLoadbalancer.js b/lib/pkgcloud/openstack/network/lbaasLoadbalancer.js index 2d3c2a2d7..10f1e8739 100644 --- a/lib/pkgcloud/openstack/network/lbaasLoadbalancer.js +++ b/lib/pkgcloud/openstack/network/lbaasLoadbalancer.js @@ -1,16 +1,16 @@ var util = require('util'), - base = require('../../core/network/lbaasLoadbalancers'), + base = require('../../core/network/lbaasLoadbalancer'), _ = require('underscore'); //VIP prototype -var lbaasLoadbalancers = exports.lbaasLoadbalancers = function lbaasLoadbalancers(client, details) { - base.lbaasLoadbalancers.call(this, client, details); +var lbaasLoadbalancer = exports.lbaasLoadbalancer = function lbaasLoadbalancer(client, details) { + base.lbaasLoadbalancer.call(this, client, details); }; -util.inherits(lbaasLoadbalancers, base.lbaasLoadbalancers); +util.inherits(lbaasLoadbalancer, base.lbaasLoadbalancer); -lbaasLoadbalancers.prototype._setProperties = function (details) { +lbaasLoadbalancer.prototype._setProperties = function (details) { this.admin_state_up = details.admin_state_up || this.admin_state_up; this.description = details.description || this.description; @@ -19,6 +19,7 @@ lbaasLoadbalancers.prototype._setProperties = function (details) { this.name = details.name || this.name; this.operating_status = details.operating_status || this.operating_status; this.provisioning_status = details.provisioning_status || this.provisioning_status; + this.project_id = details.project_id || this.project_id; this.tenant_id = details.tenant_id || this.tenant_id; this.vip_address = details.vip_address || this.vip_address; this.vip_subnet_id = details.vip_subnet_id || this.vip_subnet_id; @@ -26,8 +27,8 @@ lbaasLoadbalancers.prototype._setProperties = function (details) { this.provider = details.provider || this.provider; }; -lbaasLoadbalancers.prototype.toJSON = function () { - return _.pick(this, ['admin_state_up', 'id', 'listeners', 'name', - 'operating_status', 'provisioning_status', 'tenant_id', 'vip_address', +lbaasLoadbalancer.prototype.toJSON = function () { + return _.pick(this, ['admin_state_up', 'description', 'id', 'listeners', 'name', + 'operating_status', 'provisioning_status', 'project_id', 'tenant_id', 'vip_address', 'vip_subnet_id', 'flavor', 'provider']); }; diff --git a/lib/pkgcloud/openstack/network/lbaasMembersV2.js b/lib/pkgcloud/openstack/network/lbaasMembersV2.js new file mode 100644 index 000000000..371dc9d89 --- /dev/null +++ b/lib/pkgcloud/openstack/network/lbaasMembersV2.js @@ -0,0 +1,26 @@ +var util = require('util'), + base = require('../../core/network/lbaasMembersV2'), + + _ = require('underscore'); + +//VIP prototype +var lbaasMembersV2 = exports.lbaasMembersV2 = function lbaasMembersV2(client, details) { + base.lbaasMembersV2.call(this, client, details); +}; + +util.inherits(lbaasMembersV2, base.lbaasMembersV2); + +lbaasMembersV2.prototype._setProperties = function (details) { + + this.admin_state_up = details.admin_state_up || this.admin_state_up; + this.address = details.address || this.address; + this.protocol_port = details.protocol_port || this.protocol_port; + this.pool_id = details.pool_id || this.pool_id; + this.weight = details.weight || this.weight; + +}; + +lbaasMembersV2.prototype.toJSON = function () { + return _.pick(this, ['admin_state_up', 'address', 'protocol_port', 'pool_id', + 'weight']); +}; diff --git a/lib/pkgcloud/openstack/network/lbaasPoolsV2.js b/lib/pkgcloud/openstack/network/lbaasPoolsV2.js new file mode 100644 index 000000000..ce92d3f8c --- /dev/null +++ b/lib/pkgcloud/openstack/network/lbaasPoolsV2.js @@ -0,0 +1,30 @@ +var util = require('util'), + base = require('../../core/network/lbaasPoolsV2'), + + _ = require('underscore'); + +//VIP prototype +var lbaasPoolsV2 = exports.lbaasPoolsV2 = function lbaasPoolsV2(client, details) { + base.lbaasPoolsV2.call(this, client, details); +}; + +util.inherits(lbaasPoolsV2, base.lbaasPoolsV2); + +lbaasPoolsV2.prototype._setProperties = function (details) { + + this.admin_state_up = details.admin_state_up || this.admin_state_up; + this.description = details.description || this.description; + this.lb_algorithm = details.lb_algorithm || this.lb_algorithm; + this.listener_id = details.listener_id || this.listener_id; + this.name = details.name || this.name; + this.project_id = details.project_id || this.project_id; + this.protocol = details.protocol || this.protocol; + this.subnet_id = details.subnet_id || this.subnet_id; + this.tenant_id = details.tenant_id || this.tenant_id; + +}; + +lbaasPoolsV2.prototype.toJSON = function () { + return _.pick(this, ['admin_state_up', 'description', 'lb_algorithm', 'listener_id', + 'name', 'project_id', 'protocol', 'subnet_id','tenant_id']); +}; diff --git a/test/helpers/index.js b/test/helpers/index.js index 830bb7975..a2d807f2d 100644 --- a/test/helpers/index.js +++ b/test/helpers/index.js @@ -109,7 +109,7 @@ helpers.selectInstance = function selectInstance(client, callback) { if (err) { throw new Error(err); } - + if (instances.length === 0) { throw new Error({ message:'No instances found.' }); } From 99d25ee076a27230f1d3d1c3688dbc1b44635f10 Mon Sep 17 00:00:00 2001 From: "jhihming.huang" Date: Fri, 9 Dec 2016 18:40:20 +0800 Subject: [PATCH 03/13] finish health monitor --- .../network/openstack_create_monitorv2.js | 31 +++ examples/network/openstack_delete_lbs.js | 34 +-- examples/network/openstack_delete_listener.js | 30 +-- .../network/openstack_delete_monitorv2.js | 22 ++ examples/network/openstack_delete_poolv2.js | 31 +-- examples/network/openstack_list_lbs.js | 31 +-- examples/network/openstack_list_monitorv2.js | 20 ++ examples/network/openstack_show_lbs.js | 33 +-- examples/network/openstack_show_listener.js | 30 +-- examples/network/openstack_show_monitorv2.js | 20 ++ examples/network/openstack_show_poolv2.js | 30 +-- examples/network/openstack_update_lbs.js | 45 ++-- examples/network/openstack_update_listener.js | 46 ++-- .../network/openstack_update_monitorv2.js | 28 +++ examples/network/openstack_update_poolv2.js | 42 ++-- .../core/network/lbaasHealthMonitorV2.js | 8 + lib/pkgcloud/core/network/lbaasMembersV2.js | 23 -- lib/pkgcloud/core/network/lbaasPoolsV2.js | 23 -- .../openstack/network/client/index.js | 4 +- .../network/client/lbaasHealthMonitorV2.js | 212 ++++++++++++++++++ .../openstack/network/client/lbaasPoolsV2.js | 67 +++--- lib/pkgcloud/openstack/network/index.js | 2 + .../openstack/network/lbaasHealthMonitorV2.js | 30 +++ .../openstack/network/lbaasMembersV2.js | 10 +- .../openstack/network/lbaasPoolsV2.js | 8 +- 25 files changed, 599 insertions(+), 261 deletions(-) create mode 100644 examples/network/openstack_create_monitorv2.js create mode 100644 examples/network/openstack_delete_monitorv2.js create mode 100644 examples/network/openstack_list_monitorv2.js create mode 100644 examples/network/openstack_show_monitorv2.js create mode 100644 examples/network/openstack_update_monitorv2.js create mode 100644 lib/pkgcloud/core/network/lbaasHealthMonitorV2.js create mode 100644 lib/pkgcloud/openstack/network/client/lbaasHealthMonitorV2.js create mode 100644 lib/pkgcloud/openstack/network/lbaasHealthMonitorV2.js diff --git a/examples/network/openstack_create_monitorv2.js b/examples/network/openstack_create_monitorv2.js new file mode 100644 index 000000000..8e80f2280 --- /dev/null +++ b/examples/network/openstack_create_monitorv2.js @@ -0,0 +1,31 @@ +var getToken = require('./get_openstack_token'); +getToken.getToken(function (id){ + var pkgcloud = require('../../lib/pkgcloud'); + var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; + var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: KH_admin_tenantID, + token: id, + region: 'RegionOne', + authUrl: 'http://172.16.31.1:35357', + strictSSL: false + }); + + + var options = { + "pool_id": "c0d19bc6-d7c9-408a-825e-f1c9ef143b12", + "delay": "1", + "expected_codes": "200,201,202", + "http_method": "GET", + "max_retries": 5, + "timeout": 1, + "type": "HTTP", + "url_path": "/index.html" + }; + client.createHealthMonitorV2(options, function(err, item) { + if (err) { + console.log(err); + } + console.log(item); + }); +}); diff --git a/examples/network/openstack_delete_lbs.js b/examples/network/openstack_delete_lbs.js index 81624a84a..86b37bc13 100644 --- a/examples/network/openstack_delete_lbs.js +++ b/examples/network/openstack_delete_lbs.js @@ -1,18 +1,20 @@ var pkgcloud = require('../../lib/pkgcloud'); - -var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: 'e7a1864d6a9348f3a94fd32e3ebd1a36', - token: 'f0ff40891f3f4e4bbb550621ebcfffc5', - region: 'RegionOne', - authUrl: 'http://controller:5000/', - strictSSL: false -}); -var options = '12ac7bc9-7937-4796-bb9d-683b75b89916'; -client.destroyLoadbalancer(options, function (err, lbs) { - if (err) { - console.error(err); - }else { - console.log(lbs); - } +var getToken = require('./get_openstack_token'); +getToken.getToken(function (id){ + var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: 'e7a1864d6a9348f3a94fd32e3ebd1a36', + token: id, + region: 'RegionOne', + authUrl: 'http://controller:5000/', + strictSSL: false + }); + var options = '12ac7bc9-7937-4796-bb9d-683b75b89916'; + client.destroyLoadbalancer(options, function (err, lbs) { + if (err) { + console.error(err); + }else { + console.log(lbs); + } + }); }); diff --git a/examples/network/openstack_delete_listener.js b/examples/network/openstack_delete_listener.js index 138f988dc..11d4eab6d 100644 --- a/examples/network/openstack_delete_listener.js +++ b/examples/network/openstack_delete_listener.js @@ -1,19 +1,21 @@ var pkgcloud = require('../../lib/pkgcloud'); var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; -var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: KH_admin_tenantID, - token: '962e1f6775e54d7d8c467641ee18fe9d', - region: 'RegionOne', - authUrl: 'http://172.16.31.1:35357', - strictSSL: false -}); +getToken.getToken(function (id){ + var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: KH_admin_tenantID, + token: id, + region: 'RegionOne', + authUrl: 'http://172.16.31.1:35357', + strictSSL: false + }); -var options = '68ec6c96-b62c-411e-8b59-5e142a4f2679'; -client.destroyListener(options, function(err, listener) { - if (err) { - console.log(err); - } - console.log(listener); + var options = '68ec6c96-b62c-411e-8b59-5e142a4f2679'; + client.destroyListener(options, function(err, listener) { + if (err) { + console.log(err); + } + console.log(listener); + }); }); diff --git a/examples/network/openstack_delete_monitorv2.js b/examples/network/openstack_delete_monitorv2.js new file mode 100644 index 000000000..b3aa20c56 --- /dev/null +++ b/examples/network/openstack_delete_monitorv2.js @@ -0,0 +1,22 @@ +var getToken = require('./get_openstack_token'); +getToken.getToken(function (id){ + var pkgcloud = require('../../lib/pkgcloud'); + var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; + var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: KH_admin_tenantID, + token: id, + region: 'RegionOne', + authUrl: 'http://172.16.31.1:35357', + strictSSL: false + }); + + + var options = "5f96c62f-71e6-4c9d-b397-c541f4fe2d69"; + client.destroyHealthMonitorV2(options, function(err, item) { + if (err) { + console.log(err); + } + console.log(item); + }); +}); diff --git a/examples/network/openstack_delete_poolv2.js b/examples/network/openstack_delete_poolv2.js index 0ca3ab74a..0fad717fe 100644 --- a/examples/network/openstack_delete_poolv2.js +++ b/examples/network/openstack_delete_poolv2.js @@ -1,19 +1,22 @@ var pkgcloud = require('../../lib/pkgcloud'); var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; -var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: KH_admin_tenantID, - token: 'f7fed2ba253641be8e761bee31278545', - region: 'RegionOne', - authUrl: 'http://172.16.31.1:35357', - strictSSL: false -}); +var getToken = require('./get_openstack_token'); +getToken.getToken(function (id){ + var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: KH_admin_tenantID, + token: id, + region: 'RegionOne', + authUrl: 'http://172.16.31.1:35357', + strictSSL: false + }); -var options = 'd8d00cbd-7287-4e83-ba10-df08a0d6644d'; -client.destroyPoolV2(options, function(err, listener) { - if (err) { - console.log(err); - } - console.log(listener); + var options = 'd8d00cbd-7287-4e83-ba10-df08a0d6644d'; + client.destroyPoolV2(options, function(err, listener) { + if (err) { + console.log(err); + } + console.log(listener); + }); }); diff --git a/examples/network/openstack_list_lbs.js b/examples/network/openstack_list_lbs.js index 4d5366123..8842237c5 100644 --- a/examples/network/openstack_list_lbs.js +++ b/examples/network/openstack_list_lbs.js @@ -1,18 +1,21 @@ var pkgcloud = require('../../lib/pkgcloud'); var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; -var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: KH_admin_tenantID, - token: 'd16cea96919a4fc9969a0a58cdf36eb0', - region: 'RegionOne', - authUrl: 'http://172.16.31.1:35357', - strictSSL: false -}); +var getToken = require('./get_openstack_token'); +getToken.getToken(function (id){ + var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: KH_admin_tenantID, + token: id, + region: 'RegionOne', + authUrl: 'http://172.16.31.1:35357', + strictSSL: false + }); -client.getLoadbalancers(function (err, lbs) { - if (err) { - console.error(err); - } else { - console.log(lbs); - } + client.getLoadbalancers(function (err, lbs) { + if (err) { + console.error(err); + } else { + console.log(lbs); + } + }); }); diff --git a/examples/network/openstack_list_monitorv2.js b/examples/network/openstack_list_monitorv2.js new file mode 100644 index 000000000..21201fce7 --- /dev/null +++ b/examples/network/openstack_list_monitorv2.js @@ -0,0 +1,20 @@ +var getToken = require('./get_openstack_token'); +getToken.getToken(function (id){ + var pkgcloud = require('../../lib/pkgcloud'); + var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; + var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: KH_admin_tenantID, + token: id, + region: 'RegionOne', + authUrl: 'http://172.16.31.1:35357', + strictSSL: false + }); + + client.getHealthMonitorsV2(function(err, item) { + if (err) { + console.log(err); + } + console.log(item); + }); +}); diff --git a/examples/network/openstack_show_lbs.js b/examples/network/openstack_show_lbs.js index 4727bf2b0..21775b33e 100644 --- a/examples/network/openstack_show_lbs.js +++ b/examples/network/openstack_show_lbs.js @@ -1,19 +1,20 @@ var pkgcloud = require('../../lib/pkgcloud'); +getToken.getToken(function (id){ + var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: id, + token: 'f0ff40891f3f4e4bbb550621ebcfffc5', + region: 'RegionOne', + authUrl: 'http://controller:5000/', + strictSSL: false + }); + var options = '50d3f823-cccb-471d-a82d-d7c03a4208a6'; -var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: 'e7a1864d6a9348f3a94fd32e3ebd1a36', - token: 'f0ff40891f3f4e4bbb550621ebcfffc5', - region: 'RegionOne', - authUrl: 'http://controller:5000/', - strictSSL: false -}); -var options = '50d3f823-cccb-471d-a82d-d7c03a4208a6'; - -client.getLoadbalancer(options, function (err, lbs) { - if (err) { - console.log(err); - } else { - console.log(lbs); - } + client.getLoadbalancer(options, function (err, lbs) { + if (err) { + console.log(err); + } else { + console.log(lbs); + } + }); }); diff --git a/examples/network/openstack_show_listener.js b/examples/network/openstack_show_listener.js index ef8ad7f3b..9d4033c58 100644 --- a/examples/network/openstack_show_listener.js +++ b/examples/network/openstack_show_listener.js @@ -1,19 +1,21 @@ var pkgcloud = require('../../lib/pkgcloud'); var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; -var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: KH_admin_tenantID, - token: 'f56ae4ca462642a4ba28e07bf471d002', - region: 'RegionOne', - authUrl: 'http://172.16.31.1:35357', - strictSSL: false -}); +getToken.getToken(function (id){ + var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: KH_admin_tenantID, + token: id, + region: 'RegionOne', + authUrl: 'http://172.16.31.1:35357', + strictSSL: false + }); -var options = '1ac1a152-3b9f-48d2-bab5-f0cb9f36292b'; -client.getListener(options, function(err, listener) { - if (err) { - console.log(err); - } - console.log(listener); + var options = '1ac1a152-3b9f-48d2-bab5-f0cb9f36292b'; + client.getListener(options, function(err, listener) { + if (err) { + console.log(err); + } + console.log(listener); + }); }); diff --git a/examples/network/openstack_show_monitorv2.js b/examples/network/openstack_show_monitorv2.js new file mode 100644 index 000000000..f4f859ddb --- /dev/null +++ b/examples/network/openstack_show_monitorv2.js @@ -0,0 +1,20 @@ +var getToken = require('./get_openstack_token'); +getToken.getToken(function (id){ + var pkgcloud = require('../../lib/pkgcloud'); + var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; + var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: KH_admin_tenantID, + token: id, + region: 'RegionOne', + authUrl: 'http://172.16.31.1:35357', + strictSSL: false + }); + var option = '5f96c62f-71e6-4c9d-b397-c541f4fe2d69'; + client.getHealthMonitorV2(option, function(err, item) { + if (err) { + console.log(err); + } + console.log(item); + }); +}); diff --git a/examples/network/openstack_show_poolv2.js b/examples/network/openstack_show_poolv2.js index 15d4d0568..732fb9e81 100644 --- a/examples/network/openstack_show_poolv2.js +++ b/examples/network/openstack_show_poolv2.js @@ -1,19 +1,21 @@ var pkgcloud = require('../../lib/pkgcloud'); var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; -var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: KH_admin_tenantID, - token: '4308c7c3b36b409191e6a74eb3eb6eac', - region: 'RegionOne', - authUrl: 'http://172.16.31.1:35357', - strictSSL: false -}); +getToken.getToken(function (id){ + var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: KH_admin_tenantID, + token: id, + region: 'RegionOne', + authUrl: 'http://172.16.31.1:35357', + strictSSL: false + }); -var options = 'c0cd6ef8-444e-4182-b50e-fefcb8200300'; -client.getPoolV2(options, function(err, listener) { - if (err) { - console.log(err); - } - console.log(listener); + var options = 'c0cd6ef8-444e-4182-b50e-fefcb8200300'; + client.getPoolV2(options, function(err, listener) { + if (err) { + console.log(err); + } + console.log(listener); + }); }); diff --git a/examples/network/openstack_update_lbs.js b/examples/network/openstack_update_lbs.js index 2a8889805..05a9f90cb 100644 --- a/examples/network/openstack_update_lbs.js +++ b/examples/network/openstack_update_lbs.js @@ -1,25 +1,28 @@ var pkgcloud = require('../../lib/pkgcloud'); - -var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: 'e7a1864d6a9348f3a94fd32e3ebd1a36', - token: 'f0ff40891f3f4e4bbb550621ebcfffc5', - region: 'RegionOne', - authUrl: 'http://controller:5000/', - strictSSL: false -}); +var getToken = require('./get_openstack_token'); +var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; +getToken.getToken(function (id){ + var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: KH_admin_tenantID, + token: id, + region: 'RegionOne', + authUrl: 'http://172.16.31.1:35357', + strictSSL: false + }); -var options = { - 'id': '50d3f823-cccb-471d-a82d-d7c03a4208a6', - 'description': 'updated loadbalancer', - 'name': 'update name', - 'admin_state_up': false, -}; -client.updateLoadbalancer(options, function(err, lbs) { - if (err) { - console.log(err); - } else { - console.log('success', lbs); - } + var options = { + 'id': '3a3bd493-f532-4776-a5c2-f975b2b2ea91', + 'description': 'updated loadbalancer', + 'name': 'update name', + 'admin_state_up': false, + }; + client.updateLoadbalancer(options, function(err, lbs) { + if (err) { + console.log(err); + } else { + console.log('success', lbs); + } + }); }); diff --git a/examples/network/openstack_update_listener.js b/examples/network/openstack_update_listener.js index d5a0b6fa8..b6f0755c2 100644 --- a/examples/network/openstack_update_listener.js +++ b/examples/network/openstack_update_listener.js @@ -1,26 +1,26 @@ var pkgcloud = require('../../lib/pkgcloud'); var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; -var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: KH_admin_tenantID, - token: 'f56ae4ca462642a4ba28e07bf471d002', - region: 'RegionOne', - authUrl: 'http://172.16.31.1:35357', - strictSSL: false -}); - - -var options = { - 'name': 'listener_unit_test_updated', - 'description': 'simple listener updated', - 'connection_limit': 111655, - 'admin_state_up': false, - 'id': '1ac1a152-3b9f-48d2-bab5-f0cb9f36292b', - 'default_tls_container_id': 'http://192.168.100.11:9311/v1/containers/e243f5ba-1754-45ad-87e7-3102d5739a76' -}; -client.updateListener(options, function(err, listener) { - if (err) { - console.log(err); - } - console.log(listener); +getToken.getToken(function (id){ + var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: KH_admin_tenantID, + token: id, + region: 'RegionOne', + authUrl: 'http://172.16.31.1:35357', + strictSSL: false + }); + var options = { + 'name': 'listener_unit_test_updated', + 'description': 'simple listener updated', + 'connection_limit': 111655, + 'admin_state_up': false, + 'id': '1ac1a152-3b9f-48d2-bab5-f0cb9f36292b', + 'default_tls_container_id': 'http://192.168.100.11:9311/v1/containers/e243f5ba-1754-45ad-87e7-3102d5739a76' + }; + client.updateListener(options, function(err, listener) { + if (err) { + console.log(err); + } + console.log(listener); + }); }); diff --git a/examples/network/openstack_update_monitorv2.js b/examples/network/openstack_update_monitorv2.js new file mode 100644 index 000000000..097e38c14 --- /dev/null +++ b/examples/network/openstack_update_monitorv2.js @@ -0,0 +1,28 @@ +var pkgcloud = require('../../lib/pkgcloud'); +var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; +var getToken = require('./get_openstack_token'); +getToken.getToken(function (id){ + var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: KH_admin_tenantID, + token: id, + region: 'RegionOne', + authUrl: 'http://172.16.31.1:35357', + strictSSL: false + }); + var options = { + 'delay' : 10, + 'expected_codes': '400,401', + 'http_method': 'head', + 'max_retries': 9, + 'timeout': '13', + 'url_path': '/update', + 'id': '5f96c62f-71e6-4c9d-b397-c541f4fe2d69' + }; + client.updateHealthMonitorV2(options, function(err, listener) { + if (err) { + console.log(err); + } + console.log(listener); + }); +}); diff --git a/examples/network/openstack_update_poolv2.js b/examples/network/openstack_update_poolv2.js index 748c73fe5..e35caa550 100644 --- a/examples/network/openstack_update_poolv2.js +++ b/examples/network/openstack_update_poolv2.js @@ -1,25 +1,27 @@ var pkgcloud = require('../../lib/pkgcloud'); var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; -var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: KH_admin_tenantID, - token: '4308c7c3b36b409191e6a74eb3eb6eac', - region: 'RegionOne', - authUrl: 'http://172.16.31.1:35357', - strictSSL: false -}); +getToken.getToken(function (id){ + var client = pkgcloud.network.createClient({ + provider: 'openstack', + tenantId: KH_admin_tenantID, + token: id, + region: 'RegionOne', + authUrl: 'http://172.16.31.1:35357', + strictSSL: false + }); -var options = { - 'name': 'pool_test_updated', - 'description': 'simple pool updated', - 'admin_state_up': false, - 'id': 'd8d00cbd-7287-4e83-ba10-df08a0d6644d', - 'lb_algorithm': 'LEAST_CONNECTIONS' -}; -client.updatePoolV2(options, function(err, listener) { - if (err) { - console.log(err); - } - console.log(listener); + var options = { + 'name': 'pool_test_updated', + 'description': 'simple pool updated', + 'admin_state_up': false, + 'id': 'd8d00cbd-7287-4e83-ba10-df08a0d6644d', + 'lb_algorithm': 'LEAST_CONNECTIONS' + }; + client.updatePoolV2(options, function(err, listener) { + if (err) { + console.log(err); + } + console.log(listener); + }); }); diff --git a/lib/pkgcloud/core/network/lbaasHealthMonitorV2.js b/lib/pkgcloud/core/network/lbaasHealthMonitorV2.js new file mode 100644 index 000000000..e40cf9334 --- /dev/null +++ b/lib/pkgcloud/core/network/lbaasHealthMonitorV2.js @@ -0,0 +1,8 @@ +var util = require('util'), + model = require('../base/model'); + +var lbaasHealthMonitorV2 = exports.lbaasHealthMonitorV2 = function (client, details) { + model.Model.call(this, client, details); +}; + +util.inherits(lbaasHealthMonitorV2, model.Model); diff --git a/lib/pkgcloud/core/network/lbaasMembersV2.js b/lib/pkgcloud/core/network/lbaasMembersV2.js index 35bdec530..0603db945 100644 --- a/lib/pkgcloud/core/network/lbaasMembersV2.js +++ b/lib/pkgcloud/core/network/lbaasMembersV2.js @@ -1,10 +1,3 @@ -/* - * lbaaspools.js: pool operations for lbaas - * - * (C) 2015 Hopebay tech - * - */ - var util = require('util'), model = require('../base/model'); @@ -13,19 +6,3 @@ var lbaasMembersV2 = exports.lbaasMembersV2 = function (client, details) { }; util.inherits(lbaasMembersV2, model.Model); - -lbaasMembersV2.prototype.create = function (callback) { - this.client.createMemberv2(this.name, callback); -}; - -lbaasMembersV2.prototype.refresh = function (callback) { - this.client.getMemberv2(this.id, callback); -}; - -lbaasMembersV2.prototype.update = function (callback) { - this.client.updateMemberv2(this, callback); -}; - -lbaasMembersV2.prototype.destroy = function (callback) { - this.client.destroyMemberv2(this.id, callback); -}; diff --git a/lib/pkgcloud/core/network/lbaasPoolsV2.js b/lib/pkgcloud/core/network/lbaasPoolsV2.js index 105622a40..d2d1989f6 100644 --- a/lib/pkgcloud/core/network/lbaasPoolsV2.js +++ b/lib/pkgcloud/core/network/lbaasPoolsV2.js @@ -1,10 +1,3 @@ -/* - * lbaaspools.js: pool operations for lbaas - * - * (C) 2015 Hopebay tech - * - */ - var util = require('util'), model = require('../base/model'); @@ -13,19 +6,3 @@ var lbaasPoolsV2 = exports.lbaasPoolsV2 = function (client, details) { }; util.inherits(lbaasPoolsV2, model.Model); - -lbaasPoolsV2.prototype.create = function (callback) { - this.client.createPoolv2(this.name, callback); -}; - -lbaasPoolsV2.prototype.refresh = function (callback) { - this.client.getPoolv2(this.id, callback); -}; - -lbaasPoolsV2.prototype.update = function (callback) { - this.client.updatePoolv2(this, callback); -}; - -lbaasPoolsV2.prototype.destroy = function (callback) { - this.client.destroyPoolv2(this.id, callback); -}; diff --git a/lib/pkgcloud/openstack/network/client/index.js b/lib/pkgcloud/openstack/network/client/index.js index 841175629..98d63a5e6 100644 --- a/lib/pkgcloud/openstack/network/client/index.js +++ b/lib/pkgcloud/openstack/network/client/index.js @@ -29,7 +29,8 @@ var Client = exports.Client = function (options) { lbaasLoadbalancer: require('../lbaasLoadbalancer').lbaasLoadbalancer, lbaasListeners: require('../lbaasListener').lbaasListener, lbaasPoolsV2: require('../lbaasPoolsV2').lbaasPoolsV2, - lbaasMembersV2: require('../lbaasMembersV2').lbaasMembersV2 + lbaasMembersV2: require('../lbaasMembersV2').lbaasMembersV2, + healthMonitorV2: require('../lbaasHealthMonitorV2').lbaasHealthMonitorV2 }; _.extend(this, require('./networks')); @@ -46,6 +47,7 @@ var Client = exports.Client = function (options) { _.extend(this, require('./lbaasLoadbalancer')); _.extend(this, require('./lbaasListener')); _.extend(this, require('./lbaasPoolsV2')); + _.extend(this, require('./lbaasHealthMonitorV2')); this.serviceType = 'network'; }; diff --git a/lib/pkgcloud/openstack/network/client/lbaasHealthMonitorV2.js b/lib/pkgcloud/openstack/network/client/lbaasHealthMonitorV2.js new file mode 100644 index 000000000..4db10f9c8 --- /dev/null +++ b/lib/pkgcloud/openstack/network/client/lbaasHealthMonitorV2.js @@ -0,0 +1,212 @@ +var urlJoin = require('url-join'); + +var lbaasMonitorPath = '/lbaas/healthmonitors'; + + +// Declaring variables for helper functions defined later +var _convertMonitorsToWireFormat, + _convertMonitorsUpdateToWireFormat; + + +/*** + + list Health Monitors (Get) + +***/ + +exports.getHealthMonitorsV2 = function (options, callback) { + var self = this; + if (typeof options === 'function') { + callback = options; + options = {}; + } + var getMonitorOpts = { + path: lbaasMonitorPath, + }; + this._request(getMonitorOpts, function (err, body) { + if (err) { + return callback(err); + } + else if (!body || !body.healthmonitors || !(body.healthmonitors instanceof Array)) { + return callback(new Error('Malformed API Response')); + } + return callback(err, body.healthmonitors.map(function (monitor) { + return new self.models.healthMonitorV2(self, monitor); + })); + }); +}; + +/** + + Health Monitor show + +*/ + +exports.getHealthMonitorV2 = function (option, callback) { + var self = this, + healthMonitorId = option instanceof this.models.healthMonitorV2 ? option.id : option; + self.emit('log::trace', 'Getting details for lbaas health monitor', healthMonitorId); + this._request({ + path: urlJoin(lbaasMonitorPath, healthMonitorId), + method: 'GET' + }, function (err, body) { + if (err) { + return callback(err); + } + if (!body ||!body.healthmonitor) { + return callback(new Error('Malformed API Response')); + } + return callback(err, new self.models.healthMonitorV2(self, body.healthmonitor)); + }); +}; + +/** + + health monitor create + { + "healthmonitor": { + "pool_id": "74aa2010-a59f-4d35-a436-60a6da882819", + "admin_state_up": true, + "delay": "1", + "expected_codes": "200,201,202", + "http_method": "GET", + "max_retries": 5, + "timeout": 1, + "type": "HTTP", + "url_path": "/index.html" + } + } +**/ +exports.createHealthMonitorV2 = function (options, callback) { + var self = this, + monitor = typeof options === 'object' ? options : { 'name' : options}; + + var monitor_create = _convertMonitorsToWireFormat(monitor); + var createLoadbalancerOpts = { + method: 'POST', + path: lbaasMonitorPath, + body: { 'healthmonitor' : monitor_create} + }; + + self.emit('log::trace', 'Creating lbaas health monitor', monitor_create); + this._request(createLoadbalancerOpts, function (err,body) { + if (err) { + return callback(err); + } + if (!body ||!body.healthmonitor) { + return callback(new Error('Malformed API Response')); + } + return callback(err, new self.models.healthMonitorV2(self, body.healthmonitor)); + }); +}; + +/** +{ + "healthmonitor": { + "admin_state_up": false, + "delay": "2", + "expected_codes": "200", + "http_method": "POST", + "max_retries": 2, + "timeout": 2, + "url_path": "/page.html" + } +} +**/ + +exports.updateHealthMonitorV2 = function (options, callback) { + var self = this, + monitorId = options.id, + monitorUpdate = _convertMonitorsUpdateToWireFormat(options); + var updateMonitorsOpts = { + method: 'PUT', + path: urlJoin(lbaasMonitorPath, monitorId), + contentType: 'application/json', + body: { 'healthmonitor' : monitorUpdate } + }; + self.emit('log::trace', 'Updating lbaas health monitor', monitorId); + this._request(updateMonitorsOpts, function (err,body) { + if (err) { + return callback(err); + } + if (!body ||!body.healthmonitor) { + return callback(new Error('Malformed API Response')); + } + return callback(err, new self.models.healthMonitorV2(self, body.healthmonitor)); + }); +}; + + +/* + health delete + +*/ +exports.destroyHealthMonitorV2 = function (options, callback) { + var self = this, + monitorId = options instanceof this.models.healthMonitorV2 ? options.id : options; + self.emit('log::trace', 'Deleting lbaas health monitor', monitorId); + this._request({ + path: urlJoin(lbaasMonitorPath, monitorId), + contentType: 'application/json', + method: 'DELETE' + }, function (err) { + return err + ? callback(err) + : callback(err, monitorId); + }); +}; + +/* + Convert message format for update + { + "healthmonitor": { + "admin_state_up": false, + "delay": "2", + "expected_codes": "200", + "http_method": "POST", + "max_retries": 2, + "timeout": 2, + "url_path": "/page.html" + } + } +*/ +_convertMonitorsUpdateToWireFormat = function (details){ + var wireFormat = {}; + wireFormat.admin_state_up = details.admin_state_up || true; + wireFormat.delay = details.delay; + wireFormat.expected_codes = details.expected_codes; + wireFormat.http_method = details.http_method; + wireFormat.max_retries = details.max_retries; + wireFormat.timeout = details.timeout; + wireFormat.url_path = details.url_path; + return wireFormat; +}; + +/* + Convert message format for creation + + { + "pool_id": "74aa2010-a59f-4d35-a436-60a6da882819", + "admin_state_up": true, + "delay": "1", + "expected_codes": "200,201,202", + "http_method": "GET", + "max_retries": 5, + "timeout": 1, + "type": "HTTP", + "url_path": "/index.html" + } +*/ +_convertMonitorsToWireFormat = function (details){ + var wireFormat = {}; + wireFormat.pool_id = details.pool_id; + wireFormat.admin_state_up = details.admin_state_up || true; + wireFormat.delay = details.delay; + wireFormat.expected_codes = details.expected_codes; + wireFormat.http_method = details.http_method; + wireFormat.max_retries = details.max_retries; + wireFormat.timeout = details.timeout; + wireFormat.type = details.type; + wireFormat.url_path = details.url_path; + return wireFormat; +}; diff --git a/lib/pkgcloud/openstack/network/client/lbaasPoolsV2.js b/lib/pkgcloud/openstack/network/client/lbaasPoolsV2.js index 2bcb9abc8..20041a274 100644 --- a/lib/pkgcloud/openstack/network/client/lbaasPoolsV2.js +++ b/lib/pkgcloud/openstack/network/client/lbaasPoolsV2.js @@ -30,7 +30,6 @@ exports.getPoolsV2 = function (options, callback) { else if (!body || !body.pools || !(body.pools instanceof Array)) { return callback(new Error('Malformed API Response')); } - return callback(err, body.pools.map(function (pools) { return new self.models.lbaasPoolsV2(self, pools); })); @@ -44,10 +43,10 @@ exports.getPoolsV2 = function (options, callback) { */ exports.getPoolV2 = function (option, callback) { var self = this, - poolID = option instanceof this.models.lbaasPoolsV2 ? option.id : option; - self.emit('log::trace', 'Getting details for lbaas Pool', poolID); + poolId = option instanceof this.models.lbaasPoolsV2 ? option.id : option; + self.emit('log::trace', 'Getting details for lbaas Pool', poolId); this._request({ - path: urlJoin(lbaasPoolPath, poolID), + path: urlJoin(lbaasPoolPath, poolId), method: 'GET' }, function (err, body) { if (err) { @@ -70,7 +69,7 @@ exports.getPoolV2 = function (option, callback) { "lb_algorithm": "ROUND_ROBIN", "name": "pool1", "protocol": "HTTP", - "subnet_id": "6c529c2b-22b8-4eae-b722-bc6338f6d1a8" + "listener_id": "1235" } } **/ @@ -105,15 +104,15 @@ exports.createPoolV2 = function (options, callback) { **/ exports.updatePoolV2 = function (options, callback) { var self = this, - poolID = options.id, + poolId = options.id, poolUpdate = _convertPoolsUpdateToWireFormat(options); var updatePoolsOpts = { method: 'PUT', - path: urlJoin(lbaasPoolPath, poolID), + path: urlJoin(lbaasPoolPath, poolId), contentType: 'application/json', body: { 'pool' : poolUpdate } }; - self.emit('log::trace', 'Updating lbaas pools', poolID); + self.emit('log::trace', 'Updating lbaas pools', poolId); this._request(updatePoolsOpts, function (err,body) { return err ? callback(err) @@ -127,17 +126,17 @@ exports.updatePoolV2 = function (options, callback) { */ exports.destroyPoolV2 = function (options, callback) { var self = this, - poolID = options instanceof this.models.lbaasPoolsV2 ? options.id : options; - self.emit('log::trace', 'Deleting lbaas pool', poolID); + poolId = options instanceof this.models.lbaasPoolsV2 ? options.id : options; + self.emit('log::trace', 'Deleting lbaas pool', poolId); this._request({ - path: urlJoin(lbaasPoolPath, poolID), + path: urlJoin(lbaasPoolPath, poolId), contentType: 'application/json', method: 'DELETE' }, function (err) { if (err) { return callback(err); } - callback(err, poolID); + callback(err, poolId); }); }; @@ -148,14 +147,14 @@ exports.destroyPoolV2 = function (options, callback) { ***/ exports.getMembersV2 = function (options, callback) { var self = this; - var poolID = options instanceof this.models.lbaasPoolsV2 ? option.id : options; + var poolId = options instanceof this.models.lbaasPoolsV2 ? option.id : options; if (typeof options === 'function') { callback = options; options = {}; } - self.emit('log::trace', 'Getting lbaas Pool members', poolID); + self.emit('log::trace', 'Getting lbaas Pool members', poolId); var getMemberOpts = { - path: urlJoin(lbaasPoolPath, poolID, 'members') + path: urlJoin(lbaasPoolPath, poolId, 'members') }; this._request(getMemberOpts, function (err, body) { if (err) { @@ -178,11 +177,11 @@ exports.getMembersV2 = function (options, callback) { */ exports.getMemberV2 = function (option, callback) { var self = this; - var poolId = option.poolId; - var memberId = option.memberId; + var poolId = option.pool_id; + var memberId = option.member_id; self.emit('log::trace', 'Getting details for member', memberId); this._request({ - path: urlJoin(lbaasPoolPath, poolID, 'members', memberId), + path: urlJoin(lbaasPoolPath, poolId, 'members', memberId), method: 'GET' }, function (err, body) { if (err) { @@ -203,7 +202,8 @@ exports.getMemberV2 = function (option, callback) { "admin_state_up": true, "protocol_port": "90", "pool_id": "5a9a3e9e-d1aa-448e-af37-a70171f2a332", - "weight": "1" + "weight": "1", + "subnet_id" : "234444" } } **/ @@ -229,9 +229,9 @@ exports.createMemberV2 = function (options, callback) { exports.updateMemberV2 = function (options, callback) { var self = this; - var poolId = options.member.pool_id; - var memberId = opetions.member.member_id; - var memberUpdate = _convertMemberUpdateToWireFormat(options.member); + var poolId = options.pool_id; + var memberId = options.member_id; + var memberUpdate = _convertMemberUpdateToWireFormat(options); var updateMemberOpts = { method: 'PUT', @@ -250,9 +250,9 @@ exports.updateMemberV2 = function (options, callback) { exports.destroyMemberV2 = function (options, callback) { var self = this; - var poolId = options.member.pool_id; - var memberId = opetions.member.member_id; - self.emit('log::trace', 'Deleting lbaas member', memberID); + var poolId = options.pool_id; + var memberId = options.member_id; + self.emit('log::trace', 'Deleting lbaas member', memberId); this._request({ path: urlJoin(lbaasPoolPath, poolId, 'members', memberId), contentType: 'application/json', @@ -261,13 +261,10 @@ exports.destroyMemberV2 = function (options, callback) { if (err) { return callback(err); } - callback(err, poolID); + callback(err, poolId); }); }; -/* - Convert message format for update -*/ _convertPoolsUpdateToWireFormat = function (details){ var wireFormat = {}; wireFormat.admin_state_up = details.admin_state_up || true; @@ -277,18 +274,6 @@ _convertPoolsUpdateToWireFormat = function (details){ return wireFormat; }; -/* - Convert message format for creation - - { - "admin_state_up": true, - "description": "simple pool", - "lb_algorithm": "ROUND_ROBIN", - "name": "pool1", - "protocol": "HTTP", - "subnet_id": "6c529c2b-22b8-4eae-b722-bc6338f6d1a8" - } -*/ _convertPoolsToWireFormat = function (details){ var wireFormat = {}; wireFormat.admin_state_up = details.admin_state_up || true; diff --git a/lib/pkgcloud/openstack/network/index.js b/lib/pkgcloud/openstack/network/index.js index 6ea909558..8e7aa1f4f 100644 --- a/lib/pkgcloud/openstack/network/index.js +++ b/lib/pkgcloud/openstack/network/index.js @@ -18,6 +18,8 @@ exports.HealthMonitor = require('./lbaasHealthMonitor').HealthMonitor; exports.lbaasPools = require('./lbaasPools').lbaasPools; exports.lbaasMembers = require('./lbaasMembers').lbaasMembers; exports.lbaasLoadbalancers = require('./lbaasLoadbalancer').lbaasLoadbalancers; +exports.lbaasPoolsV2 = require('./lbaasPoolsV2').lbaasPoolsV2; +exports.lbaasHealthMonitorV2 = require('./lbaasHealthMonitorV2').lbaasHealthMonitorV2; exports.createClient = function (options) { return new exports.Client(options); }; diff --git a/lib/pkgcloud/openstack/network/lbaasHealthMonitorV2.js b/lib/pkgcloud/openstack/network/lbaasHealthMonitorV2.js new file mode 100644 index 000000000..74857990e --- /dev/null +++ b/lib/pkgcloud/openstack/network/lbaasHealthMonitorV2.js @@ -0,0 +1,30 @@ +var util = require('util'), + base = require('../../core/network/lbaasHealthMonitorV2'), + + _ = require('underscore'); + +//VIP prototype +var lbaasHealthMonitorV2 = exports.lbaasHealthMonitorV2 = function lbaasHealthMonitorV2(client, details) { + base.lbaasHealthMonitorV2.call(this, client, details); +}; + +util.inherits(lbaasHealthMonitorV2, base.lbaasHealthMonitorV2); + +lbaasHealthMonitorV2.prototype._setProperties = function (details) { + + this.admin_state_up = details.admin_state_up || this.admin_state_up; + this.delay = details.delay || this.delay; + this.expected_codes = details.expected_codes || this.expected_codes; + this.max_retries = details.max_retries || this.max_retries; + this.http_method = details.http_method || this.http_method; + this.timeout = details.timeout || this.timeout; + this.pools = details.pools || this.pools; + this.url_path = details.url_path || this.url_path; + this.type = details.type || this.type; + this.id = details.id || this.id; +}; + +lbaasHealthMonitorV2.prototype.toJSON = function () { + return _.pick(this, ['admin_state_up', 'delay', 'expected_codes', 'max_retries', + 'http_method', 'timeout', 'pools', 'url_path', 'type', 'id']); +}; diff --git a/lib/pkgcloud/openstack/network/lbaasMembersV2.js b/lib/pkgcloud/openstack/network/lbaasMembersV2.js index 371dc9d89..81e1d55bc 100644 --- a/lib/pkgcloud/openstack/network/lbaasMembersV2.js +++ b/lib/pkgcloud/openstack/network/lbaasMembersV2.js @@ -11,16 +11,16 @@ var lbaasMembersV2 = exports.lbaasMembersV2 = function lbaasMembersV2(client, de util.inherits(lbaasMembersV2, base.lbaasMembersV2); lbaasMembersV2.prototype._setProperties = function (details) { - + console.log(details); this.admin_state_up = details.admin_state_up || this.admin_state_up; this.address = details.address || this.address; this.protocol_port = details.protocol_port || this.protocol_port; - this.pool_id = details.pool_id || this.pool_id; this.weight = details.weight || this.weight; - + this.subnet_id = details.subnet_id || this.subnet_id; + this.id = details.id || this.id; }; lbaasMembersV2.prototype.toJSON = function () { - return _.pick(this, ['admin_state_up', 'address', 'protocol_port', 'pool_id', - 'weight']); + return _.pick(this, ['admin_state_up', 'address', 'protocol_port', + 'weight', 'subnet_id', 'id']); }; diff --git a/lib/pkgcloud/openstack/network/lbaasPoolsV2.js b/lib/pkgcloud/openstack/network/lbaasPoolsV2.js index ce92d3f8c..6a5aafa53 100644 --- a/lib/pkgcloud/openstack/network/lbaasPoolsV2.js +++ b/lib/pkgcloud/openstack/network/lbaasPoolsV2.js @@ -19,12 +19,16 @@ lbaasPoolsV2.prototype._setProperties = function (details) { this.name = details.name || this.name; this.project_id = details.project_id || this.project_id; this.protocol = details.protocol || this.protocol; - this.subnet_id = details.subnet_id || this.subnet_id; this.tenant_id = details.tenant_id || this.tenant_id; + this.healthmonitor_id = details.healthmonitor_id || this.healthmonitor_id; + this.listeners = details.listeners || this.listeners; + this.members = details.members || this.members; + this.id = details.id || this.id; }; lbaasPoolsV2.prototype.toJSON = function () { return _.pick(this, ['admin_state_up', 'description', 'lb_algorithm', 'listener_id', - 'name', 'project_id', 'protocol', 'subnet_id','tenant_id']); + 'name', 'project_id', 'protocol', 'subnet_id','tenant_id', 'healthmonitor_id', 'listeners', + 'members', 'id']); }; From 08bada32aeba8df0111e354d3a3dbd7168f88b83 Mon Sep 17 00:00:00 2001 From: "jhihming.huang" Date: Tue, 20 Dec 2016 16:14:39 +0800 Subject: [PATCH 04/13] secret feature --- examples/secret/get_openstack_token.js | 27 ++++ examples/secret/openstack_list_secret.js | 21 +++ lib/pkgcloud.js | 3 +- lib/pkgcloud/core/secret/secret.js | 8 ++ lib/pkgcloud/openstack/index.js | 1 + lib/pkgcloud/openstack/secret/client/index.js | 35 +++++ .../openstack/secret/client/secret.js | 125 ++++++++++++++++++ lib/pkgcloud/openstack/secret/index.js | 9 ++ lib/pkgcloud/openstack/secret/secret.js | 29 ++++ 9 files changed, 257 insertions(+), 1 deletion(-) create mode 100644 examples/secret/get_openstack_token.js create mode 100644 examples/secret/openstack_list_secret.js create mode 100644 lib/pkgcloud/core/secret/secret.js create mode 100644 lib/pkgcloud/openstack/secret/client/index.js create mode 100644 lib/pkgcloud/openstack/secret/client/secret.js create mode 100644 lib/pkgcloud/openstack/secret/index.js create mode 100644 lib/pkgcloud/openstack/secret/secret.js diff --git a/examples/secret/get_openstack_token.js b/examples/secret/get_openstack_token.js new file mode 100644 index 000000000..1e2338521 --- /dev/null +++ b/examples/secret/get_openstack_token.js @@ -0,0 +1,27 @@ +var qs = require('qs'); +var request = require('request'); +var querystring = require('querystring'); +var getToken = exports.getToken = function (callback) { + var postData = JSON.stringify( + {"auth": + {"tenantName":"admin", + "passwordCredentials":{ + "username": "admin", + "password":"hbopsk_adminpass" + } + } + }); + + var options = { + url: "http://172.16.31.1:35357/v2.0/tokens", + headers: { + 'Content-Type': 'application/json' + }, + body: postData + }; + request.post(options, function(error, resp, body){ + console.log('token = ', JSON.parse(body).access.token.id); + callback(JSON.parse(body).access.token.id); + }); + +} diff --git a/examples/secret/openstack_list_secret.js b/examples/secret/openstack_list_secret.js new file mode 100644 index 000000000..817032349 --- /dev/null +++ b/examples/secret/openstack_list_secret.js @@ -0,0 +1,21 @@ +var pkgcloud = require('../../lib/pkgcloud'); +var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; +var getToken = require('./get_openstack_token'); +getToken.getToken(function (id){ + var client = pkgcloud.secret.createClient({ + provider: 'openstack', + tenantId: KH_admin_tenantID, + token: id, + region: 'RegionOne', + authUrl: 'http://172.16.31.1:35357', + strictSSL: false + }); + + client.getSecrets(function (err, secret) { + if (err) { + console.error(err); + } else { + console.log(secret); + } + }); +}); diff --git a/lib/pkgcloud.js b/lib/pkgcloud.js index 2c7a5f7ff..d9bf00d09 100644 --- a/lib/pkgcloud.js +++ b/lib/pkgcloud.js @@ -45,7 +45,8 @@ var services = [ 'network', 'storage', 'rating', - 'metering' + 'metering', + 'secret' ]; // diff --git a/lib/pkgcloud/core/secret/secret.js b/lib/pkgcloud/core/secret/secret.js new file mode 100644 index 000000000..c5d064390 --- /dev/null +++ b/lib/pkgcloud/core/secret/secret.js @@ -0,0 +1,8 @@ +var util = require('util'), + model = require('../base/model'); + +var secret = exports.Secret = function (client, details) { + model.Model.call(this, client, details); +}; + +util.inherits(secret, model.Model); diff --git a/lib/pkgcloud/openstack/index.js b/lib/pkgcloud/openstack/index.js index f6cf3eb3d..ea25f163e 100644 --- a/lib/pkgcloud/openstack/index.js +++ b/lib/pkgcloud/openstack/index.js @@ -15,3 +15,4 @@ exports.database = require('./database'); exports.rating = require('./rating'); exports.metering = require('./metering'); exports.cdn = require('./cdn'); +exports.secret = require('./secret'); diff --git a/lib/pkgcloud/openstack/secret/client/index.js b/lib/pkgcloud/openstack/secret/client/index.js new file mode 100644 index 000000000..548a6aa53 --- /dev/null +++ b/lib/pkgcloud/openstack/secret/client/index.js @@ -0,0 +1,35 @@ +var util = require('util'), + urlJoin = require('url-join'), + openstack = require('../../client'), + _ = require('lodash'); + +var Client = exports.Client = function (options) { + openstack.Client.call(this, options); + + this.models = { + Secret: require('../secret').Secret, + }; + _.extend(this, require('./secret')); + this.serviceType = 'key-manager'; + +}; + +util.inherits(Client, openstack.Client); + +Client.prototype._getUrl = function (options) { + options = options || {}; + + if (!this._serviceUrl) { + throw new Error('Service url not found'); + } + if (options === 'string') { + optinos = uirlJoin('v1', options); + } else { + options.path = urlJoin('v1', options.path); + } + + return urlJoin(this._serviceUrl, + typeof options === 'string' + ? options + : options.path); +}; diff --git a/lib/pkgcloud/openstack/secret/client/secret.js b/lib/pkgcloud/openstack/secret/client/secret.js new file mode 100644 index 000000000..83da9c1a8 --- /dev/null +++ b/lib/pkgcloud/openstack/secret/client/secret.js @@ -0,0 +1,125 @@ +var urlJoin = require('url-join'); + +var secretResoutcePath = '/secrets'; + +// Declaring variables for helper functions defined later +var _convertSecretToWireFormat; + +exports.getSecrets = function (options, callback) { + var self = this; + + if (typeof options === 'function') { + callback = options; + options = {}; + } + + var getSecretOpts = { + path: secretResoutcePath + }; + + this._request(getSecretOpts, function (err, body) { + if (err) { + return callback(err); + } + else if (!body || !body.secrets || !(body.secrets instanceof Array)) { + return new Error('Malformed API Response'); + } + + return callback(err, body.secrets.map(function (secret) { + return new self.models.Secret(self, secret); + })); + }); +}; + +exports.getSecret = function (secret, callback) { + var self = this, + secretId = secret instanceof this.models.Secret ? secret.id : secret; + self.emit('log::trace', 'Getting details for secret', secretId); + this._request({ + path: urlJoin(secretResoutcePath, secretId), + method: 'GET' + }, function (err, body) { + if (err) { + return callback(err); + } + + if (!body) { + return new Error('Malformed API Response'); + } + + callback(err, new self.models.Secret(self, body)); + }); +}; + +/** + * client.createSecret + * + * @description create a new secret + * + * @param {object} options + * @param {String} options.name the name of the new secret + * @param callback + */ +exports.createSecret = function (options, callback) { + var self = this; + secret = _convertSecretToWireFormat(options); + + var createSecretOpts = { + method: 'POST', + path: secretResoutcePath, + body: secret + }; + + self.emit('log::trace', 'Creating secret', secret); + this._request(createSecretOpts, function (err,body) { + return err + ? callback(err) + : callback(err, new self.models.Secret(self, body)); + }); +}; + +exports.updateSecret = function (secretId, callback) { + var self = this; + secretToUpdate = _convertSecretToWireFormat(secret); + + var updateSecretOpts = { + method: 'PUT', + path: urlJoin(secretResoutcePath, secretId), + contentType: 'text/plain', + body: secretToUpdate + }; + + self.emit('log::trace', 'Updating secret', secretId); + this._request(updateSecretOpts, function (err,body) { + return err + ? callback(err) + : callback(err, new self.models.Secret(self, body)); + }); +}; + +exports.destroySecret = function (secretId, callback) { + var self = this; + self.emit('log::trace', 'Deleting secret', secretId); + this._request({ + path: urlJoin(secretResoutcePath, secretId), + method: 'DELETE' + }, function (err) { + if (err) { + return callback(err); + } + callback(err, secretId); + }); +}; + +_convertSecretToWireFormat = function (details){ + var wireFormat = {}; + wireFormat.name = details.name; + wireFormat.expiration = details.expiration; + wireFormat.algorithm = details.algorithm; + wireFormat.bit_length = details.bit_length; + wireFormat.mode = details.mode; + wireFormat.payload = details.payload; + wireFormat.payload_content_type = details.payload_content_type; + wireFormat.payload_content_encoding = details.payload_content_encoding; + return wireFormat; +}; diff --git a/lib/pkgcloud/openstack/secret/index.js b/lib/pkgcloud/openstack/secret/index.js new file mode 100644 index 000000000..ce6ddb070 --- /dev/null +++ b/lib/pkgcloud/openstack/secret/index.js @@ -0,0 +1,9 @@ +/* + * index.js: Top-level include for the Openstack secret client. + */ + +exports.Client = require('./client').Client; +exports.Secret = require('./secret').Secret; +exports.createClient = function (options) { + return new exports.Client(options); +}; diff --git a/lib/pkgcloud/openstack/secret/secret.js b/lib/pkgcloud/openstack/secret/secret.js new file mode 100644 index 000000000..f5b1b6cf0 --- /dev/null +++ b/lib/pkgcloud/openstack/secret/secret.js @@ -0,0 +1,29 @@ +var util = require('util'), + base = require('../../core/secret/secret'), + _ = require('lodash'); + +var Secret = exports.Secret = function Secret(client, details) { + base.Secret.call(this, client, details); +}; + +util.inherits(Secret, base.Secret); + +Secret.prototype._setProperties = function (details) { + this.algorithm = details.algorithm || this.algorithm; + this.bit_length = details.bit_length || this.bit_length; + this.content_types = details.content_types || this.content_types; + this.created = details.created || this.created; + this.creator_id = details.creator_id || this.creator_id; + this.expiration = details.expiration || this.expiration || 0; + this.mode = details.mode || this.mode; + this.name = details.name || this.name; + this.secret_ref = details.secret_ref || this.secret_ref; + this.secret_type = details.secret_type || this.secret_type; + this.status = details.status || this.status; + this.updated = details.updated || this.updated; +}; + +Secret.prototype.toJSON = function () { + return _.pick(this, ['algorithm', 'bit_length', 'content_types', 'created', 'creator_id', + 'expiration', 'mode', 'secret_type', 'secret_ref', 'status', 'updated']); +}; From c79992f0c9619a785f099046c11196917e414b63 Mon Sep 17 00:00:00 2001 From: "jhihming.huang" Date: Tue, 20 Dec 2016 20:43:11 +0800 Subject: [PATCH 05/13] add container/secret feature --- examples/secret/openstack_list_container.js | 21 +++ lib/pkgcloud/core/secret/container.js | 8 ++ .../openstack/secret/client/container.js | 126 ++++++++++++++++++ lib/pkgcloud/openstack/secret/client/index.js | 2 + lib/pkgcloud/openstack/secret/container.js | 26 ++++ lib/pkgcloud/openstack/secret/index.js | 1 + 6 files changed, 184 insertions(+) create mode 100644 examples/secret/openstack_list_container.js create mode 100644 lib/pkgcloud/core/secret/container.js create mode 100644 lib/pkgcloud/openstack/secret/client/container.js create mode 100644 lib/pkgcloud/openstack/secret/container.js diff --git a/examples/secret/openstack_list_container.js b/examples/secret/openstack_list_container.js new file mode 100644 index 000000000..582bf48da --- /dev/null +++ b/examples/secret/openstack_list_container.js @@ -0,0 +1,21 @@ +var pkgcloud = require('../../lib/pkgcloud'); +var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; +var getToken = require('./get_openstack_token'); +getToken.getToken(function (id){ + var client = pkgcloud.secret.createClient({ + provider: 'openstack', + tenantId: KH_admin_tenantID, + token: id, + region: 'RegionOne', + authUrl: 'http://172.16.31.1:35357', + strictSSL: false + }); + + client.getContainers(function (err, secret) { + if (err) { + console.error(err); + } else { + console.log(secret); + } + }); +}); diff --git a/lib/pkgcloud/core/secret/container.js b/lib/pkgcloud/core/secret/container.js new file mode 100644 index 000000000..6c24cba7a --- /dev/null +++ b/lib/pkgcloud/core/secret/container.js @@ -0,0 +1,8 @@ +var util = require('util'), + model = require('../base/model'); + +var secret = exports.Container = function (client, details) { + model.Model.call(this, client, details); +}; + +util.inherits(secret, model.Model); diff --git a/lib/pkgcloud/openstack/secret/client/container.js b/lib/pkgcloud/openstack/secret/client/container.js new file mode 100644 index 000000000..cfa3ff178 --- /dev/null +++ b/lib/pkgcloud/openstack/secret/client/container.js @@ -0,0 +1,126 @@ +var urlJoin = require('url-join'); + +var containerResoutcePath = '/containers'; + +// Declaring variables for helper functions defined later +var _convertContainerToWireFormat; + +exports.getContainers = function (options, callback) { + var self = this; + + if (typeof options === 'function') { + callback = options; + options = {}; + } + + var getContainerOpts = { + path: containerResoutcePath + }; + + this._request(getContainerOpts, function (err, body) { + if (err) { + return callback(err); + } + else if (!body || !body.containers || !(body.containers instanceof Array)) { + return new Error('Malformed API Response'); + } + + return callback(err, body.containers.map(function (container) { + return new self.models.Container(self, container); + })); + }); +}; + +exports.getContainer = function (container, callback) { + var self = this, + containerId = container instanceof this.models.Container ? container.id : container; + self.emit('log::trace', 'Getting details for container', containerId); + this._request({ + path: urlJoin(containerResoutcePath, containerId), + method: 'GET' + }, function (err, body) { + if (err) { + return callback(err); + } + + if (!body) { + return new Error('Malformed API Response'); + } + + callback(err, new self.models.Container(self, body)); + }); +}; + +/** + * client.createContainer + * + * @description create a new container + * + * @param {object} options + * @param {String} options.name the name of the new container + * @param callback + */ +exports.createContainer = function (options, callback) { + var self = this; + container = _convertContainerToWireFormat(options); + + var createContainerOpts = { + method: 'POST', + path: containerResoutcePath, + body: container + }; + + self.emit('log::trace', 'Creating container', container); + this._request(createContainerOpts, function (err,body) { + return err + ? callback(err) + : callback(err, new self.models.Container(self, body)); + }); +}; + +exports.updateContainer = function (containerId, callback) { + var self = this; + containerToUpdate = _convertContainerToWireFormat(container); + + var updateContainerOpts = { + method: 'PUT', + path: urlJoin(containerResoutcePath, containerId), + contentType: 'text/plain', + body: containerToUpdate + }; + + self.emit('log::trace', 'Updating container', containerId); + this._request(updateContainerOpts, function (err,body) { + return err + ? callback(err) + : callback(err, new self.models.Container(self, body)); + }); +}; + +exports.destroyContainer = function (containerId, callback) { + var self = this; + self.emit('log::trace', 'Deleting container', containerId); + this._request({ + path: urlJoin(containerResoutcePath, containerId), + method: 'DELETE' + }, function (err) { + if (err) { + return callback(err); + } + callback(err, containerId); + }); +}; + +_convertContainerToWireFormat = function (details){ + var wireFormat = {}; + wireFormat.consumers = details.consumers; + wireFormat.container_ref = details.container_ref; + wireFormat.type = details.type; + wireFormat.created = details.created; + wireFormat.name = details.name; + wireFormat.secret_ref = details.secret_ref; + wireFormat.secret_type = details.secret_type; + wireFormat.status = details.status; + wireFormat.updated = details.updated; + return wireFormat; +}; diff --git a/lib/pkgcloud/openstack/secret/client/index.js b/lib/pkgcloud/openstack/secret/client/index.js index 548a6aa53..d9738b2a5 100644 --- a/lib/pkgcloud/openstack/secret/client/index.js +++ b/lib/pkgcloud/openstack/secret/client/index.js @@ -8,8 +8,10 @@ var Client = exports.Client = function (options) { this.models = { Secret: require('../secret').Secret, + Container: require('../container').Container }; _.extend(this, require('./secret')); + _.extend(this, require('./container')); this.serviceType = 'key-manager'; }; diff --git a/lib/pkgcloud/openstack/secret/container.js b/lib/pkgcloud/openstack/secret/container.js new file mode 100644 index 000000000..ea6265fdf --- /dev/null +++ b/lib/pkgcloud/openstack/secret/container.js @@ -0,0 +1,26 @@ +var util = require('util'), + base = require('../../core/secret/container'), + _ = require('lodash'); + +var Container = exports.Container = function Container(client, details) { + base.Container.call(this, client, details); +}; + +util.inherits(Container, base.Container); + +Container.prototype._setProperties = function (details) { + this.consumers = details.consumers || this.consumers; + this.container_ref = details.container_ref || this.container_ref; + this.type = details.type || this.type; + this.created = details.created || this.created; + this.name = details.name || this.name; + this.secret_ref = details.secret_ref || this.secret_ref; + this.secret_type = details.secret_type || this.secret_type; + this.status = details.status || this.status; + this.updated = details.updated || this.updated; +}; + +Container.prototype.toJSON = function () { + return _.pick(this, ['consumers', 'container_ref', 'type', 'created', + 'name', 'secret_ref', 'secret_type', 'status', 'updated']); +}; diff --git a/lib/pkgcloud/openstack/secret/index.js b/lib/pkgcloud/openstack/secret/index.js index ce6ddb070..54e7e2d1e 100644 --- a/lib/pkgcloud/openstack/secret/index.js +++ b/lib/pkgcloud/openstack/secret/index.js @@ -4,6 +4,7 @@ exports.Client = require('./client').Client; exports.Secret = require('./secret').Secret; +exports.Container = require('./container').Container; exports.createClient = function (options) { return new exports.Client(options); }; From 1f8395db281b8331b545185c3645cc77274428bf Mon Sep 17 00:00:00 2001 From: "jhihming.huang" Date: Tue, 20 Dec 2016 21:12:02 +0800 Subject: [PATCH 06/13] add default value of creating secret --- examples/secret/openstack_list_container.js | 4 +++- lib/pkgcloud/openstack/secret/client/container.js | 5 ++--- lib/pkgcloud/openstack/secret/client/secret.js | 6 +++--- lib/pkgcloud/openstack/secret/container.js | 5 ++--- lib/pkgcloud/openstack/secret/secret.js | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/examples/secret/openstack_list_container.js b/examples/secret/openstack_list_container.js index 582bf48da..cf7b7c865 100644 --- a/examples/secret/openstack_list_container.js +++ b/examples/secret/openstack_list_container.js @@ -15,7 +15,9 @@ getToken.getToken(function (id){ if (err) { console.error(err); } else { - console.log(secret); + console.log(secret.map( function(item) { + return item.toJSON(); + })); } }); }); diff --git a/lib/pkgcloud/openstack/secret/client/container.js b/lib/pkgcloud/openstack/secret/client/container.js index cfa3ff178..a71037139 100644 --- a/lib/pkgcloud/openstack/secret/client/container.js +++ b/lib/pkgcloud/openstack/secret/client/container.js @@ -24,7 +24,6 @@ exports.getContainers = function (options, callback) { else if (!body || !body.containers || !(body.containers instanceof Array)) { return new Error('Malformed API Response'); } - return callback(err, body.containers.map(function (container) { return new self.models.Container(self, container); })); @@ -115,10 +114,10 @@ _convertContainerToWireFormat = function (details){ var wireFormat = {}; wireFormat.consumers = details.consumers; wireFormat.container_ref = details.container_ref; - wireFormat.type = details.type; + wireFormat.type = details.type || "certificate"; wireFormat.created = details.created; wireFormat.name = details.name; - wireFormat.secret_ref = details.secret_ref; + wireFormat.secret_refs = details.secret_refs; wireFormat.secret_type = details.secret_type; wireFormat.status = details.status; wireFormat.updated = details.updated; diff --git a/lib/pkgcloud/openstack/secret/client/secret.js b/lib/pkgcloud/openstack/secret/client/secret.js index 83da9c1a8..82d47c04f 100644 --- a/lib/pkgcloud/openstack/secret/client/secret.js +++ b/lib/pkgcloud/openstack/secret/client/secret.js @@ -115,11 +115,11 @@ _convertSecretToWireFormat = function (details){ var wireFormat = {}; wireFormat.name = details.name; wireFormat.expiration = details.expiration; - wireFormat.algorithm = details.algorithm; + wireFormat.algorithm = details.algorithm || "aes"; wireFormat.bit_length = details.bit_length; - wireFormat.mode = details.mode; + wireFormat.mode = details.mode || "mode"; wireFormat.payload = details.payload; - wireFormat.payload_content_type = details.payload_content_type; + wireFormat.payload_content_type = details.payload_content_type || "text/plain"; wireFormat.payload_content_encoding = details.payload_content_encoding; return wireFormat; }; diff --git a/lib/pkgcloud/openstack/secret/container.js b/lib/pkgcloud/openstack/secret/container.js index ea6265fdf..65424b47e 100644 --- a/lib/pkgcloud/openstack/secret/container.js +++ b/lib/pkgcloud/openstack/secret/container.js @@ -14,13 +14,12 @@ Container.prototype._setProperties = function (details) { this.type = details.type || this.type; this.created = details.created || this.created; this.name = details.name || this.name; - this.secret_ref = details.secret_ref || this.secret_ref; - this.secret_type = details.secret_type || this.secret_type; + this.secret_refs = details.secret_refs || this.secret_refs; this.status = details.status || this.status; this.updated = details.updated || this.updated; }; Container.prototype.toJSON = function () { return _.pick(this, ['consumers', 'container_ref', 'type', 'created', - 'name', 'secret_ref', 'secret_type', 'status', 'updated']); + 'name', 'secret_refs', 'status', 'updated']); }; diff --git a/lib/pkgcloud/openstack/secret/secret.js b/lib/pkgcloud/openstack/secret/secret.js index f5b1b6cf0..607794757 100644 --- a/lib/pkgcloud/openstack/secret/secret.js +++ b/lib/pkgcloud/openstack/secret/secret.js @@ -25,5 +25,5 @@ Secret.prototype._setProperties = function (details) { Secret.prototype.toJSON = function () { return _.pick(this, ['algorithm', 'bit_length', 'content_types', 'created', 'creator_id', - 'expiration', 'mode', 'secret_type', 'secret_ref', 'status', 'updated']); + 'expiration', 'mode', 'secret_type', 'secret_ref', 'status', 'updated', 'name']); }; From 21235d60979f8e81744ba5b2a9fe7fad3567ce45 Mon Sep 17 00:00:00 2001 From: "jhihming.huang" Date: Thu, 22 Dec 2016 16:03:15 +0800 Subject: [PATCH 07/13] update .gitignore, remove useless comments --- .gitignore | 3 +- examples/network/get_openstack_token.js | 27 --------------- examples/network/openstack_create_lbs.js | 29 ---------------- examples/network/openstack_create_listener.js | 34 ------------------- examples/network/openstack_create_memberv2.js | 28 --------------- .../network/openstack_create_monitorv2.js | 31 ----------------- examples/network/openstack_create_poolv2.js | 29 ---------------- examples/network/openstack_delete_lbs.js | 20 ----------- examples/network/openstack_delete_listener.js | 21 ------------ .../network/openstack_delete_monitorv2.js | 22 ------------ examples/network/openstack_delete_poolv2.js | 22 ------------ examples/network/openstack_list_lbs.js | 21 ------------ examples/network/openstack_list_listener.js | 22 ------------ examples/network/openstack_list_member.js | 21 ------------ examples/network/openstack_list_monitorv2.js | 20 ----------- examples/network/openstack_list_poolv2.js | 21 ------------ examples/network/openstack_show_lbs.js | 20 ----------- examples/network/openstack_show_listener.js | 21 ------------ examples/network/openstack_show_monitorv2.js | 20 ----------- examples/network/openstack_show_poolv2.js | 21 ------------ examples/network/openstack_update_lbs.js | 28 --------------- examples/network/openstack_update_listener.js | 26 -------------- .../network/openstack_update_monitorv2.js | 28 --------------- examples/network/openstack_update_poolv2.js | 27 --------------- examples/secret/get_openstack_token.js | 27 --------------- examples/secret/openstack_list_container.js | 23 ------------- examples/secret/openstack_list_secret.js | 21 ------------ lib/pkgcloud/core/secret/container.js | 4 +-- .../openstack/secret/client/container.js | 9 ----- .../openstack/secret/client/secret.js | 9 ----- 30 files changed, 4 insertions(+), 651 deletions(-) delete mode 100644 examples/network/get_openstack_token.js delete mode 100644 examples/network/openstack_create_lbs.js delete mode 100644 examples/network/openstack_create_listener.js delete mode 100644 examples/network/openstack_create_memberv2.js delete mode 100644 examples/network/openstack_create_monitorv2.js delete mode 100644 examples/network/openstack_create_poolv2.js delete mode 100644 examples/network/openstack_delete_lbs.js delete mode 100644 examples/network/openstack_delete_listener.js delete mode 100644 examples/network/openstack_delete_monitorv2.js delete mode 100644 examples/network/openstack_delete_poolv2.js delete mode 100644 examples/network/openstack_list_lbs.js delete mode 100644 examples/network/openstack_list_listener.js delete mode 100644 examples/network/openstack_list_member.js delete mode 100644 examples/network/openstack_list_monitorv2.js delete mode 100644 examples/network/openstack_list_poolv2.js delete mode 100644 examples/network/openstack_show_lbs.js delete mode 100644 examples/network/openstack_show_listener.js delete mode 100644 examples/network/openstack_show_monitorv2.js delete mode 100644 examples/network/openstack_show_poolv2.js delete mode 100644 examples/network/openstack_update_lbs.js delete mode 100644 examples/network/openstack_update_listener.js delete mode 100644 examples/network/openstack_update_monitorv2.js delete mode 100644 examples/network/openstack_update_poolv2.js delete mode 100644 examples/secret/get_openstack_token.js delete mode 100644 examples/secret/openstack_list_container.js delete mode 100644 examples/secret/openstack_list_secret.js diff --git a/.gitignore b/.gitignore index a307754e3..8c36c274e 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,5 @@ azure_error coverage.html .coveralls.yml pkgcloud.lcov* -node-jscoverage \ No newline at end of file +node-jscoverage +examples/* diff --git a/examples/network/get_openstack_token.js b/examples/network/get_openstack_token.js deleted file mode 100644 index 1e2338521..000000000 --- a/examples/network/get_openstack_token.js +++ /dev/null @@ -1,27 +0,0 @@ -var qs = require('qs'); -var request = require('request'); -var querystring = require('querystring'); -var getToken = exports.getToken = function (callback) { - var postData = JSON.stringify( - {"auth": - {"tenantName":"admin", - "passwordCredentials":{ - "username": "admin", - "password":"hbopsk_adminpass" - } - } - }); - - var options = { - url: "http://172.16.31.1:35357/v2.0/tokens", - headers: { - 'Content-Type': 'application/json' - }, - body: postData - }; - request.post(options, function(error, resp, body){ - console.log('token = ', JSON.parse(body).access.token.id); - callback(JSON.parse(body).access.token.id); - }); - -} diff --git a/examples/network/openstack_create_lbs.js b/examples/network/openstack_create_lbs.js deleted file mode 100644 index f54c379c9..000000000 --- a/examples/network/openstack_create_lbs.js +++ /dev/null @@ -1,29 +0,0 @@ -var getToken = require('./get_openstack_token'); -getToken.getToken(function (id){ - var pkgcloud = require('../../lib/pkgcloud'); - var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; - var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: KH_admin_tenantID, - token: id, - region: 'RegionOne', - authUrl: 'http://172.16.31.1:35357', - strictSSL: false - }); - - - var options = { - 'name': 'loadbalancer_unit_test', - 'description': 'simple loadbalancer', - 'project_id': KH_admin_tenantID, - 'tenant_id': KH_admin_tenantID, - 'vip_subnet_id': "33058db7-91bc-4a1b-857a-7f3447c3568c", - 'admin_state_up': false, - }; - client.createLoadbalancer(options, function(err, lbs) { - if (err) { - console.log(err); - } - console.log(lbs); - }); -} diff --git a/examples/network/openstack_create_listener.js b/examples/network/openstack_create_listener.js deleted file mode 100644 index f6166b79a..000000000 --- a/examples/network/openstack_create_listener.js +++ /dev/null @@ -1,34 +0,0 @@ -var getToken = require('./get_openstack_token'); -getToken.getToken(function (id){ - var pkgcloud = require('../../lib/pkgcloud'); - var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; - var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: KH_admin_tenantID, - token: id, - region: 'RegionOne', - authUrl: 'http://172.16.31.1:35357', - strictSSL: false - }); - - - var options = { - 'name': 'listener_unit_test', - 'description': 'simple listener', - 'project_id': KH_admin_tenantID, - 'tenant_id': KH_admin_tenantID, - 'connection_limit': 10000, - 'admin_state_up': false, - 'loadbalancer_id': 'c62ee7d5-6578-4eba-8932-621ffaedd117', - 'protocol': 'TERMINATED_HTTPS', - 'protocol_port': 443, - 'default_tls_container_id': 'http://192.168.100.11:9311/v1/containers/32cbdbe9-9613-430d-9c14-3785d5f99074', - 'default_pool_id': 'my-pool' - }; - client.createListener(options, function(err, listener) { - if (err) { - console.log(err); - } - console.log(listener); - }); -}); diff --git a/examples/network/openstack_create_memberv2.js b/examples/network/openstack_create_memberv2.js deleted file mode 100644 index ab7177e8c..000000000 --- a/examples/network/openstack_create_memberv2.js +++ /dev/null @@ -1,28 +0,0 @@ -var getToken = require('./get_openstack_token'); -getToken.getToken(function (id){ - var pkgcloud = require('../../lib/pkgcloud'); - var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; - var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: KH_admin_tenantID, - token: id, - region: 'RegionOne', - authUrl: 'http://172.16.31.1:35357', - strictSSL: false - }); - - - var options = { - "subnet_id": "33058db7-91bc-4a1b-857a-7f3447c3568c", - "address": "196.168.99.123", - "protocol_port": "443", - "pool_id": "c0d19bc6-d7c9-408a-825e-f1c9ef143b12", - "weight": "1" - }; - client.createMemberV2(options, function(err, item) { - if (err) { - console.log(err); - } - console.log(item); - }); -}); diff --git a/examples/network/openstack_create_monitorv2.js b/examples/network/openstack_create_monitorv2.js deleted file mode 100644 index 8e80f2280..000000000 --- a/examples/network/openstack_create_monitorv2.js +++ /dev/null @@ -1,31 +0,0 @@ -var getToken = require('./get_openstack_token'); -getToken.getToken(function (id){ - var pkgcloud = require('../../lib/pkgcloud'); - var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; - var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: KH_admin_tenantID, - token: id, - region: 'RegionOne', - authUrl: 'http://172.16.31.1:35357', - strictSSL: false - }); - - - var options = { - "pool_id": "c0d19bc6-d7c9-408a-825e-f1c9ef143b12", - "delay": "1", - "expected_codes": "200,201,202", - "http_method": "GET", - "max_retries": 5, - "timeout": 1, - "type": "HTTP", - "url_path": "/index.html" - }; - client.createHealthMonitorV2(options, function(err, item) { - if (err) { - console.log(err); - } - console.log(item); - }); -}); diff --git a/examples/network/openstack_create_poolv2.js b/examples/network/openstack_create_poolv2.js deleted file mode 100644 index 29ab4d565..000000000 --- a/examples/network/openstack_create_poolv2.js +++ /dev/null @@ -1,29 +0,0 @@ -var getToken = require('./get_openstack_token'); -getToken.getToken(function (id){ - var pkgcloud = require('../../lib/pkgcloud'); - var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; - var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: KH_admin_tenantID, - token: id, - region: 'RegionOne', - authUrl: 'http://172.16.31.1:35357', - strictSSL: false - }); - - - var options = { - "admin_state_up": true, - "description": "simple pool", - "lb_algorithm": "ROUND_ROBIN", - "name": "my-pool", - "protocol": "HTTP", - "listener_id": "1ac1a152-3b9f-48d2-bab5-f0cb9f36292b" - }; - client.createPoolV2(options, function(err, item) { - if (err) { - console.log(err); - } - console.log(item); - }); -}); diff --git a/examples/network/openstack_delete_lbs.js b/examples/network/openstack_delete_lbs.js deleted file mode 100644 index 86b37bc13..000000000 --- a/examples/network/openstack_delete_lbs.js +++ /dev/null @@ -1,20 +0,0 @@ -var pkgcloud = require('../../lib/pkgcloud'); -var getToken = require('./get_openstack_token'); -getToken.getToken(function (id){ - var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: 'e7a1864d6a9348f3a94fd32e3ebd1a36', - token: id, - region: 'RegionOne', - authUrl: 'http://controller:5000/', - strictSSL: false - }); - var options = '12ac7bc9-7937-4796-bb9d-683b75b89916'; - client.destroyLoadbalancer(options, function (err, lbs) { - if (err) { - console.error(err); - }else { - console.log(lbs); - } - }); -}); diff --git a/examples/network/openstack_delete_listener.js b/examples/network/openstack_delete_listener.js deleted file mode 100644 index 11d4eab6d..000000000 --- a/examples/network/openstack_delete_listener.js +++ /dev/null @@ -1,21 +0,0 @@ -var pkgcloud = require('../../lib/pkgcloud'); -var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; -getToken.getToken(function (id){ - var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: KH_admin_tenantID, - token: id, - region: 'RegionOne', - authUrl: 'http://172.16.31.1:35357', - strictSSL: false - }); - - - var options = '68ec6c96-b62c-411e-8b59-5e142a4f2679'; - client.destroyListener(options, function(err, listener) { - if (err) { - console.log(err); - } - console.log(listener); - }); -}); diff --git a/examples/network/openstack_delete_monitorv2.js b/examples/network/openstack_delete_monitorv2.js deleted file mode 100644 index b3aa20c56..000000000 --- a/examples/network/openstack_delete_monitorv2.js +++ /dev/null @@ -1,22 +0,0 @@ -var getToken = require('./get_openstack_token'); -getToken.getToken(function (id){ - var pkgcloud = require('../../lib/pkgcloud'); - var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; - var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: KH_admin_tenantID, - token: id, - region: 'RegionOne', - authUrl: 'http://172.16.31.1:35357', - strictSSL: false - }); - - - var options = "5f96c62f-71e6-4c9d-b397-c541f4fe2d69"; - client.destroyHealthMonitorV2(options, function(err, item) { - if (err) { - console.log(err); - } - console.log(item); - }); -}); diff --git a/examples/network/openstack_delete_poolv2.js b/examples/network/openstack_delete_poolv2.js deleted file mode 100644 index 0fad717fe..000000000 --- a/examples/network/openstack_delete_poolv2.js +++ /dev/null @@ -1,22 +0,0 @@ -var pkgcloud = require('../../lib/pkgcloud'); -var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; -var getToken = require('./get_openstack_token'); -getToken.getToken(function (id){ - var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: KH_admin_tenantID, - token: id, - region: 'RegionOne', - authUrl: 'http://172.16.31.1:35357', - strictSSL: false - }); - - - var options = 'd8d00cbd-7287-4e83-ba10-df08a0d6644d'; - client.destroyPoolV2(options, function(err, listener) { - if (err) { - console.log(err); - } - console.log(listener); - }); -}); diff --git a/examples/network/openstack_list_lbs.js b/examples/network/openstack_list_lbs.js deleted file mode 100644 index 8842237c5..000000000 --- a/examples/network/openstack_list_lbs.js +++ /dev/null @@ -1,21 +0,0 @@ -var pkgcloud = require('../../lib/pkgcloud'); -var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; -var getToken = require('./get_openstack_token'); -getToken.getToken(function (id){ - var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: KH_admin_tenantID, - token: id, - region: 'RegionOne', - authUrl: 'http://172.16.31.1:35357', - strictSSL: false - }); - - client.getLoadbalancers(function (err, lbs) { - if (err) { - console.error(err); - } else { - console.log(lbs); - } - }); -}); diff --git a/examples/network/openstack_list_listener.js b/examples/network/openstack_list_listener.js deleted file mode 100644 index d9af53d90..000000000 --- a/examples/network/openstack_list_listener.js +++ /dev/null @@ -1,22 +0,0 @@ -var getToken = require('./get_openstack_token'); -getToken.getToken(function (id){ - var pkgcloud = require('../../lib/pkgcloud'); - var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; - var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: KH_admin_tenantID, - token: id, - region: 'RegionOne', - authUrl: 'http://172.16.31.1:35357', - strictSSL: false - }); - - - - client.getListeners(function(err, listener) { - if (err) { - console.log(err); - } - console.log(listener); - }); -}); diff --git a/examples/network/openstack_list_member.js b/examples/network/openstack_list_member.js deleted file mode 100644 index 6fd3f5d6c..000000000 --- a/examples/network/openstack_list_member.js +++ /dev/null @@ -1,21 +0,0 @@ -var getToken = require('./get_openstack_token'); -getToken.getToken(function (id){ - var token = id; - var pkgcloud = require('../../lib/pkgcloud'); - var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; - var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: KH_admin_tenantID, - token: token, - region: 'RegionOne', - authUrl: 'http://172.16.31.1:35357', - strictSSL: false - }); - var options = 'c0d19bc6-d7c9-408a-825e-f1c9ef143b12'; - client.getMembersV2(options, function(err, listener) { - if (err) { - console.log(err); - } - console.log(listener); - }); -}); diff --git a/examples/network/openstack_list_monitorv2.js b/examples/network/openstack_list_monitorv2.js deleted file mode 100644 index 21201fce7..000000000 --- a/examples/network/openstack_list_monitorv2.js +++ /dev/null @@ -1,20 +0,0 @@ -var getToken = require('./get_openstack_token'); -getToken.getToken(function (id){ - var pkgcloud = require('../../lib/pkgcloud'); - var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; - var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: KH_admin_tenantID, - token: id, - region: 'RegionOne', - authUrl: 'http://172.16.31.1:35357', - strictSSL: false - }); - - client.getHealthMonitorsV2(function(err, item) { - if (err) { - console.log(err); - } - console.log(item); - }); -}); diff --git a/examples/network/openstack_list_poolv2.js b/examples/network/openstack_list_poolv2.js deleted file mode 100644 index e62a2c22f..000000000 --- a/examples/network/openstack_list_poolv2.js +++ /dev/null @@ -1,21 +0,0 @@ -var getToken = require('./get_openstack_token'); -getToken.getToken(function (id){ - var token = id; - var pkgcloud = require('../../lib/pkgcloud'); - var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; - var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: KH_admin_tenantID, - token: token, - region: 'RegionOne', - authUrl: 'http://172.16.31.1:35357', - strictSSL: false - }); - - client.getPoolsV2(function(err, listener) { - if (err) { - console.log(err); - } - console.log(listener); - }); -}); diff --git a/examples/network/openstack_show_lbs.js b/examples/network/openstack_show_lbs.js deleted file mode 100644 index 21775b33e..000000000 --- a/examples/network/openstack_show_lbs.js +++ /dev/null @@ -1,20 +0,0 @@ -var pkgcloud = require('../../lib/pkgcloud'); -getToken.getToken(function (id){ - var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: id, - token: 'f0ff40891f3f4e4bbb550621ebcfffc5', - region: 'RegionOne', - authUrl: 'http://controller:5000/', - strictSSL: false - }); - var options = '50d3f823-cccb-471d-a82d-d7c03a4208a6'; - - client.getLoadbalancer(options, function (err, lbs) { - if (err) { - console.log(err); - } else { - console.log(lbs); - } - }); -}); diff --git a/examples/network/openstack_show_listener.js b/examples/network/openstack_show_listener.js deleted file mode 100644 index 9d4033c58..000000000 --- a/examples/network/openstack_show_listener.js +++ /dev/null @@ -1,21 +0,0 @@ -var pkgcloud = require('../../lib/pkgcloud'); -var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; -getToken.getToken(function (id){ - var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: KH_admin_tenantID, - token: id, - region: 'RegionOne', - authUrl: 'http://172.16.31.1:35357', - strictSSL: false - }); - - - var options = '1ac1a152-3b9f-48d2-bab5-f0cb9f36292b'; - client.getListener(options, function(err, listener) { - if (err) { - console.log(err); - } - console.log(listener); - }); -}); diff --git a/examples/network/openstack_show_monitorv2.js b/examples/network/openstack_show_monitorv2.js deleted file mode 100644 index f4f859ddb..000000000 --- a/examples/network/openstack_show_monitorv2.js +++ /dev/null @@ -1,20 +0,0 @@ -var getToken = require('./get_openstack_token'); -getToken.getToken(function (id){ - var pkgcloud = require('../../lib/pkgcloud'); - var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; - var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: KH_admin_tenantID, - token: id, - region: 'RegionOne', - authUrl: 'http://172.16.31.1:35357', - strictSSL: false - }); - var option = '5f96c62f-71e6-4c9d-b397-c541f4fe2d69'; - client.getHealthMonitorV2(option, function(err, item) { - if (err) { - console.log(err); - } - console.log(item); - }); -}); diff --git a/examples/network/openstack_show_poolv2.js b/examples/network/openstack_show_poolv2.js deleted file mode 100644 index 732fb9e81..000000000 --- a/examples/network/openstack_show_poolv2.js +++ /dev/null @@ -1,21 +0,0 @@ -var pkgcloud = require('../../lib/pkgcloud'); -var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; -getToken.getToken(function (id){ - var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: KH_admin_tenantID, - token: id, - region: 'RegionOne', - authUrl: 'http://172.16.31.1:35357', - strictSSL: false - }); - - - var options = 'c0cd6ef8-444e-4182-b50e-fefcb8200300'; - client.getPoolV2(options, function(err, listener) { - if (err) { - console.log(err); - } - console.log(listener); - }); -}); diff --git a/examples/network/openstack_update_lbs.js b/examples/network/openstack_update_lbs.js deleted file mode 100644 index 05a9f90cb..000000000 --- a/examples/network/openstack_update_lbs.js +++ /dev/null @@ -1,28 +0,0 @@ -var pkgcloud = require('../../lib/pkgcloud'); -var getToken = require('./get_openstack_token'); -var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; -getToken.getToken(function (id){ - var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: KH_admin_tenantID, - token: id, - region: 'RegionOne', - authUrl: 'http://172.16.31.1:35357', - strictSSL: false - }); - - - var options = { - 'id': '3a3bd493-f532-4776-a5c2-f975b2b2ea91', - 'description': 'updated loadbalancer', - 'name': 'update name', - 'admin_state_up': false, - }; - client.updateLoadbalancer(options, function(err, lbs) { - if (err) { - console.log(err); - } else { - console.log('success', lbs); - } - }); -}); diff --git a/examples/network/openstack_update_listener.js b/examples/network/openstack_update_listener.js deleted file mode 100644 index b6f0755c2..000000000 --- a/examples/network/openstack_update_listener.js +++ /dev/null @@ -1,26 +0,0 @@ -var pkgcloud = require('../../lib/pkgcloud'); -var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; -getToken.getToken(function (id){ - var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: KH_admin_tenantID, - token: id, - region: 'RegionOne', - authUrl: 'http://172.16.31.1:35357', - strictSSL: false - }); - var options = { - 'name': 'listener_unit_test_updated', - 'description': 'simple listener updated', - 'connection_limit': 111655, - 'admin_state_up': false, - 'id': '1ac1a152-3b9f-48d2-bab5-f0cb9f36292b', - 'default_tls_container_id': 'http://192.168.100.11:9311/v1/containers/e243f5ba-1754-45ad-87e7-3102d5739a76' - }; - client.updateListener(options, function(err, listener) { - if (err) { - console.log(err); - } - console.log(listener); - }); -}); diff --git a/examples/network/openstack_update_monitorv2.js b/examples/network/openstack_update_monitorv2.js deleted file mode 100644 index 097e38c14..000000000 --- a/examples/network/openstack_update_monitorv2.js +++ /dev/null @@ -1,28 +0,0 @@ -var pkgcloud = require('../../lib/pkgcloud'); -var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; -var getToken = require('./get_openstack_token'); -getToken.getToken(function (id){ - var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: KH_admin_tenantID, - token: id, - region: 'RegionOne', - authUrl: 'http://172.16.31.1:35357', - strictSSL: false - }); - var options = { - 'delay' : 10, - 'expected_codes': '400,401', - 'http_method': 'head', - 'max_retries': 9, - 'timeout': '13', - 'url_path': '/update', - 'id': '5f96c62f-71e6-4c9d-b397-c541f4fe2d69' - }; - client.updateHealthMonitorV2(options, function(err, listener) { - if (err) { - console.log(err); - } - console.log(listener); - }); -}); diff --git a/examples/network/openstack_update_poolv2.js b/examples/network/openstack_update_poolv2.js deleted file mode 100644 index e35caa550..000000000 --- a/examples/network/openstack_update_poolv2.js +++ /dev/null @@ -1,27 +0,0 @@ -var pkgcloud = require('../../lib/pkgcloud'); -var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; -getToken.getToken(function (id){ - var client = pkgcloud.network.createClient({ - provider: 'openstack', - tenantId: KH_admin_tenantID, - token: id, - region: 'RegionOne', - authUrl: 'http://172.16.31.1:35357', - strictSSL: false - }); - - - var options = { - 'name': 'pool_test_updated', - 'description': 'simple pool updated', - 'admin_state_up': false, - 'id': 'd8d00cbd-7287-4e83-ba10-df08a0d6644d', - 'lb_algorithm': 'LEAST_CONNECTIONS' - }; - client.updatePoolV2(options, function(err, listener) { - if (err) { - console.log(err); - } - console.log(listener); - }); -}); diff --git a/examples/secret/get_openstack_token.js b/examples/secret/get_openstack_token.js deleted file mode 100644 index 1e2338521..000000000 --- a/examples/secret/get_openstack_token.js +++ /dev/null @@ -1,27 +0,0 @@ -var qs = require('qs'); -var request = require('request'); -var querystring = require('querystring'); -var getToken = exports.getToken = function (callback) { - var postData = JSON.stringify( - {"auth": - {"tenantName":"admin", - "passwordCredentials":{ - "username": "admin", - "password":"hbopsk_adminpass" - } - } - }); - - var options = { - url: "http://172.16.31.1:35357/v2.0/tokens", - headers: { - 'Content-Type': 'application/json' - }, - body: postData - }; - request.post(options, function(error, resp, body){ - console.log('token = ', JSON.parse(body).access.token.id); - callback(JSON.parse(body).access.token.id); - }); - -} diff --git a/examples/secret/openstack_list_container.js b/examples/secret/openstack_list_container.js deleted file mode 100644 index cf7b7c865..000000000 --- a/examples/secret/openstack_list_container.js +++ /dev/null @@ -1,23 +0,0 @@ -var pkgcloud = require('../../lib/pkgcloud'); -var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; -var getToken = require('./get_openstack_token'); -getToken.getToken(function (id){ - var client = pkgcloud.secret.createClient({ - provider: 'openstack', - tenantId: KH_admin_tenantID, - token: id, - region: 'RegionOne', - authUrl: 'http://172.16.31.1:35357', - strictSSL: false - }); - - client.getContainers(function (err, secret) { - if (err) { - console.error(err); - } else { - console.log(secret.map( function(item) { - return item.toJSON(); - })); - } - }); -}); diff --git a/examples/secret/openstack_list_secret.js b/examples/secret/openstack_list_secret.js deleted file mode 100644 index 817032349..000000000 --- a/examples/secret/openstack_list_secret.js +++ /dev/null @@ -1,21 +0,0 @@ -var pkgcloud = require('../../lib/pkgcloud'); -var KH_admin_tenantID = '6ade8ae8037b4e449a4c7c7a65dc5e1b'; -var getToken = require('./get_openstack_token'); -getToken.getToken(function (id){ - var client = pkgcloud.secret.createClient({ - provider: 'openstack', - tenantId: KH_admin_tenantID, - token: id, - region: 'RegionOne', - authUrl: 'http://172.16.31.1:35357', - strictSSL: false - }); - - client.getSecrets(function (err, secret) { - if (err) { - console.error(err); - } else { - console.log(secret); - } - }); -}); diff --git a/lib/pkgcloud/core/secret/container.js b/lib/pkgcloud/core/secret/container.js index 6c24cba7a..36f58a913 100644 --- a/lib/pkgcloud/core/secret/container.js +++ b/lib/pkgcloud/core/secret/container.js @@ -1,8 +1,8 @@ var util = require('util'), model = require('../base/model'); -var secret = exports.Container = function (client, details) { +var container = exports.Container = function (client, details) { model.Model.call(this, client, details); }; -util.inherits(secret, model.Model); +util.inherits(container, model.Model); diff --git a/lib/pkgcloud/openstack/secret/client/container.js b/lib/pkgcloud/openstack/secret/client/container.js index a71037139..34ca60a5c 100644 --- a/lib/pkgcloud/openstack/secret/client/container.js +++ b/lib/pkgcloud/openstack/secret/client/container.js @@ -50,15 +50,6 @@ exports.getContainer = function (container, callback) { }); }; -/** - * client.createContainer - * - * @description create a new container - * - * @param {object} options - * @param {String} options.name the name of the new container - * @param callback - */ exports.createContainer = function (options, callback) { var self = this; container = _convertContainerToWireFormat(options); diff --git a/lib/pkgcloud/openstack/secret/client/secret.js b/lib/pkgcloud/openstack/secret/client/secret.js index 82d47c04f..3046ac488 100644 --- a/lib/pkgcloud/openstack/secret/client/secret.js +++ b/lib/pkgcloud/openstack/secret/client/secret.js @@ -51,15 +51,6 @@ exports.getSecret = function (secret, callback) { }); }; -/** - * client.createSecret - * - * @description create a new secret - * - * @param {object} options - * @param {String} options.name the name of the new secret - * @param callback - */ exports.createSecret = function (options, callback) { var self = this; secret = _convertSecretToWireFormat(options); From a6f461ad73415a8537c306154c544eed2dfbb528 Mon Sep 17 00:00:00 2001 From: "jhihming.huang" Date: Mon, 26 Dec 2016 00:53:49 +0800 Subject: [PATCH 08/13] fix encapsulation --- lib/pkgcloud/openstack/network/lbaasListener.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/pkgcloud/openstack/network/lbaasListener.js b/lib/pkgcloud/openstack/network/lbaasListener.js index d298510ea..3471dae66 100644 --- a/lib/pkgcloud/openstack/network/lbaasListener.js +++ b/lib/pkgcloud/openstack/network/lbaasListener.js @@ -31,6 +31,6 @@ lbaasListener.prototype._setProperties = function (details) { lbaasListener.prototype.toJSON = function () { return _.pick(this, ['admin_state_up', 'connection_limit', 'default_pool_id', 'description', 'id', - 'loadbalancers', 'name', 'protocol', 'protocol_port', 'project_id', 'tenant_id', 'default_tls_container_ref', - 'sni_container_refs']); + 'loadbalancers', 'name', 'protocol', 'protocol_port', 'project_id', 'tenant_id', 'default_tls_container_id', + 'sni_container_ids']); }; From 3c5060ad4d44422cc1af0f94111c96e938714db4 Mon Sep 17 00:00:00 2001 From: "jhihming.huang" Date: Tue, 27 Dec 2016 17:23:29 +0800 Subject: [PATCH 09/13] add refresh to loadbalancer encapsulation --- lib/pkgcloud/core/network/lbaasLoadbalancer.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/pkgcloud/core/network/lbaasLoadbalancer.js b/lib/pkgcloud/core/network/lbaasLoadbalancer.js index fecc13cb6..3b25d8c4c 100644 --- a/lib/pkgcloud/core/network/lbaasLoadbalancer.js +++ b/lib/pkgcloud/core/network/lbaasLoadbalancer.js @@ -6,3 +6,7 @@ var lbaasLoadbalancer = exports.lbaasLoadbalancer = function (client, details) { }; util.inherits(lbaasLoadbalancer, model.Model); + +lbaasLoadbalancer.prototype.refresh = function (callback) { + this.client.getLoadbalancer(this.id, callback); +}; From 61bc68e05729ee6a4b564b6568e8792859fb6447 Mon Sep 17 00:00:00 2001 From: "jhihming.huang" Date: Wed, 28 Dec 2016 11:10:08 +0800 Subject: [PATCH 10/13] add lb_algorithm key to lbaasListener.toJSON --- lib/pkgcloud/openstack/network/lbaasListener.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pkgcloud/openstack/network/lbaasListener.js b/lib/pkgcloud/openstack/network/lbaasListener.js index 3471dae66..f9bc82f9f 100644 --- a/lib/pkgcloud/openstack/network/lbaasListener.js +++ b/lib/pkgcloud/openstack/network/lbaasListener.js @@ -32,5 +32,5 @@ lbaasListener.prototype._setProperties = function (details) { lbaasListener.prototype.toJSON = function () { return _.pick(this, ['admin_state_up', 'connection_limit', 'default_pool_id', 'description', 'id', 'loadbalancers', 'name', 'protocol', 'protocol_port', 'project_id', 'tenant_id', 'default_tls_container_id', - 'sni_container_ids']); + 'sni_container_ids', 'lb_algorithm']); }; From c0f1929b8d51d706ea15236aa9f72970a8900159 Mon Sep 17 00:00:00 2001 From: "jhihming.huang" Date: Wed, 28 Dec 2016 11:18:08 +0800 Subject: [PATCH 11/13] set lb_algorithm default value as null --- lib/pkgcloud/openstack/network/lbaasListener.js | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/pkgcloud/openstack/network/lbaasListener.js b/lib/pkgcloud/openstack/network/lbaasListener.js index f9bc82f9f..9572b4dbc 100644 --- a/lib/pkgcloud/openstack/network/lbaasListener.js +++ b/lib/pkgcloud/openstack/network/lbaasListener.js @@ -27,6 +27,7 @@ lbaasListener.prototype._setProperties = function (details) { this.default_tls_container_id = details.default_tls_container_id || this.default_tls_container_id this.sni_container_id = details.sni_container_id || this.sni_container_id ; } + this.lb_algorithm = null; }; lbaasListener.prototype.toJSON = function () { From 652bfcca071fc12a25dda6d4cf0730b6b2f0982d Mon Sep 17 00:00:00 2001 From: "jhihming.huang" Date: Wed, 28 Dec 2016 13:04:37 +0800 Subject: [PATCH 12/13] add payload content encoding attribute --- lib/pkgcloud/openstack/secret/client/secret.js | 2 +- lib/pkgcloud/openstack/secret/secret.js | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/pkgcloud/openstack/secret/client/secret.js b/lib/pkgcloud/openstack/secret/client/secret.js index 3046ac488..59c2571e2 100644 --- a/lib/pkgcloud/openstack/secret/client/secret.js +++ b/lib/pkgcloud/openstack/secret/client/secret.js @@ -111,6 +111,6 @@ _convertSecretToWireFormat = function (details){ wireFormat.mode = details.mode || "mode"; wireFormat.payload = details.payload; wireFormat.payload_content_type = details.payload_content_type || "text/plain"; - wireFormat.payload_content_encoding = details.payload_content_encoding; + wireFormat.payload_content_encoding = details.payload_content_encoding || "base64"; return wireFormat; }; diff --git a/lib/pkgcloud/openstack/secret/secret.js b/lib/pkgcloud/openstack/secret/secret.js index 607794757..33fc0e95e 100644 --- a/lib/pkgcloud/openstack/secret/secret.js +++ b/lib/pkgcloud/openstack/secret/secret.js @@ -11,7 +11,8 @@ util.inherits(Secret, base.Secret); Secret.prototype._setProperties = function (details) { this.algorithm = details.algorithm || this.algorithm; this.bit_length = details.bit_length || this.bit_length; - this.content_types = details.content_types || this.content_types; + this.content_type = details.content_type || this.content_type; + this.payload_content_encoding = details.payload_content_encoding || this.payload_content_encoding; this.created = details.created || this.created; this.creator_id = details.creator_id || this.creator_id; this.expiration = details.expiration || this.expiration || 0; From f5f3eeae74f281f17d396e07b4cdf69d1da493d0 Mon Sep 17 00:00:00 2001 From: "jhihming.huang" Date: Wed, 28 Dec 2016 13:17:20 +0800 Subject: [PATCH 13/13] modify secret prototype --- lib/pkgcloud/openstack/secret/secret.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/pkgcloud/openstack/secret/secret.js b/lib/pkgcloud/openstack/secret/secret.js index 33fc0e95e..b8742986e 100644 --- a/lib/pkgcloud/openstack/secret/secret.js +++ b/lib/pkgcloud/openstack/secret/secret.js @@ -9,15 +9,16 @@ var Secret = exports.Secret = function Secret(client, details) { util.inherits(Secret, base.Secret); Secret.prototype._setProperties = function (details) { + this.name = details.name || this.name; + this.expiration = details.expiration || this.expiration || 0; this.algorithm = details.algorithm || this.algorithm; this.bit_length = details.bit_length || this.bit_length; - this.content_type = details.content_type || this.content_type; + this.mode = details.mode || this.mode; + this.payload = details.payload || this.payload; + this.payload_content_type = details.content_type || this.content_type; this.payload_content_encoding = details.payload_content_encoding || this.payload_content_encoding; this.created = details.created || this.created; this.creator_id = details.creator_id || this.creator_id; - this.expiration = details.expiration || this.expiration || 0; - this.mode = details.mode || this.mode; - this.name = details.name || this.name; this.secret_ref = details.secret_ref || this.secret_ref; this.secret_type = details.secret_type || this.secret_type; this.status = details.status || this.status; @@ -25,6 +26,6 @@ Secret.prototype._setProperties = function (details) { }; Secret.prototype.toJSON = function () { - return _.pick(this, ['algorithm', 'bit_length', 'content_types', 'created', 'creator_id', - 'expiration', 'mode', 'secret_type', 'secret_ref', 'status', 'updated', 'name']); + return _.pick(this, ['name', 'expiration', 'algorithm', 'bit_length', 'mode', 'payload_content_type', 'payload_content_encoding', 'created', 'creator_id', + 'secret_ref', 'secret_type', 'status', 'updated']); };