/*
* Copyright (c) 2016 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.model.DiscoveredDataObject;
import com.emc.storageos.db.client.model.StorageSystem;
import com.emc.storageos.db.client.upgrade.BaseCustomMigrationCallback;
import com.emc.storageos.db.client.util.NullColumnValueGetter;
import com.emc.storageos.svcs.errorhandling.resources.MigrationCallbackException;
/**
* Migration handler to upgrade the XtremIO snapshots field replicationGroupInstance
* from snapsetLabel filed
*
*/
public class XtremioBlockSnapshotReplicationGroupInstanceMigration extends BaseCustomMigrationCallback {
private static final Logger log = LoggerFactory.getLogger(XtremioBlockSnapshotReplicationGroupInstanceMigration.class);
@Override
public void process() throws MigrationCallbackException {
updateXioSnapshotReplicationGroupInstance();
}
private void updateXioSnapshotReplicationGroupInstance() {
log.info("Migrating XIO snapshot replication group instance");
DbClient dbClient = getDbClient();
List<URI> snapshotURIs = dbClient.queryByType(BlockSnapshot.class, true);
Iterator<BlockSnapshot> snapshots= dbClient.queryIterativeObjects(BlockSnapshot.class, snapshotURIs);
while( snapshots.hasNext()){
BlockSnapshot snapshot = snapshots.next();
URI storageUri = snapshot.getStorageController();
if (!NullColumnValueGetter.isNullURI(storageUri)) {
StorageSystem system = dbClient.queryObject(StorageSystem.class, storageUri);
if(system == null){
continue;
}
if (DiscoveredDataObject.Type.xtremio.name().equals(system.getSystemType())) {
String groupInstance = snapshot.getSnapsetLabel();
if (NullColumnValueGetter.isNotNullValue(groupInstance)) {
log.info("Setting replicationGroupInstance {} for snapshot {}", groupInstance, snapshot.getLabel());
snapshot.setReplicationGroupInstance(groupInstance);
dbClient.updateObject(snapshot);
}
}
}
}
log.info("Migratiion for XIO snapshot replication group instance completed");
}
}