Integrated all IPv6 check into setup_ipv6()

This commit is contained in:
Hui Xiang
2014-09-18 21:16:28 +08:00
parent f392774103
commit f5d079dd55
3 changed files with 41 additions and 20 deletions

View File

@@ -20,7 +20,7 @@ from charmhelpers.contrib.hahelpers.cluster import (
) )
from charmhelpers.contrib.network.ip import ( from charmhelpers.contrib.network.ip import (
get_ipv6_addr, get_ipv6_addr
) )
from charmhelpers.contrib.openstack.utils import get_host_ip from charmhelpers.contrib.openstack.utils import get_host_ip
@@ -256,4 +256,5 @@ class SwiftIPv6Context(OSContextGenerator):
ctxt['bind_ip'] = '::' ctxt['bind_ip'] = '::'
else: else:
ctxt['bind_ip'] = '0.0.0.0' ctxt['bind_ip'] = '0.0.0.0'
return ctxt return ctxt

View File

@@ -24,7 +24,8 @@ from swift_utils import (
add_to_ring, add_to_ring,
should_balance, should_balance,
do_openstack_upgrade, do_openstack_upgrade,
write_rc_script write_rc_script,
setup_ipv6
) )
from swift_context import get_swift_hash from swift_context import get_swift_hash
@@ -40,13 +41,11 @@ from charmhelpers.core.hookenv import (
) )
from charmhelpers.core.host import ( from charmhelpers.core.host import (
service_restart, service_restart,
restart_on_change, restart_on_change
lsb_release,
) )
from charmhelpers.fetch import ( from charmhelpers.fetch import (
apt_install, apt_install,
apt_update, apt_update
add_source
) )
from charmhelpers.payload.execd import execd_preinstall from charmhelpers.payload.execd import execd_preinstall
@@ -57,11 +56,9 @@ from charmhelpers.contrib.openstack.ip import (
from charmhelpers.contrib.network.ip import ( from charmhelpers.contrib.network.ip import (
get_iface_for_address, get_iface_for_address,
get_netmask_for_address, get_netmask_for_address,
get_ipv6_addr, get_ipv6_addr
) )
from charmhelpers.contrib.peerstorage import peer_store
extra_pkgs = [ extra_pkgs = [
"haproxy", "haproxy",
"python-jinja2" "python-jinja2"
@@ -80,13 +77,8 @@ def install():
if src != 'distro': if src != 'distro':
openstack.configure_installation_source(src) openstack.configure_installation_source(src)
# Note(xianghui): Need to install haproxy(1.5.3) from trusty-backports if config('prefer-ipv6'):
# to support ipv6 address, so check is required to make sure not setup_ipv6()
# breaking other versions.
trusty = lsb_release()['DISTRIB_CODENAME'] == 'trusty'
if config('prefer-ipv6') and trusty:
add_source('deb http://archive.ubuntu.com/ubuntu trusty-backports'
' main')
apt_update(fatal=True) apt_update(fatal=True)
rel = openstack.get_os_codename_install_source(src) rel = openstack.get_os_codename_install_source(src)
@@ -94,8 +86,6 @@ def install():
pkgs = determine_packages(rel) pkgs = determine_packages(rel)
apt_install(pkgs, fatal=True) apt_install(pkgs, fatal=True)
apt_install(extra_pkgs, fatal=True) apt_install(extra_pkgs, fatal=True)
if config('prefer-ipv6') and trusty:
apt_install('haproxy/trusty-backports', fatal=True)
ensure_swift_dir() ensure_swift_dir()
# initialize new storage rings. # initialize new storage rings.
for ring in SWIFT_RINGS.iteritems(): for ring in SWIFT_RINGS.iteritems():
@@ -181,6 +171,7 @@ def storage_changed():
host_ip = '[%s]' % relation_get('private-address') host_ip = '[%s]' % relation_get('private-address')
else: else:
host_ip = openstack.get_host_ip(relation_get('private-address')) host_ip = openstack.get_host_ip(relation_get('private-address'))
zone = get_zone(config('zone-assignment')) zone = get_zone(config('zone-assignment'))
node_settings = { node_settings = {
'ip': host_ip, 'ip': host_ip,
@@ -219,6 +210,9 @@ def storage_broken():
@hooks.hook('config-changed') @hooks.hook('config-changed')
@restart_on_change(restart_map()) @restart_on_change(restart_map())
def config_changed(): def config_changed():
if config('prefer-ipv6'):
setup_ipv6()
configure_https() configure_https()
open_port(config('bind-port')) open_port(config('bind-port'))
# Determine whether or not we should do an upgrade, based on the # Determine whether or not we should do an upgrade, based on the
@@ -234,7 +228,11 @@ def config_changed():
@restart_on_change(restart_map()) @restart_on_change(restart_map())
def cluster_changed(): def cluster_changed():
if config('prefer-ipv6'): if config('prefer-ipv6'):
peer_store('private-address', get_ipv6_addr()) for rid in relation_ids('cluster'):
relation_set(relation_id=rid,
relation_settings={'private-address':
get_ipv6_addr()})
CONFIGS.write_all() CONFIGS.write_all()

View File

@@ -12,7 +12,13 @@ from charmhelpers.core.hookenv import (
) )
from charmhelpers.fetch import ( from charmhelpers.fetch import (
apt_update, apt_update,
apt_upgrade apt_upgrade,
apt_install,
add_source
)
from charmhelpers.core.host import (
lsb_release
) )
import charmhelpers.contrib.openstack.context as context import charmhelpers.contrib.openstack.context as context
@@ -369,3 +375,19 @@ def do_openstack_upgrade(configs):
apt_upgrade(options=dpkg_opts, fatal=True, dist=True) apt_upgrade(options=dpkg_opts, fatal=True, dist=True)
configs.set_release(openstack_release=new_os_rel) configs.set_release(openstack_release=new_os_rel)
configs.write_all() configs.write_all()
def setup_ipv6():
ubuntu_rel = float(lsb_release()['DISTRIB_RELEASE'])
if ubuntu_rel < 14.04:
raise Exception("IPv6 is not supported for Ubuntu "
"versions less than Trusty 14.04")
# NOTE(xianghui): Need to install haproxy(1.5.3) from trusty-backports
# to support ipv6 address, so check is required to make sure not
# breaking other versions, IPv6 only support for >= Trusty
if ubuntu_rel == 14.04:
add_source('deb http://archive.ubuntu.com/ubuntu trusty-backports'
' main')
apt_update()
apt_install('haproxy/trusty-backports', fatal=True)