/** * Add the application to the volume applicationIds attribute * * @param voluri The volume that will be updated * @param dbClient */ protected void addApplicationToVolume(URI voluri, DbClient dbClient) { Volume volume = dbClient.queryObject(Volume.class, voluri); StringSet applications = volume.getVolumeGroupIds(); if (applications == null) { applications = new StringSet(); } applications.add(getId().toString()); volume.setVolumeGroupIds(applications); dbClient.updateObject(volume); // handle clones StringSet fullCopies = volume.getFullCopies(); List<Volume> fullCopiesToUpdate = new ArrayList<Volume>(); if (fullCopies != null && !fullCopies.isEmpty()) { for (String fullCopyId : fullCopies) { Volume fullCopy = dbClient.queryObject(Volume.class, URI.create(fullCopyId)); if (fullCopy != null && NullColumnValueGetter.isNullValue(fullCopy.getFullCopySetName())) { fullCopy.setFullCopySetName(fullCopy.getReplicationGroupInstance()); fullCopiesToUpdate.add(fullCopy); } } } if (!fullCopiesToUpdate.isEmpty()) { dbClient.updateObject(fullCopiesToUpdate); } }
/** * Add the application to the volume applicationIds attribute * * @param voluri The volumes that will be updated * @param dbClient */ private void addApplicationToVolume(Volume volume, DbClient dbClient) { StringSet applications = volume.getVolumeGroupIds(); if (applications == null) { applications = new StringSet(); } applications.add(getId().toString()); volume.setVolumeGroupIds(applications); dbClient.updateObject(volume); // Once volumes in VNX CG are added to an application, the CG's arrayConsistency // should turn to false if (volume.isInCG() && ControllerUtils.isVnxVolume(volume, dbClient)) { URI cguri = volume.getConsistencyGroup(); BlockConsistencyGroup cg = dbClient.queryObject(BlockConsistencyGroup.class, cguri); if (cg.getArrayConsistency()) { log.info("Updated consistency group arrayConsistency"); cg.setArrayConsistency(false); dbClient.updateObject(cg); } } }