container_delete

This commit is contained in:
Vyacheslav Anzhiganov 2015-12-05 16:07:33 +03:00
parent 87d71f6634
commit e68a947a6b

View file

@ -20,7 +20,7 @@ class ContainerNotExists(Exception):
_logger = logging.getLogger("pylxc") _logger = logging.getLogger("pylxc")
_monitor = None _monitor = None
class _LXCMonitor(threading.Thread): class _LXCMonitor(threading.Thread):
@ -28,7 +28,7 @@ class _LXCMonitor(threading.Thread):
threading.Thread.__init__(self) threading.Thread.__init__(self)
self._process = None self._process = None
self._monitors = {} self._monitors = {}
def run(self): def run(self):
master, slave = pty.openpty() master, slave = pty.openpty()
cmd = ['lxc-monitor', '-n', '.*'] cmd = ['lxc-monitor', '-n', '.*']
@ -46,23 +46,23 @@ class _LXCMonitor(threading.Thread):
logging.debug("State of container '%s' changed to '%s'", container, state) logging.debug("State of container '%s' changed to '%s'", container, state)
self._monitors[container](state) self._monitors[container](state)
_logger.info("LXC Monitor stopped!") _logger.info("LXC Monitor stopped!")
def add_monitor(self, name, callback): def add_monitor(self, name, callback):
self._monitors[name] = callback self._monitors[name] = callback
def rm_monitor(self, name): def rm_monitor(self, name):
self._monitors.pop(name) self._monitors.pop(name)
def is_monitored(self, name): def is_monitored(self, name):
return name in self._monitors return name in self._monitors
def kill(self): def kill(self):
try: try:
self._process.terminate() self._process.terminate()
self._process.wait() self._process.wait()
except: except:
pass pass
self.join() self.join()
class lxc(): class lxc():
@ -114,9 +114,13 @@ class lxc():
if not self.exists(name): if not self.exists(name):
raise ContainerNotExists("The container (%s) does not exist!" % name) raise ContainerNotExists("The container (%s) does not exist!" % name)
cmd = ['lxc-stop', '-n', name] cmd = ['/usr/bin/lxc-stop', '-n', name]
return subprocess.check_call(cmd) try:
result = subprocess.check_call(cmd)
return True
exception Exception as e:
return False
def destroy(self, name): def destroy(self, name):
""" """
@ -317,7 +321,7 @@ class lxc():
# i = i.replace(' (auto)', '') # i = i.replace(' (auto)', '')
# containers_list.append(i) # containers_list.append(i)
# return containers_list # return containers_list
# def kill(name, signal): # def kill(name, signal):
# ''' # '''
@ -387,4 +391,3 @@ class lxc():
# _monitor = None # _monitor = None
# signal.signal(signal.SIGTERM, signal.SIG_DFL) # signal.signal(signal.SIGTERM, signal.SIG_DFL)
# signal.signal(signal.SIGINT, signal.SIG_DFL) # signal.signal(signal.SIGINT, signal.SIG_DFL)