SFF Form 51/31351/1
authorStanislav Jamrich <[email protected]>
Tue, 15 Dec 2015 14:30:34 +0000 (15:30 +0100)
committerStanislav Jamrich <[email protected]>
Tue, 15 Dec 2015 14:31:19 +0000 (15:31 +0100)
- implemented yang changes for SFF
- fixed some cosmetic issues

Change-Id: I1fb8b100381b68438acaee62eefbcbab18986f79
Signed-off-by: Stanislav Jamrich <[email protected]>
sfc-ui/module/src/main/resources/sfc/assets/data/locale-en_US.json
sfc-ui/module/src/main/resources/sfc/serviceforwarder/serviceforwarder.controller.js
sfc-ui/module/src/main/resources/sfc/serviceforwarder/serviceforwarder.create.tpl.html
sfc-ui/module/src/main/resources/sfc/serviceforwarder/serviceforwarder.services.js
sfc-ui/module/src/main/resources/sfc/sfc.controller.js

index 0f0efbbc7e7de2d726525cf179909b07f3071fb9..b70372eca547945e177b42994c592342e005f1fc 100644 (file)
@@ -55,6 +55,8 @@
     "SFC_FUNCTION_CREATE_FAILMODE": "Select a failmode",\r
     "SFC_FUNCTION_CREATE_IP": "Example: 10.0.0.1",\r
     "SFC_FUNCTION_DATA_PLANE_LOCATOR": "Data plane locator",\r
+    "SFC_SF_DATA_PLANE_LOCATOR": "Service function data plane locator",\r
+    "SFC_SFF_DATA_PLANE_LOCATOR": "Service function forwarder data plane locator",\r
     "SFC_FUNCTION_CREATE_NONEXISTENT": "Enter yet nonexistent Service function",\r
     "SFC_FUNCTION_SHORT_REST_URI": "REST URI",\r
     "SFC_FUNCTION_REST_URI": "URI of REST based management",\r
