Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Add working server create and destroy
  • Loading branch information
Ross Kukulinski committed Jul 23, 2013
1 parent 9492bb0 commit e1d9c7e
Show file tree
Hide file tree
Showing 7 changed files with 152 additions and 9 deletions.
2 changes: 2 additions & 0 deletions .gitignore
@@ -0,0 +1,2 @@
node_modules
config.json
3 changes: 3 additions & 0 deletions bin/pkgcloud-compute
Expand Up @@ -4,5 +4,8 @@ var program = require('commander');
program
.command('flavor-list', 'List flavors')
.command('image-list', 'List images')
.command('image-create', 'Create new image')
.command('server-list', 'List servers')
.command('server-create', 'Create a server')
.command('server-destroy', 'Destroy a server')
.parse(process.argv);
46 changes: 46 additions & 0 deletions bin/pkgcloud-compute-image-create
@@ -0,0 +1,46 @@
#!/usr/bin/env node
var program = require('commander');
var helpers = require('../helpers');
var table = require('cli-table');
var dateFormat = require('dateFormat');

/*
NOT SUPPORTED YET BY NODE-CLOUD PACKAGE
*/
console.log('Not implemented yet');
process.exit(0);

program
.option('-c, --config <path>', 'set config path [./cloud.json]')
.option('-n, --name <name>', 'Name of the instance to create')
.option('-s, --server <serverId>', 'ServerId to create image from')
.parse(process.argv);

var config = program.config;
if (!config) {
config = process.env.HOME+'/pkgcloud-cli.json';
}

if (!program.name
|| !program.server) {
console.log('You must specify a name and serverId');
process.exit(1);
}

var options = {
name: program.name,
server: program.server
};


helpers.init(config, function(err, cloud) {
cloud.createImage(options, function(err) {
if (err) {
console.log(err);
process.exit(1);
}
console.log('Image '+program.name+' created from server '+program.server);
});
});


9 changes: 5 additions & 4 deletions bin/pkgcloud-compute-image-list
Expand Up @@ -6,6 +6,7 @@ var dateFormat = require('dateFormat');

program
.option('-c, --config <path>', 'set config path [./cloud.json]')
.option('-r, --region <region>', 'List images from this region')
.parse(process.argv);

var config = program.config;
Expand All @@ -32,10 +33,10 @@ helpers.init(config, function(err, cloud) {
var data = [
img.id,
img.name,
dateFormat(img.created, 'yyyy-mm-dd h:MM:ss'),
dateFormat(img.update, 'yyyy-mm-dd h:MM:ss'),
img.status,
img.progress
dateFormat(img.created, 'yyyy-mm-dd h:MM:ss') || 'N/A',
dateFormat(img.update, 'yyyy-mm-dd h:MM:ss') || 'N/A',
img.status || 'N/A',
img.progress|| 'N/A'
];
tbl.push(data);
}
Expand Down
54 changes: 54 additions & 0 deletions bin/pkgcloud-compute-server-create
@@ -0,0 +1,54 @@
#!/usr/bin/env node
var program = require('commander');
var helpers = require('../helpers');
var table = require('cli-table');
var dateFormat = require('dateFormat');

program
.option('-c, --config <path>', 'set config path [./cloud.json]')
.option('-n, --name <name>', 'Name of the instance to create')
.option('-i, --image <imageId>', 'Image ID to use')
.option('-f, --flavor <flavorId>', 'Flavor ID to use')
.option('-r, --region <region>', 'Region instance will be created in')
.parse(process.argv);

var config = program.config;
if (!config) {
config = process.env.HOME+'/pkgcloud-cli.json';
}

if (!program.name
|| !program.image
|| !program.flavor
|| !program.region) {
console.log('You must specify a name, image, flavor, and region');
process.exit(1);
}

var srv_options = {
flavor: program.flavor,
image: program.image,
region: program.region
};


helpers.init(config, function(err, cloud) {
cloud.createServer(program.name, 'pkgcloud-cli', srv_options, function(err, inst) {
if (err) {
console.log(err);
process.exit(1);
}
var tbl = new table();

tbl.push(
{ 'id': inst.id },
{ 'name': inst.name },
{ 'region': inst.region},
{ 'adminPass': inst.adminPass }
);

console.log(tbl.toString());
});
});


37 changes: 37 additions & 0 deletions bin/pkgcloud-compute-server-destroy
@@ -0,0 +1,37 @@
#!/usr/bin/env node
var program = require('commander');
var helpers = require('../helpers');
var table = require('cli-table');
var dateFormat = require('dateFormat');

program
.option('-c, --config <path>', 'set config path [./cloud.json]')
.option('-s, --server <serverId>', 'ServerID to delete')
.parse(process.argv);

var config = program.config;
if (!config) {
config = process.env.HOME+'/pkgcloud-cli.json';
}

if (!program.server) {
console.log('You must specify a serverId to delete');
process.exit(1);
}

helpers.init(config, function(err, cloud) {
cloud.destroyServer(program.server, function(err, response) {
if (err) {
console.log(err);
process.exit(1);
}
if(response && response.ok) {
console.log('Server: '+response.ok+' successfully deleted');
}
else {
console.log(response);
}
});
});


10 changes: 5 additions & 5 deletions bin/pkgcloud-compute-server-list
Expand Up @@ -22,7 +22,7 @@ helpers.init(config, function(err, cloud) {
for (var reg in regions) {
var tbl = new table({
head: ['ID', 'NAME', 'ADDRESS', 'IMAGE', 'FLAVOR', 'STATUS', 'PROGRESS'],
colWidths: [40, 25, 16, 40, 10, 10, 10]
colWidths: [40, 25, 16, 40, 10, 15, 10]
});
console.log('================================');
console.log('Region: '+reg);
Expand All @@ -41,10 +41,10 @@ helpers.init(config, function(err, cloud) {
img.id,
img.name,
address,
img.imageId,
img.flavorId,
img.status,
img.progress
img.imageId || '',
img.flavorId || '',
img.status || 'None',
img.progress || 'None'
];
tbl.push(data);
}
Expand Down

0 comments on commit e1d9c7e

Please sign in to comment.