Updated SDC listener and dependent bundles
[appc.git] / appc-sequence-generator / appc-sequence-generator-bundle / src / main / java / org / onap / appc / seqgen / impl / RestartSequenceGenerator.java
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 (file)
index 0000000..49fad50
--- /dev/null
@@ -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);
+    }
+}