[ONOS-3663] Add swagger doc for control metrics query REST API

Change-Id: Id8b667dabb64d11149b43cfeead57cf5ebd6997e
diff --git a/apps/cpman/app/src/main/java/org/onosproject/cpman/rest/ControlMetricsWebResource.java b/apps/cpman/app/src/main/java/org/onosproject/cpman/rest/ControlMetricsWebResource.java
index d6b454b..12e1083 100644
--- a/apps/cpman/app/src/main/java/org/onosproject/cpman/rest/ControlMetricsWebResource.java
+++ b/apps/cpman/app/src/main/java/org/onosproject/cpman/rest/ControlMetricsWebResource.java
@@ -59,6 +59,7 @@
      * Returns control message metrics of all devices.
      *
      * @return array of all control message metrics
+     * @onos.rsModel ControlMessageMetrics
      */
     @GET
     @Path("messages")
@@ -86,6 +87,7 @@
      *
      * @param deviceId device identification
      * @return control message metrics of a given device
+     * @onos.rsModel ControlMessageMetric
      */
     @GET
     @Produces(MediaType.APPLICATION_JSON)
@@ -102,6 +104,7 @@
      * Returns cpu metrics.
      *
      * @return cpu metrics
+     * @onos.rsModel CpuMetrics
      */
     @GET
     @Path("cpu_metrics")
@@ -116,6 +119,7 @@
      * Returns memory metrics.
      *
      * @return memory metrics
+     * @onos.rsModel MemoryMetrics
      */
     @GET
     @Path("memory_metrics")
@@ -130,6 +134,7 @@
      * Returns disk metrics of all resources.
      *
      * @return disk metrics of all resources
+     * @onos.rsModel DiskMetrics
      */
     @GET
     @Path("disk_metrics")
@@ -155,6 +160,7 @@
      * Returns network metrics of all resources.
      *
      * @return network metrics of all resources
+     * @onos.rsModel NetworkMetrics
      */
     @GET
     @Path("network_metrics")
