all files / src/network/remote/ clusters.js

26.19% Statements 11/42
12.5% Branches 3/24
12.5% Functions 2/16
27.78% Lines 10/36
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143                                                                                                                                                                                                                                                                         
'use strict';
 
Object.defineProperty(exports, "__esModule", {
  value: true
});
 
exports.default = function (_ref) {
  var client = _ref.client,
      filterQuery = _ref.filterQuery,
      mustContain = _ref.mustContain,
      encodeQueryAsString = _ref.encodeQueryAsString,
      busy = _ref.busy;
 
  return {
    // get /clusters
    //     Search for clusters with certain properties (type: 'trad' || 'ec2')
    //     TODO: limit and offset argument.
    listClusters: function listClusters() {
      var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
 
      if (type) {
        return busy(client._.get('/clusters?type=' + type));
      }
      return busy(client._.get('/clusters'));
    },
 
 
    // post /clusters
    //     Create a cluster
    createCluster: function createCluster(cluster) {
      return busy(client._.post('/clusters', cluster, {
        transformRequest: _utils.transformRequest,
        headers: headers
      }));
    },
 
 
    // get /clusters/{id}
    //     Get a cluster
    getCluster: function getCluster(id) {
      return busy(client._.get('/clusters/' + id));
    },
    getClusterPresets: function getClusterPresets() {
      return (0, _utils.getJSON)('/clusters-presets.json');
    },
 
 
    // patch /clusters/{id}
    //     Update the cluster
    updateCluster: function updateCluster(cluster) {
      var editableCluster = (0, _deepClone2.default)(cluster);
      var allowed = ['name', 'type', 'config', '_id'];
      var params = filterQuery.apply(undefined, [editableCluster].concat(_toConsumableArray(allowed.slice(0, 3))));
 
      // Remove read only fields if any
      if (editableCluster.config.ssh && editableCluster.config.ssh.user) {
        delete editableCluster.config.ssh.user;
      }
      if (editableCluster.config.host) {
        delete editableCluster.config.host;
      }
 
      return busy(client._.patch('/clusters/' + cluster._id, params, {
        transformRequest: _utils.transformRequest,
        headers: headers
      }));
    },
 
 
    // delete /clusters/{id}
    //     Delete a cluster and its configuration
    deleteCluster: function deleteCluster(id) {
      return busy(client._.delete('/clusters/' + id));
    },
 
 
    // put /clusters/{id}/job/{jobId}/submit
    //     Submit a job to the cluster
    submitJob: function submitJob(clusterId, jobId) {
      return busy(client._.put('/clusters/' + clusterId + '/job/' + jobId + '/submit'));
    },
 
 
    // get /clusters/{id}/log
    //     Get log entries for cluster
    getClusterLog: function getClusterLog(taskId) {
      var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
 
      if (offset) {
        return busy(client._.get('/clusters/' + taskId + '/log?offset=' + offset));
      }
      return busy(client._.get('/clusters/' + taskId + '/log'));
    },
 
 
    // PUT /clusters/{id}/provision Provision a cluster with ansible
    provisionCluster: function provisionCluster(id, params) {
      return busy(client._.put('/clusters/' + id + '/provision', params));
    },
 
 
    // put /clusters/{id}/start
    //     Start a cluster (ec2 only)
    startCluster: function startCluster(id) {
      return busy(client._.put('/clusters/' + id + '/start'));
    },
 
 
    // alias for startClusters
    testCluster: function testCluster(id) {
      return busy(client._.put('/clusters/' + id + '/start'));
    },
 
 
    // get /clusters/{id}/status
    //     Get the clusters current state
    getClusterStatus: function getClusterStatus(id) {
      return busy(client._.get('/clusters/' + id + '/status'));
    },
 
 
    // put /clusters/{id}/terminate
    //     Terminate a cluster
    terminateCluster: function terminateCluster(id) {
      return busy(client._.put('/clusters/' + id + '/terminate'));
    }
  };
};
 
var _deepClone = require('mout/src/lang/deepClone');
 
var _deepClone2 = _interopRequireDefault(_deepClone);
 
var _utils = require('./utils');
 
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
 
var headers = {
  'Content-Type': 'application/json'
};