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