def process_dockerfile_list(self, dockerfile_list):
        """
        Prepare dockerfile list with dependency and also add "auto latest tag" images
        """

        image_list = [x['image']['fullname'] for x in dockerfile_list if x['image']['fullname']]

        autoLatestTagImageList = []

        for dockerfile in dockerfile_list:
            # Calculate dependency
            dockerfile['dependency'] = False
            if dockerfile['image']['from'] and dockerfile['image']['from'] in image_list:
                dockerfile['dependency'] = dockerfile['image']['from']

            # Process auto latest tag
            if self.configuration.get('docker.autoLatestTag') and dockerfile['image']['tag'] == self.configuration.get('docker.autoLatestTag'):
                imageNameLatest = DockerfileUtility.generate_image_name_with_tag_latest(dockerfile['image']['fullname'])
                if imageNameLatest not in image_list:
                    autoLatestTagImage = copy.deepcopy(dockerfile)
                    autoLatestTagImage['image']['fullname'] = imageNameLatest
                    autoLatestTagImage['image']['tag'] = 'latest'
                    autoLatestTagImage['dependency'] = dockerfile['image']['fullname']
                    autoLatestTagImageList.append(autoLatestTagImage)

        # Add auto latest tag images to dockerfile list
        dockerfile_list.extend(autoLatestTagImageList)

        return dockerfile_list
Esempio n. 2
0
    def process_dockerfile_list(self, dockerfile_list):
        """
        Prepare dockerfile list with dependency and also add "auto latest tag" images
        """

        # Process auto latest tag
        autoLatestTagImageList = []
        image_list = [x['image']['fullname'] for x in dockerfile_list if x['image']['fullname']]
        for dockerfile in dockerfile_list:
            if self.configuration.get('docker.autoLatestTag') and dockerfile['image']['tag'] == self.configuration.get('docker.autoLatestTag'):
                imageNameLatest = DockerfileUtility.generate_image_name_with_tag_latest(dockerfile['image']['fullname'])
                if imageNameLatest not in image_list:
                    autoLatestTagImage = copy.deepcopy(dockerfile)
                    autoLatestTagImage['image']['fullname'] = imageNameLatest
                    autoLatestTagImage['image']['tag'] = 'latest'
                    autoLatestTagImage['image']['duplicate'] = True

                    if not 'dependency' in autoLatestTagImage:
                        autoLatestTagImage['dependency'] = []
                    autoLatestTagImage['dependency'].append(dockerfile['image']['fullname'])
                    autoLatestTagImageList.append(autoLatestTagImage)
        # Add auto latest tag images to dockerfile list
        dockerfile_list.extend(autoLatestTagImageList)

        # Calculate dependency
        image_list = [x['image']['fullname'] for x in dockerfile_list if x['image']['fullname']]
        for dockerfile in dockerfile_list:
            if not 'dependency' in dockerfile:
                dockerfile['dependency'] = []

            # add image from if it is a dependency
            if dockerfile['image']['from'] and dockerfile['image']['from'] in image_list:
                dockerfile['dependency'].append(dockerfile['image']['from'])

            # add multi stage image if it is a dependency
            for multiStageImage in dockerfile['image']['multiStageImages']:
                if multiStageImage in image_list:
                    dockerfile['dependency'].append(multiStageImage)

            # unique list
            unique_dep_list = []
            [unique_dep_list.append(item) for item in dockerfile['dependency'] if item not in unique_dep_list]
            dockerfile['dependency'] = unique_dep_list

        return dockerfile_list
Esempio n. 3
0
    def process_dockerfile_list(self, dockerfile_list):
        """
        Prepare dockerfile list with dependency and also add "auto latest tag" images
        """

        # Process auto latest tag
        autoLatestTagImageList = []
        image_list = [
            x['image']['fullname'] for x in dockerfile_list
            if x['image']['fullname']
        ]
        for dockerfile in dockerfile_list:
            if self.configuration.get('docker.autoLatestTag') and dockerfile[
                    'image']['tag'] == self.configuration.get(
                        'docker.autoLatestTag'):
                imageNameLatest = DockerfileUtility.generate_image_name_with_tag_latest(
                    dockerfile['image']['fullname'])
                if imageNameLatest not in image_list:
                    autoLatestTagImage = copy.deepcopy(dockerfile)
                    autoLatestTagImage['image']['fullname'] = imageNameLatest
                    autoLatestTagImage['image']['tag'] = 'latest'
                    autoLatestTagImage['dependency'] = dockerfile['image'][
                        'fullname']
                    autoLatestTagImageList.append(autoLatestTagImage)
        # Add auto latest tag images to dockerfile list
        dockerfile_list.extend(autoLatestTagImageList)

        # Calculate dependency
        image_list = [
            x['image']['fullname'] for x in dockerfile_list
            if x['image']['fullname']
        ]
        for dockerfile in dockerfile_list:
            if not 'dependency' in dockerfile:
                dockerfile['dependency'] = False
                if dockerfile['image']['from'] and dockerfile['image'][
                        'from'] in image_list:
                    dockerfile['dependency'] = dockerfile['image']['from']

        return dockerfile_list