Ejemplo n.º 1
0
        public static void Show(DeleteGlacierFilesResult result)
        {
            ConsoleColor defaultColor = Console.ForegroundColor;

            Console.ForegroundColor = ConsoleColor.DarkGreen;

            Console.WriteLine();
            Console.WriteLine("    Deleted Files Count: {0:n0}", result.DeletedFilesCount);
            Console.WriteLine("     Deleted Files Size: {0}", result.DeletedFilesSizeBytes.ToFriendlyFileSize());
            Console.WriteLine("  Deleted Files $/month: {0}", result.DeletedFilesSizeBytes.ToCost());
            Console.WriteLine("Deletion Failures Count: {0:n0}", result.DeletionFailuresCount);

            Console.WriteLine();
            Console.WriteLine("Path | Result | Failure Details");
            Console.WriteLine("-".PadRight(totalWidth: 78, paddingChar: '-'));

            IEnumerable <GlacierDeleteFileResult> files = result.DeletedFiles;

            foreach (GlacierDeleteFileResult g in files)
            {
                Console.WriteLine("{1,-6} | {0} | {2}",
                                  g.NormalizedFilePath,
                                  g.DeleteFailed ? "FAILED" : "OK",
                                  g.DeleteFailure);
            }

            Console.WriteLine();
            Console.WriteLine("    Deleted Files Count: {0:n0}", result.DeletedFilesCount);
            Console.WriteLine("     Deleted Files Size: {0}", result.DeletedFilesSizeBytes.ToFriendlyFileSize());
            Console.WriteLine("  Deleted Files $/month: {0}", result.DeletedFilesSizeBytes.ToCost());
            Console.WriteLine("Deletion Failures Count: {0:n0}", result.DeletionFailuresCount);

            Console.ForegroundColor = defaultColor;
        }
        public void Execute()
        {
            VaultInventory vaultInventory = VaultInventoryParser.Parse(_vaultInventoryFile);

            NasFiles nasFiles = NasBackup.GetFiles(_nasPath);

            IEnumerable <GlacierFile> glacierFiles = vaultInventory.ArchiveList;

            IEnumerable <File> localFiles = nasFiles.Files;

            IEnumerable <GlacierFile> glacierExtraAgeFiles = FileMatcher.GetGlacierExtraFiles(glacierFiles,
                                                                                              localFiles,
                                                                                              _glacierOlderThan);

            var deleteFileResults = new List <GlacierDeleteFileResult>();

            using (var mgr = new ArchiveTransferManager(RegionEndpoint.USWest2))
            {
                foreach (GlacierFile g in glacierExtraAgeFiles)
                {
                    string deleteFailure = null;

                    bool isOldEnough = g.AgeDays > 90;

                    if (isOldEnough)
                    {
                        try
                        {
                            mgr.DeleteArchive(vaultName: "backup-home",
                                              archiveId: g.ArchiveId);
                        }
                        catch (Exception ex)
                        {
                            deleteFailure = ex.Message;
                        }
                    }
                    else
                    {
                        deleteFailure = string.Format("File is not old enough to be deleted. Age: [{0}]", g.AgeDays);
                    }

                    var deleteFileResult = new GlacierDeleteFileResult(g.NormalizedFilePath,
                                                                       deleteFailure,
                                                                       g.SizeBytes);

                    deleteFileResults.Add(deleteFileResult);
                }
            }

            var result = new DeleteGlacierFilesResult(deleteFileResults);

            ConsoleView.Show(result);
        }