/** * NOTE: This copyright does *not* cover user programs that use HQ * program services by normal system calls through the application * program interfaces provided as part of the Hyperic Plug-in Development * Kit or the Hyperic Client Development Kit - this is merely considered * normal use of the program, and does *not* fall under the heading of * "derived work". * * Copyright (C) [2009-2010], VMware, Inc. * This file is part of HQ. * * HQ is free software; you can redistribute it and/or modify * it under the terms version 2 of the GNU General Public License as * published by the Free Software Foundation. This program is distributed * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without * even the implied warranty of MERCHANTABILITY or FITNESS FOR A * PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * USA. * */ package org.hyperic.hq.appdef.shared; import java.util.Map; import org.hyperic.hq.appdef.Agent; import org.hyperic.hq.appdef.server.session.AppdefResource; import org.hyperic.hq.auth.shared.SessionException; import org.hyperic.hq.auth.shared.SessionNotFoundException; import org.hyperic.hq.auth.shared.SessionTimeoutException; import org.hyperic.hq.authz.server.session.AuthzSubject; import org.hyperic.hq.authz.server.session.Resource; import org.hyperic.hq.authz.shared.PermissionException; import org.hyperic.hq.common.ApplicationException; import org.hyperic.hq.common.VetoException; /** * Local interface for AppdefManager. */ public interface AppdefManager { /** * Get controllable server types * @param subject * @return a list of ServerTypeValue objects * @throws PermissionException */ public Map<String, AppdefEntityID> getControllablePlatformTypes(AuthzSubject subject) throws PermissionException; /** * Get controllable platform types * @param subject * @return a list of ServerTypeValue objects * @throws PermissionException */ public Map<String, AppdefEntityID> getControllablePlatformNames(AuthzSubject subject, int tid) throws PermissionException; /** * Get controllable server types * @param subject * @return a list of ServerTypeValue objects * @throws PermissionException */ public Map<String, AppdefEntityTypeID> getControllableServerTypes(AuthzSubject subject) throws PermissionException; /** * Get controllable server types * @param subject * @return a list of ServerTypeValue objects * @throws PermissionException */ public Map<String, AppdefEntityID> getControllableServerNames(AuthzSubject subject, int tid) throws PermissionException; /** * Get controllable service types * @param subject * @return a list of ServerTypeValue objects * @throws PermissionException */ public Map<String, AppdefEntityTypeID> getControllableServiceTypes(AuthzSubject subject) throws PermissionException; /** * Get controllable service types * @param subject * @return a list of ServerTypeValue objects * @throws PermissionException */ public Map<String, AppdefEntityID> getControllableServiceNames(AuthzSubject subject, int tid) throws PermissionException; /** * Change appdef entity owner */ public void changeOwner(AuthzSubject who, AppdefResource res, AuthzSubject newOwner) throws PermissionException, ServerNotFoundException; /** * Removes an appdef entity by nulling out any reference from its children * and then deleting it synchronously. The children are then cleaned up in * the zevent queue by issuing a {@link ResourcesCleanupZevent} * @param aeid {@link AppdefEntityID} resource to be removed. * @return AppdefEntityID[] - an array of the resources (including children) * deleted */ public AppdefEntityID[] removeAppdefEntity(int sessionId, AppdefEntityID aeid) throws SessionNotFoundException, SessionTimeoutException, ApplicationException, VetoException; /** * Removes an appdef entity by nulling out any reference from its children * and then deleting it synchronously. The children are then cleaned up in * the zevent queue by issuing a {@link ResourcesCleanupZevent} * @param aeid {@link AppdefEntityID} resource to be removed. * @param removeAllVirtual tells the method to remove all resources, including * associated platforms, under the virtual resource hierarchy * @return AppdefEntityID[] - an array of the resources (including children) * deleted */ public AppdefEntityID[] removeAppdefEntity(int sessionId, AppdefEntityID aeid, boolean removeAllVirtual) throws SessionNotFoundException, SessionTimeoutException, ApplicationException, VetoException; public AppdefEntityID[] removeAppdefEntity(final Resource res, Integer id, int type, final AuthzSubject subject, boolean removeAllVirtual ) throws VetoException, ApplicationException; public void removeServer(AuthzSubject subj, Integer serverId) throws ServerNotFoundException, SessionNotFoundException, SessionTimeoutException, PermissionException, SessionException, VetoException; public void removePlatform(AuthzSubject subject, Integer platformId) throws ApplicationException, VetoException; public void removeService(AuthzSubject subject, Integer serviceId) throws VetoException, PermissionException, ServiceNotFoundException; public Agent findResourceAgent(AppdefEntityID entityId) throws AppdefEntityNotFoundException, SessionTimeoutException, SessionNotFoundException, PermissionException, AgentNotFoundException; }