Skip to content

Commit d36de1d

Browse files
authored
Merge pull request #30 from Wenzel/release_date_build
Release date build
2 parents f3107d6 + 2af3e2d commit d36de1d

File tree

3 files changed

+25
-8
lines changed

3 files changed

+25
-8
lines changed

packer-templates/build_ubuntu_series.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,14 @@ def main(args):
158158
dst = build_dir / varfile['vm_name']
159159
# move build artifact
160160
shutil.move(str(src), str(dst))
161+
# add metadata json
162+
maj_ver, min_ver = version.split('.')
163+
metadata = {
164+
'release_date': '20{}-{}-01'.format(maj_ver, min_ver)
165+
}
166+
metadata_path = dst.with_suffix('.json')
167+
with open(str(metadata_path), 'w') as metadata_file:
168+
json.dump(metadata, metadata_file)
161169
finally:
162170
# ensure output-qemu is removed for next build
163171
shutil.rmtree(str(output_qemu), ignore_errors=True)

packer-templates/import_libvirt.py

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,17 @@
2727
POOL_PATH = Path(SCRIPT_DIR / POOL_DIR_PATH_REL).resolve()
2828

2929

30-
def prepare_domain_xml(vm_name, osw_image_path):
30+
def prepare_domain_xml(vm_name, osw_image_path, metadata_path):
3131
with open('template_domain.xml') as templ:
3232
domain_xml = templ.read()
33-
domain_xml = domain_xml.format(vm_name, osw_image_path)
34-
root = tree.fromstring(domain_xml)
35-
domain_xml = tree.tostring(root).decode()
36-
return domain_xml
33+
with open(metadata_path) as metadata_file:
34+
# we need to escape some JSON characters which are not valid in XML
35+
# TODO find a Python library to do that
36+
esc_metadata = metadata_file.read().replace('"', '"')
37+
domain_xml = domain_xml.format(vm_name, esc_metadata, osw_image_path)
38+
root = tree.fromstring(domain_xml)
39+
domain_xml = tree.tostring(root).decode()
40+
return domain_xml
3741

3842

3943
def setup_storage_pool(con, pool_name):
@@ -75,7 +79,7 @@ def append_qcow(disk_image):
7579
return disk_image
7680

7781

78-
def setup_domain(con, vm_name, pool, pool_path, disk_image):
82+
def setup_domain(con, vm_name, pool, pool_path, disk_image, metadata):
7983
# check if domain is already defined
8084
domain_name = '{}-{}'.format(PREFIX, disk_image.stem)
8185
if not vm_name:
@@ -87,7 +91,7 @@ def setup_domain(con, vm_name, pool, pool_path, disk_image):
8791
# move image to oswatcher pool
8892
osw_image_path = pool_path / disk_image.name
8993
shutil.move(str(disk_image), str(osw_image_path))
90-
domain_xml = prepare_domain_xml(vm_name, osw_image_path)
94+
domain_xml = prepare_domain_xml(vm_name, osw_image_path, metadata)
9195
con.defineXML(domain_xml)
9296
logging.info('Domain %s defined.', vm_name)
9397
domain = con.lookupByName(vm_name)
@@ -113,8 +117,12 @@ def main(args):
113117

114118
for disk_image in disk_image_list:
115119
disk_image = Path(disk_image).absolute()
120+
metadata = disk_image.with_suffix('.json')
121+
if not metadata.exists():
122+
logging.error('Could not find metadata file for image: %s', str(disk_image))
123+
raise RuntimeError('Fail to find metadata file')
116124
pool, pool_path = setup_storage_pool(con, pool_name)
117-
setup_domain(con, vm_name, pool, pool_path, disk_image)
125+
setup_domain(con, vm_name, pool, pool_path, disk_image, metadata)
118126
# remove output-qemu
119127
logging.info('Removing output-qemu')
120128
output_qemu_path = Path(SCRIPT_DIR / PACKER_OUTPUT_DIR)

packer-templates/template_domain.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<domain type='kvm'>
22
<name>{}</name>
33
<memory unit='MB'>1500</memory>
4+
<description>{}</description>
45
<vcpu placement='static'>1</vcpu>
56
<os>
67
<type arch='x86_64' machine='pc'>hvm</type>

0 commit comments

Comments
 (0)