35

来源:互联网 发布:日本三菱电梯知乎 编辑:程序博客网 时间:2024/05/01 16:55
        self.__file_log = None;


    @staticmethod
    def GetInstance():
        if (None == log_manager.__instance):
            log_manager.mutex.acquire()
            log_manager.__instance = log_manager();
            log_manager.mutex.release()
        return log_manager.__instance;


    def OpenLogFile(self):
        pass;
        #print 'begin to open log file';
        #t_str_time = time.strftime('%Y-%m-%d',time.localtime(time.time()));
        #try:
            #self.__file_log = open(t_str_time + 'scdl' + '.log','a');
        #except Exception, e:
            #print 'open failed';
            #return False;
        #print self.__file_log;
        #print 'end to open log file';
        #return True;


    def CloseLogFile(self):
        pass;
        #if (None != self.__file_log):
            #self.__file_log.close();


    def CoutLog(self,p_str_log_info,p_o_com):
        t_str_date = time.strftime('%Y-%m-%d',time.localtime(time.time()));
        try:
            self.__file_log = open(dir.output_config_file_dir + t_str_date + 'scdl' + '.log','a');
        except Exception, e:
            print 'open failed';
            return False;
        t_str_time = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time()));
        t_str_log = t_str_time+ '@' + p_o_com.compnone_name + ': ' + p_str_log_info;
        if (2 == p_o_com.log_type):
            try:
                print t_str_log;
            except Exception, e:
                print t_str_log.encode('utf-8');
        try:
            self.__file_log.write(t_str_log);
        except Exception, e:
            pass;
        self.__file_log.write("\n");
        self.__file_log.close();
**********************************


文件名:remote_manager.py
**********************************
from hcl_modify_manager import *;
from data_struct_manager import *;
from log_manager import *;


class remote_manager:
    __instance = None;
    list_h_m_m = [];
    list_str_tunnel_num = [];
    
    def __init__(self):
        pass;


    @staticmethod
    def GetInstance():
        if (None == remote_manager.__instance):
            remote_manager.__instance = remote_manager();
            for var in range(1,10000):
                remote_manager.__instance.list_str_tunnel_num.append(str(var));
        return remote_manager.__instance;


    def __RandTunnelName(self):
        log_manager.GetInstance().CoutLog('begin to exec RandTunnelName',Com_remote_manager);
        str_num = self.list_str_tunnel_num[0];
        del self.list_str_tunnel_num[0];
        str_tunnel_name  = 'tunnel' + str_num;
        log_manager.GetInstance().CoutLog('end to exec RandTunnelName',Com_remote_manager);
        return str_tunnel_name;


    def SetRemoteInfo(self):
        log_manager.GetInstance().CoutLog('begin to exec SetRemoteInfo',Com_remote_manager);
        for elem_h_m_m in self.list_h_m_m:
            for elem_hcl_dev in elem_h_m_m.list_hcldev_info:
                if ('remote' == elem_hcl_dev.str_dev_type or 'host' == elem_hcl_dev.str_dev_type):
                    continue;
                for elem_opp_info in elem_hcl_dev.list_opp_ip_inter:
                    pa_inter = re.compile(' GE_.*');
                    ma_inter = pa_inter.search(elem_opp_info);
                    str_opp_ip = '';
                    str_opp_inter = '';
                    str_self_inter = '';
                    if ma_inter:
                        str_opp_ip = elem_opp_info.replace(ma_inter.group(),'');
                        str_opp_inter = ma_inter.group();
                        str_opp_inter = str_opp_inter.replace(' ','');
                        pa_self_inter = re.compile('.*@');
                        ma_self_inter = pa_self_inter.search(elem_opp_info);
                        if ma_self_inter:
                            str_opp_ip = str_opp_ip.replace(ma_self_inter.group(),'');
                            str_self_inter = ma_self_inter.group();
                            str_self_inter = str_self_inter.replace('@','');
                    if (not elem_h_m_m.IsDevInThisProj(str_opp_ip)):
                        for elem_h_m_m_a in self.list_h_m_m:
                            if elem_h_m_m.proj == elem_h_m_m_a.proj:
                                continue;
                            if (elem_h_m_m_a.IsDevInThisProj(str_opp_ip)):
                                t = tunnel();
                                t.m_str_left_ip = elem_hcl_dev.str_dev_ip;
                                t.m_str_left_inter = str_self_inter;
                                t.m_str_right_ip = str_opp_ip;
                                t.m_str_right_inter = str_opp_inter;
                                for elem_remote_dev_a in elem_h_m_m_a.list_remote_dev:
                                    if (elem_remote_dev_a.m_str_remote_proj == elem_h_m_m.proj):
                                        for elem_tunnel_a in elem_remote_dev_a.m_list_tunnel:
                                            if (elem_tunnel_a.m_str_left_ip == t.m_str_right_ip and elem_tunnel_a.m_str_right_ip == t.m_str_left_ip):
                                                t.m_str_tunnel_name = elem_tunnel_a.m_str_tunnel_name;
                                                break;
                                        break;
                                if ('' == t.m_str_tunnel_name):
                                    t.m_str_tunnel_name = self.__RandTunnelName();
                                for elem_remote_dev in elem_h_m_m.list_remote_dev:
                                    if (elem_remote_dev.m_str_remote_proj == elem_h_m_m_a.proj):
                                        elem_remote_dev.m_list_tunnel.append(t);
                                        str_opp_info = elem_opp_info.replace(ma_self_inter.group(),'');
                                        elem_hcl_dev.str_dev_content.replace(str_opp_info,t.m_str_tunnel_name);
        for elem_h_m_m in self.list_h_m_m:
            for elem_hcl_dev in elem_h_m_m.list_hcldev_info:
                if ('remote' == elem_hcl_dev.str_dev_type):
                    for elem_remote_dev in elem_h_m_m.list_remote_dev:
                        if (elem_hcl_dev.str_dev_content.find(elem_remote_dev.m_str_remote_server_ip) != -1 and elem_hcl_dev.str_dev_content.find(elem_remote_dev.m_str_remote_proj) != -1):
                            for elem_tunnel in elem_remote_dev.m_list_tunnel:
                                str_line = '        ' + elem_tunnel.m_str_tunnel_name + ' = ' + elem_tunnel.m_str_left_ip + ' ' + elem_tunnel.m_str_left_inter + '\n';
                                elem_hcl_dev.str_dev_content = elem_hcl_dev.str_dev_content + str_line;
                elif ('sim' == elem_hcl_dev.str_dev_type or 'multi' == elem_hcl_dev.str_dev_type or 'SR99' == elem_hcl_dev.str_dev_type):
                    for elem_remote_dev in elem_h_m_m.list_remote_dev:
                        for elem_tunnel in elem_remote_dev.m_list_tunnel:
                            if (elem_hcl_dev.str_dev_ip == elem_tunnel.m_str_left_ip):
0 0