def __init__(self, conf): self.conf = conf self.images_dir = self._get_images_dir() self.registry = conf.registry if self.registry: self.namespace = self.registry + '/' + conf.namespace else: self.namespace = conf.namespace self.base = conf.base self.base_tag = conf.base_tag self.install_type = conf.install_type self.tag = conf.tag self.base_arch = conf.base_arch self.images = list() rpm_setup_config = ([repo_file for repo_file in conf.rpm_setup_config if repo_file is not None]) self.rpm_setup = self.build_rpm_setup(rpm_setup_config) rh_base = ['centos', 'oraclelinux', 'rhel'] rh_type = ['source', 'binary', 'rdo', 'rhos'] deb_base = ['ubuntu', 'debian'] deb_type = ['source', 'binary'] if not ((self.base in rh_base and self.install_type in rh_type) or (self.base in deb_base and self.install_type in deb_type)): raise exception.KollaMismatchBaseTypeException( '{} is unavailable for {}'.format(self.install_type, self.base) ) if self.install_type == 'binary': self.install_metatype = 'rdo' elif self.install_type == 'source': self.install_metatype = 'mixed' elif self.install_type == 'rdo': self.install_type = 'binary' self.install_metatype = 'rdo' elif self.install_type == 'rhos': self.install_type = 'binary' self.install_metatype = 'rhos' else: raise exception.KollaUnknownBuildTypeException( 'Unknown install type' ) self.image_prefix = self.base + '-' + self.install_type + '-' self.regex = conf.regex self.image_statuses_bad = dict() self.image_statuses_good = dict() self.image_statuses_unmatched = dict() self.image_statuses_skipped = dict() self.maintainer = conf.maintainer docker_kwargs = docker.utils.kwargs_from_env() try: self.dc = docker.APIClient(version='auto', **docker_kwargs) except docker.errors.DockerException as e: self.dc = None if not conf.template_only: raise e
def __init__(self, conf): self.conf = conf self.images_dir = self._get_images_dir() self.registry = conf.registry if self.registry: self.namespace = self.registry + '/' + conf.namespace else: self.namespace = conf.namespace self.base = conf.base self.base_tag = conf.base_tag self.install_type = conf.install_type self.tag = conf.tag self.images = list() rpm_setup_config = filter(None, conf.rpm_setup_config) self.rpm_setup = self.build_rpm_setup(rpm_setup_config) rh_base = ['centos', 'oraclelinux', 'rhel'] rh_type = ['source', 'binary', 'rdo', 'rhos'] deb_base = ['ubuntu', 'debian'] deb_type = ['source', 'binary'] if not ((self.base in rh_base and self.install_type in rh_type) or (self.base in deb_base and self.install_type in deb_type)): raise exception.KollaMismatchBaseTypeException( '{} is unavailable for {}'.format(self.install_type, self.base)) if self.install_type == 'binary': self.install_metatype = 'rdo' elif self.install_type == 'source': self.install_metatype = 'mixed' elif self.install_type == 'rdo': self.install_type = 'binary' self.install_metatype = 'rdo' elif self.install_type == 'rhos': self.install_type = 'binary' self.install_metatype = 'rhos' else: raise exception.KollaUnknownBuildTypeException( 'Unknown install type') self.image_prefix = self.base + '-' + self.install_type + '-' self.include_header = conf.include_header self.include_footer = conf.include_footer self.regex = conf.regex self.image_statuses_bad = dict() self.image_statuses_good = dict() self.image_statuses_unmatched = dict() self.maintainer = conf.maintainer
def __init__(self, conf): self.conf = conf self.images_dir = self._get_images_dir() self.registry = conf.registry if self.registry: self.namespace = self.registry + '/' + conf.namespace else: self.namespace = conf.namespace self.base = conf.base self.base_tag = conf.base_tag self.install_type = conf.install_type self.tag = conf.tag self.base_arch = conf.base_arch self.debian_arch = self.base_arch if self.base_arch == 'aarch64': self.debian_arch = 'arm64' elif self.base_arch == 'x86_64': self.debian_arch = 'amd64' self.images = list() rpm_setup_config = ([ repo_file for repo_file in conf.rpm_setup_config if repo_file is not None ]) self.rpm_setup = self.build_rpm_setup(rpm_setup_config) rh_base = ['centos', 'oraclelinux', 'rhel'] rh_type = ['source', 'binary', 'rdo', 'rhos'] deb_base = ['ubuntu', 'debian'] deb_type = ['source', 'binary'] if self.conf.distro_python3 is not None: self.distro_python3 = self.conf.distro_python3 elif self.base in rh_base and self.base_tag in ['8']: # RHEL 8+ is python3 self.distro_python3 = True else: self.distro_python3 = False # Determine base packaging type for use in Dockerfiles. if self.conf.base_package_type: self.base_package_type = self.conf.base_package_type elif self.base in rh_base: self.base_package_type = 'rpm' elif self.base in deb_base: self.base_package_type = 'deb' if not ((self.base in rh_base and self.install_type in rh_type) or (self.base in deb_base and self.install_type in deb_type)): raise exception.KollaMismatchBaseTypeException( '{} is unavailable for {}'.format(self.install_type, self.base)) if self.install_type == 'binary': self.install_metatype = 'rdo' elif self.install_type == 'source': self.install_metatype = 'mixed' elif self.install_type == 'rdo': self.install_type = 'binary' self.install_metatype = 'rdo' elif self.install_type == 'rhos': self.install_type = 'binary' self.install_metatype = 'rhos' else: raise exception.KollaUnknownBuildTypeException( 'Unknown install type') self.image_prefix = self.base + '-' + self.install_type + '-' self.regex = conf.regex self.image_statuses_bad = dict() self.image_statuses_good = dict() self.image_statuses_unmatched = dict() self.image_statuses_skipped = dict() self.maintainer = conf.maintainer docker_kwargs = docker.utils.kwargs_from_env() try: self.dc = docker.APIClient(version='auto', **docker_kwargs) except docker.errors.DockerException as e: self.dc = None if not (conf.template_only or conf.save_dependency or conf.list_images or conf.list_dependencies): LOG.error("Unable to connect to Docker, exiting") LOG.info("Exception caught: {0}".format(e)) sys.exit(1)