Ack Thanks Lennart
> -----Original Message----- > From: reddy.neelaka...@oracle.com [mailto:reddy.neelaka...@oracle.com] > Sent: den 2 december 2016 11:52 > To: Tai Chi Dinh <tai.d...@dektech.com.au>; Lennart Lund > <lennart.l...@ericsson.com>; Rafael Odzakow > <rafael.odza...@ericsson.com> > Cc: opensaf-devel@lists.sourceforge.net > Subject: [PATCH 1 of 1] smf:Allow optimization at node level forAddRemove > in mergeStepIntoSingle[#2214] > > osaf/services/saf/smfsv/smfd/SmfUpgradeProcedure.cc | 40 > ++++++++++++++++++++- > 1 files changed, 39 insertions(+), 1 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 > @@ -1381,6 +1381,44 @@ SmfUpgradeProcedure::mergeStepIntoSingle > } > } > > + // For forAddRemove AU/DU the node level AU/DU will be > optimized with other rolling/formodify proceduers. > + // Because node will never be optimized away. > + // But AU/DU at SU/Comp will not be optimized for AddRemove and > will be as is, because there is a chance that > + // Su/comp can be removed if they are in the scope of the node/Su. > + > + std::list < unitNameAndState >::iterator addRemoveUnit_iter, > nodeLevel_iter; > + for (addRemoveUnit_iter = forAddRemoveAU.begin(); > addRemoveUnit_iter != forAddRemoveAU.end(); ) { > + for (nodeLevel_iter = nodeLevelDU.begin(); > nodeLevel_iter!= nodeLevelDU.end(); nodeLevel_iter++) { > + if ((*addRemoveUnit_iter).name == > (*nodeLevel_iter).name){ > + //if item is already presented in > nodeLevelDU, erase it from the forAddRemove list > + LOG_NO("[%s] is already presented in the > merged DU list, remove it from forAddRemoveAU list", > + > (*addRemoveUnit_iter).name.c_str()); > + addRemoveUnit_iter = > forAddRemoveAU.erase(addRemoveUnit_iter); > + break; > + } > + } > + if(nodeLevel_iter == nodeLevelDU.end()){ > + addRemoveUnit_iter++; > + } > + } > + > + > + for (addRemoveUnit_iter = forAddRemoveDU.begin(); > addRemoveUnit_iter != forAddRemoveDU.end(); ) { > + for (nodeLevel_iter = nodeLevelDU.begin(); nodeLevel_iter > != nodeLevelDU.end(); nodeLevel_iter++) { > + if ((*addRemoveUnit_iter).name == > (*nodeLevel_iter).name){ > + //if item is already presented in > nodeLevelDU, erase it from the forAddRemove list > + LOG_NO("[%s] is already presented in the > merged DU list, remove it from forAddRemoveDU list", > + > (*addRemoveUnit_iter).name.c_str()); > + addRemoveUnit_iter = > forAddRemoveDU.erase(addRemoveUnit_iter); > + break; > + } > + } > + if(nodeLevel_iter == nodeLevelDU.end()){ > + addRemoveUnit_iter++; > + } > + } > + > + > newStep->addDeactivationUnits(nodeLevelDU); //Add the node level > DU > newStep->addDeactivationUnits(suLevelDU); //Add the SU level > DU > newStep->addDeactivationUnits(tmpDU); //Add the comp level > DU > @@ -1388,7 +1426,7 @@ SmfUpgradeProcedure::mergeStepIntoSingle > newStep->addActivationUnits(suLevelDU); //Rolling and forModify > are symetric, Add the SU level DU > newStep->addActivationUnits(tmpDU); //Rolling and forModify > are > symetric, Add the comp level DU > > - //Copy the forAddRemove AU/DU into the lists as is. They must be run > as specified in the campaign. > + //Copy the forAddRemove AU/DU(except the optimized nodes) into > the lists as is. They must be run as specified in the campaign. > newStep->addDeactivationUnits(forAddRemoveDU); > newStep->addActivationUnits(forAddRemoveAU); > ------------------------------------------------------------------------------ Developer Access Program for Intel Xeon Phi Processors Access to Intel Xeon Phi processor-based developer platforms. With one year of Intel Parallel Studio XE. Training and support from Colfax. Order your platform today.http://sdm.link/xeonphi _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel