Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion heat/v1/client.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
var base = require("../../client/base"),
ResourcesManager = require("./resources"),
StacksManager = require("./stacks");
StacksManager = require("./stacks"),
TemplatesManager = require("./templates");


var Heat = base.Client.extend({
Expand All @@ -11,6 +12,7 @@ var Heat = base.Client.extend({
this._super(options);
this.resources = new ResourcesManager(this);
this.stacks = new StacksManager(this);
this.templates = new TemplatesManager(this);
}
});

Expand Down
32 changes: 29 additions & 3 deletions heat/v1/stacks.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,22 @@
var async = require('async'),
base = require("../../client/base");
base = require("../../client/base"),
urljoin = require("../../client/utils").urljoin;


var StacksManager = base.Manager.extend({
namespace: "stacks",
use_raw_data: true,

get_base_url: function (params) {
var base_url = this._super(params);

if (params.id !== null && params.name != null) {
base_url = urljoin(base_url, params.name);
}

return base_url;
},

create: function (params, callback) {
var success = params.success,
error = params.error,
Expand All @@ -27,7 +38,7 @@ var StacksManager = base.Manager.extend({
});

this._super(params, function (err, result, xhr) {
if (err) return manager.safe_complete(err, null, null, params, callback);
if (err) return manager.safe_complete(err, null, xhr, { error: error }, callback);
manager.get({
url: xhr.getResponseHeader('location'),
success: success,
Expand Down Expand Up @@ -77,7 +88,22 @@ var StacksManager = base.Manager.extend({
params.url = this.urljoin(this.get_base_url(params), data.stack_name, params.id);
params.headers['Content-Length'] = 0;
this._super(params, callback);
}
},

_action: function (params, action, info, callback) {
var url = urljoin(this.get_base_url(params), params.id || params.data.id, "actions");
if (params.data && params.data.id) delete params.data.id;
params = this.prepare_params(params, url, "singular");
params.data[action] = info || null;
return this.client.post(params, callback);
},

suspend: function (params, callback) { return this._action(params, "suspend", null, callback); },
resume: function (params, callback) { return this._action(params, "resume", null, callback); },

cancel_update: function (params, callback) { return this._action(params, "cancel_update", null, callback); },

check: function (params, callback) { return this._actions(params, "check", null, callback); }
});


Expand Down
26 changes: 26 additions & 0 deletions heat/v1/templates.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
var base = require("../../client/base"),
utils = require("../../client/utils");


var TemplatesManager = base.Manager.extend({
namespace: "/stacks/{stack_id}/template",
plural: "templates",

prepare_namespace: function (params) {
params.data = params.data || {};
var stack_id = params.data.stack_id;
delete params.data.stack_id;

return utils.interpolate(this.namespace, {stack_id: stack_id});
},

get: function (params, callback) {
var url = this.get_base_url(params);
params = this.prepare_params(params, url);
this.client.get(params, callback);
}

});


module.exports = TemplatesManager;