diff --git a/ccnode/handlers.py b/ccnode/handlers.py index dbac4caaa5acab2615a31032dd6e428a54af2a9e..5e613bb8e9953dc501735737794fbb4056227bb3 100644 --- a/ccnode/handlers.py +++ b/ccnode/handlers.py @@ -285,9 +285,9 @@ class NodeHandler(RpcHandler): ''' ''' result = {} - debug('get_tags: server requested tags=`%s` noresolve_tags=`%s`' - % (tags, noresolve_tags)) - # build a single list of tags + info('get_tags: server requested tags=`%s` noresolve_tags=`%s`', tags, + noresolve_tags) + # build a single dict of tags, boolean means "resolve" mytags = {} if tags: for t in tags: @@ -382,32 +382,35 @@ class NodeHandler(RpcHandler): result.extend(self.VM_TAG_MAP.keys()) # add globbing tags for pattern, handler in self.VM_TAG_GLOB.iteritems(): - # helper is available on the current host - if handler[0](sub_obj): - debug('sub_tags: sub node implements `%s`' % pattern) - # get tags from helper - htags = handler[0](sub_obj, resolve=False) - debug('sub_tags: handler provides `%s`' % htags) - # append all tags - for t in htags.keys(): - result.append(t) + try: + # helper is available on the current host + if handler[0](sub_obj): + debug('sub_tags: sub node implements `%s`' % pattern) + # get tags from helper + htags = handler[0](sub_obj, resolve=False) + debug('sub_tags: handler provides `%s`' % htags) + # append all tags + for t in htags.keys(): + result.append(t) + except Exception as err: + warning('_sub_tag_list: `%s` -> `%s`', repr(err), err) return result @pure def sub_tags(self, sub_id, tags=None, noresolve_tags=None): ''' ''' - debug('sub_tags: server requested tags for `%s`' % sub_id) + info('sub_tags: server requested tags for `%s`', sub_id) if sub_id not in self._host_handle.vm_list(): - debug('sub_tags: sub node `%s` is unknown !' % sub_id) - raise CCException('sub node `%s` is unknown' % sub_id) + warning('sub_tags: sub node `%s` is unknown !', sub_id) + raise HypervisorError('sub node `%s` is unknown' % sub_id) else: # open a wrapper to the VM - debug('sub_tags: fetching vm data for `%s`' % sub_id) + debug('sub_tags: fetching vm data for `%s`', sub_id) sub = self._host_handle.vm_get(sub_id) # build a single list of tags - debug('sub_tags: server requested tags `%s` + `%s`' - % (tags, noresolve_tags)) + info('sub_tags: server requested tags `%s` + `%s`', tags, + noresolve_tags) available_tags = self._sub_tag_list(sub) mytags = {} # return all resolved tags case @@ -430,7 +433,7 @@ class NodeHandler(RpcHandler): mytags[t] = False for t in tags: mytags[t] = True - debug('sub_tags: expanded list to `%s`' % mytags.keys()) + debug('sub_tags: expanded list to `%s`', mytags.keys()) # add mandatory tags if missing in the list, or set noresolve for t in self.VM_TAG_MANDATORY: if t not in mytags or not mytags[t]: