draft-ietf-supa-generic-policy-data-model-01.txt   draft-ietf-supa-generic-policy-data-model-02.txt 
Network Working Group J. Halpern Network Working Group J. Halpern
Internet-Draft Ericsson Internet-Draft Ericsson
Intended status: Informational J. Strassner Intended status: Informational J. Strassner
Expires: April 3, 2017 Huawei Technologies Expires: April 16, 2017 Huawei Technologies
S. Van der Meer S. Van der Meer
Ericsson Ericsson
October 1, 2016 October 13, 2016
Generic Policy Data Model for Generic Policy Data Model for
Simplified Use of Policy Abstractions (SUPA) Simplified Use of Policy Abstractions (SUPA)
draft-ietf-supa-generic-policy-data-model-01 draft-ietf-supa-generic-policy-data-model-02
Abstract Abstract
This document defines two YANG policy data modules. The first is a This document defines two YANG policy data modules. The first is a
generic policy model that is meant to be extended on an application- generic policy model that is meant to be extended on an application-
specific basis. The second is an exemplary extension of the first specific basis. The second is an exemplary extension of the first
generic policy model, and defines rules as event-condition-action generic policy model, and defines rules as event-condition-action
policies. Both models are independent of the level of abstraction of policies. Both models are independent of the level of abstraction of
the content and meaning of a policy. the content and meaning of a policy.
skipping to change at page 1, line 39 skipping to change at page 1, line 39
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current working documents as Internet-Drafts. The list of current
Internet-Drafts is at http://datatracker.ietf.org/drafts/current/. Internet-Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six Internet-Drafts are draft documents valid for a maximum of six
months and may be updated, replaced, or obsoleted by other months and may be updated, replaced, or obsoleted by other
documents at any time. It is inappropriate to use Internet-Drafts documents at any time. It is inappropriate to use Internet-Drafts
as reference material or to cite them other than as "work in as reference material or to cite them other than as "work in
progress." progress."
This Internet-Draft will expire on April 3, 2017. This Internet-Draft will expire on April 15, 2017.
Copyright Notice Copyright Notice
Copyright (c) 2016 IETF Trust and the persons identified as the Copyright (c) 2016 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 19 skipping to change at page 2, line 19
3. Terminology .................................................... 3 3. Terminology .................................................... 3
3.1. Acronyms ................................................. 3 3.1. Acronyms ................................................. 3
3.2. Definitions .............................................. 3 3.2. Definitions .............................................. 3
3.3. Symbology ................................................ 5 3.3. Symbology ................................................ 5
4. Design of the SUPA Policy Data Models ......................... 5 4. Design of the SUPA Policy Data Models ......................... 5
4.1. Objectives ............................................... 5 4.1. Objectives ............................................... 5
4.2 Yang Data Model Maintenance ................................ 5 4.2 Yang Data Model Maintenance ................................ 5
4.3 YANG Data Model Overview ................................... 6 4.3 YANG Data Model Overview ................................... 6
4.4. YANG Tree Diagram ........................................ 7 4.4. YANG Tree Diagram ........................................ 7
5. SUPA Policy Data Model YANG Module ............................ 11 5. SUPA Policy Data Model YANG Module ............................ 11
6. IANA Considerations ........................................... 47 6. IANA Considerations ........................................... 62
7. Security Considerations ....................................... 47 7. Security Considerations ....................................... 62
8. Acknowledgments ............................................... 47 8. Acknowledgments ............................................... 62
9. References .................................................... 47 9. References .................................................... 62
9.1. Normative References ..................................... 48 9.1. Normative References ..................................... 62
9.2. Informative References ................................... 48 9.2. Informative References ................................... 63
Authors' Addresses ................................................ 48 Authors' Addresses ................................................ 63
1. Overview 1. Overview
This document defines two YANG [RFC6020] [RFC6991] policy data This document defines two YANG [RFC6020] [RFC6991] policy data
models. The first is a generic policy model that is meant to be models. The first is a generic policy model that is meant to be
extended on an application-specific basis. It is derived from the extended on an application-specific basis. It is derived from the
Generic Policy Information Model (GPIM) defined in [1]. The second Generic Policy Information Model (GPIM) defined in [1]. The second
is an exemplary extension of the first (generic policy) model, and is an exemplary extension of the first (generic policy) model, and
defines policy rules as event-condition-action tuples. Both models defines policy rules as event-condition-action tuples. Both models
are independent of the level of abstraction of the content and are independent of the level of abstraction of the content and
skipping to change at page 6, line 38 skipping to change at page 6, line 38
There are three key information modeling concepts that this data There are three key information modeling concepts that this data
model needs to represent consistently. These are classes, class model needs to represent consistently. These are classes, class
inheritance (also known as subclassing) and associations. The inheritance (also known as subclassing) and associations. The
SUPA generic policy information model [1] makes extensive use of SUPA generic policy information model [1] makes extensive use of
these concepts. these concepts.
Each class in the model is represented by a YANG identity and by a Each class in the model is represented by a YANG identity and by a
YANG grouping. The use of groupings enables us to define these YANG grouping. The use of groupings enables us to define these
classes abstractly. Each grouping begins with two leaves (either classes abstractly. Each grouping begins with two leaves (either
defined in the grouping or inherited via a using clause), which defined in the grouping or inherited via a uses clause), which
provide common functionality. One leaf is used for the system-wide provide common functionality. One leaf is used for the system-wide
unique identifier for this instance. This is either named unique identifier for this instance. This is either named
supa-policy-ID (for the SUPAPolicyObject tree, which contains supa-policy-ID (for the SUPAPolicyObject tree, which contains
everything EXCEPT metadata objects) or supa-policy-metadata-id (for everything EXCEPT metadata objects) or supa-policy-metadata-id (for
the SUPAPolicyMetadata tree, which ONLY contains metadata). All the SUPAPolicyMetadata tree, which ONLY contains metadata). All
associations use supa-policy-IDs. The second leaf is always called associations use supa-policy-IDs. The second leaf is always called
the entity-class. It is an identityref which is set to the identity the entity-class. It is an identityref which is set to the identity
of the instance. The default value for this leaf is always of the instance. The default value for this leaf is always
correctly defined by the grouping. It is read-write in the YANG correctly defined by the grouping. It is read-write in the YANG
formalism due to restrictions on the use of MUST clauses. formalism due to restrictions on the use of MUST clauses.
skipping to change at page 8, line 5 skipping to change at page 8, line 5
- B: Boolean - B: Boolean
- E: enumeration - E: enumeration
- II: instance-identifier - II: instance-identifier
- IR: identityref - IR: identityref
- PC: policy-constraint-language-list - PC: policy-constraint-language-list
- PD: policy-data-type-encoding-list - PD: policy-data-type-encoding-list
- S: string - S: string
- YD: yang:date-and-time - YD: yang:date-and-time
- UI: uint32 - UI: uint32
module: ietf-supa-policydatamodel module: ietf-supa-policy
+--rw supa-encoding-clause-container +--rw supa-encoding-clause-container
| +--rw supa-encoding-clause-list* [supa-policy-ID] | +--rw supa-encoding-clause-list* [supa-policy-ID]
| +--rw supa-policy-ID S
| +--rw entity-class? IR | +--rw entity-class? IR
| +--rw supa-policy-ID S
| +--rw supa-policy-name? S | +--rw supa-policy-name? S
| +--rw supa-policy-object-description? S | +--rw supa-policy-object-description? S
| +--rw supa-has-policy-metadata-agg-ptr* II | +--rw supa-has-policy-metadata-agg-ptr* II
| +--rw supa-has-policy-component-decorator-part-ptr II | +--rw supa-has-policy-component-decorator-part-ptr II
| +--rw supa-policy-clause-deploy-status E | +--rw supa-policy-clause-deploy-status E
| +--rw supa-has-policy-clause-part-ptr* II | +--rw supa-has-policy-clause-part-ptr* II
I +--rw supa-encoded-clause-content S I +--rw supa-encoded-clause-content S
I +--rw supa-encoded-clause-language E I +--rw supa-encoded-clause-language E
+--rw supa-policy-variable-container +--rw supa-policy-variable-container
| +--rw supa-policy-variable-list* [supa-policy-ID] | +--rw supa-policy-variable-list* [supa-policy-ID]
| +--rw supa-policy-ID S
| +--rw entity-class? IR | +--rw entity-class? IR
| +--rw supa-policy-ID S
| +--rw supa-policy-name? S | +--rw supa-policy-name? S
| +--rw supa-policy-object-description? S | +--rw supa-policy-object-description? S
| +--rw supa-has-policy-metadata-agg-ptr* II | +--rw supa-has-policy-metadata-agg-ptr* II
| +--rw supa-has-policy-component-decorator-part-ptr II | +--rw supa-has-policy-component-decorator-part-ptr II
| +--rw supa-has-policy-component-decorator-agg-ptr* II | +--rw supa-has-policy-component-decorator-agg-ptr* II
| +--rw supa-decorator-constraints* S | +--rw supa-decorator-constraints* S
| +--rw supa-has-decorator-constraint-encoding? PC | +--rw supa-has-decorator-constraint-encoding? PC
| +--rw supa-policy-term-is-negated? B | +--rw supa-policy-term-is-negated? B
| +-rw supa-policy-variable-name? S | +-rw supa-policy-variable-name? S
+--rw supa-policy-operator-container +--rw supa-policy-operator-container
| +--rw supa-policy-operator-list* [supa-policy-ID] | +--rw supa-policy-operator-list* [supa-policy-ID]
| +--rw supa-policy-ID S
| +--rw entity-class? IR | +--rw entity-class? IR
| +--rw supa-policy-ID S
| +--rw supa-policy-name? S | +--rw supa-policy-name? S
| +--rw supa-policy-object-description? S | +--rw supa-policy-object-description? S
| +--rw supa-has-policy-metadata-agg-ptr* II | +--rw supa-has-policy-metadata-agg-ptr* II
| +--rw supa-has-policy-component-decorator-part-ptr II | +--rw supa-has-policy-component-decorator-part-ptr II
| +--rw supa-has-policy-component-decorator-agg-ptr* II | +--rw supa-has-policy-component-decorator-agg-ptr* II
| +--rw supa-decorator-constraints* S | +--rw supa-decorator-constraints* S
| +--rw supa-has-decorator-constraint-encoding? PC | +--rw supa-has-decorator-constraint-encoding? PC
| +--rw supa-policy-term-is-negated? B | +--rw supa-policy-term-is-negated? B
| +--rw supa-policy-value-op-type E | +--rw supa-policy-value-op-type E
+--rw supa-policy-value-container +--rw supa-policy-value-container
| +--rw supa-policy-value-list* [supa-policy-ID] | +--rw supa-policy-value-list* [supa-policy-ID]
| +--rw supa-policy-ID S
| +--rw entity-class? IR | +--rw entity-class? IR
| +--rw supa-policy-ID S
| +--rw supa-policy-name? S | +--rw supa-policy-name? S
| +--rw supa-policy-object-description? S | +--rw supa-policy-object-description? S
| +--rw supa-has-policy-metadata-agg-ptr* II | +--rw supa-has-policy-metadata-agg-ptr* II
| +--rw supa-has-policy-component-decorator-part-ptr II | +--rw supa-has-policy-component-decorator-part-ptr II
| +--rw supa-has-policy-component-decorator-agg-ptr* II | +--rw supa-has-policy-component-decorator-agg-ptr* II
| +--rw supa-decorator-constraints* S | +--rw supa-decorator-constraints* S
| +--rw supa-has-decorator-constraint-encoding? PC | +--rw supa-has-decorator-constraint-encoding? PC
| +--rw supa-policy-term-is-negated? B | +--rw supa-policy-term-is-negated? B
| +--rw supa-policy-value-content* S | +--rw supa-policy-value-content* S
| +--rw supa-policy-value-encoding? PD | +--rw supa-policy-value-encoding? PD
+--rw supa-policy-generic-decorated-container +--rw supa-policy-generic-decorated-container
| +--rw supa-encoding-clause-list* [supa-policy-ID] | +--rw supa-encoding-clause-list* [supa-policy-ID]
| +--rw supa-policy-ID S
| +--rw entity-class? IR | +--rw entity-class? IR
| +--rw supa-policy-ID S
| +--rw supa-policy-name? S | +--rw supa-policy-name? S
| +--rw supa-policy-object-description? S | +--rw supa-policy-object-description? S
| +--rw supa-has-policy-metadata-agg-ptr* II | +--rw supa-has-policy-metadata-agg-ptr* II
| +--rw supa-has-policy-component-decorator-part-ptr II | +--rw supa-has-policy-component-decorator-part-ptr II
| +--rw supa-has-policy-component-decorator-agg-ptr* II | +--rw supa-has-policy-component-decorator-agg-ptr* II
| +--rw supa-decorator-constraints* S | +--rw supa-decorator-constraints* S
| +--rw supa-has-decorator-constraint-encoding? PC | +--rw supa-has-decorator-constraint-encoding? PC
| +--rw supa-policy-generic-decorated-content* S | +--rw supa-policy-generic-decorated-content* S
| +--rw supa-policy-generic-decorated-encoding? PD | +--rw supa-policy-generic-decorated-encoding? PD
+--rw supa-policy-source-container
| +--rw supa-source-list* [supa-policy-ID]
| +--rw entity-class? IR
| +--rw supa-policy-ID S
| +--rw supa-policy-name? S
| +--rw supa-policy-object-description? S
| +--rw supa-has-policy-metadata-agg-ptr* II
| +--rw supa-has-policy-source-part-ptr II
+--rw supa-policy-target-container
| +--rw supa-target-list* [supa-policy-ID]
| +--rw entity-class? IR
| +--rw supa-policy-ID S
| +--rw supa-policy-name? S
| +--rw supa-policy-object-description? S
| +--rw supa-has-policy-metadata-agg-ptr* II
| +--rw supa-has-policy-target-part-ptr II
+--rw supa-policy-concrete-metadata-container +--rw supa-policy-concrete-metadata-container
| +--rw supa-policy-concrete-metadata-list* | +--rw supa-policy-concrete-metadata-list*
[supa-policy-metadata-ID] [supa-policy-metadata-id]
| +--rw supa-policy-metadata-id S
| +--rw entity-class? IR | +--rw entity-class? IR
| +--rw supa-policy-metadata-id S
| +--rw supa-policy-metadata-description? S | +--rw supa-policy-metadata-description? S
| +--rw supa-policy-metadata-name? S | +--rw supa-policy-metadata-name? S
| +--rw supa-has-policy-metadata-part-ptr* II | +--rw supa-has-policy-metadata-part-ptr* II
| +--rw supa-has-policy-metadata-dec-part-ptr* II | +--rw supa-has-policy-metadata-dec-part-ptr* II
| +--rw supa-policy-metadata-valid-period-end? YD | +--rw supa-policy-metadata-valid-period-end? YD
| +--rw supa-policy-metadata-valid-period-start? YD | +--rw supa-policy-metadata-valid-period-start? YD
+--rw supa-policy-metadata-decorator-access-container +--rw supa-policy-metadata-decorator-access-container
| +--rw supa-policy-metadata-decorator-access-list* | +--rw supa-policy-metadata-decorator-access-list*
[supa-policy-metadata-ID] [supa-policy-metadata-id]
| +--rw supa-policy-metadata-id S
| +--rw entity-class? IR | +--rw entity-class? IR
| +--rw supa-policy-metadata-id S
| +--rw supa-policy-metadata-description? S | +--rw supa-policy-metadata-description? S
| +--rw supa-policy-metadata-name? S | +--rw supa-policy-metadata-name? S
| +--rw supa-has-policy-metadata-part-ptr* II | +--rw supa-has-policy-metadata-part-ptr* II
| +--rw supa-has-policy-metadata-dec-part-ptr* II | +--rw supa-has-policy-metadata-dec-part-ptr* II
| +--rw supa-has-policy-metadata-dec-agg-ptr? II | +--rw supa-has-policy-metadata-dec-agg-ptr? II
+--rw supa-policy-metadata-decorator-version-container +--rw supa-policy-metadata-decorator-version-container
| +--rw supa-policy-metadata-decorator-version-list* | +--rw supa-policy-metadata-decorator-version-list*
[supa-policy-metadata-ID] [supa-policy-metadata-id]
| +--rw supa-policy-metadata-ID S
| +--rw entity-class? IR | +--rw entity-class? IR
| +--rw supa-policy-metadata-id S
| +--rw supa-policy-metadata-description? S | +--rw supa-policy-metadata-description? S
| +--rw supa-policy-metadata-name? S | +--rw supa-policy-metadata-name? S
| +--rw supa-has-policy-metadata-part-ptr* II | +--rw supa-has-policy-metadata-part-ptr* II
| +--rw supa-has-policy-metadata-dec-part-ptr* II | +--rw supa-has-policy-metadata-dec-part-ptr* II
| +--rw supa-has-policy-metadata-dec-agg-ptr? II | +--rw supa-has-policy-metadata-dec-agg-ptr? II
+--rw supa-policy-metadata-detail-container +--rw supa-policy-metadata-detail-container
| +--rw supa-policy-metadata-detail-list [supa-policy-ID] | +--rw supa-policy-metadata-detail-list [supa-policy-ID]
| +--rw supa-policy-id S
| +--rw entity-class? IR | +--rw entity-class? IR
| +--rw supa-policy-ID S
| +--rw supa-policy-name? S | +--rw supa-policy-name? S
| +--rw supa-policy-object-description? S | +--rw supa-policy-object-description? S
| +--rw supa-has-policy-metadata-agg-ptr* II | +--rw supa-has-policy-metadata-agg-ptr* II
| +--rw supa-has-policy-metadata-detail-agg-ptr? II | +--rw supa-has-policy-metadata-detail-agg-ptr? II
| +--rw supa-has-policy-metadata-detail-part-ptr? II | +--rw supa-has-policy-metadata-detail-part-ptr? II
| +--rw supa-policy-metadata-detail-is-applicable? B | +--rw supa-policy-metadata-detail-is-applicable? B
| +--rw supa-policy-metadata-detail-constraint* S | +--rw supa-policy-metadata-detail-constraint* S
| +--rw supa-policy-metadata-detail-constraint-encoding? PC | +--rw supa-policy-metadata-detail-constraint-encoding? PC
+--rw supa-policy-component-decorator-detail-container +--rw supa-policy-component-decorator-detail-container
| +--rw supa-policy-component-decorator-detail-list* | +--rw supa-policy-component-decorator-detail-list*
[supa-policy-ID] [supa-policy-ID]
| +--rw supa-policy-id S
| +--rw entity-class? IR | +--rw entity-class? IR
| +--rw supa-policy-ID S
| +--rw supa-policy-name? S | +--rw supa-policy-name? S
| +--rw supa-policy-object-description? S | +--rw supa-policy-object-description? S
| +--rw supa-has-policy-metadata-agg-ptr* II | +--rw supa-has-policy-metadata-agg-ptr* II
| +--rw supa-has-policy-component-decorator-agg-ptr? II | +--rw supa-has-policy-component-decorator-agg-ptr? II
| +--rw supa-has-policy-component-decorator-part-ptr? II | +--rw supa-has-policy-component-decorator-part-ptr? II
| +--rw supa-has-decorator-constraint* S | +--rw supa-has-decorator-constraint* S
| +--rw supa-has-decorator-constraint-encoding PC | +--rw supa-has-decorator-constraint-encoding PC
+--rw supa-policy-source-detail-container +--rw supa-policy-source-detail-container
| +--rw supa-policy-source-detail-list* [supa-policy-ID] | +--rw supa-policy-source-detail-list* [supa-policy-ID]
| +--rw supa-policy-id S
| +--rw entity-class? IR | +--rw entity-class? IR
| +--rw supa-policy-ID S
| +--rw supa-policy-name? S | +--rw supa-policy-name? S
| +--rw supa-policy-object-description? S | +--rw supa-policy-object-description? S
| +--rw supa-has-policy-metadata-agg-ptr* II | +--rw supa-has-policy-metadata-agg-ptr* II
I +--rw supa-has-policy-source-detail-agg-ptr? II I +--rw supa-has-policy-source-detail-agg-ptr? II
I +--rw supa-has-policy-source-detail-part-ptr? II I +--rw supa-has-policy-source-detail-part-ptr? II
I +--rw supa-policy-source-is-authenticated? B I +--rw supa-policy-source-is-authenticated? B
I +--rw supa-policy-source-is-trusted? B I +--rw supa-policy-source-is-trusted? B
+--rw supa-policy-target-detail-container +--rw supa-policy-target-detail-container
| +--rw supa-policy-target-detail-list* [supa-policy-ID] | +--rw supa-policy-target-detail-list* [supa-policy-ID]
| +--rw supa-policy-id S
| +--rw entity-class? IR | +--rw entity-class? IR
| +--rw supa-policy-ID S
| +--rw supa-policy-name? S | +--rw supa-policy-name? S
| +--rw supa-policy-object-description? S | +--rw supa-policy-object-description? S
| +--rw supa-has-policy-metadata-agg-ptr* II | +--rw supa-has-policy-metadata-agg-ptr* II
I +--rw supa-has-policy-target-detail-agg-ptr? II I +--rw supa-has-policy-target-detail-agg-ptr? II
I +--rw supa-has-policy-target-detail-part-ptr? II I +--rw supa-has-policy-target-detail-part-ptr? II
I +--rw supa-policy-target-is-authenticated? B I +--rw supa-policy-target-is-authenticated? B
I +--rw supa-policy-target-is-enabled? B I +--rw supa-policy-target-is-enabled? B
+--rw supa-policy-clause-detail-container +--rw supa-policy-clause-detail-container
| +--rw supa-policy-clause-detail-list* [supa-policy-ID] | +--rw supa-policy-clause-detail-list* [supa-policy-ID]
| +--rw supa-policy-id S
| +--rw entity-class? IR | +--rw entity-class? IR
| +--rw supa-policy-ID S
| +--rw supa-policy-name? S | +--rw supa-policy-name? S
| +--rw supa-policy-object-description? S | +--rw supa-policy-object-description? S
| +--rw supa-has-policy-metadata-agg-ptr* II | +--rw supa-has-policy-metadata-agg-ptr* II
| +--rw supa-policy-admin-status E
| +--rw supa-policy-continuum-level? UI
| +--rw supa-policy-deploy-status E
| +--rw supa-policy-exec-fail-strategy E
| +--rw supa-has-policy-source-agg-ptr* II
| +--rw supa-has-policy-target-agg-ptr* II
| +--rw supa-has-policy-clause-agg-ptr* II
| +--rw supa-has-policy-exec-fail-action-agg-ptr* II
| +--rw supa-has-policy-exec-fail-action-part-ptr* II
| +--rw supa-has-policy-clause-detail-agg-ptr? II | +--rw supa-has-policy-clause-detail-agg-ptr? II
| +--rw supa-has-policy-clause-detail-part-ptr? II | +--rw supa-has-policy-clause-detail-part-ptr? II
+--rw supa-policy-exec-fail-take-action-detail-container +--rw supa-policy-exec-fail-take-action-detail-container
| +--rw supa-policy-exec-fail-take-action-detail-list* | +--rw supa-policy-exec-fail-take-action-detail-list*
[supa-policy-ID] [supa-policy-ID]
| +--rw supa-policy-id S
| +--rw entity-class? IR | +--rw entity-class? IR
| +--rw supa-policy-ID S
| +--rw supa-policy-name? S | +--rw supa-policy-name? S
| +--rw supa-policy-object-description? S | +--rw supa-policy-object-description? S
| +--rw supa-has-policy-metadata-agg-ptr* II | +--rw supa-has-policy-metadata-agg-ptr* II
| +--rw supa-policy-admin-status E
| +--rw supa-policy-continuum-level? UI
| +--rw supa-policy-deploy-status E
| +--rw supa-policy-exec-fail-strategy E
| +--rw supa-has-policy-source-agg-ptr* II
| +--rw supa-has-policy-target-agg-ptr* II
| +--rw supa-has-policy-clause-agg-ptr* II
| +--rw supa-has-policy-exec-fail-action-agg-ptr* II
| +--rw supa-has-policy-exec-fail-action-part-ptr* II
| +--rw supa-has-exec-fail-action-detail-agg-ptr? II | +--rw supa-has-exec-fail-action-detail-agg-ptr? II
| +--rw supa-has-exec-fail-action-detail-part-ptr? II | +--rw supa-has-exec-fail-action-detail-part-ptr? II
| +--rw supa-policy-exec-fail-take-action-name* S | +--rw supa-policy-exec-fail-take-action-name* S
+--rw supa-policy-metadata-decorator-detail-container +--rw supa-policy-metadata-decorator-detail-container
+--rw supa-policy-metadata-decorator-detail-list* +--rw supa-policy-metadata-decorator-detail-list*
[supa-policy-metadata-ID] [supa-policy-metadata-id]
+--rw supa-policy-metadata-id S
+--rw entity-class? IR +--rw entity-class? IR
+--rw supa-policy-metadata-id S
+--rw supa-policy-metadata-description? S +--rw supa-policy-metadata-description? S
+--rw supa-policy-metadata-name? S +--rw supa-policy-metadata-name? S
+--rw supa-has-policy-metadata-part-ptr* II +--rw supa-has-policy-metadata-part-ptr* II
+--rw supa-has-policy-metadata-dec-part-ptr* II +--rw supa-has-policy-metadata-dec-part-ptr* II
+--rw supa-has-policy-metadata-detail-dec-agg-ptr? II +--rw supa-has-policy-metadata-detail-dec-agg-ptr? II
+--rw supa-has-policy-metadata-detail-dec-part-ptr? II +--rw supa-has-policy-metadata-detail-dec-part-ptr? II
5. SUPA Policy Data Model YANG Module 5. SUPA Policy Data Model YANG Module
The SUPA YANG data model module is divided into two main parts: The SUPA YANG data model module is divided into two main parts:
1) a set of containers that represent the objects that make 1) a set of containers that represent the objects that make
updated a Policy Rule and its Policy Rule Components updated a Policy Rule and its Policy Rule Components
2) a set of containers that represent the objects that define and 2) a set of containers that represent the objects that define and
apply metadata to Policy Rules and/or Policy Rule Components apply metadata to Policy Rules and/or Policy Rule Components
[Editor's note] < This will be finished in version 02 > Editor's note: This will be described in more detail in version 03
<CODE BEGINS> file "ietf-supa-policydatamodel@2016-10-01.yang" <CODE BEGINS> file "ietf-supa-policy@2016-10-10.yang"
module ietf-supa-policydatamodel { module ietf-supa-policy {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-supa-policydatamodel"; namespace "urn:ietf:params:xml:ns:yang:ietf-supa-policy";
prefix supa-pdm; prefix supa-pdm;
import ietf-yang-types { import ietf-yang-types {
prefix yang; prefix yang;
} }
organization "IETF"; organization "IETF";
contact contact
"Editor: Joel Halpern "Editor: Joel Halpern
email: jmh@joelhalpern.com; email: jmh@joelhalpern.com;
skipping to change at page 13, line 39 skipping to change at page 13, line 39
can be found there. can be found there.
Copyright (c) 2015 IETF Trust and the persons identified Copyright (c) 2015 IETF Trust and the persons identified
as the document authors. All rights reserved. as the document authors. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and without modification, is permitted pursuant to, and
subject to the license terms contained in, the Simplified subject to the license terms contained in, the Simplified
BSD License set forth in Section 4.c of the IETF Trust's BSD License set forth in Section 4.c of the IETF Trust's
Legal Provisions Relating to IETF Documents Legal Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info)."; (http://trustee.ietf.org/license-info).";
revision "2016-10-01" { revision "2016-10-10" {
description description
"20161001: Minor edits in association definitions. "20161010: Changed back to transitive identities (to
enforce inheritance) after determining that
errors were from a confdc bug.
20161008: Fixed errors found in latest pyang compiler
and from YANG Doctors.
20161001: Minor edits in association definitions.
20160928: Generated yang tree. 20160928: Generated yang tree.
20160924: Rewrote association documentation; rebuilt 20160924: Rewrote association documentation; rebuilt
how all classes are named for consistency. how all classes are named for consistency.
20160904: Optimization of module by eliminating leaves 20160904: Optimization of module by eliminating leaves
that are not needed; rewrote section 4. that are not needed; rewrote section 4.
20160824: Edits to sync data model to info model. 20160824: Edits to sync data model to info model.
20160720: Conversion to WG draft. Fixed pyang 1.1 20160720: Conversion to WG draft. Fixed pyang 1.1
compilation errors. Fixed must clause derefencing compilation errors. Fixed must clause derefencing
used in grouping statements. Reformatted and expanded used in grouping statements. Reformatted and expanded
descriptions. Fixed various typos. descriptions. Fixed various typos.
20160321: Initial version."; 20160321: Initial version.";
reference reference
"draft-ietf-supa-policy-data-model-00"; "draft-ietf-supa-policy-data-model-02";
} }
typedef policy-constraint-language-list { typedef policy-constraint-language-list {
type enumeration { type enumeration {
enum "error" { enum "error" {
description description
"This signifies an error state. OAM&P Policies "This signifies an error state.";
SHOULD NOT use this SUPAPolicy if the value of
this attribute is error.";
} }
enum "init" { enum "init" {
description description
"This signifies a generic initialization state. A "This signifies a generic initialization state.";
suitable Policy Constraint Language (e.g., OCL [2]
or Alloy[4]) may now be defined.";
} }
enum "OCL2.4" { enum "OCL2.4" {
description description
"Object Constraint Language v2.4 [2]. This is a "Object Constraint Language v2.4 [2]. This is a
declarative language for describing rules for declarative language for describing rules for
defining constraints and query expressions."; defining constraints and query expressions.";
} }
enum "OCL2.x" { enum "OCL2.x" {
description description
"Object Constraint Language, v2.0 through 2.3.1 "Object Constraint Language, v2.0 through 2.3.1
skipping to change at page 15, line 8 skipping to change at page 15, line 8
} }
description description
"The language used to encode the constraints "The language used to encode the constraints
relevant to the relationship between the metadata relevant to the relationship between the metadata
and the underlying policy object."; and the underlying policy object.";
} }
typedef policy-data-type-id-encoding-list { typedef policy-data-type-id-encoding-list {
type enumeration { type enumeration {
enum "error" { enum "error" {
description description
"This signifies an error state. OAM&P Policies "This signifies an error state.";
SHOULD NOT use this SUPAPolicy if the value of
this attribute is error.";
} }
enum "init" { enum "init" {
description description
"This signifies an initialization state."; "This signifies a generic initialization state.";
} }
enum "primary_key" { enum "primary_key" {
description description
"This represents the primary key of a table, which "This represents the primary key of a table, which
uniquely identifies each record in that table. uniquely identifies each record in that table.
It MUST NOT be NULL. It MAY consist of a single It MUST NOT be NULL. It MAY consist of a single
or multiple fields. Note that a YANG data model or multiple fields. Note that a YANG data model
implementation does NOT have to implement this implementation does NOT have to implement this
enumeration."; enumeration.";
} }
skipping to change at page 16, line 12 skipping to change at page 16, line 12
single logical file repostory."; single logical file repostory.";
} }
enum "string_instance_id" { enum "string_instance_id" {
description description
"A string that is the canonical representation, "A string that is the canonical representation,
in ASCII, of an instance ID of this object."; in ASCII, of an instance ID of this object.";
} }
} }
description description
"The list of possible data types used to represent object "The list of possible data types used to represent object
IDs in the SUPA policy hierarchy."; IDs for all SUPA object instances.";
} }
typedef policy-data-type-encoding-list { typedef policy-data-type-encoding-list {
type enumeration { type enumeration {
enum "error" { enum "error" {
description description
"This signifies an error state. OAM&P Policies "This signifies an error state.";
SHOULD NOT use this SUPAPolicy if the value of
this attribute is error.";
} }
enum "init" { enum "init" {
description description
"This signifies an initialization state."; "This signifies an initialization state.";
} }
enum "string" { enum "string" {
description description
"This represents a string data type."; "This represents a string data type.";
} }
enum "integer" { enum "integer" {
skipping to change at page 17, line 49 skipping to change at page 17, line 49
// Identities are used in this model as a means to provide simple // Identities are used in this model as a means to provide simple
// introspection to allow an instance-identifier to be tested as to // introspection to allow an instance-identifier to be tested as to
// what class it represents. This allows must clauses to specify // what class it represents. This allows must clauses to specify
// that the target of a particular instance-identifier leaf must be a // that the target of a particular instance-identifier leaf must be a
// specific class, or within a certain branch of the inheritance tree. // specific class, or within a certain branch of the inheritance tree.
// This depends upon the ability to refine the entity class default // This depends upon the ability to refine the entity class default
// value. The entity class should be read-only. However, as this is // value. The entity class should be read-only. However, as this is
// the target of a MUST condition, it cannot be config-false. Also, // the target of a MUST condition, it cannot be config-false. Also,
// it appears that we cannot put a MUST condition on its definition, // it appears that we cannot put a MUST condition on its definition,
// as the default (actual) value changes for each inherited object. // as the default (actual) value changes for each inherited object.
// Finally, note that since identities are irreflexive, we define a
// parent identitym called SUPA-ROOT-TYPE, to serve as the single root
// from which all identity statements are derived.
identity SUPA-ROOT-TYPE {
description
"The identity corresponding to a single root for all
identities in the SUPA Data Model. Note that section
7.18.2 in RFC7950 says that identity derivation is
irreflexive (i.e., an identity cannot be derived
from itself.";
}
identity POLICY-OBJECT-TYPE { identity POLICY-OBJECT-TYPE {
base SUPA-ROOT-TYPE;
description description
"The identity corresponding to a SUPAPolicyObject "The identity corresponding to a SUPAPolicyObject
object instance."; object instance.";
} }
grouping supa-policy-object-type { grouping supa-policy-object-type {
leaf entity-class {
type identityref {
base SUPA-ROOT-TYPE;
}
default POLICY-OBJECT-TYPE;
description
"The identifier of the class of this grouping.";
}
leaf supa-policy-ID { leaf supa-policy-ID {
type string; type string;
mandatory true; mandatory true;
description description
"The string identifier of this policy object, which "The string identifier of this policy object, which
functions as the unique object identifier of this functions as the unique object identifier of this
object instance. This attribute MUST be unique within object instance. This attribute MUST be unique within
the policy system. This attribute is named the policy system. This attribute is named
supaObjectIDContent in [1], and is used with another supaObjectIDContent in [1], and is used with another
attribute (supaObjectIDEncoding); since the YANG data attribute (supaObjectIDEncoding); since the YANG data
model does not need this genericity, the model does not need this genericity, the
supaObjectIDContent attribute was renamed, and the supaObjectIDContent attribute was renamed, and the
supaObjectIDEncoding attribute was not mapped."; supaObjectIDEncoding attribute was not mapped.";
} }
leaf entity-class {
type identityref {
base POLICY-OBJECT-TYPE;
}
default POLICY-OBJECT-TYPE;
description
"The identifier of the class of this grouping.";
}
leaf supa-policy-name { leaf supa-policy-name {
type string; type string;
description description
"A human-readable name for this policy object. Note "A human-readable name for this policy object. Note
that this is NOT the object ID."; that this is NOT the object ID.";
} }
leaf supa-policy-object-description { leaf supa-policy-object-description {
type string; type string;
description description
"A human-readable description of the characteristics "A human-readable description of the characteristics
and behavior of this policy object."; and behavior of this policy object.";
} }
leaf-list supa-has-policy-metadata-agg-ptr { leaf-list supa-has-policy-metadata-agg-ptr {
type instance-identifier; type instance-identifier;
must "derived-from-or-self (deref(.)/entity-class, must "derived-from-or-self (deref(.)/entity-class,
SUPA-HAS-POLICY-METADATA-ASSOC)"; 'SUPA-HAS-POLICY-METADATA-ASSOC')";
description description
"This leaf-list holds instance-identifiers that "This leaf-list holds instance-identifiers that
reference a SUPAHasPolicyMetadata association [1]. reference a SUPAHasPolicyMetadata association [1].
This association is represented by the grouping This association is represented by the grouping
supa-has-policy-metadata-detail. This association supa-has-policy-metadata-detail. This association
describes how each SUPAPolicyMetadata instance is describes how each SUPAPolicyMetadata instance is
related to a given SUPAPolicyObject instance. Since related to a given SUPAPolicyObject instance. Since
this association class contains attributes, the this association class contains attributes, the
instance-identifier MUST point to an instance using instance-identifier MUST point to an instance using
the grouping supa-has-policy-metadata-detail (which the grouping supa-has-policy-metadata-detail (which
skipping to change at page 19, line 29 skipping to change at page 19, line 51
identity POLICY-COMPONENT-TYPE { identity POLICY-COMPONENT-TYPE {
base POLICY-OBJECT-TYPE; base POLICY-OBJECT-TYPE;
description description
"The identity corresponding to a "The identity corresponding to a
SUPAPolicyComponentStructure object instance."; SUPAPolicyComponentStructure object instance.";
} }
grouping supa-policy-component-structure-type { grouping supa-policy-component-structure-type {
uses supa-policy-object-type { uses supa-policy-object-type {
refine entity-class { refine entity-class {
default POLICY-OBJECT-TYPE; default POLICY-COMPONENT-TYPE;
} }
} }
leaf supa-has-policy-component-decorator-part-ptr { leaf supa-has-policy-component-decorator-part-ptr {
type instance-identifier; type instance-identifier;
must "derived-from-or-self (deref(.)/entity-class, must "derived-from-or-self (deref(.)/entity-class,
SUPA-HAS-POLICY-COMPONENT-DECORATOR-ASSOC)"; 'SUPA-HAS-POLICY-COMPONENT-DECORATOR-ASSOC')";
mandatory true; mandatory true;
description description
"This leaf holds instance-identifiers that "This leaf holds instance-identifiers that
reference a SUPAHasDecoratedPolicyComponent reference a SUPAHasDecoratedPolicyComponent
association [1], and is represented by the grouping association [1], and is represented by the grouping
supa-has-decorator-policy-component-detail. This supa-has-decorator-policy-component-detail. This
association describes how each association describes how each
SUPAPolicyComponentStructure instance is related to a SUPAPolicyComponentStructure instance is related to a
given SUPAPolicyComponentDecorator instance. Multiple given SUPAPolicyComponentDecorator instance. Multiple
SUPAPolicyComponentDecorator instances may be attached SUPAPolicyComponentDecorator instances may be attached
skipping to change at page 20, line 25 skipping to change at page 20, line 47
identity POLICY-COMPONENT-DECORATOR-TYPE { identity POLICY-COMPONENT-DECORATOR-TYPE {
base POLICY-COMPONENT-TYPE; base POLICY-COMPONENT-TYPE;
description description
"The identity corresponding to a "The identity corresponding to a
SUPAPolicyComponentDecorator object instance."; SUPAPolicyComponentDecorator object instance.";
} }
grouping supa-policy-component-decorator-type { grouping supa-policy-component-decorator-type {
uses supa-policy-component-structure-type { uses supa-policy-component-structure-type {
refine entity-class { refine entity-class {
default POLICY-COMPONENT-TYPE; default POLICY-COMPONENT-DECORATOR-TYPE;
} }
} }
leaf-list supa-has-policy-component-decorator-agg-ptr { leaf-list supa-has-policy-component-decorator-agg-ptr {
type instance-identifier; type instance-identifier;
must "derived-from-or-self (deref(.)/entity-class, must "derived-from-or-self (deref(.)/entity-class,
SUPA-HAS-POLICY-COMPONENT-DECORATOR-ASSOC)"; 'SUPA-HAS-POLICY-COMPONENT-DECORATOR-ASSOC')";
min-elements 1; min-elements 1;
description description
"This leaf-list holds instance-identifiers that "This leaf-list holds instance-identifiers that
reference a SUPAHasDecoratedPolicyComponent reference a SUPAHasDecoratedPolicyComponent
association [1]. This association is represented by the association [1]. This association is represented by the
grouping supa-has-decorator-policy-component-detail. grouping supa-has-decorator-policy-component-detail.
This leaf-list helps implement the Decorator pattern This leaf-list helps implement the Decorator pattern
[1], which enables all or part of one or more object [1], which enables all or part of one or more object
instances to wrap another object instance. For instances to wrap another object instance. For
example, any concrete subclass of SUPAPolicyClause, example, any concrete subclass of SUPAPolicyClause,
skipping to change at page 21, line 27 skipping to change at page 21, line 49
policy component decorator is expressed. Examples policy component decorator is expressed. Examples
include OCL 2.4 [2], Alloy [3], and English text."; include OCL 2.4 [2], Alloy [3], and English text.";
} }
description description
"This object implements the Decorator pattern [1], which "This object implements the Decorator pattern [1], which
enables all or part of one or more concrete objects to enables all or part of one or more concrete objects to
wrap another concrete object."; wrap another concrete object.";
} }
identity POLICY-COMPONENT-CLAUSE-TYPE { identity POLICY-COMPONENT-CLAUSE-TYPE {
base POLICY-OBJECT-TYPE; base POLICY-COMPONENT-TYPE;
description description
"The identity corresponding to a SUPAPolicyClause "The identity corresponding to a SUPAPolicyClause
object instance."; object instance.";
} }
grouping supa-policy-clause-type { grouping supa-policy-clause-type {
uses supa-policy-component-structure-type { uses supa-policy-component-structure-type {
refine entity-class { refine entity-class {
default POLICY-COMPONENT-CLAUSE-TYPE; default POLICY-COMPONENT-CLAUSE-TYPE;
} }
} }
leaf supa-policy-clause-deploy-status { leaf supa-policy-clause-deploy-status {
type enumeration { type enumeration {
enum "error" { enum "error" {
description description
skipping to change at page 22, line 7 skipping to change at page 22, line 30
"This signifies an initialization state."; "This signifies an initialization state.";
} }
enum "deployed and enabled" { enum "deployed and enabled" {
description description
"This SUPAPolicyClause has been deployed in "This SUPAPolicyClause has been deployed in
the system and is currently enabled."; the system and is currently enabled.";
} }
enum "deployed and in test" { enum "deployed and in test" {
description description
"This SUPAPolicyClause has been deployed in the "This SUPAPolicyClause has been deployed in the
system, but is currently in test and SHOULD system, but is currently in a test state and
NOT be used in OAM&P policies."; SHOULD NOT be used in OAM&P policies.";
} }
enum "deployed but not enabled" { enum "deployed but not enabled" {
description description
"This SUPAPolicyClause has been deployed in the "This SUPAPolicyClause has been deployed in the
system, but has been administratively system, but has been administratively
disabled."; disabled. Therefore, it MUST NOT be used in
OAM&P Policies.";
} }
enum "ready to be deployed" { enum "ready to be deployed" {
description description
"This SUPAPolicyClause has been properly "This SUPAPolicyClause has been properly
initialized, and is now ready to be deployed."; initialized, and is now ready to be deployed.";
} }
enum "cannot be deployed" { enum "cannot be deployed" {
description description
"This SUPAPolicyClause has been administratively "This SUPAPolicyClause has been administratively
disabled, and SHOULD NOT be used as part of disabled, and MUST NOT be used as part of
an OAM&P policy."; an OAM&P policy.";
} }
} }
mandatory true; mandatory true;
description description
"This defines whether this SUPAPolicy has been "This defines whether this SUPAPolicy has been
deployed and, if so, whether it is enabled and deployed and, if so, whether it is enabled and
ready to be used or not."; ready to be used or not.";
} }
leaf-list supa-has-policy-clause-part-ptr { leaf-list supa-has-policy-clause-part-ptr {
type instance-identifier; type instance-identifier;
must "derived-from-or-self (deref(.)/entity-class, must "derived-from-or-self (deref(.)/entity-class,
SUPA-HAS-POLICY-CLAUSE-ASSOC)"; 'SUPA-HAS-POLICY-CLAUSE-ASSOC')";
min-elements 1; min-elements 1;
description description
"This leaf-list holds instance-identifiers that "This leaf-list holds instance-identifiers that
reference a SUPAHasPolicyClause association [1], reference a SUPAHasPolicyClause association [1],
and is represented by the grouping and is represented by the grouping
supa-has-policy-clause-detail. This association supa-has-policy-clause-detail. This association
describes how each SUPAPolicyClause instance is describes how each SUPAPolicyClause instance is
related to this particular SUPAPolicyStructure related to this particular SUPAPolicyStructure
instance. For example, this association may restrict instance. For example, this association may restrict
which concrete subclasses of the SUPAPolicyStructure which concrete subclasses of the SUPAPolicyStructure
skipping to change at page 25, line 36 skipping to change at page 26, line 14
identity POLICY-COMPONENT-TERM-TYPE { identity POLICY-COMPONENT-TERM-TYPE {
base POLICY-COMPONENT-DECORATOR-TYPE; base POLICY-COMPONENT-DECORATOR-TYPE;
description description
"The identity corresponding to a SUPAPolicyTerm object "The identity corresponding to a SUPAPolicyTerm object
instance."; instance.";
} }
grouping supa-policy-term-type { grouping supa-policy-term-type {
uses supa-policy-component-decorator-type { uses supa-policy-component-decorator-type {
refine entity-class { refine entity-class {
default POLICY-COMPONENT-TYPE; default POLICY-COMPONENT-TERM-TYPE;
} }
} }
leaf supa-policy-term-is-negated { leaf supa-policy-term-is-negated {
type boolean; type boolean;
description description
"If the value of this attribute is true, then "If the value of this attribute is true, then
this particular term is negated."; this particular term is negated.";
} }
description description
"This is the superclass of all SUPA policy objects that are "This is the superclass of all SUPA policy objects that are
skipping to change at page 26, line 14 skipping to change at page 26, line 42
identity POLICY-COMPONENT-VARIABLE-TYPE { identity POLICY-COMPONENT-VARIABLE-TYPE {
base POLICY-COMPONENT-TERM-TYPE; base POLICY-COMPONENT-TERM-TYPE;
description description
"The identity corresponding to a SUPAPolicyVariable "The identity corresponding to a SUPAPolicyVariable
object instance."; object instance.";
} }
grouping supa-policy-variable-type { grouping supa-policy-variable-type {
uses supa-policy-term-type { uses supa-policy-term-type {
refine entity-class { refine entity-class {
default POLICY-COMPONENT-TYPE; default POLICY-COMPONENT-VARIABLE-TYPE;
} }
} }
leaf supa-policy-variable-name { leaf supa-policy-variable-name {
type string; type string;
description description
"A human-readable name for this policy variable."; "A human-readable name for this policy variable.";
} }
description description
"This is one formulation of a SUPA Policy Clause. It uses "This is one formulation of a SUPA Policy Clause. It uses
the canonical form of an expression, which is a three-tuple the canonical form of an expression, which is a three-tuple
in the form {variable, operator, value}. In this approach, in the form {variable, operator, value}. In this approach,
each of the three terms can either be a subclass of the each of the three terms can either be a subclass of the
appropriate SUPAPolicyTerm class, or another object that appropriate SUPAPolicyTerm class, or another object that
plays the role (i.e., a variable) of that term. The plays the role (i.e., a variable) of that term. The
attribute defined by the supa-policy-variable-name attribute defined by the supa-policy-variable-name
specifies the name of an attribute whose content should be specifies the name of an attribute whose content should be
compared to the value portion of a SUPAPolicyTerm, which is compared to the value portion of a SUPAPolicyTerm, which is
skipping to change at page 27, line 4 skipping to change at page 27, line 37
those will be stored in a separate container."; those will be stored in a separate container.";
} }
} }
identity POLICY-COMPONENT-OPERATOR-TYPE { identity POLICY-COMPONENT-OPERATOR-TYPE {
base POLICY-COMPONENT-TERM-TYPE; base POLICY-COMPONENT-TERM-TYPE;
description description
"The identity corresponding to a SUPAPolicyOperator "The identity corresponding to a SUPAPolicyOperator
object instance."; object instance.";
} }
grouping supa-policy-operator-type { grouping supa-policy-operator-type {
uses supa-policy-term-type { uses supa-policy-term-type {
refine entity-class { refine entity-class {
default POLICY-COMPONENT-TYPE; default POLICY-COMPONENT-OPERATOR-TYPE;
} }
} }
leaf supa-policy-value-op-type { leaf supa-policy-value-op-type {
type enumeration { type enumeration {
enum "error" { enum "error" {
description description
"This signifies an error state. OAM&P Policies "This signifies an error state.";
SHOULD NOT use this SUPAPolicyOperator if the
value of this attribute is error.";
} }
enum "init" { enum "init" {
description description
"This signifies an initialization state."; "This signifies an initialization state.";
} }
enum "greater than" { enum "greater than" {
description description
"A greater-than operator."; "A greater-than operator.";
} }
enum "greater than or equal to" { enum "greater than or equal to" {
skipping to change at page 29, line 24 skipping to change at page 30, line 4
those will be stored in a separate container."; those will be stored in a separate container.";
} }
} }
identity POLICY-COMPONENT-VALUE-TYPE { identity POLICY-COMPONENT-VALUE-TYPE {
base POLICY-COMPONENT-TERM-TYPE; base POLICY-COMPONENT-TERM-TYPE;
description description
"The identity corresponding to a SUPAPolicyValue "The identity corresponding to a SUPAPolicyValue
object instance."; object instance.";
} }
grouping supa-policy-value-type { grouping supa-policy-value-type {
uses supa-policy-term-type { uses supa-policy-term-type {
refine entity-class { refine entity-class {
default POLICY-COMPONENT-TYPE; default POLICY-COMPONENT-VALUE-TYPE;
} }
} }
leaf-list supa-policy-value-content { leaf-list supa-policy-value-content {
type string; type string;
description description
"The content of the value portion of this SUPA Policy "The content of the value portion of this SUPA Policy
Clause. The data type of the content is specified in Clause. The data type of the content is specified in
the supa-policy-value-encoding attribute."; the supa-policy-value-encoding attribute.";
} }
leaf supa-policy-value-encoding { leaf supa-policy-value-encoding {
skipping to change at page 30, line 24 skipping to change at page 31, line 4
those will be stored in a separate container."; those will be stored in a separate container.";
} }
} }
identity POLICY-GENERIC-DECORATED-TYPE { identity POLICY-GENERIC-DECORATED-TYPE {
base POLICY-COMPONENT-DECORATOR-TYPE; base POLICY-COMPONENT-DECORATOR-TYPE;
description description
"The identity corresponding to a "The identity corresponding to a
SUPAGenericDecoratedComponent object instance."; SUPAGenericDecoratedComponent object instance.";
} }
grouping supa-policy-generic-decorated-type { grouping supa-policy-generic-decorated-type {
uses supa-policy-component-decorator-type { uses supa-policy-component-decorator-type {
refine entity-class { refine entity-class {
default POLICY-COMPONENT-TYPE; default POLICY-GENERIC-DECORATED-TYPE;
} }
} }
leaf-list supa-policy-generic-decorated-content { leaf-list supa-policy-generic-decorated-content {
type string; type string;
description description
"The content of this SUPAGenericDecoratedComponent "The content of this SUPAGenericDecoratedComponent
object instance. The data type of this attribute is object instance. The data type of this attribute is
specified in the leaf specified in the leaf
supa-policy-generic-decorated-encoding."; supa-policy-generic-decorated-encoding.";
} }
skipping to change at page 32, line 30 skipping to change at page 33, line 8
particular SUPAPolicyRule. By convention, the particular SUPAPolicyRule. By convention, the
values 0 and 1 should be used for error and values 0 and 1 should be used for error and
initialization states; a value of 2 is the most initialization states; a value of 2 is the most
abstract level, and higher values denote more abstract level, and higher values denote more
concrete levels."; concrete levels.";
} }
leaf supa-policy-deploy-status { leaf supa-policy-deploy-status {
type enumeration { type enumeration {
enum "error" { enum "error" {
description description
"This signifies an error state. OAM&P Policies "This signifies an error state.";
SHOULD NOT use this SUPAPolicy if the value
of this attribute is error.";
} }
enum "init" { enum "init" {
description description
"This signifies an initialization state."; "This signifies an initialization state.";
} }
enum "deployed and enabled" { enum "deployed and enabled" {
description description
"This SUPAPolicy has been deployed in the "This SUPAPolicy has been deployed in the
system and is currently enabled."; system and is currently enabled.";
} }
skipping to change at page 33, line 26 skipping to change at page 33, line 53
mandatory true; mandatory true;
description description
"This attribute defines whether this SUPAPolicy has "This attribute defines whether this SUPAPolicy has
been deployed and, if so, whether it is enabled and been deployed and, if so, whether it is enabled and
ready to be used or not."; ready to be used or not.";
} }
leaf supa-policy-exec-fail-strategy { leaf supa-policy-exec-fail-strategy {
type enumeration { type enumeration {
enum "error" { enum "error" {
description description
"This signifies an error state. OAM&P Policies "This signifies an error state.";
SHOULD NOT use this SUPAPolicy if the value
of this attribute is error.";
} }
enum "init" { enum "init" {
description description
"This signifies an initialization state."; "This signifies an initialization state.";
} }
enum "rollback all" { enum "rollback all" {
description description
"This means that execution of this SUPAPolicy "This means that execution of this SUPAPolicy
SHOULD be stopped, and rollback of all SHOULD be stopped, and rollback of all
SUPAPolicyActions (whether they were SUPAPolicyActions (whether they were
successfully executed or not) performed by successfully executed or not) performed by
this particular SUPAPolicy is attempted. Also, this particular SUPAPolicy is attempted. Also,
all SUPAPolicies that otherwise would have all SUPAPolicies that otherwise would have
been executed as a result of this SUPAPolicy been executed as a result of this SUPAPolicy
are NOT executed."; SHOULD NOT be executed.";
} }
enum "rollback single" { enum "rollback single" {
description description
"This means that execution of this SUPAPolicy "This means that execution of this SUPAPolicy
SHOULD be stopped, and rollback is attempted SHOULD be stopped, and rollback is attempted
for ONLY the SUPAPolicyAction (belonging to for ONLY the SUPAPolicyAction (belonging to
this particular SUPAPolicy) that failed to this particular SUPAPolicy) that failed to
execute correctly. All remaining actions execute correctly. All remaining actions
including SUPAPolicyActions and SUPAPolicies including SUPAPolicyActions and SUPAPolicies
that otherwise would have been executed as a that otherwise would have been executed as a
result of this SUPAPolicy, are NOT executed."; result of this SUPAPolicy, SHOULD NOT
be executed.";
} }
enum "stop execution" { enum "stop execution" {
description description
"This means that execution of this SUPAPolicy "This means that execution of this SUPAPolicy
SHOULD be stopped without any other action SHOULD be stopped without any other action
being performed; this includes corrective being performed; this includes corrective
actions, such as rollback, as well as any actions, such as rollback, as well as any
SUPAPolicyActions or SUPAPolicies that SUPAPolicyActions or SUPAPolicies that
otherwise would have been executed."; otherwise would have been executed.";
} }
skipping to change at page 34, line 28 skipping to change at page 35, line 7
be performed at this time. Hence, any other be performed at this time. Hence, any other
SUPAPolicyActions or SUPAPolicies SHOULD SUPAPolicyActions or SUPAPolicies SHOULD
continue to be executed."; continue to be executed.";
} }
} }
mandatory true; mandatory true;
description description
"This defines what actions, if any, should be taken by "This defines what actions, if any, should be taken by
this particular SUPA Policy Rule if it fails to this particular SUPA Policy Rule if it fails to
execute correctly. Some implementations may not be execute correctly. Some implementations may not be
able to accommodate the rollback failure option; able to accommodate the rollback failure options;
hence, this option may be skipped."; hence, these options may be skipped.";
} }
leaf-list supa-has-policy-source-agg-ptr { leaf-list supa-has-policy-source-agg-ptr {
type instance-identifier; type instance-identifier;
must "derived-from-or-self (deref(.)/entity-class, must "derived-from-or-self (deref(.)/entity-class,
SUPA-HAS-POLICY-SOURCE-ASSOC)"; 'SUPA-HAS-POLICY-SOURCE-ASSOC')";
description description
"This leaf-list holds instance-identifiers that "This leaf-list holds instance-identifiers that
reference SUPAHasPolicySource associations [1]. reference SUPAHasPolicySource associations [1].
This association is represented by the grouping This association is represented by the grouping
supa-has-policy-source-detail, and describes how supa-has-policy-source-detail, and describes how
this SUPAPolicyStructure instance is related to a this SUPAPolicyStructure instance is related to a
set of SUPAPolicySource instances. Each set of SUPAPolicySource instances. Each
SUPAPolicySource instance defines a set of SUPAPolicySource instance defines a set of
unambiguous sources of this SUPAPolicy. Since unambiguous sources of this SUPAPolicy. Since
this association class contains attributes, the this association class contains attributes, the
instance-identifier MUST point to an instance using instance-identifier MUST point to an instance using
the grouping supa-has-policy-source-detail (which the grouping supa-has-policy-source-detail (which
includes subclasses of this association class)."; includes subclasses of this association class).";
} }
leaf-list supa-has-policy-target-agg-ptr { leaf-list supa-has-policy-target-agg-ptr {
type instance-identifier; type instance-identifier;
must "derived-from-or-self (deref(.)/entity-class, must "derived-from-or-self (deref(.)/entity-class,
SUPA-HAS-POLICY-TARGET-ASSOC)"; 'SUPA-HAS-POLICY-TARGET-ASSOC')";
description description
"This leaf-list holds instance-identifiers that "This leaf-list holds instance-identifiers that
reference SUPAHasPolicyTarget associations [1]. reference SUPAHasPolicyTarget associations [1].
This association is represented by the grouping This association is represented by the grouping
supa-has-policy-target-detail, and describes how supa-has-policy-target-detail, and describes how
this SUPAPolicyStructure instance is related to a this SUPAPolicyStructure instance is related to a
set of SUPAPolicyTarget instances. Each set of SUPAPolicyTarget instances. Each
SUPAPolicyTarget instance defines a set of SUPAPolicyTarget instance defines a set of
unambiguous managed entities to which this unambiguous managed entities to which this
SUPAPolicy will be applied to. Since this association SUPAPolicy will be applied to. Since this association
class contains attributes, the instance-identifier class contains attributes, the instance-identifier
MUST point to an instance using the grouping MUST point to an instance using the grouping
supa-has-policy-target-detail (which includes supa-has-policy-target-detail (which includes
subclasses of this association class)."; subclasses of this association class).";
} }
leaf-list supa-has-policy-clause-agg-ptr { leaf-list supa-has-policy-clause-agg-ptr {
type instance-identifier; type instance-identifier;
must "derived-from-or-self (deref(.)/entity-class, must "derived-from-or-self (deref(.)/entity-class,
SUPA-HAS-POLICY-CLAUSE-ASSOC)"; 'SUPA-HAS-POLICY-CLAUSE-ASSOC')";
description description
"This leaf-list holds instance-identifiers that "This leaf-list holds instance-identifiers that
reference SUPAHasPolicyClause associations [1]. This reference SUPAHasPolicyClause associations [1]. This
association is represented by the grouping association is represented by the grouping
supa-has-policy-clause-detail. This association supa-has-policy-clause-detail. This association
describes how this particular SUPAPolicyStructure describes how this particular SUPAPolicyStructure
instance is related to this set of SUPAPolicyClause instance is related to this set of SUPAPolicyClause
instances. Since this association class contains instances. Since this association class contains
attributes, the instance-identifier MUST point to an attributes, the instance-identifier MUST point to an
instance using the supa-has-policy-clause-detail instance using the supa-has-policy-clause-detail
(which includes subclasses of this association (which includes subclasses of this association
class)."; class).";
} }
leaf-list supa-has-policy-exec-fail-action-agg-ptr { leaf-list supa-has-policy-exec-fail-action-agg-ptr {
type instance-identifier; type instance-identifier;
must "derived-from-or-self (deref(.)/entity-class, must "derived-from-or-self (deref(.)/entity-class,
SUPA-HAS-POLICY-EXEC-ACTION-ASSOC)"; 'SUPA-HAS-POLICY-EXEC-ACTION-ASSOC')";
description description
"This leaf-list holds instance-identifiers that "This leaf-list holds instance-identifiers that
reference a SUPAHasPolExecFailtActionToTake reference a SUPAHasPolExecFailtActionToTake
association [1]. This association is represented by association [1]. This association is represented by
the supa-has-policy-exec-action-detail grouping. This the supa-has-policy-exec-action-detail grouping. This
association relates this SUPAPolicyStructure instance association relates this SUPAPolicyStructure instance
(the parent) to one or more SUPAPolicyStructure (the parent) to one or more SUPAPolicyStructure
instances (the children), where each child instances (the children), where each child
SUPAPolicyStructure contains one or more SUPAPolicyStructure contains one or more
SUPAPolicyActions to be executed if the parent SUPAPolicyActions to be executed if the parent
SUPAPolicyStructure instance generates an error while SUPAPolicyStructure instance generates an error while
it is executing. Since this association class contains it is executing. Since this association class contains
attributes, the instance-identifier MUST point to an attributes, the instance-identifier MUST point to an
instance using the grouping instance using the grouping
supa-has-policy-exec-action-detail (which includes supa-has-policy-exec-action-detail (which includes
subclasses of this association class)."; subclasses of this association class).";
} }
leaf-list supa-has-policy-exec-fail-action-part-ptr { leaf-list supa-has-policy-exec-fail-action-part-ptr {
type instance-identifier; type instance-identifier;
must "derived-from-or-self (deref(.)/entity-class, must "derived-from-or-self (deref(.)/entity-class,
SUPA-HAS-POLICY-EXEC-ACTION-ASSOC)"; 'SUPA-HAS-POLICY-EXEC-ACTION-ASSOC')";
min-elements 1; min-elements 1;
description description
"This leaf-list holds instance-identifiers that "This leaf-list holds instance-identifiers that
reference a SUPAHasPolExecFailtActionToTake reference a SUPAHasPolExecFailtActionToTake
association [1]. This association is represented by association [1]. This association is represented by
the supa-has-policy-exec-action-detail grouping. This the supa-has-policy-exec-action-detail grouping. This
association relates this SUPAPolicyStructure instance association relates this SUPAPolicyStructure instance
(the child) to another SUPAPolicyStructure instance (the child) to another SUPAPolicyStructure instance
(the parent). The child SUPAPolicyStructure contains (the parent). The child SUPAPolicyStructure contains
one or more SUPAPolicyActions to be executed if the one or more SUPAPolicyActions to be executed if the
skipping to change at page 37, line 7 skipping to change at page 37, line 33
grouping supa-policy-source-type { grouping supa-policy-source-type {
uses supa-policy-object-type { uses supa-policy-object-type {
refine entity-class { refine entity-class {
default POLICY-SOURCE-TYPE; default POLICY-SOURCE-TYPE;
} }
} }
leaf-list supa-has-policy-source-part-ptr { leaf-list supa-has-policy-source-part-ptr {
type instance-identifier; type instance-identifier;
must "derived-from-or-self (deref(.)/entity-class, must "derived-from-or-self (deref(.)/entity-class,
SUPA-HAS-POLICY-SOURCE-ASSOC)"; 'SUPA-HAS-POLICY-SOURCE-ASSOC')";
description description
"This leaf-list holds the instance-identifiers that "This leaf-list holds the instance-identifiers that
reference a SUPAHasPolicySource association [1], which reference a SUPAHasPolicySource association [1], which
is represented by the supa-has-policy-source-detail is represented by the supa-has-policy-source-detail
grouping. This association describes how each grouping. This association describes how each
SUPAPolicySource instance is related to this SUPAPolicySource instance is related to this
particular SUPAPolicyStructure instance. Since particular SUPAPolicyStructure instance. Since
this association class contains attributes, the this association class contains attributes, the
instance-identifier MUST point to an instance using instance-identifier MUST point to an instance using
the grouping supa-has-policy-source-detail (which the grouping supa-has-policy-source-detail (which
includes subclasses of this association class)."; includes subclasses of this association class).";
} }
description description
"This object defines a set of managed entities that "This object defines a set of managed entities that
authored, or are otherwise responsible for, this authored, or are otherwise responsible for, this
SUPAPolicy. Note that a SUPAPolicySource does not evaluate SUPAPolicy. Note that a SUPAPolicySource does NOT evaluate
or execute SUPAPolicies. Its primary use is for or execute SUPAPolicies. Its primary use is for
auditability and the implementation of deontic and/or auditability and the implementation of deontic logic (i.e.,
alethic logic. It is expected that this grouping will be how concepts such as obligation and permission work) and/or
extended (i.e., subclassed) when used, so that the system alethic logic (i.e., how concepts such as necessity,
can add specific information appropriate to sources of possibility, and contigency work). It is expected that this
policy of that particular system."; grouping will be extended (i.e., subclassed) when used, so
that the system an add specific information appropriate to
sources of policy of that particular system.";
}
container supa-policy-source-container {
description
"This is a container to collect all object instances of
type SUPAPolicySource.";
list supa-policy-source-list {
key supa-policy-ID;
uses supa-policy-source-type;
description
"A list of all supa-policy-source instances in the
system.";
}
} }
identity POLICY-TARGET-TYPE { identity POLICY-TARGET-TYPE {
base POLICY-OBJECT-TYPE; base POLICY-OBJECT-TYPE;
description description
"The identity corresponding to a SUPAPolicyTarget "The identity corresponding to a SUPAPolicyTarget
object instance."; object instance.";
} }
grouping supa-policy-target-type { grouping supa-policy-target-type {
uses supa-policy-object-type { uses supa-policy-object-type {
refine entity-class { refine entity-class {
default POLICY-TARGET-TYPE; default POLICY-TARGET-TYPE;
} }
} }
leaf-list supa-has-policy-target-part-ptr { leaf-list supa-has-policy-target-part-ptr {
type instance-identifier; type instance-identifier;
must "derived-from-or-self (deref(.)/entity-class, must "derived-from-or-self (deref(.)/entity-class,
SUPA-HAS-POLICY-TARGET-ASSOC)"; 'SUPA-HAS-POLICY-TARGET-ASSOC')";
description description
"This leaf-list holds instance-identifiers that "This leaf-list holds instance-identifiers that
reference a SUPAHasPolicyTarget association. This is reference a SUPAHasPolicyTarget association. This is
represented by the supa-has-policy-target-detail represented by the supa-has-policy-target-detail
grouping. This association describes how each grouping. This association describes how each
SUPAPolicyTarget instance is related to a particular SUPAPolicyTarget instance is related to a particular
SUPAPolicyStructure instance. For example, this SUPAPolicyStructure instance. For example, this
association may restrict which SUPAPolicyTarget association may restrict which SUPAPolicyTarget
instances can be used by which SUPAPolicyStructure instances can be used by which SUPAPolicyStructure
instances. The SUPAPolicyTarget defines a instances. The SUPAPolicyTarget defines a
skipping to change at page 38, line 24 skipping to change at page 39, line 12
includes subclasses of this association class)."; includes subclasses of this association class).";
} }
description description
"This object defines a set of managed entities that a "This object defines a set of managed entities that a
SUPAPolicy is applied to. It is expected that this SUPAPolicy is applied to. It is expected that this
grouping will be extended (i.e., subclassed) when used, grouping will be extended (i.e., subclassed) when used,
so that the system can add specific information so that the system can add specific information
appropriate to policy targets of that particular system."; appropriate to policy targets of that particular system.";
} }
container supa-policy-target-container {
description
"This is a container to collect all object instances of
type SUPAPolicyTarget.";
list supa-policy-target-list {
key supa-policy-ID;
uses supa-policy-target-type;
description
"A list of all supa-policy-target instances in the
system.";
}
}
identity POLICY-METADATA-TYPE { identity POLICY-METADATA-TYPE {
base SUPA-ROOT-TYPE;
description description
"The identity corresponding to a SUPAPolicyMetadata "The identity corresponding to a SUPAPolicyMetadata
object instance."; object instance.";
} }
grouping supa-policy-metadata-type { grouping supa-policy-metadata-type {
leaf entity-class {
type identityref {
base SUPA-ROOT-TYPE;
}
description
"The identifier of the class of this grouping.";
}
leaf supa-policy-metadata-id { leaf supa-policy-metadata-id {
type string; type string;
mandatory true; mandatory true;
description description
"This represents the object identifier of an instance "This represents the object identifier of an instance
of this class. This attribute is named of this class. This attribute is named
supaPolMetadataIDContent in [1], and is used with supaPolMetadataIDContent in [1], and is used with
another attribute (supaPolMetadataIDEncoding); since another attribute (supaPolMetadataIDEncoding); since
the YANG data model does not need this genericity, the the YANG data model does not need this genericity, the
supaPolMetadataIDContent attribute was renamed, and supaPolMetadataIDContent attribute was renamed, and
the supaPolMetadataIDEncoding attribute was the supaPolMetadataIDEncoding attribute was
not mapped."; not mapped.";
} }
leaf entity-class {
type identityref {
base POLICY-METADATA-TYPE;
}
default POLICY-METADATA-TYPE;
description
"The identifier of the class of this grouping.";
}
leaf supa-policy-metadata-description { leaf supa-policy-metadata-description {
type string; type string;
description description
"This contains a free-form textual description of this "This contains a free-form textual description of this
metadata object (e.g., what it may be used for)."; metadata object (e.g., what it may be used for).";
} }
leaf supa-policy-metadata-name { leaf supa-policy-metadata-name {
type string; type string;
description description
"This contains a human-readable name for this "This contains a human-readable name for this
metadata object."; metadata object.";
} }
leaf-list supa-has-policy-metadata-part-ptr { leaf-list supa-has-policy-metadata-part-ptr {
type instance-identifier; type instance-identifier;
must "derived-from-or-self (deref(.)/entity-class, must "derived-from-or-self (deref(.)/entity-class,
SUPA-HAS-POLICY-METADATA-ASSOC)"; 'SUPA-HAS-POLICY-METADATA-ASSOC')";
description description
"This leaf-list holds instance-identifiers that "This leaf-list holds instance-identifiers that
reference a SUPAHasPolicyMetadata association [1], reference a SUPAHasPolicyMetadata association [1],
which is represented by the grouping which is represented by the grouping
supa-has-policy-metadata-detail. Each instance- supa-has-policy-metadata-detail. Each instance-
identifier defines a unique set of information that identifier defines a unique set of information that
describe and/or prescribe additional information, describe and/or prescribe additional information,
provided by this SUPAPolicyMetadata instance, that can provided by this SUPAPolicyMetadata instance, that can
be associated with this SUPAPolicyObject instance. be associated with this SUPAPolicyObject instance.
Multiple SUPAPolicyMetadata objects may be attached to Multiple SUPAPolicyMetadata objects may be attached to
skipping to change at page 39, line 45 skipping to change at page 40, line 45
the version of this particular SUPAECAPolicyRuleAtomic the version of this particular SUPAECAPolicyRuleAtomic
instance. Since this association class contains instance. Since this association class contains
attributes, the instance-identifier MUST point to an attributes, the instance-identifier MUST point to an
instance using the grouping instance using the grouping
supa-has-policy-metadata-detail (which includes supa-has-policy-metadata-detail (which includes
subclasses of this association class)."; subclasses of this association class).";
} }
leaf-list supa-has-policy-metadata-dec-part-ptr { leaf-list supa-has-policy-metadata-dec-part-ptr {
type instance-identifier; type instance-identifier;
must "derived-from-or-self (deref(.)/entity-class, must "derived-from-or-self (deref(.)/entity-class,
SUPA-HAS-POLICY-METADATA-DECORATOR-DETAIL-ASSOC)"; 'SUPA-HAS-POLICY-METADATA-DECORATOR-DETAIL-ASSOC')";
min-elements 1; min-elements 1;
description description
"This leaf-list holds instance-identifiers that "This leaf-list holds instance-identifiers that
reference a SUPAHasMetadaDecorator association [1]. reference a SUPAHasMetadaDecorator association [1].
This association is represented by the grouping This association is represented by the grouping
supa-has-policy-metadata-dec-detail. This association supa-has-policy-metadata-dec-detail. This association
describes how a SUPAPolicyMetadataDecorator instance describes how a SUPAPolicyMetadataDecorator instance
wraps a given SUPAPolicyMetadata instance using the wraps a given SUPAPolicyMetadata instance using the
Decorator pattern [1]. Multiple concrete subclasses Decorator pattern [1]. Multiple concrete subclasses
of SUPAPolicyMetadataDecorator may be used to wrap of SUPAPolicyMetadataDecorator may be used to wrap
skipping to change at page 41, line 33 skipping to change at page 42, line 33
grouping supa-policy-metadata-decorator-type { grouping supa-policy-metadata-decorator-type {
uses supa-policy-metadata-type { uses supa-policy-metadata-type {
refine entity-class { refine entity-class {
default POLICY-METADATA-DECORATOR-TYPE; default POLICY-METADATA-DECORATOR-TYPE;
} }
} }
leaf supa-has-policy-metadata-dec-agg-ptr { leaf supa-has-policy-metadata-dec-agg-ptr {
type instance-identifier; type instance-identifier;
must "derived-from-or-self (deref(.)/entity-class, must "derived-from-or-self (deref(.)/entity-class,
SUPA-HAS-POLICY-METADATA-DECORATOR-DETAIL-ASSOC)"; 'SUPA-HAS-POLICY-METADATA-DECORATOR-DETAIL-ASSOC')";
description description
"This leaf-list holds instance-identifiers that "This leaf-list holds instance-identifiers that
reference a SUPAHasMetadaDecorator association [1]. reference a SUPAHasMetadaDecorator association [1].
This association is represented by the grouping This association is represented by the grouping
supa-has-policy-metadata-dec-detail. This association supa-has-policy-metadata-dec-detail. This association
describes how a SUPAPolicyMetadataDecorator instance describes how a SUPAPolicyMetadataDecorator instance
wraps a given SUPAPolicyMetadata instance wraps a given SUPAPolicyMetadata instance
using the Decorator pattern [1]. Multiple concrete using the Decorator pattern [1]. Multiple concrete
subclasses of SUPAPolicyMetadataDecorator may be used subclasses of SUPAPolicyMetadataDecorator may be used
to wrap the same SUPAPolicyMetadata instance. Since to wrap the same SUPAPolicyMetadata instance. Since
this association class contains attributes, the this association class contains attributes, the
instance-identifier MUST point to an instance using instance-identifier MUST point to an instance using
the grouping supa-has-policy-metadata-dec-detail (which the grouping supa-has-policy-metadata-dec-detail (which
includes subclasses of this association class)."; includes subclasses of this association class).";
} }
description description
"This object implements the Decorator pattern [1] for SUPA, "This object implements the Decorator pattern [1] for all
which is applied to SUPA metadata objects. This enables all SUPA metadata objects. This enables all or part of one or
or part of one or more metadata objects to wrap another more metadata objects to wrap another concrete metadata
concrete metadata object. The only concrete subclass of object. The only concrete subclass of SUPAPolicyMetadata
SUPAPolicyMetadata in this document is the in this document is SUPAPolicyConcreteMetadata.";
SUPAPolicyConcreteMetadata class.";
} }
identity POLICY-METADATA-DECORATOR-ACCESS-TYPE { identity POLICY-METADATA-DECORATOR-ACCESS-TYPE {
base POLICY-METADATA-DECORATOR-TYPE; base POLICY-METADATA-DECORATOR-TYPE;
description description
"The identity corresponding to a "The identity corresponding to a
SUPAPolicyAccessMetadataDef object instance."; SUPAPolicyAccessMetadataDef object instance.";
} }
grouping supa-policy-metadata-decorator-access-type { grouping supa-policy-metadata-decorator-access-type {
uses supa-policy-metadata-decorator-type { uses supa-policy-metadata-decorator-type {
refine entity-class { refine entity-class {
skipping to change at page 42, line 18 skipping to change at page 43, line 14
identity POLICY-METADATA-DECORATOR-ACCESS-TYPE { identity POLICY-METADATA-DECORATOR-ACCESS-TYPE {
base POLICY-METADATA-DECORATOR-TYPE; base POLICY-METADATA-DECORATOR-TYPE;
description description
"The identity corresponding to a "The identity corresponding to a
SUPAPolicyAccessMetadataDef object instance."; SUPAPolicyAccessMetadataDef object instance.";
} }
grouping supa-policy-metadata-decorator-access-type { grouping supa-policy-metadata-decorator-access-type {
uses supa-policy-metadata-decorator-type { uses supa-policy-metadata-decorator-type {
refine entity-class { refine entity-class {
default POLICY-METADATA-TYPE; default POLICY-METADATA-DECORATOR-ACCESS-TYPE;
} }
} }
leaf supa-policy-metadata-access-priv-def { leaf supa-policy-metadata-access-priv-def {
type enumeration { type enumeration {
enum "error" { enum "error" {
description description
"This signifies an error state. OAM&P Policies "This signifies an error state. OAM&P Policies
SHOULD NOT use this SUPAPolicyAccessMetadataDef SHOULD NOT use this SUPAPolicyAccessMetadataDef
if the value of this attribute is error."; if the value of this attribute is error.";
} }
skipping to change at page 49, line 4 skipping to change at page 49, line 34
type SUPAPolicyVersionMetadataDef."; type SUPAPolicyVersionMetadataDef.";
list supa-policy-metadata-decorator-version-list { list supa-policy-metadata-decorator-version-list {
key supa-policy-metadata-id; key supa-policy-metadata-id;
uses supa-policy-metadata-decorator-type; uses supa-policy-metadata-decorator-type;
description description
"A list of all supa-policy-metadata-decorator-version "A list of all supa-policy-metadata-decorator-version
instances in the system. Instances of subclasses instances in the system. Instances of subclasses
will be in a separate list."; will be in a separate list.";
} }
} }
identity SUPA-HAS-POLICY-METADATA-DECORATOR-TYPE { identity SUPA-HAS-POLICY-METADATA-DECORATOR-TYPE {
base POLICY-COMPONENT-TYPE; base POLICY-OBJECT-TYPE;
description description
"The identity corresponding to a "The identity corresponding to a
SUPAHasPolicyMetadataDetail association class SUPAHasPolicyMetadataDetail association class
object instance."; object instance.";
} }
grouping supa-has-policy-metadata-detail { grouping supa-has-policy-metadata-detail {
uses supa-policy-object-type { uses supa-policy-object-type {
refine entity-class { refine entity-class {
default SUPA-HAS-POLICY-METADATA-DECORATOR-TYPE; default SUPA-HAS-POLICY-METADATA-DECORATOR-TYPE;
} }
} }
leaf supa-has-policy-metadata-detail-agg-ptr { leaf supa-has-policy-metadata-detail-agg-ptr {
type instance-identifier; type instance-identifier;
must "derived-from-or-self (deref(.)/entity-class, must "derived-from-or-self (deref(.)/entity-class,
POLICY-OBJECT-TYPE)"; 'POLICY-OBJECT-TYPE')";
description description
"This leaf is an instance-identifier that references "This leaf is an instance-identifier that references
the SUPAPolicyObject instance end point of the the SUPAPolicyObject instance end point of the
association represented by this instance of the association represented by this instance of the
SUPAHasPolicyMetadata association [1]. The groupings SUPAHasPolicyMetadata association [1]. The groupings
supa-policy-object-type and supa-policy-metadata-type supa-policy-object-type and supa-policy-metadata-type
represent the SUPAPolicyObject and SUPAPolicyMetadata represent the SUPAPolicyObject and SUPAPolicyMetadata
classes, respectively. Thus, the instance identified classes, respectively. Thus, the instance identified
by this leaf is the SUPAPolicyObject instance that is by this leaf is the SUPAPolicyObject instance that is
associated by this association to the set of associated by this association to the set of
SUPAPolicyMetadata instances referenced by the SUPAPolicyMetadata instances referenced by the
supa-has-policy-metadata-detail-part-ptr leaf of supa-has-policy-metadata-detail-part-ptr leaf of
this grouping."; this grouping.";
} }
leaf supa-has-policy-metadata-detail-part-ptr { leaf supa-has-policy-metadata-detail-part-ptr {
type instance-identifier; type instance-identifier;
must "derived-from-or-self (deref(.)/entity-class, must "derived-from-or-self (deref(.)/entity-class,
POLICY-METADATA-TYPE)"; 'POLICY-METADATA-TYPE')";
description description
"This leaf is an instance-identifier that references "This leaf is an instance-identifier that references
the SUPAPolicyMetadata instance end point of the the SUPAPolicyMetadata instance end point of the
association represented by this instance of the association represented by this instance of the
SUPAHasPolicyMetadata association [1]. The groupings SUPAHasPolicyMetadata association [1]. The groupings
supa-policy-object-type and supa-policy-metadata-type supa-policy-object-type and supa-policy-metadata-type
represents the SUPAPolicyObject and SUPAPolicyMetadata represents the SUPAPolicyObject and SUPAPolicyMetadata
classes, respectively. Thus, the instance classes, respectively. Thus, the instance
identified by this leaf is the SUPAPolicyMetadata identified by this leaf is the SUPAPolicyMetadata
instance that is associated by this association to instance that is associated by this association to
skipping to change at page 51, line 21 skipping to change at page 51, line 53
grouping supa-has-decorator-policy-component-detail { grouping supa-has-decorator-policy-component-detail {
uses supa-policy-object-type { uses supa-policy-object-type {
refine entity-class { refine entity-class {
default SUPA-HAS-POLICY-COMPONENT-DECORATOR-ASSOC; default SUPA-HAS-POLICY-COMPONENT-DECORATOR-ASSOC;
} }
} }
leaf supa-has-policy-component-decorator-agg-ptr { leaf supa-has-policy-component-decorator-agg-ptr {
type instance-identifier; type instance-identifier;
must "derived-from-or-self (deref(.)/entity-class, must "derived-from-or-self (deref(.)/entity-class,
POLICY-COMPONENT-DECORATOR-TYPE)"; 'POLICY-COMPONENT-DECORATOR-TYPE')";
description description
"This leaf is an instance-identifier that references "This leaf is an instance-identifier that references
the SUPAPolicyComponentDecorator instance end point of the SUPAPolicyComponentDecorator instance end point of
the association represented by this instance of the the association represented by this instance of the
SUPAHasDecoratedPolicyComponent association [1]. The SUPAHasDecoratedPolicyComponent association [1]. The
groupings supa-policy-component-decorator-type and groupings supa-policy-component-decorator-type and
supa-policy-component-structure-type represent the supa-policy-component-structure-type represent the
SUPAPolicyComponentDecorator and SUPAPolicyComponentDecorator and
SUPAPolicyComponentStructure classes, respectively. SUPAPolicyComponentStructure classes, respectively.
Thus, the instance identified by this leaf is the Thus, the instance identified by this leaf is the
SUPAPolicyComponentDecorator instance that is SUPAPolicyComponentDecorator instance that is
associated by this association to the set of associated by this association to the set of
SUPAPolicyComponentStructure instances referenced by SUPAPolicyComponentStructure instances referenced by
the supa-has-policy-component-decorator-part-ptr leaf the supa-has-policy-component-decorator-part-ptr leaf
of this grouping."; of this grouping.";
} }
leaf supa-has-policy-component-decorator-part-ptr { leaf supa-has-policy-component-decorator-part-ptr {
type instance-identifier; type instance-identifier;
must "derived-from-or-self (deref(.)/entity-class, must "derived-from-or-self (deref(.)/entity-class,
POLICY-COMPONENT-TYPE)"; 'POLICY-COMPONENT-TYPE')";
description description
"This leaf is an instance-identifier that references "This leaf is an instance-identifier that references
the SUPAPolicyComponentStructure instance end point of the SUPAPolicyComponentStructure instance end point of
the association represented by this instance of the the association represented by this instance of the
SUPAHasDecoratedPolicyComponent association [1]. The SUPAHasDecoratedPolicyComponent association [1]. The
groupings supa-policy-component-decorator-type and groupings supa-policy-component-decorator-type and
supa-policy-component-structure-type represent the supa-policy-component-structure-type represent the
SUPAPolicyComponentDecorator and SUPAPolicyComponentDecorator and
SUPAPolicyComponentStructure classes, respectively. SUPAPolicyComponentStructure classes, respectively.
Thus, the instance identified by this leaf is the Thus, the instance identified by this leaf is the
skipping to change at page 53, line 20 skipping to change at page 53, line 51
grouping supa-has-policy-source-detail { grouping supa-has-policy-source-detail {
uses supa-policy-object-type { uses supa-policy-object-type {
refine entity-class { refine entity-class {
default SUPA-HAS-POLICY-SOURCE-ASSOC; default SUPA-HAS-POLICY-SOURCE-ASSOC;
} }
} }
leaf supa-has-policy-source-detail-agg-ptr { leaf supa-has-policy-source-detail-agg-ptr {
type instance-identifier; type instance-identifier;
must "derived-from-or-self (deref(.)/entity-class, must "derived-from-or-self (deref(.)/entity-class,
POLICY-STRUCTURE-TYPE)"; 'POLICY-STRUCTURE-TYPE')";
description description
"This leaf is an instance-identifier that references "This leaf is an instance-identifier that references
a SUPAPolicyStructure instance end point of the a SUPAPolicyStructure instance end point of the
association represented by this instance of the association represented by this instance of the
SUPAHasPolicySource association [1]. The grouping SUPAHasPolicySource association [1]. The grouping
supa-has-policy-source-detail represents the supa-has-policy-source-detail represents the
SUPAHasPolicySourceDetail class. Thus, the instance SUPAHasPolicySourceDetail class. Thus, the instance
identified by this leaf is the SUPAPolicyStructure identified by this leaf is the SUPAPolicyStructure
instance that is associated by this association to the instance that is associated by this association to the
SUPAPolicySource instance referenced by the SUPAPolicySource instance referenced by the
supa-has-policy-source-detail-part-ptr leaf of supa-has-policy-source-detail-part-ptr leaf of
this grouping."; this grouping.";
} }
leaf supa-has-policy-source-detail-part-ptr { leaf supa-has-policy-source-detail-part-ptr {
type instance-identifier; type instance-identifier;
must "derived-from-or-self (deref(.)/entity-class, must "derived-from-or-self (deref(.)/entity-class,
POLICY-SOURCE-TYPE)"; 'POLICY-SOURCE-TYPE')";
description description
"This leaf is an instance-identifier that references "This leaf is an instance-identifier that references
a SUPAPolicySource instance end point of the a SUPAPolicySource instance end point of the
association represented by this instance of the association represented by this instance of the
SUPAHasPolicySource association [1]. The grouping SUPAHasPolicySource association [1]. The grouping
supa-has-policy-source-detail represents the supa-has-policy-source-detail represents the
SUPAHasPolicySourceDetail class. Thus, the instance SUPAHasPolicySourceDetail class. Thus, the instance
identified by this leaf is the SUPAPolicySource identified by this leaf is the SUPAPolicySource
instance that is associated by this association to the instance that is associated by this association to the
SUPAPolicyStructure instance referenced by the SUPAPolicyStructure instance referenced by the
skipping to change at page 55, line 4 skipping to change at page 55, line 29
objects."; objects.";
} }
} }
identity SUPA-HAS-POLICY-TARGET-ASSOC { identity SUPA-HAS-POLICY-TARGET-ASSOC {
base POLICY-OBJECT-TYPE; base POLICY-OBJECT-TYPE;
description description
"The identity corresponding to a SUPAHasPolicyTarget "The identity corresponding to a SUPAHasPolicyTarget
association class object instance."; association class object instance.";
} }
grouping supa-has-policy-target-detail { grouping supa-has-policy-target-detail {
uses supa-policy-object-type { uses supa-policy-object-type {
refine entity-class { refine entity-class {
default SUPA-HAS-POLICY-TARGET-ASSOC; default SUPA-HAS-POLICY-TARGET-ASSOC;
} }
} }
leaf supa-has-policy-target-detail-agg-ptr { leaf supa-has-policy-target-detail-agg-ptr {
type instance-identifier; type instance-identifier;
must "derived-from-or-self (deref(.)/entity-class, must "derived-from-or-self (deref(.)/entity-class,
POLICY-STRUCTURE-TYPE)"; 'POLICY-STRUCTURE-TYPE')";
description description
"This leaf is an instance-identifier that references "This leaf is an instance-identifier that references
a SUPAPolicyStructure instance end point of the a SUPAPolicyStructure instance end point of the
association represented by this instance of the association represented by this instance of the
SUPAHasPolicyTarget association [1]. The grouping SUPAHasPolicyTarget association [1]. The grouping
supa-has-policy-target-detail represents the supa-has-policy-target-detail represents the
SUPAHasPolicyTargetDetail class. Thus, the instance SUPAHasPolicyTargetDetail class. Thus, the instance
identified by this leaf is the SUPAPolicyStructure identified by this leaf is the SUPAPolicyStructure
instance that is associated by this association to the instance that is associated by this association to the
SUPAPolicyTarget instance referenced by the SUPAPolicyTarget instance referenced by the
supa-has-policy-target-detail-part-ptr leaf of supa-has-policy-target-detail-part-ptr leaf of
this grouping."; this grouping.";
} }
leaf supa-has-policy-target-detail-part-ptr { leaf supa-has-policy-target-detail-part-ptr {
type instance-identifier; type instance-identifier;
must "derived-from-or-self (deref(.)/entity-class, must "derived-from-or-self (deref(.)/entity-class,
POLICY-TARGET-TYPE)"; 'POLICY-TARGET-TYPE')";
description description
"This leaf is an instance-identifier that references "This leaf is an instance-identifier that references
a SUPAPolicyTarget instance end point of the a SUPAPolicyTarget instance end point of the
association represented by this instance of the association represented by this instance of the
SUPAHasPolicyTarget association [1]. The grouping SUPAHasPolicyTarget association [1]. The grouping
supa-has-policy-target-detail represents the supa-has-policy-target-detail represents the
SUPAHasPolicyTargetDetail class. Thus, the instance SUPAHasPolicyTargetDetail class. Thus, the instance
identified by this leaf is the SUPAPolicyTarget identified by this leaf is the SUPAPolicyTarget
instance that is associated by this association to the instance that is associated by this association to the
SUPAPolicyStructure instance referenced by the SUPAPolicyStructure instance referenced by the
skipping to change at page 56, line 45 skipping to change at page 57, line 18
list supa-policy-target-detail-list { list supa-policy-target-detail-list {
key supa-policy-ID; key supa-policy-ID;
uses supa-has-policy-target-detail; uses supa-has-policy-target-detail;
description description
"This is a list of all supa-policy-target-detail "This is a list of all supa-policy-target-detail
objects."; objects.";
} }
} }
identity SUPA-HAS-POLICY-CLAUSE-ASSOC { identity SUPA-HAS-POLICY-CLAUSE-ASSOC {
base POLICY-STRUCTURE-TYPE; base POLICY-OBJECT-TYPE;
description description
"The identity corresponding to a SUPAHasPolicyClause "The identity corresponding to a SUPAHasPolicyClause
association class object instance."; association class object instance.";
} }
grouping supa-has-policy-clause-detail { grouping supa-has-policy-clause-detail {
uses supa-policy-structure-type { uses supa-policy-object-type {
refine entity-class { refine entity-class {
default SUPA-HAS-POLICY-CLAUSE-ASSOC; default SUPA-HAS-POLICY-CLAUSE-ASSOC;
} }
} }
leaf supa-has-policy-clause-detail-agg-ptr { leaf supa-has-policy-clause-detail-agg-ptr {
type instance-identifier; type instance-identifier;
must "derived-from-or-self (deref(.)/entity-class, must "derived-from-or-self (deref(.)/entity-class,
POLICY-STRUCTURE-TYPE)"; 'POLICY-STRUCTURE-TYPE')";
description description
"This leaf is an instance-identifier that references "This leaf is an instance-identifier that references
a concrete subclass of the SUPAPolicyStructure class a concrete subclass of the SUPAPolicyStructure class
end point of the association represented by this end point of the association represented by this
instance of the SUPAHasPolicyClause association [1]. instance of the SUPAHasPolicyClause association [1].
The grouping supa-has-policy-clause-detail represents The grouping supa-has-policy-clause-detail represents
the SUPAHasPolicyClauseDetail association class. Thus, the SUPAHasPolicyClauseDetail association class. Thus,
the instance identified by this leaf is the the instance identified by this leaf is the
SUPAPolicyStructure instance that is associated by SUPAPolicyStructure instance that is associated by
this association to the set of SUPAPolicyClause this association to the set of SUPAPolicyClause
instances referenced by the instances referenced by the
supa-has-policy-clause-detail-part-ptr leaf of this supa-has-policy-clause-detail-part-ptr leaf of this
grouping."; grouping.";
} }
leaf supa-has-policy-clause-detail-part-ptr { leaf supa-has-policy-clause-detail-part-ptr {
type instance-identifier; type instance-identifier;
must "derived-from-or-self (deref(.)/entity-class, must "derived-from-or-self (deref(.)/entity-class,
POLICY-CLAUSE-TYPE)"; 'POLICY-CLAUSE-TYPE')";
description description
"This leaf is an instance-identifier that references "This leaf is an instance-identifier that references
a concrete subclass of the SUPAPolicyClause class a concrete subclass of the SUPAPolicyClause class
end point of the association represented by this end point of the association represented by this
instance of the SUPAHasPolicyClause association [1]. instance of the SUPAHasPolicyClause association [1].
The grouping supa-has-policy-clause-detail represents The grouping supa-has-policy-clause-detail represents
the SUPAHasPolicyClauseDetail association class. Thus, the SUPAHasPolicyClauseDetail association class. Thus,
the instance identified by this leaf is the the instance identified by this leaf is the
SUPAPolicyClause instance that is associated by this SUPAPolicyClause instance that is associated by this
association to the set of SUPAPolicyStructure association to the set of SUPAPolicyStructure
skipping to change at page 58, line 25 skipping to change at page 58, line 46
list supa-policy-clause-detail-list { list supa-policy-clause-detail-list {
key supa-policy-ID; key supa-policy-ID;
uses supa-has-policy-clause-detail; uses supa-has-policy-clause-detail;
description description
"This is a list of all supa-policy-clause-detail "This is a list of all supa-policy-clause-detail
objects."; objects.";
} }
} }
identity SUPA-HAS-POLICY-EXEC-ACTION-ASSOC { identity SUPA-HAS-POLICY-EXEC-ACTION-ASSOC {
base POLICY-STRUCTURE-TYPE; base POLICY-OBJECT-TYPE;
description description
"The identity corresponding to a "The identity corresponding to a
SUPAHasPolExecFailActionToTake association class SUPAHasPolExecFailActionToTake association class
object instance."; object instance.";
} }
grouping supa-has-policy-exec-action-detail { grouping supa-has-policy-exec-action-detail {
uses supa-policy-structure-type { uses supa-policy-object-type {
refine entity-class { refine entity-class {
default SUPA-HAS-POLICY-EXEC-ACTION-ASSOC; default SUPA-HAS-POLICY-EXEC-ACTION-ASSOC;
} }
} }
leaf supa-has-exec-fail-action-detail-agg-ptr { leaf supa-has-exec-fail-action-detail-agg-ptr {
type instance-identifier; type instance-identifier;
must "derived-from-or-self (deref(.)/entity-class, must "derived-from-or-self (deref(.)/entity-class,
POLICY-STRUCTURE-TYPE)"; 'POLICY-STRUCTURE-TYPE')";
description description
"This leaf is an instance-identifier that references "This leaf is an instance-identifier that references
a SUPAPolicyStructure instance end point of the a SUPAPolicyStructure instance end point of the
association represented by this instance of the association represented by this instance of the
SUPAHasPolExecFailActionToTake association [1] that SUPAHasPolExecFailActionToTake association [1] that
was executing a SUPAPolicy. This SUPAPolicyStructure was executing a SUPAPolicy. This SUPAPolicyStructure
is referred to as the 'parent' SUPAPolicyStructure is referred to as the 'parent' SUPAPolicyStructure
instance, while the other instance end point of this instance, while the other instance end point of this
association is called the 'child' SUPAPolicyStructure. association is called the 'child' SUPAPolicyStructure.
The grouping supa-policy-structure-type represents the The grouping supa-policy-structure-type represents the
skipping to change at page 59, line 14 skipping to change at page 59, line 35
identified by this leaf is the parent identified by this leaf is the parent
SUPAPolicyStructure instance that is associated by this SUPAPolicyStructure instance that is associated by this
association to the child SUPAPolicyStructure instance association to the child SUPAPolicyStructure instance
referenced by the referenced by the
supa-has-exec-fail-action-detail-part-ptr leaf of this supa-has-exec-fail-action-detail-part-ptr leaf of this
grouping."; grouping.";
} }
leaf supa-has-exec-fail-action-detail-part-ptr { leaf supa-has-exec-fail-action-detail-part-ptr {
type instance-identifier; type instance-identifier;
must "derived-from-or-self (deref(.)/entity-class, must "derived-from-or-self (deref(.)/entity-class,
POLICY-STRUCTURE-TYPE)"; 'POLICY-STRUCTURE-TYPE')";
description description
"This leaf is an instance-identifier that references "This leaf is an instance-identifier that references
a SUPAPolicyStructure instance end point of the a SUPAPolicyStructure instance end point of the
association represented by this instance of the association represented by this instance of the
SUPAHasPolExecFailActionToTake association [1] that SUPAHasPolExecFailActionToTake association [1] that
was NOT currently executing a SUPAPolicy. This was NOT currently executing a SUPAPolicy. This
SUPAPolicyStructure is referred to as the 'child' SUPAPolicyStructure is referred to as the 'child'
SUPAPolicyStructure instance, while the other instance SUPAPolicyStructure instance, while the other instance
end point of this association is called the 'parent' end point of this association is called the 'parent'
SUPAPolicyStructure. The grouping SUPAPolicyStructure. The grouping
skipping to change at page 60, line 43 skipping to change at page 61, line 7
grouping supa-has-policy-metadata-dec-detail { grouping supa-has-policy-metadata-dec-detail {
uses supa-policy-metadata-type { uses supa-policy-metadata-type {
refine entity-class { refine entity-class {
default SUPA-HAS-POLICY-METADATA-DECORATOR-DETAIL-ASSOC; default SUPA-HAS-POLICY-METADATA-DECORATOR-DETAIL-ASSOC;
} }
} }
leaf supa-has-policy-metadata-detail-dec-agg-ptr { leaf supa-has-policy-metadata-detail-dec-agg-ptr {
type instance-identifier; type instance-identifier;
must "derived-from-or-self (deref(.)/entity-class, must "derived-from-or-self (deref(.)/entity-class,
POLICY-METADATA-TYPE)"; 'POLICY-METADATA-TYPE')";
description description
"This leaf is an instance-identifier that references "This leaf is an instance-identifier that references
a SUPAPolicyMetadataDecorator instance end point of a SUPAPolicyMetadataDecorator instance end point of
the association represented by this instance of the the association represented by this instance of the
SUPAHasMetadataDecorator association [1]. The SUPAHasMetadataDecorator association [1]. The
grouping supa-has-policy-metadata-detail represents grouping supa-has-policy-metadata-detail represents
the SUPAHasMetadataDecoratorDetail association class. the SUPAHasMetadataDecoratorDetail association class.
Thus, the instance identified by this leaf is the Thus, the instance identified by this leaf is the
SUPAPolicyMetadataDecorator instance that is SUPAPolicyMetadataDecorator instance that is
associated by this association to the set of associated by this association to the set of
SUPAPolicyMetadata instances referenced by the SUPAPolicyMetadata instances referenced by the
supa-has-policy-metadata-detail-dec-part-ptr leaf of supa-has-policy-metadata-detail-dec-part-ptr leaf of
this grouping."; this grouping.";
} }
leaf supa-has-policy-metadata-detail-dec-part-ptr { leaf supa-has-policy-metadata-detail-dec-part-ptr {
type instance-identifier; type instance-identifier;
must "derived-from-or-self (deref(.)/entity-class, must "derived-from-or-self (deref(.)/entity-class,
skipping to change at page 61, line 15 skipping to change at page 61, line 25
Thus, the instance identified by this leaf is the Thus, the instance identified by this leaf is the
SUPAPolicyMetadataDecorator instance that is SUPAPolicyMetadataDecorator instance that is
associated by this association to the set of associated by this association to the set of
SUPAPolicyMetadata instances referenced by the SUPAPolicyMetadata instances referenced by the
supa-has-policy-metadata-detail-dec-part-ptr leaf of supa-has-policy-metadata-detail-dec-part-ptr leaf of
this grouping."; this grouping.";
} }
leaf supa-has-policy-metadata-detail-dec-part-ptr { leaf supa-has-policy-metadata-detail-dec-part-ptr {
type instance-identifier; type instance-identifier;
must "derived-from-or-self (deref(.)/entity-class, must "derived-from-or-self (deref(.)/entity-class,
POLICY-METADATA-TYPE)"; 'POLICY-METADATA-TYPE')";
description description
"This leaf is an instance-identifier that references "This leaf is an instance-identifier that references
a SUPAPolicyMetadata instance end point of the a SUPAPolicyMetadata instance end point of the
association represented by this instance of the association represented by this instance of the
SUPAHasMetadataDecorator association [1]. The SUPAHasMetadataDecorator association [1]. The
grouping supa-has-policy-metadata-detail represents grouping supa-has-policy-metadata-detail represents
the SUPAHasMetadataDecoratorDetail association class. the SUPAHasMetadataDecoratorDetail association class.
Thus, the instance identified by this leaf is the Thus, the instance identified by this leaf is the
SUPAPolicyMetadata instance that is associated by SUPAPolicyMetadata instance that is associated by
this association to the set of this association to the set of
skipping to change at page 62, line 4 skipping to change at page 62, line 16
key supa-policy-metadata-id; key supa-policy-metadata-id;
uses supa-has-policy-metadata-dec-detail; uses supa-has-policy-metadata-dec-detail;
description description
"This is a list of all supa-policy-metadata-detail "This is a list of all supa-policy-metadata-detail
objects."; objects.";
} }
} }
} }
<CODE ENDS> <CODE ENDS>
6. IANA Considerations
6. IANA Considerations
No IANA considerations exist for this document. No IANA considerations exist for this document.
7. Security Considerations 7. Security Considerations
TBD TBD
8. Acknowledgments 8. Acknowledgments
This document has benefited from reviews, suggestions, comments This document has benefited from reviews, suggestions, comments
and proposed text provided by the following members, listed in and proposed text provided by the following members, listed in
alphabetical order: alphabetical order:
Andy Bierman
Benoit Claise
Martin Bjorklund
Qin Wu Qin Wu
9. References 9. References
This section defines normative and informative references for this This section defines normative and informative references for this
document. document.
9.1. Normative References 9.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for
the Network Configuration Protocol (NETCONF)", the Network Configuration Protocol (NETCONF)",
RFC 6020, October 2010. RFC 6020, October 2010.
[RFC6991] Schoenwaelder, J., "Common YANG Data Types", RFC 6991, [RFC6991] Schoenwaelder, J., "Common YANG Data Types", RFC 6991,
July 2013. July 2013.
[RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling
Language", August 2016.
9.2. Informative References 9.2. Informative References
[1] Strassner, J., Halpern, J., Coleman, J., "Generic [1] Strassner, J., Halpern, J., Coleman, J., "Generic
Policy Information Model for Simplified Use of Policy Policy Information Model for Simplified Use of Policy
Abstractions (SUPA)", March 21, 2016, Abstractions (SUPA)", March 21, 2016,
draft-ietf-supa-generic-policy-info-model-01 draft-ietf-supa-generic-policy-info-model-01
[2] http://www.omg.org/spec/OCL/ [2] http://www.omg.org/spec/OCL/
[3] http://doc.omg.org/formal/2002-04-03.pdf [3] http://doc.omg.org/formal/2002-04-03.pdf
[4] http://alloy.mit.edu/alloy/ [4] http://alloy.mit.edu/alloy/
 End of changes. 135 change blocks. 
172 lines changed or deleted 206 lines changed or added

This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/