Child pages
  • 2022-03-04 IISOMI Meeting Minutes
Skip to end of metadata
Go to start of metadata

Date

Attendees

Agenda

  • Administrative
  • Coding of Target Path
  • Continue discussion on adding values to an existing core-model enumeration
  • UML modeling guidelines questions from ITU-T Q14/15
  • YANG expressions for Union & Intersection
  • UML → YANG Mapping Tool funding (Feb. 18)
  • Papyrus Releases
    • Consider a plan for convergence of ITU-T Q14/15, ONF Common IM and TAPI to 2020-06 (4.16) version
  • Proposals of capturing discussion items
  • Feature/condition
  • Convention of UML property names in document/comment/description
  • Papyrus-Model2Doc further investigations?
  • Private GitHub
  • Public GitHub cleanup
  • Gendoc Issues: output for Interfaces, Operations, Associations, Abstractions 
  • Modular and decoupled modeling process
  • AOB

Discussion items

#

Time

Item

Who

Notes

15 minAdmin: Call planAll

 Leader: Andrea

 Leader: Nigel

US/Canada: Daylight Savings Starts 13 March.  Eastern Daylight Time is UTC-4

Leader: Kam

Leader: Scott (IETF meeting)

Europe: European Summer Time Starts 27 March CEST is UTC+2

Leader: Martin (ooo Nigel)

Leader: ? (ooo Bernd, Nigel) Cancel?

cancel(l)ed (public holiday in Germany: Bernd, Martin, Nigel) 

Leader: Bernd

Leader: Nigel

210 min

Admin: IISOMI Action Items status

All

IISOMI Action Items review (every meeting)

Action Items done

none

Refreshed Action Items

  • Nigel Davis determine what Jira form structure etc. ONF can create IISOMI. Provide example/detail etc. for discussion.
  • Nigel Davis   Provide an overview of the DDD trial profile and show application to the core model.
  • Andrea Mazzini Bernd Zeuner    Improve explanation of target sterotype string content formation in the UML Guidelines.
  • Scott Mansfield    Provide  gendoc  examples  to  implement  the  first  two bullets
    • 2021-05-28 IISOMI Meeting notes #6
    • GenDoc didn't generate constraint
    • GenDoc OstigOTtpSource::txti:EByte multiplicity [64] is not generated correctly
    • Discussion Needed:  To agree on a specific format for operation, then implement
  • Scott Mansfield  To take the gendoc examples from the guidelines and perform regression test. 
    • Also decide on version of gendoc and Papyrus
    • Version for initial regression test is p2020-06
    • Andrea indicated the had attempted to apply analogous rules to member-end to include other properties. Andrea tried various techniques to get client and supplier but with no success 
      • Probably need to review the UML metadata
    • Andrea was able to print the target string
  • Scott Mansfield  To investigate how to get client and server values for an abstraction association for gendoc.
30 min

Add values to an existing core-model enumeration

Martin

the ONF OTCC 5G-xHaul group would like to get guidance how to add microwave specific layer-protocol-names to core-model:layer-protocol-names (e.g. microwave-physical-section, microwave-section, ....). More abstract: How can a conditional package add values to an existing (extensible) core-model enumeration?

To demonstrate, create a enum and then extend the enum using either specify or generalization. Determine how to display this in GenDoc.  Determine the guidelines needed to convert this structure to YANG.  Initial thoughts are to ensure isLeaf = false so Identity is used in YANG.  For example the core model enum would be the base and the specify or generalization would extend the base identity.

Scott Mansfield Demonstrate small example of enums with gendoc

40 min

UML modeling guidelines questions from ITU-T Q14/15

Italo

<specify>

Decision expected from IISOMI

Concern on augment rules

UML/YANG Guidelines should be improved(?)

keep text in UML to YANG Guidelines

UML Guidelines RootElement 

  • multiplicity: 0 or 0...n or * → the root element is optional
  • multiplicity: 1 or n or 1..* or n ... * → root element is mandatory
  • multiplicity:  n...*, n → root element is a list (not in container)

Update in mapping Guidelines expected

Discussion to be continued ....

  • suggestion: manual adoptions after yang generation

Examples about RootElement representation in YANG (thanks Italo)

/tapi-context/tapi-topology-context/topology[uuid=<topology-uuid>]

/topologies/topology[id=<topology-id>]

container example {
   presence
     "Presence represents <condition>"
   leaf foo {
     type string;
     mandatory true;
   }
   leaf bar {
     type string;
   }
}

