workflow-manager
Advanced tools
Comparing version 0.3.1 to 0.3.2
116
index.js
@@ -784,2 +784,118 @@ const async = require("async"); | ||
* @returns {Promise} | ||
* @fulfill {undefined} | ||
* @reject {module:workflow-manager.Errors.BadRequest} | ||
* @reject {module:workflow-manager.Errors.NotFound} | ||
* @reject {module:workflow-manager.Errors.InternalError} | ||
* @reject {Error} | ||
*/ | ||
deleteStateResource(params, options, cb) { | ||
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 = {}; | ||
if (!params.namespace) { | ||
rejecter(new Error("namespace must be non-empty because it's a path parameter")); | ||
return; | ||
} | ||
if (!params.name) { | ||
rejecter(new Error("name must be non-empty because it's a path parameter")); | ||
return; | ||
} | ||
const query = {}; | ||
if (span) { | ||
opentracing.inject(span, opentracing.FORMAT_TEXT_MAP, headers); | ||
span.logEvent("DELETE /state-resources/{namespace}/{name}"); | ||
span.setTag("span.kind", "client"); | ||
} | ||
const requestOptions = { | ||
method: "DELETE", | ||
uri: this.address + "/state-resources/" + params.namespace + "/" + params.name + "", | ||
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(); | ||
break; | ||
case 400: | ||
rejecter(new Errors.BadRequest(body || {})); | ||
return; | ||
case 404: | ||
rejecter(new Errors.NotFound(body || {})); | ||
return; | ||
case 500: | ||
rejecter(new Errors.InternalError(body || {})); | ||
return; | ||
default: | ||
rejecter(new Error("Received unexpected statusCode " + response.statusCode)); | ||
return; | ||
} | ||
}); | ||
}()); | ||
}); | ||
} | ||
/** | ||
* @param {Object} params | ||
* @param {string} params.namespace | ||
* @param {string} params.name | ||
* @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} | ||
@@ -786,0 +902,0 @@ * @reject {module:workflow-manager.Errors.BadRequest} |
{ | ||
"name": "workflow-manager", | ||
"version": "0.3.1", | ||
"version": "0.3.2", | ||
"description": "Minimal Workflow orchestrator for AWS Batch", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -17,2 +17,3 @@ <a name="module_workflow-manager"></a> | ||
* [.postStateResource(NewStateResource, [options], [cb])](#module_workflow-manager--WorkflowManager+postStateResource) ⇒ <code>Promise</code> | ||
* [.deleteStateResource(params, [options], [cb])](#module_workflow-manager--WorkflowManager+deleteStateResource) ⇒ <code>Promise</code> | ||
* [.getStateResource(params, [options], [cb])](#module_workflow-manager--WorkflowManager+getStateResource) ⇒ <code>Promise</code> | ||
@@ -170,2 +171,23 @@ * [.putStateResource(params, [options], [cb])](#module_workflow-manager--WorkflowManager+putStateResource) ⇒ <code>Promise</code> | ||
<a name="module_workflow-manager--WorkflowManager+deleteStateResource"></a> | ||
#### workflowManager.deleteStateResource(params, [options], [cb]) ⇒ <code>Promise</code> | ||
**Kind**: instance method of <code>[WorkflowManager](#exp_module_workflow-manager--WorkflowManager)</code> | ||
**Fulfill**: <code>undefined</code> | ||
**Reject**: <code>[BadRequest](#module_workflow-manager--WorkflowManager.Errors.BadRequest)</code> | ||
**Reject**: <code>[NotFound](#module_workflow-manager--WorkflowManager.Errors.NotFound)</code> | ||
**Reject**: <code>[InternalError](#module_workflow-manager--WorkflowManager.Errors.InternalError)</code> | ||
**Reject**: <code>Error</code> | ||
| Param | Type | Description | | ||
| --- | --- | --- | | ||
| params | <code>Object</code> | | | ||
| params.namespace | <code>string</code> | | | ||
| params.name | <code>string</code> | | | ||
| [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+getStateResource"></a> | ||
@@ -172,0 +194,0 @@ |
72384
1478
414