mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-10-15 09:21:06 +02:00
Additions to the L2 monitoring for CFM and SOAM
Change-Id: I2d39dd9e1c4841c87cb0a27d82bb303ffd9c08fc
This commit is contained in:
parent
d79bfd060f
commit
081290dadd
@ -18,6 +18,10 @@ osgi_jar_with_tests (
|
||||
deps = COMPILE_DEPS,
|
||||
test_deps = TEST_DEPS,
|
||||
web_context = '/onos/cfm',
|
||||
api_title = 'L2 Monitoring CFM',
|
||||
api_version = '1.0',
|
||||
api_description = 'REST API for L2 Monitoring CFM',
|
||||
api_package = 'org.onosproject.soam.rest',
|
||||
)
|
||||
|
||||
onos_app (
|
||||
|
@ -14,13 +14,13 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.onosproject.cfm.impl;
|
||||
package org.onosproject.cfm.rest;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import org.onlab.rest.AbstractWebApplication;
|
||||
import org.onosproject.soam.impl.DmWebResource;
|
||||
import org.onosproject.soam.impl.LmWebResource;
|
||||
import org.onosproject.soam.rest.DmWebResource;
|
||||
import org.onosproject.soam.rest.LmWebResource;
|
||||
|
||||
/**
|
||||
* CFM REST API web application.
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.onosproject.cfm.impl;
|
||||
package org.onosproject.cfm.rest;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.net.URI;
|
||||
@ -121,6 +121,7 @@ public class MaWebResource extends AbstractWebResource {
|
||||
/**
|
||||
* Create Maintenance Association by MD and MA name.
|
||||
*
|
||||
* @onos.rsModel MaCreate
|
||||
* @param mdName The name of a Maintenance Domain
|
||||
* @param input A JSON formatted input stream specifying the MA parameters
|
||||
* @return 200 OK or 500 on error
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.onosproject.cfm.impl;
|
||||
package org.onosproject.cfm.rest;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.net.URI;
|
||||
@ -125,6 +125,7 @@ public class MdWebResource extends AbstractWebResource {
|
||||
/**
|
||||
* Create Maintenance Domain.
|
||||
*
|
||||
* @onos.rsModel MdCreate
|
||||
* @param input A JSON formatted input stream specifying the MA parameters
|
||||
* @return 200 OK, 304 if MD already exists or 500 on error
|
||||
*/
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.onosproject.cfm.impl;
|
||||
package org.onosproject.cfm.rest;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.net.URI;
|
||||
@ -164,6 +164,7 @@ public class MepWebResource extends AbstractWebResource {
|
||||
/**
|
||||
* Create MEP with MD name, MA name and Mep Json.
|
||||
*
|
||||
* @onos.rsModel MepCreate
|
||||
* @param mdName The name of a Maintenance Domain
|
||||
* @param maName The name of a Maintenance Association belonging to the MD
|
||||
* @param input A JSON formatted input stream specifying the Mep parameters
|
||||
@ -207,6 +208,7 @@ public class MepWebResource extends AbstractWebResource {
|
||||
/**
|
||||
* Transmit Loopback on MEP with MD name, MA name and Mep Id.
|
||||
*
|
||||
* @onos.rsModel MepLbTransmit
|
||||
* @param mdName The name of a Maintenance Domain
|
||||
* @param maName The name of a Maintenance Association belonging to the MD
|
||||
* @param mepIdShort The id of a MEP belonging to the MA
|
||||
@ -296,6 +298,7 @@ public class MepWebResource extends AbstractWebResource {
|
||||
/**
|
||||
* Transmit Linktrace on MEP with MD name, MA name and Mep Id.
|
||||
*
|
||||
* @onos.rsModel MepLtTransmit
|
||||
* @param mdName The name of a Maintenance Domain
|
||||
* @param maName The name of a Maintenance Association belonging to the MD
|
||||
* @param mepIdShort The id of a MEP belonging to the MA
|
@ -16,4 +16,4 @@
|
||||
/**
|
||||
* REST Web Application for CFM.
|
||||
*/
|
||||
package org.onosproject.cfm.impl;
|
||||
package org.onosproject.cfm.rest;
|
@ -53,10 +53,10 @@ public class RMepCodec extends JsonCodec<MepId> {
|
||||
return null;
|
||||
}
|
||||
|
||||
JsonNode vidNode = json.get("rmep");
|
||||
JsonNode rmepNode = json.get("rmep");
|
||||
|
||||
return MepId.valueOf(
|
||||
nullIsIllegal((short) vidNode.asInt(), "rmep is required"));
|
||||
return MepId.valueOf((short)
|
||||
nullIsIllegal(rmepNode, "rmep is required").asInt());
|
||||
|
||||
}
|
||||
|
||||
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.onosproject.soam.impl;
|
||||
package org.onosproject.soam.rest;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
@ -173,6 +173,7 @@ public class DmWebResource extends AbstractWebResource {
|
||||
/**
|
||||
* Create DM with MD name, MA name, Mep id and DM Json.
|
||||
*
|
||||
* @onos.rsModel DmCreate
|
||||
* @param mdName The name of a Maintenance Domain
|
||||
* @param maName The name of a Maintenance Association belonging to the MD
|
||||
* @param mepId The Id of the MEP belonging to the MEP
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.onosproject.soam.impl;
|
||||
package org.onosproject.soam.rest;
|
||||
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
@ -171,6 +171,7 @@ public class LmWebResource extends AbstractWebResource {
|
||||
/**
|
||||
* Create LM with MD name, MA name, Mep id and LM Json.
|
||||
*
|
||||
* @onos.rsModel LmCreate
|
||||
* @param mdName The name of a Maintenance Domain
|
||||
* @param maName The name of a Maintenance Association belonging to the MD
|
||||
* @param mepId The Id of the MEP belonging to the MEP
|
@ -16,4 +16,4 @@
|
||||
/**
|
||||
* REST Web Application for SOAM.
|
||||
*/
|
||||
package org.onosproject.soam.impl;
|
||||
package org.onosproject.soam.rest;
|
219
apps/cfm/src/main/resources/definitions/DmCreate.json
Normal file
219
apps/cfm/src/main/resources/definitions/DmCreate.json
Normal file
@ -0,0 +1,219 @@
|
||||
{
|
||||
"type": "object",
|
||||
"title": "dm",
|
||||
"required": [
|
||||
"dm"
|
||||
],
|
||||
"properties": {
|
||||
"dm": {
|
||||
"type": "object",
|
||||
"title": "dmprops",
|
||||
"required": [
|
||||
"remoteMepId",
|
||||
"dmCfgType",
|
||||
"version",
|
||||
"priority"
|
||||
],
|
||||
"properties": {
|
||||
"remoteMepId": {
|
||||
"type": "uint16",
|
||||
"minimum": 1,
|
||||
"maximum": 8191,
|
||||
"description": "Remote MEP identifier",
|
||||
"example": 20
|
||||
},
|
||||
"dmCfgType": {
|
||||
"type": "string",
|
||||
"enum": ["DMDMM","DM1DMTX", "DM1DMRX"],
|
||||
"description": "The type of Delay Measurement to be performed",
|
||||
"example": "DMDMM"
|
||||
},
|
||||
"version": {
|
||||
"type": "string",
|
||||
"enum": ["Y17312008","Y17312011"],
|
||||
"description": "The version of Delay Measurement to be performed",
|
||||
"example": "Y17312011"
|
||||
},
|
||||
"messagePeriodMs": {
|
||||
"type": "uint32",
|
||||
"description": "Message period in milliseconds",
|
||||
"example": 100
|
||||
},
|
||||
"priority": {
|
||||
"type": "string",
|
||||
"enum": ["PRIO0","PRIO1","PRIO2","PRIO3","PRIO4","PRIO5","PRIO6","PRIO7"],
|
||||
"description": "The Priority for the Delay Measurement",
|
||||
"example": "PRIO3"
|
||||
},
|
||||
"frameSize": {
|
||||
"type": "uint16",
|
||||
"minimum": 64,
|
||||
"maximum": 9600,
|
||||
"description": "Frame size",
|
||||
"example": 64
|
||||
},
|
||||
"measurementIntervalMins": {
|
||||
"type": "uint16",
|
||||
"description": "Measurement Interval in minutes",
|
||||
"example": 15
|
||||
},
|
||||
"alignMeasurementIntervals": {
|
||||
"type": "boolean",
|
||||
"description": "Defines if measurement intervals are aligned with a zero offset to real time"
|
||||
},
|
||||
"alignMeasurementOffsetMins": {
|
||||
"type": "uint16",
|
||||
"description": "The offset in minutes from the time of day value",
|
||||
"example": 0
|
||||
},
|
||||
"measurementsEnabled": {
|
||||
"type": "array" ,
|
||||
"xml": {
|
||||
"name": "measurementsEnabled",
|
||||
"wrapped": true
|
||||
},
|
||||
"items": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"SOAM_PDUS_SENT",
|
||||
"SOAM_PDUS_RECEIVED",
|
||||
"FRAME_DELAY_TWO_WAY_BINS",
|
||||
"FRAME_DELAY_TWO_WAY_MIN",
|
||||
"FRAME_DELAY_TWO_WAY_MAX",
|
||||
"FRAME_DELAY_TWO_WAY_AVERAGE",
|
||||
"FRAME_DELAY_FORWARD_BINS",
|
||||
"FRAME_DELAY_FORWARD_MIN",
|
||||
"FRAME_DELAY_FORWARD_MAX",
|
||||
"FRAME_DELAY_FORWARD_AVERAGE",
|
||||
"FRAME_DELAY_BACKWARD_BINS",
|
||||
"FRAME_DELAY_BACKWARD_MIN",
|
||||
"FRAME_DELAY_BACKWARD_MAX",
|
||||
"FRAME_DELAY_BACKWARD_AVERAGE",
|
||||
"INTER_FRAME_DELAY_VARIATION_FORWARD_BINS",
|
||||
"INTER_FRAME_DELAY_VARIATION_FORWARD_MIN",
|
||||
"INTER_FRAME_DELAY_VARIATION_FORWARD_MAX",
|
||||
"INTER_FRAME_DELAY_VARIATION_FORWARD_AVERAGE",
|
||||
"INTER_FRAME_DELAY_VARIATION_BACKWARD_BINS",
|
||||
"INTER_FRAME_DELAY_VARIATION_BACKWARD_MIN",
|
||||
"INTER_FRAME_DELAY_VARIATION_BACKWARD_MAX",
|
||||
"INTER_FRAME_DELAY_VARIATION_BACKWARD_AVERAGE",
|
||||
"INTER_FRAME_DELAY_VARIATION_TWO_WAY_BINS",
|
||||
"INTER_FRAME_DELAY_VARIATION_TWO_WAY_MIN",
|
||||
"INTER_FRAME_DELAY_VARIATION_TWO_WAY_MAX",
|
||||
"INTER_FRAME_DELAY_VARIATION_TWO_WAY_AVERAGE",
|
||||
"FRAME_DELAY_RANGE_FORWARD_BINS",
|
||||
"FRAME_DELAY_RANGE_FORWARD_MAX",
|
||||
"FRAME_DELAY_RANGE_FORWARD_AVERAGE",
|
||||
"FRAME_DELAY_RANGE_BACKWARD_BINS",
|
||||
"FRAME_DELAY_RANGE_BACKWARD_MAX",
|
||||
"FRAME_DELAY_RANGE_BACKWARD_AVERAGE",
|
||||
"FRAME_DELAY_RANGE_TWO_WAY_BINS",
|
||||
"FRAME_DELAY_RANGE_TWO_WAY_MAX",
|
||||
"FRAME_DELAY_RANGE_TWO_WAY_AVERAGE",
|
||||
"MEASURED_STATS_FRAME_DELAY_TWO_WAY",
|
||||
"MEASURED_STATS_FRAME_DELAY_FORWARD",
|
||||
"MEASURED_STATS_FRAME_DELAY_BACKWARD",
|
||||
"MEASURED_STATS_INTER_FRAME_DELAY_VARIATION_TWO_WAY",
|
||||
"MEASURED_STATS_INTER_FRAME_DELAY_VARIATION_FORWARD",
|
||||
"MEASURED_STATS_INTER_FRAME_DELAY_VARIATION_BACKWARD"
|
||||
],
|
||||
"description": "A vector of bits that indicates the type of SOAM DM counters that are enabled"
|
||||
},
|
||||
"example": ["FRAME_DELAY_TWO_WAY_BINS","FRAME_DELAY_TWO_WAY_AVERAGE"]
|
||||
},
|
||||
"binsPerFdInterval": {
|
||||
"type": "uint8",
|
||||
"minimum": 3,
|
||||
"description": "The number of measurement bins per Measurement Interval for Frame Delay measurements",
|
||||
"example": 4
|
||||
},
|
||||
"binsPerIfdvInterval": {
|
||||
"type": "uint8",
|
||||
"minimum": 3,
|
||||
"description": "The number of measurement bins per Measurement Interval for IFDV measurements",
|
||||
"example": 4
|
||||
},
|
||||
"ifdvSelectionOffset": {
|
||||
"type": "uint8",
|
||||
"minimum": 2,
|
||||
"description": "selection offset for Inter-Frame Delay Variation measurements",
|
||||
"example": 2
|
||||
},
|
||||
"binsPerFdrInterval": {
|
||||
"type": "uint8",
|
||||
"minimum": 3,
|
||||
"description": "The number of measurement bins per Measurement Interval for Frame Delay Range measurements",
|
||||
"example": 4
|
||||
},
|
||||
"startTime": {
|
||||
"type": "object",
|
||||
"title": "startTime",
|
||||
"description": "only one needs to be specified",
|
||||
"properties": {
|
||||
"immediate": {
|
||||
"type": "boolean",
|
||||
"description": "Should always be true if specified",
|
||||
"example": true
|
||||
},
|
||||
"absolute": {
|
||||
"type": "object",
|
||||
"description": "Will be ignored if immediate is specified",
|
||||
"properties": {
|
||||
"start-time": {
|
||||
"type": "date-time",
|
||||
"example": "2017-11-11T12:00:00"
|
||||
}
|
||||
}
|
||||
},
|
||||
"relative": {
|
||||
"type": "object",
|
||||
"description": "Will be ignored if immediate or absolute is specified",
|
||||
"properties": {
|
||||
"start-time": {
|
||||
"type": "string",
|
||||
"description": "A period of time written as a Java Duration",
|
||||
"example": "PT10M"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"example": {"immediate": true}
|
||||
},
|
||||
"stopTime": {
|
||||
"type": "object",
|
||||
"title": "stopTime",
|
||||
"description": "only one needs to be specified",
|
||||
"properties": {
|
||||
"none": {
|
||||
"type": "boolean",
|
||||
"description": "Should always be true if specified",
|
||||
"example": true
|
||||
},
|
||||
"absolute": {
|
||||
"type": "object",
|
||||
"description": "Will be ignored if none is specified",
|
||||
"properties": {
|
||||
"start-time": {
|
||||
"type": "date-time",
|
||||
"example": "2017-11-11T12:00:00"
|
||||
}
|
||||
}
|
||||
},
|
||||
"relative": {
|
||||
"type": "object",
|
||||
"description": "Will be ignored if none or absolute is specified",
|
||||
"properties": {
|
||||
"start-time": {
|
||||
"type": "string",
|
||||
"description": "A period of time written as a Java Duration",
|
||||
"example": "PT10M"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"example": {"none": true}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
296
apps/cfm/src/main/resources/definitions/LmCreate.json
Normal file
296
apps/cfm/src/main/resources/definitions/LmCreate.json
Normal file
@ -0,0 +1,296 @@
|
||||
{
|
||||
"type": "object",
|
||||
"title": "lm",
|
||||
"required": [
|
||||
"lm"
|
||||
],
|
||||
"properties": {
|
||||
"lm": {
|
||||
"type": "object",
|
||||
"title": "lmprops",
|
||||
"required": [
|
||||
"remoteMepId",
|
||||
"lmCfgType",
|
||||
"version",
|
||||
"priority"
|
||||
],
|
||||
"properties": {
|
||||
"remoteMepId": {
|
||||
"type": "uint16",
|
||||
"minimum": 1,
|
||||
"maximum": 8191,
|
||||
"description": "Remote MEP identifier",
|
||||
"example": 20
|
||||
},
|
||||
"lmCfgType": {
|
||||
"type": "string",
|
||||
"enum": ["LMLMM","LMSLM", "LMCCM"],
|
||||
"description": "The type of Loss Measurement to be performed",
|
||||
"example": "LMLMM"
|
||||
},
|
||||
"version": {
|
||||
"type": "string",
|
||||
"enum": ["Y17312008","Y17312011"],
|
||||
"description": "The version of Loss Measurement to be performed",
|
||||
"example": "Y17312011"
|
||||
},
|
||||
"priority": {
|
||||
"type": "string",
|
||||
"enum": ["PRIO0","PRIO1","PRIO2","PRIO3","PRIO4","PRIO5","PRIO6","PRIO7"],
|
||||
"description": "The Priority for the Delay Measurement",
|
||||
"example": "PRIO3"
|
||||
},
|
||||
"countersEnabled": {
|
||||
"type": "array" ,
|
||||
"xml": {
|
||||
"name": "countersEnabled",
|
||||
"wrapped": true
|
||||
},
|
||||
"items": {
|
||||
"type": "string",
|
||||
"enum": [ "FORWARD_TRANSMITTED_FRAMES",
|
||||
"FORWARD_RECEIVED_FRAMES","FORWARD_MIN_FLR","FORWARD_MAX_FLR","FORWARD_AVERAGE_FLR","BACKWARD_TRANSMITTED_FRAMES","BACKWARD_RECEIVED_FRAMES","BACKWARD_MIN_FLR","BACKWARD_MAX_FLR","BACKWARD_AVERAGE_FLR","SOAM_PDUS_SENT","SOAM_PDUS_RECEIVED","AVAILABILITY_FORWARD_HIGH_LOSS","AVAILABILITY_FORWARD_CONSECUTIVE_HIGH_LOSS","AVAILABILITY_FORWARD_AVAILABLE","AVAILABILITY_FORWARD_UNAVAILABLE","AVAILABILILITY_FORWARD_MIN_FLR","AVAILABILITY_FORWARD_MAX_FLR","AVAILABILITY_FORWARD_AVERAGE_FLR","AVAILABILITY_BACKWARD_HIGH_LOSS","AVAILABILITY_BACKWARD_CONSECUTIVE_HIGH_LOSS","AVAILABILITY_BACKWARD_AVAILABLE","AVAILABLE_BACKWARD_UNAVAILABLE","AVAILABLE_BACKWARD_MIN_FLR","AVAILABLE_BACKWARD_MAX_FLR","AVAILABLE_BACKWARD_AVERAGE_FLR","MEASURED_STATS_FORWARD_MEASURED_FLR","MEASURED_STATS_BACKWARD_MEASURED_FLR","MEASURED_STATS_AVAILABILITY_FORWARD_STATUS","MEASURED_STATS_AVAILABILITY_BACKWARD_STATUS"],
|
||||
"description": "A vector of bits that indicates the type of SOAM LM counters that are enabled"
|
||||
},
|
||||
"example": ["FORWARD_RECEIVED_FRAMES","BACKWARD_RECEIVED_FRAMES","SOAM_PDUS_SENT","SOAM_PDUS_RECEIVED"]
|
||||
},
|
||||
"availabilityMeasurementIntervalMins": {
|
||||
"type": "uint16",
|
||||
"description": "The availability measurement interval in minutes",
|
||||
"example": 15
|
||||
},
|
||||
"availabilityNumberConsecutiveFlrMeasurements": {
|
||||
"type": "uint32",
|
||||
"minimum": 10,
|
||||
"maximum": 1000000,
|
||||
"description": "configurable number of consecutive loss measurement PDUs",
|
||||
"example": 100
|
||||
},
|
||||
"availabilityFlrThresholdPct": {
|
||||
"type": "float",
|
||||
"minimum": 0.0,
|
||||
"maximum": 100.0,
|
||||
"description": "configurable availability threshold to be used in evaluating the availability/unavailability status in percent",
|
||||
"example": 50.0
|
||||
},
|
||||
"availabilityNumberConsecutiveIntervals": {
|
||||
"type": "uint16",
|
||||
"minimum": 0,
|
||||
"maximum": 1000,
|
||||
"description": "configurable number of consecutive availability indicators to be used to determine a change in the availability status",
|
||||
"example": 10
|
||||
},
|
||||
"availabilityNumberConsecutiveHighFlr": {
|
||||
"type": "uint16",
|
||||
"minimum": 0,
|
||||
"maximum": 1000,
|
||||
"description": "configurable number of consecutive availability indicators to be used for assessing CHLI.",
|
||||
"example": 10
|
||||
},
|
||||
"frameSize": {
|
||||
"type": "uint16",
|
||||
"minimum": 64,
|
||||
"maximum": 9600,
|
||||
"description": "Frame size",
|
||||
"example": 64
|
||||
},
|
||||
"measurementIntervalMins": {
|
||||
"type": "uint16",
|
||||
"description": "Measurement Interval in minutes",
|
||||
"example": 15
|
||||
},
|
||||
"alignMeasurementIntervals": {
|
||||
"type": "boolean",
|
||||
"description": "Defines if measurement intervals are aligned with a zero offset to real time"
|
||||
},
|
||||
"alignMeasurementOffsetMins": {
|
||||
"type": "uint16",
|
||||
"description": "The offset in minutes from the time of day value",
|
||||
"example": 0
|
||||
},
|
||||
"messagePeriodMs": {
|
||||
"type": "uint32",
|
||||
"description": "Message period in milliseconds",
|
||||
"example": 100
|
||||
},
|
||||
"thresholds": {
|
||||
"type": "array" ,
|
||||
"xml": {
|
||||
"name": "thresholds",
|
||||
"wrapped": true
|
||||
},
|
||||
"items": {
|
||||
"type": "object",
|
||||
"title": "thresholdProps",
|
||||
"properties": {
|
||||
"threshold": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "uint8",
|
||||
"description": "The id of the threshold",
|
||||
"example": 1
|
||||
},
|
||||
"thresholds": {
|
||||
"type": "array",
|
||||
"xml": {
|
||||
"name": "thresholds",
|
||||
"wrapped": true
|
||||
},
|
||||
"items": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"MEASURED_FLR_FORWARD",
|
||||
"MAX_FLR_FORWARD",
|
||||
"AVERAGE_FLR_FORWARD",
|
||||
"MEASURED_FLR_BACKWARD",
|
||||
"MAX_FLR_BACKWARD",
|
||||
"AVERAGE_FLR_BACKWARD",
|
||||
"FORWARD_HIGH_LOSS",
|
||||
"FORWARD_CONSECUTIVE_HIGH_LOSS",
|
||||
"BACKWARD_HIGH_LOSS",
|
||||
"BACKWARD_CONSECUTIVE_HIGH_LOSS",
|
||||
"FORWARD_UNAVAILABLE_COUNT",
|
||||
"FORWARD_AVAILABLE_RATIO",
|
||||
"BACKWARD_UNAVAILABLE_COUNT",
|
||||
"BACKWARD_AVAILABLE_RATIO"
|
||||
],
|
||||
"description": "A vector of bits that indicates the type of SOAM LM thresholds notifications that are enabled."
|
||||
},
|
||||
"example": [
|
||||
"MEASURED_FLR_FORWARD",
|
||||
"MAX_FLR_FORWARD",
|
||||
"AVERAGE_FLR_FORWARD"
|
||||
]
|
||||
},
|
||||
"measuredFlrForward": {
|
||||
"type": "uint32",
|
||||
"description": "The measured forward frame loss ratio threshold value in milli Percent 1/100000",
|
||||
"example": 15
|
||||
},
|
||||
"maxFlrForward": {
|
||||
"type": "uint32",
|
||||
"description": "The maximum forward frame loss ratio threshold value in milli Percent 1/100000",
|
||||
"example": 15
|
||||
},
|
||||
"averageFlrForward": {
|
||||
"type": "uint32",
|
||||
"description": "The average forward frame loss ratio threshold value in milli Percent 1/100000",
|
||||
"example": 15
|
||||
},
|
||||
"measuredFlrBackward": {
|
||||
"type": "uint32",
|
||||
"description": "The measured backward frame loss ratio threshold value in milli Percent 1/100000",
|
||||
"example": 15
|
||||
},
|
||||
"maxFlrBackward": {
|
||||
"type": "uint32",
|
||||
"description": "The maximum backward frame loss ratio threshold value in milli Percent 1/100000",
|
||||
"example": 15
|
||||
},
|
||||
"averageFlrBackward": {
|
||||
"type": "uint32",
|
||||
"description": "The average backward frame loss ratio threshold value in milli Percent 1/100000",
|
||||
"example": 15
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"binsPerFdInterval": {
|
||||
"type": "uint8",
|
||||
"minimum": 3,
|
||||
"description": "The number of measurement bins per Measurement Interval for Frame Delay measurements",
|
||||
"example": 4
|
||||
},
|
||||
"binsPerIfdvInterval": {
|
||||
"type": "uint8",
|
||||
"minimum": 3,
|
||||
"description": "The number of measurement bins per Measurement Interval for IFDV measurements",
|
||||
"example": 4
|
||||
},
|
||||
"ifdvSelectionOffset": {
|
||||
"type": "uint8",
|
||||
"minimum": 2,
|
||||
"description": "selection offset for Inter-Frame Delay Variation measurements",
|
||||
"example": 2
|
||||
},
|
||||
"binsPerFdrInterval": {
|
||||
"type": "uint8",
|
||||
"minimum": 3,
|
||||
"description": "The number of measurement bins per Measurement Interval for Frame Delay Range measurements",
|
||||
"example": 4
|
||||
},
|
||||
"startTime": {
|
||||
"type": "object",
|
||||
"title": "startTime",
|
||||
"description": "only one needs to be specified",
|
||||
"properties": {
|
||||
"immediate": {
|
||||
"type": "boolean",
|
||||
"description": "Should always be true if specified",
|
||||
"example": true
|
||||
},
|
||||
"absolute": {
|
||||
"type": "object",
|
||||
"description": "Will be ignored if immediate is specified",
|
||||
"properties": {
|
||||
"start-time": {
|
||||
"type": "date-time",
|
||||
"example": "2017-11-11T12:00:00"
|
||||
}
|
||||
}
|
||||
},
|
||||
"relative": {
|
||||
"type": "object",
|
||||
"description": "Will be ignored if immediate or absolute is specified",
|
||||
"properties": {
|
||||
"start-time": {
|
||||
"type": "string",
|
||||
"description": "A period of time written as a Java Duration",
|
||||
"example": "PT10M"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"example": {"immediate": true}
|
||||
},
|
||||
"stopTime": {
|
||||
"type": "object",
|
||||
"title": "stopTime",
|
||||
"description": "only one needs to be specified",
|
||||
"properties": {
|
||||
"none": {
|
||||
"type": "boolean",
|
||||
"description": "Should always be true if specified",
|
||||
"example": true
|
||||
},
|
||||
"absolute": {
|
||||
"type": "object",
|
||||
"description": "Will be ignored if none is specified",
|
||||
"properties": {
|
||||
"start-time": {
|
||||
"type": "date-time",
|
||||
"example": "2017-11-11T12:00:00"
|
||||
}
|
||||
}
|
||||
},
|
||||
"relative": {
|
||||
"type": "object",
|
||||
"description": "Will be ignored if none or absolute is specified",
|
||||
"properties": {
|
||||
"start-time": {
|
||||
"type": "string",
|
||||
"description": "A period of time written as a Java Duration",
|
||||
"example": "PT10M"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"example": {"none": true}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
141
apps/cfm/src/main/resources/definitions/MaCreate.json
Normal file
141
apps/cfm/src/main/resources/definitions/MaCreate.json
Normal file
@ -0,0 +1,141 @@
|
||||
{
|
||||
"type": "object",
|
||||
"title": "ma",
|
||||
"required": [
|
||||
"ma"
|
||||
],
|
||||
"properties": {
|
||||
"ma": {
|
||||
"type": "object",
|
||||
"title": "maprops",
|
||||
"required": [
|
||||
"maName",
|
||||
"maNameType"
|
||||
],
|
||||
"properties": {
|
||||
"maName": {
|
||||
"type": "string",
|
||||
"maxLength": 45,
|
||||
"description": "MA identifier [a-zA-Z0-9-:.]",
|
||||
"example": "ma-vlan-101"
|
||||
},
|
||||
"maNameType": {
|
||||
"type": "string",
|
||||
"enum": ["CHARACTERSTRING", "TWOOCTET", "ICCY1731", "PRIMARYVID", "RFC2685VPNID"],
|
||||
"description": "MA identifier type",
|
||||
"example": "CHARACTERSTRING"
|
||||
},
|
||||
"maNumericId": {
|
||||
"type": "uint16",
|
||||
"minimum": 1,
|
||||
"maximum": 32767,
|
||||
"description": "Optional numeric id",
|
||||
"example": 1
|
||||
},
|
||||
"ccm-interval": {
|
||||
"type": "string",
|
||||
"enum": ["INVALID", "INTERVAL_3MS", "INTERVAL_10MS", "INTERVAL_100MS", "INTERVAL_1S", "INTERVAL_10S", "INTERVAL_1MIN", "INTERVAL_10MIN"],
|
||||
"description": "CCM interval for the Maintenance Association",
|
||||
"example": "INTERVAL_1S"
|
||||
},
|
||||
"component-list": {
|
||||
"type": "array" ,
|
||||
"xml": {
|
||||
"name": "components",
|
||||
"wrapped": true
|
||||
},
|
||||
"items": {
|
||||
"type": "object",
|
||||
"title": "component",
|
||||
"required": [
|
||||
"component-id"
|
||||
],
|
||||
"properties": {
|
||||
"component": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"component-id": {
|
||||
"type": "uint8",
|
||||
"minimum": 1,
|
||||
"maximum": 8,
|
||||
"description": "An id for the component",
|
||||
"example": 1
|
||||
},
|
||||
"vid-list": {
|
||||
"type": "array",
|
||||
"xml": {
|
||||
"name": "vid",
|
||||
"wrapped": true
|
||||
},
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"vid": {
|
||||
"type": "uint16",
|
||||
"minimum": 1,
|
||||
"maximum": 4094,
|
||||
"description": "VID of component",
|
||||
"example": 101
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"mhf-creation-type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"NONE",
|
||||
"DEFAULT",
|
||||
"EXPLICIT",
|
||||
"DEFER"
|
||||
],
|
||||
"description": "Defines how the MA can create MHFs (MIP Half Function) for this VID at this MA"
|
||||
},
|
||||
"id-permission": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"NONE",
|
||||
"CHASSIS",
|
||||
"MANAGE",
|
||||
"CHASSIS_MANAGE",
|
||||
"DEFER"
|
||||
],
|
||||
"description": "indicates what, if anything, is to be included in the Sender ID TLV"
|
||||
},
|
||||
"tag-type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"VLAN_NONE",
|
||||
"VLAN_CTAG",
|
||||
"VLAN_STAG"
|
||||
],
|
||||
"description": "Indicates the tag type for this component",
|
||||
"example": "VLAN_STAG"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"rmep-list": {
|
||||
"type": "array",
|
||||
"xml": {
|
||||
"name": "rmep",
|
||||
"wrapped": true
|
||||
},
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"rmep": {
|
||||
"type": "uint16",
|
||||
"minimum": 1,
|
||||
"maximum": 8191,
|
||||
"description": "Remote MEP ID"
|
||||
}
|
||||
}
|
||||
},
|
||||
"example": [{"rmep": 10}, {"rmep": 20}]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
44
apps/cfm/src/main/resources/definitions/MdCreate.json
Normal file
44
apps/cfm/src/main/resources/definitions/MdCreate.json
Normal file
@ -0,0 +1,44 @@
|
||||
{
|
||||
"type": "object",
|
||||
"title": "md",
|
||||
"required": [
|
||||
"md"
|
||||
],
|
||||
"properties": {
|
||||
"md": {
|
||||
"type": "object",
|
||||
"title": "mdprops",
|
||||
"required": [
|
||||
"mdName",
|
||||
"mdNameType"
|
||||
],
|
||||
"properties": {
|
||||
"mdName": {
|
||||
"type": "string",
|
||||
"maxLength": 45,
|
||||
"description": "Domain identifier [a-zA-Z0-9-:.]",
|
||||
"example": "TestDomain"
|
||||
},
|
||||
"mdNameType": {
|
||||
"type": "string",
|
||||
"enum": ["CHARACTERSTRING", "DOMAINNAME", "MACANDUINT", "NONE"],
|
||||
"description": "Domain identifier type",
|
||||
"example": "CHARACTERSTRING"
|
||||
},
|
||||
"mdLevel": {
|
||||
"type": "string",
|
||||
"enum": ["LEVEL0","LEVEL1","LEVEL2","LEVEL3","LEVEL4","LEVEL5","LEVEL6","LEVEL7"],
|
||||
"description": "Domain level",
|
||||
"example": "LEVEL3"
|
||||
},
|
||||
"mdNumericId": {
|
||||
"type": "uint8",
|
||||
"minimum": 1,
|
||||
"maximum": 32767,
|
||||
"description": "Optional numeric id",
|
||||
"example": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
115
apps/cfm/src/main/resources/definitions/MepCreate.json
Normal file
115
apps/cfm/src/main/resources/definitions/MepCreate.json
Normal file
@ -0,0 +1,115 @@
|
||||
{
|
||||
"type": "object",
|
||||
"title": "mep",
|
||||
"required": [
|
||||
"mep"
|
||||
],
|
||||
"properties": {
|
||||
"mep": {
|
||||
"type": "object",
|
||||
"title": "mepprops",
|
||||
"required": [
|
||||
"mepId",
|
||||
"deviceId",
|
||||
"port",
|
||||
"direction"
|
||||
],
|
||||
"properties": {
|
||||
"mepId": {
|
||||
"type": "uint16",
|
||||
"minimum": 1,
|
||||
"maximum": 8191,
|
||||
"description": "Identifier of the MEP",
|
||||
"example": 10
|
||||
},
|
||||
"deviceId": {
|
||||
"type": "string",
|
||||
"description": "The ID of a device in ONOS",
|
||||
"example": "netconf:192.168.56.10:830"
|
||||
},
|
||||
"port": {
|
||||
"type": "uint8",
|
||||
"description": "A valid port identifier for the device",
|
||||
"example": 0
|
||||
},
|
||||
"direction": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"UP_MEP",
|
||||
"DOWN_MEP"
|
||||
],
|
||||
"description": "the direction in which the MEP faces on the interface",
|
||||
"example": "DOWN_MEP"
|
||||
},
|
||||
"primary-vid": {
|
||||
"type": "uint16",
|
||||
"minimum": 0,
|
||||
"maximum": 4094,
|
||||
"description": "Primary VID of the MEP",
|
||||
"example": 101
|
||||
},
|
||||
"administrative-state": {
|
||||
"type": "boolean",
|
||||
"description": "The administrative state of the MEP",
|
||||
"example": true
|
||||
},
|
||||
"cci-enabled": {
|
||||
"type": "boolean",
|
||||
"description": "whether the MEP is or is not to generate CCMs",
|
||||
"example": true
|
||||
},
|
||||
"ccm-ltm-priority": {
|
||||
"type": "uint8",
|
||||
"minimum": 0,
|
||||
"maximum": 7,
|
||||
"description": "the priority parameter for CCMs and LTMs transmitted by the MEP",
|
||||
"example": 3
|
||||
},
|
||||
"fng-address": {
|
||||
"type": "object",
|
||||
"description": "Configuration of the fault notification generator",
|
||||
"properties": {
|
||||
"address-type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"IPV4",
|
||||
"IPV6",
|
||||
"NOT_TRANSMITTED",
|
||||
"NOT_SPECIFIED"
|
||||
],
|
||||
"description": "An address type for the FNG",
|
||||
"example": "NOT_SPECIFIED"
|
||||
},
|
||||
"ip-address": {
|
||||
"type": "string",
|
||||
"description": "An address for the FNG",
|
||||
"example": "192.168.56.100"
|
||||
}
|
||||
}
|
||||
},
|
||||
"lowest-fault-priority-defect": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"ALL_DEFECTS",
|
||||
"MAC_FD_PLUS",
|
||||
"REMOTE_FD_PLUS",
|
||||
"ERROR_FD_PLUS",
|
||||
"XCON_FD_ONLY"
|
||||
],
|
||||
"description": "the lowest priority defect that is allowed to generate a Fault Alarm",
|
||||
"example": "ALL_DEFECTS"
|
||||
},
|
||||
"defect-present-time": {
|
||||
"type": "string",
|
||||
"description": "the time that the Fault must be present before it is issued. Given as a Java duration literal",
|
||||
"example": "PT10S"
|
||||
},
|
||||
"defect-absent-time": {
|
||||
"type": "string",
|
||||
"description": "the time that the Fault must be absent before it is reset. Given as a Java duration literal",
|
||||
"example": "PT10S"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
58
apps/cfm/src/main/resources/definitions/MepLbTransmit.json
Normal file
58
apps/cfm/src/main/resources/definitions/MepLbTransmit.json
Normal file
@ -0,0 +1,58 @@
|
||||
{
|
||||
"type": "object",
|
||||
"title": "loopback",
|
||||
"required": [
|
||||
"loopback"
|
||||
],
|
||||
"properties": {
|
||||
"loopback": {
|
||||
"type": "object",
|
||||
"title": "lbprops",
|
||||
"required": [
|
||||
"remoteMepId"
|
||||
],
|
||||
"properties": {
|
||||
"numberMessages": {
|
||||
"type": "uint16",
|
||||
"minimum": 0,
|
||||
"maximum": 32767,
|
||||
"description": "The number of LBM transmissions in a session",
|
||||
"example": 1
|
||||
},
|
||||
"remoteMepId": {
|
||||
"type": "uint16",
|
||||
"minimum": 1,
|
||||
"maximum": 8191,
|
||||
"description": "remote Mep will be identified by either a MacAddress or a MEPId. This is for Mep Id",
|
||||
"example": 20
|
||||
},
|
||||
"dataTlvHex": {
|
||||
"type": "string",
|
||||
"maxLength": 64,
|
||||
"description": "TLV data that will be sent encoded as hexadecimal (lower case, colon separated bytes)",
|
||||
"example": "61:62:63:64:63:62:61"
|
||||
},
|
||||
"priority": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"PRIO0",
|
||||
"PRIO1",
|
||||
"PRIO2",
|
||||
"PRIO3",
|
||||
"PRIO4",
|
||||
"PRIO5",
|
||||
"PRIO6",
|
||||
"PRIO7"
|
||||
],
|
||||
"description": "The priority parameter to be used in the transmitted LBMs",
|
||||
"example": "PRIO0"
|
||||
},
|
||||
"vlanDropEligible": {
|
||||
"type": "boolean",
|
||||
"description": "Whether the drop eligible parameter to be used in the transmitted LBMs",
|
||||
"example": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
38
apps/cfm/src/main/resources/definitions/MepLtTransmit.json
Normal file
38
apps/cfm/src/main/resources/definitions/MepLtTransmit.json
Normal file
@ -0,0 +1,38 @@
|
||||
{
|
||||
"type": "object",
|
||||
"title": "linktrace",
|
||||
"required": [
|
||||
"linktrace"
|
||||
],
|
||||
"properties": {
|
||||
"linktrace": {
|
||||
"type": "object",
|
||||
"title": "ltprops",
|
||||
"required": [
|
||||
"remoteMepId"
|
||||
],
|
||||
"properties": {
|
||||
"remoteMepId": {
|
||||
"type": "uint16",
|
||||
"minimum": 1,
|
||||
"maximum": 8191,
|
||||
"description": "remote Mep will be identified by either a MacAddress or a MEPId. This is for Mep Id",
|
||||
"example": 20
|
||||
},
|
||||
"transmitLtmFlags": {
|
||||
"type": "string",
|
||||
"maxLength": 64,
|
||||
"description": "Ltm flags to transmit. The only flag supported is 'use-fdb-only'",
|
||||
"example": "use-fdb-only"
|
||||
},
|
||||
"defaultTtl": {
|
||||
"type": "uint16",
|
||||
"minimum": 1,
|
||||
"maximum": 32767,
|
||||
"description": "The time to live of the Ltm packet",
|
||||
"example": 64
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -45,7 +45,7 @@
|
||||
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
|
||||
<init-param>
|
||||
<param-name>javax.ws.rs.Application</param-name>
|
||||
<param-value>org.onosproject.cfm.impl.CfmWebApplication</param-value>
|
||||
<param-value>org.onosproject.cfm.rest.CfmWebApplication</param-value>
|
||||
</init-param>
|
||||
<load-on-startup>1</load-on-startup>
|
||||
</servlet>
|
||||
|
@ -16,6 +16,7 @@
|
||||
package org.onosproject.cfm.impl;
|
||||
|
||||
import org.glassfish.jersey.server.ResourceConfig;
|
||||
import org.onosproject.cfm.rest.CfmWebApplication;
|
||||
import org.onosproject.rest.resources.ResourceTest;
|
||||
|
||||
/**
|
||||
|
@ -43,7 +43,7 @@ public interface LossMeasurementCreate extends MeasurementCreateBase {
|
||||
Collection<CounterOption> countersEnabled();
|
||||
|
||||
/**
|
||||
* This object specifies the availability measurement interval in minutes.
|
||||
* This object specifies the availability measurement interval.
|
||||
* A measurement interval of 15 minutes is to be supported, other intervals can be supported
|
||||
* @return A java Duration
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user