85 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			85 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | /* | ||
|  |  * Copyright 2015 Joyent Inc. | ||
|  |  * | ||
|  |  * `triton network ...` | ||
|  |  */ | ||
|  | 
 | ||
|  | var common = require('./common'); | ||
|  | 
 | ||
|  | function do_network(subcmd, opts, args, cb) { | ||
|  |     if (opts.help) { | ||
|  |         this.do_help('help', {}, [subcmd], cb); | ||
|  |         return; | ||
|  |     } else if (args.length !== 1) { | ||
|  |         cb(new Error('invalid args: ' + args)); | ||
|  |         return; | ||
|  |     } | ||
|  | 
 | ||
|  |     var id = args[0]; | ||
|  | 
 | ||
|  |     if (common.isUUID(id)) { | ||
|  |         this.triton.cloudapi.getNetwork(id, done); | ||
|  |     } else { | ||
|  |         // we have to list all networks and find the one pertaining
 | ||
|  |         // to the alias given
 | ||
|  |         this.triton.cloudapi.listNetworks(function (err, networks) { | ||
|  |             if (err) { | ||
|  |                 done(err); | ||
|  |                 return; | ||
|  |             } | ||
|  | 
 | ||
|  |             var net; | ||
|  |             // try to find the network
 | ||
|  |             networks.forEach(function (network) { | ||
|  |                 if (network.name === id) | ||
|  |                     net = network; | ||
|  |             }); | ||
|  | 
 | ||
|  |             if (net) { | ||
|  |                 // found!
 | ||
|  |                 done(null, net); | ||
|  |             } else { | ||
|  |                 // not found
 | ||
|  |                 done(new Error('network ' + id + ' not found')); | ||
|  |             } | ||
|  |         }); | ||
|  |     } | ||
|  | 
 | ||
|  |     function done(err, network) { | ||
|  |         if (err) { | ||
|  |             cb(err); | ||
|  |             return; | ||
|  |         } | ||
|  | 
 | ||
|  |         if (opts.json) { | ||
|  |             console.log(JSON.stringify(network)); | ||
|  |         } else { | ||
|  |             console.log(JSON.stringify(network, null, 4)); | ||
|  |         } | ||
|  |         cb(); | ||
|  |     } | ||
|  | } | ||
|  | 
 | ||
|  | do_network.options = [ | ||
|  |     { | ||
|  |         names: ['help', 'h'], | ||
|  |         type: 'bool', | ||
|  |         help: 'Show this help.' | ||
|  |     }, | ||
|  |     { | ||
|  |         names: ['json', 'j'], | ||
|  |         type: 'bool', | ||
|  |         help: 'JSON output.' | ||
|  |     } | ||
|  | ]; | ||
|  | do_network.help = ( | ||
|  |     'Show a network.\n' | ||
|  |     + '\n' | ||
|  |     + 'Usage:\n' | ||
|  |     + '     {{name}} network <id>\n' | ||
|  |     + '\n' | ||
|  |     + '{{options}}' | ||
|  | ); | ||
|  | 
 | ||
|  | module.exports = do_network; |