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