<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def nova_services_up(self):
 """Checks if required Nova services are up and running. returns: True if all needed Nova services are up, False otherwise """

        required = set(['nova-conductor', 'nova-cert', 'nova-scheduler',
                       'nova-compute'])
        try:
            services = self._nclient.services.list()
        # There are several individual Nova client exceptions but they have
        # no other common base than Exception, hence the long list.
        except Exception as e:
            LOG.error('Failure determining running Nova services: %s', e)
            return False
        return not bool(required.difference(
            [service.binary for service in services
             if service.status == 'enabled' and service.state == 'up']))