grr/server/grr_response_server/flows/general/administrative.py
def WriteAllCrashDetails(client_id,
                         crash_details,
                         flow_session_id=None,
                         hunt_session_id=None,
                         token=None):
  """Updates the last crash attribute of the client."""
  # AFF4.
  if data_store.AFF4Enabled():
    with aff4.FACTORY.Create(
        client_id, aff4_grr.VFSGRRClient, token=token) as client_obj:
      client_obj.Set(client_obj.Schema.LAST_CRASH(crash_details))

    # Duplicate the crash information in a number of places so we can find it
    # easily.
    client_urn = rdf_client.ClientURN(client_id)
    client_crashes = aff4_grr.VFSGRRClient.CrashCollectionURNForCID(client_urn)
    with data_store.DB.GetMutationPool() as pool:
      grr_collections.CrashCollection.StaticAdd(
          client_crashes, crash_details, mutation_pool=pool)

  # Relational db.
  if data_store.RelationalDBWriteEnabled():
    try:
      data_store.REL_DB.WriteClientCrashInfo(client_id, crash_details)
    except db.UnknownClientError:
      pass

  if not flow_session_id:
    return

  if data_store.RelationalDBFlowsEnabled():
    flow_id = flow_session_id.Basename()
    data_store.REL_DB.UpdateFlow(
        client_id, flow_id, client_crash_info=crash_details)

    flow_obj = data_store.REL_DB.ReadFlowObject(client_id, flow_id)
    if flow_obj.parent_hunt_id:
      db_compat.ProcessHuntClientCrash(
          flow_obj, client_crash_info=crash_details)

  # TODO(amoser): Registering crashes in hunts is currently not implemented for
  # the relational db.
  if not data_store.RelationalDBFlowsEnabled():
    with aff4.FACTORY.Open(
        flow_session_id,
        flow.GRRFlow,
        mode="rw",
        age=aff4.NEWEST_TIME,
        token=token) as aff4_flow:
      aff4_flow.Set(aff4_flow.Schema.CLIENT_CRASH(crash_details))

    hunt_session_id = ExtractHuntId(flow_session_id)
    if hunt_session_id and hunt_session_id != flow_session_id:
      hunt_obj = aff4.FACTORY.Open(
          hunt_session_id,
          aff4_type=implementation.GRRHunt,
          mode="rw",
          token=token)
      hunt_obj.RegisterCrash(crash_details)
Updates the last crash attribute of the client.
Updates the last crash attribute of the client.
Updates the last crash attribute of the client .
def WriteAllCrashDetails(client_id,
                         crash_details,
                         flow_session_id=None,
                         hunt_session_id=None,
                         token=None):
  if data_store.AFF4Enabled():
    with aff4.FACTORY.Create(
        client_id, aff4_grr.VFSGRRClient, token=token) as client_obj:
      client_obj.Set(client_obj.Schema.LAST_CRASH(crash_details))
    client_urn = rdf_client.ClientURN(client_id)
    client_crashes = aff4_grr.VFSGRRClient.CrashCollectionURNForCID(client_urn)
    with data_store.DB.GetMutationPool() as pool:
      grr_collections.CrashCollection.StaticAdd(
          client_crashes, crash_details, mutation_pool=pool)
  if data_store.RelationalDBWriteEnabled():
    try:
      data_store.REL_DB.WriteClientCrashInfo(client_id, crash_details)
    except db.UnknownClientError:
      pass
  if not flow_session_id:
    return
  if data_store.RelationalDBFlowsEnabled():
    flow_id = flow_session_id.Basename()
    data_store.REL_DB.UpdateFlow(
        client_id, flow_id, client_crash_info=crash_details)
    flow_obj = data_store.REL_DB.ReadFlowObject(client_id, flow_id)
    if flow_obj.parent_hunt_id:
      db_compat.ProcessHuntClientCrash(
          flow_obj, client_crash_info=crash_details)
  if not data_store.RelationalDBFlowsEnabled():
    with aff4.FACTORY.Open(
        flow_session_id,
        flow.GRRFlow,
        mode="rw",
        age=aff4.NEWEST_TIME,
        token=token) as aff4_flow:
      aff4_flow.Set(aff4_flow.Schema.CLIENT_CRASH(crash_details))
    hunt_session_id = ExtractHuntId(flow_session_id)
    if hunt_session_id and hunt_session_id != flow_session_id:
      hunt_obj = aff4.FACTORY.Open(
          hunt_session_id,
          aff4_type=implementation.GRRHunt,
          mode="rw",
          token=token)
      hunt_obj.RegisterCrash(crash_details)
def WriteAllCrashDetails ( client_id , crash_details , flow_session_id = None , hunt_session_id = None , token = None ) : if data_store . AFF4Enabled ( ) : with aff4 . FACTORY . Create ( client_id , aff4_grr . VFSGRRClient , token = token ) as client_obj : client_obj . Set ( client_obj . Schema . LAST_CRASH ( crash_details ) ) client_urn = rdf_client . ClientURN ( client_id ) client_crashes = aff4_grr . VFSGRRClient . CrashCollectionURNForCID ( client_urn ) with data_store . DB . GetMutationPool ( ) as pool : grr_collections . CrashCollection . StaticAdd ( client_crashes , crash_details , mutation_pool = pool ) if data_store . RelationalDBWriteEnabled ( ) : try : data_store . REL_DB . WriteClientCrashInfo ( client_id , crash_details ) except db . UnknownClientError : pass if not flow_session_id : return if data_store . RelationalDBFlowsEnabled ( ) : flow_id = flow_session_id . Basename ( ) data_store . REL_DB . UpdateFlow ( client_id , flow_id , client_crash_info = crash_details ) flow_obj = data_store . REL_DB . ReadFlowObject ( client_id , flow_id ) if flow_obj . parent_hunt_id : db_compat . ProcessHuntClientCrash ( flow_obj , client_crash_info = crash_details ) if not data_store . RelationalDBFlowsEnabled ( ) : with aff4 . FACTORY . Open ( flow_session_id , flow . GRRFlow , mode = "rw" , age = aff4 . NEWEST_TIME , token = token ) as aff4_flow : aff4_flow . Set ( aff4_flow . Schema . CLIENT_CRASH ( crash_details ) ) hunt_session_id = ExtractHuntId ( flow_session_id ) if hunt_session_id and hunt_session_id != flow_session_id : hunt_obj = aff4 . FACTORY . Open ( hunt_session_id , aff4_type = implementation . GRRHunt , mode = "rw" , token = token ) hunt_obj . RegisterCrash ( crash_details )
Updates the last crash attribute of the client.
Updates the last crash attribute of the client .
"""Updates the last crash attribute of the client.""" # AFF4. # Duplicate the crash information in a number of places so we can find it # easily. # Relational db. # TODO(amoser): Registering crashes in hunts is currently not implemented for # the relational db.
client_id
crash_details
flow_session_id
hunt_session_id
token