1 // Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22 #ifndef _SALOME_CONTAINERMANAGER_IDL_
23 #define _SALOME_CONTAINERMANAGER_IDL_
25 #include "SALOME_Exception.idl"
26 #include "SALOME_Component.idl"
28 /*! \file SALOME_ContainerManager.idl \brief interfaces for %SALOME launcher and container manager
34 //! Type to transmit list of machines.
35 typedef sequence<string> MachineList;
37 typedef sequence<string> CompoList;
39 typedef sequence<string> FilesList;
41 typedef sequence<string> ModulesList;
43 //! Type to describe required properties of a container.
44 struct MachineParameters
46 //! container name if given else automatic
47 string container_name;
48 //! host name if given else automatic
50 //! if given alias name to use ??
52 //! protocol to use to start a remote container (ssh or rsh)
54 //! login name to use to start a remote container
56 //! salome application to use to start a remote container
60 //! required memory size
62 //! required frequency
64 //! required number of proc per node
65 long nb_proc_per_node;
66 //! required number of node
68 //! if true start a MPI container ??
70 //! required MPI implementation to use
72 //! required batch system to use
74 //! container working directory
77 // PaCO specific informations
79 long nb_component_nodes;
82 //! Type to describe properties of a resource.
83 struct MachineDefinition
88 //! protocol to use to start a remote container (ssh or rsh)
90 //! login name to use to start a remote container
92 //! salome application to use to start a remote container
94 //! list of available components
95 CompoList componentList;
102 //! number of proc per node
103 long nb_proc_per_node;
106 //! MPI implementation
110 long nb_component_nodes;
112 //! exception thrown if a computer is not found in the catalog
113 exception NotFound {};
115 //! enumeration to set a resource management policy
117 //! first machine in the list of admissible computers
119 //! next machine in the list of admissible computers
121 //! best machine in the list of admissible computers
123 //! resource management policy
124 typedef policy ResPolicy;
126 //! Structure used for Salome Batch Job parameters
127 struct BatchParameters
129 //! Where batch command will be launched and log files will be created
130 string batch_directory;
131 //! Time for the batch (has to be like this : hh:mm)
132 string expected_during_time;
133 //! Minimum of memory needed (has to be like : 32gb or 512mb)
135 //! Number of processors requested
139 /*! \brief Interface of the %salomelauncher
140 This interface is used for interaction with the unique instance
143 interface SalomeLauncher
145 long submitJob( in string xmlExecuteFile,
146 in string clusterName ) raises (SALOME::SALOME_Exception);
147 long submitSalomeJob( in string fileToExecute,
148 in FilesList filesToExport,
149 in FilesList filesToImport,
150 in BatchParameters batch_params,
151 in MachineParameters params ) raises (SALOME::SALOME_Exception);
152 string queryJob( in long jobId, in MachineParameters params ) raises (SALOME::SALOME_Exception);
153 void deleteJob( in long jobId, in MachineParameters params ) raises (SALOME::SALOME_Exception);
154 void getResultsJob( in string directory, in long jobId, in MachineParameters params ) raises (SALOME::SALOME_Exception);
156 boolean testBatch(in MachineParameters params) raises (SALOME::SALOME_Exception);
164 /*! \brief Interface of the %containerManager
165 This interface is used for interaction with the unique instance
168 interface ContainerManager
170 //! Find an existing container satisfying the constraints given by input parameters or start a new one.
171 Container FindOrStartContainer( in MachineParameters params,
172 in MachineList possibleComputers);
174 //! This operation launches a PaCO++ container.
177 \param Description of the container resquested.
178 \param List of computers ressources.
180 \return Container's CORBA reference.
182 Container FindOrStartParallelContainer( in MachineParameters params,
183 in MachineList possibleComputers);
185 //! Start a new container satisfying the constraints given by input parameters.
186 Container StartContainer( in MachineParameters params,
188 in CompoList componentList );
190 //! Same as StartContainer except that in batch all containers have already been launched
193 We are in batch if environment variable SALOME_BATCH is 1.
194 In this case, containers have been launched at the beginning of the Salome session and
195 the container manager picks one in the pool of existing containers.
197 Container GiveContainer( in MachineParameters params,
199 in CompoList componentList );
201 //! Shutdown all containers that have been launched by the container manager
202 void ShutdownContainers();
206 /*! \brief Interface of the %resourcesManager
207 This interface is used for interaction with the unique instance
210 interface ResourcesManager
212 //! Find first available computer in a computers list
213 string FindFirst(in MachineList possibleComputers);
215 //! Get a list of computers that are best suited to launch a container given constraints
218 The constraints are resource constraints (params) and components constraints (componentList)
220 MachineList GetFittingResources( in MachineParameters params,
221 in CompoList componentList )
222 raises (SALOME::SALOME_Exception);
224 //! Get the current machine parameters of a computer
225 MachineDefinition GetMachineParameters( in string hostname );