osaf/services/saf/smfsv/smfd/SmfUpgradeProcedure.cc | 48 +++++++++++++++++---
1 files changed, 41 insertions(+), 7 deletions(-)
diff --git a/osaf/services/saf/smfsv/smfd/SmfUpgradeProcedure.cc
b/osaf/services/saf/smfsv/smfd/SmfUpgradeProcedure.cc
--- a/osaf/services/saf/smfsv/smfd/SmfUpgradeProcedure.cc
+++ b/osaf/services/saf/smfsv/smfd/SmfUpgradeProcedure.cc
@@ -3137,21 +3137,55 @@ SmfUpgradeProcedure::getImmStepsMergedSi
addProcStep(newStep);
//Fetch callbacks and procedure init/wraup actions.
+ int initActionId = 1;
+ int wrapupActionId = 1;
SmfUpgradeCampaign * camp =
SmfCampaignThread::instance()->campaign()->getUpgradeCampaign();
const std::vector < SmfUpgradeProcedure * >& procedures =
camp->getProcedures();
std::vector < SmfUpgradeProcedure * >::const_iterator proc_iter;
for (proc_iter = procedures.begin(); proc_iter !=
procedures.end(); proc_iter++) {
-
LOG_NO("SmfUpgradeProcedure::getImmStepsMergedSingleStep: Fetch callbacks and
wrapup actions from [%s]", (*proc_iter)->getName().c_str());
-
- //The init actions
+
LOG_NO("SmfUpgradeProcedure::getImmStepsMergedSingleStep: Fetch callbacks and
wrapup actions from [%s]",
+ (*proc_iter)->getName().c_str());
+
+ //The procedure init actions
LOG_NO("Copy the procedure init actions");
addInitActions((*proc_iter)->getInitActions());
-
- //The wrapup actions
+ std::vector <SmfUpgradeAction*>::const_iterator
actioniter;
+ actioniter = getInitActions().begin();
+ while (actioniter != getInitActions().end()) {
+ //For the callback actions, set new calback
procedure pointer
+ const SmfCallbackAction* cbkAction =
+ dynamic_cast<const
SmfCallbackAction*>(*actioniter);
+ if (cbkAction != NULL) {
+
const_cast<SmfCallbackAction*>(cbkAction)->setCallbackProcedure(this);
+ }
+
+ //Renumber action id aviod DN name collision in
the merged procedure rollback data
+ (*actioniter)->changeId(initActionId);
+ initActionId++;
+
+ actioniter++;
+ }
+
+ //The procedure wrapup actions
LOG_NO("Copy the procedure wrapup actions");
addWrapupActions((*proc_iter)->getWrapupActions());
-
- //The callbacks
+ actioniter = getWrapupActions().begin();
+ while (actioniter != getWrapupActions().end()) {
+ //For the callback actions, set new calback
procedure pointer
+ const SmfCallbackAction* cbkAction =
+ dynamic_cast<const
SmfCallbackAction*>(*actioniter);
+ if (cbkAction != NULL) {
+
const_cast<SmfCallbackAction*>(cbkAction)->setCallbackProcedure(this);
+ }
+
+ //Renumber action id aviod DN name collision in
the merged procedure rollback data
+ (*actioniter)->changeId(wrapupActionId);
+ wrapupActionId++;
+
+ actioniter++;
+ }
+
+ //The procedure step callbacks
getCallbackList((*proc_iter)->getUpgradeMethod());
}
}
------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel