Git Product home page Git Product logo

aceye's People

Contributors

automateyournetwork avatar mahin287 avatar morinpa avatar mrichinfinite avatar tes3awy avatar thetechguy-it avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

aceye's Issues

Large result cause a problem

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.

Incorrect Path for Access Control Scopes

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'

Enhancement Suggestions

John,

Great job so far with this project. I have not found a bug yet, but I do have the following enhancement suggestions:

  1. I would like to see a way that I can run aceye for something specific instead of probing the entire fabric. Example; I would like to run aceye to just probe my interfaces for a specific leaf switch so that an admin can quickly assign an available port.
  2. I would like to have the ability to modify the output to something that will make sense to my organization. Example; When I look at the output for physical interfaces I see a lot of great information that I will probably never use. Something that would make sense to me is something like:

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...

Issue with prefix_list_detailed

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

Issue running against ACI 6.0(2h) in Sandbox

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'

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$

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.