container example {
  leaf is-present {
    type boolean;
    default false;
    description
      "Represents <condition>";
  }
  leaf foo {
    type string;
    mandatory true;
    when ../is-present;
  }
  leaf bar {
    type string;
    when ../is-present;
  }
}

  leaf bar {
    type string;
    when true() {
      description
        "<UML condition>";
    }
  }


745 minCoding of target path
  • In particular, if I understand correctly, for the root element object class (i.e., red element), the format is actually not “[/<ModelName>:<ClassName>:<navigable association end role name>]” as indicated in the UML guidelines v1.3.03 but it is in the format of “[/<ModelName>:<ClassName>:<name of the RootElement stereotype>]”
  • Model Name or Prefix

2022-01-21:

  • Italo Busi indicates that the UML guideline is not requiring the undescore in the name of the RootElement stereotype, while the examples in the UML to YANG guideline include the undescore (e.g. TAPI currently has "_context"). It is recommendable to clarify and align the guidelines.
  • In particular, for the root element object class (i.e., red element), the format is actually not “[/<ModelName>:<ClassName>:<navigable association end role name>]” as indicated in the UML guidelines v1.3.03 but it is in the format of “[/<ModelName>:<ClassName>:<name of the RootElement stereotype>]”, e.g. 

    • PtpTlpDefaultDsSpecSpecifiesPtpDefaultDs: /ptp:Ptp:_ptp/ptp:Ptp:_instanceList/ptp:PtpInstance:_defaultDs

    • PtpTlpPortDsSpecSpecifiesPtpPortDs: /ptp:Ptp:_ptp/ptp:Ptp:_instanceList/ptp:PtpInstance:_portDsList

    • PtpTlpTcDefaultDsSpecSpecifiesPtpTcDefaultDsPac: /ptp:Ptp:_ptp/ptp:Ptp:_instanceList/ptp:Ptp:_transparentClockDefaultDs


2022-01-28: See 2022-01-28 IISOMI Meeting Minutes #4 for details of discussion

  • Discussion conclusion:
    • The referencing mechanism used in the target path identifies each element in the path by going one step up the path (hierarchy) to find the referencing attribute from the class that references the class to be identified. This works for all but the root entity (where there is clearly nothing one step up the path hierarchy). This is why an artificial role end was used reference the root entity.

    • This is conveyed in the <<RootElement>> stereotype as shown above. It is as if a class Context references the TapiContext via a composition with a navigable attribute _context. The class "Context" does not exist in the model. Both the class name "Context" and its reference are derived from the value of the name in the <<RootElement>> Stereotype (i.e., "_context") where the class name is an upper camel form of the string with the "_" removed.

    • The mechanism should be described more clearly in the modeling guidelines.

      • Andrea Mazzini Bernd Zeuner:  To improve the explanation of target sterotype string content formation by  

  • Remaining issue
    • Italo's second question "Should we use the module name (i.e., IetfPtp) or the module prefix (i.e., ptp) or either option?"
    • Only briefly discussed. No definitive conclusion yet.
    • It seems that in UML it should be the module name, and the mapping tool will then maps the module name to the module prefix. 

2022-02-04:

  • Bernd shared his off-line email discussion with Andrea on how to improve the explanation in section 5.4.3/TR514. 
    • In his off-line discussion, Bernd raised a question on second part (yellow highlighted) of the path.
  • No conclusion reached from the long discussion. Will continue the discusion in the next call.
  • On Italo's second question "Should we use the module name (i.e., IetfPtp) or the module prefix (i.e., ptp) or either option?"
    •   Agree that in the UML model, the module name should be used because module prefix is a YANG term.

Post call email from Italo:

2022-02-11:

In order to be able to compose the target path of the two «Specify» relationships the class diagram below has been extended with the greyed out "non existing" object class and composition relationships.

Andrea Mazzini will draft rules for the UML Modelling Guidelines for creating the target paths; this is part of the existing action item "Improve explanation of target sterotype string content formation in the UML Guidelines". Discussion will continue in two weeks.

2022-03-04:

Italo Busi presents an UML diagram with abstraction examples and related translations into Yang augment statements.

  • The following cases are considered:
    • augment <--> simple composition (one additional node in the tree)
    • augment <--> extendend composition (no additional node in the tree)
  • Another reference is the email "Augmentation issues with UML2YANG" of by Italo Busi
  • Clarified that the root of a Yang tree could also be a leaf or a list, besides a container.
  • Clarified that the Yang augment statement applies when elements are distributed across different Yang modules.
  • Italo Busi proposes to set as abstract the augmenting class in case the container is not required.
  • Andrea Mazzini currently in TAPI UML the translation always leads to a container, e.g. the odu-connectivity-service-end-point-spec:
 augment "/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connectivity-service/tapi-connectivity:end-point" {
    container odu-connectivity-service-end-point-spec {
        uses odu-connectivity-service-end-point-spec;
        description "none";
    }
    description "none";
}

