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 Exception {
47 logger.info("Generating sequence without dependency model");
48 return generateSequenceWithOutDependency(input);
51 private List<Transaction> generateSequenceWithOutDependency(SequenceGeneratorInput input) throws Exception{
52 String payload = null;
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 PayloadGenerator payloadGenerator = new PayloadGenerator();
58 for (Vserver vm : vservers) {
59 Transaction transactionStop = new Transaction();
60 transactionStop.setTransactionId(transactionId);
61 transactionIds.add(transactionId++);
62 transactionStop.setAction(Constants.Action.STOP.getActionType());
63 transactionStop.setActionLevel(Constants.ActionLevel.VM.getAction());
64 ActionIdentifier actionIdentifier = new ActionIdentifier();
65 actionIdentifier.setvServerId(vm.getId());
66 transactionStop.setActionIdentifier(actionIdentifier);
67 String vmId = vm.getId();
68 String url = vm.getUrl();
69 payload = payloadGenerator.getPayload(input, vmId, url);
70 transactionStop.setPayload(payload);
71 if (vservers.size()>1) {
72 Response failureResponse = new Response();
73 failureResponse.setResponseMessage(Constants.ResponseMessage.FAILURE.getResponse());
74 Map<String,String> failureAction = new HashMap<>();
75 if(!checkLastVM(vservers,vm.getId()))
77 failureAction.put(Constants.ResponseAction.JUMP.getAction(), String.valueOf(transactionId+1));
78 failureResponse.setResponseAction(failureAction);
79 transactionStop.addResponse(failureResponse);
82 transactionList.add(transactionStop);
83 Transaction transactionStart = new Transaction();
84 transactionStart.setTransactionId(transactionId);
85 transactionIds.add(transactionId++);
86 transactionStart.setAction(Constants.Action.START.getActionType());
87 transactionStart.setActionLevel(Constants.ActionLevel.VM.getAction());
88 ActionIdentifier actionIdentifierStart = new ActionIdentifier();
89 actionIdentifierStart.setvServerId(vm.getId());
90 transactionStart.setActionIdentifier(actionIdentifierStart);
91 payload = payloadGenerator.getPayload(input, vmId, url);
92 transactionStart.setPayload(payload);
93 if (vservers.size()>1) {
94 Response failureResponse = new Response();
95 failureResponse.setResponseMessage(Constants.ResponseMessage.FAILURE.getResponse());
96 Map<String,String> failureAction = new HashMap<>();
97 if(!checkLastVM(vservers,vm.getId()))
99 failureAction.put(Constants.ResponseAction.JUMP.getAction(),transactionId.toString());
100 failureResponse.setResponseAction(failureAction);
101 transactionStart.addResponse(failureResponse);
104 transactionList.add(transactionStart);
106 return transactionList;
109 private boolean checkLastVM(List<Vserver> vservers, String vmId){
110 Vserver vm= vservers.get(vservers.size()-1);
111 return vm.getId().equals(vmId);