acirb 1.1.2.1 → 1.1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. checksums.yaml +4 -4
  2. data/lib/acirb.rb +9 -9
  3. data/lib/acirb/autoloadmap.rb +6617 -0
  4. data/lib/{events.rb → acirb/events.rb} +1 -1
  5. data/lib/{loader.rb → acirb/loader.rb} +0 -0
  6. data/lib/{logging.rb → acirb/logging.rb} +0 -0
  7. data/lib/{lookup.rb → acirb/lookup.rb} +0 -9
  8. data/lib/acirb/mo.rb +254 -71
  9. data/lib/acirb/{aaa.rb → model/aaa.rb} +1 -1
  10. data/lib/acirb/{ac.rb → model/ac.rb} +1 -1
  11. data/lib/acirb/{action.rb → model/action.rb} +1 -1
  12. data/lib/acirb/{actrl.rb → model/actrl.rb} +1 -1
  13. data/lib/acirb/{actrlcap.rb → model/actrlcap.rb} +1 -1
  14. data/lib/acirb/{adcom.rb → model/adcom.rb} +1 -1
  15. data/lib/acirb/{aib.rb → model/aib.rb} +1 -1
  16. data/lib/acirb/{arp.rb → model/arp.rb} +1 -1
  17. data/lib/acirb/{bfd.rb → model/bfd.rb} +1 -1
  18. data/lib/acirb/{bgp.rb → model/bgp.rb} +1 -1
  19. data/lib/acirb/{callhome.rb → model/callhome.rb} +1 -1
  20. data/lib/acirb/{cap.rb → model/cap.rb} +1 -1
  21. data/lib/acirb/{cdp.rb → model/cdp.rb} +1 -1
  22. data/lib/acirb/{cnw.rb → model/cnw.rb} +1 -1
  23. data/lib/acirb/{comm.rb → model/comm.rb} +1 -1
  24. data/lib/acirb/{comp.rb → model/comp.rb} +1 -1
  25. data/lib/acirb/{compat.rb → model/compat.rb} +1 -1
  26. data/lib/acirb/{condition.rb → model/condition.rb} +1 -1
  27. data/lib/acirb/{config.rb → model/config.rb} +1 -1
  28. data/lib/acirb/{coop.rb → model/coop.rb} +1 -1
  29. data/lib/acirb/{copp.rb → model/copp.rb} +1 -1
  30. data/lib/acirb/{ctrlr.rb → model/ctrlr.rb} +1 -1
  31. data/lib/acirb/{ctx.rb → model/ctx.rb} +1 -1
  32. data/lib/acirb/{datetime.rb → model/datetime.rb} +1 -1
  33. data/lib/acirb/{dbg.rb → model/dbg.rb} +1 -1
  34. data/lib/acirb/{dbgac.rb → model/dbgac.rb} +1 -1
  35. data/lib/acirb/{dbgexp.rb → model/dbgexp.rb} +1 -1
  36. data/lib/acirb/{dhcp.rb → model/dhcp.rb} +1 -1
  37. data/lib/acirb/{dhcptlv.rb → model/dhcptlv.rb} +1 -1
  38. data/lib/acirb/{dhcptlvpol.rb → model/dhcptlvpol.rb} +1 -1
  39. data/lib/acirb/{dlgt.rb → model/dlgt.rb} +1 -1
  40. data/lib/acirb/{dns.rb → model/dns.rb} +1 -1
  41. data/lib/acirb/model/dpp.rb +2295 -0
  42. data/lib/acirb/{draw.rb → model/draw.rb} +1 -1
  43. data/lib/acirb/{edr.rb → model/edr.rb} +1 -1
  44. data/lib/acirb/{eigrp.rb → model/eigrp.rb} +1 -1
  45. data/lib/acirb/{ep.rb → model/ep.rb} +1 -1
  46. data/lib/acirb/{epm.rb → model/epm.rb} +1 -1
  47. data/lib/acirb/{eptrk.rb → model/eptrk.rb} +1 -1
  48. data/lib/acirb/{eqpt.rb → model/eqpt.rb} +1 -1
  49. data/lib/acirb/{eqptcap.rb → model/eqptcap.rb} +1 -1
  50. data/lib/acirb/{eqptcapacity.rb → model/eqptcapacity.rb} +1 -1
  51. data/lib/acirb/{eqptdiag.rb → model/eqptdiag.rb} +1 -1
  52. data/lib/acirb/{eqptdiagp.rb → model/eqptdiagp.rb} +1 -1
  53. data/lib/acirb/{ethpm.rb → model/ethpm.rb} +1 -1
  54. data/lib/acirb/{event.rb → model/event.rb} +1 -1
  55. data/lib/acirb/{extnw.rb → model/extnw.rb} +1 -1
  56. data/lib/acirb/{fabric.rb → model/fabric.rb} +1 -1
  57. data/lib/acirb/{fault.rb → model/fault.rb} +1 -1
  58. data/lib/acirb/model/fcpr.rb +353 -0
  59. data/lib/acirb/{file.rb → model/file.rb} +1 -1
  60. data/lib/acirb/{firmware.rb → model/firmware.rb} +1 -1
  61. data/lib/acirb/{fmcast.rb → model/fmcast.rb} +1 -1
  62. data/lib/acirb/{frmwrk.rb → model/frmwrk.rb} +1 -1
  63. data/lib/acirb/{fsm.rb → model/fsm.rb} +1 -1
  64. data/lib/acirb/{fv.rb → model/fv.rb} +1 -1
  65. data/lib/acirb/{fvcap.rb → model/fvcap.rb} +1 -1
  66. data/lib/acirb/{fvns.rb → model/fvns.rb} +1 -1
  67. data/lib/acirb/{fvtopo.rb → model/fvtopo.rb} +1 -1
  68. data/lib/acirb/{geo.rb → model/geo.rb} +1 -1
  69. data/lib/acirb/{glean.rb → model/glean.rb} +1 -1
  70. data/lib/acirb/{ha.rb → model/ha.rb} +1 -1
  71. data/lib/acirb/{health.rb → model/health.rb} +1 -1
  72. data/lib/acirb/{hvs.rb → model/hvs.rb} +1 -1
  73. data/lib/acirb/{icmp.rb → model/icmp.rb} +1 -1
  74. data/lib/acirb/{icmpv4.rb → model/icmpv4.rb} +1 -1
  75. data/lib/acirb/{icmpv6.rb → model/icmpv6.rb} +1 -24
  76. data/lib/acirb/{ident.rb → model/ident.rb} +1 -1
  77. data/lib/acirb/{igmp.rb → model/igmp.rb} +1 -1
  78. data/lib/acirb/{igmpsnoop.rb → model/igmpsnoop.rb} +1 -55
  79. data/lib/acirb/{im.rb → model/im.rb} +1 -1
  80. data/lib/acirb/{imginstall.rb → model/imginstall.rb} +1 -1
  81. data/lib/acirb/{infra.rb → model/infra.rb} +1 -35
  82. data/lib/acirb/{ip.rb → model/ip.rb} +1 -1
  83. data/lib/acirb/{ipmcsnoop.rb → model/ipmcsnoop.rb} +1 -1
  84. data/lib/acirb/{ipv4.rb → model/ipv4.rb} +1 -1
  85. data/lib/acirb/{ipv6.rb → model/ipv6.rb} +1 -1
  86. data/lib/acirb/{isis.rb → model/isis.rb} +1 -1
  87. data/lib/acirb/{isistlv.rb → model/isistlv.rb} +1 -1
  88. data/lib/acirb/{l1.rb → model/l1.rb} +1 -1
  89. data/lib/acirb/{l1cap.rb → model/l1cap.rb} +1 -1
  90. data/lib/acirb/{l2.rb → model/l2.rb} +1 -1
  91. data/lib/acirb/{l2cap.rb → model/l2cap.rb} +1 -1
  92. data/lib/acirb/{l2ext.rb → model/l2ext.rb} +1 -1
  93. data/lib/acirb/{l3.rb → model/l3.rb} +1 -1
  94. data/lib/acirb/{l3cap.rb → model/l3cap.rb} +1 -1
  95. data/lib/acirb/{l3ext.rb → model/l3ext.rb} +1 -1
  96. data/lib/acirb/{l3vm.rb → model/l3vm.rb} +1 -1
  97. data/lib/acirb/{l4.rb → model/l4.rb} +1 -1
  98. data/lib/acirb/{lacp.rb → model/lacp.rb} +1 -1
  99. data/lib/acirb/{lbp.rb → model/lbp.rb} +1 -1
  100. data/lib/acirb/{leqpt.rb → model/leqpt.rb} +1 -1
  101. data/lib/acirb/{lldp.rb → model/lldp.rb} +1 -38
  102. data/lib/acirb/{lldptlv.rb → model/lldptlv.rb} +1 -1
  103. data/lib/acirb/{lldptlvpol.rb → model/lldptlvpol.rb} +1 -1
  104. data/lib/acirb/{maint.rb → model/maint.rb} +1 -1
  105. data/lib/acirb/{mcast.rb → model/mcast.rb} +1 -1
  106. data/lib/acirb/{mcp.rb → model/mcp.rb} +1 -1
  107. data/lib/acirb/{memory.rb → model/memory.rb} +1 -1
  108. data/lib/acirb/{mgmt.rb → model/mgmt.rb} +1 -1
  109. data/lib/acirb/{mldsnoop.rb → model/mldsnoop.rb} +1 -1
  110. data/lib/acirb/model/mo.rb +77 -0
  111. data/lib/acirb/{mock.rb → model/mock.rb} +1 -1
  112. data/lib/acirb/{mon.rb → model/mon.rb} +1 -1
  113. data/lib/acirb/{monitor.rb → model/monitor.rb} +1 -1
  114. data/lib/acirb/model/naming.rb +48 -0
  115. data/lib/acirb/{nd.rb → model/nd.rb} +1 -1
  116. data/lib/acirb/{nw.rb → model/nw.rb} +1 -1
  117. data/lib/acirb/{nws.rb → model/nws.rb} +1 -25
  118. data/lib/acirb/{oam.rb → model/oam.rb} +1 -1
  119. data/lib/acirb/{observer.rb → model/observer.rb} +1 -1
  120. data/lib/acirb/{opflex.rb → model/opflex.rb} +1 -1
  121. data/lib/acirb/model/opflexp.rb +405 -0
  122. data/lib/acirb/{os.rb → model/os.rb} +1 -1
  123. data/lib/acirb/{ospf.rb → model/ospf.rb} +1 -46
  124. data/lib/acirb/{ospfv3.rb → model/ospfv3.rb} +1 -1
  125. data/lib/acirb/{pc.rb → model/pc.rb} +1 -1
  126. data/lib/acirb/{pcons.rb → model/pcons.rb} +1 -1
  127. data/lib/acirb/{phys.rb → model/phys.rb} +1 -1
  128. data/lib/acirb/{ping.rb → model/ping.rb} +1 -1
  129. data/lib/acirb/{pki.rb → model/pki.rb} +1 -1
  130. data/lib/acirb/{planner.rb → model/planner.rb} +1 -1
  131. data/lib/acirb/{pol.rb → model/pol.rb} +1 -1
  132. data/lib/acirb/{policer.rb → model/policer.rb} +1 -1
  133. data/lib/acirb/{pool.rb → model/pool.rb} +1 -1
  134. data/lib/acirb/{pres.rb → model/pres.rb} +1 -1
  135. data/lib/acirb/{proc.rb → model/proc.rb} +1 -1
  136. data/lib/acirb/{psu.rb → model/psu.rb} +1 -1
  137. data/lib/acirb/{qos.rb → model/qos.rb} +1 -1
  138. data/lib/acirb/{qosm.rb → model/qosm.rb} +1 -1
  139. data/lib/acirb/{qosp.rb → model/qosp.rb} +1 -1
  140. data/lib/acirb/{rbqm.rb → model/rbqm.rb} +1 -1
  141. data/lib/acirb/model/recovery.rb +303 -0
  142. data/lib/acirb/{regress.rb → model/regress.rb} +1 -1
  143. data/lib/acirb/{reln.rb → model/reln.rb} +1 -1
  144. data/lib/acirb/{repl.rb → model/repl.rb} +1 -1
  145. data/lib/acirb/{res.rb → model/res.rb} +1 -1
  146. data/lib/acirb/{rib.rb → model/rib.rb} +1 -1
  147. data/lib/acirb/{rmon.rb → model/rmon.rb} +1 -1
  148. data/lib/acirb/{rpm.rb → model/rpm.rb} +1 -1
  149. data/lib/acirb/{rtcom.rb → model/rtcom.rb} +1 -1
  150. data/lib/acirb/{rtctrl.rb → model/rtctrl.rb} +1 -1
  151. data/lib/acirb/{rtextcom.rb → model/rtextcom.rb} +1 -1
  152. data/lib/acirb/{rtflt.rb → model/rtflt.rb} +1 -1
  153. data/lib/acirb/{rtleak.rb → model/rtleak.rb} +1 -1
  154. data/lib/acirb/{rtmap.rb → model/rtmap.rb} +1 -1
  155. data/lib/acirb/{rtpfx.rb → model/rtpfx.rb} +1 -1
  156. data/lib/acirb/{rtregcom.rb → model/rtregcom.rb} +1 -1
  157. data/lib/acirb/{rtsum.rb → model/rtsum.rb} +1 -1
  158. data/lib/acirb/{rule.rb → model/rule.rb} +1 -1
  159. data/lib/acirb/{satm.rb → model/satm.rb} +1 -1
  160. data/lib/acirb/{snmp.rb → model/snmp.rb} +1 -1
  161. data/lib/acirb/{span.rb → model/span.rb} +1 -1
  162. data/lib/acirb/{stats.rb → model/stats.rb} +1 -1
  163. data/lib/acirb/{statstore.rb → model/statstore.rb} +1 -1
  164. data/lib/acirb/{stormctrl.rb → model/stormctrl.rb} +1 -1
  165. data/lib/acirb/{stp.rb → model/stp.rb} +1 -1
  166. data/lib/acirb/{sts.rb → model/sts.rb} +1 -1
  167. data/lib/acirb/{svccore.rb → model/svccore.rb} +1 -1
  168. data/lib/acirb/{svi.rb → model/svi.rb} +1 -1
  169. data/lib/acirb/{synthetic.rb → model/synthetic.rb} +1 -1
  170. data/lib/acirb/{sysdebug.rb → model/sysdebug.rb} +1 -1
  171. data/lib/acirb/{sysfile.rb → model/sysfile.rb} +1 -1
  172. data/lib/acirb/{syshist.rb → model/syshist.rb} +1 -1
  173. data/lib/acirb/{syslog.rb → model/syslog.rb} +1 -1
  174. data/lib/acirb/{sysmgr.rb → model/sysmgr.rb} +1 -1
  175. data/lib/acirb/{sysmgrp.rb → model/sysmgrp.rb} +1 -1
  176. data/lib/acirb/{tag.rb → model/tag.rb} +1 -1
  177. data/lib/acirb/{task.rb → model/task.rb} +1 -1
  178. data/lib/acirb/{test.rb → model/test.rb} +1 -1
  179. data/lib/acirb/{testinfralab.rb → model/testinfralab.rb} +1 -1
  180. data/lib/acirb/model/throttler.rb +297 -0
  181. data/lib/acirb/{tlv.rb → model/tlv.rb} +1 -1
  182. data/lib/acirb/{top.rb → model/top.rb} +1 -1
  183. data/lib/acirb/{topoctrl.rb → model/topoctrl.rb} +1 -1
  184. data/lib/acirb/{traceroute.rb → model/traceroute.rb} +1 -1
  185. data/lib/acirb/{traceroutep.rb → model/traceroutep.rb} +1 -1
  186. data/lib/acirb/{trig.rb → model/trig.rb} +1 -1
  187. data/lib/acirb/{troubleshoot.rb → model/troubleshoot.rb} +1 -31
  188. data/lib/acirb/{tunnel.rb → model/tunnel.rb} +1 -1
  189. data/lib/acirb/model/ui.rb +57 -0
  190. data/lib/acirb/{uribv4.rb → model/uribv4.rb} +1 -1
  191. data/lib/acirb/{uribv6.rb → model/uribv6.rb} +1 -1
  192. data/lib/acirb/{viz.rb → model/viz.rb} +1 -1
  193. data/lib/acirb/{vlan.rb → model/vlan.rb} +1 -1
  194. data/lib/acirb/{vlanmgr.rb → model/vlanmgr.rb} +1 -1
  195. data/lib/acirb/{vmm.rb → model/vmm.rb} +1 -1
  196. data/lib/acirb/{vns.rb → model/vns.rb} +1 -1
  197. data/lib/acirb/{vpc.rb → model/vpc.rb} +1 -1
  198. data/lib/acirb/{vsvc.rb → model/vsvc.rb} +1 -1
  199. data/lib/acirb/{vtap.rb → model/vtap.rb} +1 -1
  200. data/lib/acirb/{vxlan.rb → model/vxlan.rb} +1 -1
  201. data/lib/acirb/{vz.rb → model/vz.rb} +1 -1
  202. data/lib/acirb/naming.rb +119 -43
  203. data/lib/{query.rb → acirb/query.rb} +1 -1
  204. data/lib/{restclient.rb → acirb/restclient.rb} +13 -3
  205. data/lib/acirb/version.rb +3 -0
  206. metadata +225 -207
  207. data/lib/autoloadmap.rb +0 -6626
  208. data/lib/mo.rb +0 -260
  209. data/lib/naming.rb +0 -124
  210. 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
@@ -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
@@ -1,3 +0,0 @@
1
- module ACIrb
2
- VERSION = '1.1.2.1'
3
- end