(
        sds,
        replica_set_name,
        server_description,
        max_set_version,
        max_election_id)
return (_check_has_primary(sds),
            replica_set_name,
            max_set_version,
            max_election_id)
Update topology description from a primary's ismaster response.

    Pass in a dict of ServerDescriptions, current replica set name, the
    ServerDescription we are processing, and the TopologyDescription's
    max_set_version and max_election_id if any.

    Returns (new topology type, new replica_set_name, new max_set_version,
    new max_election_id).
Update topology description from a primary's ismaster response.
Update topology description from a primary s ismaster response .
def _update_rs_from_primary(
        sds,
        replica_set_name,
        server_description,
        max_set_version,
        max_election_id):
    """Update topology description from a primary's ismaster response.

    Pass in a dict of ServerDescriptions, current replica set name, the
    ServerDescription we are processing, and the TopologyDescription's
    max_set_version and max_election_id if any.

    Returns (new topology type, new replica_set_name, new max_set_version,
    new max_election_id).
    """
    if replica_set_name is None:
        replica_set_name = server_description.replica_set_name

    elif replica_set_name != server_description.replica_set_name:
        # We found a primary but it doesn't have the replica_set_name
        # provided by the user.
        sds.pop(server_description.address)
        return (_check_has_primary(sds),
                replica_set_name,
                max_set_version,
                max_election_id)

    max_election_tuple = max_set_version, max_election_id
    if None not in server_description.election_tuple:
        if (None not in max_election_tuple and
                max_election_tuple > server_description.election_tuple):

            # Stale primary, set to type Unknown.
            address = server_description.address
            sds[address] = ServerDescription(address)
            return (_check_has_primary(sds),
                    replica_set_name,
                    max_set_version,
                    max_election_id)

        max_election_id = server_description.election_id

    if (server_description.set_version is not None and
        (max_set_version is None or
            server_description.set_version > max_set_version)):

        max_set_version = server_description.set_version

    # We've heard from the primary. Is it the same primary as before?
    for server in sds.values():
        if (server.server_type is SERVER_TYPE.RSPrimary
                and server.address != server_description.address):

            # Reset old primary's type to Unknown.
            sds[server.address] = ServerDescription(server.address)

            # There can be only one prior primary.
            break

    # Discover new hosts from this primary's response.
    for new_address in server_description.all_hosts:
        if new_address not in sds:
            sds[new_address] = ServerDescription(new_address)

    # Remove hosts not in the response.
    for addr in set(sds) - server_description.all_hosts:
        sds.pop(addr)

    # If the host list differs from the seed list, we may not have a primary
    # after all.
    return (_check_has_primary(sds),
            replica_set_name,
            max_set_version,
            max_election_id)
def _update_rs_from_primary ( sds , replica_set_name , server_description , max_set_version , max_election_id ) : if replica_set_name is None : replica_set_name = server_description . replica_set_name elif replica_set_name != server_description . replica_set_name : # We found a primary but it doesn't have the replica_set_name # provided by the user. sds . pop ( server_description . address ) return ( _check_has_primary ( sds ) , replica_set_name , max_set_version , max_election_id ) max_election_tuple = max_set_version , max_election_id if None not in server_description . election_tuple : if ( None not in max_election_tuple and max_election_tuple > server_description . election_tuple ) : # Stale primary, set to type Unknown. address = server_description . address sds [ address ] = ServerDescription ( address ) return ( _check_has_primary ( sds ) , replica_set_name , max_set_version , max_election_id ) max_election_id = server_description . election_id if ( server_description . set_version is not None and ( max_set_version is None or server_description . set_version > max_set_version ) ) : max_set_version = server_description . set_version # We've heard from the primary. Is it the same primary as before? for server in sds . values ( ) : if ( server . server_type is SERVER_TYPE . RSPrimary and server . address != server_description . address ) : # Reset old primary's type to Unknown. sds [ server . address ] = ServerDescription ( server . address ) # There can be only one prior primary. break # Discover new hosts from this primary's response. for new_address in server_description . all_hosts : if new_address not in sds : sds [ new_address ] = ServerDescription ( new_address ) # Remove hosts not in the response. for addr in set ( sds ) - server_description . all_hosts : sds . pop ( addr ) # If the host list differs from the seed list, we may not have a primary # after all. return ( _check_has_primary ( sds ) , replica_set_name , max_set_version , max_election_id )