--- /dev/null
+/*\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