2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Copyright (C) 2017 Amdocs
8 * ================================================================================
9 * Modifications Copyright (C) 2019 Ericsson
10 * =============================================================================
11 * Licensed under the Apache License, Version 2.0 (the "License");
12 * you may not use this file except in compliance with the License.
13 * You may obtain a copy of the License at
15 * http://www.apache.org/licenses/LICENSE-2.0
17 * Unless required by applicable law or agreed to in writing, software
18 * distributed under the License is distributed on an "AS IS" BASIS,
19 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20 * See the License for the specific language governing permissions and
21 * limitations under the License.
23 * ============LICENSE_END=========================================================
26 package org.onap.appc.seqgen.impl;
28 import com.att.eelf.configuration.EELFLogger;
29 import com.att.eelf.configuration.EELFManager;
30 import org.onap.appc.domainmodel.Vserver;
31 import org.onap.appc.seqgen.SequenceGenerator;
32 import org.onap.appc.seqgen.objects.ActionIdentifier;
33 import org.onap.appc.seqgen.objects.Constants;
34 import org.onap.appc.seqgen.objects.Response;
35 import org.onap.appc.seqgen.objects.SequenceGeneratorInput;
36 import org.onap.appc.seqgen.objects.Transaction;
38 import java.util.HashMap;
39 import java.util.LinkedList;
40 import java.util.List;
43 public class RestartSequenceGenerator implements SequenceGenerator{
44 private static final EELFLogger logger = EELFManager.getInstance().getLogger(RestartSequenceGenerator.class);
47 public List<Transaction> generateSequence(SequenceGeneratorInput input) throws Exception {
48 logger.info("Generating sequence without dependency model");
49 return generateSequenceWithOutDependency(input);
52 private List<Transaction> generateSequenceWithOutDependency(SequenceGeneratorInput input) throws Exception{
53 String payload = null;
54 List<Transaction> transactionList = new LinkedList<>();
55 Integer transactionId = 1;
56 List<Vserver> vservers = input.getInventoryModel().getVnf().getVservers();
57 List<Integer> transactionIds = new LinkedList<>();
58 PayloadGenerator payloadGenerator = new PayloadGenerator();
59 for (Vserver vm : vservers) {
60 Transaction transactionStop = new Transaction();
61 transactionStop.setTransactionId(transactionId);
62 transactionIds.add(transactionId++);
63 transactionStop.setAction(Constants.Action.STOP.getActionType());
64 transactionStop.setActionLevel(Constants.ActionLevel.VM.getAction());
65 ActionIdentifier actionIdentifier = new ActionIdentifier();
66 actionIdentifier.setvServerId(vm.getId());
67 transactionStop.setActionIdentifier(actionIdentifier);
68 String vmId = vm.getId();
69 String url = vm.getUrl();
70 payload = payloadGenerator.getPayload(input, vmId, url);
71 transactionStop.setPayload(payload);
72 if (vservers.size()>1) {
73 Response failureResponse = new Response();
74 failureResponse.setResponseMessage(Constants.ResponseMessage.FAILURE.getResponse());
75 Map<String,String> failureAction = new HashMap<>();
76 if(!checkLastVM(vservers,vm.getId()))
78 failureAction.put(Constants.ResponseAction.JUMP.getAction(), String.valueOf(transactionId+1));
79 failureResponse.setResponseAction(failureAction);
80 transactionStop.addResponse(failureResponse);
83 transactionList.add(transactionStop);
84 Transaction transactionStart = new Transaction();
85 transactionStart.setTransactionId(transactionId);
86 transactionIds.add(transactionId++);
87 transactionStart.setAction(Constants.Action.START.getActionType());
88 transactionStart.setActionLevel(Constants.ActionLevel.VM.getAction());
89 ActionIdentifier actionIdentifierStart = new ActionIdentifier();
90 actionIdentifierStart.setvServerId(vm.getId());
91 transactionStart.setActionIdentifier(actionIdentifierStart);
92 payload = payloadGenerator.getPayload(input, vmId, url);
93 transactionStart.setPayload(payload);
94 if (vservers.size()>1) {
95 Response failureResponse = new Response();
96 failureResponse.setResponseMessage(Constants.ResponseMessage.FAILURE.getResponse());
97 Map<String,String> failureAction = new HashMap<>();
98 if(!checkLastVM(vservers,vm.getId()))
100 failureAction.put(Constants.ResponseAction.JUMP.getAction(),transactionId.toString());
101 failureResponse.setResponseAction(failureAction);
102 transactionStart.addResponse(failureResponse);
105 transactionList.add(transactionStart);
107 return transactionList;
110 private boolean checkLastVM(List<Vserver> vservers, String vmId){
111 Vserver vm= vservers.get(vservers.size()-1);
112 return vm.getId().equals(vmId);