diff options
author | DushyantSinghThakur <dt00503496@techmahindra.com> | 2018-09-06 12:46:04 +0530 |
---|---|---|
committer | Dan Timoney <dt5972@att.com> | 2018-09-12 13:10:46 +0000 |
commit | 43d4b00848ebd0567b020fe219f07d4f7049ff0b (patch) | |
tree | f5c09d0006348c82a94693605349e79db4889b71 /configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views | |
parent | 4e2db0d6e56bc19425e6afa3efc7011820942e9e (diff) |
Epic-231:versioning, and backup the configuration
Merging the sdnc jira stories- 255,256
Change-Id: Iacb9274dae93f534f1331c4eb7d0669896d379d4
Issue-ID: SDNC-256
Signed-off-by: DushyantSinghThakur <dt00503496@techmahindra.com>
Former-commit-id: 94d8b3d82b82dedfd5949da2e5d1ed348ab066e2
Diffstat (limited to 'configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views')
12 files changed, 1095 insertions, 0 deletions
diff --git a/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/footer.html b/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/footer.html new file mode 100644 index 00000000..9d252bf0 --- /dev/null +++ b/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/footer.html @@ -0,0 +1,3 @@ +<div class="footer"> + <p style="margin-left:20px;text-align:center"> @Copyright 2018 All rights reserved</p> +</div> diff --git a/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-applyConfig.jsp b/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-applyConfig.jsp new file mode 100644 index 00000000..76293840 --- /dev/null +++ b/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-applyConfig.jsp @@ -0,0 +1,48 @@ +<!-- /* + * ============LICENSE_START======================================================= + * ONAP : SDNC-FEATURES + * ================================================================================ + * Copyright 2018 TechMahindra + *================================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + --> +<div class="ReportMain" > + <div class="heading"><img src="static/images/Apply.jpg" width=70 height="40" style="margin-left:5px;"> Apply Configruation</div> + <form name="myForm" style="background-color:#f2f2f2; border: 1px solid #ddd;"> + <div growl></div> + + <div class="row" style="background-color:#f2f2f2;width:100%;margin-left:1px;height:75px"> + <div class="column" style="width:30%;background-color:#f2f2f2;height:55px;margin-left:40px;"> + <label class="labeltext">Select Avaliable VNF</label> + </div> + <div class="column" style="background-color:#f2f2f2;width:60%;height:55px;margin-left:0px;"> + <select class="form-control" style="width:100%;margin-top:0px;" ng-model="selectedValueVnf" ng-change="selectVnf(selectedValueVnf)"> + <option ng-repeat="vnf in objvnfList" value="{{vnf.vnfid}}">VnfId- {{vnf.vnfid}} VnfName- {{vnf.vnfname}}</option> + <option value="">Select VNFId</option> + </select> + </div> + </div> + <div class="row" style="background-color:#f2f2f2;width:100%;margin-left:1px;height:100px"> + <div class="column" style="width:30%;height:55px;margin-left:35px;"> + <input type="file" style="width:300px" id="myFileInput" ng-model="file" accept=".json"/> + </div> + <div class="column" style="width:50%;height:55px;margin-left:10px;"> + <button type="submit" class="btnapply" ng-click="submit()">Apply Config</button> + </div> + </div> + </form> +</div> +</body> +</html>
\ No newline at end of file diff --git a/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-backupConfig.html b/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-backupConfig.html new file mode 100644 index 00000000..15c1c4b0 --- /dev/null +++ b/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-backupConfig.html @@ -0,0 +1,39 @@ +<!-- /* + * ============LICENSE_START======================================================= + * ONAP : SDNC-FEATURES + * ================================================================================ + * Copyright 2018 TechMahindra + *================================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + --> +<div class="ReportMain"> + <div class="heading"><img src="static/images/backupConfig.png" width=50 height="40" style="margin-left:5px;"> Backup Configruation + <label style="float: right; margin-right: 84px;"><font size='2'>Last Updated Time : <span style="color:red">{{lastModifiedTime}}</span></font></label> + </div> + <form name="myForm"> + <div growl></div> + <div class="row"> + + </div> + <div class="row"> + <div class="column" style="background-color:#f2f2f2;width:97%;border: 1px solid #ddd;"> + <input type="button" class="btnapply" ng-click="invokeBackup()" value=" Config Backup" /> + </div> + </div> + <div class="row"> + + </div> + </form> +</div>
\ No newline at end of file diff --git a/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-compareConfig.html b/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-compareConfig.html new file mode 100644 index 00000000..93ab7b64 --- /dev/null +++ b/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-compareConfig.html @@ -0,0 +1,85 @@ + <!-- /* + * ============LICENSE_START======================================================= + * ONAP : SDNC-FEATURES + * ================================================================================ + * Copyright 2018 TechMahindra + *================================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + --> +<div class="ReportMain"> + <div class="heading"><img src="static/images/compare.png" width=45 height="40" style="margin-left:5px;"> Compare Configruation</div> + <form name="myForm" class="Formclass"> + <div growl></div> + <div class="row" style="background-color:#f2f2f2;width:100%;margin-left:1px; border: 1px solid #ddd;"> + <div class="column" style="width:30%;background-color:#f2f2f2;height:55px;margin-left:40px;"> + <label class="labeltext">Select Avaliable VNF</label> + </div> + <div class="column" style="background-color:#f2f2f2;width:60%;height:55px;margin-left:0px;"> + <select class="form-control" style="width:100%;margin-top:0px;" ng-model="selectedValueVnf" ng-change="selectVnf(selectedValueVnf)"> + <option ng-repeat="vnf in objvnfList" value="{{vnf.vnfid}}">VnfId- {{vnf.vnfid}} VnfName- {{vnf.vnfname}}</option> + <option value="">Select VNFId</option> + </select> + </div> + </div> + <table class="tableDisplay" ng-show="ShowResult" id="tableToExport" style="margin-top:15px;"> + <tr class="first_row" style="background-color:#6D7B8D;"> + <th>SNo. + </th> + <th>VersionNo + </th> + <th>Backup Date + </th> + <th>Updated Date + </th> + <th>Action</th> + </tr> + <tr ng-repeat="version in pagedItems[currentPage] | orderBy:sort.sortingOrder:sort.reverse"> + <td>{{$index+1}}</td> + <td>{{version.vnfversion}}</td> + <td>{{version.createdAt}}</td> + <td>{{version.updatedAt}}</td> + <td><input type=checkbox ng-model="version.selected"> + </td> + </tr> + + <td colspan="5"> + <!-- ng-show="pagedItems.length > 5" --> + <ul class="pagination pull-right"> + <li ng-class="{disabled: currentPage == 0}"><a href + ng-click="prevPage()">«</a></li> + <li ng-repeat="n in range(pagedItems.length, currentPage, currentPage + gap) " + ng-class="{active: n == currentPage}" ng-click="setPage()"><a + href ng-bind="n + 1">1</a></li> + <li ng-class="{disabled: (currentPage) == pagedItems.length - 1}"> + <a href ng-click="nextPage()">»</a> + </li> + </ul> + </td> + + <tr> + <td colspan="5"> + <div class="row pull-right"> + <button type="button" class="btnview" ng-click="ViewConfig(objVersion)" ng-show="showView" ng-model="version.selected" >View Config</button> + <button type="button" class="btnapplycfg" ng-click="ApplyConfig(objVersion)" >Apply Config</button> + <button type="button" class="btnCompareVersion" ng-click="CompareConfig(objVersion)" ng-show="showCompare" ng-model="version.selected" >Compare Config</button> + </div> + </td> + </tr> + </table> + <div id="compare" ng-form = "compare" ng-include="" src="'static/views/form-deviceConfig.html'"></div> + <div id="view" ng-form = "view" ng-include="" src="'static/views/form-deviceConfigView.html'"></div> + + </form> +</div>
\ No newline at end of file diff --git a/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-deviceConfig.html b/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-deviceConfig.html new file mode 100644 index 00000000..54b39b27 --- /dev/null +++ b/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-deviceConfig.html @@ -0,0 +1,332 @@ +<!-- /* + * ============LICENSE_START======================================================= + * ONAP : SDNC-FEATURES + * ================================================================================ + * Copyright 2018 TechMahindra + *================================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + --> +<!-- <div class="VersionMain" ng-show="showResult"> + <div class="versionHeading"><img src="static/images/compare.jpg" width=25 height="25" style="margin-left:5px;"> Version Comparision Result</div> + <div class="columnsVersion"> + <ul class="price"> + <li class="headerVersion">Attributes</li> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Config Details</li> + <li ng-repeat="(key,value) in objCompareModel1.versionDetails">{{key}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">VNF Topology</li> + <li ng-repeat="(key,value) in objCompareModel1.topologyInfo">{{key}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;" ng-if="objCompareModel1.networkTopologyInfo.length>=1"> + <li class="listHeading">Network Topology</li> + <li ng-repeat="(key,value) in objCompareModel1.networkTopologyInfo">{{key}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Operation Status</li> + <li ng-repeat="(key,value) in objCompareModel1.operationStatus">{{key}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">VNF Topology Identifer</li> + <li ng-repeat="(key,value) in objCompareModel1.vnfTopologyIdentifier">{{key}}</li> + <hr class="separator"> + </hr> + </div> + </ul> + </div> + <div class="columnsVersion"> + <ul class="price"> + <li class="headerVersion" style="background-color:#807C7C">Version {{objCompareModel1.versionDetails.vnfversion}}</li> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Config Details</li> + <li ng-repeat="(key,value) in objCompareModel1.versionDetails">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">VNF Topology</li> + <li ng-repeat="(key,value) in objCompareModel1.topologyInfo">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;" ng-if="objCompareModel1.networkTopologyInfo.length>=1"> + <li class="listHeading">Network Topology</li> + <li ng-repeat="(key,value) in objCompareModel1.networkTopologyInfo">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Operation Status</li> + <li ng-repeat="(key,value) in objCompareModel1.operationStatus">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">VNF Topology Identifer</li> + <li ng-repeat="(key,value) in objCompareModel1.vnfTopologyIdentifier">{{value}}</li> + <hr class="separator"> + </hr> + </div> + </ul> + </div> + <div class="columnsVersion"> + <ul class="price"> + <li class="headerVersion"style="background-color:#807C7C">Version {{objCompareModel2.versionDetails.vnfversion}}</li> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Config Details</li> + <li ng-repeat="(key,value) in objCompareModel2.versionDetails">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">VNF Topology</li> + <li ng-repeat="(key,value) in objCompareModel2.topologyInfo">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;" ng-if="objCompareModel1.networkTopologyInfo.length>=1"> + <li class="listHeading">Network Topology</li> + <li ng-repeat="(key,value) in objCompareModel2.networkTopologyInfo">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Operation Status</li> + <li ng-repeat="(key,value) in objCompareModel2.operationStatus">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">VNF Topology Identifer</li> + <li ng-repeat="(key,value) in objCompareModel2.vnfTopologyIdentifier">{{value}}</li> + <hr class="separator"> + </hr> + </div> + </ul> + </div> +</div> --> + + + +<div id = "Div1" class="VersionMain" ng-show="showResult"> + <div class="versionHeading"><img src="static/images/compare.jpg" width=25 height="25" style="margin-left:5px;"> Version Comparision Result</div> + <div class="columnsVersion"> + <ul class="price"> + <li class="headerVersion">Attributes</li> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Config Details</li> + <li ng-repeat="(key,value) in objCompareModel1.versionDetails">{{key}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">VNF ID</li> + <li ng-repeat="(key,value) in objCompareModel1.vnfIdInfo">{{key}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">SERVICE STATUS</li> + <li ng-repeat="(key,value) in objCompareModel1.serviceStatusInfo">{{key}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">VNF Topology Identifer</li> + <li ng-repeat="(key,value) in objCompareModel1.vnfTopologyIdentifier">{{key}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Operation Status</li> + <li ng-repeat="(key,value) in objCompareModel1.operationStatus">{{key}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Request Info</li> + <li ng-repeat="(key,value) in objCompareModel1.vnfRequestInfo">{{key}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Service Info</li> + <li ng-repeat="(key,value) in objCompareModel1.serviceInfo">{{key}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Service Request Header</li> + <li ng-repeat="(key,value) in objCompareModel1.requestHeader">{{key}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Request Information</li> + <li ng-repeat="(key,value) in objCompareModel1.requestInfo">{{key}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">VNF Topology</li> + <li ng-repeat="(key,value) in objCompareModel1.topologyInfo">{{key}}</li> + <hr class="separator"> + </hr> + </div> + </ul> + </div> + + <div class="columnsVersion"> + <ul class="price"> + <li class="headerVersion" style="background-color:#807C7C">Version {{objCompareModel1.versionDetails.vnfversion}}</li> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Config Details</li> + <li ng-repeat="(key,value) in objCompareModel1.versionDetails">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;" > + <li class="listHeading">VNF ID</li> + <li ng-repeat="(key,value) in objCompareModel1.vnfIdInfo">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">SERVICE STATUS</li> + <li ng-repeat="(key,value) in objCompareModel1.serviceStatusInfo">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">VNF Topology Identifer</li> + <li ng-repeat="(key,value) in objCompareModel1.vnfTopologyIdentifier">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Operation Status</li> + <li ng-repeat="(key,value) in objCompareModel1.operationStatus">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Request Info</li> + <li ng-repeat="(key,value) in objCompareModel1.vnfRequestInfo">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Service Info</li> + <li ng-repeat="(key,value) in objCompareModel1.serviceInfo">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Service Request Header</li> + <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel1.requestHeader">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Request Information</li> + <li ng-repeat="(key,value) in objCompareModel1.requestInfo">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">VNF Topology</li> + <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel1.topologyInfo">{{value}}</li> + <hr class="separator"> + </hr> + </div> + </ul> + </div> + + <div class="columnsVersion"> + <ul class="price"> + <li class="headerVersion"style="background-color:#807C7C">Version {{objCompareModel2.versionDetails.vnfversion}}</li> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Config Details</li> + <li ng-repeat="(key,value) in objCompareModel2.versionDetails">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">VNF ID</li> + <li ng-repeat="(key,value) in objCompareModel2.vnfIdInfo">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">SERVICE STATUS</li> + <li ng-repeat="(key,value) in objCompareModel2.serviceStatusInfo">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">VNF Topology Identifer</li> + <li ng-repeat="(key,value) in objCompareModel2.vnfTopologyIdentifier">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Operation Status</li> + <li ng-repeat="(key,value) in objCompareModel2.operationStatus">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Request Info</li> + <li ng-repeat="(key,value) in objCompareModel2.vnfRequestInfo">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Service Info</li> + <li ng-repeat="(key,value) in objCompareModel2.serviceInfo">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Service Request Header</li> + <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel2.requestHeader">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Request Information</li> + <li ng-repeat="(key,value) in objCompareModel2.requestInfo">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">VNF Topology</li> + <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel2.topologyInfo">{{value}}</li> + <hr class="separator"> + </hr> + </div> + </ul> + </div> + +</div>
\ No newline at end of file diff --git a/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-deviceConfigView.html b/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-deviceConfigView.html new file mode 100644 index 00000000..e9a19aa3 --- /dev/null +++ b/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-deviceConfigView.html @@ -0,0 +1,154 @@ +<!-- /* + * ============LICENSE_START======================================================= + * ONAP : SDNC-FEATURES + * ================================================================================ + * Copyright 2018 TechMahindra + *================================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + --> + <div class="VersionMain" ng-show="showResult"> + <div class="versionHeading"><img src="static/images/compare.jpg" width=25 height="25" style="margin-left:5px;"> Version Comparision Result</div> + <div class="columnsVersionview"> + <ul class="price"> + <li class="headerVersion">Attributes</li> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Config Details</li> + <li ng-repeat="(key,value) in objCompareModel1.versionDetails">{{key}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">VNF ID</li> + <li ng-repeat="(key,value) in objCompareModel1.vnfIdInfo">{{key}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">SERVICE STATUS</li> + <li ng-repeat="(key,value) in objCompareModel1.serviceStatusInfo">{{key}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">VNF Topology Identifer</li> + <li ng-repeat="(key,value) in objCompareModel1.vnfTopologyIdentifier">{{key}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Operation Status</li> + <li ng-repeat="(key,value) in objCompareModel1.operationStatus">{{key}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Request Info</li> + <li ng-repeat="(key,value) in objCompareModel1.vnfRequestInfo">{{key}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Service Info</li> + <li ng-repeat="(key,value) in objCompareModel1.serviceInfo">{{key}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Service Request Header</li> + <li ng-repeat="(key,value) in objCompareModel1.requestHeader">{{key}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Request Information</li> + <li ng-repeat="(key,value) in objCompareModel1.requestInfo">{{key}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">VNF Topology</li> + <li ng-repeat="(key,value) in objCompareModel1.topologyInfo">{{key}}</li> + <hr class="separator"> + </hr> + </div> + </ul> + </div> + <div class="columnsVersionview"> + <ul class="price"> + <li class="headerVersion" style="background-color:#807C7C">Version {{objCompareModel1.versionDetails.vnfversion}}</li> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Config Details</li> + <li ng-repeat="(key,value) in objCompareModel1.versionDetails">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;" > + <li class="listHeading">VNF ID</li> + <li ng-repeat="(key,value) in objCompareModel1.vnfIdInfo">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">SERVICE STATUS</li> + <li ng-repeat="(key,value) in objCompareModel1.serviceStatusInfo">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">VNF Topology Identifer</li> + <li ng-repeat="(key,value) in objCompareModel1.vnfTopologyIdentifier">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Operation Status</li> + <li ng-repeat="(key,value) in objCompareModel1.operationStatus">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Request Info</li> + <li ng-repeat="(key,value) in objCompareModel1.vnfRequestInfo">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Service Info</li> + <li ng-repeat="(key,value) in objCompareModel1.serviceInfo">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Service Request Header</li> + <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel1.requestHeader">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">Request Information</li> + <li ng-repeat="(key,value) in objCompareModel1.requestInfo">{{value}}</li> + <hr class="separator"> + </hr> + </div> + <div style="background-color:#E1E0DA;"> + <li class="listHeading">VNF Topology</li> + <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel1.topologyInfo">{{value}}</li> + <hr class="separator"> + </hr> + </div> + </ul> + </div> + +</div>
\ No newline at end of file diff --git a/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-validationTest.html b/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-validationTest.html new file mode 100644 index 00000000..0bf39f66 --- /dev/null +++ b/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-validationTest.html @@ -0,0 +1,135 @@ +<!-- /* + * ============LICENSE_START======================================================= + * ONAP : SDNC-FEATURES + * ================================================================================ + * Copyright 2018 TechMahindra + *================================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + --> +<div class="testMain"> + <div class="heading"><img src="static/images/validation.png" width=30 height="30" style="margin-left:5px;"> Pre-test/Certification</div> + <form name="reportForm"> + <div growl></div> + <div class="row"> + <div class="column testCol"> + <label class="labeltext">Specify IP Address</label> + </div> + <div class="column" style="background-color:#f2f2f2;width:50%;margin-left:0px;"> + <input type="text" ng-model="IPAddress" name="IPAddress" style="margin-left:5px;width:170px;" ng-ip-address placeholder='255.255.255.255' required></input> + <div role="alert"> + <span class="error" ng-show="reportForm.IPAddress.$error.required">Required!</span> + </div> + <div role="alert"> + <span class="error" ng-if="reportForm.IPAddress.$invalid">Not a valid IPAddress!</span> + </div> + <div role="alert"> + <span class="error" ng-if="reportForm.IPAddress.pattern">Not a valid IPAddress!</span> + </div> + </div> + </div> + <div class="row"> + <div class="column testCol"> + <label class="labeltext">Specify Host Name</label> + </div> + <div class="column" style="background-color:#f2f2f2;width:50%;margin-left:0px;"> + <input type="text" ng-model="HostName" name="HostName" style="margin-left:5px;width:170px;" required ng-pattern="hostNamePattern"></input> + <div role="alert"> + <span class="error" ng-show="reportForm.HostName.$error.required">Required!</span> + </div> + <div role="alert"> + <span class="error" ng-show="reportForm.HostName.$invalid">Not a valid HostName!</span> + </div> + </div> + </div> + <div class="row"> + <div class="column" style="width:25%;background-color:#f2f2f2;height:45px;margin-left:35px;"> + <label class="labeltext">Select Certification</label> + </div> + <div class="column" style="background-color:#f2f2f2;width:50%;height:45px;margin-left:0px;"> + <label ng-repeat="val in validationTestList" class="labeltext" style="margin-right:35px;"> + <input type="checkbox" ng-model="val.Selected" class="check" ng-change="updateSelection($index,validationTestList,val.validationType);">{{val.validationType}}</input> + </label> + </div> + </div> + <!--<hr style="border-color:darkGrey;">--> + <div class="row"> + <div class="column btnRunTest"> + <input type="submit" ng-click="runTest()" value="Run PreTest" id="btnSubmit" ng-disabled="showError" style="margin-left:0px;"/> + </div> + </div> + + <table class="tableDisplay" ng-show="ShowResult" id="tableToExport" style="margin-left:10px;width:1000px;"> + <tr class="first_row"> + <th>SNo. + </th> + <th colspan="2" style="text-align:center;">TestName + </th> + <th>Device IP + </th> + <th>Status + </th> + <th style="width:20%;">Statistics (%Loss)</th> + <th style="width:20%;">Average Time (ms)</th> + <th>Result + </th> + </tr> + <tr ng-repeat="test in objPreTest"> + <td>{{$index+1}} + </td> + <td><img src="{{(test.testtype=='Network Layer') ? 'static/images/images.png': 'static/images/protocol.png'}}" width=40 height=30 ></img></td> + <td>{{test.testtype}} + </td> + <td>{{test.ipaddress}} + </td> + <td>{{test.status | uppercase}} + </td> + <td> + <div ng-show="test.testtype =='Network Layer'" class="w3-light-grey"> + <div ng-show=test.statistics!=null class="w3-container w3-red w3-center" style="width:{{test.statisticPer}}%">{{test.statistics}}% Loss + </div> + <div ng-show=test.statistics==null class="w3-orange w3-center" style="width:{{test.statisticPer}}%">No Statistics Recorded + </div> + </div> + <div ng-show="test.testtype =='Protocol Layer'"> + <img src='static/images/router.png' width=30 height=30 style="margin-bottom:10px;"></img> + <span class="{{(test.status == 'unreachable') ? 'arrowRed':'arrowGreen'}}">→</span><span class="{{(test.status == 'unreachable') ? 'arrowRed':'arrowGreen'}}">→</span><span class="{{(test.status == 'unreachable') ? 'arrowRed':'arrowGreen'}}">→ + <img src='static/images/router.png' width=30 height=30 ></img> + </div> + </td> + <td> + <div ng-show="test.testtype =='Network Layer'" class="w3-light-grey"> + <div ng-show=test.avgTime!=null class="w3-container w3-green w3-center" style="width:{{test.avgTimePer}}%">{{test.avgTime}} ms</div> + <div ng-show=test.statistics==null class="w3-blue w3-center" style="width:{{test.statisticPer}}%">No AvgTime Recorded + </div> + </div> + </td> + <td><img src="{{(test.status=='reachable') ? 'static/images/success.png': 'static/images/FailImage.png'}}" width=30 height=25></img> + </td> + </tr> + </table> + <div class="row"> + <div class="column" style="margin-top:10px;width:800px;" ng-show="ShowResult"> + <span class='arrowRed'>→</span> + <label class="labeltext">UnReachable</label> + <span class='arrowGreen'>→</span> + <label class="labeltext">Reachable</label> + <span><img src='static/images/success.png' width=30 height=25></span> + <label class="labeltext">Pass</label> + <span><img src='static/images/FailImage.png' width=30 height=25></span> + <label class="labeltext">Fail</label> + </div> + </div> + </form> +</div>
\ No newline at end of file diff --git a/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-versionCompare.html b/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-versionCompare.html new file mode 100644 index 00000000..182c31fc --- /dev/null +++ b/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-versionCompare.html @@ -0,0 +1,59 @@ +<!-- /* + * ============LICENSE_START======================================================= + * ONAP : SDNC-FEATURES + * ================================================================================ + * Copyright 2018 TechMahindra + *================================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + --> +<div class="VersionMain"> + <div class="versionHeading"><img src="images/compare.jpg" width=25 height="25" style="margin-left:5px;"> Version Comparision Result</div> + + <div class="columnsVersion"> + <ul class="price"> + <li class="headerVersion">Basic</li> + <li class="grey">$ 9.99 / year</li> + <li>10GB Storage</li> + <li>10 Emails</li> + <li>10 Domains</li> + <li>1GB Bandwidth</li> + <li class="grey"><a href="#" class="button">Sign Up</a></li> + </ul> +</div> + +<div class="columnsVersion"> + <ul class="price"> + <li class="headerVersion" style="background-color:#4CAF50">Pro</li> + <li class="grey">$ 24.99 / year</li> + <li>25GB Storage</li> + <li>25 Emails</li> + <li>25 Domains</li> + <li>2GB Bandwidth</li> + <li class="grey"><a href="#" class="button">Sign Up</a></li> + </ul> +</div> + +<div class="columnsVersion"> + <ul class="price"> + <li class="headerVersion">Premium</li> + <li class="grey">$ 49.99 / year</li> + <li>50GB Storage</li> + <li>50 Emails</li> + <li>50 Domains</li> + <li>5GB Bandwidth</li> + <li class="grey"><a href="#" class="button">Sign Up</a></li> + </ul> +</div> + </div>
\ No newline at end of file diff --git a/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-viewReport.html b/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-viewReport.html new file mode 100644 index 00000000..d4841ad5 --- /dev/null +++ b/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-viewReport.html @@ -0,0 +1,90 @@ +<!-- /* + * ============LICENSE_START======================================================= + * ONAP : SDNC-FEATURES + * ================================================================================ + * Copyright 2018 TechMahindra + *================================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + --> +<div class="ReportMain"> + <div class="heading"> + <img src="static/images/search.png" width=50 height="40" + style="margin-left: 5px;"> Search For Vnf Reports + </div> + <form name="myForm" style="background-color: #f2f2f2;"> + <div growl></div> + <div class="row"> + <div class="column" style="width: 40%;"> + <label for="exampleInput" class="labeltext">Start Date</label> <input + type="date" id="exampleInput" name="input" + ng-model="startdate.value" placeholder="yyyy-MM-dd" + style="margin-left: 20px; width: 170px;" required /> + <div role="alert"> + <span class="error" ng-show="myForm.input.$error.required">Required!</span> + <span class="error" ng-show="myForm.input.$error.date">Not a + valid date!</span> + </div> + </div> + <div class="column" style="margin-left: 0px; width: 50%;"> + <label for="exampleEndInput" class="labeltext">End Date</label> <input + type="date" id="exampleEndInput" name="input" + ng-model="enddate.value" placeholder="yyyy-MM-dd" + style="margin-left: 20px; width: 170px;" required /> + <div role="alert"> + <span class="error" ng-show="myForm.input.$error.required"> + Required!</span> <span class="error" ng-show="myForm.input.$error.date"> + Not a valid date!</span> + </div> + </div> + </div> + <br> + <div class="row"> + <input type="submit" id="btnSubmit" + ng-click="getReports(startdate.value,enddate.value)" + style="width: 120px;"> + </div> + + <table class="tableDisplay" + style="text-align: center;" ng-show="showresult" id="tableToExport"> + <tr class="first_row"> + <th style="text-align: center;">SNo.</th> + <th style="text-align: center;">Time Period</th> + <th style="text-align: center;">Vnf Name</th> + <th style="text-align: center;">Vnf Id</th> + </tr> + <tr ng-repeat="version in pagedItems[currentPage] | orderBy:sort.sortingOrder:sort.reverse"> + <td>{{ ($index + 1) + (currentPage - 1) * itemsPerPage + 5}}</td> + <td>{{version.createdAt}}</td> + <td>{{version.vnfname }}</td> + <td>{{version.vnfid}}</td> + </tr> + <td colspan="4"> + <!-- ng-show="pagedItems.length > 5" --> + <ul class="pagination pull-right"> + <li ng-class="{disabled: currentPage == 0}"><a href + ng-click="prevPage()">«</a></li> + <li ng-repeat="n in range(pagedItems.length, currentPage, currentPage + gap) " + ng-class="{active: n == currentPage}" ng-click="setPage()"><a + href ng-bind="n + 1">1</a></li> + <li ng-class="{disabled: (currentPage) == pagedItems.length - 1}"> + <a href ng-click="nextPage()">»</a> + </li> + </ul> + </td> + </table> + </form> +</div> +</body> +</html>
\ No newline at end of file diff --git a/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-viewReportById.html b/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-viewReportById.html new file mode 100644 index 00000000..b4eec391 --- /dev/null +++ b/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-viewReportById.html @@ -0,0 +1,122 @@ +<!-- /* + * ============LICENSE_START======================================================= + * ONAP : SDNC-FEATURES + * ================================================================================ + * Copyright 2018 TechMahindra + *================================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + --> +<div class="ReportMain"> + <div class="heading"> + <img src="static/images/search.png" width=50 height="40" + style="margin-left: 5px;"> Search For Vnf Reports + </div> + <form name="myForm" style="background-color: #f2f2f2;padding:20px 15px;"> + <div growl></div> + + <div class="row"> + <div class="column" + style="width: 20%; background-color: #f2f2f2; height: 35px; margin-left: 35px;"> + <label class="labeltext">Select Avaliable VNF</label> + </div> + <div class="column" + style="background-color: #f2f2f2; width: 45%; height: 55px; margin-left: 0px;"> + <select class="form-control" style="width: 100%; margin-top: 0px;" + name="select" ng-model="selectedValueVnf" + ng-change=selectVnf(selectedValueVnf) required> + <option ng-repeat="vnf in objvnfList" value="{{vnf.vnfid}}">VnfId- + {{vnf.vnfid}} VnfName- {{vnf.vnfname}}</option> + <option value="">Select VNF</option> + </select> + <div role="alert"> + <span class="error" ng-show="myForm.select.$error.required"> + Required!</span> + </div> + </div> + </div> + + <div class="row" ng-show="ShowResult"> + <div class="column" style="margin-left: 13px; width: 40%;"> + <label for="exampleInput" class="labeltext">Start Date</label> <input + type="date" id="exampleInput" name="input" + ng-model="startdate.value" placeholder="yyyy-MM-dd" + style="margin-left: 20px; width: 170px;" required /> + <div role="alert"> + <span class="error" ng-show="myForm.input.$error.required"> + Required!</span> <span class="error" ng-show="myForm.input.$error.date"> + Not a valid date!</span> + </div> + </div> + + <div class="column" style="margin-left: 0px; width: 50%;"> + <label for="exampleEndInput" class="labeltext">End Date</label> <input + type="date" id="exampleEndInput" name="input" + ng-model="enddate.value" placeholder="yyyy-MM-dd" + style="margin-left: 20px; width: 170px;" required /> + <div role="alert"> + <span class="error" ng-show="myForm.input.$error.required"> + Required!</span> <span class="error" ng-show="myForm.input.$error.date"> + Not a valid date!</span> + </div> + </div> + <br> + <div class="column"> + <input type="submit" id="btnSubmit" + ng-click="getReportsById(selectedValueVnf,startdate.value,enddate.value)" + style="width: 120px;"> + </div> + + </div> + <br> + <div class="row" ng-show="showresult"> + <div class="column" + style="width: 80%; background-color: #f2f2f2; height: 35px; margin-left: 35px; font-size: 14px;font-weight:500;color:#1B4F72;"> + Vnfid: {{selectedValueVnf}} + </div> + </div> + <br> + <div> + <table class="tableDisplay" + style="text-align: center;" ng-show="showresult" id="tableToExport"> + <tr class="first_row"> + <th style="text-align: center;">SNo.</th> + <th style="text-align: center;">Time Period</th> + <th style="text-align: center;">Vnf Name</th> + <th style="text-align: center;">Version No.</th> + </tr> + <tr ng-repeat="version in pagedItems[currentPage] | orderBy:sort.sortingOrder:sort.reverse"> + <td>{{ ($index + 1) + (currentPage - 1) * itemsPerPage + 5}}</td> + <td>{{version.createdAt}}</td> + <td>{{version.vnfname }}</td> + <td>{{version.versionNo}}</td> + </tr> + <td colspan="4"> + <ul class="pagination pull-right"> + <li ng-class="{disabled: currentPage == 0}"><a href + ng-click="prevPage()">«</a></li> + <li ng-repeat="n in range(pagedItems.length, currentPage, currentPage + gap) " + ng-class="{active: n == currentPage}" ng-click="setPage()"><a + href ng-bind="n + 1">1</a></li> + <li ng-class="{disabled: (currentPage) == pagedItems.length - 1}"> + <a href ng-click="nextPage()">»</a> + </li> + </ul> + </td> + </table> + </div> + </form> +</div> +</body> +</html>
\ No newline at end of file diff --git a/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/header.html b/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/header.html new file mode 100644 index 00000000..23851589 --- /dev/null +++ b/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/header.html @@ -0,0 +1,3 @@ +<div class="header"> + <p style="margin-left:20px;"> ONAP Certification Test Page </p> +</div> diff --git a/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/tabs.html b/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/tabs.html new file mode 100644 index 00000000..178a8180 --- /dev/null +++ b/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/tabs.html @@ -0,0 +1,25 @@ +<div> +<nav role="navigation" class="navbar navbar-default" style="margin-top:10px;"> + <div class="navbar-header" style="background-color:#ffe0b3;font-size: 15px;font-weight: bold;color:black;"> + <ul class="nav navbar-nav"> + <li><div class="dropdown"> + <button class="dropbtn" style="padding-right:40px;padding-left: 30px; ">VIEW ALL REPORTS</button> + <div class="dropdown-content"> + <a ng-href="#testReports">Search Vnf Reports</a> + <a ng-href="#testReportsById">Search Vnf Reports By ID</a> + </div> + </div> + <li><div class="dropdown"> + <button class="dropbtn">DEVICE CONFIGRUATION</button> + <div class="dropdown-content"> + <a ng-href="#deviceConfig">Backup Config</a> + <a ng-href="#applyConfig">Apply Config</a> + <a ng-href="#compareConfig">Compare Config</a> + </div> + </div> + </li> + + </ul> + </div> +</nav> +</div>
\ No newline at end of file |