Search in sources :

Example 1 with HostStateChange

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());
            }
        }
    }
}
Also used : Initiator(com.emc.storageos.db.client.model.Initiator) HostStateChange(com.emc.storageos.computesystemcontroller.impl.adapter.HostStateChange) Cluster(com.emc.storageos.db.client.model.Cluster) Host(com.emc.storageos.db.client.model.Host) URI(java.net.URI)

Aggregations

HostStateChange (com.emc.storageos.computesystemcontroller.impl.adapter.HostStateChange)1 Cluster (com.emc.storageos.db.client.model.Cluster)1 Host (com.emc.storageos.db.client.model.Host)1 Initiator (com.emc.storageos.db.client.model.Initiator)1 URI (java.net.URI)1