/*
* Copyright (c) 2014 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.db.client.upgrade.callbacks;
import java.net.URI;
import java.util.ArrayList;
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.ExportGroup;
import com.emc.storageos.db.client.model.ExportGroup.ExportGroupType;
import com.emc.storageos.db.client.upgrade.BaseCustomMigrationCallback;
import com.emc.storageos.svcs.errorhandling.resources.MigrationCallbackException;
/**
* Migration handler to convert value of type field for an export group, from
* Exclusive to Initiator.
*/
public class ExportGroupTypeConverter extends BaseCustomMigrationCallback {
private static final Logger log = LoggerFactory
.getLogger(ExportGroupTypeConverter.class);
private static final String TYPE_FIELD_NAME = "type";
private static final String OLD_TYPE_VALUE = "Exclusive";
@Override
public void process() throws MigrationCallbackException {
log.info("Handle ExportGroup type conversion");
DbClient dbClient = getDbClient();
List<URI> exportGroupURIs = dbClient.queryByType(ExportGroup.class,
false);
Iterator<ExportGroup> exportGroupsIter = dbClient
.queryIterativeObjectField(ExportGroup.class, TYPE_FIELD_NAME, exportGroupURIs);
List<ExportGroup> exportGroups = new ArrayList<ExportGroup>();
while (exportGroupsIter.hasNext()) {
ExportGroup exportGroup = exportGroupsIter.next();
String exportGroupId = exportGroup.getId().toString();
log.info("Examining ExportGroup (id={}) for upgrade", exportGroupId);
String type = exportGroup.getType();
if (type.equals(OLD_TYPE_VALUE)) {
exportGroup.setType(ExportGroupType.Initiator.name());
log.info("Reset export group type for export group (id={})",
exportGroupId);
exportGroups.add(exportGroup);
}
}
dbClient.persistObject(exportGroups);
}
}