mgr/restful: do not print warning message at seeing unknown request

mgr broadcast "notify()" to call registered plugins upon finishing a
send_command() request. and restful plugin prints a warning message if
the request is not issued by itself. apparently, there is good chance
that the finished request is sent by other mgr plugins, in that case,
restful plugin always prints the warning messages like:

 "2018-10-09 14:52:07.818 7fbc4d8c5700  1 mgr[restful] Unknown request
''

this is misleading and annoying. so, in this change

* add a prefix of "restful.module" before that tag used for identifying
  a request. this prefix helps to differentiate the requests sent by
  restful plugin from other requests.
* do not print warning message if none running request matches the given tag
* break at seeing the first request matches the given tag, because
  the tags used by restful plugin are unique.
* do not str(self.id) before composing the tag, as it is a `str`
  already, see CommandsRequest.__init__()
* early return to reduce the indent level

Fixes: http://tracker.ceph.com/issues/36374
Signed-off-by: Kefu Chai <kchai@redhat.com>
This commit is contained in:
Kefu Chai 2018-10-10 16:22:59 +08:00
parent 2e146bf0ca
commit f67df98d43

View File

@ -80,7 +80,7 @@ class CommandsRequest(object):
# Gather the results (in parallel)
results = []
for index in range(len(commands)):
tag = '%s:%d' % (str(self.id), index)
tag = '%s:%s:%d' % (__name__, self.id, index)
# Store the result
result = CommandResult(tag)
@ -361,22 +361,20 @@ class Module(MgrModule):
def _notify(self, notify_type, tag):
if notify_type == "command":
# we can safely skip all the sequential commands
if tag == 'seq':
return
request = [x for x in self.requests if x.is_running(tag)]
if len(request) != 1:
self.log.warn("Unknown request '%s'" % str(tag))
return
request = request[0]
if notify_type != "command":
self.log.debug("Unhandled notification type '%s'", notify_type)
return
# we can safely skip all the sequential commands
if tag == 'seq':
return
try:
request = next(x for x in self.requests if x.is_running(tag))
request.finish(tag)
if request.is_ready():
request.next()
else:
self.log.debug("Unhandled notification type '%s'" % notify_type)
except StopIteration:
# the command was not issued by me
pass
def create_self_signed_cert(self):