Which is then an additional node in the Yang tree:

  +--rw context
| ...
     +--rw tapi-connectivity:connectivity-context
     |  +--rw tapi-connectivity:connectivity-service* [uuid]
| | ...
     |  |  +--rw tapi-connectivity:end-point* [local-id]
| | | ...
     |  |  |  +--rw tapi-odu:odu-connectivity-service-end-point-spec
     |  |  |  |  +--rw tapi-odu:odu-csep-common-pac
     |  |  |  |  |  +--rw tapi-odu:odu-type?                  odu-type
     |  |  |  |  |  +--rw tapi-odu:odu-rate?                  uint64
     |  |  |  |  |  +--rw tapi-odu:opu-tributary-slot-size?   odu-slot-size
     |  |  |  |  +--rw tapi-odu:odu-csep-ctp-pac
     |  |  |  |  |  +--rw tapi-odu:tributary-port-number?   uint64
     |  |  |  |  |  +--rw tapi-odu:tributary-slot-list*     uint64
     |  |  |  |  +--rw tapi-odu:odu-csep-ttp-pac
     |  |  |  |     +--rw tapi-odu:configured-mapping-type?   mapping-type
     |  |  |  |     +--rw tapi-odu:configured-client-type?    tapi-dsr:digital-signal-type

Italo Busi highlights that current translation does not allow distinct labels for the container and for the used class. By always specifying as abstract the augmenting class we may allow both ways.

Post meeting note: Italo Busi provides the updated diagram with a summary of the agreements-

  • Below the base model example:

  • The tree, note the abstract ClassA which is not translated, and abstract ClassC which is forcedly translated by the "presence condition".

      +--rw root
         +--rw element* [element-key]
            +--rw element-key    string
            +--rw leaf-1?        string
            +--rw leaf-2?        string
            +--rw leaf-a-1?      string
            +--rw leaf-a-2?      string
            +--rw container-b
            |  +--rw leaf-b-1?   string
            |  +--rw leaf-b-2?   string
            +--rw container-c!
            |  +--rw leaf-c-1?   string
            |  +--rw leaf-c-2?   string
            +--rw list-d* [key-d]
               +--rw key-d       string
               +--rw leaf-d-1?   string
               +--rw leaf-d-2?   string

  • The schema:

module base-model-example {
  yang-version 1.1;
  namespace "urn:test:base-model-example";
  prefix b;

  grouping model-root {
    list element {
      key element-key;
      uses model-element;
    }
  }

  grouping model-element {
    leaf element-key {
      type string;
    }
    leaf leaf-1 {
      type string;
    }
    leaf leaf-2 {
      type string;
    }
    uses class-a;
    container container-b {
      uses class-b;
    }
    container container-c {
      presence
        "Presence condition";
      uses class-c;
    }
    list list-d {
      key key-d;
      uses class-d;
    }
  }
  
  grouping class-a {
    leaf leaf-a-1 {
      type string;
    }
    leaf leaf-a-2 {
      type string;
    }
  }

  grouping class-b {
    leaf leaf-b-1 {
      type string;
    }
    leaf leaf-b-2 {
      type string;
    }
  }

  grouping class-c {
    leaf leaf-c-1 {
      type string;
    }
    leaf leaf-c-2 {
      type string;
    }
  }

  grouping class-d {
    leaf key-d {
      type string;
    }
    leaf leaf-d-1 {
      type string;
    }
    leaf leaf-d-2 {
      type string;
    }
  }

