X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=plugins%2Fipv6.py;h=28e138fc0d362e7e98f56076bce46db4338466e2;hb=ac6786141feadccdc48b819ab21a825a54881ded;hp=4f5d39f216742797ae094c7b5fe5c297980bfe30;hpb=9fbee5e89fe13eb431318b07e4438d4d5e368cfc;p=nodemanager.git diff --git a/plugins/ipv6.py b/plugins/ipv6.py index 4f5d39f..28e138f 100644 --- a/plugins/ipv6.py +++ b/plugins/ipv6.py @@ -3,7 +3,7 @@ """ Description: IPv6 Support and Management to Slices ipv6 nodemanager plugin -Version: 0.7 +Version: 0.8 Author: Guilherme Sperb Machado Requirements: @@ -12,7 +12,7 @@ Requirements: * The prefix specified on 'sliversipv6prefix' tag must be at least 64 It should vary between 1 and 64, since it is the minimum amount of bits to have native IPv6 auto-configuration. -* The ipv6_address on 'sliversipv6prefix' tag can be any valid IPv6 address. +* The ipv6_address in 'sliversipv6prefix' tag value can be any valid IPv6 address. E.g., 2002:1000:: or 2002:1000::1 * It is the node manager/admin responsibility to properly set the IPv6 routing, since slivers should receive/send any kind of traffic. @@ -24,11 +24,17 @@ import socket import re import tools -import libvirt import uuid -from sliver_libvirt import Sliver_Libvirt from xml.dom.minidom import parseString +# TODO: is there anything better to do if the "libvirt", "sliver_libvirt", +# and are not in place in the VS distro? +try: + import libvirt + from sliver_libvirt import Sliver_Libvirt +except: + logger.log("Could not import 'sliver_lxc' or 'libvirt'.") + priority=4 radvd_conf_file = '/etc/radvd.conf' @@ -187,7 +193,7 @@ interface virbr0 }; """ % locals() - with open(radvd_conf_file,'w') as f: + with open(radvd_conf_file, 'w') as f: f.write(configRadvd) kill_radvd() start_radvd() @@ -216,11 +222,14 @@ def start_radvd(): def GetSlivers(data, config, plc): type = 'sliver.LXC' + virt=tools.get_node_virt() + if virt!='lxc': + return interfaces = data['interfaces'] logger.log(repr(interfaces)) for interface in interfaces: - logger.log('ipv6: get interface: %r'%(interface)) + #logger.log('ipv6: get interface: %r'%(interface)) if 'interface_tag_ids' in interface: interface_tag_ids = "interface_tag_ids" interface_tag_id = "interface_tag_id" @@ -231,17 +240,17 @@ def GetSlivers(data, config, plc): ipv6addrprefix = setting['value'].split('/', 1) ipv6addr = ipv6addrprefix[0] valid_prefix = False - logger.log("ipv6: len(ipv6addrprefix)=%s" % (len(ipv6addrprefix)) ) + #logger.log("ipv6: len(ipv6addrprefix)=%s" % (len(ipv6addrprefix)) ) if len(ipv6addrprefix)>1: prefix = ipv6addrprefix[1] - logger.log("ipv6: prefix=%s" % (prefix) ) + #logger.log("ipv6: prefix=%s" % (prefix) ) if int(prefix)>0 and int(prefix)<=64: valid_prefix = True else: valid_prefix = False else: valid_prefix = False - logger.log("ipv6: '%s'=%s" % (sliversipv6prefixtag,ipv6addr) ) + #logger.log("ipv6: '%s'=%s" % (sliversipv6prefixtag, ipv6addr) ) valid_ipv6 = tools.is_valid_ipv6(ipv6addr) if not(valid_ipv6): logger.log("ipv6: the 'sliversipv6prefix' tag presented a non-valid IPv6 address!") @@ -268,7 +277,7 @@ def GetSlivers(data, config, plc): tools.reboot_slivers() else: logger.log("ipv6: starting to redefine the virtual network...") - #network_elem = buildLibvirtDefaultNetConfig(dom,ipv6addr,prefix) + #network_elem = buildLibvirtDefaultNetConfig(dom, ipv6addr, prefix) network_elem = add_ipv6(dom, ipv6addr, prefix) set_up(networkLibvirt, connLibvirt, network_elem, ipv6addr, prefix) logger.log("ipv6: trying to reboot the slivers...")