[ONOS-3648] Implement REST API for collecting system metrics

- Implement REST API for gathering system metrics
- Add unit test for REST API
- Add swagger doc for REST API

Change-Id: Iedd21a5f6ed14d595e4d35c1fa08270b48a5031e
diff --git a/apps/cpman/src/main/resources/definitions/CpuMetricsPost.json b/apps/cpman/src/main/resources/definitions/CpuMetricsPost.json
new file mode 100644
index 0000000..9f52429
--- /dev/null
+++ b/apps/cpman/src/main/resources/definitions/CpuMetricsPost.json
@@ -0,0 +1,37 @@
+{
+  "type": "object",
+  "required": [
+    "cpuLoad",
+    "totalCpuTime",
+    "sysCpuTime",
+    "userCpuTime",
+    "cpuIdleTime"
+  ],
+  "properties": {
+    "cpuLoad": {
+      "type": "integer",
+      "format": "int64",
+      "example": "50"
+    },
+    "totalCpuTime": {
+      "type": "integer",
+      "format": "int64",
+      "example": "2000"
+    },
+    "sysCpuTime": {
+      "type": "integer",
+      "format": "int64",
+      "example": "2000"
+    },
+    "userCpuTime": {
+      "type": "integer",
+      "format": "int64",
+      "example": "2000"
+    },
+    "cpuIdleTime": {
+      "type": "integer",
+      "format": "int64",
+      "example": "2000"
+    }
+  }
+}
\ No newline at end of file
diff --git a/apps/cpman/src/main/resources/definitions/DiskMetricsPost.json b/apps/cpman/src/main/resources/definitions/DiskMetricsPost.json
new file mode 100644
index 0000000..fe0dab1
--- /dev/null
+++ b/apps/cpman/src/main/resources/definitions/DiskMetricsPost.json
@@ -0,0 +1,19 @@
+{
+  "type": "object",
+  "required": [
+    "readBytes",
+    "writeBytes"
+  ],
+  "properties": {
+    "readBytes": {
+      "type": "integer",
+      "format": "int64",
+      "example": "500"
+    },
+    "writeBytes": {
+      "type": "integer",
+      "format": "int64",
+      "example": "300"
+    }
+  }
+}
\ No newline at end of file
diff --git a/apps/cpman/src/main/resources/definitions/MemoryMetricsPost.json b/apps/cpman/src/main/resources/definitions/MemoryMetricsPost.json
new file mode 100644
index 0000000..ab815da
--- /dev/null
+++ b/apps/cpman/src/main/resources/definitions/MemoryMetricsPost.json
@@ -0,0 +1,31 @@
+{
+  "type": "object",
+  "required": [
+    "memoryUsedPercentage",
+    "memoryFreePercentage",
+    "memoryUsed",
+    "memoryFree"
+  ],
+  "properties": {
+    "memoryUsedPercentage": {
+      "type": "integer",
+      "format": "int64",
+      "example": "30"
+    },
+    "memoryFreePercentage": {
+      "type": "integer",
+      "format": "int64",
+      "example": "70"
+    },
+    "memoryUsed": {
+      "type": "integer",
+      "format": "int64",
+      "example": "1024"
+    },
+    "memoryFree": {
+      "type": "integer",
+      "format": "int64",
+      "example": "2048"
+    }
+  }
+}
\ No newline at end of file
diff --git a/apps/cpman/src/main/resources/definitions/NetworkMetricsPost.json b/apps/cpman/src/main/resources/definitions/NetworkMetricsPost.json
new file mode 100644
index 0000000..f9ad7d3
--- /dev/null
+++ b/apps/cpman/src/main/resources/definitions/NetworkMetricsPost.json
@@ -0,0 +1,31 @@
+{
+  "type": "object",
+  "required": [
+    "incomingBytes",
+    "outgoingBytes",
+    "incomingPackets",
+    "outgoingPackets"
+  ],
+  "properties": {
+    "incomingBytes": {
+      "type": "integer",
+      "format": "int64",
+      "example": "1024"
+    },
+    "outgoingBytes": {
+      "type": "integer",
+      "format": "int64",
+      "example": "1024"
+    },
+    "incomingPackets": {
+      "type": "integer",
+      "format": "int64",
+      "example": "1000"
+    },
+    "outgoingPackets": {
+      "type": "integer",
+      "format": "int64",
+      "example": "2000"
+    }
+  }
+}
\ No newline at end of file
diff --git a/apps/cpman/src/main/resources/definitions/SystemSpecsPost.json b/apps/cpman/src/main/resources/definitions/SystemSpecsPost.json
new file mode 100644
index 0000000..fc4fc16
--- /dev/null
+++ b/apps/cpman/src/main/resources/definitions/SystemSpecsPost.json
@@ -0,0 +1,31 @@
+{
+  "type": "object",
+  "required": [
+    "numOfCores",
+    "numOfCpus",
+    "cpuSpeed",
+    "totalMemory"
+  ],
+  "properties": {
+    "numOfCores": {
+      "type": "integer",
+      "format": "int64",
+      "example": "6"
+    },
+    "numOfCpus": {
+      "type": "integer",
+      "format": "int64",
+      "example": "2"
+    },
+    "cpuSpeed": {
+      "type": "integer",
+      "format": "int64",
+      "example": "2048"
+    },
+    "totalMemory": {
+      "type": "integer",
+      "format": "int64",
+      "example": "4096"
+    }
+  }
+}
\ No newline at end of file