UNPKG

smc-hub

Version:

CoCalc: Backend webserver component

115 lines (101 loc) 3.02 kB
// Generated by CoffeeScript 2.5.1 (function() { //######################################################################## // This file is part of CoCalc: Copyright © 2020 Sagemath, Inc. // License: AGPLv3 s.t. "Commons Clause" – see LICENSE.md for details //######################################################################## var SMC, async, defaults, misc, required, smc_gcloud, winston; async = require('async'); winston = require('./logger').getLogger('smc-manager'); misc = require('smc-util/misc'); ({defaults, required} = misc); smc_gcloud = require('./smc_gcloud'); exports.smc = function(opts) { return new SMC(opts); }; SMC = class SMC { constructor() { this.create_compute_vm = this.create_compute_vm.bind(this); this.create_web_vm = this.create_web_vm.bind(this); this._gcloud = require('./smc_gcloud').gcloud(); } dbg(f) { return function(m) { return winston.debug(`smc.${f}: ${m}`); }; } create_compute_vm(opts) { var dbg; opts = defaults(opts, { name: required, // e.g., 'compute11' base: 'compute0-us', // name of disk to clone type: 'n1-standard-1', preemptible: true, cb: required }); dbg = this.dbg(`create_compute_vm(name='${opts.name}')`); return async.series([ (cb) => { var disk; dbg(`create base disk from current live disk '${opts.base}'`); disk = this._gcloud.disk({ name: opts.base }); return disk.copy({ name: opts.name, cb: cb }); }, (cb) => { dbg("create vm"); return this._gcloud.create_vm({ name: opts.name, type: opts.type, preemptible: opts.preemptible, tags: ['compute'], disks: [opts.name], cb: cb }); } ], opts.cb); } create_web_vm(opts) { var dbg; opts = defaults(opts, { name: required, // e.g., 'web10' base: 'web0', // name of disk to clone type: 'g1-small', preemptible: true, cb: required }); dbg = this.dbg(`create_web_vm(name='${opts.name}')`); return async.series([ (cb) => { var disk; dbg(`create base disk from current live disk '${opts.base}'`); disk = this._gcloud.disk({ name: opts.base }); return disk.copy({ name: opts.name, cb: cb }); }, (cb) => { dbg("create vm"); return this._gcloud.create_vm({ name: opts.name, type: opts.type, preemptible: opts.preemptible, tags: ['http-server', 'https-server', 'hub'], disks: [opts.name], cb: cb }); } ], opts.cb); } }; }).call(this); //# sourceMappingURL=smc-manager.js.map