From 7f2cd91736640bcd1b1e48b9bc9ca4b8ca135254 Mon Sep 17 00:00:00 2001 From: Railag Date: Tue, 5 Mar 2019 15:11:49 +0300 Subject: [PATCH 1/2] feat(security) security fields (ENG-772) --- .eslintrc.js | 1 + src/schemas/agent.js | 2 + ...0190226111416-add-system-metrics-to-fog.js | 7 --- ...190305142715-add-security-status-fields.js | 44 +++++++++++++++++++ src/sequelize/models/fog.js | 10 +++++ src/services/agent-service.js | 2 + 6 files changed, 59 insertions(+), 7 deletions(-) create mode 100644 src/sequelize/migrations/20190305142715-add-security-status-fields.js diff --git a/.eslintrc.js b/.eslintrc.js index 5dbe0044b..f442b01f9 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -8,6 +8,7 @@ module.exports = { 'extends': 'google', 'rules': { + "linebreak-style": 0, 'require-jsdoc': [OFF, { 'require': { 'FunctionDeclaration': true, diff --git a/src/schemas/agent.js b/src/schemas/agent.js index 256471ef6..a3107386e 100644 --- a/src/schemas/agent.js +++ b/src/schemas/agent.js @@ -75,6 +75,8 @@ const updateAgentStatus = { 'systemAvailableDisk': {'type': 'integer'}, 'systemAvailableMemory': {'type': 'integer'}, 'systemTotalCpu': {'type': 'number'}, + 'securityStatus': {'type': 'string'}, + 'securityViolationInfo': {'type': 'string'}, 'microserviceStatus': {'type': 'string'}, 'repositoryCount': {'type': 'integer', 'minimum': 0}, 'repositoryStatus': {'type': 'string'}, diff --git a/src/sequelize/migrations/20190226111416-add-system-metrics-to-fog.js b/src/sequelize/migrations/20190226111416-add-system-metrics-to-fog.js index a9b58b0ea..0d1543c42 100644 --- a/src/sequelize/migrations/20190226111416-add-system-metrics-to-fog.js +++ b/src/sequelize/migrations/20190226111416-add-system-metrics-to-fog.js @@ -16,13 +16,6 @@ module.exports = { }, down: (queryInterface, Sequelize) => { - /* - Add reverting commands here. - Return a promise to correctly handle asynchronicity. - - Example: - return queryInterface.dropTable('users'); - */ return queryInterface.removeColumn('Fogs', 'system-available-memory') .then(() => { return queryInterface.removeColumn('Fogs', 'system-available-disk') diff --git a/src/sequelize/migrations/20190305142715-add-security-status-fields.js b/src/sequelize/migrations/20190305142715-add-security-status-fields.js new file mode 100644 index 000000000..7b752e34d --- /dev/null +++ b/src/sequelize/migrations/20190305142715-add-security-status-fields.js @@ -0,0 +1,44 @@ +'use strict' + +module.exports = { + up: (queryInterface, Sequelize) => { + return queryInterface.addColumn('Fogs', + 'security_status', Sequelize.TEXT + ).then(() => { + return queryInterface.addColumn('Fogs', + 'security_violation_info', Sequelize.TEXT + ) + }) + }, + + down: (queryInterface, Sequelize) => { + return queryInterface.removeColumn('Fogs', 'security_status') + .then(() => { + return queryInterface.removeColumn('Fogs', 'security_violation_info') + }) + // restore constraints. Because Sequelize has problem with Sqlite constraints + .then(() => { + return queryInterface.addConstraint('Fogs', ['user_id'], { + type: 'FOREIGN KEY', + name: 'userId', + references: { + name: 'userId', + table: 'Users', + field: 'id', + }, + onDelete: 'cascade', + }) + }).then(() => { + return queryInterface.addConstraint('Fogs', ['fog_type_id'], { + type: 'FOREIGN KEY', + name: 'fogTypeId', + references: { + name: 'fogTypeId', + table: 'FogTypes', + field: 'id', + }, + onDelete: 'set null', + }) + }) + }, +} diff --git a/src/sequelize/models/fog.js b/src/sequelize/models/fog.js index 4d5c4e594..574dd397a 100644 --- a/src/sequelize/models/fog.js +++ b/src/sequelize/models/fog.js @@ -89,6 +89,16 @@ module.exports = (sequelize, DataTypes) => { type: DataTypes.FLOAT, field: 'system-total-cpu', }, + securityStatus: { + type: DataTypes.TEXT, + defaultValue: 'OK', + field: 'security_status', + }, + securityViolationInfo: { + type: DataTypes.TEXT, + defaultValue: 'No violation', + field: 'security_violation_info', + }, catalogItemStatus: { type: DataTypes.TEXT, field: 'catalog_item_status', diff --git a/src/services/agent-service.js b/src/services/agent-service.js index 4712ffb0a..3ab3981f0 100644 --- a/src/services/agent-service.js +++ b/src/services/agent-service.js @@ -193,6 +193,8 @@ const updateAgentStatus = async function(agentStatus, fog, transaction) { systemAvailableDisk: agentStatus.systemAvailableDisk, systemAvailableMemory: agentStatus.systemAvailableMemory, systemTotalCpu: agentStatus.systemTotalCpu, + securityStatus: agentStatus.securityStatus, + securityViolationInfo: agentStatus.securityViolationInfo, repositoryCount: agentStatus.repositoryCount, repositoryStatus: agentStatus.repositoryStatus, systemTime: agentStatus.systemTime, From 69a3fe08d275df96351688c27f7b982d069dee0e Mon Sep 17 00:00:00 2001 From: Railag Date: Tue, 5 Mar 2019 15:33:48 +0300 Subject: [PATCH 2/2] updating unit tests --- test/src/services/agent-service.test.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/test/src/services/agent-service.test.js b/test/src/services/agent-service.test.js index c6b8bb54d..7b29c2e8e 100644 --- a/test/src/services/agent-service.test.js +++ b/test/src/services/agent-service.test.js @@ -520,6 +520,8 @@ describe('Agent Service', () => { systemAvailableDisk: 1, systemAvailableMemory: 1, systemTotalCpu: 1.1, + securityStatus: 'OK', + securityViolationInfo: '', repositoryCount: 5, repositoryStatus: 'testStatus', systemTime: 15325235253, @@ -549,6 +551,8 @@ describe('Agent Service', () => { systemAvailableDisk: 1, systemAvailableMemory: 1, systemTotalCpu: 1.1, + securityStatus: 'OK', + securityViolationInfo: '', repositoryCount: 5, repositoryStatus: 'testStatus', systemTime: 15325235253,