1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

ironware_facts module (#32186)

This commit is contained in:
paulquack 2017-11-07 19:19:56 +11:00 committed by John R Barker
parent 6d1d06e0f7
commit 806f43a9c0
14 changed files with 2299 additions and 399 deletions

View file

@ -0,0 +1,652 @@
#!/usr/bin/python
#
# Copyright: Ansible Project
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
from __future__ import absolute_import, division, print_function
__metaclass__ = type
ANSIBLE_METADATA = {'metadata_version': '1.1',
'status': ['preview'],
'supported_by': 'community'}
DOCUMENTATION = """
---
module: ironware_facts
version_added: "2.5"
author: "Paul Baker (@paulquack)"
short_description: Collect facts from devices running Brocade Ironware
description:
- Collects a base set of device facts from a remote device that
is running Ironware. This module prepends all of the
base network fact keys with C(ansible_net_<fact>). The facts
module will always collect a base set of facts from the device
and can enable or disable collection of additional facts.
extends_documentation_fragment: ironware
notes:
- Tested against Ironware 5.8e
options:
gather_subset:
description:
- When supplied, this argument will restrict the facts collected
to a given subset. Possible values for this argument include
all, hardware, config, mpls and interfaces. Can specify a list of
values to include a larger subset. Values can also be used
with an initial C(M(!)) to specify that a specific subset should
not be collected.
required: false
default: ['!config','!mpls']
"""
EXAMPLES = """
# Collect all facts from the device
- ironware_facts:
gather_subset: all
# Collect only the config and default facts
- ironware_facts:
gather_subset:
- config
# Do not collect hardware facts
- ironware_facts:
gather_subset:
- "!hardware"
"""
RETURN = """
ansible_net_gather_subset:
description: The list of fact subsets collected from the device
returned: always
type: list
# default
ansible_net_model:
description: The model name returned from the device
returned: always
type: str
ansible_net_serialnum:
description: The serial number of the remote device
returned: always
type: str
ansible_net_version:
description: The operating system version running on the remote device
returned: always
type: str
# hardware
ansible_net_filesystems:
description: All file system names available on the device
returned: when hardware is configured
type: list
ansible_net_memfree_mb:
description: The available free memory on the remote device in Mb
returned: when hardware is configured
type: int
ansible_net_memtotal_mb:
description: The total memory on the remote device in Mb
returned: when hardware is configured
type: int
# config
ansible_net_config:
description: The current active config from the device
returned: when config is configured
type: str
# mpls
ansible_net_mpls_lsps:
description: All MPLS LSPs configured on the device
returned: When LSP is configured
type: dict
ansible_net_mpls_vll:
description: All VLL instances configured on the device
returned: When MPLS VLL is configured
type: dict
ansible_net_mpls_vll_local:
description: All VLL-LOCAL instances configured on the device
returned: When MPLS VLL-LOCAL is configured
type: dict
ansible_net_mpls_vpls:
description: All VPLS instances configured on the device
returned: When MPLS VPLS is configured
type: dict
# interfaces
ansible_net_all_ipv4_addresses:
description: All IPv4 addresses configured on the device
returned: when interfaces is configured
type: list
ansible_net_all_ipv6_addresses:
description: All IPv6 addresses configured on the device
returned: when interfaces is configured
type: list
ansible_net_interfaces:
description: A hash of all interfaces running on the system
returned: when interfaces is configured
type: dict
ansible_net_neighbors:
description: The list of LLDP neighbors from the remote device
returned: when interfaces is configured
type: dict
"""
import re
from ansible.module_utils.ironware import run_commands
from ansible.module_utils.ironware import ironware_argument_spec, check_args
from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.six import iteritems
from ansible.module_utils.six.moves import zip
class FactsBase(object):
COMMANDS = list()
def __init__(self, module):
self.module = module
self.facts = dict()
self.responses = None
def populate(self):
self.responses = run_commands(self.module, self.COMMANDS, check_rc=False)
def run(self, cmd):
return run_commands(self.module, cmd, check_rc=False)
class Default(FactsBase):
COMMANDS = [
'show version',
'show chassis'
]
def populate(self):
super(Default, self).populate()
data = self.responses[0]
if data:
self.facts['version'] = self.parse_version(data)
self.facts['serialnum'] = self.parse_serialnum(data)
data = self.responses[1]
if data:
self.facts['model'] = self.parse_model(data)
def parse_version(self, data):
match = re.search(r'IronWare : Version (\S+)', data)
if match:
return match.group(1)
def parse_model(self, data):
match = re.search(r'^\*\*\* (.+) \*\*\*$', data, re.M)
if match:
return match.group(1)
def parse_serialnum(self, data):
match = re.search(r'Serial #: (\S+),', data)
if match:
return match.group(1)
class Hardware(FactsBase):
COMMANDS = [
'dir | include Directory',
'show memory'
]
def populate(self):
super(Hardware, self).populate()
data = self.responses[0]
if data:
self.facts['filesystems'] = self.parse_filesystems(data)
data = self.responses[1]
if data:
self.facts['memtotal_mb'] = int(round(int(self.parse_memtotal(data)) / 1024 / 1024, 0))
self.facts['memfree_mb'] = int(round(int(self.parse_memfree(data)) / 1024 / 1024, 0))
def parse_filesystems(self, data):
return re.findall(r'^Directory of (\S+)', data, re.M)
def parse_memtotal(self, data):
match = re.search(r'Total SDRAM\D*(\d+)\s', data, re.M)
if match:
return match.group(1)
def parse_memfree(self, data):
match = re.search(r'(Total Free Memory|Available Memory)\D*(\d+)\s', data, re.M)
if match:
return match.group(2)
class Config(FactsBase):
COMMANDS = ['show running-config']
def populate(self):
super(Config, self).populate()
data = self.responses[0]
if data:
self.facts['config'] = data
class MPLS(FactsBase):
COMMANDS = [
'show mpls lsp detail',
'show mpls vll-local detail',
'show mpls vll detail',
'show mpls vpls detail'
]
def populate(self):
super(MPLS, self).populate()
data = self.responses[0]
if data:
data = self.parse_mpls(data)
self.facts['mpls_lsps'] = self.populate_lsps(data)
data = self.responses[1]
if data:
data = self.parse_mpls(data)
self.facts['mpls_vll_local'] = self.populate_vll_local(data)
data = self.responses[2]
if data:
data = self.parse_mpls(data)
self.facts['mpls_vll'] = self.populate_vll(data)
data = self.responses[3]
if data:
data = self.parse_mpls(data)
self.facts['mpls_vpls'] = self.populate_vpls(data)
def parse_mpls(self, data):
parsed = dict()
for line in data.split('\n'):
if not line:
continue
elif line[0] == ' ':
parsed[key] += '\n%s' % line
else:
match = re.match(r'^(LSP|VLL|VPLS) ([^\s,]+)', line)
if match:
key = match.group(2)
parsed[key] = line
return parsed
def populate_vpls(self, vpls):
facts = dict()
for key, value in iteritems(vpls):
vpls = dict()
vpls['endpoints'] = self.parse_vpls_endpoints(value)
vpls['vc-id'] = self.parse_vpls_vcid(value)
facts[key] = vpls
return facts
def populate_vll_local(self, vll_locals):
facts = dict()
for key, value in iteritems(vll_locals):
vll = dict()
vll['endpoints'] = self.parse_vll_endpoints(value)
facts[key] = vll
return facts
def populate_vll(self, vlls):
facts = dict()
for key, value in iteritems(vlls):
vll = dict()
vll['endpoints'] = self.parse_vll_endpoints(value)
vll['vc-id'] = self.parse_vll_vcid(value)
vll['cos'] = self.parse_vll_cos(value)
facts[key] = vll
return facts
def parse_vll_vcid(self, data):
match = re.search(r'VC-ID (\d+),', data, re.M)
if match:
return match.group(1)
def parse_vll_cos(self, data):
match = re.search(r'COS +: +(\d+)', data, re.M)
if match:
return match.group(1)
def parse_vll_endpoints(self, data):
facts = list()
regex = r'End-point[0-9 ]*: +(?P<tagged>tagged|untagged) +(vlan +(?P<vlan>[0-9]+) +)?(inner- vlan +(?P<innervlan>[0-9]+) +)?(?P<port>e [0-9/]+|--)'
matches = re.finditer(regex, data, re.IGNORECASE | re.DOTALL)
for n, match in enumerate(matches):
f = match.groupdict()
f['type'] = 'local'
facts.append(f)
regex = r'Vll-Peer +: +(?P<vllpeer>[0-9\.]+).*Tunnel LSP +: +(?P<lsp>\S+)'
matches = re.finditer(regex, data, re.IGNORECASE | re.DOTALL)
for n, match in enumerate(matches):
f = match.groupdict()
f['type'] = 'remote'
facts.append(f)
return facts
def parse_vpls_vcid(self, data):
match = re.search(r'Id (\d+),', data, re.M)
if match:
return match.group(1)
def parse_vpls_endpoints(self, data):
facts = list()
regex = r'Vlan (?P<vlanid>[0-9]+)\s(?: +(?:L2.*)\s| +Tagged: (?P<tagged>.+)+\s| +Untagged: (?P<untagged>.+)\s)*'
matches = re.finditer(regex, data, re.IGNORECASE)
for n, match in enumerate(matches):
f = match.groupdict()
f['type'] = 'local'
facts.append(f)
regex = r'Peer address: (?P<vllpeer>[0-9\.]+)'
matches = re.finditer(regex, data, re.IGNORECASE)
for n, match in enumerate(matches):
f = match.groupdict()
f['type'] = 'remote'
facts.append(f)
return facts
def populate_lsps(self, lsps):
facts = dict()
for key, value in iteritems(lsps):
lsp = dict()
lsp['to'] = self.parse_lsp_to(value)
lsp['from'] = self.parse_lsp_from(value)
lsp['adminstatus'] = self.parse_lsp_adminstatus(value)
lsp['operstatus'] = self.parse_lsp_operstatus(value)
lsp['pri_path'] = self.parse_lsp_pripath(value)
lsp['sec_path'] = self.parse_lsp_secpath(value)
lsp['frr'] = self.parse_lsp_frr(value)
facts[key] = lsp
return facts
def parse_lsp_to(self, data):
match = re.search(r'^LSP .* to (\S+)', data, re.M)
if match:
return match.group(1)
def parse_lsp_from(self, data):
match = re.search(r'From: ([^\s,]+),', data, re.M)
if match:
return match.group(1)
def parse_lsp_adminstatus(self, data):
match = re.search(r'admin: (\w+),', data, re.M)
if match:
return match.group(1)
def parse_lsp_operstatus(self, data):
match = re.search(r'From: .* status: (\w+)', data, re.M)
if match:
return match.group(1)
def parse_lsp_pripath(self, data):
match = re.search(r'Pri\. path: ([^\s,]+), up: (\w+), active: (\w+)', data, re.M)
if match:
path = dict()
path['name'] = match.group(1) if match.group(1) != 'NONE' else None
path['up'] = True if match.group(2) == 'yes' else False
path['active'] = True if match.group(3) == 'yes' else False
return path
def parse_lsp_secpath(self, data):
match = re.search(r'Sec\. path: ([^\s,]+), active: (\w+).*\n.* status: (\w+)', data, re.M)
if match:
path = dict()
path['name'] = match.group(1) if match.group(1) != 'NONE' else None
path['up'] = True if match.group(3) == 'up' else False
path['active'] = True if match.group(2) == 'yes' else False
return path
def parse_lsp_frr(self, data):
match = re.search(r'Backup LSP: (\w+)', data, re.M)
if match:
path = dict()
path['up'] = True if match.group(1) == 'UP' else False
path['name'] = None
if path['up']:
match = re.search('bypass_lsp: (\S)', data, re.M)
path['name'] = match.group(1) if match else None
return path
class Interfaces(FactsBase):
COMMANDS = [
'show interfaces',
'show ipv6 interface',
'show lldp neighbors'
]
def populate(self):
super(Interfaces, self).populate()
self.facts['all_ipv4_addresses'] = list()
self.facts['all_ipv6_addresses'] = list()
data = self.responses[0]
if data:
interfaces = self.parse_interfaces(data)
self.facts['interfaces'] = self.populate_interfaces(interfaces)
data = self.responses[1]
if data:
data = self.parse_interfaces(data)
self.populate_ipv6_interfaces(data)
data = self.responses[2]
if data and 'LLDP is not running' not in data:
self.facts['neighbors'] = self.parse_neighbors(data)
def populate_interfaces(self, interfaces):
facts = dict()
for key, value in iteritems(interfaces):
intf = dict()
intf['description'] = self.parse_description(value)
intf['macaddress'] = self.parse_macaddress(value)
ipv4 = self.parse_ipv4(value)
intf['ipv4'] = self.parse_ipv4(value)
if ipv4:
self.add_ip_address(ipv4['address'], 'ipv4')
intf['mtu'] = self.parse_mtu(value)
intf['bandwidth'] = self.parse_bandwidth(value)
intf['duplex'] = self.parse_duplex(value)
intf['lineprotocol'] = self.parse_lineprotocol(value)
intf['operstatus'] = self.parse_operstatus(value)
intf['type'] = self.parse_type(value)
facts[key] = intf
return facts
def populate_ipv6_interfaces(self, data):
for key, value in iteritems(data):
self.facts['interfaces'][key]['ipv6'] = list()
addresses = re.findall(r'\s([0-9a-f]+:+[0-9a-f:]+\/\d+)\s', value, re.M)
for addr in addresses:
address, masklen = addr.split('/')
ipv6 = dict(address=address, masklen=int(masklen))
self.add_ip_address(ipv6['address'], 'ipv6')
self.facts['interfaces'][key]['ipv6'].append(ipv6)
def add_ip_address(self, address, family):
if family == 'ipv4':
self.facts['all_ipv4_addresses'].append(address)
else:
self.facts['all_ipv6_addresses'].append(address)
def parse_neighbors(self, neighbors):
facts = dict()
for line in neighbors.split('\n'):
if line == '':
continue
match = re.search(r'([\d\/]+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)', line, re.M)
if match:
intf = match.group(1)
if intf not in facts:
facts[intf] = list()
fact = dict()
fact['host'] = match.group(5)
fact['port'] = match.group(3)
facts[intf].append(fact)
return facts
def parse_interfaces(self, data):
parsed = dict()
for line in data.split('\n'):
if not line:
continue
elif line[0] == ' ':
parsed[key] += '\n%s' % line
else:
match = re.match(r'^(\S+Ethernet|eth )(\S+)', line)
if match:
key = match.group(2)
parsed[key] = line
return parsed
def parse_description(self, data):
match = re.search(r'Port name is (.+)$', data, re.M)
if match:
return match.group(1)
def parse_macaddress(self, data):
match = re.search(r'address is (\S+)', data)
if match:
return match.group(1)
def parse_ipv4(self, data):
match = re.search(r'Internet address is ([^\s,]+)', data)
if match:
addr, masklen = match.group(1).split('/')
return dict(address=addr, masklen=int(masklen))
def parse_mtu(self, data):
match = re.search(r'MTU (\d+)', data)
if match:
return int(match.group(1))
def parse_bandwidth(self, data):
match = re.search(r'BW is (\d+)', data)
if match:
return int(match.group(1))
def parse_duplex(self, data):
match = re.search(r'configured duplex \S+ actual (\S+)', data, re.M)
if match:
return match.group(1)
def parse_mediatype(self, data):
match = re.search(r'Type\s*:\s*(.+)$', data, re.M)
if match:
return match.group(1)
def parse_type(self, data):
match = re.search(r'Hardware is (.+),', data, re.M)
if match:
return match.group(1)
def parse_lineprotocol(self, data):
match = re.search(r'line protocol is (\S+)', data, re.M)
if match:
return match.group(1)
def parse_operstatus(self, data):
match = re.search(r'^(?:.+) is (.+),', data, re.M)
if match:
return match.group(1)
FACT_SUBSETS = dict(
default=Default,
hardware=Hardware,
interfaces=Interfaces,
config=Config,
mpls=MPLS,
)
VALID_SUBSETS = frozenset(FACT_SUBSETS.keys())
def main():
"""main entry point for module execution
"""
argument_spec = dict(
gather_subset=dict(default=["!config", "!mpls"], type='list')
)
argument_spec.update(ironware_argument_spec)
module = AnsibleModule(argument_spec=argument_spec,
supports_check_mode=True)
gather_subset = module.params['gather_subset']
runable_subsets = set()
exclude_subsets = set()
for subset in gather_subset:
if subset == 'all':
runable_subsets.update(VALID_SUBSETS)
continue
if subset.startswith('!'):
subset = subset[1:]
if subset == 'all':
exclude_subsets.update(VALID_SUBSETS)
continue
exclude = True
else:
exclude = False
if subset not in VALID_SUBSETS:
module.fail_json(msg='Bad subset')
if exclude:
exclude_subsets.add(subset)
else:
runable_subsets.add(subset)
if not runable_subsets:
runable_subsets.update(VALID_SUBSETS)
runable_subsets.difference_update(exclude_subsets)
runable_subsets.add('default')
facts = dict()
facts['gather_subset'] = list(runable_subsets)
instances = list()
for key in runable_subsets:
instances.append(FACT_SUBSETS[key](module))
for inst in instances:
inst.populate()
facts.update(inst.facts)
ansible_facts = dict()
for key, value in iteritems(facts):
key = 'ansible_net_%s' % key
ansible_facts[key] = value
check_args(module)
module.exit_json(ansible_facts=ansible_facts)
if __name__ == '__main__':
main()

View file

@ -0,0 +1 @@
Directory of /flash/

View file

@ -0,0 +1,45 @@
*** MLXe 4-slot Chassis ***
---POWERS ---
Power 1: (23-0000129-02 BMG2J50F014 - AC 1800W): Installed (OK)
Power 2: ( 32006000 113186101409 - AC 1200W): Installed (OK)
Power 3: not present
Power 4: not present
Total power budget for chassis = 3000 W
Total power used by system core = 450 W
Total power used by LPs = 406 W
Total power available = 2144 W
Slot Power-On Priority and Power Usage:
Slot1 pri=1 module type=NI-MLX-10Gx8-M 8-port 10GbE (M) Module power usage=246W
Slot2 pri=1 module type=BR-MLX-1GFx24-X 24-port 1GbE SFP Module power usage=160W
--- FANS ---
Back fan A-1: Status = OK, Speed = LOW (50%)
Back fan A-2: Status = OK, Speed = LOW (50%)
Back fan B-1: Status = OK, Speed = LOW (50%)
Back fan B-2: Status = OK, Speed = LOW (50%)
Back fan C-1: Status = OK, Speed = LOW (50%)
Back fan C-2: Status = OK, Speed = LOW (50%)
Back fan D-1: Status = OK, Speed = LOW (50%)
Back fan D-2: Status = OK, Speed = LOW (50%)
--- TEMPERATURE READINGS ---
Active Mgmt Module: 33.500C 44.375C
Standby Mgmt Module: 35.500C 47.250C
SFM1: FE1:34.625C
SFM2: FE1:37.0C
SFM3: not present
LP1 Sensor1: 37.500C
LP1 Sensor2: 38.375C
LP1 Sensor3: 34.750C
LP1 Sensor4: 33.0C
LP1 Sensor5: 39.125C
LP1 Sensor6: 39.0C
LP1 Sensor7: 43.0C
LP2 Sensor1: 47.500C
LP2 Sensor2: 43.500C
LP2 Sensor3: 38.625C
Fans are in auto mode (current speed is LOW (50%)). Temperature monitoring poll period is 60 seconds.
--- MISC INFO ---
Backplane EEPROM MAC Address: 0024.38ae.ff00

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,5 @@
Type Codes - I:ISIS O:OSPF R:RIP
Interface Status/Protocol IGPs IPv6 Address VRF
eth 1/1 up/up fe80::224:38ff:feae:ff00 default-vrf
2001:db8::1/64
2001:db8::/64[Anycast]

View file

@ -0,0 +1,3 @@
Total number of LLDP neighbors on all ports: 6
Lcl Port Chassis ID Port ID Port Description System Name
1/2 748e.f863.3600 748e.f863.3631 10GigabitEthernet2/1 ces01.lab

View file

@ -0,0 +1,30 @@
====================================================================
NetIron MLX active MP slot 5:
Total SDRAM : 4294967295 bytes
Available Memory : 3806097408 bytes
Available Memory (%): 88 percent
Free Physical Pages : 925008 pages
Malloc statistics: total 633606628
OS malloc count: 2437418082
OS malloc fail: 0
OS free count: 2437404486
OS free fail: 0
diff: 13596
====================================================================
NetIron MLX standby MP slot 6:
Total SDRAM : 4294967295 bytes
Available Memory : 3784171520 bytes
Available Memory (%): 88 percent
Free Physical Pages : 917843 pages
====================================================================
NetIron MLX LP SL 1:
Total SDRAM : 1073741824 bytes
Available Memory : 485294080 bytes
Available Memory (%): 45 percent
====================================================================
NetIron MLX LP SL 2:
Total SDRAM : 1073741824 bytes
Available Memory : 561364992 bytes
Available Memory (%): 52 percent

View file

@ -0,0 +1,32 @@
LSP LSP1, to 1.1.1.1
From: (n/a), admin: DOWN, status: DOWN
revert timer: 300 seconds
Times primary LSP goes up since enabled: 1
Metric: 0, Adaptive
Maximum retries: NONE, no. of retries: 0
Pri. path: NONE, up: no, active: no
Setup priority: 7, hold priority: 0, cos 1
Max rate: 0 kbps, mean rate: 0 kbps, max burst: 0 bytes
CSPF-computation-mode configured: use te-metric(global)
ReoptimizeTimer configured 1800
Tie breaking: random, hop limit: 0
LDP tunneling enabled: yes
Soft preemption enabled: no
Active Path attributes:
Fast Reroute: facility backup desired, node protection desired
Backup LSP: DOWN
Global revertiveness enabled with hold time 5 secs
FRR Forwarding State: Pri(down), Backup(down)
LSP LSP3, to 3.3.3.3
From: (n/a), admin: DOWN, status: DOWN
Times primary LSP goes up since enabled: 0
Metric: 0
Maximum retries: NONE, no. of retries: 0
Pri. path: NONE, up: no, active: no
Setup priority: 7, hold priority: 0
Max rate: 0 kbps, mean rate: 0 kbps, max burst: 0 bytes
CSPF-computation-mode configured: use te-metric(global)
Tie breaking: random, hop limit: 0
LDP tunneling enabled: no
Soft preemption enabled: no
Active Path attributes:

View file

@ -0,0 +1,7 @@
VLL TEST-LOCAL VLL-ID 1 IFL-ID --
State: DOWN - endpoint port is down
End-point 1: untagged e 2/8
COS: --
End-point 2: tagged vlan 5 e 2/9
COS: --
Extended Counters: Enabled

View file

@ -0,0 +1,19 @@
VLL TEST-VLL, VC-ID 111, VLL-INDEX 4
End-point : tagged vlan 2005 e 2/1
End-Point state : Up
MCT state : None
IFL-ID : --
Local VC type : untag
Local VC MTU : 9190
COS : 1
Extended Counters: Enabled
Vll-Peer : 1.1.1.1
State : DOWN - PW is Down (Reason:Wait for peer label)
Remote VC type : -- Remote VC MTU : --
Local label : -- Remote label : --
Local group-id : 0 Remote group-id: --
Tunnel LSP : lsp1 (tnl1)
MCT Status TLV : --
LSPs assigned : No LSPs assigned

View file

@ -0,0 +1,21 @@
VPLS TEST-VPLS, Id 333, Max mac entries: 2048
Total vlans: 2, Tagged ports: 2 (0 Up), Untagged ports 2 (0 Up)
IFL-ID: n/a
Vlan 5
L2 Protocol: NONE
Untagged: ethe 2/4
Vlan 6
L2 Protocol: NONE
Tagged: ethe 2/5 to 2/6
Untagged: ethe 2/7
VC-Mode: Raw
Total VPLS peers: 1 (0 Operational)
Peer address: 3.3.3.3, State: Wait for functional local ports
Tnnl in use: tnl1(3)[RSVP] Peer Index:0
Local VC lbl: N/A, Remote VC lbl: N/A
Local VC MTU: 9190, Remote VC MTU: 0
Local VC-Type: Ethernet(0x05), Remote VC-Type: UNKNOWN
CPU-Protection: OFF
Local Switching: Enabled
Extended Counter: ON
Multicast Snooping: Disabled

View file

@ -0,0 +1,291 @@
!Current configuration:
!
ver V5.8.0fT163
module 1 ni-mlx-8-port-10g-m
module 2 br-mlx-24-port-1gf-x
!
!
mirror ethernet 2/20
!
lag "LAG" dynamic id 3
ports ethernet 1/1
primary-port 1/1
lacp-timeout short
deploy
!
!
!
!
no spanning-tree
!
!
vlan 1 name DEFAULT-VLAN
no untagged ethe 2/1 to 2/2 ethe 2/4 to 2/9
!
vlan 150
!
vlan 666 name LACP_ISOLATION_CUSTOMER
!
vlan 1000
!
vlan 2007
tagged ethe 2/1
!
vlan 4040
untagged ethe 1/1
!
!
!
qos-mapping
!
default-max-frame-size 9216
cpu-usage on
aaa authentication login default tacacs+ local enable
tacacs-server host 5.5.5.5
tacacs-server key 2 $X3FSZjgzKGzPIXVd
!
!
enable password-display
enable super-user-password 8 $1$WV1..Pi2$B6acbjDxeHsof2BKrpyqQ0
enable aaa console
logging host 5.5.5.5
logging facility local7
logging buffered 5000
logging console
username admin password 8 $1$MF/..XD4$MYUy7kcm/1eAuqXnVyvVO1
username admin history $1$MF/..XD4$MYUy7kcm/1eAuqXnVyvVO1 $1$KE/..Cs2$WlfErdta9.sG9v5QmbaTd/
!
tag-type 9100 ethe 1/4
tag-type 9100 ethe 2/2
tag-type 9100 ethe 2/24
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
snmp-server
snmp-server community 2 $YkAtaSs/fFE6Sz97 ro
snmp-server max-ifindex-per-module 64
snmp-server cache size 128
hostname mlx01.lab
no transceiver-type-check
!
netconf server
!
router isis
net 49.0001.0100.6900.0006.00
fast-flood 4
no hello padding
is-type level-2
log adjacency
address-family ipv4 unicast
metric-style wide
redistribute connected
exit-address-family
address-family ipv6 unicast
no adjacency-check
exit-address-family
!
!
!
!
!
qos-policy
!
policy-map CUST-100Mb
cir 99992032 cbs 3125000
!
policy-map core-to-core-interface
!
!
hqos scheduler-policy core-to-core-interface-4.2G level level-0
shaper-rate 4193280
shaper-burst-size 256
scheduler-type strict
!
!
!
hqos scheduler-policy P5 level level-1
shaper-rate 10000000
shaper-burst-size 10
scheduler-type strict
!
!
!
!
interface loopback 1
ip address 10.69.0.6/32
no ip redirect
!
!
interface ethernet 1/1
enable
load-interval 30
bfd interval 100 min-rx 100 multiplier 5
ip router isis
ip address 10.69.1.6/30
ip mtu 9198
ipv6 address 2001:db8::1/64
isis bfd
isis circuit-type level-2
isis metric 500
isis point-to-point
!
interface ethernet 1/2
port-name foo
enable
load-interval 30
bfd interval 100 min-rx 100 multiplier 5
ip router isis
ip address 10.69.1.77/30
ip mtu 9198
isis circuit-type level-2
isis ipv6 metric 250
isis point-to-point
!
interface ethernet 1/3
enable
forward-lacp
!
interface ethernet 1/4
enable
forward-lacp
!
interface ethernet 2/1
enable
mon ethernet 2/20 both
!
interface ethernet 2/2
enable
load-interval 30
rate-limit input broadcast unknown-unicast multicast 521216 64000
no spanning-tree
!
interface ethernet 2/3
load-interval 30
rate-limit input broadcast unknown-unicast multicast 521216 64000
no fdp enable
no cdp enable
no spanning-tree
!
interface ethernet 2/4
enable
load-interval 30
rate-limit input broadcast unknown-unicast multicast 521216 64000
no fdp enable
no cdp enable
no spanning-tree
!
interface ethernet 2/13
enable
load-interval 30
!
interface ethernet 2/20
enable
!
interface ethernet 2/21
enable
!
interface ethernet 2/24
enable
!
ip tacacs source-interface loopback 1
!
!
router mpls
bfd
dynamic-bypass
enable
reoptimize-timer 1800
policy
traffic-eng isis level-2
handle-isis-neighbor-down
cspf-computation-mode use-te-metric
rsvp
rsvp-reliable-messaging
ldp
tunnel-metric 10
mpls-interface e1/1
rsvp-reliable-messaging
dynamic-bypass
enable
name-prefix dyn
adaptive
cos 1
mpls-interface e1/2
rsvp-reliable-messaging
dynamic-bypass
enable
name-prefix dyn
adaptive
cos 1
lsp LSP1
to 1.1.1.1
no cspf
adaptive
enable
lsp LSP3
to 3.3.3.3
shortcuts isis level2
adaptive
reoptimize-timer 1800
frr
facility-backup
revert-timer 300
enable
vll TEST-VLL 111 raw-mode cos 1
vll-peer 1.1.1.1
vlan 2005
tagged e 2/1
vll-local TEST-LOCAL
extended-counters on
untag e 2/8
vlan 5
tag e 2/9
vpls TEST-VPLS 333
vpls-peer 3.3.3.3
vlan 5
untagged ethe 2/4
vlan 6
tagged ethe 2/5 to 2/6
untagged ethe 2/7
!
!
!
lldp enable ports ethe 1/1 to 1/8 ethe 2/1 to 2/24
lldp run
!
!
!
!
!
end

View file

@ -1,27 +1,13 @@
System Mode: MLX
Chassis: NetIron 16-slot (Serial #: H70529F00X, Part #: 35568-001)
NI-X-HSF Switch Fabric Module 1 (Serial #: BEU3243L04H, Part #: 60-1003266-01)
Chassis: MLXe 4-slot (Serial #: BGD2503J01F, Part #: 40-1000363-04)
NI-X-HSF Switch Fabric Module 1 (Serial #: BEW0444H01V, Part #: 60-1001512-10)
FE 1: Type fe600, Version 1
FE 2: Type fe600, Version 1
FE 3: Type fe600, Version 1
Switch Fabric Module 1 Up Time is 154 days 15 hours 27 minutes 52 seconds
NI-X-HSF Switch Fabric Module 2 (Serial #: BEU3243L03N, Part #: 60-1003266-01)
Switch Fabric Module 1 Up Time is 203 days 4 hours 44 minutes 54 seconds
NI-X-HSF Switch Fabric Module 2 (Serial #: BEW0432H06S, Part #: 60-1001512-10)
FE 1: Type fe600, Version 1
FE 2: Type fe600, Version 1
FE 3: Type fe600, Version 1
Switch Fabric Module 2 Up Time is 154 days 15 hours 27 minutes 52 seconds
NI-X-HSF Switch Fabric Module 3 (Serial #: BEU3243L03X, Part #: 60-1003266-01)
FE 1: Type fe600, Version 1
FE 2: Type fe600, Version 1
FE 3: Type fe600, Version 1
Switch Fabric Module 3 Up Time is 154 days 15 hours 27 minutes 52 seconds
NI-X-HSF Switch Fabric Module 4 (Serial #: BEU3243L041, Part #: 60-1003266-01)
FE 1: Type fe600, Version 1
FE 2: Type fe600, Version 1
FE 3: Type fe600, Version 1
Switch Fabric Module 4 Up Time is 154 days 15 hours 27 minutes 52 seconds
Switch Fabric Module 2 Up Time is 203 days 4 hours 44 minutes 54 seconds
==========================================================================
SL M1: BR-MLX-MR2-M Management Module Active (Serial #: BVP3248L00T, Part #: 60-1003268-01):
SL M1: BR-MLX-MR2-M Management Module Active (Serial #: BVP0425L02W, Part #: 60-1002374-07):
Boot : Version 5.8.0T165 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:10 labeled as xmprm05800
(521590 bytes) from boot flash
@ -36,9 +22,9 @@ Board ID : 00 MBRIDGE Revision : 37
512 KB Boot Flash (MX29LV040C), 128 MB Code Flash (MT28F256J3)
4096 MB DRAM INSTALLED
4096 MB DRAM ADDRESSABLE
Active Management uptime is 154 days 15 hours 27 minutes 52 seconds
Active Management uptime is 203 days 4 hours 44 minutes 54 seconds
==========================================================================
SL M2: BR-MLX-MR2-M Management Module Standby (Serial #: BVP3248L00N, Part #: 60-1003268-01):
SL M2: BR-MLX-MR2-M Management Module Standby (Serial #: BVP0407L00D, Part #: 60-1002374-07):
Boot : Version 5.8.0T165 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:10 labeled as xmprm05800
(521590 bytes) from boot flash
@ -53,310 +39,10 @@ Board ID : 00 MBRIDGE Revision : 37
512 KB Boot Flash (MX29LV040C), 128 MB Code Flash (MT28F256J3)
4096 MB DRAM INSTALLED
4096 MB DRAM ADDRESSABLE
Standby Management uptime is 154 days 15 hours 26 minutes 13 seconds
Standby Management uptime is 203 days 4 hours 44 minutes 15 seconds
==========================================================================
SL 1: BR-MLX-1GFx24-X 24-port 1GbE SFP Module (Serial #: BND0401H034, Part #: 60-1001892-10)
License: (LID: dpfFJFGjFIJ)
Boot : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:24 labeled as xmlprm05800
(449481 bytes) from boot flash
Monitor : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:40 labeled as xmlb05800
(568745 bytes) from code flash
IronWare : Version 5.8.0fT177 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on Feb 24 2017 at 03:02:10 labeled as xmlp05800fb
(9304807 bytes) from Primary
FPGA versions:
Valid PBIF Version = 4.04, Build Time = 11/10/2014 22:10:00
Valid XPP Version = 1.03, Build Time = 6/30/2016 10:37:00
Valid STATS Version = 0.09, Build Time = 11/21/2010 14:52:00
BCM56512GMAC 0
BCM56512GMAC 1
666 MHz MPC MPC8541E (version 8020/0020) 333 MHz bus
512 KB Boot Flash (MX29LV040C), 16 MB Code Flash (MT28F128J3)
1024 MB DRAM, 8 KB SRAM
LP Slot 1 uptime is 154 days 15 hours 26 minutes 17 seconds
==========================================================================
SL 2: BR-MLX-1GFx24-X 24-port 1GbE SFP Module (Serial #: BND0401H030, Part #: 60-1001892-10)
License: (LID: dpfFJFGjFIF)
Boot : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:24 labeled as xmlprm05800
(449481 bytes) from boot flash
Monitor : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:40 labeled as xmlb05800
(568745 bytes) from code flash
IronWare : Version 5.8.0fT177 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on Feb 24 2017 at 03:02:10 labeled as xmlp05800fb
(9304807 bytes) from Primary
FPGA versions:
Valid PBIF Version = 4.04, Build Time = 11/10/2014 22:10:00
Valid XPP Version = 1.03, Build Time = 6/30/2016 10:37:00
Valid STATS Version = 0.09, Build Time = 11/21/2010 14:52:00
BCM56512GMAC 0
BCM56512GMAC 1
666 MHz MPC MPC8541E (version 8020/0020) 333 MHz bus
512 KB Boot Flash (MX29LV040C), 16 MB Code Flash (MT28F128J3)
1024 MB DRAM, 8 KB SRAM
LP Slot 2 uptime is 154 days 15 hours 26 minutes 17 seconds
==========================================================================
SL 3: BR-MLX-1GFx24-X 24-port 1GbE SFP Module (Serial #: BND0415H00E, Part #: 60-1001892-11)
License: (LID: dpfFJGKjFFg)
Boot : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:24 labeled as xmlprm05800
(449481 bytes) from boot flash
Monitor : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:40 labeled as xmlb05800
(568745 bytes) from code flash
IronWare : Version 5.8.0fT177 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on Feb 24 2017 at 03:02:10 labeled as xmlp05800fb
(9304807 bytes) from Primary
FPGA versions:
Valid PBIF Version = 4.04, Build Time = 11/10/2014 22:10:00
Valid XPP Version = 1.03, Build Time = 6/30/2016 10:37:00
Valid STATS Version = 0.09, Build Time = 11/21/2010 14:52:00
BCM56512GMAC 0
BCM56512GMAC 1
666 MHz MPC MPC8541E (version 8020/0020) 333 MHz bus
512 KB Boot Flash (MX29LV040C), 16 MB Code Flash (MT28F128J3)
1024 MB DRAM, 8 KB SRAM
LP Slot 3 uptime is 154 days 15 hours 26 minutes 17 seconds
==========================================================================
SL 4: BR-MLX-1GFx24-X 24-port 1GbE SFP Module (Serial #: BND0415H02C, Part #: 60-1001892-11)
License: (LID: dpfFJGKjFHe)
Boot : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:24 labeled as xmlprm05800
(449481 bytes) from boot flash
Monitor : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:40 labeled as xmlb05800
(568745 bytes) from code flash
IronWare : Version 5.8.0fT177 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on Feb 24 2017 at 03:02:10 labeled as xmlp05800fb
(9304807 bytes) from Primary
FPGA versions:
Valid PBIF Version = 4.04, Build Time = 11/10/2014 22:10:00
Valid XPP Version = 1.03, Build Time = 6/30/2016 10:37:00
Valid STATS Version = 0.09, Build Time = 11/21/2010 14:52:00
BCM56512GMAC 0
BCM56512GMAC 1
666 MHz MPC MPC8541E (version 8020/0020) 333 MHz bus
512 KB Boot Flash (MX29LV040C), 16 MB Code Flash (MT28F128J3)
1024 MB DRAM, 8 KB SRAM
LP Slot 4 uptime is 154 days 15 hours 26 minutes 17 seconds
==========================================================================
SL 5: BR-MLX-1GFx24-X 24-port 1GbE SFP Module (Serial #: BND0422H01T, Part #: 60-1001892-11)
License: (LID: dpfFJHHjFGv)
Boot : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:24 labeled as xmlprm05800
(449481 bytes) from boot flash
Monitor : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:40 labeled as xmlb05800
(568745 bytes) from code flash
IronWare : Version 5.8.0fT177 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on Feb 24 2017 at 03:02:10 labeled as xmlp05800fb
(9304807 bytes) from Primary
FPGA versions:
Valid PBIF Version = 4.04, Build Time = 11/10/2014 22:10:00
Valid XPP Version = 1.03, Build Time = 6/30/2016 10:37:00
Valid STATS Version = 0.09, Build Time = 11/21/2010 14:52:00
BCM56512GMAC 0
BCM56512GMAC 1
666 MHz MPC MPC8541E (version 8020/0020) 333 MHz bus
512 KB Boot Flash (MX29LV040C), 16 MB Code Flash (MT28F128J3)
1024 MB DRAM, 8 KB SRAM
LP Slot 5 uptime is 154 days 15 hours 26 minutes 17 seconds
==========================================================================
SL 6: BR-MLX-1GFx24-X 24-port 1GbE SFP Module (Serial #: BND0430H01S, Part #: 60-1001892-11)
License: (LID: dpfFJIFjFGu)
Boot : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:24 labeled as xmlprm05800
(449481 bytes) from boot flash
Monitor : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:40 labeled as xmlb05800
(568745 bytes) from code flash
IronWare : Version 5.8.0fT177 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on Feb 24 2017 at 03:02:10 labeled as xmlp05800fb
(9304807 bytes) from Primary
FPGA versions:
Valid PBIF Version = 4.04, Build Time = 11/10/2014 22:10:00
Valid XPP Version = 1.03, Build Time = 6/30/2016 10:37:00
Valid STATS Version = 0.09, Build Time = 11/21/2010 14:52:00
BCM56512GMAC 0
BCM56512GMAC 1
666 MHz MPC MPC8541E (version 8020/0020) 333 MHz bus
512 KB Boot Flash (MX29LV040C), 16 MB Code Flash (MT28F128J3)
1024 MB DRAM, 8 KB SRAM
LP Slot 6 uptime is 154 days 15 hours 26 minutes 17 seconds
==========================================================================
SL 7: BR-MLX-1GFx24-X 24-port 1GbE SFP Module (Serial #: BND0428H024, Part #: 60-1001892-11)
License: MLX-1Gx24-X-Upgrade (LID: dpfFJHNjFHJ)
Boot : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:24 labeled as xmlprm05800
(449481 bytes) from boot flash
Monitor : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:40 labeled as xmlb05800
(568745 bytes) from code flash
IronWare : Version 5.8.0fT177 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on Feb 24 2017 at 03:02:10 labeled as xmlp05800fb
(9304807 bytes) from Primary
FPGA versions:
Valid PBIF Version = 4.04, Build Time = 11/10/2014 22:10:00
Valid XPP Version = 1.03, Build Time = 6/30/2016 10:37:00
Valid STATS Version = 0.09, Build Time = 11/21/2010 14:52:00
BCM56512GMAC 0
BCM56512GMAC 1
666 MHz MPC MPC8541E (version 8020/0020) 333 MHz bus
512 KB Boot Flash (MX29LV040C), 16 MB Code Flash (MT28F128J3)
1024 MB DRAM, 8 KB SRAM
LP Slot 7 uptime is 154 days 15 hours 26 minutes 17 seconds
==========================================================================
SL 8: BR-MLX-1GFx24-X 24-port 1GbE SFP Module (Serial #: BND0427H00A, Part #: 60-1001892-11)
License: MLX-1Gx24-X-Upgrade (LID: dpfFJHMjFFc)
Boot : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:24 labeled as xmlprm05800
(449481 bytes) from boot flash
Monitor : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:40 labeled as xmlb05800
(568745 bytes) from code flash
IronWare : Version 5.8.0fT177 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on Feb 24 2017 at 03:02:10 labeled as xmlp05800fb
(9304807 bytes) from Primary
FPGA versions:
Valid PBIF Version = 4.04, Build Time = 11/10/2014 22:10:00
Valid XPP Version = 1.03, Build Time = 6/30/2016 10:37:00
Valid STATS Version = 0.09, Build Time = 11/21/2010 14:52:00
BCM56512GMAC 0
BCM56512GMAC 1
666 MHz MPC MPC8541E (version 8020/0020) 333 MHz bus
512 KB Boot Flash (MX29LV040C), 16 MB Code Flash (MT28F128J3)
1024 MB DRAM, 8 KB SRAM
LP Slot 8 uptime is 154 days 15 hours 26 minutes 17 seconds
==========================================================================
SL 9: BR-MLX-1GFx24-X 24-port 1GbE SFP Module (Serial #: BND0428J029, Part #: 60-1001892-12)
License: MLX-1Gx24-X-Upgrade (LID: dpfFJHNlFHO)
Boot : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:24 labeled as xmlprm05800
(449481 bytes) from boot flash
Monitor : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:40 labeled as xmlb05800
(568745 bytes) from code flash
IronWare : Version 5.8.0fT177 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on Feb 24 2017 at 03:02:10 labeled as xmlp05800fb
(9304807 bytes) from Primary
FPGA versions:
Valid PBIF Version = 4.04, Build Time = 11/10/2014 22:10:00
Valid XPP Version = 1.03, Build Time = 6/30/2016 10:37:00
Valid STATS Version = 0.09, Build Time = 11/21/2010 14:52:00
BCM56512GMAC 0
BCM56512GMAC 1
666 MHz MPC MPC8541E (version 8020/0020) 333 MHz bus
512 KB Boot Flash (MX29LV040C), 16 MB Code Flash (MT28F128J3)
1024 MB DRAM, 8 KB SRAM
LP Slot 9 uptime is 154 days 15 hours 26 minutes 17 seconds
==========================================================================
SL 10: BR-MLX-1GFx24-X 24-port 1GbE SFP Module (Serial #: BND0418J00E, Part #: 60-1001892-12)
License: (LID: dpfFJGNlFFg)
Boot : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:24 labeled as xmlprm05800
(449481 bytes) from boot flash
Monitor : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:40 labeled as xmlb05800
(568745 bytes) from code flash
IronWare : Version 5.8.0fT177 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on Feb 24 2017 at 03:02:10 labeled as xmlp05800fb
(9304807 bytes) from Primary
FPGA versions:
Valid PBIF Version = 4.04, Build Time = 11/10/2014 22:10:00
Valid XPP Version = 1.03, Build Time = 6/30/2016 10:37:00
Valid STATS Version = 0.09, Build Time = 11/21/2010 14:52:00
BCM56512GMAC 0
BCM56512GMAC 1
666 MHz MPC MPC8541E (version 8020/0020) 333 MHz bus
512 KB Boot Flash (MX29LV040C), 16 MB Code Flash (MT28F128J3)
1024 MB DRAM, 8 KB SRAM
LP Slot 10 uptime is 154 days 15 hours 26 minutes 17 seconds
==========================================================================
SL 11: BR-MLX-1GFx24-X 24-port 1GbE SFP Module (Serial #: BND0437J012, Part #: 60-1001892-12)
License: MLX-1Gx24-X-Upgrade (LID: dpfFJIMlFGH)
Boot : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:24 labeled as xmlprm05800
(449481 bytes) from boot flash
Monitor : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:40 labeled as xmlb05800
(568745 bytes) from code flash
IronWare : Version 5.8.0fT177 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on Feb 24 2017 at 03:02:10 labeled as xmlp05800fb
(9304807 bytes) from Primary
FPGA versions:
Valid PBIF Version = 4.04, Build Time = 11/10/2014 22:10:00
Valid XPP Version = 1.03, Build Time = 6/30/2016 10:37:00
Valid STATS Version = 0.09, Build Time = 11/21/2010 14:52:00
BCM56512GMAC 0
BCM56512GMAC 1
666 MHz MPC MPC8541E (version 8020/0020) 333 MHz bus
512 KB Boot Flash (MX29LV040C), 16 MB Code Flash (MT28F128J3)
1024 MB DRAM, 8 KB SRAM
LP Slot 11 uptime is 154 days 15 hours 26 minutes 17 seconds
==========================================================================
SL 12: BR-MLX-1GFx24-X 24-port 1GbE SFP Module (Serial #: BND0401H05A, Part #: 60-1001892-10)
License: (LID: dpfFJFGjFKc)
Boot : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:24 labeled as xmlprm05800
(449481 bytes) from boot flash
Monitor : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:40 labeled as xmlb05800
(568745 bytes) from code flash
IronWare : Version 5.8.0fT177 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on Feb 24 2017 at 03:02:10 labeled as xmlp05800fb
(9304807 bytes) from Primary
FPGA versions:
Valid PBIF Version = 4.04, Build Time = 11/10/2014 22:10:00
Valid XPP Version = 1.03, Build Time = 6/30/2016 10:37:00
Valid STATS Version = 0.09, Build Time = 11/21/2010 14:52:00
BCM56512GMAC 0
BCM56512GMAC 1
666 MHz MPC MPC8541E (version 8020/0020) 333 MHz bus
512 KB Boot Flash (MX29LV040C), 16 MB Code Flash (MT28F128J3)
1024 MB DRAM, 8 KB SRAM
LP Slot 12 uptime is 154 days 15 hours 26 minutes 17 seconds
==========================================================================
SL 13: NI-MLX-10Gx8-M 8-port 10GbE (M) Module (Serial #: BEQ3219M01V, Part #: 60-1003263-01)
(LID: dgsIHGOoFGx)
SL 1: NI-MLX-10Gx8-M 8-port 10GbE (M) Module (Serial #: BEQ0403G05E, Part #: 60-1001587-13)
(LID: dgsFJFIiFKg)
Boot : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:24 labeled as xmlprm05800
(449481 bytes) from boot flash
@ -376,10 +62,10 @@ MACXPP40G 1
1333 MHz MPC MPC8548 (version 8021/0022) 533 MHz bus
512 KB Boot Flash (MX29LV040C), 64 MB Code Flash (MT28F256J3)
1024 MB DRAM, 8 KB SRAM
LP Slot 13 uptime is 154 days 15 hours 26 minutes 20 seconds
LP Slot 1 uptime is 203 days 4 hours 44 minutes 12 seconds
==========================================================================
SL 14: NI-MLX-10Gx8-M 8-port 10GbE (M) Module (Serial #: BEQ3219M01Z, Part #: 60-1003263-01)
(LID: dgsIHGOoFGb)
SL 2: BR-MLX-1GFx24-X 24-port 1GbE SFP Module (Serial #: BND0415H003, Part #: 60-1001892-11)
License: (LID: dpfFJGKjFFI)
Boot : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:24 labeled as xmlprm05800
(449481 bytes) from boot flash
@ -390,61 +76,17 @@ IronWare : Version 5.8.0fT177 Copyright (c) 1996-2014 Brocade Communications Sys
Compiled on Feb 24 2017 at 03:02:10 labeled as xmlp05800fb
(9304807 bytes) from Primary
FPGA versions:
Valid PBIF Version = 2.24, Build Time = 4/7/2016 14:16:00
Valid PBIF Version = 4.04, Build Time = 11/10/2014 22:10:00
Valid XPP Version = 0.08, Build Time = 6/27/2016 10:36:00
Valid XPP Version = 1.03, Build Time = 6/30/2016 10:37:00
MACXPP40G 0
MACXPP40G 1
1333 MHz MPC MPC8548 (version 8021/0022) 533 MHz bus
512 KB Boot Flash (MX29LV040C), 64 MB Code Flash (MT28F256J3)
Valid STATS Version = 0.09, Build Time = 11/21/2010 14:52:00
BCM56512GMAC 0
BCM56512GMAC 1
666 MHz MPC MPC8541E (version 8020/0020) 333 MHz bus
512 KB Boot Flash (MX29LV040C), 16 MB Code Flash (MT28F128J3)
1024 MB DRAM, 8 KB SRAM
LP Slot 14 uptime is 154 days 15 hours 26 minutes 21 seconds
==========================================================================
SL 15: NI-MLX-10Gx8-M 8-port 10GbE (M) Module (Serial #: BEQ0428J001, Part #: 60-1001587-16)
(LID: dgsFJHNlFFG)
Boot : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:24 labeled as xmlprm05800
(449481 bytes) from boot flash
Monitor : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:40 labeled as xmlb05800
(568745 bytes) from code flash
IronWare : Version 5.8.0fT177 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on Feb 24 2017 at 03:02:10 labeled as xmlp05800fb
(9304807 bytes) from Primary
FPGA versions:
Valid PBIF Version = 2.24, Build Time = 4/7/2016 14:16:00
Valid XPP Version = 0.08, Build Time = 6/27/2016 10:36:00
MACXPP40G 0
MACXPP40G 1
1333 MHz MPC MPC8548 (version 8021/0022) 533 MHz bus
512 KB Boot Flash (MX29LV040C), 64 MB Code Flash (MT28F256J3)
1024 MB DRAM, 8 KB SRAM
LP Slot 15 uptime is 154 days 15 hours 26 minutes 21 seconds
==========================================================================
SL 16: NI-MLX-10Gx8-M 8-port 10GbE (M) Module (Serial #: BEQ0443G098, Part #: 60-1001587-14)
(LID: dgsFJJIiFON)
Boot : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:24 labeled as xmlprm05800
(449481 bytes) from boot flash
Monitor : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on May 18 2015 at 13:02:40 labeled as xmlb05800
(568745 bytes) from code flash
IronWare : Version 5.8.0fT177 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
Compiled on Feb 24 2017 at 03:02:10 labeled as xmlp05800fb
(9304807 bytes) from Primary
FPGA versions:
Valid PBIF Version = 2.24, Build Time = 4/7/2016 14:16:00
Valid XPP Version = 0.08, Build Time = 6/27/2016 10:36:00
MACXPP40G 0
MACXPP40G 1
1333 MHz MPC MPC8548 (version 8021/0022) 533 MHz bus
512 KB Boot Flash (MX29LV040C), 64 MB Code Flash (MT28F256J3)
1024 MB DRAM, 8 KB SRAM
LP Slot 16 uptime is 154 days 15 hours 26 minutes 20 seconds
LP Slot 2 uptime is 21 days 20 hours 23 minutes 19 seconds
==========================================================================
All show version done

View file

@ -0,0 +1,99 @@
# (c) 2016 Red Hat Inc.
#
# This file is part of Ansible
#
# Ansible is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Ansible is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
# Make coding more python3-ish
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
import json
from ansible.compat.tests.mock import patch
from .ironware_module import TestIronwareModule, load_fixture, set_module_args
from ansible.modules.network.ironware import ironware_facts
class TestIronwareFacts(TestIronwareModule):
module = ironware_facts
def setUp(self):
self.mock_run_commands = patch(
'ansible.modules.network.ironware.ironware_facts.run_commands')
self.run_commands = self.mock_run_commands.start()
def tearDown(self):
self.mock_run_commands.stop()
def load_fixtures(self, commands=None):
def load_from_file(*args, **kwargs):
module, commands = args
output = list()
for item in commands:
try:
obj = json.loads(item)
command = obj['command']
except ValueError:
command = item
filename = str(command).split(' | ')[0].replace(' ', '_').replace('/', '7')
output.append(load_fixture(filename))
return output
self.run_commands.side_effect = load_from_file
def test_ironware_facts_gather_subset_default(self):
set_module_args(dict())
result = self.execute_module()
ansible_facts = result['ansible_facts']
self.assertIn('hardware', ansible_facts['ansible_net_gather_subset'])
self.assertIn('default', ansible_facts['ansible_net_gather_subset'])
self.assertIn('interfaces', ansible_facts['ansible_net_gather_subset'])
self.assertEquals(['/flash/'], ansible_facts['ansible_net_filesystems'])
self.assertIn('1/1', ansible_facts['ansible_net_interfaces'].keys())
self.assertIn('10.69.1.6', ansible_facts['ansible_net_all_ipv4_addresses'])
self.assertIn('2001:db8::1', ansible_facts['ansible_net_all_ipv6_addresses'])
self.assertIn('ansible_net_neighbors', ansible_facts)
self.assertIn('1/2', ansible_facts['ansible_net_neighbors'].keys())
self.assertEquals(4096, ansible_facts['ansible_net_memtotal_mb'])
self.assertEquals(3630, ansible_facts['ansible_net_memfree_mb'])
self.assertEquals('5.8.0fT163', ansible_facts['ansible_net_version'])
self.assertEquals('MLXe 4-slot Chassis', ansible_facts['ansible_net_model'])
self.assertEquals('BGD2503J01F', ansible_facts['ansible_net_serialnum'])
def test_ironware_facts_gather_subset_config(self):
set_module_args({'gather_subset': 'config'})
result = self.execute_module()
ansible_facts = result['ansible_facts']
self.assertIn('default', ansible_facts['ansible_net_gather_subset'])
self.assertIn('config', ansible_facts['ansible_net_gather_subset'])
self.assertIn('ansible_net_config', ansible_facts)
def test_ironware_facts_gather_subset_mpls(self):
set_module_args({'gather_subset': 'mpls'})
result = self.execute_module()
ansible_facts = result['ansible_facts']
self.assertIn('default', ansible_facts['ansible_net_gather_subset'])
self.assertIn('mpls', ansible_facts['ansible_net_gather_subset'])
self.assertIn('ansible_net_mpls_lsps', ansible_facts)
self.assertIn('ansible_net_mpls_vll', ansible_facts)
self.assertIn('ansible_net_mpls_vll_local', ansible_facts)
self.assertIn('ansible_net_mpls_vpls', ansible_facts)
self.assertIn('LSP1', ansible_facts['ansible_net_mpls_lsps'].keys())
self.assertIn('TEST-VLL', ansible_facts['ansible_net_mpls_vll'].keys())
self.assertIn('TEST-LOCAL', ansible_facts['ansible_net_mpls_vll_local'].keys())
self.assertIn('TEST-VPLS', ansible_facts['ansible_net_mpls_vpls'].keys())