a014c7a80ee15be88785678c7bf03944e7522d8e
[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.AAINQInstanceFilters;
31 import org.onap.policy.aai.AAINQInventoryResponseItem;
32 import org.onap.policy.aai.AAIManager;
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 eventRequestID
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                         // 
206                         extractSOFieldsFromNamedQuery(aainqResponseWrapper, onset);
207                         return aainqResponseWrapper;
208                 }
209         }
210
211         /**
212          * Extract the required fields from the named query response
213          * @param namedQueryResponseWrapper
214          * @param onset
215          */
216         private void extractSOFieldsFromNamedQuery(AAINQResponseWrapper namedQueryResponseWrapper, VirtualControlLoopEvent onset) {
217                 
218                 try {
219                         // vnfItem
220                         setVnfItemVnfId(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfID);
221                         setVnfItemVnfType(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfType);
222                         setVnfItemVnfType(vnfItemVnfType.substring(vnfItemVnfType.lastIndexOf("/")+1));
223                         setVnfItemModelInvariantId(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.modelInvariantId);
224                         setVnfItemModelVersionId(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.modelVersionId);
225                         setVnfItemModelName(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue);
226                         setVnfItemModelVersion(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(2).propertyValue);
227                         setVnfItemModelNameVersionId(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue);                     
228
229                         // serviceItem
230                         setServiceItemServiceInstanceId(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.serviceInstanceID);
231                         setServiceItemModelInvariantId(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.modelInvariantId);
232                         setServiceItemModelName(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue);
233                         setServiceItemModelType(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(1).propertyValue);
234                         setServiceItemModelVersion(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.modelVersionId);
235                         setServiceItemModelNameVersionId(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue);
236                         
237                         // Find the index for base vf module and non-base vf module
238                         int baseIndex = -1;
239                         int nonBaseIndex = -1;
240                         List<AAINQInventoryResponseItem> inventoryItems = namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems;
241                         for (AAINQInventoryResponseItem m : inventoryItems) {
242                                 if (m.vfModule != null && m.vfModule.isBaseVfModule == true) {
243                                         baseIndex = inventoryItems.indexOf(m);
244                                 } else if (m.vfModule != null && m.vfModule.isBaseVfModule == false && m.vfModule.orchestrationStatus == null) {
245                                         nonBaseIndex = inventoryItems.indexOf(m);
246                                 }
247                                 //
248                                 if (baseIndex != -1 && nonBaseIndex != -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 || nonBaseIndex == -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(nonBaseIndex).vfModule.modelInvariantId);
265                         setVfModuleItemModelVersionId(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).vfModule.modelVersionId);
266                         setVfModuleItemModelName(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).extraProperties.extraProperty.get(0).propertyValue);
267                         setVfModuleItemModelNameVersionId(namedQueryResponseWrapper.aainqresponse.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).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.error(e.getMessage(), e);
277                         VirtualControlLoopNotification notification = new VirtualControlLoopNotification(onset);
278                         notification.notification = ControlLoopNotificationType.REJECTED;
279                         notification.message = "Exception occurred " + e.getMessage();
280                         notification.policyName = onset.policyName;
281                         notification.policyScope = onset.policyScope;
282                         notification.policyVersion = onset.policyVersion;
283                         //
284                         try {
285                                 logger.debug(Serialization.gsonPretty.toJson(notification));
286                         } catch (Exception e1) {
287                                 logger.error("Can't deliver notification: " + notification);
288                                 logger.error(e1.getMessage(), e1);
289                         }
290                         //
291                         notification.notification = ControlLoopNotificationType.FINAL_FAILURE;
292                         notification.message = "Invalid named-query response from AAI";
293             //
294             try {
295                 logger.debug(Serialization.gsonPretty.toJson(notification));
296             } catch (Exception e1) {
297                 logger.error("Can't deliver notification: " + notification);
298                 logger.error(e1.getMessage(), e1);
299             }   
300                         // Retract everything
301                         return;
302                 }
303
304                 // Extracted fields should not be null
305                 if (checkExtractedFields() == false) {
306                         System.err.println("some fields are missing from AAI response.");
307                         return;
308                 }
309         }
310         
311         /**
312          * Checks whether extracted fields from AAI Named Query are null or not
313          * @return false if some extracted fields are missing, true otherwise
314          */
315         private boolean checkExtractedFields() {
316                 
317                 if ((getVnfItemVnfId() == null) || (getVnfItemVnfType() == null) ||
318                             (getVnfItemModelInvariantId() == null) || (getVnfItemModelName() == null) ||
319                             (getVnfItemModelVersion() == null) || (getVnfItemModelNameVersionId() == null) ||
320                             (getServiceItemServiceInstanceId() == null) || (getServiceItemModelName() == null) ||
321                             (getServiceItemModelType() == null) || (getServiceItemModelVersion() == null) ||
322                             (getServiceItemModelNameVersionId() == null) || (getVfModuleItemVfModuleName() == null) ||
323                             (getVfModuleItemModelInvariantId() == null) || (getVfModuleItemModelVersionId() == null) ||
324                             (getVfModuleItemModelName() == null) || (getVfModuleItemModelNameVersionId() == null) ||
325                             (getTenantItemTenantId() == null) || (getCloudRegionItemCloudRegionId() == null)) {
326                                 return false;
327                         }
328                 return true;
329         }
330         
331         /**
332          * Construct SO Request
333          * 
334          * @param onset
335          * @param operation
336          * @param policy
337          * @return SORequest
338          */
339         public SORequest constructRequest(VirtualControlLoopEvent onset, ControlLoopOperation operation, Policy policy) {
340
341                 if (policy.getActor().equals("SO") && policy.getRecipe().equals("VF Module Create")) {
342                         // perform named query request and handle response
343                         AaiNamedQueryRequest(onset);
344                 } else {
345                         // for future extension
346                         return null;
347                 };
348           
349                 // check if the fields extracted from named query response are 
350                 // not null so we can proceed with SO request
351                 if (checkExtractedFields() == false) {
352                         
353                         System.err.println("AAI response is missing some required fields. Cannot proceed with SO Request construction.");
354                         return null;
355                         
356                 } else {
357
358                         // Construct SO Request
359                         SORequest request = new SORequest();
360                         request.requestId = onset.requestID;
361                         request.requestDetails = new SORequestDetails();
362                         request.requestDetails.modelInfo = new SOModelInfo();
363                         request.requestDetails.cloudConfiguration = new SOCloudConfiguration();
364                         request.requestDetails.requestInfo = new SORequestInfo();
365                         request.requestDetails.requestParameters = new SORequestParameters();
366                         request.requestDetails.requestParameters.userParams = null;
367                         //
368                         // cloudConfiguration
369                         //
370                         request.requestDetails.cloudConfiguration.lcpCloudRegionId = getCloudRegionItemCloudRegionId();
371                         request.requestDetails.cloudConfiguration.tenantId = getTenantItemTenantId();
372                         //
373                         // modelInfo
374                         //
375                         request.requestDetails.modelInfo.modelType = "vfModule";
376                         request.requestDetails.modelInfo.modelInvariantId = getVfModuleItemModelInvariantId();
377                         request.requestDetails.modelInfo.modelNameVersionId = getVfModuleItemModelNameVersionId();
378                         request.requestDetails.modelInfo.modelName = getVfModuleItemModelName();
379                         request.requestDetails.modelInfo.modelVersion = getVfModuleItemModelVersionId();
380                         //
381                         // requestInfo
382                         //
383                         request.requestDetails.requestInfo.instanceName = getVfModuleItemVfModuleName();
384                         request.requestDetails.requestInfo.source = "POLICY";
385                         request.requestDetails.requestInfo.suppressRollback = false;
386                         //
387                         // relatedInstanceList
388                         //
389                         SORelatedInstanceListElement relatedInstanceListElement1 = new SORelatedInstanceListElement();
390                         SORelatedInstanceListElement relatedInstanceListElement2 = new SORelatedInstanceListElement();
391                         relatedInstanceListElement1.relatedInstance = new SORelatedInstance();
392                         relatedInstanceListElement2.relatedInstance = new SORelatedInstance();
393                         //
394                         relatedInstanceListElement1.relatedInstance.instanceId = getServiceItemServiceInstanceId();
395                         relatedInstanceListElement1.relatedInstance.modelInfo = new SOModelInfo();
396                         relatedInstanceListElement1.relatedInstance.modelInfo.modelType = "service";
397                         relatedInstanceListElement1.relatedInstance.modelInfo.modelInvariantId = getServiceItemModelInvariantId();
398                         relatedInstanceListElement1.relatedInstance.modelInfo.modelNameVersionId = getServiceItemModelNameVersionId();
399                         relatedInstanceListElement1.relatedInstance.modelInfo.modelName = getServiceItemModelName();
400                         relatedInstanceListElement1.relatedInstance.modelInfo.modelVersion = getServiceItemModelVersion();
401                         //
402                         relatedInstanceListElement2.relatedInstance.instanceId = getVnfItemVnfId();
403                         relatedInstanceListElement2.relatedInstance.modelInfo = new SOModelInfo();
404                         relatedInstanceListElement2.relatedInstance.modelInfo.modelType = "vnf";
405                         relatedInstanceListElement2.relatedInstance.modelInfo.modelInvariantId = getVnfItemModelInvariantId();
406                         relatedInstanceListElement2.relatedInstance.modelInfo.modelNameVersionId = getVnfItemModelNameVersionId();
407                         relatedInstanceListElement2.relatedInstance.modelInfo.modelName = getVnfItemModelName();
408                         relatedInstanceListElement2.relatedInstance.modelInfo.modelVersion = getVnfItemModelVersion();
409                         relatedInstanceListElement2.relatedInstance.modelInfo.modelCustomizationName = getVnfItemVnfType();
410                         //      
411                         request.requestDetails.relatedInstanceList.add(relatedInstanceListElement1);
412                         request.requestDetails.relatedInstanceList.add(relatedInstanceListElement2);
413                         //
414                         // print SO request for debug
415                         //
416                         logger.debug("SO request sent:");
417                         logger.debug(Serialization.gsonPretty.toJson(request));
418         
419                         return request;
420                 }
421         }
422         
423         /**
424          * This method is needed to get the serviceInstanceId and vnfInstanceId which is used
425          * in the asyncSORestCall 
426          * 
427          * @param wm
428          * @param request
429          */
430         public static void sendRequest(WorkingMemory wm, Object request) {
431                 SOManager Mm = new SOManager();
432                 Mm.asyncSORestCall(wm, getServiceItemServiceInstanceId(), getVnfItemVnfId(), (SORequest)request);
433         }
434                 
435         /**
436          * @return the vnfItemVnfId
437          */
438         public static String getVnfItemVnfId() {
439                 return vnfItemVnfId;
440         }
441
442         /**
443          * @param vnfItemVnfId the vnfItemVnfId to set
444          */
445         private static void setVnfItemVnfId(String vnfItemVnfId) {
446                 SOActorServiceProvider.vnfItemVnfId = vnfItemVnfId;
447         }
448
449         /**
450          * @return the vnfItemVnfType
451          */
452         public String getVnfItemVnfType() {
453                 return this.vnfItemVnfType;
454         }
455
456         /**
457          * @param vnfItemVnfType the vnfItemVnfType to set
458          */
459         private void setVnfItemVnfType(String vnfItemVnfType) {
460                 this.vnfItemVnfType = vnfItemVnfType;
461         }
462
463         /**
464          * @return the vnfItemModelInvariantId
465          */
466         public String getVnfItemModelInvariantId() {
467                 return this.vnfItemModelInvariantId;
468         }
469
470         /**
471          * @param vnfItemModelInvariantId the vnfItemModelInvariantId to set
472          */
473         private void setVnfItemModelInvariantId(String vnfItemModelInvariantId) {
474                 this.vnfItemModelInvariantId = vnfItemModelInvariantId;
475         }
476
477         /**
478          * @return the vnfItemModelVersionId
479          */
480         public String getVnfItemModelVersionId() {
481                 return this.vnfItemModelVersionId;
482         }
483
484         /**
485          * @param vnfItemModelVersionId the vnfItemModelVersionId to set
486          */
487         private void setVnfItemModelVersionId(String vnfItemModelVersionId) {
488                 this.vnfItemModelVersionId = vnfItemModelVersionId;
489         }
490
491         /**
492          * @return the vnfItemModelName
493          */
494         public String getVnfItemModelName() {
495                 return this.vnfItemModelName;
496         }
497
498         /**
499          * @param vnfItemModelName the vnfItemModelName to set
500          */
501         private void setVnfItemModelName(String vnfItemModelName) {
502                 this.vnfItemModelName = vnfItemModelName;
503         }
504
505         /**
506          * @return the vnfItemModelVersion
507          */
508         public String getVnfItemModelVersion() {
509                 return this.vnfItemModelVersion;
510         }
511
512         /**
513          * @param vnfItemModelVersion the vnfItemModelVersion to set
514          */
515         private void setVnfItemModelVersion(String vnfItemModelVersion) {
516                 this.vnfItemModelVersion = vnfItemModelVersion;
517         }
518
519         /**
520          * @return the vnfItemModelNameVersionId
521          */
522         public String getVnfItemModelNameVersionId() {
523                 return this.vnfItemModelNameVersionId;
524         }
525
526         /**
527          * @param vnfItemModelNameVersionId the vnfItemModelNameVersionId to set
528          */
529         private void setVnfItemModelNameVersionId(String vnfItemModelNameVersionId) {
530                 this.vnfItemModelNameVersionId = vnfItemModelNameVersionId;
531         }
532
533         /**
534          * @return the serviceItemServiceInstanceId
535          */
536         public static String getServiceItemServiceInstanceId() {
537                 return serviceItemServiceInstanceId;
538         }
539
540         /**
541          * @param serviceItemServiceInstanceId the serviceItemServiceInstanceId to set
542          */
543         private static void setServiceItemServiceInstanceId(
544                         String serviceItemServiceInstanceId) {
545                 SOActorServiceProvider.serviceItemServiceInstanceId = serviceItemServiceInstanceId;
546         }
547
548         /**
549          * @return the serviceItemModelInvariantId
550          */
551         public String getServiceItemModelInvariantId() {
552                 return this.serviceItemModelInvariantId;
553         }
554
555         /**
556          * @param serviceItemModeInvariantlId the serviceItemModelInvariantId to set
557          */
558         private void setServiceItemModelInvariantId(String serviceItemModelInvariantId) {
559                 this.serviceItemModelInvariantId = serviceItemModelInvariantId;
560         }
561
562         /**
563          * @return the serviceItemModelName
564          */
565         public String getServiceItemModelName() {
566                 return this.serviceItemModelName;
567         }
568
569         /**
570          * @param serviceItemModelName the serviceItemModelName to set
571          */
572         private void setServiceItemModelName(String serviceItemModelName) {
573                 this.serviceItemModelName = serviceItemModelName;
574         }
575
576         /**
577          * @return the serviceItemModelType
578          */
579         public String getServiceItemModelType() {
580                 return this.serviceItemModelType;
581         }
582
583         /**
584          * @param serviceItemModelType the serviceItemModelType to set
585          */
586         private void setServiceItemModelType(String serviceItemModelType) {
587                 this.serviceItemModelType = serviceItemModelType;
588         }
589
590         /**
591          * @return the serviceItemModelVersion
592          */
593         public String getServiceItemModelVersion() {
594                 return this.serviceItemModelVersion;
595         }
596
597         /**
598          * @param serviceItemModelVersion the serviceItemModelVersion to set
599          */
600         private void setServiceItemModelVersion(String serviceItemModelVersion) {
601                 this.serviceItemModelVersion = serviceItemModelVersion;
602         }
603
604         /**
605          * @return the serviceItemModelNameVersionId
606          */
607         public String getServiceItemModelNameVersionId() {
608                 return this.serviceItemModelNameVersionId;
609         }
610
611         /**
612          * @param serviceItemModelNameVersionId the serviceItemModelNameVersionId to set
613          */
614         private void setServiceItemModelNameVersionId(
615                         String serviceItemModelNameVersionId) {
616                 this.serviceItemModelNameVersionId = serviceItemModelNameVersionId;
617         }
618
619         /**
620          * @return the vfModuleItemVfModuleName
621          */
622         public String getVfModuleItemVfModuleName() {
623                 return this.vfModuleItemVfModuleName;
624         }
625
626         /**
627          * @param vfModuleItemVfModuleName the vfModuleItemVfModuleName to set
628          */
629         private void setVfModuleItemVfModuleName(String vfModuleItemVfModuleName) {
630                 this.vfModuleItemVfModuleName = vfModuleItemVfModuleName;
631         }
632
633         /**
634          * @return the vfModuleItemModelInvariantId
635          */
636         public String getVfModuleItemModelInvariantId() {
637                 return this.vfModuleItemModelInvariantId;
638         }
639
640         /**
641          * @param vfModuleItemModelInvariantId the vfModuleItemModelInvariantId to set
642          */
643         private void setVfModuleItemModelInvariantId(String vfModuleItemModelInvariantId) {
644                 this.vfModuleItemModelInvariantId = vfModuleItemModelInvariantId;
645         }
646
647         /**
648          * @return the vfModuleItemModelVersionId
649          */
650         public String getVfModuleItemModelVersionId() {
651                 return this.vfModuleItemModelVersionId;
652         }
653
654         /**
655          * @param vfModuleItemModelVersionId the vfModuleItemModelVersionId to set
656          */
657         private void setVfModuleItemModelVersionId(
658                         String vfModuleItemModelVersionId) {
659                 this.vfModuleItemModelVersionId = vfModuleItemModelVersionId;
660         }
661
662         /**
663          * @return the vfModuleItemModelName
664          */
665         public String getVfModuleItemModelName() {
666                 return this.vfModuleItemModelName;
667         }
668
669         /**
670          * @param vfModuleItemModelName the vfModuleItemModelName to set
671          */
672         private void setVfModuleItemModelName(String vfModuleItemModelName) {
673                 this.vfModuleItemModelName = vfModuleItemModelName;
674         }
675
676         /**
677          * @return the vfModuleItemModelNameVersionId
678          */
679         public String getVfModuleItemModelNameVersionId() {
680                 return this.vfModuleItemModelNameVersionId;
681         }
682
683         /**
684          * @param vfModuleItemModelNameVersionId the vfModuleItemModelNameVersionId to set
685          */
686         private void setVfModuleItemModelNameVersionId(
687                         String vfModuleItemModelNameVersionId) {
688                 this.vfModuleItemModelNameVersionId = vfModuleItemModelNameVersionId;
689         }
690
691         /**
692          * @return the tenantItemTenantId
693          */
694         public String getTenantItemTenantId() {
695                 return this.tenantItemTenantId;
696         }
697
698         /**
699          * @param tenantItemTenantId the tenantItemTenantId to set
700          */
701         private void setTenantItemTenantId(String tenantItemTenantId) {
702                 this.tenantItemTenantId = tenantItemTenantId;
703         }
704
705         /**
706          * @return the cloudRegionItemCloudRegionId
707          */
708         public String getCloudRegionItemCloudRegionId() {
709                 return this.cloudRegionItemCloudRegionId;
710         }
711
712         /**
713          * @param cloudRegionItemCloudRegionId the cloudRegionItemCloudRegionId to set
714          */
715         private void setCloudRegionItemCloudRegionId(
716                         String cloudRegionItemCloudRegionId) {
717                 this.cloudRegionItemCloudRegionId = cloudRegionItemCloudRegionId;
718         }
719
720 }