Class: Cisco::ObjectGroupEntry
- Defined in:
- lib/cisco_node_utils/object_group_entry.rb
Overview
node_utils class for object_group_entry
Instance Attribute Summary collapse
-
#afi ⇒ Object
readonly
Returns the value of attribute afi.
-
#grp_name ⇒ Object
readonly
Returns the value of attribute grp_name.
-
#type ⇒ Object
readonly
Returns the value of attribute type.
Class Method Summary collapse
Instance Method Summary collapse
- #address ⇒ Object
- #address=(address) ⇒ Object
- #destroy ⇒ Object
- #entry_get ⇒ Object
- #entry_set(attrs) ⇒ Object
-
#initialize(afi, type, name, seqno) ⇒ ObjectGroupEntry
constructor
A new instance of ObjectGroupEntry.
- #port ⇒ Object
- #port=(port) ⇒ Object
-
#seqno ⇒ Object
PROPERTIES ———-.
-
#set_args_keys(hash = {}) ⇒ Object
rubocop:disable Style/AccessorMethodName.
-
#set_args_keys_default ⇒ Object
Helper method to delete @set_args hash keys.
Methods inherited from NodeUtil
client, #client, config_get, #config_get, #config_get_default, config_get_default, config_set, #config_set, #get, #ios_xr?, #nexus?, #node, node, platform, #platform, supports?, #supports?
Constructor Details
#initialize(afi, type, name, seqno) ⇒ ObjectGroupEntry
Returns a new instance of ObjectGroupEntry.
27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/cisco_node_utils/object_group_entry.rb', line 27 def initialize(afi, type, name, seqno) fail TypeError unless name.is_a?(String) fail ArgumentError unless type[/address|port/] @afi = Acl.afi_cli(afi) @type = type @grp_name = name @seqno = seqno og = ObjectGroup.object_groups[afi.to_s][type.to_s][name.to_s] fail "ObjectGroup #{afi} #{type} #{name} does not exist" if og.nil? set_args_keys_default end |
Instance Attribute Details
#afi ⇒ Object (readonly)
Returns the value of attribute afi.
25 26 27 |
# File 'lib/cisco_node_utils/object_group_entry.rb', line 25 def afi @afi end |
#grp_name ⇒ Object (readonly)
Returns the value of attribute grp_name.
25 26 27 |
# File 'lib/cisco_node_utils/object_group_entry.rb', line 25 def grp_name @grp_name end |
#type ⇒ Object (readonly)
Returns the value of attribute type.
25 26 27 |
# File 'lib/cisco_node_utils/object_group_entry.rb', line 25 def type @type end |
Class Method Details
.object_group_entries ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/cisco_node_utils/object_group_entry.rb', line 56 def self.object_group_entries hash = {} grps = config_get('object_group', 'all_object_groups') return hash if grps.nil? grps.each do |afi, type, name| lafi = afi lafi = 'ipv4' if afi == 'ip' hash[lafi] ||= {} hash[lafi][type] ||= {} hash[lafi][type][name] ||= {} entries = config_get('object_group', 'all_entries', afi: Acl.afi_cli(lafi), type: type, grp_name: name) next if entries.nil? entries.each do |seqno| hash[lafi][type][name][seqno] = ObjectGroupEntry.new(lafi, type, name, seqno) end end hash end |
Instance Method Details
#address ⇒ Object
119 120 121 122 123 124 125 126 127 |
# File 'lib/cisco_node_utils/object_group_entry.rb', line 119 def address match = entry_get return nil if match.nil? addr = match[:address] return nil if addr.nil? # Normalize addr. Some platforms zero_pad ipv6 addrs. addr.gsub!(/^0*/, '').gsub!(/:0*/, ':') addr end |
#address=(address) ⇒ Object
129 130 131 |
# File 'lib/cisco_node_utils/object_group_entry.rb', line 129 def address=(address) @set_args[:address] = address end |
#destroy ⇒ Object
52 53 54 |
# File 'lib/cisco_node_utils/object_group_entry.rb', line 52 def destroy config_set('object_group', 'entry_destroy', @set_args) end |
#entry_get ⇒ Object
79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/cisco_node_utils/object_group_entry.rb', line 79 def entry_get str = config_get('object_group', 'entry', @get_args) return nil if str.nil? str = str.strip # rubocop:disable Metrics/LineLength regexp = Regexp.new('(?<seqno>\d+)'\ ' *(?<address>host \S+|[:\.0-9a-fA-F]+ [:\.0-9a-fA-F]+|[:\.0-9a-fA-F]+\/\d+)?'\ ' *(?<port>range \S+ \S+|(lt|eq|gt|neq) \S+)?') # rubocop:enable Metrics/LineLength regexp.match(str) end |
#entry_set(attrs) ⇒ Object
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/cisco_node_utils/object_group_entry.rb', line 92 def entry_set(attrs) if attrs.empty? attrs[:state] = 'no' else destroy if seqno attrs[:state] = '' end set_args_keys_default set_args_keys(attrs) [:address, :port, ].each do |p| attrs[p] = '' if attrs[p].nil? send(p.to_s + '=', attrs[p]) end @get_args = @set_args config_set('object_group', 'entry', @set_args) end |
#port ⇒ Object
133 134 135 136 137 |
# File 'lib/cisco_node_utils/object_group_entry.rb', line 133 def port match = entry_get return nil if match.nil? match.names.include?('port') ? match[:port] : nil end |
#port=(port) ⇒ Object
139 140 141 |
# File 'lib/cisco_node_utils/object_group_entry.rb', line 139 def port=(port) @set_args[:port] = port end |
#seqno ⇒ Object
PROPERTIES
113 114 115 116 117 |
# File 'lib/cisco_node_utils/object_group_entry.rb', line 113 def seqno match = entry_get return nil if match.nil? match.names.include?('seqno') ? match[:seqno] : nil end |
#set_args_keys(hash = {}) ⇒ Object
rubocop:disable Style/AccessorMethodName
47 48 49 50 |
# File 'lib/cisco_node_utils/object_group_entry.rb', line 47 def set_args_keys(hash={}) set_args_keys_default @set_args = @get_args.merge!(hash) unless hash.empty? end |
#set_args_keys_default ⇒ Object
Helper method to delete @set_args hash keys
41 42 43 44 |
# File 'lib/cisco_node_utils/object_group_entry.rb', line 41 def set_args_keys_default @set_args = { afi: @afi, type: @type, grp_name: @grp_name, seqno: @seqno } @get_args = @set_args end |