1 package org.onap.simulator.presetGenerator.presets.aai;
3 import static org.apache.commons.lang3.ObjectUtils.defaultIfNull;
4 import static org.apache.commons.text.StringEscapeUtils.escapeJson;
6 import com.google.common.collect.ImmutableMap;
7 import com.google.common.collect.ImmutableMultimap;
8 import com.google.common.collect.Multimap;
10 import java.util.stream.Collectors;
11 import org.apache.commons.lang3.RandomStringUtils;
12 import org.apache.commons.text.StrSubstitutor;
13 import org.onap.simulator.presetGenerator.presets.BasePresets.BaseAAIPreset;
14 import org.springframework.http.HttpMethod;
16 public class PresetAAIStandardQueryGet extends BaseAAIPreset {
17 private final String instanceId;
18 private final String instanceName;
19 private final String instanceType;
20 private final String instanceRole;
21 private final String additionalProperties;
22 private final String uri;
23 private final String typeInResponse;
24 private final Multimap<String, String> relationshipsUris;
26 private PresetAAIStandardQueryGet(String typeInResponse, String instanceId, String instanceName, String instanceType, String instanceRole, String uri, Multimap<String, String> relationshipsUris, String additionalProperties) {
27 this.instanceId = defaultIfNull(instanceId, randomUUID());
28 this.instanceName = defaultIfNull(instanceName, randomAlphanumeric());
29 this.instanceType = defaultIfNull(instanceType, randomAlphanumeric());
30 this.instanceRole = defaultIfNull(instanceRole, randomAlphanumeric());
32 this.typeInResponse = typeInResponse;
33 this.additionalProperties = additionalProperties;
34 this.relationshipsUris = relationshipsUris;
37 private PresetAAIStandardQueryGet(String typeInResponse, String instanceId, String uri, Multimap<String, String> relationshipsUris, String additionalProperties) {
38 this(typeInResponse, instanceId, randomAlphanumeric(), randomAlphanumeric(), randomAlphanumeric(), uri, relationshipsUris, additionalProperties);
41 public static PresetAAIStandardQueryGet ofServiceInstance(String instanceId, final String modelVersionId, final String modelInvariantId, String subscriberId, String serviceType, Multimap<String, String> relationshipsUris) {
42 return new PresetAAIStandardQueryGet(
43 "service-instance", instanceId,
44 new StrSubstitutor(ImmutableMap.of(
45 "global-customer-id", subscriberId,
46 "service-type", serviceType,
47 "service-instance-id", instanceId
49 "/business/customers/customer/${global-customer-id}" +
50 "/service-subscriptions/service-subscription/${service-type}" +
51 "/service-instances/service-instance/${service-instance-id}"),
52 relationshipsUris, "" +
53 "\"model-invariant-id\": \"" + modelInvariantId + "\", " +
54 "\"model-version-id\": \"" + modelVersionId + "\", " +
55 "\"resource-version\": \"GARBAGE DATA\", " +
56 "\"orchestration-status\": \"GARBAGE DATA\", "
60 public static PresetAAIStandardQueryGet ofInstanceGroup(String groupType, String groupRole, Multimap<String, String> relationshipsUris) {
61 final String instanceId = randomUUID();
62 return new PresetAAIStandardQueryGet(
63 "instance-group", instanceId, randomAlphanumeric(), groupType, groupRole,
64 "/network/instance-groups/instance-group/" + instanceId,
65 relationshipsUris, "" +
66 " \"id\": \"" + instanceId + "\"," +
67 " \"model-invariant-id\": \"4bb2e27e-ddab-4790-9c6d-1f731bc14a45\"," +
68 " \"model-version-id\": \"daeb6568-cef8-417f-9075-ed259ce59f48\"," +
69 " \"description\": \"vTSBC Customer Landing Network Collection Desc\"," +
70 " \"resource-version\": \"1536169790853\"," +
71 " \"instance-group-function\": \"vTSBC Customer Landing Network Collection\","
75 public static PresetAAIStandardQueryGet ofVnf(String instanceId, Multimap<String, String> relationshipsUris) {
76 return ofVnf(instanceId, "vnf-instance-model-version-id", "vnf-instance-model-customization-id", "", relationshipsUris);
79 public static PresetAAIStandardQueryGet ofVnf(String instanceId, String modelVersionId,String modelCustomizationId, String additionalProperties, Multimap<String, String> relationshipsUris) {
80 return new PresetAAIStandardQueryGet(
82 "/network/generic-vnfs/generic-vnf/" + instanceId,
83 relationshipsUris, additionalProperties +
84 "\"model-invariant-id\": \"vnf-instance-model-invariant-id\", " +
85 "\"model-customization-id\": \"" + modelCustomizationId + "\", "+
86 "\"model-version-id\": \"" + modelVersionId + "\", "
90 public static PresetAAIStandardQueryGet ofRelatedVnf(String instanceId, String modelVersionId, String additionalProperties, Multimap<String, String> relationshipsUris) {
91 return new PresetAAIStandardQueryGet(
93 "/network/generic-vnfs/generic-vnf/" + instanceId,
94 relationshipsUris, additionalProperties +
95 "\"model-invariant-id\": \"vnf-instance-model-invariant-id\", " +
96 "\"model-version-id\": \"" + modelVersionId + "\", "
100 private static String randomAlphanumeric() {
101 return RandomStringUtils.randomAlphanumeric(17);
104 private static String randomUUID() {
105 return UUID.randomUUID().toString();
108 public static PresetAAIStandardQueryGet ofL3Network(String instanceType, String orchStatus, Multimap<String, String> relationshipsUris) {
109 return ofL3Network(randomUUID(), randomAlphanumeric(), instanceType, relationshipsUris, orchStatus, "prov", "network-instance-model-version-id", "network-instance-model-customization-id");
112 public static PresetAAIStandardQueryGet ofL3Network(String instanceType, String orchStatus, String provStatus, String modelVersionId, String modelCustomizationId,Multimap<String, String> relationshipsUris) {
113 return ofL3Network(randomUUID(), randomAlphanumeric(), instanceType, relationshipsUris, orchStatus, provStatus, modelVersionId, modelCustomizationId);
116 public static PresetAAIStandardQueryGet ofL3Network(String instanceId, String instanceName, String instanceType, Multimap<String, String> relationshipsUris, String orchStatus) {
117 return ofL3Network(instanceId, instanceName, instanceType, relationshipsUris, orchStatus, "prov", "network-instance-model-version-id", "94fdd893-4a36-4d70-b16a-ec29c54c184f");
120 public static PresetAAIStandardQueryGet ofL3Network(String instanceId, String instanceName, String instanceType, Multimap<String, String> relationshipsUris, String orchStatus, String provStatus, String modelVersionId, String modelCustomizationId) {
121 return new PresetAAIStandardQueryGet(
122 "network", instanceId, instanceName, instanceType, randomAlphanumeric(),
123 "/network/l3-networks/l3-network/" + instanceId,
124 relationshipsUris, "" +
125 "\"orchestration-status\": \"" + orchStatus + "\"," +
126 "\"prov-status\": \"" + provStatus + "\"," +
127 "\"network-technology\": \"contrail\", " +
128 "\"neutron-network-id\": \"66ee6123-1c45-4e71-b6c0-a748ae0fee88\", " +
129 "\"is-bound-to-vpn\": true, " +
130 "\"is-external-network\": true, " +
131 "\"model-invariant-id\": \"network-instance-model-invariant-id\", " +
132 "\"model-customization-id\": \"" + modelCustomizationId + "\", " +
133 "\"model-version-id\": \"" + modelVersionId + "\", "
137 public static PresetAAIStandardQueryGet ofVolumeGroup(String instanceType, Multimap<String, String> relationshipsUris) {
138 final String instanceId = randomUUID();
139 return new PresetAAIStandardQueryGet(
140 "volume-group", instanceId, randomAlphanumeric(), instanceType, randomAlphanumeric(),
141 "/cloud-infrastructure/cloud-regions/cloud-region/irma-aic/olson5b/volume-groups/volume-group/" + instanceId,
142 relationshipsUris, "" +
143 " \"vnf-type\": \"vSON_test_ap7145/vSON_test_ap7145 0\"," +
144 " \"orchestration-status\": \"Active\"," +
145 " \"model-customization-id\": \"bc3bbdcc-42f3-4682-b151-99c308d15255\"," +
146 " \"vf-module-model-customization-id\": \"bc3bbdcc-42f3-4682-b151-99c308d15255\"," +
147 " \"resource-version\": \"1533679899735\","
151 public static PresetAAIStandardQueryGet ofCollectionResource(String orchStatus, Multimap<String, String> relationshipsUris) {
152 final String instanceId = randomUUID();
153 return new PresetAAIStandardQueryGet(
154 "collection", instanceId, randomAlphanumeric(), "L3-NETWORK", randomAlphanumeric(),
155 "/network/collections/collection/" + instanceId,
156 relationshipsUris, "" +
157 "\"orchestration-status\": \"" + orchStatus + "\", " +
158 "\"model-invariant-id\": \"081ceb56-eb71-4566-a72d-3e7cbee5cdf1\", " +
159 "\"model-version-id\": \"ce8c98bc-4691-44fb-8ff0-7a47487c11c4\", "
163 public static PresetAAIStandardQueryGet ofVlanTag(int vlanIdOuter) {
164 final String instanceId = randomUUID();
165 return new PresetAAIStandardQueryGet(
166 "vlan-tag", instanceId,
167 "/this is an invented link/tag/vlan-tags/vlan-tag/" + instanceId,
168 ImmutableMultimap.of(), "" +
169 "\"vlan-interface\": \"US-10688-genvnf-vlan-interface1\", " +
170 "\"vlan-id-inner\": " + 123456789 + ", " +
171 "\"vlan-id-outer\": " + vlanIdOuter + ", " +
172 "\"resource-version\": \"1518934744675\", " +
173 "\"in-maint\": false, " +
174 "\"is-ip-unnumbered\": false, "
178 public String getInstanceId() {
182 public String getInstanceName() {
186 public String getInstanceType() {
190 public String getInstanceRole() {
195 public Object getResponseBody() {
198 " \"" + typeInResponse + "-id\": \"" + getInstanceId() + "\", " +
199 " \"" + typeInResponse + "-name\": \"" + escapeJson(getInstanceName()) + "\", " +
200 " \"" + typeInResponse + "-type\": \"" + escapeJson(getInstanceType()) + "\", " +
201 " \"" + typeInResponse + "-role\": \"" + escapeJson(getInstanceRole()) + "\", " +
202 additionalProperties +
203 " \"relationship-list\": { " +
204 " \"relationship\": [ " +
205 relationshipsUris.entries().stream().map(
206 entry -> buildRelationship(entry.getKey(), entry.getValue())
207 ).collect(Collectors.joining(",")) +
213 private String buildRelationship(String relatedTo, final String relatedLink) {
216 " \"related-to\": \"" + relatedTo + "\", " +
217 " \"relationship-label\": \"org.onap.relationships.inventory.ComposedOf\", " +
218 " \"related-link\": \"" + relatedLink + "\", " +
219 " \"relationship-data\": [" +
221 " \"relationship-key\": \"GARBAGE DATA\", " +
222 " \"relationship-value\": \"GARBAGE DATA\" " +
229 public HttpMethod getReqMethod() {
230 return HttpMethod.GET;
234 public String getReqPath() {
235 return getRootPath() + uri;