2016-01-05 12:10:25 +01:00
'use strict' ;
exports = module . exports = {
getIp : getIp
} ;
var assert = require ( 'assert' ) ,
2016-09-02 15:53:51 +02:00
superagent = require ( 'superagent' ) ,
2016-01-05 12:10:25 +01:00
SysInfoError = require ( '../sysinfo.js' ) . SysInfoError ;
function getIp ( callback ) {
assert . strictEqual ( typeof callback , 'function' ) ;
2016-09-02 15:53:51 +02:00
superagent . get ( 'http://169.254.169.254/metadata/v1.json' ) . end ( function ( error , result ) {
if ( error || result . statusCode !== 200 ) {
console . error ( 'Error getting metadata' , error ) ;
return callback ( new SysInfoError ( SysInfoError . INTERNAL _ERROR , 'No IP found' ) ) ;
2016-01-05 12:10:25 +01:00
}
2016-09-02 15:53:51 +02:00
if ( ! result . body . floating _ip || ! result . body . floating _ip . ipv4 || ! result . body . floating _ip . ipv4 . ip _address ) return callback ( new SysInfoError ( SysInfoError . INTERNAL _ERROR , 'No IP found' ) ) ;
callback ( null , result . body . floating _ip . ipv4 . ip _address ) ;
} ) ;
2016-01-05 12:10:25 +01:00
}