<image>
- <domain name="host">
+ <container name="host">
<rebuild>no</rebuild> <!-- yes/no -->
- <ks-file>input/domains/host/host.ks</ks-file>
- <local-pkgs>input/domains/host/local-pkgs</local-pkgs>
- <scripts>input/domains/host/scripts</scripts>
- </domain>
+ <ks-file>input/containers/host/host.ks</ks-file>
+ <local-pkgs>input/containers/host/local-pkgs</local-pkgs>
+ <scripts>input/containers/host/scripts</scripts>
+ </container>
- <domain name="business">
+ <container name="business">
<add-to-image>yes_without_rebuild</add-to-image> <!-- yes_with_rebuild/yes_without_rebuild/no -->
- <ks-file>input/domains/business/business.ks</ks-file>
- <local-pkgs>input/domains/business/local-pkgs</local-pkgs>
- <scripts>input/domains/business/scripts</scripts>
- <shift-ids>20000</shift-ids> <!-- value by which uid/gid values of all domain's files are shifted -->
- </domain>
+ <ks-file>input/containers/business/business.ks</ks-file>
+ <local-pkgs>input/containers/business/local-pkgs</local-pkgs>
+ <scripts>input/containers/business/scripts</scripts>
+ <shift-ids>20000</shift-ids> <!-- value by which uid/gid values of all container's files are shifted -->
+ </container>
- <domain name="private">
+ <container name="private">
<add-to-image>yes_without_rebuild</add-to-image> <!-- yes_with_rebuild/yes_without_rebuild/no -->
- <ks-file>input/domains/private/private.ks</ks-file>
- <local-pkgs>input/domains/private/local-pkgs</local-pkgs>
- <scripts>input/domains/private/scripts</scripts>
- <shift-ids>40000</shift-ids> <!-- value by which uid/gid values of all domain's files are shifted -->
- </domain>
+ <ks-file>input/containers/private/private.ks</ks-file>
+ <local-pkgs>input/containers/private/local-pkgs</local-pkgs>
+ <scripts>input/containers/private/scripts</scripts>
+ <shift-ids>40000</shift-ids> <!-- value by which uid/gid values of all container's files are shifted -->
+ </container>
</image>
from diutils.cmd_wrapper import *
from diutils.uidmapshift import Shifter
-HOST_IMAGE_DIR = "tmp/domains/host/mic-output/"
+HOST_IMAGE_DIR = "tmp/containers/host/mic-output/"
class ImageBuilder(object):
self.__cmd_wrap('if [ -e tmp/full/*.img ]; then rm -rf tmp/full/*.img; fi')
def __buildImages(self):
- for domain_name in self.__configData.keys():
- if domain_name == "host":
- if self.__configData[domain_name]["rebuild"] != "yes":
+ for container_name in self.__configData.keys():
+ if container_name == "host":
+ if self.__configData[container_name]["rebuild"] != "yes":
log.INFO("Using previously built host images")
continue
- elif self.__configData[domain_name]["add-to-image"] != "yes_with_rebuild":
- log.INFO("Using previously built " + domain_name + " image")
+ elif self.__configData[container_name]["add-to-image"] != "yes_with_rebuild":
+ log.INFO("Using previously built " + container_name + " image")
continue
# include local packages if specified
includeLocalPkgs = ''
- if 'local-pkgs' in self.__configData[domain_name].keys():
+ if 'local-pkgs' in self.__configData[container_name].keys():
# check if given directory is present
- if not os.path.isdir(self.__configData[domain_name]["local-pkgs"]):
- log.ERROR("dir specified in .xml config file not found: " + self.__configData[domain_name]["local-pkgs"])
+ if not os.path.isdir(self.__configData[container_name]["local-pkgs"]):
+ log.ERROR("dir specified in .xml config file not found: " + self.__configData[container_name]["local-pkgs"])
sys.exit(1)
- includeLocalPkgs = ' --local-pkgs-path=' + self.__configData[domain_name]['local-pkgs'] + ' '
+ includeLocalPkgs = ' --local-pkgs-path=' + self.__configData[container_name]['local-pkgs'] + ' '
# build image with mic
self.__cmd_wrap('mic create loop ' +
- self.__configData[domain_name]['ks-file'] +
- ' --outdir=tmp/domains/' + domain_name + '/mic-output/' +
+ self.__configData[container_name]['ks-file'] +
+ ' --outdir=tmp/containers/' + container_name + '/mic-output/' +
includeLocalPkgs)
def __checkAfterBuild(self):
if self.__dryRun == True:
log.INFO("[Assuming, that all *.img files were successfully created]")
else:
- for domain_name in self.__configData.keys():
- if domain_name == "host":
+ for container_name in self.__configData.keys():
+ if container_name == "host":
if not os.path.isfile(HOST_IMAGE_DIR + "data.img"):
log.ERROR("image not created: " + HOST_IMAGE_DIR + "data.img")
sys.exit(1)
log.ERROR("image not created: " + HOST_IMAGE_DIR + "ums.img")
sys.exit(1)
else:
- if not os.path.isfile("tmp/domains/" + domain_name + "/mic-output/image.img"):
+ if not os.path.isfile("tmp/containers/" + container_name + "/mic-output/image.img"):
log.ERROR("\image not created: " +
- "tmp/domains/" + domain_name + "/mic-output/image.img")
+ "tmp/containers/" + container_name + "/mic-output/image.img")
sys.exit(1)
def __resizeImages(self):
self.__cmd_wrap('mkdir -p tmp/full/')
self.__cmd_wrap('cp -a ' + HOST_IMAGE_DIR + '*.img tmp/full/')
- # resize host ums image to prepare space for domain images
+ # resize host ums image to prepare space for container images
self.__cmd_wrap('e2fsck -f tmp/full/ums.img')
self.__cmd_wrap('resize2fs -f tmp/full/ums.img 4000M')
self.__cmd_wrap('mount tmp/full/ums.img tmp/mp_full_ums')
# mount non-host images
- for domain_name in self.__configData.keys():
- if domain_name != "host":
- self.__cmd_wrap('mkdir -p tmp/mp_' + domain_name)
- self.__cmd_wrap('mount tmp/domains/' + domain_name + '/mic-output/image.img tmp/mp_' + domain_name)
-
- # temporary solution (not enough free space on 05 partition)
- self.__cmd_wrap('mkdir -p tmp/mp_full_platform/domains/' + domain_name)
- self.__cmd_wrap('mkdir -p tmp/mp_full_ums/domains/' + domain_name)
+ for container_name in self.__configData.keys():
+ if container_name != "host":
+ self.__cmd_wrap('mkdir -p tmp/mp_' + container_name)
+ self.__cmd_wrap('mount tmp/containers/' + container_name + '/mic-output/image.img tmp/mp_' + container_name)
+ self.__cmd_wrap('mkdir -p tmp/mp_full_ums/containers/' + container_name)
def __copyFiles(self):
# copy non-host images onto host
- for domain_name in self.__configData.keys():
- if domain_name != "host":
- self.__cmd_wrap('(cd ' + 'tmp/mp_' + domain_name + '; tar cf - .) | ' +
- '(cd tmp/mp_full_ums/domains/' + domain_name + '/; tar pxf -)')
+ for container_name in self.__configData.keys():
+ if container_name != "host":
+ self.__cmd_wrap('(cd ' + 'tmp/mp_' + container_name + '; tar cf - .) | ' +
+ '(cd tmp/mp_full_ums/containers/' + container_name + '/; tar pxf -)')
# copy host scripts
if 'scripts' in self.__configData['host'].keys():
'tmp/mp_full_platform/root/.scripts/')
# copy non-host scripts
- for domain_name in self.__configData.keys():
- if domain_name != "host":
- if 'scripts' in self.__configData[domain_name].keys():
+ for container_name in self.__configData.keys():
+ if container_name != "host":
+ if 'scripts' in self.__configData[container_name].keys():
# check if given directory is present
- if not os.path.isdir(self.__configData[domain_name]['scripts']):
- log.ERROR("dir specified in .xml config file not found: " + self.__configData[domain_name]['scripts'])
+ if not os.path.isdir(self.__configData[container_name]['scripts']):
+ log.ERROR("dir specified in .xml config file not found: " + self.__configData[container_name]['scripts'])
sys.exit(1)
- self.__cmd_wrap('mkdir -p tmp/mp_full_ums/domains/' + domain_name + '/root/.scripts/')
- self.__cmd_wrap('cp ' + self.__configData[domain_name]['scripts'] + '/* ' +
- 'tmp/mp_full_ums/domains/' + domain_name + '/root/.scripts/')
+ self.__cmd_wrap('mkdir -p tmp/mp_full_ums/containers/' + container_name + '/root/.scripts/')
+ self.__cmd_wrap('cp ' + self.__configData[container_name]['scripts'] + '/* ' +
+ 'tmp/mp_full_ums/containers/' + container_name + '/root/.scripts/')
def __shiftIds(self):
- # shift uid and gid values within domains
- for domain_name in self.__configData.keys():
- if domain_name != "host":
- if 'shift-ids' in self.__configData[domain_name].keys():
- # shift uid/gid of files in this domain
- shift = int(self.__configData[domain_name]['shift-ids'])
- log.CMD('[shifting uid/gid values within {0} domain by {1}]'.format(domain_name, shift))
+ # shift uid and gid values within containers
+ for container_name in self.__configData.keys():
+ if container_name != "host":
+ if 'shift-ids' in self.__configData[container_name].keys():
+ # shift uid/gid of files in this container
+ shift = int(self.__configData[container_name]['shift-ids'])
+ log.CMD('[shifting uid/gid values within {0} container by {1}]'.format(container_name, shift))
if self.__dryRun == False:
- shifter = Shifter('tmp/mp_full_ums/domains/' + domain_name)
+ shifter = Shifter('tmp/mp_full_ums/containers/' + container_name)
shifter.shift(shift)
else:
- log.WARN("no shift-ids value specified for {0} domain".format(domain_name))
+ log.WARN("no shift-ids value specified for {0} container".format(container_name))
def __umountImages(self):
# umount and remove mounting points
self.__cmd_wrap('rmdir tmp/mp_full_platform')
self.__cmd_wrap('rmdir tmp/mp_full_ums')
- for domain_name in self.__configData.keys():
- if domain_name != "host":
- self.__cmd_wrap('umount tmp/mp_' + domain_name)
- self.__cmd_wrap('rmdir tmp/mp_' + domain_name)
+ for container_name in self.__configData.keys():
+ if container_name != "host":
+ self.__cmd_wrap('umount tmp/mp_' + container_name)
+ self.__cmd_wrap('rmdir tmp/mp_' + container_name)
def __packImages(self):
# resize images before tar
tree = ET.parse(self.__configFile)
img_root = tree.getroot()
- for domain in img_root:
- self.__configData[domain.attrib["name"]] = {}
- for param in domain:
- self.__configData[domain.attrib["name"]][param.tag] = \
+ for container in img_root:
+ self.__configData[container.attrib["name"]] = {}
+ for param in container:
+ self.__configData[container.attrib["name"]][param.tag] = \
param.text
def __checkXMLData(self):
if not "host" in self.__configData.keys():
self.__configData_OK = False
- log.ERROR("No domain \"host\" found in .xml config file")
+ log.ERROR("No container \"host\" found in .xml config file")
return
- for domain_name in self.__configData.keys():
- if not os.path.isfile(self.__configData[domain_name]["ks-file"]):
+ for container_name in self.__configData.keys():
+ if not os.path.isfile(self.__configData[container_name]["ks-file"]):
data_ERROR = True
- log.ERROR("ERROR: file not found: " + self.__configData[domain_name]["ks-file"])
+ log.ERROR("ERROR: file not found: " + self.__configData[container_name]["ks-file"])
- if domain_name == "host":
- if self.__configData[domain_name]["rebuild"] == "no":
- if not os.path.isfile("tmp/domains/host/mic-output/data.img"):
- log.WARN("file not found: tmp/domains/host/mic-output/data.img")
+ if container_name == "host":
+ if self.__configData[container_name]["rebuild"] == "no":
+ if not os.path.isfile("tmp/containers/host/mic-output/data.img"):
+ log.WARN("file not found: tmp/containers/host/mic-output/data.img")
log.WARN("- all host image files will be rebuilt")
- self.__configData[domain_name]["rebuild"] = "yes"
+ self.__configData[container_name]["rebuild"] = "yes"
data_WARNING = True
- if not os.path.isfile("tmp/domains/host/mic-output/platform.img"):
- log.WARN("tmp/domains/host/mic-output/platform.img")
+ if not os.path.isfile("tmp/containers/host/mic-output/platform.img"):
+ log.WARN("tmp/containers/host/mic-output/platform.img")
log.WARN("- all host image files will be rebuilt")
- self.__configData[domain_name]["rebuild"] = "yes"
+ self.__configData[container_name]["rebuild"] = "yes"
data_WARNING = True
- if not os.path.isfile("tmp/domains/host/mic-output/ums.img"):
- log.WARN("file not found: tmp/domains/host/mic-output/ums.img")
+ if not os.path.isfile("tmp/containers/host/mic-output/ums.img"):
+ log.WARN("file not found: tmp/containers/host/mic-output/ums.img")
log.WARN("- all host image files will be rebuilt")
- self.__configData[domain_name]["rebuild"] = "yes"
+ self.__configData[container_name]["rebuild"] = "yes"
data_WARNING = True
else:
- if self.__configData[domain_name]["add-to-image"] == "yes_without_rebuild":
- if not os.path.isfile("tmp/domains/" + domain_name + "/mic-output/image.img"):
- log.WARN("file not found: " + "tmp/" + domain_name + "/mic-output/image.img")
+ if self.__configData[container_name]["add-to-image"] == "yes_without_rebuild":
+ if not os.path.isfile("tmp/containers/" + container_name + "/mic-output/image.img"):
+ log.WARN("file not found: " + "tmp/" + container_name + "/mic-output/image.img")
log.WARN("- image file will be rebuilt")
- self.__configData[domain_name]["add-to-image"] = "yes_with_rebuild"
+ self.__configData[container_name]["add-to-image"] = "yes_with_rebuild"
data_WARNING = True
if data_ERROR == True:
log.INFO("/")
log.INFO("/root/.scripts/")
- for domain_name in self.__configData:
- if domain_name != "host":
+ for container_name in self.__configData:
+ if container_name != "host":
log.INFO("...")
- log.INFO("/domains/" + domain_name + " -> /opt/usr/domains/" + domain_name + "/")
- log.INFO("/opt/usr/domains/" + domain_name + "/root/.scripts/")
+ log.INFO("/opt/usr/containers/" + container_name + "/")
+ log.INFO("/opt/usr/containers/" + container_name + "/root/.scripts/")
log.EMPTY_LINES(2)