public static async Task FindShareWithLatestSnapshot()

in src/ccf/ccf-provider-common/AzFileShare.cs [194:280]


    public static async Task<string?> FindShareWithLatestSnapshot(
        string networkName,
        JsonObject providerConfig,
        IProgress<string> progress)
    {
        FileServiceResource fileService = await GetFileService(providerConfig);
        FileShareCollection fileShareCollection = fileService.GetFileShares();

        AsyncPageable<FileShareResource> response = fileShareCollection.GetAllAsync();

        string? latestShareName = null;
        string? latestSnapshot = null;
        int latestSnapshotSeqNo = 0;
        int numberOfShares = 0;
        await foreach (FileShareResource fsItem in response)
        {
            numberOfShares++;

            // Get or else Metadata is not populated.
            FileShareResource fileShare = await fsItem.GetAsync();
            if (!fileShare.Data.Metadata.TryGetValue(CcfNetworkNameKey, out var value) ||
                value != networkName)
            {
                continue;
            }

            progress.Report(
                $"Inspecting file share '{fileShare.Data.Name}' for snapshots.");
            var share = await GetShareClient(fileShare.Data.Name, providerConfig);
            var dir = share.GetDirectoryClient("snapshots");
            List<string> snapshotFiles = new();
            if (await dir.ExistsAsync())
            {
                await foreach (ShareFileItem item in dir.GetFilesAndDirectoriesAsync())
                {
                    progress.Report($"Found file {item.Name} on file share " +
                        $"'{fileShare.Data.Name}'.");

                    // fileName = snapshot_13_14.committed.
                    var fileName = item.Name;
                    if (fileName.StartsWith("snapshot_") && fileName.EndsWith(".committed"))
                    {
                        snapshotFiles.Add(fileName);
                    }
                }
            }

            string shareName = fileShare.Data.Name;
            var latestNodeSnapshot =
                snapshotFiles.OrderBy(f => f.PadForNaturalNumberOrdering()).LastOrDefault();
            if (latestNodeSnapshot != null)
            {
                progress.Report(
                    $"Latest snapshot on share '{shareName}' is: {latestNodeSnapshot}.");
                int latestNodeSnapshostSeqNo = int.Parse(latestNodeSnapshot.Split("_")[1]);
                if (latestNodeSnapshostSeqNo > latestSnapshotSeqNo)
                {
                    progress.Report(
                        $"Snapshot '{latestNodeSnapshot}' on share '{shareName}' is the " +
                        $"latest seen till now. Previous latest was " +
                        $"'{latestSnapshot}' on share '{latestShareName}'.");
                    latestSnapshot = latestNodeSnapshot;
                    latestSnapshotSeqNo = latestNodeSnapshostSeqNo;
                    latestShareName = shareName;
                }
            }
            else
            {
                progress.Report($"Did not find any snapshot on share '{shareName}'.");
            }
        }

        if (latestShareName != null)
        {
            progress.Report(
                $"Located latest snapshot with seq no {latestSnapshotSeqNo} on share " +
                $"'{latestShareName}': '{latestSnapshot}'.");
        }
        else
        {
            progress.Report(
                $"Did not locate any latest snapshot for network {networkName}. " +
                $"Number of shares inspected: {numberOfShares}.");
        }

        return latestShareName;
    }