code: def sendInstanceChange(self, view_no: int,
                             suspicion=Suspicions.PRIMARY_DEGRADED):
          
  
          # If not found any sent instance change messages in last
          # `ViewChangeWindowSize` seconds or the last sent instance change
          # message was sent long enough ago then instance change message can be
          # sent otherwise no.
          canSendInsChange, cooldown = self.insChngThrottler.acquire()
          if canSendInsChange:
              logger.info(
                  "{}{} sending an instance change with view_no {}"
                  " since {}".format(
                      VIEW_CHANGE_PREFIX,
                      self,
                      view_no,
                      suspicion.reason))
              logger.info("{}{} metrics for monitor: {}"
                          .format(MONITORING_PREFIX, self,
                                  self.provider.pretty_metrics()))
              msg = self._create_instance_change_msg(view_no, suspicion.code)
              self.send(msg)
              # record instance change vote for self and try to change the view
              # if quorum is reached
              self._on_verified_instance_change_msg(msg, self.name)
          else:
              logger.info("{} cannot send instance change sooner then {} seconds".format(self, cooldown))
docs: Broadcast an instance change request to all the remaining nodes
  
          :param view_no: the view number when the instance change is requested