UNPKG

smc-hub

Version:

CoCalc: Backend webserver component

74 lines (65 loc) 2.67 kB
######################################################################### # This file is part of CoCalc: Copyright © 2020 Sagemath, Inc. # License: AGPLv3 s.t. "Commons Clause" – see LICENSE.md for details ######################################################################### async = require('async') winston = require('./logger').getLogger('smc-manager') misc = require('smc-util/misc') {defaults, required} = misc smc_gcloud = require('./smc_gcloud') exports.smc = (opts) -> new SMC(opts) class SMC constructor: -> @_gcloud = require('./smc_gcloud').gcloud() dbg: (f) -> return (m) -> winston.debug("smc.#{f}: #{m}") create_compute_vm: (opts) => 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 = @dbg("create_compute_vm(name='#{opts.name}')") async.series([ (cb) => dbg("create base disk from current live disk '#{opts.base}'") disk = @_gcloud.disk(name:opts.base) disk.copy name : opts.name cb : cb (cb) => dbg("create vm") @_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) => opts = defaults opts, name : required # e.g., 'web10' base : 'web0' # name of disk to clone type : 'g1-small' preemptible : true cb : required dbg = @dbg("create_web_vm(name='#{opts.name}')") async.series([ (cb) => dbg("create base disk from current live disk '#{opts.base}'") disk = @_gcloud.disk(name:opts.base) disk.copy name : opts.name cb : cb (cb) => dbg("create vm") @_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)