@@ -160,6 +160,10 @@ def _get_node_ip(self, node_name):
160
160
for addr in i .status .addresses :
161
161
if addr .type == "ExternalIP" :
162
162
ip = addr .address
163
+ elif addr .type == "InternalIP" :
164
+ ip = addr .address
165
+ else :
166
+ continue
163
167
return ip
164
168
165
169
def _get_node_ip_of_service (self , service_name ):
@@ -173,21 +177,57 @@ def _get_node_ip_of_service(self, service_name):
173
177
if i .metadata .name .startswith (service_name ):
174
178
return self ._get_node_ip (i .spec .node_name )
175
179
176
- def _get_service_external_port (self , service_name ):
180
+ def _get_service_external_port (self , namespace , ip ):
177
181
ret = self .corev1client .list_service_for_all_namespaces (watch = False )
182
+ results = {}
183
+ # result template
184
+ r_template = ip + ":" + "{}"
178
185
for i in ret .items :
179
- if i .metadata .name == service_name :
180
- external_port = ""
186
+ if i .metadata .namespace == namespace :
187
+ tmp_name = i . metadata . name . replace ( "-" , "_" )
181
188
if i .metadata .name .startswith ("peer" ):
182
189
for port in i .spec .ports :
190
+ # transfer port name which can be recognized.
183
191
if port .name == "externale-listen-endpoint" :
184
192
external_port = port .node_port
185
- else :
193
+ name = tmp_name + "_grpc"
194
+ value = r_template .format (external_port )
195
+
196
+ elif port .name == "listen" :
197
+ event_port = port .node_port
198
+ name = tmp_name + "_event"
199
+ value = r_template .format (event_port )
200
+
201
+ else :
202
+ continue
203
+
204
+ results [name ] = value
205
+
206
+ elif i .metadata .name .startswith ("ca" ):
207
+ name = tmp_name + "_ecap"
186
208
for port in i .spec .ports :
187
- # these services only have one port
188
- external_port = port .node_port
209
+ _port = port .node_port
210
+ value = r_template .format (_port )
211
+ results [name ] = value
189
212
190
- return external_port
213
+ elif i .metadata .name .startswith ("orderer" ):
214
+ name = "orderer"
215
+ for port in i .spec .ports :
216
+ _port = port .node_port
217
+ value = r_template .format (_port )
218
+ results [name ] = value
219
+
220
+ elif i .metadata .name .startswith ("fabric-explorer" ):
221
+ name = "dashboard"
222
+ for port in i .spec .ports :
223
+ _port = port .node_port
224
+ value = r_template .format (_port )
225
+ results [name ] = value
226
+
227
+ else :
228
+ continue
229
+
230
+ return results
191
231
192
232
def _create_deployment (self , namespace , data , ** kwargs ):
193
233
try :
@@ -377,20 +417,16 @@ def _setup_cluster(self, cluster_name):
377
417
378
418
def get_services_urls (self , cluster_name ):
379
419
ret = self .corev1client .list_service_for_all_namespaces (watch = False )
380
- service_url = {}
381
- value = ""
420
+ service = ""
382
421
for i in ret .items :
383
422
if i .metadata .namespace == cluster_name :
384
- service_name = i .metadata .name
385
- value = self ._get_node_ip_of_service (service_name ) + ":" + \
386
- str (self ._get_service_external_port (service_name ))
387
- service_url [service_name ] = value
388
-
389
- # Use fabric-explorer as dashboard
390
- if "fabric-explorer" in service_name :
391
- service_url ["dashboard" ] = value
423
+ service = i .metadata .name
424
+ break
392
425
393
- return service_url
426
+ service_ip = self ._get_node_ip_of_service (service )
427
+ service_urls = self ._get_service_external_port (cluster_name ,
428
+ service_ip )
429
+ return service_urls
394
430
395
431
def _get_cluster_ports (self , ports_index ):
396
432
logger .debug ("Current exsiting cluster ports= {}" .format (ports_index ))
@@ -402,19 +438,19 @@ def _get_cluster_ports(self, ports_index):
402
438
current_path = os .path .dirname (__file__ )
403
439
templates_path = os .path .join (current_path , "templates" )
404
440
for (dir_path , dir_name , file_list ) in os .walk (templates_path ):
405
- for file in file_list :
406
- # pvc and namespace files do not have port mapping
407
- if ("pvc" not in file and "namespace" not in file and
408
- "cli" not in file ):
409
- if "peer" in file :
441
+ for f in file_list :
442
+ # pvc and namespace fs do not have port mapping
443
+ if ("pvc" not in f and "namespace" not in f and
444
+ "cli" not in f ):
445
+ if "peer" in f :
410
446
peers_ports = {}
411
447
peers_ports ["externalPort" ] = str (current_port )
412
448
peers_ports ["chaincodePort" ] = str (current_port + 1 )
413
449
peers_ports ["nodePort" ] = str (current_port + 2 )
414
450
current_port = current_port + 3
415
- cluster_ports [file ] = peers_ports
451
+ cluster_ports [f ] = peers_ports
416
452
else :
417
- cluster_ports [file ] = str (current_port )
453
+ cluster_ports [f ] = str (current_port )
418
454
current_port = current_port + 1
419
455
logger .debug ("return generated cluster ports= {}"
420
456
.format (cluster_ports ))
0 commit comments