GENI-NSF / geni-tools

Omni, stitcher, GCF sample aggregate manager, and other GENI tools.
Other
11 stars 15 forks source link

stitcher: combined manifest sometime missing hops #323

Closed ahelsing closed 9 years ago

ahelsing commented 9 years ago

Sometimes the combined manifest is missing hops. In at least 1 case, it is the ION AM hops. The circuit is up and works, just the manifest appears to have an issue.

Imported from trac ticket #323, created by ahelsing on 07-16-2013 at 11:57, last modified: 08-13-2013 at 17:36

ahelsing commented 9 years ago

ahelsing attached log-ig-gpo-ig-utah.txt on 07-17-2013 at 15:04

ahelsing commented 9 years ago

The stitching extension from a manifest where the circuit works, but the ION AM hops are missing from the combined manifest:

        <stitching lastUpdateTime="2013-07-16T11:34:49.472Z" xmlns="http://hpn.east.isi.edu/rspec/ext/stitch/0.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://hpn.east.isi.edu/rspec/ext/stitch/0.1/ http://hpn.east.isi.edu/rspec/ext/stitch/0.1/stitch-schema.xsd">
                <path id="link">
                        <globalId>
        ion.internet2.edu-22931
                        </globalId>
                        <lifetime id="ion.internet2.edu-22931">
                                <start type="xgc">
          2013-07-25T00:00:00.000Z
                                </start>
                                <end type="xgc">
          2013-07-16T11:34:49.472Z
                                </end>
                        </lifetime>
                        <hop id="1">     
                                <link id="urn:publicid:IDN+instageni.gpolab.bbn.com+interface+procurve2:5.24">
                                        <trafficEngineeringMetric>
                                                10
                                        </trafficEngineeringMetric>
                                        <capacity>
                                                100000
                                        </capacity>
                                        <switchingCapabilityDescriptor>
                                                <switchingcapType>
                                                        l2sc
                                                </switchingcapType>
                                                <encodingType>
                                                        ethernet
                                                </encodingType>
                                                <switchingCapabilitySpecificInfo>
                                                        <switchingCapabilitySpecificInfo_L2sc>
                                                                <interfaceMTU>
                                                                        9000
                                                                </interfaceMTU>
                                                                <vlanRangeAvailability>
                                                                        3748
                                                                </vlanRangeAvailability>
                                                                <suggestedVLANRange>
                                                                        3748
                                                                </suggestedVLANRange>
                                                                <vlanTranslation>
                                                                        false
                                                                </vlanTranslation>
                                                        </switchingCapabilitySpecificInfo_L2sc>
                                                </switchingCapabilitySpecificInfo>
                                        </switchingCapabilityDescriptor>
                                </link>
                                <nextHop>
                                        2
                                </nextHop>
                        </hop>
                        <hop id="4">
                                <link id="urn:publicid:IDN+emulab.net+interface+procurve-pgeni-atla:3.21">
                                        <trafficEngineeringMetric>
                                                10
                                        </trafficEngineeringMetric>
                                        <capacity>
                                                100000
                                        </capacity>
                                        <switchingCapabilityDescriptor>
                                                <switchingcapType>
                                                        l2sc
                                                </switchingcapType>
                                                <encodingType>
                                                        ethernet
                                                </encodingType>
                                                <switchingCapabilitySpecificInfo>
                                                        <switchingCapabilitySpecificInfo_L2sc>
                                                                <interfaceMTU>
                                                                        9000
                                                                </interfaceMTU>
                                                                <vlanRangeAvailability>
                                                                        874
                                                                </vlanRangeAvailability>
                                                                <suggestedVLANRange>
                                                                        874
                                                                </suggestedVLANRange>
                                                                <vlanTranslation>
                                                                        false
                                                                </vlanTranslation>
                                                        </switchingCapabilitySpecificInfo_L2sc>
                                                </switchingCapabilitySpecificInfo>
                                        </switchingCapabilityDescriptor>
                                </link>
                                <nextHop>
                                        5
                                </nextHop>
                        </hop>
                        <hop id="5">
                                <link id="urn:publicid:IDN+emulab.net+interface+procurveA:3.19">
                                        <trafficEngineeringMetric>
                                                10
                                        </trafficEngineeringMetric>
                                        <capacity>
                                                100000
                                        </capacity>
                                        <switchingCapabilityDescriptor>
                                                <switchingcapType>
                                                        l2sc
                                                </switchingcapType>
                                                <encodingType>
                                                        ethernet
                                                </encodingType>
                                                <switchingCapabilitySpecificInfo>
                                                        <switchingCapabilitySpecificInfo_L2sc>
                                                                <interfaceMTU>
                                                                        9000
                                                                </interfaceMTU>
                                                                <vlanRangeAvailability>
                                                                        874
                                                                </vlanRangeAvailability>
                                                                <suggestedVLANRange>
                                                                        874
                                                                </suggestedVLANRange>
                                                                <vlanTranslation>
                                                                        false
                                                                </vlanTranslation>
                                                        </switchingCapabilitySpecificInfo_L2sc>
                                                </switchingCapabilitySpecificInfo>
                                        </switchingCapabilityDescriptor>
                                </link>
                                <nextHop>
                                        6
                                </nextHop>
                        </hop>
                        <hop id="6">
                                <link id="urn:publicid:IDN+utah.geniracks.net+interface+procurve2:1.19">
                                        <trafficEngineeringMetric>
                                                10
                                        </trafficEngineeringMetric>
                                        <capacity>
                                                100000
                                        </capacity>
                                        <switchingCapabilityDescriptor>
                                                <switchingcapType>
                                                        l2sc
                                                </switchingcapType>
                                                <encodingType>
                                                        ethernet
                                                </encodingType>
                                                <switchingCapabilitySpecificInfo>
                                                        <switchingCapabilitySpecificInfo_L2sc>
                                                                <interfaceMTU>
                                                                        9000
                                                                </interfaceMTU>
                                                                <vlanRangeAvailability>
                                                                        874
                                                                </vlanRangeAvailability>
                                                                <suggestedVLANRange>
                                                                        874
                                                                </suggestedVLANRange>
                                                                <vlanTranslation>
                                                                        false
                                                                </vlanTranslation>
                                                        </switchingCapabilitySpecificInfo_L2sc>
                                                </switchingCapabilitySpecificInfo>
                                        </switchingCapabilityDescriptor>
                                </link>
                                <nextHop>
                                        null
                                </nextHop>
                        </hop>
                </path>
        </stitching>

