UNPKG

haufe-azure-arm-utils

Version:
78 lines (67 loc) 2.5 kB
'use strict'; const debug = require('debug')('haufe-azure-arm-utils:disk-utils'); const access = require('./access'); const diskUtils = function () { }; diskUtils.listDisks = (resourceGroup, callback) => { debug('listDisks()'); access.getComputeClient((err, computeClient) => { if (err) { return callback(err); } debug('getComputeClient succeeded'); computeClient.disks.listByResourceGroup(resourceGroup, (err, diskList) => { if (err) { return callback(err); } debug(diskList); return callback(null, diskList); }); }); }; diskUtils.cloneDisk = (diskSpec, targetGroupSpec, targetName, tags, callback) => { debug(`cloneDisk(${diskSpec}, ${targetGroupSpec.name}, ${targetName}, ${JSON.stringify(tags)}`); access.getComputeClient((err, computeClient) => { if (err) { return callback(err); } debug('getComputeClient succeeded'); // Specify how the disk should look like, see // http://azure.github.io/azure-sdk-for-node/azure-arm-compute/latest/Disks.html#createOrUpdate const targetDiskSpec = { location: targetGroupSpec.location, accountType: 'Standard_LRS', // no need to pay for SSDs for backups creationData: { createOption: 'Copy', // Clone from other disk sourceUri: diskSpec.id }, diskSizeGB: diskSpec.diskSizeGB, tags: tags }; debug('Target disk spec:'); debug(targetDiskSpec); computeClient.disks.createOrUpdate(targetGroupSpec.name, targetName, targetDiskSpec, (err, newDiskSpec) => { if (err) { return callback(err); } debug('disks.createOrUpdate succeeded'); return callback(null, newDiskSpec); }); }); }; diskUtils.deleteDisk = (resourceGroup, diskName, callback) => { debug(`deleteDisk(${diskName})`); access.getComputeClient((err, computeClient) => { if (err) { return callback(err); } debug('getComputeClient succeeded'); computeClient.disks.deleteMethod(resourceGroup, diskName, (err, result) => { if (err) { return callback(err); } debug('deleteMethod() succeeded.'); return callback(null); }); }); }; module.exports = diskUtils;