UNPKG

gce-elastic-docker

Version:

A package to help setup Elasticsearch / Kibana clusters on Google Compute Engine.

81 lines (80 loc) 3.46 kB
"use strict"; 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;