1 package org.onap.vid.job.command;
3 import com.google.common.collect.ImmutableMap;
4 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
5 import org.onap.vid.job.*;
6 import org.onap.vid.job.impl.JobSharedData;
7 import org.onap.vid.mso.RestMsoImplementation;
8 import org.onap.vid.mso.RestObject;
9 import org.onap.vid.mso.rest.AsyncRequestStatus;
10 import org.onap.vid.services.AsyncInstantiationBusinessLogic;
11 import org.togglz.core.manager.FeatureManager;
13 import javax.inject.Inject;
16 public abstract class BaseInProgressStatusCommand extends BaseInstantiationCommand implements JobCommand {
17 private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(BaseInProgressStatusCommand.class);
20 protected AsyncInstantiationBusinessLogic asyncInstantiationBL;
23 protected JobsBrokerService jobsBrokerService;
26 protected JobAdapter jobAdapter;
29 protected RestMsoImplementation restMso;
32 protected FeatureManager featureManager;
35 protected InProgressStatusService inProgressStatusService;
38 protected String requestId;
40 protected String instanceId;
44 public NextCommand call() {
47 Job.JobStatus jobStatus = inProgressStatusService.call(getExpiryChecker(), getSharedData(), requestId);
48 return processJobStatus(jobStatus);
49 } catch (javax.ws.rs.ProcessingException e) {
50 // Retry when we can't connect MSO during getStatus
51 LOGGER.error(EELFLoggerDelegate.errorLogger, "Cannot get orchestration status for {}, will retry: {}", requestId, e, e);
52 return new NextCommand(Job.JobStatus.IN_PROGRESS, this);
53 } catch (InProgressStatusService.BadResponseFromMso e) {
54 return handleFailedMsoResponse(e.getMsoResponse());
56 catch (RuntimeException e) {
57 LOGGER.error(EELFLoggerDelegate.errorLogger, "Cannot get orchestration status for {}, stopping: {}", requestId, e, e);
58 return new NextCommand(Job.JobStatus.STOPPED, this);
62 protected abstract ExpiryChecker getExpiryChecker();
64 abstract NextCommand processJobStatus(Job.JobStatus jobStatus);
66 private NextCommand handleFailedMsoResponse(RestObject<AsyncRequestStatus> msoResponse) {
67 inProgressStatusService.handleFailedMsoResponse(getSharedData().getJobUuid(), requestId, msoResponse);
68 return new NextCommand(Job.JobStatus.IN_PROGRESS, this);
72 public BaseInProgressStatusCommand init(JobSharedData sharedData, Map<String, Object> commandData) {
73 return init(sharedData, (String) commandData.get("requestId"), (String) commandData.get("instanceId"));
77 protected BaseInProgressStatusCommand init(JobSharedData sharedData,
81 this.requestId = requestId;
82 this.instanceId = instanceId;
87 public Map<String, Object> getData() {
88 return ImmutableMap.of(
89 "requestId", requestId,
90 "instanceId", instanceId