/*
* 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.BlockSnapshot;
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 BlockSnapshotReplicationGroupInstanceMigration extends BaseCustomMigrationCallback {
private static final Logger log = LoggerFactory.getLogger(FullCopyVolumeReplicaStateMigration.class);
@Override
public void process() throws MigrationCallbackException {
initializeField();
}
/**
* For all full copy volume, set replicaState as DETACHED
*/
private void initializeField() {
log.info("Updating block snapshot replication group instance.");
DbClient dbClient = this.getDbClient();
List<URI> snapURIs = dbClient.queryByType(BlockSnapshot.class, false);
Iterator<BlockSnapshot> snaps =
dbClient.queryIterativeObjects(BlockSnapshot.class, snapURIs);
while (snaps.hasNext()) {
BlockSnapshot snapshot = snaps.next();
log.info("Examining block snapshot (id={}) for upgrade", snapshot.getId().toString());
String groupInstance = snapshot.getSnapshotGroupInstance();
if (NullColumnValueGetter.isNotNullValue(groupInstance)) {
log.info("Setting replicationGroupInstance", groupInstance);
snapshot.setReplicationGroupInstance(groupInstance);
dbClient.persistObject(snapshot);
}
}
}
}