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