Merge branch 'develop' into dist/risotto/risotto-2.8.0/develop
This commit is contained in:
commit
dd386fef0f
|
@ -74,6 +74,8 @@ class Image:
|
|||
if image_dir is None:
|
||||
image_dir = IMAGES_DIRECTORY
|
||||
self.image_dir = image_dir
|
||||
if isdir(self.image_dir):
|
||||
rmtree(self.image_dir)
|
||||
if tmp_dir is None:
|
||||
tmp_dir = PACKER_TMP_DIRECTORY
|
||||
self.tmp_dir = tmp_dir
|
||||
|
@ -227,7 +229,6 @@ class Image:
|
|||
config = self.load_configuration(dependencies_path, packer_tmp_directory)
|
||||
self.merge_funcs(config, dependencies_path, packer_tmp_directory)
|
||||
packer_configuration = await self.get_packer_information(config, packer_tmp_directory)
|
||||
# OS image needed ?
|
||||
packer_dst_os_filename = join(self.image_dir,
|
||||
'os',
|
||||
packer_configuration['os_name'] + '_' + packer_configuration['os_version'] + '.img',
|
||||
|
@ -247,33 +248,44 @@ class Image:
|
|||
self.copy_files(packer_directory,
|
||||
packer_tmp_img_directory,
|
||||
)
|
||||
if not isdir(join(self.image_dir, 'os')):
|
||||
makedirs(join(self.image_dir, 'os'))
|
||||
packer_configuration['tmp_directory'] = packer_tmp_os_directory
|
||||
recipe = {'variables': packer_configuration}
|
||||
if not isfile(packer_dst_os_filename):
|
||||
self.build_image(packer_dst_os_filename,
|
||||
packer_tmp_os_directory,
|
||||
packer_configuration,
|
||||
recipe,
|
||||
)
|
||||
recipe_checksum = self.do_recipe_checksum(packer_tmp_img_directory)
|
||||
packer_dst_filename = join(self.image_dir,
|
||||
f'{recipe_checksum}.img',
|
||||
)
|
||||
sha_file = f'{packer_dst_os_filename}.sha256'
|
||||
with open(sha_file, 'r') as fh:
|
||||
sha256 = fh.read().split(' ', 1)[0]
|
||||
packer_configuration['tmp_directory'] = packer_tmp_img_directory
|
||||
recipe = {'variables': packer_configuration}
|
||||
recipe['variables']['iso_checksum'] = sha256
|
||||
recipe['variables']['iso_url'] = packer_dst_os_filename
|
||||
self.build_image(packer_dst_filename,
|
||||
packer_tmp_img_directory,
|
||||
packer_configuration,
|
||||
recipe,
|
||||
)
|
||||
rmtree(packer_tmp_directory)
|
||||
|
||||
def build_image(self,
|
||||
packer_dst_filename: str,
|
||||
tmp_directory: str,
|
||||
packer_configuration: dict,
|
||||
recipe: dict,
|
||||
) -> None:
|
||||
packer_configuration['tmp_directory'] = tmp_directory
|
||||
recipe = {'variables': packer_configuration}
|
||||
packer_filename = join(tmp_directory, PACKER_FILE_NAME)
|
||||
with open(packer_filename, 'r') as recipe_fd:
|
||||
for key, value in jload(recipe_fd).items():
|
||||
recipe[key] = value
|
||||
with open(packer_filename, 'w') as recipe_fd:
|
||||
jdump(recipe, recipe_fd, indent=2)
|
||||
print(['packer', 'build', packer_filename])
|
||||
proc = Popen(['packer', 'build', packer_filename],
|
||||
#stdout=PIPE,
|
||||
#stderr=PIPE,
|
||||
|
@ -284,5 +296,4 @@ class Image:
|
|||
raise Exception(_(f'cannot build {packer_dst_filename} with {packer_filename}'))
|
||||
move(join(tmp_directory, 'image.img'), packer_dst_filename)
|
||||
move(join(tmp_directory, 'image.sha256'), f'{packer_dst_filename}.sha256')
|
||||
rmtree(tmp_directory)
|
||||
print(_(f'Image {packer_dst_filename} created'))
|
||||
|
|
Loading…
Reference in New Issue