Example #1
0
 /// <summary>
 /// Gets the name of the local temp storage manifest file for the given temp storage node (ie, Engine\Saved\TmpStore\NodeInfoDirectory\NodeInfoFilename.TempManifest)
 /// </summary>
 /// <param name="TempStorageNodeInfo">Node info descibing the block of temp storage (essentially used to identify a subdirectory insides the game's temp storage folder).</param>
 /// <returns>The name of the temp storage manifest file for the given storage block name for the given game.</returns>
 private static string LocalTempStorageManifestFilename(TempStorageNodeInfo TempStorageNodeInfo)
 {
     return CommandUtils.CombinePaths(LocalTempStorageManifestDirectory(), TempStorageNodeInfo.GetManifestFilename());
 }
Example #2
0
 /// <summary>
 /// Gets the name of the temp storage manifest file for the given temp storage node and game (ie, P:\Builds\GameName\TmpStore\NodeInfoDirectory\NodeInfoFilename.TempManifest)
 /// </summary>
 /// <param name="TempStorageNodeInfo">Node info descibing the block of temp storage (essentially used to identify a subdirectory insides the game's temp storage folder).</param>
 /// <param name="GameName">game name to determine the temp storage folder for. Empty is equivalent to "UE4".</param>
 /// <returns>The name of the temp storage manifest file for the given storage block name for the given game.</returns>
 private static string SharedTempStorageManifestFilename(TempStorageNodeInfo TempStorageNodeInfo, string GameName)
 {
     return CommandUtils.CombinePaths(SharedTempStorageDirectory(TempStorageNodeInfo, GameName), TempStorageNodeInfo.GetManifestFilename());
 }
Example #3
0
 /// <summary>
 /// Finds temp storage manifests that match the block name (where the block name has embedded wildcards to find all block names of a given pattern).
 /// This is used by <see cref="GUBP.FindNodeHistory"/> to search for any temp storage manifests that match a certain GUBP node name.
 /// This is used to construct a "history" of that node which is then used to log info and generate failure emails.
 /// This method is used multiple times to find nodes matching a specific name with a suffix of _Started _Failed and _Succeeded. 
 /// The CL# is pulled from those names and used to generate a P4 history.
 /// Main problem with this is that temp storage is ephemeral, so after a few days, this will typically not find any history for a node.
 /// 
 /// NOTE: This entire routine is dependent on how TempStorageNodeInfo lays out its directories!!!
 /// If this layout is changed, this code needs to be changed as well.
 /// @todo: Someday Make FindNodeHistory query the build database directly to get a true history of the node.
 /// </summary>
 /// <param name="TempStorageNodeInfo">Node info descibing the block of temp storage (essentially used to identify a subdirectory insides the game's temp storage folder).</param>
 /// <param name="GameName">game name to determine the temp storage folder for. Empty is equivalent to "UE4".</param>
 /// <returns></returns>
 public static List<int> FindMatchingSharedTempStorageNodeCLs(TempStorageNodeInfo TempStorageNodeInfo, string GameName)
 {
     // Find the shared temp storage folder for this game and branch
     var SharedTempStorageDirectoryForGameAndBranch = CommandUtils.CombinePaths(ResolveSharedTempStorageDirectory(GameName), TempStorageNodeInfo.JobInfo.BranchNameForTempStorage);
     int dummy;
     return (
         // Look for all folders underneath this, it should be a CL, or CL-PreflightInfo
         from CLDir in Directory.EnumerateDirectories(SharedTempStorageDirectoryForGameAndBranch)
         // only accept folders that are plain numbers. Any suffixes ('-') imply preflight builds or something else.
         let PossibleCL = Path.GetFileName(CLDir)
         where int.TryParse(PossibleCL, out dummy)
         let CL = int.Parse(PossibleCL)
         // if we have a real CL, try to find the node name we are looking for.
         where File.Exists(CommandUtils.CombinePaths(CLDir, TempStorageNodeInfo.NodeStorageName, TempStorageNodeInfo.GetManifestFilename()))
         select CL)
         .OrderBy(CL => CL).ToList();
 }