<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _update_project(self, request, data):
 """Update project info"""

        domain_id = identity.get_domain_id_for_operation(request)
        try:
            project_id = data['project_id']

            # add extra information
            if keystone.VERSIONS.active >= 3:
                EXTRA_INFO = getattr(settings, 'PROJECT_TABLE_EXTRA_INFO', {})
                kwargs = dict((key, data.get(key)) for key in EXTRA_INFO)
            else:
                kwargs = {}

            return api.keystone.tenant_update(
                request,
                project_id,
                name=data['name'],
                description=data['description'],
                enabled=data['enabled'],
                domain=domain_id,
                **kwargs)
        except exceptions.Conflict:
            msg = _('Project name "%s" is already used.') % data['name']
            self.failure_message = msg
            return
        except Exception as e:
            LOG.debug('Project update failed: %s', e)
            exceptions.handle(request, ignore=True)
            return