/usr/lib/python3/dist-packages/pylxd/managers.py is in python3-pylxd 2.2.6-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | from contextlib import contextmanager
import functools
import importlib
import inspect
class BaseManager(object):
"""A BaseManager class for handling collection operations."""
@property
def manager_for(self): # pragma: no cover
raise AttributeError(
"Manager class requires 'manager_for' attribute")
def __init__(self, *args, **kwargs):
manager_for = self.manager_for
module = '.'.join(manager_for.split('.')[0:-1])
obj = manager_for.split('.')[-1]
target_module = importlib.import_module(module)
target = getattr(target_module, obj)
methods = inspect.getmembers(target, predicate=inspect.ismethod)
for name, method in methods:
func = functools.partial(method, *args, **kwargs)
setattr(self, name, func)
return super(BaseManager, self).__init__()
class CertificateManager(BaseManager):
manager_for = 'pylxd.models.Certificate'
class ContainerManager(BaseManager):
manager_for = 'pylxd.models.Container'
class ImageManager(BaseManager):
manager_for = 'pylxd.models.Image'
class NetworkManager(BaseManager):
manager_for = 'pylxd.models.Network'
class OperationManager(BaseManager):
manager_for = 'pylxd.models.Operation'
class ProfileManager(BaseManager):
manager_for = 'pylxd.models.Profile'
class SnapshotManager(BaseManager):
manager_for = 'pylxd.models.Snapshot'
class StoragePoolManager(BaseManager):
manager_for = 'pylxd.models.StoragePool'
@contextmanager
def web_socket_manager(manager):
try:
yield manager
finally:
manager.stop()
|