Re: [netmod] AD review of draft-ietf-netmod-entity-06

Martin Bjorklund <mbj@tail-f.com> Wed, 10 January 2018 13:46 UTC

Return-Path: <mbj@tail-f.com>
X-Original-To: netmod@ietfa.amsl.com
Delivered-To: netmod@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C4C8D1275FD for <netmod@ietfa.amsl.com>; Wed, 10 Jan 2018 05:46:41 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.911
X-Spam-Level:
X-Spam-Status: No, score=-1.911 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id BCrfU1uOg8p3 for <netmod@ietfa.amsl.com>; Wed, 10 Jan 2018 05:46:36 -0800 (PST)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 81C1012420B for <netmod@ietf.org>; Wed, 10 Jan 2018 05:46:36 -0800 (PST)
Received: from localhost (unknown [173.38.220.56]) by mail.tail-f.com (Postfix) with ESMTPSA id 1D2DB1AE0118; Wed, 10 Jan 2018 14:46:35 +0100 (CET)
Date: Wed, 10 Jan 2018 14:44:53 +0100
Message-Id: <20180110.144453.957272588242505523.mbj@tail-f.com>
To: bart.bogaert@nokia.com
Cc: rwilton@cisco.com, netmod@ietf.org
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <AM4PR07MB1716D69A0AF0BBCD3BAF71D094110@AM4PR07MB1716.eurprd07.prod.outlook.com>
References: <AM4PR07MB1716BF34E1A66823C9A02DFA94100@AM4PR07MB1716.eurprd07.prod.outlook.com> <20180109.163933.49682684192910889.mbj@tail-f.com> <AM4PR07MB1716D69A0AF0BBCD3BAF71D094110@AM4PR07MB1716.eurprd07.prod.outlook.com>
X-Mailer: Mew version 6.7 on Emacs 24.5 / Mule 6.0 (HANACHIRUSATO)
Mime-Version: 1.0
Content-Type: Text/Plain; charset="utf-8"
Content-Transfer-Encoding: base64
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/6LxGqxQuO3Wab5rfPvPAW20QDyc>
Subject: Re: [netmod] AD review of draft-ietf-netmod-entity-06
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: NETMOD WG list <netmod.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/netmod>, <mailto:netmod-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/netmod/>
List-Post: <mailto:netmod@ietf.org>
List-Help: <mailto:netmod-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/netmod>, <mailto:netmod-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 10 Jan 2018 13:46:43 -0000

Hi,

"Bogaert, Bart (Nokia - BE/Antwerp)" <bart.bogaert@nokia.com> wrote:
> Hi,
> 
> --- snip ---
> 
> > state.”, so the above sentence only applies for the second case below.
> 
> Ok.
> 
> > 2. The second case is that something is detected but it can’t be read.
> > We do not see a reason to use the value configured for the leafs 
> > ‘serial-num’, ‘mfg-name’ and ‘model-name’ of a matching entry in the 
> > configuration data.  These leafs are defined as optional so why would 
> > we report something entered by an operator in the operational 
> > datastore that intends to report on what is detected?  Is it not 
> > better to not report them at all?  In an NMDA context it would be 
> > possible to have a different value (or no value at all) for certain 
> > leafs while there is something in the running/intended datastore.
> 
> The normal NMDA procedure for a configuration leaf is to repeat it in
> operational state.  This is then the "applied configuration".
> I don't think we should have a special rule for these leafs.
> 
> This also means that a client that just wants to read all the serial
> numbers can do so from one place, the operational state, regardless of
> how they came into existance.
> 
> [Bogaert, Bart ] 
> 
> We do understand that a target of NMDA is to read out the actually
> applied data in one request.  But the result should not be
> confusion. A key word is “applied”.
> 
> Section 5.3 of draft-ietf-netmod-revised-datastores-09 also contains
> (I put a part of the section between ***):
> The datastore schema for <operational> MUST be a superset of the
> combined datastore schema used in all configuration datastores except
> that configuration data nodes supported in a configuration datastore
> ***MAY be omitted from <operational> if a server is not able to
> accurately report them ***.

Note that this text talks about the *schema*.  It is intended for
servers to migrate to NMDA without having to instrument all config
nodes in <operational> immediately.  If you apply this to
ietf-hardware, it could be a server that implements the node
"serial-num" in config, but not in <operational> (which would be
weird).

> For example, it is expected that the value of multiple leafs need to
> be a consistent set, e.g. the mfg-name, the model-name, and the
> serial-num.
> Suppose we have a use case in which a hardware component is
> planned/configured (e.g. a board supporting DSL interfaces) but a
> different one is plugged (e.g. a board supporting ethernet
> interfaces).
> Suppose it is possible to read some fields on the detected component
> but due to an issue not to read other fields.
> If in that case the operational datastore will be completed with the
> data taken from the running datastore, then the presented view might
> be inconsistent.

This is true for other similar nodes as well - "asset-id" and "uri".

> The question is also: what data is applied? Our assumption: if there
> is a mismatch between detected versus configured hardware, then the
> interface/service related data that is configured consistently with
> the planned hardware is not applied on the mismatching
> hardware. I.e. the detected hardware is not brought in service so not
> ‘applied’, the operational datastore only (accurately) reports on what
> is detected.

If there is a mismatch and the server doesn't apply the configured
values, then obviously the configured 'mfg-name' etc are not copied to
<operational>.

> We do not see this as a special rule for this data but rather would
> apply a general rule:
> -	if there is a ‘missing resource’, then the data is not reported in the
>  	operational datastore.
> -	If the server is not able to report accurately, then the data is
>  	omitted from the operational

I think that if you want complete separation between the values of
'mfg-name', 'model-name', and 'serial-num' in configuration and
operational state, then these should be modelled as separate leafs.
We should have a config false leaf 'serial-num' that only contains the
detected value (if found), and a config true leaf 'config-serial-num'
or something, that contains the configured serial number.

But if this is the case, I wonder if it wouldn't be better to leave
such additional config objects to vendors, and simply make these three
nodes config false in ietf-hardware.


/martin

> 
> Regards, Bart
> 
> /martin
> 
> 
> > 
> > Best regards, Bart
> > 
> > -----Original Message-----
> > From: netmod [mailto:netmod-bounces@ietf.org] On Behalf Of Robert 
> > Wilton
> > Sent: Thursday, December 21, 2017 4:14 PM
> > To: Martin Bjorklund <mbj@tail-f.com>; netmod@ietf.org
> > Subject: Re: [netmod] AD review of draft-ietf-netmod-entity-06
> > 
> > Hi Martin,
> > 
> > 
> > On 21/12/2017 11:37, Martin Bjorklund wrote:
> > > Hi,
> > >
> > > I need WG input on this issue.  The question is how to handle 
> > > 'serial-num', 'mfg-name', and 'model-name'.  I think they should all 
> > > be treated the same.  Based on previous WG discussion (see e.g. the 
> > > mail thread "draft-ietf-netmod-entity issue #13"), I think they 
> > > should all be configurable, but the configured value is only used in 
> > > operational state if the system cannot read it from the hardware.
> > I think that this approach is probably OK:
> >   - The client can always see the real value if it is available.
> >   - If it is not available then they can assign a value via  
> > configuration.
> > 
> > I was also considering an alternative approach of having a separate 
> > set of config false leaves for the "burnt in values".  And then having
> > the configurable leaves always override the default operational 
> > values. E.g. similar to how an interface MAC address would expect to 
> > be handled.
> > 
> > But one set of leaves is probably sufficient.
> > 
> > Thanks,
> > Rob
> > 
> > 
> > >
> > > So I suggest the following changes:
> > >
> > > OLD:
> > >
> > >        leaf serial-num {
> > >          type string;
> > >          config false;
> > >          description
> > >            "The vendor-specific serial number string for the
> > >             component.  The preferred value is the serial number
> > >             string actually printed on the component itself (if
> > >             present).";
> > >          reference "RFC 6933: entPhysicalSerialNum";
> > >        }
> > >
> > > NEW:
> > >
> > >        leaf serial-num {
> > >          type string;
> > >          description
> > >            "The vendor-specific serial number string for the
> > >             component.  The preferred value is the serial number
> > >             string actually printed on the component itself (if
> > >             present).
> > >
> > >             This leaf can be configured.  There are two use cases for
> > >             this; as a 'post-it' note if the server cannot determine
> > >             this value from the component, or when pre-provisioning a
> > >             component.
> > >
> > >             If the server can determine the serial number from the
> > >             component, then that value is always used in operational
> > >             state, even if another value has been configured.";
> > >          reference "RFC 6933: entPhysicalSerialNum";
> > >        }
> > >
> > > And corresponding text for 'mfg-name' and 'model-name'.
> > >
> > > And also:
> > >
> > > OLD:
> > >
> > >           When the server detects a new hardware component, it
> > >           initializes a list entry in the operational state.
> > >
> > >           If the server does not support configuration of hardware
> > >           components, list entries in the operational state are
> > >           initialized with values for all nodes as detected by the
> > >           implementation.
> > >
> > >           Otherwise, the following procedure is followed:
> > >
> > >             1. If there is an entry in the /hardware/component list in
> > >                the intended configuration with values for the nodes
> > >                'class', 'parent', 'parent-rel-pos' that are equal to
> > >                the detected values, then:
> > >
> > >             1a. If the configured entry has a value for 'mfg-name'
> > >                 that is equal to the detected value, or if the
> > >                 'mfg-name' value cannot be detected, then the list
> > >                 entry in the operational state is initialized with the
> > >                 configured values for all configured nodes, including
> > >                 the 'name'.
> > >
> > >                 Otherwise, the list entry in the operational state is
> > >                 initialized with values for all nodes as detected by
> > >                 the implementation.  The implementation may raise an
> > >                 alarm that informs about the 'mfg-name' mismatch
> > >                 condition.  How this is done is outside the scope of
> > >                 this document.
> > >
> > >             1b. Otherwise (i.e., there is no matching configuration
> > >                 entry), the list entry in the operational state is
> > >                 initialized with values for all nodes as detected by
> > >                 the implementation.
> > >
> > >           If the /hardware/component list in the intended
> > >           configuration is modified, then the system MUST behave as if
> > >           it re-initializes itself, and follow the procedure in 
> > > (1).";
> > >
> > > NEW:
> > >
> > >           When the server detects a new hardware component, it
> > >           initializes a list entry in the operational state.
> > >
> > >           If the server does not support configuration of hardware
> > >           components, list entries in the operational state are
> > >           initialized with values for all nodes as detected by the
> > >           implementation.
> > >
> > >           Otherwise, the following procedure is followed:
> > >
> > >             1. If there is an entry in the /hardware/component list in
> > >                the intended configuration with values for the nodes
> > >                'class', 'parent', 'parent-rel-pos' that are equal to
> > >                the detected values, then the list entry in operational
> > >                state is initialized with the configured values,
> > >                including the 'name'.  The leafs 'serial-num',
> > >                'mfg-name', and 'model-name' are treated specially; see
> > >                their descriptions for details.
> > >
> > >             2. Otherwise (i.e., there is no matching configuration
> > >                entry), the list entry in the operational state is
> > >                initialized with values for all nodes as detected by
> > >                the implementation.
> > >
> > >           If the /hardware/component list in the intended
> > >           configuration is modified, then the system MUST behave as if
> > >           it re-initializes itself, and follow the procedure in 
> > > (1).";
> > >
> > >
> > >
> > > /martin
> > >
> > >
> > >
> > >
> > > Benoit Claise <bclaise@cisco.com> wrote:
> > >> On 12/20/2017 4:00 PM, Martin Bjorklund wrote:
> > >>> Benoit Claise <bclaise@cisco.com> wrote:
> > >>>> Hi Martin,
> > >>>>
> > >>>> Thanks.
> > >>>> Only kept the relevant excerpts.
> > >>>>>> - Some objects are read-write in RFC6933:
> > >>>>>>          entPhysicalSerialNum
> > >>>>>>          entPhysicalAlias
> > >>>>>>          entPhysicalAssetID
> > >>>>>>          entPhysicalUris
> > >>>>>>
> > >>>>>> For example, entPhysicalSerialNum being read-write always bothered
> > >>>>>> me.
> > >>>>>> serial-num is now "config false", which is a good news IMO.
> > >>>>> Actually, this was not the intention.  In
> > >>>>> draft-ietf-netmod-entity-03 this is configurable.  I missed this 
> > >>>>> in the conversion to NMDA.
> > >>>> Ah. So no good news in this case...
> > >>>>>> In the reverse direction, entPhysicalMfgName is read-only in 
> > >>>>>> RFC6933, while it's "config true" in draft-ietf-netmod-entity
> > >>>>> Yes, this was added per request from the WG.  See e.g. the 
> > >>>>> thread "draft-ietf-netmod-entity issue #13".
> > >>>> Sure. It was mainly an observation.
> > >>>>> However, I think that what we have now is probably not correct.  
> > >>>>> I think that all nodes 'serial-num', 'mfg-name', and 'model-name'
> > >>>>> should be config true, and the description of list 'component' 
> > >>>>> updated to reflect that all these tree leafs are handled the same way.
> > >>>>>
> > >>>>> I would like to know what the WG thinks about this.
> > >>>> Talking as a contributor this time.
> > >>>> It seems that inventory management is kind of broken when someone 
> > >>>> can change 'serial-num', 'mfg-name', and 'model-name.
> > >>> They can't really change them.  The configured values are only 
> > >>> used (i.e. visible in the operational state) if the device cannot 
> > >>> detect them automatically.  I.e., they work as "post-it" notes only.
> > >> If I look at, for example, the mfg-name, description, this is not 
> > >> what it says.
> > >>
> > >>     leaf mfg-name {
> > >>             type string;
> > >>             description
> > >>               "The name of the manufacturer of this physical component.
> > >>                The preferred value is the manufacturer name string
> > >>                actually printed on the component itself (if present).
> > >>
> > >>                Note that comparisons between instances of the model-name,
> > >>                firmware-rev, software-rev, and the serial-num nodes are
> > >>                only meaningful amongst component with the same value of
> > >>                mfg-name.
> > >>
> > >>                If the manufacturer name string associated with the
> > >>                physical component is unknown to the server, then this
> > >>                node is not instantiated.";
> > >>             reference "RFC 6933 <https://tools.ietf.org/html/rfc6933>:
> > >>             entPhysicalMfgName";
> > >>
> > >> Regards, Benoit
> > >>
> > >>>
> > >>> /martin
> > >>> .
> > >>>
> > > _______________________________________________
> > > netmod mailing list
> > > netmod@ietf.org
> > > https://www.ietf.org/mailman/listinfo/netmod
> > > .
> > >
> > 
> > _______________________________________________
> > netmod mailing list
> > netmod@ietf.org
> > https://www.ietf.org/mailman/listinfo/netmod