code: def issue_command(self, command, args=None, dry_run=False, comment=None):
          
          req = rest_pb2.IssueCommandRequest()
          req.sequenceNumber = SequenceGenerator.next()
          req.origin = socket.gethostname()
          req.dryRun = dry_run
          if comment:
              req.comment = comment
          if args:
              for key in args:
                  assignment = req.assignment.add()
                  assignment.name = key
                  assignment.value = str(args[key])
  
          command = adapt_name_for_rest(command)
          url = '/processors/{}/{}/commands{}'.format(
              self._instance, self._processor, command)
          response = self._client.post_proto(url, data=req.SerializeToString())
          proto = rest_pb2.IssueCommandResponse()
          proto.ParseFromString(response.content)
          return IssuedCommand(proto, self)
docs: Issue the given command
  
          :param str command: Either a fully-qualified XTCE name or an alias in the
                              format ``NAMESPACE/NAME``.
          :param dict args: named arguments (if the command requires these)
          :param bool dry_run: If ``True`` the command is not actually issued. This
                               can be used to check if the server would generate
                               errors when preparing the command (for example
                               because an argument is missing).
          :param str comment: Comment attached to the command.
          :return: An object providing access to properties of the newly issued
                   command.
          :rtype: .IssuedCommand