Additional test case added ResponseContext.java
[appc.git] / appc-sequence-generator / appc-sequence-generator-bundle / src / main / java / org / onap / appc / seqgen / impl / RestartSequenceGenerator.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP : APPC
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
12  *
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  *
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.
20  *
21  * ============LICENSE_END=========================================================
22  */
23
24 package org.onap.appc.seqgen.impl;
25
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;;
36
37 import java.util.HashMap;
38 import java.util.LinkedList;
39 import java.util.List;
40 import java.util.Map;
41
42 public class RestartSequenceGenerator implements SequenceGenerator{
43     private static final EELFLogger logger = EELFManager.getInstance().getLogger(RestartSequenceGenerator.class);
44
45     @Override
46     public List<Transaction> generateSequence(SequenceGeneratorInput input) throws Exception {
47             logger.info("Generating sequence without dependency model");
48             return generateSequenceWithOutDependency(input);
49     }
50
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()))
76                     {
77                         failureAction.put(Constants.ResponseAction.JUMP.getAction(), String.valueOf(transactionId+1));
78                         failureResponse.setResponseAction(failureAction);
79                         transactionStop.addResponse(failureResponse);
80                     }
81                 }
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()))
98                     {
99                         failureAction.put(Constants.ResponseAction.JUMP.getAction(),transactionId.toString());
100                         failureResponse.setResponseAction(failureAction);
101                         transactionStart.addResponse(failureResponse);
102                     }
103                 }
104                 transactionList.add(transactionStart);
105             }
106         return transactionList;
107     }
108
109     private boolean checkLastVM(List<Vserver> vservers, String  vmId){
110         Vserver vm= vservers.get(vservers.size()-1);
111         return vm.getId().equals(vmId);
112     }
113 }