+
+ // Check for removal
+ final Optional<NormalizedNode<?, ?>> maybePeerRole = roleChange.getDataAfter();
+ final YangInstanceIdentifier peerPath = IdentifierUtils.peerPath(rootPath);
+ LOG.debug("Data Changed for Peer role {} path {}, dataBefore {}, dataAfter {}", roleChange.getIdentifier(),
+ peerPath , roleChange.getDataBefore(), maybePeerRole);
+ final PeerRole role = PeerRoleUtil.roleForChange(maybePeerRole);
+ SimpleRoutingPolicy srp = getSimpleRoutingPolicy(rootNode);
+ if(PeerRole.Internal == role || SimpleRoutingPolicy.AnnounceNone == srp) {
+ return;
+ }
+ this.peerPolicyTracker.peerRoleChanged(peerPath, role);
+ }
+ }
+
+ private SimpleRoutingPolicy getSimpleRoutingPolicy(final DataTreeCandidateNode rootNode) {
+ final DataTreeCandidateNode statusChange = rootNode.getModifiedChild(SIMPLE_ROUTING_POLICY_NID);
+ if (statusChange != null) {
+ final Optional<NormalizedNode<?, ?>> maybePeerStatus = statusChange.getDataAfter();
+ if (maybePeerStatus.isPresent()) {
+ return SimpleRoutingPolicy.valueOf(BindingMapping.getClassName((String) (maybePeerStatus.get()).getValue()));
+ }