diff options
author | lj1412 <lji@research.att.com> | 2017-02-14 15:10:48 +0000 |
---|---|---|
committer | lj1412 <lji@research.att.com> | 2017-02-14 15:10:50 +0000 |
commit | e27500a2d72e152490d6786d3a6d90f8d2ba973f (patch) | |
tree | f8088c05a15ec4404c7b707902bab083d5fe2671 /dcae-analytics-tca | |
parent | 6348522233134b69dc455949d80b11e3bcd2fce7 (diff) |
Init dcae.apod.analytics
Change-Id: Ie62128895a199633d0afa695749d40c940d804b2
Signed-off-by: lj1412 <lji@research.att.com>
Diffstat (limited to 'dcae-analytics-tca')
53 files changed, 19247 insertions, 0 deletions
diff --git a/dcae-analytics-tca/pom.xml b/dcae-analytics-tca/pom.xml new file mode 100644 index 0000000..27475a1 --- /dev/null +++ b/dcae-analytics-tca/pom.xml @@ -0,0 +1,127 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ ============LICENSE_START========================================================= + ~ dcae-analytics + ~ ================================================================================ + ~ Copyright © 2017 AT&T Intellectual Property. All rights reserved. + ~ ================================================================================ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + ~ ================================================================================ + ~ ECOMP and OpenECOMP are trademarks and service marks of AT&T Intellectual Property. + ~ ============LICENSE_END========================================================= + --> + +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.openecomp.dcae.analytics</groupId> + <artifactId>dcae-analytics</artifactId> + <version>1.0-SNAPSHOT</version> + <relativePath>../pom.xml</relativePath> + </parent> + + <artifactId>dcae-analytics-tca</artifactId> + <packaging>jar</packaging> + + <!-- THIS MODULE CONTAINS CODE FOR TCA (THRESHOLD CROSSING ALERT) --> + <name>DCAE Analytics TCA</name> + <description>DCAE Analytics TCA (THRESHOLD CROSSING ALERT)</description> + + <properties> + <main.basedir>${project.parent.basedir}</main.basedir> + <app.main.class>org.openecomp.dcae.analytics.tca.TCAAnalyticsApplication</app.main.class> + </properties> + + <dependencies> + + <!-- DCAE DEPENDENCIES --> + <dependency> + <groupId>org.openecomp.dcae.analytics</groupId> + <artifactId>dcae-analytics-common</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.openecomp.dcae.analytics</groupId> + <artifactId>dcae-analytics-dmaap</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + + <!-- CASK --> + <dependency> + <groupId>co.cask.http</groupId> + <artifactId>netty-http</artifactId> + </dependency> + <dependency> + <groupId>co.cask.common</groupId> + <artifactId>common-http</artifactId> + </dependency> + + <!-- HADOOP --> + <dependency> + <groupId>org.apache.hadoop</groupId> + <artifactId>hadoop-mapreduce-client-core</artifactId> + </dependency> + <dependency> + <groupId>org.apache.hadoop</groupId> + <artifactId>hadoop-common</artifactId> + </dependency> + + <!-- SCHEDULER --> + <dependency> + <groupId>org.quartz-scheduler</groupId> + <artifactId>quartz</artifactId> + </dependency> + + <!-- UTILITIES --> + <dependency> + <groupId>com.google.code.findbugs</groupId> + <artifactId>jsr305</artifactId> + </dependency> + <dependency> + <groupId>com.google.code.findbugs</groupId> + <artifactId>annotations</artifactId> + </dependency> + + <!-- TEST DEPENDENCIES --> + <dependency> + <groupId>org.openecomp.dcae.analytics</groupId> + <artifactId>dcae-analytics-test</artifactId> + <version>1.0-SNAPSHOT</version> + <scope>test</scope> + </dependency> + + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <configuration> + <archive> + <manifest> + <mainClass>${app.main.class}</mainClass> + </manifest> + </archive> + </configuration> + </plugin> + </plugins> + </build> + + +</project> diff --git a/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/TCAAnalyticsApplication.java b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/TCAAnalyticsApplication.java new file mode 100644 index 0000000..655ddca --- /dev/null +++ b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/TCAAnalyticsApplication.java @@ -0,0 +1,105 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca; + +import co.cask.cdap.api.app.AbstractApplication; +import co.cask.cdap.api.data.stream.Stream; +import co.cask.cdap.api.dataset.DatasetProperties; +import co.cask.cdap.api.dataset.lib.ObjectMappedTable; +import org.openecomp.dcae.analytics.common.utils.ValidationUtils; +import org.openecomp.dcae.analytics.tca.flow.TCAVESCollectorFlow; +import org.openecomp.dcae.analytics.tca.persistance.TCAMessageStatusPersister; +import org.openecomp.dcae.analytics.tca.persistance.TCAVESAlertsPersister; +import org.openecomp.dcae.analytics.tca.settings.TCAAppConfig; +import org.openecomp.dcae.analytics.tca.validator.TCAAppConfigValidator; +import org.openecomp.dcae.analytics.tca.worker.TCADMaaPMockSubscriberWorker; +import org.openecomp.dcae.analytics.tca.worker.TCADMaaPPublisherWorker; +import org.openecomp.dcae.analytics.tca.worker.TCADMaaPSubscriberWorker; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import static org.openecomp.dcae.analytics.common.CDAPComponentsConstants.TCA_FIXED_SUBSCRIBER_OUTPUT_DESCRIPTION_STREAM; + +/** + * @author Rajiv Singla. Creation Date: 10/21/2016. + */ +public class TCAAnalyticsApplication extends AbstractApplication<TCAAppConfig> { + + private static final Logger LOG = LoggerFactory.getLogger(TCAAnalyticsApplication.class); + + @Override + public void configure() { + + + // ========= Application configuration Setup ============== // + final TCAAppConfig tcaAppConfig = getConfig(); + + LOG.info("Configuring TCA Application with startup application configuration: {}", tcaAppConfig); + + // Validate application configuration + ValidationUtils.validateSettings(tcaAppConfig, new TCAAppConfigValidator()); + + // App Setup + setName(tcaAppConfig.getAppName()); + setDescription(tcaAppConfig.getAppDescription()); + + // ========== Streams Setup ============== // + // Create DMaaP MR Subscriber CDAP output stream + final String tcaSubscriberOutputStreamName = tcaAppConfig.getTcaSubscriberOutputStreamName(); + LOG.info("Creating TCA VES Output Stream: {}", tcaSubscriberOutputStreamName); + final Stream subscriberOutputStream = + new Stream(tcaSubscriberOutputStreamName, TCA_FIXED_SUBSCRIBER_OUTPUT_DESCRIPTION_STREAM); + addStream(subscriberOutputStream); + + + // ============ Datasets Setup ======== // + // Create TCA Message Status Table + final String tcaVESMessageStatusTableName = tcaAppConfig.getTcaVESMessageStatusTableName(); + final Integer messageStatusTableTTLSeconds = tcaAppConfig.getTcaVESMessageStatusTableTTLSeconds(); + LOG.info("Creating TCA Message Status Table: {} with TTL: {}", + tcaVESMessageStatusTableName, messageStatusTableTTLSeconds); + final DatasetProperties messageStatusTableProperties = + TCAMessageStatusPersister.getDatasetProperties(messageStatusTableTTLSeconds); + createDataset(tcaVESMessageStatusTableName, ObjectMappedTable.class, messageStatusTableProperties); + + // Create TCA VES Alerts Table + final String tcaVESAlertsTableName = tcaAppConfig.getTcaVESAlertsTableName(); + final Integer alertsTableTTLSeconds = tcaAppConfig.getTcaVESAlertsTableTTLSeconds(); + LOG.info("Creating TCA Alerts Table: {} with TTL: {}", + tcaVESAlertsTableName, alertsTableTTLSeconds); + final DatasetProperties alertTableProperties = + TCAVESAlertsPersister.getDatasetProperties(alertsTableTTLSeconds); + createDataset(tcaVESAlertsTableName, ObjectMappedTable.class, alertTableProperties); + + // =========== Flow Setup ============= // + addFlow(new TCAVESCollectorFlow(tcaAppConfig)); + + // ========== Workers Setup =========== // + LOG.info("Creating TCA DMaaP Subscriber Worker"); + addWorker(new TCADMaaPSubscriberWorker(tcaAppConfig.getTcaSubscriberOutputStreamName())); + LOG.info("Creating TCA DMaaP Publisher Worker"); + addWorker(new TCADMaaPPublisherWorker(tcaAppConfig.getTcaVESAlertsTableName())); + // TODO: Remove this before going to production + addWorker(new TCADMaaPMockSubscriberWorker(tcaAppConfig.getTcaSubscriberOutputStreamName())); + } + + +} diff --git a/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/flow/TCAVESCollectorFlow.java b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/flow/TCAVESCollectorFlow.java new file mode 100644 index 0000000..33db3c1 --- /dev/null +++ b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/flow/TCAVESCollectorFlow.java @@ -0,0 +1,69 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.flow; + +import co.cask.cdap.api.flow.AbstractFlow; +import org.openecomp.dcae.analytics.common.CDAPComponentsConstants; +import org.openecomp.dcae.analytics.tca.flowlet.TCAVESAlertsSinkFlowlet; +import org.openecomp.dcae.analytics.tca.flowlet.TCAVESMessageRouterFlowlet; +import org.openecomp.dcae.analytics.tca.flowlet.TCAVESThresholdViolationCalculatorFlowlet; +import org.openecomp.dcae.analytics.tca.settings.TCAAppConfig; + +/** + * TCA Flow for VES (Virtual Event Streaming) Collector Flow + * + * @author Rajiv Singla. Creation Date: 11/3/2016. + */ +public class TCAVESCollectorFlow extends AbstractFlow { + + private final TCAAppConfig tcaAppConfig; + + public TCAVESCollectorFlow(TCAAppConfig tcaAppConfig) { + this.tcaAppConfig = tcaAppConfig; + } + + @Override + protected void configure() { + + setName(CDAPComponentsConstants.TCA_FIXED_VES_COLLECTOR_NAME_FLOW); + setDescription(CDAPComponentsConstants.TCA_FIXED_VES_COLLECTOR_DESCRIPTION_FLOW); + + final TCAVESMessageRouterFlowlet messageRouterFlowlet = new TCAVESMessageRouterFlowlet(); + addFlowlet(messageRouterFlowlet); + + final TCAVESThresholdViolationCalculatorFlowlet thresholdViolationCalculatorFlowlet = + new TCAVESThresholdViolationCalculatorFlowlet(tcaAppConfig.getTcaVESMessageStatusTableName()); + addFlowlet(thresholdViolationCalculatorFlowlet, tcaAppConfig.getThresholdCalculatorFlowletInstances()); + + final TCAVESAlertsSinkFlowlet alertsSinkFlowlet = + new TCAVESAlertsSinkFlowlet(tcaAppConfig.getTcaVESAlertsTableName()); + addFlowlet(alertsSinkFlowlet); + + + // connect DMaaP MR VES Subscriber output stream to VES Message Router Flowlet + connectStream(tcaAppConfig.getTcaSubscriberOutputStreamName(), messageRouterFlowlet); + // connect message router to VES threshold calculator + connect(messageRouterFlowlet, thresholdViolationCalculatorFlowlet); + // connect VES threshold calculator flowlet to Alerts Sink Flowlet + connect(thresholdViolationCalculatorFlowlet, alertsSinkFlowlet); + + } +} diff --git a/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/flowlet/TCAVESAlertsSinkFlowlet.java b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/flowlet/TCAVESAlertsSinkFlowlet.java new file mode 100644 index 0000000..597fcd0 --- /dev/null +++ b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/flowlet/TCAVESAlertsSinkFlowlet.java @@ -0,0 +1,69 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.flowlet; + +import co.cask.cdap.api.annotation.ProcessInput; +import co.cask.cdap.api.annotation.Property; +import co.cask.cdap.api.dataset.lib.ObjectMappedTable; +import co.cask.cdap.api.flow.flowlet.AbstractFlowlet; +import co.cask.cdap.api.flow.flowlet.FlowletContext; +import org.openecomp.dcae.analytics.tca.persistance.TCAVESAlertEntity; +import org.openecomp.dcae.analytics.tca.persistance.TCAVESAlertsPersister; + +import static org.openecomp.dcae.analytics.common.CDAPComponentsConstants.TCA_FIXED_VES_ALERTS_SINK_DESCRIPTION_FLOWLET; +import static org.openecomp.dcae.analytics.common.CDAPComponentsConstants.TCA_FIXED_VES_ALERTS_SINK_NAME_FLOWLET; +import static org.openecomp.dcae.analytics.common.CDAPComponentsConstants.TCA_FIXED_VES_TCA_CALCULATOR_NAME_OUTPUT; + +/** + * Saves TCA VES Alert Messages in a Time series Table + * + * @author Rajiv Singla. Creation Date: 11/15/2016. + */ +public class TCAVESAlertsSinkFlowlet extends AbstractFlowlet { + + @Property + private final String tcaVESAlertsTableName; + + private ObjectMappedTable<TCAVESAlertEntity> tcaVESAlertsTable; + + public TCAVESAlertsSinkFlowlet(String tcaVESAlertsTableName) { + this.tcaVESAlertsTableName = tcaVESAlertsTableName; + } + + @Override + public void configure() { + setName(TCA_FIXED_VES_ALERTS_SINK_NAME_FLOWLET); + setDescription(TCA_FIXED_VES_ALERTS_SINK_DESCRIPTION_FLOWLET); + } + + @Override + public void initialize(FlowletContext flowletContext) throws Exception { + super.initialize(flowletContext); + tcaVESAlertsTable = getContext().getDataset(tcaVESAlertsTableName); + } + + @ProcessInput(TCA_FIXED_VES_TCA_CALCULATOR_NAME_OUTPUT) + public void saveAlerts(String alertMessage) { + // Saves alert message in alerts table + TCAVESAlertsPersister.persist(alertMessage, tcaVESAlertsTable); + } + +} diff --git a/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/flowlet/TCAVESMessageRouterFlowlet.java b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/flowlet/TCAVESMessageRouterFlowlet.java new file mode 100644 index 0000000..7ecd917 --- /dev/null +++ b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/flowlet/TCAVESMessageRouterFlowlet.java @@ -0,0 +1,62 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.flowlet; + +import co.cask.cdap.api.annotation.Output; +import co.cask.cdap.api.annotation.ProcessInput; +import co.cask.cdap.api.flow.flowlet.AbstractFlowlet; +import co.cask.cdap.api.flow.flowlet.OutputEmitter; +import co.cask.cdap.api.flow.flowlet.StreamEvent; +import com.google.common.base.Charsets; + +import static org.openecomp.dcae.analytics.common.AnalyticsConstants.TCA_VES_MESSAGE_ROUTER_PARTITION_KEY; +import static org.openecomp.dcae.analytics.common.CDAPComponentsConstants.TCA_FIXED_VES_MESSAGE_ROUTER_DESCRIPTION_FLOWLET; +import static org.openecomp.dcae.analytics.common.CDAPComponentsConstants.TCA_FIXED_VES_MESSAGE_ROUTER_NAME_FLOWLET; +import static org.openecomp.dcae.analytics.common.CDAPComponentsConstants.TCA_FIXED_VES_MESSAGE_ROUTER_OUTPUT; + + +/** + * TCA Message Router Flowlet emits VES Message to {@link TCAVESThresholdViolationCalculatorFlowlet} instances + * + * @author Rajiv Singla. Creation Date: 11/14/2016. + */ +public class TCAVESMessageRouterFlowlet extends AbstractFlowlet { + + /** + * Emits ves message to TCA Calculator Instances + */ + @Output(TCA_FIXED_VES_MESSAGE_ROUTER_OUTPUT) + private OutputEmitter<String> vesMessageEmitter; + + + @Override + public void configure() { + setName(TCA_FIXED_VES_MESSAGE_ROUTER_NAME_FLOWLET); + setDescription(TCA_FIXED_VES_MESSAGE_ROUTER_DESCRIPTION_FLOWLET); + } + + @ProcessInput + public void routeVESMessage(StreamEvent vesMessageStreamEvent) { + final String vesMessage = Charsets.UTF_8.decode(vesMessageStreamEvent.getBody()).toString(); + vesMessageEmitter.emit(vesMessage, TCA_VES_MESSAGE_ROUTER_PARTITION_KEY, vesMessage + .hashCode()); + } +} diff --git a/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/flowlet/TCAVESThresholdViolationCalculatorFlowlet.java b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/flowlet/TCAVESThresholdViolationCalculatorFlowlet.java new file mode 100644 index 0000000..d5ab109 --- /dev/null +++ b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/flowlet/TCAVESThresholdViolationCalculatorFlowlet.java @@ -0,0 +1,137 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.flowlet; + +import co.cask.cdap.api.annotation.Output; +import co.cask.cdap.api.annotation.ProcessInput; +import co.cask.cdap.api.annotation.Property; +import co.cask.cdap.api.annotation.RoundRobin; +import co.cask.cdap.api.dataset.lib.ObjectMappedTable; +import co.cask.cdap.api.flow.flowlet.AbstractFlowlet; +import co.cask.cdap.api.flow.flowlet.FlowletContext; +import co.cask.cdap.api.flow.flowlet.OutputEmitter; +import co.cask.cdap.api.metrics.Metrics; +import com.fasterxml.jackson.core.JsonProcessingException; +import org.openecomp.dcae.analytics.common.CDAPComponentsConstants; +import org.openecomp.dcae.analytics.common.CDAPMetricsConstants; +import org.openecomp.dcae.analytics.model.domain.policy.tca.TCAPolicy; +import org.openecomp.dcae.analytics.model.facade.tca.TCAVESResponse; +import org.openecomp.dcae.analytics.tca.persistance.TCACalculatorMessageType; +import org.openecomp.dcae.analytics.tca.persistance.TCAMessageStatusEntity; +import org.openecomp.dcae.analytics.tca.persistance.TCAMessageStatusPersister; +import org.openecomp.dcae.analytics.tca.processor.TCACEFProcessorContext; +import org.openecomp.dcae.analytics.tca.utils.TCAUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import static org.openecomp.dcae.analytics.common.CDAPComponentsConstants.TCA_FIXED_VES_THRESHOLD_VIOLATION_CALCULATOR_DESCRIPTION_FLOWLET; +import static org.openecomp.dcae.analytics.common.CDAPComponentsConstants.TCA_FIXED_VES_THRESHOLD_VIOLATION_CALCULATOR_NAME_FLOWLET; + +/** + * TCA VES Message Filter filters out messages which are not applicable for TCA as per TCA Policy + * + * @author Rajiv Singla. Creation Date: 11/3/2016. + */ +public class TCAVESThresholdViolationCalculatorFlowlet extends AbstractFlowlet { + + private static final Logger LOG = LoggerFactory.getLogger(TCAVESThresholdViolationCalculatorFlowlet.class); + + @Output(CDAPComponentsConstants.TCA_FIXED_VES_TCA_CALCULATOR_NAME_OUTPUT) + private OutputEmitter<String> tcaAlertOutputEmitter; + + @Property + private final String messageStatusTableName; + + private TCAPolicy tcaPolicy; + private Metrics metrics; + private ObjectMappedTable<TCAMessageStatusEntity> vesMessageStatusTable; + + public TCAVESThresholdViolationCalculatorFlowlet(String messageStatusTableName) { + this.messageStatusTableName = messageStatusTableName; + } + + @Override + public void configure() { + setName(TCA_FIXED_VES_THRESHOLD_VIOLATION_CALCULATOR_NAME_FLOWLET); + setDescription(TCA_FIXED_VES_THRESHOLD_VIOLATION_CALCULATOR_DESCRIPTION_FLOWLET); + } + + + @Override + public void initialize(FlowletContext flowletContext) throws Exception { + super.initialize(flowletContext); + + // parse Runtime Arguments to tca policy preferences + tcaPolicy = TCAUtils.getValidatedTCAPolicyPreferences(flowletContext); + + vesMessageStatusTable = getContext().getDataset(messageStatusTableName); + + } + + @ProcessInput(CDAPComponentsConstants.TCA_FIXED_VES_MESSAGE_ROUTER_OUTPUT) + @RoundRobin + public void filterVESMessages(String vesMessage) throws JsonProcessingException { + + TCACalculatorMessageType calculatorMessageType = TCACalculatorMessageType.INAPPLICABLE; + String alertMessage = null; + + // Step 1: Filter incoming messages + final TCACEFProcessorContext processorContext = TCAUtils.filterCEFMessage(vesMessage, tcaPolicy); + + if (processorContext.canProcessingContinue()) { + + // Step 2: Check if CEF Message violate any thresholds + final TCACEFProcessorContext processorContextWithViolations = + TCAUtils.computeThresholdViolations(processorContext); + + if (processorContextWithViolations.canProcessingContinue()) { + + // Step 3: Create Alert Message + final String tcaAppName = getContext().getApplicationSpecification().getName(); + final TCAVESResponse newTCAVESResponse = + TCAUtils.createNewTCAVESResponse(processorContextWithViolations, tcaAppName); + alertMessage = TCAUtils.writeValueAsString(newTCAVESResponse); + calculatorMessageType = TCACalculatorMessageType.NON_COMPLIANT; + LOG.debug("VES Threshold Violation Detected. An alert message is be generated. {}", alertMessage); + + metrics.count(CDAPMetricsConstants.TCA_VES_NON_COMPLIANT_MESSAGES_METRIC, 1); + + // Step 4: Emit message to Alert Sink Flowlet + tcaAlertOutputEmitter.emit(alertMessage); + + } else { + + calculatorMessageType = TCACalculatorMessageType.COMPLIANT; + metrics.count(CDAPMetricsConstants.TCA_VES_COMPLIANT_MESSAGES_METRIC, 1); + } + + } else { + + metrics.count(CDAPMetricsConstants.TCA_VES_INAPPLICABLE_MESSAGES_METRIC, 1); + } + + // save message to message status table + TCAMessageStatusPersister.persist( + processorContext, getContext(), calculatorMessageType, vesMessageStatusTable, alertMessage); + } + + +} diff --git a/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/persistance/TCACalculatorMessageType.java b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/persistance/TCACalculatorMessageType.java new file mode 100644 index 0000000..acef458 --- /dev/null +++ b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/persistance/TCACalculatorMessageType.java @@ -0,0 +1,43 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.persistance; + +/** + * TCA Calculator applies TCA Policy to incoming VES messages and classifies them as per this enum + * + * @author Rajiv Singla. Creation Date: 11/15/2016. + */ +public enum TCACalculatorMessageType { + + /** + * VES messages that are not applicable as per TCA Policy + */ + INAPPLICABLE, + /** + * VES messages that are applicable as per TCA Policy but don't violate any thresholds + */ + COMPLIANT, + /** + * VES messages that are applicable as per TCA Policy and also in violation of TCA Policy thresholds + */ + NON_COMPLIANT; + +} diff --git a/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/persistance/TCAMessageStatusEntity.java b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/persistance/TCAMessageStatusEntity.java new file mode 100644 index 0000000..35aeac4 --- /dev/null +++ b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/persistance/TCAMessageStatusEntity.java @@ -0,0 +1,306 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.persistance; + +import org.apache.hadoop.io.Writable; +import org.apache.hadoop.io.WritableUtils; + +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; +import java.io.Serializable; + +/** + * TCA Message Status is an Entity which is used to persist TCA VES Message status information in Message Status Table + * + * @author Rajiv Singla. Creation Date: 11/16/2016. + */ +public class TCAMessageStatusEntity implements Writable, Serializable { + + private static final long serialVersionUID = -6186607668704516962L; + + private long creationTS; + private int flowletInstance; + private String messageType; + private String vesMessage; + private String domain; + private String functionalRole; + private String thresholdPath; + private String thresholdSeverity; + private String thresholdDirection; + private Long thresholdValue; + private String jsonProcessorStatus; + private String jsonProcessorMessage; + private String domainFilterStatus; + private String domainFilterMessage; + private String functionalRoleFilterStatus; + private String functionalRoleFilterMessage; + private String thresholdCalculatorStatus; + private String thresholdCalculatorMessage; + private String alertMessage; + + public TCAMessageStatusEntity() { + } + + public TCAMessageStatusEntity(long creationTS, int flowletInstance, String messageType, String vesMessage, String + domain, String functionalRole) { + this(creationTS, flowletInstance, messageType, vesMessage, domain, functionalRole, null, null, null, null, + null, null, null, null, null, null, null, null, null); + } + + public TCAMessageStatusEntity(long creationTS, int flowletInstance, String messageType, String vesMessage, + String domain, String functionalRole, + String thresholdPath, String thresholdSeverity, String thresholdDirection, + Long thresholdValue, + String jsonProcessorStatus, String jsonProcessorMessage, + String domainFilterStatus, String domainFilterMessage, + String functionalRoleFilterStatus, String functionalRoleFilterMessage, + String thresholdCalculatorStatus, String thresholdCalculatorMessage, + String alertMessage) { + this.creationTS = creationTS; + this.flowletInstance = flowletInstance; + this.messageType = messageType; + this.vesMessage = vesMessage; + this.domain = domain; + this.functionalRole = functionalRole; + this.thresholdPath = thresholdPath; + this.thresholdSeverity = thresholdSeverity; + this.thresholdDirection = thresholdDirection; + this.thresholdValue = thresholdValue; + this.jsonProcessorStatus = jsonProcessorStatus; + this.jsonProcessorMessage = jsonProcessorMessage; + this.domainFilterStatus = domainFilterStatus; + this.domainFilterMessage = domainFilterMessage; + this.functionalRoleFilterStatus = functionalRoleFilterStatus; + this.functionalRoleFilterMessage = functionalRoleFilterMessage; + this.thresholdCalculatorStatus = thresholdCalculatorStatus; + this.thresholdCalculatorMessage = thresholdCalculatorMessage; + this.alertMessage = alertMessage; + } + + public long getCreationTS() { + return creationTS; + } + + public void setCreationTS(long creationTS) { + this.creationTS = creationTS; + } + + public int getFlowletInstance() { + return flowletInstance; + } + + public void setFlowletInstance(int flowletInstance) { + this.flowletInstance = flowletInstance; + } + + public String getMessageType() { + return messageType; + } + + public void setMessageType(String messageType) { + this.messageType = messageType; + } + + public String getVesMessage() { + return vesMessage; + } + + public void setVesMessage(String vesMessage) { + this.vesMessage = vesMessage; + } + + public String getDomain() { + return domain; + } + + public void setDomain(String domain) { + this.domain = domain; + } + + public String getFunctionalRole() { + return functionalRole; + } + + public void setFunctionalRole(String functionalRole) { + this.functionalRole = functionalRole; + } + + public String getThresholdPath() { + return thresholdPath; + } + + public void setThresholdPath(String thresholdPath) { + this.thresholdPath = thresholdPath; + } + + public String getThresholdSeverity() { + return thresholdSeverity; + } + + public void setThresholdSeverity(String thresholdSeverity) { + this.thresholdSeverity = thresholdSeverity; + } + + public String getThresholdDirection() { + return thresholdDirection; + } + + public void setThresholdDirection(String thresholdDirection) { + this.thresholdDirection = thresholdDirection; + } + + public Long getThresholdValue() { + return thresholdValue; + } + + public void setThresholdValue(Long thresholdValue) { + this.thresholdValue = thresholdValue; + } + + public String getJsonProcessorStatus() { + return jsonProcessorStatus; + } + + public void setJsonProcessorStatus(String jsonProcessorStatus) { + this.jsonProcessorStatus = jsonProcessorStatus; + } + + public String getJsonProcessorMessage() { + return jsonProcessorMessage; + } + + public void setJsonProcessorMessage(String jsonProcessorMessage) { + this.jsonProcessorMessage = jsonProcessorMessage; + } + + public String getDomainFilterStatus() { + return domainFilterStatus; + } + + public void setDomainFilterStatus(String domainFilterStatus) { + this.domainFilterStatus = domainFilterStatus; + } + + public String getDomainFilterMessage() { + return domainFilterMessage; + } + + public void setDomainFilterMessage(String domainFilterMessage) { + this.domainFilterMessage = domainFilterMessage; + } + + public String getFunctionalRoleFilterStatus() { + return functionalRoleFilterStatus; + } + + public void setFunctionalRoleFilterStatus(String functionalRoleFilterStatus) { + this.functionalRoleFilterStatus = functionalRoleFilterStatus; + } + + public String getFunctionalRoleFilterMessage() { + return functionalRoleFilterMessage; + } + + public void setFunctionalRoleFilterMessage(String functionalRoleFilterMessage) { + this.functionalRoleFilterMessage = functionalRoleFilterMessage; + } + + public String getThresholdCalculatorStatus() { + return thresholdCalculatorStatus; + } + + public void setThresholdCalculatorStatus(String thresholdCalculatorStatus) { + this.thresholdCalculatorStatus = thresholdCalculatorStatus; + } + + public String getThresholdCalculatorMessage() { + return thresholdCalculatorMessage; + } + + public void setThresholdCalculatorMessage(String thresholdCalculatorMessage) { + this.thresholdCalculatorMessage = thresholdCalculatorMessage; + } + + public String getAlertMessage() { + return alertMessage; + } + + public void setAlertMessage(String alertMessage) { + this.alertMessage = alertMessage; + } + + @Override + public void write(DataOutput dataOutput) throws IOException { + WritableUtils.writeVLong(dataOutput, creationTS); + WritableUtils.writeVInt(dataOutput, flowletInstance); + WritableUtils.writeString(dataOutput, messageType); + WritableUtils.writeString(dataOutput, vesMessage); + + WritableUtils.writeString(dataOutput, domain); + WritableUtils.writeString(dataOutput, functionalRole); + + WritableUtils.writeString(dataOutput, thresholdPath); + WritableUtils.writeString(dataOutput, thresholdSeverity); + WritableUtils.writeString(dataOutput, thresholdDirection); + WritableUtils.writeVLong(dataOutput, thresholdValue); + + WritableUtils.writeString(dataOutput, jsonProcessorStatus); + WritableUtils.writeString(dataOutput, jsonProcessorMessage); + WritableUtils.writeString(dataOutput, domainFilterStatus); + WritableUtils.writeString(dataOutput, domainFilterMessage); + WritableUtils.writeString(dataOutput, functionalRoleFilterStatus); + WritableUtils.writeString(dataOutput, functionalRoleFilterMessage); + WritableUtils.writeString(dataOutput, thresholdCalculatorStatus); + WritableUtils.writeString(dataOutput, thresholdCalculatorMessage); + + WritableUtils.writeString(dataOutput, alertMessage); + + } + + @Override + public void readFields(DataInput dataInput) throws IOException { + creationTS = WritableUtils.readVLong(dataInput); + flowletInstance = WritableUtils.readVInt(dataInput); + messageType = WritableUtils.readString(dataInput); + vesMessage = WritableUtils.readString(dataInput); + + domain = WritableUtils.readString(dataInput); + functionalRole = WritableUtils.readString(dataInput); + + thresholdPath = WritableUtils.readString(dataInput); + thresholdSeverity = WritableUtils.readString(dataInput); + thresholdDirection = WritableUtils.readString(dataInput); + thresholdValue = WritableUtils.readVLong(dataInput); + + jsonProcessorStatus = WritableUtils.readString(dataInput); + jsonProcessorMessage = WritableUtils.readString(dataInput); + domainFilterStatus = WritableUtils.readString(dataInput); + domainFilterMessage = WritableUtils.readString(dataInput); + functionalRoleFilterStatus = WritableUtils.readString(dataInput); + functionalRoleFilterMessage = WritableUtils.readString(dataInput); + thresholdCalculatorStatus = WritableUtils.readString(dataInput); + thresholdCalculatorMessage = WritableUtils.readString(dataInput); + + alertMessage = WritableUtils.readString(dataInput); + + } +} diff --git a/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/persistance/TCAMessageStatusPersister.java b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/persistance/TCAMessageStatusPersister.java new file mode 100644 index 0000000..edd33dd --- /dev/null +++ b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/persistance/TCAMessageStatusPersister.java @@ -0,0 +1,243 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.persistance; + +import co.cask.cdap.api.data.schema.Schema; +import co.cask.cdap.api.data.schema.UnsupportedTypeException; +import co.cask.cdap.api.dataset.DatasetProperties; +import co.cask.cdap.api.dataset.lib.IndexedTable; +import co.cask.cdap.api.dataset.lib.ObjectMappedTable; +import co.cask.cdap.api.dataset.lib.ObjectMappedTableProperties; +import co.cask.cdap.api.flow.flowlet.FlowletContext; +import com.google.common.base.Joiner; +import org.apache.commons.lang3.StringEscapeUtils; +import org.apache.commons.lang3.tuple.Pair; +import org.openecomp.dcae.analytics.common.exception.DCAEAnalyticsRuntimeException; +import org.openecomp.dcae.analytics.common.service.processor.MessageProcessor; +import org.openecomp.dcae.analytics.common.service.processor.ProcessorContext; +import org.openecomp.dcae.analytics.common.utils.PersistenceUtils; +import org.openecomp.dcae.analytics.model.domain.policy.tca.MetricsPerFunctionalRole; +import org.openecomp.dcae.analytics.model.domain.policy.tca.Threshold; +import org.openecomp.dcae.analytics.tca.processor.TCACEFJsonProcessor; +import org.openecomp.dcae.analytics.tca.processor.TCACEFPolicyDomainFilter; +import org.openecomp.dcae.analytics.tca.processor.TCACEFPolicyFunctionalRoleFilter; +import org.openecomp.dcae.analytics.tca.processor.TCACEFPolicyThresholdsProcessor; +import org.openecomp.dcae.analytics.tca.processor.TCACEFProcessorContext; +import org.openecomp.dcae.analytics.tca.utils.TCAUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Date; +import java.util.LinkedList; +import java.util.List; + +import javax.annotation.Nullable; + +import static org.openecomp.dcae.analytics.common.CDAPComponentsConstants.TCA_FIXED_VES_MESSAGE_STATUS_DESCRIPTION_TABLE; +import static org.openecomp.dcae.analytics.common.utils.PersistenceUtils.TABLE_ROW_KEY_COLUMN_NAME; + +/** + * + * + * @author Rajiv Singla. Creation Date: 11/15/2016. + */ +public abstract class TCAMessageStatusPersister { + + private static final Logger LOG = LoggerFactory.getLogger(TCAMessageStatusPersister.class); + + /** + * Saves Message Status in Table. Assumes no alert was generated + * + * @param processorContext processor Context + * @param flowletContext Flowlet Context + * @param calculatorMessageType Calculation Message Type + * @param messageStatusTable Message Status Table + */ + public static void persist(final TCACEFProcessorContext processorContext, + final FlowletContext flowletContext, + final TCACalculatorMessageType calculatorMessageType, + final ObjectMappedTable<TCAMessageStatusEntity> messageStatusTable) { + persist(processorContext, flowletContext, calculatorMessageType, messageStatusTable, null); + } + + /** + * Saves Message Status in Table. Sets up alert message aslo + * + * @param processorContext processor Context + * @param flowletContext Flowlet Context + * @param calculatorMessageType Calculation Message Type + * @param messageStatusTable Message Status Table + * @param alertMessage Alert message + */ + public static void persist(final TCACEFProcessorContext processorContext, + final FlowletContext flowletContext, + final TCACalculatorMessageType calculatorMessageType, + final ObjectMappedTable<TCAMessageStatusEntity> messageStatusTable, + @Nullable final String alertMessage) { + + final String rowKey = createKey(calculatorMessageType); + + final Long currentTS = new Date().getTime(); + final int flowletInstanceId = flowletContext.getInstanceId(); + final String vesMessage = StringEscapeUtils.unescapeJson(processorContext.getMessage()); + + // Find Functional Role and domain + final Pair<String, String> domainAndFunctionalRole = TCAUtils.getDomainAndFunctionalRole(processorContext); + final String domain = domainAndFunctionalRole.getLeft(); + final String functionalRole = domainAndFunctionalRole.getRight(); + + final TCAMessageStatusEntity tcaMessageStatusEntity = new TCAMessageStatusEntity(currentTS, + flowletInstanceId, calculatorMessageType.name(), vesMessage, domain, functionalRole); + + // add threshold violation fields + addViolatedThreshold(tcaMessageStatusEntity, processorContext); + // add processor status and messages + addMessageProcessorMessages(tcaMessageStatusEntity, processorContext); + // add Alert message + tcaMessageStatusEntity.setAlertMessage( + alertMessage == null ? null : StringEscapeUtils.unescapeJson(alertMessage) + ); + + messageStatusTable.write(rowKey, tcaMessageStatusEntity); + + + LOG.debug("Finished persisting VES Status Message with rowKey: {} in Message Status Table.", rowKey); + + } + + + /** + * Create TCA VES Message Status Table Properties + * + * @param timeToLiveSeconds Message Status Table time to live in seconds + * + * @return Message Status table properties + */ + public static DatasetProperties getDatasetProperties(final int timeToLiveSeconds) { + + try { + return ObjectMappedTableProperties.builder() + .setType(TCAMessageStatusEntity.class) + .setRowKeyExploreName(TABLE_ROW_KEY_COLUMN_NAME) + .setRowKeyExploreType(Schema.Type.STRING) + .add(IndexedTable.PROPERTY_TTL, timeToLiveSeconds) + .setDescription(TCA_FIXED_VES_MESSAGE_STATUS_DESCRIPTION_TABLE) + .build(); + } catch (UnsupportedTypeException e) { + final String errorMessage = "Unable to convert TCAMessageStatusEntity class to Schema"; + throw new DCAEAnalyticsRuntimeException(errorMessage, LOG, new IllegalArgumentException(errorMessage)); + } + + } + + + /** + * Adds Violated Threshold Parameter values to {@link TCAMessageStatusEntity} + * + * @param tcaMessageStatusEntity message entity that needs to be populated with threshold fields + * @param processorContext processor context + * + * @return entity with populated threshold field values if present + */ + private static TCAMessageStatusEntity addViolatedThreshold(final TCAMessageStatusEntity tcaMessageStatusEntity, + final TCACEFProcessorContext processorContext) { + + final MetricsPerFunctionalRole metricsPerFunctionalRole = processorContext.getMetricsPerFunctionalRole(); + + if (metricsPerFunctionalRole != null + && metricsPerFunctionalRole.getThresholds() != null + && metricsPerFunctionalRole.getThresholds().get(0) != null) { + + final Threshold threshold = metricsPerFunctionalRole.getThresholds().get(0); + tcaMessageStatusEntity.setThresholdPath(threshold.getFieldPath()); + tcaMessageStatusEntity.setThresholdSeverity(threshold.getSeverity().name()); + tcaMessageStatusEntity.setThresholdDirection(threshold.getDirection().name()); + tcaMessageStatusEntity.setThresholdValue(threshold.getThresholdValue()); + } + + return tcaMessageStatusEntity; + } + + + /** + * Add TCA CEF Message Processor status information + * + * @param tcaMessageStatusEntity message entity that needs to be populated with message processor fields + * @param processorContext processor context + * + * @return entity with populated message process status information + */ + private static TCAMessageStatusEntity addMessageProcessorMessages( + final TCAMessageStatusEntity tcaMessageStatusEntity, final TCACEFProcessorContext processorContext) { + final List<? super MessageProcessor<? extends ProcessorContext>> messageProcessors = processorContext + .getMessageProcessors(); + + if (messageProcessors != null && !messageProcessors.isEmpty()) { + for (Object messageProcessor : messageProcessors) { + final MessageProcessor<TCACEFProcessorContext> tcaMessageProcessor = + (MessageProcessor<TCACEFProcessorContext>) messageProcessor; + + final String processingState = tcaMessageProcessor.getProcessingState().name(); + final String processingMessage = tcaMessageProcessor.getProcessingMessage().orNull(); + + if (messageProcessor.getClass().equals(TCACEFJsonProcessor.class)) { + tcaMessageStatusEntity.setJsonProcessorStatus(processingState); + tcaMessageStatusEntity.setJsonProcessorMessage(processingMessage); + } + + if (messageProcessor.getClass().equals(TCACEFPolicyDomainFilter.class)) { + tcaMessageStatusEntity.setDomainFilterStatus(processingState); + tcaMessageStatusEntity.setDomainFilterMessage(processingMessage); + } + + if (messageProcessor.getClass().equals(TCACEFPolicyFunctionalRoleFilter.class)) { + tcaMessageStatusEntity.setFunctionalRoleFilterStatus(processingState); + tcaMessageStatusEntity.setFunctionalRoleFilterMessage(processingMessage); + } + + if (messageProcessor.getClass().equals(TCACEFPolicyThresholdsProcessor.class)) { + tcaMessageStatusEntity.setThresholdCalculatorStatus(processingState); + tcaMessageStatusEntity.setThresholdCalculatorMessage(processingMessage); + } + + } + } + return tcaMessageStatusEntity; + } + + /** + * Creates Row Key for TCA VES Message Status table + * + * Row Key = (Message Type + Decreasing Value) + * + * @param calculatorMessageType calculator message type + * + * @return row key string + */ + private static String createKey(final TCACalculatorMessageType calculatorMessageType) { + + final List<String> keyList = new LinkedList<>(); + keyList.add(calculatorMessageType.name()); + keyList.add(PersistenceUtils.getCurrentTimeReverseSubKey()); + return Joiner.on(PersistenceUtils.ROW_KEY_DELIMITER).join(keyList); + } + +} diff --git a/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/persistance/TCAVESAlertEntity.java b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/persistance/TCAVESAlertEntity.java new file mode 100644 index 0000000..ff3906c --- /dev/null +++ b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/persistance/TCAVESAlertEntity.java @@ -0,0 +1,77 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.persistance; + +import org.apache.hadoop.io.Writable; +import org.apache.hadoop.io.WritableUtils; + +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; +import java.io.Serializable; + +/** + * + * @author Rajiv Singla. Creation Date: 11/16/2016. + */ +public class TCAVESAlertEntity implements Writable, Serializable { + + private static final long serialVersionUID = -8587229518063660258L; + + private long creationTS; + private String alertMessage; + + public TCAVESAlertEntity() { + } + + public TCAVESAlertEntity(long creationTS, String alertMessage) { + this.creationTS = creationTS; + this.alertMessage = alertMessage; + } + + public long getCreationTS() { + return creationTS; + } + + public void setCreationTS(long creationTS) { + this.creationTS = creationTS; + } + + public String getAlertMessage() { + return alertMessage; + } + + public void setAlertMessage(String alertMessage) { + this.alertMessage = alertMessage; + } + + @Override + public void write(DataOutput dataOutput) throws IOException { + WritableUtils.writeVLong(dataOutput, creationTS); + WritableUtils.writeString(dataOutput, alertMessage); + } + + @Override + public void readFields(DataInput dataInput) throws IOException { + creationTS = WritableUtils.readVLong(dataInput); + alertMessage = WritableUtils.readString(dataInput); + } +} diff --git a/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/persistance/TCAVESAlertsPersister.java b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/persistance/TCAVESAlertsPersister.java new file mode 100644 index 0000000..bf94cde --- /dev/null +++ b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/persistance/TCAVESAlertsPersister.java @@ -0,0 +1,98 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.persistance; + +import co.cask.cdap.api.data.schema.Schema; +import co.cask.cdap.api.data.schema.UnsupportedTypeException; +import co.cask.cdap.api.dataset.DatasetProperties; +import co.cask.cdap.api.dataset.lib.IndexedTable; +import co.cask.cdap.api.dataset.lib.ObjectMappedTable; +import co.cask.cdap.api.dataset.lib.ObjectMappedTableProperties; +import org.apache.commons.lang3.StringEscapeUtils; +import org.openecomp.dcae.analytics.common.exception.DCAEAnalyticsRuntimeException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Date; + +import static org.openecomp.dcae.analytics.common.CDAPComponentsConstants.TCA_DEFAULT_VES_ALERTS_DESCRIPTION_TABLE; +import static org.openecomp.dcae.analytics.common.utils.PersistenceUtils.TABLE_ROW_KEY_COLUMN_NAME; + +/** + * + * @author Rajiv Singla. Creation Date: 11/16/2016. + */ +public abstract class TCAVESAlertsPersister { + + private static final Logger LOG = LoggerFactory.getLogger(TCAVESAlertsPersister.class); + + /** + * Persists Alert Message to Alerts Table + * + * @param alertMessage alert Message + * @param tcaVESAlertTable alert Table Name + */ + public static void persist(final String alertMessage, final ObjectMappedTable<TCAVESAlertEntity> tcaVESAlertTable) { + final Date currentDate = new Date(); + final TCAVESAlertEntity alertEntity = new TCAVESAlertEntity(currentDate.getTime(), + StringEscapeUtils.unescapeJson(alertMessage)); + // row key is same as current timestamp + final String rowKey = createRowKey(currentDate); + tcaVESAlertTable.write(rowKey, alertEntity); + + LOG.debug("Finished persisting VES Alert message ID: {} in VES Alerts table.", rowKey); + } + + + /** + * Creates {@link DatasetProperties} for Alerts Table + * + * @param timeToLiveSeconds alerts table Time to Live + * @return Alerts table properties + */ + public static DatasetProperties getDatasetProperties(final int timeToLiveSeconds) { + try { + return ObjectMappedTableProperties.builder() + .setType(TCAVESAlertEntity.class) + .setRowKeyExploreName(TABLE_ROW_KEY_COLUMN_NAME) + .setRowKeyExploreType(Schema.Type.STRING) + .add(IndexedTable.PROPERTY_TTL, timeToLiveSeconds) + .setDescription(TCA_DEFAULT_VES_ALERTS_DESCRIPTION_TABLE) + .build(); + } catch (UnsupportedTypeException e) { + final String errorMessage = "Unable to convert TCAVESAlertEntity class to Schema"; + throw new DCAEAnalyticsRuntimeException(errorMessage, LOG, new IllegalArgumentException(errorMessage)); + } + + } + + /** + * Creates Row Key for Alerts Table + * + * @param date current Date + * + * @return row key + */ + public static String createRowKey(final Date date) { + return String.format("%025d", date.getTime()); + } + +} diff --git a/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/processor/AbstractTCAECEFPolicyProcessor.java b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/processor/AbstractTCAECEFPolicyProcessor.java new file mode 100644 index 0000000..56ea38f --- /dev/null +++ b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/processor/AbstractTCAECEFPolicyProcessor.java @@ -0,0 +1,61 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.processor; + +import org.openecomp.dcae.analytics.common.exception.MessageProcessingException; +import org.openecomp.dcae.analytics.common.service.processor.AbstractMessageProcessor; +import org.openecomp.dcae.analytics.model.domain.cef.EventListener; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.annotation.Nonnull; + +/** + * <p> + * Encapsulates common functionality for all TCA CEF Policy Processors + * </p> + * + * @author Rajiv Singla. Creation Date: 11/9/2016. + */ +public abstract class AbstractTCAECEFPolicyProcessor extends AbstractMessageProcessor<TCACEFProcessorContext> { + + private static final Logger LOG = LoggerFactory.getLogger(AbstractTCAECEFPolicyProcessor.class); + + /** + * For all TCA Policy Processor the pre processor ensures that {@link EventListener} object is + * present + * + * @param processorContext incoming Processor Context + * @return Pre processed Processor Context + */ + @Override + public TCACEFProcessorContext preProcessor(@Nonnull TCACEFProcessorContext processorContext) { + // validates CEF Event Listener is Present + final EventListener cefEventListener = processorContext.getCEFEventListener(); + if (cefEventListener == null) { + final String errorMessage = String.format( + "CEF Event Listener is not Present.Invalid use of Processor: %s. CEF Message: %s", + getProcessorInfo().getProcessorName(), processorContext.getMessage()); + throw new MessageProcessingException(errorMessage, LOG, new IllegalArgumentException(errorMessage)); + } + return super.preProcessor(processorContext); + } +} diff --git a/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/processor/TCACEFJsonProcessor.java b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/processor/TCACEFJsonProcessor.java new file mode 100644 index 0000000..ab33fe2 --- /dev/null +++ b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/processor/TCACEFJsonProcessor.java @@ -0,0 +1,98 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.processor; + +import org.apache.commons.lang3.StringUtils; +import org.openecomp.dcae.analytics.common.exception.MessageProcessingException; +import org.openecomp.dcae.analytics.common.service.processor.AbstractMessageProcessor; +import org.openecomp.dcae.analytics.model.domain.cef.EventListener; +import org.openecomp.dcae.analytics.tca.utils.TCAUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; + +/** + *<p> + * Processor that converts incoming presumed JSON string CEF message to {@link EventListener} object + * <br> + * Pre Conditions: None + *</p> + * + * @author Rajiv Singla. Creation Date: 11/5/2016. + */ +public class TCACEFJsonProcessor extends AbstractMessageProcessor<TCACEFProcessorContext> { + + + private static final long serialVersionUID = -9031531679383821793L; + + private static final Logger LOG = LoggerFactory.getLogger(TCACEFJsonProcessor.class); + + + @Override + public String getProcessorDescription() { + return "Converts incoming TCA CEF Message to Event Listener object"; + } + + @Override + public TCACEFProcessorContext processMessage(TCACEFProcessorContext processorContext) { + + final String cefMessage = processorContext.getMessage(); + + // If CEF Message is null then processor should stop processing + if (cefMessage == null) { + String errorMessage = "Null CEF message cannot be converted to CEF Event Listener Object"; + throw new MessageProcessingException(errorMessage, LOG, new IllegalArgumentException(errorMessage)); + } + + // If CEF Message is blank then processor stop processing + if (StringUtils.isBlank(cefMessage)) { + setTerminatingProcessingMessage("Blank CEF message cannot be converted to CEF Event Listener Object", + processorContext); + return processorContext; + } + + // trim cef message + final String trimmedCEFMessage = cefMessage.trim(); + + // if message does not start with curly brace and ends with curly brace, it is not a valid cef message + // processor will stop processing + if (!(trimmedCEFMessage.startsWith("{") && trimmedCEFMessage.endsWith("}"))) { + setTerminatingProcessingMessage("CEF Message must start with curly brace and must end with curly brace", + processorContext); + return processorContext; + } + + // try parsing the cef message + try { + final EventListener eventListener = TCAUtils.readValue(trimmedCEFMessage, EventListener.class); + setFinishedProcessingMessage("CEF JSON to Event Listener Conversion Successful", processorContext); + // set new Event Listener in the Processor Context + processorContext.setCEFEventListener(eventListener); + return processorContext; + } catch (IOException e) { + final String errorMessage = String.format("Parsing Failed for CEF Message: %s, Error: %s", cefMessage, e); + // If parsing fails throw an exception + throw new MessageProcessingException(errorMessage, LOG, e); + } + + } +} diff --git a/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/processor/TCACEFPolicyDomainFilter.java b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/processor/TCACEFPolicyDomainFilter.java new file mode 100644 index 0000000..639c6bc --- /dev/null +++ b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/processor/TCACEFPolicyDomainFilter.java @@ -0,0 +1,83 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.processor; + +import org.openecomp.dcae.analytics.model.domain.cef.EventListener; + +/** + * <p> + * TCA Processor which acts like a filter to filter out messages which does not belong to TCA Policy Domain + * <br> + * Pre Conditions: CEF Event Listener must be present + * </p> + * + * @author Rajiv Singla. Creation Date: 11/7/2016. + */ +public class TCACEFPolicyDomainFilter extends AbstractTCAECEFPolicyProcessor { + + + private static final long serialVersionUID = -7302116478207544378L; + + @Override + public String getProcessorDescription() { + return "Filters out CEF Messages which does not match TCAPolicy Domain"; + } + + @Override + public TCACEFProcessorContext processMessage(TCACEFProcessorContext processorContext) { + + // Safe to get event Listener here without null check as pre processor will validate if + // event listener is indeed present + final EventListener eventListener = processorContext.getCEFEventListener(); + + String cefMessageDomain; + + // Extract CEF domain as it is must be present as per CEF Schema + if (eventListener.getEvent() != null && + eventListener.getEvent().getCommonEventHeader() != null && + eventListener.getEvent().getCommonEventHeader().getDomain() != null) { + cefMessageDomain = eventListener.getEvent().getCommonEventHeader().getDomain(); + + } else { + final String terminatingMessage = "Invalid CEF Message.Common Event Header Domain not present."; + setTerminatingProcessingMessage(terminatingMessage, processorContext); + return processorContext; + } + + // Get Policy Domain. TCA Policy Validation must ensure that Domain is indeed present + // no null check will be required here + final String policyDomain = processorContext.getTCAPolicy().getDomain(); + + // If Policy domain matches CEF message domain then continue processing + if (cefMessageDomain.equals(policyDomain)) { + final String finishMessage = String.format("Policy Domain and CEF Message Domain match successful." + + " Message Domain: %s, Policy Domain: %s", cefMessageDomain, policyDomain); + setFinishedProcessingMessage(finishMessage, processorContext); + } else { + // If policy domain does not match with CEF message terminate processing chain + final String terminatingMessage = String.format("Policy Domain and CEF Message Domain match unsuccessful." + + " Message Domain: %s, Policy Domain: %s", cefMessageDomain, policyDomain); + setTerminatingProcessingMessage(terminatingMessage, processorContext); + } + + return processorContext; + } +} diff --git a/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/processor/TCACEFPolicyFunctionalRoleFilter.java b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/processor/TCACEFPolicyFunctionalRoleFilter.java new file mode 100644 index 0000000..0f7e9b6 --- /dev/null +++ b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/processor/TCACEFPolicyFunctionalRoleFilter.java @@ -0,0 +1,90 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.processor; + +import com.google.common.base.Joiner; +import org.openecomp.dcae.analytics.model.domain.cef.EventListener; +import org.openecomp.dcae.analytics.model.domain.policy.tca.TCAPolicy; +import org.openecomp.dcae.analytics.tca.utils.TCAUtils; + +import java.util.List; + +/** + * <p> + * TCA Processor that acts like a filter to filter out messages which does not belong to TCA Policy Functional Roles + * <br> + * Pre Conditions: CEF Event Listener must be present + * </p> + * + * @author Rajiv Singla. Creation Date: 11/9/2016. + */ +public class TCACEFPolicyFunctionalRoleFilter extends AbstractTCAECEFPolicyProcessor { + + private static final long serialVersionUID = -4550787922375040396L; + + @Override + public String getProcessorDescription() { + return "Filters out CEF Messages which does not match Policy Functional Roles"; + } + + @Override + public TCACEFProcessorContext processMessage(TCACEFProcessorContext processorContext) { + + // Safe to get event Listener here without null check as pre processor will validate if + // event listener is indeed present + final EventListener eventListener = processorContext.getCEFEventListener(); + + String cefMessageFunctionalRole; + + if (eventListener.getEvent() != null && + eventListener.getEvent().getCommonEventHeader() != null && + eventListener.getEvent().getCommonEventHeader().getFunctionalRole() != null) { + cefMessageFunctionalRole = eventListener.getEvent().getCommonEventHeader().getFunctionalRole(); + } else { + String terminationMessage = "Invalid CEF Message.Common Event Header Functional Role not present."; + setTerminatingProcessingMessage(terminationMessage, processorContext); + return processorContext; + } + + // Determine Policy Functional Roles + final TCAPolicy tcaPolicy = processorContext.getTCAPolicy(); + final List<String> policyFunctionalRoles = TCAUtils.getPolicyFunctionalRoleSupplier(tcaPolicy).get(); + final String policyFunctionalRolesString = Joiner.on(",").join(policyFunctionalRoles); + + // If Policy functional Roles contains CEF message Functional Role then continue processing + if (policyFunctionalRoles.contains(cefMessageFunctionalRole)) { + final String finishMessage = String.format( + "Policy Functional Roles and CEF Message Functional match successful." + + "Message Functional Role: %s, Policy Functional Roles: %s", + cefMessageFunctionalRole, policyFunctionalRolesString); + setFinishedProcessingMessage(finishMessage, processorContext); + } else { + // If Policy functional Roles does not contain CEF message Functiona Role then terminate processing + final String terminatingMessage = String.format( + "Policy Domain and CEF Message Domain match unsuccessful." + + "Message Functional Role: %s, Policy Functional Roles: %s", + cefMessageFunctionalRole, policyFunctionalRolesString); + setTerminatingProcessingMessage(terminatingMessage, processorContext); + } + + return processorContext; + } +} diff --git a/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/processor/TCACEFPolicyThresholdsProcessor.java b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/processor/TCACEFPolicyThresholdsProcessor.java new file mode 100644 index 0000000..6dd334f --- /dev/null +++ b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/processor/TCACEFPolicyThresholdsProcessor.java @@ -0,0 +1,135 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.processor; + +import com.google.common.base.Optional; +import com.google.common.collect.Table; +import org.openecomp.dcae.analytics.common.exception.MessageProcessingException; +import org.openecomp.dcae.analytics.model.domain.cef.EventListener; +import org.openecomp.dcae.analytics.model.domain.policy.tca.MetricsPerFunctionalRole; +import org.openecomp.dcae.analytics.model.domain.policy.tca.TCAPolicy; +import org.openecomp.dcae.analytics.model.domain.policy.tca.Threshold; +import org.openecomp.dcae.analytics.tca.utils.TCAUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import javax.annotation.Nonnull; + +/** + *<p> + * TCA CEF Policy Threshold processor + * <br> + * Pre Conditions: Domain and Functional Role must be present in CEF Event Listener Object + *</p> + * + * @author Rajiv Singla. Creation Date: 11/9/2016. + */ +public class TCACEFPolicyThresholdsProcessor extends AbstractTCAECEFPolicyProcessor { + + private static final long serialVersionUID = -9075212160268522029L; + + private static final Logger LOG = LoggerFactory.getLogger(TCACEFPolicyThresholdsProcessor.class); + + @Override + public TCACEFProcessorContext preProcessor(@Nonnull TCACEFProcessorContext processorContext) { + // validates Domain and Functional Role are present + final EventListener eventListener = processorContext.getCEFEventListener(); + final String domain = eventListener.getEvent().getCommonEventHeader().getDomain(); + final String functionalRole = eventListener.getEvent().getCommonEventHeader().getFunctionalRole(); + if (domain == null || functionalRole == null) { + final String errorMessage = "CEF Event Listener domain or functional role not Present. " + + "Invalid use of this Processor"; + throw new MessageProcessingException(errorMessage, LOG, new IllegalArgumentException(errorMessage)); + } + return super.preProcessor(processorContext); + } + + @Override + public String getProcessorDescription() { + return "Applies TCA Policy rules to incoming CEF message. If any thresholds are violated attaches max " + + "Severity violated threshold to TCA Processor Context"; + } + + @Override + public TCACEFProcessorContext processMessage(TCACEFProcessorContext processorContext) { + + final String cefMessage = processorContext.getMessage(); + + // Determine domain and functional Role + final EventListener eventListener = processorContext.getCEFEventListener(); + final String functionalRole = eventListener.getEvent().getCommonEventHeader().getFunctionalRole(); + + // Get Table containing Functional Role and Thresholds Field Path + final TCAPolicy tcaPolicy = processorContext.getTCAPolicy(); + final Table<String, String, List<Threshold>> functionalRoleFieldPathsTable = + TCAUtils.getPolicyFRThresholdsTableSupplier(tcaPolicy).get(); + + // Get Policy Field Paths for that functional Role + final Map<String, List<Threshold>> policyFieldPathsMap = functionalRoleFieldPathsTable.row(functionalRole); + final Set<String> policyFieldPaths = policyFieldPathsMap.keySet(); + + // Get Json Values for Policy Fields + final Map<String, List<Long>> messageFieldValuesMap = TCAUtils.getJsonPathValue(cefMessage, policyFieldPaths); + + // Determine all violated thresholds per message field Path + final Map<String, Threshold> violatedThresholdsMap = new HashMap<>(); + for (Map.Entry<String, List<Long>> messageFieldValuesMapEntry : messageFieldValuesMap.entrySet()) { + final String messageFieldPath = messageFieldValuesMapEntry.getKey(); + final List<Threshold> messageFieldAssociatedPolicyThresholds = policyFieldPathsMap.get(messageFieldPath); + if (messageFieldAssociatedPolicyThresholds != null) { + final Optional<Threshold> thresholdOptional = TCAUtils.thresholdCalculator( + messageFieldValuesMapEntry.getValue(), messageFieldAssociatedPolicyThresholds); + if (thresholdOptional.isPresent()) { + violatedThresholdsMap.put(messageFieldPath, thresholdOptional.get()); + } + } + } + + // No threshold were violated + if (violatedThresholdsMap.isEmpty()) { + + final String terminationMessage = "No Policy Threshold violated by the VES CEF Message."; + setTerminatingProcessingMessage(terminationMessage, processorContext); + + } else { + + // If there are policy violations then determine max priority violation + final Threshold maxSeverityThresholdViolation = + TCAUtils.prioritizeThresholdViolations(violatedThresholdsMap); + final MetricsPerFunctionalRole violatedMetrics = TCAUtils.createViolatedMetrics(tcaPolicy, + maxSeverityThresholdViolation, functionalRole); + // attach policy violation to processor Context + processorContext.setMetricsPerFunctionalRole(violatedMetrics); + + final String finishMessage = String.format("Policy Threshold violation detected for threshold: %s", + maxSeverityThresholdViolation); + setFinishedProcessingMessage(finishMessage, processorContext); + + } + + return processorContext; + } +} diff --git a/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/processor/TCACEFProcessorContext.java b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/processor/TCACEFProcessorContext.java new file mode 100644 index 0000000..30ebe9d --- /dev/null +++ b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/processor/TCACEFProcessorContext.java @@ -0,0 +1,103 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.processor; + +import org.openecomp.dcae.analytics.common.service.processor.AbstractProcessorContext; +import org.openecomp.dcae.analytics.model.domain.cef.EventListener; +import org.openecomp.dcae.analytics.model.domain.policy.tca.MetricsPerFunctionalRole; +import org.openecomp.dcae.analytics.model.domain.policy.tca.TCAPolicy; + +/** + * TCA CEF Policy Processor Context + * + * @author Rajiv Singla. Creation Date: 11/7/2016. + */ +public class TCACEFProcessorContext extends AbstractProcessorContext { + + private static final long serialVersionUID = 1165992675657025413L; + + private final TCAPolicy tcaPolicy; + private EventListener eventListener; + private MetricsPerFunctionalRole metricsPerFunctionalRole; + + public TCACEFProcessorContext(final String message, boolean canProcessingContinue, final TCAPolicy tcaPolicy) { + super(message, canProcessingContinue); + this.tcaPolicy = tcaPolicy; + // present only if cef incoming message can be parsed successfully to Event Listener Object + this.eventListener = null; + // present only if there are any threshold violations are detected + this.metricsPerFunctionalRole = null; + } + + // Auxiliary Constructor which default canProcessingContinue Flag to true + public TCACEFProcessorContext(final String message, final TCAPolicy tcaPolicy) { + this(message, true, tcaPolicy); + } + + /** + * Returns {@link TCAPolicy} Object + * + * @return TCA Policy + */ + public TCAPolicy getTCAPolicy() { + return tcaPolicy; + } + + /** + * Returns Common Event Format {@link EventListener} if present else null + * + * @return CEF Event Listener + */ + public EventListener getCEFEventListener() { + return eventListener; + } + + + /** + * Sets new {@link EventListener} + * + * @param eventListener set new value for CEF event listener + */ + public void setCEFEventListener(final EventListener eventListener) { + this.eventListener = eventListener; + } + + + /** + * Returns TCA Policy {@link MetricsPerFunctionalRole} which was has violated Threshold for the CEF Message if + * present else null + * + * @return Violated Threshold Optional + */ + public MetricsPerFunctionalRole getMetricsPerFunctionalRole() { + return metricsPerFunctionalRole; + } + + /** + * Assign new TCA Policy {@link MetricsPerFunctionalRole} which was has violated Threshold for the CEF Message + * + * @param metricsPerFunctionalRole new value for Metrics Per Functional Role with violated threshold + */ + public void setMetricsPerFunctionalRole(MetricsPerFunctionalRole metricsPerFunctionalRole) { + this.metricsPerFunctionalRole = metricsPerFunctionalRole; + } + +} diff --git a/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/settings/TCAAppConfig.java b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/settings/TCAAppConfig.java new file mode 100644 index 0000000..1f7c32d --- /dev/null +++ b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/settings/TCAAppConfig.java @@ -0,0 +1,96 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.settings; + +import com.google.common.base.Objects; +import org.openecomp.dcae.analytics.common.AnalyticsConstants; +import org.openecomp.dcae.analytics.common.CDAPComponentsConstants; +import org.openecomp.dcae.analytics.common.cdap.settings.CDAPBaseAppConfig; + + +/** + * Contains CDAP App Config Settings for TCA Application + * + * @author Rajiv Singla. Creation Date: 11/2/2016. + */ +public class TCAAppConfig extends CDAPBaseAppConfig { + + + private static final long serialVersionUID = -6775885444808279443L; + + private String tcaSubscriberOutputStreamName; + private Integer thresholdCalculatorFlowletInstances; + + private String tcaVESMessageStatusTableName; + private Integer tcaVESMessageStatusTableTTLSeconds; + private String tcaVESAlertsTableName; + private Integer tcaVESAlertsTableTTLSeconds; + + + public TCAAppConfig() { + appName = CDAPComponentsConstants.TCA_DEFAULT_NAME_APP; + appDescription = CDAPComponentsConstants.TCA_DEFAULT_DESCRIPTION_APP; + tcaSubscriberOutputStreamName = CDAPComponentsConstants.TCA_DEFAULT_SUBSCRIBER_OUTPUT_NAME_STREAM; + thresholdCalculatorFlowletInstances = AnalyticsConstants.TCA_DEFAULT_THRESHOLD_CALCULATOR_FLOWLET_INSTANCES; + tcaVESMessageStatusTableName = CDAPComponentsConstants.TCA_DEFAULT_VES_MESSAGE_STATUS_NAME_TABLE; + tcaVESMessageStatusTableTTLSeconds = AnalyticsConstants.TCA_DEFAULT_VES_MESSAGE_STATUS_TTL_TABLE; + tcaVESAlertsTableName = CDAPComponentsConstants.TCA_DEFAULT_VES_ALERTS_NAME_TABLE; + tcaVESAlertsTableTTLSeconds = AnalyticsConstants.TCA_DEFAULT_VES_ALERTS_TTL_TABLE; + } + + public String getTcaSubscriberOutputStreamName() { + return tcaSubscriberOutputStreamName; + } + + public String getTcaVESMessageStatusTableName() { + return tcaVESMessageStatusTableName; + } + + public Integer getTcaVESMessageStatusTableTTLSeconds() { + return tcaVESMessageStatusTableTTLSeconds; + } + + public String getTcaVESAlertsTableName() { + return tcaVESAlertsTableName; + } + + public Integer getTcaVESAlertsTableTTLSeconds() { + return tcaVESAlertsTableTTLSeconds; + } + + public Integer getThresholdCalculatorFlowletInstances() { + return thresholdCalculatorFlowletInstances; + } + + @Override + public String toString() { + return Objects.toStringHelper(this) + .add("appName", appName) + .add("appDescription", appDescription) + .add("tcaSubscriberOutputStreamName", tcaSubscriberOutputStreamName) + .add("thresholdCalculatorFlowletInstances", thresholdCalculatorFlowletInstances) + .add("tcaVESMessageStatusTableName", tcaVESMessageStatusTableName) + .add("tcaVESMessageStatusTableTTLSeconds", tcaVESMessageStatusTableTTLSeconds) + .add("tcaVESAlertsTableName", tcaVESAlertsTableName) + .add("tcaVESAlertsTableTTLSeconds", tcaVESAlertsTableTTLSeconds) + .toString(); + } +} diff --git a/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/settings/TCAAppPreferences.java b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/settings/TCAAppPreferences.java new file mode 100644 index 0000000..8eddb3c --- /dev/null +++ b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/settings/TCAAppPreferences.java @@ -0,0 +1,262 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.settings; + +import com.google.common.base.Objects; +import org.openecomp.dcae.analytics.common.cdap.settings.CDAPAppPreferences; + +import static org.openecomp.dcae.analytics.common.AnalyticsConstants.TCA_DEFAULT_PUBLISHER_MAX_BATCH_QUEUE_SIZE; +import static org.openecomp.dcae.analytics.common.AnalyticsConstants.TCA_DEFAULT_PUBLISHER_MAX_RECOVERY_QUEUE_SIZE; +import static org.openecomp.dcae.analytics.common.AnalyticsConstants.TCA_DEFAULT_PUBLISHER_POLLING_INTERVAL_MS; +import static org.openecomp.dcae.analytics.common.AnalyticsConstants.TCA_DEFAULT_SUBSCRIBER_POLLING_INTERVAL_MS; + +/** + * <p> + * App Preferences for Analytics TCA (Threshold Crossing Alert) App + * <p> + * @author Rajiv Singla. Creation Date: 10/4/2016. + */ +public class TCAAppPreferences implements CDAPAppPreferences { + + private static final long serialVersionUID = -685010752560182764L; + + // subscriber preferences + protected String subscriberHostName; + + protected Integer subscriberHostPort; + + protected String subscriberTopicName; + + protected String subscriberProtocol; + + protected String subscriberUserName; + + protected String subscriberUserPassword; + + protected String subscriberContentType; + + protected String subscriberConsumerId; + + protected String subscriberConsumerGroup; + + protected Integer subscriberTimeoutMS; + + protected Integer subscriberMessageLimit; + + protected Integer subscriberPollingInterval; + + // publisher preferences + protected String publisherHostName; + + protected Integer publisherHostPort; + + protected String publisherTopicName; + + protected String publisherProtocol; + + protected String publisherUserName; + + protected String publisherUserPassword; + + protected String publisherContentType; + + protected Integer publisherMaxBatchSize; + + protected Integer publisherMaxRecoveryQueueSize; + + protected Integer publisherPollingInterval; + + + public TCAAppPreferences() { + + // subscriber defaults + subscriberPollingInterval = TCA_DEFAULT_SUBSCRIBER_POLLING_INTERVAL_MS; + + // publisher defaults + publisherMaxBatchSize = TCA_DEFAULT_PUBLISHER_MAX_BATCH_QUEUE_SIZE; + publisherMaxRecoveryQueueSize = TCA_DEFAULT_PUBLISHER_MAX_RECOVERY_QUEUE_SIZE; + publisherPollingInterval = TCA_DEFAULT_PUBLISHER_POLLING_INTERVAL_MS; + + } + + public String getSubscriberHostName() { + return subscriberHostName; + } + + public Integer getSubscriberHostPort() { + return subscriberHostPort; + } + + public String getSubscriberTopicName() { + return subscriberTopicName; + } + + public String getSubscriberProtocol() { + return subscriberProtocol; + } + + public String getSubscriberUserName() { + return subscriberUserName; + } + + public String getSubscriberUserPassword() { + return subscriberUserPassword; + } + + public String getSubscriberContentType() { + return subscriberContentType; + } + + public String getSubscriberConsumerId() { + return subscriberConsumerId; + } + + public String getSubscriberConsumerGroup() { + return subscriberConsumerGroup; + } + + public Integer getSubscriberTimeoutMS() { + return subscriberTimeoutMS; + } + + public Integer getSubscriberMessageLimit() { + return subscriberMessageLimit; + } + + public Integer getSubscriberPollingInterval() { + return subscriberPollingInterval; + } + + public String getPublisherHostName() { + return publisherHostName; + } + + public Integer getPublisherHostPort() { + return publisherHostPort; + } + + public String getPublisherTopicName() { + return publisherTopicName; + } + + public String getPublisherProtocol() { + return publisherProtocol; + } + + public String getPublisherUserName() { + return publisherUserName; + } + + public String getPublisherUserPassword() { + return publisherUserPassword; + } + + public String getPublisherContentType() { + return publisherContentType; + } + + public Integer getPublisherMaxBatchSize() { + return publisherMaxBatchSize; + } + + public Integer getPublisherMaxRecoveryQueueSize() { + return publisherMaxRecoveryQueueSize; + } + + public Integer getPublisherPollingInterval() { + return publisherPollingInterval; + } + + + public void setSubscriberHostName(String subscriberHostName) { + this.subscriberHostName = subscriberHostName; + } + + public void setSubscriberHostPort(Integer subscriberHostPort) { + this.subscriberHostPort = subscriberHostPort; + } + + public void setSubscriberTopicName(String subscriberTopicName) { + this.subscriberTopicName = subscriberTopicName; + } + + public void setSubscriberProtocol(String subscriberProtocol) { + this.subscriberProtocol = subscriberProtocol; + } + + public void setSubscriberUserName(String subscriberUserName) { + this.subscriberUserName = subscriberUserName; + } + + public void setSubscriberUserPassword(String subscriberUserPassword) { + this.subscriberUserPassword = subscriberUserPassword; + } + + public void setPublisherHostName(String publisherHostName) { + this.publisherHostName = publisherHostName; + } + + public void setPublisherHostPort(Integer publisherHostPort) { + this.publisherHostPort = publisherHostPort; + } + + public void setPublisherTopicName(String publisherTopicName) { + this.publisherTopicName = publisherTopicName; + } + + public void setPublisherProtocol(String publisherProtocol) { + this.publisherProtocol = publisherProtocol; + } + + public void setPublisherUserName(String publisherUserName) { + this.publisherUserName = publisherUserName; + } + + public void setPublisherUserPassword(String publisherUserPassword) { + this.publisherUserPassword = publisherUserPassword; + } + + @Override + public String toString() { + return Objects.toStringHelper(this) + .add("subscriberHostName", subscriberHostName) + .add("subscriberHostPort", subscriberHostPort) + .add("subscriberTopicName", subscriberTopicName) + .add("subscriberProtocol", subscriberProtocol) + .add("subscriberUserName", subscriberUserName) + .add("subscriberContentType", subscriberContentType) + .add("subscriberConsumerId", subscriberConsumerId) + .add("subscriberConsumerGroup", subscriberConsumerGroup) + .add("subscriberTimeoutMS", subscriberTimeoutMS) + .add("subscriberMessageLimit", subscriberMessageLimit) + .add("subscriberPollingInterval", subscriberPollingInterval) + .add("publisherHostName", publisherHostName) + .add("publisherHostPort", publisherHostPort) + .add("publisherTopicName", publisherTopicName) + .add("publisherProtocol", publisherProtocol) + .add("publisherUserName", publisherUserName) + .add("publisherContentType", publisherContentType) + .add("publisherMaxBatchSize", publisherMaxBatchSize) + .add("publisherMaxRecoveryQueueSize", publisherMaxRecoveryQueueSize) + .add("publisherPollingInterval", publisherPollingInterval) + .toString(); + } +} diff --git a/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/settings/TCAPolicyPreferences.java b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/settings/TCAPolicyPreferences.java new file mode 100644 index 0000000..cbbf550 --- /dev/null +++ b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/settings/TCAPolicyPreferences.java @@ -0,0 +1,36 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.settings; + +import org.openecomp.dcae.analytics.common.cdap.settings.CDAPAppPreferences; +import org.openecomp.dcae.analytics.model.domain.policy.tca.TCAPolicy; + +/** + * A wrapper over {@link TCAPolicy} to act as app Preferences as TCA Policy is passed + * by controller as runtime arguments from CDAP app preferences + * <p> + * @author Rajiv Singla. Creation Date: 11/29/2016. + */ +public class TCAPolicyPreferences extends TCAPolicy implements CDAPAppPreferences { + + private static final long serialVersionUID = -2957485388641574043L; + +} diff --git a/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/utils/AppPreferencesToPublisherConfigMapper.java b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/utils/AppPreferencesToPublisherConfigMapper.java new file mode 100644 index 0000000..f332681 --- /dev/null +++ b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/utils/AppPreferencesToPublisherConfigMapper.java @@ -0,0 +1,82 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.utils; + +import com.google.common.base.Function; +import org.openecomp.dcae.analytics.dmaap.domain.config.DMaaPMRPublisherConfig; +import org.openecomp.dcae.analytics.tca.settings.TCAAppPreferences; + +import javax.annotation.Nonnull; + +import static org.openecomp.dcae.analytics.common.utils.ValidationUtils.isEmpty; + +/** + * Function which translates {@link TCAAppPreferences} to {@link DMaaPMRPublisherConfig} + * + * @author Rajiv Singla. Creation Date: 11/17/2016. + */ +public class AppPreferencesToPublisherConfigMapper implements Function<TCAAppPreferences, DMaaPMRPublisherConfig> { + + public static DMaaPMRPublisherConfig map(final TCAAppPreferences tcaAppPreferences) { + return new AppPreferencesToPublisherConfigMapper().apply(tcaAppPreferences); + } + + @Nonnull + @Override + public DMaaPMRPublisherConfig apply(@Nonnull TCAAppPreferences tcaAppPreferences) { + + // Create a new publisher settings builder + final DMaaPMRPublisherConfig.Builder publisherConfigBuilder = new DMaaPMRPublisherConfig.Builder( + tcaAppPreferences.getPublisherHostName(), tcaAppPreferences.getPublisherTopicName()); + + // Setup up any optional publisher parameters if they are present + final Integer publisherHostPort = tcaAppPreferences.getPublisherHostPort(); + if (publisherHostPort != null) { + publisherConfigBuilder.setPortNumber(publisherHostPort); + } + final String publisherProtocol = tcaAppPreferences.getPublisherProtocol(); + if (!isEmpty(publisherProtocol)) { + publisherConfigBuilder.setProtocol(publisherProtocol); + } + final String publisherUserName = tcaAppPreferences.getPublisherUserName(); + if (!isEmpty(publisherUserName)) { + publisherConfigBuilder.setUserName(publisherUserName); + } + final String publisherUserPassword = tcaAppPreferences.getPublisherUserPassword(); + if (!isEmpty(publisherUserPassword)) { + publisherConfigBuilder.setUserPassword(publisherUserPassword); + } + final String publisherContentType = tcaAppPreferences.getPublisherContentType(); + if (!isEmpty(publisherContentType)) { + publisherConfigBuilder.setContentType(publisherContentType); + } + final Integer publisherMaxBatchSize = tcaAppPreferences.getPublisherMaxBatchSize(); + if (publisherMaxBatchSize != null) { + publisherConfigBuilder.setMaxBatchSize(publisherMaxBatchSize); + } + final Integer publisherMaxRecoveryQueueSize = tcaAppPreferences.getPublisherMaxRecoveryQueueSize(); + if (publisherMaxRecoveryQueueSize != null) { + publisherConfigBuilder.setMaxRecoveryQueueSize(publisherMaxRecoveryQueueSize); + } + + return publisherConfigBuilder.build(); + } +} diff --git a/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/utils/AppPreferencesToSubscriberConfigMapper.java b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/utils/AppPreferencesToSubscriberConfigMapper.java new file mode 100644 index 0000000..d0e7f1f --- /dev/null +++ b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/utils/AppPreferencesToSubscriberConfigMapper.java @@ -0,0 +1,99 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.utils; + +import com.google.common.base.Function; +import org.openecomp.dcae.analytics.dmaap.domain.config.DMaaPMRSubscriberConfig; +import org.openecomp.dcae.analytics.tca.settings.TCAAppPreferences; + +import javax.annotation.Nonnull; + +import static org.openecomp.dcae.analytics.common.utils.ValidationUtils.isEmpty; + +/** + * Function which translates {@link TCAAppPreferences} to {@link DMaaPMRSubscriberConfig} + * + * @author Rajiv Singla. Creation Date: 11/17/2016. + */ +public class AppPreferencesToSubscriberConfigMapper implements Function<TCAAppPreferences, DMaaPMRSubscriberConfig> { + + public static DMaaPMRSubscriberConfig map(final TCAAppPreferences tcaAppPreferences) { + return new AppPreferencesToSubscriberConfigMapper().apply(tcaAppPreferences); + } + + @Nonnull + @Override + public DMaaPMRSubscriberConfig apply(@Nonnull TCAAppPreferences tcaAppPreferences) { + + // Create a new subscriber settings builder + final DMaaPMRSubscriberConfig.Builder subscriberConfigBuilder = new DMaaPMRSubscriberConfig.Builder( + tcaAppPreferences.getSubscriberHostName(), tcaAppPreferences.getSubscriberTopicName()); + + // Setup up any optional subscriber parameters if they are present + final Integer subscriberHostPortNumber = tcaAppPreferences.getSubscriberHostPort(); + if (subscriberHostPortNumber != null) { + subscriberConfigBuilder.setPortNumber(subscriberHostPortNumber); + } + + final String subscriberProtocol = tcaAppPreferences.getSubscriberProtocol(); + if (!isEmpty(subscriberProtocol)) { + subscriberConfigBuilder.setProtocol(subscriberProtocol); + } + + final String subscriberUserName = tcaAppPreferences.getSubscriberUserName(); + if (!isEmpty(subscriberUserName)) { + subscriberConfigBuilder.setUserName(subscriberUserName); + } + + final String subscriberUserPassword = tcaAppPreferences.getSubscriberUserPassword(); + if (!isEmpty(subscriberUserPassword)) { + subscriberConfigBuilder.setUserPassword(subscriberUserPassword); + } + + final String subscriberContentType = tcaAppPreferences.getSubscriberContentType(); + if (!isEmpty(subscriberContentType)) { + subscriberConfigBuilder.setContentType(subscriberContentType); + } + + final String subscriberConsumerId = tcaAppPreferences.getSubscriberConsumerId(); + if (!isEmpty(subscriberConsumerId)) { + subscriberConfigBuilder.setConsumerId(subscriberConsumerId); + } + + final String subscriberConsumerGroup = tcaAppPreferences.getSubscriberConsumerGroup(); + if (!isEmpty(subscriberConsumerGroup)) { + subscriberConfigBuilder.setConsumerGroup(subscriberConsumerGroup); + } + + final Integer subscriberTimeoutMS = tcaAppPreferences.getSubscriberTimeoutMS(); + if (subscriberTimeoutMS != null) { + subscriberConfigBuilder.setTimeoutMS(subscriberTimeoutMS); + } + final Integer subscriberMessageLimit = tcaAppPreferences.getSubscriberMessageLimit(); + if (subscriberMessageLimit != null) { + subscriberConfigBuilder.setMessageLimit(subscriberMessageLimit); + } + + // return Subscriber settings + return subscriberConfigBuilder.build(); + + } +} diff --git a/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/utils/TCAUtils.java b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/utils/TCAUtils.java new file mode 100644 index 0000000..27df27f --- /dev/null +++ b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/utils/TCAUtils.java @@ -0,0 +1,825 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.utils; + +import co.cask.cdap.api.RuntimeContext; +import com.google.common.base.Function; +import com.google.common.base.Optional; +import com.google.common.base.Predicate; +import com.google.common.base.Predicates; +import com.google.common.base.Supplier; +import com.google.common.base.Suppliers; +import com.google.common.collect.HashBasedTable; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Table; +import com.jayway.jsonpath.DocumentContext; +import com.jayway.jsonpath.JsonPath; +import com.jayway.jsonpath.TypeRef; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.tuple.ImmutablePair; +import org.apache.commons.lang3.tuple.Pair; +import org.openecomp.dcae.analytics.common.AnalyticsConstants; +import org.openecomp.dcae.analytics.common.exception.DCAEAnalyticsRuntimeException; +import org.openecomp.dcae.analytics.common.exception.MessageProcessingException; +import org.openecomp.dcae.analytics.common.service.processor.AbstractMessageProcessor; +import org.openecomp.dcae.analytics.common.service.processor.GenericMessageChainProcessor; +import org.openecomp.dcae.analytics.model.domain.cef.CommonEventHeader; +import org.openecomp.dcae.analytics.model.domain.cef.EventListener; +import org.openecomp.dcae.analytics.model.domain.cef.EventSeverity; +import org.openecomp.dcae.analytics.model.domain.policy.tca.Direction; +import org.openecomp.dcae.analytics.model.domain.policy.tca.MetricsPerFunctionalRole; +import org.openecomp.dcae.analytics.model.domain.policy.tca.TCAPolicy; +import org.openecomp.dcae.analytics.model.domain.policy.tca.Threshold; +import org.openecomp.dcae.analytics.model.facade.tca.AAI; +import org.openecomp.dcae.analytics.model.facade.tca.TCAVESResponse; +import org.openecomp.dcae.analytics.model.util.AnalyticsModelJsonUtils; +import org.openecomp.dcae.analytics.tca.persistance.TCAVESAlertEntity; +import org.openecomp.dcae.analytics.tca.processor.TCACEFJsonProcessor; +import org.openecomp.dcae.analytics.tca.processor.TCACEFPolicyDomainFilter; +import org.openecomp.dcae.analytics.tca.processor.TCACEFPolicyFunctionalRoleFilter; +import org.openecomp.dcae.analytics.tca.processor.TCACEFPolicyThresholdsProcessor; +import org.openecomp.dcae.analytics.tca.processor.TCACEFProcessorContext; +import org.openecomp.dcae.analytics.tca.settings.TCAAppPreferences; +import org.openecomp.dcae.analytics.tca.settings.TCAPolicyPreferences; +import org.openecomp.dcae.analytics.tca.validator.TCAPolicyPreferencesValidator; +import org.openecomp.dcae.analytics.tca.validator.TCAPreferencesValidator; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.SortedMap; +import java.util.TreeMap; +import java.util.UUID; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +import static com.google.common.collect.Lists.newArrayList; +import static org.openecomp.dcae.analytics.common.AnalyticsConstants.TCA_POLICY_METRICS_PER_FUNCTIONAL_ROLE_PATH; +import static org.openecomp.dcae.analytics.common.utils.ValidationUtils.validateSettings; + +/** + * Utility Helper methods for TCA sub module only. Extends {@link AnalyticsModelJsonUtils} to get + * pre configured Json Object Mapper understand serialization and deserialization of CEF Message + * and TCA Policy + * + * @author Rajiv Singla. Creation Date: 10/24/2016. + */ +public abstract class TCAUtils extends AnalyticsModelJsonUtils { + + private static final Logger LOG = LoggerFactory.getLogger(TCAUtils.class); + + /** + * Threshold Comparator which is used to order thresholds based on their severity e.g. ( CRITICAL, MAJOR, MINOR, + * WARNING ) + */ + private static final Comparator<Threshold> THRESHOLD_COMPARATOR = new Comparator<Threshold>() { + @Override + public int compare(Threshold threshold1, Threshold threshold2) { + return threshold1.getSeverity().compareTo(threshold2.getSeverity()); + } + }; + + + /** + * {@link Function} that extracts {@link TCAPolicy#getMetricsPerFunctionalRole()} from {@link TCAPolicy} + * + * @return TCA Policy Metrics Per Functional Roles List + */ + public static Function<TCAPolicy, List<MetricsPerFunctionalRole>> tcaPolicyMetricsExtractorFunction() { + return new Function<TCAPolicy, List<MetricsPerFunctionalRole>>() { + @Nullable + @Override + public List<MetricsPerFunctionalRole> apply(@Nonnull TCAPolicy tcaPolicy) { + return tcaPolicy.getMetricsPerFunctionalRole(); + } + }; + } + + /** + * {@link Function} that extracts {@link MetricsPerFunctionalRole#getFunctionalRole()} from + * {@link MetricsPerFunctionalRole} + * + * @return Functional role or a Metrics Per Functional Role object + */ + public static Function<MetricsPerFunctionalRole, String> tcaFunctionalRoleExtractorFunction() { + return new Function<MetricsPerFunctionalRole, String>() { + @Override + public String apply(@Nonnull MetricsPerFunctionalRole metricsPerFunctionalRole) { + return metricsPerFunctionalRole.getFunctionalRole(); + } + }; + } + + + /** + * Extracts {@link TCAPolicy} Functional Roles + * + * @param tcaPolicy TCA Policy + * @return List of functional Roles in the tca Policy + */ + public static List<String> getPolicyFunctionalRoles(@Nonnull final TCAPolicy tcaPolicy) { + final List<MetricsPerFunctionalRole> metricsPerFunctionalRoles = + tcaPolicyMetricsExtractorFunction().apply(tcaPolicy); + + return Lists.transform(metricsPerFunctionalRoles, tcaFunctionalRoleExtractorFunction()); + } + + /** + * A {@link Supplier} which caches {@link TCAPolicy} Functional Roles as they are not expected to + * change during runtime + * + * @param tcaPolicy TCA Policy + * @return a Supplier that memoize the Functional roles + */ + public static Supplier<List<String>> getPolicyFunctionalRoleSupplier(@Nonnull final TCAPolicy tcaPolicy) { + return Suppliers.memoize(new Supplier<List<String>>() { + @Override + public List<String> get() { + return getPolicyFunctionalRoles(tcaPolicy); + } + }); + } + + + /** + * Creates a Table to lookup thresholds of a {@link TCAPolicy} by its Functional Role and Threshold Field path + * + * @param tcaPolicy TCA Policy + * @return A table with Keys of functional role and field path containing List of threshold as values + */ + public static Table<String, String, List<Threshold>> getPolicyFRThresholdsTable(final TCAPolicy tcaPolicy) { + final Table<String, String, List<Threshold>> domainFRTable = HashBasedTable.create(); + for (MetricsPerFunctionalRole metricsPerFunctionalRole : tcaPolicy.getMetricsPerFunctionalRole()) { + final String functionalRole = metricsPerFunctionalRole.getFunctionalRole(); + final List<Threshold> thresholds = metricsPerFunctionalRole.getThresholds(); + for (Threshold threshold : thresholds) { + final List<Threshold> existingThresholds = domainFRTable.get(functionalRole, threshold.getFieldPath()); + if (existingThresholds == null) { + final LinkedList<Threshold> newThresholdList = new LinkedList<>(); + newThresholdList.add(threshold); + domainFRTable.put(functionalRole, threshold.getFieldPath(), newThresholdList); + } else { + domainFRTable.get(functionalRole, threshold.getFieldPath()).add(threshold); + } + } + } + return domainFRTable; + } + + + /** + * A {@link Supplier} which caches Policy Functional Role and Threshold Field Path Thresholds lookup table + * + * @param tcaPolicy TCA Policy + * @return Cached Supplier for table with Keys of functional role and field path containing thresholds as values + */ + public static Supplier<Table<String, String, List<Threshold>>> getPolicyFRThresholdsTableSupplier + (final TCAPolicy tcaPolicy) { + return Suppliers.memoize(new Supplier<Table<String, String, List<Threshold>>>() { + @Override + public Table<String, String, List<Threshold>> get() { + return getPolicyFRThresholdsTable(tcaPolicy); + } + }); + } + + + /** + * Parses and validates Runtime Arguments to {@link TCAAppPreferences} object + * + * @param runtimeContext Runtime Context + * + * @return validated runtime arguments as {@link TCAAppPreferences} object + */ + public static TCAAppPreferences getValidatedTCAAppPreferences(final RuntimeContext runtimeContext) { + // Parse runtime arguments + final Map<String, String> runtimeArguments = runtimeContext.getRuntimeArguments(); + final TCAAppPreferences tcaAppPreferences = + ANALYTICS_MODEL_OBJECT_MAPPER.convertValue(runtimeArguments, TCAAppPreferences.class); + + // Update values of app preferences based on controller passed arguments if required + final TCAAppPreferences updatedTCAAppPreferences = + updateDMaaPPubSubValues(runtimeArguments, tcaAppPreferences); + + // Validate runtime arguments + validateSettings(updatedTCAAppPreferences, new TCAPreferencesValidator()); + + return tcaAppPreferences; + } + + + /** + * Updates DMaaP Subscriber and Publisher Urls if present in runtime arguments. + * Maps runtime arguments property - dmaap.in.event-input.dmaapUrl to Subscriber host, port and topic + * Maps runtime arguments property - dmaap.out.alert-output.dmaapUrl to Publisher host, port and topic + * + * @param runtimeArguments Runtime arguments passed in to TCA App by controller + * @param tcaAppPreferences TCA App Preferences + * + * @return TCA App Preferences which updated Publisher and Subscriber host,port and topic values + */ + public static TCAAppPreferences updateDMaaPPubSubValues(final Map<String, String> runtimeArguments, + final TCAAppPreferences tcaAppPreferences) { + + final String subscriberPropertyKey = "dmaap.in.event-input.dmaapUrl"; + final String subscriberPropertyValue = runtimeArguments.get(subscriberPropertyKey); + + if (subscriberPropertyValue != null) { + LOG.debug("Updating value for DMaaP Subscriber to values provided in property: {} with value: {}", + subscriberPropertyKey, subscriberPropertyValue); + final URL subscriberUrl = parseURL(subscriberPropertyValue); + tcaAppPreferences.setSubscriberProtocol(subscriberUrl.getProtocol()); + tcaAppPreferences.setSubscriberHostName(subscriberUrl.getHost()); + final int subscriberUrlPort = subscriberUrl.getPort() != -1 ? + Integer.valueOf(subscriberUrl.getPort()) : getDefaultDMaaPPort(subscriberUrl.getProtocol()); + tcaAppPreferences.setSubscriberHostPort(subscriberUrlPort); + tcaAppPreferences.setSubscriberTopicName(subscriberUrl.getPath().substring(1)); + } + + final String subscriberUserNamePropertyKey = "dmaap.in.event-input.dmaapUserName"; + if (runtimeArguments.containsKey(subscriberUserNamePropertyKey)) { + tcaAppPreferences.setSubscriberUserName(runtimeArguments.get(subscriberUserNamePropertyKey)); + } + final String subscriberPasswordPropertyKey = "dmaap.in.event-input.dmaapPassword"; + if (runtimeArguments.containsKey(subscriberPasswordPropertyKey)) { + tcaAppPreferences.setSubscriberUserPassword(runtimeArguments.get(subscriberPasswordPropertyKey)); + } + + final String publisherPropertyKey = "dmaap.out.alert-output.dmaapUrl"; + final String publisherPropertyValue = runtimeArguments.get(publisherPropertyKey); + if (publisherPropertyValue != null) { + LOG.debug("Updating value for DMaaP Publisher to values provided in property: {} with value: {}", + publisherPropertyKey, publisherPropertyValue); + final URL publisherUrl = parseURL(publisherPropertyValue); + tcaAppPreferences.setPublisherProtocol(publisherUrl.getProtocol()); + tcaAppPreferences.setPublisherHostName(publisherUrl.getHost()); + final int publisherUrlPort = publisherUrl.getPort() != -1 ? + Integer.valueOf(publisherUrl.getPort()) : getDefaultDMaaPPort(publisherUrl.getProtocol()); + tcaAppPreferences.setPublisherHostPort(publisherUrlPort); + tcaAppPreferences.setPublisherTopicName(publisherUrl.getPath().substring(1)); + } + + final String publisherUserNamePropertyKey = "dmaap.out.alert-output.dmaapUserName"; + if (runtimeArguments.containsKey(publisherUserNamePropertyKey)) { + tcaAppPreferences.setPublisherUserName(runtimeArguments.get(publisherUserNamePropertyKey)); + } + final String publisherPasswordPropertyKey = "dmaap.out.alert-output.dmaapPassword"; + if (runtimeArguments.containsKey(publisherPasswordPropertyKey)) { + tcaAppPreferences.setPublisherUserPassword(runtimeArguments.get(publisherPasswordPropertyKey)); + } + + + return tcaAppPreferences; + } + + /** + * Sets up default DMaaP Port if not provided with DMaaP URL + * + * @param protocol protocol e.g. http or https + * + * @return default DMaaP MR port number + */ + private static int getDefaultDMaaPPort(final String protocol) { + if ("http".equals(protocol)) { + return 3904; + } else if ("https".equals(protocol)) { + return 3905; + } else { + return 80; + } + } + + /** + * Parses provided DMaaP MR URL string to {@link URL} object + * + * @param urlString url string + * + * @return url object + */ + private static URL parseURL(final String urlString) { + try { + return new URL(urlString); + } catch (MalformedURLException e) { + final String errorMessage = String.format("Invalid URL format: %s", urlString); + throw new DCAEAnalyticsRuntimeException(errorMessage, LOG, e); + } + } + + + /** + * Creates a {@link GenericMessageChainProcessor} of {@link TCACEFJsonProcessor}, + * {@link TCACEFPolicyDomainFilter} and {@link TCACEFPolicyFunctionalRoleFilter}s to + * filter out messages which does not match policy domain or functional role + * + * @param cefMessage CEF Message + * @param tcaPolicy TCA Policy + * @return Message Process Context after processing filter chain + */ + public static TCACEFProcessorContext filterCEFMessage(@Nullable final String cefMessage, + @Nonnull final TCAPolicy tcaPolicy) { + + final TCACEFJsonProcessor jsonProcessor = new TCACEFJsonProcessor(); + final TCACEFPolicyDomainFilter domainFilter = new TCACEFPolicyDomainFilter(); + final TCACEFPolicyFunctionalRoleFilter functionalRoleFilter = new TCACEFPolicyFunctionalRoleFilter(); + // Create a list of message processors + final ImmutableList<AbstractMessageProcessor<TCACEFProcessorContext>> messageProcessors = + ImmutableList.of(jsonProcessor, domainFilter, functionalRoleFilter); + final TCACEFProcessorContext processorContext = new TCACEFProcessorContext(cefMessage, tcaPolicy); + // Create a message processors chain + final GenericMessageChainProcessor<TCACEFProcessorContext> tcaProcessingChain = + new GenericMessageChainProcessor<>(messageProcessors, processorContext); + // process chain + return tcaProcessingChain.processChain(); + } + + + /** + * Extracts json path values for given json Field Paths from using Json path notation. Assumes + * that values extracted are always long + * + * @param message CEF Message + * @param jsonFieldPaths Json Field Paths + * @return Map containing key as json path and values as values associated with that json path + */ + public static Map<String, List<Long>> getJsonPathValue(@Nonnull String message, @Nonnull Set<String> + jsonFieldPaths) { + + final Map<String, List<Long>> jsonFieldPathMap = new HashMap<>(); + final DocumentContext documentContext = JsonPath.parse(message); + + for (String jsonFieldPath : jsonFieldPaths) { + final List<Long> jsonFieldValues = documentContext.read(jsonFieldPath, new TypeRef<List<Long>>() { + }); + // If Json Field Values are not or empty + if (jsonFieldValues != null && !jsonFieldValues.isEmpty()) { + // Filter out all null values in the filed values list + final List<Long> nonNullValues = Lists.newLinkedList(Iterables.filter(jsonFieldValues, + Predicates.<Long>notNull())); + // If there are non null values put them in the map + if (!nonNullValues.isEmpty()) { + jsonFieldPathMap.put(jsonFieldPath, nonNullValues); + } + } + } + + return jsonFieldPathMap; + } + + /** + * Computes if any CEF Message Fields have violated any Policy Thresholds. For the same policy field path + * it applies threshold in order of their severity and record the first threshold per message field path + * + * @param messageFieldValues Field Path Values extracted from CEF Message + * @param fieldThresholds Policy Thresholds for Field Path + * @return Optional of violated threshold for a field path + */ + public static Optional<Threshold> thresholdCalculator(final List<Long> messageFieldValues, final List<Threshold> + fieldThresholds) { + // order thresholds by severity + Collections.sort(fieldThresholds, THRESHOLD_COMPARATOR); + // Now apply each threshold to field values + for (Threshold fieldThreshold : fieldThresholds) { + for (Long messageFieldValue : messageFieldValues) { + final Boolean isThresholdViolated = + fieldThreshold.getDirection().operate(messageFieldValue, fieldThreshold.getThresholdValue()); + if (isThresholdViolated) { + return Optional.of(fieldThreshold); + } + } + } + return Optional.absent(); + } + + /** + * Prioritize Threshold to be reported in case there was multiple TCA violations in a single CEF message. + * Grabs first highest priority violated threshold + * + * @param violatedThresholdsMap Map containing field Path and associated violated Thresholds + * @return First Highest priority violated threshold + */ + public static Threshold prioritizeThresholdViolations(final Map<String, Threshold> violatedThresholdsMap) { + + final List<Threshold> violatedThresholds = newArrayList(violatedThresholdsMap.values()); + + if (violatedThresholds.size() == 1) { + return violatedThresholds.get(0); + } + Collections.sort(violatedThresholds, THRESHOLD_COMPARATOR); + // Just grab the first violated threshold with highest priority + return violatedThresholds.get(0); + } + + + /** + * Creates {@link MetricsPerFunctionalRole} object which contains violated thresholds + * + * @param tcaPolicy TCA Policy + * @param violatedThreshold Violated thresholds + * @param functionalRole Functiona Role + * + * @return MetricsPerFunctionalRole object containing one highest severity violated threshold + */ + public static MetricsPerFunctionalRole createViolatedMetrics(@Nonnull final TCAPolicy tcaPolicy, + @Nonnull final Threshold violatedThreshold, + @Nonnull final String functionalRole) { + + final ArrayList<MetricsPerFunctionalRole> metricsPerFunctionalRoles = newArrayList( + Iterables.filter(tcaPolicy.getMetricsPerFunctionalRole(), new Predicate<MetricsPerFunctionalRole>() { + @Override + public boolean apply(@Nonnull MetricsPerFunctionalRole metricsPerFunctionalRole) { + return metricsPerFunctionalRole.getFunctionalRole().equals(functionalRole); + } + })); + // TCA policy must have only one metrics role per functional role + if (metricsPerFunctionalRoles.size() == 1) { + final MetricsPerFunctionalRole policyMetrics = metricsPerFunctionalRoles.get(0); + final MetricsPerFunctionalRole violatedMetrics = new MetricsPerFunctionalRole(); + violatedMetrics.setFunctionalRole(policyMetrics.getFunctionalRole()); + violatedMetrics.setPolicyScope(policyMetrics.getPolicyScope()); + violatedMetrics.setPolicyName(policyMetrics.getPolicyName()); + violatedMetrics.setPolicyVersion(policyMetrics.getPolicyVersion()); + violatedMetrics.setThresholds(ImmutableList.of(violatedThreshold)); + return violatedMetrics; + } else { + final String errorMessage = String.format("TCA Policy must contain functional Role: %s", functionalRole); + throw new MessageProcessingException(errorMessage, LOG, new IllegalStateException(errorMessage)); + } + } + + /** + * Computes threshold violations + * + * @param processorContext Filtered processor Context + * @return processor context with any threshold violations + */ + public static TCACEFProcessorContext computeThresholdViolations(final TCACEFProcessorContext processorContext) { + final TCACEFPolicyThresholdsProcessor policyThresholdsProcessor = new TCACEFPolicyThresholdsProcessor(); + return policyThresholdsProcessor.apply(processorContext); + } + + /** + * Creates {@link TCAVESResponse} object + * + * @param processorContext processor Context with violations + * @param tcaAppName TCA App Name + * + * @return TCA VES Response Message + */ + public static TCAVESResponse createNewTCAVESResponse(final TCACEFProcessorContext processorContext, + final String tcaAppName) { + + final MetricsPerFunctionalRole metricsPerFunctionalRole = processorContext.getMetricsPerFunctionalRole(); + // confirm violations are indeed present + if (metricsPerFunctionalRole == null) { + final String errorMessage = "No violations metrics. Unable to create VES Response"; + throw new MessageProcessingException(errorMessage, LOG, new IllegalArgumentException(errorMessage)); + } + + final String functionalRole = metricsPerFunctionalRole.getFunctionalRole(); + final Threshold violatedThreshold = metricsPerFunctionalRole.getThresholds().get(0); + final EventListener eventListener = processorContext.getCEFEventListener(); + final CommonEventHeader commonEventHeader = eventListener.getEvent().getCommonEventHeader(); + + final TCAVESResponse tcavesResponse = new TCAVESResponse(); + // ClosedLoopControlName included in the DCAE configuration Policy + tcavesResponse.setClosedLoopControlName(violatedThreshold.getClosedLoopControlName()); + // version included in the DCAE configuration Policy + tcavesResponse.setVersion(violatedThreshold.getVersion()); + // Generate a UUID for this output message + tcavesResponse.setRequestID(UUID.randomUUID().toString()); + // commonEventHeader.startEpochMicrosec from the received VES measurementsForVfScaling message + tcavesResponse.setClosedLoopAlarmStart(commonEventHeader.getStartEpochMicrosec()); + // Concatenate name of this DCAE instance and name for this TCA instance, separated by dot + // TODO: Find out how to get this field + tcavesResponse.setClosedLoopEventClient("DCAE_INSTANCE_ID." + tcaAppName); + + final AAI aai = new AAI(); + tcavesResponse.setAai(aai); + + // vLoadBalancer specific settings + if (isFunctionalRoleVLoadBalancer(functionalRole)) { + // Hard Coded - "VM" + tcavesResponse.setTargetType(AnalyticsConstants.LOAD_BALANCER_TCA_VES_RESPONSE_TARGET_TYPE); + // Hard Coded - "vserver.vserver-name" + tcavesResponse.setTarget(AnalyticsConstants.LOAD_BALANCER_TCA_VES_RESPONSE_TARGET); + aai.setGenericServerId(commonEventHeader.getReportingEntityName()); + } else { + // Hard Coded - "VNF" + tcavesResponse.setTargetType(AnalyticsConstants.TCA_VES_RESPONSE_TARGET_TYPE); + // Hard Coded - "generic-vnf.vnf-id" + tcavesResponse.setTarget(AnalyticsConstants.TCA_VES_RESPONSE_TARGET); + // commonEventHeader.reportingEntityName from the received VES measurementsForVfScaling message (value for + // the data element used in A&AI) + aai.setGenericVNFId(commonEventHeader.getReportingEntityName()); + } + + // Hard Coded - "DCAE" + tcavesResponse.setFrom(AnalyticsConstants.TCA_VES_RESPONSE_FROM); + // policyScope included in the DCAE configuration Policy + tcavesResponse.setPolicyScope(metricsPerFunctionalRole.getPolicyScope()); + // policyName included in the DCAE configuration Policy + tcavesResponse.setPolicyName(metricsPerFunctionalRole.getPolicyName()); + // policyVersion included in the DCAE configuration Policy + tcavesResponse.setPolicyVersion(metricsPerFunctionalRole.getPolicyVersion()); + // Hard Coded - "ONSET" + tcavesResponse.setClosedLoopEventStatus(AnalyticsConstants.TCA_VES_RESPONSE_CLOSED_LOOP_EVENT_STATUS); + + return tcavesResponse; + } + + /** + * Determines if Functional Role is vLoadBlanacer + * + * @param functionalRole functional Role to check + * + * @return return true if functional role is for vLoadBalancer + */ + private static boolean isFunctionalRoleVLoadBalancer(final String functionalRole) { + return functionalRole.equals(AnalyticsConstants.LOAD_BALANCER_FUNCTIONAL_ROLE); + } + + + /** + * Extract Domain and functional Role from processor context if present + * + * @param processorContext processor context + * @return Tuple of domain and functional role + */ + public static Pair<String, String> getDomainAndFunctionalRole(@Nullable final TCACEFProcessorContext + processorContext) { + + String domain = null; + String functionalRole = null; + + + if (processorContext != null && + processorContext.getCEFEventListener() != null && + processorContext.getCEFEventListener().getEvent() != null && + processorContext.getCEFEventListener().getEvent().getCommonEventHeader() != null) { + final CommonEventHeader commonEventHeader = processorContext.getCEFEventListener().getEvent() + .getCommonEventHeader(); + + if (commonEventHeader.getDomain() != null) { + domain = commonEventHeader.getDomain(); + } + + if (commonEventHeader.getFunctionalRole() != null) { + functionalRole = commonEventHeader.getFunctionalRole(); + } + + } + + return new ImmutablePair<>(domain, functionalRole); + + } + + /** + * Function that extracts alert message string from {@link TCAVESAlertEntity} + */ + public static final Function<TCAVESAlertEntity, String> MAP_ALERT_ENTITY_TO_ALERT_STRING_FUNCTION = + new Function<TCAVESAlertEntity, String>() { + @Override + public String apply(TCAVESAlertEntity alertEntity) { + return alertEntity == null ? null : alertEntity.getAlertMessage(); + } + }; + + /** + * Extracts alert message strings from {@link TCAVESAlertEntity} + * @param alertEntities collection of alert entities + * @return List of alert message strings + */ + public static List<String> extractAlertFromAlertEntities(final Collection<TCAVESAlertEntity> alertEntities) { + return Lists.transform(newArrayList(alertEntities), MAP_ALERT_ENTITY_TO_ALERT_STRING_FUNCTION); + } + + + /** + * Converts Runtime Arguments to {@link TCAPolicyPreferences} object + * + * @param runtimeContext CDAP Runtime Arguments + * + * @return TCA Policy Preferences + */ + public static TCAPolicy getValidatedTCAPolicyPreferences(final RuntimeContext runtimeContext) { + + final Map<String, String> runtimeArguments = runtimeContext.getRuntimeArguments(); + final TreeMap<String, String> sortedRuntimeArguments = new TreeMap<>(runtimeArguments); + + LOG.debug("Printing all Received Runtime Arguments:"); + for (Map.Entry<String, String> runtimeArgsEntry : sortedRuntimeArguments.entrySet()) { + LOG.debug("{}:{}", runtimeArgsEntry.getKey(), runtimeArgsEntry.getValue()); + } + + // extract TCA Policy Domain from Runtime Arguments + final String policyDomain = sortedRuntimeArguments.get(AnalyticsConstants.TCA_POLICY_DOMAIN_PATH); + + // create new TCA Policy object + final TCAPolicyPreferences tcaPolicyPreferences = new TCAPolicyPreferences(); + tcaPolicyPreferences.setDomain(policyDomain); + + // filter out other non relevant fields which are not related to tca policy + final Map<String, String> tcaPolicyMap = filterMapByKeyNamePrefix(sortedRuntimeArguments, + TCA_POLICY_METRICS_PER_FUNCTIONAL_ROLE_PATH); + + // determine functional Roles + final Map<String, Map<String, String>> functionalRolesMap = + extractSubTree(tcaPolicyMap, 2, 3, AnalyticsConstants.TCA_POLICY_DELIMITER); + + // create metrics per functional role list + tcaPolicyPreferences.setMetricsPerFunctionalRole( + createTCAPolicyMetricsPerFunctionalRoleList(functionalRolesMap)); + + // validate tca Policy Preferences + validateSettings(tcaPolicyPreferences, new TCAPolicyPreferencesValidator()); + + LOG.info("Printing Effective TCA Policy: {}", tcaPolicyPreferences); + + return tcaPolicyPreferences; + } + + /** + * Creates {@link TCAPolicy} Metrics per Functional Role list + * + * @param functionalRolesMap Map containing functional Roles as key and corresponding values + * + * @return List of {@link MetricsPerFunctionalRole} + */ + public static List<MetricsPerFunctionalRole> createTCAPolicyMetricsPerFunctionalRoleList( + final Map<String, Map<String, String>> functionalRolesMap) { + + // create a new metrics per functional role list + final List<MetricsPerFunctionalRole> metricsPerFunctionalRoles = new LinkedList<>(); + + for (Map.Entry<String, Map<String, String>> functionalRolesEntry : functionalRolesMap.entrySet()) { + + // create new metrics per functional role instance + final MetricsPerFunctionalRole newMetricsPerFunctionalRole = + createNewMetricsPerFunctionalRole(functionalRolesEntry); + metricsPerFunctionalRoles.add(newMetricsPerFunctionalRole); + + // determine all threshold related values + final Map<String, String> thresholdsValuesMaps = + filterMapByKeyNamePrefix(functionalRolesEntry.getValue(), + AnalyticsConstants.TCA_POLICY_THRESHOLDS_PATH_POSTFIX); + + // create a map of all threshold values + final Map<String, Map<String, String>> thresholdsMap = + extractSubTree(thresholdsValuesMaps, 1, 2, + AnalyticsConstants.TCA_POLICY_DELIMITER); + + // add thresholds to nmetrics per functional roles threshold list + for (Map<String, String> thresholdMap : thresholdsMap.values()) { + newMetricsPerFunctionalRole.getThresholds().add(createNewThreshold(thresholdMap)); + } + + } + + return metricsPerFunctionalRoles; + } + + /** + * Creates new instance of TCA Policy {@link Threshold} with values extracted from thresholdMap + * + * @param thresholdMap threshold map with threshold values + * + * @return new instance of TCA Policy Threshold + */ + public static Threshold createNewThreshold(final Map<String, String> thresholdMap) { + final Threshold threshold = new Threshold(); + threshold.setClosedLoopControlName(thresholdMap.get("policy.closedLoopControlName")); + threshold.setVersion(thresholdMap.get("policy.version")); + threshold.setFieldPath(thresholdMap.get("policy.fieldPath")); + threshold.setDirection(Direction.valueOf(thresholdMap.get("policy.direction"))); + threshold.setSeverity(EventSeverity.valueOf(thresholdMap.get("policy.severity"))); + threshold.setThresholdValue(Long.valueOf(thresholdMap.get("policy.thresholdValue"))); + return threshold; + } + + /** + * Create new {@link MetricsPerFunctionalRole} instance with policy Name, policy Version and policy Scope + * extracted from given functionalRolesEntry + * + * @param functionalRolesEntry Functional Role Entry + * + * @return new instance of MetricsPerFunctionalRole + */ + public static MetricsPerFunctionalRole createNewMetricsPerFunctionalRole( + final Map.Entry<String, Map<String, String>> functionalRolesEntry) { + // determine functional Role + final String functionalRole = functionalRolesEntry.getKey(); + // determine functional Role thresholds + final Map<String, String> metricsPerFunctionalRoleThresholdsMap = functionalRolesEntry.getValue(); + final MetricsPerFunctionalRole metricsPerFunctionalRole = new MetricsPerFunctionalRole(); + final List<Threshold> thresholds = new LinkedList<>(); + metricsPerFunctionalRole.setThresholds(thresholds); + metricsPerFunctionalRole.setFunctionalRole(functionalRole); + // bind policyName, policyVersion and policyScope + metricsPerFunctionalRole.setPolicyName(metricsPerFunctionalRoleThresholdsMap.get("policyName")); + metricsPerFunctionalRole.setPolicyVersion(metricsPerFunctionalRoleThresholdsMap.get("policyVersion")); + metricsPerFunctionalRole.setPolicyScope(metricsPerFunctionalRoleThresholdsMap.get("policyScope")); + return metricsPerFunctionalRole; + } + + /** + * Converts a flattened key/value map which has keys delimited by a given delimiter. + * The start Index and end index extract the sub-key value and returns a new map containing + * sub-keys and values. + * + * @param actualMap actual Map + * @param startIndex start index + * @param endIndex end index + * @param delimiter delimiter + * + * @return Map with new sub tree map + */ + public static Map<String, Map<String, String>> extractSubTree( + final Map<String, String> actualMap, int startIndex, int endIndex, String delimiter) { + + final SortedMap<String, Map<String, String>> subTreeMap = new TreeMap<>(); + + // iterate over actual map entries + for (Map.Entry<String, String> actualMapEntry : actualMap.entrySet()) { + final String actualMapKey = actualMapEntry.getKey(); + final String actualMapValue = actualMapEntry.getValue(); + + // determine delimiter start and end index + final int keyStartIndex = StringUtils.ordinalIndexOf(actualMapKey, delimiter, startIndex); + final int keyEndIndex = StringUtils.ordinalIndexOf(actualMapKey, delimiter, endIndex); + final int keyLength = actualMapKey.length(); + + // extract sub-tree map + if (keyStartIndex != -1 && keyEndIndex != -1 && keyEndIndex > keyStartIndex && keyLength > keyEndIndex) { + final String thresholdKey = actualMapKey.substring(keyStartIndex + 1, keyEndIndex); + final Map<String, String> existingThresholdMap = subTreeMap.get(thresholdKey); + final String subMapKey = actualMapKey.substring(keyEndIndex + 1, keyLength); + if (existingThresholdMap == null) { + Map<String, String> newThresholdMap = new LinkedHashMap<>(); + newThresholdMap.put(subMapKey, actualMapValue); + subTreeMap.put(thresholdKey, newThresholdMap); + } else { + existingThresholdMap.put(subMapKey, actualMapValue); + } + + } + } + + return subTreeMap; + + } + + + /** + * Provides a view of underlying map that filters out entries with keys starting with give prefix + * + * @param actualMap Target map that needs to be filtered + * @param keyNamePrefix key prefix + * + * @return a view of actual map which only show entries which have give prefix + */ + public static Map<String, String> filterMapByKeyNamePrefix(final Map<String, String> actualMap, + final String keyNamePrefix) { + return Maps.filterKeys(actualMap, + new Predicate<String>() { + @Override + public boolean apply(@Nullable String key) { + return key != null && key.startsWith(keyNamePrefix); + } + }); + } + + +} diff --git a/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/validator/TCAAppConfigValidator.java b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/validator/TCAAppConfigValidator.java new file mode 100644 index 0000000..05b0331 --- /dev/null +++ b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/validator/TCAAppConfigValidator.java @@ -0,0 +1,60 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.validator; + +import org.openecomp.dcae.analytics.common.cdap.validation.CDAPAppSettingsValidator; +import org.openecomp.dcae.analytics.common.validation.GenericValidationResponse; +import org.openecomp.dcae.analytics.tca.settings.TCAAppConfig; + +import static org.openecomp.dcae.analytics.common.utils.ValidationUtils.isEmpty; + +/** + * <p> + * TCA App Config Validator validates any TCA App Config parameter values + * </p> + * + * @author Rajiv Singla. Creation Date: 10/24/2016. + */ +public class TCAAppConfigValidator implements CDAPAppSettingsValidator<TCAAppConfig, + GenericValidationResponse<TCAAppConfig>> { + + @Override + public GenericValidationResponse<TCAAppConfig> validateAppSettings(TCAAppConfig tcaAppConfig) { + + final GenericValidationResponse<TCAAppConfig> validationResponse = new GenericValidationResponse<>(); + + if (isEmpty(tcaAppConfig.getTcaSubscriberOutputStreamName())) { + validationResponse.addErrorMessage("tcaSubscriberOutputStreamName", + "tcaSubscriberOutputStreamName must be present"); + } + + if (isEmpty(tcaAppConfig.getTcaVESMessageStatusTableName())) { + validationResponse.addErrorMessage("tcaVESMessageStatusTableName", + "tcaVESMessageStatusTableName must be present"); + } + if (isEmpty(tcaAppConfig.getTcaVESAlertsTableName())) { + validationResponse.addErrorMessage("tcaVESAlertsTableName", + "tcaVESAlertsTableName must be present"); + } + + return validationResponse; + } +} diff --git a/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/validator/TCAPolicyPreferencesValidator.java b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/validator/TCAPolicyPreferencesValidator.java new file mode 100644 index 0000000..0ff0eb6 --- /dev/null +++ b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/validator/TCAPolicyPreferencesValidator.java @@ -0,0 +1,94 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.validator; + +import org.openecomp.dcae.analytics.common.cdap.validation.CDAPAppSettingsValidator; +import org.openecomp.dcae.analytics.common.validation.GenericValidationResponse; +import org.openecomp.dcae.analytics.model.domain.cef.EventSeverity; +import org.openecomp.dcae.analytics.model.domain.policy.tca.Direction; +import org.openecomp.dcae.analytics.model.domain.policy.tca.MetricsPerFunctionalRole; +import org.openecomp.dcae.analytics.model.domain.policy.tca.Threshold; +import org.openecomp.dcae.analytics.tca.settings.TCAPolicyPreferences; +import org.openecomp.dcae.analytics.tca.utils.TCAUtils; + +import java.util.List; + +import static org.openecomp.dcae.analytics.common.utils.ValidationUtils.isEmpty; + +/** + * Validates TCA Policy Preferences + * <p> + * @author Rajiv Singla. Creation Date: 11/29/2016. + */ +public class TCAPolicyPreferencesValidator implements CDAPAppSettingsValidator<TCAPolicyPreferences, + GenericValidationResponse<TCAPolicyPreferences>> { + + @Override + public GenericValidationResponse<TCAPolicyPreferences> validateAppSettings( + final TCAPolicyPreferences tcaPolicyPreferences) { + + final GenericValidationResponse<TCAPolicyPreferences> validationResponse = new GenericValidationResponse<>(); + + // validate TCA Policy must domain present + final String domain = tcaPolicyPreferences.getDomain(); + if (isEmpty(domain)) { + validationResponse.addErrorMessage("domain", "TCA Policy must have only one domain present"); + } + + // validate TCA Policy must have at least one functional role + final List<String> policyFunctionalRoles = TCAUtils.getPolicyFunctionalRoles(tcaPolicyPreferences); + if (policyFunctionalRoles.size() <= 0) { + validationResponse.addErrorMessage("metricsPerFunctionalRoles", + "TCA Policy must have at least one or more functional roles"); + } + + final List<MetricsPerFunctionalRole> metricsPerFunctionalRoles = + tcaPolicyPreferences.getMetricsPerFunctionalRole(); + + // validate each Functional Role must have at least one threshold + for (MetricsPerFunctionalRole metricsPerFunctionalRole : metricsPerFunctionalRoles) { + if (metricsPerFunctionalRole.getThresholds().size() <= 0) { + validationResponse.addErrorMessage("thresholds", + "TCA Policy Functional Role must have at least one threshold. " + + "Functional Role causing this validation error:" + metricsPerFunctionalRole); + } + } + + // validate each threshold must have non null - fieldPath, thresholdValue, direction and severity + for (MetricsPerFunctionalRole metricsPerFunctionalRole : metricsPerFunctionalRoles) { + final List<Threshold> functionalRoleThresholds = metricsPerFunctionalRole.getThresholds(); + for (Threshold functionalRoleThreshold : functionalRoleThresholds) { + final String fieldPath = functionalRoleThreshold.getFieldPath(); + final Long thresholdValue = functionalRoleThreshold.getThresholdValue(); + final Direction direction = functionalRoleThreshold.getDirection(); + final EventSeverity severity = functionalRoleThreshold.getSeverity(); + if (isEmpty(fieldPath) || thresholdValue == null || direction == null || severity == null) { + validationResponse.addErrorMessage("threshold", + "TCA Policy threshold must have fieldPath, thresholdValue, direction and severity present." + + "Threshold causing this validation error:" + functionalRoleThreshold); + } + } + } + + + return validationResponse; + } +} diff --git a/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/validator/TCAPreferencesValidator.java b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/validator/TCAPreferencesValidator.java new file mode 100644 index 0000000..a7cbbf5 --- /dev/null +++ b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/validator/TCAPreferencesValidator.java @@ -0,0 +1,63 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.validator; + +import org.openecomp.dcae.analytics.common.cdap.validation.CDAPAppSettingsValidator; +import org.openecomp.dcae.analytics.common.validation.GenericValidationResponse; +import org.openecomp.dcae.analytics.tca.settings.TCAAppPreferences; + +import static org.openecomp.dcae.analytics.common.utils.ValidationUtils.isEmpty; + +/** + * + * @author Rajiv Singla. Creation Date: 11/3/2016. + */ +public class TCAPreferencesValidator implements CDAPAppSettingsValidator<TCAAppPreferences, + GenericValidationResponse<TCAAppPreferences>> { + + @Override + public GenericValidationResponse<TCAAppPreferences> validateAppSettings(TCAAppPreferences appPreferences) { + + final GenericValidationResponse<TCAAppPreferences> validationResponse = new GenericValidationResponse<>(); + + // subscriber validations + final String subscriberHostName = appPreferences.getSubscriberHostName(); + if (isEmpty(subscriberHostName)) { + validationResponse.addErrorMessage("subscriberHostName", "Subscriber host name must be present"); + } + final String subscriberTopicName = appPreferences.getSubscriberTopicName(); + if (isEmpty(subscriberTopicName)) { + validationResponse.addErrorMessage("subscriberTopicName", "Subscriber topic name must be present"); + } + + // publisher validations + final String publisherHostName = appPreferences.getPublisherHostName(); + if (isEmpty(publisherHostName)) { + validationResponse.addErrorMessage("publisherHostName", "Publisher host name must be present"); + } + final String publisherTopicName = appPreferences.getPublisherTopicName(); + if (isEmpty(publisherTopicName)) { + validationResponse.addErrorMessage("publisherTopicName", "Publisher topic name must be present"); + } + + return validationResponse; + } +} diff --git a/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/worker/TCADMaaPMRPublisherJob.java b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/worker/TCADMaaPMRPublisherJob.java new file mode 100644 index 0000000..4a9a7ab --- /dev/null +++ b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/worker/TCADMaaPMRPublisherJob.java @@ -0,0 +1,189 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.worker; + +import co.cask.cdap.api.TxRunnable; +import co.cask.cdap.api.common.Bytes; +import co.cask.cdap.api.data.DatasetContext; +import co.cask.cdap.api.dataset.lib.CloseableIterator; +import co.cask.cdap.api.dataset.lib.KeyValue; +import co.cask.cdap.api.dataset.lib.ObjectMappedTable; +import co.cask.cdap.api.metrics.Metrics; +import co.cask.cdap.api.worker.WorkerContext; +import com.google.common.base.Joiner; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import org.openecomp.dcae.analytics.common.CDAPMetricsConstants; +import org.openecomp.dcae.analytics.common.exception.DCAEAnalyticsRuntimeException; +import org.openecomp.dcae.analytics.common.utils.HTTPUtils; +import org.openecomp.dcae.analytics.dmaap.domain.response.DMaaPMRPublisherResponse; +import org.openecomp.dcae.analytics.dmaap.service.publisher.DMaaPMRPublisher; +import org.openecomp.dcae.analytics.tca.persistance.TCAVESAlertEntity; +import org.openecomp.dcae.analytics.tca.persistance.TCAVESAlertsPersister; +import org.openecomp.dcae.analytics.tca.utils.TCAUtils; +import org.quartz.DisallowConcurrentExecution; +import org.quartz.Job; +import org.quartz.JobDataMap; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.quartz.PersistJobDataAfterExecution; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Date; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import static org.openecomp.dcae.analytics.common.AnalyticsConstants.CDAP_ALERTS_TABLE_VARIABLE_NAME; +import static org.openecomp.dcae.analytics.common.AnalyticsConstants.DMAAP_METRICS_VARIABLE_NAME; +import static org.openecomp.dcae.analytics.common.AnalyticsConstants.DMAAP_PUBLISHER_VARIABLE_NAME; +import static org.openecomp.dcae.analytics.common.AnalyticsConstants.WORKER_CONTEXT_VARIABLE_NAME; + +/** + * Quartz Job that will monitor any new alert messages in given TCA Alerts table and if any found publish them to + * DMaaP MR topic + *<p> + * @author Rajiv Singla. Creation Date: 11/17/2016. + */ +@DisallowConcurrentExecution +@PersistJobDataAfterExecution +@SuppressFBWarnings("SIC_INNER_SHOULD_BE_STATIC_ANON") +public class TCADMaaPMRPublisherJob implements Job { + + private static final Logger LOG = LoggerFactory.getLogger(TCADMaaPMRPublisherJob.class); + + @Override + public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { + + LOG.debug("Starting DMaaP MR Topic Publisher fetch Job. Next firing time will be: {}", + jobExecutionContext.getNextFireTime()); + + // Get Job Data Map + final JobDataMap jobDataMap = jobExecutionContext.getMergedJobDataMap(); + + // Fetch all Job Params from Job Data Map + final String cdapAlertsTableName = jobDataMap.getString(CDAP_ALERTS_TABLE_VARIABLE_NAME); + final WorkerContext workerContext = (WorkerContext) jobDataMap.get(WORKER_CONTEXT_VARIABLE_NAME); + final DMaaPMRPublisher publisher = (DMaaPMRPublisher) jobDataMap.get(DMAAP_PUBLISHER_VARIABLE_NAME); + final Metrics metrics = (Metrics) jobDataMap.get(DMAAP_METRICS_VARIABLE_NAME); + + LOG.debug("Start looking for new message in Alerts Table: {}", cdapAlertsTableName); + + // Get new alerts from alerts table + final Map<String, TCAVESAlertEntity> newAlertsMap = getNewAlertsMap(cdapAlertsTableName, workerContext); + + // If no new alerts are found - nothing to publish + if (newAlertsMap.isEmpty()) { + LOG.debug("No new alerts found in Alerts Table name: {}. Nothing to Publisher....", cdapAlertsTableName); + metrics.count(CDAPMetricsConstants.TCA_PUBLISHER_NO_NEW_ALERTS_LOOKUP_METRIC, 1); + return; + } + + final int newAlertsCount = newAlertsMap.size(); + LOG.debug("Found new alerts in Alerts Table name: {}. No of new alerts: {}", cdapAlertsTableName, + newAlertsCount); + metrics.count(CDAPMetricsConstants.TCA_PUBLISHER_NEW_ALERTS_METRIC, newAlertsCount); + + // Get alert message strings from alert Entities + final List<String> newAlertsMessages = TCAUtils.extractAlertFromAlertEntities(newAlertsMap.values()); + + // Publish messages to DMaaP MR Topic + + try { + + final DMaaPMRPublisherResponse publisherResponse = publisher.publish(newAlertsMessages); + + final Integer responseCode = publisherResponse.getResponseCode(); + final String responseMessage = publisherResponse.getResponseMessage(); + final int pendingMessagesCount = publisherResponse.getPendingMessagesCount(); + + LOG.debug("Publisher Response Code: {}, Publisher message: {}, Pending Messages Count: {}", responseCode, + responseMessage, pendingMessagesCount); + + if (HTTPUtils.isSuccessfulResponseCode(responseCode)) { + LOG.debug("Successfully Published alerts to DMaaP MR Topic."); + metrics.count(CDAPMetricsConstants.TCA_PUBLISHER_SUCCESSFUL_DMAAP_RESPONSE_METRIC, 1); + } else { + LOG.warn("Unable to publish alerts to DMaaP MR Topic. Publisher will try to send it later...."); + metrics.count(CDAPMetricsConstants.TCA_PUBLISHER_UNSUCCESSFUL_DMAAP_RESPONSE_METRIC, 1); + } + + } catch (DCAEAnalyticsRuntimeException e) { + LOG.error("Exception while publishing messages to DMaaP MR Topic: {}", e); + } finally { + // delete send message from alerts table + deleteAlertsByKey(cdapAlertsTableName, workerContext, newAlertsMap.keySet(), metrics); + } + + LOG.debug("Finished DMaaP MR Topic Publisher fetch Job."); + + } + + /** + * Gets New Messages from alerts table as Map with row keys as keys and {@link TCAVESAlertEntity} as values + * + * @param cdapAlertsTableName alerts table name + * @param workerContext worker context + * @return Map with row keys as keys and {@link TCAVESAlertEntity} as values + */ + private Map<String, TCAVESAlertEntity> getNewAlertsMap(final String cdapAlertsTableName, + final WorkerContext workerContext) { + final Map<String, TCAVESAlertEntity> newAlertsMap = new LinkedHashMap<>(); + workerContext.execute(new TxRunnable() { + @Override + public void run(DatasetContext context) throws Exception { + final ObjectMappedTable<TCAVESAlertEntity> alertsTable = context.getDataset(cdapAlertsTableName); + final Date currentTime = new Date(); + final String rowKey = TCAVESAlertsPersister.createRowKey(currentTime); + final CloseableIterator<KeyValue<byte[], TCAVESAlertEntity>> scan = alertsTable.scan(null, rowKey); + while (scan.hasNext()) { + final KeyValue<byte[], TCAVESAlertEntity> alertEntityKeyValue = scan.next(); + newAlertsMap.put(Bytes.toString(alertEntityKeyValue.getKey()), alertEntityKeyValue.getValue()); + } + } + }); + return newAlertsMap; + } + + /** + * Deletes rows in Alerts table for give rowKeys + * + * @param cdapAlertsTableName CDAP Alerts Table Name + * @param workerContext Worker Context + * @param rowKeys Row Key Set + * @param metrics CDAP metrics + */ + private void deleteAlertsByKey(final String cdapAlertsTableName, final WorkerContext workerContext, + final Set<String> rowKeys, final Metrics metrics) { + LOG.debug("Deleting Published Alerts from alerts table with rowKeys: {}", Joiner.on(",").join(rowKeys)); + workerContext.execute(new TxRunnable() { + @Override + public void run(DatasetContext context) throws Exception { + final ObjectMappedTable<TCAVESAlertEntity> alertsTable = context.getDataset(cdapAlertsTableName); + for (String rowKey : rowKeys) { + alertsTable.delete(rowKey); + metrics.count(CDAPMetricsConstants.TCA_PUBLISHER_DELETED_ALERTS_METRIC, 1); + } + } + }); + } +} diff --git a/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/worker/TCADMaaPMRSubscriberJob.java b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/worker/TCADMaaPMRSubscriberJob.java new file mode 100644 index 0000000..7212527 --- /dev/null +++ b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/worker/TCADMaaPMRSubscriberJob.java @@ -0,0 +1,175 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.worker; + +import co.cask.cdap.api.metrics.Metrics; +import co.cask.cdap.api.worker.WorkerContext; +import com.google.common.base.Optional; +import com.google.common.base.Stopwatch; +import org.openecomp.dcae.analytics.common.AnalyticsConstants; +import org.openecomp.dcae.analytics.common.CDAPMetricsConstants; +import org.openecomp.dcae.analytics.common.exception.DCAEAnalyticsRuntimeException; +import org.openecomp.dcae.analytics.common.utils.HTTPUtils; +import org.openecomp.dcae.analytics.dmaap.domain.response.DMaaPMRSubscriberResponse; +import org.openecomp.dcae.analytics.dmaap.service.subscriber.DMaaPMRSubscriber; +import org.quartz.DisallowConcurrentExecution; +import org.quartz.Job; +import org.quartz.JobDataMap; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.quartz.PersistJobDataAfterExecution; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.util.List; + +import static java.lang.String.format; + +/** + * Quartz Job which polls DMaaP MR VES Collector Topic for messages and writes them to + * a given CDAP Stream + * + * @author Rajiv Singla. Creation Date: 10/24/2016. + */ +@DisallowConcurrentExecution +@PersistJobDataAfterExecution +public class TCADMaaPMRSubscriberJob implements Job { + + private static final Logger LOG = LoggerFactory.getLogger(TCADMaaPMRSubscriberJob.class); + + @Override + public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { + + LOG.debug("Starting DMaaP MR Topic Subscriber fetch Job. Next firing time will be: {}", + jobExecutionContext.getNextFireTime()); + + // Get Job Data Map + final JobDataMap jobDataMap = jobExecutionContext.getMergedJobDataMap(); + + // Fetch all Job Params from Job Data Map + final String cdapStreamName = jobDataMap.getString(AnalyticsConstants.CDAP_STREAM_VARIABLE_NAME); + final WorkerContext workerContext = + (WorkerContext) jobDataMap.get(AnalyticsConstants.WORKER_CONTEXT_VARIABLE_NAME); + final DMaaPMRSubscriber subscriber = + (DMaaPMRSubscriber) jobDataMap.get(AnalyticsConstants.DMAAP_SUBSCRIBER_VARIABLE_NAME); + final Metrics metrics = (Metrics) jobDataMap.get(AnalyticsConstants.DMAAP_METRICS_VARIABLE_NAME); + + final Optional<DMaaPMRSubscriberResponse> subscriberResponseOptional = + getSubscriberResponse(subscriber, metrics); + + // If response is not present, unable to proceed + if (!subscriberResponseOptional.isPresent()) { + return; + } + + final DMaaPMRSubscriberResponse subscriberResponse = subscriberResponseOptional.get(); + + // If response code return by the subscriber call is not successful, unable to do proceed + if (!HTTPUtils.isSuccessfulResponseCode(subscriberResponse.getResponseCode())) { + LOG.error("Subscriber was unable to fetch messages properly. Subscriber Response Code: {} " + + "Unable to proceed further....", subscriberResponse.getResponseCode()); + metrics.count(CDAPMetricsConstants.TCA_SUBSCRIBER_UNSUCCESSFUL_RESPONSES_METRIC, 1); + return; + } + + LOG.debug("Subscriber HTTP Response Status Code match successful: {}", subscriberResponse, + HTTPUtils.HTTP_SUCCESS_STATUS_CODE); + + final List<String> actualMessages = subscriberResponse.getFetchedMessages(); + + // If there are no message returned during from Subscriber, nothing to write to CDAP Stream + if (actualMessages.isEmpty()) { + LOG.debug("Subscriber Response has no messages. Nothing to write to CDAP stream...."); + metrics.count(CDAPMetricsConstants.TCA_SUBSCRIBER_RESPONSES_WITH_NO_MESSAGES_METRIC, 1); + return; + } + + LOG.debug("DMaaP MR Subscriber found new messages in DMaaP Topic. Message count: {}", actualMessages.size()); + metrics.count(CDAPMetricsConstants.TCA_SUBSCRIBER_TOTAL_MESSAGES_PROCESSED_METRIC, actualMessages.size()); + + // Write message to CDAP Stream using Stream Batch Writer + LOG.debug("Writing message to CDAP Stream: {}, Message Count: {}", cdapStreamName, actualMessages.size()); + try { + + for (String message : actualMessages) { + workerContext.write(cdapStreamName, message); + } + + } catch (IOException e) { + metrics.count(CDAPMetricsConstants.TCA_SUBSCRIBER_FAILURE_TO_WRITE_TO_STREAM_METRIC, 1); + final String errorMessage = + format("Error while DMaaP message router subscriber attempting to write to CDAP Stream: %s, " + + "Exception: %s", cdapStreamName, e); + throw new DCAEAnalyticsRuntimeException(errorMessage, LOG, e); + } + + LOG.debug("DMaaP MR Subscriber successfully finished writing messages to CDAP Stream: {}, Message count: {}", + cdapStreamName, actualMessages.size()); + } + + + /** + * Get Subscriber response and records time taken to fetch messages. Returns Optional.None if Subscriber response + * is null or response status code is not present + * + * @param subscriber - DMaaP Subscriber + * @param metrics - CDAP Metrics collector + * + * @return - Optional of Subscriber Response + */ + private static Optional<DMaaPMRSubscriberResponse> getSubscriberResponse(final DMaaPMRSubscriber subscriber, + final Metrics metrics) { + + // Check how long it took for subscriber to respond + final Stopwatch stopwatch = new Stopwatch(); + stopwatch.start(); + + DMaaPMRSubscriberResponse subscriberResponse = null; + // Fetch messages from DMaaP MR Topic + try { + subscriberResponse = subscriber.fetchMessages(); + } catch (DCAEAnalyticsRuntimeException e) { + LOG.error("Error while fetching messages for DMaaP MR Topic: {}", e); + } + + stopwatch.stop(); + final long subscriberResponseTimeMS = stopwatch.elapsedMillis(); + + // If response is null is null or response code is null, unable to proceed nothing to do + if (subscriberResponse == null || subscriberResponse.getResponseCode() == null) { + LOG.error("Subscriber Response is null or subscriber Response code is null. Unable to proceed further..."); + return Optional.absent(); + } + + LOG.debug("Subscriber Response:{}, Subscriber HTTP Response Status Code {}, Subscriber Response Time(ms): {}", + subscriberResponse, subscriberResponse.getResponseCode(), subscriberResponseTimeMS); + + // Record subscriber response time + metrics.gauge(CDAPMetricsConstants.TCA_SUBSCRIBER_RESPONSE_TIME_MS_METRIC, subscriberResponseTimeMS); + + // Record all response count from subscriber + metrics.count(CDAPMetricsConstants.TCA_SUBSCRIBER_ALL_RESPONSES_COUNT_METRIC, 1); + + return Optional.of(subscriberResponse); + } + +} diff --git a/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/worker/TCADMaaPMockSubscriberWorker.java b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/worker/TCADMaaPMockSubscriberWorker.java new file mode 100644 index 0000000..d8d1968 --- /dev/null +++ b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/worker/TCADMaaPMockSubscriberWorker.java @@ -0,0 +1,139 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.worker; + +import co.cask.cdap.api.annotation.Property; +import co.cask.cdap.api.worker.AbstractWorker; +import co.cask.cdap.api.worker.WorkerContext; +import com.fasterxml.jackson.core.type.TypeReference; +import org.openecomp.dcae.analytics.common.exception.DCAEAnalyticsRuntimeException; +import org.openecomp.dcae.analytics.model.domain.cef.EventListener; +import org.openecomp.dcae.analytics.tca.settings.TCAAppPreferences; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.util.List; + +import static org.openecomp.dcae.analytics.tca.utils.TCAUtils.getValidatedTCAAppPreferences; +import static org.openecomp.dcae.analytics.tca.utils.TCAUtils.readValue; +import static org.openecomp.dcae.analytics.tca.utils.TCAUtils.writeValueAsString; + +/** + * CDAP Worker which mocks fetching VES Messages from DMaaP MR topic. + * The mock instead of making DMaaP MR calls will actually take messages + * from file and send them to stream at subscriber polling interval + * + * TODO: To be removed before going to production - only for testing purposes + * + * @author Rajiv Singla. Creation Date: 11/4/2016. + */ +public class TCADMaaPMockSubscriberWorker extends AbstractWorker { + + private static final Logger LOG = LoggerFactory.getLogger(TCADMaaPMockSubscriberWorker.class); + + // TODO: Remove this file before going to production - only for mocking purposes + private static final String MOCK_MESSAGE_FILE_LOCATION = "ves_mock_messages.json"; + private static final TypeReference<List<EventListener>> EVENT_LISTENER_TYPE_REFERENCE = + new TypeReference<List<EventListener>>() { + }; + + private TCAAppPreferences tcaAppPreferences; + private boolean stopSendingMessages; + @Property + private final String tcaSubscriberOutputStreamName; + + public TCADMaaPMockSubscriberWorker(final String tcaSubscriberOutputStreamName) { + this.tcaSubscriberOutputStreamName = tcaSubscriberOutputStreamName; + } + + @Override + public void configure() { + setName("MockTCASubscriberWorker"); + setDescription("Writes Mocked VES messages to CDAP Stream"); + LOG.info("Configuring Mock TCA MR DMaaP Subscriber worker with name: {}", "MockTCASubscriberWorker"); + } + + @Override + public void initialize(WorkerContext context) throws Exception { + super.initialize(context); + + final TCAAppPreferences tcaAppPreferences = getValidatedTCAAppPreferences(context); + LOG.info("Initializing Mock TCA MR DMaaP Subscriber worker with preferences: {}", tcaAppPreferences); + this.tcaAppPreferences = tcaAppPreferences; + this.stopSendingMessages = false; + } + + + @Override + public void run() { + final Integer subscriberPollingInterval = tcaAppPreferences.getSubscriberPollingInterval(); + LOG.debug("Mock TCA Subscriber Polling interval: {}", subscriberPollingInterval); + + final InputStream resourceAsStream = Thread.currentThread().getContextClassLoader().getResourceAsStream + (MOCK_MESSAGE_FILE_LOCATION); + + if (resourceAsStream == null) { + LOG.error("Unable to find file at location: {}", MOCK_MESSAGE_FILE_LOCATION); + throw new DCAEAnalyticsRuntimeException("Unable to find file", LOG, new FileNotFoundException()); + } + + + try { + List<EventListener> eventListeners = readValue(resourceAsStream, EVENT_LISTENER_TYPE_REFERENCE); + + final int totalMessageCount = eventListeners.size(); + LOG.debug("Mock message count to be written to cdap stream: ()", totalMessageCount); + + int i = 1; + for (EventListener eventListener : eventListeners) { + if (stopSendingMessages) { + LOG.debug("Stop sending messages......"); + break; + } + final String eventListenerString = writeValueAsString(eventListener); + LOG.debug("=======>> Writing message to cdap stream no: {} of {}", i, totalMessageCount); + getContext().write(tcaSubscriberOutputStreamName, eventListenerString); + i++; + try { + Thread.sleep(subscriberPollingInterval); + } catch (InterruptedException e) { + LOG.error("Error while sleeping"); + } + } + + LOG.debug("Finished writing mock messages to CDAP Stream"); + + } catch (IOException e) { + LOG.error("Error while parsing json file"); + throw new DCAEAnalyticsRuntimeException("Error while parsing mock json file", LOG, e); + } + + + } + + @Override + public void stop() { + stopSendingMessages = true; + } +} diff --git a/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/worker/TCADMaaPPublisherWorker.java b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/worker/TCADMaaPPublisherWorker.java new file mode 100644 index 0000000..49f98fc --- /dev/null +++ b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/worker/TCADMaaPPublisherWorker.java @@ -0,0 +1,230 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.worker; + +import co.cask.cdap.api.annotation.Property; +import co.cask.cdap.api.metrics.Metrics; +import co.cask.cdap.api.worker.AbstractWorker; +import co.cask.cdap.api.worker.WorkerContext; +import org.openecomp.dcae.analytics.common.AnalyticsConstants; +import org.openecomp.dcae.analytics.common.CDAPComponentsConstants; +import org.openecomp.dcae.analytics.common.exception.DCAEAnalyticsRuntimeException; +import org.openecomp.dcae.analytics.dmaap.DMaaPMRFactory; +import org.openecomp.dcae.analytics.dmaap.domain.config.DMaaPMRPublisherConfig; +import org.openecomp.dcae.analytics.dmaap.service.publisher.DMaaPMRPublisher; +import org.openecomp.dcae.analytics.model.util.AnalyticsModelIOUtils; +import org.openecomp.dcae.analytics.tca.settings.TCAAppPreferences; +import org.openecomp.dcae.analytics.tca.utils.AppPreferencesToPublisherConfigMapper; +import org.openecomp.dcae.analytics.tca.utils.TCAUtils; +import org.quartz.JobBuilder; +import org.quartz.JobDataMap; +import org.quartz.JobDetail; +import org.quartz.Scheduler; +import org.quartz.SchedulerException; +import org.quartz.SimpleScheduleBuilder; +import org.quartz.SimpleTrigger; +import org.quartz.TriggerBuilder; +import org.quartz.impl.StdSchedulerFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Properties; +import java.util.concurrent.atomic.AtomicBoolean; + +import static java.lang.String.format; + +/** + * TCA DMaaP Publisher will monitor alerts table at regular intervals and publish any alerts to DMaaP MR Publishing + * Topic + * <p> + * @author Rajiv Singla. Creation Date: 11/16/2016. + */ +public class TCADMaaPPublisherWorker extends AbstractWorker { + + private static final Logger LOG = LoggerFactory.getLogger(TCADMaaPPublisherWorker.class); + + /** + * DMaaP MR Publisher + */ + private DMaaPMRPublisher publisher; + /** + * Quartz Scheduler + */ + private Scheduler scheduler; + /** + * Determines if scheduler is shutdown + */ + private AtomicBoolean isSchedulerShutdown; + /** + * Store runtime metrics + */ + private Metrics metrics; + + @Property + private final String tcaVESAlertsTableName; + + public TCADMaaPPublisherWorker(final String tcaVESAlertsTableName) { + this.tcaVESAlertsTableName = tcaVESAlertsTableName; + } + + @Override + public void configure() { + // configure + setName(CDAPComponentsConstants.TCA_FIXED_DMAAP_PUBLISHER_WORKER); + setDescription(CDAPComponentsConstants.TCA_FIXED_DMAAP_PUBLISHER_DESCRIPTION_WORKER); + LOG.debug("Configuring TCA MR DMaaP Publisher worker with name: {}", + CDAPComponentsConstants.TCA_FIXED_DMAAP_PUBLISHER_WORKER); + } + + + @Override + public void initialize(WorkerContext context) throws Exception { + super.initialize(context); + + // Parse runtime arguments + final TCAAppPreferences tcaAppPreferences = TCAUtils.getValidatedTCAAppPreferences(context); + + LOG.info("Initializing TCA MR DMaaP Publisher worker with preferences: {}", tcaAppPreferences); + + // Map TCA App Preferences to DMaaP MR Publisher Config + final DMaaPMRPublisherConfig publisherConfig = AppPreferencesToPublisherConfigMapper.map(tcaAppPreferences); + + LOG.info("TCA DMaaP MR Publisher worker will be polling TCA Alerts Table Name: {}", tcaVESAlertsTableName); + + // Create an instance of DMaaP MR Publisher + LOG.debug("Creating an instance of DMaaP Publisher"); + publisher = DMaaPMRFactory.create().createPublisher(publisherConfig); + + // initialize a new Quartz scheduler + initializeScheduler(tcaAppPreferences); + // initialize scheduler state + isSchedulerShutdown = new AtomicBoolean(true); + } + + + @Override + public void run() { + // Start Publisher scheduler + try { + scheduler.start(); + isSchedulerShutdown.getAndSet(false); + + } catch (SchedulerException e) { + final String errorMessage = + format("Error while starting TCA DMaaP MR Publisher scheduler: %s", e.toString()); + throw new DCAEAnalyticsRuntimeException(errorMessage, LOG, e); + } + + LOG.info("TCA DMaaP MR Publisher Scheduler started successfully"); + + // indefinite loop which wakes up and confirms scheduler is indeed running + while (!isSchedulerShutdown.get()) { + try { + + Thread.sleep(AnalyticsConstants.TCA_DEFAULT_WORKER_SHUTDOWN_CHECK_INTERVAL_MS); + + } catch (InterruptedException e) { + + final String errorMessage = + format("Error while checking TCA DMaaP MR Publisher worker status: %s", e); + throw new DCAEAnalyticsRuntimeException(errorMessage, LOG, e); + } + } + + LOG.info("Finished execution of TCA DMaaP MR Publisher worker thread"); + + } + + @Override + public void stop() { + // Stop Publisher - which will flush any batch messages if present + try { + publisher.close(); + } catch (Exception e) { + + final String errorMessage = format("Error while shutting down DMaaP MR Publisher: %s", e); + throw new DCAEAnalyticsRuntimeException(errorMessage, LOG, e); + + } + // Stop Publisher scheduler + try { + + LOG.info("Shutting TCA DMaaP MR Publisher Scheduler"); + + scheduler.shutdown(); + isSchedulerShutdown.getAndSet(true); + + } catch (SchedulerException e) { + + final String errorMessage = + format("Error while shutting down TCA DMaaP MR Publisher scheduler: %s", e); + throw new DCAEAnalyticsRuntimeException(errorMessage, LOG, e); + } + } + + + /** + * Initializes a scheduler instance for DMaaP MR Publisher Job + * + * @throws SchedulerException SchedulerException + */ + private void initializeScheduler(TCAAppPreferences tcaAnalyticsAppConfig) throws SchedulerException { + + // Initialize a new Quartz Standard scheduler - settings settings are in quartz-publisher.properties file + final StdSchedulerFactory stdSchedulerFactory = new StdSchedulerFactory(); + final String quartzPublisherPropertiesFileName = AnalyticsConstants.TCA_QUARTZ_PUBLISHER_PROPERTIES_FILE_NAME; + LOG.debug("Configuring quartz scheduler for TCA DMaaP MR Publisher with properties file: {}", + quartzPublisherPropertiesFileName); + final Properties publisherProperties = + AnalyticsModelIOUtils.loadPropertiesFile(quartzPublisherPropertiesFileName); + stdSchedulerFactory.initialize(publisherProperties); + scheduler = stdSchedulerFactory.getScheduler(); + + // Create a new JobDataMap containing information required by TCA DMaaP Publisher Job + final JobDataMap jobDataMap = new JobDataMap(); + jobDataMap.put(AnalyticsConstants.CDAP_ALERTS_TABLE_VARIABLE_NAME, tcaVESAlertsTableName); + jobDataMap.put(AnalyticsConstants.WORKER_CONTEXT_VARIABLE_NAME, getContext()); + jobDataMap.put(AnalyticsConstants.DMAAP_PUBLISHER_VARIABLE_NAME, publisher); + jobDataMap.put(AnalyticsConstants.DMAAP_METRICS_VARIABLE_NAME, metrics); + + // Create a new job detail + final JobDetail jobDetail = JobBuilder.newJob(TCADMaaPMRPublisherJob.class) + .withIdentity(AnalyticsConstants.TCA_DMAAP_PUBLISHER_QUARTZ_JOB_NAME, + AnalyticsConstants.TCA_QUARTZ_GROUP_NAME) + .usingJobData(jobDataMap).build(); + + // Create a new scheduling builder + final Integer publisherPollingInterval = tcaAnalyticsAppConfig.getPublisherPollingInterval(); + final SimpleScheduleBuilder simpleScheduleBuilder = SimpleScheduleBuilder.simpleSchedule() + .withIntervalInMilliseconds(publisherPollingInterval) // job will use custom polling schedule + .repeatForever(); // repeats while worker is running + + // Create a trigger for the TCA Publisher Job + final SimpleTrigger simpleTrigger = TriggerBuilder.newTrigger() + .withIdentity(AnalyticsConstants.TCA_DMAAP_PUBLISHER_QUARTZ_TRIGGER_NAME, + AnalyticsConstants.TCA_QUARTZ_GROUP_NAME) + .startNow() // job starts right away + .withSchedule(simpleScheduleBuilder).build(); + + scheduler.scheduleJob(jobDetail, simpleTrigger); + LOG.info("Initialized TCA DMaaP MR Publisher Scheduler"); + } +} diff --git a/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/worker/TCADMaaPSubscriberWorker.java b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/worker/TCADMaaPSubscriberWorker.java new file mode 100644 index 0000000..8d773e4 --- /dev/null +++ b/dcae-analytics-tca/src/main/java/org/openecomp/dcae/analytics/tca/worker/TCADMaaPSubscriberWorker.java @@ -0,0 +1,226 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.worker; + +import co.cask.cdap.api.annotation.Property; +import co.cask.cdap.api.metrics.Metrics; +import co.cask.cdap.api.worker.AbstractWorker; +import co.cask.cdap.api.worker.WorkerContext; +import org.openecomp.dcae.analytics.common.AnalyticsConstants; +import org.openecomp.dcae.analytics.common.CDAPComponentsConstants; +import org.openecomp.dcae.analytics.common.exception.DCAEAnalyticsRuntimeException; +import org.openecomp.dcae.analytics.dmaap.DMaaPMRFactory; +import org.openecomp.dcae.analytics.dmaap.domain.config.DMaaPMRSubscriberConfig; +import org.openecomp.dcae.analytics.dmaap.service.subscriber.DMaaPMRSubscriber; +import org.openecomp.dcae.analytics.model.util.AnalyticsModelIOUtils; +import org.openecomp.dcae.analytics.tca.settings.TCAAppPreferences; +import org.openecomp.dcae.analytics.tca.utils.AppPreferencesToSubscriberConfigMapper; +import org.openecomp.dcae.analytics.tca.utils.TCAUtils; +import org.quartz.JobBuilder; +import org.quartz.JobDataMap; +import org.quartz.JobDetail; +import org.quartz.Scheduler; +import org.quartz.SchedulerException; +import org.quartz.SimpleScheduleBuilder; +import org.quartz.SimpleTrigger; +import org.quartz.TriggerBuilder; +import org.quartz.impl.StdSchedulerFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Properties; +import java.util.concurrent.atomic.AtomicBoolean; + +import static java.lang.String.format; + +/** + * TCA DMaaP Subscriber will read messages and post them to cdap stream at regular intervals + * <p> + * @author Rajiv Singla. Creation Date: 10/14/2016. + */ +public class TCADMaaPSubscriberWorker extends AbstractWorker { + + private static final Logger LOG = LoggerFactory.getLogger(TCADMaaPSubscriberWorker.class); + + /** + * DMaaP MR Subscriber + */ + private DMaaPMRSubscriber subscriber; + /** + * Quartz Scheduler + */ + private Scheduler scheduler; + /** + * Determines if scheduler is shutdown + */ + private AtomicBoolean isSchedulerShutdown; + /** + * Store runtime metrics + */ + private Metrics metrics; + + /** + * CDAP output stream name + */ + @Property + private final String tcaSubscriberOutputStreamName; + + public TCADMaaPSubscriberWorker(final String tcaSubscriberOutputStreamName) { + this.tcaSubscriberOutputStreamName = tcaSubscriberOutputStreamName; + } + + + @Override + public void configure() { + // configure + setName(CDAPComponentsConstants.TCA_FIXED_DMAAP_SUBSCRIBER_WORKER); + setDescription(CDAPComponentsConstants.TCA_FIXED_DMAAP_SUBSCRIBER_DESCRIPTION_WORKER); + LOG.debug("Configuring TCA MR DMaaP Subscriber worker with name: {}", + CDAPComponentsConstants.TCA_FIXED_DMAAP_SUBSCRIBER_WORKER); + } + + @Override + public void initialize(WorkerContext context) throws Exception { + super.initialize(context); + + // Parse runtime arguments + final TCAAppPreferences tcaAppPreferences = TCAUtils.getValidatedTCAAppPreferences(context); + + LOG.info("Initializing TCA MR DMaaP Subscriber worker with preferences: {}", tcaAppPreferences); + + // Map TCA App Preferences to DMaaP MR Subscriber Config + final DMaaPMRSubscriberConfig subscriberConfig = AppPreferencesToSubscriberConfigMapper.map(tcaAppPreferences); + + LOG.info("TCA DMaaP MR Subscriber worker will be writing to CDAP Stream: {}", tcaSubscriberOutputStreamName); + + // Create an instance of DMaaP MR Subscriber + LOG.debug("Creating an instance of DMaaP Subscriber"); + subscriber = DMaaPMRFactory.create().createSubscriber(subscriberConfig); + + // initialize a new Quartz scheduler + initializeScheduler(tcaAppPreferences); + + // initialize scheduler state + isSchedulerShutdown = new AtomicBoolean(true); + } + + + @Override + public void run() { + // Start scheduler + try { + scheduler.start(); + isSchedulerShutdown.getAndSet(false); + + } catch (SchedulerException e) { + final String errorMessage = + format("Error while starting TCA DMaaP MR Subscriber scheduler: %s", e.toString()); + throw new DCAEAnalyticsRuntimeException(errorMessage, LOG, e); + } + + LOG.info("TCA DMaaP MR Subscriber Scheduler started successfully"); + + // indefinite loop which wakes up and confirms scheduler is indeed running + while (!isSchedulerShutdown.get()) { + try { + + Thread.sleep(AnalyticsConstants.TCA_DEFAULT_WORKER_SHUTDOWN_CHECK_INTERVAL_MS); + + } catch (InterruptedException e) { + + final String errorMessage = + format("Error while checking TCA DMaaP MR Subscriber worker status: %s", e); + throw new DCAEAnalyticsRuntimeException(errorMessage, LOG, e); + } + } + + LOG.info("Finished execution of TCA DMaaP MR Subscriber worker thread"); + + } + + @Override + public void stop() { + + // Stop scheduler + try { + + LOG.info("Shutting TCA DMaaP MR Subscriber Scheduler"); + + scheduler.shutdown(); + isSchedulerShutdown.getAndSet(true); + + } catch (SchedulerException e) { + + final String errorMessage = + format("Error while shutting down TCA DMaaP MR Subscriber scheduler: %s", e); + throw new DCAEAnalyticsRuntimeException(errorMessage, LOG, e); + } + } + + /** + * Initializes a scheduler instance for DMaaP MR Subscriber Job + * + * @throws SchedulerException SchedulerException + */ + private void initializeScheduler(TCAAppPreferences tcaAppPreferences) throws SchedulerException { + + // Initialize a new Quartz Standard scheduler - settings settings are in quartz-subscriber.properties file + final StdSchedulerFactory stdSchedulerFactory = new StdSchedulerFactory(); + final String quartzSubscriberPropertiesFileName = AnalyticsConstants.TCA_QUARTZ_SUBSCRIBER_PROPERTIES_FILE_NAME; + LOG.debug("Configuring quartz scheduler for TCA DMaaP MR Subscriber with properties file: {}", + quartzSubscriberPropertiesFileName); + final Properties subscriberProperties = + AnalyticsModelIOUtils.loadPropertiesFile(quartzSubscriberPropertiesFileName); + stdSchedulerFactory.initialize(subscriberProperties); + scheduler = stdSchedulerFactory.getScheduler(); + + // Create a new JobDataMap containing information required by TCA DMaaP Subscriber Job + final JobDataMap jobDataMap = new JobDataMap(); + jobDataMap.put(AnalyticsConstants.CDAP_STREAM_VARIABLE_NAME, tcaSubscriberOutputStreamName); + jobDataMap.put(AnalyticsConstants.WORKER_CONTEXT_VARIABLE_NAME, getContext()); + jobDataMap.put(AnalyticsConstants.DMAAP_SUBSCRIBER_VARIABLE_NAME, subscriber); + jobDataMap.put(AnalyticsConstants.DMAAP_METRICS_VARIABLE_NAME, metrics); + + // Create a new job detail + final JobDetail jobDetail = JobBuilder.newJob(TCADMaaPMRSubscriberJob.class) + .withIdentity(AnalyticsConstants.TCA_DMAAP_SUBSCRIBER_QUARTZ_JOB_NAME, + AnalyticsConstants.TCA_QUARTZ_GROUP_NAME) + .usingJobData(jobDataMap).build(); + + // Create a new scheduling builder + final Integer subscriberPollingInterval = tcaAppPreferences.getSubscriberPollingInterval(); + final SimpleScheduleBuilder simpleScheduleBuilder = SimpleScheduleBuilder.simpleSchedule() + .withIntervalInMilliseconds(subscriberPollingInterval) // job will use custom polling schedule + .repeatForever(); // repeats while worker is running + + // Create a trigger for the TCA Subscriber Job + final SimpleTrigger simpleTrigger = TriggerBuilder.newTrigger() + .withIdentity(AnalyticsConstants.TCA_DMAAP_SUBSCRIBER_QUARTZ_TRIGGER_NAME, + AnalyticsConstants.TCA_QUARTZ_GROUP_NAME) + .startNow() // job starts right away + .withSchedule(simpleScheduleBuilder).build(); + + scheduler.scheduleJob(jobDetail, simpleTrigger); + LOG.info("Initialized TCA DMaaP MR Subscriber Scheduler"); + } + + +} diff --git a/dcae-analytics-tca/src/main/resources/quartz-publisher.properties b/dcae-analytics-tca/src/main/resources/quartz-publisher.properties new file mode 100644 index 0000000..17d564d --- /dev/null +++ b/dcae-analytics-tca/src/main/resources/quartz-publisher.properties @@ -0,0 +1,23 @@ +# +# ============LICENSE_START========================================================= +# dcae-analytics +# ================================================================================ +# Copyright © 2017 AT&T Intellectual Property. All rights reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +# +org.quartz.scheduler.instanceName=TCA_DMaaPMRPublisher_Scheduler +org.quartz.threadPool.threadCount=3 +org.quartz.jobStore.class=org.quartz.simpl.RAMJobStore +org.quartz.scheduler.skipUpdateCheck=true diff --git a/dcae-analytics-tca/src/main/resources/quartz-subscriber.properties b/dcae-analytics-tca/src/main/resources/quartz-subscriber.properties new file mode 100644 index 0000000..78a968f --- /dev/null +++ b/dcae-analytics-tca/src/main/resources/quartz-subscriber.properties @@ -0,0 +1,23 @@ +# +# ============LICENSE_START========================================================= +# dcae-analytics +# ================================================================================ +# Copyright © 2017 AT&T Intellectual Property. All rights reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +# +org.quartz.scheduler.instanceName=TCA_DMaaPMRSubscriber_Scheduler +org.quartz.threadPool.threadCount=3 +org.quartz.jobStore.class=org.quartz.simpl.RAMJobStore +org.quartz.scheduler.skipUpdateCheck=true diff --git a/dcae-analytics-tca/src/main/resources/ves_mock_messages.json b/dcae-analytics-tca/src/main/resources/ves_mock_messages.json new file mode 100644 index 0000000..483c1d5 --- /dev/null +++ b/dcae-analytics-tca/src/main/resources/ves_mock_messages.json @@ -0,0 +1,113 @@ +[ + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "multicastPacketsIn": 0, + "bytesIn": 20445, + "unicastPacketsIn": 0, + "multicastPacketsOut": 0, + "broadcastPacketsOut": 0, + "packetsOut": 0, + "bytesOut": 0, + "broadcastPacketsIn": 0, + "packetsIn": 700, + "unicastPacketsOut": 0, + "vNicIdentifier": "eth1" + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "zdfw1fwl01fwl02", + "startEpochMicrosec": 1484335735737754, + "lastEpochMicrosec": 1484335745737754, + "eventId": "61542", + "sourceName": "Dummy VM name - No Metadata available", + "sequence": 61542, + "priority": "Normal", + "functionalRole": "vFirewall", + "domain": "measurementsForVfScaling", + "reportingEntityId": "No UUID available", + "sourceId": "Dummy VM UUID - No Metadata available", + "version": 1.1 + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "multicastPacketsIn": 0, + "bytesIn": 20445, + "unicastPacketsIn": 0, + "multicastPacketsOut": 0, + "broadcastPacketsOut": 0, + "packetsOut": 0, + "bytesOut": 0, + "broadcastPacketsIn": 0, + "packetsIn": 300, + "unicastPacketsOut": 0, + "vNicIdentifier": "eth1" + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "zdfw1fwl01fwl02", + "startEpochMicrosec": 1484335735737754, + "lastEpochMicrosec": 1484335745737754, + "eventId": "61542", + "sourceName": "Dummy VM name - No Metadata available", + "sequence": 61542, + "priority": "Normal", + "functionalRole": "vFirewall", + "domain": "measurementsForVfScaling", + "reportingEntityId": "No UUID available", + "sourceId": "Dummy VM UUID - No Metadata available", + "version": 1.1 + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "multicastPacketsIn": 0, + "bytesIn": 20445, + "unicastPacketsIn": 0, + "multicastPacketsOut": 0, + "broadcastPacketsOut": 0, + "packetsOut": 0, + "bytesOut": 0, + "broadcastPacketsIn": 0, + "packetsIn": 400, + "unicastPacketsOut": 0, + "vNicIdentifier": "eth1" + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "zdfw1fwl01fwl02", + "startEpochMicrosec": 1484335735737754, + "lastEpochMicrosec": 1484335745737754, + "eventId": "61542", + "sourceName": "Dummy VM name - No Metadata available", + "sequence": 61542, + "priority": "Normal", + "functionalRole": "vFirewall", + "domain": "measurementsForVfScaling", + "reportingEntityId": "No UUID available", + "sourceId": "Dummy VM UUID - No Metadata available", + "version": 1.1 + } + } + } +] diff --git a/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/BaseAnalyticsTCAIT.java b/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/BaseAnalyticsTCAIT.java new file mode 100644 index 0000000..4dedf98 --- /dev/null +++ b/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/BaseAnalyticsTCAIT.java @@ -0,0 +1,141 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.google.common.base.Suppliers; +import org.junit.BeforeClass; +import org.openecomp.dcae.analytics.common.AnalyticsConstants; +import org.openecomp.dcae.analytics.model.util.AnalyticsModelIOUtils; +import org.openecomp.dcae.analytics.model.util.json.AnalyticsModelObjectMapperSupplier; +import org.openecomp.dcae.analytics.tca.settings.TCATestAppConfig; +import org.openecomp.dcae.analytics.tca.settings.TCATestAppPreferences; +import org.openecomp.dcae.analytics.test.BaseDCAEAnalyticsIT; + +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Properties; + +/** + * + * @author Rajiv Singla. Creation Date: 10/25/2016. + */ +public class BaseAnalyticsTCAIT extends BaseDCAEAnalyticsIT { + + protected static ObjectMapper objectMapper; + + @BeforeClass + public static void beforeClass() { + final AnalyticsModelObjectMapperSupplier analyticsModelObjectMapperSupplier = + new AnalyticsModelObjectMapperSupplier(); + objectMapper = Suppliers.memoize(analyticsModelObjectMapperSupplier).get(); + objectMapper.enable(SerializationFeature.INDENT_OUTPUT); + } + + protected static final String TCA_CONTROLLER_POLICY_FILE_LOCATION = + "data/properties/tca_controller_policy.properties"; + + // App Settings + protected static final String DCAE_ANALYTICS_TCA_TEST_APP_NAME = "dcae-tca"; + protected static final String DCAE_ANALYTICS_TCA_TEST_APP_DESC = + "DCAE Analytics Threshold Crossing Alert Application"; + + // Subscriber App Preferences + protected static final String SUBSCRIBER_HOST_NAME = "mrlocal-mtnjftle01.homer.com"; + protected static final Integer SUBSCRIBER_PORT_NUMBER = 3905; + protected static final String SUBSCRIBER_TOPIC_NAME = "com.dcae.dmaap.mtnje2.DcaeTestVESSub"; + protected static final String SUBSCRIBER_USERNAME = "m00502@tca.af.dcae.com"; + protected static final String SUBSCRIBER_PASSWORD = "Te5021abc"; + protected static final String SUBSCRIBER_HTTP_PROTOCOL = "https"; + protected static final String SUBSCRIBER_CONTENT_TYPE = "application/json"; + protected static final Integer SUBSCRIBER_POLLING_INTERVAL = 20000; + + protected static final String SUBSCRIBER_CONSUMER_ID = "c12"; + protected static final String SUBSCRIBER_CONSUMER_GROUP_NAME = AnalyticsConstants.DMAAP_GROUP_PREFIX + + SUBSCRIBER_CONSUMER_ID; + protected static final int SUBSCRIBER_TIMOUT_MS = -1; + protected static final int SUBSCRIBER_MESSAGE_LIMIT = -1; + + // Publisher App Preferences + protected static final String PUBLISHER_HOST_NAME = "mrlocal-mtnjftle01.homer.com"; + protected static final Integer PUBLISHER_PORT_NUMBER = 3905; + protected static final String PUBLISHER_TOPIC_NAME = "com.dcae.dmaap.mtnje2.DcaeTestVESPub"; + protected static final String PUBLISHER_USERNAME = "m00502@tca.af.dcae.com"; + protected static final String PUBLISHER_PASSWORD = "Te5021abc"; + protected static final String PUBLISHER_HTTP_PROTOCOL = "https"; + protected static final String PUBLISHER_CONTENT_TYPE = "application/json"; + protected static final Integer PUBLISHER_BATCH_QUEUE_SIZE = 10; + protected static final Integer PUBLISHER_RECOVERY_QUEUE_SIZE = 100000; + protected static final Integer PUBLISHER_POLLING_INTERVAL = 20000; + + protected static TCATestAppConfig getTCATestAppConfig() { + final TCATestAppConfig tcaTestAppConfig = new TCATestAppConfig(); + tcaTestAppConfig.setAppName(DCAE_ANALYTICS_TCA_TEST_APP_NAME); + tcaTestAppConfig.setAppDescription(DCAE_ANALYTICS_TCA_TEST_APP_DESC); + return tcaTestAppConfig; + } + + protected static TCATestAppPreferences getTCATestAppPreferences() { + final TCATestAppPreferences tcaTestAppPreferences = new TCATestAppPreferences(getTCAPolicyPreferences()); + tcaTestAppPreferences.setSubscriberHostName(SUBSCRIBER_HOST_NAME); + tcaTestAppPreferences.setSubscriberHostPortNumber(SUBSCRIBER_PORT_NUMBER); + tcaTestAppPreferences.setSubscriberTopicName(SUBSCRIBER_TOPIC_NAME); + tcaTestAppPreferences.setSubscriberUserName(SUBSCRIBER_USERNAME); + tcaTestAppPreferences.setSubscriberUserPassword(SUBSCRIBER_PASSWORD); + tcaTestAppPreferences.setSubscriberProtocol(SUBSCRIBER_HTTP_PROTOCOL); + tcaTestAppPreferences.setSubscriberContentType(SUBSCRIBER_CONTENT_TYPE); + tcaTestAppPreferences.setSubscriberConsumerId(SUBSCRIBER_CONSUMER_ID); + tcaTestAppPreferences.setSubscriberConsumerGroup(SUBSCRIBER_CONSUMER_GROUP_NAME); + tcaTestAppPreferences.setSubscriberTimeoutMS(SUBSCRIBER_TIMOUT_MS); + tcaTestAppPreferences.setSubscriberMessageLimit(SUBSCRIBER_MESSAGE_LIMIT); + tcaTestAppPreferences.setSubscriberPollingInterval(SUBSCRIBER_POLLING_INTERVAL); + + tcaTestAppPreferences.setPublisherHostName(PUBLISHER_HOST_NAME); + tcaTestAppPreferences.setPublisherHostPort(PUBLISHER_PORT_NUMBER); + tcaTestAppPreferences.setPublisherTopicName(PUBLISHER_TOPIC_NAME); + tcaTestAppPreferences.setPublisherUserName(PUBLISHER_USERNAME); + tcaTestAppPreferences.setPublisherUserPassword(PUBLISHER_PASSWORD); + tcaTestAppPreferences.setPublisherProtocol(PUBLISHER_HTTP_PROTOCOL); + tcaTestAppPreferences.setPublisherContentType(PUBLISHER_CONTENT_TYPE); + tcaTestAppPreferences.setPublisherMaxBatchSize(PUBLISHER_BATCH_QUEUE_SIZE); + tcaTestAppPreferences.setPublisherMaxRecoveryQueueSize(PUBLISHER_RECOVERY_QUEUE_SIZE); + tcaTestAppPreferences.setPublisherPollingInterval(PUBLISHER_POLLING_INTERVAL); + return tcaTestAppPreferences; + } + + + protected static Map<String, String> getTCAPolicyPreferences() { + final Map<String, String> policyPreferences = new LinkedHashMap<>(); + final Properties policyPreferencesProps = + AnalyticsModelIOUtils.loadPropertiesFile(TCA_CONTROLLER_POLICY_FILE_LOCATION); + for (Map.Entry<Object, Object> propEntry : policyPreferencesProps.entrySet()) { + policyPreferences.put(propEntry.getKey().toString(), propEntry.getValue().toString()); + } + + return policyPreferences; + } + + protected static String serializeModelToJson(Object model) throws JsonProcessingException { + return objectMapper.writeValueAsString(model); + } +} diff --git a/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/BaseAnalyticsTCAUnitTest.java b/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/BaseAnalyticsTCAUnitTest.java new file mode 100644 index 0000000..38e4ce1 --- /dev/null +++ b/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/BaseAnalyticsTCAUnitTest.java @@ -0,0 +1,220 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca; + +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.common.base.Suppliers; +import org.junit.Assert; +import org.openecomp.dcae.analytics.model.domain.cef.EventListener; +import org.openecomp.dcae.analytics.model.domain.policy.tca.Direction; +import org.openecomp.dcae.analytics.model.domain.policy.tca.TCAPolicy; +import org.openecomp.dcae.analytics.model.domain.policy.tca.Threshold; +import org.openecomp.dcae.analytics.model.util.json.AnalyticsModelObjectMapperSupplier; +import org.openecomp.dcae.analytics.tca.settings.TCATestAppPreferences; +import org.openecomp.dcae.analytics.test.BaseDCAEAnalyticsUnitTest; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author Rajiv Singla. Creation Date: 10/25/2016. + */ +public class BaseAnalyticsTCAUnitTest extends BaseDCAEAnalyticsUnitTest { + + /** + * Object mapper to be used for all TCA Json Parsing + */ + protected static final ObjectMapper ANALYTICS_MODEL_OBJECT_MAPPER = + Suppliers.memoize(new AnalyticsModelObjectMapperSupplier()).get(); + + protected static final String TCA_POLICY_JSON_FILE_LOCATION = "data/json/policy/tca_policy.json"; + protected static final String CEF_MESSAGES_JSON_FILE_LOCATION = "data/json/cef/cef_messages.json"; + protected static final String CEF_MESSAGE_JSON_FILE_LOCATION = "data/json/cef/cef_message.json"; + protected static final String CEF_MESSAGE_WITH_THRESHOLD_VIOLATION_JSON_FILE_LOCATION = + "data/json/cef/cef_message_with_threshold_violation.json"; + + protected static final String TCA_CONTROLLER_POLICY_FILE_LOCATION = + "data/properties/tca_controller_policy.properties"; + + + /** + * Provides TCA Policy that can be used for testing + * + * @return test TCA Policy Object + */ + protected TCAPolicy getSampleTCAPolicy() { + return deserializeJsonFileToModel(TCA_POLICY_JSON_FILE_LOCATION, TCAPolicy.class); + } + + /** + * Provides list containing 350 CEF messages + * + * @return CEF Test Message + * @throws Exception Exception + */ + protected List<EventListener> getCEFMessages() throws Exception { + final String cefMessageAsString = fromStream(CEF_MESSAGES_JSON_FILE_LOCATION); + final TypeReference<List<EventListener>> eventListenerListTypeReference = + new TypeReference<List<EventListener>>() { + }; + return ANALYTICS_MODEL_OBJECT_MAPPER.readValue(cefMessageAsString, eventListenerListTypeReference); + } + + /** + * Provides 1 valid CEF messages which does not violate Threshold as String + * + * @return CEF Test Message String + * @throws Exception Exception + */ + protected String getValidCEFMessage() throws Exception { + return fromStream(CEF_MESSAGE_JSON_FILE_LOCATION); + } + + + /** + * Provides single CEF Test Message + * + * @return CEF Test Message + * @throws Exception Exception + */ + protected EventListener getCEFEventListener() throws Exception { + final String cefMessageAsString = fromStream(CEF_MESSAGE_JSON_FILE_LOCATION); + return ANALYTICS_MODEL_OBJECT_MAPPER.readValue(cefMessageAsString, EventListener.class); + } + + /** + * Deserialize given Json file location to given model class and returns it back without any validation check + * + * @param jsonFileLocation Classpath location of the json file + * @param modelClass Model Class type + * @param <T> Json Model Type + * @return Json model object + */ + public static <T> T deserializeJsonFileToModel(String jsonFileLocation, Class<T> modelClass) { + final InputStream jsonFileInputStream = + BaseDCAEAnalyticsUnitTest.class.getClassLoader().getResourceAsStream(jsonFileLocation); + Assert.assertNotNull("Json File Location must be valid", jsonFileInputStream); + try { + return ANALYTICS_MODEL_OBJECT_MAPPER.readValue(jsonFileInputStream, modelClass); + } catch (IOException ex) { + LOG.error("Error while doing assert Json for fileLocation: {}, modelClass: {}, Exception {}", + jsonFileLocation, modelClass, ex); + throw new RuntimeException(ex); + } finally { + try { + jsonFileInputStream.close(); + } catch (IOException e) { + LOG.error("Error while closing input stream at file location: {}", jsonFileLocation); + throw new RuntimeException(e); + } + } + } + + /** + * Provides a test application preference for unit testing + * + * @return tca app preferences + */ + protected static TCATestAppPreferences getTCATestAppPreferences() { + final TCATestAppPreferences tcaTestAppPreferences = new TCATestAppPreferences(); + tcaTestAppPreferences.setSubscriberHostName("SUBSCRIBER_HOST_NAME"); + tcaTestAppPreferences.setSubscriberHostPortNumber(10000); + tcaTestAppPreferences.setSubscriberTopicName("SUBSCRIBER_TOPIC_NAME"); + tcaTestAppPreferences.setSubscriberUserName("SUBSCRIBER_USERNAME"); + tcaTestAppPreferences.setSubscriberUserPassword("SUBSCRIBER_PASSWORD"); + tcaTestAppPreferences.setSubscriberProtocol("https"); + tcaTestAppPreferences.setSubscriberContentType("application/json"); + tcaTestAppPreferences.setSubscriberConsumerId("SUBSCRIBER_CONSUMER_ID"); + tcaTestAppPreferences.setSubscriberConsumerGroup("SUBSCRIBER_CONSUMER_GROUP_NAME"); + tcaTestAppPreferences.setSubscriberTimeoutMS(10); + tcaTestAppPreferences.setSubscriberMessageLimit(100); + tcaTestAppPreferences.setSubscriberPollingInterval(1000); + + tcaTestAppPreferences.setPublisherHostName("PUBLISHER_HOST_NAME"); + tcaTestAppPreferences.setPublisherHostPort(1234); + tcaTestAppPreferences.setPublisherTopicName("PUBLISHER_TOPIC_NAME"); + tcaTestAppPreferences.setPublisherUserName("PUBLISHER_USERNAME"); + tcaTestAppPreferences.setPublisherUserPassword("PUBLISHER_PASSWORD"); + tcaTestAppPreferences.setPublisherProtocol("https"); + tcaTestAppPreferences.setPublisherContentType("application/json"); + tcaTestAppPreferences.setPublisherMaxBatchSize(100); + tcaTestAppPreferences.setPublisherMaxRecoveryQueueSize(100); + tcaTestAppPreferences.setPublisherPollingInterval(6000); + return tcaTestAppPreferences; + } + + protected static Map<String, String> getPreferenceMap() { + Map<String, String> preference = new HashMap<>(); + preference.put("subscriberHostName", "mrlocal-mtnjftle01.homer.com"); + preference.put("subscriberHostPort", "3905"); + preference.put("subscriberTopicName", "com.dcae.dmaap.mtnje2.DcaeTestVESPub"); + preference.put("subscriberProtocol", "https"); + preference.put("subscriberUserName", "m00502@tca.af.dcae.com"); + preference.put("subscriberUserPassword", "Te5021abc"); + preference.put("subscriberContentType", "application/json"); + preference.put("subscriberConsumerId", "123"); + preference.put("subscriberConsumerGroup", "testTCAConsumerName-123"); + preference.put("subscriberTimeoutMS", "-1"); + preference.put("subscriberMessageLimit", "-1"); + preference.put("subscriberPollingInterval", "30000"); + + preference.put("publisherHostName", "publisherHostName"); + preference.put("publisherHostPort", "3905"); + preference.put("publisherTopicName", "publisherTopicName"); + preference.put("publisherProtocol", "https"); + preference.put("publisherUserName", "publisherUserName"); + preference.put("publisherContentType", "application/json"); + preference.put("publisherMaxBatchSize", "1000"); + preference.put("publisherMaxRecoveryQueueSize", "100"); + preference.put("publisherPollingInterval", "6000"); + return preference; + } + + protected static Threshold getCriticalThreshold() { + Threshold criticalThreshold = new Threshold(); + criticalThreshold.setClosedLoopControlName("CL-LBAL-LOW-TRAFFIC-SIG-FB480F95-A453-6F24-B767-FD703241AB1A"); + criticalThreshold.setThresholdValue(5000L); + criticalThreshold.setFieldPath("$.event.measurementsForVfScalingFields.vNicUsageArray[*].packetsIn"); + criticalThreshold.setDirection(Direction.GREATER_OR_EQUAL); + return criticalThreshold; + } + + protected static List<Threshold> getThresholds() { + Threshold majorThreshold = new Threshold(); + majorThreshold.setClosedLoopControlName("CL-LBAL-LOW-TRAFFIC-SIG-FB480F95-A453-6F24-B767-FD703241AB1A"); + majorThreshold.setFieldPath("$.event.measurementsForVfScalingFields.vNicUsageArray[*].packetsIn"); + majorThreshold.setVersion("Test Version"); + majorThreshold.setThresholdValue(500L); + majorThreshold.setDirection(Direction.LESS_OR_EQUAL); + + Threshold criticalThreshold = new Threshold(); + criticalThreshold.setClosedLoopControlName("CL-LBAL-LOW-TRAFFIC-SIG-FB480F95-A453-6F24-B767-FD703241AB1A"); + criticalThreshold.setThresholdValue(5000L); + criticalThreshold.setFieldPath("$.event.measurementsForVfScalingFields.vNicUsageArray[*].packetsIn"); + criticalThreshold.setDirection(Direction.GREATER_OR_EQUAL); + return Arrays.asList(majorThreshold, criticalThreshold); + } +} diff --git a/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/it/TCAnalyticsAppConfigIT.java b/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/it/TCAnalyticsAppConfigIT.java new file mode 100644 index 0000000..2ed5252 --- /dev/null +++ b/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/it/TCAnalyticsAppConfigIT.java @@ -0,0 +1,53 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.it; + +import org.junit.Test; +import org.openecomp.dcae.analytics.tca.BaseAnalyticsTCAIT; +import org.openecomp.dcae.analytics.tca.settings.TCATestAppConfig; +import org.openecomp.dcae.analytics.tca.settings.TCATestAppConfigHolder; +import org.openecomp.dcae.analytics.tca.settings.TCATestAppPreferences; + +/** + * + * @author Rajiv Singla. Creation Date: 10/25/2016. + */ +public class TCAnalyticsAppConfigIT extends BaseAnalyticsTCAIT { + + + @Test + public void createTestAppConfigJson() throws Exception { + final TCATestAppConfig tcaTestAppConfig = getTCATestAppConfig(); + final TCATestAppConfigHolder appConfigHolder = new TCATestAppConfigHolder(tcaTestAppConfig); + final String appConfigJson = serializeModelToJson(appConfigHolder); + LOG.info("AppConfigJson: \n{}", appConfigJson); + writeToOutputTextFile("appSettings/tca_app_config.json", appConfigJson, TCAnalyticsAppConfigIT.class); + } + + @Test + public void createTestAppPreferencesJson() throws Exception { + final TCATestAppPreferences tcaTestAppPreferences = getTCATestAppPreferences(); + final String appPreferencesJson = serializeModelToJson(tcaTestAppPreferences); + LOG.info("AppPreferences: \n{}", appPreferencesJson); + writeToOutputTextFile("appSettings/tca_app_preferences.json", + appPreferencesJson, TCAnalyticsAppConfigIT.class); + } +} diff --git a/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/processor/TCACEFJsonProcessorTest.java b/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/processor/TCACEFJsonProcessorTest.java new file mode 100644 index 0000000..05efcd6 --- /dev/null +++ b/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/processor/TCACEFJsonProcessorTest.java @@ -0,0 +1,117 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.processor; + +import org.junit.Test; +import org.openecomp.dcae.analytics.common.exception.MessageProcessingException; +import org.openecomp.dcae.analytics.model.domain.cef.EventListener; +import org.openecomp.dcae.analytics.tca.BaseAnalyticsTCAUnitTest; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; + +/** + * + * @author Rajiv Singla. Creation Date: 11/9/2016. + */ +public class TCACEFJsonProcessorTest extends BaseAnalyticsTCAUnitTest { + + + // A valid CEF Message + @Test + public void testCEFJsonProcessorWithValidCEFMessage() throws Exception { + + final String cefMessageString = fromStream(CEF_MESSAGE_JSON_FILE_LOCATION); + final TCACEFProcessorContext tcacefProcessorContext = + new TCACEFProcessorContext(cefMessageString, getSampleTCAPolicy()); + + TCACEFJsonProcessor tcacefJsonProcessor = new TCACEFJsonProcessor(); + final TCACEFProcessorContext finalProcessorContext = tcacefJsonProcessor.apply(tcacefProcessorContext); + + final EventListener cefEventListener = finalProcessorContext.getCEFEventListener(); + + assertNotNull("CEF Event Listener must be present", cefEventListener); + + } + + // Even if message is not a valid CEF format but still a Json - Json Processor will parse it + @Test + public void testCEFJsonProcessorWithValidJson() throws Exception { + + final TCACEFProcessorContext tcacefProcessorContext = new TCACEFProcessorContext( + " { \"key\" : \"value\" } ", getSampleTCAPolicy()); + + TCACEFJsonProcessor tcacefJsonProcessor = new TCACEFJsonProcessor(); + final TCACEFProcessorContext finalProcessorContext = tcacefJsonProcessor.apply(tcacefProcessorContext); + final EventListener cefEventListener = finalProcessorContext.getCEFEventListener(); + + assertNotNull("Even if message is not a valid CEF format but a valid Json.Json Processor must be able to " + + "parse it", + cefEventListener); + } + + @Test(expected = MessageProcessingException.class) + public void testCEFJsonProcessorWithCEFMessageAsNull() throws Exception { + + final TCACEFProcessorContext tcacefProcessorContext = new TCACEFProcessorContext(null, getSampleTCAPolicy()); + + TCACEFJsonProcessor tcacefJsonProcessor = new TCACEFJsonProcessor(); + tcacefJsonProcessor.apply(tcacefProcessorContext); + + } + + @Test + public void testCEFJsonProcessorWithCEFMessageIsBlank() throws Exception { + + final TCACEFProcessorContext tcacefProcessorContext = new TCACEFProcessorContext(" ", getSampleTCAPolicy()); + + TCACEFJsonProcessor tcacefJsonProcessor = new TCACEFJsonProcessor(); + final TCACEFProcessorContext finalProcessorContext = tcacefJsonProcessor.apply(tcacefProcessorContext); + assertFalse("Blank message must terminate processing of message chain", finalProcessorContext + .canProcessingContinue()); + } + + + @Test + public void testCEFJsonProcessorWithCEFMessageWhichIsNotValidMessage() throws Exception { + + final TCACEFProcessorContext tcacefProcessorContext = new TCACEFProcessorContext(" Invalid Message ", + getSampleTCAPolicy()); + + TCACEFJsonProcessor tcacefJsonProcessor = new TCACEFJsonProcessor(); + final TCACEFProcessorContext finalProcessorContext = tcacefJsonProcessor.apply(tcacefProcessorContext); + assertFalse("Invalid message must terminate processing of message chain", finalProcessorContext + .canProcessingContinue()); + } + + + @Test(expected = MessageProcessingException.class) + public void testCEFJsonProcessorWithCEFMessageWhichIsNotValidJson() throws Exception { + + final TCACEFProcessorContext tcacefProcessorContext = new TCACEFProcessorContext( + " { \"Invalid Event Listener Json\" } ", getSampleTCAPolicy()); + + TCACEFJsonProcessor tcacefJsonProcessor = new TCACEFJsonProcessor(); + tcacefJsonProcessor.apply(tcacefProcessorContext); + } + + +} diff --git a/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/processor/TCACEFPolicyThresholdsProcessorTest.java b/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/processor/TCACEFPolicyThresholdsProcessorTest.java new file mode 100644 index 0000000..8d83307 --- /dev/null +++ b/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/processor/TCACEFPolicyThresholdsProcessorTest.java @@ -0,0 +1,77 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.processor; + +import org.junit.Test; +import org.openecomp.dcae.analytics.common.service.processor.ProcessingState; +import org.openecomp.dcae.analytics.model.domain.cef.EventListener; +import org.openecomp.dcae.analytics.tca.BaseAnalyticsTCAUnitTest; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; + +/** + * + * @author Rajiv Singla. Creation Date: 11/9/2016. + */ +public class TCACEFPolicyThresholdsProcessorTest extends BaseAnalyticsTCAUnitTest { + + @Test + public void testCEFPolicyThresholdProcessorWithNoThresholdViolation() throws Exception { + + final String cefMessageString = fromStream(CEF_MESSAGE_JSON_FILE_LOCATION); + final TCACEFProcessorContext tcacefProcessorContext = new TCACEFProcessorContext(cefMessageString, + getSampleTCAPolicy()); + tcacefProcessorContext.setCEFEventListener(getCEFEventListener()); + + AbstractTCAECEFPolicyProcessor policyThresholdsProcessor = new TCACEFPolicyThresholdsProcessor(); + final TCACEFProcessorContext finalProcessorContext = policyThresholdsProcessor.apply(tcacefProcessorContext); + + assertFalse("Process Context can Processing Continue flag should be false", finalProcessorContext + .canProcessingContinue()); + assertThat("Policy Threshold Processor State must be terminated early", + policyThresholdsProcessor.getProcessingState(), is(ProcessingState.PROCESSING_TERMINATED_EARLY)); + + } + + @Test + public void testCEFPolicyThresholdProcessorWithThresholdViolation() throws Exception { + + final String cefMessageString = fromStream(CEF_MESSAGE_WITH_THRESHOLD_VIOLATION_JSON_FILE_LOCATION); + final TCACEFProcessorContext tcacefProcessorContext = new TCACEFProcessorContext(cefMessageString, + getSampleTCAPolicy()); + + final EventListener eventListener = getCEFEventListener(); + tcacefProcessorContext.setCEFEventListener(eventListener); + + AbstractTCAECEFPolicyProcessor policyThresholdsProcessor = new TCACEFPolicyThresholdsProcessor(); + final TCACEFProcessorContext finalProcessorContext = policyThresholdsProcessor.apply(tcacefProcessorContext); + + assertTrue("Process Context can Processing Continue flag should be true", finalProcessorContext + .canProcessingContinue()); + assertThat("Policy Threshold Processor State must be successful", + policyThresholdsProcessor.getProcessingState(), is(ProcessingState.PROCESSING_FINISHED_SUCCESSFULLY)); + + } + +} diff --git a/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/processor/TCACEFProcessorContextTest.java b/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/processor/TCACEFProcessorContextTest.java new file mode 100644 index 0000000..d955d81 --- /dev/null +++ b/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/processor/TCACEFProcessorContextTest.java @@ -0,0 +1,38 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.processor; + +import org.junit.Test; +import org.openecomp.dcae.analytics.tca.BaseAnalyticsTCAUnitTest; + +/** + * + * @author Rajiv Singla. Creation Date: 11/14/2016. + */ +public class TCACEFProcessorContextTest extends BaseAnalyticsTCAUnitTest { + + @Test + public void testProcessorContextSerialization() throws Exception { + TCACEFProcessorContext tcacefProcessorContext = new TCACEFProcessorContext(getValidCEFMessage(), + getSampleTCAPolicy()); + testSerialization(tcacefProcessorContext, TCACEFProcessorContextTest.class); + } +} diff --git a/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/settings/TCATestAppConfig.java b/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/settings/TCATestAppConfig.java new file mode 100644 index 0000000..4e057cc --- /dev/null +++ b/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/settings/TCATestAppConfig.java @@ -0,0 +1,38 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.settings; + +/** + * TCA Test App Config is used for testing purposes only + * + * @author Rajiv Singla. Creation Date: 11/3/2016. + */ +public class TCATestAppConfig extends TCAAppConfig { + + public void setAppName(String appName) { + this.appName = appName; + } + + public void setAppDescription(String appDescription) { + this.appDescription = appDescription; + } + +} diff --git a/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/settings/TCATestAppConfigHolder.java b/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/settings/TCATestAppConfigHolder.java new file mode 100644 index 0000000..e854cac --- /dev/null +++ b/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/settings/TCATestAppConfigHolder.java @@ -0,0 +1,40 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.settings; + +/** + * Holder for TCA Test App Config + * + * @author Rajiv Singla. Creation Date: 11/3/2016. + */ +public class TCATestAppConfigHolder { + + private final TCATestAppConfig config; + + public TCATestAppConfigHolder(TCATestAppConfig config) { + this.config = config; + } + + public TCATestAppConfig getConfig() { + return config; + } + +} diff --git a/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/settings/TCATestAppPreferences.java b/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/settings/TCATestAppPreferences.java new file mode 100644 index 0000000..f8a0474 --- /dev/null +++ b/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/settings/TCATestAppPreferences.java @@ -0,0 +1,136 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.settings; + + +import com.fasterxml.jackson.annotation.JsonAnyGetter; + +import java.util.Map; + +/** + * TCA Test App Preferences are used for testing purposes only + * + * @author Rajiv Singla. Creation Date: 11/3/2016. + */ +public class TCATestAppPreferences extends TCAAppPreferences { + + private Map<String, String> policyPreferences; + + public TCATestAppPreferences() { + } + + public TCATestAppPreferences(final Map<String, String> policyPreferences) { + this.policyPreferences = policyPreferences; + } + + @JsonAnyGetter + public Map<String, String> getPolicyPreferences() { + return policyPreferences; + } + + public void setSubscriberHostName(String subscriberHostName) { + this.subscriberHostName = subscriberHostName; + } + + public void setSubscriberHostPortNumber(Integer subscriberHostPort) { + this.subscriberHostPort = subscriberHostPort; + } + + public void setSubscriberTopicName(String subscriberTopicName) { + this.subscriberTopicName = subscriberTopicName; + } + + public void setSubscriberProtocol(String subscriberProtocol) { + this.subscriberProtocol = subscriberProtocol; + } + + public void setSubscriberUserName(String subscriberUserName) { + this.subscriberUserName = subscriberUserName; + } + + public void setSubscriberUserPassword(String subscriberUserPassword) { + this.subscriberUserPassword = subscriberUserPassword; + } + + public void setSubscriberContentType(String subscriberContentType) { + this.subscriberContentType = subscriberContentType; + } + + public void setSubscriberConsumerId(String subscriberConsumerId) { + this.subscriberConsumerId = subscriberConsumerId; + } + + public void setSubscriberConsumerGroup(String subscriberConsumerGroup) { + this.subscriberConsumerGroup = subscriberConsumerGroup; + } + + public void setSubscriberTimeoutMS(Integer subscriberTimeoutMS) { + this.subscriberTimeoutMS = subscriberTimeoutMS; + } + + public void setSubscriberMessageLimit(Integer subscriberMessageLimit) { + this.subscriberMessageLimit = subscriberMessageLimit; + } + + public void setSubscriberPollingInterval(Integer subscriberPollingInterval) { + this.subscriberPollingInterval = subscriberPollingInterval; + } + + public void setPublisherHostName(String publisherHostName) { + this.publisherHostName = publisherHostName; + } + + public void setPublisherHostPort(Integer publisherHostPort) { + this.publisherHostPort = publisherHostPort; + } + + public void setPublisherTopicName(String publisherTopicName) { + this.publisherTopicName = publisherTopicName; + } + + public void setPublisherProtocol(String publisherProtocol) { + this.publisherProtocol = publisherProtocol; + } + + public void setPublisherUserName(String publisherUserName) { + this.publisherUserName = publisherUserName; + } + + public void setPublisherUserPassword(String publisherUserPassword) { + this.publisherUserPassword = publisherUserPassword; + } + + public void setPublisherContentType(String publisherContentType) { + this.publisherContentType = publisherContentType; + } + + public void setPublisherMaxBatchSize(Integer publisherMaxBatchSize) { + this.publisherMaxBatchSize = publisherMaxBatchSize; + } + + public void setPublisherMaxRecoveryQueueSize(Integer publisherMaxRecoveryQueueSize) { + this.publisherMaxRecoveryQueueSize = publisherMaxRecoveryQueueSize; + } + + public void setPublisherPollingInterval(Integer publisherPollingInterval) { + this.publisherPollingInterval = publisherPollingInterval; + } +} diff --git a/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/utils/AppPreferencesToPublisherConfigMapperTest.java b/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/utils/AppPreferencesToPublisherConfigMapperTest.java new file mode 100644 index 0000000..d66ef52 --- /dev/null +++ b/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/utils/AppPreferencesToPublisherConfigMapperTest.java @@ -0,0 +1,58 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.utils; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.runners.MockitoJUnitRunner; +import org.openecomp.dcae.analytics.dmaap.domain.config.DMaaPMRPublisherConfig; +import org.openecomp.dcae.analytics.tca.BaseAnalyticsTCAUnitTest; +import org.openecomp.dcae.analytics.tca.settings.TCATestAppPreferences; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; + +/** + * @author Manjesh Gowda. Creation Date: 11/21/2016. + */ +@RunWith(MockitoJUnitRunner.class) +public class AppPreferencesToPublisherConfigMapperTest extends BaseAnalyticsTCAUnitTest { + @Test + public void testMapTCAConfigToSubscriberConfigFunctionGood() { + DMaaPMRPublisherConfig dMaaPMRPublisherConfig = + (new AppPreferencesToPublisherConfigMapper()).apply(getTCATestAppPreferences()); + assertEquals(dMaaPMRPublisherConfig.getHostName(), "PUBLISHER_HOST_NAME"); + } + + @Test + public void testMapTCAConfigToSubscriberConfigFunctionMap() { + DMaaPMRPublisherConfig dMaaPMRPublisherConfig = AppPreferencesToPublisherConfigMapper.map( + getTCATestAppPreferences()); + assertEquals(dMaaPMRPublisherConfig.getHostName(), "PUBLISHER_HOST_NAME"); + } + + @Test + public void testMapTCAConfigToSubscriberConfigFunctionAllNull() { + DMaaPMRPublisherConfig dMaaPMRPublisherConfig = + (new AppPreferencesToPublisherConfigMapper()).apply(new TCATestAppPreferences()); + assertNull(dMaaPMRPublisherConfig.getHostName()); + } +} diff --git a/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/utils/AppPreferencesToSubscriberConfigMapperTest.java b/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/utils/AppPreferencesToSubscriberConfigMapperTest.java new file mode 100644 index 0000000..6963201 --- /dev/null +++ b/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/utils/AppPreferencesToSubscriberConfigMapperTest.java @@ -0,0 +1,59 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.utils; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.runners.MockitoJUnitRunner; +import org.openecomp.dcae.analytics.dmaap.domain.config.DMaaPMRSubscriberConfig; +import org.openecomp.dcae.analytics.tca.BaseAnalyticsTCAUnitTest; +import org.openecomp.dcae.analytics.tca.settings.TCATestAppPreferences; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; + +/** + * @author Manjesh Gowda. Creation Date: 11/21/2016. + */ +@RunWith(MockitoJUnitRunner.class) +public class AppPreferencesToSubscriberConfigMapperTest extends BaseAnalyticsTCAUnitTest { + + @Test + public void testMapTCAConfigToSubscriberConfigFunctionGood() { + DMaaPMRSubscriberConfig dMaaPMRSubscriberConfig = + (new AppPreferencesToSubscriberConfigMapper()).apply(getTCATestAppPreferences()); + assertEquals(dMaaPMRSubscriberConfig.getHostName(), "SUBSCRIBER_HOST_NAME"); + } + + @Test + public void testMapTCAConfigToSubscriberConfigFunctionMap() { + DMaaPMRSubscriberConfig dMaaPMRSubscriberConfig = + AppPreferencesToSubscriberConfigMapper.map(getTCATestAppPreferences()); + assertEquals(dMaaPMRSubscriberConfig.getHostName(), "SUBSCRIBER_HOST_NAME"); + } + + @Test + public void testMapTCAConfigToSubscriberConfigFunctionAllNull() { + DMaaPMRSubscriberConfig dMaaPMRSubscriberConfig = + (new AppPreferencesToSubscriberConfigMapper()).apply(new TCATestAppPreferences()); + assertNull(dMaaPMRSubscriberConfig.getHostName()); + } +} diff --git a/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/utils/TCAUtilsTest.java b/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/utils/TCAUtilsTest.java new file mode 100644 index 0000000..19c80d2 --- /dev/null +++ b/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/utils/TCAUtilsTest.java @@ -0,0 +1,357 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.utils; + +import co.cask.cdap.api.RuntimeContext; +import com.google.common.base.Supplier; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Table; +import org.apache.commons.lang3.tuple.Pair; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.junit.runner.RunWith; +import org.mockito.Mockito; +import org.mockito.runners.MockitoJUnitRunner; +import org.openecomp.dcae.analytics.common.exception.MessageProcessingException; +import org.openecomp.dcae.analytics.model.domain.cef.CommonEventHeader; +import org.openecomp.dcae.analytics.model.domain.cef.Event; +import org.openecomp.dcae.analytics.model.domain.cef.EventListener; +import org.openecomp.dcae.analytics.model.domain.cef.EventSeverity; +import org.openecomp.dcae.analytics.model.domain.policy.tca.MetricsPerFunctionalRole; +import org.openecomp.dcae.analytics.model.domain.policy.tca.TCAPolicy; +import org.openecomp.dcae.analytics.model.domain.policy.tca.Threshold; +import org.openecomp.dcae.analytics.model.facade.tca.TCAVESResponse; +import org.openecomp.dcae.analytics.model.util.AnalyticsModelIOUtils; +import org.openecomp.dcae.analytics.tca.BaseAnalyticsTCAUnitTest; +import org.openecomp.dcae.analytics.tca.processor.TCACEFProcessorContext; +import org.openecomp.dcae.analytics.tca.settings.TCAAppPreferences; + +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.Set; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.isA; +import static org.hamcrest.Matchers.containsInAnyOrder; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +/** + * @author Rajiv Singla. Creation Date: 11/9/2016. + */ +@RunWith(MockitoJUnitRunner.class) +public class TCAUtilsTest extends BaseAnalyticsTCAUnitTest { + + @Test + public void testGetPolicyFunctionalRoles() throws Exception { + + final TCAPolicy sampleTCAPolicy = getSampleTCAPolicy(); + final List<String> policyFunctionalRoles = TCAUtils.getPolicyFunctionalRoles(sampleTCAPolicy); + + assertThat("Policy Functional Roles must contain vFirewall and vLoadBalancer", policyFunctionalRoles, + containsInAnyOrder("vFirewall", "vLoadBalancer")); + } + + @Test + public void testGetPolicyFunctionalRoleSupplier() throws Exception { + final TCAPolicy sampleTCAPolicy = getSampleTCAPolicy(); + final Supplier<List<String>> policyFunctionalRoleSupplier = TCAUtils.getPolicyFunctionalRoleSupplier + (sampleTCAPolicy); + final List<String> policyFunctionalRoles = policyFunctionalRoleSupplier.get(); + assertThat("Policy Functional Roles must contain vFirewall and vLoadBalancer", policyFunctionalRoles, + containsInAnyOrder("vFirewall", "vLoadBalancer")); + } + + @Test + public void testProcessCEFMessage() throws Exception { + final String cefMessageString = fromStream(CEF_MESSAGE_JSON_FILE_LOCATION); + final TCACEFProcessorContext tcacefProcessorContext = TCAUtils.filterCEFMessage(cefMessageString, + getSampleTCAPolicy()); + assertThat("TCAECEFProcessor Processor Context can continue flag is true", tcacefProcessorContext + .canProcessingContinue(), is(true)); + } + + @Test + public void testGetPolicyFRThresholdsTableSupplier() throws Exception { + final Table<String, String, List<Threshold>> policyFRThresholdPathTable = TCAUtils + .getPolicyFRThresholdsTableSupplier(getSampleTCAPolicy()).get(); + + final Map<String, List<Threshold>> vFirewall = policyFRThresholdPathTable.row("vFirewall"); + final Map<String, List<Threshold>> vLoadBalancer = policyFRThresholdPathTable.row("vLoadBalancer"); + + final Set<String> vFirewallThresholdPaths = vFirewall.keySet(); + final Set<String> vLoadBalancerPaths = vLoadBalancer.keySet(); + + assertThat("vFirewall threshold field path size must be " + + "\"$.event.measurementsForVfScalingFields.vNicUsageArray[*].bytesIn\"", + vFirewallThresholdPaths.iterator().next(), + is("$.event.measurementsForVfScalingFields.vNicUsageArray[*].bytesIn")); + + assertThat("vLoadBalancer threshold field path size must be " + + "\"\"$.event.measurementsForVfScalingFields.vNicUsageArray[*].packetsIn\"", + vLoadBalancerPaths.iterator().next(), + is("$.event.measurementsForVfScalingFields.vNicUsageArray[*].packetsIn")); + + final List<Threshold> firewallThresholds = policyFRThresholdPathTable.get("vFirewall", + "$.event.measurementsForVfScalingFields.vNicUsageArray[*].bytesIn"); + final List<Threshold> vLoadBalancerThresholds = policyFRThresholdPathTable.get("vLoadBalancer", + "$.event.measurementsForVfScalingFields.vNicUsageArray[*].packetsIn"); + + assertThat("vFirewall Threshold size must be 2", firewallThresholds.size(), is(2)); + assertThat("vLoadBalancer Threshold size must be 2", vLoadBalancerThresholds.size(), is(2)); + } + + @Test + public void testGetJsonPathValueWithValidMessageAndPolicy() throws Exception { + final String cefMessageString = fromStream(CEF_MESSAGE_JSON_FILE_LOCATION); + final String jsonPath = "$.event.measurementsForVfScalingFields.vNicUsageArray[*].bytesIn"; + final ImmutableSet<String> fieldPaths = ImmutableSet.of(jsonPath); + final Map<String, List<Long>> jsonPathValueMap = TCAUtils.getJsonPathValue(cefMessageString, fieldPaths); + assertThat("Json Path value must match", jsonPathValueMap.get(jsonPath).get(0), is(6086L)); + + } + + @Test + public void testGetJsonPathValueWithValidPath() throws Exception { + final String cefMessageString = fromStream(CEF_MESSAGE_JSON_FILE_LOCATION); + final String jsonPath = "$.event.measurementsForVfScalingFields.vNicUsageArray[*].invalid"; + final ImmutableSet<String> fieldPaths = ImmutableSet.of(jsonPath); + final Map<String, List<Long>> jsonPathValueMap = TCAUtils.getJsonPathValue(cefMessageString, fieldPaths); + assertThat("Json path value must be empty", jsonPathValueMap.size(), is(0)); + + } + + @Test + public void testGetValidatedTCAAppPreferences() throws Exception { + RuntimeContext runtimeContext = mock(RuntimeContext.class); + when(runtimeContext.getRuntimeArguments()).thenReturn(getPreferenceMap()); + TCAAppPreferences validatedTCAAppPreferences = TCAUtils.getValidatedTCAAppPreferences(runtimeContext); + assertEquals(validatedTCAAppPreferences.getSubscriberHostName(), "mrlocal-mtnjftle01.homer.com"); + } + + @Test + public void testGetValidatedTCAAppPreferencesWhenDMaaPUrlArePresent() throws Exception { + RuntimeContext runtimeContext = mock(RuntimeContext.class); + final Map<String, String> preferenceMap = getPreferenceMap(); + preferenceMap.put("dmaap.in.event-input.dmaapUrl", + "http://zldcmtd1njcoll00.research.com/unauthenticated.SEC_MEASUREMENT_OUTPUT"); + preferenceMap.put("dmaap.out.alert-output.dmaapUrl", + "http://zldcmtd1njcoll00.research.com/unauthenticated.TCA_EVENT_OUTPUT"); + + preferenceMap.put("dmaap.in.event-input.dmaapUserName", null); + preferenceMap.put("dmaap.in.event-input.dmaapPassword", null); + preferenceMap.put("dmaap.out.alert-output.dmaapUserName", null); + preferenceMap.put("dmaap.out.alert-output.dmaapPassword", null); + + when(runtimeContext.getRuntimeArguments()).thenReturn(preferenceMap); + TCAAppPreferences validatedTCAAppPreferences = TCAUtils.getValidatedTCAAppPreferences(runtimeContext); + + assertEquals(validatedTCAAppPreferences.getSubscriberProtocol(), "http"); + assertEquals(validatedTCAAppPreferences.getPublisherProtocol(), "http"); + + assertEquals(validatedTCAAppPreferences.getSubscriberHostName(), "zldcmtd1njcoll00.research.com"); + assertEquals(validatedTCAAppPreferences.getPublisherHostName(), "zldcmtd1njcoll00.research.com"); + + assertEquals(validatedTCAAppPreferences.getSubscriberHostPort(), new Integer(3904)); + assertEquals(validatedTCAAppPreferences.getPublisherHostPort(), new Integer(3904)); + + assertEquals(validatedTCAAppPreferences.getSubscriberTopicName(), "unauthenticated.SEC_MEASUREMENT_OUTPUT"); + assertEquals(validatedTCAAppPreferences.getPublisherTopicName(), "unauthenticated.TCA_EVENT_OUTPUT"); + + assertNull(validatedTCAAppPreferences.getSubscriberUserName()); + assertNull(validatedTCAAppPreferences.getSubscriberUserPassword()); + assertNull(validatedTCAAppPreferences.getPublisherUserName()); + assertNull(validatedTCAAppPreferences.getPublisherUserPassword()); + + } + + @Test + public void testCreateNewTCAVESResponse() throws Exception { + TCACEFProcessorContext tcacefProcessorContext = mock(TCACEFProcessorContext.class); + + MetricsPerFunctionalRole metricsPerFunctionalRole = mock(MetricsPerFunctionalRole.class); + when(metricsPerFunctionalRole.getThresholds()).thenReturn(getThresholds()); + when(metricsPerFunctionalRole.getPolicyScope()).thenReturn("Test Policy scope"); + when(tcacefProcessorContext.getMetricsPerFunctionalRole()).thenReturn(metricsPerFunctionalRole); + when(metricsPerFunctionalRole.getFunctionalRole()).thenReturn("vLoadBalancer"); + + when(tcacefProcessorContext.getCEFEventListener()).thenReturn(getCEFEventListener()); + TCAVESResponse tcaVESResponse = TCAUtils.createNewTCAVESResponse(tcacefProcessorContext, "TCA_APP_NAME"); + + //TODO : Add proper assertions, as the usage is not clearly understood + assertThat(tcaVESResponse.getClosedLoopControlName(), + is("CL-LBAL-LOW-TRAFFIC-SIG-FB480F95-A453-6F24-B767-FD703241AB1A")); + assertThat(tcaVESResponse.getVersion(), is("Test Version")); + assertThat(tcaVESResponse.getPolicyScope(), is("Test Policy scope")); + } + + @Rule + public ExpectedException expectedIllegalArgumentException = ExpectedException.none(); + + @Test + public void testCreateNewTCAVESResponseNullFunctionalRole() throws Exception { + expectedIllegalArgumentException.expect(MessageProcessingException.class); + expectedIllegalArgumentException.expectCause(isA(IllegalArgumentException.class)); + expectedIllegalArgumentException.expectMessage("No violations metrics. Unable to create VES Response"); + + TCACEFProcessorContext tcacefProcessorContext = mock(TCACEFProcessorContext.class); + TCAVESResponse tcaVESResponse = TCAUtils.createNewTCAVESResponse(tcacefProcessorContext, "TCA_APP_NAME"); + assertNotNull(tcaVESResponse.getClosedLoopControlName()); + } + + @Test + public void testPrioritizeThresholdViolations() throws Exception { + + Map<String, Threshold> thresholdMap = new HashMap<>(); + Threshold majorThreshold = mock(Threshold.class); + when(majorThreshold.getSeverity()).thenReturn(EventSeverity.MAJOR); + thresholdMap.put("MAJOR", majorThreshold); + + Threshold result1 = TCAUtils.prioritizeThresholdViolations(thresholdMap); + assertEquals(result1.getSeverity(), EventSeverity.MAJOR); + + Threshold criticalThreshold = mock(Threshold.class); + when(criticalThreshold.getSeverity()).thenReturn(EventSeverity.CRITICAL); + thresholdMap.put("CRITICAL", criticalThreshold); + + Threshold result2 = TCAUtils.prioritizeThresholdViolations(thresholdMap); + assertEquals(result2.getSeverity(), EventSeverity.CRITICAL); + } + + @Test + public void testCreateViolatedMetrics() throws Exception { + TCAPolicy tcaPolicy = getSampleTCAPolicy(); + Threshold violatedThreshold = getCriticalThreshold(); + String functionalRole = "vFirewall"; + MetricsPerFunctionalRole result = TCAUtils.createViolatedMetrics(tcaPolicy, violatedThreshold, functionalRole); + assertThat(result.getPolicyScope(), is("resource=vFirewall;type=configuration")); + assertThat(result.getPolicyName(), is("configuration.dcae.microservice.tca.xml")); + } + + @Test + public void testCreateViolatedMetricsWrongFunctionalRole() throws Exception { + expectedIllegalArgumentException.expect(MessageProcessingException.class); + expectedIllegalArgumentException.expectCause(isA(IllegalStateException.class)); + expectedIllegalArgumentException.expectMessage("TCA Policy must contain functional Role: badFunctionRoleName"); + + TCAPolicy tcaPolicy = getSampleTCAPolicy(); + Threshold violatedThreshold = getCriticalThreshold(); + String functionalRole = "badFunctionRoleName"; + MetricsPerFunctionalRole result = TCAUtils.createViolatedMetrics(tcaPolicy, violatedThreshold, functionalRole); + } + + @Test + public void testGetDomainAndFunctionalRole() { + TCACEFProcessorContext tcacefProcessorContext = mock(TCACEFProcessorContext.class); + EventListener eventListener = mock(EventListener.class); + Event event = mock(Event.class); + CommonEventHeader commonEventHeader = mock(CommonEventHeader.class); + + Pair<String, String> result = TCAUtils.getDomainAndFunctionalRole(tcacefProcessorContext); + assertNull(result.getLeft()); + assertNull(result.getRight()); + + when(tcacefProcessorContext.getCEFEventListener()).thenReturn(eventListener); + result = TCAUtils.getDomainAndFunctionalRole(tcacefProcessorContext); + assertNull(result.getLeft()); + assertNull(result.getRight()); + + when(eventListener.getEvent()).thenReturn(event); + result = TCAUtils.getDomainAndFunctionalRole(tcacefProcessorContext); + assertNull(result.getLeft()); + assertNull(result.getRight()); + + when(event.getCommonEventHeader()).thenReturn(commonEventHeader); + result = TCAUtils.getDomainAndFunctionalRole(tcacefProcessorContext); + assertNull(result.getLeft()); + assertNull(result.getRight()); + + when(commonEventHeader.getDomain()).thenReturn("testDomain"); + when(commonEventHeader.getFunctionalRole()).thenReturn("functionalRole"); + + result = TCAUtils.getDomainAndFunctionalRole(tcacefProcessorContext); + assertEquals(result.getLeft(), "testDomain"); + assertEquals(result.getRight(), "functionalRole"); + + } + + @Test + public void testComputeThresholdViolationsNotPresent() throws Exception { + TCACEFProcessorContext tcacefProcessorContext = mock(TCACEFProcessorContext.class); + when(tcacefProcessorContext.canProcessingContinue()).thenReturn(true); + when(tcacefProcessorContext.getMessage()).thenReturn(getValidCEFMessage()); + + when(tcacefProcessorContext.getTCAPolicy()).thenReturn(getSampleTCAPolicy()); + when(tcacefProcessorContext.getCEFEventListener()).thenReturn(getCEFEventListener()); + + TCACEFProcessorContext result = TCAUtils.computeThresholdViolations(tcacefProcessorContext); + assertNotNull(result); + verify(result, times(0)).setMetricsPerFunctionalRole(Mockito.any(MetricsPerFunctionalRole.class)); + } + + @Test + public void testComputeThresholdViolationsPresent() throws Exception { + TCACEFProcessorContext tcacefProcessorContext = mock(TCACEFProcessorContext.class); + when(tcacefProcessorContext.canProcessingContinue()).thenReturn(true); + final String cefMessageString = fromStream(CEF_MESSAGE_WITH_THRESHOLD_VIOLATION_JSON_FILE_LOCATION); + when(tcacefProcessorContext.getMessage()).thenReturn(cefMessageString); + + when(tcacefProcessorContext.getTCAPolicy()).thenReturn(getSampleTCAPolicy()); + when(tcacefProcessorContext.getCEFEventListener()).thenReturn(getCEFEventListener()); + + TCACEFProcessorContext result = TCAUtils.computeThresholdViolations(tcacefProcessorContext); + verify(result, times(1)).setMetricsPerFunctionalRole(Mockito.any(MetricsPerFunctionalRole.class)); + } + + + @Test + public void testConvertRuntimeContextToTCAPolicy() throws Exception { + + final Properties controllerProperties = + AnalyticsModelIOUtils.loadPropertiesFile(TCA_CONTROLLER_POLICY_FILE_LOCATION); + + Map<String, String> runtimeArgs = new LinkedHashMap<>(); + for (Map.Entry<Object, Object> property : controllerProperties.entrySet()) { + runtimeArgs.put(property.getKey().toString(), property.getValue().toString()); + } + + RuntimeContext runtimeContext = mock(RuntimeContext.class); + when(runtimeContext.getRuntimeArguments()).thenReturn(runtimeArgs); + final TCAPolicy tcaPolicy = TCAUtils.getValidatedTCAPolicyPreferences(runtimeContext); + + assertThat("Policy Domain must be measurementsForVfScaling", + tcaPolicy.getDomain(), is("measurementsForVfScaling")); + + assertThat("Policy must have 2 metrics per functional roles", + tcaPolicy.getMetricsPerFunctionalRole().size(), is(2)); + + } +} diff --git a/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/worker/TCADMaaPMRSubscriberJobTest.java b/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/worker/TCADMaaPMRSubscriberJobTest.java new file mode 100644 index 0000000..bc8a6f0 --- /dev/null +++ b/dcae-analytics-tca/src/test/java/org/openecomp/dcae/analytics/tca/worker/TCADMaaPMRSubscriberJobTest.java @@ -0,0 +1,80 @@ +/* + * ============LICENSE_START========================================================= + * dcae-analytics + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.dcae.analytics.tca.worker; + +import co.cask.cdap.api.metrics.Metrics; +import co.cask.cdap.api.worker.WorkerConfigurer; +import co.cask.cdap.api.worker.WorkerContext; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mockito; +import org.mockito.runners.MockitoJUnitRunner; +import org.openecomp.dcae.analytics.common.AnalyticsConstants; +import org.openecomp.dcae.analytics.dmaap.service.subscriber.DMaaPMRSubscriber; +import org.openecomp.dcae.analytics.tca.BaseAnalyticsTCAUnitTest; +import org.quartz.JobDataMap; +import org.quartz.JobExecutionContext; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +/** + * @author Manjesh Gowda. Creation Date: 11/18/2016. + */ +@RunWith(MockitoJUnitRunner.class) +public class TCADMaaPMRSubscriberJobTest extends BaseAnalyticsTCAUnitTest { + + @Test + public void testExecute() throws Exception { + + DMaaPMRSubscriber mockDMaaPMRSubscriber = mock(DMaaPMRSubscriber.class); + Metrics mockMetrics = mock(Metrics.class); + + WorkerContext workerContext = mock(WorkerContext.class); + WorkerConfigurer workerConfigurer = mock(WorkerConfigurer.class); + //when(workerContext.getRuntimeArguments()).thenReturn(getPreferenceMap()); + + JobExecutionContext mockJobExecutionContext = mock(JobExecutionContext.class); + JobDataMap mockJobDataMap = mock(JobDataMap.class); + when(mockJobExecutionContext.getMergedJobDataMap()).thenReturn(mockJobDataMap); + + /*when(mockJobDataMap.getString(AnalyticsConstants.CDAP_STREAM_VARIABLE_NAME)) + .thenReturn(CDAPComponentsConstants.TCA_FIXED_SUBSCRIBER_OUTPUT_NAME_STREAM);*/ + + when(mockJobDataMap.get(AnalyticsConstants.WORKER_CONTEXT_VARIABLE_NAME)) + .thenReturn(workerContext); + + when(mockJobDataMap.get(AnalyticsConstants.DMAAP_SUBSCRIBER_VARIABLE_NAME)) + .thenReturn(mockDMaaPMRSubscriber); + + /*when(mockJobDataMap.get(AnalyticsConstants.DMAAP_SUBSCRIBER_METRICS_VARIABLE_NAME)) + .thenReturn(mockMetrics);*/ + + TCADMaaPMRSubscriberJob tcaDMaaPMRSubscriberJob = new TCADMaaPMRSubscriberJob(); + tcaDMaaPMRSubscriberJob.execute(mockJobExecutionContext); + + verify(mockJobDataMap, times(1)).getString(Mockito.anyString()); + verify(mockJobDataMap, times(3)).get(any()); + } +} diff --git a/dcae-analytics-tca/src/test/resources/data/json/cef/cef_message.json b/dcae-analytics-tca/src/test/resources/data/json/cef/cef_message.json new file mode 100644 index 0000000..52cf53b --- /dev/null +++ b/dcae-analytics-tca/src/test/resources/data/json/cef/cef_message.json @@ -0,0 +1,37 @@ +{ + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6086, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 42, + "bytesOut": 7156, + "packetsIn": 93, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070210290442, + "eventId": "375", + "lastEpochMicrosec": 1477070220290442, + "priority": "Normal", + "sequence": 375, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } +} diff --git a/dcae-analytics-tca/src/test/resources/data/json/cef/cef_message_with_threshold_violation.json b/dcae-analytics-tca/src/test/resources/data/json/cef/cef_message_with_threshold_violation.json new file mode 100644 index 0000000..bfb1672 --- /dev/null +++ b/dcae-analytics-tca/src/test/resources/data/json/cef/cef_message_with_threshold_violation.json @@ -0,0 +1,37 @@ +{ + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 20000, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 42, + "bytesOut": 7156, + "packetsIn": 93, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070210290442, + "eventId": "375", + "lastEpochMicrosec": 1477070220290442, + "priority": "Normal", + "sequence": 375, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } +} diff --git a/dcae-analytics-tca/src/test/resources/data/json/cef/cef_messages.json b/dcae-analytics-tca/src/test/resources/data/json/cef/cef_messages.json new file mode 100644 index 0000000..bc7a924 --- /dev/null +++ b/dcae-analytics-tca/src/test/resources/data/json/cef/cef_messages.json @@ -0,0 +1,12952 @@ +[ + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6086, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 42, + "bytesOut": 7156, + "packetsIn": 93, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070210290442, + "eventId": "375", + "lastEpochMicrosec": 1477070220290442, + "priority": "Normal", + "sequence": 375, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5403, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 28, + "bytesOut": 4530, + "packetsIn": 78, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070260383311, + "eventId": "380", + "lastEpochMicrosec": 1477070270383311, + "priority": "Normal", + "sequence": 380, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3972, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 30, + "bytesOut": 5316, + "packetsIn": 56, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070290441950, + "eventId": "383", + "lastEpochMicrosec": 1477070300441950, + "priority": "Normal", + "sequence": 383, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4761, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 33, + "bytesOut": 5528, + "packetsIn": 70, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070380597960, + "eventId": "392", + "lastEpochMicrosec": 1477070390597960, + "priority": "Normal", + "sequence": 392, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5828, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 5222, + "packetsIn": 89, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070390615151, + "eventId": "393", + "lastEpochMicrosec": 1477070400615151, + "priority": "Normal", + "sequence": 393, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3834, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 25, + "bytesOut": 4334, + "packetsIn": 58, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070701189940, + "eventId": "424", + "lastEpochMicrosec": 1477070711189940, + "priority": "Normal", + "sequence": 424, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3892, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 24, + "bytesOut": 4400, + "packetsIn": 53, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070851466814, + "eventId": "439", + "lastEpochMicrosec": 1477070861466814, + "priority": "Normal", + "sequence": 439, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5948, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 5215, + "packetsIn": 90, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070931613946, + "eventId": "447", + "lastEpochMicrosec": 1477070941613946, + "priority": "Normal", + "sequence": 447, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4324, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 30, + "bytesOut": 5436, + "packetsIn": 57, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070971689950, + "eventId": "451", + "lastEpochMicrosec": 1477070981689950, + "priority": "Normal", + "sequence": 451, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5918, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 34, + "bytesOut": 5668, + "packetsIn": 91, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070991724150, + "eventId": "453", + "lastEpochMicrosec": 1477071001724150, + "priority": "Normal", + "sequence": 453, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4200, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 28, + "bytesOut": 5192, + "packetsIn": 63, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071081905713, + "eventId": "462", + "lastEpochMicrosec": 1477071091905713, + "priority": "Normal", + "sequence": 462, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4490, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 36, + "bytesOut": 5920, + "packetsIn": 67, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071262221510, + "eventId": "480", + "lastEpochMicrosec": 1477071272221510, + "priority": "Normal", + "sequence": 480, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 25940, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 157, + "bytesOut": 27474, + "packetsIn": 303, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071412476618, + "eventId": "495", + "lastEpochMicrosec": 1477071422476618, + "priority": "Normal", + "sequence": 495, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 7160, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 31, + "bytesOut": 5418, + "packetsIn": 112, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071532712315, + "eventId": "507", + "lastEpochMicrosec": 1477071542712315, + "priority": "Normal", + "sequence": 507, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5563, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 25, + "bytesOut": 4192, + "packetsIn": 81, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071582806156, + "eventId": "512", + "lastEpochMicrosec": 1477071592806156, + "priority": "Normal", + "sequence": 512, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4988, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 27, + "bytesOut": 5218, + "packetsIn": 77, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071592825964, + "eventId": "513", + "lastEpochMicrosec": 1477071602825964, + "priority": "Normal", + "sequence": 513, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 9123, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 53, + "bytesOut": 8412, + "packetsIn": 127, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071642920935, + "eventId": "518", + "lastEpochMicrosec": 1477071652920935, + "priority": "Normal", + "sequence": 518, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 18442, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 112, + "bytesOut": 19404, + "packetsIn": 218, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071733101176, + "eventId": "527", + "lastEpochMicrosec": 1477071743101176, + "priority": "Normal", + "sequence": 527, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5216, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 27, + "bytesOut": 5130, + "packetsIn": 80, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071743125902, + "eventId": "528", + "lastEpochMicrosec": 1477071753125902, + "priority": "Normal", + "sequence": 528, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5870, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 36, + "bytesOut": 6716, + "packetsIn": 91, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071903446337, + "eventId": "544", + "lastEpochMicrosec": 1477071913446337, + "priority": "Normal", + "sequence": 544, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 35138, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 220, + "bytesOut": 47818, + "packetsIn": 407, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071953549981, + "eventId": "549", + "lastEpochMicrosec": 1477071963549981, + "priority": "Normal", + "sequence": 549, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 63510, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 398, + "bytesOut": 71038, + "packetsIn": 703, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071963565170, + "eventId": "550", + "lastEpochMicrosec": 1477071973565170, + "priority": "Normal", + "sequence": 550, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4250, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 26, + "bytesOut": 5060, + "packetsIn": 64, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072103847337, + "eventId": "564", + "lastEpochMicrosec": 1477072113847337, + "priority": "Normal", + "sequence": 564, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3344, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 23, + "bytesOut": 4138, + "packetsIn": 49, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072163977616, + "eventId": "570", + "lastEpochMicrosec": 1477072173977616, + "priority": "Normal", + "sequence": 570, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4190, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 26, + "bytesOut": 5032, + "packetsIn": 63, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072194037594, + "eventId": "573", + "lastEpochMicrosec": 1477072204037594, + "priority": "Normal", + "sequence": 573, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4102, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 31, + "bytesOut": 5418, + "packetsIn": 54, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072234105966, + "eventId": "577", + "lastEpochMicrosec": 1477072244105966, + "priority": "Normal", + "sequence": 577, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4040, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 31, + "bytesOut": 5410, + "packetsIn": 60, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072284197410, + "eventId": "582", + "lastEpochMicrosec": 1477072294197410, + "priority": "Normal", + "sequence": 582, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4348, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 32, + "bytesOut": 5556, + "packetsIn": 58, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072294217952, + "eventId": "583", + "lastEpochMicrosec": 1477072304217952, + "priority": "Normal", + "sequence": 583, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4820, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 31, + "bytesOut": 5402, + "packetsIn": 66, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072354321794, + "eventId": "589", + "lastEpochMicrosec": 1477072364321794, + "priority": "Normal", + "sequence": 589, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5006, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 42, + "bytesOut": 7156, + "packetsIn": 73, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072454499759, + "eventId": "599", + "lastEpochMicrosec": 1477072464499759, + "priority": "Normal", + "sequence": 599, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4964, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 35, + "bytesOut": 5834, + "packetsIn": 75, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072494602015, + "eventId": "603", + "lastEpochMicrosec": 1477072504602015, + "priority": "Normal", + "sequence": 603, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5330, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 46, + "bytesOut": 7420, + "packetsIn": 80, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072634866475, + "eventId": "617", + "lastEpochMicrosec": 1477072644866475, + "priority": "Normal", + "sequence": 617, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5330, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 46, + "bytesOut": 7420, + "packetsIn": 80, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072745069203, + "eventId": "628", + "lastEpochMicrosec": 1477072755069203, + "priority": "Normal", + "sequence": 628, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 263112, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 1165, + "bytesOut": 337182, + "packetsIn": 2570, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072805174346, + "eventId": "634", + "lastEpochMicrosec": 1477072815174346, + "priority": "Normal", + "sequence": 634, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 11212, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 24, + "bytesOut": 4232, + "packetsIn": 176, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072835250994, + "eventId": "637", + "lastEpochMicrosec": 1477072845250994, + "priority": "Normal", + "sequence": 637, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6375, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 32, + "bytesOut": 5516, + "packetsIn": 94, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072845276414, + "eventId": "638", + "lastEpochMicrosec": 1477072855276414, + "priority": "Normal", + "sequence": 638, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3492, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 28, + "bytesOut": 5252, + "packetsIn": 50, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072995553968, + "eventId": "653", + "lastEpochMicrosec": 1477073005553968, + "priority": "Normal", + "sequence": 653, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4256, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 31, + "bytesOut": 5407, + "packetsIn": 63, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073095741898, + "eventId": "663", + "lastEpochMicrosec": 1477073105741898, + "priority": "Normal", + "sequence": 663, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4280, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 25, + "bytesOut": 4866, + "packetsIn": 56, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073195929121, + "eventId": "673", + "lastEpochMicrosec": 1477073205929121, + "priority": "Normal", + "sequence": 673, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4076, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 27, + "bytesOut": 5126, + "packetsIn": 61, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073286097936, + "eventId": "682", + "lastEpochMicrosec": 1477073296097936, + "priority": "Normal", + "sequence": 682, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5054, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 38, + "bytesOut": 6600, + "packetsIn": 78, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073366234417, + "eventId": "690", + "lastEpochMicrosec": 1477073376234417, + "priority": "Normal", + "sequence": 690, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5186, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 42, + "bytesOut": 7220, + "packetsIn": 78, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073426339606, + "eventId": "696", + "lastEpochMicrosec": 1477073436339606, + "priority": "Normal", + "sequence": 696, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4568, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 39, + "bytesOut": 6606, + "packetsIn": 60, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073556577962, + "eventId": "709", + "lastEpochMicrosec": 1477073566577962, + "priority": "Normal", + "sequence": 709, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4472, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 33, + "bytesOut": 5630, + "packetsIn": 65, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073606669965, + "eventId": "714", + "lastEpochMicrosec": 1477073616669965, + "priority": "Normal", + "sequence": 714, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3554, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 26, + "bytesOut": 5192, + "packetsIn": 52, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073666794004, + "eventId": "720", + "lastEpochMicrosec": 1477073676794004, + "priority": "Normal", + "sequence": 720, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4682, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 38, + "bytesOut": 6540, + "packetsIn": 70, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070300458069, + "eventId": "384", + "lastEpochMicrosec": 1477070310458069, + "priority": "Normal", + "sequence": 384, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4470, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 43, + "bytesOut": 7250, + "packetsIn": 65, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070350545310, + "eventId": "389", + "lastEpochMicrosec": 1477070360545310, + "priority": "Normal", + "sequence": 389, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5864, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 45, + "bytesOut": 7318, + "packetsIn": 88, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070450716636, + "eventId": "399", + "lastEpochMicrosec": 1477070460716636, + "priority": "Normal", + "sequence": 399, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3558, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 5362, + "packetsIn": 51, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070470756168, + "eventId": "401", + "lastEpochMicrosec": 1477070480756168, + "priority": "Normal", + "sequence": 401, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5022, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 45, + "bytesOut": 7382, + "packetsIn": 74, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070530883239, + "eventId": "407", + "lastEpochMicrosec": 1477070540883239, + "priority": "Normal", + "sequence": 407, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4816, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 30, + "bytesOut": 5344, + "packetsIn": 66, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070611026436, + "eventId": "415", + "lastEpochMicrosec": 1477070621026436, + "priority": "Normal", + "sequence": 415, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 8898, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 63, + "bytesOut": 9201, + "packetsIn": 113, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070831428780, + "eventId": "437", + "lastEpochMicrosec": 1477070841428780, + "priority": "Normal", + "sequence": 437, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3836, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 23, + "bytesOut": 4162, + "packetsIn": 57, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070941633936, + "eventId": "448", + "lastEpochMicrosec": 1477070951633936, + "priority": "Normal", + "sequence": 448, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3248, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 27, + "bytesOut": 4546, + "packetsIn": 47, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071071883807, + "eventId": "461", + "lastEpochMicrosec": 1477071081883807, + "priority": "Normal", + "sequence": 461, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5006, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 5286, + "packetsIn": 76, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071172066272, + "eventId": "471", + "lastEpochMicrosec": 1477071182066272, + "priority": "Normal", + "sequence": 471, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5438, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 34, + "bytesOut": 6084, + "packetsIn": 83, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071182086282, + "eventId": "472", + "lastEpochMicrosec": 1477071192086282, + "priority": "Normal", + "sequence": 472, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 14114, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 92, + "bytesOut": 16060, + "packetsIn": 172, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071382426114, + "eventId": "492", + "lastEpochMicrosec": 1477071392426114, + "priority": "Normal", + "sequence": 492, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5617, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 31, + "bytesOut": 5427, + "packetsIn": 86, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071542733962, + "eventId": "508", + "lastEpochMicrosec": 1477071552733962, + "priority": "Normal", + "sequence": 508, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4448, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 27, + "bytesOut": 4538, + "packetsIn": 67, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071682993575, + "eventId": "522", + "lastEpochMicrosec": 1477071692993575, + "priority": "Normal", + "sequence": 522, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6113, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 30, + "bytesOut": 5298, + "packetsIn": 87, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071703031027, + "eventId": "524", + "lastEpochMicrosec": 1477071713031027, + "priority": "Normal", + "sequence": 524, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5542, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 31, + "bytesOut": 5434, + "packetsIn": 78, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071813273088, + "eventId": "535", + "lastEpochMicrosec": 1477071823273088, + "priority": "Normal", + "sequence": 535, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 34574, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 214, + "bytesOut": 47040, + "packetsIn": 395, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072023686281, + "eventId": "556", + "lastEpochMicrosec": 1477072033686281, + "priority": "Normal", + "sequence": 556, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 2798, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 22, + "bytesOut": 4028, + "packetsIn": 40, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072093829958, + "eventId": "563", + "lastEpochMicrosec": 1477072103829958, + "priority": "Normal", + "sequence": 563, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3446, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 32, + "bytesOut": 5536, + "packetsIn": 50, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072153957985, + "eventId": "569", + "lastEpochMicrosec": 1477072163957985, + "priority": "Normal", + "sequence": 569, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4190, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 36, + "bytesOut": 6760, + "packetsIn": 62, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072204053021, + "eventId": "574", + "lastEpochMicrosec": 1477072214053021, + "priority": "Normal", + "sequence": 574, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5939, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 28, + "bytesOut": 4522, + "packetsIn": 85, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072244123508, + "eventId": "578", + "lastEpochMicrosec": 1477072254123508, + "priority": "Normal", + "sequence": 578, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4022, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 28, + "bytesOut": 4584, + "packetsIn": 60, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072464518421, + "eventId": "600", + "lastEpochMicrosec": 1477072474518421, + "priority": "Normal", + "sequence": 600, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3692, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 21, + "bytesOut": 3918, + "packetsIn": 47, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072654900903, + "eventId": "619", + "lastEpochMicrosec": 1477072664900903, + "priority": "Normal", + "sequence": 619, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5006, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 32, + "bytesOut": 5728, + "packetsIn": 76, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072704996775, + "eventId": "624", + "lastEpochMicrosec": 1477072714996775, + "priority": "Normal", + "sequence": 624, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3836, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 24, + "bytesOut": 5036, + "packetsIn": 57, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072925428340, + "eventId": "646", + "lastEpochMicrosec": 1477072935428340, + "priority": "Normal", + "sequence": 646, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4040, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 31, + "bytesOut": 5382, + "packetsIn": 60, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072985535172, + "eventId": "652", + "lastEpochMicrosec": 1477072995535172, + "priority": "Normal", + "sequence": 652, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4694, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 30, + "bytesOut": 5316, + "packetsIn": 63, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073075701224, + "eventId": "661", + "lastEpochMicrosec": 1477073085701224, + "priority": "Normal", + "sequence": 661, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5066, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 42, + "bytesOut": 7120, + "packetsIn": 76, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073105759457, + "eventId": "664", + "lastEpochMicrosec": 1477073115759457, + "priority": "Normal", + "sequence": 664, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5510, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 46, + "bytesOut": 7421, + "packetsIn": 83, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073155858608, + "eventId": "669", + "lastEpochMicrosec": 1477073165858608, + "priority": "Normal", + "sequence": 669, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4146, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 5214, + "packetsIn": 61, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073416320492, + "eventId": "695", + "lastEpochMicrosec": 1477073426320492, + "priority": "Normal", + "sequence": 695, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5610, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 44, + "bytesOut": 7392, + "packetsIn": 76, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073436360527, + "eventId": "697", + "lastEpochMicrosec": 1477073446360527, + "priority": "Normal", + "sequence": 697, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6777, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 31, + "bytesOut": 5276, + "packetsIn": 101, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073506489807, + "eventId": "704", + "lastEpochMicrosec": 1477073516489807, + "priority": "Normal", + "sequence": 704, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4898, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 34, + "bytesOut": 6005, + "packetsIn": 74, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073516505974, + "eventId": "705", + "lastEpochMicrosec": 1477073526505974, + "priority": "Normal", + "sequence": 705, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3902, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 30, + "bytesOut": 5120, + "packetsIn": 58, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073656765261, + "eventId": "719", + "lastEpochMicrosec": 1477073666765261, + "priority": "Normal", + "sequence": 719, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 7185, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 37, + "bytesOut": 6488, + "packetsIn": 108, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073686831588, + "eventId": "722", + "lastEpochMicrosec": 1477073696831588, + "priority": "Normal", + "sequence": 722, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4778, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 32, + "bytesOut": 5084, + "packetsIn": 72, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070240346627, + "eventId": "378", + "lastEpochMicrosec": 1477070250346627, + "priority": "Normal", + "sequence": 378, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5318, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 24, + "bytesOut": 4864, + "packetsIn": 82, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070270398947, + "eventId": "381", + "lastEpochMicrosec": 1477070280398947, + "priority": "Normal", + "sequence": 381, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5079, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 30, + "bytesOut": 5266, + "packetsIn": 71, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070440700538, + "eventId": "398", + "lastEpochMicrosec": 1477070450700538, + "priority": "Normal", + "sequence": 398, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3866, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 22, + "bytesOut": 3980, + "packetsIn": 58, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070601009676, + "eventId": "414", + "lastEpochMicrosec": 1477070611009676, + "priority": "Normal", + "sequence": 414, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 10154, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 43, + "bytesOut": 7884, + "packetsIn": 99, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070751281687, + "eventId": "429", + "lastEpochMicrosec": 1477070761281687, + "priority": "Normal", + "sequence": 429, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 7970, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 31, + "bytesOut": 5427, + "packetsIn": 128, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070781332864, + "eventId": "432", + "lastEpochMicrosec": 1477070791332864, + "priority": "Normal", + "sequence": 432, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6052, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 42, + "bytesOut": 7480, + "packetsIn": 82, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070891536182, + "eventId": "443", + "lastEpochMicrosec": 1477070901536182, + "priority": "Normal", + "sequence": 443, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5080, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 44, + "bytesOut": 7288, + "packetsIn": 69, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071031806592, + "eventId": "457", + "lastEpochMicrosec": 1477071041806592, + "priority": "Normal", + "sequence": 457, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4777, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 24, + "bytesOut": 4122, + "packetsIn": 67, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071041825555, + "eventId": "458", + "lastEpochMicrosec": 1477071051825555, + "priority": "Normal", + "sequence": 458, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4736, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 25, + "bytesOut": 4302, + "packetsIn": 72, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071111957977, + "eventId": "465", + "lastEpochMicrosec": 1477071121957977, + "priority": "Normal", + "sequence": 465, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6283, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 35, + "bytesOut": 5272, + "packetsIn": 89, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071162050981, + "eventId": "470", + "lastEpochMicrosec": 1477071172050981, + "priority": "Normal", + "sequence": 470, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5010, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 43, + "bytesOut": 7250, + "packetsIn": 74, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071192103048, + "eventId": "473", + "lastEpochMicrosec": 1477071202103048, + "priority": "Normal", + "sequence": 473, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3360, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 28, + "bytesOut": 5112, + "packetsIn": 48, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071252204852, + "eventId": "479", + "lastEpochMicrosec": 1477071262204852, + "priority": "Normal", + "sequence": 479, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3912, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 30, + "bytesOut": 5324, + "packetsIn": 57, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071312304729, + "eventId": "485", + "lastEpochMicrosec": 1477071322304729, + "priority": "Normal", + "sequence": 485, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4568, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 5294, + "packetsIn": 70, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071352377904, + "eventId": "489", + "lastEpochMicrosec": 1477071362377904, + "priority": "Normal", + "sequence": 489, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 26549, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 158, + "bytesOut": 28258, + "packetsIn": 311, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071402460522, + "eventId": "494", + "lastEpochMicrosec": 1477071412460522, + "priority": "Normal", + "sequence": 494, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5329, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 24, + "bytesOut": 4270, + "packetsIn": 78, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071462573938, + "eventId": "500", + "lastEpochMicrosec": 1477071472573938, + "priority": "Normal", + "sequence": 500, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6232, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 46, + "bytesOut": 7420, + "packetsIn": 86, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071572787941, + "eventId": "511", + "lastEpochMicrosec": 1477071582787941, + "priority": "Normal", + "sequence": 511, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4532, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 20, + "bytesOut": 3809, + "packetsIn": 69, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071662956095, + "eventId": "520", + "lastEpochMicrosec": 1477071672956095, + "priority": "Normal", + "sequence": 520, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4520, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 31, + "bytesOut": 5490, + "packetsIn": 68, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071672977950, + "eventId": "521", + "lastEpochMicrosec": 1477071682977950, + "priority": "Normal", + "sequence": 521, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5002, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 4734, + "packetsIn": 68, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071693013688, + "eventId": "523", + "lastEpochMicrosec": 1477071703013688, + "priority": "Normal", + "sequence": 523, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5516, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 25, + "bytesOut": 5023, + "packetsIn": 85, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071893429573, + "eventId": "543", + "lastEpochMicrosec": 1477071903429573, + "priority": "Normal", + "sequence": 543, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 18644, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 120, + "bytesOut": 20884, + "packetsIn": 230, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071923478914, + "eventId": "546", + "lastEpochMicrosec": 1477071933478914, + "priority": "Normal", + "sequence": 546, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4914, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 30, + "bytesOut": 5640, + "packetsIn": 71, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071983602387, + "eventId": "552", + "lastEpochMicrosec": 1477071993602387, + "priority": "Normal", + "sequence": 552, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 8506, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 60, + "bytesOut": 11100, + "packetsIn": 110, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071993632316, + "eventId": "553", + "lastEpochMicrosec": 1477072003632316, + "priority": "Normal", + "sequence": 553, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 17750, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 120, + "bytesOut": 25832, + "packetsIn": 215, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072043723108, + "eventId": "558", + "lastEpochMicrosec": 1477072053723108, + "priority": "Normal", + "sequence": 558, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4592, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 32, + "bytesOut": 5504, + "packetsIn": 69, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072143938037, + "eventId": "568", + "lastEpochMicrosec": 1477072153938037, + "priority": "Normal", + "sequence": 568, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 8125, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 55, + "bytesOut": 8060, + "packetsIn": 119, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072364341906, + "eventId": "590", + "lastEpochMicrosec": 1477072374341906, + "priority": "Normal", + "sequence": 590, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4136, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 33, + "bytesOut": 5851, + "packetsIn": 62, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072374359351, + "eventId": "591", + "lastEpochMicrosec": 1477072384359351, + "priority": "Normal", + "sequence": 591, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4388, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 5206, + "packetsIn": 58, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072474537911, + "eventId": "601", + "lastEpochMicrosec": 1477072484537911, + "priority": "Normal", + "sequence": 601, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5228, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 38, + "bytesOut": 6932, + "packetsIn": 71, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072534679739, + "eventId": "607", + "lastEpochMicrosec": 1477072544679739, + "priority": "Normal", + "sequence": 607, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3836, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 27, + "bytesOut": 5018, + "packetsIn": 55, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072574755001, + "eventId": "611", + "lastEpochMicrosec": 1477072584755001, + "priority": "Normal", + "sequence": 611, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6919, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 33, + "bytesOut": 5628, + "packetsIn": 104, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072725036569, + "eventId": "626", + "lastEpochMicrosec": 1477072735036569, + "priority": "Normal", + "sequence": 626, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4442, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 38, + "bytesOut": 6892, + "packetsIn": 66, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072855292945, + "eventId": "639", + "lastEpochMicrosec": 1477072865292945, + "priority": "Normal", + "sequence": 639, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6909, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 42, + "bytesOut": 6802, + "packetsIn": 102, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072905381152, + "eventId": "644", + "lastEpochMicrosec": 1477072915381152, + "priority": "Normal", + "sequence": 644, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4826, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 42, + "bytesOut": 7156, + "packetsIn": 72, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072945465009, + "eventId": "648", + "lastEpochMicrosec": 1477072955465009, + "priority": "Normal", + "sequence": 648, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3636, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 24, + "bytesOut": 4160, + "packetsIn": 53, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073115777000, + "eventId": "665", + "lastEpochMicrosec": 1477073125777000, + "priority": "Normal", + "sequence": 665, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4098, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 5354, + "packetsIn": 60, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073235998974, + "eventId": "677", + "lastEpochMicrosec": 1477073245998974, + "priority": "Normal", + "sequence": 677, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4508, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 27, + "bytesOut": 5166, + "packetsIn": 68, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073246017901, + "eventId": "678", + "lastEpochMicrosec": 1477073256017901, + "priority": "Normal", + "sequence": 678, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4026, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 5358, + "packetsIn": 59, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073296117387, + "eventId": "683", + "lastEpochMicrosec": 1477073306117387, + "priority": "Normal", + "sequence": 683, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3938, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 24, + "bytesOut": 4168, + "packetsIn": 49, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073376250039, + "eventId": "691", + "lastEpochMicrosec": 1477073386250039, + "priority": "Normal", + "sequence": 691, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4514, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 30, + "bytesOut": 5324, + "packetsIn": 70, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073586625284, + "eventId": "712", + "lastEpochMicrosec": 1477073596625284, + "priority": "Normal", + "sequence": 712, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5193, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 35, + "bytesOut": 5748, + "packetsIn": 74, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070200274642, + "eventId": "374", + "lastEpochMicrosec": 1477070210274642, + "priority": "Normal", + "sequence": 374, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4208, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 27, + "bytesOut": 4874, + "packetsIn": 63, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070220308044, + "eventId": "376", + "lastEpochMicrosec": 1477070230308044, + "priority": "Normal", + "sequence": 376, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4102, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 5346, + "packetsIn": 55, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070490793952, + "eventId": "403", + "lastEpochMicrosec": 1477070500793952, + "priority": "Normal", + "sequence": 403, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3278, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 22, + "bytesOut": 4036, + "packetsIn": 48, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070540900880, + "eventId": "408", + "lastEpochMicrosec": 1477070550900880, + "priority": "Normal", + "sequence": 408, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4094, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 30, + "bytesOut": 5333, + "packetsIn": 61, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070580972300, + "eventId": "412", + "lastEpochMicrosec": 1477070590972300, + "priority": "Normal", + "sequence": 412, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6261, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 31, + "bytesOut": 5472, + "packetsIn": 93, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070621041944, + "eventId": "416", + "lastEpochMicrosec": 1477070631041944, + "priority": "Normal", + "sequence": 416, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4462, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 5302, + "packetsIn": 60, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070671133935, + "eventId": "421", + "lastEpochMicrosec": 1477070681133935, + "priority": "Normal", + "sequence": 421, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3518, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 22, + "bytesOut": 4028, + "packetsIn": 52, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070721225970, + "eventId": "426", + "lastEpochMicrosec": 1477070731225970, + "priority": "Normal", + "sequence": 426, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 7454, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 50, + "bytesOut": 7435, + "packetsIn": 100, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070771317040, + "eventId": "431", + "lastEpochMicrosec": 1477070781317040, + "priority": "Normal", + "sequence": 431, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 46408, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 282, + "bytesOut": 41467, + "packetsIn": 531, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070811385505, + "eventId": "435", + "lastEpochMicrosec": 1477070821385505, + "priority": "Normal", + "sequence": 435, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4444, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 26, + "bytesOut": 4436, + "packetsIn": 61, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071091925961, + "eventId": "463", + "lastEpochMicrosec": 1477071101925961, + "priority": "Normal", + "sequence": 463, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5120, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 4898, + "packetsIn": 77, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071362393895, + "eventId": "490", + "lastEpochMicrosec": 1477071372393895, + "priority": "Normal", + "sequence": 490, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4314, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 25, + "bytesOut": 4326, + "packetsIn": 65, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071372410540, + "eventId": "491", + "lastEpochMicrosec": 1477071382410540, + "priority": "Normal", + "sequence": 491, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5072, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 5518, + "packetsIn": 77, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071422497943, + "eventId": "496", + "lastEpochMicrosec": 1477071432497943, + "priority": "Normal", + "sequence": 496, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4868, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 5286, + "packetsIn": 72, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071602842823, + "eventId": "514", + "lastEpochMicrosec": 1477071612842823, + "priority": "Normal", + "sequence": 514, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5534, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 30, + "bytesOut": 5324, + "packetsIn": 85, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071863369947, + "eventId": "540", + "lastEpochMicrosec": 1477071873369947, + "priority": "Normal", + "sequence": 540, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4594, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 23, + "bytesOut": 4074, + "packetsIn": 63, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071873389953, + "eventId": "541", + "lastEpochMicrosec": 1477071883389953, + "priority": "Normal", + "sequence": 541, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 9377, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 46, + "bytesOut": 7894, + "packetsIn": 130, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071883407370, + "eventId": "542", + "lastEpochMicrosec": 1477071893407370, + "priority": "Normal", + "sequence": 542, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5864, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 45, + "bytesOut": 7318, + "packetsIn": 88, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071913462011, + "eventId": "545", + "lastEpochMicrosec": 1477071923462011, + "priority": "Normal", + "sequence": 545, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 27350, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 164, + "bytesOut": 35804, + "packetsIn": 324, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072013669950, + "eventId": "555", + "lastEpochMicrosec": 1477072023669950, + "priority": "Normal", + "sequence": 555, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5981, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 27, + "bytesOut": 4364, + "packetsIn": 86, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072304235475, + "eventId": "584", + "lastEpochMicrosec": 1477072314235475, + "priority": "Normal", + "sequence": 584, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 203574, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 23, + "bytesOut": 4122, + "packetsIn": 308, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072554718395, + "eventId": "609", + "lastEpochMicrosec": 1477072564718395, + "priority": "Normal", + "sequence": 609, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4142, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 32, + "bytesOut": 5495, + "packetsIn": 63, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072564737954, + "eventId": "610", + "lastEpochMicrosec": 1477072574737954, + "priority": "Normal", + "sequence": 610, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4172, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 23, + "bytesOut": 4066, + "packetsIn": 63, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072684959633, + "eventId": "622", + "lastEpochMicrosec": 1477072694959633, + "priority": "Normal", + "sequence": 622, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4682, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 36, + "bytesOut": 6100, + "packetsIn": 70, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072694977636, + "eventId": "623", + "lastEpochMicrosec": 1477072704977636, + "priority": "Normal", + "sequence": 623, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5024, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 35, + "bytesOut": 5999, + "packetsIn": 74, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072735051857, + "eventId": "627", + "lastEpochMicrosec": 1477072745051857, + "priority": "Normal", + "sequence": 627, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6750, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 42, + "bytesOut": 7198, + "packetsIn": 98, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072785141695, + "eventId": "632", + "lastEpochMicrosec": 1477072795141695, + "priority": "Normal", + "sequence": 632, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 38530, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 249, + "bytesOut": 54426, + "packetsIn": 436, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072795156085, + "eventId": "633", + "lastEpochMicrosec": 1477072805156085, + "priority": "Normal", + "sequence": 633, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4616, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 37, + "bytesOut": 6826, + "packetsIn": 69, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072885342781, + "eventId": "642", + "lastEpochMicrosec": 1477072895342781, + "priority": "Normal", + "sequence": 642, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4934, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 30, + "bytesOut": 5316, + "packetsIn": 67, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072895361934, + "eventId": "643", + "lastEpochMicrosec": 1477072905361934, + "priority": "Normal", + "sequence": 643, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4362, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 35, + "bytesOut": 6786, + "packetsIn": 64, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072935447654, + "eventId": "647", + "lastEpochMicrosec": 1477072945447654, + "priority": "Normal", + "sequence": 647, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4562, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 28, + "bytesOut": 5136, + "packetsIn": 68, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073065678387, + "eventId": "660", + "lastEpochMicrosec": 1477073075678387, + "priority": "Normal", + "sequence": 660, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 7173, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 45, + "bytesOut": 7368, + "packetsIn": 106, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073085719086, + "eventId": "662", + "lastEpochMicrosec": 1477073095719086, + "priority": "Normal", + "sequence": 662, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4826, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 44, + "bytesOut": 7120, + "packetsIn": 72, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073185910566, + "eventId": "672", + "lastEpochMicrosec": 1477073195910566, + "priority": "Normal", + "sequence": 672, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4502, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 26, + "bytesOut": 5304, + "packetsIn": 70, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073336185348, + "eventId": "687", + "lastEpochMicrosec": 1477073346185348, + "priority": "Normal", + "sequence": 687, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4448, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 5558, + "packetsIn": 65, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073346200536, + "eventId": "688", + "lastEpochMicrosec": 1477073356200536, + "priority": "Normal", + "sequence": 688, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 7053, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 45, + "bytesOut": 7368, + "packetsIn": 105, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073446375491, + "eventId": "698", + "lastEpochMicrosec": 1477073456375491, + "priority": "Normal", + "sequence": 698, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3966, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 5214, + "packetsIn": 58, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073596641959, + "eventId": "713", + "lastEpochMicrosec": 1477073606641959, + "priority": "Normal", + "sequence": 713, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4318, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 27, + "bytesOut": 4634, + "packetsIn": 60, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070250365937, + "eventId": "379", + "lastEpochMicrosec": 1477070260365937, + "priority": "Normal", + "sequence": 379, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3746, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 32, + "bytesOut": 5536, + "packetsIn": 53, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070340529599, + "eventId": "388", + "lastEpochMicrosec": 1477070350529599, + "priority": "Normal", + "sequence": 388, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 7322, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 48, + "bytesOut": 7616, + "packetsIn": 113, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070510835835, + "eventId": "405", + "lastEpochMicrosec": 1477070520835835, + "priority": "Normal", + "sequence": 405, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4442, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 38, + "bytesOut": 6469, + "packetsIn": 66, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070520864347, + "eventId": "406", + "lastEpochMicrosec": 1477070530864347, + "priority": "Normal", + "sequence": 406, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3638, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 22, + "bytesOut": 4044, + "packetsIn": 53, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070651095730, + "eventId": "419", + "lastEpochMicrosec": 1477070661095730, + "priority": "Normal", + "sequence": 419, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3416, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 27, + "bytesOut": 5090, + "packetsIn": 48, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070711206504, + "eventId": "425", + "lastEpochMicrosec": 1477070721206504, + "priority": "Normal", + "sequence": 425, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5908, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 38, + "bytesOut": 6213, + "packetsIn": 78, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070791351649, + "eventId": "433", + "lastEpochMicrosec": 1477070801351649, + "priority": "Normal", + "sequence": 433, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 10199, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 68, + "bytesOut": 11842, + "packetsIn": 135, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070801369956, + "eventId": "434", + "lastEpochMicrosec": 1477070811369956, + "priority": "Normal", + "sequence": 434, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 26090, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 164, + "bytesOut": 33153, + "packetsIn": 300, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070841450160, + "eventId": "438", + "lastEpochMicrosec": 1477070851450160, + "priority": "Normal", + "sequence": 438, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6205, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 34, + "bytesOut": 5794, + "packetsIn": 90, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070981705399, + "eventId": "452", + "lastEpochMicrosec": 1477070991705399, + "priority": "Normal", + "sequence": 452, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3980, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 31, + "bytesOut": 5410, + "packetsIn": 59, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071061865954, + "eventId": "460", + "lastEpochMicrosec": 1477071071865954, + "priority": "Normal", + "sequence": 460, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 31224, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 197, + "bytesOut": 34890, + "packetsIn": 357, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071121977934, + "eventId": "466", + "lastEpochMicrosec": 1477071131977934, + "priority": "Normal", + "sequence": 466, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 25732, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 162, + "bytesOut": 31700, + "packetsIn": 302, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071131999094, + "eventId": "467", + "lastEpochMicrosec": 1477071141999094, + "priority": "Normal", + "sequence": 467, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 169618, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 42, + "bytesOut": 7186, + "packetsIn": 289, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071212141392, + "eventId": "475", + "lastEpochMicrosec": 1477071222141392, + "priority": "Normal", + "sequence": 475, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 7477, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 46, + "bytesOut": 7465, + "packetsIn": 110, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071222158382, + "eventId": "476", + "lastEpochMicrosec": 1477071232158382, + "priority": "Normal", + "sequence": 476, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5908, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 42, + "bytesOut": 7156, + "packetsIn": 83, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071272238317, + "eventId": "481", + "lastEpochMicrosec": 1477071282238317, + "priority": "Normal", + "sequence": 481, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4504, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 27, + "bytesOut": 5074, + "packetsIn": 61, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071332342318, + "eventId": "487", + "lastEpochMicrosec": 1477071342342318, + "priority": "Normal", + "sequence": 487, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6139, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 31, + "bytesOut": 4836, + "packetsIn": 89, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071342361964, + "eventId": "488", + "lastEpochMicrosec": 1477071352361964, + "priority": "Normal", + "sequence": 488, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 22038, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 143, + "bytesOut": 25109, + "packetsIn": 257, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071392443903, + "eventId": "493", + "lastEpochMicrosec": 1477071402443903, + "priority": "Normal", + "sequence": 493, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 28990, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 185, + "bytesOut": 34734, + "packetsIn": 342, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071442534871, + "eventId": "498", + "lastEpochMicrosec": 1477071452534871, + "priority": "Normal", + "sequence": 498, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 19000, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 111, + "bytesOut": 18886, + "packetsIn": 232, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071723077968, + "eventId": "526", + "lastEpochMicrosec": 1477071733077968, + "priority": "Normal", + "sequence": 526, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 22554, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 150, + "bytesOut": 27120, + "packetsIn": 270, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071783210923, + "eventId": "532", + "lastEpochMicrosec": 1477071793210923, + "priority": "Normal", + "sequence": 532, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 31406, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 192, + "bytesOut": 40382, + "packetsIn": 369, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071973585969, + "eventId": "551", + "lastEpochMicrosec": 1477071983585969, + "priority": "Normal", + "sequence": 551, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 28415, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 168, + "bytesOut": 36888, + "packetsIn": 330, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072003648795, + "eventId": "554", + "lastEpochMicrosec": 1477072013648795, + "priority": "Normal", + "sequence": 554, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4736, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 27, + "bytesOut": 5027, + "packetsIn": 71, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072073789969, + "eventId": "561", + "lastEpochMicrosec": 1477072083789969, + "priority": "Normal", + "sequence": 561, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5332, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 24, + "bytesOut": 4082, + "packetsIn": 75, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072184014433, + "eventId": "572", + "lastEpochMicrosec": 1477072194014433, + "priority": "Normal", + "sequence": 572, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3752, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 33, + "bytesOut": 5666, + "packetsIn": 55, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072214069942, + "eventId": "575", + "lastEpochMicrosec": 1477072224069942, + "priority": "Normal", + "sequence": 575, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4046, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 42, + "bytesOut": 7120, + "packetsIn": 59, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072274176817, + "eventId": "581", + "lastEpochMicrosec": 1477072284176817, + "priority": "Normal", + "sequence": 581, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4208, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 27, + "bytesOut": 5166, + "packetsIn": 65, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072444481666, + "eventId": "598", + "lastEpochMicrosec": 1477072454481666, + "priority": "Normal", + "sequence": 598, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6649, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 38, + "bytesOut": 6038, + "packetsIn": 97, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072484565977, + "eventId": "602", + "lastEpochMicrosec": 1477072494565977, + "priority": "Normal", + "sequence": 602, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3848, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 4822, + "packetsIn": 57, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072514639844, + "eventId": "605", + "lastEpochMicrosec": 1477072524639844, + "priority": "Normal", + "sequence": 605, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6367, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 4624, + "packetsIn": 93, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072544701945, + "eventId": "608", + "lastEpochMicrosec": 1477072554701945, + "priority": "Normal", + "sequence": 608, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6553, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 30, + "bytesOut": 5362, + "packetsIn": 98, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072604809380, + "eventId": "614", + "lastEpochMicrosec": 1477072614809380, + "priority": "Normal", + "sequence": 614, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4628, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 30, + "bytesOut": 5412, + "packetsIn": 68, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072614829190, + "eventId": "615", + "lastEpochMicrosec": 1477072624829190, + "priority": "Normal", + "sequence": 615, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4352, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 33, + "bytesOut": 5630, + "packetsIn": 65, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072644885943, + "eventId": "618", + "lastEpochMicrosec": 1477072654885943, + "priority": "Normal", + "sequence": 618, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5036, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 47, + "bytesOut": 7514, + "packetsIn": 75, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072755088807, + "eventId": "629", + "lastEpochMicrosec": 1477072765088807, + "priority": "Normal", + "sequence": 629, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4370, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 25, + "bytesOut": 4351, + "packetsIn": 66, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072915408472, + "eventId": "645", + "lastEpochMicrosec": 1477072925408472, + "priority": "Normal", + "sequence": 645, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4304, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 25, + "bytesOut": 4254, + "packetsIn": 57, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072955481939, + "eventId": "649", + "lastEpochMicrosec": 1477072965481939, + "priority": "Normal", + "sequence": 649, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4388, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 27, + "bytesOut": 5150, + "packetsIn": 66, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073005573900, + "eventId": "654", + "lastEpochMicrosec": 1477073015573900, + "priority": "Normal", + "sequence": 654, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5906, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 42, + "bytesOut": 7148, + "packetsIn": 82, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073015590437, + "eventId": "655", + "lastEpochMicrosec": 1477073025590437, + "priority": "Normal", + "sequence": 655, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3764, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 23, + "bytesOut": 4122, + "packetsIn": 56, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073045647448, + "eventId": "658", + "lastEpochMicrosec": 1477073055647448, + "priority": "Normal", + "sequence": 658, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4706, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 42, + "bytesOut": 7220, + "packetsIn": 70, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073125796934, + "eventId": "666", + "lastEpochMicrosec": 1477073135796934, + "priority": "Normal", + "sequence": 666, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 7132, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 43, + "bytesOut": 7250, + "packetsIn": 103, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073135815158, + "eventId": "667", + "lastEpochMicrosec": 1477073145815158, + "priority": "Normal", + "sequence": 667, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 7143, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 50, + "bytesOut": 7727, + "packetsIn": 104, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073145841670, + "eventId": "668", + "lastEpochMicrosec": 1477073155841670, + "priority": "Normal", + "sequence": 668, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6135, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 32, + "bytesOut": 5426, + "packetsIn": 90, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073266054311, + "eventId": "680", + "lastEpochMicrosec": 1477073276054311, + "priority": "Normal", + "sequence": 680, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4052, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 31, + "bytesOut": 5498, + "packetsIn": 60, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073466418004, + "eventId": "700", + "lastEpochMicrosec": 1477073476418004, + "priority": "Normal", + "sequence": 700, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3732, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 28, + "bytesOut": 5244, + "packetsIn": 54, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073476437957, + "eventId": "701", + "lastEpochMicrosec": 1477073486437957, + "priority": "Normal", + "sequence": 701, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4688, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 5222, + "packetsIn": 71, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073526524510, + "eventId": "706", + "lastEpochMicrosec": 1477073536524510, + "priority": "Normal", + "sequence": 706, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 7963, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 49, + "bytesOut": 7608, + "packetsIn": 118, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073566594681, + "eventId": "710", + "lastEpochMicrosec": 1477073576594681, + "priority": "Normal", + "sequence": 710, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5168, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 5214, + "packetsIn": 71, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073616685940, + "eventId": "715", + "lastEpochMicrosec": 1477073626685940, + "priority": "Normal", + "sequence": 715, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6483, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 34, + "bytesOut": 5586, + "packetsIn": 95, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073626701958, + "eventId": "716", + "lastEpochMicrosec": 1477073636701958, + "priority": "Normal", + "sequence": 716, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3660, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 28, + "bytesOut": 4712, + "packetsIn": 53, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070230330088, + "eventId": "377", + "lastEpochMicrosec": 1477070240330088, + "priority": "Normal", + "sequence": 377, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4069, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 31, + "bytesOut": 5506, + "packetsIn": 60, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070360563689, + "eventId": "390", + "lastEpochMicrosec": 1477070370563689, + "priority": "Normal", + "sequence": 390, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4280, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 31, + "bytesOut": 5418, + "packetsIn": 64, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070460736142, + "eventId": "400", + "lastEpochMicrosec": 1477070470736142, + "priority": "Normal", + "sequence": 400, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4562, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 38, + "bytesOut": 6892, + "packetsIn": 68, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070480772828, + "eventId": "402", + "lastEpochMicrosec": 1477070490772828, + "priority": "Normal", + "sequence": 402, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5129, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 31, + "bytesOut": 5396, + "packetsIn": 72, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070500813728, + "eventId": "404", + "lastEpochMicrosec": 1477070510813728, + "priority": "Normal", + "sequence": 404, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4456, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 30, + "bytesOut": 5380, + "packetsIn": 60, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070550916395, + "eventId": "409", + "lastEpochMicrosec": 1477070560916395, + "priority": "Normal", + "sequence": 409, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3738, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 4750, + "packetsIn": 54, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070590993953, + "eventId": "413", + "lastEpochMicrosec": 1477070600993953, + "priority": "Normal", + "sequence": 413, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5954, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 30, + "bytesOut": 5380, + "packetsIn": 94, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070631061957, + "eventId": "417", + "lastEpochMicrosec": 1477070641061957, + "priority": "Normal", + "sequence": 417, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4416, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 22, + "bytesOut": 4020, + "packetsIn": 64, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070641079999, + "eventId": "418", + "lastEpochMicrosec": 1477070651079999, + "priority": "Normal", + "sequence": 418, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4911, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 26, + "bytesOut": 4342, + "packetsIn": 70, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070681153946, + "eventId": "422", + "lastEpochMicrosec": 1477070691153946, + "priority": "Normal", + "sequence": 422, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5228, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 5294, + "packetsIn": 80, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070691170336, + "eventId": "423", + "lastEpochMicrosec": 1477070701170336, + "priority": "Normal", + "sequence": 423, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 137612, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 776, + "bytesOut": 136724, + "packetsIn": 1458, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070821405142, + "eventId": "436", + "lastEpochMicrosec": 1477070831405142, + "priority": "Normal", + "sequence": 436, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6724, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 48, + "bytesOut": 8288, + "packetsIn": 90, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071021788719, + "eventId": "456", + "lastEpochMicrosec": 1477071031788719, + "priority": "Normal", + "sequence": 456, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5216, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 27, + "bytesOut": 5098, + "packetsIn": 80, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071051846152, + "eventId": "459", + "lastEpochMicrosec": 1477071061846152, + "priority": "Normal", + "sequence": 459, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5965, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 34, + "bytesOut": 5686, + "packetsIn": 84, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071101941618, + "eventId": "464", + "lastEpochMicrosec": 1477071111941618, + "priority": "Normal", + "sequence": 464, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4334, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 28, + "bytesOut": 5232, + "packetsIn": 65, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071142014557, + "eventId": "468", + "lastEpochMicrosec": 1477071152014557, + "priority": "Normal", + "sequence": 468, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3976, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 30, + "bytesOut": 5360, + "packetsIn": 54, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071152034019, + "eventId": "469", + "lastEpochMicrosec": 1477071162034019, + "priority": "Normal", + "sequence": 469, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 41028, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 5214, + "packetsIn": 121, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071202120024, + "eventId": "474", + "lastEpochMicrosec": 1477071212120024, + "priority": "Normal", + "sequence": 474, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5066, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 42, + "bytesOut": 7157, + "packetsIn": 76, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071242189163, + "eventId": "478", + "lastEpochMicrosec": 1477071252189163, + "priority": "Normal", + "sequence": 478, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5528, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 5302, + "packetsIn": 83, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071472593939, + "eventId": "501", + "lastEpochMicrosec": 1477071482593939, + "priority": "Normal", + "sequence": 501, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4190, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 26, + "bytesOut": 4160, + "packetsIn": 63, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071492634731, + "eventId": "503", + "lastEpochMicrosec": 1477071502634731, + "priority": "Normal", + "sequence": 503, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5918, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 34, + "bytesOut": 6588, + "packetsIn": 90, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071502654137, + "eventId": "504", + "lastEpochMicrosec": 1477071512654137, + "priority": "Normal", + "sequence": 504, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4270, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 19, + "bytesOut": 3650, + "packetsIn": 57, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071632900848, + "eventId": "517", + "lastEpochMicrosec": 1477071642900848, + "priority": "Normal", + "sequence": 517, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 7250, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 47, + "bytesOut": 7539, + "packetsIn": 112, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071652936794, + "eventId": "519", + "lastEpochMicrosec": 1477071662936794, + "priority": "Normal", + "sequence": 519, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 20894, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 127, + "bytesOut": 23654, + "packetsIn": 256, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071713058031, + "eventId": "525", + "lastEpochMicrosec": 1477071723058031, + "priority": "Normal", + "sequence": 525, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 7297, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 46, + "bytesOut": 7430, + "packetsIn": 107, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071763172262, + "eventId": "530", + "lastEpochMicrosec": 1477071773172262, + "priority": "Normal", + "sequence": 530, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5472, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 31, + "bytesOut": 5427, + "packetsIn": 83, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071773193658, + "eventId": "531", + "lastEpochMicrosec": 1477071783193658, + "priority": "Normal", + "sequence": 531, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4784, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 25, + "bytesOut": 4386, + "packetsIn": 73, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071803251128, + "eventId": "534", + "lastEpochMicrosec": 1477071813251128, + "priority": "Normal", + "sequence": 534, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 33146, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 202, + "bytesOut": 45220, + "packetsIn": 373, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071933509978, + "eventId": "547", + "lastEpochMicrosec": 1477071943509978, + "priority": "Normal", + "sequence": 547, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3640, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 22, + "bytesOut": 4128, + "packetsIn": 47, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072113869917, + "eventId": "565", + "lastEpochMicrosec": 1477072123869917, + "priority": "Normal", + "sequence": 565, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4928, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 30, + "bytesOut": 5412, + "packetsIn": 75, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072133905970, + "eventId": "567", + "lastEpochMicrosec": 1477072143905970, + "priority": "Normal", + "sequence": 567, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4286, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 30, + "bytesOut": 5436, + "packetsIn": 64, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072314253035, + "eventId": "585", + "lastEpochMicrosec": 1477072324253035, + "priority": "Normal", + "sequence": 585, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4568, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 5602, + "packetsIn": 69, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072384378243, + "eventId": "592", + "lastEpochMicrosec": 1477072394378243, + "priority": "Normal", + "sequence": 592, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3854, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 30, + "bytesOut": 4772, + "packetsIn": 57, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072404411223, + "eventId": "594", + "lastEpochMicrosec": 1477072414411223, + "priority": "Normal", + "sequence": 594, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3740, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 21, + "bytesOut": 3862, + "packetsIn": 50, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072414424973, + "eventId": "595", + "lastEpochMicrosec": 1477072424424973, + "priority": "Normal", + "sequence": 595, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6259, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 33, + "bytesOut": 5072, + "packetsIn": 89, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072424442934, + "eventId": "596", + "lastEpochMicrosec": 1477072434442934, + "priority": "Normal", + "sequence": 596, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5576, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 46, + "bytesOut": 7404, + "packetsIn": 84, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072624849269, + "eventId": "616", + "lastEpochMicrosec": 1477072634849269, + "priority": "Normal", + "sequence": 616, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5172, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 31, + "bytesOut": 4998, + "packetsIn": 78, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072674941938, + "eventId": "621", + "lastEpochMicrosec": 1477072684941938, + "priority": "Normal", + "sequence": 621, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4256, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 25, + "bytesOut": 4294, + "packetsIn": 56, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072715018487, + "eventId": "625", + "lastEpochMicrosec": 1477072725018487, + "priority": "Normal", + "sequence": 625, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3932, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 31, + "bytesOut": 5526, + "packetsIn": 58, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072825213947, + "eventId": "636", + "lastEpochMicrosec": 1477072835213947, + "priority": "Normal", + "sequence": 636, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3956, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 35, + "bytesOut": 6318, + "packetsIn": 58, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072865310238, + "eventId": "640", + "lastEpochMicrosec": 1477072875310238, + "priority": "Normal", + "sequence": 640, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4080, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 26, + "bytesOut": 4388, + "packetsIn": 60, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072875328458, + "eventId": "641", + "lastEpochMicrosec": 1477072885328458, + "priority": "Normal", + "sequence": 641, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6081, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 33, + "bytesOut": 5528, + "packetsIn": 89, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072965498915, + "eventId": "650", + "lastEpochMicrosec": 1477072975498915, + "priority": "Normal", + "sequence": 650, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6141, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 33, + "bytesOut": 5528, + "packetsIn": 90, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073025609941, + "eventId": "656", + "lastEpochMicrosec": 1477073035609941, + "priority": "Normal", + "sequence": 656, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4446, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 39, + "bytesOut": 6986, + "packetsIn": 65, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073175893195, + "eventId": "671", + "lastEpochMicrosec": 1477073185893195, + "priority": "Normal", + "sequence": 671, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4232, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 23, + "bytesOut": 4066, + "packetsIn": 64, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073225981156, + "eventId": "676", + "lastEpochMicrosec": 1477073235981156, + "priority": "Normal", + "sequence": 676, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5739, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 24, + "bytesOut": 4138, + "packetsIn": 84, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073326167021, + "eventId": "686", + "lastEpochMicrosec": 1477073336167021, + "priority": "Normal", + "sequence": 686, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4104, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 22, + "bytesOut": 4020, + "packetsIn": 61, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073356218618, + "eventId": "689", + "lastEpochMicrosec": 1477073366218618, + "priority": "Normal", + "sequence": 689, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4886, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 42, + "bytesOut": 7121, + "packetsIn": 72, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073456394852, + "eventId": "699", + "lastEpochMicrosec": 1477073466394852, + "priority": "Normal", + "sequence": 699, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4034, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 30, + "bytesOut": 4808, + "packetsIn": 60, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073486456069, + "eventId": "702", + "lastEpochMicrosec": 1477073496456069, + "priority": "Normal", + "sequence": 702, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4706, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 32, + "bytesOut": 5765, + "packetsIn": 71, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073576611503, + "eventId": "711", + "lastEpochMicrosec": 1477073586611503, + "priority": "Normal", + "sequence": 711, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6046, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 40, + "bytesOut": 9108, + "packetsIn": 90, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073636730319, + "eventId": "717", + "lastEpochMicrosec": 1477073646730319, + "priority": "Normal", + "sequence": 717, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4450, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 5230, + "packetsIn": 62, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070310474544, + "eventId": "385", + "lastEpochMicrosec": 1477070320474544, + "priority": "Normal", + "sequence": 385, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5703, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 40, + "bytesOut": 6658, + "packetsIn": 82, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070320490200, + "eventId": "386", + "lastEpochMicrosec": 1477070330490200, + "priority": "Normal", + "sequence": 386, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4384, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 26, + "bytesOut": 5096, + "packetsIn": 59, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070370579195, + "eventId": "391", + "lastEpochMicrosec": 1477070380579195, + "priority": "Normal", + "sequence": 391, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3986, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 32, + "bytesOut": 5544, + "packetsIn": 59, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070400631290, + "eventId": "394", + "lastEpochMicrosec": 1477070410631290, + "priority": "Normal", + "sequence": 394, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4428, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 26, + "bytesOut": 4364, + "packetsIn": 65, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070410646466, + "eventId": "395", + "lastEpochMicrosec": 1477070420646466, + "priority": "Normal", + "sequence": 395, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3776, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 27, + "bytesOut": 4562, + "packetsIn": 56, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070661113931, + "eventId": "420", + "lastEpochMicrosec": 1477070671113931, + "priority": "Normal", + "sequence": 420, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5482, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 31, + "bytesOut": 5446, + "packetsIn": 77, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070731245952, + "eventId": "427", + "lastEpochMicrosec": 1477070741245952, + "priority": "Normal", + "sequence": 427, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 12391, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 78, + "bytesOut": 10049, + "packetsIn": 124, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070761301949, + "eventId": "430", + "lastEpochMicrosec": 1477070771301949, + "priority": "Normal", + "sequence": 430, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 19997, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 132, + "bytesOut": 23502, + "packetsIn": 240, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070861482944, + "eventId": "440", + "lastEpochMicrosec": 1477070871482944, + "priority": "Normal", + "sequence": 440, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 19924, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 116, + "bytesOut": 19236, + "packetsIn": 243, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070871499185, + "eventId": "441", + "lastEpochMicrosec": 1477070881499185, + "priority": "Normal", + "sequence": 441, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4394, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 40, + "bytesOut": 7024, + "packetsIn": 65, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070901553877, + "eventId": "444", + "lastEpochMicrosec": 1477070911553877, + "priority": "Normal", + "sequence": 444, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3402, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 25, + "bytesOut": 4950, + "packetsIn": 51, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070951649582, + "eventId": "449", + "lastEpochMicrosec": 1477070961649582, + "priority": "Normal", + "sequence": 449, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3650, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 26, + "bytesOut": 5024, + "packetsIn": 52, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070961673097, + "eventId": "450", + "lastEpochMicrosec": 1477070971673097, + "priority": "Normal", + "sequence": 450, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4681, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 45, + "bytesOut": 7354, + "packetsIn": 69, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071001744811, + "eventId": "454", + "lastEpochMicrosec": 1477071011744811, + "priority": "Normal", + "sequence": 454, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4536, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 32, + "bytesOut": 5168, + "packetsIn": 67, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071011760312, + "eventId": "455", + "lastEpochMicrosec": 1477071021760312, + "priority": "Normal", + "sequence": 455, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6458, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 36, + "bytesOut": 6017, + "packetsIn": 100, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071232173922, + "eventId": "477", + "lastEpochMicrosec": 1477071242173922, + "priority": "Normal", + "sequence": 477, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6871, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 36, + "bytesOut": 6766, + "packetsIn": 101, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071282252737, + "eventId": "482", + "lastEpochMicrosec": 1477071292252737, + "priority": "Normal", + "sequence": 482, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3884, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 24, + "bytesOut": 4248, + "packetsIn": 58, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071322325958, + "eventId": "486", + "lastEpochMicrosec": 1477071332325958, + "priority": "Normal", + "sequence": 486, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 34518, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 192, + "bytesOut": 34192, + "packetsIn": 384, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071432517955, + "eventId": "497", + "lastEpochMicrosec": 1477071442517955, + "priority": "Normal", + "sequence": 497, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4916, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 25, + "bytesOut": 4318, + "packetsIn": 67, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071512671652, + "eventId": "505", + "lastEpochMicrosec": 1477071522671652, + "priority": "Normal", + "sequence": 505, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6259, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 33, + "bytesOut": 5600, + "packetsIn": 91, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071522697277, + "eventId": "506", + "lastEpochMicrosec": 1477071532697277, + "priority": "Normal", + "sequence": 506, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5240, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 31, + "bytesOut": 5426, + "packetsIn": 80, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071552753988, + "eventId": "509", + "lastEpochMicrosec": 1477071562753988, + "priority": "Normal", + "sequence": 509, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5060, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 31, + "bytesOut": 5434, + "packetsIn": 79, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071612865423, + "eventId": "515", + "lastEpochMicrosec": 1477071622865423, + "priority": "Normal", + "sequence": 515, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3974, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 28, + "bytesOut": 4660, + "packetsIn": 59, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071793233631, + "eventId": "533", + "lastEpochMicrosec": 1477071803233631, + "priority": "Normal", + "sequence": 533, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6859, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 43, + "bytesOut": 6912, + "packetsIn": 100, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071823290532, + "eventId": "536", + "lastEpochMicrosec": 1477071833290532, + "priority": "Normal", + "sequence": 536, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4982, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 26, + "bytesOut": 5081, + "packetsIn": 76, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071833308226, + "eventId": "537", + "lastEpochMicrosec": 1477071843308226, + "priority": "Normal", + "sequence": 537, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4974, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 25, + "bytesOut": 4426, + "packetsIn": 75, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071843328660, + "eventId": "538", + "lastEpochMicrosec": 1477071853328660, + "priority": "Normal", + "sequence": 538, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 13226, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 89, + "bytesOut": 18924, + "packetsIn": 153, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072053741964, + "eventId": "559", + "lastEpochMicrosec": 1477072063741964, + "priority": "Normal", + "sequence": 559, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 8673, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 53, + "bytesOut": 9805, + "packetsIn": 117, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072063763247, + "eventId": "560", + "lastEpochMicrosec": 1477072073763247, + "priority": "Normal", + "sequence": 560, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4676, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 37, + "bytesOut": 6446, + "packetsIn": 70, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072224086825, + "eventId": "576", + "lastEpochMicrosec": 1477072234086825, + "priority": "Normal", + "sequence": 576, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4262, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 5318, + "packetsIn": 64, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072254141660, + "eventId": "579", + "lastEpochMicrosec": 1477072264141660, + "priority": "Normal", + "sequence": 579, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4946, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 42, + "bytesOut": 7156, + "packetsIn": 74, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072344303482, + "eventId": "588", + "lastEpochMicrosec": 1477072354303482, + "priority": "Normal", + "sequence": 588, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3800, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 31, + "bytesOut": 5398, + "packetsIn": 56, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072584773904, + "eventId": "612", + "lastEpochMicrosec": 1477072594773904, + "priority": "Normal", + "sequence": 612, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5264, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 35, + "bytesOut": 6018, + "packetsIn": 72, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072594792760, + "eventId": "613", + "lastEpochMicrosec": 1477072604792760, + "priority": "Normal", + "sequence": 613, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4604, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 33, + "bytesOut": 5722, + "packetsIn": 59, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072775124558, + "eventId": "631", + "lastEpochMicrosec": 1477072785124558, + "priority": "Normal", + "sequence": 631, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4280, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 31, + "bytesOut": 5410, + "packetsIn": 64, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072975517941, + "eventId": "651", + "lastEpochMicrosec": 1477072985517941, + "priority": "Normal", + "sequence": 651, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4316, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 27, + "bytesOut": 5018, + "packetsIn": 65, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073035627391, + "eventId": "657", + "lastEpochMicrosec": 1477073045627391, + "priority": "Normal", + "sequence": 657, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4915, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 30, + "bytesOut": 4836, + "packetsIn": 74, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073276077930, + "eventId": "681", + "lastEpochMicrosec": 1477073286077930, + "priority": "Normal", + "sequence": 681, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4244, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 25, + "bytesOut": 4914, + "packetsIn": 64, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073396285928, + "eventId": "693", + "lastEpochMicrosec": 1477073406285928, + "priority": "Normal", + "sequence": 693, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4982, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 38, + "bytesOut": 6892, + "packetsIn": 75, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073406303927, + "eventId": "694", + "lastEpochMicrosec": 1477073416303927, + "priority": "Normal", + "sequence": 694, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5000, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 5378, + "packetsIn": 68, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073496473912, + "eventId": "703", + "lastEpochMicrosec": 1477073506473912, + "priority": "Normal", + "sequence": 703, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4406, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 42, + "bytesOut": 7156, + "packetsIn": 65, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073546558533, + "eventId": "708", + "lastEpochMicrosec": 1477073556558533, + "priority": "Normal", + "sequence": 708, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3608, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 5230, + "packetsIn": 53, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073646749551, + "eventId": "718", + "lastEpochMicrosec": 1477073656749551, + "priority": "Normal", + "sequence": 718, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4352, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 31, + "bytesOut": 4946, + "packetsIn": 57, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073676813943, + "eventId": "721", + "lastEpochMicrosec": 1477073686813943, + "priority": "Normal", + "sequence": 721, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4864, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 28, + "bytesOut": 5148, + "packetsIn": 67, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070190253108, + "eventId": "373", + "lastEpochMicrosec": 1477070200253108, + "priority": "Normal", + "sequence": 373, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4328, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 5286, + "packetsIn": 65, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070280421939, + "eventId": "382", + "lastEpochMicrosec": 1477070290421939, + "priority": "Normal", + "sequence": 382, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6206, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 32, + "bytesOut": 5512, + "packetsIn": 96, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070330509980, + "eventId": "387", + "lastEpochMicrosec": 1477070340509980, + "priority": "Normal", + "sequence": 387, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3518, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 22, + "bytesOut": 4028, + "packetsIn": 53, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070420665950, + "eventId": "396", + "lastEpochMicrosec": 1477070430665950, + "priority": "Normal", + "sequence": 396, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4360, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 24, + "bytesOut": 4812, + "packetsIn": 59, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070430683794, + "eventId": "397", + "lastEpochMicrosec": 1477070440683794, + "priority": "Normal", + "sequence": 397, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5301, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 33, + "bytesOut": 5536, + "packetsIn": 76, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070560936376, + "eventId": "410", + "lastEpochMicrosec": 1477070570936376, + "priority": "Normal", + "sequence": 410, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6866, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 42, + "bytesOut": 7156, + "packetsIn": 106, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070570954302, + "eventId": "411", + "lastEpochMicrosec": 1477070580954302, + "priority": "Normal", + "sequence": 411, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6681, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 41, + "bytesOut": 6568, + "packetsIn": 96, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070741264005, + "eventId": "428", + "lastEpochMicrosec": 1477070751264005, + "priority": "Normal", + "sequence": 428, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 34880, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 217, + "bytesOut": 36350, + "packetsIn": 398, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070881514499, + "eventId": "442", + "lastEpochMicrosec": 1477070891514499, + "priority": "Normal", + "sequence": 442, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4762, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 31, + "bytesOut": 4934, + "packetsIn": 65, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070911574857, + "eventId": "445", + "lastEpochMicrosec": 1477070921574857, + "priority": "Normal", + "sequence": 445, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 7057, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 46, + "bytesOut": 7462, + "packetsIn": 105, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477070921593735, + "eventId": "446", + "lastEpochMicrosec": 1477070931593735, + "priority": "Normal", + "sequence": 446, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6740, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 41, + "bytesOut": 6775, + "packetsIn": 104, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071292270837, + "eventId": "483", + "lastEpochMicrosec": 1477071302270837, + "priority": "Normal", + "sequence": 483, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4934, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 30, + "bytesOut": 5325, + "packetsIn": 75, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071302289972, + "eventId": "484", + "lastEpochMicrosec": 1477071312289972, + "priority": "Normal", + "sequence": 484, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6216, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 39, + "bytesOut": 6786, + "packetsIn": 81, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071452551360, + "eventId": "499", + "lastEpochMicrosec": 1477071462551360, + "priority": "Normal", + "sequence": 499, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6218, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 44, + "bytesOut": 7316, + "packetsIn": 95, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071482617903, + "eventId": "502", + "lastEpochMicrosec": 1477071492617903, + "priority": "Normal", + "sequence": 502, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5634, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 37, + "bytesOut": 6446, + "packetsIn": 87, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071562771042, + "eventId": "510", + "lastEpochMicrosec": 1477071572771042, + "priority": "Normal", + "sequence": 510, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6354, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 47, + "bytesOut": 7514, + "packetsIn": 96, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071622883746, + "eventId": "516", + "lastEpochMicrosec": 1477071632883746, + "priority": "Normal", + "sequence": 516, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 20684, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 138, + "bytesOut": 23872, + "packetsIn": 242, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071753155902, + "eventId": "529", + "lastEpochMicrosec": 1477071763155902, + "priority": "Normal", + "sequence": 529, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4442, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 38, + "bytesOut": 6956, + "packetsIn": 66, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071853349474, + "eventId": "539", + "lastEpochMicrosec": 1477071863349474, + "priority": "Normal", + "sequence": 539, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 66655, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 401, + "bytesOut": 64534, + "packetsIn": 755, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477071943529023, + "eventId": "548", + "lastEpochMicrosec": 1477071953529023, + "priority": "Normal", + "sequence": 548, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 29098, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 186, + "bytesOut": 40028, + "packetsIn": 338, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072033705953, + "eventId": "557", + "lastEpochMicrosec": 1477072043705953, + "priority": "Normal", + "sequence": 557, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3560, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 4758, + "packetsIn": 52, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072083807753, + "eventId": "562", + "lastEpochMicrosec": 1477072093807753, + "priority": "Normal", + "sequence": 562, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5753, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 5248, + "packetsIn": 82, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072123885526, + "eventId": "566", + "lastEpochMicrosec": 1477072133885526, + "priority": "Normal", + "sequence": 566, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4102, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 31, + "bytesOut": 5462, + "packetsIn": 54, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072173997938, + "eventId": "571", + "lastEpochMicrosec": 1477072183997938, + "priority": "Normal", + "sequence": 571, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 5054, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 39, + "bytesOut": 6906, + "packetsIn": 76, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072264158607, + "eventId": "580", + "lastEpochMicrosec": 1477072274158607, + "priority": "Normal", + "sequence": 580, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3884, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 23, + "bytesOut": 4058, + "packetsIn": 58, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072324268097, + "eventId": "586", + "lastEpochMicrosec": 1477072334268097, + "priority": "Normal", + "sequence": 586, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3182, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 28, + "bytesOut": 4808, + "packetsIn": 46, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072334288872, + "eventId": "587", + "lastEpochMicrosec": 1477072344288872, + "priority": "Normal", + "sequence": 587, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4034, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 30, + "bytesOut": 5316, + "packetsIn": 60, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072394394368, + "eventId": "593", + "lastEpochMicrosec": 1477072404394368, + "priority": "Normal", + "sequence": 593, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3872, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 23, + "bytesOut": 4074, + "packetsIn": 58, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072434461951, + "eventId": "597", + "lastEpochMicrosec": 1477072444461951, + "priority": "Normal", + "sequence": 597, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4028, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 29, + "bytesOut": 5214, + "packetsIn": 60, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072504621951, + "eventId": "604", + "lastEpochMicrosec": 1477072514621951, + "priority": "Normal", + "sequence": 604, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4130, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 25, + "bytesOut": 4350, + "packetsIn": 62, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072524657943, + "eventId": "606", + "lastEpochMicrosec": 1477072534657943, + "priority": "Normal", + "sequence": 606, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6691, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 35, + "bytesOut": 5804, + "packetsIn": 98, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072664921950, + "eventId": "620", + "lastEpochMicrosec": 1477072674921950, + "priority": "Normal", + "sequence": 620, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4640, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 31, + "bytesOut": 5426, + "packetsIn": 72, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072765105949, + "eventId": "630", + "lastEpochMicrosec": 1477072775105949, + "priority": "Normal", + "sequence": 630, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 38076, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 238, + "bytesOut": 52028, + "packetsIn": 425, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477072815193944, + "eventId": "635", + "lastEpochMicrosec": 1477072825193944, + "priority": "Normal", + "sequence": 635, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4806, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 39, + "bytesOut": 6986, + "packetsIn": 72, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073055662629, + "eventId": "659", + "lastEpochMicrosec": 1477073065662629, + "priority": "Normal", + "sequence": 659, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3470, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 24, + "bytesOut": 4240, + "packetsIn": 51, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073165876528, + "eventId": "670", + "lastEpochMicrosec": 1477073175876528, + "priority": "Normal", + "sequence": 670, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6615, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 30, + "bytesOut": 5086, + "packetsIn": 98, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073205948758, + "eventId": "674", + "lastEpochMicrosec": 1477073215948758, + "priority": "Normal", + "sequence": 674, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4682, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 28, + "bytesOut": 5600, + "packetsIn": 71, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073215965142, + "eventId": "675", + "lastEpochMicrosec": 1477073225965142, + "priority": "Normal", + "sequence": 675, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4178, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 24, + "bytesOut": 4152, + "packetsIn": 55, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073256037943, + "eventId": "679", + "lastEpochMicrosec": 1477073266037943, + "priority": "Normal", + "sequence": 679, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4406, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 42, + "bytesOut": 7156, + "packetsIn": 65, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073306133613, + "eventId": "684", + "lastEpochMicrosec": 1477073316133613, + "priority": "Normal", + "sequence": 684, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 3974, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 28, + "bytesOut": 4644, + "packetsIn": 51, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073316150514, + "eventId": "685", + "lastEpochMicrosec": 1477073326150514, + "priority": "Normal", + "sequence": 685, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 6375, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 28, + "bytesOut": 4538, + "packetsIn": 94, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073386268859, + "eventId": "692", + "lastEpochMicrosec": 1477073396268859, + "priority": "Normal", + "sequence": 692, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + }, + { + "event": { + "measurementsForVfScalingFields": { + "measurementInterval": 10, + "measurementsForVfScalingVersion": 1.1, + "vNicUsageArray": [ + { + "bytesIn": 4458, + "multicastPacketsIn": 0, + "multicastPacketsOut": 0, + "unicastPacketsIn": 0, + "broadcastPacketsOut": 0, + "packetsOut": 31, + "bytesOut": 5418, + "packetsIn": 66, + "broadcastPacketsIn": 0, + "vNicIdentifier": "eth0", + "unicastPacketsOut": 0 + } + ] + }, + "commonEventHeader": { + "reportingEntityName": "vpp-test", + "startEpochMicrosec": 1477073536542160, + "eventId": "707", + "lastEpochMicrosec": 1477073546542160, + "priority": "Normal", + "sequence": 707, + "sourceName": "Dummy VM name - No Metadata available", + "domain": "measurementsForVfScaling", + "functionalRole": "vFirewall", + "reportingEntityId": "No UUID available", + "version": 1.1, + "sourceId": "Dummy VM UUID - No Metadata available" + } + } + } +] diff --git a/dcae-analytics-tca/src/test/resources/data/json/policy/tca_policy.json b/dcae-analytics-tca/src/test/resources/data/json/policy/tca_policy.json new file mode 100644 index 0000000..1bf9e83 --- /dev/null +++ b/dcae-analytics-tca/src/test/resources/data/json/policy/tca_policy.json @@ -0,0 +1,53 @@ +{ + "domain": "measurementsForVfScaling", + "metricsPerFunctionalRole": [ + { + "functionalRole": "vFirewall", + "policyScope": "resource=vFirewall;type=configuration", + "policyName": "configuration.dcae.microservice.tca.xml", + "policyVersion": "v0.0.1", + "thresholds": [ + { + "closedLoopControlName": "CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8", + "version": "1.0.2", + "fieldPath": "$.event.measurementsForVfScalingFields.vNicUsageArray[*].bytesIn", + "thresholdValue": 4000, + "direction": "LESS_OR_EQUAL", + "severity": "MAJOR" + }, + { + "closedLoopControlName": "CL-FRWL-HIGH-TRAFFIC-SIG-EA36FE84-9342-5E13-A656-EC5F21309A09", + "version": "1.0.2", + "fieldPath": "$.event.measurementsForVfScalingFields.vNicUsageArray[*].bytesIn", + "thresholdValue": 20000, + "direction": "GREATER_OR_EQUAL", + "severity": "CRITICAL" + } + ] + }, + { + "functionalRole": "vLoadBalancer", + "policyScope": "resource=vLoadBalancer;type=configuration", + "policyName": "configuration.dcae.microservice.tca.xml", + "policyVersion": "v0.0.1", + "thresholds": [ + { + "closedLoopControlName": "CL-LBAL-LOW-TRAFFIC-SIG-FB480F95-A453-6F24-B767-FD703241AB1A", + "version": "1.0.2", + "fieldPath": "$.event.measurementsForVfScalingFields.vNicUsageArray[*].packetsIn", + "thresholdValue": 500, + "direction": "LESS_OR_EQUAL", + "severity": "MAJOR" + }, + { + "closedLoopControlName": "CL-LBAL-LOW-TRAFFIC-SIG-0C5920A6-B564-8035-C878-0E814352BC2B", + "version": "1.0.2", + "fieldPath": "$.event.measurementsForVfScalingFields.vNicUsageArray[*].packetsIn", + "thresholdValue": 5000, + "direction": "GREATER_OR_EQUAL", + "severity": "CRITICAL" + } + ] + } + ] +} diff --git a/dcae-analytics-tca/src/test/resources/data/properties/tca_controller_policy.properties b/dcae-analytics-tca/src/test/resources/data/properties/tca_controller_policy.properties new file mode 100644 index 0000000..e0e333b --- /dev/null +++ b/dcae-analytics-tca/src/test/resources/data/properties/tca_controller_policy.properties @@ -0,0 +1,59 @@ +# +# ============LICENSE_START========================================================= +# dcae-analytics +# ================================================================================ +# Copyright © 2017 AT&T Intellectual Property. All rights reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +# + +domain=measurementsForVfScaling + +configuration.metricsPerFunctionalRole.vFirewall.policy.functionalRole=vFirewall +configuration.metricsPerFunctionalRole.vFirewall.policyName=configuration.dcae.microservice.tca.xml +configuration.metricsPerFunctionalRole.vFirewall.policyVersion=v0.0.1 +configuration.metricsPerFunctionalRole.vFirewall.policyScope=resource=vFirewall;type=configuration + +configuration.metricsPerFunctionalRole.vFirewall.thresholds.0.policy.closedLoopControlName=CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8 +configuration.metricsPerFunctionalRole.vFirewall.thresholds.0.policy.fieldPath=$.event.measurementsForVfScalingFields.vNicUsageArray[*].bytesIn +configuration.metricsPerFunctionalRole.vFirewall.thresholds.0.policy.thresholdValue=4000 +configuration.metricsPerFunctionalRole.vFirewall.thresholds.0.policy.direction=LESS_OR_EQUAL +configuration.metricsPerFunctionalRole.vFirewall.thresholds.0.policy.severity=MAJOR +configuration.metricsPerFunctionalRole.vFirewall.thresholds.0.policy.version=1.0.2 + +configuration.metricsPerFunctionalRole.vFirewall.thresholds.1.policy.closedLoopControlName=L-FRWL-HIGH-TRAFFIC-SIG-EA36FE84-9342-5E13-A656-EC5F21309A09 +configuration.metricsPerFunctionalRole.vFirewall.thresholds.1.policy.fieldPath=$.event.measurementsForVfScalingFields.vNicUsageArray[*].bytesIn +configuration.metricsPerFunctionalRole.vFirewall.thresholds.1.policy.thresholdValue=20000 +configuration.metricsPerFunctionalRole.vFirewall.thresholds.1.policy.direction=GREATER_OR_EQUAL +configuration.metricsPerFunctionalRole.vFirewall.thresholds.1.policy.severity=CRITICAL +configuration.metricsPerFunctionalRole.vFirewall.thresholds.1.policy.version=1.0.2 + +configuration.metricsPerFunctionalRole.vLoadBalancer.policy.functionalRole=vLoadBalancer +configuration.metricsPerFunctionalRole.vLoadBalancer.policyName=configuration.dcae.microservice.tca.xml +configuration.metricsPerFunctionalRole.vLoadBalancer.policyVersion=v0.0.1 +configuration.metricsPerFunctionalRole.vLoadBalancer.policyScope=resource=vLoadBalancer;type=configuration + +configuration.metricsPerFunctionalRole.vLoadBalancer.thresholds.0.policy.closedLoopControlName=CL-LBAL-LOW-TRAFFIC-SIG-FB480F95-A453-6F24-B767-FD703241AB1A +configuration.metricsPerFunctionalRole.vLoadBalancer.thresholds.0.policy.fieldPath=$.event.measurementsForVfScalingFields.vNicUsageArray[*].packetsIn +configuration.metricsPerFunctionalRole.vLoadBalancer.thresholds.0.policy.thresholdValue=500 +configuration.metricsPerFunctionalRole.vLoadBalancer.thresholds.0.policy.direction=LESS_OR_EQUAL +configuration.metricsPerFunctionalRole.vLoadBalancer.thresholds.0.policy.severity=MAJOR +configuration.metricsPerFunctionalRole.vLoadBalancer.thresholds.0.policy.version=1.0.2 + +configuration.metricsPerFunctionalRole.vLoadBalancer.thresholds.1.policy.closedLoopControlName=CL-LBAL-LOW-TRAFFIC-SIG-0C5920A6-B564-8035-C878-0E814352BC2B +configuration.metricsPerFunctionalRole.vLoadBalancer.thresholds.1.policy.fieldPath=$.event.measurementsForVfScalingFields.vNicUsageArray[*].packetsIn +configuration.metricsPerFunctionalRole.vLoadBalancer.thresholds.1.policy.thresholdValue=5000 +configuration.metricsPerFunctionalRole.vLoadBalancer.thresholds.1.policy.direction=GREATER_OR_EQUAL +configuration.metricsPerFunctionalRole.vLoadBalancer.thresholds.1.policy.severity=CRITICAL +configuration.metricsPerFunctionalRole.vLoadBalancer.thresholds.1.policy.version=1.0.2 diff --git a/dcae-analytics-tca/src/test/resources/logback-test.xml b/dcae-analytics-tca/src/test/resources/logback-test.xml new file mode 100644 index 0000000..e1cb987 --- /dev/null +++ b/dcae-analytics-tca/src/test/resources/logback-test.xml @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ ============LICENSE_START========================================================= + ~ dcae-analytics + ~ ================================================================================ + ~ Copyright © 2017 AT&T Intellectual Property. All rights reserved. + ~ ================================================================================ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + ~ ============LICENSE_END========================================================= + --> +<configuration debug="false"> + + <!-- + Disabling some chatty loggers. + --> + <logger name="org.apache.commons.beanutils" level="ERROR"/> + <logger name="org.apache.zookeeper.server" level="ERROR"/> + <logger name="org.apache.zookeeper" level="ERROR"/> + <logger name="com.ning" level="WARN"/> + <logger name="org.apache.spark" level="WARN"/> + <logger name="org.spark-project" level="WARN"/> + <logger name="org.apache.hadoop" level="WARN"/> + <logger name="org.apache.hive" level="WARN"/> + <logger name="org.quartz.core" level="WARN"/> + <logger name="org.eclipse.jetty" level="WARN"/> + <logger name="io.netty.util.internal" level="WARN"/> + + <logger name="org.apache.twill" level="WARN"/> + <logger name="co.cask.cdap" level="INFO"/> + <logger name="org.openecomp" level="DEBUG"/> + + <appender name="Console" class="ch.qos.logback.core.ConsoleAppender"> + <encoder> + <pattern>%d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n</pattern> + </encoder> + </appender> + + <root level="ERROR"> + <appender-ref ref="Console"/> + </root> + + +</configuration> + |