Ejemplo n.º 1
0
  def _garbage_collect_exports(self, export_dir_base: Text):
    """Deletes older exports, retaining only a given number of the most recent.

    Export subdirectories are assumed to be named with monotonically increasing
    integers; the most recent are taken to be those with the largest values.

    Args:
      export_dir_base: the base directory under which each export is in a
        versioned subdirectory.
    """
    if self._exports_to_keep is None:
      return

    def _export_version_parser(path):
      # create a simple parser that pulls the export_version from the directory.
      filename = os.path.basename(path.path)
      if not (len(filename) == 10 and filename.isdigit()):
        return None
      return path._replace(export_version=int(filename))

    # pylint: disable=protected-access
    keep_filter = gc._largest_export_versions(self._exports_to_keep)
    delete_filter = gc._negation(keep_filter)
    for p in delete_filter(
        gc._get_paths(export_dir_base, parser=_export_version_parser)):
      try:
        gfile.DeleteRecursively(p.path)
      except errors_impl.NotFoundError as e:
        tf_logging.warn('Can not delete %s recursively: %s', p.path, e)
Ejemplo n.º 2
0
  def _garbage_collect_exports(self, export_dir_base):
    """Deletes older exports, retaining only a given number of the most recent.

    Export subdirectories are assumed to be named with monotonically increasing
    integers; the most recent are taken to be those with the largest values.

    Args:
      export_dir_base: the base directory under which each export is in a
        versioned subdirectory.
    """
    if self._exports_to_keep is None:
      return

    def _export_version_parser(path):
      # create a simple parser that pulls the export_version from the directory.
      filename = os.path.basename(path.path)
      if not (len(filename) == 10 and filename.isdigit()):
        return None
      return path._replace(export_version=int(filename))

    # pylint: disable=protected-access
    keep_filter = gc._largest_export_versions(self._exports_to_keep)
    delete_filter = gc._negation(keep_filter)
    for p in delete_filter(
        gc._get_paths(export_dir_base, parser=_export_version_parser)):
      try:
        gfile.DeleteRecursively(p.path)
      except errors_impl.NotFoundError as e:
        tf_logging.warn('Can not delete %s recursively: %s', p.path, e)
Ejemplo n.º 3
0
 def testUnion(self):
   paths = []
   for i in xrange(10):
     paths.append(gc.Path("/foo", i))
   f = gc._union(gc._largest_export_versions(3), gc._mod_export_version(3))
   self.assertEqual(
       f(paths), [
           gc.Path("/foo", 0), gc.Path("/foo", 3), gc.Path("/foo", 6),
           gc.Path("/foo", 7), gc.Path("/foo", 8), gc.Path("/foo", 9)
       ])
Ejemplo n.º 4
0
 def testUnion(self):
     paths = []
     for i in xrange(10):
         paths.append(gc.Path("/foo", i))
     f = gc._union(gc._largest_export_versions(3),
                   gc._mod_export_version(3))
     self.assertEqual(f(paths), [
         gc.Path("/foo", 0),
         gc.Path("/foo", 3),
         gc.Path("/foo", 6),
         gc.Path("/foo", 7),
         gc.Path("/foo", 8),
         gc.Path("/foo", 9)
     ])
Ejemplo n.º 5
0
 def testLargestExportVersionsDoesNotDeleteZeroFolder(self):
   paths = [gc.Path("/foo", 0), gc.Path("/foo", 3)]
   newest = gc._largest_export_versions(2)
   n = newest(paths)
   self.assertEqual(n, [gc.Path("/foo", 0), gc.Path("/foo", 3)])
Ejemplo n.º 6
0
 def testLargestExportVersions(self):
   paths = [gc.Path("/foo", 8), gc.Path("/foo", 9), gc.Path("/foo", 10)]
   newest = gc._largest_export_versions(2)
   n = newest(paths)
   self.assertEqual(n, [gc.Path("/foo", 9), gc.Path("/foo", 10)])
Ejemplo n.º 7
0
 def testLargestExportVersionsDoesNotDeleteZeroFolder(self):
     paths = [gc.Path("/foo", 0), gc.Path("/foo", 3)]
     newest = gc._largest_export_versions(2)
     n = newest(paths)
     self.assertEqual(n, [gc.Path("/foo", 0), gc.Path("/foo", 3)])
Ejemplo n.º 8
0
 def testLargestExportVersions(self):
     paths = [gc.Path("/foo", 8), gc.Path("/foo", 9), gc.Path("/foo", 10)]
     newest = gc._largest_export_versions(2)
     n = newest(paths)
     self.assertEqual(n, [gc.Path("/foo", 9), gc.Path("/foo", 10)])