acirb 1.1.2.1 → 1.1.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/acirb.rb +9 -9
- data/lib/acirb/autoloadmap.rb +6617 -0
- data/lib/{events.rb → acirb/events.rb} +1 -1
- data/lib/{loader.rb → acirb/loader.rb} +0 -0
- data/lib/{logging.rb → acirb/logging.rb} +0 -0
- data/lib/{lookup.rb → acirb/lookup.rb} +0 -9
- data/lib/acirb/mo.rb +254 -71
- data/lib/acirb/{aaa.rb → model/aaa.rb} +1 -1
- data/lib/acirb/{ac.rb → model/ac.rb} +1 -1
- data/lib/acirb/{action.rb → model/action.rb} +1 -1
- data/lib/acirb/{actrl.rb → model/actrl.rb} +1 -1
- data/lib/acirb/{actrlcap.rb → model/actrlcap.rb} +1 -1
- data/lib/acirb/{adcom.rb → model/adcom.rb} +1 -1
- data/lib/acirb/{aib.rb → model/aib.rb} +1 -1
- data/lib/acirb/{arp.rb → model/arp.rb} +1 -1
- data/lib/acirb/{bfd.rb → model/bfd.rb} +1 -1
- data/lib/acirb/{bgp.rb → model/bgp.rb} +1 -1
- data/lib/acirb/{callhome.rb → model/callhome.rb} +1 -1
- data/lib/acirb/{cap.rb → model/cap.rb} +1 -1
- data/lib/acirb/{cdp.rb → model/cdp.rb} +1 -1
- data/lib/acirb/{cnw.rb → model/cnw.rb} +1 -1
- data/lib/acirb/{comm.rb → model/comm.rb} +1 -1
- data/lib/acirb/{comp.rb → model/comp.rb} +1 -1
- data/lib/acirb/{compat.rb → model/compat.rb} +1 -1
- data/lib/acirb/{condition.rb → model/condition.rb} +1 -1
- data/lib/acirb/{config.rb → model/config.rb} +1 -1
- data/lib/acirb/{coop.rb → model/coop.rb} +1 -1
- data/lib/acirb/{copp.rb → model/copp.rb} +1 -1
- data/lib/acirb/{ctrlr.rb → model/ctrlr.rb} +1 -1
- data/lib/acirb/{ctx.rb → model/ctx.rb} +1 -1
- data/lib/acirb/{datetime.rb → model/datetime.rb} +1 -1
- data/lib/acirb/{dbg.rb → model/dbg.rb} +1 -1
- data/lib/acirb/{dbgac.rb → model/dbgac.rb} +1 -1
- data/lib/acirb/{dbgexp.rb → model/dbgexp.rb} +1 -1
- data/lib/acirb/{dhcp.rb → model/dhcp.rb} +1 -1
- data/lib/acirb/{dhcptlv.rb → model/dhcptlv.rb} +1 -1
- data/lib/acirb/{dhcptlvpol.rb → model/dhcptlvpol.rb} +1 -1
- data/lib/acirb/{dlgt.rb → model/dlgt.rb} +1 -1
- data/lib/acirb/{dns.rb → model/dns.rb} +1 -1
- data/lib/acirb/model/dpp.rb +2295 -0
- data/lib/acirb/{draw.rb → model/draw.rb} +1 -1
- data/lib/acirb/{edr.rb → model/edr.rb} +1 -1
- data/lib/acirb/{eigrp.rb → model/eigrp.rb} +1 -1
- data/lib/acirb/{ep.rb → model/ep.rb} +1 -1
- data/lib/acirb/{epm.rb → model/epm.rb} +1 -1
- data/lib/acirb/{eptrk.rb → model/eptrk.rb} +1 -1
- data/lib/acirb/{eqpt.rb → model/eqpt.rb} +1 -1
- data/lib/acirb/{eqptcap.rb → model/eqptcap.rb} +1 -1
- data/lib/acirb/{eqptcapacity.rb → model/eqptcapacity.rb} +1 -1
- data/lib/acirb/{eqptdiag.rb → model/eqptdiag.rb} +1 -1
- data/lib/acirb/{eqptdiagp.rb → model/eqptdiagp.rb} +1 -1
- data/lib/acirb/{ethpm.rb → model/ethpm.rb} +1 -1
- data/lib/acirb/{event.rb → model/event.rb} +1 -1
- data/lib/acirb/{extnw.rb → model/extnw.rb} +1 -1
- data/lib/acirb/{fabric.rb → model/fabric.rb} +1 -1
- data/lib/acirb/{fault.rb → model/fault.rb} +1 -1
- data/lib/acirb/model/fcpr.rb +353 -0
- data/lib/acirb/{file.rb → model/file.rb} +1 -1
- data/lib/acirb/{firmware.rb → model/firmware.rb} +1 -1
- data/lib/acirb/{fmcast.rb → model/fmcast.rb} +1 -1
- data/lib/acirb/{frmwrk.rb → model/frmwrk.rb} +1 -1
- data/lib/acirb/{fsm.rb → model/fsm.rb} +1 -1
- data/lib/acirb/{fv.rb → model/fv.rb} +1 -1
- data/lib/acirb/{fvcap.rb → model/fvcap.rb} +1 -1
- data/lib/acirb/{fvns.rb → model/fvns.rb} +1 -1
- data/lib/acirb/{fvtopo.rb → model/fvtopo.rb} +1 -1
- data/lib/acirb/{geo.rb → model/geo.rb} +1 -1
- data/lib/acirb/{glean.rb → model/glean.rb} +1 -1
- data/lib/acirb/{ha.rb → model/ha.rb} +1 -1
- data/lib/acirb/{health.rb → model/health.rb} +1 -1
- data/lib/acirb/{hvs.rb → model/hvs.rb} +1 -1
- data/lib/acirb/{icmp.rb → model/icmp.rb} +1 -1
- data/lib/acirb/{icmpv4.rb → model/icmpv4.rb} +1 -1
- data/lib/acirb/{icmpv6.rb → model/icmpv6.rb} +1 -24
- data/lib/acirb/{ident.rb → model/ident.rb} +1 -1
- data/lib/acirb/{igmp.rb → model/igmp.rb} +1 -1
- data/lib/acirb/{igmpsnoop.rb → model/igmpsnoop.rb} +1 -55
- data/lib/acirb/{im.rb → model/im.rb} +1 -1
- data/lib/acirb/{imginstall.rb → model/imginstall.rb} +1 -1
- data/lib/acirb/{infra.rb → model/infra.rb} +1 -35
- data/lib/acirb/{ip.rb → model/ip.rb} +1 -1
- data/lib/acirb/{ipmcsnoop.rb → model/ipmcsnoop.rb} +1 -1
- data/lib/acirb/{ipv4.rb → model/ipv4.rb} +1 -1
- data/lib/acirb/{ipv6.rb → model/ipv6.rb} +1 -1
- data/lib/acirb/{isis.rb → model/isis.rb} +1 -1
- data/lib/acirb/{isistlv.rb → model/isistlv.rb} +1 -1
- data/lib/acirb/{l1.rb → model/l1.rb} +1 -1
- data/lib/acirb/{l1cap.rb → model/l1cap.rb} +1 -1
- data/lib/acirb/{l2.rb → model/l2.rb} +1 -1
- data/lib/acirb/{l2cap.rb → model/l2cap.rb} +1 -1
- data/lib/acirb/{l2ext.rb → model/l2ext.rb} +1 -1
- data/lib/acirb/{l3.rb → model/l3.rb} +1 -1
- data/lib/acirb/{l3cap.rb → model/l3cap.rb} +1 -1
- data/lib/acirb/{l3ext.rb → model/l3ext.rb} +1 -1
- data/lib/acirb/{l3vm.rb → model/l3vm.rb} +1 -1
- data/lib/acirb/{l4.rb → model/l4.rb} +1 -1
- data/lib/acirb/{lacp.rb → model/lacp.rb} +1 -1
- data/lib/acirb/{lbp.rb → model/lbp.rb} +1 -1
- data/lib/acirb/{leqpt.rb → model/leqpt.rb} +1 -1
- data/lib/acirb/{lldp.rb → model/lldp.rb} +1 -38
- data/lib/acirb/{lldptlv.rb → model/lldptlv.rb} +1 -1
- data/lib/acirb/{lldptlvpol.rb → model/lldptlvpol.rb} +1 -1
- data/lib/acirb/{maint.rb → model/maint.rb} +1 -1
- data/lib/acirb/{mcast.rb → model/mcast.rb} +1 -1
- data/lib/acirb/{mcp.rb → model/mcp.rb} +1 -1
- data/lib/acirb/{memory.rb → model/memory.rb} +1 -1
- data/lib/acirb/{mgmt.rb → model/mgmt.rb} +1 -1
- data/lib/acirb/{mldsnoop.rb → model/mldsnoop.rb} +1 -1
- data/lib/acirb/model/mo.rb +77 -0
- data/lib/acirb/{mock.rb → model/mock.rb} +1 -1
- data/lib/acirb/{mon.rb → model/mon.rb} +1 -1
- data/lib/acirb/{monitor.rb → model/monitor.rb} +1 -1
- data/lib/acirb/model/naming.rb +48 -0
- data/lib/acirb/{nd.rb → model/nd.rb} +1 -1
- data/lib/acirb/{nw.rb → model/nw.rb} +1 -1
- data/lib/acirb/{nws.rb → model/nws.rb} +1 -25
- data/lib/acirb/{oam.rb → model/oam.rb} +1 -1
- data/lib/acirb/{observer.rb → model/observer.rb} +1 -1
- data/lib/acirb/{opflex.rb → model/opflex.rb} +1 -1
- data/lib/acirb/model/opflexp.rb +405 -0
- data/lib/acirb/{os.rb → model/os.rb} +1 -1
- data/lib/acirb/{ospf.rb → model/ospf.rb} +1 -46
- data/lib/acirb/{ospfv3.rb → model/ospfv3.rb} +1 -1
- data/lib/acirb/{pc.rb → model/pc.rb} +1 -1
- data/lib/acirb/{pcons.rb → model/pcons.rb} +1 -1
- data/lib/acirb/{phys.rb → model/phys.rb} +1 -1
- data/lib/acirb/{ping.rb → model/ping.rb} +1 -1
- data/lib/acirb/{pki.rb → model/pki.rb} +1 -1
- data/lib/acirb/{planner.rb → model/planner.rb} +1 -1
- data/lib/acirb/{pol.rb → model/pol.rb} +1 -1
- data/lib/acirb/{policer.rb → model/policer.rb} +1 -1
- data/lib/acirb/{pool.rb → model/pool.rb} +1 -1
- data/lib/acirb/{pres.rb → model/pres.rb} +1 -1
- data/lib/acirb/{proc.rb → model/proc.rb} +1 -1
- data/lib/acirb/{psu.rb → model/psu.rb} +1 -1
- data/lib/acirb/{qos.rb → model/qos.rb} +1 -1
- data/lib/acirb/{qosm.rb → model/qosm.rb} +1 -1
- data/lib/acirb/{qosp.rb → model/qosp.rb} +1 -1
- data/lib/acirb/{rbqm.rb → model/rbqm.rb} +1 -1
- data/lib/acirb/model/recovery.rb +303 -0
- data/lib/acirb/{regress.rb → model/regress.rb} +1 -1
- data/lib/acirb/{reln.rb → model/reln.rb} +1 -1
- data/lib/acirb/{repl.rb → model/repl.rb} +1 -1
- data/lib/acirb/{res.rb → model/res.rb} +1 -1
- data/lib/acirb/{rib.rb → model/rib.rb} +1 -1
- data/lib/acirb/{rmon.rb → model/rmon.rb} +1 -1
- data/lib/acirb/{rpm.rb → model/rpm.rb} +1 -1
- data/lib/acirb/{rtcom.rb → model/rtcom.rb} +1 -1
- data/lib/acirb/{rtctrl.rb → model/rtctrl.rb} +1 -1
- data/lib/acirb/{rtextcom.rb → model/rtextcom.rb} +1 -1
- data/lib/acirb/{rtflt.rb → model/rtflt.rb} +1 -1
- data/lib/acirb/{rtleak.rb → model/rtleak.rb} +1 -1
- data/lib/acirb/{rtmap.rb → model/rtmap.rb} +1 -1
- data/lib/acirb/{rtpfx.rb → model/rtpfx.rb} +1 -1
- data/lib/acirb/{rtregcom.rb → model/rtregcom.rb} +1 -1
- data/lib/acirb/{rtsum.rb → model/rtsum.rb} +1 -1
- data/lib/acirb/{rule.rb → model/rule.rb} +1 -1
- data/lib/acirb/{satm.rb → model/satm.rb} +1 -1
- data/lib/acirb/{snmp.rb → model/snmp.rb} +1 -1
- data/lib/acirb/{span.rb → model/span.rb} +1 -1
- data/lib/acirb/{stats.rb → model/stats.rb} +1 -1
- data/lib/acirb/{statstore.rb → model/statstore.rb} +1 -1
- data/lib/acirb/{stormctrl.rb → model/stormctrl.rb} +1 -1
- data/lib/acirb/{stp.rb → model/stp.rb} +1 -1
- data/lib/acirb/{sts.rb → model/sts.rb} +1 -1
- data/lib/acirb/{svccore.rb → model/svccore.rb} +1 -1
- data/lib/acirb/{svi.rb → model/svi.rb} +1 -1
- data/lib/acirb/{synthetic.rb → model/synthetic.rb} +1 -1
- data/lib/acirb/{sysdebug.rb → model/sysdebug.rb} +1 -1
- data/lib/acirb/{sysfile.rb → model/sysfile.rb} +1 -1
- data/lib/acirb/{syshist.rb → model/syshist.rb} +1 -1
- data/lib/acirb/{syslog.rb → model/syslog.rb} +1 -1
- data/lib/acirb/{sysmgr.rb → model/sysmgr.rb} +1 -1
- data/lib/acirb/{sysmgrp.rb → model/sysmgrp.rb} +1 -1
- data/lib/acirb/{tag.rb → model/tag.rb} +1 -1
- data/lib/acirb/{task.rb → model/task.rb} +1 -1
- data/lib/acirb/{test.rb → model/test.rb} +1 -1
- data/lib/acirb/{testinfralab.rb → model/testinfralab.rb} +1 -1
- data/lib/acirb/model/throttler.rb +297 -0
- data/lib/acirb/{tlv.rb → model/tlv.rb} +1 -1
- data/lib/acirb/{top.rb → model/top.rb} +1 -1
- data/lib/acirb/{topoctrl.rb → model/topoctrl.rb} +1 -1
- data/lib/acirb/{traceroute.rb → model/traceroute.rb} +1 -1
- data/lib/acirb/{traceroutep.rb → model/traceroutep.rb} +1 -1
- data/lib/acirb/{trig.rb → model/trig.rb} +1 -1
- data/lib/acirb/{troubleshoot.rb → model/troubleshoot.rb} +1 -31
- data/lib/acirb/{tunnel.rb → model/tunnel.rb} +1 -1
- data/lib/acirb/model/ui.rb +57 -0
- data/lib/acirb/{uribv4.rb → model/uribv4.rb} +1 -1
- data/lib/acirb/{uribv6.rb → model/uribv6.rb} +1 -1
- data/lib/acirb/{viz.rb → model/viz.rb} +1 -1
- data/lib/acirb/{vlan.rb → model/vlan.rb} +1 -1
- data/lib/acirb/{vlanmgr.rb → model/vlanmgr.rb} +1 -1
- data/lib/acirb/{vmm.rb → model/vmm.rb} +1 -1
- data/lib/acirb/{vns.rb → model/vns.rb} +1 -1
- data/lib/acirb/{vpc.rb → model/vpc.rb} +1 -1
- data/lib/acirb/{vsvc.rb → model/vsvc.rb} +1 -1
- data/lib/acirb/{vtap.rb → model/vtap.rb} +1 -1
- data/lib/acirb/{vxlan.rb → model/vxlan.rb} +1 -1
- data/lib/acirb/{vz.rb → model/vz.rb} +1 -1
- data/lib/acirb/naming.rb +119 -43
- data/lib/{query.rb → acirb/query.rb} +1 -1
- data/lib/{restclient.rb → acirb/restclient.rb} +13 -3
- data/lib/acirb/version.rb +3 -0
- metadata +225 -207
- data/lib/autoloadmap.rb +0 -6626
- data/lib/mo.rb +0 -260
- data/lib/naming.rb +0 -124
- data/lib/version.rb +0 -3
File without changes
|
File without changes
|
@@ -3216,7 +3216,6 @@ module ACIrb
|
|
3216
3216
|
CLASSMAP['icmpv4Entity'] = 'Icmpv4Entity'
|
3217
3217
|
CLASSMAP['icmpv4If'] = 'Icmpv4If'
|
3218
3218
|
CLASSMAP['icmpv4Inst'] = 'Icmpv4Inst'
|
3219
|
-
CLASSMAP['icmpv6Dom'] = 'Icmpv6Dom'
|
3220
3219
|
CLASSMAP['icmpv6Entity'] = 'Icmpv6Entity'
|
3221
3220
|
CLASSMAP['icmpv6If'] = 'Icmpv6If'
|
3222
3221
|
CLASSMAP['icmpv6IfStats'] = 'Icmpv6IfStats'
|
@@ -3274,12 +3273,10 @@ module ACIrb
|
|
3274
3273
|
CLASSMAP['igmpsnoopEntity'] = 'IgmpsnoopEntity'
|
3275
3274
|
CLASSMAP['igmpsnoopEpgRec'] = 'IgmpsnoopEpgRec'
|
3276
3275
|
CLASSMAP['igmpsnoopHostRec'] = 'IgmpsnoopHostRec'
|
3277
|
-
CLASSMAP['igmpsnoopIf'] = 'IgmpsnoopIf'
|
3278
3276
|
CLASSMAP['igmpsnoopInst'] = 'IgmpsnoopInst'
|
3279
3277
|
CLASSMAP['igmpsnoopInstStats'] = 'IgmpsnoopInstStats'
|
3280
3278
|
CLASSMAP['igmpsnoopMcGrpRec'] = 'IgmpsnoopMcGrpRec'
|
3281
3279
|
CLASSMAP['igmpsnoopOIFRec'] = 'IgmpsnoopOIFRec'
|
3282
|
-
CLASSMAP['igmpsnoopQuerier'] = 'IgmpsnoopQuerier'
|
3283
3280
|
CLASSMAP['igmpsnoopQuerierP'] = 'IgmpsnoopQuerierP'
|
3284
3281
|
CLASSMAP['igmpsnoopQuerierSt'] = 'IgmpsnoopQuerierSt'
|
3285
3282
|
CLASSMAP['igmpsnoopRec'] = 'IgmpsnoopRec'
|
@@ -3449,7 +3446,6 @@ module ACIrb
|
|
3449
3446
|
CLASSMAP['infraRsFexp'] = 'InfraRsFexp'
|
3450
3447
|
CLASSMAP['infraRsFuncToEpg'] = 'InfraRsFuncToEpg'
|
3451
3448
|
CLASSMAP['infraRsFuncToEpgTask'] = 'InfraRsFuncToEpgTask'
|
3452
|
-
CLASSMAP['infraRsFwPol'] = 'InfraRsFwPol'
|
3453
3449
|
CLASSMAP['infraRsHIfPol'] = 'InfraRsHIfPol'
|
3454
3450
|
CLASSMAP['infraRsHPathAtt'] = 'InfraRsHPathAtt'
|
3455
3451
|
CLASSMAP['infraRsInfraBD'] = 'InfraRsInfraBD'
|
@@ -4193,7 +4189,6 @@ module ACIrb
|
|
4193
4189
|
CLASSMAP['lldpInstSendTask'] = 'LldpInstSendTask'
|
4194
4190
|
CLASSMAP['lldpInstSendTaskTask'] = 'LldpInstSendTaskTask'
|
4195
4191
|
CLASSMAP['lldpInstStats'] = 'LldpInstStats'
|
4196
|
-
CLASSMAP['lldpInstTask'] = 'LldpInstTask'
|
4197
4192
|
CLASSMAP['lldpMgmtAddr'] = 'LldpMgmtAddr'
|
4198
4193
|
CLASSMAP['lldpRsCtrlrAdjEpToStAdjEp'] = 'LldpRsCtrlrAdjEpToStAdjEp'
|
4199
4194
|
CLASSMAP['lldpRsLldpInstPolCons'] = 'LldpRsLldpInstPolCons'
|
@@ -4482,7 +4477,6 @@ module ACIrb
|
|
4482
4477
|
CLASSMAP['nwsFwPol'] = 'NwsFwPol'
|
4483
4478
|
CLASSMAP['nwsFwPolDef'] = 'NwsFwPolDef'
|
4484
4479
|
CLASSMAP['nwsRtDefaultFwPol'] = 'NwsRtDefaultFwPol'
|
4485
|
-
CLASSMAP['nwsRtFwPol'] = 'NwsRtFwPol'
|
4486
4480
|
CLASSMAP['nwsRtOverrideFwPol'] = 'NwsRtOverrideFwPol'
|
4487
4481
|
CLASSMAP['nwsRtResNwsFwPol'] = 'NwsRtResNwsFwPol'
|
4488
4482
|
CLASSMAP['oamExec'] = 'OamExec'
|
@@ -4705,7 +4699,6 @@ module ACIrb
|
|
4705
4699
|
CLASSMAP['ospfCtxDefAf'] = 'OspfCtxDefAf'
|
4706
4700
|
CLASSMAP['ospfCtxPol'] = 'OspfCtxPol'
|
4707
4701
|
CLASSMAP['ospfDb'] = 'OspfDb'
|
4708
|
-
CLASSMAP['ospfDbRec'] = 'OspfDbRec'
|
4709
4702
|
CLASSMAP['ospfDefRtLeakP'] = 'OspfDefRtLeakP'
|
4710
4703
|
CLASSMAP['ospfDom'] = 'OspfDom'
|
4711
4704
|
CLASSMAP['ospfDomStats'] = 'OspfDomStats'
|
@@ -4729,7 +4722,6 @@ module ACIrb
|
|
4729
4722
|
CLASSMAP['ospfLsaRec'] = 'OspfLsaRec'
|
4730
4723
|
CLASSMAP['ospfMaxLsaP'] = 'OspfMaxLsaP'
|
4731
4724
|
CLASSMAP['ospfMcNexthop'] = 'OspfMcNexthop'
|
4732
|
-
CLASSMAP['ospfNexthop'] = 'OspfNexthop'
|
4733
4725
|
CLASSMAP['ospfRibLeakP'] = 'OspfRibLeakP'
|
4734
4726
|
CLASSMAP['ospfRoute'] = 'OspfRoute'
|
4735
4727
|
CLASSMAP['ospfRsIfDefToOspfIf'] = 'OspfRsIfDefToOspfIf'
|
@@ -5931,7 +5923,6 @@ module ACIrb
|
|
5931
5923
|
CLASSMAP['trigTriggeredWindow'] = 'TrigTriggeredWindow'
|
5932
5924
|
CLASSMAP['trigWindow'] = 'TrigWindow'
|
5933
5925
|
CLASSMAP['troubleshootEpTransition'] = 'TroubleshootEpTransition'
|
5934
|
-
CLASSMAP['troubleshootReportGenStatus'] = 'TroubleshootReportGenStatus'
|
5935
5926
|
CLASSMAP['troubleshootReportStatus'] = 'TroubleshootReportStatus'
|
5936
5927
|
CLASSMAP['troubleshootRsSessionScheduler'] = 'TroubleshootRsSessionScheduler'
|
5937
5928
|
CLASSMAP['troubleshootRtTroubleshootSessionRel'] = 'TroubleshootRtTroubleshootSessionRel'
|
data/lib/acirb/mo.rb
CHANGED
@@ -1,77 +1,260 @@
|
|
1
|
-
|
2
|
-
require '
|
1
|
+
require 'acirb/restclient'
|
2
|
+
require 'rexml/document'
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
# rubocop:disable ClassLength
|
3
6
|
module ACIrb
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
'dn' => { 'isAdmin' => true, 'isImplicit' => true, 'isCreateOnly' => true, 'isDn' => true, 'isRn' => false },
|
13
|
-
'oCl' => { 'isAdmin' => true, 'isImplicit' => true, 'isCreateOnly' => false, 'isDn' => false, 'isRn' => false },
|
14
|
-
'oDn' => { 'isAdmin' => true, 'isImplicit' => false, 'isCreateOnly' => true, 'isDn' => false, 'isRn' => false },
|
15
|
-
'rn' => { 'isAdmin' => true, 'isImplicit' => true, 'isCreateOnly' => true, 'isDn' => false, 'isRn' => true },
|
16
|
-
'status' => { 'isAdmin' => true, 'isImplicit' => true, 'isCreateOnly' => false, 'isDn' => false, 'isRn' => false } }
|
17
|
-
@child_classes = []
|
18
|
-
@label = 'None'
|
19
|
-
@naming_props = []
|
20
|
-
@read_only = false
|
21
|
-
|
22
|
-
def rn
|
23
|
-
''
|
7
|
+
# A generic managed object class
|
8
|
+
class MO
|
9
|
+
# Class variable properties
|
10
|
+
class << self
|
11
|
+
# for class variables
|
12
|
+
attr_reader :prefix, :class_name, :child_classes, :props,
|
13
|
+
:naming_props, :prefixes, :ruby_class, :containers,
|
14
|
+
:read_only
|
24
15
|
end
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
@props = { 'childAction' => { 'isAdmin' => true, 'isImplicit' => true, 'isCreateOnly' => false, 'isDn' => false, 'isRn' => false },
|
34
|
-
'count' => { 'isAdmin' => true, 'isImplicit' => true, 'isCreateOnly' => false, 'isDn' => false, 'isRn' => false },
|
35
|
-
'dn' => { 'isAdmin' => true, 'isImplicit' => true, 'isCreateOnly' => true, 'isDn' => true, 'isRn' => false },
|
36
|
-
'lcOwn' => { 'isAdmin' => true, 'isImplicit' => true, 'isCreateOnly' => false, 'isDn' => false, 'isRn' => false },
|
37
|
-
'modTs' => { 'isAdmin' => true, 'isImplicit' => true, 'isCreateOnly' => false, 'isDn' => false, 'isRn' => false },
|
38
|
-
'rn' => { 'isAdmin' => true, 'isImplicit' => true, 'isCreateOnly' => true, 'isDn' => false, 'isRn' => true },
|
39
|
-
'status' => { 'isAdmin' => true, 'isImplicit' => true, 'isCreateOnly' => false, 'isDn' => false, 'isRn' => false } }
|
40
|
-
@child_classes = []
|
41
|
-
@label = 'None'
|
42
|
-
@naming_props = []
|
43
|
-
@read_only = true
|
44
|
-
|
45
|
-
def rn
|
46
|
-
'cnt'
|
16
|
+
|
17
|
+
# for instance variables
|
18
|
+
attr_reader :children, :attributes
|
19
|
+
attr_accessor :parent, :dirty_props
|
20
|
+
|
21
|
+
# Internal: Returns class prefixes
|
22
|
+
def prefixes
|
23
|
+
self.class.prefixes
|
47
24
|
end
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
def rn
|
73
|
-
'updateinfo-' << @attributes['index'] << ''
|
25
|
+
|
26
|
+
# Internal: Returns child classes
|
27
|
+
def child_classes
|
28
|
+
self.class.child_classes
|
29
|
+
end
|
30
|
+
|
31
|
+
# Internal: Returns containiner classes
|
32
|
+
def containers
|
33
|
+
self.class.containers
|
34
|
+
end
|
35
|
+
|
36
|
+
# Internal: Returns naming properties
|
37
|
+
def naming_props
|
38
|
+
self.class.naming_props
|
39
|
+
end
|
40
|
+
|
41
|
+
# Internal: Returns class properties
|
42
|
+
def props
|
43
|
+
self.class.props
|
44
|
+
end
|
45
|
+
|
46
|
+
# Internal: Returns object class name in APIC package.class notation
|
47
|
+
def class_name
|
48
|
+
self.class.class_name
|
74
49
|
end
|
75
|
-
end
|
76
50
|
|
51
|
+
# Internal: Returns class name as ruby package notation
|
52
|
+
def ruby_class
|
53
|
+
self.class.ruby_class
|
54
|
+
end
|
55
|
+
|
56
|
+
# Interal: Returns boolean for if this class is read only
|
57
|
+
def read_only
|
58
|
+
self.class.read_only
|
59
|
+
end
|
60
|
+
|
61
|
+
def initialize(create_parent, create_options = {})
|
62
|
+
# always mark dirty unless otherwise specified
|
63
|
+
if create_options[:mark_dirty] == false
|
64
|
+
mark_dirty = false
|
65
|
+
else
|
66
|
+
mark_dirty = true
|
67
|
+
end
|
68
|
+
create_options.delete(:mark_dirty)
|
69
|
+
|
70
|
+
@attributes = {}
|
71
|
+
@dirty_props = []
|
72
|
+
props.each do |prop, _flags|
|
73
|
+
@attributes[prop.to_s] = ''
|
74
|
+
end
|
75
|
+
@children = []
|
76
|
+
|
77
|
+
if create_parent.nil?
|
78
|
+
@parent = nil
|
79
|
+
else
|
80
|
+
@parent = create_parent
|
81
|
+
@parent.add_child(self)
|
82
|
+
end
|
83
|
+
|
84
|
+
# for performance reasons, do not use set_prop here
|
85
|
+
# and build the dn string after all attributes are set
|
86
|
+
create_options.each do |k, v|
|
87
|
+
flags = props[k.to_s]
|
88
|
+
@attributes[k.to_s] = v.to_s
|
89
|
+
@dirty_props.push(k.to_s) if mark_dirty
|
90
|
+
end
|
91
|
+
@attributes['dn'] = build_dn
|
92
|
+
@attributes['rn'] = rn
|
93
|
+
end
|
94
|
+
|
95
|
+
# Internal: Adds another MO object as a child to this class
|
96
|
+
def add_child(child)
|
97
|
+
unless child.containers.include?(ruby_class)
|
98
|
+
fail child.class.to_s + ' cannot be child of ' + self.class.to_s
|
99
|
+
end
|
100
|
+
@children.each do |mo|
|
101
|
+
return nil if mo.dn == child.dn
|
102
|
+
end
|
103
|
+
@children.push(child)
|
104
|
+
child.parent = self
|
105
|
+
end
|
106
|
+
|
107
|
+
def set_prop(key, val)
|
108
|
+
key = key.to_s
|
109
|
+
val = val.to_s
|
110
|
+
|
111
|
+
return if key == 'dn' || key == 'rn'
|
112
|
+
|
113
|
+
@attributes[key] = val
|
114
|
+
@dirty_props.push(key)
|
115
|
+
|
116
|
+
if naming_props.include? key
|
117
|
+
dn_str = build_dn
|
118
|
+
@attributes['dn'] = dn_str
|
119
|
+
@attributes['rn'] = rn
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
def root
|
124
|
+
p = self
|
125
|
+
p = p.parent until p.parent.nil?
|
126
|
+
p
|
127
|
+
end
|
128
|
+
|
129
|
+
def get_attributes_to_include
|
130
|
+
incl_attr = {}
|
131
|
+
@attributes.each do |key, value|
|
132
|
+
if props[key.to_s]['isDn'] == true || props[key.to_s]['isRn'] == true || @dirty_props.include?(key) || naming_props.include?(key)
|
133
|
+
incl_attr[key.to_s] = value
|
134
|
+
end
|
135
|
+
end
|
136
|
+
incl_attr
|
137
|
+
end
|
138
|
+
|
139
|
+
def get_children_to_include
|
140
|
+
incl_children = []
|
141
|
+
@children.each do |child|
|
142
|
+
incl_children.push(child) if child.read_only == false
|
143
|
+
end
|
144
|
+
incl_children
|
145
|
+
end
|
146
|
+
|
147
|
+
def to_xml
|
148
|
+
# TODO: Use nokogiri here
|
149
|
+
# https://github.com/sparklemotion/nokogiri/wiki/Cheat-sheet
|
150
|
+
x = REXML::Element.new mo_type.to_s
|
151
|
+
|
152
|
+
get_attributes_to_include.each do |key, value|
|
153
|
+
x.attributes[key.to_s] = value
|
154
|
+
end
|
155
|
+
|
156
|
+
get_children_to_include.each do |child|
|
157
|
+
x.add_element(child.to_xml)
|
158
|
+
end
|
159
|
+
x
|
160
|
+
end
|
161
|
+
|
162
|
+
def to_hash
|
163
|
+
h = {}
|
164
|
+
h[mo_type.to_s] = {}
|
165
|
+
h[mo_type.to_s]['attributes'] = {}
|
166
|
+
get_attributes_to_include.each do |key, value|
|
167
|
+
h[mo_type.to_s]['attributes'][key.to_s] = value
|
168
|
+
end
|
169
|
+
h[mo_type.to_s]['attributes']['dn'] = dn
|
170
|
+
h[mo_type.to_s]['children'] = [] if children.length > 0
|
171
|
+
get_children_to_include.each do |child|
|
172
|
+
h[mo_type.to_s]['children'].push(child.to_hash)
|
173
|
+
end
|
174
|
+
h
|
175
|
+
end
|
176
|
+
|
177
|
+
def to_json
|
178
|
+
JSON.dump(to_hash)
|
179
|
+
end
|
180
|
+
|
181
|
+
def create(restclient)
|
182
|
+
self.status = 'created,modified'
|
183
|
+
restclient.post(data: self,
|
184
|
+
url: "/api/mo/#{dn}.#{restclient.format}")
|
185
|
+
@dirty_props = []
|
186
|
+
end
|
187
|
+
|
188
|
+
def destroy(restclient)
|
189
|
+
self.status = 'deleted'
|
190
|
+
restclient.post(data: self,
|
191
|
+
url: "/api/mo/#{dn}.#{restclient.format}")
|
192
|
+
@dirty_props = []
|
193
|
+
end
|
194
|
+
|
195
|
+
def exists(restclient, recurse = false)
|
196
|
+
options = {}
|
197
|
+
options[:subtree] = 'full' if recurse
|
198
|
+
if restclient.lookupByDn(dn, options)
|
199
|
+
if recurse == true
|
200
|
+
children.each do |child|
|
201
|
+
unless child.exists(restclient, recurse = true)
|
202
|
+
return false
|
203
|
+
end
|
204
|
+
end
|
205
|
+
end
|
206
|
+
return true
|
207
|
+
else
|
208
|
+
return false
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
def build_dn
|
213
|
+
if @parent.nil?
|
214
|
+
return rn
|
215
|
+
else
|
216
|
+
parent_dn = '' << @parent.dn
|
217
|
+
if parent_dn == ''
|
218
|
+
return rn
|
219
|
+
else
|
220
|
+
parent_dn << '/'
|
221
|
+
parent_dn << rn
|
222
|
+
return parent_dn
|
223
|
+
end
|
224
|
+
end
|
225
|
+
end
|
226
|
+
|
227
|
+
def mo_type
|
228
|
+
self.class.class_name.delete('.')
|
229
|
+
end
|
230
|
+
|
231
|
+
def to_s
|
232
|
+
def hash_to_table(h)
|
233
|
+
len = h.keys.map(&:length).max
|
234
|
+
ret = []
|
235
|
+
h.each do |k, v|
|
236
|
+
ret.push(('%' + len.to_s + 's: %s') % [k.to_s, v.to_s])
|
237
|
+
end
|
238
|
+
ret
|
239
|
+
end
|
240
|
+
header_table = hash_to_table(
|
241
|
+
'Class' => class_name
|
242
|
+
)
|
243
|
+
attribute_table = hash_to_table(attributes)
|
244
|
+
header_table.push(attribute_table)
|
245
|
+
header_table.join("\n")
|
246
|
+
end
|
247
|
+
|
248
|
+
def method_missing(name, *args, &block)
|
249
|
+
lookup_name = name.to_s
|
250
|
+
return @attributes[lookup_name] if @attributes.key? lookup_name
|
251
|
+
return set_prop(lookup_name.chomp('='), args[0]) if @attributes.key? lookup_name.chomp('=')
|
252
|
+
child_matches = []
|
253
|
+
@children.each do |child|
|
254
|
+
child_matches.push(child) if child.class.prefix.sub('-', '') == lookup_name
|
255
|
+
end
|
256
|
+
return child_matches if child_matches.length > 0
|
257
|
+
super
|
258
|
+
end
|
259
|
+
end
|
77
260
|
end
|