bf00a51d315f11ac46f441a446e7f3f127044b91
[policy/drools-applications.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * SOActorServiceProvider
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
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
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=========================================================
19  */
20
21 package org.onap.policy.controlloop.actor.so;
22
23 import java.util.Collections;
24 import java.util.HashMap;
25 import java.util.List;
26 import java.util.Map;
27 import java.util.UUID;
28
29 import org.drools.core.WorkingMemory;
30 import org.onap.policy.aai.AAIManager;
31 import org.onap.policy.aai.AAINQInstanceFilters;
32 import org.onap.policy.aai.AAINQInventoryResponseItem;
33 import org.onap.policy.aai.AAINQNamedQuery;
34 import org.onap.policy.aai.AAINQQueryParameters;
35 import org.onap.policy.aai.AAINQRequest;
36 import org.onap.policy.aai.AAINQResponse;
37 import org.onap.policy.aai.AAINQResponseWrapper;
38 import org.onap.policy.controlloop.ControlLoopOperation;
39 import org.onap.policy.controlloop.VirtualControlLoopEvent;
40 import org.onap.policy.controlloop.actorServiceProvider.spi.Actor;
41 import org.onap.policy.controlloop.policy.Policy;
42 import org.onap.policy.drools.system.PolicyEngine;
43 import org.onap.policy.so.SOCloudConfiguration;
44 import org.onap.policy.so.SOManager;
45 import org.onap.policy.so.SOModelInfo;
46 import org.onap.policy.so.SORelatedInstance;
47 import org.onap.policy.so.SORelatedInstanceListElement;
48 import org.onap.policy.so.SORequest;
49 import org.onap.policy.so.SORequestDetails;
50 import org.onap.policy.so.SORequestInfo;
51 import org.onap.policy.so.SORequestParameters;
52 import org.onap.policy.so.util.Serialization;
53 import org.slf4j.Logger;
54 import org.slf4j.LoggerFactory;
55
56 import com.google.common.collect.ImmutableList;
57 import com.google.common.collect.ImmutableMap;
58
59 public class SOActorServiceProvider implements Actor {
60         
61         private static final Logger logger = LoggerFactory.getLogger(SOActorServiceProvider.class);
62
63         private static String vnfItemVnfId;
64
65         private String vnfItemVnfType;
66
67         private String vnfItemModelInvariantId;
68
69         private String vnfItemModelVersionId;
70
71         private String vnfItemModelName;
72
73         private String vnfItemModelVersion;
74
75         private String vnfItemModelNameVersionId;
76
77         private static String serviceItemServiceInstanceId;
78
79         private String serviceItemModelInvariantId;
80
81         private String serviceItemModelName;
82
83         private String serviceItemModelType;
84
85         private String serviceItemModelVersion;
86
87         private String serviceItemModelNameVersionId;
88
89         private String vfModuleItemVfModuleName;
90
91         private String vfModuleItemModelInvariantId;
92
93         private String vfModuleItemModelVersionId;
94
95         private String vfModuleItemModelName;
96
97         private String vfModuleItemModelNameVersionId;
98
99         private String tenantItemTenantId;
100
101         private String cloudRegionItemCloudRegionId;
102
103         private static final ImmutableList<String> recipes = ImmutableList.of(
104                         "VF Module Create");
105         private static final ImmutableMap<String, List<String>> targets = new ImmutableMap.Builder<String, List<String>>()
106                         .put("VF Module Create", ImmutableList.of("VFC"))
107                         .build();
108         
109         @Override
110         public String actor() {
111                 return "SO";
112         }
113
114         @Override
115         public List<String> recipes() {
116                 return ImmutableList.copyOf(recipes);
117         }
118
119         @Override
120         public List<String> recipeTargets(String recipe) {
121                 return ImmutableList.copyOf(targets.getOrDefault(recipe, Collections.emptyList()));
122         }
123
124         @Override
125         public List<String> recipePayloads(String recipe) {
126                 return Collections.emptyList();
127         }
128         
129         /**
130          * SOActorServiceProvider Constructor
131          * 
132          */
133         public SOActorServiceProvider() {
134                 
135         }
136         
137         /**
138          * Constructs and sends an AAI vserver Named Query
139          * 
140          * @param onset
141          * @returns the response to the AAI Named Query
142          */
143         private AAINQResponseWrapper AaiNamedQueryRequest(VirtualControlLoopEvent onset) {
144                 
145                 // create AAI named-query request with UUID started with ""
146                 AAINQRequest aainqrequest = new AAINQRequest();
147                 AAINQQueryParameters aainqqueryparam = new AAINQQueryParameters();
148                 AAINQNamedQuery aainqnamedquery = new AAINQNamedQuery();
149                 AAINQInstanceFilters aainqinstancefilter = new AAINQInstanceFilters();
150
151                 // queryParameters
152                 aainqnamedquery.namedQueryUUID = UUID.fromString("4ff56a54-9e3f-46b7-a337-07a1d3c6b469"); // UUID.fromString($params.getAaiNamedQueryUUID()) TO DO: AaiNamedQueryUUID 
153                 aainqqueryparam.namedQuery = aainqnamedquery;
154                 aainqrequest.queryParameters = aainqqueryparam;
155                 //
156                 // instanceFilters
157                 //
158                 Map<String, Map<String, String>> aainqinstancefiltermap = new HashMap<>();
159                 Map<String, String> aainqinstancefiltermapitem = new HashMap<>();
160                 aainqinstancefiltermapitem.put("vserver-name", onset.AAI.get("vserver.vserver-name")); // TO DO: get vserver.vname from dcae onset.AAI.get("vserver.vserver-name")
161                 aainqinstancefiltermap.put("vserver", aainqinstancefiltermapitem);
162                 aainqinstancefilter.instanceFilter.add(aainqinstancefiltermap);
163                 aainqrequest.instanceFilters = aainqinstancefilter;
164                 //
165                 // print aainqrequest for debug
166                 //
167                 logger.debug("AAI Request sent:");
168                 logger.debug(Serialization.gsonPretty.toJson(aainqrequest));
169                 //
170                 // Create AAINQRequestWrapper
171                 //
172 //              AAINQRequestWrapper aainqRequestWrapper = new AAINQRequestWrapper(onset.requestID, aainqrequest);
173                 //
174                 // insert aainqrequest into memory
175                 //
176 //              insert(aainqRequestWrapper);
177                 
178                 /*
179          * Obtain A&AI credentials from properties.environment file
180          * TODO: What if these are null?
181          */
182         String aaiUrl = PolicyEngine.manager.getEnvironmentProperty("aai.url");
183         String aaiUsername = PolicyEngine.manager.getEnvironmentProperty("aai.username");
184         String aaiPassword = PolicyEngine.manager.getEnvironmentProperty("aai.password");
185                 
186                 //***** send the request *****\\
187                 AAINQResponse aainqresponse = AAIManager.postQuery(aaiUrl, aaiUsername, aaiPassword,
188                                 aainqrequest, onset.requestID);
189
190                 // Check AAI response
191                 if (aainqresponse == null) {
192                         System.err.println("Failed to get AAI response");
193                         
194                         // Fail and retract everything
195                         return null;
196                 } else {
197                         // Create AAINQResponseWrapper
198                         AAINQResponseWrapper aainqResponseWrapper = new AAINQResponseWrapper(onset.requestID, aainqresponse);
199
200                         // insert aainqResponseWrapper to memory -- Is this needed?
201 //                      insert(aainqResponseWrapper);
202                         
203                         if (logger.isDebugEnabled()) {
204                                 logger.debug("AAI Named Query Response: ");
205                                 logger.debug(Serialization.gsonPretty.toJson(aainqResponseWrapper.aainqresponse));
206                         }
207
208                         extractSOFieldsFromNamedQuery(aainqResponseWrapper, onset);
209                         return aainqResponseWrapper;
210                 }
211         }
212
213                 
214         /**
215          * Extract the required fields from the named query response
216          * @param namedQueryResponseWrapper
217          * @param onset
218          */
219         private void extractSOFieldsFromNamedQuery(AAINQResponseWrapper namedQueryResponseWrapper, VirtualControlLoopEvent onset) {
220                 
221                 try {
222                         // vnfItem
223                         setVnfItemVnfId(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfID);
224                         setVnfItemVnfType(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfType);
225                         setVnfItemVnfType(vnfItemVnfType.substring(vnfItemVnfType.lastIndexOf("/")+1));
226                         setVnfItemModelInvariantId(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.modelInvariantId);
227                         setVnfItemModelVersionId(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.modelVersionId);
228                         setVnfItemModelName(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue);
229                         setVnfItemModelVersion(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(2).propertyValue);
230                         setVnfItemModelNameVersionId(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue);                     
231
232                         // serviceItem
233                         setServiceItemServiceInstanceId(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.serviceInstanceID);
234                         setServiceItemModelInvariantId(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.modelInvariantId);
235                         setServiceItemModelName(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue);
236                         setServiceItemModelType(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(1).propertyValue);
237                         setServiceItemModelVersion(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.modelVersionId);
238                         setServiceItemModelNameVersionId(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue);
239                         
240                         // Find the index for base vf module and non-base vf module
241                         int baseIndex = -1;
242                         List<AAINQInventoryResponseItem> inventoryItems = namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems;
243                         for (AAINQInventoryResponseItem m : inventoryItems) {
244                                 if (m.vfModule != null && m.vfModule.isBaseVfModule) {
245                                         baseIndex = inventoryItems.indexOf(m);
246                                 } 
247                                 //
248                                 if (baseIndex != -1) {
249                                         break;
250                                 }
251                         }
252                         
253                         // Report the error if either base vf module or non-base vf module is not found
254                         if (baseIndex == -1) {
255                                 logger.error("Either base or non-base vf module is not found from AAI response.");
256                                 return;
257                         }
258                         
259                         // This comes from the base module
260                         setVfModuleItemVfModuleName(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(baseIndex).vfModule.vfModuleName);
261                         setVfModuleItemVfModuleName(vfModuleItemVfModuleName.replace("Vfmodule", "vDNS"));
262
263                         // vfModuleItem - NOT the base module
264                         setVfModuleItemModelInvariantId(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(baseIndex).vfModule.modelInvariantId);
265                         setVfModuleItemModelVersionId(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(baseIndex).vfModule.modelVersionId);
266                         setVfModuleItemModelName(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(baseIndex).extraProperties.extraProperty.get(0).propertyValue);
267                         setVfModuleItemModelNameVersionId(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(baseIndex).extraProperties.extraProperty.get(4).propertyValue);
268                         
269                         // tenantItem
270                         setTenantItemTenantId(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).tenant.tenantId);
271
272                         // cloudRegionItem
273                         setCloudRegionItemCloudRegionId(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).items.inventoryResponseItems.get(0).cloudRegion.cloudRegionId);
274                                         
275                 } catch (Exception e) {
276                         logger.warn("Problem extracting SO data from AAI query response because of {}", e.getMessage(), e);
277                         return;
278                 }
279         }
280         
281         /**
282          * Checks whether extracted fields from AAI Named Query are null or not
283          * @return false if some extracted fields are missing, true otherwise
284          */
285         private boolean checkExtractedFields() {
286                 
287                 if ((getVnfItemVnfId() == null) || (getVnfItemVnfType() == null) ||
288                             (getVnfItemModelInvariantId() == null) || (getVnfItemModelName() == null) ||
289                             (getVnfItemModelVersion() == null) || (getVnfItemModelNameVersionId() == null) ||
290                             (getServiceItemServiceInstanceId() == null) || (getServiceItemModelName() == null) ||
291                             (getServiceItemModelType() == null) || (getServiceItemModelVersion() == null) ||
292                             (getServiceItemModelNameVersionId() == null) || (getVfModuleItemVfModuleName() == null) ||
293                             (getVfModuleItemModelInvariantId() == null) || (getVfModuleItemModelVersionId() == null) ||
294                             (getVfModuleItemModelName() == null) || (getVfModuleItemModelNameVersionId() == null) ||
295                             (getTenantItemTenantId() == null) || (getCloudRegionItemCloudRegionId() == null)) {
296                                 return false;
297                         }
298                 return true;
299         }
300                 
301         /**
302          * Construct SO Request
303          * 
304          * @param onset
305          * @param operation
306          * @param policy
307          * @return SORequest
308          * @throws IllegalAccessException 
309          */
310         public SORequest constructRequest(VirtualControlLoopEvent onset, ControlLoopOperation operation, Policy policy) {
311
312                 if ("SO".equals(policy.getActor()) && "VF Module Create".equals(policy.getRecipe())) {
313                         // perform named query request and handle response
314                         AaiNamedQueryRequest(onset);
315                 } else {
316                         // for future extension
317                         return null;
318                 };
319           
320                 // check if the fields extracted from named query response are 
321                 // not null so we can proceed with SO request
322                 if (!checkExtractedFields()) {
323                         logger.warn("AAI response is missing some required fields. Cannot proceed with SO Request construction.");
324                         return null;
325                         
326                 } else {
327
328                         // Construct SO Request
329                         SORequest request = new SORequest();
330                         request.requestId = onset.requestID;
331                         request.requestDetails = new SORequestDetails();
332                         request.requestDetails.modelInfo = new SOModelInfo();
333                         request.requestDetails.cloudConfiguration = new SOCloudConfiguration();
334                         request.requestDetails.requestInfo = new SORequestInfo();
335                         request.requestDetails.requestParameters = new SORequestParameters();
336                         request.requestDetails.requestParameters.userParams = null;
337                         //
338                         // cloudConfiguration
339                         //
340                         request.requestDetails.cloudConfiguration.lcpCloudRegionId = getCloudRegionItemCloudRegionId();
341                         request.requestDetails.cloudConfiguration.tenantId = getTenantItemTenantId();
342                         //
343                         // modelInfo
344                         //
345                         request.requestDetails.modelInfo.modelType = "vfModule";
346                         request.requestDetails.modelInfo.modelInvariantId = getVfModuleItemModelInvariantId();
347                         request.requestDetails.modelInfo.modelNameVersionId = getVfModuleItemModelNameVersionId();
348                         request.requestDetails.modelInfo.modelName = getVfModuleItemModelName();
349                         request.requestDetails.modelInfo.modelVersion = getVfModuleItemModelVersionId();
350                         //
351                         // requestInfo
352                         //
353                         request.requestDetails.requestInfo.instanceName = getVfModuleItemVfModuleName();
354                         request.requestDetails.requestInfo.source = "POLICY";
355                         request.requestDetails.requestInfo.suppressRollback = false;
356                         //
357                         // relatedInstanceList
358                         //
359                         SORelatedInstanceListElement relatedInstanceListElement1 = new SORelatedInstanceListElement();
360                         SORelatedInstanceListElement relatedInstanceListElement2 = new SORelatedInstanceListElement();
361                         relatedInstanceListElement1.relatedInstance = new SORelatedInstance();
362                         relatedInstanceListElement2.relatedInstance = new SORelatedInstance();
363                         //
364                         relatedInstanceListElement1.relatedInstance.instanceId = getServiceItemServiceInstanceId();
365                         relatedInstanceListElement1.relatedInstance.modelInfo = new SOModelInfo();
366                         relatedInstanceListElement1.relatedInstance.modelInfo.modelType = "service";
367                         relatedInstanceListElement1.relatedInstance.modelInfo.modelInvariantId = getServiceItemModelInvariantId();
368                         relatedInstanceListElement1.relatedInstance.modelInfo.modelNameVersionId = getServiceItemModelNameVersionId();
369                         relatedInstanceListElement1.relatedInstance.modelInfo.modelName = getServiceItemModelName();
370                         relatedInstanceListElement1.relatedInstance.modelInfo.modelVersion = getServiceItemModelVersion();
371                         //
372                         relatedInstanceListElement2.relatedInstance.instanceId = getVnfItemVnfId();
373                         relatedInstanceListElement2.relatedInstance.modelInfo = new SOModelInfo();
374                         relatedInstanceListElement2.relatedInstance.modelInfo.modelType = "vnf";
375                         relatedInstanceListElement2.relatedInstance.modelInfo.modelInvariantId = getVnfItemModelInvariantId();
376                         relatedInstanceListElement2.relatedInstance.modelInfo.modelNameVersionId = getVnfItemModelNameVersionId();
377                         relatedInstanceListElement2.relatedInstance.modelInfo.modelName = getVnfItemModelName();
378                         relatedInstanceListElement2.relatedInstance.modelInfo.modelVersion = getVnfItemModelVersion();
379                         relatedInstanceListElement2.relatedInstance.modelInfo.modelCustomizationName = getVnfItemVnfType();
380                         //      
381                         request.requestDetails.relatedInstanceList.add(relatedInstanceListElement1);
382                         request.requestDetails.relatedInstanceList.add(relatedInstanceListElement2);
383                         //
384                         // print SO request for debug
385                         //
386                         logger.debug("SO request sent:");
387                         logger.debug(Serialization.gsonPretty.toJson(request));
388         
389                         return request;
390                 }
391         }
392         
393         /**
394          * This method is needed to get the serviceInstanceId and vnfInstanceId which is used
395          * in the asyncSORestCall 
396          * 
397          * @param wm
398          * @param request
399          */
400         public static void sendRequest(WorkingMemory wm, Object request) {
401                 SOManager Mm = new SOManager();
402                 Mm.asyncSORestCall(wm, getServiceItemServiceInstanceId(), getVnfItemVnfId(), (SORequest)request);
403         }
404                 
405         /**
406          * @return the vnfItemVnfId
407          */
408         public static String getVnfItemVnfId() {
409                 return vnfItemVnfId;
410         }
411
412         /**
413          * @param vnfItemVnfId the vnfItemVnfId to set
414          */
415         private static void setVnfItemVnfId(String vnfItemVnfId) {
416                 SOActorServiceProvider.vnfItemVnfId = vnfItemVnfId;
417         }
418
419         /**
420          * @return the vnfItemVnfType
421          */
422         public String getVnfItemVnfType() {
423                 return this.vnfItemVnfType;
424         }
425
426         /**
427          * @param vnfItemVnfType the vnfItemVnfType to set
428          */
429         private void setVnfItemVnfType(String vnfItemVnfType) {
430                 this.vnfItemVnfType = vnfItemVnfType;
431         }
432
433         /**
434          * @return the vnfItemModelInvariantId
435          */
436         public String getVnfItemModelInvariantId() {
437                 return this.vnfItemModelInvariantId;
438         }
439
440         /**
441          * @param vnfItemModelInvariantId the vnfItemModelInvariantId to set
442          */
443         private void setVnfItemModelInvariantId(String vnfItemModelInvariantId) {
444                 this.vnfItemModelInvariantId = vnfItemModelInvariantId;
445         }
446
447         /**
448          * @return the vnfItemModelVersionId
449          */
450         public String getVnfItemModelVersionId() {
451                 return this.vnfItemModelVersionId;
452         }
453
454         /**
455          * @param vnfItemModelVersionId the vnfItemModelVersionId to set
456          */
457         private void setVnfItemModelVersionId(String vnfItemModelVersionId) {
458                 this.vnfItemModelVersionId = vnfItemModelVersionId;
459         }
460
461         /**
462          * @return the vnfItemModelName
463          */
464         public String getVnfItemModelName() {
465                 return this.vnfItemModelName;
466         }
467
468         /**
469          * @param vnfItemModelName the vnfItemModelName to set
470          */
471         private void setVnfItemModelName(String vnfItemModelName) {
472                 this.vnfItemModelName = vnfItemModelName;
473         }
474
475         /**
476          * @return the vnfItemModelVersion
477          */
478         public String getVnfItemModelVersion() {
479                 return this.vnfItemModelVersion;
480         }
481
482         /**
483          * @param vnfItemModelVersion the vnfItemModelVersion to set
484          */
485         private void setVnfItemModelVersion(String vnfItemModelVersion) {
486                 this.vnfItemModelVersion = vnfItemModelVersion;
487         }
488
489         /**
490          * @return the vnfItemModelNameVersionId
491          */
492         public String getVnfItemModelNameVersionId() {
493                 return this.vnfItemModelNameVersionId;
494         }
495
496         /**
497          * @param vnfItemModelNameVersionId the vnfItemModelNameVersionId to set
498          */
499         private void setVnfItemModelNameVersionId(String vnfItemModelNameVersionId) {
500                 this.vnfItemModelNameVersionId = vnfItemModelNameVersionId;
501         }
502
503         /**
504          * @return the serviceItemServiceInstanceId
505          */
506         public static String getServiceItemServiceInstanceId() {
507                 return serviceItemServiceInstanceId;
508         }
509
510         /**
511          * @param serviceItemServiceInstanceId the serviceItemServiceInstanceId to set
512          */
513         private static void setServiceItemServiceInstanceId(
514                         String serviceItemServiceInstanceId) {
515                 SOActorServiceProvider.serviceItemServiceInstanceId = serviceItemServiceInstanceId;
516         }
517
518         /**
519          * @return the serviceItemModelInvariantId
520          */
521         public String getServiceItemModelInvariantId() {
522                 return this.serviceItemModelInvariantId;
523         }
524
525         /**
526          * @param serviceItemModelInvariantId the serviceItemModelInvariantId to set
527          */
528         private void setServiceItemModelInvariantId(String serviceItemModelInvariantId) {
529                 this.serviceItemModelInvariantId = serviceItemModelInvariantId;
530         }
531
532         /**
533          * @return the serviceItemModelName
534          */
535         public String getServiceItemModelName() {
536                 return this.serviceItemModelName;
537         }
538
539         /**
540          * @param serviceItemModelName the serviceItemModelName to set
541          */
542         private void setServiceItemModelName(String serviceItemModelName) {
543                 this.serviceItemModelName = serviceItemModelName;
544         }
545
546         /**
547          * @return the serviceItemModelType
548          */
549         public String getServiceItemModelType() {
550                 return this.serviceItemModelType;
551         }
552
553         /**
554          * @param serviceItemModelType the serviceItemModelType to set
555          */
556         private void setServiceItemModelType(String serviceItemModelType) {
557                 this.serviceItemModelType = serviceItemModelType;
558         }
559
560         /**
561          * @return the serviceItemModelVersion
562          */
563         public String getServiceItemModelVersion() {
564                 return this.serviceItemModelVersion;
565         }
566
567         /**
568          * @param serviceItemModelVersion the serviceItemModelVersion to set
569          */
570         private void setServiceItemModelVersion(String serviceItemModelVersion) {
571                 this.serviceItemModelVersion = serviceItemModelVersion;
572         }
573
574         /**
575          * @return the serviceItemModelNameVersionId
576          */
577         public String getServiceItemModelNameVersionId() {
578                 return this.serviceItemModelNameVersionId;
579         }
580
581         /**
582          * @param serviceItemModelNameVersionId the serviceItemModelNameVersionId to set
583          */
584         private void setServiceItemModelNameVersionId(
585                         String serviceItemModelNameVersionId) {
586                 this.serviceItemModelNameVersionId = serviceItemModelNameVersionId;
587         }
588
589         /**
590          * @return the vfModuleItemVfModuleName
591          */
592         public String getVfModuleItemVfModuleName() {
593                 return this.vfModuleItemVfModuleName;
594         }
595
596         /**
597          * @param vfModuleItemVfModuleName the vfModuleItemVfModuleName to set
598          */
599         private void setVfModuleItemVfModuleName(String vfModuleItemVfModuleName) {
600                 this.vfModuleItemVfModuleName = vfModuleItemVfModuleName;
601         }
602
603         /**
604          * @return the vfModuleItemModelInvariantId
605          */
606         public String getVfModuleItemModelInvariantId() {
607                 return this.vfModuleItemModelInvariantId;
608         }
609
610         /**
611          * @param vfModuleItemModelInvariantId the vfModuleItemModelInvariantId to set
612          */
613         private void setVfModuleItemModelInvariantId(String vfModuleItemModelInvariantId) {
614                 this.vfModuleItemModelInvariantId = vfModuleItemModelInvariantId;
615         }
616
617         /**
618          * @return the vfModuleItemModelVersionId
619          */
620         public String getVfModuleItemModelVersionId() {
621                 return this.vfModuleItemModelVersionId;
622         }
623
624         /**
625          * @param vfModuleItemModelVersionId the vfModuleItemModelVersionId to set
626          */
627         private void setVfModuleItemModelVersionId(
628                         String vfModuleItemModelVersionId) {
629                 this.vfModuleItemModelVersionId = vfModuleItemModelVersionId;
630         }
631
632         /**
633          * @return the vfModuleItemModelName
634          */
635         public String getVfModuleItemModelName() {
636                 return this.vfModuleItemModelName;
637         }
638
639         /**
640          * @param vfModuleItemModelName the vfModuleItemModelName to set
641          */
642         private void setVfModuleItemModelName(String vfModuleItemModelName) {
643                 this.vfModuleItemModelName = vfModuleItemModelName;
644         }
645
646         /**
647          * @return the vfModuleItemModelNameVersionId
648          */
649         public String getVfModuleItemModelNameVersionId() {
650                 return this.vfModuleItemModelNameVersionId;
651         }
652
653         /**
654          * @param vfModuleItemModelNameVersionId the vfModuleItemModelNameVersionId to set
655          */
656         private void setVfModuleItemModelNameVersionId(
657                         String vfModuleItemModelNameVersionId) {
658                 this.vfModuleItemModelNameVersionId = vfModuleItemModelNameVersionId;
659         }
660
661         /**
662          * @return the tenantItemTenantId
663          */
664         public String getTenantItemTenantId() {
665                 return this.tenantItemTenantId;
666         }
667
668         /**
669          * @param tenantItemTenantId the tenantItemTenantId to set
670          */
671         private void setTenantItemTenantId(String tenantItemTenantId) {
672                 this.tenantItemTenantId = tenantItemTenantId;
673         }
674
675         /**
676          * @return the cloudRegionItemCloudRegionId
677          */
678         public String getCloudRegionItemCloudRegionId() {
679                 return this.cloudRegionItemCloudRegionId;
680         }
681
682         /**
683          * @param cloudRegionItemCloudRegionId the cloudRegionItemCloudRegionId to set
684          */
685         private void setCloudRegionItemCloudRegionId(
686                         String cloudRegionItemCloudRegionId) {
687                 this.cloudRegionItemCloudRegionId = cloudRegionItemCloudRegionId;
688         }
689
690 }