docs: def _request_ilo(self, root, extra_headers=None):
          """Send RIBCL XML data to iLO.
  
          This function sends the XML request to the ILO and
          receives the output from ILO.
  
          :raises: IloConnectionError() if unable to send the request.
          """
          if self.port:
              urlstr = 'https://%s:%d/ribcl' % (self.host, self.port)
          else:
              urlstr = 'https://%s/ribcl' % (self.host)
          xml = self._serialize_xml(root)
          headers = {"Content-length": str(len(xml))}
          if extra_headers:
              headers.update(extra_headers)
  
          kwargs = {'headers': headers, 'data': xml}
          if self.cacert is not None:
              kwargs['verify'] = self.cacert
          else:
              kwargs['verify'] = False
  
          try:
              LOG.debug(self._("POST %(url)s with request data: "
                               "%(request_data)s"),
                        {'url': urlstr,
                         'request_data': MaskedRequestData(kwargs)})
              response = requests.post(urlstr, **kwargs)
              response.raise_for_status()
          except Exception as e:
              LOG.debug(self._("Unable to connect to iLO. %s"), e)
              raise exception.IloConnectionError(e)
          return response.text