haufe-azure-arm-utils
Version:
Azure ARM Node Utilities
78 lines (67 loc) • 2.5 kB
JavaScript
;
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;