diff --git a/apps/cpman/app/src/main/resources/definitions/ControlMessageMetric.json b/apps/cpman/app/src/main/resources/definitions/ControlMessageMetric.json
new file mode 100644
index 0000000..89327c9
--- /dev/null
+++ b/apps/cpman/app/src/main/resources/definitions/ControlMessageMetric.json
@@ -0,0 +1,162 @@
+{
+  "type": "object",
+  "title": "metrics",
+  "required": [
+    "metrics"
+  ],
+  "properties": {
+    "metrics": {
+      "type": "array",
+      "xml": {
+        "name": "metrics",
+        "wrapped": true
+      },
+      "items": {
+        "type": "object",
+        "title": "metrics",
+        "required": [
+          "inboundPacket",
+          "outboundPacket",
+          "flowModPacket",
+          "flowRemovedPacket",
+          "requestPacket",
+          "replyPacket"
+        ],
+        "properties": {
+          "inboundPacket": {
+            "type": "object",
+            "required": [
+              "time",
+              "latest",
+              "average"
+            ],
+            "properties": {
+              "time": {
+                "type": "integer",
+                "format": "int64"
+              },
+              "latest": {
+                "type": "integer",
+                "format": "int64"
+              },
+              "average": {
+                "type": "integer",
+                "format": "int64"
+              }
+            }
+          },
+          "outboundPacket": {
+            "type": "object",
+            "required": [
+              "time",
+              "latest",
+              "average"
+            ],
+            "properties": {
+              "time": {
+                "type": "integer",
+                "format": "int64"
+              },
+              "latest": {
+                "type": "integer",
+                "format": "int64"
+              },
+              "average": {
+                "type": "integer",
+                "format": "int64"
+              }
+            }
+          },
+          "flowModPacket": {
+            "type": "object",
+            "required": [
+              "time",
+              "latest",
+              "average"
+            ],
+            "properties": {
+              "time": {
+                "type": "integer",
+                "format": "int64"
+              },
+              "latest": {
+                "type": "integer",
+                "format": "int64"
+              },
+              "average": {
+                "type": "integer",
+                "format": "int64"
+              }
+            }
+          },
+          "flowRemovedPacket": {
+            "type": "object",
+            "required": [
+              "time",
+              "latest",
+              "average"
+            ],
+            "properties": {
+              "time": {
+                "type": "integer",
+                "format": "int64"
+              },
+              "latest": {
+                "type": "integer",
+                "format": "int64"
+              },
+              "average": {
+                "type": "integer",
+                "format": "int64"
+              }
+            }
+          },
+          "requestPacket": {
+            "type": "object",
+            "required": [
+              "time",
+              "latest",
+              "average"
+            ],
+            "properties": {
+              "time": {
+                "type": "integer",
+                "format": "int64"
+              },
+              "latest": {
+                "type": "integer",
+                "format": "int64"
+              },
+              "average": {
+                "type": "integer",
+                "format": "int64"
+              }
+            }
+          },
+          "replyPacket": {
+            "type": "object",
+            "required": [
+              "time",
+              "latest",
+              "average"
+            ],
+            "properties": {
+              "time": {
+                "type": "integer",
+                "format": "int64"
+              },
+              "latest": {
+                "type": "integer",
+                "format": "int64"
+              },
+              "average": {
+                "type": "integer",
+                "format": "int64"
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/apps/cpman/app/src/main/resources/definitions/ControlMessageMetrics.json b/apps/cpman/app/src/main/resources/definitions/ControlMessageMetrics.json
new file mode 100644
index 0000000..f5b50f5
--- /dev/null
+++ b/apps/cpman/app/src/main/resources/definitions/ControlMessageMetrics.json
@@ -0,0 +1,183 @@
+{
+  "type": "object",
+  "title": "devices",
+  "required": [
+    "devices"
+  ],
+  "properties": {
+    "devices": {
+      "type": "object",
+      "required": [
+        "name",
+        "value"
+      ],
+      "properties": {
+        "name": {
+          "type": "string"
+        },
+        "value": {
+          "type": "object",
+          "title": "metrics",
+          "required": [
+            "metrics"
+          ],
+          "properties": {
+            "metrics": {
+              "type": "array",
+              "xml": {
+                "name": "metrics",
+                "wrapped": true
+              },
+              "items": {
+                "type": "object",
+                "title": "metrics",
+                "required": [
+                  "inboundPacket",
+                  "outboundPacket",
+                  "flowModPacket",
+                  "flowRemovedPacket",
+                  "requestPacket",
+                  "replyPacket"
+                ],
+                "properties": {
+                  "inboundPacket": {
+                    "type": "object",
+                    "required": [
+                      "time",
+                      "latest",
+                      "average"
+                    ],
+                    "properties": {
+                      "time": {
+                        "type": "integer",
+                        "format": "int64"
+                      },
+                      "latest": {
+                        "type": "integer",
+                        "format": "int64"
+                      },
+                      "average": {
+                        "type": "integer",
+                        "format": "int64"
+                      }
+                    }
+                  },
+                  "outboundPacket": {
+                    "type": "object",
+                    "required": [
+                      "time",
+                      "latest",
+                      "average"
+                    ],
+                    "properties": {
+                      "time": {
+                        "type": "integer",
+                        "format": "int64"
+                      },
+                      "latest": {
+                        "type": "integer",
+                        "format": "int64"
+                      },
+                      "average": {
+                        "type": "integer",
+                        "format": "int64"
+                      }
+                    }
+                  },
+                  "flowModPacket": {
+                    "type": "object",
+                    "required": [
+                      "time",
+                      "latest",
+                      "average"
+                    ],
+                    "properties": {
+                      "time": {
+                        "type": "integer",
+                        "format": "int64"
+                      },
+                      "latest": {
+                        "type": "integer",
+                        "format": "int64"
+                      },
+                      "average": {
+                        "type": "integer",
+                        "format": "int64"
+                      }
+                    }
+                  },
+                  "flowRemovedPacket": {
+                    "type": "object",
+                    "required": [
+                      "time",
+                      "latest",
+                      "average"
+                    ],
+                    "properties": {
+                      "time": {
+                        "type": "integer",
+                        "format": "int64"
+                      },
+                      "latest": {
+                        "type": "integer",
+                        "format": "int64"
+                      },
+                      "average": {
+                        "type": "integer",
+                        "format": "int64"
+                      }
+                    }
+                  },
+                  "requestPacket": {
+                    "type": "object",
+                    "required": [
+                      "time",
+                      "latest",
+                      "average"
+                    ],
+                    "properties": {
+                      "time": {
+                        "type": "integer",
+                        "format": "int64"
+                      },
+                      "latest": {
+                        "type": "integer",
+                        "format": "int64"
+                      },
+                      "average": {
+                        "type": "integer",
+                        "format": "int64"
+                      }
+                    }
+                  },
+                  "replyPacket": {
+                    "type": "object",
+                    "required": [
+                      "time",
+                      "latest",
+                      "average"
+                    ],
+                    "properties": {
+                      "time": {
+                        "type": "integer",
+                        "format": "int64"
+                      },
+                      "latest": {
+                        "type": "integer",
+                        "format": "int64"
+                      },
+                      "average": {
+                        "type": "integer",
+                        "format": "int64"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/apps/cpman/app/src/main/resources/definitions/CpuMetrics.json b/apps/cpman/app/src/main/resources/definitions/CpuMetrics.json
new file mode 100644
index 0000000..f941ea9
--- /dev/null
+++ b/apps/cpman/app/src/main/resources/definitions/CpuMetrics.json
@@ -0,0 +1,139 @@
+{
+  "type": "object",
+  "title": "metrics",
+  "required": [
+    "metrics"
+  ],
+  "properties": {
+    "metrics": {
+      "type": "array",
+      "xml": {
+        "name": "metrics",
+        "wrapped": true
+      },
+      "items": {
+        "type": "object",
+        "title": "metrics",
+        "required": [
+          "cpuLoad",
+          "totalCpuTime",
+          "sysCpuTime",
+          "userCpuTime",
+          "cpuIdleTime"
+        ],
+        "properties": {
+          "cpuLoad": {
+            "type": "object",
+            "required": [
+              "time",
+              "latest",
+              "average"
+            ],
+            "properties": {
+              "time": {
+                "type": "integer",
+                "format": "int64"
+              },
+              "latest": {
+                "type": "integer",
+                "format": "int64"
+              },
+              "average": {
+                "type": "integer",
+                "format": "int64"
+              }
+            }
+          },
+          "totalCpuTime": {
+            "type": "object",
+            "required": [
+              "time",
+              "latest",
+              "average"
+            ],
+            "properties": {
+              "time": {
+                "type": "integer",
+                "format": "int64"
+              },
+              "latest": {
+                "type": "integer",
+                "format": "int64"
+              },
+              "average": {
+                "type": "integer",
+                "format": "int64"
+              }
+            }
+          },
+          "sysCpuTime": {
+            "type": "object",
+            "required": [
+              "time",
+              "latest",
+              "average"
+            ],
+            "properties": {
+              "time": {
+                "type": "integer",
+                "format": "int64"
+              },
+              "latest": {
+                "type": "integer",
+                "format": "int64"
+              },
+              "average": {
+                "type": "integer",
+                "format": "int64"
+              }
+            }
+          },
+          "userCpuTime": {
+            "type": "object",
+            "required": [
+              "time",
+              "latest",
+              "average"
+            ],
+            "properties": {
+              "time": {
+                "type": "integer",
+                "format": "int64"
+              },
+              "latest": {
+                "type": "integer",
+                "format": "int64"
+              },
+              "average": {
+                "type": "integer",
+                "format": "int64"
+              }
+            }
+          },
+          "cpuIdleTime": {
+            "type": "object",
+            "required": [
+              "time",
+              "latest",
+              "average"
+            ],
+            "properties": {
+              "time": {
+                "type": "integer",
+                "format": "int64"
+              },
+              "latest": {
+                "type": "integer",
+                "format": "int64"
+              },
+              "average": {
+                "type": "integer",
+                "format": "int64"
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/apps/cpman/app/src/main/resources/definitions/DiskMetrics.json b/apps/cpman/app/src/main/resources/definitions/DiskMetrics.json
new file mode 100644
index 0000000..6203eb8
--- /dev/null
+++ b/apps/cpman/app/src/main/resources/definitions/DiskMetrics.json
@@ -0,0 +1,91 @@
+{
+  "type": "object",
+  "title": "disks",
+  "required": [
+    "disks"
+  ],
+  "properties": {
+    "disks": {
+      "type": "object",
+      "required": [
+        "name",
+        "value"
+      ],
+      "properties": {
+        "name": {
+          "type": "string"
+        },
+        "value": {
+          "type": "object",
+          "title": "metrics",
+          "required": [
+            "metrics"
+          ],
+          "properties": {
+            "metrics": {
+              "type": "array",
+              "xml": {
+                "name": "metrics",
+                "wrapped": true
+              },
+              "items": {
+                "type": "object",
+                "title": "metrics",
+                "required": [
+                  "readBytes",
+                  "writeBytes"
+                ],
+                "properties": {
+                  "readBytes": {
+                    "type": "object",
+                    "required": [
+                      "time",
+                      "latest",
+                      "average"
+                    ],
+                    "properties": {
+                      "time": {
+                        "type": "integer",
+                        "format": "int64"
+                      },
+                      "latest": {
+                        "type": "integer",
+                        "format": "int64"
+                      },
+                      "average": {
+                        "type": "integer",
+                        "format": "int64"
+                      }
+                    }
+                  },
+                  "writeBytes": {
+                    "type": "object",
+                    "required": [
+                      "time",
+                      "latest",
+                      "average"
+                    ],
+                    "properties": {
+                      "time": {
+                        "type": "integer",
+                        "format": "int64"
+                      },
+                      "latest": {
+                        "type": "integer",
+                        "format": "int64"
+                      },
+                      "average": {
+                        "type": "integer",
+                        "format": "int64"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/apps/cpman/app/src/main/resources/definitions/MemoryMetrics.json b/apps/cpman/app/src/main/resources/definitions/MemoryMetrics.json
new file mode 100644
index 0000000..fd7e1c4
--- /dev/null
+++ b/apps/cpman/app/src/main/resources/definitions/MemoryMetrics.json
@@ -0,0 +1,116 @@
+{
+  "type": "object",
+  "title": "metrics",
+  "required": [
+    "metrics"
+  ],
+  "properties": {
+    "metrics": {
+      "type": "array",
+      "xml": {
+        "name": "metrics",
+        "wrapped": true
+      },
+      "items": {
+        "type": "object",
+        "title": "metrics",
+        "required": [
+          "memoryUsedRatio",
+          "memoryFreeRatio",
+          "memoryUsed",
+          "memoryFree"
+        ],
+        "properties": {
+          "memoryUsedRatio": {
+            "type": "object",
+            "required": [
+              "time",
+              "latest",
+              "average"
+            ],
+            "properties": {
+              "time": {
+                "type": "integer",
+                "format": "int64"
+              },
+              "latest": {
+                "type": "integer",
+                "format": "int64"
+              },
+              "average": {
+                "type": "integer",
+                "format": "int64"
+              }
+            }
+          },
+          "memoryFreeRatio": {
+            "type": "object",
+            "required": [
+              "time",
+              "latest",
+              "average"
+            ],
+            "properties": {
+              "time": {
+                "type": "integer",
+                "format": "int64"
+              },
+              "latest": {
+                "type": "integer",
+                "format": "int64"
+              },
+              "average": {
+                "type": "integer",
+                "format": "int64"
+              }
+            }
+          },
+          "memoryUsed": {
+            "type": "object",
+            "required": [
+              "time",
+              "latest",
+              "average"
+            ],
+            "properties": {
+              "time": {
+                "type": "integer",
+                "format": "int64"
+              },
+              "latest": {
+                "type": "integer",
+                "format": "int64"
+              },
+              "average": {
+                "type": "integer",
+                "format": "int64"
+              }
+            }
+          },
+          "memoryFree": {
+            "type": "object",
+            "required": [
+              "time",
+              "latest",
+              "average"
+            ],
+            "properties": {
+              "time": {
+                "type": "integer",
+                "format": "int64"
+              },
+              "latest": {
+                "type": "integer",
+                "format": "int64"
+              },
+              "average": {
+                "type": "integer",
+                "format": "int64"
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/apps/cpman/app/src/main/resources/definitions/NetworkMetrics.json b/apps/cpman/app/src/main/resources/definitions/NetworkMetrics.json
new file mode 100644
index 0000000..91e282e
--- /dev/null
+++ b/apps/cpman/app/src/main/resources/definitions/NetworkMetrics.json
@@ -0,0 +1,137 @@
+{
+  "type": "object",
+  "title": "networks",
+  "required": [
+    "networks"
+  ],
+  "properties": {
+    "networks": {
+      "type": "object",
+      "required": [
+        "name",
+        "value"
+      ],
+      "properties": {
+        "name": {
+          "type": "string"
+        },
+        "value": {
+          "type": "object",
+          "title": "metrics",
+          "required": [
+            "metrics"
+          ],
+          "properties": {
+            "metrics": {
+              "type": "array",
+              "xml": {
+                "name": "metrics",
+                "wrapped": true
+              },
+              "items": {
+                "type": "object",
+                "title": "metrics",
+                "required": [
+                  "incomingBytes",
+                  "outgoingBytes",
+                  "incomingPackets",
+                  "outgoingPackets"
+                ],
+                "properties": {
+                  "incomingBytes": {
+                    "type": "object",
+                    "required": [
+                      "time",
+                      "latest",
+                      "average"
+                    ],
+                    "properties": {
+                      "time": {
+                        "type": "integer",
+                        "format": "int64"
+                      },
+                      "latest": {
+                        "type": "integer",
+                        "format": "int64"
+                      },
+                      "average": {
+                        "type": "integer",
+                        "format": "int64"
+                      }
+                    }
+                  },
+                  "outgoingBytes": {
+                    "type": "object",
+                    "required": [
+                      "time",
+                      "latest",
+                      "average"
+                    ],
+                    "properties": {
+                      "time": {
+                        "type": "integer",
+                        "format": "int64"
+                      },
+                      "latest": {
+                        "type": "integer",
+                        "format": "int64"
+                      },
+                      "average": {
+                        "type": "integer",
+                        "format": "int64"
+                      }
+                    }
+                  },
+                  "incomingPackets": {
+                    "type": "object",
+                    "required": [
+                      "time",
+                      "latest",
+                      "average"
+                    ],
+                    "properties": {
+                      "time": {
+                        "type": "integer",
+                        "format": "int64"
+                      },
+                      "latest": {
+                        "type": "integer",
+                        "format": "int64"
+                      },
+                      "average": {
+                        "type": "integer",
+                        "format": "int64"
+                      }
+                    }
+                  },
+                  "outgoingPackets": {
+                    "type": "object",
+                    "required": [
+                      "time",
+                      "latest",
+                      "average"
+                    ],
+                    "properties": {
+                      "time": {
+                        "type": "integer",
+                        "format": "int64"
+                      },
+                      "latest": {
+                        "type": "integer",
+                        "format": "int64"
+                      },
+                      "average": {
+                        "type": "integer",
+                        "format": "int64"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
\ No newline at end of file