diff options
Diffstat (limited to 'swift/1.4.8/plugins/DiskFile.py')
| -rw-r--r-- | swift/1.4.8/plugins/DiskFile.py | 20 | 
1 files changed, 20 insertions, 0 deletions
diff --git a/swift/1.4.8/plugins/DiskFile.py b/swift/1.4.8/plugins/DiskFile.py index 815e1c3ab54..6f77eaaa57a 100644 --- a/swift/1.4.8/plugins/DiskFile.py +++ b/swift/1.4.8/plugins/DiskFile.py @@ -15,6 +15,8 @@  import os  from eventlet import tpool +from tempfile import mkstemp +from contextlib import contextmanager  from swift.common.utils import normalize_timestamp, renamer  from swift.plugins.utils import mkdirs, rmdirs, validate_object, \      check_valid_account, create_object_metadata,  do_open, \ @@ -294,3 +296,21 @@ class Gluster_DiskFile(DiskFile):          if X_OBJECT_TYPE in self.metadata:              self.metadata.pop(X_OBJECT_TYPE) +    @contextmanager +    def mkstemp(self): +        """Contextmanager to make a temporary file.""" + +        if not os.path.exists(self.tmpdir): +            mkdirs(self.tmpdir) +        fd, tmppath = mkstemp(dir=self.tmpdir) +        try: +            yield fd, tmppath +        finally: +            try: +                os.close(fd) +            except OSError: +                pass +            try: +                os.unlink(tmppath) +            except OSError: +                pass  | 
