[SDFAB-486][SDFAB-487] Add simple INT flow report test and DeepInsight driver

Change-Id: Iebfe514e3a811d157808973cf6d3d59beb48423f
diff --git a/TestON/drivers/common/api/deepinsightapidriver.py b/TestON/drivers/common/api/deepinsightapidriver.py
new file mode 100644
index 0000000..af02256
--- /dev/null
+++ b/TestON/drivers/common/api/deepinsightapidriver.py
@@ -0,0 +1,93 @@
+from deepinsight.client import DeepInsightClient
+from drivers.common.apidriver import API
+
+class DeepInsightApiDriver( API ):
+    def __init__( self ):
+        self.name = None
+        self.serverUrl = None
+        self.accessToken = None
+        self.refreshToken = None
+        self.requestAuthHeader = None
+        self.verifySsl = False
+        self.client = None
+        super( DeepInsightApiDriver, self ).__init__()
+
+    def connect(
+        self,
+        **connectargs
+    ):
+        for key in connectargs:
+            vars(self)[key] = connectargs[key]
+        self.name = self.options["name"]
+        self.client = DeepInsightClient(
+            server_url = self.options["server_url"],
+            username = self.options["username"],
+            password = self.options["password"],
+            verify_ssl = self.options["verify_ssl"] == "True",
+        )
+        self.handle = super( DeepInsightApiDriver, self ).connect()
+        return self.handle
+
+    def disconnect( self, **connectargs ):
+        self.client.logout()
+
+    def getFlows(
+        self,
+        startTimeMs = None,
+        endTimeMs = None,
+        maxResults = 100,
+        srcIp = None,
+        dstIp = None,
+        srcPort = None,
+        dstPort = None,
+        ipProto = None,
+    ):
+        return self.client.get_flows(
+            startTimeMs,
+            endTimeMs,
+            maxResults,
+            srcIp,
+            dstIp,
+            srcPort,
+            dstPort,
+            ipProto,
+        )
+
+    def getSwitchPacketDrop(
+        self,
+        switchId,
+        egressPort = 0,
+        queueId = 0,
+        startTime = None,
+        endTime = None,
+        numBuckets = 100,
+    ):
+        return self.client.get_switch_packet_drop(
+            switchId,
+            egressPort,
+            queueId,
+            startTime,
+            endTime,
+            numBuckets,
+        )
+
+    def getSwitchAnomalies(
+        self, switchId, startTime = None, endTime = None
+    ):
+        return self.client.get_switch_anomalies(
+            switchId, startTime, endTime
+        )
+
+    def getSwitchLatencies(
+        self,
+        switchId,
+        startTime = None,
+        endTime = None,
+        granularity = 1000,
+    ):
+        return self.client.get_switch_latencies(
+            switchId,
+            startTime,
+            endTime,
+            granularity,
+        )