  container root {
    uses model-root;
  }
}

  • Below the augment model example:

  • The tree:
  augment /b:root/b:element:
    +--rw leaf-a-1?   string
    +--rw leaf-a-2?   string
  augment /b:root/b:element:
    +--rw class-b
       +--rw leaf-b-1?   string
       +--rw leaf-b-2?   string
  augment /b:root/b:element:
    +--rw container-c!
       +--rw leaf-c-1?   string
       +--rw leaf-c-2?   string
  augment /b:root/b:element:
    +--rw list-d* [key-d]
       +--rw key-d       string
       +--rw leaf-d-1?   string
       +--rw leaf-d-2?   string
  • The full tree:
      +--rw root
         +--rw element* [element-key]
            +--rw element-key      string
            +--rw leaf-1?          string
            +--rw leaf-2?          string
            +--rw leaf-a-1?        string
            +--rw leaf-a-2?        string
            +--rw container-b
            |  +--rw leaf-b-1?   string
            |  +--rw leaf-b-2?   string
            +--rw container-c!
            |  +--rw leaf-c-1?   string
            |  +--rw leaf-c-2?   string
            +--rw list-d* [key-d]
            |  +--rw key-d       string
            |  +--rw leaf-d-1?   string
            |  +--rw leaf-d-2?   string
            +--rw a:leaf-a-1?      string
            +--rw a:leaf-a-2?      string
            +--rw a:class-b
            |  +--rw a:leaf-b-1?   string
            |  +--rw a:leaf-b-2?   string
            +--rw a:container-c!
            |  +--rw a:leaf-c-1?   string
            |  +--rw a:leaf-c-2?   string
            +--rw a:list-d* [key-d]
               +--rw a:key-d       string
               +--rw a:leaf-d-1?   string
               +--rw a:leaf-d-2?   string
  • The schema:

module augment-model-example {
  yang-version 1.1;
  namespace "urn:test:augment-model-example";
  prefix a;

  import base-model-example {
    prefix "b";
  }

  grouping class-a {
    leaf leaf-a-1 {
      type string;
    }
    leaf leaf-a-2 {
      type string;
    }
  }

  grouping class-b {
    leaf leaf-b-1 {
      type string;
    }
    leaf leaf-b-2 {
      type string;
    }
  }

  grouping class-c {
    container container-c {
      presence
        "Presence condition";
      uses class-c-pac;
    }
  }

  grouping class-c-pac {
    leaf leaf-c-1 {
      type string;
    }
    leaf leaf-c-2 {
      type string;
    }
  }

  grouping class-d {
    leaf key-d {
      type string;
    }
    leaf leaf-d-1 {
      type string;
    }
    leaf leaf-d-2 {
      type string;
    }
  }

  augment "/b:root/b:element" {
    uses class-a;
  }

  augment "/b:root/b:element" {
    container class-b {
      uses class-b;
    }
  }

  augment "/b:root/b:element" {
    uses class-c;
  }

  augment "/b:root/b:element" {
    list list-d {
      key key-d;
      uses class-d;
    }
  }
}

80 min

UML Modeling Guidelines

Italo

UML modeling guidelines

  • Convention for the name of the non-navigable member ends of an association
    • Have seen cases where these member ends do not have names, cases where they have LCC names and cases where they have names following the same convention as navigable attributes (_ + LCC)
  • Cardinality for conditionally mandatory associations: should it be 1 or 0..1?

2022-02-04: No discussion. Deferred to 2022-02-11

90 minPapyrus Releases

Papyrus Releases

November 19 discussion: The TR-512 v1.5 Core model was developed using Eclipse 2019-09. It the model can migrate to 2020-06 seamlessly, Q14/15 might move G.7711 v4.0 (12/2021 consent) also to Eclipse 2020-06. To verify the seamless migration: 

  • Nigel Davis  Try to move TR-512 v1.5 core model to 2020-06 (4.16) Eclipse
  • Hing-Kam Lam Try to move TR-512 v1.5 core model to 2020-06 (4.16) Eclipse

2021-12-03: 

  • from Kam - diagrams from TR-512 v1.5 core model on 2020-06 (4.16) Eclipse looks fine
  • proposal for next week ITU-T: IISOMI moves to 2020-06, because gen-doc works find 
  • TAPI will follow after some tests will be done by Andrea Mazzini
  • Nigel Davis  Try to move TR-512 v1.5 core model to 2020-06 (4.16) Eclipse

2022-01-21:

2022-01-21:

  • Brief discussion on 2020-06 (4.16) noting that Papyrus appeared to be OK (but Nigel Davis noted that in his environment Gendoc was still not working due to memory apparently).

2022-02-04: No discussion. Deferred to 2022-02-11

100 min

Proposals for capturing discussion items 


Prior discussion: 2021-10-29 IISOMI Meeting Minutes #2

Prior discussion pointed out that:

  • a private repository is not the appropriate place for the items since not everyone has access to this
  • the ONF GitHub is publicly available but not all participants are allowed to contribute to it
  • there is no single ONF repository which could host such Issues; IISOMI is spread over many repositories
  • it might be possible to cover the discussions in Wiki pages
  • new discussions should be captured in the Meeting Minutes and then copied to the Wiki pages
  • Bernd Zeuner  Draft an example Wiki page that capture an discussion item

Proposal wiki page from Bernd for capturing discussion items:

2022-01-07:

  • Follow-up after progress made with Jira (  ) as per action for Nigel Davis 

2022-01-21:

  • Scott Mansfield informs that IETF is not using JIRA, but Github and its Issues. But as highlighted above, relying on Github for IISOMI seems not feasible.

2022-02-04: No discussion. Deferred to 2022-02-11

110 minGuideline/Tooling wiki page(s) for listing the tasks 

Andrea Mazzini shows Guidelines and Tooling Discussion Items

2022-01-28

No update.

2022-02-04: No discussion. Deferred to 2022-02-11

120 minFeature/condition

Prior discussion: IISOMI 2021-09-03 Meeting Minutes, #3

2022-02-04: No discussion. Deferred to 2022-02-11

130 min

Convention of UML property names in document/comment/description

Prior discussion: 2021-10-29 IISOMI Meeting Minutes #5

  • Bernd Zeuner  Update the Mapping Guidelines with a rule that artefact names within the descriptions should be converted to YANG style.

2022-01-07:

2022-01-28

No update.

2022-02-04: No discussion. Deferred to 2022-02-11

140 minPapyrus-Model2Doc feature

Prior discussion: 2021-05-28 IISOMI Meeting notes #3

2022-01-21 post meeting notes:

Scott Mansfield found the following links to various update sites and performed some tests:

The last successful build (model2doc 0.8.0) works fine in 2021-12 (4.22) (Eclipse 4.22 and Papyrus 6.0).

Regarding 2020-06 (4.16), none of the found Model2Doc versions works.

Even with Eclipse 2021-12 (4.22) but Papyrus 4.8, Model2Doc does not work.

The conclusion so far is that only version 2021-03 (4.19) - Papyrus 5.1 and later seem to work with the 0.8.0 Model2Doc version.

2022-01-28

No update.

2022-02-04: No discussion. Deferred to 2022-02-11

150 min

Private GitHub

2022-01-28

No update.

2022-02-04: No discussion. Deferred to 2022-02-11

160 min

Cleanup of the existing public GitHub (ONF EAGLE), rationalize the forks/branches

Prior discussion: IISOMI 2021-09-24 Meeting Minutes #10

2022-01-28

No update.

2022-02-04: No discussion. Deferred to 2022-02-11

170 min

GenDoc Issues

Prior discussion: 2021-05-28 IISOMI Meeting notes #6

  • Scott Mansfield    Provide  gendoc  examples  to  implement  the  first  two bullets
    • 2021-05-28 IISOMI Meeting notes #6
    • GenDoc didn't generate constraint
    • GenDoc OstigOTtpSource::txti:EByte multiplicity [64] is not generated correctly
    • Discussion Needed:  To agree on a specific format for operation, then implement

2022-01-28

No update.

2022-02-04: No discussion. Deferred to 2022-02-11

180 minModular and decoupled modeling process

2021-12-03

from OIMT

CoreModel FD - to of the tree

Composed FC-Switch .... with no sense if independent

.

Driver of Model structure (arrangement)

usage of stereo-types

  • aggregate
  • leaf
  • admin relationships
  • Chris has nice ideas - but needs to be further analyzed.

First try of "modelling profiles" on CoreModel

Target:

  • Split CoreModel in "smaller" parts - decoupling 
  • Rules needs to be described/defined/documented.

Further details:

2022-01-07:

  • Nigel Davis noted that OIMT have agreed to develop the profile and apply to a part of the core as an example. This can be presented to IISOMI in February.
  • Nigel Davis  Provide an overview of the DDD trial profile and show application to the core model.

2022-01-28

No update.

2022-02-04: No discussion. Deferred to 2022-02-11

19
Agenda of next callAll
  • Administrative
  • Coding of Target Path
  • Continue discussion on adding values to an existing core-model enumeration
  • UML modeling guidelines questions from ITU-T Q14/15
  • YANG expessions for Union & Intersection
  • UML → YANG Mapping Tool funding (Feb. 18)
  • Papyrus Releases
    • Consider a plan for convergence of ITU-T Q14/15, ONF Common IM and TAPI to 2020-06 (4.16) version
  • Proposals of capturing discussion items
  • Feature/condition
  • Convention of UML property names in document/comment/description
  • Papyrus-Model2Doc further investigations?
  • Private GitHub
  • Public GitHub cleanup
  • Gendoc Issues: output for Interfaces, Operations, Associations, Abstractions 
  • Modular and decoupled modeling process
  • AOB

Action items

  •