diff options
Diffstat (limited to 'epsdk-app-onap/src/main/webapp/WEB-INF/jsp')
6 files changed, 600 insertions, 0 deletions
diff --git a/epsdk-app-onap/src/main/webapp/WEB-INF/jsp/login.jsp b/epsdk-app-onap/src/main/webapp/WEB-INF/jsp/login.jsp new file mode 100755 index 00000000..1fa75ed0 --- /dev/null +++ b/epsdk-app-onap/src/main/webapp/WEB-INF/jsp/login.jsp @@ -0,0 +1,95 @@ +<%@ page import="java.net.URLEncoder"%>
+<%@ page import="org.openecomp.portalsdk.core.util.SystemProperties"%>
+<!DOCTYPE html>
+<%
+ // Name is defined by app; do not throw if missing
+ final String appDisplayName = SystemProperties.containsProperty(SystemProperties.APP_DISPLAY_NAME)
+ ? SystemProperties.getProperty(SystemProperties.APP_DISPLAY_NAME)
+ : SystemProperties.APP_DISPLAY_NAME;
+%>
+
+<html>
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <title>Login</title>
+ <style>
+ html {
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ }
+ body {
+ padding-top: 15px;
+ }
+ .logo {
+ position: fixed;
+ left: 15px;
+ top: 15px;
+ z-index: -1;
+ }
+ .loginError {
+ font-size: 18px;
+ color: red;
+ text-align: center;
+ }
+ .login {
+ font-size: 16px;
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+ text-align: center;
+ width: 100%;
+ }
+ .login input[type=submit] {
+ font-size: 16px;
+ }
+ .terms {
+ font-size: 10px;
+ text-align: center;
+ margin-left: auto;
+ margin-right: auto;
+ }
+ .terms a {
+ font-size: 10px;
+ text-align: center;
+ margin-left: auto;
+ margin-right: auto;
+ }
+ </style>
+ </head>
+ <body>
+ <div class="login">
+ <img src="static/fusion/images/ecomp_trans.png" />
+ <h2>
+ <%=appDisplayName%>
+ </h2>
+ <br />
+ <form action="login_external" method="POST">
+ <label for="loginId">Login ID:</label>
+ <input id="loginId" name="loginId" type="text" style="width: 140px;height:25px;border-radius:7px;font-size:18px;padding-left:5px;" maxlength="30">
+ <br/>
+ <br/>
+ <label for="password">Password:</label>
+ <input id="password" name="password" type="password" style="width: 140px;height:25px;border-radius:7px;font-size:18px;padding-left:5px;"
+ maxlength="30" >
+ <br />
+ <br />
+ <input id="loginBtn" type="submit" alt="Login" value="Login">
+ </form>
+ </div>
+ <br />
+ <br />
+ <div class="loginError">${model.error}</div>
+ <br />
+ <br />
+ <br />
+ <br />
+ <br />
+ <br />
+ <div id="footer">
+ <div class="terms">
+ Copyright 2017 Open ECOMP and Linux Foundation.
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/epsdk-app-onap/src/main/webapp/WEB-INF/jsp/serviceModels.jsp b/epsdk-app-onap/src/main/webapp/WEB-INF/jsp/serviceModels.jsp new file mode 100755 index 00000000..1dbb3c0d --- /dev/null +++ b/epsdk-app-onap/src/main/webapp/WEB-INF/jsp/serviceModels.jsp @@ -0,0 +1,81 @@ +<link rel="stylesheet" type="text/css" href="app/vid/styles/aaiGetSubs.css" />
+<link rel="stylesheet" type="text/css" href="app/vid/styles/aaiSubDetails.css" />
+<link rel="stylesheet" type="text/css" href="app/vid/styles/aaiSubViewEdit.css" />
+<link rel="stylesheet" type="text/css" href="app/vid/styles/angular-ui-tree.css" />
+<link rel="stylesheet" type="text/css" href="app/vid/styles/dialogs.css" />
+<link rel="stylesheet" type="text/css" href="app/vid/styles/instantiate.css" />
+<link rel="stylesheet" type="text/css" href="app/vid/styles/vidTree.css" />
+<link rel="stylesheet" type="text/css" href="app/vid/styles/dialogs.css" />
+
+
+ <script>
+
+ var appDS2 = app;
+</script>
+ <script src="app/vid/scripts/controller/VidApp.js"></script>
+
+<!-- Latest compiled and minified JavaScript -->
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+
+<script src="app/vid/scripts/angular-ui-tree.js"></script>
+
+<script src="app/vid/scripts/constants/componentConstants.js"></script>
+<script src="app/vid/scripts/constants/fieldConstants.js"></script>
+<script src="app/vid/scripts/constants/vidConfiguration.js"></script>
+<script src="app/vid/scripts/constants/parameterConstants.js"></script>
+<script src="app/vid/scripts/controller/aaiSubscriberController.js"></script>
+<script src="app/vid/scripts/controller/creationDialogController.js"></script>
+<script src="app/vid/scripts/controller/deletionDialogController.js"></script>
+<script src="app/vid/scripts/controller/detailsDialogController.js"></script>
+<script src="app/vid/scripts/controller/statusDialogController.js"></script>
+<script src="app/vid/scripts/controller/InstantiationController.js"></script>
+<script src="app/vid/scripts/controller/msoCommitController.js"></script>
+<script src="app/vid/scripts/controller/ServiceModelController.js"></script>
+
+<script src="app/vid/scripts/directives/extensionsDirective.js"></script>
+<script src="app/vid/scripts/directives/parameterBlockDirective.js"></script>
+<script src="app/vid/scripts/directives/popupWindowDirective.js"></script>
+<script src="app/vid/scripts/directives/progressBarDirective.js"></script>
+<script src="app/vid/scripts/services/aaiService.js"></script>
+<script src="app/vid/scripts/services/asdcService.js"></script>
+<script src="app/vid/scripts/services/componentService.js"></script>
+<script src="app/vid/scripts/services/creationService.js"></script>
+<script src="app/vid/scripts/services/dataService.js"></script>
+<script src="app/vid/scripts/services/deletionService.js"></script>
+<script src="app/vid/scripts/services/detailsService.js"></script>
+<script src="app/vid/scripts/services/statusService.js"></script>
+<script src="app/vid/scripts/services/msoService.js"></script>
+<script src="app/vid/scripts/services/propertyService.js"></script>
+<script src="app/vid/scripts/services/utilityService.js"></script>
+<script src="app/vid/scripts/services/vnfService.js"></script>
+
+<%@ page import="org.openecomp.vid.mso.*"%>
+<%@ page import="org.openecomp.portalsdk.core.util.SystemProperties"%>
+<%
+ String properties = "{msoMaxPolls:" + SystemProperties.getProperty(MsoProperties.MSO_MAX_POLLS)
+ + ",msoMaxPollingIntervalMsec:"
+ + SystemProperties.getProperty(MsoProperties.MSO_POLLING_INTERVAL_MSECS) + "}";
+%>
+
+<div ng-controller="ServiceModelController"
+ ng-init="init(<%=properties%>);" ng-cloak>
+ <div ng-view></div>
+</div>
+<!-- Temporary solution for footer overlapping the men after talking to EComp SDK developer on 06/16/2016 -->
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
diff --git a/epsdk-app-onap/src/main/webapp/WEB-INF/jsp/testMso.jsp b/epsdk-app-onap/src/main/webapp/WEB-INF/jsp/testMso.jsp new file mode 100755 index 00000000..8678dcee --- /dev/null +++ b/epsdk-app-onap/src/main/webapp/WEB-INF/jsp/testMso.jsp @@ -0,0 +1,174 @@ +<link rel="stylesheet" type="text/css" href="app/vid/test/testMso.css" />
+<script src="app/vid/test/testMso.js"></script>
+
+<link rel="stylesheet" type="text/css" href="app/vid/styles/dialogs.css" />
+
+<script src="app/vid/scripts/controller/msoCommitController.js"></script>
+<script src="app/vid/scripts/controller/detailsDialogController.js"></script>
+<script src="app/vid/scripts/controller/statusDialogController.js"></script>
+
+<script src="app/vid/scripts/services/dataService.js"></script>
+<script src="app/vid/scripts/services/detailsService.js"></script>
+<script src="app/vid/scripts/services/statusService.js"></script>
+<script src="app/vid/scripts/services/componentService.js"></script>
+<script src="app/vid/scripts/services/propertyService.js"></script>
+<script src="app/vid/scripts/services/msoService.js"></script>
+<script src="app/vid/scripts/services/utilityService.js"></script>
+
+<script src="app/vid/scripts/directives/extensionsDirective.js"></script>
+<script src="app/vid/scripts/directives/parameterBlockDirective.js"></script>
+<script src="app/vid/scripts/directives/popupWindowDirective.js"></script>
+<script src="app/vid/scripts/directives/progressBarDirective.js"></script>
+
+<script src="app/vid/scripts/constants/componentConstants.js"></script>
+<script src="app/vid/scripts/constants/fieldConstants.js"></script>
+<script src="app/vid/scripts/constants/parameterConstants.js"></script>
+
+<!--
+ Read configuration properties from server-side properties settings and
+ pass to the test controller via the ng-include onload event.
+
+ Consider / investigate replacing this approach with an alternative
+ REST / Angular mechanism.
+-->
+<%@ page import="org.openecomp.vid.mso.*"%>
+<%@ page import="org.openecomp.portalsdk.core.util.SystemProperties"%>
+<%
+ String properties = "{msoMaxPolls:" + SystemProperties.getProperty(MsoProperties.MSO_MAX_POLLS)
+ + ",msoMaxPollingIntervalMsec:"
+ + SystemProperties.getProperty(MsoProperties.MSO_POLLING_INTERVAL_MSECS) + "}";
+%>
+
+<div ng-controller="testController" ng-init="init(<%=properties%>);"
+ ng-cloak>
+ <div popup-window class="popupContents" ngx-show="{{popup.isVisible}}"
+ ng-cloak>
+ <div ng-include="'app/vid/scripts/view-models/msoCommit.htm'"
+ onload="autoStartCommitTest();"></div>
+ <div ng-include="'app/vid/scripts/view-models/detailsDialog.htm'"
+ onload="autoStartQueryTest();"></div>
+ </div>
+
+ <h1 class="heading2">
+ <center>Various MSO Tests</center>
+ </h1>
+ <div>
+ <input type="checkbox" ng-change="testMsoModeChanged();"
+ ng-model="isTestMsoMode"></input> <span>Use test MSO
+ controller</span>
+ </div>
+ <div>
+ <h3>These actions are expected to return successfully.</h3>
+ <button type="button" ng-click="queryServiceInstance();" att-button
+ btn-type="primary" size="small">Query Service Instance</button>
+ <button type="button" ng-click="createServiceInstance();" att-button
+ btn-type="primary" size="small">Create Service Instance</button>
+ <button type="button" ng-click="deleteServiceInstance();" att-button
+ btn-type="primary" size="small">Delete Service Instance</button>
+ <button type="button" ng-click="createNetworkInstance();" att-button
+ btn-type="primary" size="small">Create Network Instance</button>
+ <button type="button" ng-click="deleteNetworkInstance();" att-button
+ btn-type="primary" size="small">Delete Network Instance</button>
+ <button type="button" ng-click="createVNFInstance();" att-button
+ btn-type="primary" size="small">Create VNF Instance</button>
+ <button type="button" ng-click="deleteVNFInstance();" att-button
+ btn-type="primary" size="small">Delete VNF Instance</button>
+ <button type="button" ng-click="createVolumeGroupInstance();"
+ att-button btn-type="primary" size="small">Create Volume
+ Group</button>
+ <button type="button" ng-click="deleteVolumeGroupInstance();"
+ att-button btn-type="primary" size="small">Delete Volume
+ Group</button>
+ <button type="button" ng-click="createVFModuleInstance();" att-button
+ btn-type="primary" size="small">Create VF Module</button>
+ <button type="button" ng-click="deleteVFModuleInstance();" att-button
+ btn-type="primary" size="small">Delete VF Module</button>
+ </div>
+ <hr />
+ <h3>These actions are expected to generate errors. These tests assume the above
+ "Use test MSO controller" checkbox is checked. All tests are base on the Create Service
+ Instance transaction.</h3>
+ <ol>
+ <li>
+ <button type="button"
+ ng-click="generateError('ERROR_POLICY_EXCEPTION');" att-button
+ btn-type="primary" size="small">Policy Exception</button> <span>Initial
+ response contains policy exception</span>
+ </li>
+ <li>
+ <button type="button"
+ ng-click="generateError('ERROR_SERVICE_EXCEPTION');" att-button
+ btn-type="primary" size="small">Service Exception</button> <span>Initial
+ response contains service exception</span>
+ </li>
+ <li>
+ <button type="button" ng-click="generateError('ERROR_POLL_FAILURE');"
+ att-button btn-type="primary" size="small">Poll Failure</button> <span>Subsequent
+ getOrchestrationRequest poll response contains MSO failure condition</span>
+ </li>
+ <li>
+ <button type="button"
+ ng-click="generateError('ERROR_INVALID_FIELD_INITIAL');" att-button
+ btn-type="primary" size="small">Initial Invalid</button> <span>Initial
+ response contains invalid data field</span>
+ </li>
+ <li>
+ <button type="button"
+ ng-click="generateError('ERROR_INVALID_FIELD_POLL');" att-button
+ btn-type="primary" size="small">Poll Invalid</button> <span>Subsequent
+ getOrchestrationRequest poll response contains invalid data field</span>
+ </li>
+ <li>
+ <button type="button"
+ ng-click="generateError('ERROR_GENERAL_SERVER_EXCEPTION');"
+ att-button btn-type="primary" size="small">Server Exception</button>
+ <span>VID controller code generates general exception</span>
+ </li>
+ <li>
+ <button type="button" ng-click="generateError('ERROR_MAX_POLLS');"
+ att-button btn-type="primary" size="small">Maximum Polls</button> <span>Maximum
+ poll attempts exceeded</span>
+ </li>
+ <li>
+ <button type="button"
+ ng-click="generateError('ERROR_SERVER_TIMEOUT_INITIAL');" att-button
+ btn-type="primary" size="small">Initial Timeout</button> <span>Timeout
+ on initial response</span>
+ </li>
+ <li>
+ <button type="button"
+ ng-click="generateError('ERROR_SERVER_TIMEOUT_POLL');" att-button
+ btn-type="primary" size="small">Poll Timeout</button> <span>Timeout
+ on subsequent getOrchestrationRequest poll response</span>
+ </li>
+ <li>
+ <button type="button" ng-click="generateInvalidUrl404();" att-button
+ btn-type="primary" size="small">Invalid URL (404)</button> <span>GUI
+ front-end specifies invalid URL - HTTP 404 response expected</span>
+ </li>
+ <li>
+ <button type="button" ng-click="generateInvalidUrl405();" att-button
+ btn-type="primary" size="small">Invalid URL (405)</button> <span>GUI
+ front-end specifies invalid URL - HTTP 405 response expected</span>
+ </li>
+ </ol>
+
+</div>
+<!-- Temporary solution for footer overlapping the men after talking to EComp SDK developer on 06/16/2016 -->
+
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+
diff --git a/epsdk-app-onap/src/main/webapp/WEB-INF/jsp/testViewEdit.jsp b/epsdk-app-onap/src/main/webapp/WEB-INF/jsp/testViewEdit.jsp new file mode 100755 index 00000000..59c8a317 --- /dev/null +++ b/epsdk-app-onap/src/main/webapp/WEB-INF/jsp/testViewEdit.jsp @@ -0,0 +1,172 @@ +<link rel="stylesheet" type="text/css"
+ href="app/vid/test/testViewEdit.css" />
+
+<script src="app/vid/test/testAaiData.js"></script>
+<script src="app/vid/test/testViewEdit.js"></script>
+
+<link rel="stylesheet" type="text/css" href="app/vid/styles/dialogs.css" />
+
+<script src="app/vid/scripts/controller/creationDialogController.js"></script>
+<script src="app/vid/scripts/controller/deletionDialogController.js"></script>
+<script src="app/vid/scripts/controller/detailsDialogController.js"></script>
+<script src="app/vid/scripts/controller/statusDialogController.js"></script>
+<script src="app/vid/scripts/controller/msoCommitController.js"></script>
+
+<script src="app/vid/scripts/services/aaiService.js"></script>
+<script src="app/vid/scripts/services/asdcService.js"></script>
+<script src="app/vid/scripts/services/creationService.js"></script>
+<script src="app/vid/scripts/services/dataService.js"></script>
+<script src="app/vid/scripts/services/deletionService.js"></script>
+<script src="app/vid/scripts/services/detailsService.js"></script>
+<script src="app/vid/scripts/services/statusService.js"></script>
+<script src="app/vid/scripts/services/componentService.js"></script>
+<script src="app/vid/scripts/services/msoService.js"></script>
+<script src="app/vid/scripts/services/propertyService.js"></script>
+<script src="app/vid/scripts/services/utilityService.js"></script>
+
+<script src="app/vid/scripts/directives/extensionsDirective.js"></script>
+<script src="app/vid/scripts/directives/parameterBlockDirective.js"></script>
+<script src="app/vid/scripts/directives/popupWindowDirective.js"></script>
+<script src="app/vid/scripts/directives/progressBarDirective.js"></script>
+
+<script src="app/vid/scripts/constants/componentConstants.js"></script>
+<script src="app/vid/scripts/constants/fieldConstants.js"></script>
+<script src="app/vid/scripts/constants/parameterConstants.js"></script>
+
+<!--
+ Read configuration properties from server-side properties settings and
+ pass to the test controller via the ng-include onload event.
+
+ Consider / investigate replacing this approach with an alternative
+ REST / Angular mechanism.
+-->
+<%@ page import="org.openecomp.vid.mso.*"%>
+<%@ page import="org.openecomp.portalsdk.core.util.SystemProperties"%>
+<%
+ String properties = "{msoMaxPolls:" + SystemProperties.getProperty(MsoProperties.MSO_MAX_POLLS)
+ + ",msoMaxPollingIntervalMsec:"
+ + SystemProperties.getProperty(MsoProperties.MSO_POLLING_INTERVAL_MSECS) + "}";
+%>
+
+<div ng-controller="testViewEditController"
+ ng-init="init(<%=properties%>);" ng-cloak>
+
+ <div popup-window class="popupContents" ngx-show="{{popup.isVisible}}"
+ ng-cloak>
+ <div ng-include="'app/vid/scripts/view-models/creationDialog.htm'"></div>
+ <div ng-include="'app/vid/scripts/view-models/deletionDialog.htm'"></div>
+ <div ng-include="'app/vid/scripts/view-models/detailsDialog.htm'"
+ onload="autoStartTest();"></div>
+ </div>
+
+ <h1 class="heading2">
+ <center>Test View Edit Page</center>
+ </h1>
+ <hr />
+ These buttons simulate the add, delete and "show details" (called
+ "script" in User Stories) icons (or buttons) that are expected on the
+ view / edit page.
+ <hr />
+ <div>
+ <input type="checkbox" ng-change="testMsoModeChanged();"
+ ng-model="isTestMsoMode"></input> <span>Use test MSO
+ controller</span>
+ </div>
+ <h3 ng-style="callbackStyle">CALLBACK: {{callbackResults}}</h3>
+ <table>
+ <tr>
+ <td>Service</td>
+ <td>
+ <button type="button" ng-click="createService();" att-button
+ btn-type="primary" size="small">Add</button>
+ </td>
+ <td>
+ <button type="button" ng-click="deleteService();" att-button
+ btn-type="primary" size="small">Delete</button>
+ </td>
+ <td>
+ <button type="button" ng-click="showServiceDetails();" att-button
+ btn-type="primary" size="small">Show Details</button>
+ </td>
+ </tr>
+ <tr>
+ <td>VNF</td>
+ <td>
+ <button type="button" ng-click="createVnf();" att-button
+ btn-type="primary" size="small">Add</button>
+ </td>
+ <td>
+ <button type="button" ng-click="deleteVnf();" att-button
+ btn-type="primary" size="small">Delete</button>
+ </td>
+ <td>
+ <button type="button" ng-click="showVnfDetails();" att-button
+ btn-type="primary" size="small">Show Details</button>
+ </td>
+ </tr>
+ <tr>
+ <td>VF Module</td>
+ <td>
+ <button type="button" ng-click="createVfModule();" att-button
+ btn-type="primary" size="small">Add</button>
+ </td>
+ <td>
+ <button type="button" ng-click="deleteVfModule();" att-button
+ btn-type="primary" size="small">Delete</button>
+ </td>
+ <td>
+ <button type="button" ng-click="showVfModuleDetails();" att-button
+ btn-type="primary" size="small">Show Details</button>
+ </td>
+ </tr>
+ <tr>
+ <td>Volume Group</td>
+ <td>
+ <button type="button" ng-click="createVolumeGroup();" att-button
+ btn-type="primary" size="small">Add</button>
+ </td>
+ <td>
+ <button type="button" ng-click="deleteVolumeGroup();" att-button
+ btn-type="primary" size="small">Delete</button>
+ </td>
+ <td>
+ <button type="button" ng-click="showVolumeGroupDetails();"
+ att-button btn-type="primary" size="small">Show Details</button>
+ </td>
+ </tr>
+ <tr>
+ <td>Network</td>
+ <td>
+ <button type="button" ng-click="createNetwork();" att-button
+ btn-type="primary" size="small">Add</button>
+ </td>
+ <td>
+ <button type="button" ng-click="deleteNetwork();" att-button
+ btn-type="primary" size="small">Delete</button>
+ </td>
+ <td>
+ <button type="button" ng-click="showNetworkDetails();" att-button
+ btn-type="primary" size="small">Show Details</button>
+ </td>
+ </tr>
+ </table>
+</div>
+
+<!-- Temporary solution for footer overlapping the men after talking to EComp SDK developer on 06/16/2016 -->
+
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+
diff --git a/epsdk-app-onap/src/main/webapp/WEB-INF/jsp/viewlog.jsp b/epsdk-app-onap/src/main/webapp/WEB-INF/jsp/viewlog.jsp new file mode 100755 index 00000000..c1bf19c7 --- /dev/null +++ b/epsdk-app-onap/src/main/webapp/WEB-INF/jsp/viewlog.jsp @@ -0,0 +1,33 @@ +
+
+<div ng-controller="viewLogController">
+
+ <h1 class="heading1"><center>View Log - Page under Construction...</center></h1>
+ <br>
+
+
+</div>
+<!-- Temporary solution for footer overlapping the men after talking to EComp SDK developer on 06/16/2016 -->
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+
+
diff --git a/epsdk-app-onap/src/main/webapp/WEB-INF/jsp/welcome.jsp b/epsdk-app-onap/src/main/webapp/WEB-INF/jsp/welcome.jsp new file mode 100755 index 00000000..9cb6f85b --- /dev/null +++ b/epsdk-app-onap/src/main/webapp/WEB-INF/jsp/welcome.jsp @@ -0,0 +1,45 @@ +
+<div>
+ <h1 class="heading1">ONAP</h1>
+ <br>
+ <h1 class="heading1"><u>Welcome to VID</u></h1>
+ <br>
+ The Virtual Infrastructure Deployment (VID) application allows infrastructure service deployment operators
+ to instantiate service instances and their constituent parts for Distributed service models required by the
+ ONAP service operations that manage them, such as Mobility Network Services, etc.
+ The models are defined by ONAP component SDC. The service
+ deployment operator selects the service operations owner and model that they wish to instantiate. After
+ entry of appropriate data, the operator instructs VID to direct another ONAP component, MSO, to instantiate
+ the selected service model. Once the service instance has been instantiated, the service operator can instruct
+ VID to direct MSO to instantiate the service instance's component VNFs, VF Modules, Networks and Volume Groups.
+ The VID user can also search for, and display, existing service instances and direct the instantiation of
+ subsequent instance components.
+ <br><br>
+
+ <h1 class="heading1"><a href="mailto:portal@lists.onap.org" target="_top">Contact Us</a></h1>
+ <a href="mailto:portal@lists.onap.org" target="_top">Please click here to contact us.</a>
+
+
+
+<BR>
+
+
+
+</div>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+
+
|