Initial import of CFM and SOAM api
Change-Id: Icf5cc2d5fb34b75460e80e8cced0d70265bcd33b
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/l2monitoring/soam/delay/DelayMeasurementEntry.java b/incubator/api/src/main/java/org/onosproject/incubator/net/l2monitoring/soam/delay/DelayMeasurementEntry.java
new file mode 100644
index 0000000..3571922
--- /dev/null
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/l2monitoring/soam/delay/DelayMeasurementEntry.java
@@ -0,0 +1,141 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * 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.
+ */
+package org.onosproject.incubator.net.l2monitoring.soam.delay;
+
+import java.time.Duration;
+import java.util.Collection;
+
+import org.onosproject.incubator.net.l2monitoring.soam.SoamId;
+
+/**
+ * Delay Measurement from ITU Y.1731 Chapter 8.2, MEF 17, MEF 36.1 and MEF 39.
+ *
+ * This represents the result returned and includes the parameters used to
+ * configure the DM when it was created
+ */
+public interface DelayMeasurementEntry extends DelayMeasurementCreate {
+ /**
+ * This uniquely identifies a scheduled measurement.
+ * It is automatically generated by the server on creation of a new measurement
+ * @return the id
+ */
+ SoamId dmId();
+
+ /**
+ * The current status of the DM session.
+ * A value of 'active' indicates the current DM session is active,
+ * i.e. the current time lies between the start time and the stop time, and
+ * enabled is true. A value of 'not-active' indicates the current DM session
+ * is not active, i.e. it has not started yet, has stopped upon reaching the
+ * stop time, or is disabled
+ * @return the status
+ */
+ SessionStatus sessionStatus();
+
+ /**
+ * The two-way frame delay calculated by this MEP from the last received SOAM PDU.
+ * This object is undefined is measurement-type is dm1-transmitted or dm1-received
+ * @return The delay as a java duration
+ */
+ Duration frameDelayTwoWay();
+
+ /**
+ * The frame delay in the forward direction calculated by this MEP from the last received SOAM PDU.
+ * The value of this object may not be accurate in the absence of sufficiently
+ * precise clock synchronization.
+ * This object is undefined is measurement-type is dm1-transmitted
+ * @return The delay as a java duration
+ */
+ Duration frameDelayForward();
+
+ /**
+ * The frame delay in the backward direction calculated by this MEP from the last received SOAM PDU.
+ * The value of this object may not be accurate in the absence of sufficiently
+ * precise clock synchronization.
+ * This object is undefined is measurement-type is dm1-transmitted or dm1-received
+ * @return The delay as a java duration
+ */
+ Duration frameDelayBackward();
+
+ /**
+ * The last two-way inter-frame delay interval calculated by this MEP.
+ * The value of this object is undefined when measurement-type is dm1-transmitted or dm1-received
+ * @return The delay as a java duration
+ */
+ Duration interFrameDelayVariationTwoWay();
+
+ /**
+ * The last one-way inter-frame delay interval in the forward direction calculated by this MEP.
+ * The value of this object is undefined when measurement-type is dm1-transmitted
+ * @return The delay as a java duration
+ */
+ Duration interFrameDelayVariationForward();
+
+ /**
+ * The last one-way inter-frame delay interval in the backward direction calculated by this MEP.
+ * The value of this object is undefined when measurement-type is
+ * dm1-transmitted or dm1-received
+ * @return The delay as a java duration
+ */
+ Duration interFrameDelayVariationBackward();
+
+ /**
+ * The results for the current Measurement Interval in a SOAM Delay Measurement session.
+ * gathered during the interval indicated by measurement-interval.
+ * @return The current set of results
+ */
+ DelayMeasurementStatCurrent currentResult();
+
+ /**
+ * The results for history Measurement Intervals in a SOAM Delay Measurement session.
+ * @return A collection of history results
+ */
+ Collection<DelayMeasurementStatHistory> historicalResults();
+
+ /**
+ * Builder for {@link org.onosproject.incubator.net.l2monitoring.soam.delay.DelayMeasurementEntry}.
+ */
+ public interface DmEntryBuilder extends DmCreateBuilder {
+ DmEntryBuilder sessionStatus(SessionStatus sessionStatus);
+
+ DmEntryBuilder frameDelayTwoWay(Duration frameDelayTwoWay);
+
+ DmEntryBuilder frameDelayForward(Duration frameDelayForward);
+
+ DmEntryBuilder frameDelayBackward(Duration frameDelayBackward);
+
+ DmEntryBuilder interFrameDelayVariationTwoWay(Duration interFrameDelayVariationTwoWay);
+
+ DmEntryBuilder interFrameDelayVariationForward(Duration interFrameDelayVariationForward);
+
+ DmEntryBuilder interFrameDelayVariationBackward(Duration interFrameDelayVariationBackward);
+
+ DmEntryBuilder currentResult(DelayMeasurementStatCurrent currentResult);
+
+ DmEntryBuilder addToHistoricalResults(
+ DelayMeasurementStatHistory historicalResult);
+
+ DelayMeasurementEntry build();
+ }
+
+ /**
+ * Session Status options.
+ */
+ public enum SessionStatus {
+ ACTIVE,
+ NOT_ACTIVE;
+ }
+}