inherit from oparent
[msb/discovery.git] / discovery-ui / src / main / resources / iui / microservices / js / serviceController.js
1 /*\r
2  * Copyright 2016 ZTE, Inc. and others.\r
3  *\r
4  * Licensed under the Apache License, Version 2.0 (the "License");\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  *\r
8  *     http://www.apache.org/licenses/LICENSE-2.0\r
9  *\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an "AS IS" BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  */\r
16 \r
17 var table;\r
18 var vm = avalon\r
19                 .define({\r
20                         $id : "serviceController",\r
21                         $apiGatewayServiceName:"apigateway",\r
22                         ifshowApiGatewayService:false,\r
23                         tcp_udp_port_range:["40001","40100"],\r
24                         apiGatewayService:[],\r
25                         apiGatewayService_all:[],\r
26                         routeService:[],\r
27                         routeService_all:[],\r
28                         server_rtn:{\r
29                                 info_block:false,\r
30                                 warning_block:false,\r
31                                 rtn_info:""\r
32                         },\r
33                         node_rtn:{\r
34                                 info_block:false,\r
35                                 warning_block:false,\r
36                                 rtn_info:""\r
37                         },\r
38                         if_publish_port:[],\r
39                         if_http_publish_port:[],\r
40                         $msbProtocol :["REST","HTTP","UI","MQ","FTP","SNMP","TCP","UDP"],\r
41                         $healthCheckType:["","TTL","HTTP","TCP"],\r
42                         $ha_role_Type:["","active","standby"],\r
43                         msbLbPolicyRange:[\r
44                         {\r
45                                         name:$.i18n.prop("org_onap_msb_discover_lbpolicy_round"),\r
46                                         value:"round-robin"\r
47                                 },\r
48                           {\r
49                                         name:"IPHash",\r
50                                         value:"ip_hash"\r
51                                 },\r
52                                 /*{\r
53                                         name:$.i18n.prop("org_onap_msb_discover_lbpolicy_leastconn"),\r
54                                         value:"least_conn"\r
55                                 },*/\r
56                                 {\r
57                                         name:$.i18n.prop("org_onap_msb_discover_lbpolicy_clientcustom"),\r
58                                         value:"client_custom"\r
59                                 }       \r
60                         ],\r
61                                                 \r
62                         $msbRouteUrl:apiBasePath+'/services?is_manual=true',    \r
63                         $msbRouteInstanceUrl :apiBasePath+'/services/{serviceName}/version/{version}',  \r
64                         $msbRouteNodesUrl :apiBasePath+'/services/{serviceName}/version/{version}/nodes',\r
65                         $apiGatewayInfoUrl :apiBasePath+'/services/apigatewayserviceinfo',\r
66                         $tcpudpportrangeUrl:apiBasePath+'/services/tcpudpportrange',\r
67                         publishUrl:{\r
68                                 publishUrl4SysOut:"",\r
69                                 publishUrl4SysIn:"",\r
70                                 ifShowPublishUrl4SysOut:false,\r
71                                 ifShowPublishUrl4SysIn:false\r
72 \r
73                         },      \r
74                         \r
75                         targetServiceHost:"",\r
76                         msbRouteArray :  [],                    \r
77                         msbRouteInfo : {        \r
78                             oldServiceName:"",  \r
79                             oldVersion:"",      \r
80                             oldPublic_port:"",                  \r
81                                 serviceName : "",\r
82                                 version:"",\r
83                                 status:"0",\r
84                                 nodes:[],       \r
85                                 url:"",\r
86                                 protocol:"",\r
87                                 visualRange:"",\r
88                                 visualRangeArray:[],\r
89                                 lb_policy:"",\r
90                                 publish_port:"",\r
91                                 namespace:"",\r
92                                 network_plane_type:"",\r
93                                 host:"",\r
94                                 path:""                 \r
95                         },\r
96                         nodeInfo:{\r
97                                 ip:"",\r
98                                 port:"",\r
99                                 weight:"",\r
100                                 max_fails:"",\r
101                                 fail_timeout:"",\r
102                                 checkType:"",\r
103                                 checkUrl:"",\r
104                                 checkInterval:"",\r
105                                 checkTimeOut:"",\r
106                                 ttl:"",\r
107                                 ha_role:""\r
108                         },\r
109                         updateServiceInfo:{\r
110                                 serviceName : "",\r
111                                 version:"",\r
112                                 namespace:"",\r
113                                 authtype:""\r
114 \r
115                         },\r
116                         oldNodeInfo:{\r
117                                 ip:"",\r
118                                 port:""\r
119                         },\r
120                         nodeDlgInfo:{\r
121                                 titleName:"",\r
122                                 saveType:""\r
123                         },\r
124                         pageInfo:{\r
125                                 pageType:"add", \r
126                                 pageTitle:"",   \r
127 \r
128                         },                                                                                                              \r
129                         initMSBRoute:function(){\r
130                                 vm.initIUIfori18n();\r
131 \r
132                                 var url= window.location.search.substr(1);\r
133                                 vm.pageInfo.pageType=routeUtil.getQueryString(url,"type");\r
134 \r
135                                 \r
136 \r
137                                 if(vm.pageInfo.pageType=="add"){\r
138                                 vm.addMsbRoute();\r
139                                 vm.getApigatewayInfo("all");\r
140                                 vm.getApigatewayInfo("");\r
141                                 vm.pageInfo.pageTitle=$.i18n.prop("org_onap_msb_discover_form_title_add");\r
142 \r
143                              }\r
144                              else{\r
145                                 vm.updateServiceInfo.serviceName=routeUtil.getQueryString(url,"serviceName");\r
146                                         vm.updateServiceInfo.version=routeUtil.getQueryString(url,"version");\r
147                                         vm.updateServiceInfo.authtype=routeUtil.getQueryString(url,"authtype");\r
148                                         vm.updateServiceInfo.namespace=routeUtil.getQueryString(url,"namespace");\r
149 \r
150                                         vm.initUpdateRoute(vm.updateServiceInfo.serviceName,vm.updateServiceInfo.version,vm.updateServiceInfo.namespace);       \r
151                                     vm.getApigatewayInfo("all");\r
152                                     vm.getApigatewayInfo(vm.updateServiceInfo.namespace);\r
153 \r
154 \r
155 \r
156                                       if(vm.pageInfo.pageType=="update"){\r
157                                         vm.pageInfo.pageTitle=$.i18n.prop("org_onap_msb_discover_form_title_update");                          \r
158 \r
159                                      }\r
160                                      else if(vm.pageInfo.pageType=="view"){\r
161                                         vm.pageInfo.pageTitle=$.i18n.prop("org_onap_msb_discover_form_title_view");                           \r
162 \r
163                                      }\r
164                              }\r
165 \r
166                              vm.getTcpUdpPortRangeUrl();\r
167        \r
168                    \r
169                         },\r
170                         \r
171                 returnList:function(){\r
172                 \r
173                         window.history.back(-1); \r
174                 },\r
175                 closePage:function(){\r
176                 \r
177                         window.close(); \r
178                 },\r
179                 \r
180                 addMsbRoute:function(){\r
181 \r
182                         vm.msbRouteInfo.serviceName=""; \r
183                                 vm.msbRouteInfo.version="";\r
184                                 vm.msbRouteInfo.url="";\r
185                                 vm.msbRouteInfo.protocol="";\r
186                                 vm.msbRouteInfo.publish_port="";\r
187                                 vm.msbRouteInfo.lb_policy="";\r
188                                 vm.msbRouteInfo.visualRange="";\r
189                                 vm.msbRouteInfo.visualRangeArray=[],\r
190                                 vm.msbRouteInfo.nodes=[];                                       \r
191                                 vm.msbRouteInfo.status="1";     \r
192                                 vm.msbRouteInfo.namespace="";\r
193                                 vm.msbRouteInfo.network_plane_type="";\r
194                                 vm.msbRouteInfo.host="";\r
195                                 vm.msbRouteInfo.path="";\r
196                         \r
197                                 \r
198                                 vm.server_rtn.warning_block=false;\r
199                                 vm.server_rtn.info_block=false;\r
200 \r
201                                 $('#labels').val("");\r
202                                 $('#labels').on('tokenfield:createdtoken', function (e) {\r
203                                                             var re = /\S+:\S+/\r
204                                                             var valid = re.test(e.attrs.value)\r
205                                                             if (!valid) {\r
206                                                               $(e.relatedTarget).addClass('invalid')\r
207                                                                 }\r
208                                                             }).tokenfield();\r
209                                 $('#metadata').val("");\r
210                                 $('#metadata').on('tokenfield:createdtoken', function (e) {\r
211                                                             var re = /\S+:\S+/\r
212                                                             var valid = re.test(e.attrs.value)\r
213                                                             if (!valid) {\r
214                                                               $(e.relatedTarget).addClass('invalid')\r
215                                                                 }\r
216                                                             }).tokenfield();\r
217 \r
218 \r
219                                 $(".form-group").each(function () {\r
220                                                 $(this).removeClass('has-success');\r
221                                                 $(this).removeClass('has-error');\r
222                                                 $(this).find(".help-block[id]").remove();\r
223                                                 $(this).find(".form-tip").removeClass('form-input-focus');\r
224                                                 //$(this).find(".item-tip").removeClass('item-tip-focus');\r
225                                         });\r
226 \r
227                 },\r
228                 initUpdateRoute:function(serviceName,version,namespace){\r
229                         var url= vm.$msbRouteInstanceUrl;\r
230                                     var version2=version==""?"null":version;\r
231                                     var serviceName2= serviceName.replace(/\//g,"*");\r
232                         url=url.replace("{serviceName}",serviceName2).replace("{version}",version2)+"?ifPassStatus=false&namespace="+namespace;\r
233         \r
234                         $.ajax({\r
235                         "type": 'get',\r
236                         "url":  url,\r
237                         "dataType": "json",\r
238                         success: function (msbRouteInfo) {  \r
239                                 //vm.msbRouteInfo.serviceName=(msbRouteInfo.protocol=="UI"?msbRouteInfo.serviceName.replace("IUI_",""):msbRouteInfo.serviceName);\r
240                                                         vm.msbRouteInfo.serviceName=msbRouteInfo.serviceName;\r
241                                                         vm.msbRouteInfo.oldServiceName=msbRouteInfo.serviceName;\r
242                                                         vm.msbRouteInfo.version= msbRouteInfo.version;\r
243                                                         vm.msbRouteInfo.oldVersion= msbRouteInfo.version\r
244                                                         vm.msbRouteInfo.url=msbRouteInfo.url;\r
245                                                         vm.msbRouteInfo.protocol=msbRouteInfo.protocol;\r
246                                                         vm.msbRouteInfo.visualRange=msbRouteInfo.visualRange;\r
247                                                         vm.msbRouteInfo.visualRangeArray=msbRouteInfo.visualRange.split("|");\r
248                                                         vm.msbRouteInfo.lb_policy=msbRouteInfo.lb_policy==""?"round-robin":msbRouteInfo.lb_policy;\r
249                                                         vm.msbRouteInfo.namespace=msbRouteInfo.namespace;\r
250                                                         vm.msbRouteInfo.network_plane_type=msbRouteInfo.network_plane_type;\r
251                                                         vm.msbRouteInfo.host=msbRouteInfo.host;\r
252                                                         vm.msbRouteInfo.path=msbRouteInfo.path;\r
253                                                 \r
254                                                           $("#labels").val(msbRouteInfo.labels);\r
255                                                           $('#labels').on('tokenfield:createdtoken', function (e) {\r
256                                                             var re = /\S+:\S+/\r
257                                                             var valid = re.test(e.attrs.value)\r
258                                                             if (!valid) {\r
259                                                               $(e.relatedTarget).addClass('invalid')\r
260                                                                 }\r
261                                                             }).tokenfield();\r
262 \r
263 \r
264                                                           var metadataArray=msbRouteInfo.metadata;\r
265                                                           var metadatas=[];\r
266                                                           for(var i=0;i<metadataArray.length;i++){\r
267                                                                 metadatas.push(metadataArray[i].key+":"+metadataArray[i].value);\r
268 \r
269                                                           }\r
270 \r
271                                                           $("#metadata").val(metadatas);\r
272                                                           $('#metadata').on('tokenfield:createdtoken', function (e) {\r
273                                                             var re = /\S+:\S+/\r
274                                                             var valid = re.test(e.attrs.value)\r
275                                                             if (!valid) {\r
276                                                               $(e.relatedTarget).addClass('invalid')\r
277                                                                 }\r
278                                                             }).tokenfield();\r
279 \r
280                               \r
281                               if(msbRouteInfo.publish_port!=undefined && msbRouteInfo.publish_port.trim()!=""){\r
282                                   if(vm.msbRouteInfo.protocol=="TCP" || vm.msbRouteInfo.protocol=="UDP"){\r
283                                         vm.if_publish_port=["1"];\r
284                                         vm.msbRouteInfo.publish_port=msbRouteInfo.publish_port;\r
285                                                                 vm.msbRouteInfo.oldPublish_port=msbRouteInfo.publish_port;\r
286                                   }\r
287                                   else  if(vm.msbRouteInfo.protocol=="HTTP" || vm.msbRouteInfo.protocol=="REST"|| vm.msbRouteInfo.protocol=="UI" || vm.msbRouteInfo.protocol=="PORTAL"){\r
288                                         vm.if_http_publish_port=["1"];\r
289                                         vm.msbRouteInfo.publish_port=msbRouteInfo.publish_port;\r
290                                                                 vm.msbRouteInfo.oldPublish_port=msbRouteInfo.publish_port;\r
291                                   }\r
292                                   else{\r
293                                         vm.msbRouteInfo.publish_port="";\r
294                                                                 vm.msbRouteInfo.oldPublish_port="";\r
295                                   }\r
296 \r
297                               }\r
298 \r
299                         \r
300 \r
301                                                         for(var i=0;i<msbRouteInfo.nodes.length;i++){\r
302 \r
303                                                                 msbRouteInfo.nodes[i].weight="";\r
304                                                         msbRouteInfo.nodes[i].max_fails="";\r
305                                                         msbRouteInfo.nodes[i].fail_timeout="";\r
306 \r
307                                                       var lb_server_params=msbRouteInfo.nodes[i].lb_server_params;\r
308                                                       if(lb_server_params!=null){\r
309                                                         \r
310                                                          var paramsArray=lb_server_params.split(",");\r
311                                                          for(var n=0;n<paramsArray.length;n++){\r
312                                                                 var param=paramsArray[n].split("=");\r
313                                                                 switch(param[0]){\r
314                                                                         case "weight":  msbRouteInfo.nodes[i].weight=param[1]; break;\r
315                                                                         case "max_fails":       msbRouteInfo.nodes[i].max_fails=param[1]; break;\r
316                                                                         case "fail_timeout":    msbRouteInfo.nodes[i].fail_timeout=param[1].replace("s",""); break;\r
317                                                                 }\r
318                                                                 \r
319                                                          }\r
320 \r
321                                                       }\r
322                                                      \r
323 \r
324                                                         }\r
325 \r
326                                                                 vm.msbRouteInfo.nodes=msbRouteInfo.nodes; \r
327                                                                         routeUtil.changeTargetServiceUrl();\r
328                 \r
329                         },\r
330                          error: function(XMLHttpRequest, textStatus, errorThrown) {\r
331                                                    bootbox.alert("get discoverInfo fails:"+XMLHttpRequest.responseText);                       \r
332                                return;\r
333                          }\r
334                         \r
335                          \r
336                                 });\r
337 \r
338                                         $(".form-group").each(function () {\r
339                                                 \r
340                                                 $(this).find(".item-tip").addClass("item-tip-focus");\r
341                                                 \r
342                                         });\r
343 \r
344 \r
345                 },              \r
346                 $showNodeDlg:function() {\r
347 \r
348                         vm.nodeInfo.ip="";\r
349                         vm.nodeInfo.port="";\r
350                         vm.nodeInfo.weight="";\r
351                         vm.nodeInfo.max_fails="";\r
352                         vm.nodeInfo.fail_timeout="";\r
353                         vm.nodeInfo.checkType="";\r
354                         vm.nodeInfo.checkUrl="";\r
355                         vm.nodeInfo.checkInterval="10";\r
356                         vm.nodeInfo.checkTimeOut="10";\r
357                         vm.nodeInfo.ttl="10";\r
358                                 vm.nodeInfo.ha_role="";\r
359                         \r
360                         \r
361 \r
362                                 vm.nodeDlgInfo.saveType = "add";\r
363                                 vm.nodeDlgInfo.titleName=$.i18n.prop("org_onap_msb_discover_node_title");\r
364                                 vm.node_rtn.warning_block=false;\r
365                                 vm.node_rtn.info_block=false;\r
366 \r
367                 $('#advanceDiv').collapse('hide');\r
368 \r
369                                 $(".form-group").each(function () {\r
370                                                 $(this).removeClass('has-success');\r
371                                                 $(this).removeClass('has-error');\r
372                                                 $(this).find(".help-block[id]").remove();\r
373                                                 $(this).find(".form-tip").removeClass('form-input-focus');\r
374                                                 //$(this).find(".item-tip").removeClass('item-tip-focus');\r
375                                         });\r
376 \r
377                                 $("#noderouteDlg").modal("show");\r
378                 },\r
379 \r
380                 savenodeInfo:function(){\r
381                         nodesuccess.hide();\r
382                                 nodeerror.hide();\r
383                                 if (nodeform.valid() == false) {\r
384                                         return false;\r
385                                 }\r
386 \r
387                                 //健康检查规则效验\r
388                                 if(vm.nodeInfo.checkType=="TTL"){\r
389                                         if(vm.nodeInfo.ttl==""){\r
390                                                         vm.node_rtn.warning_block=true;\r
391                                                     vm.node_rtn.info_block=false; \r
392                                                     vm.node_rtn.rtn_info=$.i18n.prop("org_onap_msb_discover_validator_ttl_empty");\r
393                                                         return;\r
394                                         }\r
395                                         else{\r
396                                                 \r
397                                                 vm.nodeInfo.checkTimeOut="";\r
398                                                 vm.nodeInfo.checkInterval="";\r
399                                                 vm.nodeInfo.checkUrl="";\r
400                                         }\r
401 \r
402                                 }\r
403                                 else if(vm.nodeInfo.checkType=="TCP" || vm.nodeInfo.checkType=="HTTP"){\r
404                                         if(vm.nodeInfo.checkInterval==""){\r
405                                                         vm.node_rtn.warning_block=true;\r
406                                                     vm.node_rtn.info_block=false; \r
407                                                     vm.node_rtn.rtn_info= $.i18n.prop("org_onap_msb_discover_validator_interval_empty");\r
408                                                         return;\r
409                                         }\r
410                                         \r
411 \r
412                                         if(vm.nodeInfo.checkTimeOut==""){\r
413                                                         vm.node_rtn.warning_block=true;\r
414                                                     vm.node_rtn.info_block=false; \r
415                                                     vm.node_rtn.rtn_info= $.i18n.prop("org_onap_msb_discover_validator_timeOut_empty");\r
416                                                         return;\r
417                                         }\r
418                                         \r
419 \r
420                                         if(vm.nodeInfo.checkUrl==""){\r
421                                                         vm.node_rtn.warning_block=true;\r
422                                                     vm.node_rtn.info_block=false; \r
423                                                     vm.node_rtn.rtn_info= $.i18n.prop("org_onap_msb_discover_validator_healthurl_empty");\r
424                                                         return;\r
425                                         }\r
426 \r
427                                         vm.nodeInfo.ttl="";\r
428                                 \r
429 \r
430                                 }\r
431                                 else{\r
432                                         vm.nodeInfo.checkUrl="";\r
433                                         vm.nodeInfo.checkInterval="";\r
434                                         vm.nodeInfo.checkTimeOut="";\r
435                                         vm.nodeInfo.ttl="";\r
436                                 }\r
437 \r
438                                 \r
439 \r
440                                 if(vm.nodeInfo.checkType=="HTTP"){\r
441 \r
442                                         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
443                                         if(reg_http_url_match.test(vm.nodeInfo.checkUrl)){\r
444                                                 /*vm.node_rtn.warning_block=true;\r
445                                                 vm.node_rtn.info_block=false; \r
446                                                 vm.node_rtn.rtn_info= $.i18n.prop("org_onap_msb_discover_validator_healthurl_http");\r
447                                                 return;*/\r
448                                                 if(vm.nodeInfo.checkUrl.indexOf("http://")!=0){\r
449                                                         vm.nodeInfo.checkUrl="http://"+vm.nodeInfo.checkUrl;\r
450                                                 }\r
451                                         }\r
452                                         else{\r
453                                                 if(vm.nodeInfo.checkUrl.indexOf("/")!=0){\r
454                                                         vm.nodeInfo.checkUrl="/"+vm.nodeInfo.checkUrl;\r
455                                                 }\r
456                                                 vm.nodeInfo.checkUrl="http://"+vm.nodeInfo.ip+":"+vm.nodeInfo.port+vm.nodeInfo.checkUrl\r
457 \r
458                                         }\r
459                                 } \r
460                                 else if(vm.nodeInfo.checkType=="TCP"){\r
461                                          var reg_tcp_url_match=/^.*:\d{1,5}$/;\r
462                                         if(!reg_tcp_url_match.test(vm.nodeInfo.checkUrl)){\r
463                                                 vm.node_rtn.warning_block=true;\r
464                                                 vm.node_rtn.info_block=false; \r
465                                                 vm.node_rtn.rtn_info= $.i18n.prop("org_onap_msb_discover_validator_healthurl_tcp");\r
466                                                 return;\r
467                                         }\r
468                                 } \r
469 \r
470 \r
471 \r
472 \r
473                         \r
474 \r
475                                 if(vm.nodeDlgInfo.saveType=="add")\r
476                                 {\r
477 \r
478                                 //判断host是否重复\r
479                                 for(var i=0;i<vm.msbRouteInfo.nodes.length;i++){\r
480                                 \r
481                                                 if(vm.msbRouteInfo.nodes[i].ip==vm.nodeInfo.ip && vm.msbRouteInfo.nodes[i].port==vm.nodeInfo.port )\r
482                                                 {\r
483                                                         vm.node_rtn.warning_block=true;\r
484                                                     vm.node_rtn.info_block=false; \r
485                                                     vm.node_rtn.rtn_info=$.i18n.prop('org_onap_msb_discover_err_host_repeat',[vm.nodeInfo.ip],[vm.nodeInfo.port]);\r
486                                                         return;\r
487                                                 }\r
488                                         \r
489                                 }\r
490 \r
491 \r
492                                         var node=\r
493                                         {\r
494                                                 ip:vm.nodeInfo.ip,\r
495                                                 port:vm.nodeInfo.port,\r
496                                                 weight:vm.nodeInfo.weight,\r
497                                                 max_fails:vm.nodeInfo.max_fails,\r
498                                                 fail_timeout:vm.nodeInfo.fail_timeout,\r
499                                                 checkType:vm.nodeInfo.checkType,\r
500                                                 checkUrl:vm.nodeInfo.checkUrl,\r
501                                                 checkInterval:vm.nodeInfo.checkInterval==""?"":vm.nodeInfo.checkInterval+"s",\r
502                                                 checkTimeOut:vm.nodeInfo.checkTimeOut==""?"":vm.nodeInfo.checkTimeOut+"s",\r
503                                                 ttl:vm.nodeInfo.ttl==""?"":vm.nodeInfo.ttl+"s",\r
504                                                 ha_role:vm.nodeInfo.ha_role\r
505 \r
506                                         };\r
507                                                 vm.msbRouteInfo.nodes.push(node);\r
508                                 }\r
509                                 else if(vm.nodeDlgInfo.saveType=="update")\r
510                                 {\r
511                                         if(vm.nodeInfo.ip!=vm.oldNodeInfo.ip || \r
512                   vm.nodeInfo.port!=vm.oldNodeInfo.port)  //已修改IP或者port\r
513                   {\r
514 \r
515                                         //判断host是否重复\r
516                                                 for(var i=0;i<vm.msbRouteInfo.nodes.length;i++){\r
517                                                 \r
518                                                                 if(vm.msbRouteInfo.nodes[i].ip==vm.nodeInfo.ip && vm.msbRouteInfo.nodes[i].port==vm.nodeInfo.port )\r
519                                                                 {\r
520                                                                         vm.node_rtn.warning_block=true;\r
521                                                                     vm.node_rtn.info_block=false; \r
522                                                                     vm.node_rtn.rtn_info= $.i18n.prop('org_onap_msb_discover_err_host_repeat',[vm.nodeInfo.ip],[vm.nodeInfo.port]);\r
523                                                                         return;\r
524                                                                 }\r
525                                                         \r
526                                                 }\r
527                             }\r
528 \r
529                                          for(var i=0;i<vm.msbRouteInfo.nodes.length;i++){\r
530                                                if(vm.msbRouteInfo.nodes[i].ip == vm.oldNodeInfo.ip && vm.msbRouteInfo.nodes[i].port == vm.oldNodeInfo.port){\r
531                                                  \r
532                                                     vm.msbRouteInfo.nodes[i].ip=vm.nodeInfo.ip;\r
533                                                     vm.msbRouteInfo.nodes[i].port=vm.nodeInfo.port;\r
534                                                     vm.msbRouteInfo.nodes[i].weight=vm.nodeInfo.weight;\r
535                                                     vm.msbRouteInfo.nodes[i].max_fails=vm.nodeInfo.max_fails;\r
536                                                     vm.msbRouteInfo.nodes[i].fail_timeout=vm.nodeInfo.fail_timeout;\r
537                                                     vm.msbRouteInfo.nodes[i].checkType=vm.nodeInfo.checkType;\r
538                                                     vm.msbRouteInfo.nodes[i].checkUrl=vm.nodeInfo.checkUrl;\r
539                                                     vm.msbRouteInfo.nodes[i].checkInterval=vm.nodeInfo.checkInterval==""?"":vm.nodeInfo.checkInterval+"s";\r
540                                                     vm.msbRouteInfo.nodes[i].checkTimeOut=vm.nodeInfo.checkTimeOut==""?"":vm.nodeInfo.checkTimeOut+"s";\r
541                                                     vm.msbRouteInfo.nodes[i].ttl=vm.nodeInfo.ttl==""?"":vm.nodeInfo.ttl+"s";\r
542                                                     vm.msbRouteInfo.nodes[i].ha_role=vm.nodeInfo.ha_role;\r
543 \r
544                                                     \r
545 \r
546                                                    \r
547                                                     \r
548                                                     break;\r
549                                                 }\r
550                                        }        \r
551 \r
552 \r
553                                 }\r
554 \r
555                                 $('#noderouteDlg').modal('hide');\r
556 \r
557                 },\r
558                 delnodeInfo:function(ip,port){\r
559                         bootbox.confirm($.i18n.prop('org_onap_msb_discover_err_host_del_ask',[ip],[port]),function(result){\r
560                                 if(result){\r
561                                         \r
562                                          for(var i=0;i<vm.msbRouteInfo.nodes.length;i++){\r
563                                                if(vm.msbRouteInfo.nodes[i].ip == ip && vm.msbRouteInfo.nodes[i].port == port){\r
564                                                     vm.msbRouteInfo.nodes.splice(i, 1);\r
565                                                     break;\r
566                                                 }\r
567                                        }        \r
568 \r
569                              \r
570 \r
571                                }\r
572         \r
573                                 });\r
574 \r
575 \r
576                 },\r
577                 updatenodeInfo:function(node){\r
578                         vm.nodeInfo.ip=node.ip;\r
579                         vm.oldNodeInfo.ip=node.ip;\r
580                         \r
581                         vm.nodeInfo.port=node.port;\r
582                         vm.oldNodeInfo.port=node.port;\r
583 \r
584                         vm.nodeInfo.weight=node.weight;\r
585                         vm.nodeInfo.max_fails=node.max_fails;\r
586                         vm.nodeInfo.fail_timeout=node.fail_timeout;\r
587 \r
588                         vm.nodeInfo.checkType=node.checkType;\r
589                         vm.nodeInfo.checkUrl=node.checkUrl;\r
590                         if(node.checkInterval!=undefined) vm.nodeInfo.checkInterval=node.checkInterval.replace("s","");\r
591                         if(node.checkTimeOut!=undefined) vm.nodeInfo.checkTimeOut=node.checkTimeOut.replace("s","");\r
592                         if(node.ttl!=undefined) vm.nodeInfo.ttl=node.ttl.replace("s","");\r
593                         vm.nodeInfo.ha_role=node.ha_role;\r
594 \r
595                         \r
596                         \r
597 \r
598                                 vm.nodeDlgInfo.saveType = "update";\r
599                                 vm.nodeDlgInfo.titleName=$.i18n.prop('org_onap_msb_discover_node_title_update');\r
600                                 vm.node_rtn.warning_block=false;\r
601                                 vm.node_rtn.info_block=false;\r
602 \r
603                 $('#advanceDiv').collapse('hide');\r
604 \r
605                                 $(".form-group").each(function () {\r
606                                                 $(this).removeClass('has-success');\r
607                                                 $(this).removeClass('has-error');\r
608                                                 $(this).find(".help-block[id]").remove();                                       \r
609                                                 $(this).find(".form-tip").removeClass('form-input-focus');\r
610                                         });\r
611 \r
612                                 $("#noderouteDlg").modal("show");\r
613 \r
614                 },\r
615                 resetRoute:function(){\r
616                         if(vm.pageInfo.pageType=="add"){\r
617                                 vm.addMsbRoute();\r
618                              }\r
619                              else if(vm.pageInfo.pageType=="update"){\r
620                                vm.initUpdateRoute(vm.updateServiceInfo.serviceName,vm.updateServiceInfo.version,vm.updateServiceInfo.namespace);                        \r
621                              }\r
622                              \r
623                 },\r
624                 getTcpUdpPortRangeUrl:function(){\r
625                         $.ajax({\r
626                         "type": 'get',\r
627                         "url":  vm.$tcpudpportrangeUrl,\r
628                         "dataType": "json",\r
629                         success: function (tcp_udp_port_range) {  \r
630                            vm.tcp_udp_port_range=tcp_udp_port_range;\r
631                            $("input[name='publish_port']").attr("placeholder","Range:"+tcp_udp_port_range[0]+"-"+tcp_udp_port_range[1]);\r
632 \r
633 \r
634                         },\r
635                          error: function(XMLHttpRequest, textStatus, errorThrown) {\r
636                                                    console.log("get TcpUdpPortRangeUrl fails:"+XMLHttpRequest.responseText);                       \r
637                             \r
638                          }\r
639 \r
640                                 });\r
641 \r
642 \r
643                 },              \r
644                 getApigatewayInfo : function(namespace) {\r
645 \r
646                         // if(namespace=="") namespace="default";\r
647                         if(namespace!="all"){\r
648                                 vm.apiGatewayService=[];\r
649                                 vm.routeService=[];\r
650                         }\r
651 \r
652 \r
653                          var  url=vm.$apiGatewayInfoUrl+"?namespace="+namespace;\r
654 \r
655                                  $.ajax({\r
656                         "type": 'get',\r
657                         "url":  url,\r
658                         "async":false,\r
659                         "dataType": "json",\r
660                         success: function (resp) {  \r
661                            var apiGatewayService=[],routeService=[];\r
662                            var apiGatewayInfoList=resp==null?[]:resp;\r
663 \r
664                                 for(var i=0;i<apiGatewayInfoList.length;i++){\r
665                                         if(apiGatewayInfoList[i].visualRange=="0"){\r
666                                                 routeService.push(apiGatewayInfoList[i]);\r
667                                         }\r
668                                         else if(apiGatewayInfoList[i].visualRange=="1"){\r
669                                                                 apiGatewayService.push(apiGatewayInfoList[i])\r
670                                         }\r
671                                 }\r
672 \r
673                                 if(namespace=="all"){\r
674                                         vm.apiGatewayService_all=apiGatewayService;\r
675                                         vm.routeService_all=routeService;\r
676                                 }\r
677                                 else{\r
678                                         vm.apiGatewayService=apiGatewayService;\r
679                                         vm.routeService=routeService;\r
680                                 }\r
681                            \r
682                            \r
683 \r
684                         },\r
685                          error: function(XMLHttpRequest, textStatus, errorThrown) {\r
686                                                    console.log("get apigatewayInfo for "+namespace+" fails:"+XMLHttpRequest.responseText);                       \r
687                              \r
688                          }\r
689                         \r
690                          \r
691                                 });\r
692 \r
693 \r
694                                 \r
695 \r
696                                 routeUtil.changeTargetServiceUrl();\r
697 \r
698                         \r
699 \r
700                 },\r
701                 initIUIfori18n:function(){\r
702                         vm.msbLbPolicyRange=[\r
703                                         {\r
704                                                 name:$.i18n.prop("org_onap_msb_discover_lbpolicy_round"),\r
705                                                 value:"round-robin"\r
706                                         },\r
707                                          {\r
708                                                 name:"IPHash",\r
709                                                 value:"ip_hash"\r
710                                         },\r
711                                         /*{\r
712                                                 name:$.i18n.prop("org_onap_msb_discover_lbpolicy_leastconn"),\r
713                                                 value:"least_conn"\r
714                                         },*/\r
715                                         {\r
716                                                 name:$.i18n.prop("org_onap_msb_discover_lbpolicy_clientcustom"),\r
717                                                 value:"client_custom"\r
718                                         }       \r
719                                 ];\r
720 \r
721                 },\r
722                         savemsbRoute : function() {\r
723 \r
724                                 msbsuccess.hide();\r
725                                 msberror.hide();\r
726                                 if (msbform.valid() == false) {\r
727                                         return false;\r
728                                 }\r
729 \r
730                                 if(vm.msbRouteInfo.nodes.length==0){\r
731                                         vm.server_rtn.warning_block=true;\r
732                                         vm.server_rtn.info_block=false; \r
733                                         vm.server_rtn.rtn_info= $.i18n.prop('org_onap_msb_discover_err_host_leastone');\r
734                                         return;\r
735                                 }\r
736 \r
737                                 if(vm.msbRouteInfo.visualRangeArray.length==0){\r
738                                         vm.server_rtn.warning_block=true;\r
739                                         vm.server_rtn.info_block=false; \r
740                                         vm.server_rtn.rtn_info= $.i18n.prop('org_onap_msb_discover_err_visualrange_empty');\r
741                                         return;\r
742                                 }\r
743 \r
744 \r
745                                 /*if(vm.msbRouteInfo.namespace=="default" || vm.msbRouteInfo.namespace=="all" ){\r
746                                         vm.server_rtn.warning_block=true;\r
747                                         vm.server_rtn.info_block=false; \r
748                                         vm.server_rtn.rtn_info= $.i18n.prop('org_onap_msb_discover_err_namespace_err',[vm.msbRouteInfo.namespace]);\r
749                                         return;\r
750                                 }*/\r
751 \r
752 \r
753                                 if(vm.msbRouteInfo.protocol=="REST" || vm.msbRouteInfo.protocol=="HTTP"||vm.msbRouteInfo.protocol=="UI"||vm.msbRouteInfo.protocol=="PORTAL"){\r
754                                         if(vm.msbRouteInfo.url==""){\r
755                                                 vm.server_rtn.warning_block=true;\r
756                                                 vm.server_rtn.info_block=false; \r
757                                                 vm.server_rtn.rtn_info=$.i18n.prop('org_onap_msb_discover_err_url_empty',[vm.msbRouteInfo.protocol]);\r
758                                                 return;\r
759 \r
760                                         }\r
761                                 }\r
762 \r
763                                 //正则判断标签格式正确性\r
764                                 var labelArray=[];\r
765                                  if($('#labels').val().trim()!=""){\r
766                                          labelArray=$('#labels').val().split(",");\r
767                                         for(var i=0;i<labelArray.length;i++){\r
768                                                 labelArray[i]=labelArray[i].trim();\r
769                                                 if(/\S+:\S+/.test(labelArray[i])==false){\r
770                                                 vm.server_rtn.warning_block=true;\r
771                                                 vm.server_rtn.info_block=false; \r
772                                                 vm.server_rtn.rtn_info=$.i18n.prop('org_onap_msb_discover_err_label_format');\r
773                                                 return;\r
774 \r
775                                                 }\r
776 \r
777                                         }\r
778                                  \r
779                                  }\r
780 \r
781                                  var metadataArray=[],metadata=[];\r
782                                  if($('#metadata').val().trim()!=""){\r
783                                          metadataArray=$('#metadata').val().split(",");\r
784                                         for(var i=0;i<metadataArray.length;i++){\r
785                                                 metadataArray[i]=metadataArray[i].trim();\r
786 \r
787                                                 if(/\S+:\S+/.test(metadataArray[i])==false){\r
788                                                 vm.server_rtn.warning_block=true;\r
789                                                 vm.server_rtn.info_block=false; \r
790                                                 vm.server_rtn.rtn_info=$.i18n.prop('org_onap_msb_discover_err_metadata_format');\r
791                                                 return;\r
792                                                 }\r
793                                                 var metadata_key_value=metadataArray[i].split(":");\r
794                                                 var metadata_obj=new Object();\r
795                                                 metadata_obj.key=metadata_key_value[0];\r
796                                                 metadata_obj.value=metadata_key_value[1];\r
797                                                 metadata.push(metadata_obj);\r
798 \r
799                                         }\r
800                                  \r
801                                  }\r
802 \r
803        \r
804     \r
805                         \r
806 \r
807 \r
808 \r
809                                 vm.server_rtn.warning_block=false;\r
810                                 vm.server_rtn.info_block=true;\r
811 \r
812                                 //var msbUrl=vm.msbRouteInfo.url=="/"?"":vm.msbRouteInfo.url;\r
813                                 \r
814                                 var nodes=[];\r
815                                 for(var i=0;i<vm.msbRouteInfo.nodes.length;i++){\r
816 \r
817 \r
818                               var lb_server_params="";\r
819                               if(vm.msbRouteInfo.nodes[i].weight!=""){\r
820                                 lb_server_params+="weight="+vm.msbRouteInfo.nodes[i].weight+","\r
821                               }\r
822 \r
823                               if(vm.msbRouteInfo.nodes[i].max_fails!=""){\r
824                                 lb_server_params+="max_fails="+vm.msbRouteInfo.nodes[i].max_fails+","\r
825                               }\r
826 \r
827                               if(vm.msbRouteInfo.nodes[i].fail_timeout!=""){\r
828                                 lb_server_params+="fail_timeout="+vm.msbRouteInfo.nodes[i].fail_timeout+"s";\r
829                               }\r
830 \r
831 \r
832 \r
833                                 \r
834 \r
835                                         var node={\r
836                                                 ip:vm.msbRouteInfo.nodes[i].ip,\r
837                                                 port:vm.msbRouteInfo.nodes[i].port,\r
838                                                 lb_server_params: lb_server_params,\r
839                                                 checkType:vm.msbRouteInfo.nodes[i].checkType,\r
840                                                 checkUrl:vm.msbRouteInfo.nodes[i].checkUrl,\r
841                                                 checkInterval:vm.msbRouteInfo.nodes[i].checkInterval,\r
842                                                 checkTimeOut:vm.msbRouteInfo.nodes[i].checkTimeOut,\r
843                                                 ttl:vm.msbRouteInfo.nodes[i].ttl,\r
844                                                 ha_role:vm.msbRouteInfo.nodes[i].ha_role\r
845 \r
846                                         };\r
847                                         nodes.push(node);\r
848                                 }\r
849 \r
850                                 //TCP|UDP协议对外端口判断\r
851                                 /*if((vm.msbRouteInfo.protocol=="TCP" || vm.msbRouteInfo.protocol=="UDP") && vm.if_publish_port.length==1){\r
852 \r
853 \r
854 \r
855 \r
856                                         if(vm.pageInfo.pageType=="add" || (vm.pageInfo.pageType=="update" && vm.msbRouteInfo.oldPublic_port!=vm.msbRouteInfo.publish_port)){\r
857 \r
858                                         //唯一性判断\r
859                                         for(var i=0;i<vm.msbRouteArray.length;i++){\r
860                                 \r
861                                                 if(vm.msbRouteArray[i].publish_port==vm.msbRouteInfo.publish_port)\r
862                                                 {\r
863                                                         vm.server_rtn.warning_block=true;\r
864                                                     vm.server_rtn.info_block=false; \r
865                                                     vm.server_rtn.rtn_info= "发布端口("+vm.msbRouteInfo.publish_port+")已使用";\r
866                                                         return;\r
867                                                 }\r
868                                         \r
869                                      }\r
870                                   }\r
871                                         \r
872 \r
873                                 }\r
874                                 else{\r
875                                    vm.msbRouteInfo.publish_port="";     \r
876                                 }*/\r
877 \r
878 \r
879                                 //var newServiceName=(vm.msbRouteInfo.protocol=="UI"?("IUI_"+vm.msbRouteInfo.serviceName):vm.msbRouteInfo.serviceName);\r
880                                 var newServiceName=vm.msbRouteInfo.serviceName;\r
881 \r
882                         \r
883 \r
884                                 var data= JSON.stringify({\r
885                                                          "serviceName": newServiceName,\r
886                                                           "version": vm.msbRouteInfo.version,\r
887                                                           "url": vm.msbRouteInfo.url,                                                    \r
888                                                           "nodes": nodes,\r
889                                                           "protocol":vm.msbRouteInfo.protocol,\r
890                                                           "visualRange":vm.msbRouteInfo.visualRangeArray.join("|"),\r
891                                                           "lb_policy":vm.msbRouteInfo.lb_policy,\r
892                                                           "publish_port":vm.msbRouteInfo.publish_port,\r
893                                                           "namespace":vm.msbRouteInfo.namespace,\r
894                                                           "network_plane_type":vm.msbRouteInfo.network_plane_type,\r
895                                                           "host":vm.msbRouteInfo.host,\r
896                                                           "path":vm.msbRouteInfo.path,\r
897                                                           "labels":     labelArray,\r
898                                                           "metadata":metadata\r
899                                                 });\r
900 \r
901                                 \r
902 \r
903                                         //判断服务名是否重复\r
904                                 if(vm.pageInfo.pageType=="add"){\r
905 \r
906                                         var url= vm.$msbRouteInstanceUrl;\r
907 \r
908                                  var version2=vm.msbRouteInfo.version==""?"null":vm.msbRouteInfo.version;\r
909                  url=url.replace("{serviceName}",newServiceName).replace("{version}",version2)+"?ifPassStatus=false&namespace="+vm.msbRouteInfo.namespace;\r
910 \r
911                                 $.ajax({\r
912                         "type": 'get',\r
913                         "url":  url,\r
914                         "dataType": "json",\r
915                         "async": false,\r
916                         success: function (serviceInfo) {  \r
917                             \r
918                                         vm.server_rtn.warning_block=true;\r
919                                                             vm.server_rtn.info_block=false; \r
920                                                             vm.server_rtn.rtn_info=$.i18n.prop('org_onap_msb_discover_err_service_repeat',[vm.msbRouteInfo.serviceName],[vm.msbRouteInfo.protocol],[vm.msbRouteInfo.namespace]);\r
921                                                                 \r
922                 \r
923                         },\r
924                          error: function(XMLHttpRequest, textStatus, errorThrown) {\r
925                                   if(XMLHttpRequest.status==404){\r
926                                             $.ajax({\r
927                                                         "type": 'POST',\r
928                                                         "url":  vm.$msbRouteUrl,\r
929                                                         "data" : data,\r
930                                                         "dataType": "json",\r
931                                                         "contentType":"application/json",\r
932                                                         success: function (resp) {  \r
933                                                                 \r
934 \r
935                                                                                  window.location.href="index.html" \r
936 \r
937                                                                                   //table.destroy();\r
938                                                                                   //vm.initMSBRoute();\r
939                                                 \r
940                                                         },\r
941                                                          error: function(XMLHttpRequest, textStatus, errorThrown) {\r
942 \r
943                                                                                    vm.server_rtn.warning_block=true;\r
944                                                                                vm.server_rtn.info_block=false; \r
945                                                                                vm.server_rtn.rtn_info= "msb save fails:"+XMLHttpRequest.responseText;                \r
946                                                               \r
947                                                          }\r
948                                                     });\r
949 \r
950                                                         }\r
951                                                         else{\r
952                                                                 bootbox.alert("get service["+vm.msbRouteInfo.serviceName+"]fails:"+XMLHttpRequest.responseText);                       \r
953                                }\r
954                          }\r
955                         \r
956                          \r
957                                 });\r
958 \r
959 \r
960                 \r
961                  \r
962                }\r
963                 else if(vm.pageInfo.pageType=="update")\r
964                                 {\r
965                                         \r
966                                   var url= vm.$msbRouteInstanceUrl+"?is_manual=true&namespace="+vm.msbRouteInfo.namespace;\r
967                                   var version2=vm.msbRouteInfo.oldVersion==""?"null":vm.msbRouteInfo.oldVersion;\r
968                    url=url.replace("{serviceName}",vm.msbRouteInfo.oldServiceName).replace("{version}",version2);\r
969 \r
970                                  $.ajax({\r
971                         "type": 'PUT',\r
972                         "url":  url,\r
973                         "data" : data,\r
974                         "dataType": "json",\r
975                         "contentType":"application/json",\r
976                         success: function (resp) {  \r
977                                 \r
978                                         window.location.href="index.html?namespace="+vm.updateServiceInfo.namespace;\r
979                 \r
980                         },\r
981                          error: function(XMLHttpRequest, textStatus, errorThrown) {\r
982                                                 \r
983                                                    vm.server_rtn.warning_block=true;\r
984                                                vm.server_rtn.info_block=false; \r
985                                                vm.server_rtn.rtn_info= "msb save fails:"+XMLHttpRequest.responseText;                \r
986                               \r
987                          }\r
988                     });         \r
989 \r
990                                                         \r
991                                 }\r
992                \r
993                \r
994                \r
995                         }\r
996 \r
997                 \r
998 \r
999         });\r
1000 \r
1001 \r