diff --git a/admin/js/main.js b/admin/js/main.js
index e5aebfb..488b077 100644
--- a/admin/js/main.js
+++ b/admin/js/main.js
@@ -112,6 +112,7 @@ angular.module('ffffngAdmin').config(function(NgAdminConfigurationProvider, Rest
? ''
: '';
}),
+ nga.field('site').map(nullable).cssClasses(nodeClasses),
nga.field('coords').label('GPS').cssClasses(nodeClasses).template(function (node) {
return node.values.coords
? ''
@@ -238,6 +239,7 @@ angular.module('ffffngAdmin').config(function(NgAdminConfigurationProvider, Rest
nga.field('id').cssClasses(monitoringStateClasses),
nga.field('hostname').cssClasses(monitoringStateClasses),
nga.field('mac').cssClasses(monitoringStateClasses),
+ nga.field('site').map(nullable).cssClasses(monitoringStateClasses),
nga.field('monitoring_state').cssClasses(monitoringStateClasses).template(function (monitoringState) {
switch (monitoringState.values.monitoring_state) {
case 'active':
diff --git a/server/db/patches/006_add_site.sql b/server/db/patches/006_add_site.sql
new file mode 100644
index 0000000..380f96a
--- /dev/null
+++ b/server/db/patches/006_add_site.sql
@@ -0,0 +1 @@
+ALTER TABLE node_state ADD COLUMN site VARCHAR(32);
diff --git a/server/resources/nodeResource.js b/server/resources/nodeResource.js
index a2b6898..ed70680 100644
--- a/server/resources/nodeResource.js
+++ b/server/resources/nodeResource.js
@@ -127,6 +127,7 @@ angular.module('ffffng').factory('NodeResource', function (
var nodeState = nodeStateByMac[node.mac];
if (nodeState) {
return deepExtend({}, node, {
+ site: nodeState.site,
onlineState: nodeState.state
});
}
diff --git a/server/services/monitoringService.js b/server/services/monitoringService.js
index 9d460f4..bffeb02 100644
--- a/server/services/monitoringService.js
+++ b/server/services/monitoringService.js
@@ -44,11 +44,12 @@ angular.module('ffffng')
return Database.run(
'INSERT INTO node_state ' +
- '(hostname, mac, monitoring_state, state, last_seen, import_timestamp, last_status_mail_sent, last_status_mail_type) ' +
- 'VALUES (?, ?, ?, ?, ?, ?, ?, ?)',
+ '(hostname, mac, site, monitoring_state, state, last_seen, import_timestamp, last_status_mail_sent, last_status_mail_type) ' +
+ 'VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)',
[
node.hostname,
node.mac,
+ node.site,
node.monitoringState,
nodeData.state,
nodeData.lastSeen.unix(),
@@ -80,10 +81,18 @@ angular.module('ffffng')
return Database.run(
'UPDATE node_state ' +
- 'SET hostname = ?, monitoring_state = ?, state = ?, last_seen = ?, import_timestamp = ?, modified_at = ?' +
+ 'SET ' +
+ 'hostname = ?, ' +
+ 'site = ?, ' +
+ 'monitoring_state = ?, ' +
+ 'state = ?, ' +
+ 'last_seen = ?, ' +
+ 'import_timestamp = ?, ' +
+ 'modified_at = ? ' +
'WHERE id = ? AND mac = ?',
[
node.hostname,
+ node.site,
node.monitoringState,
nodeData.state,
nodeData.lastSeen.unix(),
@@ -201,11 +210,17 @@ angular.module('ffffng')
);
}
+ var site = null;
+ if (_.isPlainObject(nodeData.nodeinfo.system) && _.isString(nodeData.nodeinfo.system.site_code)) {
+ site = nodeData.nodeinfo.system.site_code;
+ }
+
return {
mac: mac,
importTimestamp: data.importTimestamp,
state: isOnline ? 'ONLINE' : 'OFFLINE',
- lastSeen: lastSeen
+ lastSeen: lastSeen,
+ site: site
};
}));
}
@@ -533,6 +548,7 @@ angular.module('ffffng')
'id',
'hostname',
'mac',
+ 'site',
'monitoring_state',
'state',
'last_seen',