[devel] [PATCH 1/1] pyosaf: refactor IMM utils [#2683]

2017-12-05 Thread Hieu Nguyen
+ improve OI utils use a separate instance OM agent
+ refactor OM utils with Ccb inheritace OmAgent, rename some classes...
---
 python/pyosaf/utils/immoi/__init__.py| 531 +++
 python/pyosaf/utils/immoi/agent.py   | 473 +++
 python/pyosaf/utils/immoi/implementer.py | 141 
 python/pyosaf/utils/immom/__init__.py|   7 +-
 python/pyosaf/utils/immom/accessor.py|  31 +-
 python/pyosaf/utils/immom/agent.py   |  31 +-
 python/pyosaf/utils/immom/ccb.py |  71 +
 python/pyosaf/utils/immom/iterator.py|   4 +-
 python/pyosaf/utils/immom/object.py  |   4 +-
 9 files changed, 736 insertions(+), 557 deletions(-)
 create mode 100644 python/pyosaf/utils/immoi/agent.py

diff --git a/python/pyosaf/utils/immoi/__init__.py 
b/python/pyosaf/utils/immoi/__init__.py
index 1b4dece..7247b0e 100644
--- a/python/pyosaf/utils/immoi/__init__.py
+++ b/python/pyosaf/utils/immoi/__init__.py
@@ -22,298 +22,23 @@ Supported functions:
 - Set/clear/release implementer for class/object
 - Create/delete/update runtime object
 - Get class/object attributes
-- Get IMM error strings
+- Get/set IMM error strings
+- Get parent for dn
+- Get class for dn
+- Get objects for class
+- Get available classes of IMM
 """
 from __future__ import print_function
-from copy import deepcopy
-from ctypes import c_char_p, c_void_p, cast, pointer
-
-from pyosaf.saAis import SaStringT, SaVersionT, SaNameT, SaSelectionObjectT, \
-unmarshalSaStringTArray, eSaDispatchFlagsT, eSaAisErrorT
-from pyosaf import saImm, saImmOi
-from pyosaf.saImm import unmarshalSaImmValue, SaImmAttrNameT,  \
-SaImmAttrValuesT_2, SaImmClassNameT, SaImmSearchParametersT_2, \
-eSaImmValueTypeT, SaImmAttrDefinitionT_2, SaImmClassCategoryT, \
-SaImmAttrModificationT_2, eSaImmAttrModificationTypeT
-from pyosaf.saImmOi import SaImmOiHandleT, SaImmOiImplementerNameT
-from pyosaf.utils import immom, log_err, bad_handle_retry, decorate, \
-deprecate, initialize_decorate, SafException
+
+from pyosaf.saAis import SaSelectionObjectT, eSaAisErrorT
+from pyosaf.utils import deprecate, SafException
 from pyosaf.utils.immom.object import ImmObject
-from pyosaf.utils.immom.ccb import marshal_c_array
-from pyosaf.utils.immom.iterator import SearchIterator
+from pyosaf.utils.immoi.agent import OiAgent
 
 
-OPENSAF_IMM_OBJECT = "opensafImm=opensafImm,safApp=safImmService"
 _oi_agent = None
 
 
-# Decorate pure saImmOi* API's with error-handling retry and exception raising
-saImmOiInitialize_2 = initialize_decorate(saImmOi.saImmOiInitialize_2)
-saImmOiSelectionObjectGet = decorate(saImmOi.saImmOiSelectionObjectGet)
-saImmOiDispatch = decorate(saImmOi.saImmOiDispatch)
-saImmOiFinalize = decorate(saImmOi.saImmOiFinalize)
-saImmOiImplementerSet = decorate(saImmOi.saImmOiImplementerSet)
-saImmOiImplementerClear = decorate(saImmOi.saImmOiImplementerClear)
-saImmOiClassImplementerSet = decorate(saImmOi.saImmOiClassImplementerSet)
-saImmOiClassImplementerRelease = \
-decorate(saImmOi.saImmOiClassImplementerRelease)
-saImmOiObjectImplementerSet = decorate(saImmOi.saImmOiObjectImplementerSet)
-saImmOiObjectImplementerRelease = \
-decorate(saImmOi.saImmOiObjectImplementerRelease)
-saImmOiRtObjectCreate_2 = decorate(saImmOi.saImmOiRtObjectCreate_2)
-saImmOiRtObjectDelete = decorate(saImmOi.saImmOiRtObjectDelete)
-saImmOiRtObjectUpdate_2 = decorate(saImmOi.saImmOiRtObjectUpdate_2)
-saImmOiAdminOperationResult = decorate(saImmOi.saImmOiAdminOperationResult)
-saImmOiAdminOperationResult_o2 = \
-decorate(saImmOi.saImmOiAdminOperationResult_o2)
-saImmOiAugmentCcbInitialize = decorate(saImmOi.saImmOiAugmentCcbInitialize)
-saImmOiCcbSetErrorString = decorate(saImmOi.saImmOiCcbSetErrorString)
-
-
-class OiAgent(object):
-""" This class acts as a high-level OI agent, providing OI functions to
-the users as a higher level, and relieving the users of the need to manage
-the life cycle of the OI agent and providing general interface for
-Implementer or Applier used
-"""
-def __init__(self, version=None):
-""" Constructor for OiAgent class
-
-Args:
-version (SaVersionT): OI API version
-"""
-self.handle = None
-self.init_version = version if version is not None \
-else SaVersionT('A', 2, 15)
-self.version = None
-self.selection_object = None
-self.callbacks = None
-global _oi_agent
-_oi_agent = self
-
-def _fetch_sel_obj(self):
-""" Obtain a selection object (OS file descriptor)
-
-Returns:
-SaAisErrorT: Return code of the saImmOiSelectionObjectGet() API
-"""
-rc = saImmOiSelectionObjectGet(self.handle, self.selection_object)
-if rc != eSaAisErrorT.SA_AIS_OK:
-log_err("saImmOiSelectionObjectGet FAILED - %s" %
-eSaAisErrorT.whatis(rc))
-
-return rc
-
-def initialize(self, 

[devel] [PATCH 0/1] Review Request for pyosaf: refactor IMM utils [#2683]

2017-12-05 Thread Hieu Nguyen
Summary: pyosaf: refactor IMM utils [#2683]
Review request for Ticket(s): 2683
Peer Reviewer(s): Hans, Anders, Sir
Pull request to: Hans or Anders
Affected branch(es): develop
Development branch: ticket-2683
Base revision: 9ab54933456632260be87c2c763bd36b1ab7e5d2
Personal repository: git://git.code.sf.net/u/dhiengu/review


Impacted area   Impact y/n

 Docsn
 Build systemn
 RPM/packaging   n
 Configuration files n
 Startup scripts n
 SAF servicesn
 OpenSAF servicesn
 Core libraries  n
 Samples n
 Tests   n
 Other   y


Comments (indicate scope for each "y" above):
-

revision fc12344a5085f03b0efe7a9f09ef940def56b18f
Author: Hieu Nguyen 
Date:   Wed, 6 Dec 2017 09:28:50 +0700

pyosaf: refactor IMM utils [#2683]

+ improve OI utils use a separate instance OM agent
+ refactor OM utils with Ccb inheritace OmAgent, rename some classes...



Added Files:

 python/pyosaf/utils/immoi/agent.py


Complete diffstat:
--
 python/pyosaf/utils/immoi/__init__.py| 531 +++
 python/pyosaf/utils/immoi/agent.py   | 473 +++
 python/pyosaf/utils/immoi/implementer.py | 141 
 python/pyosaf/utils/immom/__init__.py|   7 +-
 python/pyosaf/utils/immom/accessor.py|  31 +-
 python/pyosaf/utils/immom/agent.py   |  31 +-
 python/pyosaf/utils/immom/ccb.py |  71 +
 python/pyosaf/utils/immom/iterator.py|   4 +-
 python/pyosaf/utils/immom/object.py  |   4 +-
 9 files changed, 736 insertions(+), 557 deletions(-)


Testing Commands:
-


Testing, Expected Results:
--
Use /samples to test for IMM utils


Conditions of Submission:
-
Ack from reviewers.


Arch  Built StartedLinux distro
---
mipsn  n
mips64  n  n
x86 n  n
x86_64  y  y
powerpc n  n
powerpc64   n  n


Reviewer Checklist:
---
[Submitters: make sure that your review doesn't trigger any checkmarks!]


Your checkin has not passed review because (see checked entries):

___ Your RR template is generally incomplete; it has too many blank entries
that need proper data filled in.

___ You have failed to nominate the proper persons for review and push.

___ Your patches do not have proper short+long header

___ You have grammar/spelling in your header that is unacceptable.

___ You have exceeded a sensible line length in your headers/comments/text.

___ You have failed to put in a proper Trac Ticket # into your commits.

___ You have incorrectly put/left internal data in your comments/files
(i.e. internal bug tracking tool IDs, product names etc)

___ You have not given any evidence of testing beyond basic build tests.
Demonstrate some level of runtime or other sanity testing.

___ You have ^M present in some of your files. These have to be removed.

___ You have needlessly changed whitespace or added whitespace crimes
like trailing spaces, or spaces before tabs.

___ You have mixed real technical changes with whitespace and other
cosmetic code cleanup changes. These have to be separate commits.

___ You need to refactor your submission into logical chunks; there is
too much content into a single commit.

___ You have extraneous garbage in your review (merge commits etc)

___ You have giant attachments which should never have been sent;
Instead you should place your content in a public tree to be pulled.

___ You have too many commits attached to an e-mail; resend as threaded
commits, or place in a public tree for a pull.

___ You have resent this content multiple times without a clear indication
of what has changed between each re-send.

___ You have failed to adequately and individually address all of the
comments and change requests that were proposed in the initial review.

___ You have a misconfigured ~/.gitconfig file (i.e. user.name, user.email etc)

___ Your computer have a badly configured date and time; confusing the
the threaded patch review.

___ Your changes affect IPC mechanism, and you don't present any results
for in-service upgradability test.

___ Your changes affect user manual and documentation, your patch series
do not contain the patch that updates the Doxygen manual.


--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net

Re: [devel] [PATCH 1/1] ntf: fix ntfd remove client in standby node while not finalize in active node [#2705]

2017-12-05 Thread Minh Hon Chau

Hi Canh,

I got a build error with 32 bit

src/ntf/ntfd/ntfs_com.c: In function ‘sendNtfaDownUpdate’:
src/ntf/ntfd/ntfs_com.c:562:2: error: format ‘%ld’ expects argument of type 
‘long int’, but argument 6 has type ‘MDS_DEST’ [-Werror=format=]
  TRACE_ENTER2("mdsDest: %ld", mdsDest);
  ^
cc1: all warnings being treated as errors
make[2]: *** [src/ntf/ntfd/bin_osafntfd-ntfs_com.o] Error 1

And another question, with this patch the standby NTFD will no longer delete 
client in proc_ntfa_updn_mds_msg(), it will memorize the client to down_list. 
So in the situation of this ticket, the standby will have sequence of msg as 
below:

1 -> receive checkpoint of finalize
2 -> receive checkpoint of client_down
3 -> receive checkpoint of initialize
4 -> process proc_ntfa_updn_mds_msg, which comes from MDS and sent to mailbox 
before checkpoint of finalize. So we just add the client to down_list, that will 
avoid the error in this ticket, but we are adding a client that had been down?

Thanks,
Minh


On 01/12/17 17:17, Canh Van Truong wrote:

The issue happen because the clients are removed in both active and standby 
node when getting
NCSMDS_DOWN event. In standby node, ntfd get NCSMDS_DOWN event is slower than 
next initialize request.
This cause the ntfd will removed all client from data base including new client 
of next initialze.
Any action relate to this client will fail.

The fixing is that when getting NCSMDS_DOWN event, ntfd remove client in active 
node but does not remove
client in standby node. At standby node, ntfd will remove client when process 
the checkpoint of NCSMDS_DOWN event.
---
  src/ntf/ntfd/NtfAdmin.cc  | 89 +++
  src/ntf/ntfd/NtfAdmin.h   | 11 --
  src/ntf/ntfd/ntfs_com.c   | 15 
  src/ntf/ntfd/ntfs_com.h   |  4 +++
  src/ntf/ntfd/ntfs_evt.c   | 17 +++--
  src/ntf/ntfd/ntfs_mbcsv.c | 39 +++--
  6 files changed, 169 insertions(+), 6 deletions(-)

diff --git a/src/ntf/ntfd/NtfAdmin.cc b/src/ntf/ntfd/NtfAdmin.cc
index dad00383d..aa616d7ee 100644
--- a/src/ntf/ntfd/NtfAdmin.cc
+++ b/src/ntf/ntfd/NtfAdmin.cc
@@ -467,6 +467,80 @@ void NtfAdmin::clientRemoveMDS(MDS_DEST mds_dest) {
  }
  
  /**

+ * Checking if the ntf agent with MDS_DEST is valid
+ *
+ * @param agent_dest
+ */
+bool NtfAdmin::is_valid_ntf_agent(MDS_DEST agent_dest) {
+  TRACE_ENTER();
+  ClientMap::iterator it;
+  bool valid = false;
+  for (it = clientMap.begin(); it != clientMap.end(); it++) {
+NtfClient *client = it->second;
+if (client->getMdsDest() == agent_dest) {
+  valid = true;
+  break;
+}
+  }
+  TRACE_LEAVE2("The validation of ntfa: %d", valid);
+  return valid;
+}
+
+/**
+ * Add the ntfa down to the list. This is helpful to remember the
+ * list of ntfa to process in case failover.
+ *
+ * @param agent_dest
+ */
+void NtfAdmin::AddNtfAgentDown(MDS_DEST agent_dest) {
+  TRACE_ENTER2(" Add ntfa down (%ld) to the list", agent_dest);
+
+  if (is_valid_ntf_agent(agent_dest)) {
+MDS_DEST *mds_dest = new MDS_DEST;
+*mds_dest = agent_dest;
+ntfa_down_list.push_back(mds_dest);
+  }
+}
+
+/**
+ * Remove the ntfa down from the list
+ *
+ * @param agent_dest
+ */
+void NtfAdmin::RemoveNtfAgentDownFromList(MDS_DEST agent_dest) {
+  TRACE_ENTER();
+  std::list::iterator it;
+  for (it = ntfa_down_list.begin(); it != ntfa_down_list.end(); ++it) {
+MDS_DEST *mds_dest = *it;
+if (*mds_dest == agent_dest) {
+  ntfa_down_list.erase(it);
+  TRACE(" Remove ntfa down (%ld) from the list", agent_dest);
+  delete mds_dest;
+  return;
+}
+  }
+}
+
+/**
+ * Process to clear all ntfa down records in ntfd. The old client of
+ * agent down is removed from database.
+ *
+ * @param agent_dest
+ */
+void NtfAdmin::ProcessNtfAgentDownList() {
+  TRACE_ENTER();
+  std::list::iterator it = ntfa_down_list.begin();;
+  while(it != ntfa_down_list.end()) {
+MDS_DEST *mds_dest = *it;
+it = ntfa_down_list.erase(it);
+clientRemoveMDS(*mds_dest);
+delete mds_dest;
+  }
+  TRACE_LEAVE();
+  return;
+}
+
+/**
   * The node object where the client who had the subscription is notified
   * so it can delete the appropriate subscription and filter object.
   *
@@ -992,6 +1066,21 @@ void clientRemoveMDS(MDS_DEST mds_dest) {
NtfAdmin::theNtfAdmin->clientRemoveMDS(mds_dest);
  }
  
+void AddNtfAgentDown(MDS_DEST agent_dest) {

+  osafassert(NtfAdmin::theNtfAdmin != NULL);
+  NtfAdmin::theNtfAdmin->AddNtfAgentDown(agent_dest);
+}
+
+void RemoveNtfAgentDownFromList(MDS_DEST agent_dest) {
+  osafassert(NtfAdmin::theNtfAdmin != NULL);
+  NtfAdmin::theNtfAdmin->RemoveNtfAgentDownFromList(agent_dest);
+}
+
+void ProcessNtfAgentDownList() {
+  osafassert(NtfAdmin::theNtfAdmin != NULL);
+  NtfAdmin::theNtfAdmin->ProcessNtfAgentDownList();
+}
+
  void subscriptionRemoved(unsigned int clientId,
   SaNtfSubscriptionIdT subscriptionId,
   MDS_SYNC_SND_CTXT *mdsCtxt) {
diff --git 

Re: [devel] [PATCH 1/1] osaf: add /sbin/shutdown to sudoers file in 00-README.conf [#2729]

2017-12-05 Thread Hans Nordebäck
Ack, review only/Thanks HansN

-Original Message-
From: Zoran Milinkovic 
Sent: den 5 december 2017 15:04
To: Hans Nordebäck 
Cc: opensaf-devel@lists.sourceforge.net; Zoran Milinkovic 

Subject: [PATCH 1/1] osaf: add /sbin/shutdown to sudoers file in 00-README.conf 
[#2729]

/sbin/shutdown is added to /etc/sudoers for the configuration steps in 
00-README.conf
---
 00-README.conf | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/00-README.conf b/00-README.conf index 2a7ce96..5de2862 100644
--- a/00-README.conf
+++ b/00-README.conf
@@ -21,7 +21,7 @@ $./configure CPPFLAGS=-DRUNASROOT
 
 0) groupadd -r opensaf
 1) useradd -r -g opensaf -d /usr/local/share/opensaf/ -s /sbin/nologin -c 
"OpenSAF" opensaf
-2) echo "opensaf ALL = NOPASSWD: /sbin/reboot, /sbin/tipc-config, 
/usr/bin/pkill, /usr/bin/killall" >> /etc/sudoers
+2) echo "opensaf ALL = NOPASSWD: /sbin/reboot, /sbin/shutdown, 
+/sbin/tipc-config, /usr/bin/pkill, /usr/bin/killall" >> /etc/sudoers
 3) echo 'Defaults:%opensaf !requiretty' >> /etc/sudoers
 4) echo 'Defaults:opensaf !requiretty' >> /etc/sudoers
 5) chown opensaf /var/lib/opensaf
--
1.9.1


--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


[devel] [PATCH 1/1] osaf: add /sbin/shutdown to sudoers file in 00-README.conf [#2729]

2017-12-05 Thread Zoran Milinkovic
/sbin/shutdown is added to /etc/sudoers for the configuration steps in 
00-README.conf
---
 00-README.conf | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/00-README.conf b/00-README.conf
index 2a7ce96..5de2862 100644
--- a/00-README.conf
+++ b/00-README.conf
@@ -21,7 +21,7 @@ $./configure CPPFLAGS=-DRUNASROOT
 
 0) groupadd -r opensaf
 1) useradd -r -g opensaf -d /usr/local/share/opensaf/ -s /sbin/nologin -c 
"OpenSAF" opensaf
-2) echo "opensaf ALL = NOPASSWD: /sbin/reboot, /sbin/tipc-config, 
/usr/bin/pkill, /usr/bin/killall" >> /etc/sudoers
+2) echo "opensaf ALL = NOPASSWD: /sbin/reboot, /sbin/shutdown, 
/sbin/tipc-config, /usr/bin/pkill, /usr/bin/killall" >> /etc/sudoers
 3) echo 'Defaults:%opensaf !requiretty' >> /etc/sudoers
 4) echo 'Defaults:opensaf !requiretty' >> /etc/sudoers
 5) chown opensaf /var/lib/opensaf
-- 
1.9.1


--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


[devel] [PATCH 0/1] Review Request for osaf: add shutdown to sudoers file in 00-README.conf [#2729]

2017-12-05 Thread Zoran Milinkovic
Summary: osaf: add /sbin/shutdown to sudoers file in 00-README.conf [#2729]
Review request for Ticket(s): 2729
Peer Reviewer(s): Vu, Hans
Pull request to: Zoran
Affected branch(es): develop
Development branch: ticket-2729
Base revision: 924aa6e5046621c2c299f22d1943b8f1b0148b4a
Personal repository: git://git.code.sf.net/u/zmilinkovic/review


Impacted area   Impact y/n

 Docsn
 Build systemn
 RPM/packaging   n
 Configuration files n
 Startup scripts n
 SAF servicesy
 OpenSAF servicesn
 Core libraries  n
 Samples n
 Tests   n
 Other   n

NOTE: Patch(es) contain lines longer than 80 characers

Comments (indicate scope for each "y" above):
-

revision e7ff736355ec63b8a1dea8a592d3b61f3571d2a5
Author: Zoran Milinkovic 
Date:   Tue, 5 Dec 2017 14:36:53 +0100

osaf: add /sbin/shutdown to sudoers file in 00-README.conf [#2729]

/sbin/shutdown is added to /etc/sudoers for the configuration steps in 
00-README.conf



Complete diffstat:
--
 00-README.conf | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)


Testing Commands:
-


Testing, Expected Results:
--


Conditions of Submission:
-
Ack from Hans and Vu


Arch  Built StartedLinux distro
---
mipsn  n
mips64  n  n
x86 n  n
x86_64  n  n
powerpc n  n
powerpc64   n  n


Reviewer Checklist:
---
[Submitters: make sure that your review doesn't trigger any checkmarks!]


Your checkin has not passed review because (see checked entries):

___ Your RR template is generally incomplete; it has too many blank entries
that need proper data filled in.

___ You have failed to nominate the proper persons for review and push.

___ Your patches do not have proper short+long header

___ You have grammar/spelling in your header that is unacceptable.

___ You have exceeded a sensible line length in your headers/comments/text.

___ You have failed to put in a proper Trac Ticket # into your commits.

___ You have incorrectly put/left internal data in your comments/files
(i.e. internal bug tracking tool IDs, product names etc)

___ You have not given any evidence of testing beyond basic build tests.
Demonstrate some level of runtime or other sanity testing.

___ You have ^M present in some of your files. These have to be removed.

___ You have needlessly changed whitespace or added whitespace crimes
like trailing spaces, or spaces before tabs.

___ You have mixed real technical changes with whitespace and other
cosmetic code cleanup changes. These have to be separate commits.

___ You need to refactor your submission into logical chunks; there is
too much content into a single commit.

___ You have extraneous garbage in your review (merge commits etc)

___ You have giant attachments which should never have been sent;
Instead you should place your content in a public tree to be pulled.

___ You have too many commits attached to an e-mail; resend as threaded
commits, or place in a public tree for a pull.

___ You have resent this content multiple times without a clear indication
of what has changed between each re-send.

___ You have failed to adequately and individually address all of the
comments and change requests that were proposed in the initial review.

___ You have a misconfigured ~/.gitconfig file (i.e. user.name, user.email etc)

___ Your computer have a badly configured date and time; confusing the
the threaded patch review.

___ Your changes affect IPC mechanism, and you don't present any results
for in-service upgradability test.

___ Your changes affect user manual and documentation, your patch series
do not contain the patch that updates the Doxygen manual.


--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


[devel] [PATCH 1/1] smf: Fix handling of MDS events in smfnd [#2723]

2017-12-05 Thread Lennart Lund
The global smfd_dest (in cd struct) shall be restored with MDS event
NCSMDS_UP and NCSMDS_NEW_ACTIVE (is set to 0 with event NCSMDS_DOWN)
---
 src/smf/smfnd/smfnd_mds.c | 7 +--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/smf/smfnd/smfnd_mds.c b/src/smf/smfnd/smfnd_mds.c
index e9183b75a..b49f5f1bd 100644
--- a/src/smf/smfnd/smfnd_mds.c
+++ b/src/smf/smfnd/smfnd_mds.c
@@ -237,6 +237,8 @@ static uint32_t mds_svc_event(struct ncsmds_callback_info 
*info)
MDS_CALLBACK_SVC_EVENT_INFO *svc_evt = >info.svc_evt;
 
switch (svc_evt->i_change) {
+   case NCSMDS_NEW_ACTIVE:
+   LOG_NO("MDS %s: NCSMDS_NEW_ACTIVE", __FUNCTION__);
case NCSMDS_UP:
/* TODO: No lock is taken. This might be dangerous.*/
if (NCSMDS_SVC_ID_SMFA == svc_evt->i_svc_id) {
@@ -248,7 +250,8 @@ static uint32_t mds_svc_event(struct ncsmds_callback_info 
*info)
if (m_MDS_DEST_IS_AN_ADEST(svc_evt->i_dest))
return NCSCC_RC_SUCCESS;
cb->smfd_dest = svc_evt->i_dest;
-   LOG_NO("MDS %s: NCSMDS_UP i_dest = 0x%" PRIx64,
+   LOG_NO("MDS %s: NCSMDS_SVC_ID_SMFD "
+   "dest = 0x%" PRIx64,
__FUNCTION__, svc_evt->i_dest);
}
break;
@@ -256,7 +259,7 @@ static uint32_t mds_svc_event(struct ncsmds_callback_info 
*info)
case NCSMDS_DOWN:
/* TODO: No lock is taken. This might be dangerous.*/
/* TODO: Need to clean up the cb->cbk_list, otherwise there will
-be memory leak. For the time being we are storing only conut of
+be memory leak. For the time being we are storing only count of
 agents, not the adest of agents and hence it is not possible to
 clean up cbk_list.*/
if (NCSMDS_SVC_ID_SMFA == svc_evt->i_svc_id) {
-- 
2.15.0


--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


[devel] [PATCH 0/1] Review Request for smf: Fix handling of MDS events in smfnd [#2723]

2017-12-05 Thread Lennart Lund
Summary: smf: Fix handling of MDS events in smfnd [#2723]
Review request for Ticket(s): 2723
Peer Reviewer(s): rafael.odza...@ericsson.com
Pull request to: 
Affected branch(es): develop
Development branch: ticket-2723
Base revision: d54303925f86813c5c2fa1103f3c8ed841488145
Personal repository: git://git.code.sf.net/u/elunlen/review


Impacted area   Impact y/n

 Docsn
 Build systemn
 RPM/packaging   n
 Configuration files n
 Startup scripts n
 SAF servicesy
 OpenSAF servicesn
 Core libraries  n
 Samples n
 Tests   n
 Other   n


Comments (indicate scope for each "y" above):
-
*** EXPLAIN/COMMENT THE PATCH SERIES HERE ***

revision 924aa6e5046621c2c299f22d1943b8f1b0148b4a
Author: Lennart Lund 
Date:   Tue, 5 Dec 2017 12:16:50 +0100

smf: Fix handling of MDS events in smfnd [#2723]

The global smfd_dest (in cd struct) shall be restored with MDS event
NCSMDS_UP and NCSMDS_NEW_ACTIVE (is set to 0 with event NCSMDS_DOWN)



Complete diffstat:
--
 src/smf/smfnd/smfnd_mds.c | 7 +--
 1 file changed, 5 insertions(+), 2 deletions(-)


Testing Commands:
-
Configure system for absence allowed
Check result for each step
1. Start a cluster
2. Do a si swap
3. Reboot both SC nodes at the same time
4. Stop both SC nodes and then start at least one of them

Testing, Expected Results:
--
Check result using the following grep on the syslog.
$ grep 'MDS ' /messages
The printout shall show that the smfd destination is restored


Conditions of Submission:
-
Ack by reviwers or one week


Arch  Built StartedLinux distro
---
mipsn  n
mips64  n  n
x86 n  n
x86_64  n  n
powerpc n  n
powerpc64   n  n


Reviewer Checklist:
---
[Submitters: make sure that your review doesn't trigger any checkmarks!]


Your checkin has not passed review because (see checked entries):

___ Your RR template is generally incomplete; it has too many blank entries
that need proper data filled in.

___ You have failed to nominate the proper persons for review and push.

___ Your patches do not have proper short+long header

___ You have grammar/spelling in your header that is unacceptable.

___ You have exceeded a sensible line length in your headers/comments/text.

___ You have failed to put in a proper Trac Ticket # into your commits.

___ You have incorrectly put/left internal data in your comments/files
(i.e. internal bug tracking tool IDs, product names etc)

___ You have not given any evidence of testing beyond basic build tests.
Demonstrate some level of runtime or other sanity testing.

___ You have ^M present in some of your files. These have to be removed.

___ You have needlessly changed whitespace or added whitespace crimes
like trailing spaces, or spaces before tabs.

___ You have mixed real technical changes with whitespace and other
cosmetic code cleanup changes. These have to be separate commits.

___ You need to refactor your submission into logical chunks; there is
too much content into a single commit.

___ You have extraneous garbage in your review (merge commits etc)

___ You have giant attachments which should never have been sent;
Instead you should place your content in a public tree to be pulled.

___ You have too many commits attached to an e-mail; resend as threaded
commits, or place in a public tree for a pull.

___ You have resent this content multiple times without a clear indication
of what has changed between each re-send.

___ You have failed to adequately and individually address all of the
comments and change requests that were proposed in the initial review.

___ You have a misconfigured ~/.gitconfig file (i.e. user.name, user.email etc)

___ Your computer have a badly configured date and time; confusing the
the threaded patch review.

___ Your changes affect IPC mechanism, and you don't present any results
for in-service upgradability test.

___ Your changes affect user manual and documentation, your patch series
do not contain the patch that updates the Doxygen manual.


--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


Re: [devel] [PATCH 1/1] smf: SMF created a CCB to create smfRollbackElement object, but CCB was aborted due to IMM [#2676]

2017-12-05 Thread Rafael Odzakow

Resending my question. Also to be clear, the retry loops are nested, it does 
not seem there is a reason for it.

On mån, 2017-11-27 at 15:36 +0100, Rafael Odzakow wrote:

SmfCampaignWrapup::executeCampComplete()  is calling SmfImmCcbAction. So looks 
like a double retry spread out across two classes. Why not have the retries in  
SmfImmCcbAction::execute only?


On 11/17/2017 07:12 AM, Vijay Roy wrote:

Hi Rafael,



We need the while loop in “SmfCampaignWrapup::executeCampComplete()” as we 
encountered the issue at Wrapup too while testing.



Thanks

Vijay





-Original Message-
From: Rafael Odzakow [mailto:rafael.odza...@ericsson.com]
Sent: Thursday, November 16, 2017 8:54 PM
To: Vijay Roy 
Cc: 
opensaf-devel@lists.sourceforge.net;
 Lennart Lund 
Subject: Re: [PATCH 1/1] smf: SMF created a CCB to create smfRollbackElement 
object, but CCB was aborted due to IMM [#2676]



What about the added while loops in

SmfCampaignWrapup::executeCampComplete() should they be removed now with this 
addition?





On 11/16/2017 10:44 AM, Vijay Roy wrote:

> Handling ERROR_EXIST in smfRollbackElement creation and handling

> TRY_AGAIN in immCCBOperations.

> ---

>   src/smf/smfd/SmfUpgradeAction.cc | 26 +++---

>   1 file changed, 19 insertions(+), 7 deletions(-)

>

> diff --git a/src/smf/smfd/SmfUpgradeAction.cc

> b/src/smf/smfd/SmfUpgradeAction.cc

> index 94c3dfd..af75cd7 100644

> --- a/src/smf/smfd/SmfUpgradeAction.cc

> +++ b/src/smf/smfd/SmfUpgradeAction.cc

> @@ -28,6 +28,7 @@

>   #include "smf/smfd/SmfUtils.h"

>   #include "smfd.h"

>   #include "smf/smfd/SmfTargetTemplate.h"

> +#include "base/time.h"

>

>   /* 

>*   DEFINITIONS

> @@ -460,6 +461,7 @@ SaAisErrorT SmfImmCcbAction::execute(SaImmOiHandleT 
> i_oiHandle,

>const std::string* i_rollbackDn) {

> SaAisErrorT result = SA_AIS_OK;

> SmfRollbackCcb* rollbackCcb = NULL;

> +  base::Timer doImmOpTimer(6);

>

> TRACE_ENTER();

>

> @@ -473,8 +475,8 @@ SaAisErrorT SmfImmCcbAction::execute(SaImmOiHandleT 
> i_oiHandle,

>   immRollbackCcbDn += ",";

>   immRollbackCcbDn += *i_rollbackDn;

>

> -if ((result = smfCreateRollbackElement(immRollbackCcbDn, i_oiHandle)) !=

> -SA_AIS_OK) {

> +result = smfCreateRollbackElement(immRollbackCcbDn, i_oiHandle);

> +if ((result != SA_AIS_OK) && (result != SA_AIS_ERR_EXIST)) {

> LOG_ER(

> "SmfImmCcbAction::execute failed to create rollback element %s, 
> rc=%s",

> immRollbackCcbDn.c_str(), saf_error(result)); @@ -490,11

> +492,21 @@ SaAisErrorT SmfImmCcbAction::execute(SaImmOiHandleT i_oiHandle,

> }

>

> if (m_operations.size() > 0) {

> -SmfImmUtils immUtil;

> -if ((result = immUtil.doImmOperations(m_operations, rollbackCcb)) !=

> -SA_AIS_OK) {

> -  delete rollbackCcb;

> -  rollbackCcb = NULL;

> +

> +doImmOpTimer.set_timeout_time(6);

> +while (doImmOpTimer.is_timeout() == false) {

> +  SmfImmUtils immUtil;

> +  result = immUtil.doImmOperations(m_operations, rollbackCcb);

> +  if (result == SA_AIS_ERR_TRY_AGAIN) {

> + base::Sleep(base::kFiveHundredMilliseconds);

> + continue;

> +  } else if (result != SA_AIS_OK) {

> + LOG_WA("%s: SmfImmCcbAction:execute Fail '%s'",

> + __FUNCTION__, saf_error(result));

> + delete rollbackCcb;

> + rollbackCcb = NULL;

> +  }

> +  break;

>   }

> }

>





--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


Re: [devel] [PATCH 1/1] smf: SMF created a CCB to create smfRollbackElement object, but CCB was aborted due to IMM [#2676]

2017-12-05 Thread Syam Prasad Talluri
Hi Rafael,

As you rightly pointed,  we have just published a patch by  removing the retry 
from SmfCampaignWrapup::executeCampComplete and added retires only in 
SmfImmCcbAction::execute. We have thoroughly tested it. 

Thanks,
Syam.
-Original Message-
From: Rafael Odzakow [mailto:rafael.odza...@ericsson.com] 
Sent: Monday, November 27, 2017 8:07 PM
To: Vijay Roy 
Cc: opensaf-devel@lists.sourceforge.net
Subject: Re: [devel] [PATCH 1/1] smf: SMF created a CCB to create 
smfRollbackElement object, but CCB was aborted due to IMM [#2676]

SmfCampaignWrapup::executeCampComplete()  is calling SmfImmCcbAction. So looks 
like a double retry spread out across two classes. Why not have the retries in  
SmfImmCcbAction::execute only?



On 11/17/2017 07:12 AM, Vijay Roy wrote:
>
> Hi Rafael,
>
> We need the while loop in “SmfCampaignWrapup::executeCampComplete()” 
> as we encountered the issue at Wrapup too while testing.
>
> Thanks
>
> Vijay
>
> -Original Message-
> From: Rafael Odzakow [mailto:rafael.odza...@ericsson.com]
> Sent: Thursday, November 16, 2017 8:54 PM
> To: Vijay Roy 
> Cc: opensaf-devel@lists.sourceforge.net; Lennart Lund 
> 
> Subject: Re: [PATCH 1/1] smf: SMF created a CCB to create 
> smfRollbackElement object, but CCB was aborted due to IMM [#2676]
>
> What about the added while loops in
>
> SmfCampaignWrapup::executeCampComplete() should they be removed now 
> with this addition?
>
> On 11/16/2017 10:44 AM, Vijay Roy wrote:
>
> > Handling ERROR_EXIST in smfRollbackElement creation and handling
>
> > TRY_AGAIN in immCCBOperations.
>
> > ---
>
> >   src/smf/smfd/SmfUpgradeAction.cc | 26 +++---
>
> >   1 file changed, 19 insertions(+), 7 deletions(-)
>
> >
>
> > diff --git a/src/smf/smfd/SmfUpgradeAction.cc
>
> > b/src/smf/smfd/SmfUpgradeAction.cc
>
> > index 94c3dfd..af75cd7 100644
>
> > --- a/src/smf/smfd/SmfUpgradeAction.cc
>
> > +++ b/src/smf/smfd/SmfUpgradeAction.cc
>
> > @@ -28,6 +28,7 @@
>
> >   #include "smf/smfd/SmfUtils.h"
>
> >   #include "smfd.h"
>
> >   #include "smf/smfd/SmfTargetTemplate.h"
>
> > +#include "base/time.h"
>
> >
>
> >   /*
> ==
> ==
>
> >    *   DEFINITIONS
>
> > @@ -460,6 +461,7 @@ SaAisErrorT
> SmfImmCcbAction::execute(SaImmOiHandleT i_oiHandle,
>
> > const std::string* i_rollbackDn) {
>
> > SaAisErrorT result = SA_AIS_OK;
>
> > SmfRollbackCcb* rollbackCcb = NULL;
>
> > +  base::Timer doImmOpTimer(6);
>
> >
>
> > TRACE_ENTER();
>
> >
>
> > @@ -473,8 +475,8 @@ SaAisErrorT
> SmfImmCcbAction::execute(SaImmOiHandleT i_oiHandle,
>
> >   immRollbackCcbDn += ",";
>
> >   immRollbackCcbDn += *i_rollbackDn;
>
> >
>
> > -    if ((result = smfCreateRollbackElement(immRollbackCcbDn,
> i_oiHandle)) !=
>
> > -    SA_AIS_OK) {
>
> > +    result = smfCreateRollbackElement(immRollbackCcbDn, 
> > +i_oiHandle);
>
> > +    if ((result != SA_AIS_OK) && (result != SA_AIS_ERR_EXIST)) {
>
> > LOG_ER(
>
> > "SmfImmCcbAction::execute failed to create rollback element %s, 
> > rc=%s",
>
> > immRollbackCcbDn.c_str(), saf_error(result)); @@ -490,11
>
> > +492,21 @@ SaAisErrorT SmfImmCcbAction::execute(SaImmOiHandleT
> i_oiHandle,
>
> > }
>
> >
>
> > if (m_operations.size() > 0) {
>
> > -    SmfImmUtils immUtil;
>
> > -    if ((result = immUtil.doImmOperations(m_operations,
> rollbackCcb)) !=
>
> > -    SA_AIS_OK) {
>
> > -  delete rollbackCcb;
>
> > -  rollbackCcb = NULL;
>
> > +
>
> > + doImmOpTimer.set_timeout_time(6);
>
> > +    while (doImmOpTimer.is_timeout() == false) {
>
> > +  SmfImmUtils immUtil;
>
> > +  result = immUtil.doImmOperations(m_operations, rollbackCcb);
>
> > +  if (result == SA_AIS_ERR_TRY_AGAIN) {
>
> > + base::Sleep(base::kFiveHundredMilliseconds);
>
> > + continue;
>
> > +  } else if (result != SA_AIS_OK) {
>
> > + LOG_WA("%s: SmfImmCcbAction:execute Fail '%s'",
>
> > + __FUNCTION__, saf_error(result));
>
> > + delete rollbackCcb;
>
> > + rollbackCcb = NULL;
>
> > +  }
>
> > +  break;
>
> >   }
>
> > }
>
> >
>

--
Check out the vibrant tech community on one of the world's most engaging tech 
sites, Slashdot.org! 
https://urldefense.proofpoint.com/v2/url?u=http-3A__sdm.link_slashdot=DwIGaQ=RoP1YumCXCgaWHvlZYR8PZh8Bv7qIrMUB65eapI_JnE=V-rHpog7bglMV_qtz_u-J_IeS6G1w2MSO-XRrmj38iQ=3BNorA0hrRBHey_XMs0osATb17MU9JWzr1dNYJq2XZo=idWjmHhzWdiR4C1-0qqhsTpi13go7QbkgfDi3cv9XH0=
___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net

[devel] [PATCH 1/1] smf: SMF created a CCB to create smfRollbackElement object, but CCB was aborted due to IMM [#2676]

2017-12-05 Thread Vijay Roy
Handling ERROR_EXIST in smfRollbackElement creation and
handling TRY_AGAIN in immCCBOperations.
---
 src/smf/smfd/SmfCampaignWrapup.cc | 28 +++-
 src/smf/smfd/SmfUpgradeAction.cc  | 26 +++---
 2 files changed, 26 insertions(+), 28 deletions(-)

diff --git a/src/smf/smfd/SmfCampaignWrapup.cc 
b/src/smf/smfd/SmfCampaignWrapup.cc
index 934f2f2..8ecc59b 100644
--- a/src/smf/smfd/SmfCampaignWrapup.cc
+++ b/src/smf/smfd/SmfCampaignWrapup.cc
@@ -244,29 +244,15 @@ bool SmfCampaignWrapup::executeCampComplete() {
   if (rc == true)
   {
  for (auto& elem : m_campCompleteAction) {
-   doImmOpTimer.set_timeout_time(6);
-   while (doImmOpTimer.is_timeout() == false) {
-  ais_rc = 
(*elem).execute(SmfCampaignThread::instance()->getImmHandle(),
+ ais_rc = 
(*elem).execute(SmfCampaignThread::instance()->getImmHandle(),
   );
-  if (ais_rc == SA_AIS_ERR_TRY_AGAIN) {
- base::Sleep(base::kFiveHundredMilliseconds);
- continue;
- } else if (ais_rc != SA_AIS_OK) {
-  LOG_WA("%s: SmfCampaignWrapup::executeCampComplete Fail '%s'",
-__FUNCTION__, saf_error(ais_rc));
-  rc = false;
- }
-  break;
-   }
-   if (doImmOpTimer.is_timeout() == true && ais_rc != SA_AIS_OK) {
-  LOG_WA("%s: SmfCampaignWrapup::executeCampComplete(): "
- " m_campCompleteAction timeout Fail '%s'",
-   __FUNCTION__, saf_error(ais_rc));
-  rc = false;
+ if (ais_rc != SA_AIS_OK) {
+LOG_NO("%s: SmfCampaignWrapup::executeCampComplete Fail '%s'",
+   __FUNCTION__, saf_error(ais_rc));
+rc = false;
+break;
+  }
}
-   if (rc == false)
- break;
- }
   }
 
   if (rc == true)
diff --git a/src/smf/smfd/SmfUpgradeAction.cc b/src/smf/smfd/SmfUpgradeAction.cc
index 94c3dfd..af75cd7 100644
--- a/src/smf/smfd/SmfUpgradeAction.cc
+++ b/src/smf/smfd/SmfUpgradeAction.cc
@@ -28,6 +28,7 @@
 #include "smf/smfd/SmfUtils.h"
 #include "smfd.h"
 #include "smf/smfd/SmfTargetTemplate.h"
+#include "base/time.h"
 
 /* 
  *   DEFINITIONS
@@ -460,6 +461,7 @@ SaAisErrorT SmfImmCcbAction::execute(SaImmOiHandleT 
i_oiHandle,
  const std::string* i_rollbackDn) {
   SaAisErrorT result = SA_AIS_OK;
   SmfRollbackCcb* rollbackCcb = NULL;
+  base::Timer doImmOpTimer(6);
 
   TRACE_ENTER();
 
@@ -473,8 +475,8 @@ SaAisErrorT SmfImmCcbAction::execute(SaImmOiHandleT 
i_oiHandle,
 immRollbackCcbDn += ",";
 immRollbackCcbDn += *i_rollbackDn;
 
-if ((result = smfCreateRollbackElement(immRollbackCcbDn, i_oiHandle)) !=
-SA_AIS_OK) {
+result = smfCreateRollbackElement(immRollbackCcbDn, i_oiHandle);
+if ((result != SA_AIS_OK) && (result != SA_AIS_ERR_EXIST)) {
   LOG_ER(
   "SmfImmCcbAction::execute failed to create rollback element %s, 
rc=%s",
   immRollbackCcbDn.c_str(), saf_error(result));
@@ -490,11 +492,21 @@ SaAisErrorT SmfImmCcbAction::execute(SaImmOiHandleT 
i_oiHandle,
   }
 
   if (m_operations.size() > 0) {
-SmfImmUtils immUtil;
-if ((result = immUtil.doImmOperations(m_operations, rollbackCcb)) !=
-SA_AIS_OK) {
-  delete rollbackCcb;
-  rollbackCcb = NULL;
+
+doImmOpTimer.set_timeout_time(6);
+while (doImmOpTimer.is_timeout() == false) {
+  SmfImmUtils immUtil;
+  result = immUtil.doImmOperations(m_operations, rollbackCcb);
+  if (result == SA_AIS_ERR_TRY_AGAIN) {
+ base::Sleep(base::kFiveHundredMilliseconds);
+ continue;
+  } else if (result != SA_AIS_OK) {
+ LOG_WA("%s: SmfImmCcbAction:execute Fail '%s'",
+ __FUNCTION__, saf_error(result));
+ delete rollbackCcb;
+ rollbackCcb = NULL;
+  }
+  break;
 }
   }
 
-- 
1.9.1


--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


[devel] [PATCH 0/1] Review Request for smf: SMF created a CCB to create smfRollbackElement object, but CCB was aborted due to IMM [#2676]

2017-12-05 Thread Vijay Roy
Summary: smf: SMF created a CCB to create smfRollbackElement object, but CCB 
was aborted due to IMM [#2676]
Review request for Ticket(s): 2676
Peer Reviewer(s): rafael.odza...@ericsson.com
Pull request to: *** LIST THE PERSON WITH PUSH ACCESS HERE ***
Affected branch(es): develop
Development branch: ticket-2676
Base revision: d54303925f86813c5c2fa1103f3c8ed841488145
Personal repository: git://git.code.sf.net/u/vijayroy/review


Impacted area   Impact y/n

 Docsn
 Build systemn
 RPM/packaging   n
 Configuration files n
 Startup scripts n
 SAF servicesy
 OpenSAF servicesn
 Core libraries  n
 Samples n
 Tests   n
 Other   n


Comments (indicate scope for each "y" above):
-
*** EXPLAIN/COMMENT THE PATCH SERIES HERE ***

revision fae9998cbbe7509d33f945152c95270b5918807c
Author: Vijay Roy 
Date:   Tue, 5 Dec 2017 14:24:45 +0530

smf: SMF created a CCB to create smfRollbackElement object, but CCB was aborted 
due to IMM [#2676]

Handling ERROR_EXIST in smfRollbackElement creation and
handling TRY_AGAIN in immCCBOperations.



Complete diffstat:
--
 src/smf/smfd/SmfCampaignWrapup.cc | 28 +++-
 src/smf/smfd/SmfUpgradeAction.cc  | 26 +++---
 2 files changed, 26 insertions(+), 28 deletions(-)


Testing Commands:
-
*** LIST THE COMMAND LINE TOOLS/STEPS TO TEST YOUR CHANGES ***


Testing, Expected Results:
--
*** PASTE COMMAND OUTPUTS / TEST RESULTS ***


Conditions of Submission:
-
*** HOW MANY DAYS BEFORE PUSHING, CONSENSUS ETC ***


Arch  Built StartedLinux distro
---
mipsn  n
mips64  n  n
x86 n  n
x86_64  y  y
powerpc n  n
powerpc64   n  n


Reviewer Checklist:
---
[Submitters: make sure that your review doesn't trigger any checkmarks!]


Your checkin has not passed review because (see checked entries):

___ Your RR template is generally incomplete; it has too many blank entries
that need proper data filled in.

___ You have failed to nominate the proper persons for review and push.

___ Your patches do not have proper short+long header

___ You have grammar/spelling in your header that is unacceptable.

___ You have exceeded a sensible line length in your headers/comments/text.

___ You have failed to put in a proper Trac Ticket # into your commits.

___ You have incorrectly put/left internal data in your comments/files
(i.e. internal bug tracking tool IDs, product names etc)

___ You have not given any evidence of testing beyond basic build tests.
Demonstrate some level of runtime or other sanity testing.

___ You have ^M present in some of your files. These have to be removed.

___ You have needlessly changed whitespace or added whitespace crimes
like trailing spaces, or spaces before tabs.

___ You have mixed real technical changes with whitespace and other
cosmetic code cleanup changes. These have to be separate commits.

___ You need to refactor your submission into logical chunks; there is
too much content into a single commit.

___ You have extraneous garbage in your review (merge commits etc)

___ You have giant attachments which should never have been sent;
Instead you should place your content in a public tree to be pulled.

___ You have too many commits attached to an e-mail; resend as threaded
commits, or place in a public tree for a pull.

___ You have resent this content multiple times without a clear indication
of what has changed between each re-send.

___ You have failed to adequately and individually address all of the
comments and change requests that were proposed in the initial review.

___ You have a misconfigured ~/.gitconfig file (i.e. user.name, user.email etc)

___ Your computer have a badly configured date and time; confusing the
the threaded patch review.

___ Your changes affect IPC mechanism, and you don't present any results
for in-service upgradability test.

___ Your changes affect user manual and documentation, your patch series
do not contain the patch that updates the Doxygen manual.


--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel