Esempio n. 1
0
 def __del__(self):
     """
     """
     try:
         self.cur.close()
     except Exception,e:
         print_trace(e)        
Esempio n. 2
0
    def send_msg(request, msg_rsp, obj):
        """
        echo sender
        """
        ret             = ERR_FAIL  
        str_dict_msg    = ""
        

        ip = request.transport.client[0]
        port = request.transport.client[1]

        desc = "send %s(ip=%s, port=%s)" %(get_event_desc(msg_rsp), ip, port)
        log.app_info(desc)
        try:
            strio = StringIO()
            pickle.dump(obj, strio)  

            try:
                dict1  = Worklist.get_user_dictmsg(request)
                seq = dict1.get(KEY_SEQUENCE)
            except Exception,e:
                print_trace(e) 
                dict1  = {}

            dict1[KEY_MESSAGE]      = msg_rsp
            dict1[KEY_OBJECT]       = strio.getvalue()                  
            dict1[KEY_SENDER]       = KEY_SENDER_WORKLIST  

            str_dict_msg = str(dict1)
            
            Worklist.request_write(request, str_dict_msg)
            UsersMsgSeq.save_user_rsp_msg(seq, str_dict_msg) 
            
            ret = ERR_SUCCESS           
Esempio n. 3
0
def start_monitor_worklist(cpe, obj_monitor):
    """
    obj_alarm is MsgMonitorInform
    """

    ret = ERR_FAIL
    err_message = ""

    sn = cpe.get_sn()

    for nwf in [1]:

        # physic worklist ---------------
        dict_data = {
            "parameterlist": obj_monitor.parameterlist,
            "timelist": obj_monitor.timelist
        }
        obj = MsgWorklistBuild("Inform_Monitor_Monitor_Start", dict_data)
        obj_database = EventCode.auto_build_bind_physic_worklist(cpe, obj)

        save_id2worklistid(obj_monitor.id_, obj_database.id_)

        try:
            ret, err_message = EventCode.tx_worklist_exec(obj_database)
            ret = EventCode.rx_worklist_exec(ret, err_message)
            if (ret == ERR_SUCCESS):

                ret, err_message = EventCode.wait_worklist_exec_finish(
                    obj_database)
                if ret == ERR_SUCCESS:

                    desc = "start_monitor_worklist(id=%s) success." % (
                        obj_database.id_)
                    log.app_info(desc)

                    obj_monitor.dict_ret["str_result"] = desc

                else:
                    # worklist(id=worklist_2014-07-08_11:48:15.781_82424709) status is not success(fail)
                    # nwf 2014-07-08; +worklist fail
                    obj_db = restore_acs_worklist(obj_database.id_)
                    err_message = err_message + "\n" + obj_db.dict_ret[
                        "str_result"]
                    log.app_err(err_message)

                    obj_monitor.dict_ret["str_result"] = err_message
                    break
            else:
                log.app_err(err_message)

                obj_monitor.dict_ret["str_result"] = err_message
                break

        except Exception, e:
            print_trace(e)

            obj_monitor.dict_ret["str_result"] = e
            break

        ret = ERR_SUCCESS
Esempio n. 4
0
def bind_do_worklists(logic_worklists):
    """
    """

    ret = ERR_FAIL
    err_message = ""
    bool_logic_worklist = True  # default success
    status_result = 1

    # logic worklist ---------------
    for obj_database in logic_worklists:

        try:

            desc = "begin to exec worklist---name:%s  time_bind:%s" % (
                obj_database.worklist_name, obj_database.time_bind)
            log.app_info(desc)

            ret, err_message = EventCode.tx_worklist_exec(obj_database)
            ret = EventCode.rx_worklist_exec(ret, err_message)
            if (ret == ERR_SUCCESS):
                ret, err_message = EventCode.wait_worklist_exec_finish(
                    obj_database)
                if (ret != ERR_SUCCESS):
                    log.app_err(err_message)
                    bool_logic_worklist = False
            else:
                log.app_err(err_message)
                bool_logic_worklist = False
                # continue, not break

        except Exception, e:
            print_trace(e)
            bool_logic_worklist = False
Esempio n. 5
0
def dsl_mode_change_ct(cpe):
    """
    in thread
    """

    ret = ERR_FAIL
    cpe_device_type_new = ""

    for nwf in [1]:

        try:
            # ADSL_2LAN  ADSL_4+1 ADSL_4LAN
            # VDSL_4+1 VDSL_4+2 VDSL_4LAN
            cpe_device_type_old = cpe.cpe_property.get_cpe_domain()
            type_ = cpe_device_type_old[:4]
            if (type_ == "ADSL"):
                cpe_device_type_new = "VDSL" + cpe_device_type_old[4:]
            elif (type_ == "VDSL"):
                cpe_device_type_new = "ADSL" + cpe_device_type_old[4:]

            # update
            cpe.cpe_property.set_cpe_domain(cpe_device_type_new)

        except Exception, e:
            print_trace(e)
            break

        ret = ERR_SUCCESS
