private CIMInstance commonVolumeUpdate(DbClient dbClient,WBEMClient client,Volume volume,CIMObjectPath volumePath){
  CIMInstance volumeInstance=null;
  try {
    _log.info("Executing CIMInstance update for volume {} at volume path {}",volume.forDisplay(),volumePath);
    volumeInstance=client.getInstance(volumePath,true,false,null);
    if (volumeInstance != null) {
      String alternateName=CIMPropertyFactory.getPropertyValue(volumeInstance,SmisConstants.CP_NAME);
      volume.setAlternateName(alternateName);
      String wwn=CIMPropertyFactory.getPropertyValue(volumeInstance,SmisConstants.CP_WWN_NAME);
      volume.setWWN(wwn.toUpperCase());
      volume.setProvisionedCapacity(getProvisionedCapacityInformation(client,volumeInstance));
      volume.setAllocatedCapacity(getAllocatedCapacityInformation(client,volumeInstance));
      String accessState=CIMPropertyFactory.getPropertyValue(volumeInstance,SmisConstants.CP_ACCESS);
      String[] statusDescriptions=CIMPropertyFactory.getPropertyArray(volumeInstance,SmisConstants.CP_STATUS_DESCRIPTIONS);
      List<String> statusDescriptionList=Arrays.asList(statusDescriptions);
      if (!volume.checkForRp()) {
        volume.setAccessState(SmisUtils.generateAccessState(accessState,statusDescriptionList));
      }
    }
    volume.setInactive(false);
  }
 catch (  Exception e) {
    _log.error("Caught an exception while trying to update attributes for volume {} and volume path {}",volume.forDisplay(),volumePath,e);
    setPostProcessingFailedStatus("Caught an exception while trying to update volume attributes: " + e.getMessage());
  }
  return volumeInstance;
}

private CIMInstance commonVolumeUpdate ( DbClient dbClient , WBEMClient client , Volume volume , CIMObjectPath volumePath ) { CIMInstance volumeInstance = null ; try { _log . info ( "Executing CIMInstance update for volume {} at volume path {}" , volume . forDisplay ( ) , volumePath ) ; volumeInstance = client . getInstance ( volumePath , true , false , null ) ; if ( volumeInstance != null ) { String alternateName = CIMPropertyFactory . getPropertyValue ( volumeInstance , SmisConstants . CP_NAME ) ; volume . setAlternateName ( alternateName ) ; String wwn = CIMPropertyFactory . getPropertyValue ( volumeInstance , SmisConstants . CP_WWN_NAME ) ; volume . setWWN ( wwn . toUpperCase ( ) ) ; volume . setProvisionedCapacity ( getProvisionedCapacityInformation ( client , volumeInstance ) ) ; volume . setAllocatedCapacity ( getAllocatedCapacityInformation ( client , volumeInstance ) ) ; String accessState = CIMPropertyFactory . getPropertyValue ( volumeInstance , SmisConstants . CP_ACCESS ) ; String [ ] statusDescriptions = CIMPropertyFactory . getPropertyArray ( volumeInstance , SmisConstants . CP_STATUS_DESCRIPTIONS ) ; List < String > statusDescriptionList = Arrays . asList ( statusDescriptions ) ; if ( ! volume . checkForRp ( ) ) { volume . setAccessState ( SmisUtils . generateAccessState ( accessState , statusDescriptionList ) ) ; } } volume . setInactive ( false ) ; } catch ( Exception e ) { _log . error ( "Caught an exception while trying to update attributes for volume {} and volume path {}" , volume . forDisplay ( ) , volumePath , e ) ; setPostProcessingFailedStatus ( "Caught an exception while trying to update volume attributes: " + e . getMessage ( ) ) ; } return volumeInstance ; }
this is common volume attribute update code . consider this the place to make updates for the bourne ' s volume object based on the references to the array based object irrespective of what type of volume creation it is .
