Merge automation from ECOMP's repository
[vid.git] / vid-automation / src / main / java / org / onap / simulator / presetGenerator / presets / aai / PresetAAIStandardQueryGet.java
1 package org.onap.simulator.presetGenerator.presets.aai;
2
3 import static org.apache.commons.lang3.ObjectUtils.defaultIfNull;
4 import static org.apache.commons.text.StringEscapeUtils.escapeJson;
5
6 import com.google.common.collect.ImmutableMap;
7 import com.google.common.collect.ImmutableMultimap;
8 import com.google.common.collect.Multimap;
9 import java.util.UUID;
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;
15
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;
25
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());
31         this.uri = uri;
32         this.typeInResponse = typeInResponse;
33         this.additionalProperties = additionalProperties;
34         this.relationshipsUris = relationshipsUris;
35     }
36
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);
39     }
40
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
48                 )).replace("" +
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\", "
57         );
58     }
59
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\","
72         );
73     }
74
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);
77     }
78
79     public static PresetAAIStandardQueryGet ofVnf(String instanceId, String modelVersionId,String modelCustomizationId, String additionalProperties, Multimap<String, String> relationshipsUris) {
80         return new PresetAAIStandardQueryGet(
81                 "vnf", instanceId,
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 + "\", "
87         );
88     }
89
90     public static PresetAAIStandardQueryGet ofRelatedVnf(String instanceId, String modelVersionId, String additionalProperties, Multimap<String, String> relationshipsUris) {
91         return new PresetAAIStandardQueryGet(
92                 "vnf", instanceId,
93                 "/network/generic-vnfs/generic-vnf/" + instanceId,
94                 relationshipsUris, additionalProperties +
95                 "\"model-invariant-id\": \"vnf-instance-model-invariant-id\", " +
96                 "\"model-version-id\": \"" + modelVersionId + "\", "
97         );
98     }
99
100     private static String randomAlphanumeric() {
101         return RandomStringUtils.randomAlphanumeric(17);
102     }
103
104     private static String randomUUID() {
105         return UUID.randomUUID().toString();
106     }
107
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");
110     }
111
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);
114     }
115
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");
118     }
119
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 + "\", "
134         );
135     }
136
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\","
148         );
149     }
150
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\", "
160         );
161     }
162
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, "
175         );
176     }
177
178     public String getInstanceId() {
179         return instanceId;
180     }
181
182     public String getInstanceName() {
183         return instanceName;
184     }
185
186     public String getInstanceType() {
187         return instanceType;
188     }
189
190     public String getInstanceRole() {
191         return instanceRole;
192     }
193
194     @Override
195     public Object getResponseBody() {
196         return "" +
197                 "{ " +
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(",")) +
208                 "    ] " +
209                 "  } " +
210                 "} ";
211     }
212
213     private String buildRelationship(String relatedTo, final String relatedLink) {
214         return "" +
215                 "{ " +
216                 "  \"related-to\": \"" + relatedTo + "\", " +
217                 "  \"relationship-label\": \"org.onap.relationships.inventory.ComposedOf\", " +
218                 "  \"related-link\": \"" + relatedLink + "\", " +
219                 "  \"relationship-data\": [" +
220                 "      { " +
221                 "        \"relationship-key\": \"GARBAGE DATA\", " +
222                 "        \"relationship-value\": \"GARBAGE DATA\" " +
223                 "      } " +
224                 "  ] " +
225                 "}";
226     }
227
228     @Override
229     public HttpMethod getReqMethod() {
230         return HttpMethod.GET;
231     }
232
233     @Override
234     public String getReqPath() {
235         return getRootPath() + uri;
236     }
237
238
239 }