A function to connect to a bigip device and modify a member of an existing pool.

    hostname
        The host/address of the bigip device
    username
        The iControl REST username
    password
        The iControl REST password
    name
        The name of the pool to modify
    member
        The member modify
    connection_limit
        [integer]
    description
        [string]
    dynamic_ratio
        [integer]
    inherit_profile
        [enabled | disabled]
    logging
        [enabled | disabled]
    monitor
        [name]
    priority_group
        [integer]
    profiles
        [none | profile_name]
    rate_limit
        [integer]
    ratio
        [integer]
    session
        [user-enabled | user-disabled]
    member_state (state)
        [ user-up | user-down ]

def modify_pool_member(hostname, username, password, name, member,
                       connection_limit=None,
                       description=None,
                       dynamic_ratio=None,
                       inherit_profile=None,
                       logging=None,
                       monitor=None,
                       priority_group=None,
                       profiles=None,
                       rate_limit=None,
                       ratio=None,
                       session=None,
                       member_state=None):
    '''
    A function to connect to a bigip device and modify a member of an existing pool.

    hostname
        The host/address of the bigip device
    username
        The iControl REST username
    password
        The iControl REST password
    name
        The name of the pool to modify
    member
        The member modify
    connection_limit
        [integer]
    description
        [string]
    dynamic_ratio
        [integer]
    inherit_profile
        [enabled | disabled]
    logging
        [enabled | disabled]
    monitor
        [name]
    priority_group
        [integer]
    profiles
        [none | profile_name]
    rate_limit
        [integer]
    ratio
        [integer]
    session
        [user-enabled | user-disabled]
    member_state (state)
        [ user-up | user-down ]

    '''

    ret = {'name': name, 'changes': {}, 'result': False, 'comment': ''}

    if __opts__['test']:
        return _test_output(ret, 'modify', params={
            'hostname': hostname,
            'username': username,
            'password': password,
            'name': name,
            'members': member
        }
        )

    #is this pool member currently configured?
    existing_pool = __salt__['bigip.list_pool'](hostname, username, password, name)

    if existing_pool['code'] == 200:

        # for some reason iControl REST doesn't support listing a single pool member.
        # the response from GET for listing a member will return 200 even if it doesn't exists.
        # because of this we have to do some rather "unnecessary" searching within a pool.

        #what are the current members?
        current_members = existing_pool['content']['membersReference']['items']

        #loop through them
        exists = False
        for current_member in current_members:
            if current_member['name'] == member:
                exists = True
                existing_member = current_member
                break

        if exists:

            #modify the pool member
            modified = __salt__['bigip.modify_pool_member'](hostname=hostname,
                                                            username=username,
                                                            password=password,
                                                            name=name,
                                                            member=member,
                                                            connection_limit=connection_limit,
                                                            description=description,
                                                            dynamic_ratio=dynamic_ratio,
                                                            inherit_profile=inherit_profile,
                                                            logging=logging,
                                                            monitor=monitor,
                                                            priority_group=priority_group,
                                                            profiles=profiles,
                                                            rate_limit=rate_limit,
                                                            ratio=ratio,
                                                            session=session,
                                                            state=member_state)

            #re-list the pool
            new_pool = __salt__['bigip.list_pool'](hostname, username, password, name)

            if modified['code'] == 200 and modified['code'] == 200:

                #what are the new members?
                new_members = new_pool['content']['membersReference']['items']

                #loop through them
                for new_member in new_members:
                    if new_member['name'] == member:
                        modified_member = new_member
                        break

                #check for changes
                old = {'content': existing_member}
                new = {'content': modified_member}
                ret = _check_for_changes('Pool Member: {member}'.format(member=member), ret, old, new)

            else:
                ret = _load_result(modified, ret)
        else:
            ret['comment'] = 'Member: {name} does not exists within this pool.  No changes made.'.format(name=member['name'])

    #pool does not exists
    elif existing_pool['code'] == 404:
        ret['comment'] = 'A pool with this name was not found.'
    else:
        ret = _load_result(existing_pool, ret)

    return ret