Skip to content

Commit 57a3752

Browse files
author
Rafael Rocha
committed
Enable backwards compatibility for CFGI and other configuration files.
Change-Id: Iae866072e6ef3b6325e097d84debdfa20e31c5f7 Signed-off-by: Rafael Rocha <rafael.rocha.vidaurri@intel.com>
1 parent b1fac2f commit 57a3752

File tree

9 files changed

+41
-9
lines changed

9 files changed

+41
-9
lines changed

contrib/platform/intel/hillsboro/orcm-linux.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8" ?>
22
<configuration>
3-
<version>3</version>
3+
<version>3.1</version>
44
<role>RECORD</role>
55
<junction>
66
<type>cluster</type>

orcm/mca/analytics/base/analytics_base_frame.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -237,8 +237,11 @@ static void orcm_analytics_base_load_default_workflows(void)
237237
orcm_value_t *list_item = NULL;
238238
char *file = NULL;
239239

240-
241-
if (NULL == (file = strdup(orcm_cfgi_base.config_file))) {
240+
if( 3 < orcm_cfgi_base.version ) {
241+
if (NULL == (file = strdup(orcm_cfgi_base.config_file))) {
242+
return;
243+
}
244+
} else if (0 > asprintf(&file, "%s/etc/orcm-default-config.xml", opal_install_dirs.prefix)) {
242245
return;
243246
}
244247

orcm/mca/cfgi/base/base.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ typedef struct {
3939
int ping_rate;
4040
bool validate;
4141
char *port_number;
42+
float version;
4243
} orcm_cfgi_base_t;
4344
ORCM_DECLSPEC extern orcm_cfgi_base_t orcm_cfgi_base;
4445

orcm/mca/cfgi/file10/cfgi_file10.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ static int file10_read_version(opal_list_t *result_list, int num_loop)
9797

9898
/*restrict the "version" tag to be checked for one loop */
9999
if (1 < num_loop) {
100+
orcm_cfgi_base.version = 1.0;
100101
return ORCM_SUCCESS;
101102
}
102103

orcm/mca/cfgi/file30/cfgi_file30.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ static void file30_init_error_cleanup(opal_list_t *config)
129129
static int file30_init(void)
130130
{
131131
int ret;
132+
float fversion = 0;
132133

133134
ret = file30_open_config_file();
134135
if (ret != ORCM_SUCCESS) {
@@ -154,12 +155,14 @@ static int file30_init(void)
154155
return return_error(ORCM_ERR_TAKE_NEXT_OPTION, "BAD PARSING OF VERSION DATA");
155156
}
156157

157-
if( '3' != version->value.data.string[0]){
158+
fversion = atof(version->value.data.string);
159+
if( fversion < 3.0 || fversion >= 4.0 ){
158160
opal_output(0, "EXPECTED VERSION 3 NOT FOUND: %s", version->value.data.string);
159161
file30_init_error_cleanup(config);
160162
return return_error(ORCM_ERR_TAKE_NEXT_OPTION, "VERSION 3 NOT FOUND");
161163
}
162164

165+
orcm_cfgi_base.version = fversion;
163166
SAFE_RELEASE_NESTED_LIST(config);
164167
return ORCM_SUCCESS;
165168
}

orcm/mca/sensor/ipmi/ipmi_parser.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,12 @@ ipmiParser::ipmiParser(const string& file)
6464
void ipmiParser::setFile(const string& file)
6565
{
6666
if (file.empty()){
67-
this->file = orcm_cfgi_base.config_file;
67+
if( 3 < orcm_cfgi_base.version ) {
68+
this->file = orcm_cfgi_base.config_file;
69+
} else {
70+
string prefix = (NULL != opal_install_dirs.prefix)? string(opal_install_dirs.prefix) : "";
71+
this->file = prefix + string("/etc/") + string("orcm-default-config.xml");
72+
}
6873
} else {
6974
this->file = file;
7075
}

orcm/mca/sensor/snmp/snmp_parser.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,12 @@ void snmpParser::setParseFile(const string& filePath)
6363
{
6464
unsetParseFile();
6565
if( filePath.empty()){
66-
this->file = orcm_cfgi_base.config_file;
66+
if( 3 < orcm_cfgi_base.version ) {
67+
this->file = orcm_cfgi_base.config_file;
68+
} else {
69+
string prefix = (NULL != opal_install_dirs.prefix)? string(opal_install_dirs.prefix) : "";
70+
this->file = prefix + string("/etc/") + string("orcm-default-config.xml");
71+
}
6772
} else {
6873
file = filePath;
6974
}

orcm/test/mca/sensor/snmp/snmp_parser_tests.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ void ut_snmp_parser_tests::removeTestFiles()
6767

6868
TEST_F(ut_snmp_parser_tests, parse_default_file){
6969
orcm_cfgi_base.config_file = strdup(SNMP_DEFAULT_FILE_NAME);
70+
orcm_cfgi_base.version = 3.1;
7071

7172
snmpParser sp; // It will take the default snmp configuration file.
7273
sp.getSnmpCollectorVector();
@@ -76,6 +77,7 @@ TEST_F(ut_snmp_parser_tests, parse_default_file){
7677

7778
TEST_F(ut_snmp_parser_tests, parse_no_file){
7879
orcm_cfgi_base.config_file = strdup(SNMP_DEFAULT_FILE_NAME);
80+
orcm_cfgi_base.version = 3.1;
7981

8082
char *prefix = opal_install_dirs.prefix;
8183
opal_install_dirs.prefix = NULL;

orcm/util/logical_group.c

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,13 @@ static int orcm_logical_group_init(char *config_file)
129129
int erri = ORCM_SUCCESS;
130130

131131
if (NULL == config_file) {
132-
if (-1 == (erri = asprintf(&(LOGICAL_GROUP.storage_filename),
133-
"%s", orcm_cfgi_base.config_file))) {
132+
if( 3 < orcm_cfgi_base.version ) {
133+
if (-1 == (erri = asprintf(&(LOGICAL_GROUP.storage_filename),
134+
"%s", orcm_cfgi_base.config_file))) {
135+
return ORCM_ERR_OUT_OF_RESOURCE;
136+
}
137+
} else if (-1 == (erri = asprintf(&(LOGICAL_GROUP.storage_filename),
138+
"%s/etc/orcm-default-config.xml", opal_install_dirs.prefix))) {
134139
return ORCM_ERR_OUT_OF_RESOURCE;
135140
}
136141
} else if (NULL == (LOGICAL_GROUP.storage_filename = strdup(config_file))) {
@@ -695,6 +700,7 @@ static int orcm_logical_group_open_file(char *storage_filename)
695700
static int orcm_logical_group_crate_xml_file(char *storage_filename)
696701
{
697702
FILE *storage_fp = NULL;
703+
int res = 0;
698704

699705
if (NULL == storage_filename || '\0' == storage_filename[0]) {
700706
ORCM_UTIL_ERROR_MSG("Bad setup for parsing logical groupings.");
@@ -707,7 +713,13 @@ static int orcm_logical_group_crate_xml_file(char *storage_filename)
707713
return ORCM_ERR_FILE_OPEN_FAILURE;
708714
}
709715
else {
710-
if (0 > fprintf(storage_fp, "<configuration />")) {
716+
if( 3 < orcm_cfgi_base.version ) {
717+
res = fprintf(storage_fp, "<configuration />");
718+
} else {
719+
res = fprintf(storage_fp, "<logicalgroup />");
720+
}
721+
722+
if (0 > res) {
711723
fclose(storage_fp);
712724
return ORCM_ERR_FILE_WRITE_FAILURE;
713725
}

0 commit comments

Comments
 (0)