# Path: umit/icm/agent/logger.py
# LOGLEVEL = 'DEBUG'
# 
# Path: umit/icm/agent/Application.py
# def main_is_frozen():
#     def __init__(self):
#     def _init_components(self, aggregator):
#     def _load_from_db(self):
#     def init_after_running(self, port=None, username=None, password=None,
#                            server_enabled=True, skip_server_check=False):
#     def check_aggregator_success(self,response):
#     def login_window_show(self):       
#     def check_aggregator_failed(self,message):
#     def login_without_gui(self):
#     def check_software_auto(self):
#     def register_agent(self, username, password):
#     def _handle_register(self, result):
#     def _handle_errback(self, failure):
#     def login(self, username, password, save_login=False, login_only=False):
#     def check_username(self,username="",password=""):
#     def _login_after_register_callback(self, message, username,
#                                        password, save_login, login_only):
#     def _handle_login_errback(self,failure):
#     def _handle_login(self, result, username, password, save_login,login_only=False):
#     def login_simulate(self):
#     def task_loop_manager(self):
#     def logout(self):
#     def _handle_logout(self, result):
#     def start(self, run_reactor=True, managed_mode=False, aggregator=None):
#     def quit_window_in_wrong(self,primary_text = "",secondary_text = ""):
#     def terminate(self):
#     def on_quit(self):
# class Application(object):


import os
import shutil
import sys
import time
import zlib
import subprocess
    import stat
    import tarfile
from umit.icm.agent.logger import g_logger
from umit.icm.agent.Global import *
from umit.icm.agent.BasePaths import *
from umit.icm.agent.Application import theApp
    from twisted.internet import reactor

    """
    shutil.rmtree callback(Attention:The rmtree cannot remove the readonly files in windows)
    """
    if not os.access(path, os.W_OK):
        os.chmod(path, stat.S_IWUSR)
        func(path)
    else:
        g_logger.debug("rm:path%s"%path)    #ignore errors

def update_agent(result, *args, **kw):
    """
    update back
    """
    g_logger.info("Close task looping...")
    theApp.task_assgin_lc.stop()
    theApp.task_run_lc.stop()
    theApp.report_proc_lc.stop()
    theApp.test_sets_fetch_lc()    
    
    g_logger.info("Updating Desktop Agent...")
    # args = ((version, check_code=0), {})
    version = args[0]
    if len(args) == 2:
        check_code = args[1]
    else:
        check_code = 0

    filename = 'icm-agent_' + version + '.tar.gz'
    path = os.path.join(TMP_DIR, filename)
    if not os.path.exists(path):

# Path: umit/icm/agent/logger.py
# LOGLEVEL = 'DEBUG'
# 
# Path: umit/icm/agent/Application.py
# def main_is_frozen():
#     def __init__(self):
#     def _init_components(self, aggregator):
#     def _load_from_db(self):
#     def init_after_running(self, port=None, username=None, password=None,
#                            server_enabled=True, skip_server_check=False):
#     def check_aggregator_success(self,response):
#     def login_window_show(self):       
#     def check_aggregator_failed(self,message):
#     def login_without_gui(self):
#     def check_software_auto(self):
#     def register_agent(self, username, password):
#     def _handle_register(self, result):
#     def _handle_errback(self, failure):
#     def login(self, username, password, save_login=False, login_only=False):
#     def check_username(self,username="",password=""):
#     def _login_after_register_callback(self, message, username,
#                                        password, save_login, login_only):
#     def _handle_login_errback(self,failure):
#     def _handle_login(self, result, username, password, save_login,login_only=False):
#     def login_simulate(self):
#     def task_loop_manager(self):
#     def logout(self):
#     def _handle_logout(self, result):
#     def start(self, run_reactor=True, managed_mode=False, aggregator=None):
#     def quit_window_in_wrong(self,primary_text = "",secondary_text = ""):
#     def terminate(self):
#     def on_quit(self):
# class Application(object):


# Path: umit/icm/agent/Upgrade.py
import os
import shutil
import sys
import time
import zlib
import subprocess
    import stat
    import tarfile
from umit.icm.agent.logger import g_logger
from umit.icm.agent.Global import *
from umit.icm.agent.BasePaths import *
from umit.icm.agent.Application import theApp
    from twisted.internet import reactor

    """
    shutil.rmtree callback(Attention:The rmtree cannot remove the readonly files in windows)
    """
    if not os.access(path, os.W_OK):
        os.chmod(path, stat.S_IWUSR)
        func(path)
    else:
        g_logger.debug("rm:path%s"%path)    #ignore errors

def update_agent(result, *args, **kw):
    """
    update back
    """
    g_logger.info("Close task looping...")
    theApp.task_assgin_lc.stop()
    theApp.task_run_lc.stop()
    theApp.report_proc_lc.stop()
    theApp.test_sets_fetch_lc()    
    
    g_logger.info("Updating Desktop Agent...")
    # args = ((version, check_code=0), {})
    version = args[0]
    if len(args) == 2:
        check_code = args[1]
    else:
        check_code = 0

    filename = 'icm-agent_' + version + '.tar.gz'
    path = os.path.join(TMP_DIR, filename)
    if not os.path.exists(path):

        g_logger.error("Package %s can't be found under '/tmp' folder." %
