ONOS-3607 Add Criteria model for Flows REST Api with field description.
Change Model parsing in Swagger mojo for whitspaces stripping.
Also, readding onos-maven-plugin to root pom build temporarily.
Change-Id: I8995c74d762a3e59acebe15cc600a0f1bfa41411
diff --git a/pom.xml b/pom.xml
index 8bae57b..8fdcacb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -54,6 +54,7 @@
<module>tools/package/archetypes</module>
<module>tools/package/branding</module>
+ <module>tools/package/maven-plugin</module>
</modules>
<url>http://onosproject.org/</url>
@@ -78,7 +79,7 @@
<netty4.version>4.0.23.Final</netty4.version>
<copycat.version>0.5.1.onos</copycat.version>
<openflowj.version>0.9.1.onos</openflowj.version>
- <onos-maven-plugin.version>1.7</onos-maven-plugin.version>
+ <onos-maven-plugin.version>1.8-SNAPSHOT</onos-maven-plugin.version>
<karaf.version>3.0.3</karaf.version>
<jersey.version>1.19</jersey.version>
<!-- TODO argLine was originally added maven-surfire-plugin configuration
diff --git a/tools/package/maven-plugin/pom.xml b/tools/package/maven-plugin/pom.xml
index e8f1b9e..e704c5f 100644
--- a/tools/package/maven-plugin/pom.xml
+++ b/tools/package/maven-plugin/pom.xml
@@ -91,6 +91,11 @@
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ <version>2.5</version>
+ </dependency>
</dependencies>
<build>
diff --git a/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosSwaggerMojo.java b/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosSwaggerMojo.java
index 314d61c..4618cd0 100644
--- a/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosSwaggerMojo.java
+++ b/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosSwaggerMojo.java
@@ -18,9 +18,9 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.base.Charsets;
import com.google.common.io.ByteStreams;
import com.google.common.io.Files;
+import com.google.gson.JsonParser;
import com.thoughtworks.qdox.JavaProjectBuilder;
import com.thoughtworks.qdox.model.DocletTag;
import com.thoughtworks.qdox.model.JavaAnnotation;
@@ -36,6 +36,7 @@
import org.apache.maven.project.MavenProject;
import java.io.File;
+import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
@@ -51,6 +52,7 @@
@Mojo(name = "swagger", defaultPhase = LifecyclePhase.GENERATE_SOURCES)
public class OnosSwaggerMojo extends AbstractMojo {
private final ObjectMapper mapper = new ObjectMapper();
+ private final JsonParser jsonParser = new JsonParser();
private static final String JSON_FILE = "swagger.json";
private static final String GEN_SRC = "generated-sources";
@@ -291,10 +293,7 @@
try {
File config = new File(definitionsDirectory.getAbsolutePath() + "/"
+ param + ".json");
- String lines = Files.readLines(config, Charsets.UTF_8).stream().reduce((t, u) -> t + u).
- get();
- lines = lines.replaceAll("\\s+", "");
- definitions.putPOJO(param, lines);
+ definitions.putPOJO(param, jsonParser.parse(new FileReader(config)));
} catch (IOException e) {
e.printStackTrace();
}
diff --git a/web/api/src/main/resources/definitions/Flows.json b/web/api/src/main/resources/definitions/Flows.json
index c803fdb..e3fa3f0 100644
--- a/web/api/src/main/resources/definitions/Flows.json
+++ b/web/api/src/main/resources/definitions/Flows.json
@@ -155,19 +155,214 @@
"items": {
"type": "object",
"title": "criteria",
- "required": [
- "type",
- "ethType"
- ],
"properties": {
"type": {
"type": "string",
+ "description":"Ethernet field name",
"example": "ETH_TYPE"
},
"ethType": {
+ "type": "int64",
+ "format": "int64",
+ "example": "0x88cc",
+ "description":"Ethernet frame type"
+ },
+ "mac": {
+ "type": "string",
+ "example": "00:00:11:00:00:01"
+ },
+ "port": {
+ "type": "int64",
+ "format": "int64",
+ "example": 1,
+ "description":"Match port"
+ },
+ "metadata": {
+ "type": "Hex16",
+ "format": "Hex16",
+ "example": "0xabcdL",
+ "description":"Metadata passed between tables"
+ },
+ "vlanId": {
+ "type": "uint16",
+ "format": "uint16",
+ "example": "0x1000"
+ },
+ "priority": {
+ "type": "int64",
+ "format": "int64",
+ "example": 1,
+ "description":"VLAN priority."
+ },
+ "ipDscp": {
+ "type": "byte",
+ "format": "byte",
+ "description":"IP DSCP (6 bits in ToS field)"
+ },
+ "ipEcn": {
+ "type": "byte",
+ "format": "byte",
+ "description":"IP ECN (2 bits in ToS field)."
+ },
+ "protocol": {
+ "type": "uint16",
+ "format": "uint16",
+ "example": 1,
+ "description":"IP protocol"
+ },
+ "ip": {
+ "type": "string",
+ "example": "10.1.1.0/24",
+ "description":"IP source address"
+ },
+ "tcpPort": {
+ "type": "integer",
+ "format": "uint16",
+ "example": 1,
+ "description":"TCP source address"
+ },
+ "udpPort": {
+ "type": "uint16",
+ "format": "uint16",
+ "example": 1,
+ "description":"UDP source address"
+ },
+ "sctpPort": {
+ "type": "uint16",
+ "format": "uint16",
+ "example": 1,
+ "description":"SCTP source address"
+ },
+ "icmpType": {
+ "type": "uint16",
+ "format": "uint16",
+ "example": 1,
+ "description":"Internet Control Message Protocol for IPV4 code (RFC0792)"
+ },
+ "icmpCode": {
+ "type": "uint16",
+ "format": "uint16",
+ "example": 1,
+ "description":"Internet Control Message Protocol for IPV4 code (RFC0792)"
+ },
+ "flowLabel": {
+ "type": "Hex16",
+ "format": "Hex16",
+ "example": "0xffffe",
+ "description":"IPv6 Flow Label (RFC 6437)"
+ },
+ "icmpv6Type": {
+ "type": "uint16",
+ "format": "uint16",
+ "example": 1,
+ "description":"Internet Control Message Protocol for IPV6 type (RFC2463)"
+ },
+ "icmpv6Code": {
+ "type": "uint16",
+ "format": "uint16",
+ "example": 1,
+ "description":"Internet Control Message Protocol for IPV6 code (RFC2463)"
+ },
+ "targetAddress": {
+ "type": "String",
+ "example": "10.1.1.0/24",
+ "description":"IPv6 Neighbor discovery target address"
+ },
+ "label": {
+ "type": "int32",
+ "format": "int32",
+ "example": 1,
+ "description":"MPLS label"
+ },
+ "exthdrFlags": {
+ "type": "int64",
+ "format": "int64",
+ "example": 1,
+ "description":"IPv6 extension header pseudo-field"
+ },
+ "lambda": {
+ "type": "int64",
+ "format": "int64",
+ "example": 1,
+ "description":"wavelength abstraction"
+ },
+ "gridType": {
+ "type": "String",
+ "example": "DWDM",
+ "description":"Type of wavelength grid"
+ },
+ "channelSpacing": {
+ "type": "int64",
+ "format": "int64",
+ "example": 100,
+ "description":"Optical channel spacing"
+ },
+ "spacingMultiplier": {
"type": "integer",
"format": "int64",
- "example": "0x88cc"
+ "example": 4,
+ "description":"Optical channel spacing multiplier"
+ },
+ "slotGranularity": {
+ "type": "int64",
+ "format": "int64",
+ "example": 8
+ },
+ "ochSignalId": {
+ "type": "integer",
+ "format": "int64",
+ "example": 1,
+ "description":"Optical channel signal ID"
+ },
+ "tunnelId": {
+ "type": "int64",
+ "format": "int64",
+ "example": 5,
+ "description":"Tunnel ID"
+ },
+ "ochSignalType": {
+ "type": "int64",
+ "format": "int64",
+ "example": 1,
+ "description":"Optical channel signal type"
+ },
+ "oduSignalId": {
+ "type": "int64",
+ "format": "int64",
+ "example": 1,
+ "description":"ODU (Optical channel Data Unit) signal ID."
+ },
+ "tributaryPortNumber": {
+ "type": "int64",
+ "format": "int64",
+ "example": 11,
+ "description":"OPU (Optical channel Payload Unit) port number."
+ },
+ "tributarySlotLen": {
+ "type": "int64",
+ "format": "int64",
+ "example": 80,
+ "description":"OPU (Optical channel Payload Unit) slot length."
+ },
+ "tributarySlotBitmap": {
+ "type": "array",
+ "title": "tributarySlotBitmap",
+ "description":"OPU (Optical channel Payload Unit) slot bitmap.",
+ "required": [
+ "byte",
+ "port"
+ ],
+ "items": {
+ "type": "byte",
+ "title": "byte",
+ "example": 1
+ }
+ },
+ "oduSignalType": {
+ "type": "int64",
+ "format": "int64",
+ "example": 4,
+ "description":"ODU (Optical channel Data Unit) signal type."
}
}
}
diff --git a/web/api/src/main/resources/definitions/FlowsPost.json b/web/api/src/main/resources/definitions/FlowsPost.json
index 54df923..f265070 100644
--- a/web/api/src/main/resources/definitions/FlowsPost.json
+++ b/web/api/src/main/resources/definitions/FlowsPost.json
@@ -78,19 +78,214 @@
"items": {
"type": "object",
"title": "criteria",
- "required": [
- "type",
- "ethType"
- ],
"properties": {
"type": {
"type": "string",
+ "description":"Ethernet field name",
"example": "ETH_TYPE"
},
"ethType": {
+ "type": "int64",
+ "format": "int64",
+ "example": "0x88cc",
+ "description":"Ethernet frame type"
+ },
+ "mac": {
+ "type": "string",
+ "example": "00:00:11:00:00:01"
+ },
+ "port": {
+ "type": "int64",
+ "format": "int64",
+ "example": 1,
+ "description":"Match port"
+ },
+ "metadata": {
+ "type": "Hex16",
+ "format": "Hex16",
+ "example": "0xabcdL",
+ "description":"Metadata passed between tables"
+ },
+ "vlanId": {
+ "type": "uint16",
+ "format": "uint16",
+ "example": "0x1000"
+ },
+ "priority": {
+ "type": "int64",
+ "format": "int64",
+ "example": 1,
+ "description":"VLAN priority."
+ },
+ "ipDscp": {
+ "type": "byte",
+ "format": "byte",
+ "description":"IP DSCP (6 bits in ToS field)"
+ },
+ "ipEcn": {
+ "type": "byte",
+ "format": "byte",
+ "description":"IP ECN (2 bits in ToS field)."
+ },
+ "protocol": {
+ "type": "uint16",
+ "format": "uint16",
+ "example": 1,
+ "description":"IP protocol"
+ },
+ "ip": {
+ "type": "string",
+ "example": "10.1.1.0/24",
+ "description":"IP source address"
+ },
+ "tcpPort": {
+ "type": "integer",
+ "format": "uint16",
+ "example": 1,
+ "description":"TCP source address"
+ },
+ "udpPort": {
+ "type": "uint16",
+ "format": "uint16",
+ "example": 1,
+ "description":"UDP source address"
+ },
+ "sctpPort": {
+ "type": "uint16",
+ "format": "uint16",
+ "example": 1,
+ "description":"SCTP source address"
+ },
+ "icmpType": {
+ "type": "uint16",
+ "format": "uint16",
+ "example": 1,
+ "description":"Internet Control Message Protocol for IPV4 code (RFC0792)"
+ },
+ "icmpCode": {
+ "type": "uint16",
+ "format": "uint16",
+ "example": 1,
+ "description":"Internet Control Message Protocol for IPV4 code (RFC0792)"
+ },
+ "flowLabel": {
+ "type": "Hex16",
+ "format": "Hex16",
+ "example": "0xffffe",
+ "description":"IPv6 Flow Label (RFC 6437)"
+ },
+ "icmpv6Type": {
+ "type": "uint16",
+ "format": "uint16",
+ "example": 1,
+ "description":"Internet Control Message Protocol for IPV6 type (RFC2463)"
+ },
+ "icmpv6Code": {
+ "type": "uint16",
+ "format": "uint16",
+ "example": 1,
+ "description":"Internet Control Message Protocol for IPV6 code (RFC2463)"
+ },
+ "targetAddress": {
+ "type": "String",
+ "example": "10.1.1.0/24",
+ "description":"IPv6 Neighbor discovery target address"
+ },
+ "label": {
+ "type": "int32",
+ "format": "int32",
+ "example": 1,
+ "description":"MPLS label"
+ },
+ "exthdrFlags": {
+ "type": "int64",
+ "format": "int64",
+ "example": 1,
+ "description":"IPv6 extension header pseudo-field"
+ },
+ "lambda": {
+ "type": "int64",
+ "format": "int64",
+ "example": 1,
+ "description":"wavelength abstraction"
+ },
+ "gridType": {
+ "type": "String",
+ "example": "DWDM",
+ "description":"Type of wavelength grid"
+ },
+ "channelSpacing": {
+ "type": "int64",
+ "format": "int64",
+ "example": 100,
+ "description":"Optical channel spacing"
+ },
+ "spacingMultiplier": {
"type": "integer",
"format": "int64",
- "example": "0x88cc"
+ "example": 4,
+ "description":"Optical channel spacing multiplier"
+ },
+ "slotGranularity": {
+ "type": "int64",
+ "format": "int64",
+ "example": 8
+ },
+ "ochSignalId": {
+ "type": "integer",
+ "format": "int64",
+ "example": 1,
+ "description":"Optical channel signal ID"
+ },
+ "tunnelId": {
+ "type": "int64",
+ "format": "int64",
+ "example": 5,
+ "description":"Tunnel ID"
+ },
+ "ochSignalType": {
+ "type": "int64",
+ "format": "int64",
+ "example": 1,
+ "description":"Optical channel signal type"
+ },
+ "oduSignalId": {
+ "type": "int64",
+ "format": "int64",
+ "example": 1,
+ "description":"ODU (Optical channel Data Unit) signal ID."
+ },
+ "tributaryPortNumber": {
+ "type": "int64",
+ "format": "int64",
+ "example": 11,
+ "description":"OPU (Optical channel Payload Unit) port number."
+ },
+ "tributarySlotLen": {
+ "type": "int64",
+ "format": "int64",
+ "example": 80,
+ "description":"OPU (Optical channel Payload Unit) slot length."
+ },
+ "tributarySlotBitmap": {
+ "type": "array",
+ "title": "tributarySlotBitmap",
+ "description":"OPU (Optical channel Payload Unit) slot bitmap.",
+ "required": [
+ "byte",
+ "port"
+ ],
+ "items": {
+ "type": "byte",
+ "title": "byte",
+ "example": 1
+ }
+ },
+ "oduSignalType": {
+ "type": "int64",
+ "format": "int64",
+ "example": 4,
+ "description":"ODU (Optical channel Data Unit) signal type."
}
}
}