aboutsummaryrefslogtreecommitdiffstats
path: root/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOOrchestrationRequestGet.java
blob: 602e32df4c68add8e98837263c8592f1d7debc7b (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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
package org.onap.simulator.presetGenerator.presets.mso;

import com.google.common.collect.ImmutableMap;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.onap.simulator.presetGenerator.presets.BasePresets.BaseMSOPreset;
import org.springframework.http.HttpMethod;
import vid.automation.test.infra.Features;

import java.time.Instant;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.Collections;
import java.util.List;
import java.util.Map;

import static java.util.Collections.singletonList;

/**
 * Created by itzikliderman on 13/12/2017.
 */
public class PresetMSOOrchestrationRequestGet extends BaseMSOPreset {
    private static final Logger logger = LogManager.getLogger(PresetMSOOrchestrationRequestGet.class);

    public static final String COMPLETE = "COMPLETE";
    public static final String DEFAULT_REQUEST_ID = "c0011670-0e1a-4b74-945d-8bf5aede1d9c";
    public static final String DEFAULT_SERVICE_INSTANCE_ID = BaseMSOPreset.DEFAULT_INSTANCE_ID;

    private final String requestId;
    private String statusMessage;
    private String requestState;
    private int startedHoursAgo = 1;
    private boolean isDetailed = true;


    public PresetMSOOrchestrationRequestGet() {
        requestState = COMPLETE;
        this.requestId = DEFAULT_REQUEST_ID;
    }

    public PresetMSOOrchestrationRequestGet(String requestState) {
        this.requestState = requestState;
        this.requestId = DEFAULT_REQUEST_ID;
    }

    /**
     * @param requestState
     * @param isDetailed   - is expect to query param format=detail. Angular1 flows dont' expect it
     */
    public PresetMSOOrchestrationRequestGet(String requestState, boolean isDetailed) {
        this.requestState = requestState;
        this.requestId = DEFAULT_REQUEST_ID;
        this.isDetailed = isDetailed;
    }

    public PresetMSOOrchestrationRequestGet(String requestState, String overrideRequestId) {
        this.requestState = requestState;
        this.requestId = overrideRequestId;
    }

    public PresetMSOOrchestrationRequestGet(String requestState, String overrideRequestId, String statusMessage) {
        this.requestState = requestState;
        this.requestId = overrideRequestId;
        this.statusMessage = statusMessage;
    }

    /**
     * @param isDetailed - is expect to query param format=detail. Angular1 flows dont' expect it
     */
    public PresetMSOOrchestrationRequestGet(String requestState, String overrideRequestId, String statusMessage, boolean isDetailed) {
        this.requestState = requestState;
        this.requestId = overrideRequestId;
        this.statusMessage = statusMessage;
        this.isDetailed = isDetailed;
    }

    public PresetMSOOrchestrationRequestGet(String requestState, String overrideRequestId, String statusMessage, int startedHoursAgo) {
        this.requestState = requestState;
        this.requestId = overrideRequestId;
        this.statusMessage = statusMessage;
        this.startedHoursAgo = startedHoursAgo;
    }

    public PresetMSOOrchestrationRequestGet(String requestState, int startedHoursAgo) {
        this.requestState = requestState;
        this.requestId = DEFAULT_REQUEST_ID;
        this.startedHoursAgo = startedHoursAgo;
    }

    @Override
    public HttpMethod getReqMethod() {
        return HttpMethod.GET;
    }

    public String getReqPath() {
        return getRootPath() + "/orchestrationRequests/v./" + requestId;
    }

    @Override
    public Map<String, List> getQueryParams() {
        return (isDetailed && Features.FLAG_1908_RESUME_MACRO_SERVICE.isActive()) ?
                ImmutableMap.of("format", singletonList("detail")) :
                Collections.emptyMap();
    }

    @Override
    public Object getResponseBody() {
         String body = "{" +
                "  \"request\": {" +
                "    \"requestId\": \"" + requestId + "\"," +
                "    \"startTime\": \"" + getTimeHoursAgo(startedHoursAgo) + "\"," +
                "    \"requestScope\": \"service\"," +
                "    \"requestType\": \"createInstance\"," +
                "    \"instanceReferences\": {" +
                "      \"serviceInstanceId\": \"" + DEFAULT_SERVICE_INSTANCE_ID + "\"," +
                "      \"serviceInstanceName\": \"asdfasdf234234asdf\"," +
                "      \"requestorId\": \"il883e\"" +
                "    }," +
                "    \"requestStatus\": {" +
                "      \"requestState\": \"" + requestState + "\"," +
                "      \"statusMessage\": \"" + getStatusMessage() + "\"," +
                "      \"percentProgress\": 100," +
                "      \"timestamp\": \"" + getTimeNow() + "\"" +
                "    }" +
                "  }" +
                "}";
        logger.info(body);
        return body;
    }

    private String getStatusMessage() {
        return StringUtils.defaultIfEmpty(statusMessage,
                "COMPLETE".equals(requestState) ?
                        "Service Instance was created successfully." :
                        ("Service Instance was " + requestState.toLowerCase() + " successfully."));
    }

    private String getTimeNow() {
        return getTimeHoursAgo(0);
    }

    private String getTimeHoursAgo(int delta) {
        Instant instant = Instant.now();
        Instant instantMinus = instant.minus(delta, ChronoUnit.HOURS);
        ZonedDateTime dateDayAgo = ZonedDateTime.ofInstant(instantMinus, ZoneOffset.UTC);
        DateTimeFormatter formatter = DateTimeFormatter.RFC_1123_DATE_TIME;
        return formatter.format(dateDayAgo);
    }
}