2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 you may not use this file except in compliance with the License.
9 You may obtain a copy of the License at
11 http://www.apache.org/licenses/LICENSE-2.0
13 Unless required by applicable law or agreed to in writing, software
14 distributed under the License is distributed on an "AS IS" BASIS,
15 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 See the License for the specific language governing permissions and
17 limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.aai.dbmodel.v9.gen;
23 import java.util.HashMap;
26 import com.google.common.collect.ImmutableSetMultimap;
27 import com.google.common.collect.Multimap;
29 public class DbEdgeRules {
32 * The EdgeRules data is set up as a key (fromNodeTypeA|toNodeTypeB) mapped
33 * to a string which holds the info we need to build an edge from nodeTypeA
34 * to nodeTypeB. Note -- the MultiMap will let us define more than one type
35 * of edge between a given pair of nodeTypes, but for now we never define
38 * The edgeInfo part is comma separated and looks like this:
39 * "edgeLabel,direction,multiplicityRule,isParent,usesResource,hasDelTarget,SVC-INFRA" This
40 * format is encoded into the EdgeInfoMap below.
41 * MultiplicityRule can be either "Many2Many", "Many2One", "One2Many" or "One2One"
42 * The values for the things after multiplicityRule can be either "true", "false" or "reverse". "reverse" is
43 * really saying that this tag does apply, but the edge will be traversed
44 * the opposite way from the same tag that just has "true".
46 public static final Map<Integer, String> EdgeInfoMap;
48 EdgeInfoMap = new HashMap<Integer, String>();
49 EdgeInfoMap.put(0, "edgeLabel");
50 EdgeInfoMap.put(1, "direction");
51 EdgeInfoMap.put(2, "multiplicityRule");
52 EdgeInfoMap.put(3, "isParent");
53 EdgeInfoMap.put(4, "usesResource");
54 EdgeInfoMap.put(5, "hasDelTarget");
55 EdgeInfoMap.put(6, "SVC-INFRA");
58 public static Integer firstTagIndex = 3;
60 public static final Multimap<String, String> EdgeRules = new ImmutableSetMultimap.Builder<String, String>()
61 .putAll("availability-zone|complex",
62 "groupsResourcesIn,OUT,Many2Many,false,false,false,false")
63 .putAll("availability-zone|service-capability",
64 "supportsServiceCapability,OUT,Many2Many,false,false,false,false")
65 .putAll("cloud-region|complex",
66 "locatedIn,OUT,Many2One,false,false,false,false")
67 .putAll("cloud-region|l3-network",
68 "uses,OUT,Many2Many,false,false,false,false")
69 .putAll("cloud-region|tenant",
70 "has,OUT,One2Many,true,false,false,reverse")
71 .putAll("cloud-region|image",
72 "has,OUT,One2Many,true,false,false,false")
73 .putAll("cloud-region|flavor",
74 "has,OUT,One2Many,true,false,false,false")
75 .putAll("cloud-region|availability-zone",
76 "has,OUT,One2Many,true,false,false,false")
77 .putAll("cloud-region|oam-network",
78 "has,OUT,One2Many,true,false,false,false")
79 .putAll("cloud-region|dvs-switch",
80 "has,OUT,One2Many,true,false,false,false")
81 .putAll("cloud-region|volume-group",
82 "has,OUT,One2Many,true,true,false,false")
83 .putAll("cloud-region|group-assignment",
84 "has,OUT,One2Many,true,false,false,false")
85 .putAll("cloud-region|snapshot",
86 "has,OUT,One2Many,true,false,false,false")
87 .putAll("cloud-region|zone",
88 "isMemberOf,OUT,Many2One,false,false,false,false")
89 .putAll("complex|ctag-pool",
90 "hasCtagPool,OUT,Many2Many,true,false,false,false")
91 .putAll("complex|l3-network",
92 "usesL3Network,OUT,Many2Many,false,false,false,true")
93 .putAll("ctag-pool|availability-zone",
94 "supportsAvailabilityZone,OUT,Many2Many,false,false,false,false")
95 .putAll("customer|service-subscription",
96 "subscribesTo,OUT,Many2Many,true,false,false,reverse")
97 .putAll("dvs-switch|availability-zone",
98 "existsIn,OUT,Many2Many,false,false,false,false")
99 .putAll("generic-vnf|l-interface",
100 "hasLInterface,OUT,Many2Many,true,false,false,true")
101 .putAll("generic-vnf|availability-zone",
102 "hasAvailabilityZone,OUT,Many2Many,false,false,false,true")
103 .putAll("generic-vnf|lag-interface",
104 "hasLAGInterface,OUT,Many2Many,true,false,false,true")
105 .putAll("generic-vnf|l3-network",
106 "usesL3Network,OUT,Many2Many,false,true,false,true")
107 .putAll("generic-vnf|pserver",
108 "runsOnPserver,OUT,Many2Many,false,true,false,true")
109 .putAll("generic-vnf|vnf-image",
110 "usesVnfImage,OUT,Many2One,false,false,false,true")
111 .putAll("generic-vnf|vserver",
112 "runsOnVserver,OUT,One2Many,false,true,false,true")
113 .putAll("generic-vnf|service-instance",
114 "hasInstance,OUT,Many2Many,false,true,false,true")
115 .putAll("generic-vnf|site-pair-set",
116 "hasSitePairSet,OUT,Many2Many,false,false,false,false")
117 .putAll("generic-vnf|network-profile",
118 "hasNetworkProfile,OUT,Many2Many,false,false,false,false")
119 .putAll("group-assignment|tenant",
120 "has,OUT,Many2Many,false,false,false,false")
121 .putAll("group-assignment|pserver",
122 "has,OUT,One2Many,false,false,false,false")
123 .putAll("image|metadata", "hasMetaData,OUT,Many2Many,true,false,false,false")
124 .putAll("image|metadatum",
125 "hasMetaDatum,OUT,Many2Many,true,false,false,false")
126 .putAll("l-interface|l3-interface-ipv4-address-list",
127 "hasIpAddress,OUT,Many2Many,true,false,false,true")
128 .putAll("l-interface|l3-interface-ipv6-address-list",
129 "hasIpAddress,OUT,Many2Many,true,false,false,true")
130 .putAll("l-interface|logical-link",
131 "usesLogicalLink,OUT,Many2Many,false,false,true,true")
132 .putAll("l-interface|vlan","hasVlan,OUT,Many2Many,true,false,false,false")
133 .putAll("l-interface|sriov-vf","has,OUT,One2One,true,false,false,false")
134 .putAll("l3-interface-ipv4-address-list|l3-network",
135 "isMemberOf,OUT,Many2Many,false,false,false,true")
136 .putAll("l3-interface-ipv6-address-list|l3-network",
137 "isMemberOf,OUT,Many2Many,false,false,false,true")
138 .putAll("l3-interface-ipv4-address-list|subnet",
139 "isMemberOf,OUT,Many2Many,false,false,false,true")
140 .putAll("l3-interface-ipv6-address-list|subnet",
141 "isMemberOf,OUT,Many2Many,false,false,false,true")
142 .putAll("l3-network|vpn-binding",
143 "usesVpnBinding,OUT,Many2Many,false,false,false,false")
144 .putAll("l3-network|subnet",
145 "hasSubnet,OUT,Many2Many,true,false,false,reverse")
146 .putAll("l3-network|service-instance",
147 "hasInstance,OUT,Many2Many,false,false,false,reverse")
148 .putAll("l3-network|ctag-assignment",
149 "hasCtagAssignment,OUT,Many2Many,true,false,false,true")
150 .putAll("l3-network|network-policy",
151 "uses,OUT,Many2Many,false,false,false,true")
152 .putAll("l3-network|segmentation-assignment",
153 "has,OUT,One2Many,true,false,false,false")
154 .putAll("l3-network|route-table-reference",
155 "uses,OUT,Many2Many,false,false,false,false")
156 .putAll("lag-interface|lag-link",
157 "usesLAGLink,OUT,Many2Many,false,true,true,true")
158 .putAll("lag-interface|p-interface",
159 "usesPInterface,OUT,Many2Many,false,true,false,true")
160 .putAll("lag-interface|l-interface",
161 "hasLInterface,OUT,Many2Many,true,false,false,true")
162 .putAll("logical-link|lag-link",
163 "usesLAGLink,OUT,Many2Many,false,true,false,true")
164 .putAll("logical-link|pnf",
165 "bridgedTo,OUT,Many2Many,false,false,false,false")
166 .putAll("logical-link|logical-link",
167 "uses,OUT,One2Many,false,false,false,true")
168 .putAll("model|model-ver",
169 "has,OUT,One2Many,true,false,false,false")
170 .putAll("model-ver|model-element",
171 "startsWith,OUT,One2Many,true,false,false,false")
172 .putAll("model-element|model-ver",
173 "isA,OUT,Many2One,false,false,false,false")
174 .putAll("model-ver|metadatum",
175 "hasMetaData,OUT,One2Many,true,false,false,false")
176 .putAll("model-element|model-element",
177 "connectsTo,OUT,One2Many,true,false,false,false")
178 .putAll("model-element|model-constraint",
179 "uses,OUT,One2Many,true,false,false,false")
180 .putAll("model-element|constrained-element-set",
181 "connectsTo,OUT,One2Many,true,false,false,false")
182 .putAll("model-constraint|constrained-element-set",
183 "uses,OUT,One2Many,true,false,false,false")
184 .putAll("constrained-element-set|element-choice-set",
185 "uses,OUT,One2Many,true,false,false,false")
186 .putAll("element-choice-set|model-element",
187 "has,OUT,One2Many,true,false,false,false")
188 .putAll("named-query|model",
189 "relatedTo,OUT,One2Many,false,false,false,false")
190 .putAll("named-query|named-query-element",
191 "startsWith,OUT,One2One,true,false,false,false")
192 .putAll("named-query-element|named-query-element",
193 "connectsTo,OUT,Many2Many,true,false,false,false")
194 .putAll("named-query-element|model",
195 "isA,OUT,Many2One,false,false,false,false")
196 .putAll("named-query-element|property-constraint",
197 "uses,OUT,One2Many,true,false,false,false")
198 .putAll("named-query-element|related-lookup",
199 "uses,OUT,One2Many,true,false,false,false")
200 .putAll("instance-group|model",
201 "targets,OUT,Many2Many,false,false,false,false")
202 .putAll("newvce|l-interface",
203 "hasLInterface,OUT,Many2Many,true,false,false,false")
204 .putAll("oam-network|complex",
205 "definedFor,OUT,Many2Many,false,false,false,false")
206 .putAll("oam-network|service-capability",
207 "supportsServiceCapability,OUT,Many2Many,false,false,false,false")
208 .putAll("p-interface|l-interface",
209 "hasLInterface,OUT,Many2Many,true,false,false,true")
210 .putAll("p-interface|physical-link",
211 "usesPhysicalLink,OUT,Many2Many,false,false,true,false")
212 .putAll("p-interface|logical-link",
213 "usesLogicalLink,OUT,Many2One,false,false,false,true")
214 .putAll("port-group|cvlan-tag", "hasCTag,OUT,Many2Many,true,true,false,true")
215 .putAll("pserver|complex", "locatedIn,OUT,Many2One,false,false,false,true")
216 .putAll("pserver|cloud-region","locatedIn,OUT,Many2One,false,false,false,true")
217 .putAll("pserver|availability-zone","existsIn,OUT,Many2One,false,false,false,true")
218 .putAll("pserver|lag-interface",
219 "hasLAGInterface,OUT,Many2Many,true,false,false,true")
220 .putAll("pserver|p-interface",
221 "hasPinterface,OUT,Many2Many,true,true,false,true")
222 .putAll("pserver|zone",
223 "isMemberOf,OUT,Many2One,false,false,false,false")
224 .putAll("pnf|p-interface",
225 "hasPinterface,OUT,Many2Many,true,true,false,true")
226 .putAll("pnf|lag-interface",
227 "has,OUT,One2Many,true,false,false,true")
228 .putAll("pnf|complex",
229 "locatedIn,OUT,Many2One,false,false,false,false")
230 .putAll("pnf|instance-group",
231 "isMemberOf,OUT,Many2Many,false,false,false,false")
233 "isMemberOf,OUT,Many2One,false,false,false,false")
234 .putAll("service-instance|cvlan-tag",
235 "hasIPAGFacingVLAN,OUT,Many2Many,false,true,false,false")
236 .putAll("service-instance|pnf",
237 "uses,OUT,One2Many,false,true,false,false")
238 .putAll("service-subscription|service-instance",
239 "hasInstance,OUT,Many2Many,true,false,false,reverse")
240 .putAll("site-pair-set|routing-instance",
241 "hasRoutingInstance,OUT,Many2Many,true,false,false,false")
242 .putAll("routing-instance|site-pair",
243 "hasSitePair,OUT,Many2Many,true,false,false,false")
244 .putAll("site-pair|class-of-service",
245 "hasClassOfService,OUT,Many2Many,true,false,false,false")
246 .putAll("tenant|l3-network",
247 "usesL3Network,OUT,Many2Many,false,false,false,false")
248 .putAll("tenant|service-subscription",
249 "relatedTo,OUT,Many2Many,false,false,false,false")
250 .putAll("tenant|vserver", "owns,OUT,One2Many,true,false,false,reverse")
251 .putAll("vce|availability-zone",
252 "hasAvailabilityZone,OUT,Many2Many,false,false,false,false")
253 .putAll("vce|complex", "locatedIn,OUT,Many2Many,false,false,false,true")
254 .putAll("vce|port-group", "hasPortGroup,OUT,Many2Many,true,true,false,true")
255 .putAll("vce|vserver", "runsOnVserver,OUT,Many2Many,false,true,false,true")
256 .putAll("vce|service-instance",
257 "hasServiceInstance,OUT,Many2Many,false,false,false,reverse")
258 .putAll("virtual-data-center|generic-vnf",
259 "hasVNF,OUT,Many2Many,false,false,false,reverse")
260 .putAll("vlan|l3-interface-ipv4-address-list",
261 "hasIpAddress,OUT,Many2Many,true,false,false,true")
262 .putAll("vlan|l3-interface-ipv6-address-list",
263 "hasIpAddress,OUT,Many2Many,true,false,false,true")
264 .putAll("vpe|complex", "locatedIn,OUT,Many2Many,false,false,false,false")
265 .putAll("vpe|ctag-pool", "usesCtagPool,OUT,Many2Many,false,false,false,false")
266 .putAll("vpe|l-interface",
267 "hasLInterface,OUT,Many2Many,true,false,false,false")
268 .putAll("vpe|lag-interface",
269 "hasLAGInterface,OUT,Many2Many,true,false,false,false")
270 .putAll("vpe|vserver", "runsOnVserver,OUT,Many2Many,false,true,false,false")
271 .putAll("vpls-pe|complex", "locatedIn,OUT,Many2Many,false,false,false,false")
272 .putAll("vpls-pe|ctag-pool",
273 "usesCtagPool,OUT,Many2Many,false,false,false,false")
274 .putAll("vpls-pe|p-interface",
275 "hasPinterface,OUT,Many2Many,true,false,false,false")
276 .putAll("vpls-pe|lag-interface",
277 "hasLAGinterface,OUT,Many2Many,true,false,false,false")
278 .putAll("vserver|flavor", "hasFlavor,OUT,Many2One,false,false,false,true")
279 .putAll("vserver|image", "hasImage,OUT,Many2One,false,false,false,true")
280 .putAll("vserver|ipaddress",
281 "hasIpAddress,OUT,Many2Many,true,true,false,false")
282 .putAll("vserver|l-interface",
283 "hasLInterface,OUT,Many2Many,true,false,false,true")
284 .putAll("vserver|pserver",
285 "runsOnPserver,OUT,Many2One,false,true,false,true")
286 .putAll("vserver|volume", "hasVolume,OUT,Many2Many,true,true,false,true")
287 .putAll("vserver|vnfc", "hosts,OUT,Many2Many,false,true,false,true")
288 .putAll("vserver|snapshot", "uses,OUT,One2One,false,false,false,true")
289 .putAll("service-instance|connector", "uses,OUT,Many2Many,false,true,false,false")
290 .putAll("service-instance|metadatum", "hasMetaData,OUT,Many2Many,true,false,false,false")
291 .putAll("service-instance|logical-link", "uses,OUT,Many2Many,false,false,true,false")
292 .putAll("service-instance|vlan", "dependsOn,OUT,One2Many,false,true,false,false")
293 .putAll("service-instance|service-instance", "dependsOn,OUT,One2Many,false,true,false,false")
294 .putAll("connector|virtual-data-center", "contains,OUT,Many2Many,false,false,false,false")
295 .putAll("connector|metadatum", "hasMetaData,OUT,Many2Many,true,false,false,false")
296 .putAll("virtual-data-center|logical-link", "contains,OUT,Many2Many,false,true,false,false")
297 .putAll("logical-link|generic-vnf", "bridgedTo,OUT,Many2Many,false,false,false,false")
298 .putAll("logical-link|pserver", "bridgedTo,OUT,Many2Many,false,false,false,false")
299 .putAll("vlan|multicast-configuration", "uses,OUT,Many2Many,false,true,false,false")
300 .putAll("volume-group|complex", "existsIn,OUT,Many2Many,false,false,false,true")
301 .putAll("volume-group|tenant", "belongsTo,OUT,Many2Many,false,false,false,true")
302 .putAll("ipsec-configuration|vig-server", "hasVigServer,OUT,One2Many,true,true,false,false")
303 .putAll("generic-vnf|ipsec-configuration", "uses,OUT,Many2One,false,true,false,false")
304 .putAll("vf-module|volume-group", "uses,OUT,One2One,false,false,false,true")
305 .putAll("vserver|vf-module", "isPartOf,OUT,Many2One,false,false,false,true")
306 .putAll("vf-module|l3-network", "uses,OUT,Many2Many,false,false,false,true")
307 .putAll("vf-module|vnfc", "uses,OUT,One2Many,false,false,true,true")
308 .putAll("generic-vnf|vf-module", "has,OUT,One2Many,true,false,false,true")
309 .putAll("generic-vnf|volume-group", "uses,OUT,One2Many,false,false,false,true")
310 .putAll("generic-vnf|vnfc", "uses,OUT,One2Many,false,false,true,true")
311 .putAll("vlan|logical-link", "usesLogicalLink,OUT,Many2Many,false,false,true,true")
312 .putAll("service-instance|ctag-assignment","uses,OUT,One2Many,false,false,false,false")
313 // The next edge is needed in 1702 but will be worked in user story AAI-6848
314 //.putAll("service-instance|allotted-resource", "uses,OUT,Many2Many,false,false,false,false")
315 .putAll("allotted-resource|generic-vnf", "isPartOf,OUT,Many2Many,false,false,false,false")
316 .putAll("allotted-resource|l3-network", "isPartOf,OUT,Many2Many,false,false,false,false")
317 .putAll("allotted-resource|instance-group", "isMemberOf,OUT,Many2Many,false,false,false,false")
318 .putAll("allotted-resource|vlan", "isPartOf,OUT,Many2Many,false,false,false,false")
319 .putAll("generic-vnf|instance-group", "isMemberOf,OUT,Many2Many,false,false,false,false")
320 .putAll("service-instance|instance-group", "isMemberOf,OUT,Many2Many,false,false,false,false")
321 .putAll("allotted-resource|tunnel-xconnect", "has,OUT,One2One,true,false,false,false")
322 .putAll("logical-link|cloud-region", "existsIn,OUT,Many2Many,false,false,false,false")
323 .putAll("logical-link|vpn-binding", "uses,OUT,Many2Many,false,false,false,false")
324 .putAll("generic-vnf|entitlement", "has,OUT,One2Many,true,false,false,false")
325 .putAll("generic-vnf|license", "has,OUT,One2Many,true,false,false,false")
326 .putAll("vce|entitlement", "has,OUT,One2Many,true,false,false,false")
327 .putAll("vce|license", "has,OUT,One2Many,true,false,false,false")
328 .putAll("vpe|entitlement", "has,OUT,One2Many,true,false,false,false")
329 .putAll("vpe|license", "has,OUT,One2Many,true,false,false,false")
330 .putAll("zone|complex", "existsIn,OUT,Many2One,false,false,false,false")
331 .putAll("service-instance|allotted-resource", "has,OUT,Many2Many,true,false,false,false")
332 .putAll("service-instance|allotted-resource", "uses,OUT,Many2Many,false,false,false,false")
335 public static final Multimap<String, String> DefaultDeleteScope = new ImmutableSetMultimap.Builder<String, String>()
336 .putAll("customer", "CASCADE_TO_CHILDREN")
337 .putAll("cloud-region", "THIS_NODE_ONLY")
338 .putAll("service-subscription", "CASCADE_TO_CHILDREN")
339 .putAll("service-instance", "CASCADE_TO_CHILDREN")
340 .putAll("vce", "CASCADE_TO_CHILDREN")
341 .putAll("port-group", "CASCADE_TO_CHILDREN")
342 .putAll("cvlan-tag", "THIS_NODE_ONLY")
343 .putAll("tenant", "THIS_NODE_ONLY")
344 .putAll("vserver", "CASCADE_TO_CHILDREN")
345 .putAll("volume", "THIS_NODE_ONLY")
346 .putAll("ipaddress", "THIS_NODE_ONLY")
347 .putAll("image", "ERROR_4_IN_EDGES_OR_CASCADE")
348 .putAll("pserver", "ERROR_4_IN_EDGES_OR_CASCADE")
349 .putAll("availability-zone", "ERROR_IF_ANY_IN_EDGES")
350 .putAll("oam-network", "ERROR_IF_ANY_IN_EDGES")
351 .putAll("dvs-switch", "THIS_NODE_ONLY")
352 .putAll("service-capability", "ERROR_IF_ANY_IN_EDGES")
353 .putAll("complex", "ERROR_4_IN_EDGES_OR_CASCADE")
354 .putAll("flavor", "ERROR_IF_ANY_IN_EDGES")
355 .putAll("metadata", "THIS_NODE_ONLY")
356 .putAll("metadatum", "THIS_NODE_ONLY")
357 .putAll("model", "ERROR_4_IN_EDGES_OR_CASCADE")
358 .putAll("model-ver", "ERROR_4_IN_EDGES_OR_CASCADE")
359 .putAll("model-element", "CASCADE_TO_CHILDREN")
360 .putAll("model-constraint", "CASCADE_TO_CHILDREN")
361 .putAll("property-constraint", "CASCADE_TO_CHILDREN")
362 .putAll("related-lookup", "CASCADE_TO_CHILDREN")
363 .putAll("constrained-element-set", "CASCADE_TO_CHILDREN")
364 .putAll("element-choice-set", "CASCADE_TO_CHILDREN")
365 .putAll("named-query", "CASCADE_TO_CHILDREN")
366 .putAll("named-query-element", "CASCADE_TO_CHILDREN")
367 .putAll("network-policy", "THIS_NODE_ONLY")
368 .putAll("collect-lookup", "THIS_NODE_ONLY")
369 .putAll("service", "ERROR_IF_ANY_IN_EDGES")
370 .putAll("newvce", "CASCADE_TO_CHILDREN")
371 .putAll("vpe", "CASCADE_TO_CHILDREN")
372 .putAll("vpls-pe", "CASCADE_TO_CHILDREN")
373 .putAll("l-interface", "CASCADE_TO_CHILDREN")
374 .putAll("vlan", "CASCADE_TO_CHILDREN")
375 .putAll("p-interface", "CASCADE_TO_CHILDREN")
376 .putAll("l3-interface-ipv6-address-list", "THIS_NODE_ONLY")
377 .putAll("l3-interface-ipv4-address-list", "THIS_NODE_ONLY")
378 .putAll("logical-link", "THIS_NODE_ONLY")
379 .putAll("physical-link", "THIS_NODE_ONLY")
380 .putAll("lag-link", "THIS_NODE_ONLY")
381 .putAll("lag-interface", "CASCADE_TO_CHILDREN")
382 .putAll("virtual-data-center", "CASCADE_TO_CHILDREN")
383 .putAll("generic-vnf", "CASCADE_TO_CHILDREN")
384 .putAll("l3-network", "CASCADE_TO_CHILDREN")
385 .putAll("ctag-pool", "THIS_NODE_ONLY")
386 .putAll("subnet", "THIS_NODE_ONLY")
387 .putAll("sriov-vf", "THIS_NODE_ONLY")
388 .putAll("vpn-binding", "ERROR_IF_ANY_IN_EDGES")
389 .putAll("vnf-image", "ERROR_IF_ANY_IN_EDGES")
390 .putAll("site-pair-set", "CASCADE_TO_CHILDREN")
391 .putAll("routing-instance", "CASCADE_TO_CHILDREN")
392 .putAll("site-pair", "CASCADE_TO_CHILDREN")
393 .putAll("class-of-service", "THIS_NODE_ONLY")
394 .putAll("connector", "CASCADE_TO_CHILDREN")
395 .putAll("vnfc", "THIS_NODE_ONLY")
396 .putAll("multicast-configuration", "THIS_NODE_ONLY")
397 .putAll("volume-group", "THIS_NODE_ONLY")
398 .putAll("ctag-assignment", "THIS_NODE_ONLY")
399 .putAll("pnf", "CASCADE_TO_CHILDREN")
400 .putAll("ipsec-configuration", "CASCADE_TO_CHILDREN")
401 .putAll("vig-server", "THIS_NODE_ONLY")
402 .putAll("vf-module", "THIS_NODE_ONLY")
403 .putAll("snapshot", "THIS_NODE_ONLY")
404 .putAll("group-assignment", "THIS_NODE_ONLY")
405 .putAll("segmentation-assignment", "THIS_NODE_ONLY")
406 .putAll("route-table-reference", "THIS_NODE_ONLY")
407 .putAll("network-profile", "THIS_NODE_ONLY")
408 .putAll("allotted-resource", "CASCADE_TO_CHILDREN")
409 .putAll("tunnel-xconnect", "THIS_NODE_ONLY")
410 .putAll("instance-group","THIS_NODE_ONLY")
411 .putAll("entitlement","THIS_NODE_ONLY")
412 .putAll("license","THIS_NODE_ONLY")
413 .putAll("zone", "THIS_NODE_ONLY").build();
415 // NOTE -- Sorry, this is ugly, but we are mapping the nodeTypeCategory two
417 // make the code a little less bulky. But that means that we need to ensure
419 // nodeTypeCategory and nodeTypeCatMap are kept in synch.
421 // NodeTypeCategory: key is: nodeTypeCategory, value is:
422 // "nodeTypes,keyProperties,AltKeyProps,depNode4UniquenessFlag"
423 public static final Multimap<String, String> NodeTypeCategory = new ImmutableSetMultimap.Builder<String, String>()
424 .putAll("vnf", "vce|vpe|generic-vnf,vnf-id,,true").build();
426 // NodeTypeCatMap: key is nodeType; value is: "nodeTypeCategory"
427 // So -- we're assuming that a nodeType can only be in one nodeTypeCategory.
428 public static final Map<String, String> NodeTypeCatMap;
430 NodeTypeCatMap = new HashMap<String, String>();
431 NodeTypeCatMap.put("vpe", "vnf");
432 NodeTypeCatMap.put("vce", "vnf");
433 NodeTypeCatMap.put("generic-vnf", "vnf");
436 // ReservedPropNames: keys are property names of (node) properties that are
437 // common to all nodes and
438 // should not be removed if not passed in on an UPDATE request.
439 public static final Map<String, String> ReservedPropNames;
441 ReservedPropNames = new HashMap<String, String>();
442 ReservedPropNames.put("source-of-truth", "");
443 ReservedPropNames.put("last-mod-source-of-truth", "");
444 ReservedPropNames.put("aai-created-ts", "");
445 ReservedPropNames.put("aai-last-mod-ts", "");
448 // This just lists which node types can be connected to themselves recursively.
449 // It's temporary - since DbEdgeRules is going to be overhauled in 16-10, this will
450 // get generated automatically. But for 1607, it can work like this.
451 public static final Map<String, String> CanBeRecursiveNT;
453 CanBeRecursiveNT = new HashMap<String, String>();
454 CanBeRecursiveNT.put("model-element", "");
455 CanBeRecursiveNT.put("service-instance", "");
456 CanBeRecursiveNT.put("named-query-element", "");