gce-elastic-docker
Version:
A package to help setup Elasticsearch / Kibana clusters on Google Compute Engine.
81 lines (80 loc) • 3.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var utils_1 = require("../utils");
var elastic_uploader = {
kso: function (node, kso, verbose) {
// api call will throw if u give it an empty array, so resolve now.
if (!kso.length) {
return Promise.resolve([]);
}
// api doesnt allow the updated_at field to exist when creating a saved object.
kso.forEach(function (el) { return delete el.updated_at; });
var b64 = Buffer.from(JSON.stringify(kso)).toString('base64');
var url = 'localhost:5601/api/saved_objects/_bulk_create?overwrite=true';
var cmd = "gcloud compute ssh " + node.name + " --zone=" + node.zone + " " +
("--command \"echo " + b64 + " | base64 --decode | curl -s -XPOST " + url + " ") +
"-H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d @-\"";
if (verbose) {
console.log("uploading kibana saved objects via\n" + cmd);
}
return utils_1.Utils.exec(cmd).then(function (ans) {
var obj = JSON.parse(ans);
if (obj.error) {
throw obj;
}
var saved_objects = obj.saved_objects;
saved_objects.forEach(function (el) {
if (el.error) {
throw el;
}
});
return saved_objects;
});
},
scripts: function (node, scripts, verbose) {
var promises = [];
for (var script_name in scripts) {
var script = scripts[script_name];
var b64 = Buffer.from(JSON.stringify({ script: script })).toString('base64');
var cmd = "gcloud compute ssh " + node.name + " --zone=" + node.zone + " " +
("--command \"echo " + b64 + " | base64 --decode | ") +
("curl -s -XPOST localhost:9200/_scripts/" + script_name + " ") +
"-H 'Content-Type: application/json' -d @-\"";
if (verbose) {
console.log("uploading script " + script_name + " via\n" + cmd);
}
var p = utils_1.Utils.exec(cmd).then(function (ans) {
var obj = JSON.parse(ans);
if (obj.error) {
throw obj;
}
return obj;
});
promises.push(p);
}
return Promise.all(promises);
},
sm: function (node, sm, verbose) {
var promises = [];
for (var index in sm) {
var b64 = Buffer.from(JSON.stringify(sm[index])).toString('base64');
var cmd = "gcloud compute ssh " + node.name + " --zone=" + node.zone + " " +
("--command \"echo " + b64 + " | base64 --decode | ") +
("curl -s -XPUT localhost:9200/" + index + " ") +
"-H 'Content-Type: application/json' -d @-\"";
if (verbose) {
console.log("uploading settings/mappings for index " + index + " via\n" + cmd);
}
var p = utils_1.Utils.exec(cmd).then(function (ans) {
var obj = JSON.parse(ans);
if (obj.error && (obj.error.type !== 'resource_already_exists_exception')) {
throw obj;
}
return obj;
});
promises.push(p);
}
return Promise.all(promises);
}
};
exports.elastic_uploader = elastic_uploader;