-// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2023 CEA, EDF, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
*/
//=============================================================================
-SALOME_ResourcesManager::SALOME_ResourcesManager(CORBA::ORB_ptr orb, PortableServer::POA_var poa, SALOME_NamingService *ns, const char *xmlFilePath) : _rm(xmlFilePath)
+SALOME_ResourcesManager::SALOME_ResourcesManager(CORBA::ORB_ptr orb,
+ PortableServer::POA_var poa,
+ SALOME_NamingService_Abstract *ns,
+ const char *xmlFilePath)
+: _rm(new ResourcesManager_cpp(xmlFilePath))
{
MESSAGE("SALOME_ResourcesManager constructor");
_NS = ns;
SALOME_ResourcesManager::SALOME_ResourcesManager(CORBA::ORB_ptr orb,
PortableServer::POA_var poa,
- SALOME_NamingService *ns) : _rm()
+ SALOME_NamingService_Abstract *ns) : _rm(new ResourcesManager_cpp())
{
MESSAGE("SALOME_ResourcesManager constructor");
_NS = ns;
PortableServer::ObjectId_var id = _poa->activate_object(this);
CORBA::Object_var obj = _poa->id_to_reference(id);
Engines::ResourcesManager_var refContMan = Engines::ResourcesManager::_narrow(obj);
- _NS->Register(refContMan,_ResourcesManagerNameInNS);
+ if(_NS)
+ _NS->Register(refContMan,_ResourcesManagerNameInNS);
MESSAGE("SALOME_ResourcesManager constructor end");
}
void SALOME_ResourcesManager::Shutdown()
{
MESSAGE("Shutdown");
+ if(!_NS)
+ return ;
_NS->Destroy_Name(_ResourcesManagerNameInNS);
PortableServer::ObjectId_var oid = _poa->servant_to_id(this);
_poa->deactivate_object(oid);
}
/*!
- * Return list of resources available (regarding content of CatalogResources.xml). And for each resource the number of proc available of it.
+ * Return list of resources available (regarding content of CatalogResources.xml) but select only those with canRunContainers attribute set to true.
+ * And for each resource the number of proc available of it.
+ *
+ * \sa SALOME_ResourcesManager::ListAllResourcesInCatalog
*/
void SALOME_ResourcesManager::ListAllAvailableResources(Engines::ResourceList_out machines, Engines::IntegerList_out nbProcsOfMachines)
{
- const MapOfParserResourcesType& zeList(_rm.GetList());
- std::size_t sz(zeList.size());
- std::vector<std::string> ret0(sz);
- std::vector<int> ret1(sz);
+ const MapOfParserResourcesType& zeList(_rm->GetList());
+ std::vector<std::string> ret0;
+ std::vector<int> ret1;
+ for(MapOfParserResourcesType::const_iterator it=zeList.begin();it!=zeList.end();it++)
{
- std::size_t i(0);
- for(MapOfParserResourcesType::const_iterator it=zeList.begin();it!=zeList.end();it++,i++)
- {
- const ParserResourcesType& elt((*it).second);
- ret0[i]=elt.HostName;
- //ret1[i]=elt.nbOfProc;
- ret1[i]=elt.DataForSort._nbOfNodes*elt.DataForSort._nbOfProcPerNode;
- }
+ const ParserResourcesType& elt((*it).second);
+ if(elt.can_run_containers)
+ {
+ ret0.push_back(elt.HostName);
+ ret1.push_back(elt.DataForSort._nbOfNodes*elt.DataForSort._nbOfProcPerNode);
+ }
}
machines=new Engines::ResourceList;
nbProcsOfMachines=new Engines::IntegerList;
- machines->length(sz); nbProcsOfMachines->length(sz);
+ std::size_t sz(ret0.size());
+ machines->length((CORBA::ULong)sz); nbProcsOfMachines->length((CORBA::ULong)sz);
for(std::size_t j=0;j<sz;j++)
{
- (*machines)[j]=CORBA::string_dup(ret0[j].c_str());
- (*nbProcsOfMachines)[j]=ret1[j];
+ (*machines)[(CORBA::ULong)j]=CORBA::string_dup(ret0[j].c_str());
+ (*nbProcsOfMachines)[(CORBA::ULong)j]=ret1[j];
}
}
+/*!
+ * Return list of resources available (regarding content of CatalogResources.xml) whatever canRunContainers attribute value.
+ *
+ * \sa SALOME_ResourcesManager::ListAllAvailableResources
+ */
+Engines::ResourceList *SALOME_ResourcesManager::ListAllResourcesInCatalog()
+{
+ const MapOfParserResourcesType& zeList(_rm->GetList());
+ auto sz = zeList.size();
+ Engines::ResourceList *ret(new Engines::ResourceList);
+ ret->length( sz );
+ CORBA::ULong i(0);
+ for(auto it : zeList)
+ {
+ (*ret)[i++] = CORBA::string_dup( it.second.HostName.c_str() );
+ }
+ return ret;
+}
+
//=============================================================================
//! get the name of resources fitting the specified constraints (params)
/*!
try
{
// Call C++ ResourceManager
- std::vector <std::string> vec = _rm.GetFittingResources(p);
+ std::vector <std::string> vec = _rm->GetFittingResources(p);
// C++ -> CORBA
ret = resourceList_CPPtoCORBA(vec);
// CORBA -> C++
std::vector<std::string> rl = resourceList_CORBAtoCPP(listOfResources);
- return CORBA::string_dup(_rm.Find("first", rl).c_str());
+ return CORBA::string_dup(_rm->Find("first", rl).c_str());
}
char *
// CORBA -> C++
std::vector<std::string> rl = resourceList_CORBAtoCPP(listOfResources);
- return CORBA::string_dup(_rm.Find(policy, rl).c_str());
+ return CORBA::string_dup(_rm->Find(policy, rl).c_str());
}
Engines::ResourceDefinition*
{
Engines::ResourceDefinition_var resDef;
try {
- ParserResourcesType resource = _rm.GetResourcesDescr(name);
+ ParserResourcesType resource = _rm->GetResourcesDescr(name);
resDef = resourceDefinition_CPPtoCORBA(resource);
} catch (const exception & ex) {
INFOS("Caught exception in GetResourceDefinition: " << ex.what());
try
{
ParserResourcesType resource = resourceDefinition_CORBAtoCPP(new_resource);
- _rm.AddResourceInCatalog(resource);
+ _rm->AddResourceInCatalog(resource);
if (write)
{
- _rm.WriteInXmlFile(std::string(xml_file));
- _rm.ParseXmlFiles();
+ _rm->WriteInXmlFile(std::string(xml_file));
+ _rm->ParseXmlFiles();
}
}
catch (const SALOME_Exception & e)
INFOS("Error in AddResourceInCatalog: " << e);
THROW_SALOME_CORBA_EXCEPTION(e.what(), SALOME::BAD_PARAM);
}
+ catch (const ResourcesException & e)
+ {
+ INFOS("Error in AddResourceInCatalog: " << e.msg);
+ THROW_SALOME_CORBA_EXCEPTION(e.msg.c_str(), SALOME::BAD_PARAM);
+ }
}
void
{
try
{
- _rm.DeleteResourceInCatalog(resource_name);
+ _rm->DeleteResourceInCatalog(resource_name);
}
catch (const SALOME_Exception & e)
{
if (write)
{
- _rm.WriteInXmlFile(std::string(xml_file));
- _rm.ParseXmlFiles();
+ _rm->WriteInXmlFile(std::string(xml_file));
+ _rm->ParseXmlFiles();
}
}
if (std::string(parallelLib) == "Dummy")
{
MESSAGE("[getMachineFile] parallelLib is Dummy");
- MapOfParserResourcesType resourcesList = _rm.GetList();
+ MapOfParserResourcesType resourcesList = _rm->GetList();
if (resourcesList.find(std::string(resource_name)) != resourcesList.end())
{
ParserResourcesType resource = resourcesList[std::string(resource_name)];
{
MESSAGE("[getMachineFile] parallelLib is Mpi");
- MapOfParserResourcesType resourcesList = _rm.GetList();
+ MapOfParserResourcesType resourcesList = _rm->GetList();
if (resourcesList.find(std::string(resource_name)) != resourcesList.end())
{
ParserResourcesType resource = resourcesList[std::string(resource_name)];