| Lines 1004-1020
          
      
      
        Link Here | 
        
          | 1004 | 		required_version = self.required_ucs_version | 1004 | 		required_version = self.required_ucs_version | 
        
          | 1005 | 		if not required_version: | 1005 | 		if not required_version: | 
        
          | 1006 | 			return True | 1006 | 			return True | 
            
              |  |  | 1007 | 		current_version = self.get_current_ucs_version_as_string() | 
            
              | 1008 |  | 
            
              | 1009 | 		if not self.is_fitting_ucs_version(required_version, current_version): | 
            
              | 1010 | 			return {'required_version': required_version} | 
            
              | 1011 | 		return True | 
            
              | 1012 |  | 
            
              | 1013 | 	@staticmethod | 
            
              | 1014 | 	def get_current_ucs_version_as_string(): | 
        
          | 1007 | 		ucr_load() | 1015 | 		ucr_load() | 
          
            
              | 1008 | 		version_bits = re.match(r'^(\d+)\.(\d+)-(\d+)(?: errata(\d+))?$', required_version).groups() | 1016 | 		version = ucr_get('version/version') | 
            
              | 1009 | 		major, minor = ucr_get('version/version').split('.', 1) |  |  | 
        
          | 1010 | 		patchlevel = ucr_get('version/patchlevel') | 1017 | 		patchlevel = ucr_get('version/patchlevel') | 
          
            
              | 1011 | 		errata = ucr_get('version/erratalevel') | 1018 | 		erratalevel = ucr_get('version/erratalevel') | 
            
              | 1012 | 		comparisons = zip(version_bits, [major, minor, patchlevel, errata]) |  |  | 
            
              | 1013 | 		for required, present in comparisons: | 
            
              | 1014 | 			if int(required or 0) > int(present): | 
            
              | 1015 | 				return {'required_version': required_version} | 
            
              | 1016 | 		return True | 
        
          | 1017 |  | 1019 |  | 
            
              |  |  | 1020 | 		current_version = '{version}-{patchlevel} errata{erratalevel}'.format(version=version, patchlevel=patchlevel, erratalevel=erratalevel) | 
            
              | 1021 | 		return current_version | 
            
              | 1022 |  | 
            
              | 1023 | 	@staticmethod | 
            
              | 1024 | 	def is_fitting_ucs_version(required_version, current_version): # type: (str, str) -> bool  | 
            
              | 1025 | 		return LooseVersion(required_version) <= LooseVersion(current_version) | 
            
              | 1026 |  | 
        
          | 1018 | 	@hard_requirement('install', 'upgrade') | 1027 | 	@hard_requirement('install', 'upgrade') | 
        
          | 1019 | 	def must_have_fitting_kernel_version(self): | 1028 | 	def must_have_fitting_kernel_version(self): | 
        
          | 1020 | 		if self.docker: | 1029 | 		if self.docker: |