Resync helpers

This commit is contained in:
James Page 2014-07-02 10:40:59 +01:00
parent 8132d4a8a5
commit 62dd6aa7dd
2 changed files with 31 additions and 2 deletions

View File

@ -145,12 +145,16 @@ class SharedDBContext(OSContextGenerator):
# with the service units local address and defer execution # with the service units local address and defer execution
access_network = relation_get('access-network') access_network = relation_get('access-network')
if access_network is not None: if access_network is not None:
if self.relation_prefix is not None:
hostname_key = "{}_hostname".format(self.relation_prefix)
else:
hostname_key = "hostname"
access_hostname = get_address_in_network(access_network, access_hostname = get_address_in_network(access_network,
unit_get('private-address')) unit_get('private-address'))
set_hostname = relation_get(attribute='hostname', set_hostname = relation_get(attribute=hostname_key,
unit=local_unit()) unit=local_unit())
if set_hostname != access_hostname: if set_hostname != access_hostname:
relation_set(hostname=access_hostname) relation_set(relation_settings={hostname_key: access_hostname})
return ctxt # Defer any further hook execution for now.... return ctxt # Defer any further hook execution for now....
password_setting = 'password' password_setting = 'password'

View File

@ -0,0 +1,25 @@
from netaddr import IPAddress, IPNetwork
class VIPConfiguration():
def __init__(self, configuration):
self.vip = []
for vip in configuration.split():
self.vips.append(IPAddress(vip))
def getVIP(self, network):
''' Determine the VIP for the provided network
:network str: CIDR presented network, e.g. 192.168.1.1/24
:returns str: IP address of VIP in provided network or None
'''
network = IPNetwork(network)
for vip in self.vips:
if vip in network:
return str(vip)
return None
def getNIC(self, network):
''' Determine the physical network interface in use
for the specified network'''