aboutsummaryrefslogtreecommitdiffstats
path: root/resources
diff options
context:
space:
mode:
authorPeter Mikus <pmikus@cisco.com>2017-05-31 13:25:24 +0000
committerPeter Mikus <pmikus@cisco.com>2017-06-06 09:04:40 +0000
commitd058458cb57eaa68c9aafe03fa823e7489664bf0 (patch)
tree509451686977e8e0d8226f898133d50a80294aee /resources
parente2f9bdd098fb0008cc4fc2f8c8298ebe0d6ef062 (diff)
VIRL lspci fix
Change-Id: I884b56c5cc2e0d5f40c0e9d0b5fb7356dc3b4028 Signed-off-by: pmikus <pmikus@cisco.com>
Diffstat (limited to 'resources')
-rw-r--r--resources/libraries/python/InterfaceUtil.py46
1 files changed, 27 insertions, 19 deletions
diff --git a/resources/libraries/python/InterfaceUtil.py b/resources/libraries/python/InterfaceUtil.py
index e5597b9065..750029e197 100644
--- a/resources/libraries/python/InterfaceUtil.py
+++ b/resources/libraries/python/InterfaceUtil.py
@@ -348,27 +348,35 @@ class InterfaceUtil(object):
ssh = SSH()
ssh.connect(node)
- # First rescan PCI devices in the system
- cmd = 'sh -c "echo 1 > /sys/bus/pci/rescan"'
- (ret_code, _, _) = ssh.exec_command_sudo(cmd)
- if int(ret_code) != 0:
- raise RuntimeError("'{0}' failed on '{1}'"
- .format(cmd, node['host']))
-
- cmd = 'lspci -vmmks {0}'.format(pci_addr)
- (ret_code, stdout, _) = ssh.exec_command(cmd)
- if int(ret_code) != 0:
- raise RuntimeError("'{0}' failed on '{1}'"
- .format(cmd, node['host']))
+ for i in range(3):
+ logger.trace('Try {}: Get interface driver'.format(i))
+ cmd = 'sh -c "echo 1 > /sys/bus/pci/rescan"'
+ (ret_code, _, _) = ssh.exec_command_sudo(cmd)
+ if int(ret_code) != 0:
+ raise RuntimeError("'{0}' failed on '{1}'"
+ .format(cmd, node['host']))
- for line in stdout.splitlines():
- if len(line) == 0:
- continue
- (name, value) = line.split("\t", 1)
- if name == 'Driver:':
- return value
+ cmd = 'lspci -vmmks {0}'.format(pci_addr)
+ (ret_code, stdout, _) = ssh.exec_command(cmd)
+ if int(ret_code) != 0:
+ raise RuntimeError("'{0}' failed on '{1}'"
+ .format(cmd, node['host']))
- return None
+ for line in stdout.splitlines():
+ if len(line) == 0:
+ continue
+ try:
+ (name, value) = line.split("\t", 1)
+ except ValueError:
+ if name != "Driver:":
+ pass
+ else:
+ return None
+ if name == 'Driver:':
+ return value if value else None
+ else:
+ raise RuntimeError('Get interface driver for: {0}'\
+ .format(pci_addr))
@staticmethod
def tg_set_interfaces_udev_rules(node):
">, action="store", dest="mapmode") args = parser.parse_args() # # 1:1 Shared IPv4 address, shared BR # def shared11br(): ip4_pfx = ipaddress.ip_network('20.0.0.0/16') ip6_dst = ipaddress.ip_network('bbbb::/32') psid_len = 6 for i in range(ip4_pfx.num_addresses): print("map add domain ip4-pfx " + str(ip4_pfx[i]) + "/32 ip6-pfx ::/0 ip6-shared-src cccc:bbbb::1", "ea-bits-len 0 psid-offset 6 psid-len", psid_len) for psid in range(0x1 << psid_len): print("map add rule index", i, "psid", psid, "ip6-dst", ip6_dst[(i * (0x1<<psid_len)) + psid]) # # 1:1 Shared IPv4 address # def shared11(): ip4_pfx = ipaddress.ip_network('20.0.0.0/16') ip6_src = ipaddress.ip_network('cccc:bbbb::/64') ip6_dst = ipaddress.ip_network('bbbb::/32') psid_len = 6 for i in range(ip4_pfx.num_addresses): print("map add domain ip4-pfx " + str(ip4_pfx[i]) + "/32 ip6-pfx ::/0 ip6-src", ip6_src[i], "ea-bits-len 0 psid-offset 6 psid-len", psid_len) for psid in range(0x1 << psid_len): print("map add rule index", i, "psid", psid, "ip6-dst", ip6_dst[(i * (0x1<<psid_len)) + psid]) # # 1:1 Shared IPv4 address small # def smallshared11(): ip4_pfx = ipaddress.ip_network('20.0.0.0/24') ip6_src = ipaddress.ip_network('cccc:bbbb::/64') ip6_dst = ipaddress.ip_network('bbbb::/32') psid_len = 6 for i in range(ip4_pfx.num_addresses): print("map add domain ip4-pfx " + str(ip4_pfx[i]) + "/32 ip6-pfx ::/0 ip6-src", ip6_src[i], "ea-bits-len 0 psid-offset 6 psid-len", psid_len) for psid in range(0x1 << psid_len): print("map add rule index", i, "psid", psid, "ip6-dst", ip6_dst[(i * (0x1<<psid_len)) + psid]) # # 1:1 Full IPv4 address # def full11(): ip4_pfx = ipaddress.ip_network('20.0.0.0/16') ip6_src = ipaddress.ip_network('cccc:bbbb::/64') ip6_dst = ipaddress.ip_network('bbbb::/32') psid_len = 0 for i in range(ip4_pfx.num_addresses): print("map add domain ip4-pfx " + str(ip4_pfx[i]) + "/32 ip6-pfx " + str(ip6_dst[i]) + "/128 ip6-src", ip6_src[i], "ea-bits-len 0 psid-offset 0 psid-len 0") def full11br(): ip4_pfx = ipaddress.ip_network('20.0.0.0/16') ip6_dst = ipaddress.ip_network('bbbb::/32') psid_len = 0 for i in range(ip4_pfx.num_addresses): print("map add domain ip4-pfx " + str(ip4_pfx[i]) + "/32 ip6-pfx " + str(ip6_dst[i]) + "/128 ip6-shared-src cccc:bbbb::1", "ea-bits-len 0 psid-offset 0 psid-len 0") # # Algorithmic mapping Shared IPv4 address # def algo(): print("map add domain ip4-pfx 20.0.0.0/24 ip6-pfx bbbb::/32 ip6-src cccc:bbbb::1 ea-bits-len 16 psid-offset 6 psid-len 8") print("map add domain ip4-pfx 20.0.1.0/24 ip6-pfx bbbb:1::/32 ip6-src cccc:bbbb::2 ea-bits-len 8 psid-offset 0 psid-len 0") # # IP4 forwarding # def ip4(): ip4_pfx = ipaddress.ip_network('20.0.0.0/16') for i in range(ip4_pfx.num_addresses): print("ip route add " + str(ip4_pfx[i]) + "/32 via 172.16.0.2") globals()[args.mapmode]()