Esempio n. 6
0
def bind_set_result(cpe, status_result, node_name):
    """
    in thread
    """

    ret = ERR_FAIL
    err_message = ""

    for nwf in [1]:

        #rpc 3; path_name = "InternetGatewayDevice.X_CT-COM_UserInfo.Result"
        dict_data = {
            "ParameterList": [dict(Name=node_name, Value=status_result)]
        }
        obj = MsgWorklistBuild("Auto_SetParameterValue", dict_data)
        obj_database = EventCode.auto_build_bind_physic_worklist(cpe, obj)
        try:
            ret, err_message = EventCode.tx_worklist_exec(obj_database)
            ret = EventCode.rx_worklist_exec(ret, err_message)
            if (ret == ERR_SUCCESS):

                ret, err_message = EventCode.wait_worklist_exec_finish(
                    obj_database)
                if (ret != ERR_SUCCESS):
                    log.app_err(err_message)

                    break
            else:
                log.app_err(err_message)

                break
        except Exception, e:
            print_trace(e)
            break
Esempio n. 7
0
    def do_worklist_download(msg, obj):
        """
        obj = MsgWorklistDownload
        """
        ret = None
        
        # check
        if (not isinstance(obj, MsgWorklistDownload)):
            log.app_err("obj is not MsgWorklistDownload")
            msg_rsp = msg + 2  # fail
            return (ERR_FATAL, msg_rsp)    
        
        msg_rsp = msg + 2 # default, fail                 
        for nwf in [1]:        
            try:            
                ret = Worklist.build_download_msg(obj)
                if (ret != ERR_SUCCESS):
                    break
                    
            except Exception,e:
                print_trace(e)
                
                obj.dict_ret["str_result"] = str(e)                
                ret = ERR_FAIL
                break         

            ret = ERR_SUCCESS
            msg_rsp = msg + 1
Esempio n. 8
0
def auto_exec_worklist(worklist, cpe):
    """
    """
    ret = ERR_FAIL
    err_message = ""

    sn = cpe.get_sn()
    for nwf in [1]:

        # physic worklist ---------------
        obj = MsgWorklistBuild(worklist, {})
        obj_database = EventCode.auto_build_bind_physic_worklist(cpe, obj)
        try:
            ret, err_message = EventCode.tx_worklist_exec(obj_database)
            ret = EventCode.rx_worklist_exec(ret, err_message)
            if (ret == ERR_SUCCESS):

                ret, err_message = EventCode.wait_worklist_exec_finish(
                    obj_database)
                if ret == ERR_SUCCESS:
                    desc = "worklist(%s) execute success." % worklist
                    log.app_info(desc)
                else:
                    log.app_err(err_message)
                    break
            else:
                desc = "worklist(%s) execute fail." % worklist
                log.app_err(desc)
                break
        except Exception, e:
            print_trace(e)
            break

        ret = ERR_SUCCESS
Esempio n. 9
0
def stop_alarm_worklist(cpe, obj_alarm):
    """
    obj_alarm is MsgAlarmInform
    """

    ret = ERR_FAIL
    err_message = ""

    sn = cpe.get_sn()

    for nwf in [1]:

        # physic worklist ---------------
        start_worklist_id = get_id2worklistid(obj_alarm.id_)
        pop_id2worklistid(obj_alarm.id_)

        node_add_object = get_worklist_node_add_object(start_worklist_id)
        if (not node_add_object):
            desc = "node_add_object is None."
            log.app_err(desc)
        pop_worklist_node_add_object(obj_alarm.id_)

        dict_data = {"node_add_object": node_add_object}

        obj = MsgWorklistBuild("Inform_Monitor_Alarm_Stop", dict_data)
        obj_database = EventCode.auto_build_bind_physic_worklist(cpe, obj)

        try:
            ret, err_message = EventCode.tx_worklist_exec(obj_database)
            ret = EventCode.rx_worklist_exec(ret, err_message)
            if (ret == ERR_SUCCESS):

                ret, err_message = EventCode.wait_worklist_exec_finish(
                    obj_database)
                if ret == ERR_SUCCESS:
                    desc = "stop_alarm_worklist success."
                    log.app_info(desc)

                    obj_alarm.dict_ret["str_result"] = desc
                else:
                    log.app_err(err_message)

                    obj_alarm.dict_ret["str_result"] = err_message
                    break
            else:
                log.app_err(err_message)

                obj_alarm.dict_ret["str_result"] = err_message
                break
        except Exception, e:
            print_trace(e)

            obj_alarm.dict_ret["str_result"] = e
            break

        ret = ERR_SUCCESS
Esempio n. 10
0
    def handle_worklist(self, msg, obj):
        """
        obj = MsgWorklistExecute
        """        
        ret = None
        ret_api     = ERR_FAIL
        ret_data    = ""
        ret_obj     = None  # event obj
        ret_out     = ""    # RF ret 
        file_imp    = None
        module_imp  = None

        sn = obj.sn
        desc = "cpe(sn=%s) begin execute worklist(name=%s)" %(
                sn, obj.worklist_name)
        log.app_info(desc)

        for nwf in [1]:
            try:

                # nwf 2014-06-28; DB lost interface_version
                if (not obj.cpe_interface_version):
                    ret_api, ret_data = user.query_cpe_interface_version(sn)
                    if ret_api == ERR_SUCCESS:
                        ret_obj = ret_data
                        ret_out = ret_obj.dict_ret["str_result"]                    
                        obj.cpe_interface_version = ret_out
                    else:
                        desc = "query CPE interface version fail."
                        obj.dict_ret["str_result"] = desc
                        break
                    
                ret = self.check_dir_file(obj)
                if (ret != ERR_SUCCESS):
                    break                                

                # nwf 2014-06-27;  use full path, not sys.path[0] + module name
                name_imp = self.exec_script_modulename
                file_imp, imppath, description = imp.find_module(name_imp, 
                                                                [self.exec_script_dir])
                module_imp =imp.load_module(name_imp, file_imp, imppath, description)                                
                entry = worklistcfg.DOMAIN_SCRIPT_FILE_ENTRY                          
                # entry (eg test_script(obj)
                x = "ret= %s.%s(obj)" %("module_imp", entry) 

                desc = "cpe(sn=%s) execute worklist(name=%s)" %(obj.sn, obj.worklist_name)
                log.app_info(desc)
        
                exec x
                
            except Exception,e:
                print_trace(e)            
                ret = ERR_FAIL
                obj.dict_ret["str_result"] = str(e)                    
                break              
            finally:
Esempio n. 11
0
def handle_agent(request):
    """
    request = http.Request
    """    

    try:
        Worklist.dispatch_agent(request)        
    
    except Exception,e:
        print_trace(e)
Esempio n. 12
0
def process_operator_eventcodes(eventcodes, cpe):
    """
    in thread
    """
    ret = ERR_FAIL
    user_name = None
    user_id = None

    try:

        # nwf 2013-05-21; copy soap inform, maybe overwrite(0-boot + x_ct_com_bind in one inform)
        # step1:backup data
        cpe_operator = cpe.cpe_property.get_cpe_operator()
        soap_inform = cpe.cpe_soap.get_soap_inform()
        ParameterList = soap_inform.result.ParameterList
        for para in ParameterList:

            # ct
            if (para.Name == "InternetGatewayDevice.X_CT-COM_UserInfo.UserName"
                ):
                user_name = para.Value

            if (para.Name == "InternetGatewayDevice.X_CT-COM_UserInfo.UserId"):
                user_id = para.Value

            # cu
            if (para.Name == "InternetGatewayDevice.X_CU_UserInfo.UserName"):
                user_name = para.Value

            if (para.Name == "InternetGatewayDevice.X_CU_UserInfo.UserId"):
                user_id = para.Value

        # sys operator eventcode first, then user
        for eventcode in eventcodes:

            log.app_info("cpe(sn=%s), eventcode=%s" %
                         (cpe.get_sn(), eventcode))

            if (eventcode in [
                    "X CT-COM BIND", "X CT-COM DSLMODECHANGE", "X CU BIND"
            ]):
                if ("X CT-COM BIND" in eventcode):
                    ret = bind_ct(cpe, user_name, user_id)
                elif ("X CT-COM DSLMODECHANGE" in eventcode):
                    ret = dsl_mode_change_ct(cpe)
                elif ("X CU BIND" in eventcode):
                    ret = bind_cu(cpe, user_name, user_id)

            else:
                ret = process_user_operator_eventcode(eventcode, cpe)

    except Exception, e:
        print_trace(e)
Esempio n. 13
0
def accountchange_ct(cpe):
    """
    """

    ret = ERR_FAIL
    err_message = ""

    sn = cpe.get_sn()

    for nwf in [1]:

        # physic worklist ---------------
        password = random.randrange(10000000, 99999999)
        password = "******" + str(password)

        dict_data = {
            "ParameterList": [
                dict(
                    Name=
                    "InternetGatewayDevice.DeviceInfo.X_CT-COM_TeleComAccount.Enable",
                    Value="1"),
                dict(
                    Name=
                    "InternetGatewayDevice.DeviceInfo.X_CT-COM_TeleComAccount.Password",
                    Value=password)
            ]
        }
        obj = MsgWorklistBuild("Auto_SetParameterValue", dict_data)
        obj_database = EventCode.auto_build_bind_physic_worklist(cpe, obj)
        try:
            ret, err_message = EventCode.tx_worklist_exec(obj_database)
            ret = EventCode.rx_worklist_exec(ret, err_message)
            if (ret == ERR_SUCCESS):

                ret, err_message = EventCode.wait_worklist_exec_finish(
                    obj_database)
                if ret == ERR_SUCCESS:
                    log.app_info(
                        "update InternetGatewayDevice.DeviceInfo.X_CT-COM_TeleComAccount.Password success: %s"
                        % password)
                else:
                    log.app_err(err_message)

                    break
            else:
                log.app_err(err_message)

                break
        except Exception, e:
            print_trace(e)
            break

        ret = ERR_SUCCESS
Esempio n. 14
0
def test():

    try:                
        ip = worklistcfg.HTTP_IP
        port = worklistcfg.HTTP_PORT
        
        g_webserver=WorklistServer(port)

        log.app_info("worklist (ip=%s, port=%s) start." %(ip, port))        
        g_webserver.start()
        
    except Exception,e:
        print_trace(e)
Esempio n. 15
0
def bootstrap_ct(cpe):
    """
    in thread
    """

    ret = ERR_FAIL
    err_message = ""

    sn = cpe.get_sn()

    for nwf in [1]:

        # nwf 2014-06-16; user config
        #update_interface_version(cpe)

        # 重置双向的DIGEST认证账号和电信维护账号密码  --added by lana 20131209
        ret = reset_digest_account_and_telecom_account_ct(cpe)
        if ret != ERR_SUCCESS:
            break

        # physic worklist ---------------
        obj = MsgWorklistBuild("Auto_GetRPCMethods", {})
        obj_database = EventCode.auto_build_bind_physic_worklist(cpe, obj)
        try:
            ret, err_message = EventCode.tx_worklist_exec(obj_database)
            ret = EventCode.rx_worklist_exec(ret, err_message)
            if (ret == ERR_SUCCESS):

                ret, err_message = EventCode.wait_worklist_exec_finish(
                    obj_database)
                if ret == ERR_SUCCESS:
                    desc = "worklist(Auto_GetRPCMethods) execute success."
                    log.app_info(desc)
                else:
                    log.app_err(err_message)

                    break
            else:
                desc = "worklist(Auto_GetRPCMethods) execute fail."
                log.app_err(desc)

                break
        except Exception, e:
            print_trace(e)
            break

        ret = ERR_SUCCESS
Esempio n. 16
0
def process_ct_eventcodes(eventcodes, cpe):
    """
    in thread
    """

    ret = ERR_FAIL
    user_name = None
    user_id = None

    try:

        # nwf 2013-05-21; copy soap inform, maybe overwrite(0-boot + x_ct_com_bind in one inform)
        # step1:backup data
        cpe_operator = cpe.cpe_property.get_cpe_operator()
        soap_inform = cpe.cpe_soap.get_soap_inform()
        ParameterList = soap_inform.result.ParameterList
        for para in ParameterList:

            if (para.Name == "InternetGatewayDevice.X_CT-COM_UserInfo.UserName"
                ):
                user_name = para.Value

            if (para.Name == "InternetGatewayDevice.X_CT-COM_UserInfo.UserId"):
                user_id = para.Value

        # step2:do eventcodes in one inform
        for eventcode in eventcodes:

            log.app_info("cpe(sn=%s), eventcode=%s" %
                         (cpe.get_sn(), eventcode))

            # nwf 2013-05-21; skip eventcode fail
            if ("0 BOOTSTRAP" in eventcode):
                ret = bootstrap_ct(cpe)

            elif ("X CT-COM BIND" in eventcode):
                ret = bind_ct(cpe, user_name, user_id)

            elif ("X CT-COM ACCOUNTCHANGE" in eventcode):
                ret = accountchange_ct(cpe)

            elif ("X CT-COM DSLMODECHANGE" in eventcode):
                ret = dsl_mode_change_ct(cpe)

    except Exception, e:
        print_trace(e)
Esempio n. 17
0
    def run(self):
        from worklist import Worklist

        ret = None
        msg = self.msg
        obj = self.obj
        msg_rsp = msg + 2  # default

        # start log
        log_dir = self.log_path   
        log.start_only_1file(name=obj.sn, file_name=obj.sn, 
                            directory=log_dir, level="DebugWarn")  
        log.set_file_id(testcase_name="worklist")


        for nwf in [1]:
            try:                
                msg_rsp = self.handle_worklist(msg, obj)
            except Exception,e:  
                print_trace(e)                 
Esempio n. 18
0
def process_user_operator_eventcode(eventcode, cpe):
    """
    """
    ret = ERR_FAIL
    err_message = ""

    try:

        cpe_operator = cpe.cpe_property.get_cpe_operator()
        interface_version = cpe.cpe_property.get_cpe_interface_version()
        interface_version = interface_version.lower()
        eventcode_map = CpeOperator.get_operator_eventcode_map(
            cpe_operator, interface_version)
        dict_worklist = eval(eventcode_map)

        worklist = dict_worklist.get(eventcode)
        if (worklist):
            ret = auto_exec_worklist(worklist, cpe)

    except Exception, e:
        print_trace(e)
Esempio n. 19
0
def update_interface_version(cpe):
    """
    0 boot need update AUTO version
    """

    ret = ERR_FAIL
    err_message = ""

    sn = cpe.get_sn()

    for nwf in [1]:

        # physic worklist ---------------
        obj = MsgWorklistBuild("Auto_UpdateInterfaceVersion", {})
        obj_database = EventCode.auto_build_bind_physic_worklist(cpe, obj)
        try:
            ret, err_message = EventCode.tx_worklist_exec(obj_database)
            ret = EventCode.rx_worklist_exec(ret, err_message)
            if (ret == ERR_SUCCESS):

                ret, err_message = EventCode.wait_worklist_exec_finish(
                    obj_database)
                if ret == ERR_SUCCESS:
                    desc = "worklist(Auto_UpdateInterfaceVersion) execute success."
                    log.app_info(desc)
                else:
                    log.app_err(err_message)

                    break
            else:
                desc = "worklist(Auto_UpdateInterfaceVersion) execute fail."
                log.app_err(desc)

                break
        except Exception, e:
            print_trace(e)
            break

        ret = ERR_SUCCESS
Esempio n. 20
0
    def build_worklist_exec_rsp_rqst(self, obj, msg_rsp):
        """
        obj is MsgWorklistExecute
        """
        ret = ERR_FAIL  # default  
        msg = ""

        desc = "cpe(sn=%s), worklist id=%s, message=%s" %(obj.sn, obj.id_, get_event_desc(msg_rsp))
        log.app_info(desc)

        for nwf in [1]:
            try:         

                obj                 = MsgWorklistExecRsp(obj.id_, obj.sn, msg_rsp, obj.dict_ret)
                
                strio               = StringIO()
                pickle.dump(obj, strio)  
                
                dict1                   = {}
                dict1[KEY_MESSAGE]      = EV_WORKLIST_EXECUTE_RSP_RQST
                dict1[KEY_OBJECT]       = strio.getvalue()                
                dict1[KEY_SN]           = obj.sn                
                dict1[KEY_SENDER]       = KEY_SENDER_WORKLIST
                dict1[KEY_MESSAGE_TYPE] = EVENT_WORKLIST_GROUP
                dict1[KEY_QUEUE]        = QUEUE_WAIT
                dict1[KEY_SEQUENCE]     = get_id("Seq")
                
                msg                 = str(dict1)
        
            except Exception,e:
                msg = e
                print_trace(e)
                
                break
            
            ret = ERR_SUCCESS
Esempio n. 21
0
def set_worklist_status(obj_database, status, desc=""):
    """
    monitor
    """
    worklist_id = obj_database.worklist_id
    obj_database.status = status
    #update_acs_worklist(obj_database, "STATUS", obj_database.status)
    update_acs_worklist_by_id(worklist_id, "STATUS", obj_database.status)

    if (desc):
        insert_ex_acs_worklist_log(worklist_id, obj_database)

    if ((status == WORK_LIST_STATUS_SUCCESS)
            or (status == WORK_LIST_STATUS_FAIL)):

        try:
            event = get_worklist_event(obj_database.id_)
            if (event):
                log.app_info("worklist(id=%s) exec finish." % obj_database.id_)

                event.set()

        except Exception, e:
            print_trace(e)
Esempio n. 22
0
    def tx_worklist_exec(obj_database, timeout=webservercfg.ACS_WAIT_AGENT_WORKLIST_EXEC_RSP_TIMEOUT):    
        """
        in thread 
        obj is MsgWorklist
        """                        

        ret         = ERR_FAIL
        err_message = ""    


        try:                                  

            cls1= obj_database
            strio = StringIO()
            pickle.dump(cls1, strio)    
            v_msg = EV_WORKLIST_EXECUTE_RQST
            
            dict1                   ={}
            dict1[KEY_MESSAGE]      = int(v_msg) 
            dict1[KEY_OBJECT]       = strio.getvalue()    
            dict1[KEY_SN]           = obj_database.sn                                
            dict1[KEY_MESSAGE_TYPE] = EVENT_WORKLIST_GROUP
            dict1[KEY_QUEUE]        = QUEUE_WAIT
            dict1[KEY_SENDER]       = KEY_SENDER_ACS  
            dict1[KEY_SEQUENCE]     = get_id("Seq")

            msg = str(dict1)
            
            url = "http://%s:%s%s" %(webservercfg.AGENT_HTTP_IP, webservercfg.AGENT_HTTP_PORT, webservercfg.ACS2AGENT_PAGE)
            httpclient1 = HttpClient(url, timeout)             

            ret, err_message = httpclient1.send_message(msg)  
                    
        except Exception, e:
            print_trace(e) 
            err_message = e
Esempio n. 23
0
class Database(object):
    """
    """    
        
    def __init__(self, 
                    driver          = webservercfg.DB_DRIVER, 
                    server          = webservercfg.DB_SERVER, 
                    port            = webservercfg.DB_PORT,
                    database        = webservercfg.DB_DATABASE, 
                    uid             = webservercfg.DB_UID, 
                    pwd             = webservercfg.DB_PWD,                      
                    charset         = webservercfg.DB_CHARSET):
        """
        
        """
        self.driver         = driver
        self.server         = server 
        self.port           = port
        self.database       = database
        self.uid            = uid
        self.pwd            = pwd                
        self.charset        = charset
        
        self.conn = pyodbc.connect( driver          = self.driver,
                                    server          = self.server, 
                                    port            = self.port,
                                    database        = self.database,
                                    uid             = self.uid,
                                    pwd             = self.pwd,                                                                         
                                    charset         = self.charset,
                                    autocommit      = True)  
        self.cur = self.conn.cursor()                                            


    # auto        
    def __del__(self):
        """
        """
        try:
            self.cur.close()
        except Exception,e:
            print_trace(e)        

        try:
            self.conn.close()
        except Exception,e:
            print_trace(e) 
Esempio n. 24
0
                print_trace(e) 
                dict1  = {}

            dict1[KEY_MESSAGE]      = msg_rsp
            dict1[KEY_OBJECT]       = strio.getvalue()                  
            dict1[KEY_SENDER]       = KEY_SENDER_WORKLIST  

            str_dict_msg = str(dict1)
            
            Worklist.request_write(request, str_dict_msg)
            UsersMsgSeq.save_user_rsp_msg(seq, str_dict_msg) 
            
            ret = ERR_SUCCESS           
            
        except Exception,e:
            print_trace(e)                
        
        return ret 


    @staticmethod    
    def process_user_message_seq_exist(request, msg):
        """              
        """  

        Worklist.request_write(request, msg)
                
        return None 


    @staticmethod        
Esempio n. 25
0
    def build_download_msg(obj):
        """
        obj = MsgWorklistDownload
        """
        
        ret         = ERR_SUCCESS  # default
        ret_api     = None
        obj.cpe_interface_versions = []  # clear


        for nwf in [1]:
        
            try:
                root_dir = worklistcfg.SCRIPT_ROOT_DIR  # tr069v3\lib\worklist\operator

                operator = obj.operator
                # tr069v3\lib\worklist\operator\CT
                dir_operator = os.path.join(root_dir, operator)  
                ret_api = os.path.isdir(dir_operator)
                if (ret_api == False):
                    desc = "%s is not dir in worklist server." %(dir_operator)
                    obj.dict_ret["str_result"] = desc
                    log.app_err(desc)
                    break               

                # v3.0 + v4.0                                        
                for root_operator,cpe_interface_versions,files_operator in os.walk(dir_operator):

                    # travel interface_versions
                    for cpe_interface_version in cpe_interface_versions:                     

                        # tr069v3\lib\worklist\operator\CT\v3.0
                        dir_interface_version = os.path.join(dir_operator, cpe_interface_version)                

                        # save --------
                        cls_cpe_interface_version = MsgWorklistCpeInterfaceVersion(cpe_interface_version)
                        obj.cpe_interface_versions.append(cls_cpe_interface_version)
                            
                        # tr069v3\lib\worklist\operator\CT\v3.0\business
                        dir_business = os.path.join(dir_interface_version, worklistcfg.BUSINESS_DOMAINS)  
                        ret_api = os.path.isdir(dir_business)
                        if (ret_api == False):
                            desc = "%s is not dir in worklist server." %(dir_business)
                            obj.dict_ret["str_result"] = desc
                            log.app_err(desc)
                            break 
                            
                        # travel domain
                        for root_domain,dirs_domain,files_domain in os.walk(dir_business):
                        
                            for dir_domain in dirs_domain: 

                                if (dir_domain in ["ADSL"]):
                                    # "ADSL is debug dir"
                                    continue

                                # save --------
                                cls_domain = MsgWorklistDomain(name=dir_domain)
                                cls_cpe_interface_version.domains.append(cls_domain)


                                # travel cpe device type
                                path_domain = os.path.join(root_domain, dir_domain)
                                for root_worklist,dirs_worklist,files_worklist in os.walk(path_domain):

                                    for dir_worklist in dirs_worklist:
                                    
                                        # E:\____python\tr069\TR069_BS2_nwf\TR069\lib\worklists\operator\CT\v3.0\business\ADSL_2LAN\INTERNET_PPPoE_Disable
                                        worklist_name= dir_worklist
                                        dir_worklist = os.path.join(root_domain, dir_domain, worklist_name)     

                                        # E:\____python\tr069\TR069_BS2_nwf\TR069\lib\worklists\operator\CT\v3.0\business\ADSL_2LAN\INTERNET_PPPoE_Disable\data.py                         
                                        file_data = os.path.join(dir_worklist, 
                                                                worklistcfg.SCRIPT_DATA_FILE_NAME+".py")  
                                        ret_api = os.path.isfile(file_data)
                                        if (ret_api == False):
                                            desc = "%s is not file in worklist server." %(file_data)
                                            obj.dict_ret["str_result"] = desc
                                            log.app_err(desc)
                                            break                                        
               
                                        # save --------
                                        cls_datafile = MsgWorklistFile(worklist_name)
                                        cls_domain.wl_datafiles.append(cls_datafile)

                                        path1 = os.path.join(root_worklist, worklist_name)
                                        sys.path.insert(0, path1)
                                        import data
                                        dict_data = str(data.WORKLIST_ARGS)
                                        sys.path.pop(0)                                
                                        cls_datafile.dict_data = dict_data

                                    # 1 level device
                                    break
                                    
                            #only 1 level(domain)
                            break
                        
                    # only 1 level(operator)
                    break
                    
            except Exception,e:
                print_trace(e)
                ret = ERR_FAIL
Esempio n. 26
0
class Worklist(object):
    """
    """    
    
    def __init__(self):
        """        
        """
        pass
   
   
    @staticmethod
    def set_user_dictmsg(request, user_dictmsg):
        # nwf 2013-03-13 cpe's property upgrade to request's
        request.user_dictmsg = user_dictmsg
    @staticmethod
    def get_user_dictmsg(request):
        return request.user_dictmsg     
   
   
    # ---------------------------  user msg entry -------------- 
    @staticmethod    
    def dispatch_agent(request):    
        """
        request = twisted.web.server.Request user
        """  
        ret         = ERR_FAIL  # default
        ret_api     = None


        for nwf in [1]:

            # dict in?
            try:
                body = request.content.read()
                dict1 = eval(body)
            except Exception,e:
                log.app_err("request content read, isn't a dict(%s)." %(e))
                break

            # save
            Worklist.set_user_dictmsg(request, dict1)            

            # have message ?
            v_msg = dict1.get(KEY_MESSAGE)
            if (not v_msg):
                log.app_err("dict KEY_MESSAGE missing(%s)." %(KEY_MESSAGE))
                break    
                
            ip = request.transport.client[0]
            port = request.transport.client[1]
            log.app_info("receive user(ip=%s, port=%s) message=%s" %(ip, port, get_event_desc(v_msg))) 

            # have message sequence ?
            v_seq = dict1.get(KEY_SEQUENCE)
            if (not v_seq):
                log.app_err("dict KEY_SEQUENCE missing(%s)." %(KEY_SEQUENCE))
                break  

            sender = dict1.get(KEY_SENDER, "")
            log.app_info("receive user(ip=%s, port=%s) sender=%s, sequence=%s" %(ip, port, sender, v_seq))
            ret_api,msg = UsersMsgSeq.is_user_message_seq_exist(v_seq)
            if (ret_api):   
                log.app_err("receive user(ip=%s, port=%s) sequence=%s is exist." %(ip, port, v_seq))                
                Worklist.process_user_message_seq_exist(request, msg)
                break  

            # have obj?   
            v_obj = dict1.get(KEY_OBJECT)
            if (not v_obj):
                log.app_err("dict KEY_OBJECT missing(%s)." %(KEY_OBJECT))
                break
            try:
                strio = StringIO(v_obj)  
                obj = pickle.load(strio)
            except Exception,e:
                log.app_err("dict KEY_OBJECT pick load fail.")
                break                
            
            # dispatch
            try:
                msg_group = int(v_msg) & 0xFF00
                if (msg_group == EVENT_WORKLIST_GROUP):                
                    ret = Worklist.handle_msg(request, v_msg, obj)

                elif (msg_group == EVENT_QUERY_GROUP):                
                    ret = Worklist.process_query(request, v_msg, obj)
                    
                else:
                    desc = "user message group(=%d) not support." %msg_group
                    log.app_err(desc)
                    break
            except Exception,e:
                print_trace(e)
                break
Esempio n. 27
0
    def check_dir_file(self, obj):
        """
        obj(MsgWorklistExecute)  is dir[domain] + file[worklist name] exist?
        """        
        
        ret = ERR_FAIL
        ret_api = None
        script_root_dir = worklistcfg.SCRIPT_ROOT_DIR

        desc = "cpe(sn=%s, cpe device type=%s) begin search worklist(name=%s)" %(
                    obj.sn, obj.domain, obj.worklist_name)
        log.app_info(desc)


        for nwf in [1]: 
            try:
                dir_root = script_root_dir  # tr069v3\lib\worklist\operator
                ret_api = os.path.isdir(dir_root)
                if (ret_api == False):
                    desc = "%s is not dir in worklist server." %(dir_root)
                    obj.dict_ret["str_result"] = desc
                    log.app_err(desc)
                    break

                operator = obj.operator
                # tr069v3\lib\worklist\operator\CT
                dir_operator = os.path.join(dir_root, operator)  
                ret_api = os.path.isdir(dir_operator)
                if (ret_api == False):
                    desc = "%s is not dir in worklist server." %(dir_operator)                    
                    log.app_err(desc)
                    desc = u"cpe operator=%s 不支持(支持的有 CT CU)." %operator
                    obj.dict_ret["str_result"] = desc
                    break


                # V3.0 or V4.0?
                cpe_interface_version = obj.cpe_interface_version
                dir_interface_version = os.path.join(dir_operator, cpe_interface_version)
                ret_api = os.path.isdir(dir_interface_version)
                if (ret_api == False):
                    desc = "%s is not dir in worklist server." %(dir_interface_version)                    
                    log.app_err(desc)
                    desc = u"CPE operator=%s, interface version=%s 不支持." %(
                            operator, cpe_interface_version)
                    obj.dict_ret["str_result"] = desc
                    break 


                # tr069v3\lib\worklist\operator\CT\V3.0\business
                dir_business = os.path.join(dir_interface_version, worklistcfg.BUSINESS_DOMAINS)  
                ret_api = os.path.isdir(dir_business)
                if (ret_api == False):
                    desc = "%s is not dir in worklist server." %(dir_business)
                    obj.dict_ret["str_result"] = desc
                    log.app_err(desc)
                    break                    

                domain = obj.domain
                # tr069v3\lib\worklist\operator\CT\V3.0\business\ADSL
                dir_domain = os.path.join(dir_business, domain)
                ret_api = os.path.isdir(dir_domain)
                if (ret_api == False):
                    desc = "%s is not dir in worklist server." %(dir_domain)                    
                    log.app_err(desc)
                    desc = u"CPE device type=%s 不支持." %domain
                    obj.dict_ret["str_result"] = desc
                    break                                             


                # nwf 2013-07-02; support _COMMON(Auto)
                desc = ""
                
                dir_system = os.path.join(dir_interface_version, worklistcfg.SYSTEM_DOMAINS)
                for dir_domain in [dir_domain, dir_system]:

                    # nwf 2013-04-10 ; support to pyc(publish)
                    worklist_name= obj.worklist_name
                    # tr069v3\lib\worklist\operator\CT\V3.0\business\ADSL
                    exec_script_dir = os.path.join(dir_domain, worklist_name)
                    file1 = os.path.join(exec_script_dir, worklistcfg.SCRIPT_FILE_NAME+".py")
                    ret_api = os.path.isfile(file1)
                    if (ret_api == False):
                        # retry
                        file2 = os.path.join(exec_script_dir, worklistcfg.SCRIPT_FILE_NAME + ".pyc")
                        ret_api = os.path.isfile(file2)
                        if (ret_api == False):                                    
                            desc += "warning:(%s) or (%s) is not file in worklist server.\n" %(file1, file2)                            
                            log.app_err(desc)
                            desc = u"CPE worklist name=%s 不支持." %worklist_name
                            obj.dict_ret["str_result"] = desc
                        else:
                            # success
                            break
                    else:
                        # success
                        break

                if (ret_api == False):
                    break
                    

                # save E:\____python\tr069\TR069_BS2_nwf\TR069\lib\worklists\operator\CT\v3.0\business\ADSL_2LAN\QoS_DSCP
                self.exec_script_dir =exec_script_dir   
                # script.py             
                exec_script_modulename = worklistcfg.SCRIPT_FILE_NAME   # no .py     
                self.exec_script_modulename = exec_script_modulename                                     
                
            except Exception,e:
                print_trace(e)   
                
                obj.dict_ret["str_result"] = str(e)
                break

            desc = "cpe(sn=%s, cpe device type=%s) search worklist(name=%s) success." %(obj.sn, obj.domain, obj.worklist_name)
            log.app_info(desc)                
            ret = ERR_SUCCESS
