/* * Copyright (c) 2012-2015 iWave Software LLC * All Rights Reserved */ package com.iwave.ext.netapp; import java.util.List; import netapp.manage.NaElement; import netapp.manage.NaServer; import org.apache.commons.beanutils.ConvertUtils; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import com.google.common.collect.Lists; import com.iwave.ext.netapp.model.Qtree; public class QtreeCommands { private Logger log = Logger.getLogger(getClass()); private NaServer server = null; public QtreeCommands(NaServer server) { this.server = server; } public List<Qtree> listQtree(String volume) { NaElement elem = new NaElement("qtree-list"); if (StringUtils.isNotBlank(volume)) { elem.addNewChild("volume", volume); } NaElement resultElem = null; try { resultElem = server.invokeElem(elem); } catch (Exception e) { throw createError(elem, e); } List<Qtree> qtrees = Lists.newArrayList(); for (NaElement qtreeElem : (List<NaElement>) resultElem.getChildByName("qtrees").getChildren()) { Qtree qtree = new Qtree(); qtree.setId((Integer) ConvertUtils.convert(qtreeElem.getChildContent("id"), Integer.class)); qtree.setOplocks(qtreeElem.getChildContent("oplocks")); qtree.setOwningVfiler(qtreeElem.getChildContent("owning-vfiler")); qtree.setQtree(qtreeElem.getChildContent("qtree")); qtree.setSecurityStyle(qtreeElem.getChildContent("security-style")); qtree.setStatus(qtreeElem.getChildContent("status")); qtree.setVolume(qtreeElem.getChildContent("volume")); qtrees.add(qtree); } return qtrees; } public void createQtree(String qtree, String volume) { createQtree(qtree, volume, ""); } public void createQtree(String qtree, String volume, String mode) { NaElement elem = new NaElement("qtree-create"); elem.addNewChild("qtree", qtree); elem.addNewChild("volume", volume); if (StringUtils.isNotBlank(mode)) { elem.addNewChild("mode", mode); } try { server.invokeElem(elem); } catch (Exception e) { throw createError(elem, e); } } public void deleteQtree(String qtree, boolean force) { NaElement elem = new NaElement("qtree-delete"); elem.addNewChild("qtree", qtree); elem.addNewChild("force", String.valueOf(force)); try { server.invokeElem(elem); } catch (Exception e) { throw createError(elem, e); } } protected NetAppException createError(NaElement elem, Exception e) { String message = "Failed to run " + elem.getName(); log.error(message, e); return new NetAppException(message, e); } }