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