diff options
Diffstat (limited to 'DAnCE/TargetManager/CmpClient.cpp')
-rw-r--r-- | DAnCE/TargetManager/CmpClient.cpp | 328 |
1 files changed, 190 insertions, 138 deletions
diff --git a/DAnCE/TargetManager/CmpClient.cpp b/DAnCE/TargetManager/CmpClient.cpp index aa0506df858..e788bca57ce 100644 --- a/DAnCE/TargetManager/CmpClient.cpp +++ b/DAnCE/TargetManager/CmpClient.cpp @@ -12,245 +12,297 @@ #include "ciao/Deployment_DataC.h" #include "DAnCE/TargetManager/TargetManagerImplC.h" #include "ace/streams.h" +#include "ace/FILE_IO.h" +#include "ace/FILE_Connector.h" +#include "ace/FILE_Addr.h" +#include "ace/Get_Opt.h" #include "Config_Handlers/DnC_Dump.h" -void write_to_file (::Deployment::Domain domain); - -int main (int argc, char* argv[]) +namespace TM_Tester { - try { - // First initialize the ORB, that will remove some arguments... - CORBA::ORB_var orb = - CORBA::ORB_init (argc, argv, - "" /* the ORB name, it can be anything! */); - - // There must be at least two arguments, the first is the factory - // name, the rest are the names of the stock symbols we want to - // get quotes for. - if (argc < 2) { - cerr << "Usage: " << argv[0] - << " Factory_IOR ..." << endl; - return 1; - } - - // Use the first argument to create the factory object reference, - // in real applications we use the naming service, but let's do - // the easy part first! - CORBA::Object_var factory_object = - orb->string_to_object (argv[1]); - - // Now downcast the object reference to the appropriate type - CIAO::TargetManagerImpl_var targetCmp = - CIAO::TargetManagerImpl::_narrow (factory_object.in ()); - - // Now get the facet reference from the target Manager Component - ACE_DEBUG((LM_DEBUG, "Making a Call to provide_targetMgr ()\n")); - Deployment::TargetManager_ptr targetI = targetCmp->provide_targetMgr (); + void write_to_file (::Deployment::Domain domain); + + const char * stringified_TM_IOR; + bool add_to_domain = true; + bool call_update = false; + const char * host_name; + + + bool parse_args (int argc, char *argv[]) + { + ACE_DEBUG ((LM_DEBUG, "The Parse Agr is called\n")); + ACE_Get_Opt get_opts (argc, argv, "t:u:d"); + int c; + while ((c = get_opts ()) != -1) + switch (c) + { + case 't': + stringified_TM_IOR = get_opts.opt_arg (); + ACE_DEBUG ((LM_DEBUG, "The stringified IOR is [%s]\n",stringified_TM_IOR)); + break; + case 'u': + host_name = get_opts.opt_arg (); + call_update = true; + break; + case 'd': + add_to_domain = false; + break; + case '?': // display help for use of the server. + default: + ACE_ERROR_RETURN ((LM_ERROR, + "usage: %s\n" + "-t <TM_IOR>\n" + "-u <host_name in update>\n" + "-n <delete , default add>\n" + "\n", + argv [0]), + false); + } - // Now make calls on the Target Manager facet + return true; + } +} - try + int main (int argc, char* argv[]) + { + try { + // First initialize the ORB, that will remove some arguments... + CORBA::ORB_var orb = + CORBA::ORB_init (argc, argv, + "" /* the ORB name, it can be anything! */); + + if (!TM_Tester::parse_args (argc, argv)) + return -1; + + // Use the first argument to create the factory object reference, + // in real applications we use the naming service, but let's do + // the easy part first! + CORBA::Object_var factory_object = + orb->string_to_object (TM_Tester::stringified_TM_IOR); + + // Now downcast the object reference to the appropriate type + CIAO::TargetManagerImpl_var targetCmp = + CIAO::TargetManagerImpl::_narrow (factory_object.in ()); + + // Now get the facet reference from the target Manager Component + ACE_DEBUG((LM_DEBUG, "Making a Call to provide_targetMgr ()\n")); + Deployment::TargetManager_ptr targetI = targetCmp->provide_targetMgr (); + + // Now make calls on the Target Manager facet + + try { Deployment::Domain_var domainV = targetI->getAllResources (); ACE_DEBUG ((LM_DEBUG , "\n\nGetAllResources Returned \n")); ::Deployment::DnC_Dump::dump (domainV); } - catch(CORBA::NO_IMPLEMENT &) + catch(CORBA::NO_IMPLEMENT &) { ACE_DEBUG((LM_DEBUG ,"Error:TargetManager:CORBA::NO_IMPLEMENT thrown\n")); } - catch(CORBA::Exception &) + catch(CORBA::Exception &) { ACE_DEBUG((LM_DEBUG ,"Error:TargetManager:CORBA Generic Exception \n")); ACE_DEBUG((LM_DEBUG ,"Error:TargetManager:Exception in TargetManager call\n")); } - // make a call to the commit resources ..... + // make a call to the commit resources ..... - bool resource_available = true; + bool resource_available = true; - ::Deployment::ResourceAllocations resource_seq; + ::Deployment::ResourceAllocations resource_seq; - resource_seq.length (1); + resource_seq.length (1); - resource_seq[0].elementName = CORBA::string_dup ("TargetManagerNode_1"); + resource_seq[0].elementName = CORBA::string_dup ("TargetManagerNode_1"); - resource_seq[0].resourceName = CORBA::string_dup ("Processor"); + resource_seq[0].resourceName = CORBA::string_dup ("Processor"); - resource_seq[0].property.length (1); - resource_seq[0].property[0].name = - CORBA::string_dup ("LoadAverage"); + resource_seq[0].property.length (1); + resource_seq[0].property[0].name = + CORBA::string_dup ("LoadAverage"); - CORBA::Long d = 20; - resource_seq[0].property[0].value <<= d; + CORBA::Long d = 20; + resource_seq[0].property[0].value <<= d; - ::Deployment::ResourceCommitmentManager_ptr manager; + ::Deployment::ResourceCommitmentManager_ptr manager; - try + try { - // targetI->commitResources(plan); manager = targetI->createResourceCommitment (resource_seq); manager->commitResources (resource_seq); ACE_DEBUG ((LM_DEBUG , "\n\ncommitResources Returned \n")); } - catch(CORBA::NO_IMPLEMENT &) + catch(CORBA::NO_IMPLEMENT &) { - cerr << "Error:TargetManager:CORBA::NO_IMPLEMENT thrown" << endl; + ACE_DEBUG ((LM_DEBUG, "Error:TargetManager:CORBA::NO_IMPLEMENT thrown\n")); } - catch (::Deployment::ResourceCommitmentFailure& e) + catch (::Deployment::ResourceCommitmentFailure& e) { resource_available = 0; - cout << "TargetManager commitResources ResourceCommitmentFailure Exception" <<endl; + ACE_DEBUG ((LM_DEBUG, "TargetManager commitResources ResourceCommitmentFailure Exception\n")); ACE_DEBUG ((LM_DEBUG , - "ResourceCommitmentFailure\n reason=[%s]\n elementName=[%s]\n resourceName=[%s]\n propertyName=[%s]\n", - e.reason.in (), - resource_seq[e.index].elementName.in (), - resource_seq[e.index].resourceName.in (), - e.propertyName.in ())); + "ResourceCommitmentFailure\n reason=[%s]\n elementName=[%s]\n resourceName=[%s]\n propertyName=[%s]\n", + e.reason.in (), + resource_seq[e.index].elementName.in (), + resource_seq[e.index].resourceName.in (), + e.propertyName.in ())); } - catch(CORBA::Exception & ex) + catch(CORBA::Exception & ex) { - cout << "Error:TargetManager:commitResources Exception" <<endl; - cout << "Error:TargetManager:CORBA Generic Exception " << endl; - cerr << "Error:TargetManager:Exception in TargetManager call" << ex << endl; + ACE_DEBUG ((LM_DEBUG, "Error:TargetManager:commitResources Exception\n")); + ACE_DEBUG ((LM_DEBUG, "Error:TargetManager:CORBA Generic Exception\n")); + ACE_DEBUG ((LM_DEBUG, "Error:TargetManager:Exception in TargetManager call")); } - // Make a call to release resources , if resource < 0 - try + + // Make a call to release resources , if resource < 0 + try { -// if (!resource_available) - { - d = 10; - resource_seq[0].property[0].value <<= d; - manager->releaseResources (resource_seq); -// targetI->destroyResourceCommitment (manager); - ACE_DEBUG ((LM_DEBUG , "\n\nreleaseResources Returned \n")); - } + { + d = 10; + resource_seq[0].property[0].value <<= d; + manager->releaseResources (resource_seq); + // targetI->destroyResourceCommitment (manager); + ACE_DEBUG ((LM_DEBUG , "\n\nreleaseResources Returned \n")); + } } - catch(CORBA::NO_IMPLEMENT &) + catch(CORBA::NO_IMPLEMENT &) { - cerr << "Error:TargetManager:CORBA::NO_IMPLEMENT thrown" << endl; + ACE_DEBUG ((LM_DEBUG, "Error:TargetManager:CORBA::NO_IMPLEMENT thrown\n")); } - catch (Deployment::ResourceNotAvailable &) + catch (Deployment::ResourceNotAvailable &) { - cout << "Error:TargetManager releaseResources ResourceNotAvailable Exception" <<endl; + ACE_DEBUG ((LM_DEBUG, "Error:TargetManager releaseResources ResourceNotAvailable Exception\n")); } - catch(CORBA::Exception & ex) + catch(CORBA::Exception & ex) { - cout << "Error:TargetManager:releaseResources Exception" <<endl; - cout << "Error:TargetManager:CORBA Generic Exception " << endl; - cerr << "Error:TargetManager:Exception in TargetManager call" << ex << endl; + ACE_DEBUG ((LM_DEBUG, "Error:TargetManager:releaseResources Exception\n")); + ACE_DEBUG ((LM_DEBUG, "Error:TargetManager:CORBA Generic Exception\n")); + ACE_DEBUG ((LM_DEBUG, "Error:TargetManager:Exception in TargetManager call")); } - // Here make a call on the TM with update domain and node deletion + // Here make a call on the TM with update domain and node deletion - ::Deployment::Domain updated; - updated.node.length (1); - updated.node[0].name = CORBA::string_dup (argv[2]); + ::Deployment::Domain updated; + updated.node.length (1); + updated.node[0].name = CORBA::string_dup (TM_Tester::host_name); - ::CORBA::StringSeq elements; - elements.length (0); + ::CORBA::StringSeq elements; + elements.length (0); - bool Add = true; - Add = ACE_OS::atoi (argv[3]); - if (Add) + if (TM_Tester::call_update) { - try + if (TM_Tester::add_to_domain) + { + try { targetI->updateDomain (elements , updated, ::Deployment::Add); } - catch(CORBA::NO_IMPLEMENT &) + catch(CORBA::NO_IMPLEMENT &) { - cerr << "Error:TargetManager:CORBA::NO_IMPLEMENT thrown" << endl; + ACE_DEBUG ((LM_DEBUG, "Error:TargetManager:CORBA::NO_IMPLEMENT thrown\n")); } - catch(CORBA::Exception & ex) + catch(CORBA::Exception & ex) { - cout << "Error:TargetManager:CORBA Generic Exception " << endl; - cerr << "Error:TargetManager:Exception in UpdateDomain call" << ex << endl; + ACE_DEBUG ((LM_DEBUG, "Error:TargetManager:CORBA Generic Exception\n")); + ACE_DEBUG ((LM_DEBUG, "Error:TargetManager:Exception in UpdateDomain call")); } - } - else - { - try + } + else + { + try { targetI->updateDomain (elements , updated, ::Deployment::Delete); } - catch(CORBA::NO_IMPLEMENT &) + catch(CORBA::NO_IMPLEMENT &) { - cerr << "Error:TargetManager:CORBA::NO_IMPLEMENT thrown" << endl; + ACE_DEBUG ((LM_DEBUG, "Error:TargetManager:CORBA::NO_IMPLEMENT thrown\n")); } - catch(CORBA::Exception & ex) + catch(CORBA::Exception & ex) { - cout << "Error:TargetManager:CORBA Generic Exception " << endl; - cerr << "Error:TargetManager:Exception in UpdateDomain call" << ex << endl; + ACE_DEBUG ((LM_DEBUG, "Error:TargetManager:CORBA Generic Exception\n")); + ACE_DEBUG ((LM_DEBUG, "Error:TargetManager:Exception in UpdateDomain call")); } + } } - // Now make a call of getAvailableResources on the TargetManager ... - try + + // Now make a call of getAvailableResources on the TargetManager ... + try { Deployment::Domain_var domainV = targetI->getAvailableResources(); // here write things to file ... - write_to_file (domainV.in()); + TM_Tester::write_to_file (domainV.in()); ACE_DEBUG ((LM_DEBUG , "\n\nGetAvailableResources Returned \n")); ::Deployment::DnC_Dump::dump (domainV); } - catch(CORBA::NO_IMPLEMENT &) + catch(CORBA::NO_IMPLEMENT &) { - cerr << "Error:TargetManager:CORBA::NO_IMPLEMENT thrown" << endl; + ACE_DEBUG ((LM_DEBUG, "Error:TargetManager:CORBA::NO_IMPLEMENT thrown\n")); } - catch(CORBA::Exception & ex) + catch(CORBA::Exception & ex) { - cout << "Error:TargetManager:CORBA Generic Exception " << endl; - cerr << "Error:TargetManager:Exception in TargetManager call" << ex << endl; + ACE_DEBUG ((LM_DEBUG ,"Error:TargetManager:CORBA Generic Exception\n")); + ACE_DEBUG ((LM_DEBUG, "Error:TargetManager:Exception in TargetManager call\n")); } - // Finally destroy the ORB - orb->destroy (); - } - catch (CORBA::Exception & ex) { - cerr << "Error:TargetManager:CORBA exception raised!" << ex << endl; + // Finally destroy the ORB + orb->destroy (); + } + catch (CORBA::Exception & ex) + { + ACE_DEBUG ((LM_DEBUG, "Error:TargetManager:CORBA exception raised!\n")); + } + return 0; } - return 0; -} -void write_to_file (::Deployment::Domain domain) +namespace TM_Tester { - for (size_t i = 0;i < domain.node.length ();i++) + void write_to_file (::Deployment::Domain domain) + { + for (size_t i = 0;i < domain.node.length ();i++) { std::ofstream out (domain.node[i].name.in ()); // write in the node usage ... for (size_t j = 0;j < domain.node[i].resource.length ();j++) - { + { - if (!strcmp (domain.node[i].resource[j].name.in (), "Processor")) - { - CORBA::Double node_cpu; - domain.node[i].resource[j].property[0].value >>= node_cpu; - out << node_cpu << std::endl; - } - if (!strcmp (domain.node[i].resource[j].name.in (), "NA_Monitor")) - { - std::string file_name = "NA_"; - file_name += domain.node[i].name.in (); - std::ofstream na_out (file_name.c_str ()); - CORBA::Double na_node_cpu; - domain.node[i].resource[j].property[0].value >>= na_node_cpu; - na_out << na_node_cpu << std::endl; - na_out.close (); - } + if (!strcmp (domain.node[i].resource[j].name.in (), "Processor")) + { + CORBA::Double node_cpu; + domain.node[i].resource[j].property[0].value >>= node_cpu; + out << node_cpu << std::endl; } + if (!strcmp (domain.node[i].resource[j].name.in (), "NA_Monitor")) + { + std::string file_name = "NA_"; + file_name += domain.node[i].name.in (); + ACE_FILE_IO file_io; + ACE_FILE_Connector (file_io, ACE_FILE_Addr (file_name.c_str ())); + // std::ofstream na_out (file_name.c_str ()); + CORBA::Double na_node_cpu; + domain.node[i].resource[j].property[0].value >>= na_node_cpu; + char buf[BUFSIZ]; + memset (buf , 0 , BUFSIZ); + ACE_OS::sprintf (buf , "%f", na_node_cpu); + file_io.send (buf, ACE_OS::strlen (buf)); +// na_out << na_node_cpu << std::endl; +// na_out.close (); + } + } out.close (); } + } } |