@@ -385,21 +385,22 @@ class TestKubeutil(unittest.TestCase):
385
385
def setUp (self , _locate_kubelet ):
386
386
self .kubeutil = KubeUtil ()
387
387
388
- def test_init_ssl_settings (self ):
388
+ @mock .patch ('os.path.exists' , return_value = True )
389
+ def test_init_tls_settings (self , * args ):
389
390
instances = [
390
391
# (instance, expected_result)
391
392
({}, {'verify' : True }),
392
- ({'kubelet_ssl_verify ' : False }, {'verify' : False }),
393
- ({'kubelet_ssl_verify ' : True }, {'verify' : True }),
394
- ({'kubelet_ssl_verify ' : 'foo.pem' }, {'verify' : 'foo.pem' }),
393
+ ({'kubelet_tls_verify ' : False }, {'verify' : False }),
394
+ ({'kubelet_tls_verify ' : True }, {'verify' : True }),
395
+ ({'kubelet_tls_verify ' : 'foo.pem' }, {'verify' : 'foo.pem' }),
395
396
({'kubelet_cert' : 'foo.pem' }, {'verify' : 'foo.pem' }),
396
397
({'kubelet_client_crt' : 'client.crt' , 'kubelet_client_key' : 'client.key' },
397
398
{'verify' : True , 'kubelet_client_cert' : ('client.crt' , 'client.key' )}),
398
- ({'kubelet_ssl_verify ' : True , 'kubelet_client_crt' : 'client.crt' }, {'verify' : True }),
399
+ ({'kubelet_tls_verify ' : True , 'kubelet_client_crt' : 'client.crt' }, {'verify' : True }),
399
400
({'kubelet_client_crt' : 'client.crt' }, {'verify' : True })
400
401
]
401
402
for instance , result in instances :
402
- self .assertEqual (self .kubeutil ._init_ssl_settings (instance ), result )
403
+ self .assertEqual (self .kubeutil ._init_tls_settings (instance ), result )
403
404
404
405
405
406
##### Test _locate_kubelet #####
@@ -419,7 +420,7 @@ def test_locate_kubelet_no_auth_no_ssl(self, _get_hostname):
419
420
({'kubelet_port' : '1337' }, 'http://test_docker_host:1337' ),
420
421
({'host' : 'test_explicit_host' , 'kubelet_port' : '1337' }, 'http://test_explicit_host:1337' )
421
422
]
422
- with mock .patch ('utils.kubernetes.kubeutil.KubeUtil.retrieve_kubelet_url ' , return_value = True ):
423
+ with mock .patch ('utils.kubernetes.kubeutil.KubeUtil.perform_kubelet_query ' , return_value = True ):
423
424
for instance , result in no_auth_no_ssl_instances :
424
425
self .assertEqual (self .kubeutil ._locate_kubelet (instance ), result )
425
426
@@ -434,13 +435,13 @@ def test_locate_kubelet_no_auth_no_verify(self, _get_hostname):
434
435
]
435
436
436
437
def side_effect (url ):
437
- """Mock KubeUtil.retrieve_kubelet_url """
438
+ """Mock KubeUtil.perform_kubelet_query """
438
439
if url .startswith ('https://' ):
439
440
return True
440
441
else :
441
442
raise Exception ()
442
443
443
- with mock .patch ('utils.kubernetes.kubeutil.KubeUtil.retrieve_kubelet_url ' , side_effect = side_effect ):
444
+ with mock .patch ('utils.kubernetes.kubeutil.KubeUtil.perform_kubelet_query ' , side_effect = side_effect ):
444
445
for instance , result in no_auth_no_verify_instances :
445
446
self .assertEqual (self .kubeutil ._locate_kubelet (instance ), result )
446
447
@@ -449,10 +450,10 @@ def side_effect(url):
449
450
@mock .patch ('utils.kubernetes.kubeutil.KubeUtil.get_auth_token' , return_value = 'foo' )
450
451
def test_locate_kubelet_verify_and_auth (self , * args ):
451
452
"""
452
- Test kubelet connection with SSL . Also look for auth token.
453
+ Test kubelet connection with TLS . Also look for auth token.
453
454
"""
454
455
no_auth_instances = [
455
- # instance, ssl_settings , expected_result
456
+ # instance, tls_settings , expected_result
456
457
({}, {'verify' : True }, 'https://test_k8s_host:10250' ),
457
458
({'kubelet_port' : '1337' }, {'verify' : 'test.pem' }, 'https://test_k8s_host:1337' ),
458
459
(
@@ -468,46 +469,39 @@ def test_locate_kubelet_verify_and_auth(self, *args):
468
469
]
469
470
470
471
def side_effect (url , ** kwargs ):
471
- """Mock KubeUtil.retrieve_kubelet_url """
472
+ """Mock KubeUtil.perform_kubelet_query """
472
473
if url .startswith ('https://' ) and '10255' not in url :
473
474
return True
474
475
else :
475
476
raise Exception ()
476
477
477
- # no auth / SSL with verify
478
- for instance , ssl_settings , result in no_auth_instances :
478
+ # no auth / TLS with verify
479
+ for instance , tls_settings , result in no_auth_instances :
479
480
with mock .patch ('utils.kubernetes.kubeutil.requests' ) as req :
480
481
req .get = mock .MagicMock (side_effect = side_effect )
481
- self .kubeutil .ssl_settings = ssl_settings
482
+ self .kubeutil .tls_settings = tls_settings
482
483
self .assertEqual (self .kubeutil ._locate_kubelet (instance ), result )
483
484
req .get .assert_called_with (result + '/healthz' , # test endpoint
484
485
timeout = 10 ,
485
- verify = ssl_settings .get ('verify' , False ),
486
- cert = ssl_settings . get ( ' kubelet_client_cert') ,
487
- headers = { 'Authorization' : 'Bearer foo' }, # auth
486
+ verify = tls_settings .get ('verify' , False ),
487
+ headers = { 'Authorization' : 'Bearer foo' } if ' kubelet_client_cert' not in tls_settings else None ,
488
+ cert = tls_settings . get ( 'kubelet_client_cert' ),
488
489
params = {'verbose' : True }
489
490
)
490
491
491
492
@mock .patch ('utils.kubernetes.kubeutil.KubeUtil.get_auth_token' , return_value = 'foo' )
492
493
def test_get_node_hostname (self , _get_auth_tkn ):
493
494
node_lists = [
494
495
(json .loads (Fixtures .read_file ('filtered_node_list_1_4.json' , string_escape = False )), 'ip-10-0-0-179' ),
495
- ({'items' : [{'foo' : 'bar' }]}, None )
496
- ]
497
-
498
- exception_node_lists = [
499
- {'items' : []},
500
- {'items' : [{'foo' : 'bar' }, {'bar' : 'foo' }]}
496
+ ({'items' : [{'foo' : 'bar' }]}, None ),
497
+ ({'items' : []}, None ),
498
+ ({'items' : [{'foo' : 'bar' }, {'bar' : 'foo' }]}, None )
501
499
]
502
500
503
501
for node_list , expected_result in node_lists :
504
502
with mock .patch ('utils.kubernetes.kubeutil.KubeUtil.retrieve_json_auth' , return_value = node_list ):
505
503
self .assertEqual (self .kubeutil .get_node_hostname ('ip-10-0-0-179' ), expected_result )
506
504
507
- for node_list in exception_node_lists :
508
- with mock .patch ('utils.kubernetes.kubeutil.KubeUtil.retrieve_json_auth' , return_value = node_list ):
509
- self .assertRaises (Exception , self .kubeutil .get_node_hostname , 'ip-10-0-0-179' )
510
-
511
505
@mock .patch ('utils.kubernetes.KubeUtil.retrieve_pods_list' , side_effect = ['foo' ])
512
506
@mock .patch ('utils.kubernetes.KubeUtil.extract_kube_labels' )
513
507
def test_get_kube_labels (self , extract_kube_labels , retrieve_pods_list ):
@@ -538,7 +532,7 @@ def test_extract_kube_labels(self):
538
532
labels = set (inn for out in res .values () for inn in out )
539
533
self .assertEqual (len (labels ), 3 )
540
534
541
- @mock .patch ('utils.kubernetes.kubeutil.KubeUtil.retrieve_kubelet_url ' )
535
+ @mock .patch ('utils.kubernetes.kubeutil.KubeUtil.perform_kubelet_query ' )
542
536
def test_retrieve_pods_list (self , retrieve_url ):
543
537
self .kubeutil .retrieve_pods_list ()
544
538
retrieve_url .assert_called_twice_with (self .kubeutil .pods_list_url , verbose = True , timeout = 10 )
@@ -555,7 +549,7 @@ def test_retrieve_metrics(self, retrieve_json):
555
549
556
550
@mock .patch ('utils.kubernetes.kubeutil.KubeUtil.get_auth_token' , return_value = 'foo' )
557
551
@mock .patch ('utils.kubernetes.kubeutil.requests' )
558
- def test_retrieve_kubelet_url (self , req , _get_auth_tkn ):
552
+ def test_perform_kubelet_query (self , req , _get_auth_tkn ):
559
553
base_params = {'timeout' : 10 , 'verify' : False ,
560
554
'params' : {'verbose' : True }, 'cert' : None , 'headers' : None }
561
555
@@ -570,12 +564,12 @@ def test_retrieve_kubelet_url(self, req, _get_auth_tkn):
570
564
('https://test.com' , {'verify' : True }, dict (base_params .items () + verify_true .items () + auth_token_header .items ())),
571
565
('https://test.com' , {'verify' : 'kubelet.pem' }, dict (base_params .items () + verify_cert .items () + auth_token_header .items ())),
572
566
('https://test.com' , {'kubelet_client_cert' : ('client.crt' , 'client.key' )},
573
- dict (base_params .items () + verify_true .items () + client_cert .items () + auth_token_header . items () )),
567
+ dict (base_params .items () + verify_true .items () + client_cert .items ())),
574
568
]
575
569
for url , ssl_context , expected_params in instances :
576
570
req .get .reset_mock ()
577
- self .kubeutil .ssl_settings = ssl_context
578
- self .kubeutil .retrieve_kubelet_url (url )
571
+ self .kubeutil .tls_settings = ssl_context
572
+ self .kubeutil .perform_kubelet_query (url )
579
573
req .get .assert_called_with (url , ** expected_params )
580
574
581
575
@mock .patch ('utils.kubernetes.kubeutil.requests' )
0 commit comments