Trac comment by ahelsing on 07-16-2013 at 11:58

ahelsing commented 9 years ago

It appears that the code in manifest combiner is finding the right hop in both the template and AM manifest, and doing the right replace. Finding the template hop after the replace and calling .toxml() on it seems to show that the hop has been replaced as expected.

But then when the calling method (combineHops) finds the path in the stitching extension again, and we print that using .toxml(), it does not seem to have the hop. It is missing.

Why only these hops? For other AMs (not the ION AM), printing the hop with .toxml() gives a string without whitespace and newlines. For the ION AM's hops, .toxml() gives a hop with whitespace - just like the template had.

Why does Luisa see this, but I don't?

What can be wrong?

Trac comment by ahelsing on 07-17-2013 at 10:41

ahelsing commented 9 years ago

All my test code looking for the problem hasn't found the issue.

Try this on python 2.6, on ubuntu 10.04

Maybe write some test code that isn't dependent on the objects but just does the Dom, so I can run just that without the full stitcher.

Trac comment by ahelsing on 08-05-2013 at 11:54

ahelsing commented 9 years ago

Luisa reports the same problem on py2.7/ubu12.04

Trac comment by ahelsing on 08-07-2013 at 16:29

ahelsing commented 9 years ago

could there be a unicode vs str error in finding/replacing elements?

Trac comment by ahelsing on 08-09-2013 at 12:16

ahelsing commented 9 years ago

I've made the output xml be in utf-8 format, short circuited replacing hops when I'm replacing a hop with itself, and added a bunch of commented out debug statements. Nothing that would seem to indicate why this happens. But it seems to happen mostly when there are 4 AMs in the path, and the missing hops are from ION, which formats the hop with lots of white space that the others do not.

And now Luisa says she isn't seeing the issue. I've never seen the issue, and don't know why the issue was happening. If she still doesn't see the problem, I'll close the ticket.

Trac comment by ahelsing on 08-12-2013 at 13:10