def _check_minimum_version(self):
    "Enforce that we are not older that the minimum version.\n\n        This is a loose check to avoid creating or updating our service\n        record if we would do so with a version that is older that the current\n        minimum of all services. This could happen if we were started with\n        older code by accident, either due to a rollback or an old and\n        un-updated node suddenly coming back onto the network.\n\n        There is technically a race here between the check and the update,\n        but since the minimum version should always roll forward and never\n        backwards, we don't need to worry about doing it atomically. Further,\n        the consequence for getting this wrong is minor, in that we'll just\n        fail to send messages that other services understand.\n        "
    if (not self.obj_attr_is_set('version')):
        return
    if (not self.obj_attr_is_set('binary')):
        return
    minver = self.get_minimum_version(self._context, self.binary)
    if (minver > self.version):
        raise exception.ServiceTooOld(thisver=self.version, minver=minver)
Enforce that we are not older that the minimum version.

This is a loose check to avoid creating or updating our service
record if we would do so with a version that is older that the current
minimum of all services. This could happen if we were started with
older code by accident, either due to a rollback or an old and
un-updated node suddenly coming back onto the network.

There is technically a race here between the check and the update,
but since the minimum version should always roll forward and never
backwards, we don't need to worry about doing it atomically. Further,
the consequence for getting this wrong is minor, in that we'll just
fail to send messages that other services understand.
def _check_minimum_version(self):
    "Enforce that we are not older that the minimum version.\n\n        This is a loose check to avoid creating or updating our service\n        record if we would do so with a version that is older that the current\n        minimum of all services. This could happen if we were started with\n        older code by accident, either due to a rollback or an old and\n        un-updated node suddenly coming back onto the network.\n\n        There is technically a race here between the check and the update,\n        but since the minimum version should always roll forward and never\n        backwards, we don't need to worry about doing it atomically. Further,\n        the consequence for getting this wrong is minor, in that we'll just\n        fail to send messages that other services understand.\n        "
    if (not self.obj_attr_is_set('version')):
        return
    if (not self.obj_attr_is_set('binary')):
        return
    minver = self.get_minimum_version(self._context, self.binary)
    if (minver > self.version):
        raise exception.ServiceTooOld(thisver=self.version, minver=minver)