I agree but the unfortunate thing is pattern of already existing attributes in 
this class:

        opensafImm
        opensafImmSyncBatchSize
        opensafImmNostdFlags
        opensafImmEpoch

/AndersBj



-----Original Message-----
From: Hans Feldt 
Sent: den 9 juni 2014 09:23
To: Anders Björnerstedt; reddy.neelaka...@oracle.com
Cc: opensaf-devel@lists.sourceforge.net
Subject: RE: [devel] [PATCH 1 of 1] IMM: Add config attribute 
'opensafLongDnsAllowed' to class 'OpensafImm' [#897]

Why the attribute name prefix "opensaf"?
It should not be needed and adds no value.
Thanks,
Hans

> -----Original Message-----
> From: Anders Bjornerstedt [mailto:anders.bjornerst...@ericsson.com]
> Sent: den 9 juni 2014 08:18
> To: reddy.neelaka...@oracle.com
> Cc: opensaf-devel@lists.sourceforge.net
> Subject: [devel] [PATCH 1 of 1] IMM: Add config attribute 
> 'opensafLongDnsAllowed' to class 'OpensafImm' [#897]
> 
>  osaf/libs/common/immsv/include/immsv_api.h     |   2 +
>  osaf/services/saf/immsv/immloadd/imm_loader.cc |  10 +++-
>  osaf/services/saf/immsv/immnd/ImmModel.cc      |  24 +++++++++
>  osaf/services/saf/immsv/immnd/ImmModel.hh      |   1 +
>  samples/immsv/OpensafImm.xml                   |  64 
> ++++++++++++++++++++++++++
>  5 files changed, 99 insertions(+), 2 deletions(-)
> 
> 
> A config attribute named 'opensafLongDnsAllowed' is added to the class 
> 'OpensafImm'. The default value is 0 with the intended meaning that 
> long DNs are not allowed. Any other value has the meaning that long 
> DNs are allowed. A boolean function 'getLongDnsAllowed()' has been 
> added to ImmModel. This function will be used by the function
> ImmModel::ccbObjectCreate() when it detects that an object proposed to 
> be created has a DN longer than 255 bytes. The creation will only be 
> allowed if getLongDnsAllowed() returns true.
> 
> Validation of updates to the value of  'opensafLongDnsAllowed' will be 
> added as part of ticket #934. Transitioning from true to false will 
> only be allowed if the imm database currently has no object with a long DN.
> 
> An imm xml file containing the extended class definition for 
> OpensafImm has been added at samples/immsv/OpensafImm.xml The xml file 
> should be used for upgrading the class when older OpenSAF systems are 
> upgraded to OpenSAF 4.5.
> 
> diff --git a/osaf/libs/common/immsv/include/immsv_api.h 
> b/osaf/libs/common/immsv/include/immsv_api.h
> --- a/osaf/libs/common/immsv/include/immsv_api.h
> +++ b/osaf/libs/common/immsv/include/immsv_api.h
> @@ -58,6 +58,8 @@ extern "C" {
>  #define IMMSV_DEFAULT_MAX_SYNC_BATCH_SIZE MDS_DIRECT_BUF_MAXSIZE  
> #define IMMSV_MAX_OBJS_IN_SYNCBATCH (MDS_DIRECT_BUF_MAXSIZE/10)
> 
> +#define OPENSAF_IMM_LONG_DNS_ALLOWED "opensafLongDnsAllowed"
> +
>  /*Max # of outstanding fevs messages towards director.*/  /*Note 
> max-max is 255. cb->fevs_replies_pending is an uint8_t*/  #define 
> IMMSV_DEFAULT_FEVS_MAX_PENDING 16 diff --git 
> a/osaf/services/saf/immsv/immloadd/imm_loader.cc 
> b/osaf/services/saf/immsv/immloadd/imm_loader.cc
> --- a/osaf/services/saf/immsv/immloadd/imm_loader.cc
> +++ b/osaf/services/saf/immsv/immloadd/imm_loader.cc
> @@ -283,9 +283,10 @@ void opensafClassCreate(SaImmHandleT imm  {
>      SaAisErrorT err = SA_AIS_OK;
>      int retries=0;
> -    SaImmAttrDefinitionT_2 d1, d2, d3, d4, d5;
> +    SaImmAttrDefinitionT_2 d1, d2, d3, d4, d5, d6;
>      SaUint32T nost_flags_default = 0;
>      SaUint32T batch_size_default = IMMSV_DEFAULT_MAX_SYNC_BATCH_SIZE;
> +    SaUint32T extended_names_enabled_default = 0;
> 
>      d1.attrName = (char *) OPENSAF_IMM_ATTR_RDN;
>      d1.attrValueType = SA_IMM_ATTR_SANAMET; @@ -313,7 +314,12 @@ void 
> opensafClassCreate(SaImmHandleT imm
>      d5.attrFlags = SA_IMM_ATTR_CONFIG | SA_IMM_ATTR_WRITABLE;
>      d5.attrDefaultValue = &batch_size_default;
> 
> -    const SaImmAttrDefinitionT_2* attrDefs[6] = {&d1, &d2, &d3, &d4, &d5, 0};
> +    d6.attrName = (char *) OPENSAF_IMM_LONG_DNS_ALLOWED;
> +    d6.attrValueType = SA_IMM_ATTR_SAUINT32T;
> +    d6.attrFlags = SA_IMM_ATTR_CONFIG | SA_IMM_ATTR_WRITABLE;
> +    d6.attrDefaultValue = &extended_names_enabled_default;
> +
> +    const SaImmAttrDefinitionT_2* attrDefs[7] = {&d1, &d2, &d3, &d4, 
> + &d5, &d6, 0};
> 
> 
>      do {/* Create the class */
> diff --git a/osaf/services/saf/immsv/immnd/ImmModel.cc 
> b/osaf/services/saf/immsv/immnd/ImmModel.cc
> --- a/osaf/services/saf/immsv/immnd/ImmModel.cc
> +++ b/osaf/services/saf/immsv/immnd/ImmModel.cc
> @@ -439,6 +439,7 @@ static const std::string immClassName(OP  static 
> const std::string immAttrNostFlags(OPENSAF_IMM_ATTR_NOSTD_FLAGS);
>  static const std::string 
> immSyncBatchSize(OPENSAF_IMM_SYNC_BATCH_SIZE);
>  static const std::string 
> immPbeBSlaveName(OPENSAF_IMM_2PBE_APPL_NAME);
> +static const std::string 
> +immLongDnsAllowed(OPENSAF_IMM_LONG_DNS_ALLOWED);
> 
>  static const std::string 
> immManagementDn("safRdn=immManagement,safApp=safImmService");
>  static const std::string saImmRepositoryInit("saImmRepositoryInit");
> @@ -2530,6 +2531,29 @@ ImmModel::getMaxSyncBatchSize()
>      return mbSize;
>  }
> 
> +bool
> +ImmModel::getLongDnsAllowed()
> +{
> +    TRACE_ENTER();
> +    bool longDnsAllowed = false;
> +    ObjectMap::iterator oi = sObjectMap.find(immObjectDn);
> +    if(oi == sObjectMap.end()) {
> +        TRACE_LEAVE();
> +        return false;
> +    }
> +
> +    ObjectInfo* immObject =  oi->second;
> +    ImmAttrValueMap::iterator avi =
> +        immObject->mAttrValueMap.find(immLongDnsAllowed);
> +    if(avi != immObject->mAttrValueMap.end()) {
> +        osafassert(!(avi->second->isMultiValued()));
> +        ImmAttrValue* valuep = avi->second;
> +        longDnsAllowed = (valuep->getValue_int() != 0);
> +    }
> +    TRACE_LEAVE();
> +    return longDnsAllowed;
> +}
> +
>  /**
>   * Fetches the nodeId and possibly connection id for the
>   * implementer connected to the class OPENSAF_IMM_CLASS_NAME.
> diff --git a/osaf/services/saf/immsv/immnd/ImmModel.hh 
> b/osaf/services/saf/immsv/immnd/ImmModel.hh
> --- a/osaf/services/saf/immsv/immnd/ImmModel.hh
> +++ b/osaf/services/saf/immsv/immnd/ImmModel.hh
> @@ -483,6 +483,7 @@ public:
> 
>      SaImmRepositoryInitModeT getRepositoryInitMode();
>      unsigned int      getMaxSyncBatchSize();
> +    bool              getLongDnsAllowed();
>      void              prepareForLoading();
>      bool              readyForLoading();
>      void              prepareForSync(bool isJoining);
> diff --git a/samples/immsv/OpensafImm.xml 
> b/samples/immsv/OpensafImm.xml new file mode 100644
> --- /dev/null
> +++ b/samples/immsv/OpensafImm.xml
> @@ -0,0 +1,64 @@
> +<?xml version="1.0"?>
> +<imm:IMM-contents 
> +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
> +xsi:noNamespaceSchemaLocation="SAI-AIS-IMM-
> XSD-A.02.13.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
> xmlns:imm="http://www.saforum.org/IMMSchema";>
> +  <class name="OpensafImm">
> +    <category>SA_CONFIG</category>
> +    <rdn>
> +      <name>opensafImm</name>
> +      <type>SA_NAME_T</type>
> +      <category>SA_CONFIG</category>
> +      <flag>SA_INITIALIZED</flag>
> +    </rdn>
> +    <attr>
> +      <name>opensafLongDnsAllowed</name>
> +      <type>SA_UINT32_T</type>
> +      <category>SA_CONFIG</category>
> +      <flag>SA_WRITABLE</flag>
> +      <default-value>0</default-value>
> +    </attr>
> +    <attr>
> +      <name>opensafImmSyncBatchSize</name>
> +      <type>SA_UINT32_T</type>
> +      <category>SA_CONFIG</category>
> +      <flag>SA_WRITABLE</flag>
> +      <default-value>65479</default-value>
> +    </attr>
> +    <attr>
> +      <name>opensafImmNostdFlags</name>
> +      <type>SA_UINT32_T</type>
> +      <category>SA_RUNTIME</category>
> +      <flag>SA_CACHED</flag>
> +      <default-value>0</default-value>
> +    </attr>
> +    <attr>
> +      <name>opensafImmEpoch</name>
> +      <type>SA_UINT32_T</type>
> +      <category>SA_RUNTIME</category>
> +      <flag>SA_PERSISTENT</flag>
> +      <flag>SA_CACHED</flag>
> +    </attr>
> +    <attr>
> +      <name>opensafImmClassNames</name>
> +      <type>SA_STRING_T</type>
> +      <category>SA_RUNTIME</category>
> +      <flag>SA_MULTI_VALUE</flag>
> +      <flag>SA_PERSISTENT</flag>
> +      <flag>SA_CACHED</flag>
> +    </attr>
> +    <attr>
> +      <name>SaImmAttrImplementerName</name>
> +      <type>SA_STRING_T</type>
> +      <category>SA_CONFIG</category>
> +    </attr>
> +    <attr>
> +      <name>SaImmAttrClassName</name>
> +      <type>SA_STRING_T</type>
> +      <category>SA_CONFIG</category>
> +      <default-value>OpensafImm</default-value>
> +    </attr>
> +    <attr>
> +      <name>SaImmAttrAdminOwnerName</name>
> +      <type>SA_STRING_T</type>
> +      <category>SA_CONFIG</category>
> +    </attr>
> +  </class>
> +</imm:IMM-contents>
> 
> ----------------------------------------------------------------------
> -------- HPCC Systems Open Source Big Data Platform from LexisNexis 
> Risk Solutions Find What Matters Most in Your Big Data with HPCC 
> Systems Open Source. Fast. Scalable. Simple. Ideal for Dirty Data.
> Leverages Graph Analysis for Fast Processing & Easy Data Exploration 
> http://www.hpccsystems.com 
> _______________________________________________
> Opensaf-devel mailing list
> Opensaf-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/opensaf-devel

------------------------------------------------------------------------------
HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions
Find What Matters Most in Your Big Data with HPCC Systems
Open Source. Fast. Scalable. Simple. Ideal for Dirty Data.
Leverages Graph Analysis for Fast Processing & Easy Data Exploration
http://www.hpccsystems.com
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to