|
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: |