<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def propagate(self, request: Request, clientName):
 """ Broadcast a PROPAGATE to all other nodes :param request: the REQUEST to propagate """

        if self.requests.has_propagated(request, self.name):
            logger.trace("{} already propagated {}".format(self, request))
        else:
            with self.metrics.measure_time(MetricsName.SEND_PROPAGATE_TIME):
                self.requests.add_propagate(request, self.name)
                propagate = self.createPropagate(request, clientName)
                logger.debug("{} propagating request {} from client {}".format(self, request.key, clientName),
                             extra={"cli": True, "tags": ["node-propagate"]})
                self.send(propagate)