sync charmhelpers
This commit is contained in:
		@@ -326,7 +326,7 @@ class AmuletUtils(object):
 | 
			
		||||
 | 
			
		||||
    def service_restarted_since(self, sentry_unit, mtime, service,
 | 
			
		||||
                                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.
 | 
			
		||||
 | 
			
		||||
        Args:
 | 
			
		||||
@@ -334,8 +334,9 @@ class AmuletUtils(object):
 | 
			
		||||
          mtime (float): The epoch time to check against
 | 
			
		||||
          service (string): service name to look for in process table
 | 
			
		||||
          pgrep_full: [Deprecated] Use full command line search mode with pgrep
 | 
			
		||||
          sleep_time (int): Seconds to sleep before looking for process
 | 
			
		||||
          retry_count (int): If service is not found, how many times to retry
 | 
			
		||||
          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:
 | 
			
		||||
          bool: True if service found and its start time it newer than mtime,
 | 
			
		||||
@@ -359,11 +360,12 @@ class AmuletUtils(object):
 | 
			
		||||
                                                            pgrep_full)
 | 
			
		||||
                self.log.debug('Attempt {} to get {} proc start time on {} '
 | 
			
		||||
                               'OK'.format(tries, service, unit_name))
 | 
			
		||||
            except IOError:
 | 
			
		||||
            except IOError as e:
 | 
			
		||||
                # NOTE(beisner) - race avoidance, proc may not exist yet.
 | 
			
		||||
                # https://bugs.launchpad.net/charm-helpers/+bug/1474030
 | 
			
		||||
                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)
 | 
			
		||||
                tries += 1
 | 
			
		||||
 | 
			
		||||
@@ -383,35 +385,62 @@ class AmuletUtils(object):
 | 
			
		||||
            return False
 | 
			
		||||
 | 
			
		||||
    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.
 | 
			
		||||
 | 
			
		||||
        Args:
 | 
			
		||||
          sentry_unit (sentry): The sentry unit to check the file mtime on
 | 
			
		||||
          filename (string): The file to check mtime of
 | 
			
		||||
          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:
 | 
			
		||||
          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)
 | 
			
		||||
        file_mtime = self._get_file_mtime(sentry_unit, filename)
 | 
			
		||||
        file_mtime = None
 | 
			
		||||
        tries = 0
 | 
			
		||||
        while tries <= retry_count and not file_mtime:
 | 
			
		||||
            try:
 | 
			
		||||
                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:
 | 
			
		||||
            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
 | 
			
		||||
        else:
 | 
			
		||||
            self.log.warn('File mtime %s is older than provided mtime %s'
 | 
			
		||||
                          % (file_mtime, mtime))
 | 
			
		||||
            self.log.warn('File mtime is older than provided mtime'
 | 
			
		||||
                          '(%s < on %s) on %s' % (file_mtime,
 | 
			
		||||
                                                  mtime, unit_name))
 | 
			
		||||
            return False
 | 
			
		||||
 | 
			
		||||
    def validate_service_config_changed(self, sentry_unit, mtime, service,
 | 
			
		||||
                                        filename, pgrep_full=None,
 | 
			
		||||
                                        sleep_time=20, retry_count=2,
 | 
			
		||||
                                        retry_sleep_time=30):
 | 
			
		||||
                                        sleep_time=20, retry_count=30,
 | 
			
		||||
                                        retry_sleep_time=10):
 | 
			
		||||
        """Check service and file were updated after mtime
 | 
			
		||||
 | 
			
		||||
        Args:
 | 
			
		||||
@@ -456,7 +485,9 @@ class AmuletUtils(object):
 | 
			
		||||
            sentry_unit,
 | 
			
		||||
            filename,
 | 
			
		||||
            mtime,
 | 
			
		||||
            sleep_time=0)
 | 
			
		||||
            sleep_time=sleep_time,
 | 
			
		||||
            retry_count=retry_count,
 | 
			
		||||
            retry_sleep_time=retry_sleep_time)
 | 
			
		||||
 | 
			
		||||
        return service_restart and config_update
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user