code: def _update_project(self, request, data):
          
          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
docs: Update project info