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