/* * Copyright (c) 2014 EMC Corporation * All Rights Reserved */ package com.emc.storageos.vnxe.requests; import java.util.List; import javax.ws.rs.core.MultivaluedMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.emc.storageos.vnxe.VNXeConstants; import com.emc.storageos.vnxe.models.VNXeFileSystem; import com.sun.jersey.core.util.MultivaluedMapImpl; public class FileSystemListRequest extends KHRequests<VNXeFileSystem> { private static final Logger _logger = LoggerFactory.getLogger(FileSystemListRequest.class); private static final String URL = "/api/types/filesystem/instances"; private static final String FIELDS = "name,sizeTotal,sizeAllocated,isThinEnabled,pool,nasServer"; public FileSystemListRequest(KHClient client) { super(client); _url = URL; _fields = FIELDS; } /** * Get all file systems in the array * * @return List of VNXeFileSystem */ public List<VNXeFileSystem> get() { _queryParams = null; return getDataForObjects(VNXeFileSystem.class); } /** * Get file system using its storageResourceId * * @param storageResourceId * @return */ public VNXeFileSystem getByStorageResource(String storageResourceId) { MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl(); queryParams.add(VNXeConstants.FILTER, VNXeConstants.STORAGE_RESOURCE_FILTER + "\"" + storageResourceId + "\""); setQueryParameters(queryParams); VNXeFileSystem result = null; List<VNXeFileSystem> fsList = getDataForObjects(VNXeFileSystem.class); // it should just return 1 if (fsList != null && !fsList.isEmpty()) { result = fsList.get(0); } else { _logger.info("No file system found using the storage resource id: " + storageResourceId); } return result; } /** * Get file system using its name * * @param fsName fileSystem name * @return VNXeFileSystem */ public VNXeFileSystem getByFSName(String fsName) { MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl(); queryParams.add(VNXeConstants.FILTER, VNXeConstants.NAME_FILTER + "\"" + fsName + "\""); setQueryParameters(queryParams); VNXeFileSystem result = null; List<VNXeFileSystem> fsList = getDataForObjects(VNXeFileSystem.class); // it should just return 1 if (fsList != null && !fsList.isEmpty()) { result = fsList.get(0); } else { _logger.info("No file system found using the name: " + fsName); } return result; } /** * get nasServer's file systems. * * @param nasServerId nasServer internal id * @return list of file system */ public List<VNXeFileSystem> getFileSystemsForNasServer(String nasServerId) { setFilter(VNXeConstants.NASSERVER_FILTER + "\"" + nasServerId + "\""); return getDataForObjects(VNXeFileSystem.class); } }