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
data/lib/mo.rb
DELETED
@@ -1,260 +0,0 @@
|
|
1
|
-
require 'restclient'
|
2
|
-
require 'rexml/document'
|
3
|
-
require 'json'
|
4
|
-
|
5
|
-
# rubocop:disable ClassLength
|
6
|
-
module ACIrb
|
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
|
15
|
-
end
|
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
|
24
|
-
end
|
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
|
49
|
-
end
|
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
|
260
|
-
end
|
data/lib/naming.rb
DELETED
@@ -1,124 +0,0 @@
|
|
1
|
-
module ACIrb
|
2
|
-
class Naming
|
3
|
-
def self.split_outside_brackets(dn_str, splitChar)
|
4
|
-
depth = 0
|
5
|
-
place = 0
|
6
|
-
last_split = 0
|
7
|
-
pieces = []
|
8
|
-
while place < dn_str.length
|
9
|
-
c = dn_str[place]
|
10
|
-
if c == '['
|
11
|
-
depth += 1
|
12
|
-
elsif c == ']'
|
13
|
-
depth -= 1
|
14
|
-
end
|
15
|
-
if depth == 0 && c == splitChar && place != 0
|
16
|
-
pieces.push(dn_str[last_split..place])
|
17
|
-
last_split = place + 1
|
18
|
-
end
|
19
|
-
place += 1
|
20
|
-
end
|
21
|
-
pieces.push(dn_str[last_split..place - 1]) if place != last_split
|
22
|
-
|
23
|
-
pieces
|
24
|
-
end
|
25
|
-
|
26
|
-
def self.strip_last_delimiter(str, delim)
|
27
|
-
if str[-1] == delim
|
28
|
-
return str[0..-2]
|
29
|
-
else
|
30
|
-
return str
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def self.strip_outer_brackets(str)
|
35
|
-
if str[0] == '[' && str[-1] == ']'
|
36
|
-
return str[1..-2]
|
37
|
-
else
|
38
|
-
return str
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def self.split_dn_str(dn_str)
|
43
|
-
rns = []
|
44
|
-
split_outside_brackets(dn_str, '/').each do |rn|
|
45
|
-
rns.push(strip_last_delimiter(rn, '/'))
|
46
|
-
end
|
47
|
-
rns
|
48
|
-
end
|
49
|
-
|
50
|
-
def self.split_rn_str(rn_str, delims)
|
51
|
-
rn_pieces = []
|
52
|
-
delims.each_with_index do |(delim, _has_prop), index|
|
53
|
-
begin_delim = rn_str.split(delim)
|
54
|
-
|
55
|
-
if index == delims.length - 1
|
56
|
-
name_prop = begin_delim[1]
|
57
|
-
else
|
58
|
-
rn_str = begin_delim[1]
|
59
|
-
end_delim = rn_str.split(delims[index + 1][0])
|
60
|
-
name_prop = end_delim[0]
|
61
|
-
end
|
62
|
-
|
63
|
-
rn_pieces.push(delim)
|
64
|
-
rn_pieces.push(name_prop)
|
65
|
-
end
|
66
|
-
rn_pieces
|
67
|
-
end
|
68
|
-
|
69
|
-
def self.get_mo_from_dn(dn_str)
|
70
|
-
rns = split_dn_str(dn_str)
|
71
|
-
mo = ACIrb::TopRoot.new(nil)
|
72
|
-
rns.each do |rn|
|
73
|
-
mo = get_mo_from_rn(mo, rn)
|
74
|
-
end
|
75
|
-
mo
|
76
|
-
end
|
77
|
-
|
78
|
-
def self.get_mo_from_rn(parent_mo, rn_str)
|
79
|
-
mo = get_class_from_child_prefix(parent_mo, rn_str).new(parent_mo)
|
80
|
-
return mo if mo.naming_props.length == 0
|
81
|
-
rn_pieces = split_rn_str(rn_str, mo.prefixes)
|
82
|
-
rn_values = rn_pieces.values_at(*(1..rn_pieces.length - 1).step(2))
|
83
|
-
mo.naming_props.each_with_index do |prop_name, index|
|
84
|
-
prop_val = rn_values[index]
|
85
|
-
mo.set_prop(prop_name.to_s, strip_outer_brackets(prop_val))
|
86
|
-
end
|
87
|
-
mo
|
88
|
-
end
|
89
|
-
|
90
|
-
def self.match_prefix_in_list(rn_str, prefix_list)
|
91
|
-
matches = false
|
92
|
-
prefix_match = ''
|
93
|
-
prefix_list.each do |prefix|
|
94
|
-
if rn_str.start_with?(prefix)
|
95
|
-
matches = true
|
96
|
-
prefix_match = prefix
|
97
|
-
break
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
return prefix_match if matches
|
102
|
-
|
103
|
-
nil
|
104
|
-
end
|
105
|
-
|
106
|
-
def self.get_class_from_child_prefix(parent_mo, rn_str)
|
107
|
-
prefix_to_class = {}
|
108
|
-
parent_mo.child_classes.each do |c|
|
109
|
-
cls = ACIrb.const_get(c)
|
110
|
-
prefix_to_class[cls.prefix] = cls
|
111
|
-
end
|
112
|
-
|
113
|
-
lpm = prefix_to_class.keys.sort_by { |x| -1 * x.length }
|
114
|
-
prefix_match = match_prefix_in_list(rn_str, lpm)
|
115
|
-
|
116
|
-
if prefix_match
|
117
|
-
return prefix_to_class[prefix_match]
|
118
|
-
else
|
119
|
-
fail 'Unknown child prefix ' + rn_str + ' in container class ' +
|
120
|
-
parent_mo.class.to_s
|
121
|
-
end
|
122
|
-
end
|
123
|
-
end
|
124
|
-
end
|
data/lib/version.rb
DELETED