'Update nodes that have been changed.'

def _update_nodes_change(self, lb, prop_diff):

    if (self.NODES not in prop_diff):
        return True
    old_nodes = (lb.nodes if hasattr(lb, self.NODES) else None)
    new_nodes = prop_diff[self.NODES]
    if (not self._nodes_need_update_change(old_nodes, new_nodes)):
        return True
    (old, new, deleted, added, updated) = self._nodes_update_data(lb, prop_diff)
    for node in updated:
        node_changed = False
        for (attribute, new_value) in new[node].items():
            if (new_value and (new_value != getattr(old[node], attribute))):
                node_changed = True
                setattr(old[node], attribute, new_value)
        if node_changed:
            try:
                old[node].update()
            except Exception as exc:
                if lb_immutable(exc):
                    return False
                raise
    return False
