22
22
23
23
SYSLOG_IDENTIFIER = "sonic-installer"
24
24
LOG_ERR = logger .Logger .LOG_PRIORITY_ERROR
25
+ LOG_WARN = logger .Logger .LOG_PRIORITY_WARNING
25
26
LOG_NOTICE = logger .Logger .LOG_PRIORITY_NOTICE
26
27
27
28
# Global Config object
@@ -332,6 +333,7 @@ def migrate_sonic_packages(bootloader, binary_image_version):
332
333
echo_and_log ("Error: SONiC package migration cannot proceed due to missing docker folder" , LOG_ERR , fg = "red" )
333
334
return
334
335
336
+ docker_started = False
335
337
with bootloader .get_rootfs_path (new_image_dir ) as new_image_squashfs_path :
336
338
try :
337
339
mount_squash_fs (new_image_squashfs_path , new_image_mount )
@@ -342,22 +344,25 @@ def migrate_sonic_packages(bootloader, binary_image_version):
342
344
mount_bind (new_image_docker_dir , new_image_docker_mount )
343
345
mount_procfs_chroot (new_image_mount )
344
346
mount_sysfs_chroot (new_image_mount )
347
+ # Assume if docker.sh script exists we are installing Application Extension compatible image.
348
+ if not os .path .exists (os .path .join (new_image_mount , os .path .relpath (DOCKER_CTL_SCRIPT , os .path .abspath (os .sep )))):
349
+ echo_and_log ("Warning: SONiC Application Extension is not supported in this image" , LOG_WARN , fg = "yellow" )
350
+ return
345
351
run_command_or_raise (["chroot" , new_image_mount , DOCKER_CTL_SCRIPT , "start" ])
352
+ docker_started = True
346
353
run_command_or_raise (["cp" , packages_path , os .path .join (new_image_mount , tmp_dir , packages_file )])
347
354
run_command_or_raise (["touch" , os .path .join (new_image_mount , "tmp" , DOCKERD_SOCK )])
348
355
run_command_or_raise (["mount" , "--bind" ,
349
356
os .path .join (VAR_RUN_PATH , DOCKERD_SOCK ),
350
357
os .path .join (new_image_mount , "tmp" , DOCKERD_SOCK )])
351
358
run_command_or_raise (["chroot" , new_image_mount , "sh" , "-c" , "command -v {}" .format (SONIC_PACKAGE_MANAGER )])
352
- except SonicRuntimeException as err :
353
- echo_and_log ("Warning: SONiC Application Extension is not supported in this image: {}" .format (err ), LOG_ERR , fg = "red" )
354
- else :
355
359
run_command_or_raise (["chroot" , new_image_mount , SONIC_PACKAGE_MANAGER , "migrate" ,
356
360
os .path .join ("/" , tmp_dir , packages_file ),
357
361
"--dockerd-socket" , os .path .join ("/" , tmp_dir , DOCKERD_SOCK ),
358
362
"-y" ])
359
363
finally :
360
- run_command_or_raise (["chroot" , new_image_mount , DOCKER_CTL_SCRIPT , "stop" ], raise_exception = False )
364
+ if docker_started :
365
+ run_command_or_raise (["chroot" , new_image_mount , DOCKER_CTL_SCRIPT , "stop" ], raise_exception = False )
361
366
umount (new_image_mount , recursive = True , read_only = False , remove_dir = False , raise_exception = False )
362
367
umount (new_image_mount , raise_exception = False )
363
368
0 commit comments