/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.vcentercontroller;
import com.emc.storageos.db.client.DbClient;
import com.emc.storageos.db.client.model.Operation.Status;
import com.emc.storageos.db.client.model.VcenterDataCenter;
import com.emc.storageos.exceptions.DeviceControllerException;
import com.emc.storageos.security.audit.AuditLogManager;
import com.emc.storageos.security.audit.AuditLogManagerFactory;
import com.emc.storageos.services.OperationTypeEnum;
import com.emc.storageos.svcs.errorhandling.model.ServiceCoded;
import com.emc.storageos.volumecontroller.TaskCompleter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.net.URI;
@SuppressWarnings("serial")
public class VcenterClusterCompleter extends TaskCompleter {
private static final Logger log = LoggerFactory.getLogger(VcenterClusterCompleter.class);
private OperationTypeEnum opType = null;
private String serviceType = null;
public VcenterClusterCompleter(URI id, String opId, OperationTypeEnum opType, String serviceType) {
super(VcenterDataCenter.class, id, opId);
this.opType = opType;
this.serviceType = serviceType;
}
@Override
protected void complete(DbClient dbClient, Status status, ServiceCoded coded)
throws DeviceControllerException {
log.info("VcenterClusterCompleter.complete {}", status.name());
VcenterDataCenter vcenterDataCenter = dbClient.queryObject(VcenterDataCenter.class, getId());
AuditLogManager auditMgr = AuditLogManagerFactory.getAuditLogManager();
if (status == Status.error) {
log.info("Error in state " + status);
dbClient.error(VcenterDataCenter.class, getId(), getOpId(), coded);
auditMgr.recordAuditLog(null, null, serviceType, opType, System.currentTimeMillis(), AuditLogManager.AUDITLOG_FAILURE,
AuditLogManager.AUDITOP_END);
} else {
dbClient.ready(VcenterDataCenter.class, getId(), getOpId());
auditMgr.recordAuditLog(null, null, serviceType, opType, System.currentTimeMillis(), AuditLogManager.AUDITLOG_SUCCESS,
AuditLogManager.AUDITOP_END);
}
}
}