From b88c78e3cf2bef22aa2f1c4d0bf305e303bc15f0 Mon Sep 17 00:00:00 2001 From: Koren Lev Date: Thu, 27 Jul 2017 16:42:15 +0300 Subject: adding calipso ui Change-Id: Ifa6f63daebb07f45580f747341960e898fdb00c4 Signed-off-by: Koren Lev --- ui/imports/api/scheduled-scans/scheduled-scans.js | 91 +++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 ui/imports/api/scheduled-scans/scheduled-scans.js (limited to 'ui/imports/api/scheduled-scans/scheduled-scans.js') diff --git a/ui/imports/api/scheduled-scans/scheduled-scans.js b/ui/imports/api/scheduled-scans/scheduled-scans.js new file mode 100644 index 0000000..66ae5d1 --- /dev/null +++ b/ui/imports/api/scheduled-scans/scheduled-scans.js @@ -0,0 +1,91 @@ +///////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2017 Koren Lev (Cisco Systems), Yaron Yogev (Cisco Systems) and others / +// / +// All rights reserved. This program and the accompanying materials / +// are made available under the terms of the Apache License, Version 2.0 / +// which accompanies this distribution, and is available at / +// http://www.apache.org/licenses/LICENSE-2.0 / +///////////////////////////////////////////////////////////////////////////////////////// +import { Mongo } from 'meteor/mongo'; +import { SimpleSchema } from 'meteor/aldeed:simple-schema'; +import { Constants } from '/imports/api/constants/constants'; +import * as R from 'ramda'; + +export const ScheduledScans = new Mongo.Collection('scheduled_scans', { idGeneration: 'MONGO' }); + +export const scansOnlyFields = ['scan_only_inventory', 'scan_only_links', 'scan_only_cliques']; + +let schema = new SimpleSchema({ + _id: { type: { _str: { type: String, regEx: SimpleSchema.RegEx.Id } } }, + environment: { + type: String + }, + object_id: { + type: String, + optional: true, + }, + log_level: { + type: String, + defaultValue: 'warning', + custom: function () { + let that = this; + let logLevels = Constants.findOne({ name: 'log_levels' }).data; + + if (R.isNil(R.find(R.propEq('value', that.value), logLevels))) { + return 'notAllowed'; + } + }, + }, + clear: { + type: Boolean, + defaultValue: true, + }, + scan_only_inventory: { + type: Boolean, + defaultValue: true, + }, + scan_only_links: { + type: Boolean, + defaultValue: false, + }, + scan_only_cliques: { + type: Boolean, + defaultValue: false, + }, + freq: { + type: String, + defaultValue: 'WEEKLY', + }, + submit_timestamp: { + type: Date, + defaultValue: null + }, + scheduled_timestamp: { + type: Date, + defaultValue: null, + optional: true, + } +}); + +schema.addValidator(function () { + let that = this; + let currentScansOnlyFields = + R.reject( f => that.field(f).value == false, scansOnlyFields); + + if(currentScansOnlyFields.length > 1) { + throw { + isError: true, + type: 'conflict', + data: currentScansOnlyFields, + message: `Only one of the scan only fields can be selected. ${R.toString(currentScansOnlyFields)}` + }; + } +}); + +ScheduledScans.schema = schema; +ScheduledScans.attachSchema(ScheduledScans.schema); + +export const subsScheduledScansPageAmountSorted = 'scheduled_scans?page&amount&sortField&sortDirection'; +export const subsScheduledScansPageAmountSortedCounter = `${subsScheduledScansPageAmountSorted}!counter`; + +export const subsScheduledScansId = 'scheduled_scans?_id'; -- cgit 1.2.3-korg