osaf/services/saf/amf/amfd/nodegroup.cc |  24 +++++++++++++++---------
 1 files changed, 15 insertions(+), 9 deletions(-)


allow node to be deleted from a nodegroup, even if there are SUs hosted on that 
nodegroup
as long as these SUs are also removed in the same CCB

diff --git a/osaf/services/saf/amf/amfd/nodegroup.cc 
b/osaf/services/saf/amf/amfd/nodegroup.cc
--- a/osaf/services/saf/amf/amfd/nodegroup.cc
+++ b/osaf/services/saf/amf/amfd/nodegroup.cc
@@ -297,6 +297,7 @@
        int add_found = 0;
        int nodes_deleted = 0;
        AVD_AMF_NG *ng;
+       CcbUtilOperationData_t *t_opData;
 
        TRACE_ENTER();
 
@@ -338,21 +339,26 @@
                                /* for all OpenSAF SUs hosted by this node */
                                for (su = node->list_of_ncs_su; su; su = 
su->avnd_list_su_next) {
                                        if 
(su_is_mapped_to_node_via_nodegroup(su, ng)) {
-                                               
report_ccb_validation_error(opdata, "Cannot delete '%s' from '%s'."
-                                                               " An SU is 
mapped using node group",
-                                                               
node->name.value, ng->name.value);
-                                               goto done;
-                                               
+                                               t_opData = 
ccbutil_getCcbOpDataByDN(opdata->ccbId, &su->name);
+                                               if (t_opData == NULL || 
t_opData->operationType != CCBUTIL_DELETE) {
+                                                       
report_ccb_validation_error(opdata, "Cannot delete '%s' from '%s'."
+                                                                       " An SU 
is mapped using node group",
+                                                                       
node->name.value, ng->name.value);
+                                                       goto done;
+                                               }
                                        }
                                }
 
                                /* for all application SUs hosted by this node 
*/
                                for (su = node->list_of_su; su; su = 
su->avnd_list_su_next) {
                                        if 
(su_is_mapped_to_node_via_nodegroup(su, ng)) {
-                                               
report_ccb_validation_error(opdata, "Cannot delete '%s' from '%s'."
-                                                               " An SU is 
mapped using node group",
-                                                               
node->name.value, ng->name.value);
-                                               goto done;
+                                               t_opData = 
ccbutil_getCcbOpDataByDN(opdata->ccbId, &su->name);
+                                               if (t_opData == NULL || 
t_opData->operationType != CCBUTIL_DELETE) {
+                                                       
report_ccb_validation_error(opdata, "Cannot delete '%s' from '%s'."
+                                                                       " An SU 
is mapped using node group",
+                                                                       
node->name.value, ng->name.value);
+                                                       goto done;
+                                               }
                                        }
                                }
                                

------------------------------------------------------------------------------
Monitor Your Dynamic Infrastructure at Any Scale With Datadog!
Get real-time metrics from all of your servers, apps and tools
in one place.
SourceForge users - Click here to start your Free Trial of Datadog now!
http://pubads.g.doubleclick.net/gampad/clk?id=241902991&iu=/4140
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to