Esempio n. 28
0
def reset_digest_account_and_telecom_account_cu(cpe):
    """
    重置联通双向的DIGEST认证账号和终端维护账号密码
    """

    ret = ERR_FAIL
    err_message = ""

    for i in [1]:
        # 新的双向的DIGEST认证账号的生成规则为:old+8为随机数
        user_name = get_random_8str(cpe.cpe_property.get_cpe2acs_loginname())
        password = get_random_8str(
            cpe.cpe_property.get_cpe2acs_loginpassword())
        connection_request_user_name = get_random_8str(
            cpe.cpe_property.get_acs2cpe_loginname())
        connection_request_password = get_random_8str(
            cpe.cpe_property.get_acs2cpe_loginpassword())

        # 新的电信维护账号密码的生成规则为 “cutelecomadmin” + 8位随机数
        tele_com_account_password = get_random_8str("cuadmin")

        # 组建所有要设置的节点参数
        dict_data = {
            "ParameterList": [
                dict(Name="InternetGatewayDevice.ManagementServer.Username",
                     Value=user_name),
                dict(Name="InternetGatewayDevice.ManagementServer.Password",
                     Value=password),
                dict(
                    Name=
                    "InternetGatewayDevice.ManagementServer.ConnectionRequestUsername",
                    Value=connection_request_user_name),
                dict(
                    Name=
                    "InternetGatewayDevice.ManagementServer.ConnectionRequestPassword",
                    Value=connection_request_password),
                dict(Name=
                     "InternetGatewayDevice.X_CU_Function.Web.AdminPassword",
                     Value=tele_com_account_password)
            ]
        }
        # 组建工单消息,下发工单执行命令
        obj = MsgWorklistBuild("Auto_SetParameterValue", dict_data)
        obj_database = EventCode.auto_build_bind_physic_worklist(cpe, obj)
        try:
            ret, err_message = EventCode.tx_worklist_exec(obj_database)
            ret = EventCode.rx_worklist_exec(ret, err_message)
            if (ret == ERR_SUCCESS):

                ret, err_message = EventCode.wait_worklist_exec_finish(
                    obj_database)
                if ret == ERR_SUCCESS:
                    cpe.cpe_property.set_cpe2acs_loginname(user_name)
                    cpe.cpe_property.set_cpe2acs_loginpassword(password)
                    cpe.cpe_property.set_acs2cpe_loginname(
                        connection_request_user_name)
                    cpe.cpe_property.set_acs2cpe_loginpassword(
                        connection_request_password)

                    log.app_info(
                        "worklist(Auto_SetParameterValue) execute success.")
                    log.app_info(
                        "update InternetGatewayDevice.ManagementServer.Username success: %s"
                        % user_name)
                    log.app_info(
                        "update InternetGatewayDevice.ManagementServer.Password success: %s"
                        % password)
                    log.app_info(
                        "update InternetGatewayDevice.ManagementServer.ConnectionRequestUsername success: %s"
                        % connection_request_user_name)
                    log.app_info(
                        "update InternetGatewayDevice.ManagementServer.ConnectionRequestPassword success: %s"
                        % connection_request_password)
                    log.app_info(
                        "update InternetGatewayDevice.X_CU_Function.Web.AdminPassword success: %s"
                        % tele_com_account_password)
                else:
                    log.app_err(err_message)

                    break
            else:
                desc = "worklist(Auto_SetParameterValue) execute fail."
                log.app_err(desc)

                break
        except Exception, e:
            print_trace(e)
            break

        ret = ERR_SUCCESS
Esempio n. 29
0
def bootstrap_cu(cpe):
    """
    in thread
    """

    ret = ERR_FAIL
    err_message = ""

    sn = cpe.get_sn()

    for nwf in [1]:
        # 获取上网账号和密码
        # 组建工单参数
        dict_data = {}
        # 组建工单消息,下发工单执行命令
        obj = MsgWorklistBuild("Auto_GetPPPConnectionAccount", dict_data)
        obj_database = EventCode.auto_build_bind_physic_worklist(cpe, obj)
        try:
            ret, err_message = EventCode.tx_worklist_exec(obj_database)
            ret = EventCode.rx_worklist_exec(ret, err_message)
            if (ret == ERR_SUCCESS):

                ret, err_message = EventCode.wait_worklist_exec_finish(
                    obj_database)
                if ret == ERR_SUCCESS:
                    desc = "worklist(Auto_GetPPPConnectionAccount) execute success."
                    log.app_info(desc)
                else:
                    log.app_err(err_message)
                    # 忽略查询结果
                    # break
            else:
                desc = "worklist(Auto_GetPPPConnectionAccount) execute fail."
                log.app_err(desc)

                break
        except Exception, e:
            print_trace(e)
            break

        # physic worklist ---------------
        obj = MsgWorklistBuild("Auto_GetRPCMethods", {})
        obj_database = EventCode.auto_build_bind_physic_worklist(cpe, obj)
        try:
            ret, err_message = EventCode.tx_worklist_exec(obj_database)
            ret = EventCode.rx_worklist_exec(ret, err_message)
            if (ret == ERR_SUCCESS):

                ret, err_message = EventCode.wait_worklist_exec_finish(
                    obj_database)
                if ret == ERR_SUCCESS:
                    desc = "worklist(Auto_GetRPCMethods) execute success."
                    log.app_info(desc)
                else:
                    log.app_err(err_message)

                    break
            else:
                desc = "worklist(Auto_GetRPCMethods) execute fail."
                log.app_err(desc)

                break
        except Exception, e:
            print_trace(e)
            break