docs: def get_report(host, userid, password,
                 port=443, auth_method='basic', client_timeout=60):
      """get iRMC report
  
      This function returns iRMC report in XML format
      :param host: hostname or IP of iRMC
      :param userid: userid for iRMC with administrator privileges
      :param password: password for userid
      :param port: port number of iRMC
      :param auth_method: irmc_username
      :param client_timeout: timeout for SCCI operations
      :returns: root element of SCCI report
      :raises: ISCCIInvalidInputError if port and/or auth_method params
               are invalid
      :raises: SCCIClientError if SCCI failed
      """
  
      auth_obj = None
      try:
          protocol = {80: 'http', 443: 'https'}[port]
          auth_obj = {
              'basic': requests.auth.HTTPBasicAuth(userid, password),
              'digest': requests.auth.HTTPDigestAuth(userid, password)
          }[auth_method.lower()]
  
      except KeyError:
          raise SCCIInvalidInputError(
              ("Invalid port %(port)d or " +
               "auth_method for method %(auth_method)s") %
              {'port': port, 'auth_method': auth_method})
  
      try:
          r = requests.get(protocol + '://' + host + '/report.xml',
                           verify=False,
                           timeout=(10, client_timeout),
                           allow_redirects=False,
                           auth=auth_obj)
  
          if r.status_code not in (200, 201):
              raise SCCIClientError(
                  ('HTTP PROTOCOL ERROR, STATUS CODE = %s' %
                   str(r.status_code)))
  
          root = ET.fromstring(r.text)
          return root
  
      except ET.ParseError as parse_error:
          raise SCCIClientError(parse_error)
  
      except requests.exceptions.RequestException as requests_exception:
          raise SCCIClientError(requests_exception)