Server IP : 172.24.0.40 / Your IP : 216.73.216.10 Web Server : Apache System : Linux dbweb26.ust.edu.ph 4.18.0-513.5.1.el8_9.x86_64 #1 SMP Fri Sep 29 05:21:10 EDT 2023 x86_64 User : apache ( 48) PHP Version : 8.2.18 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /proc/self/root/lib/python3.6/site-packages/vdo/vdomgmnt/ |
Upload File : |
# # Copyright Red Hat # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. # """ CommandLock - simple process locking $Id: //eng/vdo-releases/aluminum/src/python/vdo/vdomgmnt/CommandLock.py#2 $ """ from __future__ import absolute_import from __future__ import division from __future__ import print_function from __future__ import unicode_literals from vdo.utils import Command, FileLock class CommandLockError(Exception): """Exception raised to indicate an error acquiring a CommandLock.""" ###################################################################### # Overridden methods ###################################################################### def __init__(self, message, *args): super(CommandLockError, self).__init__() self._message = message.format(*args) ###################################################################### def __str__(self): return self._message ######################################################################## class CommandLock(FileLock): """Simple process locking. """ ###################################################################### # Overridden methods ###################################################################### def __enter__(self): try: super(CommandLock, self).__enter__() except: raise CommandLockError("Could not lock file {0}", self.path) return self ###################################################################### def __init__(self, filePath, readonly=True): super(CommandLock, self).__init__(filePath, "r" if readonly else "r+", timeout = 20) ###################################################################### def __repr__(self): lst = [str(self), "["] lst.append(','.join('='.join([key, str(getattr(self, key))]) for key in self.__dict__)) lst.append("]") return "".join(lst) ###################################################################### def __str__(self): return "{0}({1})".format(type(self).__name__, self.path) ###################################################################### def _createFile(self): super(CommandLock, self)._createFile() # For now, we default to permitting shared locks from non-root # processes. The sysadmin may change this; we won't change the # permissions once the file has been created. # # N.B.: The names may not be sanitized for use with a shell! cmd = Command(["chmod", "644", self.path]) cmd.run() ###################################################################### # Protected methods ######################################################################