use of com.emc.storageos.computesystemcontroller.impl.adapter.HostStateChange in project coprhd-controller by CoprHD.
the class ProcessHostChangesCompleter method complete.
@Override
protected void complete(DbClient dbClient, Status status, ServiceCoded coded) throws DeviceControllerException {
if (isNotifyWorkflow()) {
// If there is a workflow, update the step to complete.
updateWorkflowStatus(status, coded);
}
// if export updates were successful, remove all old initiators and deleted hosts
if (status.equals(Status.ready)) {
for (HostStateChange hostChange : changes) {
for (URI initiatorId : hostChange.getOldInitiators()) {
Initiator initiator = dbClient.queryObject(Initiator.class, initiatorId);
dbClient.markForDeletion(initiator);
_logger.info("Initiator marked for deletion: " + this.getId());
}
}
for (URI hostId : deletedHosts) {
Host host = dbClient.queryObject(Host.class, hostId);
// don't delete host if it was provisioned by Vipr
if (!NullColumnValueGetter.isNullURI(host.getComputeElement())) {
_logger.info("do not delete provisioned host {} - disassociate it from vcenter", host.getLabel());
host.setVcenterDataCenter(NullColumnValueGetter.getNullURI());
dbClient.persistObject(host);
} else if (!NullColumnValueGetter.isNullURI(host.getBootVolumeId())) {
_logger.info("do not delete host with boot volume {} - disassociate it from vcenter", host.getLabel());
host.setVcenterDataCenter(NullColumnValueGetter.getNullURI());
dbClient.persistObject(host);
} else {
ComputeSystemHelper.doDeactivateHost(dbClient, host);
_logger.info("Deactivating Host: " + host.getId());
}
}
for (URI clusterId : deletedClusters) {
Cluster cluster = dbClient.queryObject(Cluster.class, clusterId);
List<URI> clusterHosts = ComputeSystemHelper.getChildrenUris(dbClient, clusterId, Host.class, "cluster");
// don't delete cluster if auto-exports are disabled or all hosts weren't deleted (ex: hosts provisioned by ViPR)
if (!clusterHosts.isEmpty()) {
_logger.info("do not delete cluster {} - it still has hosts - disassociate it from vcenter", cluster.getLabel());
cluster.setVcenterDataCenter(NullColumnValueGetter.getNullURI());
cluster.setExternalId(NullColumnValueGetter.getNullStr());
dbClient.persistObject(cluster);
} else {
ComputeSystemHelper.doDeactivateCluster(dbClient, cluster);
_logger.info("Deactivating Cluster: " + cluster.getId());
}
}
}
}
Aggregations