use of com.emc.nas.vnxfile.xmlapi.FileSystemSetUsageStats.Item in project coprhd-controller by CoprHD.
the class VNXFileSystemUsageProcessor method processFileShareInfo.
/**
* process the FileShareUsage response of the VNX XML API Server.
*
* @param fsUsageList
* : fileShareUsage map.
* @param keyMap
* : attribute map.
* @param statList
* : list of stat objects.
*/
@SuppressWarnings("rawtypes")
private void processFileShareInfo(final List<Object> fsUsageList, final Map<String, Object> keyMap, final List<Stat> statList, DbClient dbClient) throws VNXFilePluginException {
final String serialId = keyMap.get(Constants._serialID).toString();
Iterator iterator = fsUsageList.iterator();
keyMap.put(Constants._TimeCollected, System.currentTimeMillis());
Map<String, Long> fsCapacityMap = new HashMap<String, Long>();
while (iterator.hasNext()) {
FileSystemSetUsageStats fsSetUsageStats = (FileSystemSetUsageStats) iterator.next();
List<Item> fsUsageItems = fsSetUsageStats.getItem();
_logger.info("Received {} fileShareUsage records at server time {}", fsUsageItems.size(), fsSetUsageStats.getTime());
for (Item item : fsUsageItems) {
if (null == item.getFileSystem()) {
continue;
}
final String nativeGuid = NativeGUIDGenerator.generateNativeGuid(Type.vnxfile.toString(), serialId, item.getFileSystem());
Stat stat = _zeroRecordGenerator.injectattr(keyMap, nativeGuid, null);
if (null != stat) {
stat.setTimeInMillis((Long) keyMap.get(Constants._TimeCollected));
stat.setTimeCollected((Long) keyMap.get(Constants._TimeCollected));
injectProvisionedCapacity(stat, keyMap);
// The data coming in is in KB. Converting to Bytes
stat.setAllocatedCapacity(item.getSpaceUsed() * 1024);
_statsColumnInjector.injectColumns(stat, dbClient);
statList.add(stat);
// Persists the file system, only if change in used capacity.
DbClient client = (DbClient) keyMap.get(Constants.dbClient);
if (client != null) {
FileShare fileSystem = client.queryObject(FileShare.class, stat.getResourceId());
if (fileSystem != null) {
if (!fileSystem.getInactive() && fileSystem.getUsedCapacity() != stat.getAllocatedCapacity()) {
fileSystem.setUsedCapacity(stat.getAllocatedCapacity());
client.persistObject(fileSystem);
}
}
}
}
// filesystem and total capacity in Map
long totalSpace = item.getSpaceTotal();
String fsNativeId = item.getFileSystem();
fsCapacityMap.put(fsNativeId, Long.valueOf(totalSpace));
_logger.info("processFileShareInfo - FileSystem native id {} and file system total size{}", fsNativeId, String.valueOf(totalSpace));
}
_logger.info("Filesystems found - {} ", fsCapacityMap.size());
keyMap.put(VNXFileConstants.FILE_CAPACITY_MAP, fsCapacityMap);
}
_logger.info("No. of stat objects: {}", statList.size());
}
Aggregations