workflow-manager
Advanced tools
Comparing version 0.1.2 to 0.1.3
103
index.js
@@ -669,2 +669,105 @@ const async = require("async"); | ||
/** | ||
* Get the latest versions of all available workflows | ||
* @param {object} [options] | ||
* @param {number} [options.timeout] - A request specific timeout | ||
* @param {external:Span} [options.span] - An OpenTracing span - For example from the parent request | ||
* @param {module:workflow-manager.RetryPolicies} [options.retryPolicy] - A request specific retryPolicy | ||
* @param {function} [cb] | ||
* @returns {Promise} | ||
* @fulfill {Object[]} | ||
* @reject {module:workflow-manager.Errors.BadRequest} | ||
* @reject {module:workflow-manager.Errors.InternalError} | ||
* @reject {Error} | ||
*/ | ||
getWorkflows(options, cb) { | ||
const params = {}; | ||
if (!cb && typeof options === "function") { | ||
cb = options; | ||
options = undefined; | ||
} | ||
return new Promise((resolve, reject) => { | ||
const rejecter = (err) => { | ||
reject(err); | ||
if (cb) { | ||
cb(err); | ||
} | ||
}; | ||
const resolver = (data) => { | ||
resolve(data); | ||
if (cb) { | ||
cb(null, data); | ||
} | ||
}; | ||
if (!options) { | ||
options = {}; | ||
} | ||
const timeout = options.timeout || this.timeout; | ||
const span = options.span; | ||
const headers = {}; | ||
const query = {}; | ||
if (span) { | ||
opentracing.inject(span, opentracing.FORMAT_TEXT_MAP, headers); | ||
span.logEvent("GET /workflows"); | ||
span.setTag("span.kind", "client"); | ||
} | ||
const requestOptions = { | ||
method: "GET", | ||
uri: this.address + "/workflows", | ||
json: true, | ||
timeout, | ||
headers, | ||
qs: query, | ||
useQuerystring: true, | ||
}; | ||
const retryPolicy = options.retryPolicy || this.retryPolicy || singleRetryPolicy; | ||
const backoffs = retryPolicy.backoffs(); | ||
let retries = 0; | ||
(function requestOnce() { | ||
request(requestOptions, (err, response, body) => { | ||
if (retries < backoffs.length && retryPolicy.retry(requestOptions, err, response, body)) { | ||
const backoff = backoffs[retries]; | ||
retries += 1; | ||
setTimeout(requestOnce, backoff); | ||
return; | ||
} | ||
if (err) { | ||
rejecter(err); | ||
return; | ||
} | ||
switch (response.statusCode) { | ||
case 200: | ||
resolver(body); | ||
break; | ||
case 400: | ||
rejecter(new Errors.BadRequest(body || {})); | ||
return; | ||
case 500: | ||
rejecter(new Errors.InternalError(body || {})); | ||
return; | ||
default: | ||
rejecter(new Error("Received unexpected statusCode " + response.statusCode)); | ||
return; | ||
} | ||
}); | ||
}()); | ||
}); | ||
} | ||
/** | ||
* @param NewWorkflowRequest | ||
@@ -671,0 +774,0 @@ * @param {object} [options] |
{ | ||
"name": "workflow-manager", | ||
"version": "0.1.2", | ||
"version": "0.1.3", | ||
"description": "Minimal Workflow orchestrator for AWS Batch", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -16,2 +16,3 @@ <a name="module_workflow-manager"></a> | ||
* [.GetJob(jobId, [options], [cb])](#module_workflow-manager--WorkflowManager+GetJob) ⇒ <code>Promise</code> | ||
* [.getWorkflows([options], [cb])](#module_workflow-manager--WorkflowManager+getWorkflows) ⇒ <code>Promise</code> | ||
* [.newWorkflow(NewWorkflowRequest, [options], [cb])](#module_workflow-manager--WorkflowManager+newWorkflow) ⇒ <code>Promise</code> | ||
@@ -147,2 +148,21 @@ * [.getWorkflowByName(name, [options], [cb])](#module_workflow-manager--WorkflowManager+getWorkflowByName) ⇒ <code>Promise</code> | ||
<a name="module_workflow-manager--WorkflowManager+getWorkflows"></a> | ||
#### workflowManager.getWorkflows([options], [cb]) ⇒ <code>Promise</code> | ||
Get the latest versions of all available workflows | ||
**Kind**: instance method of <code>[WorkflowManager](#exp_module_workflow-manager--WorkflowManager)</code> | ||
**Fulfill**: <code>Object[]</code> | ||
**Reject**: <code>[BadRequest](#module_workflow-manager--WorkflowManager.Errors.BadRequest)</code> | ||
**Reject**: <code>[InternalError](#module_workflow-manager--WorkflowManager.Errors.InternalError)</code> | ||
**Reject**: <code>Error</code> | ||
| Param | Type | Description | | ||
| --- | --- | --- | | ||
| [options] | <code>object</code> | | | ||
| [options.timeout] | <code>number</code> | A request specific timeout | | ||
| [options.span] | <code>[Span](https://doc.esdoc.org/github.com/opentracing/opentracing-javascript/class/src/span.js~Span.html)</code> | An OpenTracing span - For example from the parent request | | ||
| [options.retryPolicy] | <code>[RetryPolicies](#module_workflow-manager--WorkflowManager.RetryPolicies)</code> | A request specific retryPolicy | | ||
| [cb] | <code>function</code> | | | ||
<a name="module_workflow-manager--WorkflowManager+newWorkflow"></a> | ||
@@ -149,0 +169,0 @@ |
48949
993
305