X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fentityownership%2FEntityOwnersModel.java;h=1c97b4818b03bdce1b41e34aa21819d5ac461078;hb=efe209e4ffdd06a0697c879d6468182a45b0c2e2;hp=57950071fc8c565f5364ee54ecffb7574281da3e;hpb=a8f617e6dd21f9a453e9ece1e57f4549899584e7;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnersModel.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnersModel.java index 57950071fc..1c97b4818b 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnersModel.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnersModel.java @@ -7,18 +7,23 @@ */ package org.opendaylight.controller.cluster.datastore.entityownership; +import java.util.Map.Entry; +import org.opendaylight.controller.md.sal.common.api.clustering.Entity; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.clustering.entity.owners.rev150804.EntityOwners; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.clustering.entity.owners.rev150804.entity.owners.EntityType; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.clustering.entity.owners.rev150804.entity.owners.entity.type.entity.Candidate; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; import org.opendaylight.yangtools.yang.data.api.schema.MapNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder; +import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableOrderedMapNodeBuilder; /** * Utility methods for entity-owners yang model. @@ -35,7 +40,14 @@ final class EntityOwnersModel { static final NodeIdentifier ENTITY_OWNERS_NODE_ID = new NodeIdentifier(EntityOwners.QNAME); static final NodeIdentifier ENTITY_OWNER_NODE_ID = new NodeIdentifier(ENTITY_OWNER_QNAME); + static final NodeIdentifier ENTITY_NODE_ID = new NodeIdentifier(ENTITY_QNAME); + static final NodeIdentifier ENTITY_ID_NODE_ID = new NodeIdentifier(ENTITY_ID_QNAME); + static final NodeIdentifier ENTITY_TYPE_NODE_ID = new NodeIdentifier(ENTITY_TYPE_QNAME); + static final NodeIdentifier CANDIDATE_NODE_ID = new NodeIdentifier(Candidate.QNAME); + static final NodeIdentifier CANDIDATE_NAME_NODE_ID = new NodeIdentifier(CANDIDATE_NAME_QNAME); static final YangInstanceIdentifier ENTITY_OWNERS_PATH = YangInstanceIdentifier.of(EntityOwners.QNAME); + static final YangInstanceIdentifier ENTITY_TYPES_PATH = + YangInstanceIdentifier.of(EntityOwners.QNAME).node(EntityType.QNAME); static YangInstanceIdentifier entityPath(String entityType, YangInstanceIdentifier entityId) { return YangInstanceIdentifier.builder(ENTITY_OWNERS_PATH).node(EntityType.QNAME). @@ -44,6 +56,24 @@ final class EntityOwnersModel { } + static YangInstanceIdentifier candidatePath(String entityType, YangInstanceIdentifier entityId, + String candidateName) { + return YangInstanceIdentifier.builder(ENTITY_OWNERS_PATH).node(EntityType.QNAME). + nodeWithKey(EntityType.QNAME, ENTITY_TYPE_QNAME, entityType).node(ENTITY_QNAME). + nodeWithKey(ENTITY_QNAME, ENTITY_ID_QNAME, entityId).node(Candidate.QNAME). + nodeWithKey(Candidate.QNAME, CANDIDATE_NAME_QNAME, candidateName).build(); + + } + + static YangInstanceIdentifier candidatePath(YangInstanceIdentifier entityPath, String candidateName) { + return YangInstanceIdentifier.builder(entityPath).node(Candidate.QNAME).nodeWithKey( + Candidate.QNAME, CANDIDATE_NAME_QNAME, candidateName).build(); + } + + static NodeIdentifierWithPredicates candidateNodeKey(String candidateName) { + return new NodeIdentifierWithPredicates(Candidate.QNAME, CANDIDATE_NAME_QNAME, candidateName); + } + static NormalizedNode entityOwnersWithCandidate(String entityType, YangInstanceIdentifier entityId, String candidateName) { return entityOwnersWithEntityTypeEntry(entityTypeEntryWithEntityEntry(entityType, @@ -68,12 +98,34 @@ final class EntityOwnersModel { } static MapNode candidateEntry(String candidateName) { - return ImmutableNodes.mapNodeBuilder(Candidate.QNAME).addChild(ImmutableNodes.mapEntry( - Candidate.QNAME, CANDIDATE_NAME_QNAME, candidateName)).build(); + return ImmutableOrderedMapNodeBuilder.create().withNodeIdentifier(new NodeIdentifier(Candidate.QNAME)). + addChild(candidateMapEntry(candidateName)).build(); + } + + static MapEntryNode candidateMapEntry(String candidateName) { + return ImmutableNodes.mapEntry(Candidate.QNAME, CANDIDATE_NAME_QNAME, candidateName); } static NormalizedNode entityEntryWithOwner(YangInstanceIdentifier entityId, String owner) { return ImmutableNodes.mapEntryBuilder(ENTITY_QNAME, ENTITY_ID_QNAME, entityId).addChild( ImmutableNodes.leafNode(ENTITY_OWNER_QNAME, owner)).build(); } + + static Entity createEntity(YangInstanceIdentifier entityPath) { + String entityType = null; + YangInstanceIdentifier entityId = null; + for(PathArgument pathArg: entityPath.getPathArguments()) { + if(pathArg instanceof NodeIdentifierWithPredicates) { + NodeIdentifierWithPredicates nodeKey = (NodeIdentifierWithPredicates) pathArg; + Entry key = nodeKey.getKeyValues().entrySet().iterator().next(); + if(ENTITY_TYPE_QNAME.equals(key.getKey())) { + entityType = key.getValue().toString(); + } else if(ENTITY_ID_QNAME.equals(key.getKey())) { + entityId = (YangInstanceIdentifier) key.getValue(); + } + } + } + + return new Entity(entityType, entityId); + } }