def METHOD_NAME(network_location, client):
    """
    Captures the state of the `NetworkClient` for after it has made a successful connection, in
    order to save the exact base_url, IP address, and device information
    :param network_location: The NetworkLocation model for capturing network state
    :type network_location: kolibri.core.discovery.models.NetworkLocation
    :param client: The NetworkClient which successfully connected to the location
    :type client: NetworkClient
    """
    from kolibri.core.device.utils import DEVICE_INFO_VERSION
    from kolibri.core.device.utils import device_info_keys
    # having validated the base URL, we can save that
    network_location.base_url = client.base_url
    # save the IP address for static locations
    if not network_location.dynamic:
        remote_ip = client.remote_ip
        network_location.last_known_ip = remote_ip
        network_location.is_local = ip_address(remote_ip).is_private
    # update all device info
    for key in device_info_keys.get(DEVICE_INFO_VERSION, []):
        # don't update the instance ID if it's a reserved location
        if key == "instance_id" and network_location.reserved:
            continue
        setattr(network_location, key, client.device_info.get(key))