385bb706491d838084b6fc7e04d4035f0e5449fd
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / java / org / opendaylight / controller / cluster / datastore / entityownership / EntityOwnersModel.java
1 /*
2  * Copyright (c) 2015 Brocade Communications Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.controller.cluster.datastore.entityownership;
9
10 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.clustering.entity.owners.rev150804.EntityOwners;
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.clustering.entity.owners.rev150804.entity.owners.EntityType;
12 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;
13 import org.opendaylight.yangtools.yang.common.QName;
14 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
15 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
16 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
17 import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
18 import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
19 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
20 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
21 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
22 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableOrderedMapNodeBuilder;
23
24 /**
25  * Utility methods for entity-owners yang model.
26  *
27  * @author Thomas Pantelis
28  */
29 final class EntityOwnersModel {
30     static final  QName ENTITY_QNAME = org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.
31             md.sal.clustering.entity.owners.rev150804.entity.owners.entity.type.Entity.QNAME;
32     static final QName CANDIDATE_NAME_QNAME = QName.create(Candidate.QNAME, "name");
33     static final QName ENTITY_ID_QNAME = QName.create(ENTITY_QNAME, "id");
34     static final QName ENTITY_OWNER_QNAME = QName.create(ENTITY_QNAME, "owner");
35     static final QName ENTITY_TYPE_QNAME = QName.create(EntityType.QNAME, "type");
36
37     static final NodeIdentifier ENTITY_OWNERS_NODE_ID = new NodeIdentifier(EntityOwners.QNAME);
38     static final NodeIdentifier ENTITY_OWNER_NODE_ID = new NodeIdentifier(ENTITY_OWNER_QNAME);
39     static final NodeIdentifier ENTITY_NODE_ID = new NodeIdentifier(ENTITY_QNAME);
40     static final NodeIdentifier ENTITY_ID_NODE_ID = new NodeIdentifier(ENTITY_ID_QNAME);
41     static final NodeIdentifier ENTITY_TYPE_NODE_ID = new NodeIdentifier(ENTITY_TYPE_QNAME);
42     static final NodeIdentifier CANDIDATE_NODE_ID = new NodeIdentifier(Candidate.QNAME);
43     static final NodeIdentifier CANDIDATE_NAME_NODE_ID = new NodeIdentifier(CANDIDATE_NAME_QNAME);
44     static final YangInstanceIdentifier ENTITY_OWNERS_PATH = YangInstanceIdentifier.of(EntityOwners.QNAME);
45     static final YangInstanceIdentifier ENTITY_TYPES_PATH =
46             YangInstanceIdentifier.of(EntityOwners.QNAME).node(EntityType.QNAME);
47
48     static YangInstanceIdentifier entityPath(String entityType, YangInstanceIdentifier entityId) {
49         return YangInstanceIdentifier.builder(ENTITY_OWNERS_PATH).node(EntityType.QNAME).
50                 nodeWithKey(EntityType.QNAME, ENTITY_TYPE_QNAME, entityType).node(ENTITY_QNAME).
51                         nodeWithKey(ENTITY_QNAME, ENTITY_ID_QNAME, entityId).build();
52
53     }
54
55     static YangInstanceIdentifier candidatePath(String entityType, YangInstanceIdentifier entityId,
56             String candidateName) {
57         return YangInstanceIdentifier.builder(ENTITY_OWNERS_PATH).node(EntityType.QNAME).
58                 nodeWithKey(EntityType.QNAME, ENTITY_TYPE_QNAME, entityType).node(ENTITY_QNAME).
59                         nodeWithKey(ENTITY_QNAME, ENTITY_ID_QNAME, entityId).node(Candidate.QNAME).
60                                 nodeWithKey(Candidate.QNAME, CANDIDATE_NAME_QNAME, candidateName).build();
61
62     }
63
64     static NormalizedNode<?, ?> entityOwnersWithCandidate(String entityType, YangInstanceIdentifier entityId,
65             String candidateName) {
66         return entityOwnersWithEntityTypeEntry(entityTypeEntryWithEntityEntry(entityType,
67                 entityEntryWithCandidateEntry(entityId, candidateName)));
68     }
69
70     static ContainerNode entityOwnersWithEntityTypeEntry(MapEntryNode entityTypeNode) {
71         return ImmutableContainerNodeBuilder.create().withNodeIdentifier(
72                 ENTITY_OWNERS_NODE_ID).addChild(ImmutableNodes.mapNodeBuilder(EntityType.QNAME).
73                         addChild(entityTypeNode).build()).build();
74     }
75
76     static MapEntryNode entityTypeEntryWithEntityEntry(String entityType, MapEntryNode entityNode) {
77         return ImmutableNodes.mapEntryBuilder(EntityType.QNAME,
78                 ENTITY_TYPE_QNAME, entityType).addChild(ImmutableNodes.mapNodeBuilder(
79                         ENTITY_QNAME).addChild(entityNode).build()).build();
80     }
81
82     static MapEntryNode entityEntryWithCandidateEntry(YangInstanceIdentifier entityId, String candidateName) {
83         return ImmutableNodes.mapEntryBuilder(ENTITY_QNAME, ENTITY_ID_QNAME, entityId).addChild(
84                 candidateEntry(candidateName)).build();
85     }
86
87     static MapNode candidateEntry(String candidateName) {
88         return ImmutableOrderedMapNodeBuilder.create().withNodeIdentifier(new NodeIdentifier(Candidate.QNAME)).
89                 addChild(ImmutableNodes.mapEntry(Candidate.QNAME, CANDIDATE_NAME_QNAME, candidateName)).build();
90     }
91
92     static NormalizedNode<?, ?> entityEntryWithOwner(YangInstanceIdentifier entityId, String owner) {
93         return ImmutableNodes.mapEntryBuilder(ENTITY_QNAME, ENTITY_ID_QNAME, entityId).addChild(
94                 ImmutableNodes.leafNode(ENTITY_OWNER_QNAME, owner)).build();
95     }
96 }