@@ -1088,13 +1088,18 @@ def test_interrupt_applies_all_commands(self, run_mock, datetime_mock):
10881088 ],
10891089 }
10901090 with self ._setup_for_main (steps ) as (container_root_dir , config_data , root_dir ):
1091- controller .main (
1092- Mode .INTERRUPT ,
1093- root_dir ,
1094- "copy_dir" ,
1095- interrupts .ServiceRestart (["containerd" ,]).make_controller_input ()
1096- )
1091+ with set_env (SKYHOOK_RESOURCE_ID = "scr-id-1_package_version" ):
1092+ controller .main (
1093+ Mode .INTERRUPT ,
1094+ root_dir ,
1095+ "copy_dir" ,
1096+ interrupts .ServiceRestart (["containerd" ,]).make_controller_input ()
1097+ )
10971098
1099+ config_data = {
1100+ "package_name" : "package" ,
1101+ "package_version" : "version"
1102+ }
10981103 run_mock .assert_has_calls ([
10991104 mock .call (["systemctl" , "daemon-reload" ], controller .get_log_file (root_dir , "interrupts/service_restart_0" , "copy_dir" , config_data ), on_host = True , root_mount = root_dir , write_cmds = True ),
11001105 mock .call (["systemctl" , "restart" , "containerd" ], controller .get_log_file (root_dir , "interrupts/service_restart_1" , "copy_dir" , config_data ), on_host = True , root_mount = root_dir , write_cmds = True )
@@ -1103,38 +1108,38 @@ def test_interrupt_applies_all_commands(self, run_mock, datetime_mock):
11031108 @mock .patch ("skyhook_agent.controller._run" )
11041109 def test_interrupt_isnt_run_when_skyhook_resource_id_flag_is_there (self , run_mock ):
11051110 run_mock .return_value = 0
1106- SKYHOOK_RESOURCE_ID = "foo "
1111+ SKYHOOK_RESOURCE_ID = "scr-id-1_package_version "
11071112 with (tempfile .TemporaryDirectory () as dir ,
11081113 set_env (SKYHOOK_RESOURCE_ID = SKYHOOK_RESOURCE_ID )):
11091114 os .makedirs (f"{ controller .get_skyhook_directory (dir )} /interrupts/flags/{ SKYHOOK_RESOURCE_ID } " , exist_ok = True )
11101115 with open (f"{ controller .get_skyhook_directory (dir )} /interrupts/flags/{ SKYHOOK_RESOURCE_ID } /node_restart_0.complete" , 'w' ) as f :
11111116 f .write ("" )
1112- controller .do_interrupt (interrupts .NodeRestart ().make_controller_input (), dir , "copy_dir" , on_host = False , config_data = self . config_data )
1117+ controller .do_interrupt (interrupts .NodeRestart ().make_controller_input (), dir , "copy_dir" , on_host = False )
11131118
11141119 run_mock .assert_not_called ()
11151120
11161121 @mock .patch ("skyhook_agent.controller._run" )
11171122 def test_interrupt_create_flags_per_cmd (self , run_mock ):
11181123 run_mock .return_value = 0
1119- SKYHOOK_RESOURCE_ID = "foo "
1124+ SKYHOOK_RESOURCE_ID = "scr-id-1_package_version "
11201125 with (tempfile .TemporaryDirectory () as dir ,
11211126 set_env (SKYHOOK_RESOURCE_ID = SKYHOOK_RESOURCE_ID )):
11221127 interrupt_dir = f"{ controller .get_skyhook_directory (dir )} /interrupts/flags/{ SKYHOOK_RESOURCE_ID } "
11231128 interrupt = interrupts .ServiceRestart (["foo" , "bar" ])
1124- controller .do_interrupt (interrupt .make_controller_input (), dir , "copy_dir" , on_host = False , config_data = self . config_data )
1129+ controller .do_interrupt (interrupt .make_controller_input (), dir , "copy_dir" , on_host = False )
11251130
11261131 for i in range (len (interrupt .interrupt_cmd )):
11271132 self .assertTrue (os .path .exists (f"{ interrupt_dir } /{ interrupt ._type ()} _{ i } .complete" ))
11281133
11291134 @mock .patch ("skyhook_agent.controller._run" )
11301135 def test_interrupt_failures_remove_flag (self , run_mock ):
11311136 run_mock .side_effect = [0 ,1 ,0 ]
1132- SKYHOOK_RESOURCE_ID = "foo "
1137+ SKYHOOK_RESOURCE_ID = "scr-id-1_package_version "
11331138 with (tempfile .TemporaryDirectory () as dir ,
11341139 set_env (SKYHOOK_RESOURCE_ID = SKYHOOK_RESOURCE_ID )):
11351140 interrupt_dir = f"{ controller .get_skyhook_directory (dir )} /interrupts/flags/{ SKYHOOK_RESOURCE_ID } "
11361141 interrupt = interrupts .ServiceRestart (["foo" , "bar" ])
1137- controller .do_interrupt (interrupt .make_controller_input (), dir , "copy_dir" , on_host = False , config_data = self . config_data )
1142+ controller .do_interrupt (interrupt .make_controller_input (), dir , "copy_dir" , on_host = False )
11381143
11391144 self .assertTrue (os .path .exists (f"{ interrupt_dir } /{ interrupt ._type ()} _0.complete" ))
11401145 self .assertFalse (os .path .exists (f"{ interrupt_dir } /{ interrupt ._type ()} _1.complete" ))
@@ -1156,50 +1161,85 @@ def test_interrupt_failure_fails_controller(self, run_mock, datetime_mock):
11561161 ],
11571162 }
11581163 with self ._setup_for_main (steps ) as (container_root_dir , config_data , root_dir ):
1159- result = controller .main (
1160- Mode .INTERRUPT ,
1161- root_dir ,
1162- "/tmp" ,
1163- interrupts .ServiceRestart ("containerd" ).make_controller_input ()
1164- )
1165-
1164+ with set_env (SKYHOOK_RESOURCE_ID = "scr-id-1_package_version" ):
1165+ result = controller .main (
1166+ Mode .INTERRUPT ,
1167+ root_dir ,
1168+ "/tmp" ,
1169+ interrupts .ServiceRestart ("containerd" ).make_controller_input ()
1170+ )
1171+ config_data = {
1172+ "package_name" : "package" ,
1173+ "package_version" : "version"
1174+ }
11661175 run_mock .assert_has_calls ([
11671176 mock .call (["systemctl" , "daemon-reload" ], controller .get_log_file (root_dir , "interrupts/service_restart_0" , "copy_dir" , config_data ), on_host = True , root_mount = root_dir , write_cmds = True )
11681177 ])
11691178
11701179 self .assertEqual (result , True )
11711180
1181+ @mock .patch ("skyhook_agent.controller.datetime" )
1182+ @mock .patch ("skyhook_agent.controller._run" )
1183+ def test_interrupt_makes_config_from_skyhook_resource_id (self , run_mock , datetime_mock ):
1184+ now_mock = mock .MagicMock ()
1185+ datetime_mock .now .return_value = now_mock
1186+ now_mock .strftime .return_value = "12345"
1187+ run_mock .return_value = 0
1188+ steps = {
1189+ Mode .APPLY : [
1190+ Step ("foo.sh" , arguments = []),
1191+ ],
1192+ Mode .APPLY_CHECK : [
1193+ Step ("foo_check.sh" , arguments = []),
1194+ ],
1195+ }
1196+ with self ._setup_for_main (steps ) as (container_root_dir , config_data , root_dir ):
1197+ with set_env (SKYHOOK_RESOURCE_ID = "scr-id-1_package_version" ):
1198+ result = controller .main (
1199+ Mode .INTERRUPT ,
1200+ root_dir ,
1201+ "/tmp" ,
1202+ interrupts .ServiceRestart ("containerd" ).make_controller_input ()
1203+ )
1204+ config_data = {
1205+ "package_name" : "package" ,
1206+ "package_version" : "version"
1207+ }
1208+ run_mock .assert_has_calls ([
1209+ mock .call (["systemctl" , "daemon-reload" ], controller .get_log_file (root_dir , "interrupts/service_restart_0" , "copy_dir" , config_data ), on_host = True , root_mount = root_dir , write_cmds = True )
1210+ ])
1211+
11721212 @mock .patch ("skyhook_agent.controller.main" )
11731213 def test_interrupt_mode_reads_extra_argument (self , main_mock ):
11741214 argv = ["controller.py" , str (Mode .INTERRUPT ), "root_mount" , "copy_dir" , "interrupt_data" ]
1175- with set_env (COPY_RESOLVE = "false" ):
1215+ with set_env (COPY_RESOLV = "false" ):
11761216 controller .cli (argv )
11771217
11781218 main_mock .assert_called_once_with (str (Mode .INTERRUPT ), "root_mount" , "copy_dir" , "interrupt_data" , False )
11791219
11801220 @mock .patch ("skyhook_agent.controller.main" )
11811221 def test_cli_overlay_always_run_step_is_correct (self , main_mock ):
1182- with set_env (OVERLAY_ALWAYS_RUN_STEP = "true" , COPY_RESOLVE = "false" ):
1222+ with set_env (OVERLAY_ALWAYS_RUN_STEP = "true" , COPY_RESOLV = "false" ):
11831223 controller .cli (["controller.py" , str (Mode .APPLY ), "root_mount" , "copy_dir" ])
11841224
11851225 main_mock .assert_called_once_with (str (Mode .APPLY ), "root_mount" , "copy_dir" , None , True )
11861226 main_mock .reset_mock ()
11871227
1188- with set_env (OVERLAY_ALWAYS_RUN_STEP = "false" , COPY_RESOLVE = "false" ):
1228+ with set_env (OVERLAY_ALWAYS_RUN_STEP = "false" , COPY_RESOLV = "false" ):
11891229 controller .cli (["controller.py" , str (Mode .APPLY ), "root_mount" , "copy_dir" ])
11901230 main_mock .assert_called_once_with (str (Mode .APPLY ), "root_mount" , "copy_dir" , None , False )
11911231
11921232 @mock .patch ("skyhook_agent.controller.main" )
11931233 @mock .patch ("skyhook_agent.controller.shutil" )
1194- def test_cli_copy_resolve (self , shutil_mock , main_mock ):
1234+ def test_cli_COPY_RESOLV (self , shutil_mock , main_mock ):
11951235 argv = ["controller.py" , str (Mode .APPLY ), "root_mount" , "copy_dir" ]
1196- with set_env (COPY_RESOLVE = "true" ):
1236+ with set_env (COPY_RESOLV = "true" ):
11971237 controller .cli (argv )
11981238
11991239 shutil_mock .copyfile .assert_called_once ()
12001240 shutil_mock .copyfile .reset_mock ()
12011241
1202- with set_env (COPY_RESOLVE = "false" ):
1242+ with set_env (COPY_RESOLV = "false" ):
12031243 controller .cli (argv )
12041244
12051245 shutil_mock .copyfile .assert_not_called ()
0 commit comments