/* * Lokomo OneCMDB - An Open Source Software for Configuration * Management of Datacenter Resources * * Copyright (C) 2006 Lokomo Systems AB * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * 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., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301 USA. * * Lokomo Systems AB can be contacted via e-mail: info@lokomo.com or via * paper mail: Lokomo Systems AB, Sv�rdv�gen 27, SE-182 33 * Danderyd, Sweden. * */ package org.onecmdb.core.utils.wsdl; import org.onecmdb.core.ICi; import org.onecmdb.core.IJobStartResult; import org.onecmdb.core.IRfcResult; import org.onecmdb.core.ISession; import org.onecmdb.core.internal.authorization.RBACSession; import org.onecmdb.core.internal.ccb.RfcQueryCriteria; import org.onecmdb.core.internal.ccb.workers.RfcResult; import org.onecmdb.core.internal.model.QueryCriteria; import org.onecmdb.core.utils.bean.CiBean; import org.onecmdb.core.utils.graph.query.GraphQuery; import org.onecmdb.core.utils.graph.result.Graph; /** * OneCMDB Web Service interface.<br> * <p> * The intension of this interface is that it should be possiable * to modify/query all aspects of a ci and it's attributes. * </p> * */ public interface IOneCMDBWebService { /** * Basic authentication to the service. * <br> * * @param username * @param pwd * @return a authentication token, used in all other calls. * @throws Exception if the login fails. */ public String auth(String username, String pwd) throws Exception; /** * Invalidate the token meaning that it can not be used any more. * * @param authToken */ public void logout(String authToken); /** * Query for history objects for a CI. All modifications to a CI * will be stored as RFC. * * @param auth * @param vBean * @param criteria * @return */ public RFCBean[] history(String auth, CiBean vBean, RfcQueryCriteria criteria); /** * Count number of hits for history Query. * * @param auth * @param vBean * @param criteria * @return */ public int historyCount(String auth, CiBean vBean, RfcQueryCriteria criteria); /** * Search the CMDB. What to search for is controlled by the <code>QueryCriteria</code> * object. * <br> * The criteria also supports paging functionality. * * @param auth * @param criteria * @return * @see QueryCriteria */ public CiBean[] search(String auth, QueryCriteria criteria); /** * Count how many hits the search criteria finds. * * @param auth * @param criteria * @return */ public int searchCount(String auth, QueryCriteria criteria); /** * Query using XPath syntax. All input arguments are simple String's. * * @param auth the token received from auth() * @param xPath the XPath expression. * @param attributes which attribute's the result CI should contain. * @return */ public CiBean[] query(String auth, String xPath, String attributes); /** * Method to add/modify/delete ci's from the cmdb. * The function is inspired by CVS, meaning that * it contains a three way compare function. * <p> * The local ci's contains the ci's that should be modified or added * to the cmdb. * <p> * The base array will handle the delete of ci's or attributes. * If a ci is put in the base array and NOT in the local array, it's * regarded as a delete. If a CI exists in both base and local than * deletion of attributes can be performed. By removing an attribute from * the local CI and not in the base CI the attribute will be removed. * * @param auth the token received from auth(). * @param localBeans The CI that should be modified. * @param baseBeans The base CI's, used to handle delete. * @return the result of the update. * @see IRfcResult */ public IRfcResult update(String auth, CiBean localBeans[], CiBean baseBeans[]); public RFCBean[] compare(String auth, CiBean localBeans[], CiBean baseBeans[], String keys[]); /** * Find all relations between a source CI and a target CI.<br> * The CiBean passed as argument can be either an instance or a template.<br> * <br> * All posable path's between the two CI's will be returned.<br> * Could image to have some control how the path should be evaluated,<br> * for instance the shortest.<br> * <br> * If no relation exists a empty array is returned.<br> * <br> * * @param auth * @param source * @param target * @return an array of relation expression between the source and target. */ public String[] findRelation(String auth, CiBean source, CiBean target); /** * Fetch related CI's between the source and targets<br> * specified by the relation path.<br> * The relation path syntxt is a compact way to describe<br> * between to CI's. * * @param auth * @param root * @param relationPath * @param crit * @return */ public CiBean[] evalRelation(String auth, CiBean source, String relationPath, QueryCriteria crit); /** * Return how many target objects this relation will evaluates to. * * @param auth * @param root * @param relationPath * @param crit * @return */ public int evalRelationCount(String auth, CiBean root, String relationPath, QueryCriteria crit); /** * A way to allocate a unique instance alias. * * @param templateAlias * @return */ public String newInstanceAlias(String token, String templateAlias); /** * * @param token * @return */ public RBACSession getRBACSession(String token); /** * * @param token * @return */ public CiBean getAuthAccount(String token); /** * GraphQuery... * * @param token * @param q * @return */ public Graph queryGraph(String token, GraphQuery q); /** * Job functions... */ /** * Start a manual <em>triggable<em> job. If job is currently running it will be * canceled before started again. * * @param ci */ public IJobStartResult startJob(String token, CiBean job); /** * Cancel an ongoing job. * * @param ci */ public IJobStartResult cancelJob(String token, CiBean job); /** * Reschedule a specific trigger. If trigger is a template all offsprings * will be rescheduled. Triggered jobs that are running will be canceled * before rescheduling. * * @param trigger */ public void reschedualeTrigger(String token, CiBean trigger); /** * Cancel a specific trigger. If trigger is a template all offsprings will be * canceled. * * @param trigger */ public void cancelTrigger(String token, CiBean trigger); /** * Update Service */ /** * Check if an update is available. * The force flag indicates if a new request should be performed * before the method returns. */ public boolean isUpdateAvailable(String token, boolean force); /** * Get the update info data, is a text informing how to update * OneCMDB. One can assume the text to be html formatted. * * The force flag indicates if a new request should be performed * before the method returns. */ public String getUpdateInfo(String token, boolean force); }