2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 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 * ECOMP is a trademark and service mark of AT&T Intellectual Property.
22 * ============LICENSE_END=========================================================
25 package org.onap.appc.seqgen.impl;
27 import com.att.eelf.configuration.EELFLogger;
28 import com.att.eelf.configuration.EELFManager;
29 import org.onap.appc.domainmodel.Vserver;
30 import org.onap.appc.exceptions.APPCException;
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 APPCException {
48 logger.info("Generating sequence without dependency model");
49 return generateSequenceWithOutDependency(input);
52 private List<Transaction> generateSequenceWithOutDependency(SequenceGeneratorInput input) {
53 List<Transaction> transactionList = new LinkedList<>();
54 Integer transactionId = 1;
55 List<Vserver> vservers = input.getInventoryModel().getVnf().getVservers();
56 List<Integer> transactionIds = new LinkedList<>();
57 for (Vserver vm : vservers) {
58 Transaction transactionStop = new Transaction();
59 transactionStop.setTransactionId(transactionId);
60 transactionIds.add(transactionId++);
61 transactionStop.setAction(Constants.Action.STOP.getActionType());
62 transactionStop.setActionLevel(Constants.ActionLevel.VM.getAction());
63 ActionIdentifier actionIdentifier = new ActionIdentifier();
64 actionIdentifier.setvServerId(vm.getId());
65 transactionStop.setActionIdentifier(actionIdentifier);
66 transactionStop.setPayload(input.getRequestInfo().getPayload());
67 if (vservers.size()>1) {
68 Response failureResponse = new Response();
69 failureResponse.setResponseMessage(Constants.ResponseMessage.FAILURE.getResponse());
70 Map<String,String> failureAction = new HashMap<>();
71 if(!checkLastVM(vservers,vm.getId()))
73 failureAction.put(Constants.ResponseAction.JUMP.getAction(), String.valueOf(transactionId+1));
74 failureResponse.setResponseAction(failureAction);
75 transactionStop.addResponse(failureResponse);
78 transactionList.add(transactionStop);
79 Transaction transactionStart = new Transaction();
80 transactionStart.setTransactionId(transactionId);
81 transactionIds.add(transactionId++);
82 transactionStart.setAction(Constants.Action.START.getActionType());
83 transactionStart.setActionLevel(Constants.ActionLevel.VM.getAction());
84 ActionIdentifier actionIdentifierStart = new ActionIdentifier();
85 actionIdentifierStart.setvServerId(vm.getId());
86 transactionStart.setActionIdentifier(actionIdentifierStart);
87 transactionStart.setPayload(input.getRequestInfo().getPayload());
88 if (vservers.size()>1) {
89 Response failureResponse = new Response();
90 failureResponse.setResponseMessage(Constants.ResponseMessage.FAILURE.getResponse());
91 Map<String,String> failureAction = new HashMap<>();
92 if(!checkLastVM(vservers,vm.getId()))
94 failureAction.put(Constants.ResponseAction.JUMP.getAction(),transactionId.toString());
95 failureResponse.setResponseAction(failureAction);
96 transactionStart.addResponse(failureResponse);
99 transactionList.add(transactionStart);
101 return transactionList;
104 private boolean checkLastVM(List<Vserver> vservers, String vmId){
105 Vserver vm= vservers.get(vservers.size()-1);
106 return vm.getId().equals(vmId);