def putData(self, mibname, data, comments=[], dryRun=False): if dryRun: debug.logger & debug.flagWriter and debug.logger('dry run mode') return if not os.path.exists(self._path): try: os.makedirs(self._path) except OSError: raise error.PySmiWriterError( 'failure creating destination directory %s: %s' % (self._path, sys.exc_info()[1]), writer=self) if comments: data = '#\n' + ''.join(['# %s\n' % x for x in comments]) + '#\n' + data pyfile = os.path.join( self._path, decode(mibname)) + self.suffixes[imp.PY_SOURCE][0][0] try: fd, tfile = tempfile.mkstemp(dir=self._path) os.write(fd, encode(data)) os.close(fd) os.rename(tfile, pyfile) except (OSError, IOError, UnicodeEncodeError): exc = sys.exc_info() try: os.unlink(tfile) except OSError: pass raise error.PySmiWriterError('failure writing file %s: %s' % (pyfile, exc[1]), file=pyfile, writer=self) debug.logger & debug.flagWriter and debug.logger( 'created file %s' % pyfile) if self.pyCompile: try: if sys.version_info[0:2] > (3, 1): py_compile.compile(pyfile, doraise=True, optimize=self.pyOptimizationLevel) else: py_compile.compile(pyfile, doraise=True) except (SyntaxError, py_compile.PyCompileError): pass # XXX except: try: os.unlink(pyfile) except Exception: pass raise error.PySmiWriterError('failure compiling %s: %s' % (pyfile, sys.exc_info()[1]), file=mibname, writer=self) debug.logger & debug.flagWriter and debug.logger('%s stored' % mibname)
def putData(self, mibname, data, comments=(), dryRun=False): if dryRun: debug.logger & debug.flagWriter and debug.logger('dry run mode') return if not os.path.exists(self._path): try: os.makedirs(self._path) except OSError: raise error.PySmiWriterError( 'failure creating destination directory %s: %s' % (self._path, sys.exc_info()[1]), writer=self) if comments: data = '#\n' + ''.join(['# %s\n' % x for x in comments]) + '#\n' + data filename = os.path.join(self._path, decode(mibname)) + self.suffix tfile = None try: fd, tfile = tempfile.mkstemp(dir=self._path) os.write(fd, encode(data)) os.close(fd) os.rename(tfile, filename) except (OSError, IOError, UnicodeEncodeError): exc = sys.exc_info() if tfile: try: os.unlink(tfile) except OSError: pass raise error.PySmiWriterError('failure writing file %s: %s' % (filename, exc[1]), file=filename, writer=self) debug.logger & debug.flagWriter and debug.logger('%s stored in %s' % (mibname, filename))
def putData(self, mibname, data, comments=[], dryRun=False): if dryRun: debug.logger & debug.flagWriter and debug.logger('dry run mode') return try: self._cbFun(mibname, data, self._cbCtx) except Exception: raise error.PySmiWriterError('user callback %s failure writing %s: %s' % (self._cbFun, mibname, sys.exc_info()[1]), writer=self) debug.logger & debug.flagWriter and debug.logger('user callback for %s succeeded' % mibname)
def fileWrite(self, fileName, data, comments=[], dryRun=False): fileName = fileName.replace('-', '_') if dryRun: debug.logger & debug.flagWriter and debug.logger('dry run mode') return if not os.path.exists(self._path): try: os.makedirs(self._path) except OSError: raise error.PySmiWriterError( 'failure creating destination directory %s: %s' % (self._path, sys.exc_info()[1]), writer=self) if comments: data = '//\n' + ''.join(['//%s\n' % x for x in comments]) + '//\n' + data fileName = os.path.join(self._path, decode(fileName)) try: fd, tfile = tempfile.mkstemp(dir=self._path) os.write(fd, encode(data)) os.close(fd) if (os.path.isfile(fileName)): os.remove(fileName) os.rename(tfile, fileName) fd, except (OSError, IOError, UnicodeEncodeError): exc = sys.exc_info() try: os.unlink(tfile) except OSError: pass raise error.PySmiWriterError('failure writing file %s: %s' % (fileName, exc[1]), file=fileName, write=self)