Initial implementation of IntService and sample application
This implementation has been used for P4Workshop demo (ONOS INT Support).
Change-Id: I2ff94f8a79f6d5a328b94f7ed178e575b81c3fe9
diff --git a/apps/inbandtelemetry/app/src/main/resources/app/view/intApp/intApp.html b/apps/inbandtelemetry/app/src/main/resources/app/view/intApp/intApp.html
new file mode 100644
index 0000000..42717e0
--- /dev/null
+++ b/apps/inbandtelemetry/app/src/main/resources/app/view/intApp/intApp.html
@@ -0,0 +1,110 @@
+<!-- partial HTML -->
+<div id="ov-int-app-main">
+ <div class="config-panel">
+ <div>
+ Collector IP
+ <input type="text" required pattern="^([0-9]{1,3}\.){3}[0-9]{1,3}$" ng-model="collectorIp">
+
+ Collector Port
+ <input type="text" required pattern="^[0-9]{0,5}$" ng-model="collectorPort">
+ </div>
+ </div>
+ <div class="config-button-panel">
+ <div class = "int-app-config-button" ng-click="sendIntConfigString()">
+ Deploy
+ </div>
+ </div>
+ <hr>
+ <div class="input-panel">
+ <div>
+ Src Address
+ <input type="text" required pattern="^([0-9]{1,3}\.){3}[0-9]{1,3}(/[0-9]{1,2})?$" ng-model="ip4SrcPrefix">
+
+ Dst Address
+ <input type="text" required pattern="^([0-9]{1,3}\.){3}[0-9]{1,3}(/[0-9]{1,2})?$" ng-model="ip4DstPrefix">
+
+ Src Port
+ <input type="text" required pattern="^[0-9]{0,5}$" ng-model="l4SrcPort">
+
+ Dst Port
+ <input type="text" required pattern="^[0-9]{0,5}$" ng-model="l4DstPort">
+
+ Protocol
+ <select name="protocol" ng-model="protocol">
+ <option selected disabled hidden style="display: none" value=''></option>
+ <option value="TCP">TCP</option>
+ <option value="UDP">UDP</option>
+ </select>
+ </div>
+ <div>
+ <input type="checkbox" ng-model= "metaSwId">Switch Id
+ <input type="checkbox" ng-model= "metaPortId">Port Id
+ <input type="checkbox" ng-model= "metaHopLatency">Hop Latency
+ <input type="checkbox" ng-model= "metaQOccupancy">Queue Occupancy
+ <input type="checkbox" ng-model= "metaIngressTstamp">Ingress Timestamp
+ <input type="checkbox" ng-model= "metaEgressTstamp">Egress Timestamp
+ <!--<input type="checkbox" ng-model= "metaQCongestion">Queue Congestion Status-->
+ <input type="checkbox" ng-model= "metaEgressTx">Egress Port Tx Utilization
+ </div>
+ </div>
+
+ <div class="button-panel">
+ <div class = "int-app-button" ng-click="sendIntIntentString()">
+ Deploy
+ </div>
+ </div>
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+ <div class='int-app-main-intents'>
+ <div class="tabular-header">
+ <h2>Installed INT Intents ({{tableData.length}} total)</h2>
+ <div class="ctrl-btns">
+ <div class="refresh" ng-class="{active: autoRefresh}"
+ icon icon-id="refresh" icon-size="36"
+ tooltip tt-msg="autoRefreshTip"
+ ng-click="toggleRefresh()">
+ </div>
+
+ <!-- tooltip tt-msg="uninstallTip" -->
+ <div icon icon-size="42" icon-id="garbage"
+ ng-click="delIntIntent()"
+ ng-class="{active: ctrlBtnState.selection}">
+ </div>
+ </div>
+ </div>
+
+ <div class="summary-list" onos-table-resize>
+
+ <div class="table-header" onos-sortable-header>
+ <table>
+ <tr>
+ <td colId="id" sortable>ID </td>
+ <td colId="srcAddr" sortable>Src Address </td>
+ <td colId="dstAddr" sortable>Dst Address </td>
+ <td colId="srcPort" sortable>Src Port </td>
+ <td colId="dstPort" sortable>Dst Port </td>
+ <td colId="protocol" sortable>Protocol </td>
+ <td colId="metadata" sortable>Metadata </td>
+ </tr>
+ </table>
+ </div>
+
+ <div class="table-body">
+ <table>
+ <tr ng-repeat="item in tableData track by $index"
+ ng-click="selectCallback($event, item)"
+ ng-class="{selected: item.id === selId}">
+ <td>{{item.id}}</td>
+ <td>{{item.srcAddr}}</td>
+ <td>{{item.dstAddr}}</td>
+ <td>{{item.srcPort}}</td>
+ <td>{{item.dstPort}}</td>
+ <td>{{item.protocol}}</td>
+ <td>{{item.metadata}}</td>
+ </tr>
+ </table>
+ </div>
+
+ </div>
+ </div>
+</div>
+<!-- +++++++++++++++++++++ -->