3131from ironic_python_agent import inspector
3232from ironic_python_agent import netutils
3333from ironic_python_agent .tests .unit import base as ironic_agent_base
34+ from ironic_python_agent import tls_utils
3435from ironic_python_agent import utils
3536
3637EXPECTED_ERROR = RuntimeError ('command execution failed' )
@@ -858,12 +859,55 @@ def setUp(self):
858859 @mock .patch (
859860 'ironic_python_agent.hardware_managers.cna._detect_cna_card' ,
860861 mock .Mock ())
862+ @mock .patch .object (hardware , 'dispatch_to_managers' , autospec = True )
861863 @mock .patch ('oslo_service.wsgi.Server' , autospec = True )
862864 @mock .patch .object (hardware .HardwareManager , 'list_hardware_info' ,
863865 autospec = True )
864866 @mock .patch .object (hardware , 'get_managers' , autospec = True )
865867 def test_run (self , mock_get_managers , mock_list_hardware ,
866- mock_wsgi ):
868+ mock_wsgi , mock_dispatch ):
869+ wsgi_server_request = mock_wsgi .return_value
870+
871+ def set_serve_api ():
872+ self .agent .serve_api = False
873+
874+ wsgi_server_request .start .side_effect = set_serve_api
875+
876+ mock_dispatch .return_value = tls_utils .TlsCertificate (
877+ 'I am a cert' , '/path/to/cert' , '/path/to/key' )
878+
879+ self .agent .heartbeater = mock .Mock ()
880+ self .agent .api_client = mock .Mock ()
881+ self .agent .api_client .lookup_node = mock .Mock ()
882+
883+ self .agent .run ()
884+
885+ self .assertTrue (mock_get_managers .called )
886+ mock_wsgi .assert_called_once_with (CONF , 'ironic-python-agent' ,
887+ app = self .agent .api ,
888+ host = mock .ANY , port = 9999 ,
889+ use_ssl = True )
890+ wsgi_server_request .start .assert_called_once_with ()
891+ mock_dispatch .assert_called_once_with ('generate_tls_certificate' ,
892+ mock .ANY )
893+
894+ self .assertEqual ('/path/to/cert' , CONF .ssl .cert_file )
895+ self .assertEqual ('/path/to/key' , CONF .ssl .key_file )
896+ self .assertEqual ('https' , self .agent .advertise_protocol )
897+
898+ self .assertFalse (self .agent .heartbeater .called )
899+ self .assertFalse (self .agent .api_client .lookup_node .called )
900+
901+ @mock .patch (
902+ 'ironic_python_agent.hardware_managers.cna._detect_cna_card' ,
903+ mock .Mock ())
904+ @mock .patch ('oslo_service.wsgi.Server' , autospec = True )
905+ @mock .patch .object (hardware .HardwareManager , 'list_hardware_info' ,
906+ autospec = True )
907+ @mock .patch .object (hardware , 'get_managers' , autospec = True )
908+ def test_run_no_tls (self , mock_get_managers , mock_list_hardware ,
909+ mock_wsgi ):
910+ CONF .set_override ('enable_auto_tls' , False )
867911 wsgi_server_request = mock_wsgi .return_value
868912
869913 def set_serve_api ():
@@ -883,6 +927,7 @@ def set_serve_api():
883927 host = mock .ANY , port = 9999 ,
884928 use_ssl = False )
885929 wsgi_server_request .start .assert_called_once_with ()
930+ self .assertEqual ('http' , self .agent .advertise_protocol )
886931
887932 self .assertFalse (self .agent .heartbeater .called )
888933 self .assertFalse (self .agent .api_client .lookup_node .called )
0 commit comments