diff options
author | 2018-01-02 21:58:59 -0500 | |
---|---|---|
committer | 2018-01-04 21:10:36 +0000 | |
commit | 13b9505921e2cbbd4b155a78bfdaa5caa3375ec0 (patch) | |
tree | 7c661f5c3c8b7895cad1d4c3c90b9077ba74c1fd /appc-sequence-generator/appc-sequence-generator-bundle/src | |
parent | 9ebb5ddcb60345dea668049c73f5f2d9c3cdf731 (diff) |
Updated SDC listener and dependent bundles
Changes related to SDC adapter.Also includes
sequence generator changes and changes to
appc-dg-shared.
Issue-ID: APPC-355
Change-Id: Ib8a0b1d304199db6d2595291539b266885842d63
Signed-off-by: Ramya Balaji <rb111y@att.com>
Diffstat (limited to 'appc-sequence-generator/appc-sequence-generator-bundle/src')
36 files changed, 2297 insertions, 1222 deletions
diff --git a/appc-sequence-generator/appc-sequence-generator-bundle/src/main/java/org/onap/appc/seqgen/dgplugin/impl/SequenceGeneratorPluginImpl.java b/appc-sequence-generator/appc-sequence-generator-bundle/src/main/java/org/onap/appc/seqgen/dgplugin/impl/SequenceGeneratorPluginImpl.java index c0ea4134c..8e44bc3bd 100644 --- a/appc-sequence-generator/appc-sequence-generator-bundle/src/main/java/org/onap/appc/seqgen/dgplugin/impl/SequenceGeneratorPluginImpl.java +++ b/appc-sequence-generator/appc-sequence-generator-bundle/src/main/java/org/onap/appc/seqgen/dgplugin/impl/SequenceGeneratorPluginImpl.java @@ -27,8 +27,10 @@ import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; -import org.apache.commons.lang3.StringUtils; -import org.onap.appc.dg.objects.*; +import org.onap.appc.dg.flowbuilder.exception.InvalidDependencyModelException; +import org.onap.appc.dg.objects.InventoryModel; +import org.onap.appc.dg.objects.Node; +import org.onap.appc.dg.objects.VnfcDependencyModel; import org.onap.appc.domainmodel.Vnf; import org.onap.appc.domainmodel.Vnfc; import org.onap.appc.domainmodel.Vserver; @@ -43,7 +45,12 @@ import org.onap.appc.seqgen.objects.Transaction; import org.onap.ccsdk.sli.core.sli.SvcLogicContext; import java.io.IOException; -import java.util.*; +import java.util.Map; +import java.util.List; +import java.util.HashSet; +import java.util.Set; +import java.util.HashMap; +import java.util.LinkedList; public class SequenceGeneratorPluginImpl implements SequenceGeneratorPlugin { @@ -79,6 +86,9 @@ public class SequenceGeneratorPluginImpl implements SequenceGeneratorPlugin { sequenceGeneratorInput.setInventoryModel(inventoryModel); VnfcDependencyModel dependencyModel = buildDependencyModel(inputJson); + if(dependencyModel!=null){ + validateInventoryModelWithDependencyModel(dependencyModel,inventoryModel); + } sequenceGeneratorInput.setDependencyModel(dependencyModel); return sequenceGeneratorInput; @@ -92,13 +102,54 @@ public class SequenceGeneratorPluginImpl implements SequenceGeneratorPlugin { if (operation == null) { throw new APPCException("Invalid Action " + action); } + if(Constants.ActionLevel.findByString(sequenceGeneratorInput.getRequestInfo().getActionLevel().toUpperCase())==null){ + throw new APPCException("Invalid Action Level " + sequenceGeneratorInput.getRequestInfo().getActionLevel()); + } SequenceGenerator sequenceGenerator = SequenceGeneratorFactory.getInstance().createSequenceGenerator(operation); return sequenceGenerator.generateSequence(sequenceGeneratorInput); } + private void validateInventoryModelWithDependencyModel(VnfcDependencyModel dependencyModel, InventoryModel inventoryModel) throws APPCException { + Set<String> dependencyModelVnfcSet = new HashSet<>(); + Set<String> dependencyModelMandatoryVnfcSet = new HashSet<>(); + Set<String> inventoryModelVnfcsSet = new HashSet<>(); + + for (Node<Vnfc> node : dependencyModel.getDependencies()) { + dependencyModelVnfcSet.add(node.getChild().getVnfcType().toLowerCase()); + if (node.getChild().isMandatory()) { + dependencyModelMandatoryVnfcSet.add(node.getChild().getVnfcType().toLowerCase()); + } + } + + for (Vnfc vnfc : inventoryModel.getVnf().getVnfcs()) { + inventoryModelVnfcsSet.add(vnfc.getVnfcType().toLowerCase()); + } + + // if dependency model and inventory model contains same set of VNFCs, validation succeed and hence return + if (dependencyModelVnfcSet.equals(inventoryModelVnfcsSet)) { + return; + } + + if (inventoryModelVnfcsSet.size() >= dependencyModelVnfcSet.size()) { + Set<String> difference = new HashSet<>(inventoryModelVnfcsSet); + difference.removeAll(dependencyModelVnfcSet); + logger.error("Dependency model is missing following vnfc type(s): " + difference); + throw new APPCException("Dependency model is missing following vnfc type(s): " + difference); + } else { + Set<String> difference = new HashSet<>(dependencyModelMandatoryVnfcSet); + difference.removeAll(inventoryModelVnfcsSet); + if (difference.size() > 0) { + logger.error("Inventory model is missing following mandatory vnfc type(s): " + difference); + throw new APPCException("VMs missing for the mandatory VNFC : " + difference); + } + } + } + // Dependency model is an optional attribute and may contain null values private VnfcDependencyModel buildDependencyModel(String inputJson) throws IOException, APPCException { Set<Node<Vnfc>> dependency = new HashSet<>(); + Set<String> parentVnfcs=new HashSet<>(); + Set<String> allVnfcTypes=new HashSet<>(); ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(JsonParser.Feature.ALLOW_COMMENTS, true); JsonNode rootNode = objectMapper.readTree(inputJson); @@ -106,9 +157,13 @@ public class SequenceGeneratorPluginImpl implements SequenceGeneratorPlugin { if (vnfcs != null) { for (JsonNode vnfcNode : vnfcs) { String vnfcType = readVnfcType(vnfcNode); + allVnfcTypes.add(vnfcType); String mandatory = readMandatory(vnfcNode); String resilience = readResilience(vnfcNode); - Vnfc vnfc = new Vnfc(vnfcType, resilience, null, Boolean.parseBoolean(mandatory)); + Vnfc vnfc = new Vnfc(); + vnfc.setVnfcType(vnfcType); + vnfc.setResilienceType(resilience); + vnfc.setMandatory(Boolean.parseBoolean(mandatory)); Node<Vnfc> currentNode = getNode(dependency, vnfcType); if (currentNode == null) { currentNode = new Node<>(vnfc); @@ -120,11 +175,14 @@ public class SequenceGeneratorPluginImpl implements SequenceGeneratorPlugin { JsonNode parents = vnfcNode.get("parents"); for (JsonNode parent : parents) { String parentVnfcType = parent.asText(); + parentVnfcs.add(parentVnfcType); Node<Vnfc> parentNode = getNode(dependency, parentVnfcType); if (parentNode != null) { currentNode.addParent(parentNode.getChild()); } else { - Vnfc parentVnfc = new Vnfc(parentVnfcType, null, null, false); + Vnfc parentVnfc=new Vnfc(); + parentVnfc.setVnfcType(parentVnfcType); + parentVnfc.setMandatory(false); parentNode = new Node<>(parentVnfc); currentNode.addParent(parentVnfc); dependency.add(parentNode); @@ -132,6 +190,11 @@ public class SequenceGeneratorPluginImpl implements SequenceGeneratorPlugin { } } + for(String parent:parentVnfcs){ + if(!allVnfcTypes.contains(parent)){ + throw new APPCException("Dependency model missing vnfc type "+parent); + } + } return new VnfcDependencyModel(dependency); } return null; @@ -184,7 +247,6 @@ public class SequenceGeneratorPluginImpl implements SequenceGeneratorPlugin { private InventoryModel buildInventoryModel(String inputJson) throws IOException, APPCException { ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.configure(JsonParser.Feature.ALLOW_COMMENTS, true); JsonNode jsonNode = objectMapper.readTree(inputJson); JsonNode inventoryInfo = jsonNode.get("inventory-info"); if (inventoryInfo == null) { @@ -197,45 +259,40 @@ public class SequenceGeneratorPluginImpl implements SequenceGeneratorPlugin { String vnfId = vnfInfo.get("vnf-id").asText(); String vnfType = vnfInfo.get("vnf-type").asText(); - String vnfVersion = vnfInfo.get("vnf-version").asText(); - - Vnf vnf = new Vnf(vnfId, vnfType, vnfVersion); - - JsonNode vms = vnfInfo.get("vm"); - + Vnf vnf =new Vnf(); + vnf.setVnfId(vnfId); + vnf.setVnfType(vnfType); Map<Vnfc, List<Vserver>> vfcs = new HashMap<>(); + JsonNode vms = vnfInfo.get("vm"); + if(vms.size()<1){ + throw new APPCException("vm info not provided in the input"); + } for (JsonNode vm : vms) { if(vm.get("vserver-id")== null){ throw new APPCException("vserver-id not found "); } String vserverId = vm.get("vserver-id").asText(); - Vserver vserver = new Vserver(null, null, vserverId, null, null); - JsonNode vnfc = vm.get("vnfc"); - if (vnfc.get("vnfc-name") == null) { - throw new APPCException("vnfc-name not found for vserver " + vserverId); - } - String vnfcName = vnfc.get("vnfc-name").asText(); - if (vnfc.get("vnfc-type") == null) { - throw new APPCException("vnfc-type not found for vserver " + vserverId); - } - String vnfcType = vnfc.get("vnfc-type").asText(); - if (StringUtils.isEmpty(vnfcType)) { - throw new APPCException("vserver " + vserverId + " is not associated with any vnfc"); - } - Vnfc vfc = new Vnfc(vnfcType, null, vnfcName); - List<Vserver> vServers = vfcs.get(vfc); - if (vServers == null) { - vServers = new LinkedList<>(); - vfcs.put(vfc, vServers); + Vserver vserver = new Vserver(); + vserver.setId(vserverId); + if (vm.get("vnfc")!=null&& vm.get("vnfc").get("vnfc-name") != null && vm.get("vnfc").get("vnfc-type")!= null) { + Vnfc vfc = new Vnfc(); + vfc.setVnfcType(vm.get("vnfc").get("vnfc-type").asText()); + vfc.setVnfcName(vm.get("vnfc").get("vnfc-name").asText()); + vserver.setVnfc(vfc); + List<Vserver> vServers = vfcs.get(vfc); + if (vServers == null) { + vServers = new LinkedList<>(); + vfcs.put(vfc, vServers); + } + vServers.add(vserver); } - vServers.add(vserver); + vnf.addVserver(vserver); } for (Map.Entry<Vnfc, List<Vserver>> entry : vfcs.entrySet()) { Vnfc vnfc = entry.getKey(); List<Vserver> vServers = vfcs.get(vnfc); - vnfc.addVms(vServers); - vnf.addVnfc(vnfc); + vnfc.addVservers(vServers); } return new InventoryModel(vnf); diff --git a/appc-sequence-generator/appc-sequence-generator-bundle/src/main/java/org/onap/appc/seqgen/impl/RestartSequenceGenerator.java b/appc-sequence-generator/appc-sequence-generator-bundle/src/main/java/org/onap/appc/seqgen/impl/RestartSequenceGenerator.java new file mode 100644 index 000000000..49fad50de --- /dev/null +++ b/appc-sequence-generator/appc-sequence-generator-bundle/src/main/java/org/onap/appc/seqgen/impl/RestartSequenceGenerator.java @@ -0,0 +1,108 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.onap.appc.seqgen.impl; + +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; +import org.onap.appc.domainmodel.Vserver; +import org.onap.appc.exceptions.APPCException; +import org.onap.appc.seqgen.SequenceGenerator; +import org.onap.appc.seqgen.objects.ActionIdentifier; +import org.onap.appc.seqgen.objects.Constants; +import org.onap.appc.seqgen.objects.Response; +import org.onap.appc.seqgen.objects.SequenceGeneratorInput; +import org.onap.appc.seqgen.objects.Transaction;; + +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +public class RestartSequenceGenerator implements SequenceGenerator{ + private static final EELFLogger logger = EELFManager.getInstance().getLogger(RestartSequenceGenerator.class); + + @Override + public List<Transaction> generateSequence(SequenceGeneratorInput input) throws APPCException { + logger.info("Generating sequence without dependency model"); + return generateSequenceWithOutDependency(input); + } + + private List<Transaction> generateSequenceWithOutDependency(SequenceGeneratorInput input) { + List<Transaction> transactionList = new LinkedList<>(); + Integer transactionId = 1; + List<Vserver> vservers = input.getInventoryModel().getVnf().getVservers(); + List<Integer> transactionIds = new LinkedList<>(); + for (Vserver vm : vservers) { + Transaction transactionStop = new Transaction(); + transactionStop.setTransactionId(transactionId); + transactionIds.add(transactionId++); + transactionStop.setAction(Constants.Action.STOP.getActionType()); + transactionStop.setActionLevel(Constants.ActionLevel.VM.getAction()); + ActionIdentifier actionIdentifier = new ActionIdentifier(); + actionIdentifier.setvServerId(vm.getId()); + transactionStop.setActionIdentifier(actionIdentifier); + transactionStop.setPayload(input.getRequestInfo().getPayload()); + if (vservers.size()>1) { + Response failureResponse = new Response(); + failureResponse.setResponseMessage(Constants.ResponseMessage.FAILURE.getResponse()); + Map<String,String> failureAction = new HashMap<>(); + if(!checkLastVM(vservers,vm.getId())) + { + failureAction.put(Constants.ResponseAction.JUMP.getAction(), String.valueOf(transactionId+1)); + failureResponse.setResponseAction(failureAction); + transactionStop.addResponse(failureResponse); + } + } + transactionList.add(transactionStop); + Transaction transactionStart = new Transaction(); + transactionStart.setTransactionId(transactionId); + transactionIds.add(transactionId++); + transactionStart.setAction(Constants.Action.START.getActionType()); + transactionStart.setActionLevel(Constants.ActionLevel.VM.getAction()); + ActionIdentifier actionIdentifierStart = new ActionIdentifier(); + actionIdentifierStart.setvServerId(vm.getId()); + transactionStart.setActionIdentifier(actionIdentifierStart); + transactionStart.setPayload(input.getRequestInfo().getPayload()); + if (vservers.size()>1) { + Response failureResponse = new Response(); + failureResponse.setResponseMessage(Constants.ResponseMessage.FAILURE.getResponse()); + Map<String,String> failureAction = new HashMap<>(); + if(!checkLastVM(vservers,vm.getId())) + { + failureAction.put(Constants.ResponseAction.JUMP.getAction(),transactionId.toString()); + failureResponse.setResponseAction(failureAction); + transactionStart.addResponse(failureResponse); + } + } + transactionList.add(transactionStart); + } + return transactionList; + } + + private boolean checkLastVM(List<Vserver> vservers, String vmId){ + Vserver vm= vservers.get(vservers.size()-1); + return vm.getId().equals(vmId); + } +} diff --git a/appc-sequence-generator/appc-sequence-generator-bundle/src/main/java/org/onap/appc/seqgen/impl/SequenceGeneratorFactory.java b/appc-sequence-generator/appc-sequence-generator-bundle/src/main/java/org/onap/appc/seqgen/impl/SequenceGeneratorFactory.java index 3c6a11962..15d88c9cf 100644 --- a/appc-sequence-generator/appc-sequence-generator-bundle/src/main/java/org/onap/appc/seqgen/impl/SequenceGeneratorFactory.java +++ b/appc-sequence-generator/appc-sequence-generator-bundle/src/main/java/org/onap/appc/seqgen/impl/SequenceGeneratorFactory.java @@ -47,7 +47,9 @@ public class SequenceGeneratorFactory { return new StartSequenceGenerator(); case Stop: return new StopSequenceGenerator(); - default: + case Restart: + return new RestartSequenceGenerator(); + default: throw new APPCException("Sequence Generator does not support operation " + operation.name()); } } diff --git a/appc-sequence-generator/appc-sequence-generator-bundle/src/main/java/org/onap/appc/seqgen/impl/StartSequenceGenerator.java b/appc-sequence-generator/appc-sequence-generator-bundle/src/main/java/org/onap/appc/seqgen/impl/StartSequenceGenerator.java index dcffaafd8..9c9ba8dd8 100644 --- a/appc-sequence-generator/appc-sequence-generator-bundle/src/main/java/org/onap/appc/seqgen/impl/StartSequenceGenerator.java +++ b/appc-sequence-generator/appc-sequence-generator-bundle/src/main/java/org/onap/appc/seqgen/impl/StartSequenceGenerator.java @@ -24,6 +24,7 @@ import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; import org.apache.commons.lang3.StringUtils; import org.onap.appc.dg.flowbuilder.FlowBuilder; +import org.onap.appc.dg.flowbuilder.exception.InvalidDependencyModelException; import org.onap.appc.dg.flowbuilder.impl.FlowBuilderFactory; import org.onap.appc.dg.objects.FlowStrategies; import org.onap.appc.dg.objects.InventoryModel; @@ -33,11 +34,30 @@ import org.onap.appc.domainmodel.Vnfc; import org.onap.appc.domainmodel.Vserver; import org.onap.appc.exceptions.APPCException; import org.onap.appc.seqgen.SequenceGenerator; -import org.onap.appc.seqgen.objects.*; +import org.onap.appc.seqgen.objects.ActionIdentifier; +import org.onap.appc.seqgen.objects.Constants; +import org.onap.appc.seqgen.objects.PreCheckOption; +import org.onap.appc.seqgen.objects.Response; +import org.onap.appc.seqgen.objects.SequenceGeneratorInput; +import org.onap.appc.seqgen.objects.Transaction; -import java.util.*; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; -import static org.onap.appc.seqgen.objects.Constants.*; +import static org.onap.appc.seqgen.objects.Constants.Action; +import static org.onap.appc.seqgen.objects.Constants.ActionLevel; +import static org.onap.appc.seqgen.objects.Constants.ResponseAction; +import static org.onap.appc.seqgen.objects.Constants.ResponseMessage; +import static org.onap.appc.seqgen.objects.Constants.PreCheckOperator; +import static org.onap.appc.seqgen.objects.Constants.Capabilties; +import static org.onap.appc.seqgen.objects.Constants.CapabilityLevel; +import static org.onap.appc.seqgen.objects.Constants.RETRY_COUNT_VALUE; +import static org.onap.appc.seqgen.objects.Constants.WAIT_TIME; +import static org.onap.appc.seqgen.objects.Constants.RETRY_COUNT; +import static org.onap.appc.seqgen.objects.Constants.WAIT_TIME_VALUE;; public class StartSequenceGenerator implements SequenceGenerator { @@ -47,27 +67,27 @@ public class StartSequenceGenerator implements SequenceGenerator { List<Transaction> transactionList = new LinkedList<>(); Integer transactionId = 1; - List<Vnfc> invVnfcList = input.getInventoryModel().getVnf().getVnfcs(); - boolean singleTransaction=checkSingleTransaction(invVnfcList); - for (Vnfc vnfc : invVnfcList) { - List<Vserver> vms = vnfc.getVserverList(); - List<Integer> transactionIds = new LinkedList<>(); - for (Vserver vm : vms) { - Transaction transaction = new Transaction(); - transaction.setTransactionId(transactionId); - transactionIds.add(transactionId++); - transaction.setAction(Action.START.getActionType()); - transaction.setActionLevel(ActionLevel.VM.getAction()); - ActionIdentifier actionIdentifier = new ActionIdentifier(); - actionIdentifier.setvServerId(vm.getId()); - transaction.setActionIdentifier(actionIdentifier); - transaction.setPayload(input.getRequestInfo().getPayload()); - if(!singleTransaction){ - updateResponse(transaction); - } - - transactionList.add(transaction); + List<Vserver> vservers = input.getInventoryModel().getVnf().getVservers(); + List<Integer> transactionIds = new LinkedList<>(); + for (Vserver vm : vservers) { + Transaction transaction = new Transaction(); + transaction.setTransactionId(transactionId); + transactionIds.add(transactionId++); + transaction.setAction(Action.START.getActionType()); + transaction.setActionLevel(ActionLevel.VM.getAction()); + ActionIdentifier actionIdentifier = new ActionIdentifier(); + actionIdentifier.setvServerId(vm.getId()); + transaction.setActionIdentifier(actionIdentifier); + transaction.setPayload(input.getRequestInfo().getPayload()); + if(vservers.size()>1){ + Response ignoreResponse = new Response(); + ignoreResponse.setResponseMessage(ResponseMessage.FAILURE.getResponse()); + Map<String, String> ignoreAction = new HashMap<>(); + ignoreAction.put(ResponseAction.IGNORE.getAction(), Boolean.TRUE.toString()); + ignoreResponse.setResponseAction(ignoreAction); + transaction.addResponse(ignoreResponse); } + transactionList.add(transaction); } return transactionList; } @@ -112,7 +132,12 @@ public class StartSequenceGenerator implements SequenceGenerator { actionIdentifier.setvServerId(vm.getId()); transaction.setActionIdentifier(actionIdentifier); transaction.setPayload(input.getRequestInfo().getPayload()); - updateResponse(transaction); + Response ignoreResponse = new Response(); + ignoreResponse.setResponseMessage(ResponseMessage.FAILURE.getResponse()); + Map<String, String> ignoreAction = new HashMap<>(); + ignoreAction.put(ResponseAction.IGNORE.getAction(), Boolean.TRUE.toString()); + ignoreResponse.setResponseAction(ignoreAction); + transaction.addResponse(ignoreResponse); transactionList.add(transaction); } boolean startApplicationSupported = readApplicationStartCapability(input); @@ -126,10 +151,7 @@ public class StartSequenceGenerator implements SequenceGenerator { startAppTransaction.setActionIdentifier(startActionIdentifier); startAppTransaction.setPayload(input.getRequestInfo().getPayload()); - List<PreCheckOption> preCheckOptions = new LinkedList<>(); - for (Integer vmTransactionId : transactionIds) { - setPreCheckOptions(preCheckOptions, vmTransactionId); - } + List<PreCheckOption> preCheckOptions = buildPreCheckOptions(transactionIds); startAppTransaction.setPreCheckOperator(PreCheckOperator.ANY.getOperator()); startAppTransaction.setPrecheckOptions(preCheckOptions); transactionList.add(startAppTransaction); @@ -174,32 +196,42 @@ public class StartSequenceGenerator implements SequenceGenerator { return transactionList; } - private void setPreCheckOptions(List<PreCheckOption> preCheckOptions, Integer vmTransactionId) { - PreCheckOption option = new PreCheckOption(); - option.setPreTransactionId(vmTransactionId); - option.setParamName("status"); - option.setParamValue("success"); - preCheckOptions.add(option); + private List<PreCheckOption> buildPreCheckOptions(List<Integer> transactionIds) { + List<PreCheckOption> preCheckOptions = new LinkedList<>(); + for (Integer vmTransactionId : transactionIds) { + PreCheckOption option = new PreCheckOption(); + option.setPreTransactionId(vmTransactionId); + option.setParamName("status"); + option.setParamValue("success"); + preCheckOptions.add(option); + } + return preCheckOptions; } @Override public List<Transaction> generateSequence(SequenceGeneratorInput input) throws APPCException { - if(input.getRequestInfo().getActionLevel().equals(ActionLevel.VM.getAction())||input.getRequestInfo().getActionLevel().equals(ActionLevel.VNFC.getAction())|| - input.getRequestInfo().getActionLevel().equals(ActionLevel.VNF.getAction())||input.getRequestInfo().getActionLevel().equals(ActionLevel.VF_MODULE.getAction())) { if (input.getRequestInfo().getActionLevel().equals(ActionLevel.VNF.getAction()) && input.getDependencyModel() != null) { - FlowStrategies flowStrategy = readStartFlowStrategy(input); - VnfcFlowModel flowModel = buildFlowModel(input.getInventoryModel() - , input.getDependencyModel(), flowStrategy); - logger.debug("Flow Model " + flowModel); - return generateSequenceWithDependencyModel(flowModel, input); + if(isVnfcPresent(input)) { + FlowStrategies flowStrategy = readFlowStrategy(input); + VnfcFlowModel flowModel = null; + try { + flowModel = buildFlowModel(input.getInventoryModel() + , input.getDependencyModel(), flowStrategy); + } catch (InvalidDependencyModelException invalidDependencyM |