1 package org.onap.simulator.presetGenerator.presets.aai;
3 import com.google.common.collect.ImmutableMap;
4 import com.google.common.collect.ImmutableMultimap;
5 import com.google.common.collect.Multimap;
6 import org.apache.commons.lang3.RandomStringUtils;
7 import org.apache.commons.lang3.StringUtils;
8 import org.apache.commons.text.StrSubstitutor;
9 import org.onap.simulator.presetGenerator.presets.BasePresets.BaseAAIPreset;
10 import org.springframework.http.HttpMethod;
12 import java.util.UUID;
13 import java.util.stream.Collectors;
14 import java.util.stream.Stream;
16 import static org.apache.commons.lang3.ObjectUtils.defaultIfNull;
17 import static org.apache.commons.text.StringEscapeUtils.escapeJson;
18 import static org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetCloudOwnersByCloudRegionId.ATT_AIC;
19 import static org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetCloudOwnersByCloudRegionId.hvf6;
21 public class PresetAAIStandardQueryGet extends BaseAAIPreset {
22 private final String instanceId;
23 private final String instanceName;
24 private final String instanceType;
25 private final String instanceRole;
26 private final String additionalProperties;
27 private final String uri;
28 private final String typeInResponse;
29 private final Multimap<String, String> relationshipsUris;
30 private Placement placement;
32 private PresetAAIStandardQueryGet(String typeInResponse, String instanceId, String instanceName, String instanceType, String instanceRole, String uri, Multimap<String, String> relationshipsUris, String additionalProperties, Placement placement) {
33 this.instanceId = defaultIfNull(instanceId, randomUUID());
34 this.instanceName = defaultIfNull(instanceName, randomAlphanumeric());
35 this.instanceType = defaultIfNull(instanceType, randomAlphanumeric());
36 this.instanceRole = defaultIfNull(instanceRole, randomAlphanumeric());
38 this.typeInResponse = typeInResponse;
39 this.additionalProperties = additionalProperties;
40 this.relationshipsUris = relationshipsUris;
41 this.placement = placement;
44 private PresetAAIStandardQueryGet(String typeInResponse, String instanceId, String uri, Multimap<String, String> relationshipsUris, String additionalProperties, Placement placement) {
45 this(typeInResponse, instanceId, randomAlphanumeric(), randomAlphanumeric(), randomAlphanumeric(), uri, relationshipsUris, additionalProperties, placement);
48 public static PresetAAIStandardQueryGet ofServiceInstance(String instanceId, final String modelVersionId, final String modelInvariantId, String subscriberId, String serviceType, Multimap<String, String> relationshipsUris) {
49 return ofServiceInstance(instanceId, "", "", modelVersionId, modelInvariantId, subscriberId, serviceType, "GARBAGE DATA", relationshipsUris);
52 public static PresetAAIStandardQueryGet ofServiceInstance(String instanceId, String instanceType, String instanceRole, final String modelVersionId, final String modelInvariantId, String subscriberId, String serviceType, String orchStatus, Multimap<String, String> relationshipsUris) {
53 return new PresetAAIStandardQueryGet(
54 "service-instance", instanceId,
58 new StrSubstitutor(ImmutableMap.of(
59 "global-customer-id", subscriberId,
60 "service-type", serviceType,
61 "service-instance-id", instanceId
63 "/business/customers/customer/${global-customer-id}" +
64 "/service-subscriptions/service-subscription/${service-type}" +
65 "/service-instances/service-instance/${service-instance-id}"),
66 relationshipsUris, "" +
67 "\"model-invariant-id\": \"" + modelInvariantId + "\", " +
68 "\"model-version-id\": \"" + modelVersionId + "\", " +
69 "\"resource-version\": \"GARBAGE DATA\", " +
70 "\"orchestration-status\": \"" + orchStatus + "\", ", null
74 public static PresetAAIStandardQueryGet ofInstanceGroup(String groupType, String groupRole, Multimap<String, String> relationshipsUris) {
75 return ofInstanceGroup(groupType, groupRole, relationshipsUris, "4bb2e27e-ddab-4790-9c6d-1f731bc14a45", "daeb6568-cef8-417f-9075-ed259ce59f48");
78 public static PresetAAIStandardQueryGet ofInstanceGroup(String groupType, String groupRole, Multimap<String, String> relationshipsUris, String modelInvariantId, String modelVersionId) {
79 final String instanceId = randomUUID();
80 return new PresetAAIStandardQueryGet(
81 "instance-group", instanceId, randomAlphanumeric(), groupType, groupRole,
82 "/network/instance-groups/instance-group/" + instanceId,
83 relationshipsUris, "" +
84 " \"id\": \"" + instanceId + "\"," +
85 addModelIds(modelInvariantId, modelVersionId) +
86 " \"description\": \"vTSBC Customer Landing Network Collection Desc\"," +
87 " \"resource-version\": \"1536169790853\"," +
88 " \"instance-group-function\": \"vTSBC Customer Landing Network Collection\",", null
92 public static PresetAAIStandardQueryGet ofVnf(String instanceId, Multimap<String, String> relationshipsUris, Placement placement) {
93 return ofVnf(instanceId, "vnf-instance-model-version-id", "vnf-instance-model-customization-id", "", relationshipsUris, placement);
96 public static Placement defaultPlacement() {
97 return new Placement(ATT_AIC, hvf6, "bae71557c5bb4d5aac6743a4e5f1d054");
100 public static PresetAAIStandardQueryGet ofVnf(String instanceId, String modelVersionId, String modelCustomizationId, String additionalProperties, Multimap<String, String> relationshipsUris, Placement placement) {
101 return new PresetAAIStandardQueryGet(
103 "/network/generic-vnfs/generic-vnf/" + instanceId,
104 relationshipsUris, additionalProperties +
105 "\"model-invariant-id\": \"vnf-instance-model-invariant-id\", " +
106 "\"model-customization-id\": \"" + modelCustomizationId + "\", " +
107 "\"model-version-id\": \"" + modelVersionId + "\", ", placement
111 public static PresetAAIStandardQueryGet ofRelatedVnf(String instanceId, String modelVersionId, String additionalProperties, Multimap<String, String> relationshipsUris) {
112 return new PresetAAIStandardQueryGet(
114 "/network/generic-vnfs/generic-vnf/" + instanceId,
115 relationshipsUris, additionalProperties +
116 "\"model-invariant-id\": \"vnf-instance-model-invariant-id\", " +
117 "\"model-version-id\": \"" + modelVersionId + "\", ", null
121 private static String randomAlphanumeric() {
122 return RandomStringUtils.randomAlphanumeric(17);
125 private static String randomUUID() {
126 return UUID.randomUUID().toString();
129 public static PresetAAIStandardQueryGet ofL3Network(String instanceType, String orchStatus, Multimap<String, String> relationshipsUris) {
130 return ofL3Network(randomUUID(), randomAlphanumeric(), instanceType, relationshipsUris, orchStatus, "prov", "network-instance-model-version-id", "network-instance-model-customization-id");
133 public static PresetAAIStandardQueryGet ofL3Network(String instanceType, String orchStatus, String provStatus, String modelVersionId, String modelCustomizationId, Multimap<String, String> relationshipsUris) {
134 return ofL3Network(randomUUID(), randomAlphanumeric(), instanceType, relationshipsUris, orchStatus, provStatus, modelVersionId, modelCustomizationId);
137 public static PresetAAIStandardQueryGet ofL3Network(String instanceId, String instanceName, String instanceType, Multimap<String, String> relationshipsUris, String orchStatus) {
138 return ofL3Network(instanceId, instanceName, instanceType, relationshipsUris, orchStatus, "prov", "network-instance-model-version-id", "94fdd893-4a36-4d70-b16a-ec29c54c184f");
141 public static PresetAAIStandardQueryGet ofL3Network(String instanceId, String instanceName, String instanceType, Multimap<String, String> relationshipsUris, String orchStatus, String provStatus, String modelVersionId, String modelCustomizationId) {
142 return new PresetAAIStandardQueryGet(
143 "network", instanceId, instanceName, instanceType, randomAlphanumeric(),
144 "/network/l3-networks/l3-network/" + instanceId,
145 relationshipsUris, "" +
146 "\"orchestration-status\": \"" + orchStatus + "\"," +
147 "\"prov-status\": \"" + provStatus + "\"," +
148 "\"network-technology\": \"contrail\", " +
149 "\"neutron-network-id\": \"66ee6123-1c45-4e71-b6c0-a748ae0fee88\", " +
150 "\"is-bound-to-vpn\": true, " +
151 "\"is-external-network\": true, " +
152 "\"model-invariant-id\": \"network-instance-model-invariant-id\", " +
153 "\"model-customization-id\": \"" + modelCustomizationId + "\", " +
154 "\"model-version-id\": \"" + modelVersionId + "\", ", null
158 public static PresetAAIStandardQueryGet ofVolumeGroup(String instanceType, Multimap<String, String> relationshipsUris) {
159 final String instanceId = randomUUID();
160 return new PresetAAIStandardQueryGet(
161 "volume-group", instanceId, randomAlphanumeric(), instanceType, randomAlphanumeric(),
162 "/cloud-infrastructure/cloud-regions/cloud-region/irma-aic/olson5b/volume-groups/volume-group/" + instanceId,
163 relationshipsUris, "" +
164 " \"vnf-type\": \"vSON_test_ap7145/vSON_test_ap7145 0\"," +
165 " \"orchestration-status\": \"Active\"," +
166 " \"model-customization-id\": \"bc3bbdcc-42f3-4682-b151-99c308d15255\"," +
167 " \"vf-module-model-customization-id\": \"bc3bbdcc-42f3-4682-b151-99c308d15255\"," +
168 " \"resource-version\": \"1533679899735\",", null
173 public static PresetAAIStandardQueryGet ofCollectionResource(String orchStatus, Multimap<String, String> relationshipsUris, String modelInvariantId, String modelVersionId) {
174 final String instanceId = randomUUID();
175 return new PresetAAIStandardQueryGet(
176 "collection", instanceId, randomAlphanumeric(), "L3-NETWORK", randomAlphanumeric(),
177 "/network/collections/collection/" + instanceId,
178 relationshipsUris, "" +
179 "\"orchestration-status\": \"" + orchStatus + "\", " +
180 addModelIds(modelInvariantId, modelVersionId), null
184 private static String addModelIds(String modelInvariantId, String modelVersionId) {
185 return "\"model-invariant-id\": \"" + modelInvariantId + "\", " +
186 "\"model-version-id\": \"" + modelVersionId + "\", ";
189 public static PresetAAIStandardQueryGet ofVrf(String orchStatus, Multimap<String, String> relationshipsUris) {
190 final String instanceId = randomUUID();
191 return new PresetAAIStandardQueryGet(
192 "configuration", instanceId, randomAlphanumeric(), "COLLECTION", randomAlphanumeric(),
193 "/network/configurations/configuration/" + instanceId,
194 relationshipsUris, "" +
195 "\"orchestration-status\": \"" + orchStatus + "\", " +
196 "\"model-invariant-id\": \"b67a289b-1688-496d-86e8-1583c828be0a\", " +
197 "\"model-customization-id\": \"dd024d73-9bd1-425d-9db5-476338d53433\", " +
198 "\"model-version-id\": \"9cac02be-2489-4374-888d-2863b4511a59\", ", null
202 public static PresetAAIStandardQueryGet ofVpn(String orchStatus, Multimap<String, String> relationshipsUris, String globalRoutTarget, String routeTargetRole, String customerId, String region) {
203 final String instanceId = randomUUID();
204 return new PresetAAIStandardQueryGet(
205 "vpn", instanceId, randomAlphanumeric(), "SERVICE-INFRASTRUCTURE", randomAlphanumeric(),
206 "/network/collections/collection/" + instanceId,
207 relationshipsUris, "" +
208 "\"orchestration-status\": \"" + orchStatus + "\", " +
209 "\"prov-status\": \"" + "prov" + "\"," +
210 "\"model-invariant-id\": \"vpn-model-invariant-id\", " +
211 "\"model-customization-id\": \"vpn-model-customization-id\", " +
212 "\"customer-vpn-id\": \"" + customerId + "\", " +
213 "\"vpn-region\": \"" + region + "\", " +
214 "\"route-targets\" : [" +
216 " \"global-route-target\":\"" + globalRoutTarget + "\"," +
217 " \"route-target-role\" : \"" + routeTargetRole + "\"" +
220 "\"model-version-id\": \"vpn-model-version-id\", ", null
224 public static PresetAAIStandardQueryGet ofVlanTag(int vlanIdOuter) {
225 final String instanceId = randomUUID();
226 return new PresetAAIStandardQueryGet(
227 "vlan-tag", instanceId,
228 "/this is an invented link/tag/vlan-tags/vlan-tag/" + instanceId,
229 ImmutableMultimap.of(), "" +
230 "\"vlan-interface\": \"US-10688-genvnf-vlan-interface1\", " +
231 "\"vlan-id-inner\": " + 123456789 + ", " +
232 "\"vlan-id-outer\": " + vlanIdOuter + ", " +
233 "\"resource-version\": \"1518934744675\", " +
234 "\"in-maint\": false, " +
235 "\"is-ip-unnumbered\": false, ", null
239 public String getInstanceId() {
243 public String getInstanceName() {
247 public String getInstanceType() {
251 public String getInstanceRole() {
256 public Object getResponseBody() {
259 " \"" + typeInResponse + "-id\": \"" + getInstanceId() + "\", " +
260 " \"" + typeInResponse + "-name\": \"" + escapeJson(getInstanceName()) + "\", " +
261 " \"" + typeInResponse + "-type\": \"" + escapeJson(getInstanceType()) + "\", " +
262 " \"" + typeInResponse + "-role\": \"" + escapeJson(getInstanceRole()) + "\", " +
263 additionalProperties +
264 " \"relationship-list\": { " +
265 " \"relationship\": [ " +
267 placement !=null ? Stream.of(buildPlacementRelationship()) : Stream.empty(),
268 relationshipsUris.entries().stream().map(entry -> buildRelationship(entry.getKey(), entry.getValue())
269 )).collect(Collectors.joining(",")) +
275 private String buildRelationship(String relatedTo, final String relatedLink) {
278 " \"related-to\": \"" + relatedTo + "\", " +
279 " \"relationship-label\": \"org.onap.relationships.inventory.ComposedOf\", " +
280 " \"related-link\": \"" + relatedLink + "\", " +
281 " \"relationship-data\": [" +
283 " \"relationship-key\": \"GARBAGE DATA\", " +
284 " \"relationship-value\": \"GARBAGE DATA\" " +
290 private String buildPlacementRelationship() {
291 String relatedTo = StringUtils.equals(instanceType,"vf-module")? "vserver": "tenant";
294 " \"related-to\": \"" + relatedTo + "\"," +
295 " \"relationship-label\": \"org.onap.relationships.inventory.Uses\"," +
296 " \"related-link\": \"/aai/v12/cloud-infrastructure/cloud-regions/cloud-region/irma-aic/" + this.placement.lcpRegionId + "/tenants/tenant/" + this.placement.tenantId+ "/vservers/vserver/5eef9f6d-9933-4bc6-9a1a-862d61309437\"," +
297 " \"relationship-data\": [" +
299 " \"relationship-key\": \"cloud-region.cloud-owner\"," +
300 " \"relationship-value\": \""+ this.placement.cloudOwner+"\"" +
303 " \"relationship-key\": \"cloud-region.cloud-region-id\"," +
304 " \"relationship-value\": \"" + this.placement.lcpRegionId + "\"" +
307 " \"relationship-key\": \"tenant.tenant-id\"," +
308 " \"relationship-value\": \"" + this.placement.tenantId + "\"" +
311 " \"relationship-key\": \"vserver.vserver-id\"," +
312 " \"relationship-value\": \"5eef9f6d-9933-4bc6-9a1a-862d61309437\"" +
315 " \"related-to-property\": [" +
317 " \"property-key\": \"vserver.vserver-name\"," +
318 " \"property-value\": \"zolson5bfapn01dns002\"" +
325 public HttpMethod getReqMethod() {
326 return HttpMethod.GET;
330 public String getReqPath() {
331 return getRootPath() + uri;