index 886347ad3da4d0bd1055dc3cd998d547edd379e1..f9ea04c4a8bfcc99a323d5fa3f879d3000255592 100644 (file)
@@ -138,6 +138,7 @@ define(['app/sfc/sfc.module'], function (sfc) {
   sfc.register.controller('serviceForwarderCreateCtrl', function ($scope, $state, $stateParams, ServiceNodeSvc, ServiceForwarderSvc, ServiceForwarderHelper, ServiceFunctionSvc) {
 
     $scope.selectOptions = ServiceForwarderHelper.selectOptions($scope);
+    $scope.chosenSfDpls = {};
 
     if (angular.isDefined($stateParams.sffName) || angular.isDefined($stateParams.sff)) {
       // we'll wait for data to edit
@@ -168,7 +169,7 @@ define(['app/sfc/sfc.module'], function (sfc) {
 
       ServiceFunctionSvc.getArray(function (data) {
         $scope.sfs = data;
-
+        
         if (angular.isDefined($stateParams.sff)) {
           $scope.data = JSON.parse($stateParams.sff);
           ServiceForwarderHelper.removeNonExistentSn($scope.data, $scope.sns);
@@ -182,6 +183,7 @@ define(['app/sfc/sfc.module'], function (sfc) {
             ServiceForwarderHelper.removeNonExistentSn($scope.data, $scope.sns);
             _.each($scope.data['service-function-dictionary'], function (sf) {
               ServiceForwarderHelper.sfUpdate(sf, $scope);
+              $scope.sfChangeListener(sf);
             });
           });
         }
@@ -204,10 +206,18 @@ define(['app/sfc/sfc.module'], function (sfc) {
       ServiceForwarderHelper.removeFunction(index, $scope);
     };
 
+
     $scope.sfChangeListener = function (choosenSf) {
       ServiceForwarderHelper.sfChangeListener(choosenSf, $scope);
     };
 
+    $scope.initOVSBridge = function(locator){
+      locator['ovs-bridge'] = {};
+      locator['ovs-options'] = {};
+    }
+
+
+
     $scope.submit = function () {
       //reformat sff-interfaces string array to object array
       _.each($scope.data['service-function-dictionary'], function (sf) {
index 48ce2e8864f0f0083f93379b1cda45f95ecec487..2df7cd9eef0b6a52ed234dafddbb23bdcb14254a 100644 (file)
 
         <service-locator locator="locator['data-plane-locator']" constants="serviceLocatorConstants" id-suffix="loc_{{$index}}"></service-locator>
 
-        <div style="text-align: right; margin-bottom: 40px" ng-init="function.defineOVSBridge = (locator['ovs_bridge'].length > 0)">
+        <div style="text-align: right; margin-bottom: 40px" ng-init="function.defineOVSBridge = (locator['ovs-bridge'].uuid.length > 0)">
             <span class="spanTip pull-left">
-                <input type="checkbox" ng-model="function.defineOVSBridge" id="existentSf">
+                <input type="checkbox" ng-model="function.defineOVSBridge" id="existentSf" ng-click="initOVSBridge(locator)">
                 {{ 'SFC_FUNCTION_DEFINE_OVS_BRIDGE' | translate }}
             </span>
         </div>
-
         <div sfc-watch-for-reinit="locator"
              ng-init="locator['ovs-bridge'] = locator['ovs-bridge'] || {};" ng-if="function.defineOVSBridge">
             <!-- <h4 style="padding-left: 30px;">{{'SFC_FORWARDER_OVS_BRIDGE' | translate}}</h4> -->
         <div ng-if="!(function.nonExistent)">
             <div class="form-group" show-validation-error>
                 <label ui-select2-label="function_name_{{$index}}" class="col-lg-6 control-label small-label">
-                    {{'SFC_FUNCTION_NAME_TYPE_IP' | translate}}
+                    {{'SFC_FUNCTION_NAME' | translate}}
                 </label>
 
                 <div class="col-lg-6">
                             ng-required="true" data-placeholder="{{'SFC_FUNCTION_CREATE_SELECT_NAME' | translate}}"
                             ng-change="sfChangeListener(function)">
                         <option value=""></option>
-                        <option ng-repeat="sf in sfs" value="{{sf.name}}">{{sf.name}} / {{sf.type}} /
-                            {{sf['ip-mgmt-address']}}
+                        <option ng-repeat="sf in sfs" value="{{sf.name}}">{{sf.name}}
                         </option>
                     </select>
                 </div>
                 </div>
             </div>
 
-            <service-locator-selector function="function" ng-show="function['name']" id-suffix="func_loc_{{$index}}"></service-locator-selector>
+            <div class="form-group" ng-show="function['name']">
+                <label ui-select2-label="function_sf_dpl_{{$index}}" class="col-lg-6 control-label small-label">
+                    {{'SFC_SF_DATA_PLANE_LOCATOR' | translate}}
+                </label>
+
+                <div class="col-lg-6">
+                    <select class="form-control input-sm" id="function_dpl_{{$index}}" ui-select2="{allowClear: true}" ng-model="function['sff-sf-data-plane-locator']['sf-dpl-name']"
+                            ng-required="false">
+
+                        <option value=""></option>
+                        <option ng-repeat="t in chosenSfDpls[function['name']]" value="{{t.name}}">{{t.name}}</option>
+                    </select>
+                </div>
+            </div>
+
+            <div class="form-group" ng-show="function['name']">
+                <label ui-select2-label="function_sff_dpl_{{$index}}" class="col-lg-6 control-label small-label">
+                    {{'SFC_SFF_DATA_PLANE_LOCATOR' | translate}}
+                </label>
+
+                <div class="col-lg-6">
+                    <select class="form-control input-sm" id="function_f_dpl_{{$index}}" ui-select2="{allowClear: true}" ng-model="function['sff-sf-data-plane-locator']['sff-dpl-name']" ng-required="false">
+
+                        <option value=""></option>
+                        <option ng-repeat="t in data['sff-data-plane-locator']" value="{{t.name}}">{{t.name}}</option>
+                    </select>
+                </div>
+            </div>
+
+            <!-- <service-locator-selector function="function" ng-show="function['name']" id-suffix="func_loc_{{$index}}"></service-locator-selector> -->
 
             <div class="form-group" ng-show="function['name']">
                 <label ui-select2-label="function_interfaces_{{$index}}" class="col-lg-6 control-label small-label">
                 </div>
             </div>
 
-            <div class="form-group" show-validation-error>
+            <!-- <div class="form-group" show-validation-error>
                 <label ui-select2-label="function_type_{{$index}}" class="col-lg-6 control-label small-label">
                     {{'SFC_FUNCTION_TYPE' | translate}}
                 </label>
                         <option ng-repeat="t in serviceFunctionConstants.type" value="{{t}}">{{t}}</option>
                     </select>
                 </div>
-            </div>
+            </div> -->
 
             <div class="form-group">
                 <label ui-select2-label="function_failmode2_{{$index}}" class="col-lg-6 control-label small-label">
                 </div>
             </div>
 
-            <service-locator constants="serviceLocatorConstants" locator="function['sff-sf-data-plane-locator']" id-suffix="func_loc_{{$index}}"></service-locator>
+            <div class="form-group" ng-show="function['name']">
+                
+                <label for="function_sf_dpl2_{{$index}}" class="col-lg-6 control-label small-label">
+                    {{'SFC_SF_DATA_PLANE_LOCATOR' | translate}}
+                </label>
+
+                <div class="col-lg-6">
+                    <input type="text" class="form-control input-sm" id="function_dpl2_{{$index}}" name="function_dpl2" 
+                           ng-model="function['sff-sf-data-plane-locator']['sf-dpl-name']">
+                </div>
+                
+            </div>
+
+            <div class="form-group" ng-show="function['name']">
+                <label ui-select2-label="function_sff_dpl_{{$index}}" class="col-lg-6 control-label small-label">
+                    {{'SFC_SFF_DATA_PLANE_LOCATOR' | translate}}
+                </label>
+
+                <div class="col-lg-6">
+                    <select class="form-control input-sm" id="function_f_dpl_{{$index}}" ui-select2="{allowClear: true}" ng-model="function['sff-sf-data-plane-locator']['sff-dpl-name']" ng-required="false">
+
+                        <option value=""></option>
+                        <option ng-repeat="t in data['sff-data-plane-locator']" value="{{t.name}}">{{t.name}}</option>
+                    </select>
+                </div>
+            </div>
+
+            <!-- <service-locator constants="serviceLocatorConstants" locator="function['sff-sf-data-plane-locator']" id-suffix="func_loc_{{$index}}"></service-locator> -->
 
             <div class="form-group">
                 <label ui-select2-label="function_interfaces2_{{$index}}" class="col-lg-6 control-label small-label">
             </div>
         </div>
 
-        <div ng-if="function['sff-sf-data-plane-locator']"
+        <!-- <div ng-if="function['sff-sf-data-plane-locator']"
              sfc-watch-for-reinit="function['sff-sf-data-plane-locator']"
              ng-init="function['sff-sf-data-plane-locator']['ovs-bridge'] = function['sff-sf-data-plane-locator']['ovs-bridge'] || {};">
             <h4 style="padding-left: 30px;">{{'SFC_FORWARDER_OVS_BRIDGE' | translate}}</h4>
             <sff-bridge bridge="function['sff-sf-data-plane-locator']['ovs-bridge']"
                         id-suffix="func_loc_{{$index}}">
             </sff-bridge>
-        </div>
+        </div> -->
 
     </div>
 
index b95f542e186330a671f68560ca92275a22d56fc5..12c2669245e14aef5cc90a04c93c5a3289a7dd09 100644 (file)
@@ -90,12 +90,17 @@ define(['app/sfc/sfc.module'], function (sfc) {
       choosenSf.type = sfModelData.type;
     };
 
+    svc.setChosenSfDpls = function(chosenSfModel, $scope){
+      $scope.chosenSfDpls[chosenSfModel.name] = chosenSfModel['sf-data-plane-locator'];
+    };
+
     svc.sfChangeListener = function (choosenSf, $scope) {
       if (angular.isDefined(choosenSf)) {
         var sfModelData = _.findWhere($scope.sfs, {name: choosenSf.name});
 
         if (angular.isDefined(sfModelData)) {
-          svc.addSfTypeToChoosenSf(choosenSf, sfModelData);
+          //svc.addSfTypeToChoosenSf(choosenSf, sfModelData);
+          svc.setChosenSfDpls(sfModelData, $scope);
         }
       }
     };
index 2ffb48a0c70fed75e5937620c07bfc5e60dfa052..836bac36cfa34d156476098e0ac877a8449fb1ab 100644 (file)
@@ -134,9 +134,8 @@ define([].concat(modules).concat(services).concat(directives).concat(controllers
         }],
         "service-function-dictionary": [{
           "nonExistent": false,
-          "sff-sf-data-plane-locator": {"ovs-bridge": {}},
-          "sff-interfaces": [],
-          "type": "dpi"
+          "sff-sf-data-plane-locator": {},
+          "sff-interfaces": []
         }],
         "service-node": null, "name": "SFF1", "rest-uri": "http://www.example.com/sffs/sff-bootstrap"
       },