diff --git a/package.json b/package.json index 0030ba7..c6ee809 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "microphone-consul", - "version": "1.0.6", + "version": "1.1.0", "description": "Consul provider for microphone.js Microservice framework", "main": "lib/index.js", "scripts": { @@ -25,7 +25,7 @@ "license": "MIT", "dependencies": { "cron": "^1.1.0", - "microphone-core": "^1.0.7", + "microphone-core": "^1.1.0", "request": "^2.67.0" }, "devDependencies": { diff --git a/src/consul-provider.js b/src/consul-provider.js index a8eb8ba..ca36580 100644 --- a/src/consul-provider.js +++ b/src/consul-provider.js @@ -37,12 +37,15 @@ export default class ConsulProvider extends ClusterProvider { this.__startReaper(); } - async bootstrapClientAsync() { - this.__startReaper(); - //Task.FromResult(0); + async bootstrapClientAsync() { return new Promise((resolve, reject)=> { - return resolve({}); + try { + this.__startReaper(); + return resolve({status: 'STARTED'}); + } catch (ex) { + reject(ex); + } }); } diff --git a/src/consul-rest-client.js b/src/consul-rest-client.js index 9417be7..7ec81a5 100644 --- a/src/consul-rest-client.js +++ b/src/consul-rest-client.js @@ -6,12 +6,21 @@ import {ServiceInformation} from 'microphone-core'; const DEFAULT_PORT = 8500; const DEFAULT_HOST = 'http://localhost'; +/** + * + */ export default class ConsulRestClient { constructor(address, port) { this._address = address || DEFAULT_HOST; this._port = port || DEFAULT_PORT; } + /** + * + * @param serviceName + * @param serviceId + * @param address + */ async registerServiceAsync(serviceName, serviceId, address) { let payload = { ID: serviceId, @@ -34,6 +43,11 @@ export default class ConsulRestClient { await this.__request(options, "Could not register service"); } + /** + * + * @param serviceName + * @returns {Array|*|{}} + */ async findServiceAsync(serviceName) { let options = { uri: `${this._address}:${this._port}/v1/health/service/${serviceName}`, @@ -45,6 +59,10 @@ export default class ConsulRestClient { return serviceArray.map(svcItem => new ServiceInformation(svcItem["Service"]["Address"], svcItem["Service"]["Port"])); } + /** + * + * @returns {Array|*|{}} + */ async getCriticalServicesAsync() { var options = { uri: `${this._address}:${this._port}/v1/health/state/critical`, @@ -56,6 +74,10 @@ export default class ConsulRestClient { return serviceArray.map(svcItem => svcItem["ServiceID"]); } + /** + * + * @param serviceId + */ async unRegisterServiceAsync(serviceId) { var options = { uri: `${this._address}:${this._port}/v1/agent/service/deregister/${serviceId}`, @@ -65,10 +87,21 @@ export default class ConsulRestClient { await this.__request(options, "Could not de register service"); } + /** + * + * @param port + */ setPort(port) { this._port = port || DEFAULT_PORT; } + /** + * + * @param options + * @param message + * @returns {Promise} + * @private + */ __request(options, message) { return new Promise((resolve, reject)=> { request(options, (error, response, body)=> { diff --git a/tests/consul-provider.spec.js b/tests/consul-provider.spec.js index 9398688..63543b7 100644 --- a/tests/consul-provider.spec.js +++ b/tests/consul-provider.spec.js @@ -37,4 +37,13 @@ describe('ConsulRestClient:', ()=> { }); }); + describe('#bootstrapClientAsync', ()=> { + + it('should start reaper', async ()=> { + let resp = await provider.bootstrapClientAsync(); + console.log(resp); + resp.status.should.be.equal("STARTED"); + }); + }); + }); \ No newline at end of file