// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License. // // This library 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 // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef _SALOME_CONTAINERMANAGER_IDL_ #define _SALOME_CONTAINERMANAGER_IDL_ #include "SALOME_Exception.idl" #include "SALOME_Component.idl" module Engines { /*! Type to transmit list of machines. */ typedef sequence MachineList; typedef sequence CompoList; typedef sequence FilesList; typedef sequence ModulesList; /*! Type to describe properties of resource. */ struct MachineParameters { string container_name; string hostname; string alias; string protocol; string username; string applipath; ModulesList modList; string OS; long mem_mb; long cpu_clock; long nb_proc_per_node; long nb_node; boolean isMPI; string mpiImpl; string batch; string workingdir; // PaCO specific informations string parallelLib; long nb_component_nodes; }; /*! exception thrown if a computer is not found in the catalog */ exception NotFound {}; enum policy {P_FIRST,P_CYCL,P_BEST}; typedef policy ResPolicy; /*! Structure used for Salome Batch Job parameters */ struct BatchParameters { string batch_directory; // Where batch command will be launched // and log files will be created string expected_during_time; // Time for the batch // has to be like this : hh:mm string mem; // Minimum of memory needed // has to be like : 32gb or 512mb long nb_proc; // Number of processors requested }; /*! \brief Interface of the %salomelauncher This interface is used for interaction with the unique instance of SalomeLauncher */ interface SalomeLauncher { long submitSalomeJob( in string fileToExecute, in FilesList filesToExport, in FilesList filesToImport, in BatchParameters batch_params, in MachineParameters params ) raises (SALOME::SALOME_Exception); string querySalomeJob( in long jobId, in MachineParameters params ) raises (SALOME::SALOME_Exception); void deleteSalomeJob( in long jobId, in MachineParameters params ) raises (SALOME::SALOME_Exception); void getResultSalomeJob( in string directory, in long jobId, in MachineParameters params ) raises (SALOME::SALOME_Exception); boolean testBatch(in MachineParameters params) raises (SALOME::SALOME_Exception); void Shutdown(); long getPID(); } ; /*! \brief Interface of the %containerManager This interface is used for interaction with the unique instance of ContainerManager */ interface ContainerManager { Container FindOrStartContainer( in MachineParameters params, in MachineList possibleComputers); /*! This operation launches a PaCO++ container. \param Description of the container resquested. \param List of computers ressources. \return Container's CORBA reference. */ Container FindOrStartParallelContainer( in MachineParameters params, in MachineList possibleComputers); Container StartContainer( in MachineParameters params, in ResPolicy policy, in CompoList componentList ); Container GiveContainer( in MachineParameters params, in ResPolicy policy, in CompoList componentList ); void ShutdownContainers(); } ; /*! \brief Interface of the %resourcesManager This interface is used for interaction with the unique instance of ResourcesManager */ interface ResourcesManager { string FindFirst(in MachineList possibleComputers); MachineList GetFittingResources( in MachineParameters params, in CompoList componentList ) raises (SALOME::SALOME_Exception); MachineParameters GetMachineParameters( in string hostname ); } ; }; #endif