I worked through this issue with John Simpson and his new configfpc code, but it seems the problem may actually be a bug in xcatd.
In configfpc, there are several subreq calls to rspconfig using Utils::runxcmd. The node that is being processed needs to be handled by ipmi.pm. For other reasons, both ipmi.pm and blade.pm have a handled_commands entry for nodes with mgt=ipmi. The preprocess_request in each of these routines calls Utils::filter_nodes to determine the correct plugin to actually handle the request.
HOWEVER, this is the processing that actually occurs:
- configfpc calls rspconfig through runxcmd
- xcatd sees that ipmi.pm needs to be called. since this is a new subreq, it calls ipmi.pm preprocess_request to filter_nodes, which determines that it should handle this node, and ipmi process_request is called
- xcatd then sees that blade.pm needs to be called. Since _xcatpreprocessed was already set by ipmi.pm, xcatd goes straight to process_request in blade.pm, skipping the code in preprocess_request to call filter_nodes which would have filtered out this node, preventing blade.pm from handling it. Instead, blade.pm fails with all kinds of errors running code it should not be executing for this node.
In order to allow John to get his code checked in for the final xCAT 2.8.3 build, he is HACKING his runxcmd call to set "subreq->sequential='1'. This will force xcatd to process the plugins for rspconfig in sequential alphabetical order. This in turn will force blade.pm to run first and skip the node, then have ipmi.pm run to actually handle the function.
I think the correct fix for this is to change xcatd processing for multiple plugins. If the initial request comes in requiring preprocess to run, preprocess should run for ALL of the plugins that are called for that command. I think this change may be important for hierarchy to work correctly as well, since each plugin may have different hierarchy calls that need to be made for the given nodelist.
Er Tao - Bruce said that you put the multiple plugin processing for rspconfig into blade.pm and ipmi.pm. Did you also make the corresponding xcatd changes? If not, this defect may need to get reassigned to someone else.