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/environments/methods.js | 154 +++++++++++++++++++++++++++++++++ 1 file changed, 154 insertions(+) create mode 100644 ui/imports/api/environments/methods.js (limited to 'ui/imports/api/environments/methods.js') diff --git a/ui/imports/api/environments/methods.js b/ui/imports/api/environments/methods.js new file mode 100644 index 0000000..22a1e8b --- /dev/null +++ b/ui/imports/api/environments/methods.js @@ -0,0 +1,154 @@ +///////////////////////////////////////////////////////////////////////////////////////// +// 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 { Meteor } from 'meteor/meteor'; +import * as R from 'ramda'; +import { ValidatedMethod } from 'meteor/mdg:validated-method'; + +//import { SimpleSchema } from 'meteor/aldeed:simple-schema'; + +import { Environments } from './environments'; +import { Inventory } from '/imports/api/inventories/inventories'; +import { Links } from '/imports/api/links/links'; +import { Cliques } from '/imports/api/cliques/cliques'; +import { CliqueTypes } from '/imports/api/clique-types/clique-types'; +import { Messages } from '/imports/api/messages/messages'; +import { Scans } from '/imports/api/scans/scans'; +import { Roles } from 'meteor/alanning:roles'; + +export const insert = new ValidatedMethod({ + name: 'environments.insert', + validate: Environments.simpleSchema() + .pick([ + 'configuration', + 'configuration.$', + 'distribution', + 'name', + 'type_drivers', + 'mechanism_drivers', + 'mechanism_drivers.$', + 'listen', + 'enable_monitoring', + 'aci', + ]).validator({ clean: true, filter: false }), + //validate: null, + run({ + configuration, + distribution, + name, + type_drivers, + mechanism_drivers, + listen, + enable_monitoring, + aci, + }) { + // todo: create clean object instance. + let environment = Environments.schema.clean({ + user: Meteor.userId() + }); + + let auth = { + 'view-env': [ + Meteor.userId() + ], + 'edit-env': [ + Meteor.userId() + ] + }; + + environment = R.merge(environment, { + configuration, + distribution, + name, + type_drivers, + mechanism_drivers, + listen, + enable_monitoring, + auth, + aci, + }); + + Environments.insert(environment); + }, +}); + +export const update = new ValidatedMethod({ + name: 'environments.update', + validate: Environments.simpleSchema().pick([ + '_id', + 'configuration', + 'configuration.$', + //'distribution', + //'name', + 'type_drivers', + 'mechanism_drivers', + 'mechanism_drivers.$', + 'listen', + 'enable_monitoring', + 'aci', + ]).validator({ clean: true, filter: false }), + run({ + _id, + configuration, + //distribution, + //name, + type_drivers, + mechanism_drivers, + listen, + enable_monitoring, + aci, + }) { + let env = Environments.findOne({ _id: _id }); + + if (! Roles.userIsInRole(Meteor.userId(), 'edit-env', 'default-group')) { + if (! R.contains(Meteor.userId(), R.path(['auth', 'edit-env'], env) )) { + throw new Meteor.Error('not-auth', 'unauthorized for updating env'); + } + } + + Environments.update(_id, { + $set: { + configuration: configuration, + //distribution: distribution, + //name: name, + type_drivers, + mechanism_drivers, + listen, + enable_monitoring, + aci, + }, + }); + } +}); + +export const remove = new ValidatedMethod({ + name: 'environments.remove', + validate: Environments.simpleSchema().pick([ + '_id', + ]).validator({ clean: true, filter: false }), + run({ + _id, + }) { + const env = Environments.findOne({ _id: _id }); + console.log('environment for remove: ', env); + + if (! Roles.userIsInRole(Meteor.userId(), 'edit-env', 'default-group')) { + if (! R.contains(Meteor.userId(), R.path(['auth', 'edit-env'], env) )) { + throw new Meteor.Error('not-auth', 'unauthorized for updating env'); + } + } + + Inventory.remove({ environment: env.name }); + Links.remove({ environment: env.name }); + Cliques.remove({ environment: env.name }); + CliqueTypes.remove({ environment: env.name }); + Messages.remove({ environment: env.name }); + Scans.remove({ environment: env.name }); + Environments.remove({ _id: _id }); + } +}); -- cgit 1.2.3-korg