# Copyright 1999-2012. Parallels IP Holdings GmbH. All Rights Reserved.
import os
import sys
import logging

import osutil
import subproc

import pmm_config

_logger = logging.getLogger("pmmcli.daemon")


class PMMCliDaemon:
    def __init__(self):
        pass

    def __start(self):
        _logger.debug("starting pmmcli daemon...")
        cmd = subproc.AsyncCmdLine(pmm_config.daemon())
        for arg in pmm_config.daemon_args():
            cmd.arg(arg)
        try:
            cmd.asyncSpawn()
        except subproc.AsyncExecuteException, x:
            _logger.error(u"exception raised while invoke 'pmmcli daemon' utility: %s" % unicode(x))
            _logger.error("could not start PMMCli daemon process")

    def start(self):
        _logger.debug("detecting running pmmcli daemon...")
        mutex = osutil.Interlock(pmm_config.pmmcli_daemon_lock_file())
        if not mutex.is_locked():
            self.__start()
            return True
        else:
            _logger.debug('pmmcli daemon is running')
            return False
