Pulls an image for a container configuration

        :param action: Action configuration.
        :type action: dockermap.map.runner.ActionConfig
        :param image_name: Image name.
        :type image_name: unicode | str
        :param kwargs: Additional keyword arguments to complement or override the configuration-based values.
        :type kwargs: dict

def pull(self, action, image_name, **kwargs):
        """
        Pulls an image for a container configuration

        :param action: Action configuration.
        :type action: dockermap.map.runner.ActionConfig
        :param image_name: Image name.
        :type image_name: unicode | str
        :param kwargs: Additional keyword arguments to complement or override the configuration-based values.
        :type kwargs: dict
        """
        config_id = action.config_id
        registry, __, image = config_id.config_name.rpartition('/')
        if registry and '.' in registry and registry not in self._login_registries:
            self.login(action, registry, insecure_registry=kwargs.get('insecure_registry'))
        log.info("Pulling image %s:%s.", config_id.config_name, config_id.instance_name)
        res = action.client.pull(repository=config_id.config_name, tag=config_id.instance_name, **kwargs)
        log.debug("Done pulling image %s:%s.", config_id.config_name, config_id.instance_name)
        self._policy.images[action.client_name].refresh_repo(config_id.config_name)
        log.debug("Refreshed image cache for repo %s.", config_id.config_name)
        return res