sync charmhelpers
This commit is contained in:
@@ -1379,14 +1379,15 @@ class PhyNICMTUContext(DataPortContext):
|
|||||||
ports = mappings.values()
|
ports = mappings.values()
|
||||||
napi_settings = NeutronAPIContext()()
|
napi_settings = NeutronAPIContext()()
|
||||||
mtu = napi_settings.get('network_device_mtu')
|
mtu = napi_settings.get('network_device_mtu')
|
||||||
all_ports = []
|
all_ports = set()
|
||||||
# If any of ports is a vlan device, its underlying device must have
|
# If any of ports is a vlan device, its underlying device must have
|
||||||
# mtu applied first.
|
# mtu applied first.
|
||||||
for port in ports:
|
for port in ports:
|
||||||
for lport in glob.glob("/sys/class/net/%s/lower_*" % port):
|
for lport in glob.glob("/sys/class/net/%s/lower_*" % port):
|
||||||
lport = os.path.basename(lport)
|
lport = os.path.basename(lport)
|
||||||
all_ports.append(lport.split('_')[1])
|
all_ports.add(lport.split('_')[1])
|
||||||
|
|
||||||
|
all_ports = list(all_ports)
|
||||||
all_ports.extend(ports)
|
all_ports.extend(ports)
|
||||||
if mtu:
|
if mtu:
|
||||||
ctxt["devs"] = '\\n'.join(all_ports)
|
ctxt["devs"] = '\\n'.join(all_ports)
|
||||||
|
|||||||
@@ -326,7 +326,7 @@ class AmuletUtils(object):
|
|||||||
|
|
||||||
def service_restarted_since(self, sentry_unit, mtime, service,
|
def service_restarted_since(self, sentry_unit, mtime, service,
|
||||||
pgrep_full=None, sleep_time=20,
|
pgrep_full=None, sleep_time=20,
|
||||||
retry_count=2, retry_sleep_time=30):
|
retry_count=30, retry_sleep_time=10):
|
||||||
"""Check if service was been started after a given time.
|
"""Check if service was been started after a given time.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@@ -334,8 +334,9 @@ class AmuletUtils(object):
|
|||||||
mtime (float): The epoch time to check against
|
mtime (float): The epoch time to check against
|
||||||
service (string): service name to look for in process table
|
service (string): service name to look for in process table
|
||||||
pgrep_full: [Deprecated] Use full command line search mode with pgrep
|
pgrep_full: [Deprecated] Use full command line search mode with pgrep
|
||||||
sleep_time (int): Seconds to sleep before looking for process
|
sleep_time (int): Initial sleep time (s) before looking for file
|
||||||
retry_count (int): If service is not found, how many times to retry
|
retry_sleep_time (int): Time (s) to sleep between retries
|
||||||
|
retry_count (int): If file is not found, how many times to retry
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True if service found and its start time it newer than mtime,
|
bool: True if service found and its start time it newer than mtime,
|
||||||
@@ -359,11 +360,12 @@ class AmuletUtils(object):
|
|||||||
pgrep_full)
|
pgrep_full)
|
||||||
self.log.debug('Attempt {} to get {} proc start time on {} '
|
self.log.debug('Attempt {} to get {} proc start time on {} '
|
||||||
'OK'.format(tries, service, unit_name))
|
'OK'.format(tries, service, unit_name))
|
||||||
except IOError:
|
except IOError as e:
|
||||||
# NOTE(beisner) - race avoidance, proc may not exist yet.
|
# NOTE(beisner) - race avoidance, proc may not exist yet.
|
||||||
# https://bugs.launchpad.net/charm-helpers/+bug/1474030
|
# https://bugs.launchpad.net/charm-helpers/+bug/1474030
|
||||||
self.log.debug('Attempt {} to get {} proc start time on {} '
|
self.log.debug('Attempt {} to get {} proc start time on {} '
|
||||||
'failed'.format(tries, service, unit_name))
|
'failed\n{}'.format(tries, service,
|
||||||
|
unit_name, e))
|
||||||
time.sleep(retry_sleep_time)
|
time.sleep(retry_sleep_time)
|
||||||
tries += 1
|
tries += 1
|
||||||
|
|
||||||
@@ -383,35 +385,62 @@ class AmuletUtils(object):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
def config_updated_since(self, sentry_unit, filename, mtime,
|
def config_updated_since(self, sentry_unit, filename, mtime,
|
||||||
sleep_time=20):
|
sleep_time=20, retry_count=30,
|
||||||
|
retry_sleep_time=10):
|
||||||
"""Check if file was modified after a given time.
|
"""Check if file was modified after a given time.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
sentry_unit (sentry): The sentry unit to check the file mtime on
|
sentry_unit (sentry): The sentry unit to check the file mtime on
|
||||||
filename (string): The file to check mtime of
|
filename (string): The file to check mtime of
|
||||||
mtime (float): The epoch time to check against
|
mtime (float): The epoch time to check against
|
||||||
sleep_time (int): Seconds to sleep before looking for process
|
sleep_time (int): Initial sleep time (s) before looking for file
|
||||||
|
retry_sleep_time (int): Time (s) to sleep between retries
|
||||||
|
retry_count (int): If file is not found, how many times to retry
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True if file was modified more recently than mtime, False if
|
bool: True if file was modified more recently than mtime, False if
|
||||||
file was modified before mtime,
|
file was modified before mtime, or if file not found.
|
||||||
"""
|
"""
|
||||||
self.log.debug('Checking %s updated since %s' % (filename, mtime))
|
unit_name = sentry_unit.info['unit_name']
|
||||||
|
self.log.debug('Checking that %s updated since %s on '
|
||||||
|
'%s' % (filename, mtime, unit_name))
|
||||||
time.sleep(sleep_time)
|
time.sleep(sleep_time)
|
||||||
|
file_mtime = None
|
||||||
|
tries = 0
|
||||||
|
while tries <= retry_count and not file_mtime:
|
||||||
|
try:
|
||||||
file_mtime = self._get_file_mtime(sentry_unit, filename)
|
file_mtime = self._get_file_mtime(sentry_unit, filename)
|
||||||
|
self.log.debug('Attempt {} to get {} file mtime on {} '
|
||||||
|
'OK'.format(tries, filename, unit_name))
|
||||||
|
except IOError as e:
|
||||||
|
# NOTE(beisner) - race avoidance, file may not exist yet.
|
||||||
|
# https://bugs.launchpad.net/charm-helpers/+bug/1474030
|
||||||
|
self.log.debug('Attempt {} to get {} file mtime on {} '
|
||||||
|
'failed\n{}'.format(tries, filename,
|
||||||
|
unit_name, e))
|
||||||
|
time.sleep(retry_sleep_time)
|
||||||
|
tries += 1
|
||||||
|
|
||||||
|
if not file_mtime:
|
||||||
|
self.log.warn('Could not determine file mtime, assuming '
|
||||||
|
'file does not exist')
|
||||||
|
return False
|
||||||
|
|
||||||
if file_mtime >= mtime:
|
if file_mtime >= mtime:
|
||||||
self.log.debug('File mtime is newer than provided mtime '
|
self.log.debug('File mtime is newer than provided mtime '
|
||||||
'(%s >= %s)' % (file_mtime, mtime))
|
'(%s >= %s) on %s (OK)' % (file_mtime,
|
||||||
|
mtime, unit_name))
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
self.log.warn('File mtime %s is older than provided mtime %s'
|
self.log.warn('File mtime is older than provided mtime'
|
||||||
% (file_mtime, mtime))
|
'(%s < on %s) on %s' % (file_mtime,
|
||||||
|
mtime, unit_name))
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def validate_service_config_changed(self, sentry_unit, mtime, service,
|
def validate_service_config_changed(self, sentry_unit, mtime, service,
|
||||||
filename, pgrep_full=None,
|
filename, pgrep_full=None,
|
||||||
sleep_time=20, retry_count=2,
|
sleep_time=20, retry_count=30,
|
||||||
retry_sleep_time=30):
|
retry_sleep_time=10):
|
||||||
"""Check service and file were updated after mtime
|
"""Check service and file were updated after mtime
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@@ -456,7 +485,9 @@ class AmuletUtils(object):
|
|||||||
sentry_unit,
|
sentry_unit,
|
||||||
filename,
|
filename,
|
||||||
mtime,
|
mtime,
|
||||||
sleep_time=0)
|
sleep_time=sleep_time,
|
||||||
|
retry_count=retry_count,
|
||||||
|
retry_sleep_time=retry_sleep_time)
|
||||||
|
|
||||||
return service_restart and config_update
|
return service_restart and config_update
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user