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