4
4
from __future__ import print_function
5
5
from __future__ import absolute_import
6
6
import requests
7
+ import urllib3
7
8
import socket
8
9
import os
9
10
import six
@@ -479,9 +480,15 @@ def _test_auth_config(self):
479
480
480
481
return not errors
481
482
482
- def _dump_urls (self ):
483
- base_parsed = urlparse (self .base_url )
484
- if base_parsed .hostname .endswith ("stage.redhat.com" ):
483
+ def _test_url_config (self ):
484
+ try :
485
+ base_parsed = urllib3 .util .url .parse_url (self .base_url )
486
+ except urllib3 .exceptions .LocationParseError :
487
+ base_parsed = None
488
+
489
+ if not base_parsed :
490
+ hostname_desc = "invalid URL"
491
+ elif base_parsed .hostname .endswith ("stage.redhat.com" ):
485
492
hostname_desc = "Red Hat Insights (staging)"
486
493
elif base_parsed .hostname .endswith ("redhat.com" ):
487
494
if self .config .verbose :
@@ -499,14 +506,32 @@ def _dump_urls(self):
499
506
500
507
logger .info (" Ping URL: %s" , self .ping_url )
501
508
509
+ invalid_proxies = {}
502
510
if self .proxies :
503
511
for proxy_type , proxy_url in self .proxies .items ():
504
- logger .info (" %s proxy: %s" , proxy_type .upper (), proxy_url )
512
+ try :
513
+ urllib3 .util .url .parse_url (proxy_url )
514
+ except urllib3 .exceptions .LocationParseError :
515
+ invalid_proxies [proxy_type ] = proxy_url
516
+ proxy_desc = " (invalid)" if proxy_type in invalid_proxies else ""
517
+ logger .info (" %s proxy: %s%s" , proxy_type .upper (), proxy_url , proxy_desc )
505
518
else :
506
519
logger .info (" Proxy: not set" )
507
520
508
521
logger .info ("" )
509
522
523
+ if not base_parsed or invalid_proxies :
524
+ if not base_parsed :
525
+ logger .error ("Invalid base URL: %s" , self .base_url )
526
+
527
+ for proxy_type , proxy_url in invalid_proxies .items ():
528
+ logger .error ("Invalid %s proxy: %s" , proxy_type .upper (), proxy_url )
529
+
530
+ logger .error ("" )
531
+ return False
532
+
533
+ return True
534
+
510
535
def _test_connection (self , url ):
511
536
parsed_url = urlparse (url )
512
537
logger .error (" Could not resolve %s." , parsed_url .hostname )
@@ -534,11 +559,10 @@ def test_connection(self, rc=0):
534
559
"""
535
560
Test connection to Red Hat
536
561
"""
537
- auth_config_ok = self ._test_auth_config ()
538
- if not auth_config_ok :
539
- return 1
540
-
541
- self ._dump_urls ()
562
+ for config_test in [self ._test_auth_config , self ._test_url_config ]:
563
+ config_ok = config_test ()
564
+ if not config_ok :
565
+ return 1
542
566
543
567
logger .info ("Running Connection Tests..." )
544
568
logger .info ("" )
0 commit comments