def _pull_image(pull_type, image, name, **kwargs):
    '''
    Common logic for machinectl pull-* commands
    '''
    _ensure_systemd(219)
    if exists(name):
        raise SaltInvocationError(
            'Container \'{0}\' already exists'.format(name)
        )
    if pull_type in ('raw', 'tar'):
        valid_kwargs = ('verify',)
    elif pull_type == 'dkr':
        valid_kwargs = ('index',)
    else:
        raise SaltInvocationError(
            'Unsupported image type \'{0}\''.format(pull_type)
        )

    kwargs = salt.utils.args.clean_kwargs(**kwargs)
    bad_kwargs = dict(
        [(x, y) for x, y in six.iteritems(salt.utils.args.clean_kwargs(**kwargs))
         if x not in valid_kwargs]
    )

    if bad_kwargs:
        salt.utils.args.invalid_kwargs(bad_kwargs)

    pull_opts = []

    if pull_type in ('raw', 'tar'):
        verify = kwargs.get('verify', False)
        if not verify:
            pull_opts.append('--verify=no')
        else:
            def _bad_verify():
                raise SaltInvocationError(
                    '\'verify\' must be one of the following: '
                    'signature, checksum'
                )
            try:
                verify = verify.lower()
            except AttributeError:
                _bad_verify()
            else:
                if verify not in ('signature', 'checksum'):
                    _bad_verify()
                pull_opts.append('--verify={0}'.format(verify))

    elif pull_type == 'dkr':
        # No need to validate the index URL, machinectl will take care of this
        # for us.
        if 'index' in kwargs:
            pull_opts.append('--dkr-index-url={0}'.format(kwargs['index']))

    cmd = 'pull-{0} {1} {2} {3}'.format(
        pull_type, ' '.join(pull_opts), image, name
    )
    result = _machinectl(cmd, use_vt=True)
    if result['retcode'] != 0:
        msg = 'Error occurred pulling image. Stderr from the pull command ' \
              '(if any) follows: '
        if result['stderr']:
            msg += '\n\n{0}'.format(result['stderr'])
        raise CommandExecutionError(msg)
    return True
def _pull_image ( pull_type , image , name , ** kwargs ) : _ensure_systemd ( 219 ) if exists ( name ) : raise SaltInvocationError ( 'Container \'{0}\' already exists' . format ( name ) ) if pull_type in ( 'raw' , 'tar' ) : valid_kwargs = ( 'verify' , ) elif pull_type == 'dkr' : valid_kwargs = ( 'index' , ) else : raise SaltInvocationError ( 'Unsupported image type \'{0}\'' . format ( pull_type ) ) kwargs = salt . utils . args . clean_kwargs ( ** kwargs ) bad_kwargs = dict ( [ ( x , y ) for x , y in six . iteritems ( salt . utils . args . clean_kwargs ( ** kwargs ) ) if x not in valid_kwargs ] ) if bad_kwargs : salt . utils . args . invalid_kwargs ( bad_kwargs ) pull_opts = [ ] if pull_type in ( 'raw' , 'tar' ) : verify = kwargs . get ( 'verify' , False ) if not verify : pull_opts . append ( '--verify=no' ) else : def _bad_verify ( ) : raise SaltInvocationError ( '\'verify\' must be one of the following: ' 'signature, checksum' ) try : verify = verify . lower ( ) except AttributeError : _bad_verify ( ) else : if verify not in ( 'signature' , 'checksum' ) : _bad_verify ( ) pull_opts . append ( '--verify={0}' . format ( verify ) ) elif pull_type == 'dkr' : if 'index' in kwargs : pull_opts . append ( '--dkr-index-url={0}' . format ( kwargs [ 'index' ] ) ) cmd = 'pull-{0} {1} {2} {3}' . format ( pull_type , ' ' . join ( pull_opts ) , image , name ) result = _machinectl ( cmd , use_vt = True ) if result [ 'retcode' ] != 0 : msg = 'Error occurred pulling image. Stderr from the pull command ' '(if any) follows: ' if result [ 'stderr' ] : msg += '\n\n{0}' . format ( result [ 'stderr' ] ) raise CommandExecutionError ( msg ) return True
Common logic for machinectl pull-* commands