def _find_resources(resource, name=None, resource_id=None, tags=None,
                    region=None, key=None, keyid=None, profile=None):
    '''
    Get VPC resources based on resource type and name, id, or tags.
    '''

    if all((resource_id, name)):
        raise SaltInvocationError('Only one of name or id may be '
                                  'provided.')

    if not any((resource_id, name, tags)):
        raise SaltInvocationError('At least one of the following must be '
                                  'provided: id, name, or tags.')

    conn = _get_conn(region=region, key=key, keyid=keyid, profile=profile)

    f = 'get_all_{0}'.format(resource)
    if not f.endswith('s'):
        f = f + 's'
    get_resources = getattr(conn, f)

    filter_parameters = {}
    if name:
        filter_parameters['filters'] = {'tag:Name': name}
    if resource_id:
        filter_parameters['{0}_ids'.format(resource)] = resource_id
    if tags:
        for tag_name, tag_value in six.iteritems(tags):
            filter_parameters['filters']['tag:{0}'.format(tag_name)] = tag_value

    try:
        r = get_resources(**filter_parameters)
    except BotoServerError as e:
        if e.code.endswith('.NotFound'):
            return None
        raise
    return r
def _find_resources ( resource , name = None , resource_id = None , tags = None , region = None , key = None , keyid = None , profile = None ) : if all ( ( resource_id , name ) ) : raise SaltInvocationError ( 'Only one of name or id may be ' 'provided.' ) if not any ( ( resource_id , name , tags ) ) : raise SaltInvocationError ( 'At least one of the following must be ' 'provided: id, name, or tags.' ) conn = _get_conn ( region = region , key = key , keyid = keyid , profile = profile ) f = 'get_all_{0}' . format ( resource ) if not f . endswith ( 's' ) : f = f + 's' get_resources = getattr ( conn , f ) filter_parameters = { } if name : filter_parameters [ 'filters' ] = { 'tag:Name' : name } if resource_id : filter_parameters [ '{0}_ids' . format ( resource ) ] = resource_id if tags : for tag_name , tag_value in six . iteritems ( tags ) : filter_parameters [ 'filters' ] [ 'tag:{0}' . format ( tag_name ) ] = tag_value try : r = get_resources ( ** filter_parameters ) except BotoServerError as e : if e . code . endswith ( '.NotFound' ) : return None raise return r
Get VPC resources based on resource type and name, id, or tags.