///////////////////////////////////////////////////////////////////////////////////////// // 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 * as R from 'ramda'; import { Statistics } from './statistics'; import { createGraphQuerySchema } from './helpers'; Meteor.methods({ 'statistics.flowTypes?env&object_id&type'({ env, object_id, type}) { console.log('subscribe: statistics.flowTypes?env&object_id&type'); console.log(`- env: ${env}`); console.log(`- object_id: ${object_id}`); console.log(`- type: ${type}`); let pipeline = [{ $match: { environment: env, object_id: object_id, type: type } }, { $group: { _id: { flowType: '$flowType' }, flowType: { $first: '$flowType' } } }]; return Statistics.aggregate(pipeline); }, 'statistics.srcMacAddresses?env&object_id&type&flowType'( { env, object_id, type, flowType }) { let pipeline = [{ $match: { environment: env, object_id: object_id, type: type, flowType: flowType } }, { $group: { _id: { sourceMacAddress: '$sourceMacAddress' }, sourceMacAddress: { $first: '$sourceMacAddress' } } }]; return Statistics.aggregate(pipeline); }, 'statistics.dstMacAddresses?env&object_id&type&flowType'( { env, object_id, type, flowType }) { let pipeline = [{ $match: { environment: env, object_id: object_id, type: type, flowType: flowType } }, { $group: { _id: { destinationMacAddress: '$destinationMacAddress' }, destinationMacAddress: { $first: '$destinationMacAddress' } } }]; return Statistics.aggregate(pipeline); }, 'statistics.srcIPv4Addresses?env&object_id&type&flow_typw'( { env, object_id, type, flowType }) { let pipeline = [{ $match: { environment: env, object_id: object_id, type: type, flowType: flowType } }, { $group: { _id: { sourceIPv4Address: '$sourceIPv4Address' }, sourceIPv4Address: { $first: '$sourceIPv4Address' } } }]; return Statistics.aggregate(pipeline); }, 'statistics.dstIPv4Addresses?env&object_id&type&flowType'( { env, object_id, type, flowType }) { let pipeline = [{ $match: { environment: env, object_id: object_id, type: type, flowType: flowType } }, { $group: { _id: { destinationIPv4Address: '$destinationIPv4Addres' }, destinationIPv4Address: { $first: '$destinationIPv4Addres' } } }]; return Statistics.aggregate(pipeline); }, 'statistics!graph-frames'({ env, object_id, type, flowType, timeStart, timeEnd, sourceMacAddress, destinationMacAddress, sourceIPv4Address, destinationIPv4Address }) { let schema = createGraphQuerySchema( env, object_id, type, flowType, timeStart, timeEnd, sourceMacAddress, destinationMacAddress, sourceIPv4Address, destinationIPv4Address); console.log('statistics!graph-frames'); console.log(`- env: ${env}`); console.log(`- object_id: ${object_id}`); console.log(`- type: ${type}`); console.log(`- flowType: ${flowType}`); console.log(`- timeStart: ${timeStart}`); console.log(`- timeEnd: ${timeEnd}`); console.log(`- sourceMacAddress: ${sourceMacAddress}`); console.log(`- destinationMacAddress: ${destinationMacAddress}`); console.log(`- sourceIPv4Address: ${sourceIPv4Address}`); console.log(`- destinationIPv4Address: ${destinationIPv4Address}`); //let data = Statistics.find(schema).fetch(); let data = Statistics.findOne(schema); console.log(`- averageArrivalNanoSeconds: ${R.path([0, 'averageArrivalNanoSeconds'], data)}`); return data; } });