docs: def add_or_update_record(
              self, local_path, ase, chunk_size, total_chunks, completed_chunks,
              completed, md5):
          # type: (UploadResumeManager, pathlib.Path,
          #        blobxfer.models.azure.StorageEntity, int, int, int, bool,
          #        str) -> None
          """Add or update a resume record
          :param UploadResumeManager self: this
          :param pathlib.Path local_path: local path
          :param blobxfer.models.azure.StorageEntity ase: Storage Entity
          :param int chunk_size: chunk size in bytes
          :param int total_chunks: total chunks
          :param int completed_chunks: completed chunks bitarray
          :param bool completed: if completed
          :param str md5: md5 hex digest
          """
          key = blobxfer.operations.resume._BaseResumeManager.\
              generate_record_key(ase)
          with self.datalock():
              ul = self.get_record(ase, key=key, lock=False)
              if ul is None:
                  ul = blobxfer.models.resume.Upload(
                      local_path=str(local_path),
                      length=ase._size,
                      chunk_size=chunk_size,
                      total_chunks=total_chunks,
                      completed_chunks=completed_chunks,
                      completed=completed,
                      md5=md5,
                  )
              else:
                  if ul.completed or completed_chunks == ul.completed_chunks:
                      return
                  ul.completed_chunks = completed_chunks
                  if completed:
                      ul.completed = completed
                  else:
                      ul.md5hexdigest = md5
              self._data[key] = ul
              self._data.sync()