/*
* Copyright (c) 2012-2015 iWave Software LLC
* All Rights Reserved
*/
package com.iwave.ext.netapp;
import org.apache.log4j.Logger;
import java.util.ArrayList;
import java.util.List;
import netapp.manage.NaElement;
import netapp.manage.NaServer;
public class VFiler {
private Logger log = Logger.getLogger(getClass());
private String name = "";
private NaServer server = null;
public VFiler(NaServer server, String name) {
this.name = name;
this.server = server;
}
public List<VFilerInfo> listVFilers(boolean listAll) {
ArrayList<VFilerInfo> vFilers = new ArrayList<VFilerInfo>();
NaElement elem = new NaElement("vfiler-list-info");
if (!listAll) {
elem.addNewChild("vfiler", name);
}
NaElement result = null;
try {
result = server.invokeElem(elem).getChildByName("vfilers");
} catch (Exception e) {
// If MultiStore not enabled, then this is the expected behavior.
String msg = "No vFiler information returned from array.";
log.info(msg);
throw new NetAppException(msg, e);
}
for (NaElement filerInfo : (List<NaElement>) result.getChildren()) {
VFilerInfo info = new VFilerInfo();
info.setName(filerInfo.getChildContent("name"));
info.setIpspace(filerInfo.getChildContent("ipspace"));
List<VFNetInfo> netInfo = new ArrayList<VFNetInfo>();
for (NaElement vfnet : (List<NaElement>) filerInfo.getChildByName("vfnets").getChildren()) {
VFNetInfo vfNetInfo = new VFNetInfo();
vfNetInfo.setIpAddress(vfnet.getChildContent("ipaddress"));
vfNetInfo.setNetInterface(vfnet.getChildContent("interface"));
netInfo.add(vfNetInfo);
}
info.setInterfaces(netInfo);
vFilers.add(info);
}
return vFilers;
}
boolean addStorage(String storagePath, String vFilerName) {
NaElement elem = new NaElement("vfiler-add-storage");
elem.addNewChild("storage-path", storagePath);
elem.addNewChild("vfiler", vFilerName);
try {
server.invokeElem(elem);
} catch (Exception e) {
String msg = "Failed to add new volume: " + storagePath;
log.error(msg, e);
throw new NetAppException(msg, e);
}
return true;
}
}