From 31b8f05a65e81694b4267d16598773fd2654a4d5 Mon Sep 17 00:00:00 2001 From: "Ruben S. Montero" Date: Sun, 11 Jul 2010 21:20:23 +0200 Subject: [PATCH] feature #201: Use HOST attributes in REQUIREMENTS. Now you can use CLUSTER to filter hosts --- src/scheduler/src/xml/expr_bool.cc | 63 ++++++++++++++++++++---------- src/scheduler/src/xml/expr_bool.y | 63 ++++++++++++++++++++---------- 2 files changed, 84 insertions(+), 42 deletions(-) diff --git a/src/scheduler/src/xml/expr_bool.cc b/src/scheduler/src/xml/expr_bool.cc index f34f5f0159..3d47c3e300 100644 --- a/src/scheduler/src/xml/expr_bool.cc +++ b/src/scheduler/src/xml/expr_bool.cc @@ -1867,22 +1867,29 @@ extern "C" void expr_bool_error( void get_xml_attribute(ObjectXML * oxml, const char* attr, int& val) { - //TODO: pass xpath base - ostringstream xpath_t; - ostringstream xpath_s; - - vector results; - - xpath_t << "/HOST/TEMPLATE/" << attr; - xpath_s << "/HOST/HOST_SHARE/" << attr; - val = 0; + //TODO: pass xpath base + vector results; + ostringstream xpath_t; + + xpath_t << "/HOST/TEMPLATE/" << attr; results = (*oxml)[xpath_t.str().c_str()]; if (results.size() == 0) { + ostringstream xpath_s; + + xpath_s << "/HOST/HOST_SHARE/" << attr; results = (*oxml)[xpath_s.str().c_str()]; + + if (results.size() == 0) + { + ostringstream xpath_h; + + xpath_h << "/HOST/" << attr; + results = (*oxml)[xpath_h.str().c_str()]; + } } if (results.size() != 0) @@ -1894,22 +1901,29 @@ void get_xml_attribute(ObjectXML * oxml, const char* attr, int& val) void get_xml_attribute(ObjectXML * oxml, const char* attr, float& val) { + val = 0.0; + //TODO: pass xpath base ostringstream xpath_t; - ostringstream xpath_s; - vector results; xpath_t << "/HOST/TEMPLATE/" << attr; - xpath_s << "/HOST/HOST_SHARE/" << attr; - - val = 0.0; - results = (*oxml)[xpath_t.str().c_str()]; if (results.size() == 0) { + ostringstream xpath_s; + + xpath_s << "/HOST/HOST_SHARE/" << attr; results = (*oxml)[xpath_s.str().c_str()]; + + if (results.size() == 0) + { + ostringstream xpath_h; + + xpath_h << "/HOST/" << attr; + results = (*oxml)[xpath_h.str().c_str()]; + } } if (results.size() != 0) @@ -1921,22 +1935,29 @@ void get_xml_attribute(ObjectXML * oxml, const char* attr, float& val) void get_xml_attribute(ObjectXML * oxml, const char* attr, string& val) { + val = ""; + //TODO: pass xpath base ostringstream xpath_t; - ostringstream xpath_s; - vector results; xpath_t << "/HOST/TEMPLATE/" << attr; - xpath_s << "/HOST/HOST_SHARE/" << attr; - - val = ""; - results = (*oxml)[xpath_t.str().c_str()]; if (results.size() == 0) { + ostringstream xpath_s; + + xpath_s << "/HOST/HOST_SHARE/" << attr; results = (*oxml)[xpath_s.str().c_str()]; + + if (results.size() == 0) + { + ostringstream xpath_h; + + xpath_h << "/HOST/" << attr; + results = (*oxml)[xpath_h.str().c_str()]; + } } if (results.size() != 0) diff --git a/src/scheduler/src/xml/expr_bool.y b/src/scheduler/src/xml/expr_bool.y index a4298d5d2c..ba22fa034d 100644 --- a/src/scheduler/src/xml/expr_bool.y +++ b/src/scheduler/src/xml/expr_bool.y @@ -188,22 +188,29 @@ extern "C" void expr_bool_error( void get_xml_attribute(ObjectXML * oxml, const char* attr, int& val) { - //TODO: pass xpath base - ostringstream xpath_t; - ostringstream xpath_s; - - vector results; - - xpath_t << "/HOST/TEMPLATE/" << attr; - xpath_s << "/HOST/HOST_SHARE/" << attr; - val = 0; + //TODO: pass xpath base + vector results; + ostringstream xpath_t; + + xpath_t << "/HOST/TEMPLATE/" << attr; results = (*oxml)[xpath_t.str().c_str()]; if (results.size() == 0) { + ostringstream xpath_s; + + xpath_s << "/HOST/HOST_SHARE/" << attr; results = (*oxml)[xpath_s.str().c_str()]; + + if (results.size() == 0) + { + ostringstream xpath_h; + + xpath_h << "/HOST/" << attr; + results = (*oxml)[xpath_h.str().c_str()]; + } } if (results.size() != 0) @@ -215,22 +222,29 @@ void get_xml_attribute(ObjectXML * oxml, const char* attr, int& val) void get_xml_attribute(ObjectXML * oxml, const char* attr, float& val) { + val = 0.0; + //TODO: pass xpath base ostringstream xpath_t; - ostringstream xpath_s; - vector results; xpath_t << "/HOST/TEMPLATE/" << attr; - xpath_s << "/HOST/HOST_SHARE/" << attr; - - val = 0.0; - results = (*oxml)[xpath_t.str().c_str()]; if (results.size() == 0) { + ostringstream xpath_s; + + xpath_s << "/HOST/HOST_SHARE/" << attr; results = (*oxml)[xpath_s.str().c_str()]; + + if (results.size() == 0) + { + ostringstream xpath_h; + + xpath_h << "/HOST/" << attr; + results = (*oxml)[xpath_h.str().c_str()]; + } } if (results.size() != 0) @@ -242,22 +256,29 @@ void get_xml_attribute(ObjectXML * oxml, const char* attr, float& val) void get_xml_attribute(ObjectXML * oxml, const char* attr, string& val) { + val = ""; + //TODO: pass xpath base ostringstream xpath_t; - ostringstream xpath_s; - vector results; xpath_t << "/HOST/TEMPLATE/" << attr; - xpath_s << "/HOST/HOST_SHARE/" << attr; - - val = ""; - results = (*oxml)[xpath_t.str().c_str()]; if (results.size() == 0) { + ostringstream xpath_s; + + xpath_s << "/HOST/HOST_SHARE/" << attr; results = (*oxml)[xpath_s.str().c_str()]; + + if (results.size() == 0) + { + ostringstream xpath_h; + + xpath_h << "/HOST/" << attr; + results = (*oxml)[xpath_h.str().c_str()]; + } } if (results.size() != 0)