/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package com.emc.storageos.db.client.upgrade.callbacks; import java.net.URI; import java.util.Iterator; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.emc.storageos.db.client.DbClient; import com.emc.storageos.db.client.model.Volume; import com.emc.storageos.db.client.model.Volume.ReplicationState; import com.emc.storageos.db.client.upgrade.BaseCustomMigrationCallback; import com.emc.storageos.db.client.util.NullColumnValueGetter; import com.emc.storageos.svcs.errorhandling.resources.MigrationCallbackException; public class FullCopyVolumeReplicaStateMigration extends BaseCustomMigrationCallback { private static final Logger log = LoggerFactory.getLogger(FullCopyVolumeReplicaStateMigration.class); @Override public void process() throws MigrationCallbackException { initializeVolumeFields(); } /** * For all full copy volume, set replicaState as DETACHED */ private void initializeVolumeFields() { log.info("Updating full copy volume replica state."); DbClient dbClient = this.getDbClient(); List<URI> volumeURIs = dbClient.queryByType(Volume.class, false); Iterator<Volume> volumes = dbClient.queryIterativeObjects(Volume.class, volumeURIs); while (volumes.hasNext()) { Volume volume = volumes.next(); log.info("Examining Volume (id={}) for upgrade", volume.getId().toString()); if (!NullColumnValueGetter.isNullURI(volume.getAssociatedSourceVolume())) { volume.setReplicaState(ReplicationState.DETACHED.name()); } dbClient.persistObject(volume); } } }