'If the name of the image contains a repository path, then push the image.
:param name Name of the image to push.
:param tag Use a specific tag.
:return: None'

def push_image(self, name, tag=None):

    repository = name
    if (not tag):
        (repository, tag) = parse_repository_tag(name)
    (registry, repo_name) = resolve_repository_name(repository)
    self.log(('push    %s    to    %s/%s:%s' % (self.name, registry, repo_name, tag)))
    if registry:
        self.results['actions'].append(('Pushed    image    %s    to    %s/%s:%s' % (self.name, registry, repo_name, tag)))
        self.results['changed'] = True
        if (not self.check_mode):
            status = None
            try:
                for line in self.client.push(repository, tag=tag, stream=True, decode=True):
                    self.log(line, pretty_print=True)
                    if line.get('errorDetail'):
                        raise Exception(line['errorDetail']['message'])
                    status = line.get('status')
            except Exception as exc:
                if re.search('unauthorized', str(exc)):
                    if re.search('authentication    required', str(exc)):
                        self.fail(('Error    pushing    image    %s/%s:%s    -    %s.    Try    logging    into    %s    first.' % (registry, repo_name, tag, str(exc), registry)))
                    else:
                        self.fail(('Error    pushing    image    %s/%s:%s    -    %s.    Does    the    repository    exist?' % (registry, repo_name, tag, str(exc))))
                self.fail(('Error    pushing    image    %s:    %s' % (repository, str(exc))))
            self.results['image'] = self.client.find_image(name=repository, tag=tag)
            if (not self.results['image']):
                self.results['image'] = dict()
            self.results['image']['push_status'] = status
