automateyournetwork / aceye Goto Github PK
View Code? Open in Web Editor NEWBusiness Ready Documents for Cisco ACI
License: GNU General Public License v3.0
Business Ready Documents for Cisco ACI
License: GNU General Public License v3.0
The POD and NODE are shown as tow separate items in the header, but as a single item is gotten from the json, thus shifting left all other items left.
I have seen this on a large Fabric:
Status Code 400
{'totalCount': '1', 'imdata': [{'error': {'attributes': {'code': '400', 'text': 'Unable to process the query, result dataset is too big'}}}]}
This error is generated by the APIC. It looks like some kind of paging would need to be implemented.
In the make_directories function, the "Access Control Scopes" directory is created, however, when the various files are being written, "Access Control Scope" is used in the path. This leads to a file not found error.
FileNotFoundError: [Errno 2] No such file or directory: 'Access Control Scope/JSON/Access Control Scope.json'
John,
Great job so far with this project. I have not found a bug yet, but I do have the following enhancement suggestions:
Port-ID|Port-Description|Usage (usage so that I can see which ports are blacklisted)
Thanks for all of the great work with this project and Happy New Year to you and your family.
John T...
Please find the error details given below.
No prefix lists
Traceback (most recent call last):
File "/home/mayin/projects/python/ACEye/aceyecode/src/aceye/aceye.py", line 6563, in
cli()
File "/home/mayin/projects/python/ACEye/ACI/lib/python3.10/site-packages/click/core.py", line 1157, in call
return self.main(*args, **kwargs)
File "/home/mayin/projects/python/ACEye/ACI/lib/python3.10/site-packages/rich_click/rich_command.py", line 19, in main
rv = super().main(*args, standalone_mode=False, **kwargs)
File "/home/mayin/projects/python/ACEye/ACI/lib/python3.10/site-packages/click/core.py", line 1078, in main
rv = self.invoke(ctx)
File "/home/mayin/projects/python/ACEye/ACI/lib/python3.10/site-packages/click/core.py", line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/home/mayin/projects/python/ACEye/ACI/lib/python3.10/site-packages/click/core.py", line 783, in invoke
return __callback(*args, **kwargs)
File "/home/mayin/projects/python/ACEye/aceyecode/src/aceye/aceye.py", line 6560, in cli
invoke_class.aceye()
File "/home/mayin/projects/python/ACEye/aceyecode/src/aceye/aceye.py", line 27, in aceye
asyncio.run(self.main())
File "/usr/lib/python3.10/asyncio/runners.py", line 44, in run
return loop.run_until_complete(main)
File "/usr/lib/python3.10/asyncio/base_events.py", line 649, in run_until_complete
return future.result()
File "/home/mayin/projects/python/ACEye/aceyecode/src/aceye/aceye.py", line 576, in main
await self.all_files(json.dumps(results, indent=4, sort_keys=True))
File "/home/mayin/projects/python/ACEye/aceyecode/src/aceye/aceye.py", line 6543, in all_files
await asyncio.gather(self.json_file(parsed_json), self.yaml_file(parsed_json), self.csv_file(parsed_json), self.markdown_file(parsed_json), self.html_file(parsed_json), self.mindmap_file(parsed_json))
File "/home/mayin/projects/python/ACEye/aceyecode/src/aceye/aceye.py", line 659, in json_file
await f.write(json.dumps(payload['imdata'], indent=4, sort_keys=True))
TypeError: list indices must be integers or slices, not str
I am getting the following error:
https://sandboxapicdc.cisco.com//api/node/class/topology/pod-1/node-1/l1PhysIf.json Status Code 200
Traceback (most recent call last):
File "", line 198, in _run_module_as_main
File "", line 88, in run_code
File "C:\Users\blake\AppData\Local\Programs\Python\Python311\Scripts\aceye.exe_main.py", line 7, in
File "C:\Users\blake\AppData\Local\Programs\Python\Python311\Lib\site-packages\aceye\script.py", line 3, in run
cli()
File "C:\Users\blake\AppData\Local\Programs\Python\Python311\Lib\site-packages\click\core.py", line 1157, in call
return self.main(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\blake\AppData\Local\Programs\Python\Python311\Lib\site-packages\rich_click\rich_command.py", line 126, in main
rv = self.invoke(ctx)
^^^^^^^^^^^^^^^^
File "C:\Users\blake\AppData\Local\Programs\Python\Python311\Lib\site-packages\click\core.py", line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\blake\AppData\Local\Programs\Python\Python311\Lib\site-packages\click\core.py", line 783, in invoke
return __callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\blake\AppData\Local\Programs\Python\Python311\Lib\site-packages\aceye\aceye.py", line 6546, in cli
invoke_class.aceye()
File "C:\Users\blake\AppData\Local\Programs\Python\Python311\Lib\site-packages\aceye\aceye.py", line 27, in aceye
asyncio.run(self.main())
File "C:\Users\blake\AppData\Local\Programs\Python\Python311\Lib\asyncio\runners.py", line 190, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "C:\Users\blake\AppData\Local\Programs\Python\Python311\Lib\asyncio\runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\blake\AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py", line 653, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "C:\Users\blake\AppData\Local\Programs\Python\Python311\Lib\site-packages\aceye\aceye.py", line 558, in main
await self.all_files(json.dumps(results, indent=4, sort_keys=True))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\blake\AppData\Local\Programs\Python\Python311\Lib\site-packages\aceye\aceye.py", line 6529, in all_files
await asyncio.gather(self.json_file(parsed_json), self.yaml_file(parsed_json), self.csv_file(parsed_json), self.markdown_file(parsed_json), self.html_file(parsed_json), self.mindmap_file(parsed_json))
File "C:\Users\blake\AppData\Local\Programs\Python\Python311\Lib\site-packages\aceye\aceye.py", line 2601, in csv_file
csv_output = await csv_template.render_async(api = api,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\blake\AppData\Local\Programs\Python\Python311\Lib\site-packages\jinja2\environment.py", line 1324, in render_async
return self.environment.handle_exception()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\blake\AppData\Local\Programs\Python\Python311\Lib\site-packages\jinja2\environment.py", line 936, in handle_exception
raise rewrite_traceback_stack(source=source)
File "C:\Users\blake\AppData\Local\Programs\Python\Python311\Lib\site-packages\jinja2\environment.py", line 1321, in
[n async for n in self.root_render_func(ctx)] # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\blake\AppData\Local\Programs\Python\Python311\Lib\site-packages\aceye\aci_csv.j2", line 40, in top-level template code
{{ interface.l1PhysIf.attributes.adminSt }},{{ interface.l1PhysIf.attributes.autoNeg }},{{ interface.l1PhysIf.attributes.brkoutMap }},{{ interface.l1PhysIf.attributes.bw }},{{ interface.l1PhysIf.attributes.childAction }},{{ interface.l1PhysIf.attributes.delay }},{{ interface.l1PhysIf.attributes.descr | replace(","," ") }},{{ interface.l1PhysIf.attributes.dfeDelayMs }},{{ interface.l1PhysIf.attributes.dn }},{{ interface.l1PhysIf.attributes.dn | replace("topology/","") | replace("/sys/phys-[","") | replace (interface.l1PhysIf.attributes.id,"") | replace("/",",") | replace("]","")}},{{ interface.l1PhysIf.attributes.dot1qEtherType }},{{ interface.l1PhysIf.attributes.ethpmCfgFailedBmp }},{{ interface.l1PhysIf.attributes.ethpmCfgFailedTs }},{{ interface.l1PhysIf.attributes.ethpmCfgState }},{{ interface.l1PhysIf.attributes.fcotChannelNumber }},{{ interface.l1PhysIf.attributes.fecMode }},{{ interface.l1PhysIf.attributes.id }},{{ interface.l1PhysIf.attributes.inhBw }},{{ interface.l1PhysIf.attributes.isReflectiveRelayCfgSupported }},{{ interface.l1PhysIf.attributes.layer }},{{ interface.l1PhysIf.attributes.lcOwn }},{{ interface.l1PhysIf.attributes.linkDebounce }},{{ interface.l1PhysIf.attributes.linkFlapErrorMax }},{{ interface.l1PhysIf.attributes.linkFlapErrorSeconds }},{{ interface.l1PhysIf.attributes.linkLog }},{{ interface.l1PhysIf.attributes.mdix }},{{ interface.l1PhysIf.attributes.medium }},{{ interface.l1PhysIf.attributes.modTs }},{{ interface.l1PhysIf.attributes.mode }},{{ interface.l1PhysIf.attributes.monPolDn }},{{ interface.l1PhysIf.attributes.mtu }},{{ interface.l1PhysIf.attributes.name }},{{ interface.l1PhysIf.attributes.pathSDescr }},{{ interface.l1PhysIf.attributes.portPhyMediaType }},{{ interface.l1PhysIf.attributes.portT }},{{ interface.l1PhysIf.attributes.prioFlowCtrl }},{{ interface.l1PhysIf.attributes.reflectiveRelayEn }},{{ interface.l1PhysIf.attributes.routerMac }},{{ interface.l1PhysIf.attributes.snmpTrapSt }},{{ interface.l1PhysIf.attributes.spanMode }},{{ interface.l1PhysIf.attributes.speed }},{{ interface.l1PhysIf.attributes.status }},{{ interface.l1PhysIf.attributes.switchingSt }},{{ interface.l1PhysIf.attributes.trunkLog }},{{ interface.l1PhysIf.attributes.usage | replace(","," ") }}
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\blake\AppData\Local\Programs\Python\Python311\Lib\site-packages\jinja2\environment.py", line 485, in getattr
return getattr(obj, attribute)
^^^^^^^^^^^^^^^^^^^^^^^
jinja2.exceptions.UndefinedError: 'dict object' has no attribute 'l1PhysIf'
I see the above exception, the full command line output is below. APIC Version 5.2(4d), Jinja2==3.1.2
The same happens with a different fabric on the same code
APIC URL: https://x.x.x.x
APIC Username: apic:fallback\aceye
APIC Password:
<Authentication Status code 200 for https://x.x.x.x/api/aaaLogin.json>
/api/node/class/fvTenant.json Status Code 200
/api/node/class/fvAEPg.json Status Code 200
/api/node/class/fvBD.json Status Code 200
/api/node/class/fvCtx.json Status Code 200
/api/node/class/fvAp.json Status Code 200
/api/node/class/l3extOut.json Status Code 200
/api/node/class/l2extOut.json Status Code 200
/api/node/class/topSystem.json Status Code 200
/api/node/class/fvSubnet.json Status Code 200
/api/node/class/licenseEntitlement.json Status Code 200
/api/node/class/fabricPod.json Status Code 200
/api/node/mo/topology/health.json Status Code 200
/api/node/mo/topology/pod-1/node-1/av.json?query-target=children&target-subtree-class=infraWiNode Status Code 200
/api/node/class/compProv.json Status Code 200
/api/node/class/fabricNode.json Status Code 200
/api/node/class/infraAccPortP.json Status Code 200
/api/node/class/fvCEp.json Status Code 200
/api/node/class/infraSpAccPortP.json Status Code 200
/api/node/class/infraNodeP.json Status Code 200
/api/node/class/infraSpineP.json Status Code 200
/api/node/class/fvnsVlanInstP.json Status Code 200
/api/node/class/infraAttEntityP.json Status Code 200
/api/node/class/vzBrCP.json Status Code 200
/api/node/class/vzEntry.json Status Code 200
/api/node/class/fabricLinkCont.json Status Code 200
/api/node/class/fvEpPCont.json Status Code 200
/api/node/class/physDomP.json Status Code 200
/api/node/class/l3extDomP.json Status Code 200
/api/node/class/qosClass.json Status Code 200
/api/node/class/faultSummary.json Status Code 200
/api/node/class/fvIp.json Status Code 200
/api/node/class/bgpRRNodePEp.json Status Code 200
/api/node/class/infraPortS.json Status Code 200
/api/node/class/infraProfile.json Status Code 200
/api/node/class/fabricPath.json Status Code 200
/api/node/class/fvTenant.json Status Code 200
/api/node/class/aaaUser.json Status Code 200
/api/node/class/vzSubj.json Status Code 200
/api/node/class/aaaDomain.json Status Code 200
/api/node/class/pkiFabricNodeSSLCertificate.json Status Code 200
/api/node/class/topSystem.json?query-target=subtree&target-subtree-class=firmwareCtrlrRunning Status Code 200
/api/node/class/vnsMDev.json Status Code 200
/api/node/class/cnwAggrIf.json Status Code 200
/api/node/class/actrlEntity.json Status Code 200
/api/node/class/l3Inst.json Status Code 200
/api/node/class/actrlInst.json Status Code 200
/api/node/class/actrlScope.json Status Code 200
/api/node/class/actrlRule.json Status Code 200
/api/node/class/cnwPhysIf.json Status Code 200
/api/node/class/compCtrlr.json Status Code 200
/api/node/class/compDom.json Status Code 200
/api/node/class/arpAdjEp.json Status Code 200
/api/node/class/arpDom.json Status Code 200
/api/node/class/arpDb.json Status Code 200
/api/node/class/arpEntity.json Status Code 200
/api/node/class/arpInst.json Status Code 200
/api/node/class/arpIf.json Status Code 200
/api/node/class/bgpEntity.json Status Code 200
/api/node/class/bgpInst.json Status Code 200
/api/node/class/bgpInstPol.json Status Code 200
/api/node/class/vmmProvP.json Status Code 200
/api/node/class/bgpPeer.json Status Code 200
/api/node/class/bgpDomAf.json Status Code 200
/api/node/class/bgpPeerEntry.json Status Code 200
/api/node/class/compEpPD.json Status Code 200
/api/node/class/bgpDom.json Status Code 200
/api/node/class/bgpPeerAfEntry.json Status Code 200
/api/node/class/bgpRRP.json Status Code 200
/api/node/class/cdpAdjEp.json Status Code 200
/api/node/class/cdpEntity.json Status Code 200
/api/node/class/cdpInst.json Status Code 200
/api/node/class/cdpIntfAddr.json Status Code 200
/api/node/class/cdpMgmtAddr.json Status Code 200
/api/node/class/cnwRsMbrIfs.json Status Code 200
/api/node/class/compRsDomP.json Status Code 200
/api/node/class/eqptBSlot.json Status Code 200
/api/node/class/eqptBoard.json Status Code 200
/api/node/class/eqptCPU.json Status Code 200
/api/node/class/eqptCh.json Status Code 200
/api/node/class/eqptExtCh.json Status Code 200
/api/node/class/eqptDimm.json Status Code 200
/api/node/class/cdpIf.json Status Code 200
/api/node/class/eqptFpga.json Status Code 200
/api/node/class/eqptFt.json Status Code 200
/api/node/class/eqptLC.json Status Code 200
/api/node/class/eqptFabP.json Status Code 200
/api/node/class/eqptFtSlot.json Status Code 200
/api/node/class/eqptLCSlot.json Status Code 200
/api/node/class/eqptPsu.json Status Code 200
/api/node/class/eqptIndLed.json Status Code 200
/api/node/class/eqptFan.json Status Code 200
/api/node/class/eqptPsuSlot.json Status Code 200
/api/node/class/eqptLeafP.json Status Code 200
/api/node/class/eqptSpCmnBlk.json Status Code 200
/api/node/class/eqptRsIoPPhysConf.json Status Code 200
/api/node/class/eqptLocLed.json Status Code 200
/api/node/class/eqptSpromPsu.json Status Code 200
/api/node/class/eqptSpromLc.json Status Code 200
/api/node/class/eqptSpromSup.json Status Code 200
/api/node/class/eqptSpromPsuBlk.json Status Code 200
/api/node/class/eqptSupCSlot.json Status Code 200
/api/node/class/ethpmPhysIf.json Status Code 200
/api/node/class/eqptSupC.json Status Code 200
/api/node/class/fabricExtPathEpCont.json Status Code 200
/api/node/class/fabricInst.json Status Code 200
/api/node/class/fabricLink.json Status Code 200
/api/node/class/fabricLooseLink.json Status Code 200
/api/node/class/fabricLooseNode.json Status Code 200
/api/node/class/fabricPathEpCont.json Status Code 200
/api/node/class/fabricProtPathEpCont.json Status Code 200
/api/node/class/firmwareCompRunning.json Status Code 200
/api/node/class/firmwareRunning.json Status Code 200
/api/node/class/fcEntity.json Status Code 200
/api/node/class/firmwareCardRunning.json Status Code 200
/api/node/class/eqptSensor.json Status Code 200
/api/node/class/fvRsBDToOut.json Status Code 200
/api/node/class/eqptStorage.json Status Code 200
/api/node/class/fvRsBd.json Status Code 200
/api/node/class/fvRsConsIf.json Status Code 200
/api/node/class/fvRsCtx.json Status Code 200
/api/node/class/fvRsPathAtt.json Status Code 200
/api/node/class/fvRsProv.json Status Code 200
/api/node/class/fvRsCons.json Status Code 200
/api/node/class/fvRtBd.json Status Code 200
/api/node/class/fvRtCtx.json Status Code 200
/api/node/class/fvnsEncapBlk.json Status Code 200
/api/node/class/fabricPathEp.json Status Code 200
/api/node/class/fvnsVlanInstP.json Status Code 200
/api/node/class/fvLocale.json Status Code 200
/api/node/class/fvRsDomAtt.json Status Code 200
/api/node/class/infraAccBndlGrp.json Status Code 200
/api/node/class/infraAccPortGrp.json Status Code 200
/api/node/class/infraCont.json Status Code 200
/api/node/class/infraAccPortP.json Status Code 200
/api/node/class/infraFexP.json Status Code 200
/api/node/class/infraFuncP.json Status Code 200
/api/node/class/infraHPortS.json Status Code 200
/api/node/class/infraPortBlk.json Status Code 200
/api/node/class/infraRsAccBaseGrp.json Status Code 200
/api/node/class/infraRsAttEntP.json Status Code 200
/api/node/class/infraRsDomP.json Status Code 200
/api/node/class/infraRsSpAccGrp.json Status Code 200
/api/node/class/infraRsVlanNs.json Status Code 200
/api/node/class/infraSHPortS.json Status Code 200
/api/node/class/infraSpAccPortP.json Status Code 200
/api/node/class/infraWiNode.json Status Code 200
/api/node/class/ipNexthopP.json Status Code 200
/api/node/class/ipRouteP.json Status Code 200
/api/node/class/ipv4Dom.json Status Code 200
/api/node/class/ipv4Entity.json Status Code 200
/api/node/class/ipv4Inst.json Status Code 200
/api/node/class/ipv4Addr.json Status Code 200
/api/node/class/ipv4If.json Status Code 200
/api/node/class/fvRsCEpToPathEp.json Status Code 200
/api/node/class/isisAdjEp.json Status Code 200
/api/node/class/isisDTEp.json Status Code 200
/api/node/class/isisDom.json Status Code 200
/api/node/class/isisDomLvl.json Status Code 200
/api/node/class/isisIfLvl.json Status Code 200
/api/node/class/isisEntity.json Status Code 200
/api/node/class/isisInst.json Status Code 200
/api/node/class/isisNexthop.json Status Code 200
/api/node/class/l2BD.json Status Code 200
/api/node/class/l2ExtIf.json Status Code 200
/api/node/class/ipv4Route.json Status Code 200
/api/node/class/ipv4Nexthop.json Status Code 200
/api/node/class/isisIf.json Status Code 200
/api/node/class/isisRoute.json Status Code 200
/api/node/class/l2extInstP.json Status Code 200
/api/node/class/l2extLIfP.json Status Code 200
/api/node/class/l2extLNodeP.json Status Code 200
/api/node/class/l2extRsEBd.json Status Code 200
/api/node/class/l2extRsPathL2OutAtt.json Status Code 200
/api/node/class/l2RsEthIf.json Status Code 200
/api/node/class/l3LbRtdIf.json Status Code 200
/api/node/class/l3Inst.json Status Code 200
/api/node/class/l3extInstP.json Status Code 200
/api/node/class/l3extIp.json Status Code 200
/api/node/class/l3extLIfP.json Status Code 200
/api/node/class/l3Ctx.json Status Code 200
/api/node/class/l3RtdIf.json Status Code 200
/api/node/class/l3RsEncPhysRtdConf.json Status Code 200
/api/node/class/l3extLNodeP.json Status Code 200
/api/node/class/l3extMember.json Status Code 200
/api/node/class/l3extRsEctx.json Status Code 200
/api/node/class/l3EncRtdIf.json Status Code 200
/api/node/class/l3extRsL3DomAtt.json Status Code 200
/api/node/class/l3extRsNodeL3OutAtt.json Status Code 200
/api/node/class/l3extRsPathL3OutAtt.json Status Code 200
/api/node/class/l3extSubnet.json Status Code 200
/api/node/class/lacpEntity.json Status Code 200
/api/node/class/lacpInst.json Status Code 200
/api/node/class/lacpIf.json Status Code 200
/api/node/class/leqptLooseNode.json Status Code 200
/api/node/class/leqptRsLsNodeToIf.json Status Code 200
/api/node/class/lldpAdjEp.json Status Code 200
/api/node/class/lldpEntity.json Status Code 200
/api/node/class/lldpInst.json Status Code 200
/api/node/class/mgmtMgmtIf.json Status Code 200
/api/node/class/ospfAdjEp.json Status Code 200
/api/node/class/ospfArea.json Status Code 200
/api/node/class/ospfDb.json Status Code 200
/api/node/class/ospfDom.json Status Code 200
/api/node/class/ospfEntity.json Status Code 200
/api/node/class/ospfExtP.json Status Code 200
/api/node/class/ospfIf.json Status Code 200
/api/node/class/ospfInst.json Status Code 200
/api/node/class/ospfRoute.json Status Code 200
/api/node/class/pcRsMbrIfs.json Status Code 200
/api/node/class/lldpIf.json Status Code 200
/api/node/class/ospfUcNexthop.json Status Code 200
/api/node/class/pcAggrIf.json Status Code 200
/api/node/class/uribv4Db.json Status Code 200
/api/node/class/uribv4Dom.json Status Code 200
/api/node/class/uribv4Entity.json Status Code 200
/api/node/class/sviIf.json Status Code 200
/api/node/class/tunnelIf.json Status Code 200
/api/node/class/uribv4Nexthop.json Status Code 200
/api/node/class/vmmCtrlrP.json Status Code 200
/api/node/class/vmmDomP.json Status Code 200
/api/node/class/vmmUsrAccP.json Status Code 200
/api/node/class/vpcDom.json Status Code 200
/api/node/class/vpcEntity.json Status Code 200
/api/node/class/vpcInst.json Status Code 200
/api/node/class/vpcRsVpcConf.json Status Code 200
/api/node/class/vzAny.json Status Code 200
/api/node/class/vzFilter.json Status Code 200
/api/node/class/vzRsAnyToCons.json Status Code 200
/api/node/class/vzRsAnyToProv.json Status Code 200
/api/node/class/vzRsDenyRule.json Status Code 200
/api/node/class/vzRsIf.json Status Code 200
/api/node/class/vzRsSubjFiltAtt.json Status Code 200
/api/node/class/vzRtCons.json Status Code 200
/api/node/class/vzRtProv.json Status Code 200
/api/node/class/vzTaboo.json Status Code 200
/api/node/class/vpcIf.json Status Code 200
/api/node/class/vzRuleOwner.json Status Code 200
/api/node/class/uribv4Route.json Status Code 200
/api/node/class/vlanCktEp.json Status Code 200
https://x.x.x.x/api/node/class/fabricNode.json Status Code 200
https://x.x.x.x/api/node/class/topology/pod-1/node-103/l1PhysIf.json Status Code 200
https://x.x.x.x/api/node/class/topology/pod-2/node-502/l1PhysIf.json Status Code 200
https://x.x.x.x/api/node/class/topology/pod-1/node-105/l1PhysIf.json Status Code 200
https://x.x.x.x/api/node/class/topology/pod-1/node-302/l1PhysIf.json Status Code 400
https://x.x.x.x/api/node/class/topology/pod-1/node-108/l1PhysIf.json Status Code 200
https://x.x.x.x/api/node/class/topology/pod-2/node-501/l1PhysIf.json Status Code 200
https://x.x.x.x/api/node/class/topology/pod-1/node-102/l1PhysIf.json Status Code 200
https://x.x.x.x/api/node/class/topology/pod-1/node-201/l1PhysIf.json Status Code 200
https://x.x.x.x/api/node/class/topology/pod-1/node-101/l1PhysIf.json Status Code 200
https://x.x.x.x/api/node/class/topology/pod-2/node-504/l1PhysIf.json Status Code 200
https://x.x.x.x/api/node/class/topology/pod-1/node-104/l1PhysIf.json Status Code 200
https://x.x.x.x/api/node/class/topology/pod-1/node-301/l1PhysIf.json Status Code 400
https://x.x.x.x/api/node/class/topology/pod-1/node-304/l1PhysIf.json Status Code 200
https://x.x.x.x/api/node/class/topology/pod-1/node-107/l1PhysIf.json Status Code 200
https://x.x.x.x/api/node/class/topology/pod-2/node-402/l1PhysIf.json Status Code 200
https://x.x.x.x/api/node/class/topology/pod-1/node-2/l1PhysIf.json Status Code 200
https://x.x.x.x/api/node/class/topology/pod-2/node-503/l1PhysIf.json Status Code 200
https://x.x.x.x/api/node/class/topology/pod-1/node-106/l1PhysIf.json Status Code 200
https://x.x.x.x/api/node/class/topology/pod-1/node-303/l1PhysIf.json Status Code 200
https://x.x.x.x/api/node/class/topology/pod-1/node-1/l1PhysIf.json Status Code 200
https://x.x.x.x/api/node/class/topology/pod-2/node-401/l1PhysIf.json Status Code 200
https://x.x.x.x/api/node/class/topology/pod-1/node-202/l1PhysIf.json Status Code 200
https://x.x.x.x/api/node/class/topology/pod-1/node-3/l1PhysIf.json Status Code 200
Traceback (most recent call last):
File "/home/lc5648734/ACEye/.direnv/python-3.8.10/bin/aceye", line 8, in
sys.exit(run())
File "/home/lc5648734/ACEye/.direnv/python-3.8.10/lib/python3.8/site-packages/aceye/script.py", line 3, in run
cli()
File "/home/lc5648734/ACEye/.direnv/python-3.8.10/lib/python3.8/site-packages/click/core.py", line 1130, in call
return self.main(*args, **kwargs)
File "/home/lc5648734/ACEye/.direnv/python-3.8.10/lib/python3.8/site-packages/rich_click/rich_command.py", line 19, in main
rv = super().main(*args, standalone_mode=False, **kwargs)
File "/home/lc5648734/ACEye/.direnv/python-3.8.10/lib/python3.8/site-packages/click/core.py", line 1055, in main
rv = self.invoke(ctx)
File "/home/lc5648734/ACEye/.direnv/python-3.8.10/lib/python3.8/site-packages/click/core.py", line 1404, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/home/lc5648734/ACEye/.direnv/python-3.8.10/lib/python3.8/site-packages/click/core.py", line 760, in invoke
return __callback(*args, **kwargs)
File "/home/lc5648734/ACEye/.direnv/python-3.8.10/lib/python3.8/site-packages/aceye/aceye.py", line 6546, in cli
invoke_class.aceye()
File "/home/lc5648734/ACEye/.direnv/python-3.8.10/lib/python3.8/site-packages/aceye/aceye.py", line 27, in aceye
asyncio.run(self.main())
File "/usr/lib/python3.8/asyncio/runners.py", line 44, in run
return loop.run_until_complete(main)
File "/usr/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete
return future.result()
File "/home/lc5648734/ACEye/.direnv/python-3.8.10/lib/python3.8/site-packages/aceye/aceye.py", line 558, in main
await self.all_files(json.dumps(results, indent=4, sort_keys=True))
File "/home/lc5648734/ACEye/.direnv/python-3.8.10/lib/python3.8/site-packages/aceye/aceye.py", line 6529, in all_files
await asyncio.gather(self.json_file(parsed_json), self.yaml_file(parsed_json), self.csv_file(parsed_json), self.markdown_file(parsed_json), self.html_file(parsed_json), self.mindmap_file(parsed_json))
File "/home/lc5648734/ACEye/.direnv/python-3.8.10/lib/python3.8/site-packages/aceye/aceye.py", line 2601, in csv_file
csv_output = await csv_template.render_async(api = api,
File "/home/lc5648734/ACEye/.direnv/python-3.8.10/lib/python3.8/site-packages/jinja2/environment.py", line 1324, in render_async
return self.environment.handle_exception()
File "/home/lc5648734/ACEye/.direnv/python-3.8.10/lib/python3.8/site-packages/jinja2/environment.py", line 936, in handle_exception
raise rewrite_traceback_stack(source=source)
File "/home/lc5648734/ACEye/.direnv/python-3.8.10/lib/python3.8/site-packages/jinja2/environment.py", line 1321, in
[n async for n in self.root_render_func(ctx)] # type: ignore
File "/home/lc5648734/ACEye/.direnv/python-3.8.10/lib/python3.8/site-packages/aceye/aci_csv.j2", line 40, in top-level template code
{{ interface.l1PhysIf.attributes.adminSt }},{{ interface.l1PhysIf.attributes.autoNeg }},{{ interface.l1PhysIf.attributes.brkoutMap }},{{ interface.l1PhysIf.attributes.bw }},{{ interface.l1PhysIf.attributes.childAction }},{{ interface.l1PhysIf.attributes.delay }},{{ interface.l1PhysIf.attributes.descr | replace(","," ") }},{{ interface.l1PhysIf.attributes.dfeDelayMs }},{{ interface.l1PhysIf.attributes.dn }},{{ interface.l1PhysIf.attributes.dn | replace("topology/","") | replace("/sys/phys-[","") | replace (interface.l1PhysIf.attributes.id,"") | replace("/",",") | replace("]","")}},{{ interface.l1PhysIf.attributes.dot1qEtherType }},{{ interface.l1PhysIf.attributes.ethpmCfgFailedBmp }},{{ interface.l1PhysIf.attributes.ethpmCfgFailedTs }},{{ interface.l1PhysIf.attributes.ethpmCfgState }},{{ interface.l1PhysIf.attributes.fcotChannelNumber }},{{ interface.l1PhysIf.attributes.fecMode }},{{ interface.l1PhysIf.attributes.id }},{{ interface.l1PhysIf.attributes.inhBw }},{{ interface.l1PhysIf.attributes.isReflectiveRelayCfgSupported }},{{ interface.l1PhysIf.attributes.layer }},{{ interface.l1PhysIf.attributes.lcOwn }},{{ interface.l1PhysIf.attributes.linkDebounce }},{{ interface.l1PhysIf.attributes.linkFlapErrorMax }},{{ interface.l1PhysIf.attributes.linkFlapErrorSeconds }},{{ interface.l1PhysIf.attributes.linkLog }},{{ interface.l1PhysIf.attributes.mdix }},{{ interface.l1PhysIf.attributes.medium }},{{ interface.l1PhysIf.attributes.modTs }},{{ interface.l1PhysIf.attributes.mode }},{{ interface.l1PhysIf.attributes.monPolDn }},{{ interface.l1PhysIf.attributes.mtu }},{{ interface.l1PhysIf.attributes.name }},{{ interface.l1PhysIf.attributes.pathSDescr }},{{ interface.l1PhysIf.attributes.portPhyMediaType }},{{ interface.l1PhysIf.attributes.portT }},{{ interface.l1PhysIf.attributes.prioFlowCtrl }},{{ interface.l1PhysIf.attributes.reflectiveRelayEn }},{{ interface.l1PhysIf.attributes.routerMac }},{{ interface.l1PhysIf.attributes.snmpTrapSt }},{{ interface.l1PhysIf.attributes.spanMode }},{{ interface.l1PhysIf.attributes.speed }},{{ interface.l1PhysIf.attributes.status }},{{ interface.l1PhysIf.attributes.switchingSt }},{{ interface.l1PhysIf.attributes.trunkLog }},{{ interface.l1PhysIf.attributes.usage | replace(","," ") }}
File "/home/lc5648734/ACEye/.direnv/python-3.8.10/lib/python3.8/site-packages/jinja2/environment.py", line 485, in getattr
return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'dict object' has no attribute 'l1PhysIf'
lc5648734@bdc5lfisrddap22:~/ACEye$
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.