def test_script(obj): """ """ sn = obj.sn # 取得SN号 DeviceType = "VDSL" # 绑定tr069模板类型.只支持ADSL\LAN\EPON三种 AccessMode = 'PPPoE_Bridged' # WAN接入模式,可选PPPoE_Bridge,PPPoE,DHCP,Static rollbacklist = [] # 存储工单失败时需回退删除的实例.目前缺省是不开启回退 # 初始化日志 obj.dict_ret.update(str_result=u"开始执行工单:%s........\n" % os.path.basename(os.path.dirname(__file__))) # data传参 PVC_OR_VLAN = obj.dict_data.get("PVC_OR_VLAN")[0] # ADSL上行只关心PVC值,LAN和EPON上行则关心VLAN值 X_CT_COM_LanInterface = obj.dict_data.get("X_CT_COM_LanInterface")[0] X_CT_COM_ServiceList = obj.dict_data.get("X_CT_COM_ServiceList")[0] WANEnable_Switch = obj.dict_data.get("WANEnable_Switch")[0] # 对X_CT_COM_LanInterface重新解析,兼容LAN1,lan1格式 ret, X_CT_COM_LanInterface = ParseLANName(X_CT_COM_LanInterface) if ret == ERR_FAIL: info = u'输入的X_CT_COM_LanInterface参数错误' obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + info) info = u"工单:%s执行结束\n" % os.path.basename(os.path.dirname(__file__)) obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + info) return ret # WANDSLLinkConfig节点参数 if PVC_OR_VLAN == "": PVC_OR_VLAN_flag = 0 else: PVC_OR_VLAN_flag = 1 dict_wanlinkconfig = {'Enable':[1, '1'], 'X_CT-COM_Mode':[PVC_OR_VLAN_flag, '2'], 'X_CT-COM_VLAN':[PVC_OR_VLAN_flag, PVC_OR_VLAN]} # WANPPPConnection节点参数 # 注意:X_CT-COM_IPMode节点有些V4版本没有做,所以不能使能为1.实际贝曼工单也是没有下发的 dict_wanpppconnection = {'Enable':[1, '1'], 'ConnectionType':[1, 'PPPoE_Bridged'], 'Name':[0, 'Null'], 'Username':[0, 'Null'], 'Password':[0, 'Null'], 'X_CT-COM_LanInterface':[1, X_CT_COM_LanInterface], 'X_CT-COM_ServiceList':[1, X_CT_COM_ServiceList], 'X_CT-COM_LanInterface-DHCPEnable':[0, 'Null'], 'X_CT-COM_IPMode':[0, 'Null']} # WANIPConnection节点参数 dict_wanipconnection = {} # 开始执行WAN连接开通工单 ret, ret_data = WANSetUP(obj, sn, WANEnable_Switch, DeviceType, AccessMode, PVC_OR_VLAN, dict_wanlinkconfig, dict_wanpppconnection, dict_wanipconnection, rollbacklist=rollbacklist) # 将工单脚本执行结果返回到OBJ的结果中 obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + ret_data) # 如果执行失败,统一调用回退机制(缺省是关闭的) if ret == ERR_FAIL: ret_rollback, ret_data_rollback = rollback(sn, rollbacklist, obj) obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + ret_data_rollback) info = u"工单:%s执行结束\n" % os.path.basename(os.path.dirname(__file__)) obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + info) return ret
def test_script(obj): """ """ sn = obj.sn # 取得SN号 DeviceType = "LAN" # 绑定tr069模板类型.只支持ADSL\LAN\EPON三种 rollbacklist = [] # 存储工单失败时需回退删除的实例.目前缺省是不开启回退 # 初始化日志 obj.dict_ret.update(str_result=u"开始执行工单:%s........\n" % os.path.basename(os.path.dirname(__file__))) # data传参 PVC_OR_VLAN1 = obj.dict_data.get("PVC_OR_VLAN1")[ 0] # ADSL上行只关心PVC值,LAN和EPON上行则关心VLAN值 Username = obj.dict_data.get("Username")[0] Password = obj.dict_data.get("Password")[0] X_CT_COM_LanInterface1 = obj.dict_data.get("X_CT_COM_LanInterface1")[0] X_CT_COM_ServiceList1 = obj.dict_data.get("X_CT_COM_ServiceList1")[0] PVC_OR_VLAN2 = obj.dict_data.get("PVC_OR_VLAN2")[ 0] # ADSL上行只关心PVC值,LAN和EPON上行则关心VLAN值 X_CT_COM_MulticastVlan = obj.dict_data.get("X_CT_COM_MulticastVlan")[ 0] # 新增公共组播VLAN的下发 # 强制将使能动作与参数一起下发 WANEnable_Switch = '1' AccessMode1 = 'PPPoE' # WAN接入模式,可选PPPoE_Bridge,PPPoE,DHCP,Static AccessMode2 = 'PPPoE_Bridged' # WAN接入模式,可选PPPoE_Bridge,PPPoE,DHCP,Static # 对X_CT_COM_LanInterface重新解析,兼容LAN1,lan1格式 ret, X_CT_COM_LanInterface1 = ParseLANName(X_CT_COM_LanInterface1) if ret == ERR_FAIL: info = u'输入的X_CT_COM_LanInterface参数错误' obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + info) info = u"工单:%s执行结束\n" % os.path.basename(os.path.dirname(__file__)) obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + info) return ret # IPTV节点参数 dict_root = { 'IGMPEnable': [1, '1'], 'ProxyEnable': [0, 'Null'], 'SnoopingEnable': [0, 'Null'] } # WANDSLLinkConfig节点参数 if PVC_OR_VLAN1 == "": PVC_OR_VLAN1_flag = 0 else: PVC_OR_VLAN1_flag = 1 dict_wanlinkconfig1 = { 'X_CT-COM_Enable': [0, 'Null'], 'X_CT-COM_Mode': [PVC_OR_VLAN1_flag, '2'], 'X_CT-COM_VLANIDMark': [PVC_OR_VLAN1_flag, PVC_OR_VLAN1], 'X_CT-COM_802-1pMark': [1, '0'] } # WANDSLLinkConfig节点参数 if PVC_OR_VLAN2 == "": PVC_OR_VLAN2_flag = 0 else: PVC_OR_VLAN2_flag = 1 dict_wanlinkconfig2 = { 'X_CT-COM_Enable': [0, 'Null'], 'X_CT-COM_Mode': [PVC_OR_VLAN2_flag, '2'], 'X_CT-COM_VLANIDMark': [PVC_OR_VLAN2_flag, PVC_OR_VLAN2], 'X_CT-COM_802-1pMark': [1, '0'] } # WANPPPConnection节点参数 # 注意:X_CT-COM_IPMode节点有些V4版本没有做,所以不能使能为1.实际贝曼工单也是没有下发的 dict_wanpppconnection1 = { 'Enable': [1, '1'], 'ConnectionType': [1, 'IP_Routed'], 'Name': [0, 'Null'], 'Username': [1, Username], 'Password': [1, Password], 'X_CT-COM_LanInterface': [1, X_CT_COM_LanInterface1], 'X_CT-COM_ServiceList': [1, X_CT_COM_ServiceList1], 'X_CT-COM_LanInterface-DHCPEnable': [0, 'Null'], 'X_CT-COM_IPMode': [0, 'Null'], 'X_CT-COM_MulticastVlan': [0, 'Null'] } # WANPPPConnection节点参数 # 注意:X_CT-COM_IPMode节点有些V4版本没有做,所以不能使能为1.实际贝曼工单也是没有下发的 LAN2 = 'InternetGatewayDevice.LANDevice.1.LANEthernetInterfaceConfig.2' # 绑字到LAN2 if X_CT_COM_MulticastVlan == "": X_CT_COM_MulticastVlan_flag = 0 else: X_CT_COM_MulticastVlan_flag = 1 dict_wanpppconnection2 = { 'Enable': [1, '1'], 'ConnectionType': [1, 'PPPoE_Bridged'], 'Name': [0, 'Null'], 'Username': [0, 'Null'], 'Password': [0, 'Null'], 'X_CT-COM_LanInterface': [1, LAN2], 'X_CT-COM_ServiceList': [1, 'OTHER'], 'X_CT-COM_LanInterface-DHCPEnable': [0, 'Null'], 'X_CT-COM_IPMode': [0, 'Null'], 'X_CT-COM_MulticastVlan': [X_CT_COM_MulticastVlan_flag, X_CT_COM_MulticastVlan] } # WANIPConnection节点参数 dict_wanipconnection = {} # 查询或开通PPPoE的IP_Routed上网 ret, ret_data = WANSetUP(obj, sn, WANEnable_Switch, DeviceType, AccessMode1, PVC_OR_VLAN1, dict_wanlinkconfig1, dict_wanpppconnection1, dict_wanipconnection, change_account=0, rollbacklist=rollbacklist) # 将工单脚本执行结果返回到OBJ的结果中 obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + ret_data) # 如果执行失败,统一调用回退机制(缺省是关闭的) if ret == ERR_FAIL: info = u'开通上网失败\n' obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + info) ret_rollback, ret_data_rollback = rollback(sn, rollbacklist, obj) obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + ret_data_rollback) info = u"工单:%s执行结束\n" % os.path.basename(os.path.dirname(__file__)) obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + info) return ret # 开通PPPoE_Bridged的OTHER桥IPTV,并绑定到LAN2 ret, ret_data = IPTVEnable(obj, sn, WANEnable_Switch, DeviceType, AccessMode2, PVC_OR_VLAN2, dict_root, dict_wanlinkconfig2, dict_wanpppconnection2, dict_wanipconnection, change_account=1, rollbacklist=rollbacklist) # 将工单脚本执行结果返回到OBJ的结果中 obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + ret_data) # 如果执行失败,统一调用回退机制(缺省是关闭的) if ret == ERR_FAIL: ret_rollback, ret_data_rollback = rollback(sn, rollbacklist, obj) obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + ret_data_rollback) info = u"工单:%s执行结束\n" % os.path.basename(os.path.dirname(__file__)) obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + info) return ret
def test_script(obj): """ """ sn = obj.sn # 取得SN号 DeviceType = "VDSL" # 绑定tr069模板类型.只支持ADSL\LAN\EPON三种 AccessMode = 'DHCP' # WAN接入模式,可选PPPoE_Bridge,PPPoE,DHCP,Static X_CT_COM_ServiceList = "TR069,INTERNET" # WAN连接的服务模式,和以前的RF统一,写死 zsj 2014-6-26 rollbacklist = [] # 存储工单失败时需回退删除的实例.目前缺省是不开启回退 # 初始化日志 obj.dict_ret.update(str_result=u"开始执行工单:%s........\n" % os.path.basename(os.path.dirname(__file__))) # data传参 PVC_OR_VLAN = obj.dict_data.get("PVC_OR_VLAN")[ 0] # ADSL上行只关心PVC值,LAN和EPON上行则关心VLAN值 X_CT_COM_LanInterface = obj.dict_data.get("X_CT_COM_LanInterface")[0] #X_CT_COM_ServiceList = obj.dict_data.get("X_CT_COM_ServiceList")[0] WANEnable_Switch = obj.dict_data.get("WANEnable_Switch")[0] # 对X_CT_COM_LanInterface重新解析,兼容GUI或RF传参数LAN1,lan1格式 ret, X_CT_COM_LanInterface = ParseLANName(X_CT_COM_LanInterface) if ret == ERR_FAIL: info = u'输入的X_CT_COM_LanInterface参数错误' obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + info) info = u"工单:%s执行结束\n" % os.path.basename(os.path.dirname(__file__)) obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + info) return ret # WANDSLLinkConfig节点参数 if PVC_OR_VLAN == "": PVC_OR_VLAN_flag = 0 else: PVC_OR_VLAN_flag = 1 dict_wanlinkconfig = { 'Enable': [1, '1'], 'X_CT-COM_Mode': [PVC_OR_VLAN_flag, '2'], 'X_CT-COM_VLAN': [PVC_OR_VLAN_flag, PVC_OR_VLAN] } # WANPPPConnection节点参数 # 注意:X_CT-COM_IPMode节点有些V4版本没有做,所以不能使能为1.实际贝曼工单也是没有下发的 LAN1 = 'InternetGatewayDevice.LANDevice.1.LANEthernetInterfaceConfig.1' LAN2 = 'InternetGatewayDevice.LANDevice.1.LANEthernetInterfaceConfig.2' LAN3 = 'InternetGatewayDevice.LANDevice.1.LANEthernetInterfaceConfig.3' LAN4 = 'InternetGatewayDevice.LANDevice.1.LANEthernetInterfaceConfig.4' WLAN1 = 'InternetGatewayDevice.LANDevice.1.WLANConfiguration.1' WLAN2 = 'InternetGatewayDevice.LANDevice.1.WLANConfiguration.2' WLAN3 = 'InternetGatewayDevice.LANDevice.1.WLANConfiguration.3' WLAN4 = 'InternetGatewayDevice.LANDevice.1.WLANConfiguration.4' dict_wanpppconnection = {} # WANIPConnection节点参数 dict_wanipconnection = { 'Enable': [1, '1'], 'ConnectionType': [1, 'IP_Routed'], 'Name': [0, 'Null'], 'NATEnabled': [0, 'Null'], 'AddressingType': [1, 'DHCP'], 'ExternalIPAddress': [0, '10.10.10.10'], 'SubnetMask': [0, '255.255.255.0'], 'DefaultGateway': [0, '10.10.10.1'], 'DNSEnabled': [0, 'Null'], 'DNSServers': [0, '10.10.10.2'], 'X_CT-COM_LanInterface': [1, X_CT_COM_LanInterface], 'X_CT-COM_ServiceList': [1, X_CT_COM_ServiceList] } # 开始执行WAN连接开通工单 ret, ret_data = WANSetUP(obj, sn, WANEnable_Switch, DeviceType, AccessMode, PVC_OR_VLAN, dict_wanlinkconfig, dict_wanpppconnection, dict_wanipconnection, rollbacklist=rollbacklist) # 将工单脚本执行结果返回到OBJ的结果中 obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + ret_data) # 如果执行失败,统一调用回退机制(缺省是关闭的) if ret == ERR_FAIL: ret_rollback, ret_data_rollback = rollback(sn, rollbacklist, obj) obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + ret_data_rollback) info = u"工单:%s执行结束\n" % os.path.basename(os.path.dirname(__file__)) obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + info) return ret
def test_script(obj): """ """ sn = obj.sn # 取得SN号 DeviceType = "GPON" # 绑定tr069模板类型.只支持ADSL\LAN\EPON三种 AccessMode = 'Static' # WAN接入模式,可选PPPoE_Bridge,PPPoE,DHCP,Static rollbacklist = [] # 存储工单失败时需回退删除的实例.目前缺省是不开启回退 # 初始化日志 obj.dict_ret.update(str_result=u"开始执行工单:%s........\n" % os.path.basename(os.path.dirname(__file__))) # data传参 PVC_OR_VLAN = obj.dict_data.get("PVC_OR_VLAN")[0] # ADSL上行只关心PVC值,LAN和EPON上行则关心VLAN值 ExternalIPAddress = obj.dict_data.get("ExternalIPAddress")[0] SubnetMask = obj.dict_data.get("SubnetMask")[0] DefaultGateway = obj.dict_data.get("DefaultGateway")[0] DNSServers = obj.dict_data.get("DNSServers")[0] X_CU_COM_LanInterface = obj.dict_data.get("X_CU_COM_LanInterface")[0] X_CU_COM_ServiceList = obj.dict_data.get("X_CU_COM_ServiceList")[0] WANEnable_Switch = obj.dict_data.get("WANEnable_Switch")[0] # 对X_CU_COM_LanInterface重新解析,兼容LAN1,lan1格式 ret, X_CU_COM_LanInterface = ParseLANName(X_CU_COM_LanInterface) if ret == ERR_FAIL: info = u'输入的X_CU_COM_LanInterface参数错误' obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + info) info = u"工单:%s执行结束\n" % os.path.basename(os.path.dirname(__file__)) obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + info) return ret # X_CU_WANEponLinkConfig节点参数 if PVC_OR_VLAN == "": PVC_OR_VLAN_flag = 0 else: PVC_OR_VLAN_flag = 1 dict_wanlinkconfig = {'X_CU_VLANEnabled':[1, '1'], 'X_CU_802_1p':['0','NULL'], 'X_CU_VLAN':[PVC_OR_VLAN_flag, PVC_OR_VLAN]} # WANPPPConnection节点参数 # 注意:X_CU_IPMode节点有些V4版本没有做,所以不能使能为1.实际贝曼工单也是没有下发的 dict_wanpppconnection = {} # WANIPConnection节点参数 # 注意,贝曼没有下发DNS使能,即隐含的意思是CPE新建实例后DNSEnabled缺省开启 dict_wanipconnection = {'Enable':[1, '1'], 'ConnectionType':[1, 'IP_Routed'], 'Name':[0, 'Null'], 'NATEnabled':[0, 'Null'], 'AddressingType':[1, 'Static'], 'ExternalIPAddress':[1, ExternalIPAddress], 'SubnetMask':[1, SubnetMask], 'DefaultGateway':[1, DefaultGateway], 'DNSEnabled':[0, 'Null'], 'DNSServers':[1, DNSServers], 'X_CU_LanInterface':[1, X_CU_COM_LanInterface], 'X_CU_ServiceList':[1, X_CU_COM_ServiceList]} # 开始执行WAN连接开通工单 ret, ret_data = WANSetUP(obj, sn, WANEnable_Switch, DeviceType, AccessMode, PVC_OR_VLAN, dict_wanlinkconfig, dict_wanpppconnection, dict_wanipconnection, rollbacklist=rollbacklist) # 将工单脚本执行结果返回到OBJ的结果中 obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + ret_data) # 如果执行失败,统一调用回退机制(缺省是关闭的) if ret == ERR_FAIL: ret_rollback, ret_data_rollback = rollback(sn, rollbacklist, obj) obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + ret_data_rollback) info = u"工单:%s执行结束\n" % os.path.basename(os.path.dirname(__file__)) obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + info) return ret
def test_script(obj): """ """ sn = obj.sn # 取得SN号 DeviceType = "VDSL" # 绑定tr069模板类型.只支持ADSL\LAN\EPON三种 AccessMode = 'PPPoE' # WAN接入模式,可选PPPoE_Bridge,PPPoE,DHCP,Static X_CT_COM_ServiceList = "TR069,INTERNET" # WAN连接的服务模式,和以前的RF统一,写死 zsj 2014-6-26 AccessMode_IPTV = "PPPoE_Bridged" rollbacklist = [] # 存储工单失败时需回退删除的实例.目前缺省是不开启回退 # 初始化日志 obj.dict_ret.update(str_result=u"开始执行工单:%s........\n" % os.path.basename(os.path.dirname(__file__))) # data传参 PVC_OR_VLAN = obj.dict_data.get("PVC_OR_VLAN")[ 0] # ADSL上行只关心PVC值,LAN和EPON上行则关心VLAN值 Username = obj.dict_data.get("Username")[0] Password = obj.dict_data.get("Password")[0] X_CT_COM_LanInterface = obj.dict_data.get("X_CT_COM_LanInterface")[0] #X_CT_COM_ServiceList = obj.dict_data.get("X_CT_COM_ServiceList")[0] WANEnable_Switch = obj.dict_data.get("WANEnable_Switch")[0] # X_CT_COM_MulticastVlan = obj.dict_data.get("X_CT_COM_MulticastVlan")[ 0] # 新增公共组播VLAN的下发 # 对X_CT_COM_LanInterface重新解析,兼容GUI或RF传参数LAN1,lan1格式 ret, X_CT_COM_LanInterface = ParseLANName(X_CT_COM_LanInterface) if ret == ERR_FAIL: info = u'输入的X_CT_COM_LanInterface参数错误' obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + info) info = u"工单:%s执行结束\n" % os.path.basename(os.path.dirname(__file__)) obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + info) return ret # WANDSLLinkConfig节点参数 if PVC_OR_VLAN == "": PVC_OR_VLAN_flag = 0 else: PVC_OR_VLAN_flag = 1 dict_wanlinkconfig = { 'Enable': [1, '1'], 'Mode': [PVC_OR_VLAN_flag, '2'], 'VLANIDMark': [PVC_OR_VLAN_flag, PVC_OR_VLAN] } # WANPPPConnection节点参数 # 注意:X_CT-COM_IPMode节点有些V4版本没有做,所以不能使能为1.实际贝曼工单也是没有下发的 LAN1 = 'InternetGatewayDevice.LANDevice.1.LANEthernetInterfaceConfig.1' LAN2 = 'InternetGatewayDevice.LANDevice.1.LANEthernetInterfaceConfig.2' LAN3 = 'InternetGatewayDevice.LANDevice.1.LANEthernetInterfaceConfig.3' LAN4 = 'InternetGatewayDevice.LANDevice.1.LANEthernetInterfaceConfig.4' WLAN1 = 'InternetGatewayDevice.LANDevice.1.WLANConfiguration.1' WLAN2 = 'InternetGatewayDevice.LANDevice.1.WLANConfiguration.2' WLAN3 = 'InternetGatewayDevice.LANDevice.1.WLANConfiguration.3' WLAN4 = 'InternetGatewayDevice.LANDevice.1.WLANConfiguration.4' dict_wanpppconnection = { 'Enable': [1, '1'], 'ConnectionType': [1, 'IP_Routed'], 'Name': [0, 'Null'], 'Username': [1, Username], 'Password': [1, Password], 'X_CT-COM_LanInterface': [1, X_CT_COM_LanInterface], 'X_CT-COM_ServiceList': [1, X_CT_COM_ServiceList], 'X_CT-COM_LanInterface-DHCPEnable': [0, 'Null'] } # WANIPConnection节点参数 dict_wanipconnection = {} # IPTV节点参数 dict_root = { 'IGMPEnable': [1, '1'], 'ProxyEnable': [0, 'Null'], 'SnoopingEnable': [0, 'Null'] } # WANPPPConnection节点参数 # 注意:X_CT-COM_IPMode节点有些V4版本没有做,所以不能使能为1.实际贝曼工单也是没有下发的 LAN2 = 'InternetGatewayDevice.LANDevice.1.LANEthernetInterfaceConfig.2' # 绑字到LAN2 if X_CT_COM_MulticastVlan == "": X_CT_COM_MulticastVlan_flag = 0 else: X_CT_COM_MulticastVlan_flag = 1 dict_wanpppconnection_iptv = { 'Enable': [1, '1'], 'ConnectionType': [1, 'PPPoE_Bridged'], 'Name': [0, 'Null'], 'Username': [0, 'Null'], 'Password': [0, 'Null'], 'X_CT-COM_LanInterface': [1, LAN2], 'X_CT-COM_ServiceList': [1, 'OTHER'], 'X_CT-COM_LanInterface-DHCPEnable': [0, 'Null'], 'X_CT-COM_MulticastVlan': [X_CT_COM_MulticastVlan_flag, X_CT_COM_MulticastVlan] } # WANIPConnection节点参数 dict_wanipconnection_iptv = {} # 开始执行WAN连接开通工单 ret, ret_data = WANSetUP(obj, sn, WANEnable_Switch, DeviceType, AccessMode, PVC_OR_VLAN, dict_wanlinkconfig, dict_wanpppconnection, dict_wanipconnection, change_account=0, rollbacklist=rollbacklist) # 将工单脚本执行结果返回到OBJ的结果中 obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + ret_data) # 如果执行失败,统一调用回退机制(缺省是关闭的) if ret == ERR_FAIL: info = u'开通上网失败\n' obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + info) ret_rollback, ret_data_rollback = rollback(sn, rollbacklist, obj) obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + ret_data_rollback) info = u"工单:%s执行结束\n" % os.path.basename(os.path.dirname(__file__)) obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + info) return ret # 增加IPTV 连接 ret, ret_data = AddAnIPTV(obj, sn, WANEnable_Switch, DeviceType, AccessMode_IPTV, PVC_OR_VLAN, dict_root, dict_wanpppconnection_iptv, dict_wanipconnection_iptv, rollbacklist=rollbacklist) # 将工单脚本执行结果返回到OBJ的结果中 obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + ret_data) # 如果执行失败,统一调用回退机制(缺省是关闭的) if ret == ERR_FAIL: ret_rollback, ret_data_rollback = rollback(sn, rollbacklist, obj) obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + ret_data_rollback) info = u"工单:%s执行结束\n" % os.path.basename(os.path.dirname(__file__)) obj.dict_ret.update(str_result=obj.dict_ret["str_result"] + info) return ret