# running ifconfig inside of the slice's context.
def get_sliver_process(slice_name, process_cmdline):
- """ Utility function to find a process inside of an LXC sliver. Returns
- (cgroup_fn, pid). cgroup_fn is the filename of the cgroup file for
- the process, for example /proc/2592/cgroup. Pid is the process id of
- the process. If the process is not found then (None, None) is returned.
+ """
+ Utility function to find a process inside of an LXC sliver. Returns
+ (cgroup_fn, pid). cgroup_fn is the filename of the cgroup file for
+ the process, for example /proc/2592/cgroup. Pid is the process id of
+ the process. If the process is not found then (None, None) is returned.
"""
try:
cmd = 'grep %s /proc/*/cgroup | grep freezer'%slice_name
path = l.split(':')[0]
comp = l.rsplit(':')[-1]
slice_name_check = comp.rsplit('/')[-1]
- # the lines above were added by Guilherme <gsm@machados.org>
- # due to the ipv6 plugin requirements
+ # the lines below were added by Guilherme <gsm@machados.org>
+ # due to the ipv6 plugin requirements (LXC)
virt=get_node_virt()
if virt=='lxc':
slice_name_check = slice_name_check.rsplit('.')[0]
# Added by Guilherme Sperb Machado <gsm@machados.org>
###################################################
-import re
-import socket
-import fileinput
+try:
+ import re
+ import socket
+ import fileinput
+except:
+ logger.log("Could not import 're', 'socket', or 'fileinput' python packages.")
# TODO: is there anything better to do if the "libvirt", "sliver_libvirt",
# and "sliver_lxc" are not in place?
from sliver_libvirt import Sliver_Libvirt
import sliver_lxc
except:
- logger.log("Could not import sliver_lxc or libvirt or sliver_libvirt -- which is required here.")
+ logger.log("Could not import 'sliver_lxc' or 'libvirt' or 'sliver_libvirt'.")
###################################################
def get_sliver_ifconfig(slice_name, device="eth0"):
- """ return the output of "ifconfig" run from inside the sliver.
+ """
+ return the output of "ifconfig" run from inside the sliver.
- side effects: adds "/usr/sbin" to sys.path
+ side effects: adds "/usr/sbin" to sys.path
"""
# See if setns is installed. If it's not then we're probably not running
###################################################
# Search if there is a specific ipv6 address in the
# /etc/hosts file of a given slice
+# If the parameter 'ipv6addr' is None, then search
+# for any ipv6 address
###################################################
def search_ipv6addr_hosts(slicename, ipv6addr):
hostsFilePath = get_hosts_file_path(slicename)
found=False
try:
for line in fileinput.input(r'%s' % (hostsFilePath)):
- if re.search(r'%s' % (ipv6addr), line):
- found=True
- fileinput.close()
- return found
+ if ipv6addr is not None:
+ if re.search(r'%s' % (ipv6addr), line):
+ found=True
+ else:
+ search = re.search(r'^(.*)\s+.*$', line)
+ if search:
+ ipv6candidate = search.group(1)
+ ipv6candidatestrip = ipv6candidate.strip()
+ valid = is_valid_ipv6(ipv6candidatestrip)
+ if valid:
+ found=True
+ fileinput.close()
+ return found
except:
logger.log("tools: FAILED to search %s in /etc/hosts file of slice=%s" % \
(ipv6addr, slicename) )