Не могу понять, почему сценарий не идет дальше - PullRequest
0 голосов
/ 19 мая 2018

У меня есть эта функция с именем zms_add_bridge, которая вызывает функцию с именем xmlbuilder.xmlbuilder создает глобальную переменную с именем xml и заполняет ее материалом.

Когда вызывается zms_add_bridge, он печатает «здесь», чтобы сказать, что он по крайней мере так далеко в сценарии.Затем он вызывает xmlbuilder, который печатает «xml1» вместе с выводом xml, чтобы сказать, что он по крайней мере зашел так далеко в скрипте.

Проблема в том, что как только xmlbuilder завершает работу и возвращается к zms_add_bridgeсценарий, кажется, умирает.xml - глобальная переменная, поэтому она должна печатать «да», но она даже не печатает «нет».

Я даже пытался return xml в конце xmlbuilder, чтобы посмотреть, будет ли этоработает, но это не сработало (и даже до сих пор, это было бы излишним, поскольку xml было объявлено глобально, не так ли?)

Есть какие-нибудь подсказки?Я потерян.

def xmlbuilder(requestType,xbra):
        global xmlbuild
        global xmlbuild__request
        global xmlbuild__requestElement
        global xmlbuild__requestElementAttribute
        global xml
        xmlbuild = etree.Element("OSS", attrib={"{"+xsi+"}schemaLocation":schema}, nsmap={'xsi':xsi, None:xmlns})
        xmlbuild__request = etree.SubElement(xmlbuild, "Request")
        etree.SubElement(xmlbuild__request, "RequestType").text = requestType
        etree.SubElement(xmlbuild__request, "RequestMode").text = "online"
        etree.SubElement(xmlbuild__request, "SessionID").text = session_id
        etree.SubElement(xmlbuild__request, "operName").text = apiUser
        etree.SubElement(xmlbuild__request, "Version").text = version
        etree.SubElement(xmlbuild__request, "Overwrite").text = "false"
        xmlbuild__requestElement = etree.SubElement(xmlbuild, "RequestElement")

        for index, data in xbra.items():
                for key in data:
                        xmlbuild__requestElementAttribute = etree.SubElement(xmlbuild__requestElement, "Attribute")
                        etree.SubElement(xmlbuild__requestElementAttribute, "Name").text = "%s" % key
                        etree.SubElement(xmlbuild__requestElementAttribute, "Value").text = "%s" % data[key]
        xml = etree.tostring(xmlbuild, encoding="UTF-8", pretty_print=True, xml_declaration=True)


        if debug >= 1:
                print "\nDEBUG: Generated XML for transmission\n"
                print xml
        print "xml1: " + xml

def zms_add_bridge(fsan,vlanId,maxUnicast,secure):
        if debug >= 3:
                print "\nDEBUG: Function: zms_add_bridge\n"
                print "\nDEBUG: Get GPON parameters of ONT\n"

        xbra = defaultdict(list)
        xbra[1] = {'Filter_Type': 'GponOnuPhysical'}
        xbra[2] = {'Filter_Condition': 'Device_Id=' + device_Handle_Id}
        xbra[3] = {'Filter_Condition': 'serialNoVendorId=ZNTS'}
        xbra[4] = {'Filter_Condition': 'serialNoVendorSpecificHex=' + fsan}

        if debug >= 4:
                print "\nDEBUG: Dictionary\n"
                for index, data in xbra.items():
                        for key in data:
                                print "Index: %s: Key: %s, Value: %s" % (index, key,data[key])

        print "here"
        xmlbuilder("list",xbra)
        if xml:
                print "yes"
        else:
                print "no"

Вывод:

here
xml1: <?xml version='1.0' encoding='UTF-8'?>
<OSS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.zhone.com/OSSXML" xsi:schemaLocation="http://www.zhone.com/OSSXML ossxml.xsd">
  <Request>
    <RequestType>list</RequestType>
    <RequestMode>online</RequestMode>
    <SessionID>0.379081153249641</SessionID>
    <operName>boss</operName>
    <Version>2.5.1</Version>
    <Overwrite>false</Overwrite>
  </Request>
  <RequestElement>
    <Attribute>
      <Name>Filter_Type</Name>
      <Value>GponOnuPhysical</Value>
    </Attribute>
    <Attribute>
      <Name>Filter_Condition</Name>
      <Value>Device_Id=2</Value>
    </Attribute>
    <Attribute>
      <Name>Filter_Condition</Name>
      <Value>serialNoVendorId=ZNTS</Value>
    </Attribute>
    <Attribute>
      <Name>Filter_Condition</Name>
      <Value>serialNoVendorSpecificHex=03739175</Value>
    </Attribute>
  </RequestElement>
</OSS>
...