domotz-remote-pawn
Version:
Domotz Agent
93 lines (82 loc) • 3.14 kB
JavaScript
/** This file is part of Domotz Agent.
* Copyright (C) 2016 Domotz Ltd
*
* Domotz Agent is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Domotz Agent is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Domotz Agent. If not, see <http://www.gnu.org/licenses/>.
**/
/**
* Created by Iacopo Papalini <ipapalini@domotz.com> on 09/04/15.
*
*/
var sendNotificationToUpdater = function (modHttp, unixSocket, content, status, callback, myConsole) {
content = JSON.stringify(content);
var postOptions = {
socketPath: unixSocket,
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': Buffer.byteLength(content),
},
};
var isUpdaterSimulated = 1 === process.env.UPDATER_SIMULATION;
myConsole.info('Sending request to the Agent Updater... (simulated=%s)', isUpdaterSimulated.toString());
var postRequest = modHttp.request(postOptions, function (response) {
if (response.statusCode === 202) {
callback();
if (isUpdaterSimulated === true) {
status.set(status.UPDATING);
}
} else {
callback({ error: 'Unexpected status code ' + response.statusCode });
}
});
postRequest.on('error', function (err) {
var errorMessage = JSON.stringify(err);
myConsole.error('Error on Unix socket request : %s', errorMessage);
callback({ error: errorMessage });
});
postRequest.write(content);
postRequest.end();
};
var updateAgent = function (message, resourceLocator) {
var myConsole = resourceLocator.log.decorateLogs();
var payload = message.payload;
var pkgRegistry = payload.registry_url;
var pkgName = payload.package_name;
var pkgVersion = payload.package_version;
return {
describe: function () {
return 'Update Agent: ' + 'Url: ' + pkgRegistry + ', ' + 'Pkg: ' + pkgName + '. ' + 'Version: ' + pkgVersion;
},
execute: function (callback) {
if (!pkgVersion) {
myConsole.error('Invalid package version');
callback({ error: 'Invalid package version' });
return;
}
sendNotificationToUpdater(
resourceLocator.http,
process.env.DOMOTZ_UPDATER_UNIX_SOCKET,
{
registry: pkgRegistry,
name: pkgName,
version: pkgVersion,
},
resourceLocator.status,
callback,
myConsole
);
},
};
};
module.exports.command = updateAgent;