fog-controller
Version:
Fog Controller project @ iotracks.com
302 lines (282 loc) • 7.47 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _sequelize = require('sequelize');
var _sequelize2 = _interopRequireDefault(_sequelize);
var _sequelize3 = require('./../utils/sequelize');
var _sequelize4 = _interopRequireDefault(_sequelize3);
var _registry = require('./../models/registry');
var _registry2 = _interopRequireDefault(_registry);
var _fogProvisionKey = require('./fogProvisionKey');
var _fogProvisionKey2 = _interopRequireDefault(_fogProvisionKey);
var _changeTracking = require('./changeTracking');
var _changeTracking2 = _interopRequireDefault(_changeTracking);
var _fogType = require('./fogType');
var _fogType2 = _interopRequireDefault(_fogType);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* @file fog.js
* @author Zishan Iqbal
* @description This file includes a iofogs model used by sequalize for ORM;
*/
var Fog = _sequelize4.default.define('iofogs', {
uuid: {
type: _sequelize2.default.TEXT,
primaryKey: true,
field: 'UUID'
},
name: {
type: _sequelize2.default.TEXT,
defaultValue: "Unnamed ioFog 1",
field: 'Name'
},
location: {
type: _sequelize2.default.TEXT,
field: 'Location'
},
gpsmode: {
type: _sequelize2.default.TEXT,
field: 'GpsMode'
},
latitude: {
type: _sequelize2.default.TEXT,
field: 'Latitude'
},
longitude: {
type: _sequelize2.default.TEXT,
field: 'Longitude'
},
description: {
type: _sequelize2.default.TEXT,
field: 'Description'
},
lastactive: {
type: _sequelize2.default.BIGINT,
field: 'LastActive'
},
token: {
type: _sequelize2.default.TEXT,
field: 'Token'
},
daemonstatus: {
type: _sequelize2.default.TEXT,
defaultValue: "UNKNOWN",
field: 'DaemonStatus'
},
daemonoperatingduration: {
type: _sequelize2.default.BIGINT,
defaultValue: 0,
field: 'DaemonOperatingDuration'
},
daemonlaststart: {
type: _sequelize2.default.BIGINT,
field: 'DaemonLastStart'
},
memoryusage: {
type: _sequelize2.default.FLOAT,
defaultValue: 0.000,
field: 'MemoryUsage'
},
diskusage: {
type: _sequelize2.default.FLOAT,
defaultValue: 0.000,
field: 'DiskUsage'
},
cpuusage: {
type: _sequelize2.default.FLOAT,
defaultValue: 0.00,
field: 'CPUUsage'
},
memoryviolation: {
type: _sequelize2.default.TEXT,
field: 'MemoryViolation'
},
diskviolation: {
type: _sequelize2.default.TEXT,
field: 'DiskViolation'
},
cpuviolation: {
type: _sequelize2.default.TEXT,
field: 'CPUViolation'
},
elementstatus: {
type: _sequelize2.default.TEXT,
field: 'ElementStatus'
},
repositorycount: {
type: _sequelize2.default.BIGINT,
field: 'RepositoryCount'
},
repositorystatus: {
type: _sequelize2.default.TEXT,
field: 'RepositoryStatus'
},
systemtime: {
type: _sequelize2.default.BIGINT,
field: 'SystemTime'
},
laststatustime: {
type: _sequelize2.default.BIGINT,
field: 'LastStatusTime'
},
ipaddress: {
type: _sequelize2.default.TEXT,
defaultValue: "0.0.0.0",
field: 'IPAddress'
},
processedmessages: {
type: _sequelize2.default.BIGINT,
defaultValue: 0,
field: 'ProcessedMessages'
},
elementmessagecounts: {
type: _sequelize2.default.TEXT,
field: 'ElementMessageCounts'
},
messagespeed: {
type: _sequelize2.default.BIGINT,
field: 'MessageSpeed'
},
lastcommandtime: {
type: _sequelize2.default.BIGINT,
field: 'LastCommandTime'
},
networkinterface: {
type: _sequelize2.default.TEXT,
defaultValue: "eth0",
field: 'NetworkInterface'
},
dockerurl: {
type: _sequelize2.default.TEXT,
defaultValue: "unix:///var/run/docker.sock",
field: 'DockerURL'
},
disklimit: {
type: _sequelize2.default.FLOAT,
defaultValue: 50,
field: 'DiskLimit'
},
diskdirectory: {
type: _sequelize2.default.TEXT,
defaultValue: '/var/lib/iofog/',
field: 'DiskDirectory'
},
memorylimit: {
type: _sequelize2.default.FLOAT,
defaultValue: 4096,
field: 'MemoryLimit'
},
cpulimit: {
type: _sequelize2.default.FLOAT,
defaultValue: 80,
field: 'CPULimit'
},
loglimit: {
type: _sequelize2.default.FLOAT,
defaultValue: 10,
field: 'LogLimit'
},
logdirectory: {
type: _sequelize2.default.TEXT,
defaultValue: "/var/log/iofog/",
field: 'LogDirectory'
},
debug: {
type: _sequelize2.default.INTEGER,
defaultValue: 0,
field: 'Debug'
},
viewer: {
type: _sequelize2.default.INTEGER,
defaultValue: 0,
field: 'Viewer'
},
bluetooth: {
type: _sequelize2.default.INTEGER,
defaultValue: 0,
field: 'Bluetooth'
},
hal: {
type: _sequelize2.default.INTEGER,
defaultValue: 0,
field: 'hal'
},
mongo: {
type: _sequelize2.default.INTEGER,
defaultValue: 0,
field: 'mongo'
},
influx: {
type: _sequelize2.default.INTEGER,
defaultValue: 0,
field: 'influx'
},
grafana: {
type: _sequelize2.default.INTEGER,
defaultValue: 0,
field: 'grafana'
},
logfilecount: {
type: _sequelize2.default.BIGINT,
defaultValue: 10,
field: 'LogFileCount'
},
version: {
type: _sequelize2.default.TEXT,
field: 'Version'
},
isReadyToUpgrade: {
type: _sequelize2.default.INTEGER,
defaultValue: 1,
field: "isReadyToUpgrade"
},
isReadyToRollback: {
type: _sequelize2.default.INTEGER,
defaultValue: 0,
field: "isReadyToRollback"
},
statusfrequency: {
type: _sequelize2.default.INTEGER,
defaultValue: 10,
field: 'StatusFrequency'
},
changefrequency: {
type: _sequelize2.default.INTEGER,
defaultValue: 20,
field: 'ChangeFrequency'
},
scanfrequency: {
type: _sequelize2.default.INTEGER,
defaultValue: 20,
field: 'ScanFrequency'
},
proxy: {
type: _sequelize2.default.TEXT,
defaultValue: "",
field: 'Proxy'
},
isolateddockercontainer: {
type: _sequelize2.default.INTEGER,
defaultValue: 1,
field: 'IsolatedDockerContainer'
}
}, {
// don't add the timestamp attributes (updatedAt, createdAt)
timestamps: true,
// disable the modification of table names
freezeTableName: true,
// don't use camelcase for automatically added attributes but underscore style
// so updatedAt will be updated_at
underscored: true
});
_registry2.default.belongsTo(Fog, {
foreignKey: 'iofog_uuid'
});
_fogProvisionKey2.default.belongsTo(Fog, {
foreignKey: 'iofog_uuid'
});
Fog.belongsTo(_fogType2.default, {
foreignKey: 'typeKey'
});
exports.default = Fog;