Support Debian
This commit is contained in:
		
							parent
							
								
									5a9997058d
								
							
						
					
					
						commit
						08d16574fc
					
				
					 2 changed files with 34 additions and 3 deletions
				
			
		
							
								
								
									
										27
									
								
								check_kernel
									
										
									
									
									
								
							
							
						
						
									
										27
									
								
								check_kernel
									
										
									
									
									
								
							| 
						 | 
					@ -14,13 +14,20 @@ def proc_version():
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def running_kernel_version():
 | 
					def running_kernel_version():
 | 
				
			||||||
 | 
					    m = re.findall('(?<=Debian )\S+', proc_version())
 | 
				
			||||||
 | 
					    if m:
 | 
				
			||||||
 | 
					        # Note: it's the _second_ match
 | 
				
			||||||
 | 
					        version = clean_kernel_version(m[1])
 | 
				
			||||||
 | 
					        return version
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    m = re.search('(?<=Linux version )\S+', proc_version())
 | 
					    m = re.search('(?<=Linux version )\S+', proc_version())
 | 
				
			||||||
    if m:
 | 
					    if m:
 | 
				
			||||||
        version = clean_kernel_version(m.group(0))
 | 
					        version = clean_kernel_version(m.group(0))
 | 
				
			||||||
    else:
 | 
					        return version
 | 
				
			||||||
        version = None
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return version
 | 
					
 | 
				
			||||||
 | 
					def is_debian():
 | 
				
			||||||
 | 
					    return posixpath.exists('/etc/debian_version')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def is_fedora():
 | 
					def is_fedora():
 | 
				
			||||||
| 
						 | 
					@ -28,10 +35,24 @@ def is_fedora():
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def installed_kernel_versions():
 | 
					def installed_kernel_versions():
 | 
				
			||||||
 | 
					    if is_debian():
 | 
				
			||||||
 | 
					        return installed_kernel_versions_debian()
 | 
				
			||||||
    if is_fedora():
 | 
					    if is_fedora():
 | 
				
			||||||
        return installed_kernel_versions_fedora()
 | 
					        return installed_kernel_versions_fedora()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def installed_kernel_versions_debian():
 | 
				
			||||||
 | 
					    dpkg_out = subprocess.check_output(
 | 
				
			||||||
 | 
					        ['dpkg-query', '--show', '--showformat', '${Package} ${Version}\n', 'linux-image*'])
 | 
				
			||||||
 | 
					    dpkg_out = dpkg_out.strip()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    versions = dpkg_out.split('\n')
 | 
				
			||||||
 | 
					    versions = [v for v in versions if re.search('^linux-image-\d', v)]
 | 
				
			||||||
 | 
					    versions = [clean_kernel_version(v.split(' ')[1]) for v in versions]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return versions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def installed_kernel_versions_fedora():
 | 
					def installed_kernel_versions_fedora():
 | 
				
			||||||
    rpm_out = subprocess.check_output(
 | 
					    rpm_out = subprocess.check_output(
 | 
				
			||||||
        ['rpm', '--queryformat=%{VERSION}-%{RELEASE}\n', '-q', 'kernel'])
 | 
					        ['rpm', '--queryformat=%{VERSION}-%{RELEASE}\n', '-q', 'kernel'])
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,6 +16,11 @@ import check_kernel
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class CleanKernelVersionTestCase(unittest.TestCase):
 | 
					class CleanKernelVersionTestCase(unittest.TestCase):
 | 
				
			||||||
 | 
					    def testDebian(self):
 | 
				
			||||||
 | 
					        versions = [('3.16.7-ckt9-3~deb8u2', '3.16.7-ckt9-3~deb8u2')]
 | 
				
			||||||
 | 
					        for dirty, clean in versions:
 | 
				
			||||||
 | 
					            self.assertEqual(clean_kernel_version(dirty), LooseVersion(clean))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def testFedora(self):
 | 
					    def testFedora(self):
 | 
				
			||||||
        versions = [('4.0.4-301.fc22.x86_64', '4.0.4-301'),
 | 
					        versions = [('4.0.4-301.fc22.x86_64', '4.0.4-301'),
 | 
				
			||||||
                    ('4.0.0-1.fc22', '4.0.0-1')]
 | 
					                    ('4.0.0-1.fc22', '4.0.0-1')]
 | 
				
			||||||
| 
						 | 
					@ -29,6 +34,11 @@ class RunningKernelVersionTestCase(unittest.TestCase):
 | 
				
			||||||
            self.assertEqual(check_kernel.running_kernel_version(),
 | 
					            self.assertEqual(check_kernel.running_kernel_version(),
 | 
				
			||||||
                             LooseVersion('4.0.3-301'))
 | 
					                             LooseVersion('4.0.3-301'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def testDebian(self):
 | 
				
			||||||
 | 
					        with unittest.mock.patch.object(check_kernel, 'proc_version', return_value='Linux version 3.16.0-4-amd64 (debian-kernel@lists.debian.org) (gcc version 4.8.4 (Debian 4.8.4-1) ) #1 SMP Debian 3.16.7-ckt9-3~deb8u1 (2015-04-24)'):
 | 
				
			||||||
 | 
					            self.assertEqual(check_kernel.running_kernel_version(),
 | 
				
			||||||
 | 
					                             LooseVersion('3.16.7-ckt9-3~deb8u1'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if __name__ == '__main__':
 | 
					if __name__ == '__main__':
 | 
				
			||||||
    unittest.main()
 | 
					    unittest.main()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue