'Safely removes the provider identified by the supplied name_or_uuid
parameter and all of its children from the tree.'

def remove(self, name_or_uuid):

    with self.lock:
        found = self._find_with_lock(name_or_uuid)
        if (not found):
            raise ValueError((_('No    such    provider    %s') % name_or_uuid))
        if found.parent_uuid:
            parent = self._find_with_lock(found.parent_uuid)
            parent.remove_child(found)
        else:
            self.roots.remove(found)
