migrate discovery source codes from OPEN-O
[msb/discovery.git] / discovery-ui / src / main / resources / iui / microservices / js / serviceController.js
diff --git a/discovery-ui/src/main/resources/iui/microservices/js/serviceController.js b/discovery-ui/src/main/resources/iui/microservices/js/serviceController.js
new file mode 100644 (file)
index 0000000..e475eb8
--- /dev/null
@@ -0,0 +1,1001 @@
+/*\r
+ * Copyright 2016 ZTE, Inc. and others.\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *     http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+var table;\r
+var vm = avalon\r
+               .define({\r
+                       $id : "serviceController",\r
+                       $apiGatewayServiceName:"apigateway",\r
+                       ifshowApiGatewayService:false,\r
+                       tcp_udp_port_range:["40001","40100"],\r
+                       apiGatewayService:[],\r
+                       apiGatewayService_all:[],\r
+                       routeService:[],\r
+                       routeService_all:[],\r
+                       server_rtn:{\r
+                               info_block:false,\r
+                               warning_block:false,\r
+                               rtn_info:""\r
+                       },\r
+                       node_rtn:{\r
+                               info_block:false,\r
+                               warning_block:false,\r
+                               rtn_info:""\r
+                       },\r
+                       if_publish_port:[],\r
+                       if_http_publish_port:[],\r
+                       $msbProtocol :["REST","HTTP","UI","MQ","FTP","SNMP","TCP","UDP"],\r
+                       $healthCheckType:["","TTL","HTTP","TCP"],\r
+                       $ha_role_Type:["","active","standby"],\r
+                       msbLbPolicyRange:[\r
+                       {\r
+                                       name:$.i18n.prop("org_onap_msb_discover_lbpolicy_round"),\r
+                                       value:"round-robin"\r
+                               },\r
+                         {\r
+                                       name:"IPHash",\r
+                                       value:"ip_hash"\r
+                               },\r
+                               /*{\r
+                                       name:$.i18n.prop("org_onap_msb_discover_lbpolicy_leastconn"),\r
+                                       value:"least_conn"\r
+                               },*/\r
+                               {\r
+                                       name:$.i18n.prop("org_onap_msb_discover_lbpolicy_clientcustom"),\r
+                                       value:"client_custom"\r
+                               }       \r
+                       ],\r
+                                               \r
+                       $msbRouteUrl:apiBasePath+'/services?is_manual=true',    \r
+                       $msbRouteInstanceUrl :apiBasePath+'/services/{serviceName}/version/{version}',  \r
+                       $msbRouteNodesUrl :apiBasePath+'/services/{serviceName}/version/{version}/nodes',\r
+                       $apiGatewayInfoUrl :apiBasePath+'/services/apigatewayserviceinfo',\r
+                       $tcpudpportrangeUrl:apiBasePath+'/services/tcpudpportrange',\r
+                       publishUrl:{\r
+                               publishUrl4SysOut:"",\r
+                               publishUrl4SysIn:"",\r
+                               ifShowPublishUrl4SysOut:false,\r
+                               ifShowPublishUrl4SysIn:false\r
+\r
+                       },      \r
+                       \r
+                       targetServiceHost:"",\r
+                       msbRouteArray :  [],                    \r
+                       msbRouteInfo : {        \r
+                           oldServiceName:"",  \r
+                           oldVersion:"",      \r
+                           oldPublic_port:"",                  \r
+                               serviceName : "",\r
+                               version:"",\r
+                               status:"0",\r
+                               nodes:[],       \r
+                               url:"",\r
+                               protocol:"",\r
+                               visualRange:"",\r
+                               visualRangeArray:[],\r
+                               lb_policy:"",\r
+                               publish_port:"",\r
+                               namespace:"",\r
+                               network_plane_type:"",\r
+                               host:"",\r
+                               path:""                 \r
+                       },\r
+                       nodeInfo:{\r
+                               ip:"",\r
+                               port:"",\r
+                               weight:"",\r
+                               max_fails:"",\r
+                               fail_timeout:"",\r
+                               checkType:"",\r
+                               checkUrl:"",\r
+                               checkInterval:"",\r
+                               checkTimeOut:"",\r
+                               ttl:"",\r
+                               ha_role:""\r
+                       },\r
+                       updateServiceInfo:{\r
+                               serviceName : "",\r
+                               version:"",\r
+                               namespace:"",\r
+                               authtype:""\r
+\r
+                       },\r
+                       oldNodeInfo:{\r
+                               ip:"",\r
+                               port:""\r
+                       },\r
+                       nodeDlgInfo:{\r
+                               titleName:"",\r
+                               saveType:""\r
+                       },\r
+                       pageInfo:{\r
+                               pageType:"add", \r
+                               pageTitle:"",   \r
+\r
+                       },                                                                                                              \r
+                       initMSBRoute:function(){\r
+                               vm.initIUIfori18n();\r
+\r
+                               var url= window.location.search.substr(1);\r
+                               vm.pageInfo.pageType=routeUtil.getQueryString(url,"type");\r
+\r
+                               \r
+\r
+                               if(vm.pageInfo.pageType=="add"){\r
+                               vm.addMsbRoute();\r
+                               vm.getApigatewayInfo("all");\r
+                               vm.getApigatewayInfo("");\r
+                               vm.pageInfo.pageTitle=$.i18n.prop("org_onap_msb_discover_form_title_add");\r
+\r
+                            }\r
+                            else{\r
+                               vm.updateServiceInfo.serviceName=routeUtil.getQueryString(url,"serviceName");\r
+                                       vm.updateServiceInfo.version=routeUtil.getQueryString(url,"version");\r
+                                       vm.updateServiceInfo.authtype=routeUtil.getQueryString(url,"authtype");\r
+                                       vm.updateServiceInfo.namespace=routeUtil.getQueryString(url,"namespace");\r
+\r
+                                       vm.initUpdateRoute(vm.updateServiceInfo.serviceName,vm.updateServiceInfo.version,vm.updateServiceInfo.namespace);       \r
+                                   vm.getApigatewayInfo("all");\r
+                                   vm.getApigatewayInfo(vm.updateServiceInfo.namespace);\r
+\r
+\r
+\r
+                                     if(vm.pageInfo.pageType=="update"){\r
+                                       vm.pageInfo.pageTitle=$.i18n.prop("org_onap_msb_discover_form_title_update");                          \r
+\r
+                                    }\r
+                                    else if(vm.pageInfo.pageType=="view"){\r
+                                       vm.pageInfo.pageTitle=$.i18n.prop("org_onap_msb_discover_form_title_view");                           \r
+\r
+                                    }\r
+                            }\r
+\r
+                            vm.getTcpUdpPortRangeUrl();\r
+       \r
+                  \r
+                       },\r
+                       \r
+               returnList:function(){\r
+               \r
+                       window.history.back(-1); \r
+               },\r
+               closePage:function(){\r
+               \r
+                       window.close(); \r
+               },\r
+               \r
+               addMsbRoute:function(){\r
+\r
+                       vm.msbRouteInfo.serviceName=""; \r
+                               vm.msbRouteInfo.version="";\r
+                               vm.msbRouteInfo.url="";\r
+                               vm.msbRouteInfo.protocol="";\r
+                               vm.msbRouteInfo.publish_port="";\r
+                               vm.msbRouteInfo.lb_policy="";\r
+                               vm.msbRouteInfo.visualRange="";\r
+                               vm.msbRouteInfo.visualRangeArray=[],\r
+                               vm.msbRouteInfo.nodes=[];                                       \r
+                               vm.msbRouteInfo.status="1";     \r
+                               vm.msbRouteInfo.namespace="";\r
+                               vm.msbRouteInfo.network_plane_type="";\r
+                               vm.msbRouteInfo.host="";\r
+                               vm.msbRouteInfo.path="";\r
+                       \r
+                               \r
+                               vm.server_rtn.warning_block=false;\r
+                               vm.server_rtn.info_block=false;\r
+\r
+                               $('#labels').val("");\r
+                               $('#labels').on('tokenfield:createdtoken', function (e) {\r
+                                                           var re = /\S+:\S+/\r
+                                                           var valid = re.test(e.attrs.value)\r
+                                                           if (!valid) {\r
+                                                             $(e.relatedTarget).addClass('invalid')\r
+                                                               }\r
+                                                           }).tokenfield();\r
+                               $('#metadata').val("");\r
+                               $('#metadata').on('tokenfield:createdtoken', function (e) {\r
+                                                           var re = /\S+:\S+/\r
+                                                           var valid = re.test(e.attrs.value)\r
+                                                           if (!valid) {\r
+                                                             $(e.relatedTarget).addClass('invalid')\r
+                                                               }\r
+                                                           }).tokenfield();\r
+\r
+\r
+                               $(".form-group").each(function () {\r
+                                               $(this).removeClass('has-success');\r
+                                               $(this).removeClass('has-error');\r
+                                               $(this).find(".help-block[id]").remove();\r
+                                               $(this).find(".form-tip").removeClass('form-input-focus');\r
+                                               //$(this).find(".item-tip").removeClass('item-tip-focus');\r
+                                       });\r
+\r
+               },\r
+               initUpdateRoute:function(serviceName,version,namespace){\r
+                       var url= vm.$msbRouteInstanceUrl;\r
+                                   var version2=version==""?"null":version;\r
+                                   var serviceName2= serviceName.replace(/\//g,"*");\r
+                        url=url.replace("{serviceName}",serviceName2).replace("{version}",version2)+"?ifPassStatus=false&namespace="+namespace;\r
+       \r
+                       $.ajax({\r
+                       "type": 'get',\r
+                       "url":  url,\r
+                       "dataType": "json",\r
+                       success: function (msbRouteInfo) {  \r
+                               //vm.msbRouteInfo.serviceName=(msbRouteInfo.protocol=="UI"?msbRouteInfo.serviceName.replace("IUI_",""):msbRouteInfo.serviceName);\r
+                                                       vm.msbRouteInfo.serviceName=msbRouteInfo.serviceName;\r
+                                                       vm.msbRouteInfo.oldServiceName=msbRouteInfo.serviceName;\r
+                                                       vm.msbRouteInfo.version= msbRouteInfo.version;\r
+                                                       vm.msbRouteInfo.oldVersion= msbRouteInfo.version\r
+                                                       vm.msbRouteInfo.url=msbRouteInfo.url;\r
+                                                       vm.msbRouteInfo.protocol=msbRouteInfo.protocol;\r
+                                                       vm.msbRouteInfo.visualRange=msbRouteInfo.visualRange;\r
+                                                       vm.msbRouteInfo.visualRangeArray=msbRouteInfo.visualRange.split("|");\r
+                                                       vm.msbRouteInfo.lb_policy=msbRouteInfo.lb_policy==""?"round-robin":msbRouteInfo.lb_policy;\r
+                                                       vm.msbRouteInfo.namespace=msbRouteInfo.namespace;\r
+                                                       vm.msbRouteInfo.network_plane_type=msbRouteInfo.network_plane_type;\r
+                                                       vm.msbRouteInfo.host=msbRouteInfo.host;\r
+                                                       vm.msbRouteInfo.path=msbRouteInfo.path;\r
+                                               \r
+                                                         $("#labels").val(msbRouteInfo.labels);\r
+                                                         $('#labels').on('tokenfield:createdtoken', function (e) {\r
+                                                           var re = /\S+:\S+/\r
+                                                           var valid = re.test(e.attrs.value)\r
+                                                           if (!valid) {\r
+                                                             $(e.relatedTarget).addClass('invalid')\r
+                                                               }\r
+                                                           }).tokenfield();\r
+\r
+\r
+                                                         var metadataArray=msbRouteInfo.metadata;\r
+                                                         var metadatas=[];\r
+                                                         for(var i=0;i<metadataArray.length;i++){\r
+                                                               metadatas.push(metadataArray[i].key+":"+metadataArray[i].value);\r
+\r
+                                                         }\r
+\r
+                                                         $("#metadata").val(metadatas);\r
+                                                         $('#metadata').on('tokenfield:createdtoken', function (e) {\r
+                                                           var re = /\S+:\S+/\r
+                                                           var valid = re.test(e.attrs.value)\r
+                                                           if (!valid) {\r
+                                                             $(e.relatedTarget).addClass('invalid')\r
+                                                               }\r
+                                                           }).tokenfield();\r
+\r
+                             \r
+                             if(msbRouteInfo.publish_port!=undefined && msbRouteInfo.publish_port.trim()!=""){\r
+                                 if(vm.msbRouteInfo.protocol=="TCP" || vm.msbRouteInfo.protocol=="UDP"){\r
+                                       vm.if_publish_port=["1"];\r
+                                       vm.msbRouteInfo.publish_port=msbRouteInfo.publish_port;\r
+                                                               vm.msbRouteInfo.oldPublish_port=msbRouteInfo.publish_port;\r
+                                 }\r
+                                 else  if(vm.msbRouteInfo.protocol=="HTTP" || vm.msbRouteInfo.protocol=="REST"|| vm.msbRouteInfo.protocol=="UI" || vm.msbRouteInfo.protocol=="PORTAL"){\r
+                                       vm.if_http_publish_port=["1"];\r
+                                       vm.msbRouteInfo.publish_port=msbRouteInfo.publish_port;\r
+                                                               vm.msbRouteInfo.oldPublish_port=msbRouteInfo.publish_port;\r
+                                 }\r
+                                 else{\r
+                                       vm.msbRouteInfo.publish_port="";\r
+                                                               vm.msbRouteInfo.oldPublish_port="";\r
+                                 }\r
+\r
+                             }\r
+\r
+                       \r
+\r
+                                                       for(var i=0;i<msbRouteInfo.nodes.length;i++){\r
+\r
+                                                               msbRouteInfo.nodes[i].weight="";\r
+                                                       msbRouteInfo.nodes[i].max_fails="";\r
+                                                       msbRouteInfo.nodes[i].fail_timeout="";\r
+\r
+                                                     var lb_server_params=msbRouteInfo.nodes[i].lb_server_params;\r
+                                                     if(lb_server_params!=null){\r
+                                                       \r
+                                                        var paramsArray=lb_server_params.split(",");\r
+                                                        for(var n=0;n<paramsArray.length;n++){\r
+                                                               var param=paramsArray[n].split("=");\r
+                                                               switch(param[0]){\r
+                                                                       case "weight":  msbRouteInfo.nodes[i].weight=param[1]; break;\r
+                                                                       case "max_fails":       msbRouteInfo.nodes[i].max_fails=param[1]; break;\r
+                                                                       case "fail_timeout":    msbRouteInfo.nodes[i].fail_timeout=param[1].replace("s",""); break;\r
+                                                               }\r
+                                                               \r
+                                                        }\r
+\r
+                                                     }\r
+                                                    \r
+\r
+                                                       }\r
+\r
+                                                               vm.msbRouteInfo.nodes=msbRouteInfo.nodes; \r
+                                                                       routeUtil.changeTargetServiceUrl();\r
+               \r
+                       },\r
+                        error: function(XMLHttpRequest, textStatus, errorThrown) {\r
+                                                  bootbox.alert("get discoverInfo fails:"+XMLHttpRequest.responseText);                       \r
+                              return;\r
+                        }\r
+                       \r
+                        \r
+                               });\r
+\r
+                                       $(".form-group").each(function () {\r
+                                               \r
+                                               $(this).find(".item-tip").addClass("item-tip-focus");\r
+                                               \r
+                                       });\r
+\r
+\r
+               },              \r
+               $showNodeDlg:function() {\r
+\r
+                       vm.nodeInfo.ip="";\r
+                       vm.nodeInfo.port="";\r
+                       vm.nodeInfo.weight="";\r
+                       vm.nodeInfo.max_fails="";\r
+                       vm.nodeInfo.fail_timeout="";\r
+                       vm.nodeInfo.checkType="";\r
+                       vm.nodeInfo.checkUrl="";\r
+                       vm.nodeInfo.checkInterval="10";\r
+                       vm.nodeInfo.checkTimeOut="10";\r
+                       vm.nodeInfo.ttl="10";\r
+                               vm.nodeInfo.ha_role="";\r
+                       \r
+                       \r
+\r
+                               vm.nodeDlgInfo.saveType = "add";\r
+                               vm.nodeDlgInfo.titleName=$.i18n.prop("org_onap_msb_discover_node_title");\r
+                               vm.node_rtn.warning_block=false;\r
+                               vm.node_rtn.info_block=false;\r
+\r
+               $('#advanceDiv').collapse('hide');\r
+\r
+                               $(".form-group").each(function () {\r
+                                               $(this).removeClass('has-success');\r
+                                               $(this).removeClass('has-error');\r
+                                               $(this).find(".help-block[id]").remove();\r
+                                               $(this).find(".form-tip").removeClass('form-input-focus');\r
+                                               //$(this).find(".item-tip").removeClass('item-tip-focus');\r
+                                       });\r
+\r
+                               $("#noderouteDlg").modal("show");\r
+               },\r
+\r
+               savenodeInfo:function(){\r
+                       nodesuccess.hide();\r
+                               nodeerror.hide();\r
+                               if (nodeform.valid() == false) {\r
+                                       return false;\r
+                               }\r
+\r
+                               //健康检查规则效验\r
+                               if(vm.nodeInfo.checkType=="TTL"){\r
+                                       if(vm.nodeInfo.ttl==""){\r
+                                                       vm.node_rtn.warning_block=true;\r
+                                                   vm.node_rtn.info_block=false; \r
+                                                   vm.node_rtn.rtn_info=$.i18n.prop("org_onap_msb_discover_validator_ttl_empty");\r
+                                                       return;\r
+                                       }\r
+                                       else{\r
+                                               \r
+                                               vm.nodeInfo.checkTimeOut="";\r
+                                               vm.nodeInfo.checkInterval="";\r
+                                               vm.nodeInfo.checkUrl="";\r
+                                       }\r
+\r
+                               }\r
+                               else if(vm.nodeInfo.checkType=="TCP" || vm.nodeInfo.checkType=="HTTP"){\r
+                                       if(vm.nodeInfo.checkInterval==""){\r
+                                                       vm.node_rtn.warning_block=true;\r
+                                                   vm.node_rtn.info_block=false; \r
+                                                   vm.node_rtn.rtn_info= $.i18n.prop("org_onap_msb_discover_validator_interval_empty");\r
+                                                       return;\r
+                                       }\r
+                                       \r
+\r
+                                       if(vm.nodeInfo.checkTimeOut==""){\r
+                                                       vm.node_rtn.warning_block=true;\r
+                                                   vm.node_rtn.info_block=false; \r
+                                                   vm.node_rtn.rtn_info= $.i18n.prop("org_onap_msb_discover_validator_timeOut_empty");\r
+                                                       return;\r
+                                       }\r
+                                       \r
+\r
+                                       if(vm.nodeInfo.checkUrl==""){\r
+                                                       vm.node_rtn.warning_block=true;\r
+                                                   vm.node_rtn.info_block=false; \r
+                                                   vm.node_rtn.rtn_info= $.i18n.prop("org_onap_msb_discover_validator_healthurl_empty");\r
+                                                       return;\r
+                                       }\r
+\r
+                                       vm.nodeInfo.ttl="";\r
+                               \r
+\r
+                               }\r
+                               else{\r
+                                       vm.nodeInfo.checkUrl="";\r
+                                       vm.nodeInfo.checkInterval="";\r
+                                       vm.nodeInfo.checkTimeOut="";\r
+                                       vm.nodeInfo.ttl="";\r
+                               }\r
+\r
+                               \r
+\r
+                               if(vm.nodeInfo.checkType=="HTTP"){\r
+\r
+                                       var reg_http_url_match=/^(|http:\/\/)(([1-9]|([1-9]\d)|(1\d\d)|(2([0-4]\d|5[0-5])))\.)(([0-9]|([1-9]\d)|(1\d\d)|(2([0-4]\d|5[0-5])))\.){2}([1-9]|([1-9]\d)|(1\d\d)|(2([0-4]\d|5[0-5]))):(\d{1,5}).*$/;\r
+                                       if(reg_http_url_match.test(vm.nodeInfo.checkUrl)){\r
+                                               /*vm.node_rtn.warning_block=true;\r
+                                               vm.node_rtn.info_block=false; \r
+                                               vm.node_rtn.rtn_info= $.i18n.prop("org_onap_msb_discover_validator_healthurl_http");\r
+                                               return;*/\r
+                                               if(vm.nodeInfo.checkUrl.indexOf("http://")!=0){\r
+                                                       vm.nodeInfo.checkUrl="http://"+vm.nodeInfo.checkUrl;\r
+                                               }\r
+                                       }\r
+                                       else{\r
+                                               if(vm.nodeInfo.checkUrl.indexOf("/")!=0){\r
+                                                       vm.nodeInfo.checkUrl="/"+vm.nodeInfo.checkUrl;\r
+                                               }\r
+                                               vm.nodeInfo.checkUrl="http://"+vm.nodeInfo.ip+":"+vm.nodeInfo.port+vm.nodeInfo.checkUrl\r
+\r
+                                       }\r
+                               } \r
+                               else if(vm.nodeInfo.checkType=="TCP"){\r
+                                        var reg_tcp_url_match=/^.*:\d{1,5}$/;\r
+                                       if(!reg_tcp_url_match.test(vm.nodeInfo.checkUrl)){\r
+                                               vm.node_rtn.warning_block=true;\r
+                                               vm.node_rtn.info_block=false; \r
+                                               vm.node_rtn.rtn_info= $.i18n.prop("org_onap_msb_discover_validator_healthurl_tcp");\r
+                                               return;\r
+                                       }\r
+                               } \r
+\r
+\r
+\r
+\r
+                       \r
+\r
+                               if(vm.nodeDlgInfo.saveType=="add")\r
+                               {\r
+\r
+                               //判断host是否重复\r
+                               for(var i=0;i<vm.msbRouteInfo.nodes.length;i++){\r
+                               \r
+                                               if(vm.msbRouteInfo.nodes[i].ip==vm.nodeInfo.ip && vm.msbRouteInfo.nodes[i].port==vm.nodeInfo.port )\r
+                                               {\r
+                                                       vm.node_rtn.warning_block=true;\r
+                                                   vm.node_rtn.info_block=false; \r
+                                                   vm.node_rtn.rtn_info=$.i18n.prop('org_onap_msb_discover_err_host_repeat',[vm.nodeInfo.ip],[vm.nodeInfo.port]);\r
+                                                       return;\r
+                                               }\r
+                                       \r
+                               }\r
+\r
+\r
+                                       var node=\r
+                                       {\r
+                                               ip:vm.nodeInfo.ip,\r
+                                               port:vm.nodeInfo.port,\r
+                                               weight:vm.nodeInfo.weight,\r
+                                               max_fails:vm.nodeInfo.max_fails,\r
+                                               fail_timeout:vm.nodeInfo.fail_timeout,\r
+                                               checkType:vm.nodeInfo.checkType,\r
+                                               checkUrl:vm.nodeInfo.checkUrl,\r
+                                               checkInterval:vm.nodeInfo.checkInterval==""?"":vm.nodeInfo.checkInterval+"s",\r
+                                               checkTimeOut:vm.nodeInfo.checkTimeOut==""?"":vm.nodeInfo.checkTimeOut+"s",\r
+                                               ttl:vm.nodeInfo.ttl==""?"":vm.nodeInfo.ttl+"s",\r
+                                               ha_role:vm.nodeInfo.ha_role\r
+\r
+                                       };\r
+                                               vm.msbRouteInfo.nodes.push(node);\r
+                               }\r
+                               else if(vm.nodeDlgInfo.saveType=="update")\r
+                               {\r
+                                       if(vm.nodeInfo.ip!=vm.oldNodeInfo.ip || \r
+                         vm.nodeInfo.port!=vm.oldNodeInfo.port)  //已修改IP或者port\r
+                         {\r
+\r
+                                       //判断host是否重复\r
+                                               for(var i=0;i<vm.msbRouteInfo.nodes.length;i++){\r
+                                               \r
+                                                               if(vm.msbRouteInfo.nodes[i].ip==vm.nodeInfo.ip && vm.msbRouteInfo.nodes[i].port==vm.nodeInfo.port )\r
+                                                               {\r
+                                                                       vm.node_rtn.warning_block=true;\r
+                                                                   vm.node_rtn.info_block=false; \r
+                                                                   vm.node_rtn.rtn_info= $.i18n.prop('org_onap_msb_discover_err_host_repeat',[vm.nodeInfo.ip],[vm.nodeInfo.port]);\r
+                                                                       return;\r
+                                                               }\r
+                                                       \r
+                                               }\r
+                           }\r
+\r
+                                        for(var i=0;i<vm.msbRouteInfo.nodes.length;i++){\r
+                                              if(vm.msbRouteInfo.nodes[i].ip == vm.oldNodeInfo.ip && vm.msbRouteInfo.nodes[i].port == vm.oldNodeInfo.port){\r
+                                                \r
+                                                   vm.msbRouteInfo.nodes[i].ip=vm.nodeInfo.ip;\r
+                                                   vm.msbRouteInfo.nodes[i].port=vm.nodeInfo.port;\r
+                                                   vm.msbRouteInfo.nodes[i].weight=vm.nodeInfo.weight;\r
+                                                   vm.msbRouteInfo.nodes[i].max_fails=vm.nodeInfo.max_fails;\r
+                                                   vm.msbRouteInfo.nodes[i].fail_timeout=vm.nodeInfo.fail_timeout;\r
+                                                   vm.msbRouteInfo.nodes[i].checkType=vm.nodeInfo.checkType;\r
+                                                   vm.msbRouteInfo.nodes[i].checkUrl=vm.nodeInfo.checkUrl;\r
+                                                   vm.msbRouteInfo.nodes[i].checkInterval=vm.nodeInfo.checkInterval==""?"":vm.nodeInfo.checkInterval+"s";\r
+                                                   vm.msbRouteInfo.nodes[i].checkTimeOut=vm.nodeInfo.checkTimeOut==""?"":vm.nodeInfo.checkTimeOut+"s";\r
+                                                   vm.msbRouteInfo.nodes[i].ttl=vm.nodeInfo.ttl==""?"":vm.nodeInfo.ttl+"s";\r
+                                                   vm.msbRouteInfo.nodes[i].ha_role=vm.nodeInfo.ha_role;\r
+\r
+                                                   \r
+\r
+                                                  \r
+                                                   \r
+                                                   break;\r
+                                               }\r
+                                      }        \r
+\r
+\r
+                               }\r
+\r
+                               $('#noderouteDlg').modal('hide');\r
+\r
+               },\r
+               delnodeInfo:function(ip,port){\r
+                       bootbox.confirm($.i18n.prop('org_onap_msb_discover_err_host_del_ask',[ip],[port]),function(result){\r
+                               if(result){\r
+                                       \r
+                                        for(var i=0;i<vm.msbRouteInfo.nodes.length;i++){\r
+                                              if(vm.msbRouteInfo.nodes[i].ip == ip && vm.msbRouteInfo.nodes[i].port == port){\r
+                                                   vm.msbRouteInfo.nodes.splice(i, 1);\r
+                                                   break;\r
+                                               }\r
+                                      }        \r
+\r
+                            \r
+\r
+                              }\r
+       \r
+                               });\r
+\r
+\r
+               },\r
+               updatenodeInfo:function(node){\r
+                       vm.nodeInfo.ip=node.ip;\r
+                       vm.oldNodeInfo.ip=node.ip;\r
+                       \r
+                       vm.nodeInfo.port=node.port;\r
+                       vm.oldNodeInfo.port=node.port;\r
+\r
+                       vm.nodeInfo.weight=node.weight;\r
+                       vm.nodeInfo.max_fails=node.max_fails;\r
+                       vm.nodeInfo.fail_timeout=node.fail_timeout;\r
+\r
+                       vm.nodeInfo.checkType=node.checkType;\r
+                       vm.nodeInfo.checkUrl=node.checkUrl;\r
+                       if(node.checkInterval!=undefined) vm.nodeInfo.checkInterval=node.checkInterval.replace("s","");\r
+                       if(node.checkTimeOut!=undefined) vm.nodeInfo.checkTimeOut=node.checkTimeOut.replace("s","");\r
+                       if(node.ttl!=undefined) vm.nodeInfo.ttl=node.ttl.replace("s","");\r
+                       vm.nodeInfo.ha_role=node.ha_role;\r
+\r
+                       \r
+                       \r
+\r
+                               vm.nodeDlgInfo.saveType = "update";\r
+                               vm.nodeDlgInfo.titleName=$.i18n.prop('org_onap_msb_discover_node_title_update');\r
+                               vm.node_rtn.warning_block=false;\r
+                               vm.node_rtn.info_block=false;\r
+\r
+               $('#advanceDiv').collapse('hide');\r
+\r
+                               $(".form-group").each(function () {\r
+                                               $(this).removeClass('has-success');\r
+                                               $(this).removeClass('has-error');\r
+                                               $(this).find(".help-block[id]").remove();                                       \r
+                                               $(this).find(".form-tip").removeClass('form-input-focus');\r
+                                       });\r
+\r
+                               $("#noderouteDlg").modal("show");\r
+\r
+               },\r
+               resetRoute:function(){\r
+                       if(vm.pageInfo.pageType=="add"){\r
+                               vm.addMsbRoute();\r
+                            }\r
+                            else if(vm.pageInfo.pageType=="update"){\r
+                              vm.initUpdateRoute(vm.updateServiceInfo.serviceName,vm.updateServiceInfo.version,vm.updateServiceInfo.namespace);                        \r
+                            }\r
+                            \r
+               },\r
+               getTcpUdpPortRangeUrl:function(){\r
+                       $.ajax({\r
+                       "type": 'get',\r
+                       "url":  vm.$tcpudpportrangeUrl,\r
+                       "dataType": "json",\r
+                       success: function (tcp_udp_port_range) {  \r
+                          vm.tcp_udp_port_range=tcp_udp_port_range;\r
+                          $("input[name='publish_port']").attr("placeholder","Range:"+tcp_udp_port_range[0]+"-"+tcp_udp_port_range[1]);\r
+\r
+\r
+                       },\r
+                        error: function(XMLHttpRequest, textStatus, errorThrown) {\r
+                                                  console.log("get TcpUdpPortRangeUrl fails:"+XMLHttpRequest.responseText);                       \r
+                           \r
+                        }\r
+\r
+                               });\r
+\r
+\r
+               },              \r
+               getApigatewayInfo : function(namespace) {\r
+\r
+                       // if(namespace=="") namespace="default";\r
+                       if(namespace!="all"){\r
+                               vm.apiGatewayService=[];\r
+                               vm.routeService=[];\r
+                       }\r
+\r
+\r
+                        var  url=vm.$apiGatewayInfoUrl+"?namespace="+namespace;\r
+\r
+                                $.ajax({\r
+                       "type": 'get',\r
+                       "url":  url,\r
+                       "async":false,\r
+                       "dataType": "json",\r
+                       success: function (resp) {  \r
+                          var apiGatewayService=[],routeService=[];\r
+                          var apiGatewayInfoList=resp==null?[]:resp;\r
+\r
+                               for(var i=0;i<apiGatewayInfoList.length;i++){\r
+                                       if(apiGatewayInfoList[i].visualRange=="0"){\r
+                                               routeService.push(apiGatewayInfoList[i]);\r
+                                       }\r
+                                       else if(apiGatewayInfoList[i].visualRange=="1"){\r
+                                                               apiGatewayService.push(apiGatewayInfoList[i])\r
+                                       }\r
+                               }\r
+\r
+                               if(namespace=="all"){\r
+                                       vm.apiGatewayService_all=apiGatewayService;\r
+                                       vm.routeService_all=routeService;\r
+                               }\r
+                               else{\r
+                                       vm.apiGatewayService=apiGatewayService;\r
+                                       vm.routeService=routeService;\r
+                               }\r
+                          \r
+                          \r
+\r
+                       },\r
+                        error: function(XMLHttpRequest, textStatus, errorThrown) {\r
+                                                  console.log("get apigatewayInfo for "+namespace+" fails:"+XMLHttpRequest.responseText);                       \r
+                            \r
+                        }\r
+                       \r
+                        \r
+                               });\r
+\r
+\r
+                               \r
+\r
+                               routeUtil.changeTargetServiceUrl();\r
+\r
+                       \r
+\r
+               },\r
+               initIUIfori18n:function(){\r
+                       vm.msbLbPolicyRange=[\r
+                                       {\r
+                                               name:$.i18n.prop("org_onap_msb_discover_lbpolicy_round"),\r
+                                               value:"round-robin"\r
+                                       },\r
+                                        {\r
+                                               name:"IPHash",\r
+                                               value:"ip_hash"\r
+                                       },\r
+                                       /*{\r
+                                               name:$.i18n.prop("org_onap_msb_discover_lbpolicy_leastconn"),\r
+                                               value:"least_conn"\r
+                                       },*/\r
+                                       {\r
+                                               name:$.i18n.prop("org_onap_msb_discover_lbpolicy_clientcustom"),\r
+                                               value:"client_custom"\r
+                                       }       \r
+                               ];\r
+\r
+               },\r
+                       savemsbRoute : function() {\r
+\r
+                               msbsuccess.hide();\r
+                               msberror.hide();\r
+                               if (msbform.valid() == false) {\r
+                                       return false;\r
+                               }\r
+\r
+                               if(vm.msbRouteInfo.nodes.length==0){\r
+                                       vm.server_rtn.warning_block=true;\r
+                                       vm.server_rtn.info_block=false; \r
+                                       vm.server_rtn.rtn_info= $.i18n.prop('org_onap_msb_discover_err_host_leastone');\r
+                                       return;\r
+                               }\r
+\r
+                               if(vm.msbRouteInfo.visualRangeArray.length==0){\r
+                                       vm.server_rtn.warning_block=true;\r
+                                       vm.server_rtn.info_block=false; \r
+                                       vm.server_rtn.rtn_info= $.i18n.prop('org_onap_msb_discover_err_visualrange_empty');\r
+                                       return;\r
+                               }\r
+\r
+\r
+                               /*if(vm.msbRouteInfo.namespace=="default" || vm.msbRouteInfo.namespace=="all" ){\r
+                                       vm.server_rtn.warning_block=true;\r
+                                       vm.server_rtn.info_block=false; \r
+                                       vm.server_rtn.rtn_info= $.i18n.prop('org_onap_msb_discover_err_namespace_err',[vm.msbRouteInfo.namespace]);\r
+                                       return;\r
+                               }*/\r
+\r
+\r
+                               if(vm.msbRouteInfo.protocol=="REST" || vm.msbRouteInfo.protocol=="HTTP"||vm.msbRouteInfo.protocol=="UI"||vm.msbRouteInfo.protocol=="PORTAL"){\r
+                                       if(vm.msbRouteInfo.url==""){\r
+                                               vm.server_rtn.warning_block=true;\r
+                                               vm.server_rtn.info_block=false; \r
+                                               vm.server_rtn.rtn_info=$.i18n.prop('org_onap_msb_discover_err_url_empty',[vm.msbRouteInfo.protocol]);\r
+                                               return;\r
+\r
+                                       }\r
+                               }\r
+\r
+                               //正则判断标签格式正确性\r
+                               var labelArray=[];\r
+                                if($('#labels').val().trim()!=""){\r
+                                        labelArray=$('#labels').val().split(",");\r
+                                       for(var i=0;i<labelArray.length;i++){\r
+                                               labelArray[i]=labelArray[i].trim();\r
+                                               if(/\S+:\S+/.test(labelArray[i])==false){\r
+                                               vm.server_rtn.warning_block=true;\r
+                                               vm.server_rtn.info_block=false; \r
+                                               vm.server_rtn.rtn_info=$.i18n.prop('org_onap_msb_discover_err_label_format');\r
+                                               return;\r
+\r
+                                               }\r
+\r
+                                       }\r
+                                \r
+                                }\r
+\r
+                                var metadataArray=[],metadata=[];\r
+                                if($('#metadata').val().trim()!=""){\r
+                                        metadataArray=$('#metadata').val().split(",");\r
+                                       for(var i=0;i<metadataArray.length;i++){\r
+                                               metadataArray[i]=metadataArray[i].trim();\r
+\r
+                                               if(/\S+:\S+/.test(metadataArray[i])==false){\r
+                                               vm.server_rtn.warning_block=true;\r
+                                               vm.server_rtn.info_block=false; \r
+                                               vm.server_rtn.rtn_info=$.i18n.prop('org_onap_msb_discover_err_metadata_format');\r
+                                               return;\r
+                                               }\r
+                                               var metadata_key_value=metadataArray[i].split(":");\r
+                                               var metadata_obj=new Object();\r
+                                               metadata_obj.key=metadata_key_value[0];\r
+                                               metadata_obj.value=metadata_key_value[1];\r
+                                               metadata.push(metadata_obj);\r
+\r
+                                       }\r
+                                \r
+                                }\r
+\r
+       \r
+    \r
+                       \r
+\r
+\r
+\r
+                               vm.server_rtn.warning_block=false;\r
+                               vm.server_rtn.info_block=true;\r
+\r
+                               //var msbUrl=vm.msbRouteInfo.url=="/"?"":vm.msbRouteInfo.url;\r
+                               \r
+                               var nodes=[];\r
+                               for(var i=0;i<vm.msbRouteInfo.nodes.length;i++){\r
+\r
+\r
+                             var lb_server_params="";\r
+                             if(vm.msbRouteInfo.nodes[i].weight!=""){\r
+                               lb_server_params+="weight="+vm.msbRouteInfo.nodes[i].weight+","\r
+                             }\r
+\r
+                             if(vm.msbRouteInfo.nodes[i].max_fails!=""){\r
+                               lb_server_params+="max_fails="+vm.msbRouteInfo.nodes[i].max_fails+","\r
+                             }\r
+\r
+                             if(vm.msbRouteInfo.nodes[i].fail_timeout!=""){\r
+                               lb_server_params+="fail_timeout="+vm.msbRouteInfo.nodes[i].fail_timeout+"s";\r
+                             }\r
+\r
+\r
+\r
+                               \r
+\r
+                                       var node={\r
+                                               ip:vm.msbRouteInfo.nodes[i].ip,\r
+                                               port:vm.msbRouteInfo.nodes[i].port,\r
+                                               lb_server_params: lb_server_params,\r
+                                               checkType:vm.msbRouteInfo.nodes[i].checkType,\r
+                                               checkUrl:vm.msbRouteInfo.nodes[i].checkUrl,\r
+                                               checkInterval:vm.msbRouteInfo.nodes[i].checkInterval,\r
+                                               checkTimeOut:vm.msbRouteInfo.nodes[i].checkTimeOut,\r
+                                               ttl:vm.msbRouteInfo.nodes[i].ttl,\r
+                                               ha_role:vm.msbRouteInfo.nodes[i].ha_role\r
+\r
+                                       };\r
+                                       nodes.push(node);\r
+                               }\r
+\r
+                               //TCP|UDP协议对外端口判断\r
+                               /*if((vm.msbRouteInfo.protocol=="TCP" || vm.msbRouteInfo.protocol=="UDP") && vm.if_publish_port.length==1){\r
+\r
+\r
+\r
+\r
+                                       if(vm.pageInfo.pageType=="add" || (vm.pageInfo.pageType=="update" && vm.msbRouteInfo.oldPublic_port!=vm.msbRouteInfo.publish_port)){\r
+\r
+                                       //唯一性判断\r
+                                       for(var i=0;i<vm.msbRouteArray.length;i++){\r
+                               \r
+                                               if(vm.msbRouteArray[i].publish_port==vm.msbRouteInfo.publish_port)\r
+                                               {\r
+                                                       vm.server_rtn.warning_block=true;\r
+                                                   vm.server_rtn.info_block=false; \r
+                                                   vm.server_rtn.rtn_info= "发布端口("+vm.msbRouteInfo.publish_port+")已使用";\r
+                                                       return;\r
+                                               }\r
+                                       \r
+                                    }\r
+                                 }\r
+                                       \r
+\r
+                               }\r
+                               else{\r
+                                  vm.msbRouteInfo.publish_port="";     \r
+                               }*/\r
+\r
+\r
+                               //var newServiceName=(vm.msbRouteInfo.protocol=="UI"?("IUI_"+vm.msbRouteInfo.serviceName):vm.msbRouteInfo.serviceName);\r
+                               var newServiceName=vm.msbRouteInfo.serviceName;\r
+\r
+                       \r
+\r
+                               var data= JSON.stringify({\r
+                                                        "serviceName": newServiceName,\r
+                                                         "version": vm.msbRouteInfo.version,\r
+                                                         "url": vm.msbRouteInfo.url,                                                    \r
+                                                         "nodes": nodes,\r
+                                                         "protocol":vm.msbRouteInfo.protocol,\r
+                                                         "visualRange":vm.msbRouteInfo.visualRangeArray.join("|"),\r
+                                                         "lb_policy":vm.msbRouteInfo.lb_policy,\r
+                                                         "publish_port":vm.msbRouteInfo.publish_port,\r
+                                                         "namespace":vm.msbRouteInfo.namespace,\r
+                                                         "network_plane_type":vm.msbRouteInfo.network_plane_type,\r
+                                                         "host":vm.msbRouteInfo.host,\r
+                                                         "path":vm.msbRouteInfo.path,\r
+                                                         "labels":     labelArray,\r
+                                                         "metadata":metadata\r
+                                               });\r
+\r
+                               \r
+\r
+                                       //判断服务名是否重复\r
+                               if(vm.pageInfo.pageType=="add"){\r
+\r
+                                       var url= vm.$msbRouteInstanceUrl;\r
+\r
+                                var version2=vm.msbRouteInfo.version==""?"null":vm.msbRouteInfo.version;\r
+                 url=url.replace("{serviceName}",newServiceName).replace("{version}",version2)+"?ifPassStatus=false&namespace="+vm.msbRouteInfo.namespace;\r
+\r
+                               $.ajax({\r
+                       "type": 'get',\r
+                       "url":  url,\r
+                       "dataType": "json",\r
+                       "async": false,\r
+                       success: function (serviceInfo) {  \r
+                           \r
+                                       vm.server_rtn.warning_block=true;\r
+                                                           vm.server_rtn.info_block=false; \r
+                                                           vm.server_rtn.rtn_info=$.i18n.prop('org_onap_msb_discover_err_service_repeat',[vm.msbRouteInfo.serviceName],[vm.msbRouteInfo.protocol],[vm.msbRouteInfo.namespace]);\r
+                                                               \r
+               \r
+                       },\r
+                        error: function(XMLHttpRequest, textStatus, errorThrown) {\r
+                                 if(XMLHttpRequest.status==404){\r
+                                           $.ajax({\r
+                                                       "type": 'POST',\r
+                                                       "url":  vm.$msbRouteUrl,\r
+                                                       "data" : data,\r
+                                                       "dataType": "json",\r
+                                                       "contentType":"application/json",\r
+                                                       success: function (resp) {  \r
+                                                               \r
+\r
+                                                                                window.location.href="index.html" \r
+\r
+                                                                                 //table.destroy();\r
+                                                                                 //vm.initMSBRoute();\r
+                                               \r
+                                                       },\r
+                                                        error: function(XMLHttpRequest, textStatus, errorThrown) {\r
+\r
+                                                                                  vm.server_rtn.warning_block=true;\r
+                                                                              vm.server_rtn.info_block=false; \r
+                                                                              vm.server_rtn.rtn_info= "msb save fails:"+XMLHttpRequest.responseText;                \r
+                                                             \r
+                                                        }\r
+                                                   });\r
+\r
+                                                       }\r
+                                                       else{\r
+                                                               bootbox.alert("get service["+vm.msbRouteInfo.serviceName+"]fails:"+XMLHttpRequest.responseText);                       \r
+                              }\r
+                        }\r
+                       \r
+                        \r
+                               });\r
+\r
+\r
+                \r
+                 \r
+               }\r
+                else if(vm.pageInfo.pageType=="update")\r
+                               {\r
+                                       \r
+                                 var url= vm.$msbRouteInstanceUrl+"?is_manual=true&namespace="+vm.msbRouteInfo.namespace;\r
+                                 var version2=vm.msbRouteInfo.oldVersion==""?"null":vm.msbRouteInfo.oldVersion;\r
+                   url=url.replace("{serviceName}",vm.msbRouteInfo.oldServiceName).replace("{version}",version2);\r
+\r
+                                $.ajax({\r
+                       "type": 'PUT',\r
+                       "url":  url,\r
+                       "data" : data,\r
+                       "dataType": "json",\r
+                       "contentType":"application/json",\r
+                       success: function (resp) {  \r
+                               \r
+                                       window.location.href="index.html?namespace="+vm.updateServiceInfo.namespace;\r
+               \r
+                       },\r
+                        error: function(XMLHttpRequest, textStatus, errorThrown) {\r
+                                               \r
+                                                  vm.server_rtn.warning_block=true;\r
+                                              vm.server_rtn.info_block=false; \r
+                                              vm.server_rtn.rtn_info= "msb save fails:"+XMLHttpRequest.responseText;                \r
+                             \r
+                        }\r
+                   });         \r
+\r
+                                                       \r
+                               }\r
+               \r
+               \r
+               \r
+                       }\r
+\r
+               \r
+\r
+       });\r
+\r
+\r