/*
* Copyright (c) 2013 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.db.client.upgrade.callbacks;
import java.net.URI;
import java.util.Collections;
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.Network;
import com.emc.storageos.db.client.upgrade.BaseCustomMigrationCallback;
import com.emc.storageos.db.client.util.NullColumnValueGetter;
import com.emc.storageos.db.client.util.StringSetUtil;
import com.emc.storageos.svcs.errorhandling.resources.MigrationCallbackException;
/**
* Migration handler to initialize the assigned virtual arrays field for the
* network.
*/
public class NetworkAssignedVirtualArraysInitializer extends BaseCustomMigrationCallback {
private static final Logger log = LoggerFactory.getLogger(NetworkAssignedVirtualArraysInitializer.class);
@SuppressWarnings("deprecation")
@Override
public void process() throws MigrationCallbackException {
DbClient dbClient = getDbClient();
List<URI> networkURIs = dbClient.queryByType(Network.class, false);
Iterator<Network> networksIter = dbClient.queryIterativeObjects(Network.class, networkURIs);
while (networksIter.hasNext()) {
Network network = networksIter.next();
String networkId = network.getId().toString();
log.info("Examining Network (id={}) for upgrade", networkId);
URI networkVArrayURI = network.getVirtualArray();
if (!NullColumnValueGetter.isNullURI(networkVArrayURI)) {
// Update the new field.
network.setAssignedVirtualArrays(StringSetUtil
.uriListToStringSet(Collections.singletonList(networkVArrayURI)));
dbClient.updateAndReindexObject(network);
log.info("Set assigned virtual arrays for network (id={}) to virtual array (id={})",
networkId, networkVArrayURI.toString());
}
}
}
}