docs: def upload_file_to(self, addressinfo, timeout):
          """Uploads the raw firmware file to iLO
  
          Uploads the raw firmware file (already set as attribute in
          FirmwareImageControllerBase constructor) to iLO, whose address
          information is passed to this method.
          :param addressinfo: tuple of hostname and port of the iLO
          :param timeout: timeout in secs, used for connecting to iLO
          :raises: IloInvalidInputError, if raw firmware file not found
          :raises: IloError, for other internal problems
          :returns: the cookie so sent back from iLO on successful upload
          """
          self.hostname, self.port = addressinfo
          self.timeout = timeout
          filename = self.fw_file
  
          firmware = open(filename, 'rb').read()
          # generate boundary
          boundary = b('------hpiLO3t' +
                       str(random.randint(100000, 1000000)) + 'z')
  
          while boundary in firmware:
              boundary = b('------hpiLO3t' +
                           str(random.randint(100000, 1000000)) + 'z')
          # generate body parts
          parts = [
              # body1
              b("--") + boundary +
              b("""\r\nContent-Disposition: form-data; """
                """name="fileType"\r\n\r\n"""),
              # body2
              b("\r\n--") + boundary +
              b('''\r\nContent-Disposition: form-data; name="fwimgfile"; '''
                '''filename="''') +
              b(filename) +
              b('''"\r\nContent-Type: application/octet-stream\r\n\r\n'''),
              # firmware image
              firmware,
              # body3
              b("\r\n--") + boundary + b("--\r\n"),
          ]
          total_bytes = sum([len(x) for x in parts])
          sock = self._get_socket()
  
          # send the firmware image
          sock.write(b(self.HTTP_UPLOAD_HEADER %
                       (total_bytes, boundary.decode('ascii'))))
          for part in parts:
              sock.write(part)
  
          data = ''
          try:
              while True:
                  d = sock.read()
                  data += d.decode('latin-1')
                  if not d:
                      break
          except socket.sslerror:  # Connection closed
              e = sys.exc_info()[1]
              if not data:
                  raise exception.IloConnectionError(
                      "Communication with %(hostname)s:%(port)d failed: "
                      "%(error)s" % {'hostname': self.hostname,
                                     'port': self.port, 'error': str(e)})
  
          # Received len(data) bytes
          cookie_match = re.search('Set-Cookie: *(.*)', data)
          if not cookie_match:
              raise exception.IloError("Uploading of file: %s failed due "
                                       "to unknown reason." % filename)
          # return the cookie
          return cookie_match.group(1)